diff options
Diffstat (limited to 'modules/test.cpp')
-rw-r--r-- | modules/test.cpp | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/modules/test.cpp b/modules/test.cpp new file mode 100644 index 00000000..6f3178ef --- /dev/null +++ b/modules/test.cpp @@ -0,0 +1,137 @@ +// Trivial libyui example. +// +// Compile with: +// +// g++ -I/usr/include/yui -lyui test.cpp -o test +// +#include "YUI.h" +#include "YApplication.h" +#include "YWidgetFactory.h" +#include "YDialog.h" +#include "YPushButton.h" +#include "YLayoutBox.h" +#include "YReplacePoint.h" +#include "YEvent.h" +#include "YFrame.h" +#include <vector> + +int main( int argc, char **argv ) +{ + YUI::app()->setApplicationTitle("Test module"); + YUI::app()->setApplicationIcon("/usr/share/icons/mageia.png"); + + YDialog * dialog = YUI::widgetFactory()->createPopupDialog(); + YFrame* frame = YUI::widgetFactory()->createFrame(dialog, "Test frame"); + YLayoutBox * hbox = YUI::widgetFactory()->createHBox(frame); + YFrame* lframe = YUI::widgetFactory()->createFrame(hbox, "Left frame"); + YFrame* rframe = YUI::widgetFactory()->createFrame(hbox, "Right frame"); + // here we change the widget + YReplacePoint* replacePoint = YUI::widgetFactory()->createReplacePoint(rframe); + + YLayoutBox * vbox_rframe = YUI::widgetFactory()->createVBox( replacePoint ); + YLayoutBox * vbox = YUI::widgetFactory()->createVBox( lframe ); +// vbox->setSize( 1000, 1000 ); + lframe->setWeight(YD_HORIZ, 25); + rframe->setWeight(YD_HORIZ, 75); + YUI::widgetFactory()->createLabel ( vbox, "Hello, World!" ); + YPushButton* addButton = YUI::widgetFactory()->createPushButton( vbox, "Add Button" ); + YPushButton* removeButton = YUI::widgetFactory()->createPushButton( vbox, "Remove Button" ); + YPushButton* exitButton = YUI::widgetFactory()->createPushButton( vbox, "&Exit" ); + YUI::widgetFactory()->createSpacing( vbox, YD_VERT, true, 1.0 ); + + //YPushButton* testButton = YUI::widgetFactory()->createPushButton( vbox, "&Cannot be added" ); + //testButton->hide(); <-- Angelo, I could not see this call in the api + + int bnum = 0; + std::vector<YPushButton*>buttons; + + for (;;) + { + YEvent* event = dialog->waitForEvent(); + // Check for window close + if (event->eventType() == YEvent::CancelEvent) + { + break; + } + + // Check for Exit button push + if(event->widget() == (YWidget*)exitButton ) { + break; + }; + + if(event->widget() == (YWidget*)addButton ) { + if(bnum < 6) { + dialog->startMultipleChanges(); + replacePoint->deleteChildren(); + vbox_rframe = YUI::widgetFactory()->createVBox( replacePoint ); + bnum++; + buttons.clear(); + for (int i=0; i < bnum; ++i) + { + YPushButton* tmpB = YUI::widgetFactory()->createPushButton( vbox_rframe, "Delete Me" ); + buttons.push_back(tmpB); + } + replacePoint->showChild(); + dialog->recalcLayout(); + dialog->doneMultipleChanges(); + } + else if (bnum == 6) + { + dialog->startMultipleChanges(); + replacePoint->deleteChildren(); + vbox_rframe = YUI::widgetFactory()->createVBox( replacePoint ); + buttons.clear(); + for (int i=0; i < bnum; ++i) + { + YPushButton* tmpB = YUI::widgetFactory()->createPushButton( vbox_rframe, "Delete Me" ); + buttons.push_back(tmpB); + } + YUI::widgetFactory()->createSpacing( vbox_rframe, YD_VERT, false, 1.0 ); + replacePoint->showChild(); + dialog->recalcLayout(); + dialog->doneMultipleChanges(); + } + } + if(event->widget() == (YWidget*)removeButton ) { + if (bnum > 0) + { + dialog->startMultipleChanges(); + replacePoint->deleteChildren(); + vbox_rframe = YUI::widgetFactory()->createVBox( replacePoint ); + bnum--; + buttons.clear(); + for (int i=0; i < bnum; ++i) + { + YPushButton* tmpB = YUI::widgetFactory()->createPushButton( vbox_rframe, "Delete Me" ); + buttons.push_back(tmpB); + } + replacePoint->showChild(); + dialog->recalcLayout(); + dialog->doneMultipleChanges(); + } + } + + + for(int i = 0; i < bnum; ++i) + { + if (event->widget() == (YWidget*)buttons[i]) { + dialog->startMultipleChanges(); + replacePoint->deleteChildren(); + vbox_rframe = YUI::widgetFactory()->createVBox( replacePoint ); + bnum--; + buttons.clear(); + for (int i=0; i < bnum; ++i) + { + YPushButton* tmpB = YUI::widgetFactory()->createPushButton( vbox_rframe, "Delete Me" ); + buttons.push_back(tmpB); + } + replacePoint->showChild(); + dialog->recalcLayout(); + dialog->doneMultipleChanges(); + break; + } + } + } + + dialog->destroy(); +} |