GUI.cpp 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. #include "GUI.h"
  2. #include <TextFeld.h>
  3. #include <MausEreignis.h>
  4. #include <M2Datei.h>
  5. #include <Text.h>
  6. #include <DateiSystem.h>
  7. #include <DateiDialog.h>
  8. Knopf *initKnopf( int x, int y, int br, int hö, Schrift *zSchrift, int style, char *titel )
  9. {
  10. Knopf *ret = new Knopf();
  11. ret->addStyle( style );
  12. ret->setPosition( x, y );
  13. ret->setSize( br, hö );
  14. if( zSchrift )
  15. ret->setSchriftZ( zSchrift->getThis() );
  16. ret->setText( titel );
  17. return ret;
  18. }
  19. TextFeld *initTextFeld( int x, int y, int br, int hö, Schrift *zSchrift, int style, char *txt )
  20. {
  21. TextFeld *ret = new TextFeld();
  22. ret->setStyle( style );
  23. ret->setSchriftZ( zSchrift->getThis() );
  24. ret->setText( txt );
  25. ret->setSchriftFarbe( 0xFFFFFFFF );
  26. ret->setSchriftSize( 12 );
  27. if( ret->hatStyle( TextFeld::Style::Buffered ) )
  28. {
  29. ret->setAlphaFeldFarbe( 0x5500FF00 );
  30. ret->setAlphaFeldStrength( -5 );
  31. }
  32. if( ret->hatStyle( TextFeld::Style::Rahmen ) )
  33. {
  34. ret->setLinienRahmenBreite( 1 );
  35. ret->setLinienRahmenFarbe( 0xFF00FF00 );
  36. }
  37. ret->setPosition( x, y );
  38. ret->setSize( br, hö );
  39. return ret;
  40. }
  41. KontrollKnopf *initKontrollKnopf( int x, int y, int br, int hö, Schrift *zSchrift, int style, char *txt )
  42. {
  43. KontrollKnopf *ret = new KontrollKnopf();
  44. ret->setStyle( style );
  45. ret->setSchriftZ( zSchrift->getThis() );
  46. ret->setText( txt );
  47. ret->setSText( txt );
  48. ret->setSFarbe( 0xFFFFFFFF );
  49. ret->setSSize( 12 );
  50. if( ret->hatStyle( TextFeld::Style::Buffered ) )
  51. {
  52. ret->setAlphaFeldFarbe( 0x5500FF00 );
  53. ret->setAlphaFeldStrength( -5 );
  54. }
  55. if( ret->hatStyle( TextFeld::Style::Rahmen ) )
  56. {
  57. ret->setLinienRahmenBreite( 1 );
  58. ret->setLinienRahmenFarbe( 0xFF00FF00 );
  59. }
  60. ret->setPosition( x, y );
  61. ret->setSize( br, hö );
  62. ret->loadData( "../data/system.ltdb" );
  63. ret->setMausEreignis( _ret1ME );
  64. return ret;
  65. }
  66. // Inhalt der GUI Klasse aus GUI.h
  67. // Konstruktor
  68. GUI::GUI( Schrift *zSchrift )
  69. {
  70. laden = initKnopf( 10, 740, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Laden" );
  71. speichern = initKnopf( 630, 740, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Speichern" );
  72. pfad = initTextFeld( 120, 740, 300, 20, zSchrift, TextFeld::Style::TextFeld, "Dateipfad" );
  73. suchen = initKnopf( 430, 740, 80, 20, zSchrift, Knopf::Style::Normal, "Durchsuchen" );
  74. name = initTextFeld( 520, 740, 100, 20, zSchrift, TextFeld::Style::TextFeld, "Name" );
  75. textur = initKontrollKnopf( 10, 770, 70, 20, zSchrift, KontrollKnopf::Style::Normal, "Textur" );
  76. texturSpeichern = initKnopf( 90, 770, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Textur Speichern" );
  77. texturPfad = initTextFeld( 200, 770, 220, 20, zSchrift, TextFeld::Style::TextFeld, "Textur Pfad" );
  78. texturSuchen = initKnopf( 430, 770, 80, 20, zSchrift, Knopf::Style::Normal, "Durchsuchen" );
  79. texturName = initTextFeld( 520, 770, 100, 20, zSchrift, TextFeld::Style::TextFeld, "Textur Name" );
  80. texturLaden = initKnopf( 630, 770, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Textur Laden" );
  81. data = new Data( 0 );
  82. editor = new Editor2D( zSchrift );
  83. editor->setDataZ( data->getThis() );
  84. liste = new EditorListe( zSchrift );
  85. liste->setDataZ( data->getThis() );
  86. ref = 1;
  87. }
  88. // Destruktor
  89. GUI::~GUI()
  90. {
  91. editor->release();
  92. liste->release();
  93. speichern->release();
  94. laden->release();
  95. pfad->release();
  96. suchen->release();
  97. name->release();
  98. data->release();
  99. textur->release();
  100. texturSpeichern->release();
  101. texturPfad->release();
  102. texturSuchen->release();
  103. texturName->release();
  104. texturLaden->release();
  105. }
  106. // nicht constant
  107. void GUI::doMausEreignis( MausEreignis &me )
  108. {
  109. editor->doMausEreignis( me );
  110. liste->doMausEreignis( me );
  111. bool vera = me.verarbeitet;
  112. speichern->doMausEreignis( me );
  113. if( me.id == ME_RLinks && me.verarbeitet && !vera )
  114. {
  115. M2Datei d;
  116. d.setPfad( pfad->zText()->getText() );
  117. d.leseDaten();
  118. Model2DData *md = data->getM2();
  119. d.saveModel( md, name->zText()->getText() );
  120. md->release();
  121. }
  122. vera = me.verarbeitet;
  123. laden->doMausEreignis( me );
  124. if( me.id == ME_RLinks && me.verarbeitet && !vera )
  125. {
  126. M2Datei d;
  127. d.setPfad( pfad->zText()->getText() );
  128. d.leseDaten();
  129. Model2DData *md = d.ladeModel( name->zText()->getText() );
  130. if( md )
  131. {
  132. data->release();
  133. data = new Data( md );
  134. editor->setDataZ( data->getThis() );
  135. liste->setDataZ( data->getThis() );
  136. }
  137. else
  138. MessageBox( 0, "Das Objekt wurde nicht gefunden.", "Fehler", MB_ICONERROR );
  139. }
  140. vera = me.verarbeitet;
  141. suchen->doMausEreignis( me );
  142. if( me.id == ME_RLinks && me.verarbeitet && !vera )
  143. {
  144. DateiDialog d;
  145. d.addDateiTyp( "2D Modell Datei", "*.m2" );
  146. Text *path = d.anzeigen( 1 );
  147. if( path )
  148. pfad->setText( path );
  149. }
  150. vera = me.verarbeitet;
  151. texturSuchen->doMausEreignis( me );
  152. if( me.id == ME_RLinks && me.verarbeitet && !vera )
  153. {
  154. DateiDialog d;
  155. d.addDateiTyp( "Bild Archiv", "*.ltdb" );
  156. Text *path = d.anzeigen( 1 );
  157. if( path )
  158. texturPfad->setText( path );
  159. }
  160. pfad->doMausEreignis( me );
  161. name->doMausEreignis( me );
  162. textur->doMausEreignis( me );
  163. data->setRTextur( textur->hatStyle( KontrollKnopf::Style::Selected ) );
  164. vera = me.verarbeitet;
  165. texturSpeichern->doMausEreignis( me );
  166. if( !vera && me.verarbeitet && me.id == ME_RLinks )
  167. data->saveTextur();
  168. texturPfad->doMausEreignis( me );
  169. texturName->doMausEreignis( me );
  170. vera = me.verarbeitet;
  171. texturLaden->doMausEreignis( me );
  172. if( !vera && me.verarbeitet && me.id == ME_RLinks )
  173. {
  174. LTDBDatei bd;
  175. bd.setDatei( texturPfad->getText() );
  176. bd.leseDaten( 0 );
  177. Bild *t = bd.laden( 0, texturName->getText() );
  178. if( !t )
  179. MessageBox( 0, "Das Bild wurde nicht gefunden.", "Fehler", MB_ICONERROR );
  180. else
  181. data->setTextur( t );
  182. }
  183. }
  184. void GUI::doTastaturEreignis( TastaturEreignis &te )
  185. {
  186. editor->doTastaturEreignis( te );
  187. pfad->doTastaturEreignis( te );
  188. name->doTastaturEreignis( te );
  189. texturPfad->doTastaturEreignis( te );
  190. texturName->doTastaturEreignis( te );
  191. }
  192. bool GUI::tick( double zeit )
  193. {
  194. rend |= editor->tick( zeit );
  195. rend |= liste->tick( zeit );
  196. rend |= speichern->tick( zeit );
  197. rend |= laden->tick( zeit );
  198. rend |= pfad->tick( zeit );
  199. rend |= suchen->tick( zeit );
  200. rend |= name->tick( zeit );
  201. rend |= textur->tick( zeit );
  202. rend |= texturSpeichern->tick( zeit );
  203. rend |= texturName->tick( zeit );
  204. rend |= texturPfad->tick( zeit );
  205. rend |= texturSuchen->tick( zeit );
  206. rend |= texturLaden->tick( zeit );
  207. bool ret = rend;
  208. rend = 0;
  209. return ret;
  210. }
  211. void GUI::render( Bild &zRObj )
  212. {
  213. editor->render( zRObj );
  214. liste->render( zRObj );
  215. speichern->render( zRObj );
  216. laden->render( zRObj );
  217. pfad->render( zRObj );
  218. suchen->render( zRObj );
  219. name->render( zRObj );
  220. textur->render( zRObj );
  221. texturSpeichern->render( zRObj );
  222. texturPfad->render( zRObj );
  223. texturSuchen->render( zRObj );
  224. texturName->render( zRObj );
  225. texturLaden->render( zRObj );
  226. }
  227. // Reference Counting
  228. GUI *GUI::getThis()
  229. {
  230. ref++;
  231. return 0;
  232. }
  233. GUI *GUI::release()
  234. {
  235. ref--;
  236. if( !ref )
  237. delete this;
  238. return 0;
  239. }