#include "UIDialog.h" #include "UIInitialization.h" #include "TextFeld.h" #include "Schrift.h" #include "Knopf.h" using namespace Framework; UIDialog::UIDialog( Schrift *schrift ) : Fenster() { addStyle( Fenster::Style::normal | Fenster::Style::BodyHintergrund | Fenster::Style::TitelHintergrund | Fenster::Style::ClosingHintergrund ); setKBgFarbe( 0xFF000000 ); setTBgFarbe( 0xFF000000 ); setSBgFarbe( 0xFF000000 ); setMausEreignis( _ret1ME ); setTastaturEreignis( _ret1TE ); setRBreite( 1 ); setRFarbe( 0xFFFFFFFF ); setTitel( "" ); setTSchriftZ( schrift ); setTSFarbe( 0xFFFFFFFF ); zTTextFeld()->setSize( 0, 20 ); zTTextFeld()->addStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Center | TextFeld::Style::Rahmen ); setTRFarbe( 0xFF00FF00 ); setTRBreite( 1 ); setTAfFarbe( 0x1000FF00 ); setTAfStrength( -15 ); setSKAfFarbe( 0xFF00FF00 ); setSKAfStrength( 30 ); setClosingMe( [this]( void *p, void *o, MausEreignis me ) { if( me.id == ME_RLinks ) removeStyle( Fenster::Style::Sichtbar ); return 1; } ); } UIDialog::~UIDialog() {} void UIDialog::adjustSize() { Punkt max = Punkt( 0, 0 ); for( auto m = getMembers(); m; m++ ) { if( m->hatStyle( Zeichnung::Style::Sichtbar ) ) { max.x = MAX( max.x, m->getX() + m->getBreite() + 5 ); max.y = MAX( max.y, m->getY() + m->getHeight() + 5 ); } } setSize( max + Punkt( hatStyle( Fenster::Style::Rahmen ) ? getRBreite() * 2 : 0, ( hatStyle( Fenster::Style::Rahmen ) ? getRBreite() * 2 : 0 ) + ( hatStyle( Fenster::Style::Titel ) ? zTTextFeld()->getHeight() : 0 ) ) ); } // Fügt dem Fenster eine Zeichnung hinzu // obj: Die Zeichnung void UIDialog::addMember( Zeichnung *obj ) { Fenster::addMember( obj ); adjustSize(); } // Entfernt eine Zeichnung aus dem Fenster // zObj: Die Zeichnung (ohne erhöhten reference Counter) void UIDialog::removeMember( Zeichnung *zObj ) { Fenster::removeMember( zObj ); adjustSize(); } // Entfernt alle Zeichnungen aus dem Fenster void UIDialog::removeAll() { Fenster::removeAll(); adjustSize(); } UIMessageDialog::UIMessageDialog( const char *titel, const char *message, Schrift *schrift ) : UIDialog( schrift ) { setTitel( titel ); UIInit init = defaultUI( schrift, 0 ); TextFeld *msg = init.createTextFeld( init.initParam ); msg->setStyle( TextFeld::Style::Text ); msg->setText( message ); msg->setPosition( 5, 5 ); TextRenderer tr( (Schrift *)schrift->getThis() ); tr.textFormatieren( msg->zText(), 590 ); int br = tr.getTextBreite( message ); int hö = tr.getTextHeight( message ); msg->setSize( br, hö ); Knopf *ok = init.createKnopf( init.initParam ); ok->setText( "Ok" ); ok->setMausEreignis( [this]( void *p, void *o, MausEreignis me ) { if( me.id == ME_RLinks ) removeStyle( Fenster::Style::Sichtbar ); return 1; } ); ok->setPosition( br - 100, hö + 5 ); ok->setSize( 100, 20 ); addMember( ok ); addMember( msg ); setSize( br + 10, hö + 55 ); } UIMessageDialog::~UIMessageDialog() {}