Beenden.cpp 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #include "Beenden.h"
  2. #include <TextFeld.h>
  3. #include <Schrift.h>
  4. #include <Punkt.h>
  5. // Inhalt der Beenden Klasse aus Beenden.h
  6. // Konstruktor
  7. Beenden::Beenden( Schrift *s, Bildschirm *b )
  8. : Abschnitt( b )
  9. {
  10. f = new Fenster();
  11. f->setStyle( Fenster::Style::Sichtbar | Fenster::Style::Erlaubt | Fenster::Style::Titel | Fenster::Style::Rahmen | Fenster::Style::TitelBuffered );
  12. f->setRFarbe( 0xFFFFFFFF );
  13. f->setRBreite( 1 );
  14. f->setTitel( "Beenden" );
  15. f->setTAfFarbe( 0x1000FF00 );
  16. f->setTAfStrength( -15 );
  17. f->setTRBreite( 1 );
  18. f->setTRFarbe( 0xFFFFFFFF );
  19. f->zTTextFeld()->addStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Center | TextFeld::Style::Rahmen );
  20. f->zTTextFeld()->setSize( 0, 20 );
  21. f->setTSchriftZ( dynamic_cast<Schrift *>( s->getThis() ) );
  22. f->setTSFarbe( 0xFFFFFFFF );
  23. f->setSize( 300, 150 );
  24. TextFeld *text = new TextFeld();
  25. text->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Mehrzeilig );
  26. text->setText( "Möchtest du das SMP wirklich beenden?" );
  27. text->setPosition( 10, 10 );
  28. text->setSize( 280, 70 );
  29. text->setSchriftZ( dynamic_cast<Schrift *>( s->getThis() ) );
  30. text->setSchriftSize( 12 );
  31. text->setSchriftFarbe( 0xFFFFFFFF );
  32. f->addMember( text );
  33. Knopf *beenden = new Knopf();
  34. beenden->setStyle( Knopf::Style::Normal );
  35. beenden->setText( "Beenden" );
  36. beenden->setSchriftZ( dynamic_cast<Schrift *>( s->getThis() ) );
  37. beenden->setSize( 100, 20 );
  38. beenden->setPosition( 190, 100 );
  39. beenden->setMausEreignisParameter( this );
  40. beenden->setMausEreignis( beendenBeendenMausEreignis );
  41. f->addMember( beenden );
  42. fenster = 0;
  43. s->release();
  44. }
  45. // Destruktor
  46. Beenden::~Beenden()
  47. {
  48. f->release();
  49. if( fenster )
  50. fenster->release();
  51. }
  52. // nicht constant
  53. void Beenden::setFenster( Fenster *f )
  54. {
  55. if( fenster )
  56. fenster->release();
  57. this->f->setPosition( f->getBreite() / 2 - 150, f->getHeight() / 2 - 75 );
  58. fenster = f;
  59. }
  60. void Beenden::setSichtbar( bool s )
  61. {
  62. sichtbar = s;
  63. if( !fenster )
  64. return;
  65. if( s )
  66. fenster->addMember( dynamic_cast<Zeichnung *>( f->getThis() ) );
  67. else
  68. fenster->removeMember( f );
  69. }
  70. bool Beenden::beendenMausEreignis( void *obj, MausEreignis me )
  71. {
  72. if( me.id == ME_RLinks )
  73. PostQuitMessage( 0 );
  74. return 1;
  75. }
  76. // Ereignisse
  77. bool beendenBeendenMausEreignis( void *p, void *obj, MausEreignis me )
  78. {
  79. if( !p )
  80. return 0;
  81. return ( (Beenden *)p )->beendenMausEreignis( obj, me );
  82. }