Salome HOME
Copyright update 2022
[modules/shaper.git] / src / ModuleBase / ModuleBase_Dialog.cpp
index 22b276fd2d4c84613421ba523d618077e416a7b4..b58ca52b579de6c99b2d3c700789e85106b027ea 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2014-2019  CEA/DEN, EDF R&D
+// Copyright (C) 2014-2022  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
@@ -23,6 +23,7 @@
 #include "ModuleBase_IPropertyPanel.h"
 #include "ModuleBase_PageWidget.h"
 #include "ModuleBase_ModelDialogWidget.h"
+#include "ModuleBase_Tools.h"
 
 #include <ModelAPI_Session.h>
 #include <ModelAPI_Events.h>
 #include <QPushButton>
 
 
-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_Dialog::ModuleBase_Dialog(ModuleBase_IWorkshop* theParent,
+  const std::string& theDescription) :
+  QDialog(theParent->desktop(),
+    Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint | Qt::WindowCloseButtonHint),
+  myDescription(theDescription),
+  myWorkshop(theParent),
+  myActiveWidget(0)
 {
+  Config_WidgetAPI aApi(myDescription, "");
+  myId = aApi.getProperty("id");
+
+  std::shared_ptr<Config_FeatureMessage> aFeatureInfo = myWorkshop->featureInfo(myId.c_str());
+  myHelpPage = aFeatureInfo->helpFileName();
+
   ModuleBase_WidgetFactory aFactory(myDescription, myWorkshop);
-  std::string aTitle = aFactory.widgetAPI()->getProperty(FEATURE_TEXT);
+  QString aTitle = ModuleBase_Tools::translate("ModuleBase_Dialog",
+      aFactory.widgetAPI()->getProperty(FEATURE_TEXT));
 
-  setWindowTitle(aTitle.c_str());
+  setWindowTitle(aTitle);
 
   SessionPtr aMgr = ModelAPI_Session::get();
   std::shared_ptr<ModelAPI_Document> aDoc = aMgr->activeDocument();
 
-  myFeature = aDoc->addFeature(myId.toStdString());
+  myFeature = aDoc->addFeature(myId);
   if (!myFeature.get())
     return;
   Events_Loop::loop()->flush(Events_Loop::eventByName(EVENT_OBJECT_CREATED));
@@ -62,7 +70,6 @@ ModuleBase_Dialog::ModuleBase_Dialog(ModuleBase_IWorkshop* theParent, const QStr
   QVBoxLayout* aLayout = new QVBoxLayout(this);
   aLayout->setContentsMargins(0, 0, 0, 0);
   aLayout->setSpacing(1);
-  //setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred));
 
   ModuleBase_PageWidget* aPage = new ModuleBase_PageWidget(this);
   aLayout->addWidget(aPage);
@@ -78,14 +85,17 @@ ModuleBase_Dialog::ModuleBase_Dialog(ModuleBase_IWorkshop* theParent, const QStr
   ModuleBase_Tools::adjustMargins(aBtnLayout);
 
   myButtonsBox = new QDialogButtonBox(
-    QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, aFrame);
+    QDialogButtonBox::Ok | QDialogButtonBox::Cancel | QDialogButtonBox::Help,
+    Qt::Horizontal, aFrame);
   aBtnLayout->addWidget(myButtonsBox);
 
   myButtonsBox->button(QDialogButtonBox::Ok)->setIcon(QIcon(":pictures/button_ok.png"));
   myButtonsBox->button(QDialogButtonBox::Cancel)->setIcon(QIcon(":pictures/button_cancel.png"));
+  myButtonsBox->button(QDialogButtonBox::Help)->setIcon(QIcon(":pictures/button_help.png"));
 
   connect(myButtonsBox, SIGNAL(accepted()), this, SLOT(accept()));
   connect(myButtonsBox, SIGNAL(rejected()), this, SLOT(reject()));
+  connect(myButtonsBox, SIGNAL(helpRequested()), this, SLOT(onHelpRequest()));
 
   foreach (ModuleBase_ModelWidget* aWidget, myWidgets) {
     initializeWidget(aWidget);
@@ -119,3 +129,8 @@ void ModuleBase_Dialog::accept()
   }
   QDialog::accept();
 }
+
+void ModuleBase_Dialog::onHelpRequest()
+{
+  myWorkshop->showHelpPage(myHelpPage.c_str());
+}