UIMLView.h 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  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. check, (KontrollKnopf)
  14. text,
  15. textarea,
  16. table (allowed child elements: tr),
  17. tr (allowed child elements: textfield, button, table, text, textarea, frame),
  18. frame (allowed child elements: textfield, button, table, text, textarea, frame).
  19. possible global XML attributes:
  20. id (string should be unique),
  21. x (integer, optional % char at end),
  22. y (integer, optional % char at end),
  23. width (integer, optional % char at end),
  24. height (integer, optional % char at end),
  25. margin (integer, optional % char at end),
  26. margin-left (integer, optional % char at end),
  27. margin-top (integer, optional % char at end),
  28. margin-right (integer, optional % char at end),
  29. margin-bottom (integer, optional % char at end),
  30. align-left (string (id values of other elements or keywords: start, end)),
  31. align-top (string (id values of other elements or keywords: start, end)),
  32. align-bottom ((string (id values of other elements or keywords: start, end)),
  33. align-right (string (id values of other elements or keywords: start, end)),
  34. tooltip (string),
  35. style (hex __int64),
  36. class (string (id of class element))
  37. attribute die sich gegenseitig ausschließen:
  38. align-left / align-right
  39. align-top / align-bottom
  40. spezific attributes:
  41. font-size (textfield, text, textarea, button)
  42. text-align (textfield, text, textarea)
  43. text-align-horizontal (textfield, text, textarea)
  44. text-align-vertical (textfield, text, textarea)
  45. example:
  46. <view>
  47. <textfield id="element_at_top_left" align-left="start", align-top="start", margin-left="5", margin-top="5" width="90%" height="30"/>
  48. <table id="element_below_textfield" align-left="start", aliign-top="element_at_top_left", margin-left="5", margin-top="5" width="90%" height="300">
  49. <tr>
  50. <button id="a_button_in_a_table"/>
  51. <textfield id="a_textfield_in_a_table"/>
  52. </tr>
  53. </table>
  54. </view>
  55. */
  56. namespace Framework
  57. {
  58. class Text;
  59. class ObjTabelle;
  60. class Schrift;
  61. class Bildschirm;
  62. namespace XML
  63. {
  64. class Element;
  65. }
  66. class UIMLView : public ZeichnungHintergrund
  67. {
  68. private:
  69. UIInit init;
  70. Trie< Zeichnung > *members;
  71. XML::Element *dom;
  72. int nextId;
  73. void parseTable( Iterator<XML::Element*> childs, ObjTabelle *table );
  74. void parseFrame( Iterator<XML::Element*> childs, Fenster *frame );
  75. Zeichnung *parseElement( XML::Element *e );
  76. void layout( XML::Element *e, int pWidth, int pHeight );
  77. //! Verarbeitet ein Maus Ereignis. Wird vom Framework automatisch aufgerufen.
  78. //! \param me Das Ereignis
  79. __declspec( dllexport ) virtual void doMausEreignis( MausEreignis &me, bool userRet ) override;
  80. public:
  81. //! Erstellt eine UIML View
  82. __declspec( dllexport ) UIMLView();
  83. //! Erstellt eine UIML View zu einem UIML Text
  84. //! \param uiml Ein xml element gemät des KSG UIML standarts
  85. //! \param screen Ein zeiger für den Belschirm auf dem die tooltips angezeigt werden sollen
  86. //! \param schrift Die schrift mit der der Text gezeichnet werden soll
  87. __declspec( dllexport ) UIMLView( XML::Element *uiml, UIInit &init );
  88. //! Erstellt eine UIML View zu einem UIML Text
  89. //! \param uiml Ein xml text gemät des KSG UIML standarts
  90. //! \param screen Ein zeiger für den Belschirm auf dem die tooltips angezeigt werden sollen
  91. //! \param schrift Die schrift mit der der Text gezeichnet werden soll
  92. __declspec( dllexport ) UIMLView( Text uiml, UIInit &init );
  93. __declspec( dllexport ) ~UIMLView();
  94. //! setzt den inhalt der view
  95. //! \param uiml Ein xml element gemät des KSG UIML standarts
  96. __declspec( dllexport ) void setUIML( XML::Element *uiml );
  97. //! setzt den inhalt der view
  98. //! \param uiml Ein xml text gemät des KSG UIML standarts
  99. __declspec( dllexport ) void setUIML( Text uiml );
  100. //! aktualisiert größe und position aller Zeichnungen gemäß den spezifikationen in UIML
  101. __declspec( dllexport ) void layout();
  102. //! fügt ein element hinzu
  103. //! \param uiml Ein xml text gemät des KSG UIML standarts, welcher das neue Objekt darstellt
  104. //! \return id des neuen Elements
  105. __declspec( dllexport ) Text addMember( Text uiml );
  106. //! fügt ein element zu einem Elternelement hinzu (funktioniert momentan nur mit frame Objekten)
  107. //! \param uiml Ein xml text gemät des KSG UIML standarts, welcher das neue Objekt darstellt
  108. //! \return id des neuen Elements
  109. __declspec( dllexport ) Text addMember( Text uiml, Text parentId );
  110. //! entfernt ein element
  111. //! \param id id des Elements
  112. __declspec( dllexport ) void removeMember( Text id );
  113. //! Gibt eine zeichnung zurück, welche in uiml eine bestimmte id hat
  114. //! \param id die id der Zeichnung
  115. __declspec( dllexport ) Zeichnung *zZeichnung( Text id );
  116. //! Verarbeitet ein Tastatur Ereignis. Wird vom Framework automatisch aufgerufen
  117. //! \param te Das Ereignis
  118. __declspec( dllexport ) virtual void doTastaturEreignis( TastaturEreignis &te );
  119. //! Updated den Zeichenhintergrund
  120. //! \param tickVal Die vergangene Zeit in Sekunden, die seit dem Letzten Aufruf dieser Funktion verstrichen ist
  121. //! \return 1, wenn das Bild neu gezeichnet werden muss. 0 sonnst
  122. __declspec( dllexport ) bool tick( double tickVal ) override;
  123. //! Zeichnet den Hintergrund eines Zeichnunges nach rObj
  124. __declspec( dllexport ) void render( Bild &rObj ) override;
  125. //! Gibt den Dom Tree ohne erhöhten reference counter zurück
  126. //! Änderungen am Dom Tree sollten vermieden werden (nur änderungen von attributen einzelner elemente sind erlaubt)
  127. __declspec( dllexport ) XML::Element *zDom() const;
  128. //! Gibt den Dom Tree zurück
  129. //! Änderungen am Dom Tree sollten vermieden werden (nur änderungen von attributen einzelner elemente sind erlaubt)
  130. __declspec( dllexport ) XML::Element *getDom() const;
  131. };
  132. }