X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSalomeApp%2FSalomeApp_Module.cxx;h=721090edf8d9b36093f80cc2d9d37f9ed50aa736;hb=5d1bd8e870f818cea5e77c5efe2717e76ea8dbe2;hp=9123d76f7084fc236ec2a537d46b4fadfa58db4d;hpb=d1fdf04f4ad9507921eed78ec03edb7b5e52a6a0;p=modules%2Fgui.git diff --git a/src/SalomeApp/SalomeApp_Module.cxx b/src/SalomeApp/SalomeApp_Module.cxx index 9123d76f7..721090edf 100644 --- a/src/SalomeApp/SalomeApp_Module.cxx +++ b/src/SalomeApp/SalomeApp_Module.cxx @@ -8,19 +8,20 @@ #include "SalomeApp_Study.h" #include "SalomeApp_DataModel.h" #include "SalomeApp_Application.h" - -#include "LightApp_Preferences.h" +#include "SalomeApp_Preferences.h" #include "SalomeApp_UpdateFlags.h" #include "SalomeApp_Operation.h" #include "SalomeApp_SwitchOp.h" +#include "SalomeApp_ShowHideOp.h" + +#include -#include "SUIT_Operation.h" -#include "CAM_DataModel.h" +#include -#include "OB_Browser.h" +#include +#include -#include -#include +#include #include #include @@ -28,11 +29,16 @@ #include #include #include +#include /*!Constructor.*/ SalomeApp_Module::SalomeApp_Module( const QString& name ) -: LightApp_Module( name ), -mySwitchOp( 0 ) +: CAM_Module( name ), +myPopupMgr( 0 ), +mySwitchOp( 0 ), +myDisplay( -1 ), +myErase( -1 ), +myDisplayOnly( -1 ) { } @@ -43,32 +49,132 @@ SalomeApp_Module::~SalomeApp_Module() delete mySwitchOp; } -/*!Gets application.*/ -SalomeApp_Application* SalomeApp_Module::getApp() const +/*!Initialize module.*/ +void SalomeApp_Module::initialize( CAM_Application* app ) { - return (SalomeApp_Application*)application(); + CAM_Module::initialize( app ); + + SUIT_ResourceMgr* resMgr = app ? app->resourceMgr() : 0; + if ( resMgr ) + resMgr->raiseTranslators( name() ); } /*!Activate module.*/ bool SalomeApp_Module::activateModule( SUIT_Study* study ) { - bool res = LightApp_Module::activateModule( study ); + bool res = CAM_Module::activateModule( study ); + + if ( res && application() && application()->resourceMgr() ) + application()->resourceMgr()->raiseTranslators( name() ); if ( mySwitchOp == 0 ) mySwitchOp = new SalomeApp_SwitchOp( this ); - + return res; } /*!Deactivate module.*/ -bool SalomeApp_Module::deactivateModule( SUIT_Study* study ) +bool SalomeApp_Module::deactivateModule( SUIT_Study* ) { - bool res = LightApp_Module::deactivateModule( study ); - delete mySwitchOp; mySwitchOp = 0; + + return true; +} - return res; +/*!NOT IMPLEMENTED*/ +void SalomeApp_Module::selectionChanged() +{ +} + +/*!NOT IMPLEMENTED*/ +void SalomeApp_Module::MenuItem() +{ +} + +/*!NOT IMPLEMENTED*/ +void SalomeApp_Module::windows( QMap& ) const +{ +} + +/*!NOT IMPLEMENTED*/ +void SalomeApp_Module::viewManagers( QStringList& ) const +{ +} + +/*!NOT IMPLEMENTED*/ +void SalomeApp_Module::createPreferences() +{ +} + +/*!NOT IMPLEMENTED*/ +void SalomeApp_Module::preferencesChanged( const QString&, const QString& ) +{ +} + +/*!Gets application.*/ +SalomeApp_Application* SalomeApp_Module::getApp() const +{ + return (SalomeApp_Application*)application(); +} + +/*!NOT IMPLEMENTED*/ +void SalomeApp_Module::onModelOpened() +{ +} + +/*!NOT IMPLEMENTED*/ +void SalomeApp_Module::onModelSaved() +{ +} + +/*!NOT IMPLEMENTED*/ +void SalomeApp_Module::onModelClosed() +{ +} + +/*!Gets popup manager.(create if not exist)*/ +QtxPopupMgr* SalomeApp_Module::popupMgr() +{ + if ( !myPopupMgr ) + { + myPopupMgr = new QtxPopupMgr( 0, this ); + + QPixmap p; + SUIT_Desktop* d = application()->desktop(); + + QAction + *disp = createAction( -1, tr( "TOP_DISPLAY" ), p, tr( "MEN_DISPLAY" ), tr( "STB_DISPLAY" ), + 0, d, false, this, SLOT( onShowHide() ) ), + *erase = createAction( -1, tr( "TOP_ERASE" ), p, tr( "MEN_ERASE" ), tr( "STB_ERASE" ), + 0, d, false, this, SLOT( onShowHide() ) ), + *dispOnly = createAction( -1, tr( "TOP_DISPLAY_ONLY" ), p, tr( "MEN_DISPLAY_ONLY" ), tr( "STB_DISPLAY_ONLY" ), + 0, d, false, this, SLOT( onShowHide() ) ); + myDisplay = actionId( disp ); + myErase = actionId( erase ); + myDisplayOnly = actionId( dispOnly ); + + myPopupMgr->insert( disp, -1, 0 ); + myPopupMgr->insert( erase, -1, 0 ); + myPopupMgr->insert( dispOnly, -1, 0 ); + myPopupMgr->insert( separator(), -1, 0 ); + + QString uniform = "( count( $component ) = 1 ) and ( component != activeModule ) and ( activeModule = '%1' )"; + uniform = uniform.arg( name() ); + myPopupMgr->setRule( disp, QString( "( not isVisible ) and " ) + uniform, true ); + myPopupMgr->setRule( erase, QString( "( isVisible ) and " ) + uniform, true ); + myPopupMgr->setRule( dispOnly, uniform, true ); + } + return myPopupMgr; +} + +/*!Gets preferences.*/ +SalomeApp_Preferences* SalomeApp_Module::preferences() const +{ + SalomeApp_Preferences* pref = 0; + if ( getApp() ) + pref = getApp()->preferences(); + return pref; } /*!Create new instance of data model and return it.*/ @@ -77,6 +183,75 @@ CAM_DataModel* SalomeApp_Module::createDataModel() return new SalomeApp_DataModel(this); } +/*!Update object browser.*/ +void SalomeApp_Module::updateObjBrowser( bool updateDataModel, SUIT_DataObject* root ) +{ + if( updateDataModel ) + if( CAM_DataModel* aDataModel = dataModel() ) + if( SalomeApp_DataModel* aModel = dynamic_cast( aDataModel ) ) + aModel->update( 0, dynamic_cast( getApp()->activeStudy() ) ); + getApp()->objectBrowser()->updateTree( root ); +} + +/*!Context menu popup.*/ +void SalomeApp_Module::contextMenuPopup( const QString& client, QPopupMenu* menu, QString& /*title*/ ) +{ + SalomeApp_Selection* sel = createSelection(); + sel->init( client, getApp()->selectionMgr() ); + popupMgr()->updatePopup( menu, sel ); + delete sel; +} + +/*!Create and return instance of SalomeApp_Selection.*/ +SalomeApp_Selection* SalomeApp_Module::createSelection() const +{ + return new SalomeApp_Selection(); +} + +/*!Add preference to preferences.*/ +int SalomeApp_Module::addPreference( const QString& label ) +{ + SalomeApp_Preferences* pref = preferences(); + if ( !pref ) + return -1; + + int catId = pref->addPreference( moduleName(), -1 ); + if ( catId == -1 ) + return -1; + + return pref->addPreference( label, catId ); +} + +/*!Add preference to preferences.*/ +int SalomeApp_Module::addPreference( const QString& label, const int pId, const int type, + const QString& section, const QString& param ) +{ + SalomeApp_Preferences* pref = preferences(); + if ( !pref ) + return -1; + + return pref->addPreference( moduleName(), label, pId, type, section, param ); +} + +/*!Gets property of preferences.*/ +QVariant SalomeApp_Module::preferenceProperty( const int id, const QString& prop ) const +{ + QVariant var; + SalomeApp_Preferences* pref = preferences(); + if ( pref ) + var = pref->itemProperty( id, prop ); + return var; +} + + +/*!Set property of preferences.*/ +void SalomeApp_Module::setPreferenceProperty( const int id, const QString& prop, const QVariant& var ) +{ + SalomeApp_Preferences* pref = preferences(); + if ( pref ) + pref->setItemProperty( id, prop, var ); +} + /*! * \brief Update something in accordance with update flags * \param theFlags - update flags @@ -90,11 +265,8 @@ void SalomeApp_Module::update( const int theFlags ) if ( theFlags & UF_Model ) { if( CAM_DataModel* aDataModel = dataModel() ) - if( SalomeApp_DataModel* aModel = dynamic_cast( aDataModel ) ) { - SalomeApp_Study* aStudy = dynamic_cast( getApp()->activeStudy() ); - if (aStudy) - aModel->update( 0, aStudy ); - } + if( SalomeApp_DataModel* aModel = dynamic_cast( aDataModel ) ) + aModel->update( 0, dynamic_cast( getApp()->activeStudy() ) ); } if ( theFlags & UF_ObjBrowser ) getApp()->objectBrowser()->updateTree( 0 ); @@ -165,9 +337,19 @@ void SalomeApp_Module::startOperation( const int id ) * automatically from startOperation. You may redefine this method in concrete module to * create operations. */ -SalomeApp_Operation* SalomeApp_Module::createOperation( const int /*id*/ ) const +SalomeApp_Operation* SalomeApp_Module::createOperation( const int id ) const { - return 0; + if( id==-1 ) + return 0; + + if( id==myDisplay ) + return new SalomeApp_ShowHideOp( SalomeApp_ShowHideOp::DISPLAY ); + else if( id==myErase ) + return new SalomeApp_ShowHideOp( SalomeApp_ShowHideOp::ERASE ); + else if( id==myDisplayOnly ) + return new SalomeApp_ShowHideOp( SalomeApp_ShowHideOp::DISPLAY_ONLY ); + else + return 0; } /*! @@ -205,3 +387,19 @@ void SalomeApp_Module::onOperationDestroyed() } } } + +SalomeApp_Displayer* SalomeApp_Module::displayer() +{ + return 0; +} + +void SalomeApp_Module::onShowHide() +{ + if( !sender()->inherits( "QAction" ) || !popupMgr() ) + return; + + QAction* act = ( QAction* )sender(); + int id = actionId( act ); + if( id!=-1 ) + startOperation( id ); +}