1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
4 #include "ModuleBase_Dialog.h"
5 #include "ModuleBase_WidgetFactory.h"
6 #include "ModuleBase_IWorkshop.h"
7 #include "ModuleBase_IPropertyPanel.h"
8 #include "ModuleBase_PageWidget.h"
10 #include <ModelAPI_Session.h>
11 #include <ModelAPI_Events.h>
12 #include <Events_Loop.h>
14 #include <QMainWindow>
16 #include <QDialogButtonBox>
17 #include <QPushButton>
20 ModuleBase_Dialog::ModuleBase_Dialog(ModuleBase_IWorkshop* theParent, const QString& theId,
21 const std::string& theDescription) :
22 QDialog(theParent->desktop()),
24 myDescription(theDescription),
25 myWorkshop(theParent),
28 ModuleBase_WidgetFactory aFactory(myDescription, myWorkshop);
30 SessionPtr aMgr = ModelAPI_Session::get();
31 std::shared_ptr<ModelAPI_Document> aDoc = aMgr->activeDocument();
33 aMgr->startOperation(myId.toStdString());
34 myFeature = aDoc->addFeature(myId.toStdString());
37 Events_Loop::loop()->flush(Events_Loop::eventByName(EVENT_OBJECT_CREATED));
38 Events_Loop::loop()->flush(Events_Loop::eventByName(EVENT_OBJECT_UPDATED));
40 QVBoxLayout* aLayout = new QVBoxLayout(this);
41 aLayout->setContentsMargins(0, 0, 0, 0);
42 aLayout->setSpacing(1);
43 //setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred));
45 ModuleBase_PageWidget* aPage = new ModuleBase_PageWidget(this);
46 aLayout->addWidget(aPage);
48 aFactory.createWidget(aPage, false);
49 myWidgets = aFactory.getModelWidgets();
50 foreach (ModuleBase_ModelWidget* aWidget, myWidgets) {
51 initializeWidget(aWidget);
54 QFrame* aFrame = new QFrame(this);
55 aFrame->setFrameStyle(QFrame::WinPanel | QFrame::Raised);
56 aLayout->addWidget(aFrame);
58 QVBoxLayout* aBtnLayout = new QVBoxLayout(aFrame);
59 ModuleBase_Tools::adjustMargins(aBtnLayout);
61 QDialogButtonBox* aBtnBox = new QDialogButtonBox(
62 QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, aFrame);
63 aBtnLayout->addWidget(aBtnBox);
65 aBtnBox->button(QDialogButtonBox::Ok)->setIcon(QIcon(":pictures/button_ok.png"));
66 aBtnBox->button(QDialogButtonBox::Cancel)->setIcon(QIcon(":pictures/button_cancel.png"));
68 connect(aBtnBox, SIGNAL(accepted()), this, SLOT(accept()));
69 connect(aBtnBox, SIGNAL(rejected()), this, SLOT(reject()));
72 void ModuleBase_Dialog::initializeWidget(ModuleBase_ModelWidget* theWidget)
74 theWidget->setFeature(myFeature);
77 void ModuleBase_Dialog::showEvent(QShowEvent* theEvent)
79 QDialog::showEvent(theEvent);
80 if (myWidgets.length() > 0) {
81 myActiveWidget = myWidgets.first();
82 myActiveWidget->activate();
86 void ModuleBase_Dialog::accept()
89 if (!myActiveWidget->storeValue())