12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- #include "Frage.h"
- #include <Schrift.h>
- #include <Text.h>
- #include "../../../Initialisierung/Initialisierung.h"
- // Konstructor
- // zS: Ein Zeiger auf die zu verwendende Schrift
- // frage: Die Frage die an den Benutzer gestellt werden soll
- // left: Die linke Antwort
- // right: Die rechte Antwort
- // leftAk: Ein Zeiger auf eine Funktion die beim wählen der Linken Antwort aufgerufen wird
- // rightAk: Ein Zeiger auf eine Funktion die beim wählen der Rechten Antwort aufgerufen wird
- // abbruchAk: Ein Zeiger auf eine Funktion die beim Schließen des Fensters aufgerufen wird
- // maxSize: Die Bildschirmgröße in Pixeln
- Frage::Frage( TextRenderer *zS, char *frage, char *left, char *right, std::function< void() > leftAk, std::function< void() > rightAk, std::function< void() > abbruchAk, Punkt maxSize )
- : Dialog( zS )
- {
- Text *tmp = new Text( frage );
- zS->setSchriftSize( 12 );
- zS->textFormatieren( tmp, 300 );
- int br = zS->getTextBreite( tmp->getText() );
- int hö = zS->getTextHeight( tmp->getText() );
- setSize( br + 12, hö + 63 );
- setPosition( maxSize / 2 - getSize() / 2 );
-
- this->text = initTextFeld( 5, 5, br, hö, zS->zSchrift(), TextFeld::Style::Text, tmp->getText() );
- addMember( text );
- tmp->release();
- this->right = initKnopf( br - 94, hö + 22, 100, 20, zS->zSchrift(), Knopf::Style::Normal, right );
- addMember( this->right );
- this->left = initKnopf( br - 199, hö + 22, 100, 20, zS->zSchrift(), Knopf::Style::Normal, left );
- addMember( this->left );
- bool *verl = &verlassen;
- this->right->setMausEreignis( [ verl, rightAk ]( void *param, void *obj, MausEreignis me ) -> bool
- {
- if( me.id == ME_RLinks && !me.verarbeitet && !*verl )
- {
- *verl = 1;
- if( rightAk )
- rightAk();
- }
- return 1;
- } );
- this->left->setMausEreignis( [ verl, leftAk ]( void *param, void *obj, MausEreignis me ) -> bool
- {
- if( me.id == ME_RLinks && !me.verarbeitet && !*verl )
- {
- *verl = 1;
- if( leftAk )
- leftAk();
- }
- return 1;
- } );
- setClosingMe( [ verl, abbruchAk ]( void *param, void *obj, MausEreignis me ) -> bool
- {
- if( me.id == ME_RLinks && !me.verarbeitet && !*verl )
- {
- *verl = 1;
- if( abbruchAk )
- abbruchAk();
- }
- return 1;
- } );
- }
- Frage::~Frage()
- {
- text->release();
- left->release();
- right->release();
- }
|