#include "UIDialog.h" #include "Knopf.h" #include "Schrift.h" #include "TextFeld.h" #include "UIInitialization.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 (Zeichnung *z : getMembers()) { if (z->hatStyle(Zeichnung::Style::Sichtbar)) { max.x = MAX(max.x, z->getX() + z->getBreite() + 5); max.y = MAX(max.y, z->getY() + z->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(dynamic_cast(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() {}