]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Issue #2734: Add "Reset" button to the dialog box
authorvsv <vsv@opencascade.com>
Wed, 7 Nov 2018 10:10:53 +0000 (13:10 +0300)
committervsv <vsv@opencascade.com>
Wed, 7 Nov 2018 10:10:53 +0000 (13:10 +0300)
src/SHAPERGUI/SHAPERGUI.cpp
src/SHAPERGUI/SHAPERGUI.h
src/SHAPERGUI/SHAPERGUI_ToolbarsMgr.cpp
src/SHAPERGUI/SHAPERGUI_ToolbarsMgr.h

index 28f3de9a452fda65b9845be44ca597f04531e9c1..48b1ed4253e0d83bd804ce779f4da82b9fd035f0 100644 (file)
@@ -823,7 +823,10 @@ void SHAPERGUI::onEditToolbars()
 {
   SHAPERGUI_ToolbarsDlg aDlg(this);
   if (aDlg.exec() == QDialog::Accepted) {
-    updateToolbars(aDlg.result());
+    if (aDlg.isReset())
+      resetToolbars();
+    else
+      updateToolbars(aDlg.result());
   }
 }
 
@@ -846,6 +849,10 @@ int SHAPERGUI::getNextCommandId() const
 
 void SHAPERGUI::updateToolbars(const QMap<QString, QIntList>& theNewToolbars)
 {
+  // Store default toolbars
+  if (myDefaultToolbars.size() == 0)
+    myDefaultToolbars = myToolbars;
+
   QtxActionToolMgr* aMgr = toolMgr();
   QStringList aToolbars = theNewToolbars.keys();
   QIntList aCommands, aOldCmd;
@@ -1047,3 +1054,12 @@ QIntList SHAPERGUI::getFreeCommands() const
   }
   return aFreeCommands;
 }
+
+void SHAPERGUI::resetToolbars()
+{
+  if (!myDefaultToolbars.isEmpty())
+    updateToolbars(myDefaultToolbars);
+  myIsToolbarsModified = false;
+  SUIT_ResourceMgr* aResMgr = application()->resourceMgr();
+  aResMgr->remove(ToolbarsSection);
+}
index 9504446a24f7529f2fb36aae48d795e2369b548e..72c458d6ac72eec9d661cf373c992417f7445f0c 100644 (file)
@@ -165,6 +165,12 @@ Q_OBJECT
   /// Returns free commands which are not in toolbars in the module
   QIntList getFreeCommands() const;
 
+  /// Returns structure of default tool bars
+  QMap<QString, QIntList> defaultToolbars() const
+  { return (myDefaultToolbars.size() == 0)? myToolbars : myDefaultToolbars; }
+
+  void resetToolbars();
+
  public slots:
   /// \brief The method is redefined to connect to the study viewer before the data
   /// model is filled by opened file. This file open will flush redisplay signals for,
@@ -270,6 +276,7 @@ private slots:
   /// List of registered actions
   QIntList myActionsList;
   QMap<QString, QIntList> myToolbars;
+  QMap<QString, QIntList> myDefaultToolbars;
   bool myIsToolbarsModified;
 };
 
index e1e6b11377ea91e04ec699078225f9e450a08f2a..26bb4cc9e1d4e4dd376413c70710876725b4b38c 100644 (file)
@@ -80,7 +80,8 @@ private:
 SHAPERGUI_ToolbarsDlg::SHAPERGUI_ToolbarsDlg(SHAPERGUI* theModule)
   : QDialog(theModule->application()->desktop()),
   myModule(theModule),
-  myResult(theModule->shaperToolbars())
+  myResult(theModule->shaperToolbars()),
+  myIsReset(false)
 {
   myFreeCommands = theModule->getFreeCommands();
 
@@ -122,18 +123,27 @@ SHAPERGUI_ToolbarsDlg::SHAPERGUI_ToolbarsDlg(SHAPERGUI* theModule)
   aContolsLay->addWidget(aButtonsWgt);
 
   QPushButton* aAddBtn = new QPushButton(tr("Add..."), aButtonsWgt);
+  aAddBtn->setToolTip(tr("Add a new empty toolbar to the toolbars list"));
   connect(aAddBtn, SIGNAL(clicked(bool)), SLOT(onAdd()));
   aBtnLayout->addWidget(aAddBtn);
 
   QPushButton* aEditBtn = new QPushButton(tr("Edit..."), aButtonsWgt);
+  aEditBtn->setToolTip(tr("Edit currently selected toolbar"));
   connect(aEditBtn, SIGNAL(clicked(bool)), SLOT(onEdit()));
   aBtnLayout->addWidget(aEditBtn);
 
   QPushButton* aDeleteBtn = new QPushButton(tr("Delete"), aButtonsWgt);
+  aDeleteBtn->setToolTip(tr("Delete currently selected toolbar"));
   connect(aDeleteBtn, SIGNAL(clicked(bool)), SLOT(onDelete()));
   aBtnLayout->addWidget(aDeleteBtn);
   aBtnLayout->addStretch(1);
 
+  QPushButton* aResetBtn = new QPushButton(tr("Reset"), aButtonsWgt);
+  aResetBtn->setToolTip(tr("Restore default toolbars structure"));
+  connect(aResetBtn, SIGNAL(clicked(bool)), SLOT(onReset()));
+  aBtnLayout->addWidget(aResetBtn);
+  aBtnLayout->addSpacing(19);
+
   // Buttons part of the dialog
   QDialogButtonBox* aButtons =
     new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, this);
@@ -153,6 +163,7 @@ void SHAPERGUI_ToolbarsDlg::onAdd()
     if (!myResult.contains(aNewToolbar)) {
       myResult[aNewToolbar] = QIntList();
       updateToolbarsList();
+      myIsReset = false;
     }
     else {
       QString aMsg = tr("A tool bar with name %1 already exists").arg(aNewToolbar);
@@ -176,6 +187,7 @@ void SHAPERGUI_ToolbarsDlg::onEdit()
       myResult[aToolbarName] = aDlg.toolbarItems();
       updateNumber();
       updateToolbarsList();
+      myIsReset = false;
     }
   }
 }
@@ -196,6 +208,7 @@ void SHAPERGUI_ToolbarsDlg::onDelete()
       myResult.remove(aToolbarName);
       updateToolbarsList();
       updateNumber();
+      myIsReset = false;
     }
   }
 }
@@ -223,6 +236,15 @@ void SHAPERGUI_ToolbarsDlg::updateNumber()
   myFreeNbLbl->setText(QString::number(myFreeCommands.size()));
 }
 
+void SHAPERGUI_ToolbarsDlg::onReset()
+{
+  myResult = myModule->defaultToolbars();
+  updateNumber();
+  updateToolbarsList();
+  myIsReset = true;
+}
+
+
 //************************************************************************************
 //************************************************************************************
 //************************************************************************************
@@ -234,7 +256,7 @@ SHAPERGUI_ToolbarItemsDlg::SHAPERGUI_ToolbarItemsDlg(QWidget* theParent,
   : QDialog(theParent),
   myModule(theModule)
 {
-  setWindowTitle(tr("Edit toolbar items"));
+  setWindowTitle(tr("Edit toolbar"));
 
   QVBoxLayout* aMailLayout = new QVBoxLayout(this);
 
index 19d40013c2401ca2f44a25705e7f2bb806ccfa05..d9fcbde45c124d0052cdc7fb4b41e7f129b92d50 100644 (file)
@@ -104,6 +104,11 @@ public:
   /// Returns result of editing
   QMap<QString, QIntList> result() const { return myResult; }
 
+  /// Returns a flag of resetted toolbars structure
+  bool isReset() const {
+    return myIsReset;
+  }
+
 private slots:
   /// A slot to add a new toolbar
   void onAdd();
@@ -114,6 +119,9 @@ private slots:
   /// A slot to delete a current toolbar
   void onDelete();
 
+  /// A slot to delete a current toolbar
+  void onReset();
+
   /// A slot called on double click on item in list
   void onDoubleClick(const QModelIndex& theIdx);
 
@@ -131,6 +139,8 @@ private:
 
   QLabel* myFreeNbLbl;
   QListWidget* myToolbarsList;
+
+  bool myIsReset;
 };