]> SALOME platform Git repositories - modules/smesh.git/blobdiff - src/SMESHGUI/SMESHGUI_FilterLibraryDlg.cxx
Salome HOME
NPAL13898 Ok/Apply/Close laborious for User
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_FilterLibraryDlg.cxx
index e8fffa426b58d3ca126db28b26519f90bd0196c9..8bd7425f02e0807e483ac97eed1a41e5784a75b5 100644 (file)
@@ -17,7 +17,7 @@
 //  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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -34,6 +34,9 @@
 #include "SUIT_Session.h"
 #include "SUIT_Desktop.h"
 #include "SUIT_FileDlg.h"
+#include "SUIT_MessageBox.h"
+
+#include "LightApp_Application.h"
 
 // QT Includes
 #include <qapplication.h>
@@ -79,10 +82,8 @@ SMESHGUI_FilterLibraryDlg::Dialog::~Dialog()
 
 bool SMESHGUI_FilterLibraryDlg::Dialog::acceptData()
 {
-#ifdef NEW_GUI
-  if (mode() != QFileDialogP::AnyFile)
-    return SUIT_FileDlg::acceptData();
-#endif
+//  if (mode() != QFileDialogP::AnyFile)
+//    return SUIT_FileDlg::acceptData();
 
   return true;
 }
@@ -96,12 +97,14 @@ bool SMESHGUI_FilterLibraryDlg::Dialog::acceptData()
 // name    : SMESHGUI_FilterLibraryDlg::SMESHGUI_FilterLibraryDlg
 // Purpose : Constructor
 //=======================================================================
-SMESHGUI_FilterLibraryDlg::SMESHGUI_FilterLibraryDlg (QWidget*               theParent,
+SMESHGUI_FilterLibraryDlg::SMESHGUI_FilterLibraryDlg (SMESHGUI* theModule,
+                                                      QWidget* parent,
                                                       const QValueList<int>& theTypes,
                                                       const int              theMode,
                                                       const char*            theName)
-     : QDialog(theParent, theName, true, WStyle_Customize |
-               WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu)
+     : QDialog( parent, theName, false, WStyle_Customize |
+                WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ),
+     mySMESHGUI( theModule )
 {
   construct(theTypes, theMode);
 }
@@ -110,12 +113,14 @@ SMESHGUI_FilterLibraryDlg::SMESHGUI_FilterLibraryDlg (QWidget*               the
 // name    : SMESHGUI_FilterLibraryDlg::SMESHGUI_FilterLibraryDlg
 // Purpose : Constructor
 //=======================================================================
-SMESHGUI_FilterLibraryDlg::SMESHGUI_FilterLibraryDlg (QWidget*    theParent,
+SMESHGUI_FilterLibraryDlg::SMESHGUI_FilterLibraryDlg (SMESHGUI* theModule,
+                                                      QWidget* parent,
                                                       const int   theType,
                                                       const int   theMode,
                                                       const char* theName)
-     : QDialog(theParent, theName, true, WStyle_Customize |
-               WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu)
+     : QDialog( parent, theName, true, WStyle_Customize |
+                WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ),
+     mySMESHGUI( theModule )
 {
   QValueList<int> aTypes;
   aTypes.append(theType);
@@ -142,6 +147,8 @@ void SMESHGUI_FilterLibraryDlg::construct (const QValueList<int>& theTypes,
 
   aDlgLay->setStretchFactor(myMainFrame, 1);
 
+  myHelpFileName = "selection_filter_library_page.html";
+  
   Init(myTypes, myMode);
 }
 
@@ -192,7 +199,7 @@ QFrame* SMESHGUI_FilterLibraryDlg::createMainFrame (QWidget* theParent)
 
   // table
 
-  myTable = new SMESHGUI_FilterTable(aMainFrame, myTypes);
+  myTable = new SMESHGUI_FilterTable( mySMESHGUI, aMainFrame, myTypes);
   myTable->SetEditable(myMode == EDIT);
   myTable->SetLibsEnabled(false);
 
@@ -234,19 +241,21 @@ QFrame* SMESHGUI_FilterLibraryDlg::createButtonFrame (QWidget* theParent)
 {
   QGroupBox* aGrp = new QGroupBox(1, Qt::Vertical, theParent);
 
-  myButtons[ BTN_OK    ] = new QPushButton(tr("SMESH_BUT_OK"   ), aGrp);
+  myButtons[ BTN_OK    ] = new QPushButton(tr("SMESH_BUT_APPLY_AND_CLOSE"), aGrp);
   myButtons[ BTN_Apply ] = new QPushButton(tr("SMESH_BUT_APPLY"), aGrp);
 
   QLabel* aLbl = new QLabel(aGrp);
   aLbl->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed));
 
   myButtons[ BTN_Cancel ] = new QPushButton(tr("SMESH_BUT_CANCEL"), aGrp);
-  myButtons[ BTN_Close  ] = new QPushButton(tr("SMESH_BUT_CLOSE"), aGrp);
+  myButtons[ BTN_Close ] = new QPushButton(tr("SMESH_BUT_CLOSE"), aGrp);
+  myButtons[ BTN_Help  ] = new QPushButton(tr("SMESH_BUT_HELP"), aGrp);
 
   connect(myButtons[ BTN_OK     ], SIGNAL(clicked()), SLOT(onOk()));
   connect(myButtons[ BTN_Cancel ], SIGNAL(clicked()), SLOT(onClose()));
   connect(myButtons[ BTN_Close  ], SIGNAL(clicked()), SLOT(onClose()));
   connect(myButtons[ BTN_Apply  ], SIGNAL(clicked()), SLOT(onApply()));
+  connect(myButtons[ BTN_Help   ], SIGNAL(clicked()), SLOT(onHelp()));
 
   QMap<int, QPushButton*>::iterator anIter;
   for (anIter = myButtons.begin(); anIter != myButtons.end(); ++anIter)
@@ -312,10 +321,8 @@ void SMESHGUI_FilterLibraryDlg::Init (const QValueList<int>& theTypes,
   updateControlsVisibility();
   setEnabled(true);
 
-  SMESHGUI* aModeler = SMESHGUI::GetSMESHGUI();
-
-  connect(aModeler, SIGNAL(SignalDeactivateActiveDialog()), SLOT(onDeactivate()));
-  connect(aModeler, SIGNAL(SignalCloseAllDialogs()), SLOT(onClose()));
+  connect( mySMESHGUI, SIGNAL(SignalDeactivateActiveDialog()), SLOT(onDeactivate()));
+  connect( mySMESHGUI, SIGNAL(SignalCloseAllDialogs()), SLOT(onClose()));
 
   if (myMode == ADD_TO)
   {
@@ -343,10 +350,6 @@ void SMESHGUI_FilterLibraryDlg::Init (const QValueList<int>& theTypes,
       myListBox->setCurrentItem(0);
   }
 
-  int x, y;
-  aModeler->DefineDlgPosition(this, x, y);
-  this->move(x, y);
-
   this->show();
 
   updateMainButtons();
@@ -448,8 +451,8 @@ void SMESHGUI_FilterLibraryDlg::onOk()
 {
   if (onApply())
   {
-    disconnect(SMESHGUI::GetSMESHGUI(), 0, this, 0);
-    SMESHGUI::GetSMESHGUI()->ResetState();
+    disconnect( mySMESHGUI, 0, this, 0);
+    mySMESHGUI->ResetState();
     accept();
   }
 }
@@ -460,11 +463,34 @@ void SMESHGUI_FilterLibraryDlg::onOk()
 //=======================================================================
 void SMESHGUI_FilterLibraryDlg::onClose()
 {
-  disconnect(SMESHGUI::GetSMESHGUI(), 0, this, 0);
-  SMESHGUI::GetSMESHGUI()->ResetState();
+  disconnect( mySMESHGUI, 0, this, 0);
+  mySMESHGUI->ResetState();
   reject();
 }
 
+//=================================================================================
+// function : onHelp()
+// purpose  :
+//=================================================================================
+void SMESHGUI_FilterLibraryDlg::onHelp()
+{
+  LightApp_Application* app = (LightApp_Application*)(SUIT_Session::session()->activeApplication());
+  if (app) 
+    app->onHelpContextModule(mySMESHGUI ? app->moduleName(mySMESHGUI->moduleName()) : QString(""), myHelpFileName);
+  else {
+               QString platform;
+#ifdef WIN32
+               platform = "winapplication";
+#else
+               platform = "application";
+#endif
+    SUIT_MessageBox::warn1(0, QObject::tr("WRN_WARNING"),
+                          QObject::tr("EXTERNAL_BROWSER_CANNOT_SHOW_PAGE").
+                          arg(app->resourceMgr()->stringValue("ExternalBrowser", platform)).arg(myHelpFileName),
+                          QObject::tr("BUT_OK"));
+  }
+}
+
 //=======================================================================
 // name    : SMESHGUI_FilterLibraryDlg::onDeactivate
 // Purpose : SLOT called when dialog must be deativated
@@ -861,7 +887,7 @@ SMESH::Filter_ptr SMESHGUI_FilterLibraryDlg::createFilter(const int theType)
 
   SMESH::FilterManager_var aFilterMgr = SMESH::GetFilterManager();
   SMESH::Filter_var aFilter = aFilterMgr->CreateFilter();
-  aFilter->SetCriteria(aCriteria.inout());
+  aFilter->SetCriteria(aCriteria.in());
 
   return aFilter._retn();
 }
@@ -1040,7 +1066,7 @@ void SMESHGUI_FilterLibraryDlg::onDeleteBtnPressed()
                              tr("ERROR_OF_DELETING"), QMessageBox::Ok);
   } else {
     myCurrFilterName = "";
-    myCurrFilterName = -1;
+    myCurrFilter = -1;
     myListBox->removeItem(anIndex);
 
     if (anIndex >= 1)
@@ -1131,3 +1157,20 @@ void SMESHGUI_FilterLibraryDlg::onNeedValidation()
     }
   }
 }
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_FilterLibraryDlg::keyPressEvent( QKeyEvent* e )
+{
+  QDialog::keyPressEvent( e );
+  if ( e->isAccepted() )
+    return;
+
+  if ( e->key() == Key_F1 )
+    {
+      e->accept();
+      onHelp();
+    }
+}