UIMLView.h 4.5 KB

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