Gui Objects.h 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. /******************************************************************************/
  2. struct GuiObjs // Set of Gui Objects
  3. {
  4. // get
  5. GuiObj* find(C Str &name, GUI_OBJ_TYPE type); // find Gui Object of 'name' and 'type', null on fail
  6. GuiObj& get (C Str &name, GUI_OBJ_TYPE type); // get Gui Object of 'name' and 'type', Exit on fail
  7. Button * findButton (C Str &name) {return ( Button *)find(name, GO_BUTTON );} // find Gui Object, null on fail
  8. CheckBox * findCheckBox(C Str &name) {return ( CheckBox *)find(name, GO_CHECKBOX);} // find Gui Object, null on fail
  9. ComboBox * findComboBox(C Str &name) {return ( ComboBox *)find(name, GO_COMBOBOX);} // find Gui Object, null on fail
  10. GuiCustom* findCustom (C Str &name) {return ( GuiCustom*)find(name, GO_CUSTOM );} // find Gui Object, null on fail
  11. Desktop * findDesktop (C Str &name) {return ( Desktop *)find(name, GO_DESKTOP );} // find Gui Object, null on fail
  12. GuiImage * findImage (C Str &name) {return ( GuiImage *)find(name, GO_IMAGE );} // find Gui Object, null on fail
  13. _List * findList (C Str &name) {return (_List *)find(name, GO_LIST );} // find Gui Object, null on fail
  14. Menu * findMenu (C Str &name) {return ( Menu *)find(name, GO_MENU );} // find Gui Object, null on fail
  15. MenuBar * findMenuBar (C Str &name) {return ( MenuBar *)find(name, GO_MENU_BAR);} // find Gui Object, null on fail
  16. Progress * findProgress(C Str &name) {return ( Progress *)find(name, GO_PROGRESS);} // find Gui Object, null on fail
  17. Region * findRegion (C Str &name) {return ( Region *)find(name, GO_REGION );} // find Gui Object, null on fail
  18. SlideBar * findSlideBar(C Str &name) {return ( SlideBar *)find(name, GO_SLIDEBAR);} // find Gui Object, null on fail
  19. Slider * findSlider (C Str &name) {return ( Slider *)find(name, GO_SLIDER );} // find Gui Object, null on fail
  20. Tabs * findTabs (C Str &name) {return ( Tabs *)find(name, GO_TABS );} // find Gui Object, null on fail
  21. Text * findText (C Str &name) {return ( Text *)find(name, GO_TEXT );} // find Gui Object, null on fail
  22. TextBox * findTextBox (C Str &name) {return ( TextBox *)find(name, GO_TEXTBOX );} // find Gui Object, null on fail
  23. TextLine * findTextLine(C Str &name) {return ( TextLine *)find(name, GO_TEXTLINE);} // find Gui Object, null on fail
  24. Viewport * findViewport(C Str &name) {return ( Viewport *)find(name, GO_VIEWPORT);} // find Gui Object, null on fail
  25. Window * findWindow (C Str &name) {return ( Window *)find(name, GO_WINDOW );} // find Gui Object, null on fail
  26. Button & getButton (C Str &name) {return ( Button &)get(name, GO_BUTTON );} // get Gui Object, Exit on fail
  27. CheckBox & getCheckBox(C Str &name) {return ( CheckBox &)get(name, GO_CHECKBOX);} // get Gui Object, Exit on fail
  28. ComboBox & getComboBox(C Str &name) {return ( ComboBox &)get(name, GO_COMBOBOX);} // get Gui Object, Exit on fail
  29. GuiCustom& getCustom (C Str &name) {return ( GuiCustom&)get(name, GO_CUSTOM );} // get Gui Object, Exit on fail
  30. Desktop & getDesktop (C Str &name) {return ( Desktop &)get(name, GO_DESKTOP );} // get Gui Object, Exit on fail
  31. GuiImage & getImage (C Str &name) {return ( GuiImage &)get(name, GO_IMAGE );} // get Gui Object, Exit on fail
  32. _List & getList (C Str &name) {return (_List &)get(name, GO_LIST );} // get Gui Object, Exit on fail
  33. Menu & getMenu (C Str &name) {return ( Menu &)get(name, GO_MENU );} // get Gui Object, Exit on fail
  34. MenuBar & getMenuBar (C Str &name) {return ( MenuBar &)get(name, GO_MENU_BAR);} // get Gui Object, Exit on fail
  35. Progress & getProgress(C Str &name) {return ( Progress &)get(name, GO_PROGRESS);} // get Gui Object, Exit on fail
  36. Region & getRegion (C Str &name) {return ( Region &)get(name, GO_REGION );} // get Gui Object, Exit on fail
  37. SlideBar & getSlideBar(C Str &name) {return ( SlideBar &)get(name, GO_SLIDEBAR);} // get Gui Object, Exit on fail
  38. Slider & getSlider (C Str &name) {return ( Slider &)get(name, GO_SLIDER );} // get Gui Object, Exit on fail
  39. Tabs & getTabs (C Str &name) {return ( Tabs &)get(name, GO_TABS );} // get Gui Object, Exit on fail
  40. Text & getText (C Str &name) {return ( Text &)get(name, GO_TEXT );} // get Gui Object, Exit on fail
  41. TextBox & getTextBox (C Str &name) {return ( TextBox &)get(name, GO_TEXTBOX );} // get Gui Object, Exit on fail
  42. TextLine & getTextLine(C Str &name) {return ( TextLine &)get(name, GO_TEXTLINE);} // get Gui Object, Exit on fail
  43. Viewport & getViewport(C Str &name) {return ( Viewport &)get(name, GO_VIEWPORT);} // get Gui Object, Exit on fail
  44. Window & getWindow (C Str &name) {return ( Window &)get(name, GO_WINDOW );} // get Gui Object, Exit on fail
  45. C MembConst< GuiObj >* objects (GUI_OBJ_TYPE type)C; // get object container according to selected 'type', null on fail
  46. C MembConst< Button >& button ()C {return _button ;} // get Button container
  47. C MembConst< CheckBox >& checkbox()C {return _checkbox;} // get CheckBox container
  48. C MembConst< ComboBox >& combobox()C {return _combobox;} // get ComboBox container
  49. C MembConst< GuiCustom>& custom ()C {return _custom ;} // get GuiCustom container
  50. C MembConst< Desktop >& desktop ()C {return _desktop ;} // get Desktop container
  51. C MembConst< GuiImage >& image ()C {return _image ;} // get GuiImage container
  52. C MembConst<_List >& list ()C {return _list ;} // get List container
  53. C MembConst< Menu >& menu ()C {return _menu ;} // get Menu container
  54. C MembConst< MenuBar >& menubar ()C {return _menubar ;} // get MenuBar container
  55. C MembConst< Progress >& progress()C {return _progress;} // get Progress container
  56. C MembConst< Region >& region ()C {return _region ;} // get Region container
  57. C MembConst< SlideBar >& slidebar()C {return _slidebar;} // get SlideBar container
  58. C MembConst< Slider >& slider ()C {return _slider ;} // get Slider container
  59. C MembConst< Tabs >& tabs ()C {return _tabs ;} // get Tabs container
  60. C MembConst< Text >& text ()C {return _text ;} // get Text container
  61. C MembConst< TextBox >& textbox ()C {return _textbox ;} // get TextBox container
  62. C MembConst< TextLine >& textline()C {return _textline;} // get TextLine container
  63. C MembConst< Viewport >& viewport()C {return _viewport;} // get Viewport container
  64. C MembConst< Window >& window ()C {return _window ;} // get Window container
  65. // replace base gui object classes with extended versions, if used then it should be called before 'load' method
  66. T1(TYPE) GuiObjs& replaceButton () {_button .replaceClass<TYPE>(); return T;}
  67. T1(TYPE) GuiObjs& replaceCheckBox() {_checkbox.replaceClass<TYPE>(); return T;}
  68. T1(TYPE) GuiObjs& replaceComboBox() {_combobox.replaceClass<TYPE>(); return T;}
  69. T1(TYPE) GuiObjs& replaceCustom () {_custom .replaceClass<TYPE>(); return T;}
  70. T1(TYPE) GuiObjs& replaceDesktop () {_desktop .replaceClass<TYPE>(); return T;}
  71. T1(TYPE) GuiObjs& replaceImage () {_image .replaceClass<TYPE>(); return T;}
  72. T1(TYPE) GuiObjs& replaceList () {_list .replaceClass<TYPE>(); return T;}
  73. T1(TYPE) GuiObjs& replaceMenu () {_menu .replaceClass<TYPE>(); return T;}
  74. T1(TYPE) GuiObjs& replaceMenuBar () {_menubar .replaceClass<TYPE>(); return T;}
  75. T1(TYPE) GuiObjs& replaceProgress() {_progress.replaceClass<TYPE>(); return T;}
  76. T1(TYPE) GuiObjs& replaceRegion () {_region .replaceClass<TYPE>(); return T;}
  77. T1(TYPE) GuiObjs& replaceSlideBar() {_slidebar.replaceClass<TYPE>(); return T;}
  78. T1(TYPE) GuiObjs& replaceSlider () {_slider .replaceClass<TYPE>(); return T;}
  79. T1(TYPE) GuiObjs& replaceTabs () {_tabs .replaceClass<TYPE>(); return T;}
  80. T1(TYPE) GuiObjs& replaceText () {_text .replaceClass<TYPE>(); return T;}
  81. T1(TYPE) GuiObjs& replaceTextBox () {_textbox .replaceClass<TYPE>(); return T;}
  82. T1(TYPE) GuiObjs& replaceTextLine() {_textline.replaceClass<TYPE>(); return T;}
  83. T1(TYPE) GuiObjs& replaceViewport() {_viewport.replaceClass<TYPE>(); return T;}
  84. T1(TYPE) GuiObjs& replaceWindow () {_window .replaceClass<TYPE>(); return T;}
  85. // operations
  86. GuiObjs& hide (); // hide all root objects
  87. GuiObjs& show (); // show all root objects
  88. GuiObjs& activate(); // show all root objects and activate the first of them
  89. GuiObjs& fadeIn (); // fade in all root objects
  90. GuiObjs& fadeOut (); // fade out all root objects
  91. // manage
  92. T1(TYPE) struct ObjName : TYPE // Gui Object with its name
  93. {
  94. Str name;
  95. };
  96. GuiObjs& del(); // delete manually
  97. GuiObjs& create(C Memx< ObjName< Button > > &button , // create from objects
  98. C Memx< ObjName< CheckBox > > &checkbox,
  99. C Memx< ObjName< ComboBox > > &combobox,
  100. C Memx< ObjName< GuiCustom> > &custom ,
  101. C Memx< ObjName< Desktop > > &desktop ,
  102. C Memx< ObjName< GuiImage > > &image ,
  103. C Memx< ObjName<_List > > &list ,
  104. C Memx< ObjName< Menu > > &menu ,
  105. C Memx< ObjName< MenuBar > > &menubar ,
  106. C Memx< ObjName< Progress > > &progress,
  107. C Memx< ObjName< Region > > &region ,
  108. C Memx< ObjName< SlideBar > > &slidebar,
  109. C Memx< ObjName< Slider > > &slider ,
  110. C Memx< ObjName< Tabs > > &tab ,
  111. C Memx< ObjName< Text > > &text ,
  112. C Memx< ObjName< TextBox > > &textbox ,
  113. C Memx< ObjName< TextLine > > &textline,
  114. C Memx< ObjName< Viewport > > &viewport,
  115. C Memx< ObjName< Window > > &window );
  116. void copyTo( Memx< ObjName< Button > > &button , // copy self to object containers
  117. Memx< ObjName< CheckBox > > &checkbox,
  118. Memx< ObjName< ComboBox > > &combobox,
  119. Memx< ObjName< GuiCustom> > &custom ,
  120. Memx< ObjName< Desktop > > &desktop ,
  121. Memx< ObjName< GuiImage > > &image ,
  122. Memx< ObjName<_List > > &list ,
  123. Memx< ObjName< Menu > > &menu ,
  124. Memx< ObjName< MenuBar > > &menubar ,
  125. Memx< ObjName< Progress > > &progress,
  126. Memx< ObjName< Region > > &region ,
  127. Memx< ObjName< SlideBar > > &slidebar,
  128. Memx< ObjName< Slider > > &slider ,
  129. Memx< ObjName< Tabs > > &tabs ,
  130. Memx< ObjName< Text > > &text ,
  131. Memx< ObjName< TextBox > > &textbox ,
  132. Memx< ObjName< TextLine > > &textline,
  133. Memx< ObjName< Viewport > > &viewport,
  134. Memx< ObjName< Window > > &window ,
  135. GuiObj *parent=null)C; // 'parent'=gui object to which root objects should be attached to
  136. // io
  137. void operator=(C Str &name) ; // load from file name , Exit on fail
  138. void operator=(C UID &id ) ; // load from file name ID, Exit on fail
  139. Bool load (C Str &name) ; // load from file name , false on fail
  140. Bool load (C UID &id ) ; // load from file name ID, false on fail
  141. Bool save (C Str &name)C; // save to file name , false on fail
  142. Bool save(File &f, CChar *path=null)C; // save to file, 'path'=path at which resource is located (this is needed so that the sub-resources can be accessed with relative path), false on fail
  143. Bool load(File &f, CChar *path=null) ; // load from file, 'path'=path at which resource is located (this is needed so that the sub-resources can be accessed with relative path), false on fail
  144. #if !EE_PRIVATE
  145. private:
  146. #endif
  147. struct Obj
  148. {
  149. GUI_OBJ_TYPE type , parent_type;
  150. Int index, parent_index, parent_sub, name_offset;
  151. };
  152. Mems < Char > _names ;
  153. Mems < Obj > _objs ;
  154. MembConst< Button > _button ;
  155. MembConst< CheckBox > _checkbox;
  156. MembConst< ComboBox > _combobox;
  157. MembConst< GuiCustom> _custom ;
  158. MembConst< Desktop > _desktop ;
  159. MembConst< GuiImage > _image ;
  160. MembConst<_List > _list ;
  161. MembConst< Menu > _menu ;
  162. MembConst< MenuBar > _menubar ;
  163. MembConst< Progress > _progress;
  164. MembConst< Region > _region ;
  165. MembConst< SlideBar > _slidebar;
  166. MembConst< Slider > _slider ;
  167. MembConst< Tabs > _tabs ;
  168. MembConst< Text > _text ;
  169. MembConst< TextBox > _textbox ;
  170. MembConst< TextLine > _textline;
  171. MembConst< Viewport > _viewport;
  172. MembConst< Window > _window ;
  173. #if EE_PRIVATE
  174. MembConst<GuiObj>* objs(GUI_OBJ_TYPE type );
  175. GuiObj * go (GUI_OBJ_TYPE type, Int index, Int sub=-1);
  176. #endif
  177. };
  178. /******************************************************************************/