Portation on new based dialog

This commit is contained in:
sln 2005-07-15 14:05:43 +00:00
parent d097f4c8ff
commit da5ab2d0d1
17 changed files with 408 additions and 300 deletions

View 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 \

View 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;*/

View 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"));

View File

@ -27,11 +27,6 @@
#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"
@ -47,248 +42,144 @@
#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);
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);
QGridLayout* SMESHGUI_CreateHypothesesDlgLayout = new QGridLayout( mainFrame() );
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);
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);
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);
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(ListAlgoDefinition, 0, 0);
SMESHGUI_CreateHypothesesDlgLayout->addWidget(GroupAlgorithms, 0, 0);
hypLayout->addWidget( myList, 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);
setButtonText( Apply, tr( "SMESH_BUT_CREATE" ) );
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);
// connect signals and slots
connect( myList, SIGNAL( selectionChanged() ), SLOT( onHypSelected() ) );
connect( myList, SIGNAL( doubleClicked( QListViewItem* ) ), SLOT( onDoubleClicked( QListViewItem* ) ) );
QSpacerItem* spacer_9 = new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
GroupButtonsLayout->addItem(spacer_9, 0, 2);
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();
// 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*)));
int x, y;
mySMESHGUI->DefineDlgPosition(this, x, y);
this->move(x, y);
this->show();
QListViewItem* item = myList->selectedItem();
return item ? item->text( 1 ) : "";
}
//=================================================================================
// function : ClickOnCancel()
// purpose :
//=================================================================================
void SMESHGUI_CreateHypothesesDlg::ClickOnCancel()
/*!
* \brief Enable/Disable "Apply" button
*
* Private slot called when selection in list box changed enables/disables "Apply" button
*/
void SMESHGUI_CreateHypothesesDlg::onHypSelected()
{
close();
QListViewItem* item = myList->selectedItem();
setButtonEnabled( item && item->depth() > 0, Apply );
}
//=================================================================================
// function : ClickOnApply()
// purpose :
//=================================================================================
void SMESHGUI_CreateHypothesesDlg::ClickOnApply()
/*!
* \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 )
{
if (mySMESHGUI->isActiveStudyLocked())
return;
QListViewItem* item = ListAlgoDefinition->selectedItem();
if (!item)
return;
QString aHypType = item->text(1);
MESSAGE("Apply " << aHypType);
char* sHypType = (char*)aHypType.latin1();
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;
if ( i && i->depth() > 0 )
emit dlgApply();
}
//=================================================================================
// function : ActivateThisDialog()
// purpose :
//=================================================================================
void SMESHGUI_CreateHypothesesDlg::ActivateThisDialog()
/*!
* \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 )
{
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]);
myList->clear();
for ( int i = 0; i < theHypList.count(); ++i )
{
QListViewItem* parentItem = 0;
QListViewItem* childItem = ListAlgoDefinition->firstChild();
while (childItem) {
if (childItem->text(0) == aHypData->PluginName) {
parentItem = childItem;
break;
QListViewItem* childItem = myList->firstChild();
while ( childItem )
{
if ( childItem->text( 0 ) == thePluginNames[ i ] )
{
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);
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 );
}
}

View File

@ -28,67 +28,42 @@
#ifndef DIALOGBOX_CREATE_HYPOTHESES_H
#define DIALOGBOX_CREATE_HYPOTHESES_H
// QT Includes
#include <qvariant.h>
#include <qdialog.h>
#include <qstringlist.h>
#include "SMESHGUI_Dialog.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;
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:
SMESHGUI_CreateHypothesesDlg ( bool isAlgo );
virtual ~SMESHGUI_CreateHypothesesDlg();
void Init() ;
void closeEvent( QCloseEvent* e ) ;
void enterEvent ( QEvent * ) ;
void init( const QStringList& theHypList,
const QStringList& thePluginNames,
const QStringList& theLabels,
const QStringList& theIconIds );
void InitAlgoDefinition();
SMESHGUI* mySMESHGUI;
bool myIsAlgo;
QGroupBox* GroupButtons;
QPushButton* buttonCancel;
QPushButton* buttonApply;
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

View File

@ -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;
}

View File

@ -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

View 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;
}

View 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;

View 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"));

View 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") ) );

View 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 )

View 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"));

View 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");

View File

@ -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;
}

View 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 );

View 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" ));