Salome HOME
Portation on new based dialog SLN_ASL_opt
authorsln <sln@opencascade.com>
Fri, 15 Jul 2005 14:05:43 +0000 (14:05 +0000)
committersln <sln@opencascade.com>
Fri, 15 Jul 2005 14:05:43 +0000 (14:05 +0000)
17 files changed:
src/SMESHGUI/Makefile.in
src/SMESHGUI/SMESHGUI.cxx
src/SMESHGUI/SMESHGUI_AddSubMeshDlg.cxx
src/SMESHGUI/SMESHGUI_CreateHypothesesDlg.cxx
src/SMESHGUI/SMESHGUI_CreateHypothesesDlg.h
src/SMESHGUI/SMESHGUI_CreateHypothesesOp.cxx [new file with mode: 0644]
src/SMESHGUI/SMESHGUI_CreateHypothesesOp.h [new file with mode: 0644]
src/SMESHGUI/SMESHGUI_Dialog.cxx
src/SMESHGUI/SMESHGUI_Dialog.h
src/SMESHGUI/SMESHGUI_EditHypothesesDlg.cxx
src/SMESHGUI/SMESHGUI_ExtrusionDlg.cxx
src/SMESHGUI/SMESHGUI_GroupOpDlg.cxx
src/SMESHGUI/SMESHGUI_InitMeshDlg.cxx
src/SMESHGUI/SMESHGUI_NodesDlg.cxx
src/SMESHGUI/SMESHGUI_Operation.cxx
src/SMESHGUI/SMESHGUI_RemoveDlg.cxx
src/SMESHGUI/SMESHGUI_StandardMeshInfosDlg.cxx

index 365709f75dd0775e0007c9814872442847666253..f8b887bcbec0ef3849cfdc3408060b2359deaf8e 100644 (file)
@@ -44,7 +44,9 @@ EXPORT_HEADERS= SMESHGUI_Swig.hxx \
                SMESHGUI_SpinBox.h \
                SMESHGUI_aParameter.h \
                SMESHGUI_aParameterDlg.h \
-               SMESHGUI_Selection.h
+               SMESHGUI_Selection.h \
+               SMESHGUI_Operation.h \
+               SMESHGUI_Dialog.h
 
 # .po files to transform in .qm
 PO_FILES = \
@@ -84,6 +86,7 @@ LIB_SRC =     SMESHGUI.cxx \
                SMESHGUI_EditHypothesesDlg.cxx \
                SMESHGUI_EditHypothesesOp.cxx \
                SMESHGUI_CreateHypothesesDlg.cxx \
+               SMESHGUI_CreateHypothesesOp.cxx \
                SMESHGUI_XmlHandler.cxx \
                SMESHGUI_Filter.cxx \
                SMESHGUI_FilterDlg.cxx \
@@ -154,6 +157,7 @@ LIB_MOC = \
                SMESHGUI_EditHypothesesDlg.h \
                SMESHGUI_EditHypothesesOp.h \
                SMESHGUI_CreateHypothesesDlg.h \
+               SMESHGUI_CreateHypothesesOp.h \
                SMESHGUI_FilterDlg.h \
                SMESHGUI_FilterLibraryDlg.h \
                SMESHGUI_SingleEditDlg.h \
index 646a2815c460587f87024c91a65ded434ff42c42..16e69b6ba929c22110426fcf8bef732769f513c2 100644 (file)
@@ -44,7 +44,7 @@
 #include "SMESHGUI_MoveNodesOp.h"
 #include "SMESHGUI_AddMeshElementOp.h"
 #include "SMESHGUI_EditHypothesesOp.h"
-#include "SMESHGUI_CreateHypothesesDlg.h"
+#include "SMESHGUI_CreateHypothesesOp.h"
 #include "SMESHGUI_FilterDlg.h"
 #include "SMESHGUI_FilterLibraryDlg.h"
 #include "SMESHGUI_SingleEditDlg.h"
@@ -751,7 +751,6 @@ void SMESHGUI::ResetState()
 //=============================================================================
 void SMESHGUI::EmitSignalDeactivateDialog()
 {
-  printf( "sln: EmitSignalDeactivateDialog EmitSignalDeactivateDialog EmitSignalDeactivateDialog\n" );
   emit SignalDeactivateActiveDialog();
 }
 
@@ -1956,20 +1955,11 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
     
 
   case 5000: // HYPOTHESIS
-    {
-      if(checkLock(aStudy)) break;
-      EmitSignalDeactivateDialog();
-      new SMESHGUI_CreateHypothesesDlg ( this, "", FALSE, false );
-      break;
-    }
+    startOperation( 5000 );
+  break;
   case 5010: // ALGO
-    {
-      if(checkLock(aStudy)) break;
-      EmitSignalDeactivateDialog();
-      new SMESHGUI_CreateHypothesesDlg ( this, "", FALSE, true);
-      break;
-    }
-
+    startOperation( 5010 );
+  break;    
   case 5105: // Library of selection filters
   {
     static QValueList<int> aTypes;
@@ -3180,6 +3170,14 @@ SalomeApp_Operation* SMESHGUI::createOperation( const int id ) const
       op = new SMESHGUI_ExtrusionOp();
       break;
 
+    case 5000:
+      op = new SMESHGUI_CreateHypothesesOp( false );
+      break;
+
+    case 5010:
+      op = new SMESHGUI_CreateHypothesesOp( true );
+      break;      
+
 /*    case 900:
       op = new SMESHGUI_MeshInfosOp();
       break;*/
index 4a098c8eca755b58730691ef30821ddbfe286377..c0426475aa116bee0f37cb244fb896fc1b872ac6 100644 (file)
@@ -43,7 +43,7 @@
 //            TRUE to construct a modal dialog.
 //=================================================================================
 SMESHGUI_AddSubMeshDlg::SMESHGUI_AddSubMeshDlg()
-: SMESHGUI_Dialog( false, true )
+: SMESHGUI_Dialog( 0, false, true )
 {
     setCaption(tr("SMESH_ADD_SUBMESH"));
 
index 68d2f10c8844c1230c7f31d15ee8c5e6d80de649..e5e2285d4c723b271e82f6550d7e5f1becb67853 100644 (file)
 
 #include "SMESHGUI_CreateHypothesesDlg.h"
 
-#include "SMESHGUI_HypothesesUtils.h"
-#include "SMESHGUI_Hypotheses.h"
-#include "SMESHGUI_Utils.h"
-#include "SMESHGUI.h"
-
 #include "SUIT_Desktop.h"
 #include "SUIT_ResourceMgr.h"
 
 #include <qlistview.h>
 #include <qheader.h>
 
-using namespace std;
-
-//=================================================================================
-// function : SMESHGUI_CreateHypothesesDlg()
-// purpose  : Constructs a SMESHGUI_CreateHypothesesDlg which is a child of 'parent', with the
-//            name 'name' and widget flags set to 'f'.
-//            The dialog will by default be modeless, unless you set 'modal' to
-//            TRUE to construct a modal dialog.
-//=================================================================================
-SMESHGUI_CreateHypothesesDlg::SMESHGUI_CreateHypothesesDlg (SMESHGUI* theModule,
-                                                            const char* name,
-                                                            bool modal,
-                                                            bool isAlgo)
-     : QDialog( SMESH::GetDesktop( theModule ), name, modal, WStyle_Customize | WStyle_NormalBorder |
-               WStyle_Title | WStyle_SysMenu | WDestructiveClose),
-       myIsAlgo(isAlgo),
-       mySMESHGUI( theModule )
+/*!
+ * \brief Constructor
+  * \param theIsAlgo - If TRUE when operator is used for creation of gypotheses
+*
+* Constructor does nothing
+*/
+SMESHGUI_CreateHypothesesDlg::SMESHGUI_CreateHypothesesDlg ( bool isAlgo )
+: SMESHGUI_Dialog( 0, false, true, Apply | Cancel ),
+  myIsAlgo(isAlgo)
 {
-  if (!name)
-    setName("SMESHGUI_CreateHypothesesDlg");
-  setCaption(isAlgo ? tr("SMESH_CREATE_ALGORITHMS" ) : tr("SMESH_CREATE_HYPOTHESES" ));
-  setSizeGripEnabled(TRUE);
-
-  QGridLayout* SMESHGUI_CreateHypothesesDlgLayout = new QGridLayout(this);
-  SMESHGUI_CreateHypothesesDlgLayout->setSpacing(6);
-  SMESHGUI_CreateHypothesesDlgLayout->setMargin(11);
-
-  /***************************************************************/
-  GroupAlgorithms = new QGroupBox(this, "GroupAlgorithms");
-  GroupAlgorithms->setTitle(isAlgo ? tr("SMESH_AVAILABLE_ALGORITHMS") : tr("SMESH_AVAILABLE_HYPOTHESES"));
-  GroupAlgorithms->setColumnLayout(0, Qt::Vertical);
-  GroupAlgorithms->layout()->setSpacing(0);
-  GroupAlgorithms->layout()->setMargin(0);
-
-  QGridLayout* hypLayout = new QGridLayout(GroupAlgorithms->layout());
-  hypLayout->setGeometry(QRect(12, 18, 139, 250));
-  hypLayout->setAlignment(Qt::AlignTop);
-  hypLayout->setSpacing(6);
-  hypLayout->setMargin(11);
-
-  ListAlgoDefinition = new QListView(GroupAlgorithms, "ListAlgoDefinition");
-  ListAlgoDefinition->setMinimumSize(400, 200);
-  ListAlgoDefinition->addColumn("");
-  ListAlgoDefinition->header()->hide();
-  ListAlgoDefinition->setSelectionMode(QListView::Single);
-  ListAlgoDefinition->setResizeMode(QListView::AllColumns);
-  ListAlgoDefinition->setRootIsDecorated(true);
-
-  hypLayout->addWidget(ListAlgoDefinition, 0, 0);
-  SMESHGUI_CreateHypothesesDlgLayout->addWidget(GroupAlgorithms, 0, 0);
-
-  /***************************************************************/
-  GroupButtons = new QGroupBox(this, "GroupButtons");
-  GroupButtons->setColumnLayout(0, Qt::Vertical);
-  GroupButtons->layout()->setSpacing(0);
-  GroupButtons->layout()->setMargin(0);
-  QGridLayout* GroupButtonsLayout = new QGridLayout(GroupButtons->layout());
-  GroupButtonsLayout->setAlignment(Qt::AlignTop);
-  GroupButtonsLayout->setSpacing(6);
-  GroupButtonsLayout->setMargin(11);
-
-  buttonApply = new QPushButton(GroupButtons, "buttonApply");
-  buttonApply->setText(tr("SMESH_BUT_CREATE" ));
-  buttonApply->setAutoDefault(TRUE);
-  buttonApply->setDefault(FALSE);
-  buttonApply->setEnabled(FALSE);
-  GroupButtonsLayout->addWidget(buttonApply, 0, 1);
+  setCaption(  isAlgo ? tr( "SMESH_CREATE_ALGORITHMS"  ) : tr( "SMESH_CREATE_HYPOTHESES"  )  );
+  setSizeGripEnabled( TRUE  );
 
-  QSpacerItem* spacer_9 = new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
-  GroupButtonsLayout->addItem(spacer_9, 0, 2);
+  QGridLayout* SMESHGUI_CreateHypothesesDlgLayout = new QGridLayout( mainFrame() );
+  SMESHGUI_CreateHypothesesDlgLayout->setSpacing( 6 );
+  SMESHGUI_CreateHypothesesDlgLayout->setMargin( 11 );
 
-  buttonCancel = new QPushButton(GroupButtons, "buttonCancel");
-  buttonCancel->setText(tr("SMESH_BUT_CLOSE" ));
-  buttonCancel->setAutoDefault(TRUE);
-  buttonCancel->setDefault(TRUE);
-  buttonCancel->setEnabled(TRUE);
-  GroupButtonsLayout->addWidget(buttonCancel, 0, 3);
-
-  SMESHGUI_CreateHypothesesDlgLayout->addWidget(GroupButtons, 1, 0);
   /***************************************************************/
-
-  Init();
+  QGroupBox* GroupAlgorithms = new QGroupBox( mainFrame(), "GroupAlgorithms" );
+  GroupAlgorithms->setTitle( isAlgo ? tr( "SMESH_AVAILABLE_ALGORITHMS" ) : tr( "SMESH_AVAILABLE_HYPOTHESES" ) );
+  GroupAlgorithms->setColumnLayout( 0, Qt::Vertical );
+  GroupAlgorithms->layout()->setSpacing( 0 );
+  GroupAlgorithms->layout()->setMargin( 0 );
+
+  QGridLayout* hypLayout = new QGridLayout( GroupAlgorithms->layout() );
+  hypLayout->setGeometry( QRect( 12, 18, 139, 250 ) );
+  hypLayout->setAlignment( Qt::AlignTop );
+  hypLayout->setSpacing( 6 );
+  hypLayout->setMargin( 11 );
+
+  myList = new QListView( GroupAlgorithms, "myList" );
+  myList->setMinimumSize( 400, 200 );
+  myList->addColumn( "" );
+  myList->header()->hide();
+  myList->setSelectionMode( QListView::Single );
+  myList->setResizeMode( QListView::AllColumns );
+  myList->setRootIsDecorated( true );
+
+  hypLayout->addWidget( myList, 0, 0 );
+  SMESHGUI_CreateHypothesesDlgLayout->addWidget( GroupAlgorithms, 0, 0 );
+
+  setButtonText( Apply, tr( "SMESH_BUT_CREATE" ) );
+
+  // connect signals and slots
+  connect( myList, SIGNAL( selectionChanged() ), SLOT( onHypSelected() ) );
+  connect( myList, SIGNAL( doubleClicked( QListViewItem* ) ), SLOT( onDoubleClicked( QListViewItem* ) ) );
+
+  // update button state
+  onHypSelected();
 }
 
-//=================================================================================
-// function : ~SMESHGUI_CreateHypothesesDlg()
-// purpose  : Destroys the object and frees any allocated resources
-//=================================================================================
+/*!
+ * \brief Destructor
+*/
 SMESHGUI_CreateHypothesesDlg::~SMESHGUI_CreateHypothesesDlg()
 {
-  // no need to delete child widgets, Qt does it all for us
 }
 
-//=================================================================================
-// function : Init()
-// purpose  :
-//=================================================================================
-void SMESHGUI_CreateHypothesesDlg::Init()
+/*!
+ * \brief Get Name of hypotheses or algorithm
+  * \return Name of hypotheses or algorithm
+*/
+QString SMESHGUI_CreateHypothesesDlg::hypName() const
 {
-  mySMESHGUI->SetActiveDialogBox((QDialog*)this);
-
-  InitAlgoDefinition();
-
-  /* signals and slots connections */
-  connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel()));
-  connect(buttonApply , SIGNAL(clicked()), this, SLOT(ClickOnApply()));
-
-//  connect(mySMESHGUI, SIGNAL (SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog()));
-  connect(mySMESHGUI, SIGNAL (SignalCloseAllDialogs()), this, SLOT(ClickOnCancel()));
-
-  connect(ListAlgoDefinition, SIGNAL(selectionChanged()), this, SLOT(onSelectionChanged()));
-  connect(ListAlgoDefinition, SIGNAL(doubleClicked(QListViewItem*)), this, SLOT(onDoubleClicked(QListViewItem*)));
+  QListViewItem* item = myList->selectedItem();
+  return item ? item->text( 1 ) : "";
+}
 
-  int x, y;
-  mySMESHGUI->DefineDlgPosition(this, x, y);
-  this->move(x, y);
-  this->show();
+/*!
+ * \brief Enable/Disable "Apply" button 
+*
+* Private slot called when selection in list box changed enables/disables "Apply" button
+*/
+void SMESHGUI_CreateHypothesesDlg::onHypSelected()
+{
+  QListViewItem* item = myList->selectedItem();
+  setButtonEnabled( item && item->depth() > 0, Apply );
 }
 
-//=================================================================================
-// function : ClickOnCancel()
-// purpose  :
-//=================================================================================
-void SMESHGUI_CreateHypothesesDlg::ClickOnCancel()
+/*!
+ * \brief Emits dlgApply signal
+  * \param i - clicked item
+*
+* Private slot called when item of list box is double clicked emits dlgApply signal
+*/
+void SMESHGUI_CreateHypothesesDlg::onDoubleClicked ( QListViewItem* i )
 {
-  close();
+  if ( i && i->depth() > 0 )
+    emit dlgApply();
 }
 
-//=================================================================================
-// function : ClickOnApply()
-// purpose  :
-//=================================================================================
-void SMESHGUI_CreateHypothesesDlg::ClickOnApply()
+/*!
+ * \brief Initialize dialog
+  * \param theHypList - List of hypotheses
+  * \param theHypList - Plugin names
+  * \param theHypList - Labels
+  * \param theHypList - Icons' identifiers
+*
+* Initializes dialog with parameters. This method is called by operation before showing
+* dialog
+*/
+void SMESHGUI_CreateHypothesesDlg::init( const QStringList& theHypList,
+                                         const QStringList& thePluginNames,
+                                         const QStringList& theLabels,
+                                         const QStringList& theIconIds )
 {
-  if (mySMESHGUI->isActiveStudyLocked())
-    return;
-  QListViewItem* item = ListAlgoDefinition->selectedItem();
-  if (!item)
-    return;
-  QString aHypType = item->text(1);
-  MESSAGE("Apply " << aHypType);
-  char* sHypType = (char*)aHypType.latin1();
+  myList->clear();
+  for ( int i = 0; i < theHypList.count(); ++i )
+  {
+    QListViewItem* parentItem = 0;
+    QListViewItem* childItem = myList->firstChild();
+    while ( childItem )
+    {
+      if ( childItem->text( 0 ) == thePluginNames[ i ] )
+      {
+        parentItem = childItem;
+        break;
+      }
+      childItem = childItem->nextSibling();
+    }
+    
+    if ( !parentItem )
+      parentItem = new QListViewItem( myList, thePluginNames[ i ] );
+    parentItem->setOpen( true );
+    QListViewItem* aItem =
+      new QListViewItem( parentItem, theLabels[ i ], theHypList[ i ] );
+    QPixmap aPixMap( resMgr()->loadPixmap( "SMESH", tr( theIconIds[ i ] ) ) );
+    if ( !aPixMap.isNull() )
+      aItem->setPixmap( 0, aPixMap );
+  }
+}
 
-  HypothesisData* aHypData = SMESH::GetHypothesisData(sHypType);
-  if (!aHypData)
-    return;
-  QString aClientLibName = aHypData->ClientLibName;
-  MESSAGE("Client lib name = " << aClientLibName);
 
-  if (aClientLibName == "") {
-    // Call hypothesis creation server method (without GUI)
-    QString aHypName = aHypData->Label;
-    SMESH::CreateHypothesis(sHypType, aHypName, myIsAlgo);
-  } else {
-    // Get hypotheses creator client (GUI)
-    SMESHGUI_GenericHypothesisCreator* aCreator =
-      SMESH::GetHypothesisCreator(sHypType);
 
-    // Create hypothesis/algorithm
-    aCreator->CreateHypothesis(myIsAlgo, this);
-  }
 
-//  buttonApply->setEnabled(FALSE);
-  return;
-}
 
-//=================================================================================
-// function : ActivateThisDialog()
-// purpose  :
-//=================================================================================
-void SMESHGUI_CreateHypothesesDlg::ActivateThisDialog()
-{
-  mySMESHGUI->EmitSignalDeactivateDialog();
-  GroupButtons->setEnabled(true);
-  return;
-}
 
-//=================================================================================
-// function : enterEvent()
-// purpose  :
-//=================================================================================
-void SMESHGUI_CreateHypothesesDlg::enterEvent (QEvent*)
-{
-  ActivateThisDialog();
-  return;
-}
 
-//=================================================================================
-// function : closeEvent()
-// purpose  :
-//=================================================================================
-void SMESHGUI_CreateHypothesesDlg::closeEvent (QCloseEvent* e)
-{
-  mySMESHGUI->ResetState();
-  QDialog::closeEvent(e);
-}
 
-//=================================================================================
-// function : onSelectionChanged()
-// purpose  :
-//=================================================================================
-void SMESHGUI_CreateHypothesesDlg::onSelectionChanged()
-{
-  QListViewItem* item = ListAlgoDefinition->selectedItem();
-  buttonApply->setEnabled(item && item->depth() > 0);
-}
 
-//=================================================================================
-// function : onDoubleClicked()
-// purpose  :
-//=================================================================================
-void SMESHGUI_CreateHypothesesDlg::onDoubleClicked (QListViewItem* i)
-{
-  if (i && i->depth() > 0)
-    this->ClickOnApply();
-}
 
-//=================================================================================
-// function : InitAlgoDefinition()
-// purpose  :
-//=================================================================================
-void SMESHGUI_CreateHypothesesDlg::InitAlgoDefinition()
-{
-  ListAlgoDefinition->clear();
-  QStringList HypList = SMESH::GetAvailableHypotheses(myIsAlgo);
-  for (int i = 0; i < HypList.count(); ++i) {
-    HypothesisData* aHypData = SMESH::GetHypothesisData(HypList[i]);
-    QListViewItem* parentItem = 0;
-    QListViewItem* childItem = ListAlgoDefinition->firstChild();
-    while (childItem) {
-      if (childItem->text(0) == aHypData->PluginName) {
-       parentItem = childItem;
-       break;
-      }
-      childItem = childItem->nextSibling();
-    }
-    if (!parentItem)
-      parentItem = new QListViewItem(ListAlgoDefinition, aHypData->PluginName);
-    parentItem->setOpen(true);
-    QListViewItem* aItem = new QListViewItem(parentItem, aHypData->Label, HypList[i]);
-    QPixmap aPixMap (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr(aHypData->IconId)));
-    if (!aPixMap.isNull())
-      aItem->setPixmap(0, aPixMap);
-  }
-}
index e2bb65a6741ee371ec0c3353ae34e4380c1009a2..c1ab1dd6fbe501df8a8e5537da011e4902ed59a6 100644 (file)
 #ifndef DIALOGBOX_CREATE_HYPOTHESES_H
 #define DIALOGBOX_CREATE_HYPOTHESES_H
 
-// QT Includes
-#include <qvariant.h>
-#include <qdialog.h>
-#include <qstringlist.h>
-
-// IDL Headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(GEOM_Gen)
-#include CORBA_SERVER_HEADER(SMESH_Mesh)
-
-#include <map>
-#include <string>
-
-class QButtonGroup;
-class QGroupBox;
-class QPushButton;
+#include "SMESHGUI_Dialog.h"
+
 class QListView;
 class QListViewItem;
-class SMESHGUI;
 
-//=================================================================================
-// class    : SMESHGUI_CreateHypothesesDlg
-// purpose  :
-//=================================================================================
-class SMESHGUI_CreateHypothesesDlg : public QDialog
+/*!
+ * \brief Dialog for creation of hypotheses and algorithms
+*/
+class SMESHGUI_CreateHypothesesDlg : public SMESHGUI_Dialog
 {
-    Q_OBJECT
+  Q_OBJECT
 
 public:
-    SMESHGUI_CreateHypothesesDlg (SMESHGUI*,
-                                 const char* name = 0,
-                                 bool modal = FALSE,
-                                 bool isAlgo = FALSE);
-    ~SMESHGUI_CreateHypothesesDlg ();
-
-private:
-
-    void Init() ;
-    void closeEvent( QCloseEvent* e ) ;
-    void enterEvent ( QEvent * ) ;
-
-    void InitAlgoDefinition();
 
-    SMESHGUI*     mySMESHGUI;
-    bool          myIsAlgo;
+  SMESHGUI_CreateHypothesesDlg ( bool isAlgo );
+  virtual ~SMESHGUI_CreateHypothesesDlg();
 
-    QGroupBox*    GroupButtons;
-    QPushButton*  buttonCancel;
-    QPushButton*  buttonApply;
+  void          init( const QStringList& theHypList,
+                      const QStringList& thePluginNames,
+                      const QStringList& theLabels,
+                      const QStringList& theIconIds );
 
-    QGroupBox* GroupAlgorithms;
-    QListView* ListAlgoDefinition;
+  QString       hypName() const;
 
 private slots:
 
-    void ClickOnCancel();
-    void ClickOnApply();
-    void ActivateThisDialog() ;
+  void          onHypSelected();
+  void          onDoubleClicked( QListViewItem* );
 
-    void onSelectionChanged();
-    void onDoubleClicked(QListViewItem*);
+private:
+
+  QListView*    myList;
+  bool          myIsAlgo;
 };
 
 #endif // DIALOGBOX_CREATE_HYPOTHESES_H
+
+
+
diff --git a/src/SMESHGUI/SMESHGUI_CreateHypothesesOp.cxx b/src/SMESHGUI/SMESHGUI_CreateHypothesesOp.cxx
new file mode 100644 (file)
index 0000000..0a159d8
--- /dev/null
@@ -0,0 +1,151 @@
+/**
+*  SALOME SMESHGUI
+*
+*  Copyright (C) 2005  CEA/DEN, EDF R&D
+*
+*
+*
+*  File   : SMESHGUI_CreateHypothesesOp.cxx
+*  Author : Sergey LITONIN
+*  Module : SALOME
+*/
+
+#include "SMESHGUI_CreateHypothesesOp.h"
+
+#include "SMESHGUI_CreateHypothesesDlg.h"
+#include "SMESHGUI_HypothesesUtils.h"
+#include "SMESHGUI_Hypotheses.h"
+#include "SMESHGUI.h"
+
+#include "SALOME_ListIteratorOfListIO.hxx"
+
+#include <qstring.h>
+#include <qstringlist.h>
+
+/*!
+ * \brief Constructor
+  * \param theIsAlgo - If TRUE when operation is used for creation of gypotheses
+*
+* Constructor does nothing
+*/
+SMESHGUI_CreateHypothesesOp::SMESHGUI_CreateHypothesesOp( const bool theIsAlgo )
+: SMESHGUI_Operation(),
+  myIsAlgo( theIsAlgo ),
+  myDlg( 0 )
+{
+}
+
+/*!
+ * \brief Destructor
+*/
+SMESHGUI_CreateHypothesesOp::~SMESHGUI_CreateHypothesesOp()
+{
+}
+
+/*!
+ * \brief Start operation
+*
+* Virtual method redefined from the base class initializes and shows dialog
+*/
+void SMESHGUI_CreateHypothesesOp::startOperation()
+{
+  if ( myDlg == 0 )
+    myDlg = new SMESHGUI_CreateHypothesesDlg( myIsAlgo );
+
+  SMESHGUI_Operation::startOperation();
+
+  QStringList aHypList, aPluginNames, aLabels, anIconIds;
+    
+  aHypList = SMESH::GetAvailableHypotheses( myIsAlgo );
+  for ( int i = 0, n = aHypList.count(); i < n; ++i )
+  {
+    HypothesisData* aHypData = SMESH::GetHypothesisData( aHypList[i] );
+    if ( aHypData )
+    {
+      aPluginNames.append( aHypData->PluginName );
+      aLabels.append( aHypData->Label );
+      anIconIds.append( aHypData->IconId );
+    }
+    else
+    {
+      aPluginNames.append( "" );
+      aLabels.append( "" );
+      anIconIds.append( "" );
+    }
+  }
+
+  myDlg->init( aHypList, aPluginNames, aLabels, anIconIds );
+  myDlg->show();
+}
+
+/*!
+ * \brief Gets dialog
+  * \return Pointer to the dialog used by this operation
+*
+* This pointer is used by base operation for its different purposes
+*/
+SalomeApp_Dialog* SMESHGUI_CreateHypothesesOp::dlg() const
+{
+  return myDlg;
+}
+
+/*!
+ * \brief onApply
+  * \return TRUE if hypothesis or algorithm is created successfully, FALSE otherwise
+*
+* Virtual slot redefined from base class is called when "Apply" button clicked and
+* creates hypothesis or algorithm
+*/
+bool SMESHGUI_CreateHypothesesOp::onApply()
+{
+  if ( isStudyLocked() )
+    return false;
+    
+  QString aHypType = myDlg->hypName();
+  if ( aHypType == "" )
+    return false;
+
+  char* sHypType = ( char* )aHypType.latin1();
+
+  HypothesisData* aHypData = SMESH::GetHypothesisData( sHypType );
+  if ( !aHypData )
+    return false;
+    
+  QString aClientLibName = aHypData->ClientLibName;
+
+  if ( aClientLibName == "" )
+  {
+    // Call hypothesis creation server method ( without GUI )
+    QString aHypName = aHypData->Label;
+    SMESH::CreateHypothesis( sHypType, aHypName, myIsAlgo );
+  }
+  else
+  {
+    // Get hypotheses creator client ( GUI )
+    SMESHGUI_GenericHypothesisCreator* aCreator =
+      SMESH::GetHypothesisCreator( sHypType );
+
+    // Create hypothesis/algorithm
+    aCreator->CreateHypothesis( myIsAlgo, dlg() );
+  }
+
+  return true;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/SMESHGUI/SMESHGUI_CreateHypothesesOp.h b/src/SMESHGUI/SMESHGUI_CreateHypothesesOp.h
new file mode 100644 (file)
index 0000000..8bf85d4
--- /dev/null
@@ -0,0 +1,55 @@
+/**
+*  SALOME SMESHGUI
+*
+*  Copyright (C) 2005  CEA/DEN, EDF R&D
+*
+*
+*
+*  File   : SMESHGUI_CreateHypothesesOp.h
+*  Author : Sergey LITONIN
+*  Module : SALOME
+*/
+
+#ifndef SMESHGUI_CreateHypothesesOp_H
+#define SMESHGUI_CreateHypothesesOp_H
+
+#include "SMESHGUI_Operation.h"
+
+// IDL Headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(GEOM_Gen)
+#include CORBA_SERVER_HEADER(SMESH_Mesh)
+
+class SMESHGUI_CreateHypothesesDlg;
+
+/*!
+ * \brief Operation for creation of hypotheses and algorithms
+*/
+class SMESHGUI_CreateHypothesesOp : public SMESHGUI_Operation
+{
+  Q_OBJECT
+
+public:
+
+  SMESHGUI_CreateHypothesesOp( const bool theIsAlgo );
+  virtual ~SMESHGUI_CreateHypothesesOp();
+
+  virtual SalomeApp_Dialog*     dlg() const;
+
+protected slots:
+
+  virtual bool                  onApply();
+
+protected:
+
+  virtual void                  startOperation();
+
+private:
+
+  SMESHGUI_CreateHypothesesDlg* myDlg;
+  bool myIsAlgo;
+  
+};
+
+
+#endif
index eff519e681928685b30dc553dc837d4e17d3903d..7bfc211782052a084e17f612768782e298404873 100644 (file)
@@ -35,8 +35,9 @@
 // function : SMESHGUI_Dialog
 // purpose  : Constructor
 //=================================================================================
-SMESHGUI_Dialog::SMESHGUI_Dialog( const bool modal, const bool allowResize, const int flags )
-: SalomeApp_Dialog( desktop(), "", modal, allowResize, flags )
+SMESHGUI_Dialog::SMESHGUI_Dialog( QWidget* parent, const bool modal,
+                                  const bool allowResize, const int flags )
+: SalomeApp_Dialog( parent == 0 ? desktop() : parent, "", modal, allowResize, flags )
 {
   int pr = prefix( "SMESH" );
   typeName( pr + MESH ) = tr( "DLG_MESH" );
@@ -107,3 +108,4 @@ int SMESHGUI_Dialog::prefix( const QString& name )
   else
     return 0;
 }
+
index 927ac7b6caf11ecb4f123dd695faf1513f5805b0..abd25ed97d646b05c6d4a6530b472d8dca7b550a 100644 (file)
@@ -43,17 +43,17 @@ class SMESHGUI_Dialog : public SalomeApp_Dialog
   Q_OBJECT
   
 public:
-  SMESHGUI_Dialog( const bool = false, const bool = false, const int = OK | Cancel | Apply );
+  SMESHGUI_Dialog( QWidget* = 0, const bool = false, const bool = false, const int = OK | Cancel | Apply );
   virtual ~SMESHGUI_Dialog();
 
   virtual void show();
 
   //! set all content to enable (parameter is true) or disable state
-  void setContentActive( const bool ) const;
+  virtual void setContentActive( const bool ) const;
 
   //! Return hard-coded prefix using to differ overlapping types
   static int   prefix( const QString& );
-  
+
 protected:
   //! find desktop of active application
   SUIT_Desktop* desktop() const;
index 6e9bbca789fc319fc18c0638a7c4f75d40b25d36..fe9f14c3a534aea1c31d11eaad3b8d94a8c3be50 100644 (file)
@@ -44,7 +44,7 @@
 //            TRUE to construct a modal dialog.
 //=================================================================================
 SMESHGUI_EditHypothesesDlg::SMESHGUI_EditHypothesesDlg()
-: SMESHGUI_Dialog( false, true )
+: SMESHGUI_Dialog( 0, false, true )
 {
     setName("SMESHGUI_EditHypothesesDlg");
     setCaption(tr("SMESH_EDIT_HYPOTHESES"));
index 3db8e0b87f9e6469a591572e79c120b68d490a7b..6db7264dfc54f3cb9ae0b5e0e632b365c3a9d54b 100644 (file)
@@ -47,7 +47,7 @@
 // purpose  : constructor
 //=================================================================================
 SMESHGUI_ExtrusionDlg::SMESHGUI_ExtrusionDlg()
-: SMESHGUI_Dialog( false, true, OK | Apply | Close )
+: SMESHGUI_Dialog( 0, false, true, OK | Apply | Close )
 {
   QPixmap image0( resMgr()->loadPixmap( "SMESH", tr( "ICON_DLG_EDGE") ) ),
           image1( resMgr()->loadPixmap( "SMESH", tr( "ICON_DLG_TRIANGLE") ) );
index 33df4c1a10785daacf1519bd607864fa4831841f..ef9a7da86e53e460589c2d468259a14c10ca8478 100644 (file)
@@ -45,7 +45,7 @@
 // Purpose : Constructor
 //=======================================================================
 SMESHGUI_GroupOpDlg::SMESHGUI_GroupOpDlg( const int aMode )
-: SMESHGUI_Dialog( false, true )
+: SMESHGUI_Dialog( 0, false, true )
 {
   QString caption;
   if( aMode == 0 )
index edf7276acd3cd8c6368f1dd976a7372cbb9005af..3ee33e445af0635b8b3228631ebc43cdf8b269e4 100644 (file)
@@ -44,7 +44,7 @@
 //            TRUE to construct a modal dialog.
 //=================================================================================
 SMESHGUI_InitMeshDlg::SMESHGUI_InitMeshDlg()
-: SMESHGUI_Dialog( false, true )
+: SMESHGUI_Dialog( 0, false, true )
 {
     setCaption(tr("SMESH_INIT_MESH"));
 
index 65de0746bc996ce642f2027f73522d9f5e292648..3d3e08bd9ae8d7f2fb34e4142171b44ecfc69d19 100644 (file)
@@ -42,7 +42,7 @@
 // purpose  :
 //=================================================================================
 SMESHGUI_NodesDlg::SMESHGUI_NodesDlg()
-: SMESHGUI_Dialog( false, false, OK | Apply | Close )
+: SMESHGUI_Dialog( 0, false, false, OK | Apply | Close )
 {
   QPixmap image0( resMgr()->loadPixmap("SMESH", tr("ICON_DLG_NODE")));
   setName("SMESHGUI_NodesDlg");
index 29a4067535ba678f7dc77426789688c6cefb05b7..c26f5f69ee5d7139fb9a09ab0e9c225601f1f142 100755 (executable)
@@ -17,6 +17,8 @@
 #include <SUIT_MessageBox.h>
 #include <SUIT_Desktop.h>
 
+#include <qstringlist.h>
+
 /*
   Class       : SMESHGUI_Operation
   Description : Base class for all SMESH operations
@@ -94,6 +96,8 @@ bool SMESHGUI_Operation::isReadyToStart() const
       tr( "NO_MODULE" ), tr( "SMESH_BUT_OK" ) );
     return false;
   }
+  else if ( isStudyLocked() )
+    return false;
   
   return true;
 }
@@ -184,11 +188,39 @@ bool SMESHGUI_Operation::isStudyLocked( const bool theMess ) const
   return false;
 }
 
-//=======================================================================
-// name    : isValid
-// Purpose :
-//=======================================================================
-bool SMESHGUI_Operation::isValid( SUIT_Operation* op ) const
+/*!
+ * \brief Verifies whether given operator is valid for this one
+  * \param theOtherOp - other operation
+  * \return Returns TRUE if the given operator is valid for this one, FALSE otherwise
+*
+* Virtual method redefined from base class verifies whether given operator is valid for
+* this one (i.e. can be started "above" this operator). In current implementation method
+* retuns false if theOtherOp operation is not intended for deleting objects or mesh
+* elements.
+*/
+bool SMESHGUI_Operation::isValid( SUIT_Operation* theOtherOp ) const
 {
-  return( op && op->inherits( "SMESHGUI_Operation" ) );
+  static QStringList anOps;
+  if ( anOps.count() == 0 )
+  {
+    anOps.append( "SMESHGUI_DeleteOp" );
+    // to do add other operations here
+  }
+
+  return theOtherOp && theOtherOp->inherits( "SMESHGUI_Operation" ) &&
+         ( !anOps.contains( theOtherOp->className() ) || anOps.contains( className() ) );
+
+  return true;
 }
+
+
+
+
+
+
+
+
+
+
+
+
index a7ef5c623cfef41e3982c8f715a4c4e9e3e03e2e..a9eb7547ee0900051b1b81d594ec471660a1bf2e 100644 (file)
@@ -42,7 +42,7 @@
 // purpose  :
 //=================================================================================
 SMESHGUI_RemoveDlg::SMESHGUI_RemoveDlg( const bool elem )
-: SMESHGUI_Dialog( false, true, OK | Apply | Close )
+: SMESHGUI_Dialog( 0, false, true, OK | Apply | Close )
 {
     QString entity = elem ? "ELEMENT" : "NODE";
     QString name = QString( "ICON_DLG_REM_%1" ).arg( entity );
index 39f78d08a8eae5c9ba8ffa26b779456fbc358202..1c8ac49a30d9fd1e62fec8d55dcc1331288274e1 100644 (file)
@@ -42,7 +42,7 @@
  */
 //=================================================================================
 SMESHGUI_StandardMeshInfosDlg::SMESHGUI_StandardMeshInfosDlg()
-: SMESHGUI_Dialog( false, false, OK )
+: SMESHGUI_Dialog( 0, false, false, OK )
 {
   setCaption(tr("SMESH_STANDARD_MESHINFO_TITLE" ));