From c78ed7c26b8189c7fd14dfbfe03593aaed351354 Mon Sep 17 00:00:00 2001 From: smh Date: Tue, 20 Apr 2004 16:14:57 +0000 Subject: [PATCH] Merge from QT_EVENT branch --- src/VISUGUI/VisuGUI.cxx | 144 +-- src/VISUGUI/VisuGUI.h | 32 +- src/VISU_I/VISUConfig.cc | 30 +- src/VISU_I/VISUConfig.hh | 5 +- src/VISU_I/VISU_Gen_i.cc | 200 +++- src/VISU_I/VISU_Gen_i.hh | 25 +- src/VISU_I/VISU_TimeAnimation.cxx | 180 +++- src/VISU_I/VISU_TimeAnimation.h | 66 +- src/VISU_I/VISU_ViewManager_i.cc | 1190 +++++++++++++----------- src/VISU_I/VISU_ViewManager_i.hh | 34 +- src/VISU_SWIG/Makefile.in | 2 +- src/VISU_SWIG/batch_test_events.py | 14 + src/VISU_SWIG/batchmode_visu_view3d.py | 111 ++- src/VISU_SWIG/test_events.py | 22 + src/VISU_SWIG/visu_view3d.py | 115 ++- 15 files changed, 1331 insertions(+), 839 deletions(-) create mode 100644 src/VISU_SWIG/batch_test_events.py create mode 100755 src/VISU_SWIG/test_events.py diff --git a/src/VISUGUI/VisuGUI.cxx b/src/VISUGUI/VisuGUI.cxx index 6b8f6e45..b153434f 100644 --- a/src/VISUGUI/VisuGUI.cxx +++ b/src/VISUGUI/VisuGUI.cxx @@ -165,7 +165,7 @@ private: QFont font; }; -static VisuGUI MYVISUGUI; +static VisuGUI MYVISUGUI(""); VisuGUI *visuGUI = &MYVISUGUI; VISU::VISU_Gen_i* VisuGUI::GetVisuGen(){ @@ -357,7 +357,8 @@ void RepaintCurrentView(){ } -VisuGUI::VisuGUI(){ +VisuGUI::VisuGUI( const QString& theName, QObject* theParent ) +: SALOMEGUI( theName, theParent ) { mySelectionDlg = 0; } @@ -401,7 +402,6 @@ bool VisuGUI::OnGUIEvent(int theCommandID, QAD_Desktop* parent) /* ======================================================================================== */ /* Import Table from file */ /* ======================================================================================== */ - case 199: { if(checkLock(aStudy)) break; @@ -685,7 +685,6 @@ bool VisuGUI::OnGUIEvent(int theCommandID, QAD_Desktop* parent) return true; } - void VisuGUI::SelectionInfo() { if (mySelectionDlg) { mySelectionDlg->close(true); @@ -816,10 +815,10 @@ CREATEPRESENTATION(VisuGUI::CreateStreamLines); //===================================================================================== -// function : setSettings() +// function : SetSettings() // purpose : //===================================================================================== -bool VisuGUI::setSettings(QAD_Desktop* parent) +bool VisuGUI::SetSettings(QAD_Desktop* parent) { int anId = 53; QMenuData* pp; @@ -2229,57 +2228,31 @@ void VisuGUI::DeletePrs() { void VisuGUI::SaveViewParams() { if (checkLock(GetStudyDocument())) return; - SALOME_Selection* Sel = SALOME_Selection::Selection( GetActiveStudy()->getSelection() ); - if ( Sel->IObjectCount() > 1 || GetActiveStudy()->getActiveStudyFrame()->getTypeView() != VIEW_VTK ) + SALOME_Selection* aSel = SALOME_Selection::Selection( GetActiveStudy()->getSelection() ); + QAD_StudyFrame* aStudyFrame = GetActiveStudy()->getActiveStudyFrame(); + if ( aSel->IObjectCount() > 1 || aStudyFrame->getTypeView() != VIEW_VTK ) return; - VISU::ViewManager_var aVM = GetVisuGen()->GetViewManager(); - if(!CORBA::is_nil(aVM.in())){ - VISU::View_var aView = aVM->GetCurrentView(); - if(!CORBA::is_nil(aView.in())){ - VISU::View3D_var aView3D = VISU::View3D::_narrow(aView); - if(CORBA::is_nil(aView3D.in())) return; - if ( Sel->IObjectCount() == 0 ) { - // Save view parameters by new name - aView3D->SaveViewParams( 0 ); - GetActiveStudy()->updateObjBrowser( true ); - }else{ - bool isExist; - VISU::Storable::TRestoringMap aMap; - Handle(SALOME_InteractiveObject) anIO; - CORBA::Object_var anObject = GetSelectedObj(&anIO,GetActiveStudy(),&aMap); - VISU::VISUType aType = (VISU::VISUType)VISU::Storable::FindValue(aMap,"myType",&isExist).toInt(); - if(isExist && aType == VISU::TVIEW3D){ - aView3D->SaveViewParams( anIO->getName() ); - GetActiveStudy()->updateObjBrowser( true ); - } - } - } + if ( aSel->IObjectCount() == 0 ) { + VISU::View3D_i::SaveViewParams(aStudyFrame,VISU::View3D_i::GenerateViewParamsName().latin1()); + }else{ + const Handle(SALOME_InteractiveObject)& anIO = aSel->firstIObject(); + VISU::View3D_i::SaveViewParams(aStudyFrame,anIO->getName()); } + GetActiveStudy()->updateObjBrowser( true ); } void VisuGUI::RestoreViewParams() { - SALOME_Selection* Sel = SALOME_Selection::Selection( GetActiveStudy()->getSelection() ); - if ( Sel->IObjectCount() > 1 || GetActiveStudy()->getActiveStudyFrame()->getTypeView() != VIEW_VTK ) + SALOME_Selection* aSel = SALOME_Selection::Selection( GetActiveStudy()->getSelection() ); + QAD_StudyFrame* aStudyFrame = GetActiveStudy()->getActiveStudyFrame(); + if ( aSel->IObjectCount() > 1 || aStudyFrame->getTypeView() != VIEW_VTK ) return; - VISU::ViewManager_var aVM = GetVisuGen()->GetViewManager(); - if(!CORBA::is_nil(aVM.in())){ - VISU::View_var aView = aVM->GetCurrentView(); - if(!CORBA::is_nil(aView.in())){ - VISU::View3D_var aView3D = VISU::View3D::_narrow(aView); - if(CORBA::is_nil(aView3D.in())) return; - bool isExist; - VISU::Storable::TRestoringMap aMap; - Handle(SALOME_InteractiveObject) anIO; - CORBA::Object_var anObject = GetSelectedObj(&anIO,GetActiveStudy(),&aMap); - VISU::VISUType aType = (VISU::VISUType)VISU::Storable::FindValue(aMap,"myType",&isExist).toInt(); - if(isExist && aType == VISU::TVIEW3D) - aView3D->RestoreViewParams( anIO->getName() ); - } - } + const Handle(SALOME_InteractiveObject)& anIO = aSel->firstIObject(); + VISU::View3D_i::RestoreViewParams(aStudyFrame,anIO->getName()); } + //===================================================================================== // function : DeleteViewParams() // purpose : @@ -3144,72 +3117,27 @@ void VisuGUI::BuildPresentation(const Handle(SALOME_InteractiveObject)& theIO) END_OF("VisuGUI::BuildPresentation"); } -extern "C" -{ - - bool OnGUIEvent(int theCommandID, QAD_Desktop* parent) - { - //if(MYDEBUG) MESSAGE("VisuGUI::OnGUIEvent "<< theCommandID); - return VisuGUI::OnGUIEvent(theCommandID, parent); - } - - bool OnKeyPress (QKeyEvent* pe, QAD_Desktop* parent, QAD_StudyFrame* studyFrame) - { - if(MYDEBUG) MESSAGE("VisuGUI::OnKeyPress "); - return VisuGUI::OnKeyPress (pe, parent, studyFrame); - } - bool OnMousePress (QMouseEvent* pe, QAD_Desktop* parent, QAD_StudyFrame* studyFrame) - { - //if(MYDEBUG) MESSAGE("VisuGUI::OnMousePress "); - return VisuGUI::OnMousePress (pe, parent, studyFrame); - } - - bool OnMouseMove (QMouseEvent* pe, QAD_Desktop* parent, QAD_StudyFrame* studyFrame) - { - //if(MYDEBUG) MESSAGE("VisuGUI::OnMouseMove "); - return VisuGUI::OnMouseMove (pe, parent, studyFrame); - } - - bool SetSettings ( QAD_Desktop* parent ) - { - return VisuGUI::setSettings( parent ); - } - - bool customPopup ( QAD_Desktop* parent, QPopupMenu* popup, const QString & theContext, - const QString & theParent, const QString & theObject ) - { - return VisuGUI::CustomPopup( parent, popup, theContext, theParent, theObject ); - } - - void definePopup ( QString & theContext, QString & theParent, QString & theObject ) - { - VisuGUI::DefinePopup( theContext, theParent, theObject ); - } - - bool activeStudyChanged ( QAD_Desktop* parent ) - { - ::UpdateViewFrame(); - } - - void buildPresentation ( const Handle(SALOME_InteractiveObject)& theIO ) - { - VisuGUI::BuildPresentation(theIO); - } - - void supportedViewType(int* buffer, int bufferSize) - { - if (!buffer || !bufferSize) return; - buffer[0] = (int)VIEW_VTK; - if (--bufferSize) buffer[1] = (int)VIEW_PLOT2D; - } +//=========================================================================== +// SupportedViewType +//=========================================================================== +void VisuGUI::SupportedViewType(int* buffer, int bufferSize) +{ + if (!buffer || !bufferSize) return; + buffer[0] = (int)VIEW_VTK; + if (--bufferSize) buffer[1] = (int)VIEW_PLOT2D; +} - void deactivate() - { - visuGUI->EmitSignalCloseAllDialogs(); +extern "C" +{ + Standard_EXPORT SALOMEGUI* GetComponentGUI() { + if ( !visuGUI ) + visuGUI = new VisuGUI( "" ); + return visuGUI; } } + ////////////////////////////////////////////////////////////////////////////////// //////////////// CHANGE ACTOR COLOR //////////////////////// ////////////////////////////////////////////////////////////////////////////////// diff --git a/src/VISUGUI/VisuGUI.h b/src/VISUGUI/VisuGUI.h index ec5677ec..ce4db226 100644 --- a/src/VISUGUI/VisuGUI.h +++ b/src/VISUGUI/VisuGUI.h @@ -54,6 +54,8 @@ class vtkRenderer; #include #include "SALOME_ListIteratorOfListIO.hxx" +#include "SALOMEGUI.h" + namespace VISU{ class VISU_Gen_i; @@ -78,11 +80,11 @@ namespace VISU{ // ====================================================================== // -class VisuGUI : public QObject{ +class VisuGUI : public SALOMEGUI{ Q_OBJECT; public: - VisuGUI(); - ~VisuGUI(); + VisuGUI( const QString&, QObject* = 0 ); + virtual ~VisuGUI(); static VISU::VISU_Gen_i* GetVisuGen(); @@ -177,27 +179,29 @@ class VisuGUI : public QObject{ // ---------------------------------------- // All method of standard EXPORT // ---------------------------------------- - Standard_EXPORT static bool OnGUIEvent(int theCommandID, QAD_Desktop* parent); - Standard_EXPORT static bool setSettings(QAD_Desktop* parent); - Standard_EXPORT static void DefinePopup(QString & theContext, + virtual bool OnGUIEvent(int theCommandID, QAD_Desktop* parent); + virtual bool SetSettings(QAD_Desktop* parent); + virtual void DefinePopup(QString & theContext, QString & theParent, QString & theObject ) ; - Standard_EXPORT static bool CustomPopup(QAD_Desktop* parent, + virtual bool CustomPopup(QAD_Desktop* parent, QPopupMenu* popup, const QString & theContext, const QString & theParent, const QString & theObject); - Standard_EXPORT static void BuildPresentation(const Handle(SALOME_InteractiveObject)&); - Standard_EXPORT static bool OnMousePress(QMouseEvent* pe , + virtual void BuildPresentation(const Handle(SALOME_InteractiveObject)&); + virtual bool OnMousePress(QMouseEvent* pe , QAD_Desktop* parent, QAD_StudyFrame* studyFrame); - Standard_EXPORT static bool OnMouseMove(QMouseEvent* pe , + virtual bool OnMouseMove(QMouseEvent* pe , QAD_Desktop* parent, QAD_StudyFrame* studyFrame); - Standard_EXPORT static bool OnKeyPress(QKeyEvent* pe, + virtual bool OnKeyPress(QKeyEvent* pe, QAD_Desktop* parent, QAD_StudyFrame* studyFrame); - public slots: + virtual void SupportedViewType (int* buffer, int bufferSize); + +public slots: void ImportTablesFromFile(); void ExportTableToFile(); @@ -267,10 +271,6 @@ private : QDialog* myActiveDialogBox; int myState ; VisuGUI_SelectionDlg* mySelectionDlg; - -signals: - void SignalDeactivateActiveDialog(); - void SignalCloseAllDialogs(); }; #endif diff --git a/src/VISU_I/VISUConfig.cc b/src/VISU_I/VISUConfig.cc index bef92c9d..1e760bbd 100644 --- a/src/VISU_I/VISUConfig.cc +++ b/src/VISU_I/VISUConfig.cc @@ -58,32 +58,16 @@ namespace VISU{ //=========================================================================== static int mySCnt = 0; - static int myQCnt = 0; - static int myIsBatchMode = 0; - Mutex::Mutex(QMutex* theMutex, QApplication* theQApp, int theDelay) : - myQApp(theQApp), isQAppLocked(theQApp->locked()), myDelay(theDelay), - myMutex(theMutex), isSessionLocked(theMutex->locked()) - { - if(MYDEBUG) MESSAGE("Mutex::Mutex : "<<(!isQAppLocked && !myQCnt)<<" "<<(!isSessionLocked && !mySCnt)); - if(!myIsBatchMode && isQAppLocked) myIsBatchMode++; - if(!isSessionLocked && !mySCnt) { myMutex->lock();}; mySCnt++; - if(!isQAppLocked && !myQCnt) { - myQApp->lock(); - myQApp->syncX(); - }; - myQCnt++; + Mutex::Mutex(QMutex* theMutex): myMutex(theMutex){ + if(MYDEBUG) MESSAGE("Mutex::Mutex : "<lock(); } Mutex::~Mutex(){ - myQCnt--; - if(!isQAppLocked && !myQCnt) { - myQApp->flushX(); - //if(myDelay > 0) - myQApp->processEvents(myDelay+3); - myQApp->unlock(); - } - mySCnt--; if(!isSessionLocked && !mySCnt) { myMutex->unlock();} - if(MYDEBUG) MESSAGE("Mutex::~Mutex : "<<(!isQAppLocked && !myQCnt)<<" "<<(!isSessionLocked && !mySCnt)); + if(!(--mySCnt)) + myMutex->unlock(); + if(MYDEBUG) MESSAGE("Mutex::~Mutex : "< #include "Utils_ExceptHandlers.hxx" +/*! SAN & VSR : Test QT_EVENT + >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +*/ +#include "SALOME_Event.hxx" + +#include "QAD_Config.h" +#include "QAD_Application.h" +#include "QAD_Desktop.h" +#include "QAD_RightFrame.h" + +#include "VTKViewer_ViewFrame.h" + +#include +#include +#include +#include + +/*! SAN & VSR : Test QT_EVENT + >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +*/ + using namespace std; static QFileInfo aFileInfo; @@ -170,7 +191,7 @@ namespace VISU{ Engines_Component_i() { if(MYDEBUG) MESSAGE("VISU_Gen_i::VISU_Gen_i : "<GetID(); @@ -248,7 +269,7 @@ namespace VISU{ { if(MYDEBUG) MESSAGE("VISU_Gen_i::Save - myMutex = "<(GetServant(anObj).in()); if(pStorable != NULL){ - Mutex mt(myMutex,qApp); + Mutex mt(myMutex); aString = pStorable->ToString().c_str(); return aString._retn(); } @@ -404,7 +425,7 @@ namespace VISU{ //omni_mutex_lock aMutexLock(aMutex); if(MYDEBUG) MESSAGE("VISU_Gen_i::GetViewManager : "<_this()); } @@ -414,7 +435,7 @@ namespace VISU{ SALOMEDS::SObject_ptr VISU_Gen_i::ImportTables(const char* theFileName){ if(myMutex){ if(myStudyDocument->GetProperties()->IsLocked()) return SALOMEDS::SObject::_nil(); - Mutex mt(myMutex,qApp); + Mutex mt(myMutex); SALOMEDS::SObject_var aRes = VISU::ImportTables(theFileName,myStudyDocument); return aRes._retn(); } @@ -430,7 +451,7 @@ namespace VISU{ Result_ptr VISU_Gen_i::ImportFile(const char* theFileName){ if(myMutex){ if(myStudyDocument->GetProperties()->IsLocked()) return Result::_nil(); - Mutex mt(myMutex,qApp); + Mutex mt(myMutex); aFileInfo.setFile(theFileName); Result_i* pResult = new Result_i(myStudyDocument); if(pResult->Create(theFileName) != NULL) @@ -446,7 +467,7 @@ namespace VISU{ Result_ptr VISU_Gen_i::CopyAndImportFile(const char* theFileName){ if(myMutex){ if(myStudyDocument->GetProperties()->IsLocked()) return Result::_nil(); - Mutex mt(myMutex,qApp); + Mutex mt(myMutex); VISU::Result_var aResult; aFileInfo.setFile(theFileName); Result_i* pResult = new Result_i(myStudyDocument,Result_i::eRestoredFile); @@ -461,7 +482,7 @@ namespace VISU{ if(MYDEBUG) MESSAGE("VISU_Gen_i::ImportMed : "<GetProperties()->IsLocked()) return Result::_nil(); - Mutex mt(myMutex,qApp); + Mutex mt(myMutex); Result_i* pResult = new Result_i(myStudyDocument); if(pResult->Create(theMedSObject) != NULL) return pResult->_this(); @@ -477,7 +498,7 @@ namespace VISU{ if(MYDEBUG) MESSAGE("VISU_Gen_i::ImportMedField : "<GetProperties()->IsLocked()) return Result::_nil(); - Mutex mt(myMutex,qApp); + Mutex mt(myMutex); Result_i* pResult = new Result_i(myStudyDocument); if(pResult->Create(theField) != NULL) return pResult->_this(); @@ -493,14 +514,15 @@ namespace VISU{ if(MYDEBUG) MESSAGE("VISU_Gen_i::MeshOnEntity : "<GetProperties()->IsLocked()) return Mesh::_nil(); - Mutex mt(myMutex,qApp); - Result_i* pResult = dynamic_cast(GetServant(theResult).in()); - Mesh_i* aPresent = new Mesh_i(pResult); - if(aPresent->Create(theMeshName,theEntity) != NULL) - return aPresent->_this(); - else{ - aPresent->_remove_ref(); - return VISU::Mesh::_nil(); + Mutex mt(myMutex); + if(Result_i* pResult = dynamic_cast(GetServant(theResult).in())){ + Mesh_i* aPresent = new Mesh_i(pResult); + if(aPresent->Create(theMeshName,theEntity) != NULL) + return aPresent->_this(); + else{ + aPresent->_remove_ref(); + return VISU::Mesh::_nil(); + } } } return myVisuGen->MeshOnEntity(theResult,theMeshName,theEntity); @@ -512,14 +534,15 @@ namespace VISU{ if(MYDEBUG) MESSAGE("VISU_Gen_i::FamilyMeshOnEntity : "<GetProperties()->IsLocked()) return Mesh::_nil(); - Mutex mt(myMutex,qApp); - Result_i* pResult = dynamic_cast(GetServant(theResult).in()); - Mesh_i* aPresent = new Mesh_i(pResult); - if(aPresent->Create(theMeshName,theEntity,theFamilyName) != NULL) - return aPresent->_this(); - else{ - aPresent->_remove_ref(); - return VISU::Mesh::_nil(); + Mutex mt(myMutex); + if(Result_i* pResult = dynamic_cast(GetServant(theResult).in())){ + Mesh_i* aPresent = new Mesh_i(pResult); + if(aPresent->Create(theMeshName,theEntity,theFamilyName) != NULL) + return aPresent->_this(); + else{ + aPresent->_remove_ref(); + return VISU::Mesh::_nil(); + } } } return myVisuGen->FamilyMeshOnEntity(theResult,theMeshName,theEntity,theFamilyName); @@ -530,14 +553,15 @@ namespace VISU{ if(MYDEBUG) MESSAGE("VISU_Gen_i::GroupMesh : "<GetProperties()->IsLocked()) return Mesh::_nil(); - Mutex mt(myMutex,qApp); - Result_i* pResult = dynamic_cast(GetServant(theResult).in()); - Mesh_i* aPresent = new Mesh_i(pResult); - if(aPresent->Create(theMeshName,theGroupName) != NULL) - return aPresent->_this(); - else{ - aPresent->_remove_ref(); - return VISU::Mesh::_nil(); + Mutex mt(myMutex); + if(Result_i* pResult = dynamic_cast(GetServant(theResult).in())){ + Mesh_i* aPresent = new Mesh_i(pResult); + if(aPresent->Create(theMeshName,theGroupName) != NULL) + return aPresent->_this(); + else{ + aPresent->_remove_ref(); + return VISU::Mesh::_nil(); + } } } return myVisuGen->GroupMesh(theResult,theMeshName,theGroupName); @@ -596,7 +620,7 @@ namespace VISU{ if(MYDEBUG) MESSAGE("VISU_Gen_i::CreateTable : "<GetProperties()->IsLocked()) return Table::_nil(); - Mutex mt(myMutex,qApp); + Mutex mt(myMutex); Table_i* pPresent = new Table_i(myStudyDocument,theTableEntry); if(pPresent->Create() != NULL) return pPresent->_this(); @@ -612,7 +636,7 @@ namespace VISU{ if(MYDEBUG) MESSAGE("VISU_Gen_i::CreateCurve : "<GetProperties()->IsLocked()) return Curve::_nil(); - Mutex mt(myMutex,qApp); + Mutex mt(myMutex); PortableServer::POA_ptr aPOA = GetPOA(); Table_i* pTable = dynamic_cast(aPOA->reference_to_servant(theTable)); Curve_i* pPresent = new Curve_i(myStudyDocument,pTable,theHRow,theVRow); @@ -629,7 +653,7 @@ namespace VISU{ if(MYDEBUG) MESSAGE("VISU_Gen_i::CreateContainer : "<GetProperties()->IsLocked()) return Container::_nil(); - Mutex mt(myMutex,qApp); + Mutex mt(myMutex); Container_i* pPresent = new Container_i(myStudyDocument); if(pPresent->Create() != NULL) return pPresent->_this(); @@ -644,9 +668,9 @@ namespace VISU{ Animation_ptr VISU_Gen_i::CreateAnimation(View3D_ptr theView3D){ if(myMutex){ if(myStudyDocument->GetProperties()->IsLocked()) return Animation::_nil(); - Mutex mt(myMutex,qApp); + Mutex mt(myMutex); if(MYDEBUG) MESSAGE("VISU_Gen_i::CreateAnimation : "<_this(); }else return VISU::Animation::_nil(); @@ -658,7 +682,7 @@ namespace VISU{ void VISU_Gen_i::Close(SALOMEDS::SComponent_ptr theComponent){ if(MYDEBUG) MESSAGE("VISU_Gen_i::Close : "<GetStudy(); //if(!aStudy->_is_nil()){ // SALOMEDS::ChildIterator_var aChildIter = aStudy->NewChildIterator(theComponent); @@ -715,7 +739,7 @@ namespace VISU{ Unexpect aCatch(SalomeException); if(MYDEBUG) MESSAGE("VISU_Gen_i::PublishInStudy : "<(GetServant(theObject).in()); if (!aResultObj) return aResultSO._retn(); @@ -730,7 +754,7 @@ namespace VISU{ CORBA::Boolean VISU_Gen_i::CanCopy(SALOMEDS::SObject_ptr theObject) { if(0 && MYDEBUG) MESSAGE("VISU_Gen_i::CanCopy : "<FindAttribute(anAttr, "AttributeIOR")) return false; try { @@ -761,7 +785,7 @@ namespace VISU{ SALOMEDS::TMPFile* VISU_Gen_i::CopyFrom(SALOMEDS::SObject_ptr theObject, CORBA::Long& theObjectID) { if(myMutex){ - Mutex mt(myMutex,qApp); + Mutex mt(myMutex); theObjectID = 0; SALOMEDS::TMPFile_var aStreamFile = new SALOMEDS::TMPFile; @@ -842,7 +866,7 @@ namespace VISU{ SALOMEDS::SObject_ptr theObject) { if(MYDEBUG) MESSAGE("VISU_Gen_i::PasteInto : "<PasteInto(theStream,theObjectID,theObject); } + /*! SAN & VSR : Test QT_EVENT + >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + */ + class TestViewEvent : public SALOME_Event { + public: + virtual bool Execute(){ + QAD_Desktop* desktop = QAD_Application::getDesktop(); + QAD_Study* aStudy = desktop->getActiveStudy(); + if ( !aStudy ) { + QString defViewer = QAD_CONFIG->getSetting( "Viewer::DefaultViewer" ); + int dv = defViewer.toInt(); + QAD_CONFIG->addSetting( "Viewer::DefaultViewer", QString::number( VIEW_VTK ) ); + desktop->createStudy(); + if ( !defViewer.isEmpty() ) { + QAD_CONFIG->addSetting( "Viewer::DefaultViewer", QString::number( dv ) ); + } + } + else { + aStudy->newWindow3d( "", VIEW_VTK ); + } + return true; + } + }; + + class TestObjectEvent : public SALOME_Event { + public: + virtual bool Execute(){ + float aRadius = 150.0 * random() / RAND_MAX + 10.; + float aX = 1000.0 * random() / RAND_MAX - 500.; + float aY = 1000.0 * random() / RAND_MAX - 500.; + float aZ = 1000.0 * random() / RAND_MAX - 500.; + float aR = (float)random() / RAND_MAX; + float aG = (float)random() / RAND_MAX; + float aB = (float)random() / RAND_MAX; + + vtkSphereSource* aSource = vtkSphereSource::New(); + aSource->SetRadius( aRadius ); + aSource->SetCenter( aX, aY, aZ ); + + vtkProperty* prop = vtkProperty::New(); + prop->SetColor( aR, aG, aB ); + + vtkPolyDataMapper* aMapper = vtkPolyDataMapper::New(); + aMapper->SetInput( aSource->GetOutput() ); + + vtkActor* sphere = vtkActor::New(); + sphere->SetMapper( aMapper ); + sphere->SetProperty( prop ); + + QAD_Desktop* desktop = QAD_Application::getDesktop(); + QAD_Study* aStudy = desktop->getActiveStudy(); + if ( !aStudy ) { + return false; + } + VTKViewer_ViewFrame* vf = (VTKViewer_ViewFrame*)(desktop->getActiveStudy()->getActiveStudyFrame()->getRightFrame()->getViewFrame()); + sphere->SetVisibility( true ); + vf->getRenderer()->AddActor(sphere); + vf->Repaint(); + return true; + } + }; + + void VISU_Gen_i::CreateTestView() { + if(myMutex){ + TestViewEvent* ve = new TestViewEvent(); + ve->process(); + ve->release(); + return; + } + myVisuGen->CreateTestView(); + } + + void VISU_Gen_i::ShowTestObject() { + if(myMutex){ + TestObjectEvent* ve = new TestObjectEvent(); + ve->process(); + ve->release(); + return; + } + myVisuGen->ShowTestObject(); + } + /*! SAN & VSR : Test QT_EVENT + <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + */ }; diff --git a/src/VISU_I/VISU_Gen_i.hh b/src/VISU_I/VISU_Gen_i.hh index 2b4dfc34..9a1d4aa0 100644 --- a/src/VISU_I/VISU_Gen_i.hh +++ b/src/VISU_I/VISU_Gen_i.hh @@ -38,6 +38,14 @@ namespace VISU{ virtual char* GetID(); virtual VISU::VISUType GetType() { return VISU::TVISUGEN;}; +/*! SAN & VSR : Test QT_EVENT +>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +*/ + virtual void CreateTestView(); + virtual void ShowTestObject(); +/*! SAN & VSR : Test QT_EVENT +<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< +*/ virtual void SetCurrentStudy(SALOMEDS::Study_ptr theStudy); virtual SALOMEDS::Study_ptr GetCurrentStudy(); @@ -66,14 +74,15 @@ namespace VISU{ typedef typename TPrs3d_i::TInterface TPrs3d; typename TPrs3d::_var_type aPrs3d; if(myStudyDocument->GetProperties()->IsLocked()) return TPrs3d::_nil(); - Mutex mt(myMutex,qApp); - Result_i* pResult = dynamic_cast(GetServant(theResult).in()); - if(TPrs3d_i::IsPossible(pResult,theMeshName,theEntity,theFieldName,int(theIteration))){ - TPrs3d_i* aPresent = new TPrs3d_i(pResult,theAddToStudy); - if(aPresent->Create(theMeshName,theEntity,theFieldName,int(theIteration)) != NULL) - return aPresent->_this(); - else - aPresent->_remove_ref(); + Mutex mt(myMutex); + if(Result_i* pResult = dynamic_cast(GetServant(theResult).in())){ + if(TPrs3d_i::IsPossible(pResult,theMeshName,theEntity,theFieldName,int(theIteration))){ + TPrs3d_i* aPresent = new TPrs3d_i(pResult,theAddToStudy); + if(aPresent->Create(theMeshName,theEntity,theFieldName,int(theIteration)) != NULL) + return aPresent->_this(); + else + aPresent->_remove_ref(); + } } return TPrs3d::_nil(); } diff --git a/src/VISU_I/VISU_TimeAnimation.cxx b/src/VISU_I/VISU_TimeAnimation.cxx index 96631f1a..fc308335 100644 --- a/src/VISU_I/VISU_TimeAnimation.cxx +++ b/src/VISU_I/VISU_TimeAnimation.cxx @@ -21,6 +21,8 @@ #include "VISU_ScalarBarActor.hxx" #include "VISU_Actor.h" +#include "SALOME_Event.hxx" + #include "VTKViewer_ViewFrame.h" #include "QAD_Config.h" @@ -30,9 +32,10 @@ using namespace std; //QWaitCondition myCondition; static int MYDELAY = 1; + //************************************************************************ -VISU_TimeAnimation::VISU_TimeAnimation(SALOMEDS::Study_var theStudy, VISU::View3D_ptr theView3D) { - myStudy = theStudy; +VISU_TimeAnimation::VISU_TimeAnimation(SALOMEDS::Study_ptr theStudy, VISU::View3D_ptr theView3D) { + myStudy = SALOMEDS::Study::_duplicate(theStudy); myIsActive = false; myFrame = 0; mySpeed = 1; @@ -235,7 +238,7 @@ void VISU_TimeAnimation::generatePresentations(CORBA::Long theFieldNum) { //************************************************************************ -CORBA::Boolean VISU_TimeAnimation::generateFrames() { +CORBA::Boolean VISU_TimeAnimation::generateFrames(){ if (!myView) { MESSAGE("Viewer is nod defined for animation"); return false; @@ -243,8 +246,6 @@ CORBA::Boolean VISU_TimeAnimation::generateFrames() { myLastError = QString("Frame(s) for "); bool aNoError = true; - VISU::Mutex mt(myMutex,qApp,MYDELAY); - clearView(); vtkRenderer* aRen = myView->getRenderer(); @@ -280,7 +281,6 @@ void VISU_TimeAnimation::clearView() { MESSAGE("Viewer is nod defined for animation"); return; } - VISU::Mutex mt(myMutex,qApp,MYDELAY); vtkRenderer* aRen = myView->getRenderer(); for (int i = 0; i < getNbFields(); i++) { FieldData& aData = myFieldsLst[i]; @@ -544,3 +544,171 @@ double VISU_TimeAnimation::getTimeValue(SALOMEDS::SObject_var theTimeStamp) { void VISU_TimeAnimation::setSpeed(CORBA::Long theSpeed) { mySpeed = (theSpeed<1)? 1 : theSpeed; } + + +//======================================================================== +VISU_TimeAnimation_i::VISU_TimeAnimation_i(SALOMEDS::Study_ptr theStudy, VISU::View3D_ptr theView3D){ + myAnim = new VISU_TimeAnimation(theStudy,theView3D); +} + + +VISU_TimeAnimation_i::~VISU_TimeAnimation_i(){ + delete myAnim; +} + + +void VISU_TimeAnimation_i::addField(SALOMEDS::SObject_ptr theField){ + myAnim->addField(theField); +} + + +CORBA::Boolean VISU_TimeAnimation_i::generateFrames(){ + return ProcessEvent(new TMemFunEvent(myAnim,&VISU_TimeAnimation::generateFrames)); +} + + +void VISU_TimeAnimation_i::generatePresentations(CORBA::Long theFieldNum){ + myAnim->generatePresentations(theFieldNum); +} + + +void VISU_TimeAnimation_i::clearView(){ + ProcessVoidEvent(new TVoidMemFunEvent(myAnim,&VISU_TimeAnimation::clearView)); +} + + +void VISU_TimeAnimation_i::stopAnimation(){ + ProcessVoidEvent(new TVoidMemFunEvent(myAnim,&VISU_TimeAnimation::stopAnimation)); +} + + +void VISU_TimeAnimation_i::startAnimation(){ + ProcessVoidEvent(new TVoidMemFunEvent(myAnim,&VISU_TimeAnimation::startAnimation)); +} + + +void VISU_TimeAnimation_i::nextFrame(){ + ProcessVoidEvent(new TVoidMemFunEvent(myAnim,&VISU_TimeAnimation::nextFrame)); +} + + +void VISU_TimeAnimation_i::prevFrame(){ + ProcessVoidEvent(new TVoidMemFunEvent(myAnim,&VISU_TimeAnimation::prevFrame)); +} + + +void VISU_TimeAnimation_i::firstFrame(){ + ProcessVoidEvent(new TVoidMemFunEvent(myAnim,&VISU_TimeAnimation::firstFrame)); +} + + +void VISU_TimeAnimation_i::lastFrame(){ + ProcessVoidEvent(new TVoidMemFunEvent(myAnim,&VISU_TimeAnimation::lastFrame)); +} + + +void VISU_TimeAnimation_i::gotoFrame(CORBA::Long theFrame){ + ProcessVoidEvent(new TVoidMemFun1ArgEvent(myAnim,&VISU_TimeAnimation::gotoFrame,theFrame)); +} + + +CORBA::Long VISU_TimeAnimation_i::getNbFields(){ + return myAnim->getNbFields(); +} + + +CORBA::Long VISU_TimeAnimation_i::getNbFrames(){ + return myAnim->getNbFrames(); +} + + +CORBA::Boolean VISU_TimeAnimation_i::isRunning(){ + return myAnim->isRunning(); +} + + +CORBA::Long VISU_TimeAnimation_i::getCurrentFrame(){ + return myAnim->getCurrentFrame(); +} + + +VISU::ScalarMap_ptr VISU_TimeAnimation_i::getPresentation(CORBA::Long theField, CORBA::Long theFrame){ + return myAnim->getPresentation(theField,theFrame); +} + + +void VISU_TimeAnimation_i::setPresentationType(CORBA::Long theFieldNum, VISU::VISUType theType){ + myAnim->setPresentationType(theFieldNum,theType); +} + + +VISU::VISUType VISU_TimeAnimation_i::getPresentationType(CORBA::Long theFieldNum){ + return myAnim->getPresentationType(theFieldNum); +} + + +void VISU_TimeAnimation_i::setSpeed(CORBA::Long theSpeed){ + myAnim->setSpeed(theSpeed); +} + + +CORBA::Long VISU_TimeAnimation_i::getSpeed(){ + return myAnim->getSpeed(); +} + + +CORBA::Boolean VISU_TimeAnimation_i::isProportional(){ + return myAnim->isProportional(); +} + + +void VISU_TimeAnimation_i::setAnimationRange(CORBA::Double theMin, CORBA::Double theMax){ + myAnim->setAnimationRange(theMin,theMax); +} + + +CORBA::Double VISU_TimeAnimation_i::getMinRange(){ + return myAnim->getMinRange(); +} + + +CORBA::Double VISU_TimeAnimation_i::getMaxRange(){ + return myAnim->getMaxRange(); +} + + +CORBA::Boolean VISU_TimeAnimation_i::isRangeDefined(){ + return myAnim->isRangeDefined(); +} + + +void VISU_TimeAnimation_i::dumpTo(const char* thePath){ + myAnim->dumpTo(thePath); +} + + +CORBA::Boolean VISU_TimeAnimation_i::isCycling(){ + return myAnim->isCycling(); +} + + +CORBA::Double VISU_TimeAnimation_i::getMinTime(){ + return myAnim->getMinTime(); +} + + +CORBA::Double VISU_TimeAnimation_i::getMaxTime(){ + return myAnim->getMaxTime(); +} + + +void VISU_TimeAnimation_i::setProportional(CORBA::Boolean theProp){ + myAnim->setProportional(theProp); +} + + +void VISU_TimeAnimation_i::setCycling(CORBA::Boolean theCycle){ + myAnim->setCycling(theCycle); +} + + diff --git a/src/VISU_I/VISU_TimeAnimation.h b/src/VISU_I/VISU_TimeAnimation.h index f5c0a07b..01de4065 100644 --- a/src/VISU_I/VISU_TimeAnimation.h +++ b/src/VISU_I/VISU_TimeAnimation.h @@ -37,9 +37,7 @@ struct FieldData }; -class VISU_TimeAnimation: public QObject, public QThread, - public virtual POA_VISU::Animation, - public virtual VISU::Base_i +class VISU_TimeAnimation: public QObject, public QThread { Q_OBJECT; public: @@ -47,7 +45,7 @@ class VISU_TimeAnimation: public QObject, public QThread, static VISU::Storable::TRestoringMap getMapOfValue(SALOMEDS::SObject_var theSObject); static double getTimeValue(SALOMEDS::SObject_var theTimestamp); - VISU_TimeAnimation(SALOMEDS::Study_var theStudy, VISU::View3D_ptr theView3D = VISU::View3D::_nil()); + VISU_TimeAnimation(SALOMEDS::Study_ptr theStudy, VISU::View3D_ptr theView3D = VISU::View3D::_nil()); ~VISU_TimeAnimation(); virtual VISU::VISUType GetType() { return VISU::TNONE;}; @@ -132,4 +130,64 @@ class VISU_TimeAnimation: public QObject, public QThread, VTKViewer_ViewFrame* myView; }; + +class VISU_TimeAnimation_i: public virtual POA_VISU::Animation, + public virtual VISU::Base_i +{ + VISU_TimeAnimation* myAnim; +public: + VISU_TimeAnimation_i(SALOMEDS::Study_ptr theStudy, + VISU::View3D_ptr theView3D = VISU::View3D::_nil()); + ~VISU_TimeAnimation_i(); + + virtual VISU::VISUType GetType(){ return VISU::TNONE;} + + virtual void addField(SALOMEDS::SObject_ptr theField); + + virtual CORBA::Boolean generateFrames(); + virtual void generatePresentations(CORBA::Long theFieldNum); + + virtual void clearView(); + + virtual void stopAnimation(); + virtual void startAnimation(); + virtual void nextFrame(); + virtual void prevFrame(); + virtual void firstFrame(); + virtual void lastFrame(); + virtual void gotoFrame(CORBA::Long theFrame); + + virtual CORBA::Long getNbFields(); + virtual CORBA::Long getNbFrames(); + virtual CORBA::Boolean isRunning(); + virtual CORBA::Long getCurrentFrame(); + + virtual VISU::ScalarMap_ptr getPresentation(CORBA::Long theField, CORBA::Long theFrame); + + virtual void setPresentationType(CORBA::Long theFieldNum, VISU::VISUType theType); + virtual VISU::VISUType getPresentationType(CORBA::Long theFieldNum); + + virtual void setSpeed(CORBA::Long theSpeed); + virtual CORBA::Long getSpeed(); + + virtual CORBA::Boolean isProportional(); + + virtual void setAnimationRange(CORBA::Double theMin, CORBA::Double theMax); + + virtual CORBA::Double getMinRange(); + virtual CORBA::Double getMaxRange(); + virtual CORBA::Boolean isRangeDefined(); + + virtual void dumpTo(const char* thePath); + + virtual CORBA::Boolean isCycling(); + + virtual CORBA::Double getMinTime(); + virtual CORBA::Double getMaxTime(); + + virtual void setProportional(CORBA::Boolean theProp); + virtual void setCycling(CORBA::Boolean theCycle); +}; + + #endif //VISU_TIMEANIMATION_H diff --git a/src/VISU_I/VISU_ViewManager_i.cc b/src/VISU_I/VISU_ViewManager_i.cc index 26691ed0..7492a7a7 100644 --- a/src/VISU_I/VISU_ViewManager_i.cc +++ b/src/VISU_I/VISU_ViewManager_i.cc @@ -43,6 +43,8 @@ #include "VISU_ScalarBarActor.hxx" #include "VISU_Actor.h" +#include "SALOME_Event.hxx" + #include "QAD_Application.h" #include "QAD_Desktop.h" #include "QAD_Tools.h" @@ -68,7 +70,7 @@ using namespace std; #ifdef _DEBUG_ -static int MYDEBUG = 0; +static int MYDEBUG = 1; #else static int MYDEBUG = 0; #endif @@ -78,6 +80,69 @@ static int MYDELAY = 1; namespace VISU{ //=========================================================================== + typedef TVoidMemFunEvent TFrameActionEvent; + + template + class TSetBackgroundEvent: public SALOME_Event{ + TObject* myView; + const SALOMEDS::Color& myColor; + public: + TSetBackgroundEvent(TObject* theView, const SALOMEDS::Color& theColor): + myView(theView), myColor(theColor) + {} + virtual bool Execute(){ + int aColor[3]; + aColor[0] = int(255.0*myColor.R); + aColor[1] = int(255.0*myColor.G); + aColor[2] = int(255.0*myColor.B); + QColor aNewColor(aColor[0],aColor[1],aColor[2]); + myView->setBackgroundColor(aNewColor); + return true; + } + }; + + + class TSavePictureEvent: public SALOME_Event{ + QWidget* myWidget; + const char* myFileName; + public: + typedef CORBA::Boolean TResult; + TResult myResult; + TSavePictureEvent(QWidget* theWidget, const char* theFileName): + myWidget(theWidget), + myFileName(theFileName), + myResult(false) + {} + virtual bool Execute(){ + if(myWidget){ + QPixmap px = QPixmap::grabWindow(myWidget->winId()); + if (!QString(myFileName).isNull()) { + QString fmt = QAD_Tools::getFileExtensionFromPath(myFileName).upper(); + if (fmt.isEmpty()) + fmt = QString("BMP"); // default format + if (fmt == "JPG") + fmt = "JPEG"; + myResult = px.save(myFileName, fmt.latin1()); + } + } + } + }; + + + void RepaintView(QAD_StudyFrame* theStudyFrame); + class TRepaintViewEvent: public SALOME_Event{ + QAD_StudyFrame* myStudyFrame; + public: + TRepaintViewEvent(QAD_StudyFrame* theStudyFrame): + myStudyFrame(theStudyFrame) + {} + virtual bool Execute(){ + RepaintView(myStudyFrame); + return true; + } + }; + + VTKViewer_ViewFrame* GetViewFrame(QAD_StudyFrame* theStudyFrame){ return dynamic_cast(theStudyFrame->getRightFrame()->getViewFrame()); } @@ -87,11 +152,15 @@ namespace VISU{ vtkCamera* GetCamera(QAD_StudyFrame* theStudyFrame){ return GetRenderer(theStudyFrame)->GetActiveCamera(); } + + void RepaintView(QAD_StudyFrame* theStudyFrame){ GetRenderer(theStudyFrame)->ResetCameraClippingRange(); GetViewFrame(theStudyFrame)->getRW()->getRenderWindow()->Render(); //GetViewFrame(theStudyFrame)->Repaint(); } + + VISU_Actor* UpdateViewer(QAD_StudyFrame* theStudyFrame, int theDisplaing, Prs3d_i* thePrs){ VTKViewer_ViewFrame* vf = GetViewFrame(theStudyFrame); if (!vf) return NULL; @@ -213,126 +282,157 @@ namespace VISU{ } } } - //=========================================================================== - /* - #include - class TViewManager: public QThread{ - public: - TViewManager(SALOMEDS::Study_ptr theStudy) : myStudyDocument(theStudy) {}; - virtual void run(){ - qApp->lock(); - QAD_Desktop* aDesktop = QAD_Application::getDesktop(); - QAD_Study* aStudy = aDesktop->findStudy(myStudyDocument); - if(!aStudy){ - CORBA::String_var aName = myStudyDocument->Name(); - aFileInfo.setFile(aName.in()); + + QAD_Study* CheckStudy( SALOMEDS::Study_ptr theStudy ) { + QAD_Desktop* aDesktop = QAD_Application::getDesktop(); + QAD_Study* aStudy = aDesktop->findStudy(theStudy); + if(!aStudy){ + CORBA::String_var aName = theStudy->Name(); + aFileInfo.setFile(aName.in()); + if (aFileInfo.exists()) aStudy = aDesktop->loadStudy(aFileInfo.baseName()); + else + aStudy = aDesktop->loadStudy(aName.in()); + if (!aStudy) { + MESSAGE("CheckStudy()::ERROR: Can't load study"); } - qApp->unlock(); } - SALOMEDS::Study_ptr myStudyDocument; - }; - */ + return aStudy; + } + //=========================================================================== ViewManager_i::ViewManager_i(SALOMEDS::Study_ptr theStudy) { if(MYDEBUG) MESSAGE("ViewManager_i::ViewManager_i"); - Mutex mt(myMutex,qApp,MYDELAY); myStudyDocument = SALOMEDS::Study::_duplicate(theStudy); - //TViewManager* aTViewManager = new TViewManager(theStudy); - //aTViewManager->start(); - QAD_Desktop* aDesktop = QAD_Application::getDesktop(); - QAD_Study* aStudy = aDesktop->findStudy(theStudy); - if(!aStudy){ - CORBA::String_var aName = theStudy->Name(); - aFileInfo.setFile(aName.in()); - if (aFileInfo.exists()) - aStudy = aDesktop->loadStudy(aFileInfo.baseName()); - else aStudy = aDesktop->loadStudy(aName.in()); - if (!aStudy) - MESSAGE("ViewManager_i::ERROR: Can't load study"); - } } - VISU::View3D_ptr ViewManager_i::Create3DView(){ - Mutex mt(myMutex,qApp,MYDELAY); - if(MYDEBUG) MESSAGE("ViewManager_i::Create3DView"); - VISU::View3D_i* pView = new View3D_i(myStudyDocument); - if(pView->Create(1) != NULL) - return VISU::View3D::_duplicate(pView->_this()); - return VISU::View3D::_nil(); + VISU::View_ptr ViewManager_i::GetCurrentView(){ + class TEvent: public SALOME_Event{ + SALOMEDS::Study_ptr myStudyDocument; + public: + TEvent( SALOMEDS::Study_ptr theStudy): + myStudyDocument(theStudy) + {} + virtual bool Execute(){ + if(QAD_Study* aStudy = QAD_Application::getDesktop()->findStudy( myStudyDocument )){ + if ( QAD_StudyFrame* aStudyFrame = aStudy->getActiveStudyFrame() ) { + if(MYDEBUG) + MESSAGE("GetCurrentView::Execute - TypeView = "<getTypeView()); + if ( aStudyFrame->getTypeView() == VIEW_VTK ) { + VISU::View3D_i* pView = new View3D_i(myStudyDocument); + if(pView->Create(0)) + myResult = pView->_this(); + } else if ( aStudyFrame->getTypeView() == VIEW_PLOT2D ) { + VISU::XYPlot_i* pView = new XYPlot_i(myStudyDocument); + if(pView->Create(0)) + myResult = pView->_this(); + } + } + } + return true; + } + typedef VISU::View_var TResult; + TResult myResult; + }; + TEvent* ve = new TEvent( myStudyDocument ); + ve->process(); + TEvent::TResult aResult = ve->myResult; + ve->release(); + return aResult._retn(); } + + + class TCreateViewEvent: public SALOME_Event{ + public: + TCreateViewEvent( SALOMEDS::Study_ptr theStudy): + myStudyDocument(theStudy) + {}; + protected: + SALOMEDS::Study_ptr myStudyDocument; + }; - VISU::View_ptr ViewManager_i::GetCurrentView(){ - Mutex mt(myMutex,qApp,MYDELAY); - QAD_Study* Study = QAD_Application::getDesktop()->findStudy( myStudyDocument ); - if(MYDEBUG) MESSAGE("ViewManager_i::GetCurrent3DView - Study = "<getActiveStudyFrame() ) ) { - if(MYDEBUG) - MESSAGE("ViewManager_i::GetCurrent3DView - TypeView = "<getTypeView()); - if ( StudyFrame->getTypeView() == VIEW_VTK ) { - VISU::View3D_i* pView = new View3D_i(myStudyDocument); - if(pView->Create(0) != NULL) - return VISU::View3D::_duplicate(pView->_this()); - } - else if ( StudyFrame->getTypeView() == VIEW_PLOT2D ) { - VISU::XYPlot_i* pView = new XYPlot_i(myStudyDocument); - if(pView->Create(0) != NULL) - return VISU::XYPlot::_duplicate(pView->_this()); + template + class TCreateViewFrameEvent: public TCreateViewEvent{ + public: + typedef typename TViewFrame::TInterface TInterface; + typedef typename TInterface::_ptr_type TResult; + TResult myResult; + TCreateViewFrameEvent(SALOMEDS::Study_ptr theStudy): + TCreateViewEvent(theStudy), + myResult(TInterface::_nil()) + {} + virtual bool Execute(){ + if(CheckStudy(myStudyDocument)){ + TViewFrame* pView = new TViewFrame(myStudyDocument); + if(pView->Create(1)) + myResult = pView->_this(); } + return true; } - return VISU::View::_nil(); - } + }; + + VISU::View3D_ptr ViewManager_i::Create3DView(){ + if(MYDEBUG) MESSAGE("ViewManager_i::Create3DView"); + return ProcessEvent(new TCreateViewFrameEvent(myStudyDocument)); + } + VISU::XYPlot_ptr ViewManager_i::CreateXYPlot(){ if(MYDEBUG) MESSAGE("ViewManager_i::CreateXYPlot"); - Mutex mt(myMutex,qApp,MYDELAY); - VISU::XYPlot_i* pView = new XYPlot_i(myStudyDocument); - if(pView->Create(1) != NULL) - return VISU::XYPlot::_duplicate(pView->_this()); - return VISU::XYPlot::_nil(); + return ProcessEvent(new TCreateViewFrameEvent(myStudyDocument)); } VISU::TableView_ptr ViewManager_i::CreateTableView(VISU::Table_ptr theTable){ + class TEvent: public TCreateViewEvent{ + Table_ptr myTable; + public: + TEvent(SALOMEDS::Study_ptr theStudy, + Table_ptr theTable): + TCreateViewEvent(theStudy), + myTable(theTable) + {} + virtual bool Execute(){ + if ( CheckStudy( myStudyDocument ) ) { + VISU::TableView_i* pView = new TableView_i(myStudyDocument); + if(pView->Create(myTable) != NULL) + myResult = pView->_this(); + } + return true; + } + typedef VISU::TableView_var TResult; + TResult myResult; + }; if(MYDEBUG) MESSAGE("ViewManager_i::CreateTableView"); - Mutex mt(myMutex,qApp,MYDELAY); - VISU::TableView_i* pView = new TableView_i(myStudyDocument); - if(pView->Create(VISU::Table::_duplicate(theTable)) != NULL) - return VISU::TableView::_duplicate(pView->_this()); - return VISU::TableView::_nil(); + TEvent* ve = new TEvent(myStudyDocument,theTable); + ve->process(); + TEvent::TResult aResult = ve->myResult; + ve->release(); + return aResult._retn(); } void ViewManager_i::Destroy(View_ptr theView){ - if(MYDEBUG) MESSAGE("ViewManager_i::Destroy - "<_is_nil()); - if(theView->_is_nil()) return; - CORBA::Object_var aView = VISU::View::_narrow(theView); - if(!CORBA::is_nil(aView)){ - if(MYDEBUG) MESSAGE("ViewManager_i::Destroy - VISU::View"<<(!CORBA::is_nil(aView))); - VISU::View_i* pView = dynamic_cast(VISU::GetServant(aView).in()); - if(MYDEBUG) MESSAGE("ViewManager_i::Destroy - dynamic_cast"<Close(); - pView->_remove_ref(); + class TEvent: public SALOME_Event{ + View_ptr myView; + public: + TEvent(View_ptr theView): + myView(theView) + {} + virtual bool Execute(){ + if(!CORBA::is_nil(myView)){ + if(VISU::View_i* pView = dynamic_cast(VISU::GetServant(myView).in())) { + pView->Close(); + pView->_remove_ref(); + } + } + return true; } - //if(pView) delete pView; - return; - } - } - - - void ViewManager_i::ProcessEvents() { - while (true) { - qApp->lock(); - qApp->syncX(); - qApp->flushX(); - qApp->processEvents(); - qApp->unlock(); - //sleep(1); - } + }; + if(MYDEBUG) MESSAGE("ViewManager_i::Destroy - "<_is_nil()); + ProcessVoidEvent(new TEvent(theView)); } @@ -340,14 +440,7 @@ namespace VISU{ View_i::View_i(SALOMEDS::Study_ptr theStudy) { if(MYDEBUG) MESSAGE("View_i::View_i"); CORBA::String_var aName = theStudy->Name(); - QAD_Desktop* aDesktop = QAD_Application::getDesktop(); - myStudy = aDesktop->findStudy(theStudy); - if(!myStudy){ - aFileInfo.setFile(aName.in()); - if ( aFileInfo.exists() ) - myStudy = aDesktop->loadStudy(aFileInfo.baseName()); - else myStudy = aDesktop->loadStudy(aName.in()); - } + myStudy = CheckStudy(theStudy); if(MYDEBUG) MESSAGE("View_i::View_i - isStudyOpened = "<getStudyDocument()->FindObjectIOR(GetID()); CORBA::String_var anEntry = aSObject->GetID(); - string aString(anEntry); - if(MYDEBUG) MESSAGE("Result_i::GetEntry - "<newWindow3d("",VIEW_PLOT2D); else myStudyFrame = myStudy->getActiveStudyFrame(); myView = dynamic_cast(myStudyFrame->getRightFrame()->getViewFrame()); - Update(); + myView->Repaint(); return this; } + + void XYPlot_i::Update() { - if(MYDEBUG) MESSAGE("XYPlot_i::Update"); - Mutex mt(myMutex,qApp,MYDELAY); - myName = (const char*)(myStudyFrame->title()); - myView->Repaint(); + ProcessVoidEvent(new TVoidMemFunEvent(myView,&Plot2d_ViewFrame::Repaint)); } + + void XYPlot_i::Close(){ - if(MYDEBUG) MESSAGE("XYPlot_i::Close"); - Mutex mt(myMutex,qApp,MYDELAY); myStudyFrame->close(); } + XYPlot_i::~XYPlot_i() { if(MYDEBUG) MESSAGE("XYPlot_i::~XYPlot_i"); - Mutex mt(myMutex,qApp,MYDELAY); - myStudyFrame->close(); } + + void XYPlot_i::SetTitle(const char* theTitle){ - if(MYDEBUG) MESSAGE("XYPlot_i::SetTitle"); - Mutex mt(myMutex,qApp,MYDELAY); - myName = theTitle; - myStudyFrame->setCaption(myName.c_str()); + ProcessVoidEvent(new TVoidMemFun1ArgEvent + (myStudyFrame,&QAD_StudyFrame::setCaption,QString(theTitle))); } char* XYPlot_i::GetTitle() { - if(MYDEBUG) MESSAGE("XYPlot_i::GetTitle"); - Mutex mt(myMutex,qApp); - myName = (const char*)(myStudyFrame->title()); - return CORBA::string_dup(myName.c_str()); + return CORBA::string_dup(myStudyFrame->title().latin1()); } + void XYPlot_i::SetSubTitle(const char* theTitle){ - if(MYDEBUG) MESSAGE("XYPlot_i::SetSubTitle"); - Mutex mt(myMutex,qApp,MYDELAY); - myView->setTitle(theTitle); + ProcessVoidEvent(new TVoidMemFun1ArgEvent + (myView,&Plot2d_ViewFrame::setTitle,QString(theTitle))); } char* XYPlot_i::GetSubTitle() { - if(MYDEBUG) MESSAGE("XYPlot_i::GetSubTitle"); - Mutex mt(myMutex,qApp,MYDELAY); return CORBA::string_dup(myView->getTitle()); } + void XYPlot_i::SetCurveType(VISU::XYPlot::CurveType theType){ - if(MYDEBUG) MESSAGE("XYPlot_i::SetCurveType"); - Mutex mt(myMutex,qApp,MYDELAY); - myView->setCurveType(theType); + ProcessVoidEvent(new TVoidMemFun2ArgEvent + (myView,&Plot2d_ViewFrame::setCurveType,theType,true)); } VISU::XYPlot::CurveType XYPlot_i::GetCurveType(){ - if(MYDEBUG) MESSAGE("XYPlot_i::GetCurveType"); - Mutex mt(myMutex,qApp); return (VISU::XYPlot::CurveType)myView->getCurveType(); } + void XYPlot_i::SetMarkerSize(CORBA::Long theSize){ - if(MYDEBUG) MESSAGE("XYPlot_i::SetMarkerSize"); - Mutex mt(myMutex,qApp,MYDELAY); - myView->setMarkerSize(theSize); + ProcessVoidEvent(new TVoidMemFun2ArgEvent + (myView,&Plot2d_ViewFrame::setMarkerSize,theSize,true)); } CORBA::Long XYPlot_i::GetMarkerSize(){ - if(MYDEBUG) MESSAGE("XYPlot_i::GetMarkerSize"); - Mutex mt(myMutex,qApp); return myView->getMarkerSize(); } + + class TEnbleGridEvent: public SALOME_Event{ + public: + typedef void (Plot2d_ViewFrame::* TFun)(bool, const int, bool, const int, bool = true); + TEnbleGridEvent(Plot2d_ViewFrame* theView, TFun theFun, + CORBA::Boolean theMajor, CORBA::Long theNumMajor, + CORBA::Boolean theMinor, CORBA::Long theNumMinor): + myView(theView), myFun(theFun), + myMajor(theMajor), myNumMajor(theNumMajor), + myMinor(theMinor), myNumMinor(theNumMinor) + {} + virtual bool Execute(){ + (myView->*myFun)(myMajor,myNumMajor,myMinor,myNumMinor); + return true; + } + protected: + Plot2d_ViewFrame* myView; + TFun myFun; + CORBA::Boolean myMajor, myNumMajor; + CORBA::Boolean myMinor, myNumMinor; + }; + + void XYPlot_i::EnableXGrid(CORBA::Boolean theMajor, CORBA::Long theNumMajor, - CORBA::Boolean theMinor, CORBA::Long theNumMinor){ - if(MYDEBUG) MESSAGE("XYPlot_i::EnableXGrid"); - Mutex mt(myMutex,qApp,MYDELAY); - myView->setXGrid(theMajor,theNumMajor,theMinor,theNumMinor); + CORBA::Boolean theMinor, CORBA::Long theNumMinor) + { + ProcessVoidEvent(new TEnbleGridEvent(myView,&Plot2d_ViewFrame::setXGrid, + theMajor,theNumMajor,theMinor,theNumMinor)); } void XYPlot_i::EnableYGrid(CORBA::Boolean theMajor, CORBA::Long theNumMajor, - CORBA::Boolean theMinor, CORBA::Long theNumMinor){ - if(MYDEBUG) MESSAGE("XYPlot_i::EnableYGrid"); - Mutex mt(myMutex,qApp,MYDELAY); - myView->setYGrid(theMajor,theNumMajor,theMinor,theNumMinor); + CORBA::Boolean theMinor, CORBA::Long theNumMinor) + { + ProcessVoidEvent(new TEnbleGridEvent(myView,&Plot2d_ViewFrame::setYGrid, + theMajor,theNumMajor,theMinor,theNumMinor)); } + + class TSetScaleModeEvent: public SALOME_Event{ + public: + typedef void (Plot2d_ViewFrame::* TFun)(const int, bool = true); + TSetScaleModeEvent(Plot2d_ViewFrame* theView, TFun theFun, int theScaling): + myView(theView), myFun(theFun), myScaling(theScaling) + {} + virtual bool Execute(){ + (myView->*myFun)(myScaling); + return true; + } + protected: + Plot2d_ViewFrame* myView; + TFun myFun; + int myScaling; + }; + + void XYPlot_i::SetHorScaling(VISU::Scaling theScaling){ - if(MYDEBUG) MESSAGE("XYPlot_i::SetHorScaling"); - Mutex mt(myMutex,qApp,MYDELAY); - if(theScaling == VISU::LOGARITHMIC) - myView->setHorScaleMode(1); - else - myView->setHorScaleMode(0); + ProcessVoidEvent(new TSetScaleModeEvent(myView,&Plot2d_ViewFrame::setHorScaleMode, + theScaling == VISU::LOGARITHMIC)); } VISU::Scaling XYPlot_i::GetHorScaling(){ - if(MYDEBUG) MESSAGE("XYPlot_i::GetHorScaling"); - Mutex mt(myMutex,qApp,MYDELAY); return (VISU::Scaling)myView->getHorScaleMode(); } + void XYPlot_i::SetVerScaling(VISU::Scaling theScaling){ - if(MYDEBUG) MESSAGE("XYPlot_i::SetVerScaling"); - Mutex mt(myMutex,qApp,MYDELAY); - if(theScaling == VISU::LOGARITHMIC) - myView->setVerScaleMode(1); - else - myView->setVerScaleMode(0); + ProcessVoidEvent(new TSetScaleModeEvent(myView,&Plot2d_ViewFrame::setVerScaleMode, + theScaling == VISU::LOGARITHMIC)); } VISU::Scaling XYPlot_i::GetVerScaling(){ - if(MYDEBUG) MESSAGE("XYPlot_i::SetVerScaling"); - Mutex mt(myMutex,qApp); return (VISU::Scaling)myView->getVerScaleMode(); } + + class TSetTitleEvent: public SALOME_Event{ + public: + typedef void (Plot2d_ViewFrame::* TFun)(bool, const QString&, bool = true); + TSetTitleEvent(Plot2d_ViewFrame* theView, TFun theFun, const char* theTitle): + myView(theView), myFun(theFun), myTitle(theTitle) + {} + virtual bool Execute(){ + (myView->*myFun)(true,myTitle); + return true; + } + protected: + Plot2d_ViewFrame* myView; + TFun myFun; + const char* myTitle; + }; + + void XYPlot_i::SetXTitle(const char* theTitle){ - if(MYDEBUG) MESSAGE("XYPlot_i::SetXTitle"); - Mutex mt(myMutex,qApp,MYDELAY); - myView->setXTitle(true,theTitle); + ProcessVoidEvent(new TSetTitleEvent(myView,&Plot2d_ViewFrame::setXTitle,theTitle)); } char* XYPlot_i::GetXTitle() { - if(MYDEBUG) MESSAGE("XYPlot_i::GetXTitle"); - Mutex mt(myMutex,qApp); return CORBA::string_dup(myView->getXTitle()); } + void XYPlot_i::SetYTitle(const char* theTitle){ - if(MYDEBUG) MESSAGE("XYPlot_i::SetYTitle"); - Mutex mt(myMutex,qApp,MYDELAY); - myView->setYTitle(true,theTitle); + ProcessVoidEvent(new TSetTitleEvent(myView,&Plot2d_ViewFrame::setYTitle,theTitle)); } char* XYPlot_i::GetYTitle() { - if(MYDEBUG) MESSAGE("XYPlot_i::GetYTitle"); - Mutex mt(myMutex,qApp); return CORBA::string_dup(myView->getYTitle()); } + void XYPlot_i::ShowLegend(CORBA::Boolean theShowing){ - if(MYDEBUG) MESSAGE("XYPlot_i::ShowLegend"); - Mutex mt(myMutex,qApp,MYDELAY); - myView->showLegend(theShowing); + ProcessVoidEvent(new TVoidMemFun2ArgEvent + (myView,&Plot2d_ViewFrame::showLegend,theShowing,true)); } + void XYPlot_i::SetBackground(const SALOMEDS::Color& theColor){ - if(MYDEBUG) MESSAGE("XYPlot_i::SetBackground"); - Mutex mt(myMutex,qApp,MYDELAY); - int aColor[3]; - aColor[0] = (int)(255.0*theColor.R); - aColor[1] = (int)(255.0*theColor.G); - aColor[2] = (int)(255.0*theColor.B); - QColor aNewColor(aColor[0],aColor[1],aColor[2]); - myView->setBackgroundColor(aNewColor); + ProcessVoidEvent(new TSetBackgroundEvent(myView,theColor)); } SALOMEDS::Color XYPlot_i::GetBackground() { - if(MYDEBUG) MESSAGE("XYPlot_i::GetBackground"); - Mutex mt(myMutex,qApp); SALOMEDS::Color aColor; aColor.R = myView->backgroundColor().red()/255.0; aColor.G = myView->backgroundColor().green()/255.0; aColor.B = myView->backgroundColor().blue()/255.0; return aColor; } + void XYPlot_i::Minimize() { - if(MYDEBUG) MESSAGE("XYPlot_i::Minimize"); - Mutex mt(myMutex,qApp,MYDELAY); - myStudyFrame->showMinimized(); + ProcessVoidEvent(new TFrameActionEvent(myStudyFrame,&QAD_StudyFrame::showMinimized)); } + void XYPlot_i::Restore() { - if(MYDEBUG) MESSAGE("XYPlot_i::Restore"); - Mutex mt(myMutex,qApp,MYDELAY); - myStudyFrame->showNormal(); + ProcessVoidEvent(new TFrameActionEvent(myStudyFrame, &QAD_StudyFrame::showNormal)); } + void XYPlot_i::Maximize() { - if(MYDEBUG) MESSAGE("XYPlot_i::Maximize"); - Mutex mt(myMutex,qApp,MYDELAY); - myStudyFrame->showMaximized(); + ProcessVoidEvent(new TFrameActionEvent(myStudyFrame, &QAD_StudyFrame::showMaximized)); } - void XYPlot_i::Display(PrsObject_ptr thePrsObj) { - if(MYDEBUG) MESSAGE("XYPlot_i::Display"); - Mutex mt(myMutex,qApp,MYDELAY); - CORBA::Object_ptr anObj = thePrsObj; - // is it Curve ? - if(Curve_i* aCurve = dynamic_cast(VISU::GetServant(anObj).in())) { - UpdatePlot2d(myView,eDisplay,aCurve); - } - // is it Container ? - if(Container_i* aContainer = dynamic_cast(VISU::GetServant(anObj).in())) { - int nbCurves = aContainer->GetNbCurves(); - for ( int i = 1; i <= nbCurves; i++ ) { - VISU::Curve_i* aCurve = aContainer->GetCurve( i ); - if ( aCurve && aCurve->IsValid() ) { - UpdatePlot2d(myView,eDisplay,aCurve); - } + + + class TXYPlotViewEvent: public SALOME_Event{ + QAD_Study* myStudy; + Plot2d_ViewFrame* myView; + PrsObject_ptr myPrsObj; + int myDisplaing; + public: + TXYPlotViewEvent(QAD_Study* theStudy, + Plot2d_ViewFrame* theView, + PrsObject_ptr thePrsObj, + int theDisplaing): + myStudy(theStudy), + myView(theView), + myPrsObj(thePrsObj), + myDisplaing(theDisplaing) + {} + virtual bool Execute(){ + // is it Curve ? + if(Curve_i* aCurve = dynamic_cast(VISU::GetServant(myPrsObj).in())) { + UpdatePlot2d(myView,myDisplaing,aCurve); } - myView->Repaint(); - } - // is it Table ? - if(Table_i* aTable = dynamic_cast(VISU::GetServant(anObj).in())) { - SALOMEDS::SObject_var TableSO = myStudy->getStudyDocument()->FindObjectID( aTable->GetEntry() ); - if ( !TableSO->_is_nil() ) { - SALOMEDS::ChildIterator_var Iter = myStudy->getStudyDocument()->NewChildIterator( TableSO ); - for ( ; Iter->More(); Iter->Next() ) { - CORBA::Object_var childObject = VISU::SObjectToObject( Iter->Value() ); - if( !CORBA::is_nil( childObject ) ) { - CORBA::Object_ptr aCurve = VISU::Curve::_narrow( childObject ); - if( !CORBA::is_nil( aCurve ) ) - UpdatePlot2d(myView,eDisplay,dynamic_cast( VISU::GetServant(aCurve).in())); + // is it Container ? + if(Container_i* aContainer = dynamic_cast(VISU::GetServant(myPrsObj).in())) { + int nbCurves = aContainer->GetNbCurves(); + for ( int i = 1; i <= nbCurves; i++ ) { + VISU::Curve_i* aCurve = aContainer->GetCurve( i ); + if ( aCurve && aCurve->IsValid() ) { + UpdatePlot2d(myView,myDisplaing,aCurve); } } myView->Repaint(); } - } - } - void XYPlot_i::Erase(PrsObject_ptr thePrsObj) { - if(MYDEBUG) MESSAGE("XYPlot_i::Erase"); - Mutex mt(myMutex,qApp,MYDELAY); - CORBA::Object_ptr anObj = thePrsObj; - // is it Curve ? - if(Curve_i* aCurve = dynamic_cast(VISU::GetServant(anObj).in())) { - UpdatePlot2d(myView,eErase,aCurve); - } - // is it Container ? - if(Container_i* aContainer = dynamic_cast(VISU::GetServant(anObj).in())) { - int nbCurves = aContainer->GetNbCurves(); - for ( int i = 1; i <= nbCurves; i++ ) { - VISU::Curve_i* aCurve = aContainer->GetCurve( i ); - if ( aCurve && aCurve->IsValid() ) { - UpdatePlot2d(myView,eErase,aCurve); - } - } - myView->Repaint(); - } - // is it Table ? - if(Table_i* aTable = dynamic_cast(VISU::GetServant(anObj).in())) { - SALOMEDS::SObject_var TableSO = myStudy->getStudyDocument()->FindObjectID( aTable->GetEntry() ); - if ( !TableSO->_is_nil() ) { - SALOMEDS::ChildIterator_var Iter = myStudy->getStudyDocument()->NewChildIterator( TableSO ); + // is it Table ? + if(Table_i* aTable = dynamic_cast(VISU::GetServant(myPrsObj).in())) { + SALOMEDS::Study_var aStudy = myStudy->getStudyDocument(); + SALOMEDS::SObject_var TableSO = aStudy->FindObjectID( aTable->GetEntry() ); + if ( !TableSO->_is_nil() ) { + SALOMEDS::ChildIterator_var Iter = aStudy->NewChildIterator( TableSO ); for ( ; Iter->More(); Iter->Next() ) { - CORBA::Object_var childObject = VISU::SObjectToObject( Iter->Value() ); - if( !CORBA::is_nil( childObject ) ) { - CORBA::Object_ptr aCurve = VISU::Curve::_narrow( childObject ); - if( !CORBA::is_nil( aCurve ) ) - UpdatePlot2d(myView,eErase,dynamic_cast( VISU::GetServant(aCurve).in())); + CORBA::Object_var childObject = VISU::SObjectToObject( Iter->Value() ); + if( !CORBA::is_nil( childObject ) ) { + CORBA::Object_ptr aCurve = VISU::Curve::_narrow( childObject ); + if( !CORBA::is_nil( aCurve ) ) + UpdatePlot2d(myView,myDisplaing,dynamic_cast( VISU::GetServant(aCurve).in())); + } } + myView->Repaint(); } - myView->Repaint(); } + return true; } + }; + + + void XYPlot_i::Display(PrsObject_ptr thePrsObj) { + ProcessVoidEvent(new TXYPlotViewEvent(myStudy,myView,thePrsObj,eDisplay)); } - void XYPlot_i::EraseAll() { - if(MYDEBUG) MESSAGE("XYPlot_i::EraseAll"); - Mutex mt(myMutex,qApp,MYDELAY); - myView->EraseAll(); + + + void XYPlot_i::Erase(PrsObject_ptr thePrsObj) { + ProcessVoidEvent(new TXYPlotViewEvent(myStudy,myView,thePrsObj,eErase)); } + + void XYPlot_i::DisplayOnly(PrsObject_ptr thePrsObj) { - if(MYDEBUG) MESSAGE("XYPlot_i::DisplayOnly"); - Mutex mt(myMutex,qApp,MYDELAY); - CORBA::Object_ptr anObj = thePrsObj; - // is it Curve ? - if(Curve_i* aCurve = dynamic_cast(VISU::GetServant(anObj).in())) { - UpdatePlot2d(myView,eDisplayOnly,aCurve); - } - // is it Container ? - if(Container_i* aContainer = dynamic_cast(VISU::GetServant(anObj).in())) { - int nbCurves = aContainer->GetNbCurves(); - for ( int i = 1; i <= nbCurves; i++ ) { - VISU::Curve_i* aCurve = aContainer->GetCurve( i ); - if ( aCurve && aCurve->IsValid() ) { - UpdatePlot2d(myView,eDisplayOnly,aCurve); - } - } - myView->Repaint(); - } - // is it Table ? - if(Table_i* aTable = dynamic_cast(VISU::GetServant(anObj).in())) { - SALOMEDS::SObject_var TableSO = myStudy->getStudyDocument()->FindObjectID( aTable->GetEntry() ); - if ( !TableSO->_is_nil() ) { - SALOMEDS::ChildIterator_var Iter = myStudy->getStudyDocument()->NewChildIterator( TableSO ); - for ( ; Iter->More(); Iter->Next() ) { - CORBA::Object_var childObject = VISU::SObjectToObject( Iter->Value() ); - if( !CORBA::is_nil( childObject ) ) { - CORBA::Object_ptr aCurve = VISU::Curve::_narrow( childObject ); - if( !CORBA::is_nil( aCurve ) ) - UpdatePlot2d(myView,eDisplayOnly,dynamic_cast( VISU::GetServant(aCurve).in())); - } - } - myView->Repaint(); - } - } + ProcessVoidEvent(new TXYPlotViewEvent(myStudy,myView,thePrsObj,eDisplayOnly)); + } + + + void XYPlot_i::EraseAll() { + ProcessVoidEvent(new TVoidMemFunEvent(myView,&Plot2d_ViewFrame::EraseAll)); } + + void XYPlot_i::FitAll() { - if(MYDEBUG) MESSAGE("XYPlot_i::FitAll"); - Mutex mt(myMutex,qApp,MYDELAY); - myView->fitAll(); + ProcessVoidEvent(new TVoidMemFunEvent(myView,&Plot2d_ViewFrame::fitAll)); } + + CORBA::Boolean XYPlot_i::SavePicture(const char* theFileName) { - if(MYDEBUG) MESSAGE("XYPlot_i::SavePicture"); - Mutex mt(myMutex,qApp,MYDELAY); - if (!myView->getViewWidget()) - return false; - - QApplication::setOverrideCursor( Qt::waitCursor ); - QPixmap px = QPixmap::grabWindow(myView->getViewWidget()->winId()); - QApplication::restoreOverrideCursor(); - - if (!QString(theFileName).isNull()) { - QApplication::setOverrideCursor( Qt::waitCursor ); - QString fmt = QAD_Tools::getFileExtensionFromPath(theFileName).upper(); - if (fmt.isEmpty()) - fmt = QString("BMP"); // default format - if (fmt == "JPG") - fmt = "JPEG"; - bool bOk = px.save(theFileName, fmt.latin1()); - QApplication::restoreOverrideCursor(); - return bOk; - } - return false; + TSavePictureEvent* ve = new TSavePictureEvent(myView->getViewWidget(),theFileName); + ve->process(); + TSavePictureEvent::TResult aResult = ve->myResult; + ve->release(); + return aResult; } + //=========================================================================== TableView_i::TableView_i(SALOMEDS::Study_ptr theStudy) : View_i(theStudy) {} - Storable* TableView_i::Create(VISU::Table_var theTable){ + Storable* TableView_i::Create(VISU::Table_ptr theTable){ if(MYDEBUG) MESSAGE("TableView_i::Create - "<<(!theTable->_is_nil())); - Mutex mt(myMutex,qApp,MYDELAY); if(!theTable->_is_nil()){ - VISU::Table_i* table = dynamic_cast(VISU::GetServant(theTable.in()).in()); + VISU::Table_i* table = dynamic_cast(VISU::GetServant(theTable).in()); if(MYDEBUG) MESSAGE("TableView_i::Create - dynamic_cast = "<getStudyDocument()->FindObjectID(table->GetObjectEntry()); @@ -718,36 +775,36 @@ namespace VISU{ SALOMEGUI_TableDlg::ttAuto, Qt::Vertical); myView->show(); - myName = (myView->caption()).latin1(); return this; } } } return NULL; } + + + TableView_i::~TableView_i() { + if(MYDEBUG) MESSAGE("TableView_i::~TableView_i"); + delete myView; + } + + void TableView_i::SetTitle(const char* theTitle){ - if(MYDEBUG) MESSAGE("TableView_i::SetTitle"); - Mutex mt(myMutex,qApp,MYDELAY); - myName = theTitle; - myView->setCaption(myName.c_str()); + ProcessVoidEvent(new TVoidMemFun1ArgEvent + (myView,&SALOMEGUI_TableDlg::setCaption,QString(theTitle))); } + + char* TableView_i::GetTitle() { - if(MYDEBUG) MESSAGE("TableView_i::GetTitle"); - Mutex mt(myMutex,qApp); - myName = (myView->caption()).latin1(); - return CORBA::string_dup(myName.c_str()); + return CORBA::string_dup(myView->caption().latin1()); } + + void TableView_i::Close(){ - if(MYDEBUG) MESSAGE("TableView_i::Close"); - Mutex mt(myMutex,qApp,MYDELAY); myView->close(); } - TableView_i::~TableView_i() { - if(MYDEBUG) MESSAGE("TableView_i::~TableView_i"); - Mutex mt(myMutex,qApp,MYDELAY); - Close(); - delete myView; - } + + //=========================================================================== int View3D_i::myNbViewParams = 0; const string View3D_i::myComment = "VIEW3D"; @@ -766,131 +823,86 @@ namespace VISU{ myStudyFrame = myStudy->newWindow3d("",VIEW_VTK); else myStudyFrame = myStudy->getActiveStudyFrame(); + return this; + } - //GetViewFrame(myStudyFrame)->GetScale(myScaleFactor); - - return this; //Build(false); - } - -// Storable* View3D_i::Build(int theRestoring){ -// if(MYDEBUG) MESSAGE("View3D_i::Build"); -// if(theRestoring){ -// myStudyFrame->setTitle(myName.c_str()); -// SetBackground(myColor); -// SetPointOfView(myPosition); -// SetViewUp(myViewUp); -// SetFocalPoint(myFocalPnt); -// SetParallelScale(myParallelScale); -// ScaleView(VISU::View3D::XAxis,myScaleFactor[0]); -// ScaleView(VISU::View3D::YAxis,myScaleFactor[1]); -// ScaleView(VISU::View3D::ZAxis,myScaleFactor[2]); -// RepaintView(myStudyFrame); -// }else{ -// Update(); - -// SALOMEDS::SComponent_var aSComponent = FindOrCreateVisuComponent(myStudyDocument); -// CORBA::String_var aSComponentEntry = aSComponent->GetID(), anIOR(GetID()); -// string anEntry = CreateAttributes(myStudyDocument,aSComponentEntry,"",anIOR,myName.c_str(),"",GetComment()); - -// } -// return this; -// } void View3D_i::Update(){ - if(MYDEBUG) MESSAGE("View3D_i::Update"); - Mutex mt(myMutex,qApp,MYDELAY); - myName = (const char*)myStudyFrame->title(); -// myColor = GetBackground(); -// GetCamera(myStudyFrame)->GetPosition(myPosition); -// GetCamera(myStudyFrame)->GetViewUp(myViewUp); -// GetCamera(myStudyFrame)->GetFocalPoint(myFocalPnt); -// myParallelScale = GetCamera(myStudyFrame)->GetParallelScale(); - //RepaintView(myStudyFrame); - - //GetViewFrame(myStudyFrame)->GetScale(myScaleFactor); - - VTKViewer_ViewFrame* vf = GetViewFrame(myStudyFrame); - vtkRenderer* Renderer = vf->getRenderer(); - vtkActorCollection* theActors = Renderer->GetActors(); - theActors->InitTraversal(); - vtkActor *actor; - while(actor = theActors->GetNextActor()){ - if(VISU_Actor* anActor = dynamic_cast(actor)){ - VISU::Prs3d_i* aPrs3d = anActor->GetPrs3d(); - if(anActor->GetVisibility() && aPrs3d){ - aPrs3d->Update(); - aPrs3d->UpdateActor(anActor); + class TEvent: public SALOME_Event{ + QAD_StudyFrame* myStudyFrame; + public: + TEvent(QAD_StudyFrame* theStudyFrame): + myStudyFrame(theStudyFrame) + {} + virtual bool Execute(){ + VTKViewer_ViewFrame* vf = GetViewFrame(myStudyFrame); + vtkRenderer* Renderer = vf->getRenderer(); + vtkActorCollection* theActors = Renderer->GetActors(); + theActors->InitTraversal(); + vtkActor *actor; + while(actor = theActors->GetNextActor()){ + if(VISU_Actor* anActor = dynamic_cast(actor)){ + VISU::Prs3d_i* aPrs3d = anActor->GetPrs3d(); + if(anActor->GetVisibility() && aPrs3d){ + aPrs3d->Update(); + aPrs3d->UpdateActor(anActor); + } + } } + return true; } - } + }; + ProcessVoidEvent(new TEvent(myStudyFrame)); } + CORBA::Boolean View3D_i::SavePicture(const char* theFileName) { - if(MYDEBUG) MESSAGE("View3D_i::SavePicture"); - Mutex mt(myMutex,qApp,MYDELAY); - if (!myStudyFrame->getRightFrame()->getViewFrame()->getViewWidget()) - return false; - - QApplication::setOverrideCursor( Qt::waitCursor ); - QPixmap px = QPixmap::grabWindow(myStudyFrame->getRightFrame()->getViewFrame()->getViewWidget()->winId()); - QApplication::restoreOverrideCursor(); - - if (!QString(theFileName).isNull()) { - QApplication::setOverrideCursor( Qt::waitCursor ); - QString fmt = QAD_Tools::getFileExtensionFromPath(theFileName).upper(); - if (fmt.isEmpty()) - fmt = QString("BMP"); // default format - if (fmt == "JPG") - fmt = "JPEG"; - bool bOk = px.save(theFileName, fmt.latin1()); - QApplication::restoreOverrideCursor(); - return bOk; - } - return false; + TSavePictureEvent* ve = new TSavePictureEvent(myStudyFrame->getRightFrame()->getViewFrame()->getViewWidget(),theFileName); + ve->process(); + TSavePictureEvent::TResult aResult = ve->myResult; + ve->release(); + return aResult; } - CORBA::Boolean View3D_i::SaveViewParams(const char* theName){ - if(MYDEBUG) MESSAGE("View3D_i::SaveViewPoint"); - Mutex mt(myMutex,qApp,MYDELAY); + + bool View3D_i::SaveViewParams(QAD_StudyFrame* theStudyFrame, const char* theName){ + QAD_Study* aStudy = theStudyFrame->getStudy(); + SALOMEDS::Study_var aStudyDoc = aStudy->getStudyDocument(); if ( theName ) { SALOMEDS::Study::ListOfSObject_var aList = - myStudy->getStudyDocument()->FindObjectByName(theName,"VISU"); + aStudyDoc->FindObjectByName(theName,"VISU"); SALOMEDS::GenericAttribute_var anAttr; int iEnd = aList->length(); for(int i = 0; i < iEnd; i++){ SALOMEDS::SObject_var anObj = aList[i]; CORBA::String_var aString = anObj->GetID(); string anEntry(aString); - if(MYDEBUG) MESSAGE("View3D_i::SaveViewPoint - anEntry = "<Value(); string aComm(aString); if(MYDEBUG) MESSAGE("View3D_i::SaveViewPoint - aComm = "<= 0){ - aCmnt->SetValue(ToString().c_str()); - return 1; + aCmnt->SetValue(ToString(theStudyFrame).c_str()); + return true; } } } } - QString newName; - if ( theName ) - newName = QString( theName ); - else - newName = QString( GenerateViewParamsName() ); - SALOMEDS::SComponent_var aSComponent = - FindOrCreateVisuComponent(myStudy->getStudyDocument()); - CORBA::String_var aSComponentEntry = aSComponent->GetID(), anIOR(GetID()); - string anEntry = CreateAttributes(myStudy->getStudyDocument(),aSComponentEntry,"","",newName.latin1(),"",ToString().c_str()); - return 1; + SALOMEDS::SComponent_var aSComponent = FindOrCreateVisuComponent(aStudyDoc); + CORBA::String_var aSComponentEntry = aSComponent->GetID(); + string anEntry = CreateAttributes(aStudyDoc,aSComponentEntry.in(),"","",theName,"",ToString(theStudyFrame).c_str()); + return true; + } + CORBA::Boolean View3D_i::SaveViewParams(const char* theName){ + return SaveViewParams(myStudyFrame,theName); } - CORBA::Boolean View3D_i::RestoreViewParams(const char* theName){ - if(MYDEBUG) MESSAGE("View3D_i::RestoreViewPoint - "<getStudyDocument()->FindObjectByName(theName,"VISU"); + theStudyFrame->getStudy()->getStudyDocument()->FindObjectByName(theName,"VISU"); SALOMEDS::GenericAttribute_var anAttr; int iEnd = aList->length(); if(MYDEBUG) MESSAGE("View3D_i::RestoreViewPoint - iEnd = "<= 0 ) { if(MYDEBUG) MESSAGE("View3D_i::RestoreViewPoint - aComm = "<process(); + TEvent::TResult aResult = ve->myResult; + ve->release(); + return aResult; + } + + + void View3D_i::Restore(QAD_StudyFrame* theStudyFrame, const Storable::TRestoringMap& theMap) throw(std::logic_error&){ SALOMEDS::Color aColor; aColor.R = VISU::Storable::FindValue(theMap,"myColor.R").toDouble(); aColor.G = VISU::Storable::FindValue(theMap,"myColor.G").toDouble(); @@ -945,112 +981,100 @@ namespace VISU{ aScaleFactor[1] = VISU::Storable::FindValue(theMap,"myScaleFactor[1]").toDouble(); aScaleFactor[2] = VISU::Storable::FindValue(theMap,"myScaleFactor[2]").toDouble(); - //myStudyFrame->setTitle(myName.c_str()); - SetBackground(aColor); - SetPointOfView(aPosition); - SetViewUp(aViewUp); - SetFocalPoint(aFocalPnt); - SetParallelScale(aParallelScale); - ScaleView(VISU::View3D::XAxis,aScaleFactor[0]); - ScaleView(VISU::View3D::YAxis,aScaleFactor[1]); - ScaleView(VISU::View3D::ZAxis,aScaleFactor[2]); - RepaintView(myStudyFrame); + SetBackground(theStudyFrame,aColor); + SetPointOfView(theStudyFrame,aPosition); + SetViewUp(theStudyFrame,aViewUp); + SetFocalPoint(theStudyFrame,aFocalPnt); + SetParallelScale(theStudyFrame,aParallelScale); + ScaleView(theStudyFrame,VISU::View3D::XAxis,aScaleFactor[0]); + ScaleView(theStudyFrame,VISU::View3D::YAxis,aScaleFactor[1]); + ScaleView(theStudyFrame,VISU::View3D::ZAxis,aScaleFactor[2]); + } + Storable* View3D_i::Restore(const Storable::TRestoringMap& theMap) throw(std::logic_error&) { + Restore(myStudyFrame,theMap); return this; } - void View3D_i::ToStream(std::ostringstream& theStr) { + string View3D_i::ToString(QAD_StudyFrame* theStudyFrame){ + ostringstream strOut; + Storable::DataToStream( strOut, "myComment", myComment.c_str() ); + ToStream(theStudyFrame,strOut); + strOut<GetBackground(backint); + GetRenderer(theStudyFrame)->GetBackground(backint); Storable::DataToStream(theStr,"myColor.R",backint[0]); Storable::DataToStream(theStr,"myColor.G",backint[1]); Storable::DataToStream(theStr,"myColor.B",backint[2]); double aPosition[3]; - GetPointOfView(myStudyFrame,aPosition); + GetPointOfView(theStudyFrame,aPosition); Storable::DataToStream(theStr,"myPosition[0]",aPosition[0]); Storable::DataToStream(theStr,"myPosition[1]",aPosition[1]); Storable::DataToStream(theStr,"myPosition[2]",aPosition[2]); double aFocalPnt[3]; - GetFocalPoint(myStudyFrame,aFocalPnt); + GetFocalPoint(theStudyFrame,aFocalPnt); Storable::DataToStream(theStr,"myFocalPnt[0]",aFocalPnt[0]); Storable::DataToStream(theStr,"myFocalPnt[1]",aFocalPnt[1]); Storable::DataToStream(theStr,"myFocalPnt[2]",aFocalPnt[2]); double aViewUp[3]; - GetCamera(myStudyFrame)->GetViewUp(aViewUp); + GetCamera(theStudyFrame)->GetViewUp(aViewUp); Storable::DataToStream(theStr,"myViewUp[0]",aViewUp[0]); Storable::DataToStream(theStr,"myViewUp[1]",aViewUp[1]); Storable::DataToStream(theStr,"myViewUp[2]",aViewUp[2]); - Storable::DataToStream(theStr,"myParallelScale",GetParallelScale(myStudyFrame)); + Storable::DataToStream(theStr,"myParallelScale",GetParallelScale(theStudyFrame)); double aScaleFactor[3]; - GetViewFrame(myStudyFrame)->GetScale(aScaleFactor); + GetViewFrame(theStudyFrame)->GetScale(aScaleFactor); Storable::DataToStream(theStr,"myScaleFactor[0]",aScaleFactor[0]); Storable::DataToStream(theStr,"myScaleFactor[1]",aScaleFactor[1]); Storable::DataToStream(theStr,"myScaleFactor[2]",aScaleFactor[2]); } + void View3D_i::ToStream(std::ostringstream& theStr) { + ToStream(myStudyFrame,theStr); + } -// Storable* VISU::View3DRestore(SALOMEDS::SComponent_var& theSComponent, SALOMEDS::Study_var& theStudy, -// const char* thePrefix, const Storable::TRestoringMap& theMap) -// { -// try{ -// View3D_i* pView3D = new View3D_i(theStudy); -// return pView3D->Restore(theMap); -// }catch(std::logic_error& exc){ -// MESSAGE("Follow exception was accured :\n"<close(); } View3D_i::~View3D_i() { if(MYDEBUG) MESSAGE("View3D_i::~View3D_i"); - Mutex mt(myMutex,qApp,MYDELAY); - myStudyFrame->close(); } //-------------------- View interface -------------------- void View3D_i::SetTitle(const char* theTitle){ - if(MYDEBUG) MESSAGE("View3D_i::SetTitle"); - Mutex mt(myMutex,qApp,MYDELAY); - myName = theTitle; - myStudyFrame->setTitle(myName.c_str()); + ProcessVoidEvent(new TVoidMemFun1ArgEvent + (myStudyFrame,&QAD_StudyFrame::setTitle,QString(theTitle))); } char* View3D_i::GetTitle() { - if(MYDEBUG) MESSAGE("View3D_i::GetTitle"); - Mutex mt(myMutex,qApp,MYDELAY); - myName = (const char*)myStudyFrame->title(); - return CORBA::string_dup(myName.c_str()); + return CORBA::string_dup(myStudyFrame->title().latin1()); } + void View3D_i::SetBackground(QAD_StudyFrame* theStudyFrame, const SALOMEDS::Color& theColor) { int aColor[3]; - aColor[0] = (int)(255.0*theColor.R); - aColor[1] = (int)(255.0*theColor.G); - aColor[2] = (int)(255.0*theColor.B); + aColor[0] = int(255.0*theColor.R); + aColor[1] = int(255.0*theColor.G); + aColor[2] = int(255.0*theColor.B); QColor aNewColor(aColor[0],aColor[1],aColor[2]); GetViewFrame(theStudyFrame)->setBackgroundColor(aNewColor); } void View3D_i::SetBackground(const SALOMEDS::Color& theColor) { - if(MYDEBUG) MESSAGE("View3D_i::SetBackground"); - Mutex mt(myMutex,qApp,MYDELAY); - //myColor.R = theColor.R; myColor.G = theColor.G; myColor.B = theColor.B; - SetBackground(myStudyFrame,theColor); + ProcessVoidEvent(new TSetBackgroundEvent(GetViewFrame(myStudyFrame),theColor)); } + SALOMEDS::Color View3D_i::GetBackground(QAD_StudyFrame* theStudyFrame) { SALOMEDS::Color aColor; float backint[3]; @@ -1059,160 +1083,222 @@ namespace VISU{ return aColor; } SALOMEDS::Color View3D_i::GetBackground() { - if(MYDEBUG) MESSAGE("View3D_i::GetBackground"); - Mutex mt(myMutex,qApp,MYDELAY); - //myColor = GetBackground(myStudyFrame); - return GetBackground(myStudyFrame); //myColor; + return GetBackground(myStudyFrame); } + void View3D_i::Minimize() { - if(MYDEBUG) MESSAGE("View3D_i::Minimize"); - Mutex mt(myMutex,qApp,MYDELAY); - myStudyFrame->showMinimized(); + ProcessVoidEvent(new TFrameActionEvent(myStudyFrame,&QAD_StudyFrame::showMinimized)); } void View3D_i::Restore() { - if(MYDEBUG) MESSAGE("View3D_i::Restore"); - Mutex mt(myMutex,qApp,MYDELAY); - myStudyFrame->showNormal(); + ProcessVoidEvent(new TFrameActionEvent(myStudyFrame, &QAD_StudyFrame::showNormal)); } void View3D_i::Maximize() { - if(MYDEBUG) MESSAGE("View3D_i::Maximize"); - Mutex mt(myMutex,qApp,MYDELAY); - myStudyFrame->showMaximized(); + ProcessVoidEvent(new TFrameActionEvent(myStudyFrame, &QAD_StudyFrame::showMaximized)); } + + //=========================================================================== + class TUpdateViewerEvent: public SALOME_Event{ + QAD_StudyFrame* myStudyFrame; + Prs3d_i* myPrs3d; + int myDisplaing; + public: + TUpdateViewerEvent(QAD_StudyFrame* theStudyFrame, + Prs3d_i* thePrs3d, + int theDisplaing): + myStudyFrame(theStudyFrame), + myPrs3d(thePrs3d), + myDisplaing(theDisplaing) + {} + virtual bool Execute(){ + UpdateViewer(myStudyFrame,myDisplaing,myPrs3d); + return true; + } + }; + void View3D_i::EraseAll() { if(MYDEBUG) MESSAGE("View3D_i::EraseAll"); - Mutex mt(myMutex,qApp,MYDELAY); - UpdateViewer(myStudyFrame,eEraseAll); + ProcessVoidEvent(new TUpdateViewerEvent(myStudyFrame,NULL,eEraseAll)); } + void View3D_i::DisplayAll() { if(MYDEBUG) MESSAGE("View3D_i::DisplayAll"); - Mutex mt(myMutex,qApp,MYDELAY); - UpdateViewer(myStudyFrame,eDisplayAll); + ProcessVoidEvent(new TUpdateViewerEvent(myStudyFrame,NULL,eDisplayAll)); } + void View3D_i::Erase(PrsObject_ptr thePrsObj) { if(MYDEBUG) MESSAGE("View3D_i::Erase"); - Mutex mt(myMutex,qApp,MYDELAY); CORBA::Object_ptr anObj = thePrsObj; - if(Prs3d_i* aPrs = dynamic_cast(VISU::GetServant(anObj).in())) - UpdateViewer(myStudyFrame,eErase,aPrs); + if(Prs3d_i* aPrs = dynamic_cast(VISU::GetServant(anObj).in())){ + ProcessVoidEvent(new TUpdateViewerEvent(myStudyFrame,aPrs,eErase)); + } } + void View3D_i::Display(PrsObject_ptr thePrsObj) { if(MYDEBUG) MESSAGE("View3D_i::Display"); - Mutex mt(myMutex,qApp,MYDELAY); CORBA::Object_ptr anObj = thePrsObj; - if(Prs3d_i* aPrs = dynamic_cast(VISU::GetServant(anObj).in())) - UpdateViewer(myStudyFrame,eDisplay,aPrs); + if(Prs3d_i* aPrs = dynamic_cast(VISU::GetServant(anObj).in())){ + ProcessVoidEvent(new TUpdateViewerEvent(myStudyFrame,aPrs,eDisplay)); + } } + void View3D_i::DisplayOnly(PrsObject_ptr thePrsObj) { if(MYDEBUG) MESSAGE("View3D_i::DisplayOnly"); - Mutex mt(myMutex,qApp,MYDELAY); CORBA::Object_ptr anObj = thePrsObj; - if(Prs3d_i* aPrs = dynamic_cast(VISU::GetServant(anObj).in())) - UpdateViewer(myStudyFrame,eDisplayOnly,aPrs); + if(Prs3d_i* aPrs = dynamic_cast(VISU::GetServant(anObj).in())){ + ProcessVoidEvent(new TUpdateViewerEvent(myStudyFrame,aPrs,eDisplayOnly)); + } } //-------------------- View3D interface -------------------- void View3D_i::FitAll() { - if(MYDEBUG) MESSAGE("View3D_i::FitAll"); - Mutex mt(myMutex,qApp,MYDELAY); - GetViewFrame(myStudyFrame)->onViewFitAll(); + ProcessVoidEvent(new TVoidMemFunEvent(GetViewFrame(myStudyFrame),&VTKViewer_ViewFrame::onViewFitAll)); Update(); } + + void View3D_i::SetView(VISU::View3D::ViewType theType) { - if(MYDEBUG) MESSAGE("View3D_i::SetView"); - Mutex mt(myMutex,qApp,MYDELAY); switch(theType){ - case VISU::View3D::FRONT : GetViewFrame(myStudyFrame)->onViewFront(); break; - case VISU::View3D::BACK : GetViewFrame(myStudyFrame)->onViewBack(); break; - case VISU::View3D::LEFT : GetViewFrame(myStudyFrame)->onViewLeft(); break; - case VISU::View3D::RIGHT : GetViewFrame(myStudyFrame)->onViewRight(); break; - case VISU::View3D::TOP : GetViewFrame(myStudyFrame)->onViewTop(); break; - case VISU::View3D::BOTTOM : GetViewFrame(myStudyFrame)->onViewBottom(); break; + case VISU::View3D::FRONT : + ProcessVoidEvent(new TVoidMemFunEvent(GetViewFrame(myStudyFrame),&VTKViewer_ViewFrame::onViewFront)); + break; + case VISU::View3D::BACK : + ProcessVoidEvent(new TVoidMemFunEvent(GetViewFrame(myStudyFrame),&VTKViewer_ViewFrame::onViewBack)); + break; + case VISU::View3D::LEFT : + ProcessVoidEvent(new TVoidMemFunEvent(GetViewFrame(myStudyFrame),&VTKViewer_ViewFrame::onViewLeft)); + break; + case VISU::View3D::RIGHT : + ProcessVoidEvent(new TVoidMemFunEvent(GetViewFrame(myStudyFrame),&VTKViewer_ViewFrame::onViewRight)); + break; + case VISU::View3D::TOP : + ProcessVoidEvent(new TVoidMemFunEvent(GetViewFrame(myStudyFrame),&VTKViewer_ViewFrame::onViewTop)); + break; + case VISU::View3D::BOTTOM : + ProcessVoidEvent(new TVoidMemFunEvent(GetViewFrame(myStudyFrame),&VTKViewer_ViewFrame::onViewBottom)); + break; } Update(); } + + class TSet3DViewParamEvent: public SALOME_Event{ + public: + typedef void (*TFun)(QAD_StudyFrame* theStudyFrame, const CORBA::Double theParam[3]); + TSet3DViewParamEvent(TFun theFun, + QAD_StudyFrame* theStudyFrame, + const CORBA::Double theParam[3]): + myFun(theFun), + myStudyFrame(theStudyFrame), + myParam(theParam) + {} + virtual bool Execute(){ + myFun(myStudyFrame,myParam); + return true; + } + private: + TFun myFun; + QAD_StudyFrame* myStudyFrame; + const CORBA::Double* myParam; + }; + + void View3D_i::SetPointOfView(QAD_StudyFrame* theStudyFrame, const CORBA::Double thePosition[3]) { GetCamera(theStudyFrame)->SetPosition(thePosition); } - void View3D_i::SetPointOfView(const VISU::View3D::XYZ theCoord) { + void View3D_i::SetPointOfView(const VISU::View3D::XYZ thePosition) { if(MYDEBUG) MESSAGE("View3D_i::SetPointOfView"); - Mutex mt(myMutex,qApp,MYDELAY); - //VISU::View3D::XYZ_copy(myPosition,theCoord); - SetPointOfView(myStudyFrame, theCoord); + ProcessVoidEvent(new TSet3DViewParamEvent(&SetPointOfView,myStudyFrame,thePosition)); } + void View3D_i::GetPointOfView(QAD_StudyFrame* theStudyFrame, CORBA::Double thePosition[3]) { GetCamera(theStudyFrame)->GetPosition(thePosition); } VISU::View3D::XYZ_slice* View3D_i::GetPointOfView() { if(MYDEBUG) MESSAGE("View3D_i::GetPointOfView"); - Mutex mt(myMutex,qApp,MYDELAY); CORBA::Double aPosition[3]; GetPointOfView(myStudyFrame,aPosition); return VISU::View3D::XYZ_dup(aPosition); } + void View3D_i::SetViewUp(QAD_StudyFrame* theStudyFrame, const CORBA::Double theViewUp[3]) { GetCamera(theStudyFrame)->SetViewUp(theViewUp); } - void View3D_i::SetViewUp(const VISU::View3D::XYZ theDir) { + void View3D_i::SetViewUp(const VISU::View3D::XYZ theViewUp) { if(MYDEBUG) MESSAGE("View3D_i::SetViewUp"); - Mutex mt(myMutex,qApp,MYDELAY); - //VISU::View3D::XYZ_copy(myViewUp,theDir); - SetViewUp(myStudyFrame, theDir); + ProcessVoidEvent(new TSet3DViewParamEvent(&SetViewUp,myStudyFrame,theViewUp)); } + void View3D_i::GetViewUp(QAD_StudyFrame* theStudyFrame, CORBA::Double theViewUp[3]) { GetCamera(theStudyFrame)->GetViewUp(theViewUp); } VISU::View3D::XYZ_slice* View3D_i::GetViewUp() { if(MYDEBUG) MESSAGE("View3D_i::GetViewUp"); - Mutex mt(myMutex,qApp,MYDELAY); CORBA::Double aViewUp[3]; GetCamera(myStudyFrame)->GetViewUp(aViewUp); return VISU::View3D::XYZ_dup(aViewUp); } + void View3D_i::SetFocalPoint(QAD_StudyFrame* theStudyFrame, const CORBA::Double theFocalPnt[3]) { GetCamera(theStudyFrame)->SetFocalPoint(theFocalPnt); } void View3D_i::SetFocalPoint(const VISU::View3D::XYZ theCoord) { if(MYDEBUG) MESSAGE("View3D_i::SetFocalPoint"); - Mutex mt(myMutex,qApp,MYDELAY); - //VISU::View3D::XYZ_copy(myFocalPnt,theCoord); - SetFocalPoint(myStudyFrame,theCoord); + ProcessVoidEvent(new TSet3DViewParamEvent(&SetFocalPoint,myStudyFrame,theCoord)); } + void View3D_i::GetFocalPoint(QAD_StudyFrame* theStudyFrame, CORBA::Double theFocalPnt[3]) { GetCamera(theStudyFrame)->GetFocalPoint(theFocalPnt); } VISU::View3D::XYZ_slice* View3D_i::GetFocalPoint() { if(MYDEBUG) MESSAGE("View3D_i::GetFocalPoint"); - Mutex mt(myMutex,qApp,MYDELAY); CORBA::Double aFocalPnt[3]; GetFocalPoint(myStudyFrame,aFocalPnt); return VISU::View3D::XYZ_dup(aFocalPnt); } + + class TSetViewParamEvent: public SALOME_Event{ + public: + typedef void (*TFun)(QAD_StudyFrame* theStudyFrame, CORBA::Double theParam); + TSetViewParamEvent(TFun theFun, + QAD_StudyFrame* theStudyFrame, + CORBA::Double theParam): + myFun(theFun), + myStudyFrame(theStudyFrame), + myParam(theParam) + {} + virtual bool Execute(){ + myFun(myStudyFrame,myParam); + return true; + } + private: + TFun myFun; + QAD_StudyFrame* myStudyFrame; + CORBA::Double myParam; + }; + + void View3D_i::SetParallelScale(QAD_StudyFrame* theStudyFrame, CORBA::Double theScale) { GetCamera(theStudyFrame)->SetParallelScale(theScale); } void View3D_i::SetParallelScale(CORBA::Double theScale) { if(MYDEBUG) MESSAGE("View3D_i::SetParallelScale"); - Mutex mt(myMutex,qApp,MYDELAY); - //myParallelScale = theScale; - SetParallelScale(myStudyFrame, theScale); + ProcessVoidEvent(new TSetViewParamEvent(&SetParallelScale,myStudyFrame,theScale)); } + CORBA::Double View3D_i::GetParallelScale(QAD_StudyFrame* theStudyFrame) { return GetCamera(theStudyFrame)->GetParallelScale(); } CORBA::Double View3D_i::GetParallelScale() { if(MYDEBUG) MESSAGE("View3D_i::GetParallelScale"); - Mutex mt(myMutex,qApp); return GetParallelScale(myStudyFrame); } @@ -1223,18 +1309,22 @@ namespace VISU{ aScaleFactor[theAxis] = theParam; aViewFrame->SetScale(aScaleFactor); } + + void SetScaleView(QAD_StudyFrame* theStudyFrame, const CORBA::Double theScale[3]){ + double aScale[3] = {theScale[0], theScale[1], theScale[2]}; + GetViewFrame(theStudyFrame)->SetScale(aScale); + } void View3D_i::ScaleView(VISU::View3D::Axis theAxis, CORBA::Double theParam) { if(MYDEBUG) MESSAGE("View3D_i::ScaleView"); - Mutex mt(myMutex,qApp); - //myScaleFactor[theAxis] = theParam; - ScaleView(myStudyFrame,theAxis,theParam); + double aScale[3]; + GetViewFrame(myStudyFrame)->GetScale(aScale); + aScale[theAxis] = theParam; + ProcessVoidEvent(new TSet3DViewParamEvent(&SetScaleView,myStudyFrame,aScale)); } void View3D_i::RemoveScale() { if(MYDEBUG) MESSAGE("View3D_i::RemoveScale"); - Mutex mt(myMutex,qApp); - double aScaleFactor[]={1,1,1}; - //myScaleFactor[0] = myScaleFactor[0] = myScaleFactor[0] = 1.0; - GetViewFrame(myStudyFrame)->SetScale(aScaleFactor); + double aScale[3] = {1.0, 1.0, 1.0}; + ProcessVoidEvent(new TSet3DViewParamEvent(&SetScaleView,myStudyFrame,aScale)); } //=========================================================================== } diff --git a/src/VISU_I/VISU_ViewManager_i.hh b/src/VISU_I/VISU_ViewManager_i.hh index c5189783..ca653ce0 100644 --- a/src/VISU_I/VISU_ViewManager_i.hh +++ b/src/VISU_I/VISU_ViewManager_i.hh @@ -51,12 +51,11 @@ namespace VISU{ virtual ~ViewManager_i() {}; virtual VISU::VISUType GetType() { return VISU::TVIEWMANAGER;}; - virtual View3D_ptr Create3DView(); - virtual View_ptr GetCurrentView(); + virtual View3D_ptr Create3DView(); + virtual View_ptr GetCurrentView(); virtual TableView_ptr CreateTableView(VISU::Table_ptr theTable); - virtual XYPlot_ptr CreateXYPlot(); - virtual void Destroy(View_ptr theView); - virtual void ProcessEvents(); + virtual XYPlot_ptr CreateXYPlot(); + virtual void Destroy(View_ptr theView); protected: SALOMEDS::Study_var myStudyDocument; @@ -68,7 +67,6 @@ namespace VISU{ { protected: QAD_Study* myStudy; - string myName; public: View_i(SALOMEDS::Study_ptr theStudy); virtual ~View_i(); @@ -90,7 +88,7 @@ namespace VISU{ virtual void ToStream(std::ostringstream& theStr); virtual const char* GetComment() const; public: - virtual const char* View_i::GetEntry(); + virtual std::string View_i::GetEntry(); }; //=========================================================================== @@ -98,6 +96,7 @@ namespace VISU{ public virtual View_i { public: + typedef VISU::XYPlot TInterface; XYPlot_i(SALOMEDS::Study_ptr theStudy); virtual ~XYPlot_i(); virtual VISU::VISUType GetType() { return VISU::TXYPLOT;}; @@ -160,6 +159,7 @@ namespace VISU{ public virtual View_i { public: + typedef VISU::TableView TInterface; TableView_i(SALOMEDS::Study_ptr theStudy); virtual ~TableView_i(); virtual VISU::VISUType GetType() { return VISU::TTABLEVIEW;}; @@ -171,7 +171,7 @@ namespace VISU{ protected: SALOMEGUI_TableDlg* myView; public: - virtual Storable* Create(VISU::Table_var theTable); + virtual Storable* Create(VISU::Table_ptr theTable); }; //=========================================================================== @@ -179,6 +179,7 @@ namespace VISU{ public virtual View_i { public: + typedef VISU::View3D TInterface; View3D_i(SALOMEDS::Study_ptr theStudy); virtual ~View3D_i(); virtual VISU::VISUType GetType() { return VISU::TVIEW3D;}; @@ -237,29 +238,30 @@ namespace VISU{ virtual void ScaleView(VISU::View3D::Axis theAxis, CORBA::Double theParam); virtual void RemoveScale(); - virtual QString GenerateViewParamsName(); + static std::string ToString(QAD_StudyFrame* theStudyFrame); + static void ToStream(QAD_StudyFrame* theStudyFrame, std::ostringstream& theStr); + static bool SaveViewParams(QAD_StudyFrame* theStudyFrame, const char* theName); virtual CORBA::Boolean SaveViewParams(const char* theName); + static QString GenerateViewParamsName(); + + static void Restore(QAD_StudyFrame* theStudyFrame, const Storable::TRestoringMap& theMap) throw(std::logic_error&); + static bool RestoreViewParams(QAD_StudyFrame* theStudyFrame, const char* theName); virtual CORBA::Boolean RestoreViewParams(const char* theName); virtual void Close(); + protected: QAD_StudyFrame* myStudyFrame; - //SALOMEDS::Color myColor; - //CORBA::Double myPosition[3], myFocalPnt[3], myViewUp[3], myParallelScale, myScaleFactor[3]; - - //Storable* Build(int theRestoring); static int myNbViewParams; public: virtual Storable* Create(int theNew); - virtual Storable* Restore(const Storable::TRestoringMap& theMap) ; + virtual Storable* Restore(const Storable::TRestoringMap& theMap) throw(std::logic_error&); virtual void ToStream(std::ostringstream& theStr); virtual const char* GetComment() const; static const string myComment; QAD_StudyFrame* GetStudyFrame() const { return myStudyFrame;} }; - //Storable* View3DRestore(SALOMEDS::SComponent_var& theSComponent, SALOMEDS::Study_var& theStudy, - // const char* thePrefix, const Storable::TRestoringMap& theMap); VTKViewer_ViewFrame* GetViewFrame(QAD_StudyFrame* theStudyFrame); vtkRenderer* GetRenderer(QAD_StudyFrame* theStudyFrame); diff --git a/src/VISU_SWIG/Makefile.in b/src/VISU_SWIG/Makefile.in index ff40e7bc..d4b0ac36 100644 --- a/src/VISU_SWIG/Makefile.in +++ b/src/VISU_SWIG/Makefile.in @@ -44,7 +44,7 @@ SWIG_DEF = libVISU_Swig.i EXPORT_PYSCRIPTS = libVISU_Swig.py batchmode_visu.py batchmode_visu_table.py batchmode_visu_view3d.py \ visu_med.py visu_view3d.py visu.py visu_gui.py visu_prs_example.py\ visu_table.py visu_big_table.py visu_view.py \ - visu_swig_test.py + visu_swig_test.py test_events.py batch_test_events.py EXPORT_SHAREDPYSCRIPTS = VISU_shared_modules.py LIB_CLIENT_IDL = diff --git a/src/VISU_SWIG/batch_test_events.py b/src/VISU_SWIG/batch_test_events.py new file mode 100644 index 00000000..df7f3c3c --- /dev/null +++ b/src/VISU_SWIG/batch_test_events.py @@ -0,0 +1,14 @@ +############################################################### +# +# File : batch_test_events.py +# Description : Test postEvent() functionality for VISU module +# +############################################################### + +import batchmode_visu + +for i in range ( 10 ): + batchmode_visu.myVisu.CreateTestView() + for j in range ( 10 ): + batchmode_visu.myVisu.ShowTestObject(); + diff --git a/src/VISU_SWIG/batchmode_visu_view3d.py b/src/VISU_SWIG/batchmode_visu_view3d.py index 33f8d269..fa2034a7 100644 --- a/src/VISU_SWIG/batchmode_visu_view3d.py +++ b/src/VISU_SWIG/batchmode_visu_view3d.py @@ -8,22 +8,18 @@ # Module : VISU import os -import batchmode_visu +import time import VISU import SALOMEDS +from batchmode_visu import * + +aDelay = 1 #mySession = batchmode_visu.mySession -myVisu = batchmode_visu.myVisu medFile = "fra.med" myFieldName = "VITESSE"; -#medFile = "minimail.dat" -#myFieldName = "Pressures"; - -#medFile = "brideResultats.dat" -#myFieldName = "VM_Elem."; - medFile = os.getenv('KERNEL_ROOT_DIR') + '/examples/' + medFile myResult = myVisu.ImportFile(medFile) @@ -34,52 +30,111 @@ aMesh = myVisu.MeshOnEntity(myResult, aMeshName, anEntity) aTimeStampId = 1 -# aScalarMap = myVisu.ScalarMapOnField(myResult,aMeshName,anEntity,myFieldName,aTimeStampId) -if aScalarMap is not None: - aScalarMap.SetScaling(VISU.LOGARITHMIC) -else: - print "Null scalar map is created" -# aCutPlanes = myVisu.CutPlanesOnField(myResult,aMeshName,anEntity,myFieldName,aTimeStampId) -if aCutPlanes is not None: - aCutPlanes.SetScaling(VISU.LOGARITHMIC) -else: print "Null aCutPlanes is created" -# aIsoSurfaces = myVisu.IsoSurfacesOnField(myResult, aMeshName, anEntity, myFieldName, aTimeStampId) -if aIsoSurfaces is not None: - aIsoSurfaces.SetScaling(VISU.LINEAR) -else: print "Null aIsoSurfaces is created" myViewManager = myVisu.GetViewManager(); -#myView = myViewManager.Create3DView(); -myView = myViewManager.GetCurrentView(); + +#myView = myViewManager.GetCurrentView(); +myView = myViewManager.Create3DView(); +myView.SetTitle("The window will be soon destroyed!") +print "myViewManager.Create3DView()" +time.sleep(aDelay) + +myView.Maximize() +print "myView.Maximize()" +time.sleep(aDelay) + +myView.Restore() +print "myView.Restore()" +time.sleep(aDelay) + +myView.Minimize() +print "myView.Minimize()" +time.sleep(aDelay) + +myViewManager.Destroy(myView) +print "myViewManager.Destroy(myView)" +time.sleep(aDelay) + +myView = myViewManager.Create3DView(); +myView.SetTitle("The window will be set to 'AAA' view params") +print "myViewManager.Create3DView()" +time.sleep(aDelay) + +myView.Display(aScalarMap); +print "myView.Display(aScalarMap)" myView.SetFocalPoint([0,0,0]); +print "myView.SetFocalPoint(...)" +time.sleep(aDelay) myView.SetParallelScale(2); +print "myView.SetParallelScale(...)" +time.sleep(aDelay) + aPoint = myView.GetPointOfView(); aPoint[0] = aPoint[0] + 10; myView.SetPointOfView(aPoint); +print "myView.SetPointOfView(...)" myView.ScaleView(VISU.View3D.YAxis,10.0); myView.ScaleView(VISU.View3D.XAxis,3.0); +print "myView.ScaleView(...)" +time.sleep(aDelay) + aColor = SALOMEDS.Color(0.0,0.3,1.0) myView.SetBackground(aColor); +print "myView.SetBackground(...)" myView.Update(); -myView.Display(aScalarMap); -#myView.Erase(aScalarMap); -#myView.DisplayOnly(aCutPlanes); +print "myView.Update()" +time.sleep(aDelay) + +myView.FitAll(); +print "myView.FitAll()" +time.sleep(aDelay) + +myView.Erase(aScalarMap); +print "myView.Erase(aScalarMap)" +time.sleep(aDelay) + +myView.DisplayOnly(aCutPlanes); +print "myView.DisplayOnly(aCutPlanes)" myView.SaveViewParams('AAA') +print "myView.SaveViewParams('AAA')" +time.sleep(aDelay) + +myView = myViewManager.Create3DView(); +myView.SetTitle("The window will be set to 'BBB' view params") +print "myViewManager.Create3DView()" +time.sleep(aDelay) + +myView.DisplayOnly(aIsoSurfaces); +print "myView.DisplayOnly(aCutPlanes)" +time.sleep(aDelay) +myView.RestoreViewParams('AAA') myView.RemoveScale(); -myView.FitAll(); +print "myView.RemoveScale()" +time.sleep(aDelay) + aColor = SALOMEDS.Color(0.0,0.0,0.0) myView.SetBackground(aColor); +print "myView.SetBackground(...)" myView.SaveViewParams('BBB'); +print "myView.SaveViewParams('BBB')" +time.sleep(aDelay) aColor = SALOMEDS.Color(1.0,1.0,1.0) myView.SetBackground(aColor); +print "myView.SetBackground(...)" +time.sleep(aDelay) + myView.ScaleView(VISU.View3D.ZAxis,0.5); +print "myView.SetBackground(...)" myView.SaveViewParams('CCC'); +print "myView.SaveViewParams('CCC')" +time.sleep(aDelay) -myView.RestoreViewParams('AAA'); +myView.RestoreViewParams('BBB'); +print "myView.RestoreViewParams('BBB')" diff --git a/src/VISU_SWIG/test_events.py b/src/VISU_SWIG/test_events.py new file mode 100755 index 00000000..c553eae5 --- /dev/null +++ b/src/VISU_SWIG/test_events.py @@ -0,0 +1,22 @@ +############################################################### +# +# File : test_events.py +# Description : Test postEvent() functionality for VISU module +# This script can be run from GUI Python console only! +############################################################### + +import salome + +# it's necessary to load VISU engine, this will cause VisuGUI to be loaded +salome.lcc.FindOrLoadComponent("FactoryServer","VISU") + +# this can be done only after VISU engine has been loaded +from libVISU_Swig import * + +visu=VISU_Swig() + +for i in range ( 10 ): + visu.CreateTestView() + for j in range ( 10 ): + visu.ShowTestObject(); + diff --git a/src/VISU_SWIG/visu_view3d.py b/src/VISU_SWIG/visu_view3d.py index cb4fecf1..ea6d8ec2 100644 --- a/src/VISU_SWIG/visu_view3d.py +++ b/src/VISU_SWIG/visu_view3d.py @@ -4,18 +4,18 @@ # # # -# File : visu_view3d.py +# File : batchmode_visu_view3d.py # Module : VISU -import visu_gui import os +import time import VISU import SALOMEDS +from visu_gui import * -from libSALOME_Swig import * -sg = SALOMEGUI_Swig() +aDelay = 1 -myVisu = visu_gui.myVisu +#mySession = batchmode_visu.mySession medFile = "fra.med" myFieldName = "VITESSE"; @@ -23,63 +23,118 @@ myFieldName = "VITESSE"; medFile = os.getenv('KERNEL_ROOT_DIR') + '/examples/' + medFile myResult = myVisu.ImportFile(medFile) + aMeshName ="LE VOLUME" anEntity = VISU.NODE aMesh = myVisu.MeshOnEntity(myResult, aMeshName, anEntity) aTimeStampId = 1 -# aScalarMap = myVisu.ScalarMapOnField(myResult,aMeshName,anEntity,myFieldName,aTimeStampId) -if aScalarMap is not None: - aScalarMap.SetScaling(VISU.LOGARITHMIC) -else: - print "Null scalar map is created" -# aCutPlanes = myVisu.CutPlanesOnField(myResult,aMeshName,anEntity,myFieldName,aTimeStampId) -if aCutPlanes is not None: - aCutPlanes.SetScaling(VISU.LOGARITHMIC) -else: print "Null aCutPlanes is created" -# aIsoSurfaces = myVisu.IsoSurfacesOnField(myResult, aMeshName, anEntity, myFieldName, aTimeStampId) -if aIsoSurfaces is not None: - aIsoSurfaces.SetScaling(VISU.LINEAR) -else: print "Null aIsoSurfaces is created" myViewManager = myVisu.GetViewManager(); -#myView = myViewManager.Create3DView(); -myView = myViewManager.GetCurrentView(); + +#myView = myViewManager.GetCurrentView(); +myView = myViewManager.Create3DView(); +myView.SetTitle("The window will be soon destroyed!") +print "myViewManager.Create3DView()" +time.sleep(aDelay) + +myView.Maximize() +print "myView.Maximize()" +time.sleep(aDelay) + +myView.Restore() +print "myView.Restore()" +time.sleep(aDelay) + +myView.Minimize() +print "myView.Minimize()" +time.sleep(aDelay) + +myViewManager.Destroy(myView) +print "myViewManager.Destroy(myView)" +time.sleep(aDelay) + +myView = myViewManager.Create3DView(); +myView.SetTitle("The window will be set to 'AAA' view params") +print "myViewManager.Create3DView()" +time.sleep(aDelay) + +myView.Display(aScalarMap); +print "myView.Display(aScalarMap)" myView.SetFocalPoint([0,0,0]); +print "myView.SetFocalPoint(...)" +time.sleep(aDelay) myView.SetParallelScale(2); +print "myView.SetParallelScale(...)" +time.sleep(aDelay) + aPoint = myView.GetPointOfView(); aPoint[0] = aPoint[0] + 10; myView.SetPointOfView(aPoint); +print "myView.SetPointOfView(...)" myView.ScaleView(VISU.View3D.YAxis,10.0); myView.ScaleView(VISU.View3D.XAxis,3.0); +print "myView.ScaleView(...)" +time.sleep(aDelay) + aColor = SALOMEDS.Color(0.0,0.3,1.0) myView.SetBackground(aColor); +print "myView.SetBackground(...)" myView.Update(); -myView.Display(aScalarMap); -#myView.Erase(aScalarMap); -#myView.DisplayOnly(aCutPlanes); +print "myView.Update()" +time.sleep(aDelay) + +myView.FitAll(); +print "myView.FitAll()" +time.sleep(aDelay) + +myView.Erase(aScalarMap); +print "myView.Erase(aScalarMap)" +time.sleep(aDelay) + +myView.DisplayOnly(aCutPlanes); +print "myView.DisplayOnly(aCutPlanes)" myView.SaveViewParams('AAA') +print "myView.SaveViewParams('AAA')" +time.sleep(aDelay) + +myView = myViewManager.Create3DView(); +myView.SetTitle("The window will be set to 'BBB' view params") +print "myViewManager.Create3DView()" +time.sleep(aDelay) + +myView.DisplayOnly(aIsoSurfaces); +print "myView.DisplayOnly(aCutPlanes)" +time.sleep(aDelay) +myView.RestoreViewParams('AAA') myView.RemoveScale(); -myView.FitAll(); +print "myView.RemoveScale()" +time.sleep(aDelay) + aColor = SALOMEDS.Color(0.0,0.0,0.0) myView.SetBackground(aColor); +print "myView.SetBackground(...)" myView.SaveViewParams('BBB'); +print "myView.SaveViewParams('BBB')" +time.sleep(aDelay) aColor = SALOMEDS.Color(1.0,1.0,1.0) myView.SetBackground(aColor); +print "myView.SetBackground(...)" +time.sleep(aDelay) + myView.ScaleView(VISU.View3D.ZAxis,0.5); +print "myView.SetBackground(...)" myView.SaveViewParams('CCC'); +print "myView.SaveViewParams('CCC')" +time.sleep(aDelay) -myView.RestoreViewParams('AAA'); - -sg.updateObjBrowser(0) - - - +myView.RestoreViewParams('BBB'); +print "myView.RestoreViewParams('BBB')" -- 2.39.2