0021684: EDF 2221 : Display the arguments and the name of the operations

+  void                        updateCreationInfo();
This commit is contained in:
eap 2013-06-17 12:39:23 +00:00
parent 7961d43ecf
commit c9f33420c0
2 changed files with 115 additions and 18 deletions

View File

@ -31,6 +31,7 @@
#include "GeometryGUI_Operations.h"
#include "GEOMGUI_OCCSelector.h"
#include "GEOMGUI_Selection.h"
#include "GEOMGUI_CreationInfoWdg.h"
#include "GEOM_Constants.h"
#include "GEOM_Displayer.h"
#include "GEOM_AISShape.hxx"
@ -107,9 +108,11 @@
#include <vtkCamera.h>
#include <vtkRenderer.h>
#include <GEOM_version.h>
#include <Standard_Failure.hxx>
#include <Standard_ErrorHandler.hxx>
#include "GEOMImpl_Types.hxx"
#include "GEOM_version.h"
#include "GEOMImpl_Types.hxx" // dangerous hxx (defines short-name macros) - include after all
extern "C" {
Standard_EXPORT CAM_Module* createModule() {
@ -208,6 +211,8 @@ GeometryGUI::GeometryGUI() :
myDisplayer = 0;
myLocalSelectionMode = GEOM_ALLOBJECTS;
myCreationInfoWdg = 0;
connect( Material_ResourceMgr::resourceMgr(), SIGNAL( changed() ), this, SLOT( updateMaterials() ) );
}
@ -611,6 +616,8 @@ void GeometryGUI::OnGUIEvent( int id, const QVariant& theParam )
}
else
SUIT_MessageBox::critical( desk, tr( "GEOM_ERROR" ), tr( "GEOM_ERR_LIB_NOT_FOUND" ), tr( "GEOM_BUT_OK" ) );
updateCreationInfo();
}
//=================================================================================
@ -1450,6 +1457,12 @@ bool GeometryGUI::activateModule( SUIT_Study* study )
LightApp_SelectionMgr* sm = getApp()->selectionMgr();
connect( sm, SIGNAL( currentSelectionChanged() ), this, SLOT( updateCreationInfo() ));
if ( !myCreationInfoWdg )
myCreationInfoWdg = new GEOMGUI_CreationInfoWdg( getApp() );
getApp()->insertDockWindow( myCreationInfoWdg->getWinID(), myCreationInfoWdg );
getApp()->placeDockWindow( myCreationInfoWdg->getWinID(), Qt::LeftDockWidgetArea );
SUIT_ViewManager* vm;
ViewManagerList OCCViewManagers, VTKViewManagers;
@ -1521,6 +1534,12 @@ bool GeometryGUI::deactivateModule( SUIT_Study* study )
disconnect( application()->desktop(), SIGNAL( windowActivated( SUIT_ViewWindow* ) ),
this, SLOT( onWindowActivated( SUIT_ViewWindow* ) ) );
LightApp_SelectionMgr* selMrg = getApp()->selectionMgr();
disconnect( selMrg, SIGNAL( currentSelectionChanged() ), this, SLOT( updateCreationInfo() ));
getApp()->removeDockWindow( myCreationInfoWdg->getWinID() );
myCreationInfoWdg = 0;
EmitSignalCloseAllDialogs();
GUIMap::Iterator it;
@ -1534,11 +1553,11 @@ bool GeometryGUI::deactivateModule( SUIT_Study* study )
qDeleteAll(myOCCSelectors);
myOCCSelectors.clear();
getApp()->selectionMgr()->setEnabled( true, OCCViewer_Viewer::Type() );
selMrg->setEnabled( true, OCCViewer_Viewer::Type() );
qDeleteAll(myVTKSelectors);
myVTKSelectors.clear();
getApp()->selectionMgr()->setEnabled( true, SVTK_Viewer::Type() );
selMrg->setEnabled( true, SVTK_Viewer::Type() );
return SalomeApp_Module::deactivateModule( study );
}
@ -1574,6 +1593,8 @@ void GeometryGUI::windows( QMap<int, int>& mappa ) const
{
mappa.insert( SalomeApp_Application::WT_ObjectBrowser, Qt::LeftDockWidgetArea );
mappa.insert( SalomeApp_Application::WT_PyConsole, Qt::BottomDockWidgetArea );
if ( myCreationInfoWdg )
mappa.insert( myCreationInfoWdg->getWinID(), Qt::LeftDockWidgetArea );
}
void GeometryGUI::viewManagers( QStringList& lst ) const
@ -1646,6 +1667,78 @@ void GeometryGUI::onViewManagerRemoved( SUIT_ViewManager* vm )
}
}
//================================================================================
/*!
* \brief Slot called when selection changed. Shows creation info of a selected object
*/
//================================================================================
void GeometryGUI::updateCreationInfo()
{
myCreationInfoWdg->clear();
// Code below is commented to have myCreationInfoWdg filled as soon as it is shown again
// if ( !myCreationInfoWdg->isVisible() )
// return;
// look for a sole selected GEOM_Object
GEOM::GEOM_Object_var geomObj;
SALOME_ListIO selected;
getApp()->selectionMgr()->selectedObjects( selected );
_PTR(Study) study = dynamic_cast<SalomeApp_Study*>( getApp()->activeStudy() )->studyDS();
SALOME_ListIteratorOfListIO selIt( selected );
for ( ; selIt.More(); selIt.Next() )
{
Handle(SALOME_InteractiveObject) io = selIt.Value();
if ( !io->hasEntry() ) continue;
_PTR(SObject) sobj = study->FindObjectID( io->getEntry() );
if ( !sobj ) continue;
CORBA::Object_var obj = GeometryGUI::ClientSObjectToObject( sobj );
GEOM::GEOM_Object_var gobj = GEOM::GEOM_Object::_narrow( obj );
if ( !gobj->_is_nil() )
{
if ( !geomObj->_is_nil() )
return; // several GEOM objects selected
geomObj = gobj;
}
}
if ( geomObj->_is_nil() ) return;
// pass creation info of geomObj to myCreationInfoWdg
QPixmap icon;
QString operationName;
myCreationInfoWdg->setOperation( icon, operationName );
try
{
OCC_CATCH_SIGNALS;
GEOM::CreationInformation_var info = geomObj->GetCreationInformation();
if ( &info.in() )
{
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
QString name = info->operationName.in();
if ( !name.isEmpty() )
{
icon = resMgr->loadPixmap( "GEOM", tr( ("ICO_"+name).toLatin1().constData() ), false );
operationName = tr( ("MEN_"+name).toLatin1().constData() );
if ( operationName.startsWith( "MEN_" ))
operationName = name; // no translation
myCreationInfoWdg->setOperation( icon, operationName );
for ( size_t i = 0; i < info->params.length(); ++i )
myCreationInfoWdg->addParam( info->params[i].name.in(),
info->params[i].value.in() );
}
}
}
catch (...)
{
}
}
QString GeometryGUI::engineIOR() const
{
if ( !CORBA::is_nil( GetGeomGen() ) )

View File

@ -63,6 +63,7 @@ class LightApp_VTKSelector;
class LightApp_Selection;
class SUIT_ViewManager;
class SalomeApp_Study;
class GEOMGUI_CreationInfoWdg;
//=================================================================================
// class : GeometryGUI
@ -161,6 +162,7 @@ private slots:
void onViewAboutToShow();
void OnSetMaterial( const QString& );
void updateMaterials();
void updateCreationInfo();
signals :
void SignalDeactivateActiveDialog();
@ -209,6 +211,8 @@ private:
LightApp_Displayer* myDisplayer;
int myLocalSelectionMode; //Select Only
GEOMGUI_CreationInfoWdg* myCreationInfoWdg;
friend class DisplayGUI;
};