UIMLView.h 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. #pragma once
  2. #include "Zeichnung.h"
  3. #include "Trie.h"
  4. #include "Array.h"
  5. #include "UIInitialization.h"
  6. /*
  7. KSG UIML Standart
  8. possible XML elements:
  9. uimlview (the root element of uiml),
  10. class (only as direct child of uimlview),
  11. textfield,
  12. button,
  13. text,
  14. textarea,
  15. table (allowed child elements: tr),
  16. tr (allowed child elements: textfield, button, table, text, textarea).
  17. possible global XML attributes:
  18. id (string should be unique),
  19. x (integer, optional % char at end),
  20. y (integer, optional % char at end),
  21. width (integer, optional % char at end),
  22. height (integer, optional % char at end),
  23. margin (integer, optional % char at end),
  24. margin-left (integer, optional % char at end),
  25. margin-top (integer, optional % char at end),
  26. margin-right (integer, optional % char at end),
  27. margin-bottom (integer, optional % char at end),
  28. align-left (string (id values of other elements or keywords: start, end)),
  29. align-top (string (id values of other elements or keywords: start, end)),
  30. align-bottom ((string (id values of other elements or keywords: start, end)),
  31. align-right (string (id values of other elements or keywords: start, end)),
  32. tooltip (string),
  33. style (hex __int64),
  34. class (string (id of class element))
  35. attribute die sich gegenseitig ausschließen:
  36. align-left / align-right
  37. align-top / align-bottom
  38. spezific attributes:
  39. font-size (textfield, text, textarea, button)
  40. text-align (textfield, text, textarea)
  41. text-align-horizontal (textfield, text, textarea)
  42. text-align-vertical (textfield, text, textarea)
  43. example:
  44. <view>
  45. <textfield id="element_at_top_left" align-left="start", align-top="start", margin-left="5", margin-top="5" width="90%" height="30"/>
  46. <table id="element_below_textfield" align-left="start", aliign-top="element_at_top_left", margin-left="5", margin-top="5" width="90%" height="300">
  47. <tr>
  48. <button id="a_button_in_a_table"/>
  49. <textfield id="a_textfield_in_a_table"/>
  50. </tr>
  51. </table>
  52. </view>
  53. */
  54. namespace Framework
  55. {
  56. class Text;
  57. class ObjTabelle;
  58. class Schrift;
  59. class Bildschirm;
  60. namespace XML
  61. {
  62. class Element;
  63. }
  64. class UIMLView : public ZeichnungHintergrund
  65. {
  66. private:
  67. UIInit init;
  68. Trie< Zeichnung > *members;
  69. XML::Element *dom;
  70. int nextId;
  71. void parseTable( Iterator<XML::Element*> childs, ObjTabelle *table );
  72. Zeichnung *parseElement( XML::Element *e );
  73. void layout( XML::Element *e, Zeichnung *parent );
  74. public:
  75. // Erstellt eine UIML View
  76. __declspec( dllexport ) UIMLView();
  77. // Erstellt eine UIML View zu einem UIML Text
  78. // uiml: Ein xml element gemät des KSG UIML standarts
  79. // screen: Ein zeiger für den Belschirm auf dem die tooltips angezeigt werden sollen
  80. // schrift: Die schrift mit der der Text gezeichnet werden soll
  81. __declspec( dllexport ) UIMLView( XML::Element *uiml, UIInit &init );
  82. // Erstellt eine UIML View zu einem UIML Text
  83. // uiml: Ein xml text gemät des KSG UIML standarts
  84. // screen: Ein zeiger für den Belschirm auf dem die tooltips angezeigt werden sollen
  85. // schrift: Die schrift mit der der Text gezeichnet werden soll
  86. __declspec( dllexport ) UIMLView( Text uiml, UIInit &init );
  87. __declspec( dllexport ) ~UIMLView();
  88. // setzt den inhalt der view
  89. // uiml: Ein xml element gemät des KSG UIML standarts
  90. __declspec( dllexport ) void setUIML( XML::Element *uiml );
  91. // setzt den inhalt der view
  92. // uiml: Ein xml text gemät des KSG UIML standarts
  93. __declspec( dllexport ) void setUIML( Text uiml );
  94. // aktualisiert größe und position aller Zeichnungen gemäß den spezifikationen in UIML
  95. __declspec( dllexport ) void layout();
  96. // Gibt eine zeichnung zurück, welche in uiml eine bestimmte id hat
  97. // id: die id der Zeichnung
  98. __declspec( dllexport ) Zeichnung *zZeichnung( Text id );
  99. // Verarbeitet ein Maus Ereignis. Wird vom Framework automatisch aufgerufen.
  100. // me: Das Ereignis
  101. __declspec( dllexport ) virtual void doMausEreignis( MausEreignis &me );
  102. // Verarbeitet ein Tastatur Ereignis. Wird vom Framework automatisch aufgerufen
  103. // te: Das Ereignis
  104. __declspec( dllexport ) virtual void doTastaturEreignis( TastaturEreignis &te );
  105. // Updated den Zeichenhintergrund
  106. // tickVal: Die vergangene Zeit in Sekunden, die seit dem Letzten Aufruf dieser Funktion verstrichen ist
  107. // return: 1, wenn das Bild neu gezeichnet werden muss. 0 sonnst
  108. __declspec( dllexport ) bool tick( double tickVal ) override;
  109. // Zeichnet den Hintergrund eines Zeichnunges nach rObj
  110. __declspec( dllexport ) void render( Bild &rObj ) override;
  111. };
  112. }