Salome HOME
Merge branch 'Dev_GroupsRevision'
[modules/shaper.git] / src / ModuleBase / ModuleBase_Dialog.cpp
index 42a7d53c5a02f49ea8ae9953ec0cd00bc6d8f4b3..d07bebf0f05b072850f6829abbe28fe320eb17c8 100644 (file)
@@ -1,36 +1,59 @@
-// Copyright (C) 2014-20xx CEA/DEN, EDF R&D
-
+// Copyright (C) 2014-2017  CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or
+// email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
+//
 
 #include "ModuleBase_Dialog.h"
 #include "ModuleBase_WidgetFactory.h"
 #include "ModuleBase_IWorkshop.h"
 #include "ModuleBase_IPropertyPanel.h"
 #include "ModuleBase_PageWidget.h"
+#include "ModuleBase_ModelDialogWidget.h"
 
 #include <ModelAPI_Session.h>
 #include <ModelAPI_Events.h>
 #include <Events_Loop.h>
 
+#include <Config_WidgetAPI.h>
+#include <Config_Keywords.h>
+
 #include <QMainWindow>
 #include <QLayout>
 #include <QDialogButtonBox>
 #include <QPushButton>
 
 
-ModuleBase_Dialog::ModuleBase_Dialog(ModuleBase_IWorkshop* theParent, const QString& theId, 
-                                     const std::string& theDescription) : 
-                                     QDialog(theParent->desktop()), 
-                                     myId(theId), 
-                                     myDescription(theDescription), 
+ModuleBase_Dialog::ModuleBase_Dialog(ModuleBase_IWorkshop* theParent, const QString& theId,
+                                     const std::string& theDescription) :
+                                     QDialog(theParent->desktop()),
+                                     myId(theId),
+                                     myDescription(theDescription),
                                      myWorkshop(theParent),
                                      myActiveWidget(0)
 {
   ModuleBase_WidgetFactory aFactory(myDescription, myWorkshop);
+  std::string aTitle = aFactory.widgetAPI()->getProperty(FEATURE_TEXT);
+
+  setWindowTitle(aTitle.c_str());
 
   SessionPtr aMgr = ModelAPI_Session::get();
   std::shared_ptr<ModelAPI_Document> aDoc = aMgr->activeDocument();
 
-  aMgr->startOperation(myId.toStdString());
   myFeature = aDoc->addFeature(myId.toStdString());
   if (!myFeature.get())
     return;
@@ -47,9 +70,6 @@ ModuleBase_Dialog::ModuleBase_Dialog(ModuleBase_IWorkshop* theParent, const QStr
 
   aFactory.createWidget(aPage, false);
   myWidgets = aFactory.getModelWidgets();
-  foreach (ModuleBase_ModelWidget* aWidget, myWidgets) {
-    initializeWidget(aWidget);
-  }
 
   QFrame* aFrame = new QFrame(this);
   aFrame->setFrameStyle(QFrame::WinPanel | QFrame::Raised);
@@ -58,20 +78,29 @@ ModuleBase_Dialog::ModuleBase_Dialog(ModuleBase_IWorkshop* theParent, const QStr
   QVBoxLayout* aBtnLayout = new QVBoxLayout(aFrame);
   ModuleBase_Tools::adjustMargins(aBtnLayout);
 
-  QDialogButtonBox* aBtnBox = new QDialogButtonBox(
+  myButtonsBox = new QDialogButtonBox(
     QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, aFrame);
-  aBtnLayout->addWidget(aBtnBox);
+  aBtnLayout->addWidget(myButtonsBox);
 
-  aBtnBox->button(QDialogButtonBox::Ok)->setIcon(QIcon(":pictures/button_ok.png"));
-  aBtnBox->button(QDialogButtonBox::Cancel)->setIcon(QIcon(":pictures/button_cancel.png"));
+  myButtonsBox->button(QDialogButtonBox::Ok)->setIcon(QIcon(":pictures/button_ok.png"));
+  myButtonsBox->button(QDialogButtonBox::Cancel)->setIcon(QIcon(":pictures/button_cancel.png"));
 
-  connect(aBtnBox, SIGNAL(accepted()), this, SLOT(accept()));
-  connect(aBtnBox, SIGNAL(rejected()), this, SLOT(reject()));
+  connect(myButtonsBox, SIGNAL(accepted()), this, SLOT(accept()));
+  connect(myButtonsBox, SIGNAL(rejected()), this, SLOT(reject()));
+
+  foreach (ModuleBase_ModelWidget* aWidget, myWidgets) {
+    initializeWidget(aWidget);
+  }
 }
 
 void ModuleBase_Dialog::initializeWidget(ModuleBase_ModelWidget* theWidget)
 {
+  ModuleBase_ModelDialogWidget* aDlgWgt = dynamic_cast<ModuleBase_ModelDialogWidget*>(theWidget);
+  if (aDlgWgt)
+    aDlgWgt->setDialogButtons(myButtonsBox);
+
   theWidget->setFeature(myFeature);
+  theWidget->restoreValue();
 }
 
 void ModuleBase_Dialog::showEvent(QShowEvent* theEvent)