UIDialog.cpp 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. #include "UIDialog.h"
  2. #include "UIInitialization.h"
  3. #include "TextFeld.h"
  4. #include "Schrift.h"
  5. #include "Knopf.h"
  6. using namespace Framework;
  7. UIDialog::UIDialog( Schrift *schrift )
  8. : Fenster()
  9. {
  10. setStyle( Fenster::Style::normal | Fenster::Style::BodyHintergrund | Fenster::Style::TitelHintergrund | Fenster::Style::ClosingHintergrund );
  11. setKBgFarbe( 0xFF000000 );
  12. setTBgFarbe( 0xFF000000 );
  13. setSBgFarbe( 0xFF000000 );
  14. setMausEreignis( _ret1ME );
  15. setTastaturEreignis( _ret1TE );
  16. setRBreite( 1 );
  17. setRFarbe( 0xFFFFFFFF );
  18. setTitel( "" );
  19. setTSchriftZ( schrift );
  20. setTSFarbe( 0xFFFFFFFF );
  21. zTTextFeld()->setSize( 0, 20 );
  22. zTTextFeld()->addStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Center | TextFeld::Style::Rahmen );
  23. setTRFarbe( 0xFF00FF00 );
  24. setTRBreite( 1 );
  25. setTAfFarbe( 0x1000FF00 );
  26. setTAfStrength( -15 );
  27. setSKAfFarbe( 0xFF00FF00 );
  28. setSKAfStrength( 30 );
  29. setClosingMe( [ this ]( void *p, void *o, MausEreignis me )
  30. {
  31. if( me.id == ME_RLinks )
  32. removeStyle( Fenster::Style::Sichtbar );
  33. return 1;
  34. } );
  35. }
  36. UIDialog::~UIDialog()
  37. {}
  38. void UIDialog::adjustSize()
  39. {
  40. Punkt max = Punkt( 0, 0 );
  41. for( auto m = getMembers(); m; m++ )
  42. {
  43. max.x = MAX( max.x, m->getX() + m->getBreite() + 5 );
  44. max.y = MAX( max.y, m->getY() + m->getHeight() + 5 );
  45. }
  46. setSize( max + Punkt( getRBreite() * 2, getRBreite() * 2 + zTTextFeld()->getHeight() ) );
  47. }
  48. // Fügt dem Fenster eine Zeichnung hinzu
  49. // obj: Die Zeichnung
  50. void UIDialog::addMember( Zeichnung *obj )
  51. {
  52. Fenster::addMember( obj );
  53. adjustSize();
  54. }
  55. // Entfernt eine Zeichnung aus dem Fenster
  56. // zObj: Die Zeichnung (ohne erhöhten reference Counter)
  57. void UIDialog::removeMember( Zeichnung *zObj )
  58. {
  59. Fenster::removeMember( zObj );
  60. adjustSize();
  61. }
  62. // Entfernt alle Zeichnungen aus dem Fenster
  63. void UIDialog::removeAll()
  64. {
  65. Fenster::removeAll();
  66. adjustSize();
  67. }
  68. UIMessageDialog::UIMessageDialog( const char *titel, const char *message, Schrift *schrift )
  69. : UIDialog( schrift )
  70. {
  71. setTitel( titel );
  72. UIInit init = defaultUI( schrift, 0 );
  73. TextFeld *msg = init.createTextFeld( init.initParam );
  74. msg->setStyle( TextFeld::Style::Text );
  75. msg->setText( message );
  76. msg->setPosition( 5, 5 );
  77. TextRenderer tr( schrift->getThis() );
  78. tr.textFormatieren( msg->zText(), 590 );
  79. int br = tr.getTextBreite( message );
  80. int hö = tr.getTextHeight( message );
  81. msg->setSize( br, hö );
  82. Knopf *ok = init.createKnopf( init.initParam );
  83. ok->setText( "Ok" );
  84. ok->setMausEreignis( [ this ]( void *p, void *o, MausEreignis me )
  85. {
  86. if( me.id == ME_RLinks )
  87. removeStyle( Fenster::Style::Sichtbar );
  88. return 1;
  89. } );
  90. ok->setPosition( br - 100, hö + 5 );
  91. ok->setSize( 100, 20 );
  92. addMember( ok );
  93. addMember( msg );
  94. setSize( br + 10, hö + 55 );
  95. }
  96. UIMessageDialog::~UIMessageDialog()
  97. {}