mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-01-27 01:20:34 +05:00
Base class for all smesh operations
This commit is contained in:
parent
24d6fd82e6
commit
ff3baa884d
226
src/SMESHGUI/SMESHGUI_Operation.cxx
Executable file
226
src/SMESHGUI/SMESHGUI_Operation.cxx
Executable file
@ -0,0 +1,226 @@
|
||||
// SALOME SMESHGUI
|
||||
//
|
||||
// Copyright (C) 2005 CEA/DEN, EDF R&D
|
||||
//
|
||||
//
|
||||
//
|
||||
// File : SMESHGUI_Operation.h
|
||||
// Author : Sergey LITONIN
|
||||
// Module : SALOME
|
||||
|
||||
#include "SMESHGUI_Operation.h"
|
||||
#include <SMESHGUI.h>
|
||||
#include <SMESHGUI_Dialog.h>
|
||||
|
||||
#include <SalomeApp_Study.h>
|
||||
|
||||
#include <SUIT_MessageBox.h>
|
||||
#include <SUIT_Desktop.h>
|
||||
|
||||
#include <qstringlist.h>
|
||||
|
||||
/*
|
||||
Class : SMESHGUI_Operation
|
||||
Description : Base class for all SMESH operations
|
||||
*/
|
||||
|
||||
//=======================================================================
|
||||
// name : SMESHGUI_Operation
|
||||
// Purpose : Constructor
|
||||
//=======================================================================
|
||||
SMESHGUI_Operation::SMESHGUI_Operation()
|
||||
: SalomeApp_Operation()
|
||||
{
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
// name : ~SMESHGUI_Operation
|
||||
// Purpose : Destructor
|
||||
//=======================================================================
|
||||
SMESHGUI_Operation::~SMESHGUI_Operation()
|
||||
{
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
// name : getSMESHGUI
|
||||
// Purpose : Get SMESH module
|
||||
//=======================================================================
|
||||
SMESHGUI* SMESHGUI_Operation::getSMESHGUI() const
|
||||
{
|
||||
return dynamic_cast<SMESHGUI*>( module() );
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
// name : startOperation
|
||||
// Purpose : Start opeartion
|
||||
//=======================================================================
|
||||
void SMESHGUI_Operation::startOperation()
|
||||
{
|
||||
if( dlg() )
|
||||
{
|
||||
disconnect( dlg(), SIGNAL( dlgOk() ), this, SLOT( onOk() ) );
|
||||
disconnect( dlg(), SIGNAL( dlgApply() ), this, SLOT( onApply() ) );
|
||||
disconnect( dlg(), SIGNAL( dlgCancel() ), this, SLOT( onCancel() ) );
|
||||
disconnect( dlg(), SIGNAL( dlgClose() ), this, SLOT( onCancel() ) );
|
||||
|
||||
if( dlg()->testButtonFlags( QtxDialog::OK ) )
|
||||
connect( dlg(), SIGNAL( dlgOk() ), this, SLOT( onOk() ) );
|
||||
|
||||
if( dlg()->testButtonFlags( QtxDialog::Apply ) )
|
||||
connect( dlg(), SIGNAL( dlgApply() ), this, SLOT( onApply() ) );
|
||||
|
||||
if( dlg()->testButtonFlags( QtxDialog::Cancel ) )
|
||||
connect( dlg(), SIGNAL( dlgCancel() ), this, SLOT( onCancel() ) );
|
||||
|
||||
//if( dlg()->testButtonFlags( QtxDialog::Close ) )
|
||||
//if dialog hasn't close, cancel, no and etc buttons, dlgClose will be emitted when dialog is closed not by OK
|
||||
connect( dlg(), SIGNAL( dlgClose() ), this, SLOT( onCancel() ) );
|
||||
|
||||
initDialog();
|
||||
}
|
||||
|
||||
SalomeApp_Operation::startOperation();
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
// name : isReadyToStart
|
||||
// Purpose : Verify whether operation is ready to start
|
||||
//=======================================================================
|
||||
bool SMESHGUI_Operation::isReadyToStart() const
|
||||
{
|
||||
if ( !SalomeApp_Operation::isReadyToStart() )
|
||||
return false;
|
||||
else if ( getSMESHGUI() == 0 )
|
||||
{
|
||||
SUIT_MessageBox::warn1( desktop(), tr( "SMESH_WRN_WARNING" ),
|
||||
tr( "NO_MODULE" ), tr( "SMESH_BUT_OK" ) );
|
||||
return false;
|
||||
}
|
||||
else if ( isStudyLocked() )
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
// name : setDialogActive
|
||||
// Purpose :
|
||||
//=======================================================================
|
||||
void SMESHGUI_Operation::setDialogActive( const bool active )
|
||||
{
|
||||
SalomeApp_Operation::setDialogActive( active );
|
||||
|
||||
SMESHGUI_Dialog* d = dynamic_cast<SMESHGUI_Dialog*>( dlg() );
|
||||
if( d )
|
||||
d->setContentActive( active );
|
||||
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
// name : studyDS
|
||||
// Purpose :
|
||||
//=======================================================================
|
||||
_PTR(Study) SMESHGUI_Operation::studyDS() const
|
||||
{
|
||||
SalomeApp_Study* s = dynamic_cast<SalomeApp_Study*>( study() );
|
||||
return s->studyDS();
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
// name : onOk
|
||||
// Purpose :
|
||||
//=======================================================================
|
||||
void SMESHGUI_Operation::onOk()
|
||||
{
|
||||
if( onApply() )
|
||||
commit();
|
||||
else
|
||||
abort();
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
// name : onApply
|
||||
// Purpose :
|
||||
//=======================================================================
|
||||
bool SMESHGUI_Operation::onApply()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
// name : onClose
|
||||
// Purpose :
|
||||
//=======================================================================
|
||||
void SMESHGUI_Operation::onCancel()
|
||||
{
|
||||
abort();
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
// name : initDialog
|
||||
// Purpose :
|
||||
//=======================================================================
|
||||
void SMESHGUI_Operation::initDialog()
|
||||
{
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Verifies whether study of operation is locked
|
||||
* \param theMess - specifies whether message box must be shown if study is locked
|
||||
* \return State of study.
|
||||
*
|
||||
* Verifies whether study of operation is locked. If second parameter is TRUE and study
|
||||
* is locked when corresponding message box appears
|
||||
*/
|
||||
bool SMESHGUI_Operation::isStudyLocked( const bool theMess ) const
|
||||
{
|
||||
if ( studyDS() )
|
||||
{
|
||||
if ( studyDS()->GetProperties()->IsLocked() )
|
||||
{
|
||||
if ( theMess )
|
||||
SUIT_MessageBox::warn1 ( SMESHGUI::desktop(), QObject::tr( "WRN_WARNING" ),
|
||||
QObject::tr( "WRN_STUDY_LOCKED" ), QObject::tr( "BUT_OK" ) );
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/*!
|
||||
* \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
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
62
src/SMESHGUI/SMESHGUI_Operation.h
Executable file
62
src/SMESHGUI/SMESHGUI_Operation.h
Executable file
@ -0,0 +1,62 @@
|
||||
// SALOME SMESHGUI
|
||||
//
|
||||
// Copyright (C) 2005 CEA/DEN, EDF R&D
|
||||
//
|
||||
//
|
||||
//
|
||||
// File : SMESHGUI_Operation.h
|
||||
// Author : Sergey LITONIN
|
||||
// Module : SALOME
|
||||
|
||||
|
||||
#ifndef SMESHGUI_Operation_H
|
||||
#define SMESHGUI_Operation_H
|
||||
|
||||
#include <SalomeApp_Operation.h>
|
||||
#include <SALOMEDSClient.hxx>
|
||||
|
||||
class SMESHGUI;
|
||||
|
||||
/*
|
||||
Class : SMESHGUI_Operation
|
||||
Description : Base class for all SMESH operations
|
||||
*/
|
||||
|
||||
class SMESHGUI_Operation : public SalomeApp_Operation
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
SMESHGUI_Operation();
|
||||
virtual ~SMESHGUI_Operation();
|
||||
|
||||
protected:
|
||||
//! sets the dialog widgets to state just after operation start
|
||||
virtual void initDialog();
|
||||
|
||||
virtual void startOperation();
|
||||
virtual bool isReadyToStart() const;
|
||||
|
||||
//! Set according dialog active or inactive
|
||||
virtual void setDialogActive( const bool );
|
||||
|
||||
SMESHGUI* getSMESHGUI() const;
|
||||
bool isStudyLocked( const bool = true ) const;
|
||||
|
||||
_PTR(Study) studyDS() const;
|
||||
|
||||
virtual bool isValid( SUIT_Operation* ) const;
|
||||
|
||||
protected slots:
|
||||
virtual void onOk();
|
||||
virtual bool onApply();
|
||||
virtual void onCancel();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user