Nachricht.cpp 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #include "Nachricht.h"
  2. #include <Schrift.h>
  3. #include <Text.h>
  4. #include <MausEreignis.h>
  5. #include <TastaturEreignis.h>
  6. #include <TextFeld.h>
  7. #include "../../../Initialisierung/Initialisierung.h"
  8. // Inhalt der Fehler Klasse aus Fehler.h
  9. // Konstruktor
  10. // zS: Die zu verwendende Schrift
  11. // nachricht: Der Fehler, der angezeigt werden soll
  12. // maxSize: Die Bildschirmgröße in Pixeln
  13. Nachricht::Nachricht( Schrift *zS, char *nachricht, Punkt maxSize, std::function< void() > onClose )
  14. : Dialog( zS )
  15. {
  16. Text *tmp = new Text( nachricht );
  17. zS->lock();
  18. zS->setSchriftSize( 12 );
  19. zS->textFormatieren( tmp, 300, 12 );
  20. int br = zS->getTextBreite( tmp );
  21. int hö = zS->getTextHeight( tmp );
  22. zS->unlock();
  23. setSize( br + 12, hö + 63 );
  24. setPosition( maxSize / 2 - getSize() / 2 );
  25. this->text = initTextFeld( 5, 5, br, hö, zS, TextFeld::Style::Text, tmp->getText() );
  26. addMember( text );
  27. tmp->release();
  28. ok = initKnopf( br - 94, hö + 12, 100, 20, zS, Knopf::Style::Normal, "Ok" );
  29. addMember( ok );
  30. bool *verl = &verlassen;
  31. auto me = [ verl, onClose ]( void *param, void *obj, MausEreignis me ) -> bool
  32. {
  33. if( me.id == ME_RLinks && !me.verarbeitet )
  34. {
  35. *verl = 1;
  36. if( onClose )
  37. onClose();
  38. }
  39. return 1;
  40. };
  41. ok->setMausEreignis( me );
  42. setClosingMe( me );
  43. }
  44. // Destruktor
  45. Nachricht::~Nachricht()
  46. {
  47. text->release();
  48. ok->release();
  49. }