#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 <OB_Browser.h>
-#include "SUIT_Operation.h"
-#include "CAM_DataModel.h"
+#include <CAM_Study.h>
-#include "OB_Browser.h"
+#include <SUIT_MessageBox.h>
+#include <SUIT_ResourceMgr.h>
-#include <qstring.h>
-#include <qmap.h>
+#include <QtxPopupMgr.h>
#include <SVTK_ViewWindow.h>
#include <OCCViewer_ViewWindow.h>
#include <GLViewer_ViewFrame.h>
#include <GLViewer_ViewPort.h>
#include <Plot2d_ViewWindow.h>
+#include <Plot2d_ViewFrame.h>
/*!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 )
{
}
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<int, int>& ) 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.*/
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<SalomeApp_DataModel*>( aDataModel ) )
+ aModel->update( 0, dynamic_cast<SalomeApp_Study*>( 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
if ( theFlags & UF_Model )
{
if( CAM_DataModel* aDataModel = dataModel() )
- if( SalomeApp_DataModel* aModel = dynamic_cast<SalomeApp_DataModel*>( aDataModel ) ) {
- SalomeApp_Study* aStudy = dynamic_cast<SalomeApp_Study*>( getApp()->activeStudy() );
- if (aStudy)
- aModel->update( 0, aStudy );
- }
+ if( SalomeApp_DataModel* aModel = dynamic_cast<SalomeApp_DataModel*>( aDataModel ) )
+ aModel->update( 0, dynamic_cast<SalomeApp_Study*>( getApp()->activeStudy() ) );
}
if ( theFlags & UF_ObjBrowser )
getApp()->objectBrowser()->updateTree( 0 );
* 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;
}
/*!
}
}
}
+
+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 );
+}