From: admin Date: Thu, 26 May 2005 13:55:38 +0000 (+0000) Subject: This commit was generated by cvs2git to create tag 'smh_26_05'. X-Git-Tag: smh_26_05 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=e635b85ffcd55ca59cf28bf4e7e580edf46d5261;p=modules%2Fkernel.git This commit was generated by cvs2git to create tag 'smh_26_05'. Sprout from BR_3_0_0_OCC 2005-05-26 13:55:37 UTC smh 'SMH: Merge with development version = NEW GUI, POLY_WORK, OCC_development_02, BR_LyfeCycle, HEAD' Delete: src/Event/Makefile.in src/Event/SALOME_Event.cxx src/Event/SALOME_Event.hxx src/Loader/InquireServersQThread.cxx src/Loader/InquireServersQThread.h src/Loader/Makefile.in src/Loader/SALOME_Session_Loader.cxx src/MSG2QM/LICENSE.QPL src/MSG2QM/Makefile.in src/MSG2QM/README src/MSG2QM/msg2qm.cxx src/OBJECT/Handle_SALOME_AISObject.hxx src/OBJECT/Handle_SALOME_AISShape.hxx src/OBJECT/Handle_SALOME_InteractiveObject.hxx src/OBJECT/Makefile.in src/OBJECT/SALOME_AISObject.cxx src/OBJECT/SALOME_AISObject.hxx src/OBJECT/SALOME_AISObject.ixx src/OBJECT/SALOME_AISObject.jxx src/OBJECT/SALOME_AISShape.cxx src/OBJECT/SALOME_AISShape.hxx src/OBJECT/SALOME_AISShape.ixx src/OBJECT/SALOME_AISShape.jxx src/OBJECT/SALOME_Actor.cxx src/OBJECT/SALOME_Actor.h src/OBJECT/SALOME_InteractiveObject.cxx src/OBJECT/SALOME_InteractiveObject.hxx src/OBJECT/SALOME_InteractiveObject.ixx src/OBJECT/SALOME_InteractiveObject.jxx src/OCCViewer/Makefile.in src/OCCViewer/OCCViewer.cxx src/OCCViewer/OCCViewer.h src/OCCViewer/OCCViewer_AISSelector.cxx src/OCCViewer/OCCViewer_AISSelector.h src/OCCViewer/OCCViewer_Prs.cxx src/OCCViewer/OCCViewer_Prs.h src/OCCViewer/OCCViewer_VService.cxx src/OCCViewer/OCCViewer_VService.h src/OCCViewer/OCCViewer_ViewFrame.cxx src/OCCViewer/OCCViewer_ViewFrame.h src/OCCViewer/OCCViewer_ViewPort.cxx src/OCCViewer/OCCViewer_ViewPort.h src/OCCViewer/OCCViewer_ViewPort3d.cxx src/OCCViewer/OCCViewer_ViewPort3d.h src/OCCViewer/OCCViewer_Viewer3d.cxx src/OCCViewer/OCCViewer_Viewer3d.h src/PatchQt/BUGS_DESCRIPTION src/PatchQt/LICENSE.QPL src/PatchQt/Makefile.in src/PatchQt/README src/PatchQt/qactionP.cxx src/PatchQt/qactionP.h src/PatchQt/qfiledialogP.cxx src/PatchQt/qfiledialogP.h src/PatchQt/qsplitterP.cxx src/PatchQt/qsplitterP.h src/PatchQt/qworkspaceP.cxx src/PatchQt/qworkspaceP.h src/Plot2d/Makefile.in src/Plot2d/Plot2d.cxx src/Plot2d/Plot2d.h src/Plot2d/Plot2d_Curve.cxx src/Plot2d/Plot2d_Curve.h src/Plot2d/Plot2d_CurveContainer.cxx src/Plot2d/Plot2d_CurveContainer.h src/Plot2d/Plot2d_FitDataDlg.cxx src/Plot2d/Plot2d_FitDataDlg.h src/Plot2d/Plot2d_Prs.cxx src/Plot2d/Plot2d_Prs.h src/Plot2d/Plot2d_SetupPlot2dDlg.cxx src/Plot2d/Plot2d_SetupPlot2dDlg.h src/Plot2d/Plot2d_SetupViewDlg.cxx src/Plot2d/Plot2d_SetupViewDlg.h src/Plot2d/Plot2d_ViewFrame.cxx src/Plot2d/Plot2d_ViewFrame.h src/Prs/Makefile.in src/Prs/SALOME_Prs.cxx src/Prs/SALOME_Prs.h src/RegistryDisplay/HelpWindow.cxx src/RegistryDisplay/HelpWindow.hxx src/RegistryDisplay/IntervalWindow.cxx src/RegistryDisplay/IntervalWindow.hxx src/RegistryDisplay/Makefile.in src/RegistryDisplay/RegWidget.cxx src/RegistryDisplay/RegWidget.hxx src/RegistryDisplay/RegWidgetFactory.cxx src/SALOMEGUI/CLIENT_icons.po src/SALOMEGUI/CLIENT_msg_en.po src/SALOMEGUI/Handle_SALOME_DataMapNodeOfDataMapOfIOMapOfInteger.hxx src/SALOMEGUI/Handle_SALOME_Filter.hxx src/SALOMEGUI/Handle_SALOME_ListNodeOfListIO.hxx src/SALOMEGUI/Handle_SALOME_ListNodeOfListOfFilter.hxx src/SALOMEGUI/Handle_SALOME_NumberFilter.hxx src/SALOMEGUI/Handle_SALOME_TypeFilter.hxx src/SALOMEGUI/Makefile.in src/SALOMEGUI/PyInterp_PyQt.cxx src/SALOMEGUI/PyInterp_PyQt.h src/SALOMEGUI/PyInterp_base.cxx src/SALOMEGUI/PyInterp_base.h src/SALOMEGUI/QAD.h src/SALOMEGUI/QAD_Action.h src/SALOMEGUI/QAD_Application.cxx src/SALOMEGUI/QAD_Application.h src/SALOMEGUI/QAD_Config.cxx src/SALOMEGUI/QAD_Config.h src/SALOMEGUI/QAD_Desktop.cxx src/SALOMEGUI/QAD_Desktop.h src/SALOMEGUI/QAD_DirListDlg.cxx src/SALOMEGUI/QAD_DirListDlg.h src/SALOMEGUI/QAD_FileDlg.cxx src/SALOMEGUI/QAD_FileDlg.h src/SALOMEGUI/QAD_FileValidator.cxx src/SALOMEGUI/QAD_FileValidator.h src/SALOMEGUI/QAD_Help.cxx src/SALOMEGUI/QAD_Help.h src/SALOMEGUI/QAD_HelpWindow.cxx src/SALOMEGUI/QAD_HelpWindow.h src/SALOMEGUI/QAD_LeftFrame.cxx src/SALOMEGUI/QAD_LeftFrame.h src/SALOMEGUI/QAD_ListMenuIdAction.cxx src/SALOMEGUI/QAD_ListMenuIdAction.h src/SALOMEGUI/QAD_ListPopupMenu.cxx src/SALOMEGUI/QAD_ListPopupMenu.h src/SALOMEGUI/QAD_ListView.cxx src/SALOMEGUI/QAD_ListView.h src/SALOMEGUI/QAD_Menus.cxx src/SALOMEGUI/QAD_Menus.h src/SALOMEGUI/QAD_Message.cxx src/SALOMEGUI/QAD_Message.h src/SALOMEGUI/QAD_MessageBox.cxx src/SALOMEGUI/QAD_MessageBox.h src/SALOMEGUI/QAD_NameBrowser.cxx src/SALOMEGUI/QAD_NameBrowser.h src/SALOMEGUI/QAD_ObjectBrowser.cxx src/SALOMEGUI/QAD_ObjectBrowser.h src/SALOMEGUI/QAD_ObjectBrowserItem.cxx src/SALOMEGUI/QAD_ObjectBrowserItem.h src/SALOMEGUI/QAD_Operation.cxx src/SALOMEGUI/QAD_Operation.h src/SALOMEGUI/QAD_OperatorMenus.cxx src/SALOMEGUI/QAD_OperatorMenus.h src/SALOMEGUI/QAD_ParserSettings.cxx src/SALOMEGUI/QAD_ParserSettings.h src/SALOMEGUI/QAD_Popup.cxx src/SALOMEGUI/QAD_Popup.h src/SALOMEGUI/QAD_PyEditor.cxx src/SALOMEGUI/QAD_PyEditor.h src/SALOMEGUI/QAD_PyInterp.cxx src/SALOMEGUI/QAD_PyInterp.h src/SALOMEGUI/QAD_PyInterp_mono.cxx src/SALOMEGUI/QAD_PyInterp_mono.h src/SALOMEGUI/QAD_Resource.h src/SALOMEGUI/QAD_ResourceMgr.cxx src/SALOMEGUI/QAD_ResourceMgr.h src/SALOMEGUI/QAD_RightFrame.cxx src/SALOMEGUI/QAD_RightFrame.h src/SALOMEGUI/QAD_Settings.cxx src/SALOMEGUI/QAD_Settings.h src/SALOMEGUI/QAD_SpinBoxDbl.cxx src/SALOMEGUI/QAD_SpinBoxDbl.h src/SALOMEGUI/QAD_Splitter.cxx src/SALOMEGUI/QAD_Splitter.h src/SALOMEGUI/QAD_Study.cxx src/SALOMEGUI/QAD_Study.h src/SALOMEGUI/QAD_StudyFrame.cxx src/SALOMEGUI/QAD_StudyFrame.h src/SALOMEGUI/QAD_Tools.cxx src/SALOMEGUI/QAD_Tools.h src/SALOMEGUI/QAD_ViewFrame.cxx src/SALOMEGUI/QAD_ViewFrame.h src/SALOMEGUI/QAD_WaitCursor.h src/SALOMEGUI/QAD_XmlHandler.cxx src/SALOMEGUI/QAD_XmlHandler.h src/SALOMEGUI/QAD_icons.po src/SALOMEGUI/QAD_msg_en.po src/SALOMEGUI/QAD_msg_fr.po src/SALOMEGUI/SALOMEGUI.cxx src/SALOMEGUI/SALOMEGUI.h src/SALOMEGUI/SALOMEGUI_AboutDlg.cxx src/SALOMEGUI/SALOMEGUI_AboutDlg.h src/SALOMEGUI/SALOMEGUI_ActivateComponentDlg.cxx src/SALOMEGUI/SALOMEGUI_ActivateComponentDlg.h src/SALOMEGUI/SALOMEGUI_Application.cxx src/SALOMEGUI/SALOMEGUI_Application.h src/SALOMEGUI/SALOMEGUI_CloseDlg.cxx src/SALOMEGUI/SALOMEGUI_CloseDlg.h src/SALOMEGUI/SALOMEGUI_Desktop.cxx src/SALOMEGUI/SALOMEGUI_Desktop.h src/SALOMEGUI/SALOMEGUI_ExternalBrowserDlg.cxx src/SALOMEGUI/SALOMEGUI_ExternalBrowserDlg.h src/SALOMEGUI/SALOMEGUI_ImportOperation.cxx src/SALOMEGUI/SALOMEGUI_ImportOperation.h src/SALOMEGUI/SALOMEGUI_LoadStudiesDlg.cxx src/SALOMEGUI/SALOMEGUI_LoadStudiesDlg.h src/SALOMEGUI/SALOMEGUI_NameDlg.cxx src/SALOMEGUI/SALOMEGUI_NameDlg.h src/SALOMEGUI/SALOMEGUI_OpenWith.cxx src/SALOMEGUI/SALOMEGUI_OpenWith.h src/SALOMEGUI/SALOMEGUI_QtCatchCorbaException.cxx src/SALOMEGUI/SALOMEGUI_QtCatchCorbaException.hxx src/SALOMEGUI/SALOMEGUI_SetValueDlg.cxx src/SALOMEGUI/SALOMEGUI_SetValueDlg.h src/SALOMEGUI/SALOMEGUI_SetupCurveDlg.cxx src/SALOMEGUI/SALOMEGUI_SetupCurveDlg.h src/SALOMEGUI/SALOMEGUI_StudyPropertiesDlg.cxx src/SALOMEGUI/SALOMEGUI_StudyPropertiesDlg.h src/SALOMEGUI/SALOMEGUI_Swig.cxx src/SALOMEGUI/SALOMEGUI_Swig.hxx src/SALOMEGUI/SALOMEGUI_Swig.i src/SALOMEGUI/SALOMEGUI_TableDlg.cxx src/SALOMEGUI/SALOMEGUI_TableDlg.h src/SALOMEGUI/SALOMEGUI_TrihedronSizeDlg.cxx src/SALOMEGUI/SALOMEGUI_TrihedronSizeDlg.h src/SALOMEGUI/SALOMEGUI_ViewChoiceDlg.cxx src/SALOMEGUI/SALOMEGUI_ViewChoiceDlg.h src/SALOMEGUI/SALOMEGUI_icons.po src/SALOMEGUI/SALOMEGUI_msg_en.po src/SALOMEGUI/SALOMEGUI_msg_fr.po src/SALOMEGUI/SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger.hxx src/SALOMEGUI/SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger_0.cxx src/SALOMEGUI/SALOME_DataMapNodeOfDataMapOfIOMapOfInteger.hxx src/SALOMEGUI/SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_0.cxx src/SALOMEGUI/SALOME_DataMapOfIOMapOfInteger.hxx src/SALOMEGUI/SALOME_DataMapOfIOMapOfInteger_0.cxx src/SALOMEGUI/SALOME_Filter.cxx src/SALOMEGUI/SALOME_Filter.hxx src/SALOMEGUI/SALOME_Filter.ixx src/SALOMEGUI/SALOME_Filter.jxx src/SALOMEGUI/SALOME_ListIO.hxx src/SALOMEGUI/SALOME_ListIO_0.cxx src/SALOMEGUI/SALOME_ListIteratorOfListIO.hxx src/SALOMEGUI/SALOME_ListIteratorOfListIO_0.cxx src/SALOMEGUI/SALOME_ListIteratorOfListOfFilter.hxx src/SALOMEGUI/SALOME_ListIteratorOfListOfFilter_0.cxx src/SALOMEGUI/SALOME_ListNodeOfListIO.hxx src/SALOMEGUI/SALOME_ListNodeOfListIO_0.cxx src/SALOMEGUI/SALOME_ListNodeOfListOfFilter.hxx src/SALOMEGUI/SALOME_ListNodeOfListOfFilter_0.cxx src/SALOMEGUI/SALOME_ListOfFilter.hxx src/SALOMEGUI/SALOME_ListOfFilter_0.cxx src/SALOMEGUI/SALOME_NumberFilter.cxx src/SALOMEGUI/SALOME_NumberFilter.hxx src/SALOMEGUI/SALOME_NumberFilter.ixx src/SALOMEGUI/SALOME_NumberFilter.jxx src/SALOMEGUI/SALOME_Selection.cxx src/SALOMEGUI/SALOME_Selection.h src/SALOMEGUI/SALOME_TypeFilter.cxx src/SALOMEGUI/SALOME_TypeFilter.hxx src/SALOMEGUI/SALOME_TypeFilter.ixx src/SALOMEGUI/SALOME_TypeFilter.jxx src/SALOME_PY/Makefile.in src/SALOME_PY/SalomePy.cxx src/SALOME_PYQT/Makefile.in src/SALOME_PYQT/SALOME_PYQT_GUI.cxx src/SALOME_PYQT/SALOME_PYQT_GUI.h src/SALOME_PYQT/SalomePyQt.cxx src/SALOME_PYQT/SalomePyQt.hxx src/SALOME_PYQT/SalomePyQt.sip src/SALOME_SWIG/Makefile.in src/SALOME_SWIG/batchmode_salome.py src/SALOME_SWIG/libSALOME_Swig.i src/SALOME_SWIG/supervisionexample.py.in src/SALOME_SWIG/supervisiongeomexample.py.in src/SALOME_SWIG_WITHOUTIHM/Help.py src/SALOME_SWIG_WITHOUTIHM/Makefile.in src/SALOME_SWIG_WITHOUTIHM/PyInterp.py src/SALOME_SWIG_WITHOUTIHM/batchmode_salome.py src/SALOME_SWIG_WITHOUTIHM/examplevtk1.py src/SALOME_SWIG_WITHOUTIHM/import_hook.py src/SALOME_SWIG_WITHOUTIHM/kernel_shared_modules.py src/SALOME_SWIG_WITHOUTIHM/salome.py src/SALOME_SWIG_WITHOUTIHM/salome_ComponentGUI.py src/SALOME_SWIG_WITHOUTIHM/salome_iapp.py src/SALOME_SWIG_WITHOUTIHM/salome_kernel.py src/SALOME_SWIG_WITHOUTIHM/salome_shared_modules.py src/SALOME_SWIG_WITHOUTIHM/salome_study.py src/SALOME_SWIG_WITHOUTIHM/salome_test.py src/SALOME_SWIG_WITHOUTIHM/supervisionexample.py.in src/SALOME_SWIG_WITHOUTIHM/supervisiongeomexample.py.in src/SALOME_SWIG_WITHOUTIHM/test_big_table.py src/SALOME_SWIG_WITHOUTIHM/test_many_objects.py src/SALOME_SWIG_WITHOUTIHM/test_remove_ref.py src/SALOME_SWIG_WITHOUTIHM/test_table.py src/SALOME_SWIG_WITHOUTIHM/testattr.py src/SUPERVGraph/Makefile.in src/SUPERVGraph/SUPERVGraph.cxx src/SUPERVGraph/SUPERVGraph.h src/SUPERVGraph/SUPERVGraph_Graph.cxx src/SUPERVGraph/SUPERVGraph_Graph.h src/SUPERVGraph/SUPERVGraph_ViewFrame.cxx src/SUPERVGraph/SUPERVGraph_ViewFrame.h src/Session/Makefile.in src/Session/SALOME_Session_QThread.cxx src/Session/SALOME_Session_QThread.hxx src/Session/SALOME_Session_Server.cxx src/Session/SALOME_Session_SignalsHandler.cxx src/Session/SALOME_Session_i.cxx src/Session/SALOME_Session_i.hxx src/Session/Session_ServerLauncher.cxx src/Session/Session_ServerLauncher.hxx src/Session/Session_ServerThread.cxx src/Session/Session_ServerThread.hxx src/Session/runSession src/TOOLSGUI/Makefile.in src/TOOLSGUI/ToolsGUI.cxx src/TOOLSGUI/ToolsGUI.h src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.cxx src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.h src/TOOLSGUI/ToolsGUI_icons.po src/TOOLSGUI/ToolsGUI_msg_en.po src/VTKFilter/Makefile.in src/VTKFilter/SALOME_ExtractUnstructuredGrid.cxx src/VTKFilter/SALOME_ExtractUnstructuredGrid.h src/VTKFilter/SALOME_GeometryFilter.cxx src/VTKFilter/SALOME_GeometryFilter.h src/VTKFilter/SALOME_PassThroughFilter.cxx src/VTKFilter/SALOME_PassThroughFilter.h src/VTKFilter/SALOME_ShrinkFilter.cxx src/VTKFilter/SALOME_ShrinkFilter.h src/VTKFilter/SALOME_Transform.cxx src/VTKFilter/SALOME_Transform.h src/VTKFilter/SALOME_TransformFilter.cxx src/VTKFilter/SALOME_TransformFilter.h src/VTKViewer/Makefile.in src/VTKViewer/VTKViewer.cxx src/VTKViewer/VTKViewer.h src/VTKViewer/VTKViewer_Actor.cxx src/VTKViewer/VTKViewer_Actor.h src/VTKViewer/VTKViewer_Algorithm.h src/VTKViewer/VTKViewer_CellRectPicker.cxx src/VTKViewer/VTKViewer_CellRectPicker.h src/VTKViewer/VTKViewer_Filter.cxx src/VTKViewer/VTKViewer_Filter.h src/VTKViewer/VTKViewer_Functor.h src/VTKViewer/VTKViewer_InteractorStyleSALOME.cxx src/VTKViewer/VTKViewer_InteractorStyleSALOME.h src/VTKViewer/VTKViewer_Prs.cxx src/VTKViewer/VTKViewer_Prs.h src/VTKViewer/VTKViewer_RectPicker.cxx src/VTKViewer/VTKViewer_RectPicker.h src/VTKViewer/VTKViewer_RenderWindow.cxx src/VTKViewer/VTKViewer_RenderWindow.h src/VTKViewer/VTKViewer_RenderWindowInteractor.cxx src/VTKViewer/VTKViewer_RenderWindowInteractor.h src/VTKViewer/VTKViewer_Trihedron.cxx src/VTKViewer/VTKViewer_Trihedron.h src/VTKViewer/VTKViewer_Utilities.cxx src/VTKViewer/VTKViewer_Utilities.h src/VTKViewer/VTKViewer_VectorText.cxx src/VTKViewer/VTKViewer_VectorText.h src/VTKViewer/VTKViewer_ViewFrame.cxx src/VTKViewer/VTKViewer_ViewFrame.h --- diff --git a/src/Event/Makefile.in b/src/Event/Makefile.in deleted file mode 100644 index 426af6888..000000000 --- a/src/Event/Makefile.in +++ /dev/null @@ -1,52 +0,0 @@ -# SALOME Utils : general SALOME's definitions and tools -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Author : Marc Tajchman (CEA) -# Module : SALOME -# $Header$ - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -# header files -EXPORT_HEADERS= \ - SALOME_Event.hxx - -EXPORT_PYSCRIPTS = -# Libraries targets - -LIB = libEvent.la -LIB_SRC = SALOME_Event.cxx - -CPPFLAGS+=$(QT_INCLUDES) -LDFLAGS+=$(QT_MT_LIBS) - -@CONCLUDE@ - - diff --git a/src/Event/SALOME_Event.cxx b/src/Event/SALOME_Event.cxx deleted file mode 100644 index 97f81cc5f..000000000 --- a/src/Event/SALOME_Event.cxx +++ /dev/null @@ -1,110 +0,0 @@ -// KERNEL SALOME_Event : Define event posting mechanism -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_Event.cxx -// Author : Sergey ANIKIN -// Module : KERNEL -// $Header$ - -#include "SALOME_Event.hxx" - -#include "utilities.h" - -#include -#include -#include -#include -using namespace std; - -#ifdef _DEBUG_ -static int MYDEBUG = 0; -#else -static int MYDEBUG = 0; -#endif - - -static pthread_t myThread; - -void SALOME_Event::GetSessionThread(){ - myThread = pthread_self(); -} - -bool SALOME_Event::IsSessionThread(){ - bool aResult = myThread == pthread_self(); - if(MYDEBUG) INFOS("IsSessionThread() - "< -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//VRV: porting on Qt 3.0.5 -#if QT_VERSION >= 0x030005 -#include -#endif -//VRV: porting on Qt 3.0.5 - -#include - -#include - -#include "Utils_ORB_INIT.hxx" -#include "Utils_SINGLETON.hxx" -#include "SALOME_NamingService.hxx" -//#include "utilities.h" -#include "OpUtil.hxx" -using namespace std; - -#include CORBA_CLIENT_HEADER(SALOME_Session) -#include CORBA_CLIENT_HEADER(SALOME_Registry) -#include CORBA_CLIENT_HEADER(SALOMEDS) -#include CORBA_CLIENT_HEADER(SALOME_ModuleCatalog) -#include CORBA_CLIENT_HEADER(SALOME_Component) - -#define MARGIN_SIZE 5 -#define SPACING_SIZE 3 - -static QString findFile( QString filename ); -static QString addSlash( const QString& path ); - -InquireServersGUI::InquireServersGUI() - : QVBox(0, "SFA splash", Qt::WDestructiveClose | Qt::WStyle_Customize | Qt::WStyle_NoBorder | WType_TopLevel | WStyle_StaysOnTop | WX11BypassWM ) -{ - myGUI = false; - myThread = new InquireServersQThread(this); - - // 1. Polish the appearance - setMargin( MARGIN_SIZE ); - setSpacing( SPACING_SIZE ); - setFrameStyle( QFrame::Plain | QFrame::Box ); - setLineWidth( 2 ); - setMinimumSize( 200, 150 ); - - // 2. Splash image - QFrame* frm = new QFrame( this ); - frm->setFrameStyle( QFrame::Box | QFrame::Raised ); - QHBoxLayout* frmLayout = new QHBoxLayout( frm ); - frmLayout->setMargin( MARGIN_SIZE ); - QLabel* splash = 0; - splash = new QLabel( frm, "splash" ); - frmLayout->addWidget( splash ); - // setting pixmap - QString path = findFile( "Application-Splash.png" ); - splash->setPixmap( QPixmap( path ) ); - - // 3. Progress bar - myPrgBar = new QProgressBar( this, "QProgressBar" ); - myPrgBar->setFixedWidth( splash->pixmap()->isNull() ? 180 : splash->sizeHint().width() ); - //Sets the total number of steps . - myPrgBar->setTotalSteps ( myThread->getInquiredServers() ); - myPrgBar->setProgress( 0 ); - - // 4. Info label - QWidget* aWgt1 = new QWidget( this ); - QHBoxLayout* aHBoxLayout1 = new QHBoxLayout( aWgt1 ); - myLabel = new QLabel( tr( "Loading:" ), aWgt1 ); - myLabel->setFixedWidth( splash->pixmap()->isNull() ? 180 : splash->sizeHint().width() ); - myLabel->setAlignment( AlignLeft ); - QFont theFont = myLabel->font(); - theFont.setBold(true); - myLabel->setFont( theFont ); - aHBoxLayout1->addItem( new QSpacerItem( 0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum ) ); - aHBoxLayout1->addWidget( myLabel ); - aHBoxLayout1->addItem( new QSpacerItem( 0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum ) ); - - // 5. button - QWidget* aWgt = new QWidget( this ); - QHBoxLayout* aHBoxLayout = new QHBoxLayout( aWgt ); - QPushButton* myCancelBtn = new QPushButton( tr( "Cancel" ), aWgt ); - connect( myCancelBtn, SIGNAL( clicked() ), this, SLOT( ClickOnCancel() ) ) ; - aHBoxLayout->addItem( new QSpacerItem( 0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum ) ); - aHBoxLayout->addWidget( myCancelBtn ); - aHBoxLayout->addItem( new QSpacerItem( 0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum ) ); - - //Center widget -#if QT_VERSION >= 0x030005 - QDesktopWidget *d = QApplication::desktop(); -#else - QWidget *d = QApplication::desktop(); -#endif -//VRV: porting on Qt 3.0.5 - - int w = d->width(); // returns desktop width - int h = d->height(); // returns desktop height - QSize mySize = sizeHint (); // returns widget size - int Xc = ( w - mySize.width() ) / 2; - int Yc = ( h - mySize.height() ) / 2; - move( Xc, Yc ); - - myThread->start(); -} - -InquireServersGUI::~InquireServersGUI() -{ - delete myThread; -} - -void InquireServersGUI::getArgs( int& _argc, char *** _argv) -{ - _argc = qApp->argc(); - *_argv = qApp->argv(); -} - -//================================================================================= -// function : ClickOnCancel() -// purpose : cancel loading of SALOME -//================================================================================= -void InquireServersGUI::ClickOnCancel() -{ - //it's necessary to stop asking servers - myThread->stop(); - myGUI = false; - //Also we should send QCloseEvent in order to close this widget (and remove from screen) - //QThread::postEvent ( this, new QCloseEvent() ); - qApp->exit(1); -} - -void InquireServersGUI::closeEvent ( QCloseEvent * pe) -{ - //default implementation calls e->accept(), which hides this widget. - //See the QCloseEvent documentation for more details. - pe->accept(); - QApplication::flushX (); - QApplication::syncX (); - qApp->exit(); -} - -void InquireServersGUI::customEvent( QCustomEvent* pe ) -{ - switch( pe->type() ) - { - case InquireEvent::ProgressEvent: - { - int* value = ( int* )(( InquireEvent*)pe)->data(); - myPrgBar->setProgress( *value ); - break; - } - case InquireEvent::ProgressEventLabel: - { - QString* myString = ( QString* )(( InquireEvent*)pe)->data(); - myLabel->setText( *myString ); - break; - } - case InquireEvent::ProgressEventError: - { - QString* myErrDesc = ( QString* )(( InquireEvent*)pe)->data(); - QString appName = "SALOME Professional"; - QString error = "An internal error occurred.\n"+ *myErrDesc + "\n"; - QMessageBox myMsgBox(appName,error,QMessageBox::Critical,QMessageBox::Ok,QMessageBox::NoButton, - QMessageBox::NoButton,0,"MY",TRUE,WStyle_DialogBorder|WStyle_StaysOnTop); - myMsgBox.exec(); - ClickOnCancel(); - break; - } - default: - { - ; - } - } -} - -int InquireServersGUI::getExitStatus() -{ - return myThread->getExitStatus(); -} - -InquireServersQThread::InquireServersQThread( InquireServersGUI* r ) - : receiver(r), myExitStatus(0) -{ - char* cenv; - - IsChecking = true; - myServersCount = 5; - //how many times we should repeat attempts to get response from all needed for launching SALOME servers - myRepeat = 30; // default value, user can change it by setting CSF_RepeatServerRequest env.variable - cenv = getenv( "CSF_RepeatServerRequest" ); - if ( cenv ) { - int val = atoi( cenv ); - if ( val > 0 ) - myRepeat = val; - } - //define delay time between two attempts - myDelay = 1000000; // 1 second - QString str = "Loading: "; - myMessages[0] = "Checking naming service..."; - myMessages[1] = str + "SALOME_Registry_Server" + "..."; - myMessages[2] = str + "SALOMEDS_Server" + "..."; - myMessages[3] = str + "SALOME_ModuleCatalog_Server" + "..."; - myMessages[4] = str + "SALOME_Session_Server" + "..."; - myMessages[5] = ""; - myMessages[6] = ""; - myMessages[7] = ""; - - r->getArgs( _argc, &_argv); - - // NRI : Temporary solution for SuperVisionContainer - for ( int i=1; i<=(_argc-1); i++) { - if (strcmp(_argv[i],"CPP")==0) { - myMessages[5] = str + "SALOME_Container FactoryServer" + "..."; - myServersCount++; - } - if (strcmp(_argv[i],"PY")==0) { - myMessages[6] = str + "SALOME_ContainerPy.py FactoryServerPy" + "..."; - myServersCount++; - } - if (strcmp(_argv[i],"SUPERV")==0) { - myMessages[7] = str + "SALOME_Container SuperVisionContainer" + "..."; - myServersCount++; - } - if (strcmp(_argv[i],"GUI")==0) { - r->withGUI(true); - } - } -} - -void InquireServersQThread::run() -{ -while (IsChecking) - { - for (int i=1; i<=8; i++) - { - if ( myMessages[i-1].isEmpty() ) { - if (i==8) { - IsChecking = false; - //myExitStatus should be 0 because all servers exist and work - myExitStatus = 0; - //we should send QCloseEvent in order to close this widget (and remove from screen) - QThread::postEvent ( receiver , new QCloseEvent() ); - } else - continue; - } - QString *message = new QString(myMessages[i-1]); - QThread::postEvent( receiver, new InquireEvent( ( QEvent::Type )InquireEvent::ProgressEventLabel, message ) ); - QThread::usleep(200000); - QString *errMsg; - bool result = AskServer(i,&errMsg); - if (result) - { - QThread::postEvent( receiver, new InquireEvent( ( QEvent::Type )InquireEvent::ProgressEvent, new int( i ) ) ); - if (i==8) - { - IsChecking = false; - //myExitStatus should be 0 because all servers exist and work - myExitStatus = 0; - //we should send QCloseEvent in order to close this widget (and remove from screen) - QThread::postEvent ( receiver , new QCloseEvent() ); - } - } - else - { - QThread::postEvent( receiver, new InquireEvent( ( QEvent::Type )InquireEvent::ProgressEventError, errMsg ) ); - //myExitStatus should be 1 because we didn't receive response from server - myExitStatus = 1; - return; - } - } - } -} - -bool InquireServersQThread::AskServer(int iteration, QString ** errMessage) -{ - ASSERT(iteration<=myServersCount); - //will be set true if we get response from server - bool IsPassed = false; - QString errDescription; - switch (iteration) - { - case 1: - //First checking - existence of Naming Service - for (int i = myRepeat; i ; i--) - { - try - { - CORBA::ORB_var orb = CORBA::ORB_init(_argc,_argv) ; - CORBA::Object_var obj = orb->resolve_initial_references("NameService"); - CosNaming::NamingContext_var _root_context = CosNaming::NamingContext::_narrow(obj); - if (CORBA::is_nil(_root_context)) - continue; - else - IsPassed = true; - break; - } - catch(CORBA::COMM_FAILURE&) - { - MESSAGE("CORBA::COMM_FAILURE: unable to contact the naming service"); - } - catch(...) - { - MESSAGE("Unknown Exception: unable to contact the naming service"); - } - QThread::usleep(myDelay); - } - if (!IsPassed) - *errMessage = new QString("unable to contact the naming service"); - break; - case 2: - //checking - existence of SALOME_Registry_Server - case 3: - //checking - existence of SALOMEDS_Server - case 4: - //checking - existence of SALOME_ModuleCatalog_Server - case 5: - //checking - existence of SALOME_Session_Server - case 6: - //checking - existence of SALOME_Container FactoryServer - case 7: - //checking - existence of SALOME_ContainerPy.py FactoryServerPy - case 8: - //checking - existence of SALOME_Container SuperVisionContainer - - - IsPassed = pingServer(iteration, errDescription); - if (!IsPassed) - *errMessage = new QString(errDescription); - break; - } -return IsPassed; -} - -bool InquireServersQThread::pingServer(int iteration, QString& errMessage) -{ - ASSERT(iteration<=myServersCount); - bool result = false; - QString errorDescr; - for (int i = myRepeat; i ; i--) - { - try - { - CORBA::ORB_var orb = CORBA::ORB_init(_argc,_argv) ; - SALOME_NamingService &NS = *SINGLETON_::Instance() ; - ASSERT(SINGLETON_::IsAlreadyExisting()) ; - NS.init_orb( orb ) ; - switch (iteration) - { - case 2: - { - CORBA::Object_var obj = NS.Resolve("/Registry"); - Registry::Components_var registry = Registry::Components::_narrow(obj) ; - if (!CORBA::is_nil(registry)) - { - MESSAGE("/Registry is found"); - registry->ping(); - result = true; - MESSAGE("Registry was activated"); - return result; - } - } - break; - case 3: - { - CORBA::Object_var obj = NS.Resolve("/myStudyManager"); - SALOMEDS::StudyManager_var studyManager = SALOMEDS::StudyManager::_narrow(obj) ; - if (!CORBA::is_nil(studyManager)) - - - - - - { - MESSAGE("/myStudyManager is found"); - studyManager->ping(); - result = true; - MESSAGE("StudyManager was activated"); - return result; - } - } - break; - case 4: - { - CORBA::Object_var obj = NS.Resolve("Kernel/ModulCatalog"); - SALOME_ModuleCatalog::ModuleCatalog_var catalog = SALOME_ModuleCatalog::ModuleCatalog::_narrow(obj) ; - if (!CORBA::is_nil(catalog)) - { - MESSAGE("/Kernel/ModulCatalog is found"); - catalog->ping(); - result = true; - MESSAGE("ModuleCatalog was activated"); - return result; - } - } - break; - case 5: - { - CORBA::Object_var obj = NS.Resolve("Kernel/Session"); - SALOME::Session_var session = SALOME::Session::_narrow(obj) ; - if (!CORBA::is_nil(session)) - { - MESSAGE("/Kernel/Session is found"); - session->ping(); - result = true; - MESSAGE("SALOME_Session was activated"); - return result; - } - } - break; - case 6: - { - string hostname = GetHostname(); - string containerName = "/Containers/"; - containerName += hostname; - containerName += "/FactoryServer"; - - CORBA::Object_var obj = NS.Resolve(containerName.c_str()); - Engines::Container_var FScontainer = Engines::Container::_narrow(obj) ; - if (!CORBA::is_nil(FScontainer)) - { - FScontainer->ping(); - result = true; - MESSAGE("FactoryServer container was activated"); - return result; - } - } - break; - case 7: - { - string hostname = GetHostname(); - string containerName = "/Containers/"; - containerName += hostname; - containerName += "/FactoryServerPy"; - - CORBA::Object_var obj = NS.Resolve(containerName.c_str()); - Engines::Container_var FSPcontainer = Engines::Container::_narrow(obj) ; - if (!CORBA::is_nil(FSPcontainer)) - { - FSPcontainer->ping(); - result = true; - MESSAGE("FactoryServerPy container was activated"); - return result; - } - } - break; - case 8: - { - string hostname = GetHostname(); - string containerName = "/Containers/"; - containerName += hostname; - containerName += "/SuperVisionContainer"; - - CORBA::Object_var obj = NS.Resolve(containerName.c_str()); - Engines::Container_var SVcontainer = Engines::Container::_narrow(obj) ; - if (!CORBA::is_nil(SVcontainer)) - { - SVcontainer->ping(); - - result = true; - MESSAGE("SuperVisionContainer container was activated"); - return result; - } - } - break; - } - } - catch (ServiceUnreachable&) - { - MESSAGE("Caught exception: Naming Service Unreachable"); - errorDescr = "Caught exception: Naming Service Unreachable"; - } - catch (CORBA::COMM_FAILURE&) - { - MESSAGE("Caught CORBA::SystemException CommFailure."); - errorDescr = "Caught CORBA::SystemException CommFailure"; - } - catch (CORBA::SystemException&) - { - MESSAGE("Caught CORBA::SystemException."); - errorDescr = "Caught CORBA::SystemException"; - } - catch (CORBA::Exception&) - { - MESSAGE("Caught CORBA::Exception."); - errorDescr = "Caught CORBA::Exception"; - } - catch (...) - { - MESSAGE("Caught unknown exception."); - errorDescr = "Caught unknown exception"; - } - QThread::usleep(myDelay); - } - if (!result) - { - QString serverName; - switch (iteration) - { - case 2: - serverName = "SALOME_Registry_Server is not loaded. "; - break; - case 3: - serverName = "SALOMEDS_Server is not loaded. "; - break; - case 4: - serverName = "SALOME_ModuleCatalog_Server is not loaded. "; - break; - case 5: - serverName = "SALOME_Session_Server is not loaded. "; - break; - case 6: - serverName = "SALOME_Container FactoryServer is not loaded. "; - break; - case 7: - serverName = "SALOME_ContainerPy.py FactoryServerPy is not loaded. "; - break; - case 8: - serverName = "SALOME_Container SuperVisionContainer is not loaded. "; - break; - } - errMessage = serverName + errorDescr; - } - return result; -} - -static const char* SEPARATOR = ":"; - -QString findFile( QString filename ) -{ - QString dir; - char* cenv; - - // Try ${SALOME_SITE_DIR}/share/${SALOME_SITE_NAME}/resources directory - cenv = getenv( "SALOME_SITE_DIR" ); - if ( cenv ) { - dir.sprintf( "%s", cenv ); - if ( !dir.isEmpty() ) { - dir = addSlash(dir) ; - dir = dir + "share" ; - dir = addSlash(dir) ; - cenv = getenv( "SALOME_SITE_NAME" ); - if ( cenv ) - dir = dir + cenv ; - else - dir = dir + "salome" ; - dir = addSlash(dir) ; - dir = dir + "resources" ; - dir = addSlash(dir) ; - QFileInfo fileInfo( dir + filename ); - if ( fileInfo.isFile() && fileInfo.exists() ) - return fileInfo.filePath(); - } - } - // Try ${KERNEL_ROOT_DIR}/share/salome/resources directory - cenv = getenv( "KERNEL_ROOT_DIR" ); - if ( cenv ) { - dir.sprintf( "%s", cenv ); - if ( !dir.isEmpty() ) { - dir = addSlash(dir) ; - dir = dir + "share" ; - dir = addSlash(dir) ; - dir = dir + "salome" ; - dir = addSlash(dir) ; - dir = dir + "resources" ; - dir = addSlash(dir) ; - QFileInfo fileInfo( dir + filename ); - if ( fileInfo.isFile() && fileInfo.exists() ) - return fileInfo.filePath(); - } - } - // Try CSF_ResourcesDefaults env.var directory ( or directory list ) - cenv = getenv( "CSF_ResourcesDefaults" ); - if ( cenv ) { - dir.sprintf( "%s", cenv ); - if ( !dir.isEmpty() ) { - QStringList dirList = QStringList::split( SEPARATOR, dir, false ); // skip empty entries - for ( int i = 0; i < dirList.count(); i++ ) { - QFileInfo fileInfo( addSlash( dirList[ i ] ) + filename ); - if ( fileInfo.isFile() && fileInfo.exists() ) - return fileInfo.filePath(); - } - } - } - // Try ${HOME}/.salome/resources directory - cenv = getenv( "HOME" ); - if ( cenv ) { - dir.sprintf( "%s", cenv ); - if ( !dir.isEmpty() ) { - dir = addSlash(dir) ; - dir = dir + ".salome" ; - dir = addSlash(dir) ; - dir = dir + "resources" ; - dir = addSlash(dir) ; - QFileInfo fileInfo( dir + filename ); - if ( fileInfo.isFile() && fileInfo.exists() ) - return fileInfo.filePath(); - } - } - return filename; -} -QString addSlash( const QString& path ) -{ - if (!path.isNull()) { -#ifdef WNT - QChar slash ('\\'); -#else - QChar slash ('/'); -#endif - if ( path.at(path.length()-1) != slash ) - return path + slash; - } - return path; -} diff --git a/src/Loader/InquireServersQThread.h b/src/Loader/InquireServersQThread.h deleted file mode 100644 index a9efd61d9..000000000 --- a/src/Loader/InquireServersQThread.h +++ /dev/null @@ -1,115 +0,0 @@ -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : InquireServersQThread.h -// Author : Vasily RUSYAEV -// Module : SALOME -// $Header$ - -#include -#include -#include -#include -#include - -/********************************************************** -** Class: InquireEvent -** Descr: Contains QCustomEvents for posting to InquireServersQThread -** Level: Private -***********************************************************/ - -class InquireEvent : public QCustomEvent -{ -public: - - enum myCustomEvents{ ProgressEvent = QEvent::User + 10, ProgressEventLabel, ProgressEventError }; - - InquireEvent( QEvent::Type type , void* data = 0 ) - : QCustomEvent( type, data ) {} - ~InquireEvent() - { - type() == (QEvent::Type)ProgressEvent ? - delete ( int* )data() : delete ( QString* )data(); - } -}; - -class InquireServersGUI; - -class InquireServersQThread : public QThread -{ -public: - InquireServersQThread( InquireServersGUI* r ); - - //the main loop of this thread - virtual void run() ; - //stop to ask servers - void stop() - { - IsChecking = false; - myExitStatus = 1; - } - //return exit status: 0 - OK, >0 - BAD (some servers doesn't exists or user click cancel button) - int getExitStatus() { return myExitStatus;} - //return count of inquired servers - int getInquiredServers() { return myServersCount; } - -private: - -//functions: - - bool AskServer(int iteration, QString ** message); - bool pingServer(int iteration, QString& errMessage); - -//variables: - - InquireServersGUI* receiver; - int _argc ; - char ** _argv; - //this variable is true if we are checking servers - bool IsChecking; - //count of inquired servers - int myServersCount; - //how many times we should repeat attempt to get response from all needed for launching SALOME servers - int myRepeat; - //define delay time between two attempts in microseconds - int myDelay; - //this strings' array contains messages for each server (e.g. "Loading: SALOMEDS_Server") - QString myMessages[8]; - //exit status: 0 - OK, >0 - BAD (some servers doesn't exists or user click cancel button) - int myExitStatus; - -} ; - -class InquireServersGUI : public QVBox -{ - Q_OBJECT - -public: - InquireServersGUI() ; - ~InquireServersGUI(); - - //returns arguments of QApplication - //they are needed for CORBA servers initialization - void getArgs( int& _argc, char *** _argv); - //return exit status: 0 - OK, >0 - BAD (some servers doesn't exists or user click cancel button) - int getExitStatus(); - //launch IAPP - bool withGUI() { return myGUI; } - void withGUI(bool gui) { myGUI = gui; } - -protected: - virtual void customEvent( QCustomEvent* ); - virtual void closeEvent ( QCloseEvent * ); - -private: - InquireServersQThread* myThread; - QProgressBar* myPrgBar; - //this string contains description of currently asked server - QLabel* myLabel; - bool myGUI; - -private slots: - - void ClickOnCancel(); -} ; diff --git a/src/Loader/Makefile.in b/src/Loader/Makefile.in deleted file mode 100644 index 7660e9882..000000000 --- a/src/Loader/Makefile.in +++ /dev/null @@ -1,39 +0,0 @@ -# Copyright (C) 2003 CEA/DEN, EDF R&D -# -# -# -# File : Makefile.in -# Author : Paul RASCLE, EDF -# Module : SALOME -# $Header$ - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -# Executables targets -BIN = SALOME_Session_Loader - -BIN_MOC = InquireServersQThread.h -BIN_SRC = InquireServersQThread.cxx - -BIN_CLIENT_IDL = SALOME_Session.idl \ - SALOMEDS.idl \ - SALOMEDS_Attributes.idl \ - SALOME_Component.idl \ - SALOME_ModuleCatalog.idl \ - SALOME_Registry.idl \ - SALOME_Exception.idl Logger.idl - -CPPFLAGS+=$(QT_MT_INCLUDES) -CXXFLAGS+=$(OCC_CXXFLAGS) -LDFLAGS+=$(QT_MT_LIBS) -lSalomeNS -lOpUtil -lSALOMELocalTrace -LDFLAGSFORBIN= $(LDFLAGS) -lSALOMETraceCollector - - -@CONCLUDE@ - diff --git a/src/Loader/SALOME_Session_Loader.cxx b/src/Loader/SALOME_Session_Loader.cxx deleted file mode 100644 index cc69f0868..000000000 --- a/src/Loader/SALOME_Session_Loader.cxx +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : SALOME_Session_loader.cxx -// Author : Paul RASCLE, EDF -// Module : SALOME -// $Header$ - -/*! \file SALOME_Session_loader.cxx - */ - -#include -#include CORBA_CLIENT_HEADER(SALOME_Session) -#include CORBA_CLIENT_HEADER(Logger) - -#include "Utils_ORB_INIT.hxx" -#include "Utils_SINGLETON.hxx" -#include "SALOME_NamingService.hxx" -#include "utilities.h" -#include "SALOMETraceCollector.hxx" - -//! CORBA client for SALOME Session server : launch GUI -/*! - * SALOME_Session Loader launches a SALOME GUI on the SALOME session servant process - */ - -#include -#include "InquireServersQThread.h" -using namespace std; - -void MessageOutput( QtMsgType type, const char *msg ) -{ - switch ( type ) { - case QtDebugMsg: - MESSAGE( "Debug: " << msg ); - break; - case QtWarningMsg: - MESSAGE( "Warning: " << msg ); - break; - case QtFatalMsg: - MESSAGE( "Fatal: " << msg ); - break; - } -} - -int main(int argc, char **argv) -{ - CORBA::ORB_ptr orb = CORBA::ORB_init(argc,argv) ; - SALOMETraceCollector *myThreadTrace = SALOMETraceCollector::instance(orb); - qInstallMsgHandler( MessageOutput ); -//VRV: T2.4 - Trace management improvement - QApplication myQApp(argc, argv) ; - InquireServersGUI myIS; - myQApp.setMainWidget(&myIS); - ASSERT(QObject::connect(&myQApp, SIGNAL(lastWindowClosed()), &myQApp, SLOT(quit()) ) ); - myIS.show(); - myQApp.exec(); - - if (myIS.getExitStatus()) - exit(1); -//VRV: T2.4 - Trace management improvement - if (myIS.withGUI()) { - try - { - SALOME_NamingService &NS = *SINGLETON_::Instance() ; - ASSERT(SINGLETON_::IsAlreadyExisting()) ; - NS.init_orb( orb ) ; - - CORBA::Object_var obj = NS.Resolve("/Kernel/Session"); - - SALOME::Session_var session = SALOME::Session::_narrow(obj) ; - ASSERT(! CORBA::is_nil(session)); - MESSAGE("SALOME::Session::_narrow(obj)"); - INFOS("Corba initialisation, Distant server"); - - // ------------------------------------------------------------- - - session->GetInterface() ; - - // ------------------------------------------------------------- - - orb->destroy() ; - } - catch (ServiceUnreachable&) - { - INFOS("Caught exception: Naming Service Unreachable"); - } - catch (CORBA::COMM_FAILURE&) - { - INFOS("Caught CORBA::SystemException CommFailure."); - } - catch (CORBA::SystemException&) - { - INFOS("Caught CORBA::SystemException."); - } - catch (CORBA::Exception&) - { - INFOS("Caught CORBA::Exception."); - } - catch (...) - { - INFOS("Caught unknown exception."); - } - return 0 ; - } - INFOS("Normal Exit"); // without this trace, Splash remains on screen ! - delete myThreadTrace; - return 0 ; -} - - diff --git a/src/MSG2QM/LICENSE.QPL b/src/MSG2QM/LICENSE.QPL deleted file mode 100644 index ecdad6ef5..000000000 --- a/src/MSG2QM/LICENSE.QPL +++ /dev/null @@ -1,103 +0,0 @@ - THE Q PUBLIC LICENSE - version 1.0 - - Copyright (C) 1999-2000 Trolltech AS, Norway. - Everyone is permitted to copy and - distribute this license document. - -The intent of this license is to establish freedom to share and change the -software regulated by this license under the open source model. - -This license applies to any software containing a notice placed by the -copyright holder saying that it may be distributed under the terms of -the Q Public License version 1.0. Such software is herein referred to as -the Software. This license covers modification and distribution of the -Software, use of third-party application programs based on the Software, -and development of free software which uses the Software. - - Granted Rights - -1. You are granted the non-exclusive rights set forth in this license - provided you agree to and comply with any and all conditions in this - license. Whole or partial distribution of the Software, or software - items that link with the Software, in any form signifies acceptance of - this license. - -2. You may copy and distribute the Software in unmodified form provided - that the entire package, including - but not restricted to - copyright, - trademark notices and disclaimers, as released by the initial developer - of the Software, is distributed. - -3. You may make modifications to the Software and distribute your - modifications, in a form that is separate from the Software, such as - patches. The following restrictions apply to modifications: - - a. Modifications must not alter or remove any copyright notices in - the Software. - - b. When modifications to the Software are released under this - license, a non-exclusive royalty-free right is granted to the - initial developer of the Software to distribute your modification - in future versions of the Software provided such versions remain - available under these terms in addition to any other license(s) of - the initial developer. - -4. You may distribute machine-executable forms of the Software or - machine-executable forms of modified versions of the Software, provided - that you meet these restrictions: - - a. You must include this license document in the distribution. - - b. You must ensure that all recipients of the machine-executable forms - are also able to receive the complete machine-readable source code - to the distributed Software, including all modifications, without - any charge beyond the costs of data transfer, and place prominent - notices in the distribution explaining this. - - c. You must ensure that all modifications included in the - machine-executable forms are available under the terms of this - license. - -5. You may use the original or modified versions of the Software to - compile, link and run application programs legally developed by you - or by others. - -6. You may develop application programs, reusable components and other - software items that link with the original or modified versions of the - Software. These items, when distributed, are subject to the following - requirements: - - a. You must ensure that all recipients of machine-executable forms of - these items are also able to receive and use the complete - machine-readable source code to the items without any charge - beyond the costs of data transfer. - - b. You must explicitly license all recipients of your items to use - and re-distribute original and modified versions of the items in - both machine-executable and source code forms. The recipients must - be able to do so without any charges whatsoever, and they must be - able to re-distribute to anyone they choose. - - - c. If the items are not available to the general public, and the - initial developer of the Software requests a copy of the items, - then you must supply one. - - Limitations of Liability - -In no event shall the initial developers or copyright holders be liable -for any damages whatsoever, including - but not restricted to - lost -revenue or profits or other direct, indirect, special, incidental or -consequential damages, even if they have been advised of the possibility -of such damages, except to the extent invariable law, if any, provides -otherwise. - - No Warranty - -The Software and this license document are provided AS IS with NO WARRANTY -OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS -FOR A PARTICULAR PURPOSE. - Choice of Law - -This license is governed by the Laws of Norway. Disputes shall be settled -by Oslo City Court. diff --git a/src/MSG2QM/Makefile.in b/src/MSG2QM/Makefile.in deleted file mode 100644 index a77f47893..000000000 --- a/src/MSG2QM/Makefile.in +++ /dev/null @@ -1,43 +0,0 @@ -# SALOME MSG2QM : duplication of Qt tool -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Module : SALOME - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - -@COMMENCE@ - -# Executables targets -BIN = msg2qm -BIN_SRC = - -CPPFLAGS+=$(QT_INCLUDES) $(OGL_INCLUDES) -LDFLAGS+=$(QT_MT_LIBS) $(OGL_LIBS) - -LDFLAGSFORBIN=$(LDFLAGS) - -@CONCLUDE@ diff --git a/src/MSG2QM/README b/src/MSG2QM/README deleted file mode 100644 index e53a155ec..000000000 --- a/src/MSG2QM/README +++ /dev/null @@ -1,3 +0,0 @@ -This package includes the msg2qm tool for resources compiling. -It is a part of Qt 3.0.5 toolkit. -The files in this package are distributed under conditions of the Q Public License. \ No newline at end of file diff --git a/src/MSG2QM/msg2qm.cxx b/src/MSG2QM/msg2qm.cxx deleted file mode 100644 index 57dac48d0..000000000 --- a/src/MSG2QM/msg2qm.cxx +++ /dev/null @@ -1,220 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Module : MSG2QM -// File : msg2qm.cxx -// Description : This is a duplication of Qt tool for resources compiling -///////////////////////////////////////////////////////////////////////////// - -/**************************************************************************** -** $Id$ -** -** This is a utility program for converting findtr msgfiles to -** qtranslator message files -** -** -** Copyright (C) 1998 by Trolltech AS. All rights reserved. -** -*****************************************************************************/ - -#include -#include -#include -#include - -#include -#include -using namespace std; - -static QString* defaultScope = 0; - -bool hasHandle( const QString& line, const QString& handle) -{ - return line.left(handle.length()) == handle; -} - - -QString extractContents( const QString& line ) -{ - QString contents; - if ( line.contains('\"') < 2) - return contents; - int pos = 0; - while ( pos < int(line.length()) && line[pos] != '\"' ) - pos++; - pos++; - while ( pos < int(line.length()) && line[pos] != '\"' ) { - // 0xa5: the yen sign is the Japanese backslash - if ( line[pos] == '\\' || line[pos] == QChar(0xa5) ) { - pos++; - switch (char(line[pos]) ) { - case 'n': - contents += '\n'; - break; - case 't': - contents += '\t'; - break; - case 'r': - contents += '\r'; - break; - case 'a': - contents += '\a'; - break; - case 'f': - contents += '\f'; - break; - case 'v': - contents += '\v'; - break; - case 'b': - contents += '\b'; - break; - default: - contents += char(line[pos]); - break; - } - } - else - contents += line[pos]; - pos++; - } - return contents; -} - - -void addTranslation( QTranslator* translator, const QString& msgid, const QString& msgstr) -{ - if (!msgid.isNull() && !msgstr.isNull() ) { - QString scope = ""; - QString id = msgid; - int coloncolon = msgid.find("::"); - if (coloncolon != -1) { - scope = msgid.left( coloncolon ); - id = msgid.right( msgid.length() - scope.length() - 2 ); - } - else if (defaultScope) - scope = *defaultScope; - - if (translator->contains( scope.ascii(), id.ascii() ) ) { - qWarning("Error: \"%s\" already in use", msgid.ascii() ); - } - else { - translator->insert( scope.latin1(), id.latin1(), msgstr ); - } - } -} - - - -void translate( const QString& filename, const QString& qmfile ) -{ - QFile f(filename); - if ( !f.open( IO_ReadOnly) ) - return; - QTranslator* translator = new QTranslator(0); - QTextCodec *codec = 0; - for (int pass = 0; pass < 2; pass++) { - f.at(0); - QTextStream t( &f ); - QString line; - QString msgid; - QString msgstr; - if ( codec != 0 ) { - t.setCodec( codec ); - } - while ( !t.atEnd() || !line.isEmpty() ) { - if (line.isEmpty()) { - t.skipWhiteSpace(); - line = t.readLine(); - } - if ( hasHandle( line, "msgid") ) { - msgstr = QString::null; - msgid = extractContents( line ); - if (!t.atEnd()) { - t.skipWhiteSpace(); - line = t.readLine(); - } - else - line = QString::null; - while ( hasHandle( line, "\"") ) { - msgid += extractContents( line ); - if (!t.atEnd()) { - t.skipWhiteSpace(); - line = t.readLine(); - } - else - line = QString::null; - } - } - else if ( hasHandle( line, "msgstr") ) { - msgstr = extractContents( line ); - if (!t.atEnd()) { - t.skipWhiteSpace(); - line = t.readLine(); - } - else - line = QString::null; - while ( hasHandle( line, "\"") ) { - msgstr += extractContents( line ); - if (!t.atEnd()) { - t.skipWhiteSpace(); - line = t.readLine(); - } - else - line = QString::null; - } - if ( pass == 1 ) - addTranslation( translator, msgid, msgstr); - - if ( pass == 0 && msgid.isEmpty() ) { - // Check for the encoding. - int cpos = msgstr.find( "charset=" ); - if ( cpos >= 0 ) { - cpos = cpos + 8; //skip "charset=" - int i = cpos; - int len = msgstr.length(); - while ( i < len && !msgstr[i].isSpace() ) - i++; - QString charset = msgstr.mid( cpos, i-cpos ); - codec = QTextCodec::codecForName( charset.ascii() ); - if ( codec ) { - debug( "PO file character set: %s. Codec: %s", - charset.ascii(), codec->name() ); - } else { - debug( "No codec for %s", charset.ascii() ); - } - } - break; - } - } - else - line = QString::null; - } - } - f.close(); - translator->save( qmfile ); -} - - -// workaround for BCC problem, qtranslator.h includes qwindowdefs.h via qobject.h, see NEEDS_QMAIN -#if defined(main) -#undef main -#endif - -int main( int argc, char* argv[] ) -{ - - int infile = 1; - if (argc > 1) { - if ( QString("-scope") == argv[1] ) { - defaultScope = new QString(argv[2]); - infile += 2; - } - } - - if ( argc <= infile ) { - printf("usage: %s [-scope default] infile [outfile]\n", argv[0]); - exit(1); - } - - translate(argv[infile], argc > infile+1 ? argv[infile+1] : "tr.qm"); - return 0; -} diff --git a/src/OBJECT/Handle_SALOME_AISObject.hxx b/src/OBJECT/Handle_SALOME_AISObject.hxx deleted file mode 100644 index 98dede911..000000000 --- a/src/OBJECT/Handle_SALOME_AISObject.hxx +++ /dev/null @@ -1,100 +0,0 @@ -// SALOME OBJECT : implementation of interactive object visualization for OCC and VTK viewers -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Handle_SALOME_AISObject.hxx -// Module : SALOME - -#ifndef _Handle_SALOME_AISObject_HeaderFile -#define _Handle_SALOME_AISObject_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_AIS_InteractiveObject_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(AIS_InteractiveObject); -class SALOME_AISObject; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(SALOME_AISObject); - -class Handle(SALOME_AISObject) : public Handle(AIS_InteractiveObject) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } -// inline void operator delete(void *anAddress, size_t size) -// { -// if (anAddress) Standard::Free((Standard_Address&)anAddress,size); -// } - Handle(SALOME_AISObject)():Handle(AIS_InteractiveObject)() {} - Handle(SALOME_AISObject)(const Handle(SALOME_AISObject)& aHandle) : Handle(AIS_InteractiveObject)(aHandle) - { - } - - Handle(SALOME_AISObject)(const SALOME_AISObject* anItem) : Handle(AIS_InteractiveObject)((AIS_InteractiveObject *)anItem) - { - } - - Handle(SALOME_AISObject)& operator=(const Handle(SALOME_AISObject)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(SALOME_AISObject)& operator=(const SALOME_AISObject* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - SALOME_AISObject* operator->() - { - return (SALOME_AISObject *)ControlAccess(); - } - - SALOME_AISObject* operator->() const - { - return (SALOME_AISObject *)ControlAccess(); - } - - Standard_EXPORT ~Handle(SALOME_AISObject)(); - - Standard_EXPORT static const Handle(SALOME_AISObject) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/OBJECT/Handle_SALOME_AISShape.hxx b/src/OBJECT/Handle_SALOME_AISShape.hxx deleted file mode 100644 index 65a1bc6d9..000000000 --- a/src/OBJECT/Handle_SALOME_AISShape.hxx +++ /dev/null @@ -1,100 +0,0 @@ -// SALOME OBJECT : implementation of interactive object visualization for OCC and VTK viewers -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Handle_SALOME_AISShape.hxx -// Module : SALOME - -#ifndef _Handle_SALOME_AISShape_HeaderFile -#define _Handle_SALOME_AISShape_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_AIS_Shape_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(AIS_Shape); -class SALOME_AISShape; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(SALOME_AISShape); - -class Handle(SALOME_AISShape) : public Handle(AIS_Shape) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } -// inline void operator delete(void *anAddress, size_t size) -// { -// if (anAddress) Standard::Free((Standard_Address&)anAddress,size); -// } - Handle(SALOME_AISShape)():Handle(AIS_Shape)() {} - Handle(SALOME_AISShape)(const Handle(SALOME_AISShape)& aHandle) : Handle(AIS_Shape)(aHandle) - { - } - - Handle(SALOME_AISShape)(const SALOME_AISShape* anItem) : Handle(AIS_Shape)((AIS_Shape *)anItem) - { - } - - Handle(SALOME_AISShape)& operator=(const Handle(SALOME_AISShape)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(SALOME_AISShape)& operator=(const SALOME_AISShape* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - SALOME_AISShape* operator->() - { - return (SALOME_AISShape *)ControlAccess(); - } - - SALOME_AISShape* operator->() const - { - return (SALOME_AISShape *)ControlAccess(); - } - - Standard_EXPORT ~Handle(SALOME_AISShape)(); - - Standard_EXPORT static const Handle(SALOME_AISShape) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/OBJECT/Handle_SALOME_InteractiveObject.hxx b/src/OBJECT/Handle_SALOME_InteractiveObject.hxx deleted file mode 100644 index 767dfec3f..000000000 --- a/src/OBJECT/Handle_SALOME_InteractiveObject.hxx +++ /dev/null @@ -1,96 +0,0 @@ -// SALOME OBJECT : implementation of interactive object visualization for OCC and VTK viewers -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Handle_SALOME_InteractiveObject.hxx -// Module : SALOME - -#ifndef _Handle_SALOME_InteractiveObject_HeaderFile -#define _Handle_SALOME_InteractiveObject_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_MMgt_TShared_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(MMgt_TShared); -class SALOME_InteractiveObject; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(SALOME_InteractiveObject); - -class Handle(SALOME_InteractiveObject) : public Handle(MMgt_TShared) { - public: - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - Handle(SALOME_InteractiveObject)():Handle(MMgt_TShared)() {} - Handle(SALOME_InteractiveObject)(const Handle(SALOME_InteractiveObject)& aHandle) : Handle(MMgt_TShared)(aHandle) - { - } - - Handle(SALOME_InteractiveObject)(const SALOME_InteractiveObject* anItem) : Handle(MMgt_TShared)((MMgt_TShared *)anItem) - { - } - - Handle(SALOME_InteractiveObject)& operator=(const Handle(SALOME_InteractiveObject)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(SALOME_InteractiveObject)& operator=(const SALOME_InteractiveObject* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - SALOME_InteractiveObject* operator->() - { - return (SALOME_InteractiveObject *)ControlAccess(); - } - - SALOME_InteractiveObject* operator->() const - { - return (SALOME_InteractiveObject *)ControlAccess(); - } - - Standard_EXPORT ~Handle(SALOME_InteractiveObject)(); - - Standard_EXPORT static const Handle(SALOME_InteractiveObject) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/OBJECT/Makefile.in b/src/OBJECT/Makefile.in deleted file mode 100644 index 6d1a55859..000000000 --- a/src/OBJECT/Makefile.in +++ /dev/null @@ -1,36 +0,0 @@ -# source path -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -EXPORT_HEADERS = SALOME_InteractiveObject.hxx \ - Handle_SALOME_InteractiveObject.hxx \ - SALOME_Actor.h \ - SALOME_AISShape.hxx \ - Handle_SALOME_AISShape.hxx \ - SALOME_AISObject.hxx \ - Handle_SALOME_AISObject.hxx \ - -# Libraries targets - -LIB = libSalomeObject.la -LIB_SRC = SALOME_InteractiveObject.cxx \ - SALOME_Actor.cxx \ - SALOME_AISShape.cxx\ - SALOME_AISObject.cxx\ - -LIB_CLIENT_IDL = - -# Executables targets -BIN = -BIN_SRC = - -CPPFLAGS+=$(PYTHON_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) -LDFLAGS+= $(PYTHON_LIBS) $(VTK_LIBS) $(OGL_LIBS) $(CAS_LDPATH) -lTKV3d -lSalomeVTKFilter - - -@CONCLUDE@ diff --git a/src/OBJECT/SALOME_AISObject.cxx b/src/OBJECT/SALOME_AISObject.cxx deleted file mode 100644 index 46abdd1d6..000000000 --- a/src/OBJECT/SALOME_AISObject.cxx +++ /dev/null @@ -1,30 +0,0 @@ -// SALOME OBJECT : implementation of interactive object visualization for OCC and VTK viewers -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_AISObject.hxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "SALOME_AISObject.ixx" -using namespace std; diff --git a/src/OBJECT/SALOME_AISObject.hxx b/src/OBJECT/SALOME_AISObject.hxx deleted file mode 100644 index 148e1574b..000000000 --- a/src/OBJECT/SALOME_AISObject.hxx +++ /dev/null @@ -1,119 +0,0 @@ -// SALOME OBJECT : implementation of interactive object visualization for OCC and VTK viewers -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_AISObject.hxx -// Module : SALOME - -#ifndef _SALOME_AISObject_HeaderFile -#define _SALOME_AISObject_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_SALOME_AISObject_HeaderFile -#include -#endif - -#ifndef _AIS_InteractiveObject_HeaderFile -#include -#endif -#ifndef _Handle_SALOME_InteractiveObject_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif -class SALOME_InteractiveObject; - - -class SALOME_AISObject : public AIS_InteractiveObject { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } -// inline void operator delete(void *anAddress, size_t size) -// { -// if (anAddress) Standard::Free((Standard_Address&)anAddress,size); -// } - // Methods PUBLIC - // -Standard_EXPORT virtual Handle_SALOME_InteractiveObject getIO() = 0; -Standard_EXPORT virtual Standard_Boolean hasIO() = 0; -Standard_EXPORT virtual Standard_CString getName() = 0; -Standard_EXPORT virtual void setName(const Standard_CString aName) = 0; -Standard_EXPORT ~SALOME_AISObject(); - - - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& SALOME_AISObject_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/OBJECT/SALOME_AISObject.ixx b/src/OBJECT/SALOME_AISObject.ixx deleted file mode 100644 index e1fef4c88..000000000 --- a/src/OBJECT/SALOME_AISObject.ixx +++ /dev/null @@ -1,87 +0,0 @@ -// SALOME OBJECT : implementation of interactive object visualization for OCC and VTK viewers -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_AISObject.ixx -// Module : SALOME - -#include "SALOME_AISObject.jxx" - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -SALOME_AISObject::~SALOME_AISObject() {} - - - -Standard_EXPORT Handle_Standard_Type& SALOME_AISObject_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(AIS_InteractiveObject); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(AIS_InteractiveObject); - static Handle_Standard_Type aType2 = STANDARD_TYPE(SelectMgr_SelectableObject); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(SelectMgr_SelectableObject); - static Handle_Standard_Type aType3 = STANDARD_TYPE(PrsMgr_PresentableObject); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(PrsMgr_PresentableObject); - static Handle_Standard_Type aType4 = STANDARD_TYPE(MMgt_TShared); - if ( aType4.IsNull()) aType4 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType5 = STANDARD_TYPE(Standard_Transient); - if ( aType5.IsNull()) aType5 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,aType4,aType5,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("SALOME_AISObject", - sizeof(SALOME_AISObject), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(SALOME_AISObject) Handle(SALOME_AISObject)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(SALOME_AISObject) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(SALOME_AISObject))) { - _anOtherObject = Handle(SALOME_AISObject)((Handle(SALOME_AISObject)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& SALOME_AISObject::DynamicType() const -{ - return STANDARD_TYPE(SALOME_AISObject) ; -} -Standard_Boolean SALOME_AISObject::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(SALOME_AISObject) == AType || AIS_InteractiveObject::IsKind(AType)); -} -Handle_SALOME_AISObject::~Handle_SALOME_AISObject() {} - diff --git a/src/OBJECT/SALOME_AISObject.jxx b/src/OBJECT/SALOME_AISObject.jxx deleted file mode 100644 index 7fd42edaf..000000000 --- a/src/OBJECT/SALOME_AISObject.jxx +++ /dev/null @@ -1,32 +0,0 @@ -// SALOME OBJECT : implementation of interactive object visualization for OCC and VTK viewers -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_AISObject.jxx -// Module : SALOME - -#ifndef _SALOME_InteractiveObject_HeaderFile -#include "SALOME_InteractiveObject.hxx" -#endif -#ifndef _SALOME_AISObject_HeaderFile -#include "SALOME_AISObject.hxx" -#endif diff --git a/src/OBJECT/SALOME_AISShape.cxx b/src/OBJECT/SALOME_AISShape.cxx deleted file mode 100644 index b439aef2b..000000000 --- a/src/OBJECT/SALOME_AISShape.cxx +++ /dev/null @@ -1,34 +0,0 @@ -// SALOME OBJECT : implementation of interactive object visualization for OCC and VTK viewers -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_AISShape.hxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "SALOME_AISShape.ixx" -using namespace std; - -SALOME_AISShape::SALOME_AISShape(const TopoDS_Shape& shape): AIS_Shape(shape) { -} - diff --git a/src/OBJECT/SALOME_AISShape.hxx b/src/OBJECT/SALOME_AISShape.hxx deleted file mode 100644 index 6cc5077df..000000000 --- a/src/OBJECT/SALOME_AISShape.hxx +++ /dev/null @@ -1,122 +0,0 @@ -// SALOME OBJECT : implementation of interactive object visualization for OCC and VTK viewers -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_AISShape.hxx -// Module : SALOME - -#ifndef _SALOME_AISShape_HeaderFile -#define _SALOME_AISShape_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_SALOME_AISShape_HeaderFile -#include -#endif - -#ifndef _Standard_CString_HeaderFile -#include -#endif -#ifndef _Handle_SALOME_InteractiveObject_HeaderFile -#include -#endif -#ifndef _AIS_Shape_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class SALOME_InteractiveObject; -class TopoDS_Shape; -class TColStd_IndexedMapOfInteger; - - -class SALOME_AISShape : public AIS_Shape { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } -// inline void operator delete(void *anAddress, size_t size) -// { -// if (anAddress) Standard::Free((Standard_Address&)anAddress,size); -// } - // Methods PUBLIC - // -Standard_EXPORT SALOME_AISShape(const TopoDS_Shape& shape); -Standard_EXPORT virtual Handle_SALOME_InteractiveObject getIO() = 0; -Standard_EXPORT virtual Standard_Boolean hasIO() = 0; -Standard_EXPORT virtual Standard_CString getName() = 0; -Standard_EXPORT virtual void setName(Standard_CString aName) = 0; -Standard_EXPORT virtual void highlightSubShapes(const TColStd_IndexedMapOfInteger& aIndexMap, const Standard_Boolean aHighlight ) = 0; -Standard_EXPORT ~SALOME_AISShape(); - - - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& SALOME_AISShape_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/OBJECT/SALOME_AISShape.ixx b/src/OBJECT/SALOME_AISShape.ixx deleted file mode 100644 index 37012c36e..000000000 --- a/src/OBJECT/SALOME_AISShape.ixx +++ /dev/null @@ -1,89 +0,0 @@ -// SALOME OBJECT : implementation of interactive object visualization for OCC and VTK viewers -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_AISShape.ixx -// Module : SALOME - -#include "SALOME_AISShape.jxx" - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -SALOME_AISShape::~SALOME_AISShape() {} - - - -Standard_EXPORT Handle_Standard_Type& SALOME_AISShape_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(AIS_Shape); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(AIS_Shape); - static Handle_Standard_Type aType2 = STANDARD_TYPE(AIS_InteractiveObject); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(AIS_InteractiveObject); - static Handle_Standard_Type aType3 = STANDARD_TYPE(SelectMgr_SelectableObject); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(SelectMgr_SelectableObject); - static Handle_Standard_Type aType4 = STANDARD_TYPE(PrsMgr_PresentableObject); - if ( aType4.IsNull()) aType4 = STANDARD_TYPE(PrsMgr_PresentableObject); - static Handle_Standard_Type aType5 = STANDARD_TYPE(MMgt_TShared); - if ( aType5.IsNull()) aType5 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType6 = STANDARD_TYPE(Standard_Transient); - if ( aType6.IsNull()) aType6 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,aType4,aType5,aType6,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("SALOME_AISShape", - sizeof(SALOME_AISShape), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(SALOME_AISShape) Handle(SALOME_AISShape)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(SALOME_AISShape) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(SALOME_AISShape))) { - _anOtherObject = Handle(SALOME_AISShape)((Handle(SALOME_AISShape)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& SALOME_AISShape::DynamicType() const -{ - return STANDARD_TYPE(SALOME_AISShape) ; -} -Standard_Boolean SALOME_AISShape::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(SALOME_AISShape) == AType || AIS_Shape::IsKind(AType)); -} -Handle_SALOME_AISShape::~Handle_SALOME_AISShape() {} - diff --git a/src/OBJECT/SALOME_AISShape.jxx b/src/OBJECT/SALOME_AISShape.jxx deleted file mode 100644 index 6ac28f17b..000000000 --- a/src/OBJECT/SALOME_AISShape.jxx +++ /dev/null @@ -1,35 +0,0 @@ -// SALOME OBJECT : implementation of interactive object visualization for OCC and VTK viewers -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_AISShape.jxx -// Module : SALOME - -#ifndef _SALOME_InteractiveObject_HeaderFile -#include "SALOME_InteractiveObject.hxx" -#endif -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _SALOME_AISShape_HeaderFile -#include "SALOME_AISShape.hxx" -#endif diff --git a/src/OBJECT/SALOME_Actor.cxx b/src/OBJECT/SALOME_Actor.cxx deleted file mode 100644 index 4b0b088e8..000000000 --- a/src/OBJECT/SALOME_Actor.cxx +++ /dev/null @@ -1,298 +0,0 @@ -// SALOME OBJECT : implementation of interactive object visualization for OCC and VTK viewers -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_Actor.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -/*! - \class SALOME_Actor SALOME_Actor.h - \brief Abstract class of SALOME Objects in VTK. -*/ - -#include "SALOME_Actor.h" -#include "SALOME_Transform.h" -#include "SALOME_GeometryFilter.h" -#include "SALOME_TransformFilter.h" -#include "SALOME_PassThroughFilter.h" - -// SALOME Includes -#include "utilities.h" - -// VTK Includes -#include -#include -#include -#include -#include -#include - -using namespace std; - -int SALOME_POINT_SIZE = 3; - - -vtkStandardNewMacro(SALOME_Actor); - - -SALOME_Actor::SALOME_Actor(){ - myIsHighlighted = myIsPreselected = false; - - myRepresentation = VTK_WIREFRAME; - myDisplayMode = myRepresentation - 1; - - myProperty = vtkProperty::New(); - PreviewProperty = NULL; - - myIsInfinite = false; - - myIsResolveCoincidentTopology = true; - - vtkMapper::GetResolveCoincidentTopologyPolygonOffsetParameters(myPolygonOffsetFactor, - myPolygonOffsetUnits); - myStoreMapping = false; - myGeomFilter = SALOME_GeometryFilter::New(); - - myTransformFilter = SALOME_TransformFilter::New(); - - for(int i = 0; i < 6; i++) - myPassFilter.push_back(SALOME_PassThroughFilter::New()); -} - - -SALOME_Actor::~SALOME_Actor(){ - SetPreviewProperty(NULL); - - myGeomFilter->UnRegisterAllOutputs(); - myGeomFilter->Delete(); - - myTransformFilter->UnRegisterAllOutputs(); - myTransformFilter->Delete(); - - for(int i = 0, iEnd = myPassFilter.size(); i < iEnd; i++){ - if(myPassFilter[i]){ - myPassFilter[i]->UnRegisterAllOutputs(); - myPassFilter[i]->Delete(); - } - } - - myProperty->Delete(); -} - - -void SALOME_Actor::AddToRender(vtkRenderer* theRenderer){ - theRenderer->AddActor(this); -} - -void SALOME_Actor::RemoveFromRender(vtkRenderer* theRenderer){ - theRenderer->RemoveActor(this); -} - - -void SALOME_Actor::SetTransform(SALOME_Transform* theTransform){ - myTransformFilter->SetTransform(theTransform); -} - - -void SALOME_Actor::SetMapper(vtkMapper* theMapper){ - InitPipeLine(theMapper); -} - -void SALOME_Actor::InitPipeLine(vtkMapper* theMapper){ - if(theMapper){ - int anId = 0; - myPassFilter[ anId ]->SetInput( theMapper->GetInput() ); - myPassFilter[ anId + 1]->SetInput( myPassFilter[ anId ]->GetOutput() ); - - anId++; // 1 - myGeomFilter->SetStoreMapping( myStoreMapping ); - myGeomFilter->SetInput( myPassFilter[ anId ]->GetOutput() ); - - anId++; // 2 - myPassFilter[ anId ]->SetInput( myGeomFilter->GetOutput() ); - myPassFilter[ anId + 1 ]->SetInput( myPassFilter[ anId ]->GetOutput() ); - - anId++; // 3 - myTransformFilter->SetInput( myPassFilter[ anId ]->GetPolyDataOutput() ); - - anId++; // 4 - myPassFilter[ anId ]->SetInput( myTransformFilter->GetOutput() ); - myPassFilter[ anId + 1 ]->SetInput( myPassFilter[ anId ]->GetOutput() ); - - anId++; // 5 - if(vtkDataSetMapper* aMapper = dynamic_cast(theMapper)){ - aMapper->SetInput(myPassFilter[anId]->GetOutput()); - }else if(vtkPolyDataMapper* aMapper = dynamic_cast(theMapper)){ - aMapper->SetInput(myPassFilter[anId]->GetPolyDataOutput()); - } - } - vtkLODActor::SetMapper(theMapper); -} - - -void SALOME_Actor::Render(vtkRenderer *ren, vtkMapper* m){ - if(myIsResolveCoincidentTopology){ - int aResolveCoincidentTopology = vtkMapper::GetResolveCoincidentTopology(); - float aFactor, aUnit; - vtkMapper::GetResolveCoincidentTopologyPolygonOffsetParameters(aFactor,aUnit); - - vtkMapper::SetResolveCoincidentTopologyToPolygonOffset(); - vtkMapper::SetResolveCoincidentTopologyPolygonOffsetParameters(myPolygonOffsetFactor, - myPolygonOffsetUnits); - vtkLODActor::Render(ren,m); - - vtkMapper::SetResolveCoincidentTopologyPolygonOffsetParameters(aFactor,aUnit); - vtkMapper::SetResolveCoincidentTopology(aResolveCoincidentTopology); - }else{ - vtkLODActor::Render(ren,m); - } -} - - -void SALOME_Actor::SetResolveCoincidentTopology(bool theIsResolve) { - myIsResolveCoincidentTopology = theIsResolve; -} - -void SALOME_Actor::SetPolygonOffsetParameters(float factor, float units){ - myPolygonOffsetFactor = factor; - myPolygonOffsetUnits = units; -} - -void SALOME_Actor::GetPolygonOffsetParameters(float& factor, float& units){ - factor = myPolygonOffsetFactor; - units = myPolygonOffsetUnits; -} - - -vtkDataSet* SALOME_Actor::GetInput(){ - return myPassFilter.front()->GetOutput(); -} - - -unsigned long int SALOME_Actor::GetMTime(){ - unsigned long mTime = this->Superclass::GetMTime(); - unsigned long time = myTransformFilter->GetMTime(); - mTime = ( time > mTime ? time : mTime ); - if(vtkDataSet *aDataSet = myPassFilter[0]->GetInput()){ - time = aDataSet->GetMTime(); - mTime = ( time > mTime ? time : mTime ); - } - return mTime; -} - - -void SALOME_Actor::SetRepresentation(int theMode) { - switch(myRepresentation){ - case VTK_POINTS : - case VTK_SURFACE : - myProperty->DeepCopy(GetProperty()); - } - switch(theMode){ - case VTK_POINTS : - case VTK_SURFACE : - GetProperty()->DeepCopy(myProperty); - break; - default: - GetProperty()->SetAmbient(1.0); - GetProperty()->SetDiffuse(0.0); - GetProperty()->SetSpecular(0.0); - } - switch(theMode){ - case 3 : - myGeomFilter->SetInside(true); - GetProperty()->SetRepresentation(1); - break; - case VTK_POINTS : - GetProperty()->SetPointSize(SALOME_POINT_SIZE); - default : - GetProperty()->SetRepresentation(theMode); - myGeomFilter->SetInside(false); - } - myRepresentation = theMode; -} - -int SALOME_Actor::GetRepresentation(){ - return myRepresentation; -} - - -vtkCell* SALOME_Actor::GetElemCell(int theObjID){ - return GetInput()->GetCell(theObjID); -} - - -float* SALOME_Actor::GetNodeCoord(int theObjID){ - return GetInput()->GetPoint(theObjID); -} - - -//================================================================================= -// function : GetObjDimension -// purpose : Return object dimension. -// Virtual method shoulb be redifined by derived classes -//================================================================================= -int SALOME_Actor::GetObjDimension( const int theObjId ) -{ - if ( vtkCell* aCell = GetElemCell(theObjId) ) - return aCell->GetCellDimension(); - return 0; -} - - -bool SALOME_Actor::IsInfinitive(){ - return myIsInfinite; -} - - -void SALOME_Actor::SetOpacity(float theOpacity){ - myOpacity = theOpacity; - GetProperty()->SetOpacity(theOpacity); -} - -float SALOME_Actor::GetOpacity(){ - return myOpacity; -} - - -void SALOME_Actor::SetColor(float r,float g,float b){ - GetProperty()->SetColor(r,g,b); -} - -void SALOME_Actor::GetColor(float& r,float& g,float& b){ - float aColor[3]; - GetProperty()->GetColor(aColor); - r = aColor[0]; - g = aColor[1]; - b = aColor[2]; -} - - -int SALOME_Actor::getDisplayMode(){ - return myDisplayMode; -} - -void SALOME_Actor::setDisplayMode(int theMode){ - SetRepresentation(theMode+1); - myDisplayMode = GetRepresentation() - 1; -} diff --git a/src/OBJECT/SALOME_Actor.h b/src/OBJECT/SALOME_Actor.h deleted file mode 100644 index 6b57f9ca8..000000000 --- a/src/OBJECT/SALOME_Actor.h +++ /dev/null @@ -1,171 +0,0 @@ -// SALOME OBJECT : implementation of interactive object visualization for OCC and VTK viewers -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_Actor.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef SALOME_ACTOR_H -#define SALOME_ACTOR_H - -#include - -#include -#include - -class vtkCell; -class vtkDataSet; -class vtkPolyData; -class vtkCamera; - -#include "SALOME_InteractiveObject.hxx" - -class SALOME_Transform; -class SALOME_GeometryFilter; -class SALOME_TransformFilter; -class SALOME_PassThroughFilter; - -extern int SALOME_POINT_SIZE; - -class SALOME_Actor : public vtkLODActor{ - public: - static SALOME_Actor* New(); - - vtkTypeMacro(SALOME_Actor,vtkLODActor); - - virtual Standard_Boolean hasIO() { return !myIO.IsNull(); } - virtual const Handle(SALOME_InteractiveObject)& getIO() { return myIO; } - virtual void setIO(const Handle(SALOME_InteractiveObject)& io) { myIO = io; } - - virtual const char* getName() { return myName.c_str(); } - virtual void setName(const char* theName){ - if(hasIO()) myIO->setName(theName); - myName = theName; - } - - // To generate highlight automaticaly - virtual bool hasHighlight() { return false; } - virtual void highlight(bool theHighlight) { myIsHighlighted = theHighlight; } - virtual bool isHighlighted() { return myIsHighlighted; } - - virtual void SetOpacity(float theOpacity); - virtual float GetOpacity(); - - virtual void SetColor(float r,float g,float b); - virtual void GetColor(float& r,float& g,float& b); - void SetColor(const float theRGB[3]){ - SetColor(theRGB[0],theRGB[1],theRGB[2]); - } - - vtkSetObjectMacro(PreviewProperty,vtkProperty); - - virtual void SetPreSelected(bool thePreselect = false) { myIsPreselected = thePreselect;} - - - // Used to obtain all dependent actors - virtual void GetChildActors(vtkActorCollection*) {}; - - virtual void AddToRender(vtkRenderer* theRenderer); - virtual void RemoveFromRender(vtkRenderer* theRenderer); - - - // For selection mapping purpose - virtual int GetNodeObjId(int theVtkID) { return theVtkID;} - virtual float* GetNodeCoord(int theObjID); - - virtual int GetElemObjId(int theVtkID) { return theVtkID;} - virtual vtkCell* GetElemCell(int theObjID); - - virtual int GetObjDimension( const int theObjId ); - - virtual void SetMapper(vtkMapper* theMapper); - virtual vtkDataSet* GetInput(); - - - virtual void SetTransform(SALOME_Transform* theTransform); - virtual unsigned long int GetMTime(); - - virtual void SetRepresentation(int theMode); - virtual int GetRepresentation(); - - virtual int getDisplayMode(); - virtual void setDisplayMode(int theMode); - - // Infinitive means actor without size (point for example), - // which is not taken into account in calculation of boundaries of the scene - void SetInfinitive(bool theIsInfinite) { myIsInfinite = theIsInfinite; } - virtual bool IsInfinitive(); - - void SetResolveCoincidentTopology(bool theIsResolve); - void SetPolygonOffsetParameters(float factor, float units); - void GetPolygonOffsetParameters(float& factor, float& units); - - virtual void Render(vtkRenderer *, vtkMapper *); - - virtual float GetShrinkFactor() { return 1.0;} - - virtual bool IsShrunkable() { return false;} - virtual bool IsShrunk() { return false;} - - virtual void SetShrink() {} - virtual void UnShrink() {} - - virtual bool IsSetCamera() const { return false; } - virtual bool IsResizable() const { return false; } - virtual void SetSize( const float ) {} - virtual void SetCamera( vtkCamera* ) {} - - protected: - bool myIsResolveCoincidentTopology; - float myPolygonOffsetFactor; - float myPolygonOffsetUnits; - - Handle(SALOME_InteractiveObject) myIO; - std::string myName; - - vtkProperty *PreviewProperty; - bool myIsPreselected; - - float myOpacity; - bool myIsHighlighted; - int myDisplayMode; - bool myIsInfinite; - - bool myStoreMapping; - SALOME_GeometryFilter *myGeomFilter; - SALOME_TransformFilter *myTransformFilter; - std::vector myPassFilter; - - int myRepresentation; - vtkProperty *myProperty; - - void InitPipeLine(vtkMapper* theMapper); - - SALOME_Actor(); - ~SALOME_Actor(); -}; - - -#endif // SALOME_ACTOR_H - diff --git a/src/OBJECT/SALOME_InteractiveObject.cxx b/src/OBJECT/SALOME_InteractiveObject.cxx deleted file mode 100644 index 4da402dc6..000000000 --- a/src/OBJECT/SALOME_InteractiveObject.cxx +++ /dev/null @@ -1,111 +0,0 @@ -// SALOME OBJECT : implementation of interactive object visualization for OCC and VTK viewers -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_InteractiveObject.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -/*! - \class SALOME_InteractiveObject SALOME_InteractiveObject.hxx - \brief ... -*/ - -#include "SALOME_InteractiveObject.ixx" -using namespace std; - -SALOME_InteractiveObject::SALOME_InteractiveObject() -{ - myEntry = ""; - myName = ""; - myComponentDataType = ""; - myReference = ""; -} - -SALOME_InteractiveObject::SALOME_InteractiveObject(const char* anEntry, - const char* aComponentDataType, - const char* aName): - myEntry(anEntry), - myName(aName), - myComponentDataType(aComponentDataType), - myReference("") -{} - -void SALOME_InteractiveObject::setEntry(const char* anEntry){ - myEntry = anEntry; -} - -const char* SALOME_InteractiveObject::getEntry(){ - return myEntry.c_str(); -} - -void SALOME_InteractiveObject::setComponentDataType(const char* aComponentDataType){ - myComponentDataType = aComponentDataType; -} - -const char* SALOME_InteractiveObject::getComponentDataType(){ - return myComponentDataType.c_str(); -} - -void SALOME_InteractiveObject::setName(const char* aName){ - myName = aName; -} - -const char* SALOME_InteractiveObject::getName(){ - return myName.c_str(); -} - -Standard_Boolean SALOME_InteractiveObject::hasEntry(){ - return myEntry != ""; -} - -Standard_Boolean SALOME_InteractiveObject::isSame(const Handle(SALOME_InteractiveObject)& anIO ){ - if ( anIO->hasEntry() && this->hasEntry() ) { - if ( myEntry == anIO->getEntry() ) - return Standard_True; - } - - return Standard_False; -} - -Standard_Boolean SALOME_InteractiveObject::isComponentType(const char* ComponentDataType){ - if ( myComponentDataType == ComponentDataType ) - return Standard_True; - else - return Standard_False; -} - -Standard_Boolean SALOME_InteractiveObject::hasReference() -{ - return myReference != ""; -} - -const char* SALOME_InteractiveObject::getReference() -{ - return myReference.c_str(); -} - -void SALOME_InteractiveObject::setReference(const char* aReference) -{ - myReference = aReference; -} diff --git a/src/OBJECT/SALOME_InteractiveObject.hxx b/src/OBJECT/SALOME_InteractiveObject.hxx deleted file mode 100644 index 91d1e5af2..000000000 --- a/src/OBJECT/SALOME_InteractiveObject.hxx +++ /dev/null @@ -1,136 +0,0 @@ -// SALOME OBJECT : implementation of interactive object visualization for OCC and VTK viewers -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_InteractiveObject.hxx -// Module : SALOME - -#ifndef _SALOME_InteractiveObject_HeaderFile -#define _SALOME_InteractiveObject_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_SALOME_InteractiveObject_HeaderFile -#include -#endif - -#ifndef _Standard_CString_HeaderFile -#include -#endif -#ifndef _MMgt_TShared_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif - -#include - -class SALOME_InteractiveObject : public MMgt_TShared { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT SALOME_InteractiveObject(); -Standard_EXPORT SALOME_InteractiveObject(const char* anEntry, - const char* aComponentDataType, - const char* aName = ""); -Standard_EXPORT void setEntry(const char* anEntry) ; -Standard_EXPORT const char* getEntry() ; -Standard_EXPORT void setName(const char* aName) ; -Standard_EXPORT const char* getName() ; -Standard_EXPORT Standard_Boolean hasEntry() ; -Standard_EXPORT virtual Standard_Boolean isSame(const Handle(SALOME_InteractiveObject)& anIO) ; - -Standard_EXPORT Standard_Boolean hasReference() ; -Standard_EXPORT const char* getReference() ; -Standard_EXPORT void setReference(const char* aReference) ; - -Standard_EXPORT void setComponentDataType(const char* ComponentDataType) ; -Standard_EXPORT const char* getComponentDataType() ; -Standard_EXPORT Standard_Boolean isComponentType(const char* ComponentDataType) ; - //Standard_EXPORT Standard_Boolean isComponentType(std::string ComponentDataType) ; -Standard_EXPORT virtual ~SALOME_InteractiveObject(); - -// Must be defined for using by NCollection for ceratin of data map -friend Standard_Boolean IsEqual(const Handle(SALOME_InteractiveObject)& anIO1, - const Handle(SALOME_InteractiveObject)& anIO2) -{ return anIO1->isSame( anIO2 ); } - - - - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& SALOME_InteractiveObject_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - std::string myReference; - std::string myEntry; - std::string myName; - std::string myComponentDataType; - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/OBJECT/SALOME_InteractiveObject.ixx b/src/OBJECT/SALOME_InteractiveObject.ixx deleted file mode 100644 index 39be2411a..000000000 --- a/src/OBJECT/SALOME_InteractiveObject.ixx +++ /dev/null @@ -1,81 +0,0 @@ -// SALOME OBJECT : implementation of interactive object visualization for OCC and VTK viewers -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_InteractiveObject.ixx -// Module : SALOME - -#include "SALOME_InteractiveObject.jxx" - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -SALOME_InteractiveObject::~SALOME_InteractiveObject() {} - - - -Standard_EXPORT Handle_Standard_Type& SALOME_InteractiveObject_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(MMgt_TShared); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType2 = STANDARD_TYPE(Standard_Transient); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("SALOME_InteractiveObject", - sizeof(SALOME_InteractiveObject), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(SALOME_InteractiveObject) Handle(SALOME_InteractiveObject)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(SALOME_InteractiveObject) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(SALOME_InteractiveObject))) { - _anOtherObject = Handle(SALOME_InteractiveObject)((Handle(SALOME_InteractiveObject)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& SALOME_InteractiveObject::DynamicType() const -{ - return STANDARD_TYPE(SALOME_InteractiveObject) ; -} -Standard_Boolean SALOME_InteractiveObject::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(SALOME_InteractiveObject) == AType || MMgt_TShared::IsKind(AType)); -} -Handle_SALOME_InteractiveObject::~Handle_SALOME_InteractiveObject() {} - diff --git a/src/OBJECT/SALOME_InteractiveObject.jxx b/src/OBJECT/SALOME_InteractiveObject.jxx deleted file mode 100644 index 19aba4c63..000000000 --- a/src/OBJECT/SALOME_InteractiveObject.jxx +++ /dev/null @@ -1,29 +0,0 @@ -// SALOME OBJECT : implementation of interactive object visualization for OCC and VTK viewers -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_InteractiveObject.jxx -// Module : SALOME - -#ifndef _SALOME_InteractiveObject_HeaderFile -#include "SALOME_InteractiveObject.hxx" -#endif diff --git a/src/OCCViewer/Makefile.in b/src/OCCViewer/Makefile.in deleted file mode 100644 index 669b4f8ca..000000000 --- a/src/OCCViewer/Makefile.in +++ /dev/null @@ -1,50 +0,0 @@ -# source path -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -EXPORT_HEADERS = \ - OCCViewer_AISSelector.h \ - OCCViewer_Viewer3d.h \ - OCCViewer_ViewFrame.h \ - OCCViewer_ViewPort.h \ - OCCViewer_ViewPort3d.h \ - OCCViewer_VService.h \ - OCCViewer_Prs.h - -# Libraries targets - -LIB = libOCCViewer.la -LIB_SRC = OCCViewer.cxx \ - OCCViewer_Viewer3d.cxx \ - OCCViewer_ViewFrame.cxx \ - OCCViewer_ViewPort.cxx \ - OCCViewer_ViewPort3d.cxx \ - OCCViewer_AISSelector.cxx \ - OCCViewer_VService.cxx \ - OCCViewer_Prs.cxx - -LIB_MOC = \ - OCCViewer.h \ - OCCViewer_AISSelector.h \ - OCCViewer_Viewer3d.h \ - OCCViewer_ViewFrame.h \ - OCCViewer_ViewPort.h \ - OCCViewer_ViewPort3d.h - -LIB_CLIENT_IDL = SALOMEDS.idl \ - SALOME_ModuleCatalog.idl \ - SALOME_Component.idl \ - SALOME_ContainerManager.idl \ - SALOME_Exception.idl - - -CPPFLAGS+=$(QT_INCLUDES) $(OCC_INCLUDES) $(OGL_INCLUDES) $(PYTHON_INCLUDES) -LDFLAGS+=$(QT_MT_LIBS) $(OGL_LIBS) -lSalomePrs -lSalomeGUI -lToolsGUI - - -@CONCLUDE@ diff --git a/src/OCCViewer/OCCViewer.cxx b/src/OCCViewer/OCCViewer.cxx deleted file mode 100644 index 70a92624c..000000000 --- a/src/OCCViewer/OCCViewer.cxx +++ /dev/null @@ -1,44 +0,0 @@ -// SALOME OCCViewer : build OCC Viewer into Salome desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : OCCViewer.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "OCCViewer.h" -#include "OCCViewer_ViewFrame.h" -using namespace std; - -QAD_ViewFrame* OCCViewer::createView(QAD_RightFrame* parent) -{ - return new OCCViewer_ViewFrame( parent, "occView" ); -} - -extern "C" -{ - QAD_ViewFrame* createView(QAD_RightFrame* parent) - { - return OCCViewer::createView(parent); - } -} diff --git a/src/OCCViewer/OCCViewer.h b/src/OCCViewer/OCCViewer.h deleted file mode 100644 index f936a55e7..000000000 --- a/src/OCCViewer/OCCViewer.h +++ /dev/null @@ -1,45 +0,0 @@ -// SALOME OCCViewer : build OCC Viewer into Salome desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : OCCViewer.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef OCCViewer_HeaderFile -#define OCCViewer_HeaderFile - -#include "QAD_RightFrame.h" -#include "QAD_ViewFrame.h" - -class OCCViewer : public QObject -{ - Q_OBJECT - -public : - - Standard_EXPORT static QAD_ViewFrame* createView ( QAD_RightFrame* parent); - -}; - -#endif diff --git a/src/OCCViewer/OCCViewer_AISSelector.cxx b/src/OCCViewer/OCCViewer_AISSelector.cxx deleted file mode 100644 index a5f5a38a0..000000000 --- a/src/OCCViewer/OCCViewer_AISSelector.cxx +++ /dev/null @@ -1,245 +0,0 @@ -// SALOME OCCViewer : build OCC Viewer into Salome desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : OCCViewer_AISSelector.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -/*! - \class OCCViewer_AISSelector OCCViewer_AISSelector.h - \brief Selector for AIS interactive context. - - Used only by Viewer Open CASCADE. -*/ - -#include "OCCViewer_AISSelector.h" -using namespace std; - -/*! - Constructor -*/ -OCCViewer_AISSelector::OCCViewer_AISSelector( const Handle (AIS_InteractiveContext)& aisContext) : - myAISContext ( aisContext ), - myEnableSelection( true ), - myEnableMultipleSelection( true ) -{ - initialize(); -} - -/*! - Destructor -*/ -OCCViewer_AISSelector::~OCCViewer_AISSelector() -{ - cleanup(); -} - -/*! - Initialization ( internal ) -*/ -void OCCViewer_AISSelector::initialize() -{ - QAD_ASSERT_DEBUG_ONLY ( !myAISContext.IsNull() ); - - myHilightColor = Quantity_NOC_CYAN1; - mySelectColor = Quantity_NOC_WHITE; - - myAISContext->SetHilightColor( myHilightColor ); - myAISContext->SelectionColor( mySelectColor ); - myAISContext->SetSubIntensityColor( Quantity_NOC_CYAN1 ); -} - -/*! - Cleanup ( internal ) -*/ -void OCCViewer_AISSelector::cleanup() -{ -} - -/*! - Sets the color to hilight the detected objects -*/ -void OCCViewer_AISSelector::setHilightColor ( Quantity_NameOfColor color ) -{ - myHilightColor = color; -} - -/*! - Sets the color to display the selected objects -*/ -void OCCViewer_AISSelector::setSelectColor ( Quantity_NameOfColor color ) -{ - mySelectColor = color; -} - -/*! - Sets the interactive context for this selector -*/ -void OCCViewer_AISSelector::setContext ( const Handle (AIS_InteractiveContext)& aisContext ) -{ - QAD_ASSERT_DEBUG_ONLY ( !aisContext.IsNull() ); - myAISContext = aisContext; -} - -/*! - Checks the status of pick and emits 'selSelectionDone' or - 'selSelectionCancel'. - Returns 'true' if no error, 'false' otherwise. -*/ -void OCCViewer_AISSelector::checkSelection ( int numSelBefore ) -{ - int numSelAfter = numSelected(); - if ( numSelAfter < 1 && numSelBefore > 0 ) - emit selSelectionCancel( false ); - else if ( numSelAfter > 0 ) - emit selSelectionDone( numSelAfter > 1 ); -} - - -/*! - Detects the interactive objects at position (x,y). - Returns 'true' if no error, 'false' otherwise. -*/ -void OCCViewer_AISSelector::moveTo ( int x, int y, const Handle (V3d_View)& view ) -{ - if ( !myEnableSelection ) - return; - - QAD_ASSERT_DEBUG_ONLY ( !myAISContext.IsNull() ); - myAISContext->MoveTo (x, y, view); -} - -/*! - Selects the detected interactive objects. - Calls checkSelection() for checking the status. -*/ -void OCCViewer_AISSelector::select () -{ - if ( !myEnableSelection ) - return; - - QAD_ASSERT_DEBUG_ONLY ( !myAISContext.IsNull() ); - int numBefore = numSelected(); - - myAISContext->Select(); - - /* send notifications */ - checkSelection ( numBefore ); -} - -/*! - Selects the objects covered by the rectangle. - Multiple selection must be enabled to get use of this function. - Calls checkSelection() for checking the status. -*/ -void OCCViewer_AISSelector::select ( int left, int top, int right, int bottom, - const Handle (V3d_View)& view ) -{ - if ( !myEnableSelection || !myEnableMultipleSelection ) - return; /* selection with rectangle is considered as multiple selection */ - - QAD_ASSERT_DEBUG_ONLY ( !myAISContext.IsNull() ); - int numBefore = numSelected(); - - myAISContext->Select(left, top, right, bottom, view); - - /* send notifications */ - checkSelection ( numBefore ); -} - -/*! - Adds new selected objects to the objects previously selected. - Multiple selection must be enabled to get use of this function. - Calls checkSelection() for checking the status. -*/ -void OCCViewer_AISSelector::shiftSelect () -{ - if ( !myEnableSelection ) - return; - - QAD_ASSERT_DEBUG_ONLY ( !myAISContext.IsNull() ); - int numBefore = numSelected(); - - if ( numBefore && !myEnableMultipleSelection) - myAISContext->Select(); - else - myAISContext->ShiftSelect(); - - /* send notifications */ - checkSelection ( numBefore ); -} - -/*! - Adds new selected objects covered by the rectangle to the objects - previously selected. - Multiple selection must be enabled to get use of this function. - Calls checkSelection() for checking the status. -*/ -void OCCViewer_AISSelector::shiftSelect ( int left, int top, int right, int bottom, - const Handle (V3d_View)& view ) - -{ - if ( !myEnableSelection || !myEnableMultipleSelection ) - return; /* selection with rectangle is considered as multiple selection */ - - QAD_ASSERT_DEBUG_ONLY ( !myAISContext.IsNull() ); - int numBefore = numSelected(); - - myAISContext->ShiftSelect(left,top,right,bottom, view); - - /* send notifications */ - checkSelection ( numBefore ); -} - -/*! - Enables/disables selection -*/ -void OCCViewer_AISSelector::enableSelection( bool bEnable ) -{ - myEnableSelection = bEnable; -} - -/*! - Enables/disables multiple selection i.e - selection of several objects at the same time. - If enabled, non-multiple selection is enabled as well. -*/ -void OCCViewer_AISSelector::enableMultipleSelection( bool bEnable ) -{ - myEnableMultipleSelection = bEnable; - if ( bEnable ) myEnableSelection = bEnable; -} - -/*! - Returns the number of selected objects. -*/ -int OCCViewer_AISSelector::numSelected() const -{ - if ( myAISContext.IsNull() ) - return 0; - - if ( myAISContext->HasOpenedContext() ) - return myAISContext->NbSelected(); - return myAISContext->NbCurrents(); -} diff --git a/src/OCCViewer/OCCViewer_AISSelector.h b/src/OCCViewer/OCCViewer_AISSelector.h deleted file mode 100644 index 8a7bd6524..000000000 --- a/src/OCCViewer/OCCViewer_AISSelector.h +++ /dev/null @@ -1,85 +0,0 @@ -// SALOME OCCViewer : build OCC Viewer into Salome desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : OCCViewer_AISSelector.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef OCCViewer_AISSELECTOR_H -#define OCCViewer_AISSELECTOR_H - -#include "QAD.h" - -// QT Include -#include - -// Open CASCADE Includes -#include -#include - -class QAD_EXPORT OCCViewer_AISSelector : public QObject -{ - Q_OBJECT - - void initialize(); - void cleanup(); - -public: - OCCViewer_AISSelector( const Handle (AIS_InteractiveContext)& ); - ~OCCViewer_AISSelector(); - -public: - void moveTo ( int, int, const Handle (V3d_View)& ); - void select ( int, int, int, int, const Handle (V3d_View)& ); - void shiftSelect ( int, int, int, int, const Handle (V3d_View)& ); - void select (); - void shiftSelect (); - - void setContext ( const Handle (AIS_InteractiveContext)& ); - void setHilightColor ( Quantity_NameOfColor color ); - void setSelectColor ( Quantity_NameOfColor color ); - - void enableSelection( bool ); - void enableMultipleSelection( bool ); - -signals: - void selSelectionDone( bool bAdded ); - void selSelectionCancel( bool bAdded ); - -protected: - void checkSelection ( int numBefore ); - int numSelected() const; - -private: - Handle (AIS_InteractiveContext) myAISContext; // graphic context - Quantity_NameOfColor myHilightColor; // color for hilight object - Quantity_NameOfColor mySelectColor; // color for selected object - - bool myEnableSelection; - bool myEnableMultipleSelection; - -}; - -#endif - diff --git a/src/OCCViewer/OCCViewer_Prs.cxx b/src/OCCViewer/OCCViewer_Prs.cxx deleted file mode 100644 index 35cd69f32..000000000 --- a/src/OCCViewer/OCCViewer_Prs.cxx +++ /dev/null @@ -1,113 +0,0 @@ -// SALOME OCCViewer : build OCC Viewer into Salome desktop -// -// Copyright (C) 2004 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org or email : webmaster.salome@opencascade.org -// -// -// -// File : OCCViewer_Prs.cxx -// Author : Sergey ANIKIN -// Module : SALOME -// $Header$ - -#include "OCCViewer_Prs.h" -using namespace std; - -//========================================================== -/*! - * OCCViewer_Prs::OCCViewer_Prs - * Default constructor - */ -//========================================================== -OCCViewer_Prs::OCCViewer_Prs() -{ - myToActivate = true; -} - -//========================================================== -/*! - * OCCViewer_Prs::OCCViewer_Prs - * Standard constructor - */ -//========================================================== -OCCViewer_Prs::OCCViewer_Prs( const Handle(AIS_InteractiveObject)& obj ) -{ - AddObject( obj ); -} - -//========================================================== -/*! - * OCCViewer_Prs::~OCCViewer_Prs - * Destructor - */ -//========================================================== -OCCViewer_Prs::~OCCViewer_Prs() -{ - myObjects.Clear(); -} - -//========================================================== -/*! - * OCCViewer_Prs::GetObjects - * Get interactive objects list - */ -//========================================================== -void OCCViewer_Prs::GetObjects( AIS_ListOfInteractive& list ) const -{ - list = myObjects; -} - -//========================================================== -/*! - * OCCViewer_Prs::AddObject - * Add interactive object - */ -//========================================================== -void OCCViewer_Prs::AddObject( const Handle(AIS_InteractiveObject)& obj ) -{ - myObjects.Append( obj ); -} - -//========================================================== -/*! - * OCCViewer_Prs::IsNull - * Return 0 if list of the interactive objects is empty - * [ Reimplemented from SALOME_Prs ] - */ -//========================================================== -bool OCCViewer_Prs::IsNull() const -{ - return myObjects.IsEmpty(); -} - -//================================================================= -/*! - * GEOM_Displayer::SetToActivate - * This method is used for activisation/deactivisation of - * objects in the moment of displaying -*/ -//================================================================= -void OCCViewer_Prs::SetToActivate( const bool toActivate ) -{ - myToActivate = toActivate; -} -bool OCCViewer_Prs::ToActivate() const -{ - return myToActivate; -} diff --git a/src/OCCViewer/OCCViewer_Prs.h b/src/OCCViewer/OCCViewer_Prs.h deleted file mode 100644 index c79e59e3f..000000000 --- a/src/OCCViewer/OCCViewer_Prs.h +++ /dev/null @@ -1,69 +0,0 @@ -// SALOME OCCViewer : build OCC Viewer into Salome desktop -// -// Copyright (C) 2004 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org or email : webmaster.salome@opencascade.org -// -// -// -// File : OCCViewer_Prs.h -// Author : Sergey ANIKIN -// Module : SALOME -// $Header$ - -#ifndef OCCVIEWER_PRS_H -#define OCCVIEWER_PRS_H - -#include "SALOME_Prs.h" - -#include -#include - -class OCCViewer_Prs : public SALOME_OCCPrs -{ -public: - OCCViewer_Prs(); - // Default constructor - OCCViewer_Prs( const Handle(AIS_InteractiveObject)& obj ); - // Standard constructor - ~OCCViewer_Prs(); - // Destructor - - void GetObjects( AIS_ListOfInteractive& list ) const; - // Get interactive objects list - void AddObject( const Handle(AIS_InteractiveObject)& obj ); - // Add interactive object - - bool IsNull() const; - // Reimplemented from SALOME_Prs - - /* This method is used for activisation/deactivisation of - objects in the moment of displaying */ - void SetToActivate( const bool ); - bool ToActivate() const; - -private: - AIS_ListOfInteractive myObjects; // list of interactive objects - bool myToActivate; -}; - -#endif - - - - diff --git a/src/OCCViewer/OCCViewer_VService.cxx b/src/OCCViewer/OCCViewer_VService.cxx deleted file mode 100644 index eca0fbbb8..000000000 --- a/src/OCCViewer/OCCViewer_VService.cxx +++ /dev/null @@ -1,281 +0,0 @@ -// SALOME OCCViewer : build OCC Viewer into Salome desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : OCCViewer_VService.cxx -// Author : GG, FMN, Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "OCCViewer_VService.h" - -// Open CASCADE Includes -#include -#include -#include - -#include -#include -#include - -#ifdef WNT -#include -#include -#include -#include -#include -#else -#include -#include -#include -#include -#include -#endif -using namespace std; - -// For 2d -#define LOPTIM -#ifdef WNT -#ifndef LOPTIM -static Handle(WNT_GraphicDevice) XServiceDefault2dDevice; -static Handle(WNT_GraphicDevice) XServiceImageDevice; -#else -static Handle(WNT_GraphicDevice)& _XServiceDefault2dDevice() { -static Handle(WNT_GraphicDevice) XServiceDefault2dDevice; -return XServiceDefault2dDevice; -} -#define XServiceDefault2dDevice _XServiceDefault2dDevice() - -static Handle(WNT_GraphicDevice)& _XServiceImageDevice() { -static Handle(WNT_GraphicDevice) XServiceImageDevice; -return XServiceImageDevice; -} -#define XServiceImageDevice _XServiceImageDevice() -#endif // LOPTIM -#else -#ifndef LOPTIM -static Handle(Xw_GraphicDevice) XServiceDefault2dDevice; -static Handle(Xw_GraphicDevice) XServiceImageDevice; -#else -static Handle(Xw_GraphicDevice)& _XServiceDefault2dDevice() { -static Handle(Xw_GraphicDevice) XServiceDefault2dDevice; -return XServiceDefault2dDevice; -} -#define XServiceDefault2dDevice _XServiceImageDevice() - -static Handle(Xw_GraphicDevice)& _XServiceImageDevice() { -static Handle(Xw_GraphicDevice) XServiceImageDevice; -return XServiceImageDevice; -} -#define XServiceImageDevice _XServiceImageDevice() -#endif // LOPTIM -#endif // WNT - - -// ==================================== 3D ================================================================ -/*----------------------------------------------------------------------*/ - -void OCCViewer_VService::SetWindow (const Handle(V3d_View)& aView, - const Standard_Integer hiwin, - const Standard_Integer lowin, - const Xw_WindowQuality aQuality) -{ -#ifdef WNT - Handle(WNT_Window) w = new WNT_Window(Handle(Graphic3d_WNTGraphicDevice)::DownCast(aView->Viewer()->Device()),hiwin,lowin); -#else - Handle(Xw_Window) w = new Xw_Window(Handle(Graphic3d_GraphicDevice)::DownCast(aView->Viewer()->Device()),hiwin,lowin,aQuality); -#endif - aView->SetWindow(w); -// aView->SetShadingModel(V3d_GOURAUD); -} - -/*----------------------------------------------------------------------*/ - -void OCCViewer_VService::SetMagnify (const Handle(V3d_View)& aView, - const Standard_Integer hiwin, - const Standard_Integer lowin, - const Handle(V3d_View)& aPreviousView, - const Standard_Integer x1, - const Standard_Integer y1, - const Standard_Integer x2, - const Standard_Integer y2, - const Xw_WindowQuality aQuality) -{ -#ifdef WNT - Handle(WNT_Window) w = new WNT_Window(Handle(Graphic3d_WNTGraphicDevice)::DownCast(aView->Viewer()->Device()),hiwin,lowin); -#else - Handle(Xw_Window) w = new Xw_Window(Handle(Graphic3d_GraphicDevice)::DownCast(aView->Viewer()->Device()),hiwin,lowin,aQuality); -#endif // WNT - - aView->SetMagnify(w,aPreviousView,x1,y1,x2,y2); -// aView->SetShadingModel(V3d_GOURAUD); -// aView->SetSurfaceDetail(V3d_TEX_NONE); -// aView->SetVisualization(V3d_WIREFRAME); -// aView->SetVisualization(V3d_ZBUFFER); -} -/*----------------------------------------------------------------------*/ - -Handle(V3d_Viewer) OCCViewer_VService::Viewer( const Standard_CString aDisplay, - const Standard_ExtString aName, - const Standard_CString aDomain, - const Standard_Real ViewSize, - const V3d_TypeOfOrientation ViewProj, - const Standard_Boolean ComputedMode, - const Standard_Boolean aDefaultComputedMode ) -{ -#ifndef WNT -static Handle(Graphic3d_GraphicDevice) defaultdevice; - - if(defaultdevice.IsNull()) defaultdevice = new Graphic3d_GraphicDevice(aDisplay); - return new V3d_Viewer(defaultdevice,aName,aDomain,ViewSize,ViewProj, - Quantity_NOC_GRAY30,V3d_ZBUFFER,V3d_GOURAUD,V3d_WAIT, - ComputedMode,aDefaultComputedMode,V3d_TEX_NONE); -#else - static Handle(Graphic3d_WNTGraphicDevice) defaultdevice; - - if(defaultdevice.IsNull()) defaultdevice = new Graphic3d_WNTGraphicDevice(); - return new V3d_Viewer(defaultdevice,aName,aDomain,ViewSize,ViewProj, - Quantity_NOC_GRAY30,V3d_ZBUFFER,V3d_GOURAUD,V3d_WAIT, - ComputedMode,aDefaultComputedMode,V3d_TEX_NONE); -#endif // WNT -} - -/*----------------------------------------------------------------------*/ -// ==================================== 2D ================================================================ -Handle(V2d_View) OCCViewer_VService::XView( const Handle(V2d_Viewer)& aViewer, - const Standard_Integer hiwin, - const Standard_Integer lowin, - const Xw_WindowQuality aQuality, - const Standard_Boolean Update, - const Quantity_NameOfColor BackColor) -{ -#ifdef WNT - Handle(WNT_GraphicDevice) GD = Handle(WNT_GraphicDevice)::DownCast(aViewer->Device()); - Handle(WNT_Window) W = new WNT_Window(GD,hiwin,lowin,BackColor); - Handle(WNT_WDriver) D = new WNT_WDriver(W); -#else - Handle(Xw_GraphicDevice) GD = Handle(Xw_GraphicDevice)::DownCast(aViewer->Device()); - Handle(Xw_Window) W = new Xw_Window(GD,hiwin,lowin,aQuality,BackColor); - Handle(Xw_Driver) D = new Xw_Driver(W); -#endif - - Handle(V2d_View) V = new V2d_View(D,aViewer); - if(Update) V->Update(); - return V; -} - -Handle(V2d_View) OCCViewer_VService::XdpsView( const Handle(V2d_Viewer)& aViewer, - const Standard_Integer hiwin, - const Standard_Integer lowin, - const Xw_WindowQuality aQuality, - const Standard_Boolean Update, - const Quantity_NameOfColor BackColor) -{ -#ifdef WNT - Handle(WNT_GraphicDevice) GD = Handle(WNT_GraphicDevice)::DownCast(aViewer->Device()); - Handle(WNT_Window) W = new WNT_Window(GD,hiwin,lowin,BackColor); -//POP - W->SetBackground(BackColor); -//POP - Handle(WNT_WDriver) D = new WNT_WDriver(W); -#else - Handle(Xw_GraphicDevice) GD = Handle(Xw_GraphicDevice)::DownCast(aViewer->Device()); - Handle(Xw_Window) W = new Xw_Window(GD,hiwin,lowin,aQuality,BackColor); - Handle(Xdps_Driver) D = new Xdps_Driver(W); -#endif - Handle(V2d_View) V = new V2d_View(D,aViewer); - if(Update) V->Update(); - return V; -} - -Handle(V2d_Viewer) OCCViewer_VService::Viewer( const Standard_CString aDisplay, - const Standard_ExtString aName, - const Standard_CString aDomain) -{ -#ifdef WNT - if(XServiceDefault2dDevice.IsNull()) XServiceDefault2dDevice = new WNT_GraphicDevice(); -#else - if(XServiceDefault2dDevice.IsNull()) XServiceDefault2dDevice = new Xw_GraphicDevice(aDisplay,Xw_TOM_READONLY); -#endif - return new V2d_Viewer(XServiceDefault2dDevice,aName,aDomain); -} - -Handle(V2d_Viewer) OCCViewer_VService::Viewer( const Standard_CString aDisplay, - const Handle(Graphic2d_View)& aView, - const Standard_ExtString aName, - const Standard_CString aDomain) -{ -#ifdef WNT - if(XServiceDefault2dDevice.IsNull()) XServiceDefault2dDevice = new WNT_GraphicDevice(); -#else - if(XServiceDefault2dDevice.IsNull()) XServiceDefault2dDevice = new Xw_GraphicDevice(aDisplay,Xw_TOM_READONLY); -#endif - return new V2d_Viewer(XServiceDefault2dDevice,aView,aName,aDomain); -} - -Handle(Aspect_WindowDriver) OCCViewer_VService::WindowDriver( const Standard_CString aDisplay, - const Standard_Integer ahiwin, - const Standard_Integer alowin, - const Quantity_NameOfColor aColor) -{ -#ifdef WNT - if(XServiceDefault2dDevice.IsNull()) XServiceDefault2dDevice = new WNT_GraphicDevice(); - Handle(WNT_Window) W = new WNT_Window(XServiceDefault2dDevice,ahiwin,alowin,aColor); - return new WNT_WDriver(W); -#else - if(XServiceDefault2dDevice.IsNull()) XServiceDefault2dDevice = new Xw_GraphicDevice(aDisplay,Xw_TOM_READONLY); - Handle(Xw_Window) W = new Xw_Window(XServiceDefault2dDevice,ahiwin,alowin,Xw_WQ_DRAWINGQUALITY,aColor); - return new Xw_Driver(W); -#endif -} - -Handle(Aspect_WindowDriver) OCCViewer_VService::XdpsDriver( const Standard_CString aDisplay, - const Standard_Integer ahiwin, - const Standard_Integer alowin, - const Quantity_NameOfColor aColor) -{ -#ifdef WNT - if(XServiceDefault2dDevice.IsNull()) XServiceDefault2dDevice = new WNT_GraphicDevice(); - Handle(WNT_Window) W = new WNT_Window(XServiceDefault2dDevice,ahiwin,alowin,aColor); - return new WNT_WDriver(W); -#else - if(XServiceDefault2dDevice.IsNull()) XServiceDefault2dDevice = new Xw_GraphicDevice(aDisplay,Xw_TOM_READONLY); - Handle(Xw_Window) W = new Xw_Window(XServiceDefault2dDevice,ahiwin,alowin,Xw_WQ_DRAWINGQUALITY,aColor); - return new Xdps_Driver(W); -#endif -} - -Handle(Aspect_WindowDriver) OCCViewer_VService::ImageDriver( const Standard_CString aDisplay, - const Standard_Integer ahiwin, - const Standard_Integer alowin, - const Quantity_NameOfColor aColor) -{ -#ifdef WNT - if(XServiceImageDevice.IsNull()) XServiceImageDevice = new WNT_GraphicDevice(); - Handle(WNT_Window) W = new WNT_Window(XServiceImageDevice,ahiwin,alowin,aColor); - return new WNT_WDriver(W); -#else - if(XServiceImageDevice.IsNull()) XServiceImageDevice = new Xw_GraphicDevice(aDisplay,Xw_TOM_READONLY); - Handle(Xw_Window) W = new Xw_Window(XServiceImageDevice,ahiwin,alowin,Xw_WQ_PICTUREQUALITY,aColor); - return new Xw_Driver(W); -#endif -} diff --git a/src/OCCViewer/OCCViewer_VService.h b/src/OCCViewer/OCCViewer_VService.h deleted file mode 100644 index 6ee738f24..000000000 --- a/src/OCCViewer/OCCViewer_VService.h +++ /dev/null @@ -1,151 +0,0 @@ -// SALOME OCCViewer : build OCC Viewer into Salome desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : OCCViewer_VService.h -// Module : SALOME - -#ifndef _OCCViewer_VService_HeaderFile -#define _OCCViewer_VService_HeaderFile - -#ifndef _Handle_V3d_View_HeaderFile -#include -#endif -#ifndef _Handle_V2d_View_HeaderFile -#include -#endif -#ifndef _Handle_V2d_Viewer_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Xw_WindowQuality_HeaderFile -#include -#endif -#ifndef _Handle_V3d_Viewer_HeaderFile -#include -#endif -#ifndef _Standard_CString_HeaderFile -#include -#endif -#ifndef _Standard_ExtString_HeaderFile -#include -#endif -#ifndef _Quantity_Length_HeaderFile -#include -#endif -#ifndef _Quantity_NameOfColor_HeaderFile -#include -#endif -#ifndef _V3d_TypeOfOrientation_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -#ifndef _Handle_Graphic2d_View_HeaderFile -#include -#endif -#ifndef _Handle_Aspect_WindowDriver_HeaderFile -#include -#endif - -class V3d_View; -class V3d_Viewer; - -class V2d_View; -class V2d_Viewer; -class Graphic2d_View; -class Aspect_WindowDriver; - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class OCCViewer_VService { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - -// Methods PUBLIC -// -Standard_EXPORT static void SetWindow(const Handle(V3d_View)& aView,const Standard_Integer hiwin,const Standard_Integer lowin,const Xw_WindowQuality aQuality = Xw_WQ_3DQUALITY) ; -Standard_EXPORT static void SetMagnify(const Handle(V3d_View)& aView,const Standard_Integer hiwin,const Standard_Integer lowin,const Handle(V3d_View)& aPreviousView,const Standard_Integer x1,const Standard_Integer y1,const Standard_Integer x2,const Standard_Integer y2,const Xw_WindowQuality aQuality = Xw_WQ_3DQUALITY) ; -Standard_EXPORT static Handle_V3d_Viewer Viewer(const Standard_CString aDisplay,const Standard_ExtString aName,const Standard_CString aDomain = "",const Quantity_Length ViewSize = 1000.0,const V3d_TypeOfOrientation ViewProj = V3d_XposYnegZpos,const Standard_Boolean ComputedMode = Standard_True,const Standard_Boolean DefaultComputedMode = Standard_True) ; - -Standard_EXPORT static Handle_V2d_View XView(const Handle(V2d_Viewer)& aViewer,const Standard_Integer hiwin,const Standard_Integer lowin,const Xw_WindowQuality aQuality = Xw_WQ_DRAWINGQUALITY,const Standard_Boolean Update = Standard_True,const Quantity_NameOfColor BackColor = Quantity_NOC_MATRAGRAY) ; -Standard_EXPORT static Handle_V2d_View XdpsView(const Handle(V2d_Viewer)& aViewer,const Standard_Integer hiwin,const Standard_Integer lowin,const Xw_WindowQuality aQuality = Xw_WQ_DRAWINGQUALITY,const Standard_Boolean Update = Standard_True,const Quantity_NameOfColor BackColor = Quantity_NOC_MATRAGRAY) ; -Standard_EXPORT static Handle_V2d_Viewer Viewer(const Standard_CString aDisplay,const Standard_ExtString aName,const Standard_CString aDomain = "") ; -Standard_EXPORT static Handle_V2d_Viewer Viewer(const Standard_CString aDisplay,const Handle(Graphic2d_View)& aView,const Standard_ExtString aName,const Standard_CString aDomain = "") ; -Standard_EXPORT static Handle_Aspect_WindowDriver WindowDriver(const Standard_CString aDisplay,const Standard_Integer ahiwin,const Standard_Integer alowin,const Quantity_NameOfColor aColor = Quantity_NOC_GRAY69) ; -Standard_EXPORT static Handle_Aspect_WindowDriver XdpsDriver(const Standard_CString aDisplay,const Standard_Integer ahiwin,const Standard_Integer alowin,const Quantity_NameOfColor aColor = Quantity_NOC_GRAY69) ; -Standard_EXPORT static Handle_Aspect_WindowDriver ImageDriver(const Standard_CString aDisplay,const Standard_Integer ahiwin,const Standard_Integer alowin,const Quantity_NameOfColor aColor = Quantity_NOC_GRAY69) ; - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other inline functions and methods (like "C++: function call" methods) -// - - -#endif - diff --git a/src/OCCViewer/OCCViewer_ViewFrame.cxx b/src/OCCViewer/OCCViewer_ViewFrame.cxx deleted file mode 100644 index 90645fdb2..000000000 --- a/src/OCCViewer/OCCViewer_ViewFrame.cxx +++ /dev/null @@ -1,1228 +0,0 @@ -// SALOME OCCViewer : build OCC Viewer into Salome desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : OCCViewer_ViewFrame.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "OCCViewer_ViewFrame.h" -#include "OCCViewer_Viewer3d.h" -#include "OCCViewer_ViewPort.h" -#include "OCCViewer_ViewPort3d.h" -#include "OCCViewer_Prs.h" - -#include "QAD.h" -#include "QAD_Tools.h" -#include "QAD_Desktop.h" -#include "QAD_ViewFrame.h" -#include "QAD_MessageBox.h" -#include "QAD_Application.h" -#include "utilities.h" - -#include "QAD_Config.h" -#include "QAD_Settings.h" -#include "SALOME_Selection.h" -#include "SALOME_AISShape.hxx" -#include "SALOMEGUI.h" -#include "SALOMEDS_Tool.hxx" -#include "ToolsGUI.h" - -// QT Include -#include - -// Open CASCADE Include -#include -#include -#include - -// IDL headers -#include -#include CORBA_SERVER_HEADER(SALOMEDS) -#include CORBA_SERVER_HEADER(SALOMEDS_Attributes) - -using namespace std; - -//======================================================================= -// name : getMapOfEntry -// Purpose : Convert list of interactive objects in map interactive object> -//======================================================================= -static void getMapOfEntry( const AIS_ListOfInteractive& theList, - QMap< QString, Handle(AIS_InteractiveObject) >& theMap ) -{ - AIS_ListIteratorOfListOfInteractive anIter( theList ); - for ( ; anIter.More(); anIter.Next() ) - { - Handle(SALOME_InteractiveObject) anIO = - Handle(SALOME_InteractiveObject)::DownCast( anIter.Value() ); - if ( !anIO.IsNull() ) - theMap[ anIO->getEntry() ] = anIter.Value(); - } -} - - -/* - Class : OCCViewer_ViewFrame - Description : View frame for Open CASCADE view -*/ - - -//======================================================================= -// name : OCCViewer_ViewFrame -// Purpose : Constructor -//======================================================================= -OCCViewer_ViewFrame::OCCViewer_ViewFrame( QWidget* parent, const QString& title ) - : QAD_ViewFrame ( parent, "" ) -{ - initialize(); -} - -//======================================================================= -// name : OCCViewer_ViewFrame -// Purpose : Constructor -//======================================================================= -OCCViewer_ViewFrame::OCCViewer_ViewFrame( QWidget* parent ) - : QAD_ViewFrame (parent, "") -{ - initialize(); -} - -//======================================================================= -// name : ~OCCViewer_ViewFrame -// Purpose : Destructor -//======================================================================= -OCCViewer_ViewFrame::~OCCViewer_ViewFrame() -{ - cleanup(); -} - -//======================================================================= -// name : initialize -// Purpose : Initialize view frame (called from constructors ) -//======================================================================= -void OCCViewer_ViewFrame::initialize() -{ - myViewPort = NULL; - myViewer = new OCCViewer_Viewer3d( this ); - - /* enable/disable selection */ - myViewer->enableSelection( true ); - myViewer->enableMultipleSelection( true ); -} - -//======================================================================= -// name : cleanup -// Purpose : Cleanup viewframe -//======================================================================= -void OCCViewer_ViewFrame::cleanup() -{ -} - -//======================================================================= -// name : setViewPort -// Purpose : Sets the viewport for this frame -//======================================================================= -void OCCViewer_ViewFrame::setViewPort( OCCViewer_ViewPort* view ) -{ - myViewPort = view; - initViewPort(); - setCentralWidget ( myViewPort ); -} - -//======================================================================= -// name : initViewPort -// Purpose : Inits the viewport for this frame -//======================================================================= -void OCCViewer_ViewFrame::initViewPort() -{ - /* Active Key Event */ - - setFocus(); - - /* Initial attributes */ - - myViewPort->setCursor( cursor() ); - myViewPort->setBackgroundColor( backgroundColor() ); - - QAD_ASSERT( QObject::connect(myViewPort, SIGNAL( vpKeyPress ( QKeyEvent* ) ), - this, SIGNAL(vfKeyPress(QKeyEvent*))) ); - - /* Listen to my viewport */ - - QAD_ASSERT( connect( myViewPort, SIGNAL( vpTransformationStarted( OCCViewer_ViewPort::OperationType ) ), - this, SIGNAL( vfTransformationStarted( OCCViewer_ViewPort::OperationType ) ) ) ); - QAD_ASSERT( connect( myViewPort, SIGNAL( vpTransformationFinished ( OCCViewer_ViewPort::OperationType ) ), - this, SIGNAL( vfTransformationFinished( OCCViewer_ViewPort::OperationType ) ) ) ); - - QAD_ASSERT( connect( myViewPort, SIGNAL( vpDrawExternal( QPainter* ) ), - this, SIGNAL( vfDrawExternal( QPainter* ) ) ) ); - QAD_ASSERT( connect( myViewPort, SIGNAL( vpMousePress( QMouseEvent* ) ), - this, SIGNAL( vfMousePress( QMouseEvent* ) ) ) ); - QAD_ASSERT( connect( myViewPort, SIGNAL( vpMouseRelease( QMouseEvent* ) ), - this, SIGNAL( vfMouseRelease( QMouseEvent* ) ) ) ); - QAD_ASSERT( connect( myViewPort, SIGNAL( vpMouseMove( QMouseEvent* ) ), - this, SIGNAL( vfMouseMove( QMouseEvent* ) ) ) ); - QAD_ASSERT( connect( myViewPort, SIGNAL( vpMouseDoubleClick( QMouseEvent* ) ), - this, SIGNAL( vfMouseDoubleClick( QMouseEvent* ) ) ) ); - - QAD_ASSERT( connect( myViewPort, SIGNAL( vpKeyPress( QKeyEvent* ) ), - this, SIGNAL( vfKeyPress( QKeyEvent* ) ) ) ); - QAD_ASSERT( connect( myViewPort, SIGNAL( vpKeyRelease( QKeyEvent* ) ), - this, SIGNAL( vfKeyRelease( QKeyEvent* ) ) ) ); -} - -//======================================================================= -// name : getViewWidget -// Purpose : Returns widget containing 3D-Viewer -//======================================================================= -QWidget* OCCViewer_ViewFrame::getViewWidget() -{ - return (QWidget*)getViewPort(); -} - -//======================================================================= -// name : getViewPort -// Purpose : Returns the viewport of this frame -//======================================================================= -OCCViewer_ViewPort* OCCViewer_ViewFrame::getViewPort() const -{ - return myViewPort; -} - -//======================================================================= -// name : Sets the cursor for the viewframe's viewport -// Purpose : setCursor -//======================================================================= -void OCCViewer_ViewFrame::setCursor( const QCursor& cursor) -{ - if ( myViewPort ) - myViewPort->QWidget::setCursor( cursor ); -} - - -//======================================================================= -// name : cursor -// Purpose : Returns the current cursor -//======================================================================= -QCursor OCCViewer_ViewFrame::cursor() const -{ - if ( myViewPort ) - return myViewPort->cursor(); - return QMainWindow::cursor(); -} - -//======================================================================= -// name : setBackgroundColor -// Purpose : Set background of the viewport -//======================================================================= -void OCCViewer_ViewFrame::setBackgroundColor( const QColor& color) -{ - if ( myViewPort ) - myViewPort->setBackgroundColor( color ); -} - -//======================================================================= -// name : backgroundColor -// Purpose : Returns background of the viewport -//======================================================================= -QColor OCCViewer_ViewFrame::backgroundColor() const -{ - if ( myViewPort ) - return myViewPort->backgroundColor(); - return QMainWindow::backgroundColor(); -} - -//======================================================================= -// name : setViewer -// Purpose : Sets the parent viewer for the window -//======================================================================= -void OCCViewer_ViewFrame::setViewer( OCCViewer_Viewer3d* viewer ) -{ - myViewer = viewer; -} - -//======================================================================= -// name : getViewer -// Purpose : Returns the parent viewer for the window -//======================================================================= -OCCViewer_Viewer3d* OCCViewer_ViewFrame::getViewer() const -{ - return myViewer; -} - -//======================================================================= -// name : setVisible -// Purpose : Show/hide view -//======================================================================= -void OCCViewer_ViewFrame::setVisible( const bool visible ) -{ - if ( visible == QWidget::isVisible() ) - return; - - if ( visible ) - show(); - else - hide(); -} - -//======================================================================= -// name : closeEvent -// Purpose : Called when viewframe is about to close -//======================================================================= -void OCCViewer_ViewFrame::closeEvent( QCloseEvent* e ) -{ - emit vfViewClosing( e ); /* notify our viewer */ -} - -//======================================================================= -// name : resizeEvent -// Purpose : Called when viewframe is resized -//======================================================================= -void OCCViewer_ViewFrame::resizeEvent( QResizeEvent* e ) -{ - emit vfResize( e ); -} - -//======================================================================= -// name : keyPressEvent -// Purpose : Called when key is pressed -//======================================================================= -void OCCViewer_ViewFrame::keyPressEvent( QKeyEvent *k ) -{ - emit vfKeyPress(k); -} - -//======================================================================= -// name : onViewFitAll -// Purpose : Fits all objects in the active view -//======================================================================= -void OCCViewer_ViewFrame::onViewFitAll() -{ - myViewPort->fitAll(); -} - -//======================================================================= -// name : onViewFitArea -// Purpose : Fits all obejcts within a rectangular area of the active view -//======================================================================= -void OCCViewer_ViewFrame::onViewFitArea() -{ - myViewPort->activateWindowFit(); - QAD_Application::getDesktop()->putInfo( tr( "PRP_VW3D_SKETCHAREA" ) ); -} - -//======================================================================= -// name : onViewPan -// Purpose : Moves the active view -//======================================================================= -void OCCViewer_ViewFrame::onViewPan() -{ - myViewPort->activatePanning(); -} - -//======================================================================= -// name : onViewZoom -// Purpose : Zooms the active view -//======================================================================= -void OCCViewer_ViewFrame::onViewZoom() -{ - myViewPort->activateZoom(); -} - -//======================================================================= -// name : onViewGlobalPan -// Purpose : Sets a new center of the active view -//======================================================================= -void OCCViewer_ViewFrame::onViewGlobalPan() -{ - myViewPort->activateGlobalPanning(); - QAD_Application::getDesktop()->putInfo( tr("PRP_VW3D_POINTCENTER") ); -} - -//======================================================================= -// name : onViewRotate -// Purpose : Rotates the active view -//======================================================================= -void OCCViewer_ViewFrame::onViewRotate() -{ - myViewPort->activateRotation(); -} - -//======================================================================= -// name : onViewReset -// Purpose : Reset the active view -//======================================================================= -void OCCViewer_ViewFrame::onViewReset() -{ - myViewPort->reset(); -} - -//======================================================================= -// name : onViewFront -// Purpose : Provides front projection of the active view -//======================================================================= -void OCCViewer_ViewFrame::onViewFront() -{ - Handle( V3d_View) view3d = ((OCCViewer_ViewPort3d*)myViewPort)->getView(); - if ( !view3d.IsNull() ) view3d->SetProj (V3d_Xpos); - onViewFitAll(); -} - -//======================================================================= -// name : onViewBack -// Purpose : Provides back projection of the active view -//======================================================================= -void OCCViewer_ViewFrame::onViewBack() -{ - Handle( V3d_View) view3d = ((OCCViewer_ViewPort3d*)myViewPort)->getView(); - if ( !view3d.IsNull() ) view3d->SetProj (V3d_Xneg); - onViewFitAll(); -} - -//======================================================================= -// name : onViewRight -// Purpose : Provides right projection of the active view -//======================================================================= -void OCCViewer_ViewFrame::onViewRight() -{ - Handle( V3d_View) view3d = ((OCCViewer_ViewPort3d*)myViewPort)->getView(); - if ( !view3d.IsNull() ) - view3d->SetProj( V3d_Ypos ); - onViewFitAll(); -} - -//======================================================================= -// name : onViewLeft -// Purpose : Provides left projection of the active view -//======================================================================= -void OCCViewer_ViewFrame::onViewLeft() -{ - Handle( V3d_View) view3d = ((OCCViewer_ViewPort3d*)myViewPort)->getView(); - if ( !view3d.IsNull() ) - view3d->SetProj( V3d_Yneg ); - onViewFitAll(); -} - -//======================================================================= -// name : onViewBottom -// Purpose : Provides bottom projection of the active view -//======================================================================= -void OCCViewer_ViewFrame::onViewBottom() -{ - Handle( V3d_View) view3d = ((OCCViewer_ViewPort3d*)myViewPort)->getView(); - if ( !view3d.IsNull() ) view3d->SetProj(V3d_Zneg); - onViewFitAll(); -} - -//======================================================================= -// name : onViewTop -// Purpose : Provides top projection of the active view -//======================================================================= -void OCCViewer_ViewFrame::onViewTop() -{ - Handle( V3d_View) view3d = ((OCCViewer_ViewPort3d*)myViewPort)->getView(); - if ( !view3d.IsNull() ) view3d->SetProj( V3d_Zpos ); - onViewFitAll(); -} - -//======================================================================= -// name : onViewTrihedron -// Purpose : Display/hide Trihedron -//======================================================================= -void OCCViewer_ViewFrame::onViewTrihedron() -{ - if (!myViewer->getAISContext()->IsDisplayed( myViewer->getTrihedron() )) - myViewer->getAISContext()->Display( myViewer->getTrihedron() ); - else - myViewer->getAISContext()->Erase( myViewer->getTrihedron() ); - onAdjustTrihedron(); -} - -//======================================================================= -// name : rename -// Purpose : Rename entry object -//======================================================================= -void OCCViewer_ViewFrame::rename( const Handle(SALOME_InteractiveObject)& IObject, - const QString newName ) -{ - myViewer->rename(IObject, newName); -} - -//======================================================================= -// name : unHighlightAll -// Purpose : Unhighlight all objects -//======================================================================= -void OCCViewer_ViewFrame::unHighlightAll() -{ - myViewer->unHighlightAll(); -} - -//======================================================================= -// name : highlight -// Purpose : Highlight object -//======================================================================= -void OCCViewer_ViewFrame::highlight( const Handle(SALOME_InteractiveObject)& IObject, - const bool highlight, - const bool update ) -{ - myViewer->highlight( IObject, highlight, update ); -} - -//======================================================================= -// name : isInViewer -// Purpose : Magic function -//======================================================================= -bool OCCViewer_ViewFrame::isInViewer( const Handle(SALOME_InteractiveObject)& IObject ) -{ - return myViewer->isInViewer( IObject ); -} - -//======================================================================= -// name : isVisible -// Purpose : Verify whether object is visible -//======================================================================= -bool OCCViewer_ViewFrame::isVisible( const Handle(SALOME_InteractiveObject)& IObject ) -{ - return myViewer->isVisible( IObject ); -} - -//======================================================================= -// name : setPopupServer -// Purpose : Set popup server -//======================================================================= -void OCCViewer_ViewFrame::setPopupServer( QAD_Application* App ) -{ - myViewer->setPopupServer( App ); -} - -//======================================================================= -// name : redisplayAll -// Purpose : Redisplay all objects of active component in accordance with -// their display flags -//======================================================================= -void OCCViewer_ViewFrame::redisplayAll( QAD_Study* theQADStudy, const bool theToUpdate ) -{ - SALOMEDS::Study_var aStudy = theQADStudy->getStudyDocument(); - QAD_Desktop* aDesktop = QAD_Application::getDesktop(); - SALOMEGUI* aGUI = aDesktop->getActiveGUI(); - const QString& aCompName = aDesktop->getComponentDataType(); - SALOMEDS::SObject_var aComponent = - SALOMEDS::SObject::_narrow( aStudy->FindComponent ( aCompName.latin1() ) ); - - if ( aComponent->_is_nil() ) - return; - - Handle(AIS_InteractiveContext) anIC = myViewer->getAISContext(); - bool isTrhDisplayed = anIC->IsDisplayed( myViewer->getTrihedron() ); - - anIC->DisplayAll( true, false ); - anIC->EraseAll( false, false ); - - if ( isTrhDisplayed ) - anIC->Display( myViewer->getTrihedron(), false ); - - std::list aList; - SALOMEDS_Tool::GetAllChildren( aStudy, aComponent, aList ); - - std::list::iterator anIter = aList.begin(); - for ( ; anIter != aList.end(); ++anIter ) - { - SALOMEDS::SObject_var anObj = (*anIter); - if ( ToolsGUI::GetVisibility( aStudy, anObj, this ) ) - { - Handle(SALOME_InteractiveObject) anIObj = new SALOME_InteractiveObject(); - anIObj->setEntry( anObj->GetID() ); - aGUI->BuildPresentation( anIObj, this ); - } - } - - if ( theToUpdate ) - Repaint(); -} - -//======================================================================= -// name : undo -// Purpose : Redisplay all objects of active component in accordance with -// their display flags. Called when undo operation is complited -//======================================================================= -void OCCViewer_ViewFrame::undo( QAD_Study* theQADStudy, const char* ) -{ - redisplayAll( theQADStudy ); -} - -//======================================================================= -// name : redo -// Purpose : Redisplay all objects of active component in accordance with -// their display flags. Called when undo operation is complited -//======================================================================= -void OCCViewer_ViewFrame::redo( QAD_Study* theQADStudy, const char* ) -{ - redisplayAll( theQADStudy ); -} - -//======================================================================= -// name : FindIObject -// Purpose : Find in context SALOME_InteractiveObject by entry -//======================================================================= -Handle(SALOME_InteractiveObject) OCCViewer_ViewFrame::FindIObject( const char* Entry ) -{ - Handle (AIS_InteractiveContext) ic = myViewer->getAISContext(); - - AIS_ListOfInteractive List; - ic->DisplayedObjects( List ); - AIS_ListOfInteractive List1; - ic->ObjectsInCollector( List1 ); - List.Append( List1 ); - - AIS_ListIteratorOfListOfInteractive ite( List ); - for ( ; ite.More(); ite.Next() ) - { - Handle(SALOME_InteractiveObject) anObj = - Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() ); - - if ( !anObj.IsNull() && anObj->hasEntry() && strcmp( anObj->getEntry(), Entry ) == 0 ) - { - MESSAGE ( "IO found") - return anObj; - } - } - MESSAGE ( "IO not found") - return Handle(SALOME_InteractiveObject)(); -} - -//======================================================================= -// name : Display -// Purpose : Display object -//======================================================================= -void OCCViewer_ViewFrame::Display( const Handle(SALOME_InteractiveObject)& theIObject, - bool toUpdate ) -{ - if ( theIObject.IsNull() ) - return; - - QAD_Study* aQADStudy = QAD_Application::getDesktop()->getActiveStudy(); - SALOME_Selection* aSel = SALOME_Selection::Selection( aQADStudy->getSelection() ); - SALOMEDS::Study_var aStudy = aQADStudy->getStudyDocument(); - - Handle(AIS_InteractiveContext) anIC = myViewer->getAISContext(); - - AIS_ListOfInteractive aList; - anIC->ObjectsInCollector( aList ); - AIS_ListIteratorOfListOfInteractive anIter( aList ); - for ( ; anIter.More(); anIter.Next() ) - { - Handle(SALOME_InteractiveObject) anObj = - Handle(SALOME_InteractiveObject)::DownCast( anIter.Value()->GetOwner() ); - - if ( !anObj.IsNull() && anObj->hasEntry() && anObj->isSame( theIObject ) ) - { - anIC->Display( anIter.Value(), false ); - aSel->AddIObject( anObj, false ); - ToolsGUI::SetVisibility( aStudy, anObj->getEntry(), true, this ); - break; - } - } - - if ( toUpdate ) - Repaint(); -} - -//======================================================================= -// name : DisplayOnly -// Purpose : Display object and erase all other ones -//======================================================================= -void OCCViewer_ViewFrame::DisplayOnly( const Handle(SALOME_InteractiveObject)& theIO ) -{ - EraseAll(); - Display( theIO ); -} - -//======================================================================= -// name : Erase -// Purpose : Erase object -//======================================================================= -void OCCViewer_ViewFrame::Erase( const Handle(SALOME_InteractiveObject)& theIObject, - bool toUpdate ) -{ - QAD_Study* aStudy = QAD_Application::getDesktop()->getActiveStudy(); - SALOME_Selection* aSel = SALOME_Selection::Selection( aStudy->getSelection() ); - - Handle(AIS_InteractiveContext) anIC = myViewer->getAISContext(); - - AIS_ListOfInteractive aList; - anIC->DisplayedObjects( aList ); - - AIS_ListIteratorOfListOfInteractive ite( aList ); - for ( ; ite.More(); ite.Next() ) - { - Handle(SALOME_InteractiveObject) anObj = - Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() ); - - if ( !anObj.IsNull() && anObj->hasEntry() ) - { - if ( anObj->isSame( theIObject ) ) - { - anIC->Erase( ite.Value(), false ); - aSel->RemoveIObject( anObj, false ); - ToolsGUI::SetVisibility( aStudy->getStudyDocument(), anObj->getEntry(), false, this ); - break; - } - } - } - - if ( toUpdate ) - Repaint(); -} - -//======================================================================= -// name : DisplayAll -// Purpose : Display all objects of active component -//======================================================================= -void OCCViewer_ViewFrame::DisplayAll() -{ - SALOMEDS::Study_var aStudy = QAD_Application::getDesktop()->getActiveStudy()->getStudyDocument(); - QAD_Desktop* aDesktop = QAD_Application::getDesktop(); - SALOMEGUI* aGUI = aDesktop->getActiveGUI(); - const QString& aCompName = aDesktop->getComponentDataType(); - SALOMEDS::SObject_var aComponent = - SALOMEDS::SObject::_narrow( aStudy->FindComponent ( aCompName.latin1() ) ); - - if ( aComponent->_is_nil() ) - return; - - Handle(AIS_InteractiveContext) anIC = myViewer->getAISContext(); - - AIS_ListOfInteractive aDispList; - AIS_ListOfInteractive aCollList; - anIC->DisplayedObjects( aDispList ); - anIC->ObjectsInCollector( aCollList ); - - QMap< QString, Handle(AIS_InteractiveObject) > aDispMap; - QMap< QString, Handle(AIS_InteractiveObject) > aCollMap; - getMapOfEntry( aDispList, aDispMap ); - getMapOfEntry( aCollList, aCollMap ); - - std::list aList; - SALOMEDS_Tool::GetAllChildren( aStudy, aComponent, aList ); - - std::list::iterator anIter = aList.begin(); - for ( ; anIter != aList.end(); ++anIter ) - { - SALOMEDS::SObject_var anObj = (*anIter); - if ( anObj->_is_nil() ) - continue; - - const char* aEntry = anObj->GetID(); - if ( aCollMap.contains( aEntry ) ) - { - anIC->DisplayFromCollector( aCollMap[ aEntry ], false ); - ToolsGUI::SetVisibility( aStudy, aEntry, true, this ); - } - else if ( !aDispMap.contains( aEntry ) ) - { - Handle(SALOME_InteractiveObject) anIObj = new SALOME_InteractiveObject(); - anIObj->setEntry( anObj->GetID() ); - aGUI->BuildPresentation( anIObj, this ); - } - } - - Repaint(); -} - -//======================================================================= -// name : EraseAll -// Purpose : Erase all objects -//======================================================================= -void OCCViewer_ViewFrame::EraseAll() -{ - SALOMEDS::Study_var aStudy = - QAD_Application::getDesktop()->getActiveStudy()->getStudyDocument(); - - Standard_Boolean isTrihedronDisplayed = - myViewer->getAISContext()->IsDisplayed( myViewer->getTrihedron() ); - - Handle(AIS_InteractiveContext) anIC = myViewer->getAISContext(); - - AIS_ListOfInteractive aList; - anIC->DisplayedObjects( aList ); - AIS_ListIteratorOfListOfInteractive anIter( aList ); - for ( ; anIter.More(); anIter.Next() ) - { - if ( anIC->IsDisplayed( myViewer->getTrihedron() ) && - anIter.Value()->DynamicType() == STANDARD_TYPE( AIS_Trihedron ) ) - continue; - - Handle(AIS_InteractiveObject) anIO = anIter.Value(); - anIC->Erase( anIO, false, true ); - - Handle(SALOME_InteractiveObject) anObj = - Handle(SALOME_InteractiveObject)::DownCast( anIO->GetOwner() ); - - if ( !anObj.IsNull() && anObj->hasEntry() ) - ToolsGUI::SetVisibility( aStudy, anObj->getEntry(), false, this ); - } - - if ( isTrihedronDisplayed ) - myViewer->getAISContext()->Display( myViewer->getTrihedron() ); - else - Repaint(); -} - -//======================================================================= -// name : Repaint -// Purpose : Uodate view -//======================================================================= -void OCCViewer_ViewFrame::Repaint() -{ - onAdjustTrihedron(); - myViewer->getViewer3d()->Update(); -} - -//======================================================================= -// name : getTrihedronSize -// Purpose : Get new and current trihedron size corresponding to the -// current model size -//======================================================================= -bool OCCViewer_ViewFrame::getTrihedronSize( double& theNewSize, double& theSize ) -{ - theNewSize = 100; - theSize = 100; - - Handle( V3d_View) view3d = ((OCCViewer_ViewPort3d*)myViewPort)->getView(); - - if ( view3d.IsNull() ) - return false; - - double Xmin = 0, Ymin = 0, Zmin = 0, Xmax = 0, Ymax = 0, Zmax = 0; - double aMaxSide; - - view3d->View()->MinMaxValues( Xmin, Ymin, Zmin, Xmax, Ymax, Zmax ); - - if ( Xmin == RealFirst() || Ymin == RealFirst() || Zmin == RealFirst() || - Xmax == RealLast() || Ymax == RealLast() || Zmax == RealLast() ) - return false; - - aMaxSide = Xmax - Xmin; - if ( aMaxSide < Ymax -Ymin ) aMaxSide = Ymax -Ymin; - if ( aMaxSide < Zmax -Zmin ) aMaxSide = Zmax -Zmin; - - static float aSizeInPercents = 105; - QString aSetting = QAD_CONFIG->getSetting("Viewer:TrihedronSize"); - if (!aSetting.isEmpty()) - aSizeInPercents = aSetting.toFloat(); - - static float EPS = 5.0E-3; - theSize = myViewer->getTrihedron()->Size(); - theNewSize = aMaxSide*aSizeInPercents / 100.0; - - return fabs( theNewSize - theSize ) > theSize * EPS || - fabs( theNewSize - theSize) > theNewSize * EPS; -} - -//======================================================================= -// name : AdjustTrihedrons -// Purpose : Adjust trihedron size in accordance with size of model -//======================================================================= -void OCCViewer_ViewFrame::AdjustTrihedrons( const bool forced ) -{ - Handle (AIS_InteractiveContext) ic = myViewer->getAISContext(); - - if ( !myViewer->isTrihedronDisplayed() ) - return; - else - { - AIS_ListOfInteractive List; - ic->DisplayedObjects(List); - if ( List.First() == List.Last() && List.First() == myViewer->getTrihedron() ) - { - myViewer->setTrihedronSize( 100 ); - return; - } - } - - double aNewSize = 100, aSize = 100; - if ( getTrihedronSize( aNewSize, aSize ) || forced ) - myViewer->setTrihedronSize( aNewSize ); -} - -//======================================================================= -// name : onAdjustTrihedron -// Purpose : Slot. Called when trihedrons must be resized -//======================================================================= -void OCCViewer_ViewFrame::onAdjustTrihedron() -{ - AdjustTrihedrons( false ); -} - -//======================================================================= -// name : Display -// Purpose : Display presentation -//======================================================================= -void OCCViewer_ViewFrame::Display( const SALOME_OCCPrs* prs ) -{ - // try do downcast object - const OCCViewer_Prs* anOCCPrs = dynamic_cast( prs ); - if ( !anOCCPrs || anOCCPrs->IsNull() ) - return; - - // get context - Handle (AIS_InteractiveContext) ic = myViewer->getAISContext(); - // get all displayed objects - AIS_ListOfInteractive List; - ic->DisplayedObjects( List ); - // get objects in the collector - AIS_ListOfInteractive ListCollector; - ic->ObjectsInCollector( ListCollector ); - - // get objects to be displayed - AIS_ListOfInteractive anAISObjects; - anOCCPrs->GetObjects( anAISObjects ); - - AIS_ListIteratorOfListOfInteractive aIter( anAISObjects ); - for ( ; aIter.More(); aIter.Next() ) - { - Handle(AIS_InteractiveObject) anAIS = aIter.Value(); - if ( !anAIS.IsNull() ) - { - // try to find presentation in the viewer - bool bDisplayed = false; - AIS_ListIteratorOfListOfInteractive ite( List ); - for ( ; ite.More(); ite.Next() ) - { - // compare presentations by handles - // if the object is already displayed - nothing to do more - if ( ite.Value() == anAIS ) - { - // Deactivate object if necessary - if ( !anOCCPrs->ToActivate() ) - ic->Deactivate( anAIS ); - bDisplayed = true; - break; - } - } - - if ( bDisplayed ) - continue; - - // then try to find presentation in the collector - bDisplayed = false; - ite.Initialize( ListCollector ); - for ( ; ite.More(); ite.Next() ) - { - // compare presentations by handles - // if the object is in collector - display it - if ( ite.Value() == anAIS ) - { - ic->DisplayFromCollector( anAIS, false ); - - // Deactivate object if necessary - if ( !anOCCPrs->ToActivate() ) - ic->Deactivate( anAIS ); - bDisplayed = true; - - // Set visibility flag - Handle(SALOME_InteractiveObject) anObj = - Handle(SALOME_InteractiveObject)::DownCast( anAIS->GetOwner() ); - if ( !anObj.IsNull() && anObj->hasEntry() ) - { - SALOMEDS::Study_var aStudy = - QAD_Application::getDesktop()->getActiveStudy()->getStudyDocument(); - ToolsGUI::SetVisibility( aStudy, anObj->getEntry(), true, this ); - } - - break; - } - } - if ( bDisplayed ) - continue; - - // if object is not displayed and not found in the collector - display it - if ( anAIS->IsKind( STANDARD_TYPE(AIS_Trihedron) ) ) - { - Handle(AIS_Trihedron) aTrh = Handle(AIS_Trihedron)::DownCast( anAIS ); - double aNewSize = 100, aSize = 100; - getTrihedronSize( aNewSize, aSize ); - aTrh->SetSize( aTrh == myViewer->getTrihedron() ? aNewSize : 0.5 * aNewSize ); - } - - ic->Display( anAIS, false ); - - // Set visibility flag - Handle(SALOME_InteractiveObject) anObj = - Handle(SALOME_InteractiveObject)::DownCast( anAIS->GetOwner() ); - if ( !anObj.IsNull() && anObj->hasEntry() ) - { - SALOMEDS::Study_var aStudy = - QAD_Application::getDesktop()->getActiveStudy()->getStudyDocument(); - ToolsGUI::SetVisibility( aStudy, anObj->getEntry(), true, this ); - } - - // Deactivate object if necessary - if ( !anOCCPrs->ToActivate() ) - ic->Deactivate( anAIS ); - } - } -} - -//======================================================================= -// name : Erase -// Purpose : Erase presentation -//======================================================================= -void OCCViewer_ViewFrame::Erase( const SALOME_OCCPrs* prs, const bool forced ) -{ - // try do downcast object - const OCCViewer_Prs* anOCCPrs = dynamic_cast( prs ); - if ( !anOCCPrs || anOCCPrs->IsNull() ) - return; - - // get context - Handle(AIS_InteractiveContext) ic = myViewer->getAISContext(); - - // get objects to be erased - AIS_ListOfInteractive anAISObjects; - anOCCPrs->GetObjects( anAISObjects ); - - AIS_ListIteratorOfListOfInteractive aIter( anAISObjects ); - for ( ; aIter.More(); aIter.Next() ) { - Handle(AIS_InteractiveObject) anAIS = aIter.Value(); - if ( !anAIS.IsNull() ) { - // erase the object from context : move it to collector - ic->Erase( anAIS, false, forced ? false : true ); - - // Set visibility flag if necessary - if ( !forced ) - { - Handle(SALOME_InteractiveObject) anObj = - Handle(SALOME_InteractiveObject)::DownCast( anAIS->GetOwner() ); - if ( !anObj.IsNull() && anObj->hasEntry() ) - { - SALOMEDS::Study_var aStudy = - QAD_Application::getDesktop()->getActiveStudy()->getStudyDocument(); - ToolsGUI::SetVisibility( aStudy, anObj->getEntry(), true, this ); - } - } - } - } -} - -//======================================================================= -// name : CreatePrs -// Purpose : Create presentation corresponding to the entry -//======================================================================= -SALOME_Prs* OCCViewer_ViewFrame::CreatePrs( const char* entry ) -{ - OCCViewer_Prs* prs = new OCCViewer_Prs(); - if ( entry ) - { - // get context - Handle(AIS_InteractiveContext) ic = myViewer->getAISContext(); - - // get displayed objects - AIS_ListOfInteractive List; - ic->DisplayedObjects( List ); - // get objects in the collector - AIS_ListOfInteractive ListCollector; - ic->ObjectsInCollector( ListCollector ); - List.Append( ListCollector ); - - AIS_ListIteratorOfListOfInteractive ite( List ); - for ( ; ite.More(); ite.Next() ) - { - Handle(SALOME_InteractiveObject) anObj = - Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() ); - - if ( !anObj.IsNull() && anObj->hasEntry() && strcmp( anObj->getEntry(), entry ) == 0 ) - prs->AddObject( ite.Value() ); - } - } - return prs; -} - -//======================================================================= -// name : LocalSelection -// Purpose : Activates selection of sub shapes -//======================================================================= -void OCCViewer_ViewFrame::LocalSelection( const SALOME_OCCPrs* thePrs, const int theMode ) -{ - Handle(AIS_InteractiveContext) anIC = myViewer->getAISContext(); - - const OCCViewer_Prs* anOCCPrs = dynamic_cast( thePrs ); - if ( anIC.IsNull() ) - return; - - // Open local context if there is no one - bool allObjects = thePrs == 0 || thePrs->IsNull(); - if ( !anIC->HasOpenedContext() ) { - anIC->ClearCurrents( false ); - anIC->OpenLocalContext( allObjects, true, true ); - } - - AIS_ListOfInteractive anObjs; - // Get objects to be activated - if ( allObjects ) - anIC->DisplayedObjects( anObjs ); - else - anOCCPrs->GetObjects( anObjs ); - - // Activate selection of objects from prs - AIS_ListIteratorOfListOfInteractive aIter( anObjs ); - for ( ; aIter.More(); aIter.Next() ) { - Handle(AIS_InteractiveObject) anAIS = aIter.Value(); - if ( !anAIS.IsNull() ) - { - if ( anAIS->IsKind( STANDARD_TYPE( AIS_Shape ) ) ) - { - anIC->Load( anAIS, -1, false ); - anIC->Activate( anAIS, AIS_Shape::SelectionMode( (TopAbs_ShapeEnum)theMode ) ); - } - else if ( anAIS->DynamicType() != STANDARD_TYPE(AIS_Trihedron) ) - { - anIC->Load( anAIS, -1, false ); - anIC->Activate( anAIS, theMode ); - } - } - } -} - -//======================================================================= -// name : GlobalSelection -// Purpose : Deactivates selection of sub shapes -//======================================================================= -void OCCViewer_ViewFrame::GlobalSelection( const bool update ) const -{ - Handle(AIS_InteractiveContext) anIC = myViewer->getAISContext(); - if ( !anIC.IsNull() ) - anIC->CloseAllContexts( false ); - if ( update ) - anIC->CurrentViewer()->Redraw(); -} - -//======================================================================= -// name : BeforeDisplay -// Purpose : Axiluary method called before displaying of objects -//======================================================================= -void OCCViewer_ViewFrame::BeforeDisplay( SALOME_Displayer* d ) -{ - d->BeforeDisplay( this, SALOME_OCCViewType() ); -} - -//======================================================================= -// name : AfterDisplay -// Purpose : Axiluary method called after displaying of objects -//======================================================================= -void OCCViewer_ViewFrame::AfterDisplay( SALOME_Displayer* d ) -{ - d->AfterDisplay( this, SALOME_OCCViewType() ); -} - -#define INCREMENT_FOR_OP 10 - -//======================================================================= -// name : onPanLeft -// Purpose : Performs incremental panning to the left -//======================================================================= -void OCCViewer_ViewFrame::onPanLeft() -{ - myViewPort->incrementalPan( -INCREMENT_FOR_OP, 0 ); -} - -//======================================================================= -// name : onPanRight -// Purpose : Performs incremental panning to the right -//======================================================================= -void OCCViewer_ViewFrame::onPanRight() -{ - myViewPort->incrementalPan( INCREMENT_FOR_OP, 0 ); -} - -//======================================================================= -// name : onPanUp -// Purpose : Performs incremental panning to the top -//======================================================================= -void OCCViewer_ViewFrame::onPanUp() -{ - myViewPort->incrementalPan( 0, INCREMENT_FOR_OP ); -} - -//======================================================================= -// name : onPanDown -// Purpose : Performs incremental panning to the bottom -//======================================================================= -void OCCViewer_ViewFrame::onPanDown() -{ - myViewPort->incrementalPan( 0, -INCREMENT_FOR_OP ); -} - -//======================================================================= -// name : onZoomIn -// Purpose : Performs incremental zooming in -//======================================================================= -void OCCViewer_ViewFrame::onZoomIn() -{ - myViewPort->incrementalZoom( INCREMENT_FOR_OP ); -} - -//======================================================================= -// name : onZoomOut -// Purpose : Performs incremental zooming out -//======================================================================= -void OCCViewer_ViewFrame::onZoomOut() -{ - myViewPort->incrementalZoom( -INCREMENT_FOR_OP ); -} - -//======================================================================= -// name : onRotateLeft -// Purpose : Performs incremental rotating to the left -//======================================================================= -void OCCViewer_ViewFrame::onRotateLeft() -{ - myViewPort->incrementalRotate( -INCREMENT_FOR_OP, 0 ); -} - -//======================================================================= -// name : onRotateRight -// Purpose : Performs incremental rotating to the right -//======================================================================= -void OCCViewer_ViewFrame::onRotateRight() -{ - myViewPort->incrementalRotate( INCREMENT_FOR_OP, 0 ); -} - -//======================================================================= -// name : onRotateUp -// Purpose : Performs incremental rotating to the top -//======================================================================= -void OCCViewer_ViewFrame::onRotateUp() -{ - myViewPort->incrementalRotate( 0, -INCREMENT_FOR_OP ); -} - -//======================================================================= -// name : onRotateDown -// Purpose : Performs incremental rotating to the bottom -//======================================================================= -void OCCViewer_ViewFrame::onRotateDown() -{ - myViewPort->incrementalRotate( 0, INCREMENT_FOR_OP ); -} diff --git a/src/OCCViewer/OCCViewer_ViewFrame.h b/src/OCCViewer/OCCViewer_ViewFrame.h deleted file mode 100644 index 9f6b4a55d..000000000 --- a/src/OCCViewer/OCCViewer_ViewFrame.h +++ /dev/null @@ -1,187 +0,0 @@ -// SALOME OCCViewer : build OCC Viewer into Salome desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : OCCViewer_ViewFrame.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef OCCViewer_ViewFrame_H -#define OCCViewer_ViewFrame_H - -#include "OCCViewer_ViewPort.h" -#include "QAD_ViewFrame.h" -#include "SALOME_Selection.h" - -class OCCViewer_Viewer3d; - -/* - Class : OCCViewer_ViewFrame - Description : View frame for Open CASCADE view -*/ - -class QAD_EXPORT OCCViewer_ViewFrame : public QAD_ViewFrame -{ - Q_OBJECT - -public: - - OCCViewer_ViewFrame( QWidget* parent, const QString& title ); - OCCViewer_ViewFrame( QWidget* parent = 0 ); - virtual ~OCCViewer_ViewFrame(); - - /* - Reimplemented from QAD_ViewFrame - */ - - virtual ViewType getTypeView() const { return VIEW_OCC; } - virtual QWidget* getViewWidget(); - virtual void setBackgroundColor( const QColor& ); - virtual QColor backgroundColor() const; - virtual void SetSelectionMode( Selection_Mode mode ) {}; - - /* popup management */ - - virtual void setPopupServer( QAD_Application* ); - - /* interactive object management */ - - virtual void highlight( const Handle(SALOME_InteractiveObject)&, - const bool highlight, - const bool update = true ); - virtual void unHighlightAll(); - virtual void rename( const Handle(SALOME_InteractiveObject)&, - QString ); - virtual bool isInViewer( const Handle(SALOME_InteractiveObject)& ); - virtual bool isVisible( const Handle(SALOME_InteractiveObject)& ); - - /* undo/redo management */ - - void undo( QAD_Study* aStudy, const char* StudyFrameEntry ); - void redo( QAD_Study* aStudy, const char* StudyFrameEntry ); - - /* selection */ - - virtual Handle(SALOME_InteractiveObject) FindIObject( const char* Entry ); - - /* display */ - virtual void Display( const Handle(SALOME_InteractiveObject)&, - bool update = true); - virtual void DisplayOnly( const Handle(SALOME_InteractiveObject)& ); - virtual void Erase( const Handle(SALOME_InteractiveObject)&, - bool update = true); - virtual void DisplayAll(); - virtual void EraseAll(); - virtual void Repaint(); - - void AdjustTrihedrons( const bool forced = false ); - - /* Reimplemented from SALOME_View */ - - virtual void Display( const SALOME_OCCPrs* ); - virtual void Erase( const SALOME_OCCPrs*, const bool = false ); - virtual SALOME_Prs* CreatePrs( const char* entry = 0 ); - virtual void BeforeDisplay( SALOME_Displayer* d ); - virtual void AfterDisplay ( SALOME_Displayer* d ); - virtual void LocalSelection( const SALOME_OCCPrs*, const int ); - virtual void GlobalSelection( const bool = false ) const; - - /* Own public methods */ - - void setViewPort( OCCViewer_ViewPort* ); - OCCViewer_ViewPort* getViewPort() const; - - void setViewer( OCCViewer_Viewer3d* ); - OCCViewer_Viewer3d* getViewer() const; - - void setVisible( const bool isVisible = true ); - - void setCursor( const QCursor& ); - QCursor cursor() const; - -signals: - - void vfTransformationStarted ( OCCViewer_ViewPort::OperationType ); - void vfTransformationFinished( OCCViewer_ViewPort::OperationType ); - void vfDrawExternal( QPainter* painter ); - void vfMousePress( QMouseEvent* ); - void vfMouseRelease( QMouseEvent* ); - void vfMouseMove( QMouseEvent* ); - void vfMouseDoubleClick( QMouseEvent* ); - void vfKeyPress( QKeyEvent* ); - void vfKeyRelease( QKeyEvent* ); - void vfResize( QResizeEvent* ); - void vfPrint( QPaintEvent* ); - void vfViewClosing( QCloseEvent* ); - void vfMoved ( QMoveEvent* ); - -public slots: - - void onViewPan(); - void onViewZoom(); - void onViewFitAll(); - void onViewFitArea(); - void onViewGlobalPan(); - void onViewRotate(); - void onViewReset(); - void onViewFront(); - void onViewBack(); - void onViewRight(); - void onViewLeft(); - void onViewBottom(); - void onViewTop(); - void onViewTrihedron(); - void onAdjustTrihedron(); - - void onPanLeft(); - void onPanRight(); - void onPanUp(); - void onPanDown(); - void onZoomIn(); - void onZoomOut(); - void onRotateLeft(); - void onRotateRight(); - void onRotateUp(); - void onRotateDown(); - -protected: - - void initViewPort(); - void initialize(); - void cleanup(); - void closeEvent( QCloseEvent* ); - void resizeEvent( QResizeEvent* ); - void keyPressEvent( QKeyEvent * ); -private: - - bool getTrihedronSize( double& theNewSize, double& theSize ); - void redisplayAll( QAD_Study*, const bool = true ); - -private: - - OCCViewer_Viewer3d* myViewer; // my owner - OCCViewer_ViewPort* myViewPort; // child viewport -}; - -#endif - diff --git a/src/OCCViewer/OCCViewer_ViewPort.cxx b/src/OCCViewer/OCCViewer_ViewPort.cxx deleted file mode 100644 index 695d42692..000000000 --- a/src/OCCViewer/OCCViewer_ViewPort.cxx +++ /dev/null @@ -1,1009 +0,0 @@ -// SALOME OCCViewer : build OCC Viewer into Salome desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : OCCViewer_ViewPort.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include - -#if !defined WNT -#define QT_CLEAN_NAMESPACE /* avoid definition of INT32 and INT8 */ -#endif - -#include "OCCViewer_ViewPort.h" - -#include "QAD.h" -#include "QAD_Tools.h" -#include "QAD_Desktop.h" -#include "QAD_MessageBox.h" - -#if !defined WNT -#include -#include -#include -#include -#include -#undef QT_CLEAN_NAMESPACE -#include -#include - -#include -#include - -#include "utilities.h" - -using namespace std; - -/* XPM */ -const char* imageZoomCursor[] = { -"32 32 3 1", -". c None", -"a c #000000", -"# c #ffffff", -"................................", -"................................", -".#######........................", -"..aaaaaaa.......................", -"................................", -".............#####..............", -"...........##.aaaa##............", -"..........#.aa.....a#...........", -".........#.a.........#..........", -".........#a..........#a.........", -"........#.a...........#.........", -"........#a............#a........", -"........#a............#a........", -"........#a............#a........", -"........#a............#a........", -".........#...........#.a........", -".........#a..........#a.........", -".........##.........#.a.........", -"........#####.....##.a..........", -".......###aaa#####.aa...........", -"......###aa...aaaaa.......#.....", -".....###aa................#a....", -"....###aa.................#a....", -"...###aa...............#######..", -"....#aa.................aa#aaaa.", -".....a....................#a....", -"..........................#a....", -"...........................a....", -"................................", -"................................", -"................................", -"................................"}; - -const char* imageRotateCursor[] = { -"32 32 3 1", -". c None", -"a c #000000", -"# c #ffffff", -"................................", -"................................", -"................................", -"................................", -"........#.......................", -".......#.a......................", -"......#######...................", -".......#aaaaa#####..............", -"........#..##.a#aa##........##..", -".........a#.aa..#..a#.....##.aa.", -".........#.a.....#...#..##.aa...", -".........#a.......#..###.aa.....", -"........#.a.......#a..#aa.......", -"........#a.........#..#a........", -"........#a.........#a.#a........", -"........#a.........#a.#a........", -"........#a.........#a.#a........", -".........#.........#a#.a........", -"........##a........#a#a.........", -"......##.a#.......#.#.a.........", -"....##.aa..##.....##.a..........", -"..##.aa.....a#####.aa...........", -"...aa.........aaa#a.............", -"................#.a.............", -"...............#.a..............", -"..............#.a...............", -"...............a................", -"................................", -"................................", -"................................", -"................................", -"................................"}; - -struct CMapEntry { - CMapEntry(); - ~CMapEntry(); - Colormap cmap; - bool alloc; - XStandardColormap scmap; -}; - -CMapEntry::CMapEntry() -{ - cmap = 0; - alloc = false; - scmap.colormap = 0; -} - -CMapEntry::~CMapEntry() -{ - if ( alloc ) - XFreeColormap( QPaintDevice::x11AppDisplay(), cmap ); -} - -static QIntDict *cmap_dict = 0; -static bool mesa_gl = false; - -static void cleanup_cmaps() -{ - if ( !cmap_dict ) - return; - cmap_dict->setAutoDelete(true); - delete cmap_dict; - cmap_dict = 0; -} - -static Colormap choose_cmap(Display *dpy, XVisualInfo *vi) -{ - if ( !cmap_dict ) - { - cmap_dict = new QIntDict; - const char *v = glXQueryServerString( dpy, vi->screen, GLX_VERSION ); - mesa_gl = strstr(v,"Mesa") != 0; - qAddPostRoutine( cleanup_cmaps ); - } - - CMapEntry *x = cmap_dict->find( (long)vi->visualid ); - if ( x ) // found colormap for visual - return x->cmap; - - x = new CMapEntry(); - - XStandardColormap *c; - int n, i; - -#ifdef DEBUG - MESSAGE( "Choosing cmap for vID = " << vi->visualid ); -#endif - - if ( vi->visualid == XVisualIDFromVisual( (Visual*)QPaintDevice::x11AppVisual() ) ) - { -#ifdef DEBUG - MESSAGE( "Using x11AppColormap" ); -#endif - return QPaintDevice::x11AppColormap(); - } - - if ( mesa_gl ) - { - Atom hp_cmaps = XInternAtom( dpy, "_HP_RGB_SMOOTH_MAP_LIST", true ); - if ( hp_cmaps && vi->visual->c_class == TrueColor && vi->depth == 8 ) - { - if ( XGetRGBColormaps(dpy, RootWindow(dpy,vi->screen), &c, &n, hp_cmaps) ) - { - i = 0; - while ( i < n && x->cmap == 0 ) - { - if ( c[i].visualid == vi->visual->visualid ) - { - x->cmap = c[i].colormap; - x->scmap = c[i]; - // Using HP_RGB scmap - } - i++; - } - XFree( (char *)c ); - } - } - } - -#if !defined(_OS_SOLARIS_) - if ( !x->cmap ) - { - if ( XmuLookupStandardColormap(dpy,vi->screen,vi->visualid,vi->depth, - XA_RGB_DEFAULT_MAP,false,true) ) - { - if ( XGetRGBColormaps(dpy,RootWindow(dpy,vi->screen),&c,&n, - XA_RGB_DEFAULT_MAP) ) - { - i = 0; - while ( i < n && x->cmap == 0 ) - { - if ( c[i].visualid == vi->visualid ) - { - x->cmap = c[i].colormap; - x->scmap = c[i]; - // Using RGB_DEFAULT scmap - } - i++; - } - XFree( (char *)c ); - } - } - } -#endif - if ( !x->cmap ) - { - // no shared cmap found - x->cmap = XCreateColormap( dpy, RootWindow(dpy,vi->screen), vi->visual, - AllocNone ); - x->alloc = true; - // Allocating cmap - } - - cmap_dict->insert( (long)vi->visualid, x ); // associate cmap with visualid - return x->cmap; -} -#endif - -/* statics */ -int OCCViewer_ViewPort::nCounter = 0; -QCursor* OCCViewer_ViewPort::defCursor = NULL; -QCursor* OCCViewer_ViewPort::handCursor = NULL; -QCursor* OCCViewer_ViewPort::panCursor = NULL; -QCursor* OCCViewer_ViewPort::zoomCursor = NULL; -QCursor* OCCViewer_ViewPort::rotCursor = NULL; -QCursor* OCCViewer_ViewPort::glPanCursor = NULL; - -/*! - Creates the necessary viewport cursors [ static ] -*/ -void OCCViewer_ViewPort::createCursors () -{ - defCursor = new QCursor ( ArrowCursor ); - handCursor = new QCursor ( PointingHandCursor ); - panCursor = new QCursor ( SizeAllCursor ); - zoomCursor = new QCursor (QPixmap(imageZoomCursor)); - rotCursor = new QCursor (QPixmap(imageRotateCursor)); - glPanCursor = new QCursor (CrossCursor); -// QAD_ResourceMgr* rmgr = QAD_Desktop::getResourceManager(); -// zoomCursor = new QCursor ( rmgr->loadPixmap( "QAD", tr("ICON_CURSOR_ZOOM") )); -// rotCursor = new QCursor ( rmgr->loadPixmap( "QAD", tr("ICON_CURSOR_ROTATE") )); -} - -/*! - Destroys the viewport cursors [ static ] -*/ -void OCCViewer_ViewPort::destroyCursors () -{ - if ( defCursor ) delete defCursor; - defCursor = 0; - if ( handCursor ) delete handCursor; - handCursor = 0; - if ( panCursor ) delete panCursor; - panCursor = 0; - if ( zoomCursor ) delete zoomCursor; - zoomCursor = 0; - if ( rotCursor ) delete rotCursor; - rotCursor = 0; - if ( glPanCursor ) delete glPanCursor; - glPanCursor = 0; -} - -/*! - Sets new default cursor [ static ] -*/ -void OCCViewer_ViewPort::setDefaultCursor(const QCursor& newCursor) -{ - if ( !defCursor ) defCursor = new QCursor; - *defCursor = newCursor; -} - -/*! - Sets new cursor for drawing rectangle in the viewport [ static ] -*/ -void OCCViewer_ViewPort::setHandCursor(const QCursor& newCursor) -{ - if ( !handCursor ) handCursor = new QCursor; - *handCursor = newCursor; -} - -/*! - Sets new cursor for panning [ static ] -*/ -void OCCViewer_ViewPort::setPanCursor(const QCursor& newCursor) -{ - if ( !panCursor ) panCursor = new QCursor; - *panCursor = newCursor; -} - -/*! - Sets new cursor for zooming [ static ] -*/ -void OCCViewer_ViewPort::setZoomCursor(const QCursor& newCursor) -{ - if ( !zoomCursor ) zoomCursor = new QCursor; - *zoomCursor = newCursor; -} - -/*! - Sets new cursor for rotating [ static ] -*/ -void OCCViewer_ViewPort::setRotCursor(const QCursor& newCursor) -{ - if ( !rotCursor ) rotCursor = new QCursor; - *rotCursor = newCursor; -} - -/*! - Sets new cursor for global panning [ static ] -*/ -void OCCViewer_ViewPort::setGlPanCursor(const QCursor& newCursor) -{ - if ( !glPanCursor ) glPanCursor = new QCursor; - *glPanCursor = newCursor; -} - -/*! - Constructor -*/ -OCCViewer_ViewPort::OCCViewer_ViewPort(QWidget* parent) : - QWidget( parent, 0, WRepaintNoErase | WResizeNoErase) -{ - initialize(); -} - -/*! - Destructor -*/ -OCCViewer_ViewPort::~OCCViewer_ViewPort() -{ - cleanup(); -} - -/*! - Initializes viewport -*/ -void OCCViewer_ViewPort::initialize() -{ - /* initialize cursors */ - if ( nCounter++ == 0 ) createCursors(); - -#if !defined WNT - - XVisualInfo* pVisualInfo; - if ( x11Display() ) - { - /* Initialization with the default VisualID - */ - //NRI Visual *v = DefaultVisual(x11Display(), DefaultScreen(x11Display())); - //NRI int visualID = XVisualIDFromVisual(v); - - /* Here we use the settings from - Optimizer_ViewInfo::TxglCreateWindow() - */ - int visualAttr[] = { GLX_RGBA, GLX_DEPTH_SIZE, 1, - GLX_RED_SIZE, 1, GLX_GREEN_SIZE, 1, - GLX_BLUE_SIZE, 1, GLX_DOUBLEBUFFER, - None }; - - pVisualInfo = ::glXChooseVisual (x11Display(), DefaultScreen(x11Display()), visualAttr); - - if ( isVisible() ) hide(); - - XSetWindowAttributes a; - - a.colormap = choose_cmap( x11Display(), pVisualInfo ); /* find best colormap */ - a.background_pixel = backgroundColor().pixel(); - a.border_pixel = black.pixel(); - Window p = RootWindow( x11Display(), DefaultScreen(x11Display()) ); - if ( parentWidget() ) p = parentWidget()->winId(); - - Window w = XCreateWindow( x11Display(), p, x(), y(), width(), height(), - 0, pVisualInfo->depth, InputOutput, pVisualInfo->visual, - CWBackPixel | CWBorderPixel | CWColormap, &a ); - Window *cmw; - Window *cmwret; - int count; - if ( XGetWMColormapWindows( x11Display(), topLevelWidget()->winId(), &cmwret, &count ) ) - { - cmw = new Window[count+1]; - memcpy( (char *)cmw, (char *)cmwret, sizeof(Window)*count ); - XFree( (char *)cmwret ); - int i; - - for (i = 0; i < count; i++) - { - if ( cmw[i] == winId() ) /* replace old window */ - { - cmw[i] = w; - break; - } - } - - if ( i >= count ) /* append new window */ - cmw[count++] = w; - } - else - { - count = 1; - cmw = new Window[count]; - cmw[0] = w; - } - - /* Creating new window (with good VisualID) for this widget - */ - create(w); - XSetWMColormapWindows( x11Display(), topLevelWidget()->winId(), cmw, count ); - delete [] cmw; - - if ( isVisible() ) show(); - - if ( pVisualInfo ) { - XFree( (char *)pVisualInfo ); - } - - XFlush(x11Display()); - // XSync(x11Display(), false); - // XSynchronize(x11Display(), true); - } -#endif // !defined WNT - - myOriginalViewport = NULL; - myCursorIsHand = false; - myCursor = *defCursor; - myHasWindow = false; - myDrawRect = false; - myStartX = myStartY = myCurrX = myCurrY =0; - myPaintersRedrawing = false; - myEnableDrawMode = true; - - setTransformRequested ( NOTHING ); - setTransformInProcess ( false ); - - setMouseTracking( true ); - setBackgroundMode(NoBackground); - - setFocus(); -} - -/*! - Cleans up the viewport -*/ -void OCCViewer_ViewPort::cleanup() -{ - if ( --nCounter == 0 ) - destroyCursors(); -} - -/*! - Sets the original view for the viewport -*/ -void OCCViewer_ViewPort::setOriginalView( OCCViewer_ViewPort* viewport, - const QRect& magnify ) -{ - myOriginalViewport = viewport; - myMagnifyRect = magnify; -} - -/*! - Returns the original view or null -*/ -OCCViewer_ViewPort* OCCViewer_ViewPort::getOriginalView() const -{ - return myOriginalViewport; -} - -/*! - Returns the 'magnify' rect ( used for 'magnify' operation ) -*/ -const QRect& OCCViewer_ViewPort::getMagnifyRect() const -{ - return myMagnifyRect; -} - -/*! - Returns the sketched rect ( used for multiple selection ) -*/ -const QRect& OCCViewer_ViewPort::getSelectionRect() const -{ - return myRect; -} - -/*! - Returns 'true' if the viewport has a native window -*/ -bool OCCViewer_ViewPort::hasWindow() const -{ - return myHasWindow; -} - -/*! - Must be called if native window was changed -*/ -void OCCViewer_ViewPort::windowChanged() -{ - myHasWindow = false; -} - -/*! - Sets the default cursor active -*/ -void OCCViewer_ViewPort::setDefaultCursorOn() -{ - setCursor ( *OCCViewer_ViewPort::defCursor ); -} - -/*! - Sets the 'hand' cursor active -*/ -void OCCViewer_ViewPort::setHandCursorOn() -{ - setCursor ( *OCCViewer_ViewPort::handCursor ); -} - -/*! - Sets the panning cursor active -*/ -void OCCViewer_ViewPort::setPanCursorOn() -{ - setCursor( *OCCViewer_ViewPort::panCursor ); -} - -/*! - Sets the zooming cursor active -*/ -void OCCViewer_ViewPort::setZoomCursorOn() -{ - setCursor( *OCCViewer_ViewPort::zoomCursor ); -} - -/*! - Sets the rotating cursor active -*/ -void OCCViewer_ViewPort::setRotCursorOn() -{ - setCursor( *OCCViewer_ViewPort::rotCursor ); -} - -/*! - Sets the global panning cursor active -*/ -void OCCViewer_ViewPort::setGlPanCursorOn() -{ - setCursor( *OCCViewer_ViewPort::glPanCursor ); -} - -/*! - Returns the default background color -*/ -QColor OCCViewer_ViewPort::backgroundColor() const -{ - return Qt::white; -} - -/*! - Activates 'zoom' transformation -*/ -void OCCViewer_ViewPort::activateZoom() -{ - if ( !transformRequested() && !myCursorIsHand ) - myCursor = cursor(); /* save old cursor */ - - if ( myOperation != ZOOMVIEW ) { - setTransformRequested ( ZOOMVIEW ); - setCursor( *zoomCursor ); - } -} - -/*! - Activates 'panning' transformation -*/ -void OCCViewer_ViewPort::activatePanning() -{ - if ( !transformRequested() && !myCursorIsHand ) - myCursor = cursor(); /* save old cursor */ - - if ( myOperation != PANVIEW ) { - setTransformRequested ( PANVIEW ); - setCursor( *panCursor ); - } -} - -/*! - Activates 'rotation' transformation -*/ -void OCCViewer_ViewPort::activateRotation() -{ - if ( !transformRequested() && !myCursorIsHand ) - myCursor = cursor(); /* save old cursor */ - - if ( myOperation != ROTATE ) { - setTransformRequested ( ROTATE ); - setCursor( *rotCursor ); - } -} - -/*! - Activates 'fit' transformation -*/ -void OCCViewer_ViewPort::activateWindowFit() -{ - if ( !transformRequested() && !myCursorIsHand ) - myCursor = cursor(); /* save old cursor */ - - if ( myOperation != WINDOWFIT ) { - setTransformRequested ( WINDOWFIT ); - setCursor ( *handCursor ); - myCursorIsHand = true; - } -// setTransformInProcess( true ); -// emit vpTransformationStarted ( WINDOWFIT ); -} - -/*! - Activates 'global panning' transformation -*/ -void OCCViewer_ViewPort::activateGlobalPanning() -{ - if ( !transformRequested() && !myCursorIsHand ) - myCursor = cursor(); /* save old cursor */ - - if ( myOperation != PANGLOBAL ) - { - fitAll(); /* fits view before selecting a new scene center */ - setTransformRequested ( PANGLOBAL ); - setCursor( *glPanCursor ); - } -// setTransformInProcess( true ); -// emit vpTransformationStarted ( PANGLOBAL ); -} - -/*! - Sets the viewport to its initial state - ( no transformations in process etc. ) -*/ -void OCCViewer_ViewPort::resetState() -{ - myDrawRect = false; - - /* make rectangle empty (left > right) */ - myRect.setLeft(2); - myRect.setRight(0); - - if ( transformRequested() || myCursorIsHand ) - setCursor( myCursor ); - myCursorIsHand = false; - - if ( transformRequested() ) - emit vpTransformationFinished (myOperation); - - setTransformInProcess( false ); - setTransformRequested ( NOTHING ); - QAD_Application::getDesktop()->putInfo( tr("INF_READY") ); -} - -/*! - Enable/disable user's ability to sketch a rect in the viewport -*/ -void OCCViewer_ViewPort::enableDrawMode(bool bEnable ) -{ - myEnableDrawMode = bEnable; -} - -/*! - Returns 'true' if user can sketch a rect in the viewport -*/ -bool OCCViewer_ViewPort::enableDrawMode() const -{ - return myEnableDrawMode; -} - -/*! - Sets the active operation 'op' -*/ -void OCCViewer_ViewPort::setTransformRequested ( OperationType op ) -{ - myOperation = op; - setMouseTracking ( myOperation == NOTHING ); -} - -/*! - Mouse event handler -*/ -void OCCViewer_ViewPort::mousePressEvent (QMouseEvent* event) -{ - myStartX = event->x(); - myStartY = event->y(); - switch ( myOperation ) - { - case WINDOWFIT: - if ( event->button() == Qt::LeftButton ) - emit vpTransformationStarted ( WINDOWFIT ); - break; -// return; - case PANGLOBAL: - if ( event->button() == Qt::LeftButton ) - emit vpTransformationStarted ( PANGLOBAL ); - break; -// return; - - case ZOOMVIEW: - if ( event->button() == Qt::LeftButton ) - emit vpTransformationStarted ( ZOOMVIEW ); - break; - - case PANVIEW: - if ( event->button() == Qt::LeftButton ) - emit vpTransformationStarted ( PANVIEW ); - break; - - case ROTATE: - if ( event->button() == Qt::LeftButton ) - { - startRotation(myStartX, myStartY); - emit vpTransformationStarted ( ROTATE ); - } - break; - - default: - - /* Try to activate a transformation - */ - if ( (event->state() == Qt::ControlButton) && - (event->button() == Qt::LeftButton) ) - { - /* MB1 + CTRL = Zooming */ - activateZoom(); - } - else if ( (event->state() == Qt::ControlButton) && - (event->button() == Qt::MidButton) ) - { - /* MB2 + CTRL = Panning */ - activatePanning(); - } - else if ( (event->state() == Qt::ControlButton) && - (event->button() == Qt::RightButton) ) - { - /* MB3 + CTRL = Rotation */ - activateRotation(); - startRotation(myStartX, myStartY); - } - - /* notify that we start a transformation */ - if ( transformRequested() ) - emit vpTransformationStarted ( myOperation ); - } - - if ( transformRequested() ) - setTransformInProcess( true ); - - /* NOTE: this signal must be emitted at the end - because we must to detect a transformation first - */ - emit vpMousePress (event); -} - -/*! - Mouse event handler -*/ -void OCCViewer_ViewPort::mouseMoveEvent (QMouseEvent* event) -{ - myCurrX = event->x(); - myCurrY = event->y(); - switch (myOperation) - { - case ROTATE: - rotate(myCurrX, myCurrY); - break; - - case ZOOMVIEW: - zoom(myStartX, myStartY, myCurrX, myCurrY); - myStartX = myCurrX; - myStartY = myCurrY; - break; - - case PANVIEW: - pan(myCurrX - myStartX, myStartY - myCurrY); - myStartX = myCurrX; - myStartY = myCurrY; - break; - -/* case WINDOWFIT: - myDrawRect = true; - repaint(); - break; -*/ - case PANGLOBAL: - break; - - default: - if ( event->state() == Qt::LeftButton || - event->state() == ( Qt::LeftButton | Qt::ShiftButton) ) - { - myDrawRect = myEnableDrawMode; - if ( myDrawRect ) - { - repaint( visibleRect(), false); - if ( !myCursorIsHand ) - { /* we are going to sketch a rectangle */ - myCursorIsHand = true; - myCursor = cursor(); - setCursor ( *handCursor ); - } - } - } - } - emit vpMouseMove( event ); -} - -/*! - Mouse event handler -*/ -void OCCViewer_ViewPort::mouseReleaseEvent (QMouseEvent* event) -{ - if ( !transformRequested() && (event->button() == Qt::RightButton) ) - { - QPopupMenu* popup = createPopup(); - if ( popup ) { - QAD_Tools::checkPopup( popup ); - if ( popup->count()>0 ) { - popup->exec( QCursor::pos() ); - } - destroyPopup(); - } - return; - } - - switch ( myOperation ) - { - case NOTHING: - break; - case ROTATE: - endRotation(); - resetState(); - break; - - case PANVIEW: - case ZOOMVIEW: - resetState(); - break; - - case PANGLOBAL: - if ( event->button() == Qt::LeftButton ) - { - setCenter( event->x(), event->y() ); - resetState(); - } - break; - - case WINDOWFIT: - if ( event->state() == Qt::LeftButton ) - { - myCurrX = event->x(); - myCurrY = event->y(); - QRect rect = QAD_Tools::makeRect(myStartX, myStartY, myCurrX, myCurrY); - if ( !rect.isEmpty() ) fitWindow(rect); - resetState(); - } - break; - } - - // NOTE: viewer 3D detects a rectangle of selection using this event - // so we must emit it BEFORE resetting the selection rectangle - emit vpMouseRelease (event); - - if ( event->button() == Qt::LeftButton && myDrawRect ) - { - myDrawRect = false; - repaint(visibleRect(), false); - resetState(); - } -} - -/*! - Mouse event handler -*/ -void OCCViewer_ViewPort::mouseDoubleClickEvent(QMouseEvent *event) -{ - emit vpMouseDoubleClick (event); -} - -/*! - Key event handler -*/ -void OCCViewer_ViewPort::keyPressEvent(QKeyEvent *event) -{ - emit vpKeyPress (event); -} - -/*! - Key event handler -*/ -void OCCViewer_ViewPort::keyReleaseEvent(QKeyEvent *event) -{ - emit vpKeyRelease (event); -} - -/*! - Called when the viewport gets the focus -*/ -void OCCViewer_ViewPort::focusInEvent(QFocusEvent *event) -{ - emit vpFocusIn (event); -} - -/*! - Called when the viewport loses the focus -*/ -void OCCViewer_ViewPort::focusOutEvent(QFocusEvent *event) -{ - emit vpFocusOut (event); -} - -/*! - Resizes the viewport -*/ -void OCCViewer_ViewPort::resizeEvent (QResizeEvent* event) -{ - windowResize(); -} - -/*! - Updates the viewport -*/ -void OCCViewer_ViewPort::update(int x, int y, int w, int h) -{ - if ( !myHasWindow ) - myHasWindow = setWindow(); - if ( myHasWindow) - repaint(x, y, w, h, true); -} - -/*! - Repaints the viewport -*/ -void OCCViewer_ViewPort::paintEvent (QPaintEvent *ev) -{ - emit vpPaint (ev); - if ( myDrawRect ) - { - QPainter thePainter(this); - thePainter.setRasterOp(Qt::XorROP); - thePainter.setPen(Qt::white); - QRect aRect = QAD_Tools::makeRect(myStartX, myStartY, myCurrX, myCurrY); - if ( !myRect.isEmpty() ) - thePainter.drawRect( myRect ); - thePainter.drawRect(aRect); - myRect = aRect; - } - - if ( myPaintersRedrawing ) - { - QPainter thePainter(this); - emit vpDrawExternal (&thePainter); - myPaintersRedrawing = false; - } -} - -/*! - Forces to redraw the viewport by an external painter -*/ -void OCCViewer_ViewPort::redrawPainters() -{ - myPaintersRedrawing = true; - repaint(); -} diff --git a/src/OCCViewer/OCCViewer_ViewPort.h b/src/OCCViewer/OCCViewer_ViewPort.h deleted file mode 100644 index 6f80c7816..000000000 --- a/src/OCCViewer/OCCViewer_ViewPort.h +++ /dev/null @@ -1,211 +0,0 @@ -// SALOME OCCViewer : build OCC Viewer into Salome desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : OCCViewer_ViewPort.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef OCCViewer_ViewPort_H -#define OCCViewer_ViewPort_H - -#include "QAD.h" -#include "QAD_Popup.h" - -// QT Includes -#include -#include -#include -#include -#include - -class QAD_EXPORT OCCViewer_ViewPort: public QWidget, - public QAD_PopupClientServer -{ - Q_OBJECT - - /* Objects counter */ - static int nCounter; - - /* Cursors */ - static QCursor* defCursor; - static QCursor* handCursor; - static QCursor* panCursor; - static QCursor* zoomCursor; - static QCursor* rotCursor; - static QCursor* glPanCursor; - - void initialize(); - void cleanup(); - -public: - enum OperationType { - NOTHING, - PANVIEW, - ZOOMVIEW, - ROTATE, - PANGLOBAL, - WINDOWFIT - }; - -protected: - static void createCursors(); - static void destroyCursors(); - - static const QCursor* getDefaultCursor() { return defCursor; } - static void setDefaultCursor(const QCursor& newCursor); - static const QCursor* getHandCursor() { return handCursor; } - static void setHandCursor(const QCursor& newCursor); - static const QCursor* getPanCursor() { return panCursor; } - static void setPanCursor(const QCursor& newCursor); - static const QCursor* getZoomCursor() { return zoomCursor; } - static void setZoomCursor(const QCursor& newCursor); - static const QCursor* getRotCursor() { return rotCursor; } - static void setRotCursor(const QCursor& newCursor); - static const QCursor* getGlPanCursor() { return rotCursor; } - static void setGlPanCursor(const QCursor& newCursor); - - /* Transformation selected but not started yet */ - bool transformRequested() const { return ( myOperation != NOTHING ); } - void setTransformRequested ( OperationType op ); - - /* Transformation is selected and already started */ - bool transformInProcess() const { return myEventStarted; } - void setTransformInProcess( bool bOn ) { myEventStarted = bOn; } - -public: - OCCViewer_ViewPort( QWidget* parent ); - ~OCCViewer_ViewPort(); - - /* Draw mode management */ - void enableDrawMode( bool bEnable ); - bool enableDrawMode() const; - - /* Cursors management */ - void setDefaultCursorOn(); - void setHandCursorOn(); - void setPanCursorOn(); - void setZoomCursorOn(); - void setRotCursorOn(); - void setGlPanCursorOn(); - - void resetState(); - bool hasWindow() const; - void windowChanged(); - void redrawPainters(); - void update(int x, int y, int w, int h); - - void setOriginalView( OCCViewer_ViewPort* view, const QRect& magnify ); - OCCViewer_ViewPort* getOriginalView() const; - const QRect& getMagnifyRect() const; - const QRect& getSelectionRect() const; - - /* View transformations */ - virtual void activateZoom(); - virtual void activatePanning(); - virtual void activateRotation(); - virtual void activateWindowFit(); - virtual void activateGlobalPanning(); - - virtual void fitAll( bool withZ = true ) = 0; - virtual void reset() = 0; - - virtual void incrementalPan ( const int incrX, const int incrY ) = 0; - virtual void incrementalZoom ( const int incr ) = 0; - virtual void incrementalRotate( const int incrX, const int incrY ) = 0; - - /* background color */ - virtual QColor backgroundColor() const; - virtual void setBackgroundColor( const QColor& color) = 0; - -protected: - virtual void paintEvent(QPaintEvent *); - virtual void resizeEvent(QResizeEvent *); - - virtual void mouseMoveEvent(QMouseEvent *); - virtual void mouseReleaseEvent(QMouseEvent *); - virtual void mousePressEvent(QMouseEvent *); - virtual void mouseDoubleClickEvent(QMouseEvent *); - - virtual void keyPressEvent(QKeyEvent *); - virtual void keyReleaseEvent(QKeyEvent *); - - virtual void focusInEvent(QFocusEvent *event); - virtual void focusOutEvent(QFocusEvent *event); - -signals: - void vpTransformationStarted (OCCViewer_ViewPort::OperationType type); - void vpTransformationFinished (OCCViewer_ViewPort::OperationType type); - - void vpMousePress (QMouseEvent*); - void vpMouseRelease (QMouseEvent*); - void vpMouseMove (QMouseEvent*); - void vpMouseDoubleClick (QMouseEvent*); - - void vpKeyPress (QKeyEvent*); - void vpKeyRelease (QKeyEvent*); - - void vpFocusOut (QFocusEvent*); - void vpFocusIn (QFocusEvent*); - - void vpPaint (QPaintEvent*); - void vpDrawExternal (QPainter* painter); - -protected slots: - virtual void onChangeBackgroundColor() = 0; - -protected: - virtual bool setWindow() = 0; - virtual void windowResize() = 0; - virtual void pan(int dx, int dy) = 0; - virtual void setCenter(int x, int y) = 0; - virtual void fitWindow( const QRect& rect) = 0; - virtual void zoom(int x0, int y0, int x, int y) = 0; - virtual void startRotation(int x0, int y0) = 0; - virtual void rotate(int x, int y) = 0; - virtual void endRotation() = 0; - -protected: - OCCViewer_ViewPort* myOriginalViewport; - OperationType myOperation; - QCursor myCursor; - - QRect myMagnifyRect; - QRect myRect; - bool myDrawRect; /* set when a rect is used for selection or magnify */ - - /* Mouse coordinates */ - int myStartX; - int myStartY; - int myCurrX; - int myCurrY; - - bool myHasWindow; - bool myCursorIsHand; - bool myEnableDrawMode; - bool myEventStarted; /* set when transformation is in process */ - bool myPaintersRedrawing; /* set to draw with external painters */ -}; - -#endif - diff --git a/src/OCCViewer/OCCViewer_ViewPort3d.cxx b/src/OCCViewer/OCCViewer_ViewPort3d.cxx deleted file mode 100644 index 0ace89025..000000000 --- a/src/OCCViewer/OCCViewer_ViewPort3d.cxx +++ /dev/null @@ -1,418 +0,0 @@ -// SALOME OCCViewer : build OCC Viewer into Salome desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : OCCViewer_ViewPort3d.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "OCCViewer_ViewPort3d.h" - -#include "QAD.h" -#include "QAD_Settings.h" -#include "QAD_Config.h" -#include "QAD_Desktop.h" -#include "QAD_Study.h" -#include "SALOME_Selection.h" - -// QT Include -#include - -// Open CASCADE Includes -#include -#include - -#if !defined WNT -#include -#endif - -using namespace std; - -/*! - Constructor -*/ -OCCViewer_ViewPort3d::OCCViewer_ViewPort3d( QWidget* parent, const Handle( V3d_Viewer)& viewer, - V3d_TypeOfView viewType, OCCViewer_ViewPort* prevView , - const QRect* magnify ) : - OCCViewer_ViewPort( parent ) -{ - if ( viewType == V3d_ORTHOGRAPHIC ) - myActiveView = new V3d_OrthographicView( viewer ); - else - myActiveView = new V3d_PerspectiveView( viewer ); - - myCurScale = 1.0; - myDegenerated = true; - - myActiveView->SetDegenerateModeOn(); - - if ( prevView ) setOriginalView( prevView, *magnify ); -} - -/*! - Destructor -*/ -OCCViewer_ViewPort3d::~OCCViewer_ViewPort3d() -{ - myActiveView->Remove(); -} - -/*! - Creates the popup -*/ -void OCCViewer_ViewPort3d::onCreatePopup() -{ - if ( myPopup ) { - QAD_Desktop* Desktop = (QAD_Desktop*) QAD_Application::getDesktop(); - - QString theContext; - QString theParent("Viewer"); - QString theObject; - - Desktop->definePopup( theContext, theParent, theObject ); - Desktop->createPopup( myPopup, theContext, theParent, theObject); - Desktop->customPopup( myPopup, theContext, theParent, theObject ); - -// if (Sel->IObjectCount() == 0 && myPopup->count()<1) { - if ( myPopup->count() > 0 ) - myIDs.append ( myPopup->insertSeparator() ); - int id; - myIDs.append ( id = myPopup->insertItem (tr ("MEN_VP3D_CHANGEBGR")) ); - QAD_ASSERT ( myPopup->connectItem ( id, this, SLOT(onChangeBackgroundColor())) ); -// } - } -} - -/*! - Sets new CASCADE view on viewport. - Returns the previous view or null if the view hasn't been set. -*/ -Handle (V3d_View) OCCViewer_ViewPort3d::setView( const Handle (V3d_View)& view ) -{ - Handle (V3d_View) oldView = myActiveView; - myActiveView = view; - if ( hasWindow() ) setWindow(); - return oldView; -} - -/*! - Returns CasCade 3D view -*/ -Handle(V3d_View) OCCViewer_ViewPort3d::getView() const -{ - return myActiveView; -} - -/*! - Returns CasCade 3D viewer -*/ -Handle (V3d_Viewer) OCCViewer_ViewPort3d::getViewer() const -{ - Handle (V3d_Viewer) viewer; - if ( !myActiveView.IsNull() ) - viewer = myActiveView->Viewer(); - return viewer; -} - -/*! - Passed the handle of native window of the component to CASCADE view - (sets window handle for V3d_View class instance). -*/ -bool OCCViewer_ViewPort3d::setWindow() -{ - if ( !myActiveView.IsNull() ) - { - int windowHandle = (int) winId(); - if ( windowHandle == 0 ) - return false; - - short hi, lo; - lo = (short) windowHandle; - hi = (short) (windowHandle >> 16); - - OCCViewer_ViewPort* preView = getOriginalView(); - if ( preView ) - { - /* Create new window ( 'magnify' operation ) - */ - Handle (V3d_View) view; - QRect rect = getMagnifyRect(); - if ( preView->inherits("OCCViewer_ViewPort3d") ) - { - view = ((OCCViewer_ViewPort3d*)preView)->getView(); - } - if ( !view.IsNull() && !rect.isEmpty() ) - { - OCCViewer_VService::SetMagnify(myActiveView, (int)hi, (int) lo, view, - rect.x(), rect.y(), - rect.x() + rect.width(), rect.y() + rect.height(), - Xw_WQ_SAMEQUALITY); - return true; - } - } - - /* CasCade will use our widget as the drawing window */ - OCCViewer_VService::SetWindow( myActiveView, (int) hi, (int) lo, Xw_WQ_SAMEQUALITY); - return true; - } - return false; -} - -/*! - Forces the CASCADE view to resize window -*/ -void OCCViewer_ViewPort3d::windowResize() -{ - QApplication::syncX(); - if ( !myActiveView.IsNull() ) - myActiveView->MustBeResized(); -} - -/*! - Called at 'window fit' transformation -*/ -void OCCViewer_ViewPort3d::fitWindow(const QRect& rect) -{ - if ( !myActiveView.IsNull() ) - { - myActiveView->WindowFit( rect.x(), rect.y(), rect.x() + rect.width(), - rect.y() + rect.height()); - } -} - -/*! - Called at 'zoom' transformation -*/ -void OCCViewer_ViewPort3d::zoom(int x0, int y0, int x, int y) -{ - if ( !myActiveView.IsNull() ) - myActiveView->Zoom(x0, y0, x, y); -} - -/*! - Centers the viewport -*/ -void OCCViewer_ViewPort3d::setCenter(int x, int y) -{ - if ( !myActiveView.IsNull() ) - { - myActiveView->Place(x, y, myCurScale); - } -} - -/*! - Called at 'pan' transformation -*/ -void OCCViewer_ViewPort3d::pan(int dx, int dy) -{ - if ( !myActiveView.IsNull() ) - { - myActiveView->Pan(dx, dy, 1.0); - } -} - -/*! - Inits 'rotation' transformation -*/ -void OCCViewer_ViewPort3d::startRotation(int x0, int y0) -{ - if ( !myActiveView.IsNull() ) - { - myDegenerated = myActiveView->DegenerateModeIsOn(); - myActiveView->SetDegenerateModeOn(); - myActiveView->StartRotation(x0, y0); - } -} - -/*! - Rotates the viewport -*/ -void OCCViewer_ViewPort3d::rotate(int x, int y) -{ - if ( !myActiveView.IsNull() ) - { - myActiveView->Rotation(x, y); - } -} - -/*! - Resets the viewport after 'rotation' -*/ -void OCCViewer_ViewPort3d::endRotation() -{ - if ( !myActiveView.IsNull() ) - { - if ( !myDegenerated ) - myActiveView->SetDegenerateModeOff(); - } -} - -/*! - Called to update the background color -*/ -QColor OCCViewer_ViewPort3d::backgroundColor() const -{ - if ( !myActiveView.IsNull() ) - { - Standard_Real aRed, aGreen, aBlue; - myActiveView->BackgroundColor(Quantity_TOC_RGB, aRed, aGreen, aBlue); - int red = (int) (aRed * 255); - int green = (int) (aGreen * 255); - int blue = (int) (aBlue * 255); - return QColor(red, green, blue); - } - return OCCViewer_ViewPort::backgroundColor(); -} - -/*! - Sets the background color -*/ -void OCCViewer_ViewPort3d::setBackgroundColor( const QColor& color) -{ - if ( !myActiveView.IsNull() ) - { - myActiveView->SetBackgroundColor( Quantity_TOC_RGB, color.red()/255., - color.green()/255., color.blue()/255.); - - /* VSR : PAL5420 --------------------------------------------------- - QAD_CONFIG->addSetting( "OCCViewer:BackgroundColorRed", color.red() ); - QAD_CONFIG->addSetting( "OCCViewer:BackgroundColorGreen", color.green() ); - QAD_CONFIG->addSetting( "OCCViewer:BackgroundColorBlue", color.blue() ); - VSR : PAL5420 --------------------------------------------------- */ - myActiveView->Update(); - } -} - -/*! - Sets the background color with color selection dialog -*/ -void OCCViewer_ViewPort3d::onChangeBackgroundColor() -{ - if ( !myActiveView.IsNull() ) - { - QColor selColor = QColorDialog::getColor ( backgroundColor(), this ); - if ( selColor.isValid() ) - { - setBackgroundColor( selColor ); - } - } -} - -/*! - Repaints the viewport -*/ -void OCCViewer_ViewPort3d::paintEvent (QPaintEvent* e ) -{ - if ( myActiveView.IsNull() ) - { - QPainter thePainter (this); - thePainter.drawText(50, 50, QObject::tr("ERR_VP_NOVIEW"), 7); - } - else - { - QApplication::syncX(); - if ( !myHasWindow ) - { - myHasWindow = setWindow(); - if ( myHasWindow ) fitAll(); - } - if ( myHasWindow ) - { - QRect visibleRect = e->rect(); - if ( (!myDrawRect) && (!myPaintersRedrawing) ) - { - myActiveView->Redraw ( visibleRect.x(), visibleRect.y(), visibleRect.width(), - visibleRect.height()); - } - } - } - OCCViewer_ViewPort::paintEvent( e ); -} - -/*! - Called at 'global panning' transformation -*/ -void OCCViewer_ViewPort3d::activateGlobalPanning() -{ - if ( !myActiveView.IsNull() ) - { - myCurScale = myActiveView->Scale(); - myActiveView->FitAll(0.01, false); - } - OCCViewer_ViewPort::activateGlobalPanning(); -} - -/*! - Fits all objects in view -*/ -void OCCViewer_ViewPort3d::fitAll( bool withZ ) -{ - if ( !myActiveView.IsNull() ) - { - myActiveView->FitAll(0.01, true); - if ( withZ ) myActiveView->ZFitAll(0.0); - } -} - -/*! - Resets the view -*/ -void OCCViewer_ViewPort3d::reset() -{ - if ( !myActiveView.IsNull() ) - { - myActiveView->Reset(); - } -} - -/*! - Incremental panning -*/ -void OCCViewer_ViewPort3d::incrementalPan( const int incrX, const int incrY ) -{ - this->pan( incrX, incrY ); -} - -/*! - Incremental zooming -*/ -void OCCViewer_ViewPort3d::incrementalZoom( const int incr ) -{ - int cx = width() / 2; - int cy = height() / 2; - this->zoom( cx, cy, cx + incr, cy + incr ); -} - -/*! - Incremental rotating -*/ -void OCCViewer_ViewPort3d::incrementalRotate( const int incrX, const int incrY ) -{ - int cx = width() / 2; - int cy = height() / 2; - this->startRotation( cx, cy ); - this->rotate( cx + incrX, cy + incrY ); - this->endRotation(); -} - - diff --git a/src/OCCViewer/OCCViewer_ViewPort3d.h b/src/OCCViewer/OCCViewer_ViewPort3d.h deleted file mode 100644 index e36ca9de2..000000000 --- a/src/OCCViewer/OCCViewer_ViewPort3d.h +++ /dev/null @@ -1,106 +0,0 @@ -// SALOME OCCViewer : build OCC Viewer into Salome desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : OCCViewer_ViewPort3d.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef OCCViewer_ViewPort3d_H -#define OCCViewer_ViewPort3d_H - -#include "OCCViewer_ViewPort.h" -#include "OCCViewer_VService.h" - -#include "QAD.h" - -// Open CASCADE Includes -#include -#include -#include - -// QT Includes -#include -#include -#include -#include -#include - -class QAD_EXPORT OCCViewer_ViewPort3d: public OCCViewer_ViewPort -{ - Q_OBJECT - - public: - OCCViewer_ViewPort3d( QWidget* parent, const Handle( V3d_Viewer)& viewer, - V3d_TypeOfView viewType = V3d_ORTHOGRAPHIC, - OCCViewer_ViewPort* prevView = 0, - const QRect* magnify = 0 ); - ~OCCViewer_ViewPort3d(); - - /* view 3D management */ - Handle (V3d_View) setView( const Handle( V3d_View )& ); - Handle (V3d_View) getView() const; - Handle (V3d_Viewer) getViewer() const; - V3d_TypeOfView setViewType( V3d_TypeOfView type ); - - /* popup management */ - void onCreatePopup(); - - /* view transformations */ - void activateGlobalPanning(); - void fitAll( bool withZ = true ); - void reset(); - - void incrementalPan ( const int incrX, const int incrY ); - void incrementalZoom ( const int incr ); - void incrementalRotate( const int incrX, const int incrY ); - - /* background */ - void setBackgroundColor( const QColor& color); - QColor backgroundColor() const; - - protected slots: - void onChangeBackgroundColor(); - - protected: - void paintEvent(QPaintEvent *ev); - - private: - bool setWindow(); - void windowResize(); - void pan(int dx, int dy); - void setCenter(int x, int y); - void fitWindow( const QRect& rect); - void zoom(int x0, int y0, int x, int y); - void startRotation(int x0, int y0); - void rotate(int x, int y); - void endRotation(); - - private: - Handle (V3d_View) myActiveView; - bool myDegenerated; - double myCurScale; -}; - -#endif - diff --git a/src/OCCViewer/OCCViewer_Viewer3d.cxx b/src/OCCViewer/OCCViewer_Viewer3d.cxx deleted file mode 100644 index c79b20136..000000000 --- a/src/OCCViewer/OCCViewer_Viewer3d.cxx +++ /dev/null @@ -1,975 +0,0 @@ -// SALOME OCCViewer : build OCC Viewer into Salome desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : OCCViewer_Viewer3d.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -/*! - \class OCCViewer_Viewer3d OCCViewer_Viewer3d.h - \brief Open CASCADE Viewer 3D with viewport 3D and selection. -*/ - -#include "OCCViewer_Viewer3d.h" -#include "OCCViewer_ViewFrame.h" -#include "OCCViewer_AISSelector.h" -#include "QAD.h" -#include "QAD_Config.h" -#include "QAD_Desktop.h" -#include "QAD_Settings.h" -#include "QAD_LeftFrame.h" -#include "OCCViewer_ViewPort3d.h" -#include "QAD_RightFrame.h" -#include "QAD_MessageBox.h" -#include "QAD_Application.h" - -#include "SALOME_Selection.h" -#include "SALOME_InteractiveObject.hxx" -#include "SALOME_ListIteratorOfListIO.hxx" - -#include "SALOME_AISShape.hxx" -#include "SALOME_AISObject.hxx" - -#include "utilities.h" - -// Open CASCADE Includes -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace std; - -DEFINE_BASECOLLECTION( OCCViewer_CollectionOfIndexedMapOfShapes, TopTools_IndexedMapOfShape ) -DEFINE_DATAMAP( OCCViewer_MapOfIOIndexedMapOfShape, OCCViewer_CollectionOfIndexedMapOfShapes, Handle_SALOME_InteractiveObject, TopTools_IndexedMapOfShape) - -DEFINE_BASECOLLECTION( OCCViewer_CollectionOfMapOfInteger, TColStd_MapOfInteger ) -DEFINE_DATAMAP( OCCViewer_MapOfIOMapOfInteger, OCCViewer_CollectionOfMapOfInteger, Handle_SALOME_InteractiveObject, TColStd_MapOfInteger ) - -/*! - Constructor -*/ -OCCViewer_Viewer3d::OCCViewer_Viewer3d(OCCViewer_ViewFrame* vf) : - myAISContext( NULL ), - myAISSelector( NULL ) -{ - if ( myV3dViewer.IsNull() ) - createViewer3d(); /* create viewer */ - - QString BackgroundColorRed = QAD_CONFIG->getSetting("OCCViewer:BackgroundColorRed"); - QString BackgroundColorGreen = QAD_CONFIG->getSetting("OCCViewer:BackgroundColorGreen"); - QString BackgroundColorBlue = QAD_CONFIG->getSetting("OCCViewer:BackgroundColorBlue"); - - if( !BackgroundColorRed.isEmpty() && !BackgroundColorGreen.isEmpty() && !BackgroundColorBlue.isEmpty() ) - myBackColor = QColor(BackgroundColorRed.toInt(), - BackgroundColorGreen.toInt(), - BackgroundColorBlue.toInt()); - else - myBackColor = QColor(35, 136, 145); - - myViewFrame = vf; - myViewFrame->setViewPort ( new OCCViewer_ViewPort3d( myViewFrame, myV3dViewer ) ); - myViewFrame->setViewer(this); - - /* properties settings */ - // if ( !myIcon.isNull() ) - // myStudyFrame->setIcon( myIcon ); - - myViewFrame->setCursor( myCursor ); - myViewFrame->setBackgroundColor( myBackColor ); - - if ( myAISContext.IsNull() ) { - /* create interactive manager */ - myAISContext = new AIS_InteractiveContext ( myV3dViewer, myV3dCollector ); - - myAISContext->IsoOnPlane(true) ; - - /* create trihedron */ - Handle(Geom_Axis2Placement) anAxis=new Geom_Axis2Placement(gp::XOY()); - myTrihedron=new AIS_Trihedron(anAxis); - myTrihedron->SetInfiniteState( Standard_True ); - - Quantity_Color Col(193/255., 205/255., 193/255., Quantity_TOC_RGB); - myTrihedron->SetColor( Col ); - myTrihedron->SetArrowColor( Col.Name() ); - - float dim = 100; - QString Size = QAD_CONFIG->getSetting("Viewer:TrihedronSize"); - if (!Size. isEmpty() ) dim = Size.toFloat(); //get size from preferences - - myTrihedron->SetSize(dim); - - myAISContext->Display(myTrihedron); - myAISContext->Deactivate(myTrihedron); - - /* create selector */ - myAISSelector = new OCCViewer_AISSelector ( myAISContext ); - QAD_ASSERT ( connect (myAISSelector, SIGNAL(selSelectionDone(bool)), - this, SLOT(onSelectionDone(bool))) ); - QAD_ASSERT ( connect (myAISSelector, SIGNAL(selSelectionCancel(bool)), - this, SLOT(onSelectionCancel(bool))) ); - myEnableSelection = true; - } - - QAD_ASSERT ( connect(myViewFrame, - SIGNAL(vfKeyPress(QKeyEvent*)), - this, SLOT(onKeyPress(QKeyEvent*))) ); - - /* mouse events of the view */ - QAD_ASSERT ( QObject::connect(myViewFrame, - SIGNAL(vfMousePress(QMouseEvent*)), - this, SLOT(onMousePress(QMouseEvent*))) ); - QAD_ASSERT ( QObject::connect(myViewFrame, - SIGNAL(vfMouseRelease(QMouseEvent*)), - this, SLOT(onMouseRelease (QMouseEvent*))) ); - QAD_ASSERT ( QObject::connect(myViewFrame, - SIGNAL(vfMouseMove(QMouseEvent*)), - this, SLOT(onMouseMove (QMouseEvent*))) ); - QAD_ASSERT ( QObject::connect(myViewFrame, - SIGNAL(vfMouseDoubleClick(QMouseEvent*)), - this, SLOT(onMouseDoubleClick (QMouseEvent*))) ); - - /* transformation events */ - QAD_ASSERT ( QObject::connect(myViewFrame, - SIGNAL(vfTransformationStarted(OCCViewer_ViewPort::OperationType)), - this, SLOT(onTransformationStarted (OCCViewer_ViewPort::OperationType))) ); - QAD_ASSERT ( QObject::connect(myViewFrame, - SIGNAL(vfTransformationFinished(OCCViewer_ViewPort::OperationType)), - this, SLOT(onTransformationFinished (OCCViewer_ViewPort::OperationType))) ); - - /* set popup manager for the viewport */ - myViewFrame->getViewPort()->setPopupServer ( this ); - -} - - -/*! - Destructor -*/ -OCCViewer_Viewer3d::~OCCViewer_Viewer3d() -{ - delete myAISSelector; -} - - -/* trihedron */ -Handle(AIS_Trihedron) OCCViewer_Viewer3d::getTrihedron() const -{ - return myTrihedron; -} - -void OCCViewer_Viewer3d::setTrihedronSize( float size ) -{ - AIS_ListOfInteractive aList; - myAISContext->DisplayedObjects( aList ); - myAISContext->ObjectsInCollector( aList ); - - AIS_ListIteratorOfListOfInteractive anIter( aList ); - for ( ; anIter.More(); anIter.Next() ) - { - Handle(AIS_Trihedron) aTrh = Handle(AIS_Trihedron)::DownCast( anIter.Value() ); - if ( !aTrh.IsNull() ) - aTrh->SetSize( aTrh == myTrihedron ? size : 0.5 *size ); - } - - myAISContext->UpdateCurrentViewer(); -} - -bool OCCViewer_Viewer3d::isTrihedronDisplayed() - -{ - return myAISContext->IsDisplayed(myTrihedron); -} - -void OCCViewer_Viewer3d::rename( const Handle(SALOME_InteractiveObject)& IObject, QString newName ) -{ - AIS_ListOfInteractive List; - myAISContext->DisplayedObjects(List); - - AIS_ListIteratorOfListOfInteractive ite(List); - while (ite.More()) - { - if (ite.Value()->IsKind(STANDARD_TYPE(SALOME_AISShape))) - { - Handle(SALOME_AISShape) aSh = Handle(SALOME_AISShape)::DownCast(ite.Value()); - - if ( aSh->hasIO() ) - { - Handle(SALOME_InteractiveObject) IO = aSh->getIO(); - if ( IO->isSame( IObject ) ) - { - char* aCopyName = CORBA::string_dup(newName.latin1()); - aSh->setName( aCopyName ); - delete( aCopyName ); - break; - } - } - } - else if ( ite.Value()->IsKind( STANDARD_TYPE( SALOME_AISObject ) ) ) - { - Handle(SALOME_AISObject) aSh = Handle(SALOME_AISObject)::DownCast( ite.Value() ); - - // Add code here, if someone create a MODULE_AISObject. - } - ite.Next(); - } -} - -void OCCViewer_Viewer3d::SetColor(const Handle(SALOME_InteractiveObject)& IObject, - QColor thecolor) -{ - AIS_ListOfInteractive List; - myAISContext->DisplayedObjects(List); - - AIS_ListIteratorOfListOfInteractive ite(List); - for ( ; ite.More(); ite.Next() ) - { - Handle(SALOME_InteractiveObject) anObj = - Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() ); - - if ( !anObj.IsNull() && anObj->hasEntry() && anObj->isSame( IObject ) ) - { - Quantity_Color CSFColor = Quantity_Color ( thecolor.red() / 255., - thecolor.green() / 255., - thecolor.blue() / 255., - Quantity_TOC_RGB ); - ite.Value()->SetColor( CSFColor ); - break; - } - } - - myV3dViewer->Update(); -} - -void OCCViewer_Viewer3d::SwitchRepresentation( const Handle(SALOME_InteractiveObject)& IObject, - int mode ) -{ - AIS_ListOfInteractive List; - myAISContext->DisplayedObjects(List); - - AIS_ListIteratorOfListOfInteractive ite(List); - for ( ; ite.More(); ite.Next() ) - { - Handle(SALOME_InteractiveObject) anObj = - Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() ); - - if ( !anObj.IsNull() && anObj->hasEntry() && anObj->isSame( IObject ) ) - myAISContext->SetDisplayMode( ite.Value(), (Standard_Integer)mode ,true ); - } - - myV3dViewer->Update(); -} - -void OCCViewer_Viewer3d::SetTransparency( const Handle(SALOME_InteractiveObject)& IObject, - float transp ) -{ - AIS_ListOfInteractive List; - myAISContext->DisplayedObjects( List ); - - AIS_ListIteratorOfListOfInteractive ite( List ); - for ( ; ite.More(); ite.Next() ) - { - Handle(SALOME_InteractiveObject) anObj = - Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() ); - - if ( !anObj.IsNull() && anObj->hasEntry() && anObj->isSame( IObject ) ) - { - myAISContext->SetTransparency( ite.Value(), transp, false ); - myAISContext->Redisplay( ite.Value(), Standard_False, Standard_True ); - } - } - - myV3dViewer->Update(); -} - -/*! - Highlights 'obj' in viewer, returns 'true' when selected successfully -*/ -bool OCCViewer_Viewer3d::highlight( const Handle(SALOME_InteractiveObject)& IObject, bool highlight, bool update ) -{ - bool isInLocal = myAISContext->HasOpenedContext(); - QAD_Study* ActiveStudy = QAD_Application::getDesktop()->getActiveStudy(); - SALOME_Selection* Sel = SALOME_Selection::Selection( ActiveStudy->getSelection() ); - - AIS_ListOfInteractive List; - myAISContext->DisplayedObjects(List); - - AIS_ListIteratorOfListOfInteractive ite(List); - for ( ; ite.More(); ite.Next() ) - { - Handle(SALOME_InteractiveObject) anObj = - Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() ); - - if ( !anObj.IsNull() && anObj->hasEntry() && anObj->isSame( IObject ) ) - { - if ( !isInLocal ) - { - if ( highlight && !myAISContext->IsSelected( ite.Value() ) ) - myAISContext->AddOrRemoveCurrentObject( ite.Value(), false ); - else if ( !highlight && myAISContext->IsSelected( ite.Value() ) ) - myAISContext->AddOrRemoveCurrentObject( ite.Value(), false ); - } - // highlight subshapes only when local selection is active - else - { - if ( ite.Value()->IsKind( STANDARD_TYPE( SALOME_AISShape ) ) ) - { - Handle(SALOME_AISShape) aSh = Handle(SALOME_AISShape)::DownCast( ite.Value() ); - TColStd_IndexedMapOfInteger MapIndex; - Sel->GetIndex( IObject, MapIndex ); - aSh->highlightSubShapes( MapIndex, highlight ); - } - } - break; - } - } - - if ( update ) - myV3dViewer->Redraw(); - - return false; -} - -/*! - Unhighlight all selected objects -*/ -bool OCCViewer_Viewer3d::unHighlightAll() -{ - if ( myAISContext->HasOpenedContext() ) - myAISContext->ClearSelected(); - else - myAISContext->ClearCurrents(); - return false; -} - -/*! - Returns true if the IObject has a Graphical Object in this viewer. Returns FALSE otherwise. -*/ -bool OCCViewer_Viewer3d::isInViewer( const Handle(SALOME_InteractiveObject)& IObject, bool onlyInViewer) -{ - AIS_ListOfInteractive List; - myAISContext->DisplayedObjects(List); - - if ( onlyInViewer ) { - AIS_ListOfInteractive List1; - myAISContext->ObjectsInCollector(List1); - List.Append(List1); - } - - AIS_ListIteratorOfListOfInteractive ite(List); - for ( ; ite.More(); ite.Next() ) - { - Handle(SALOME_InteractiveObject) anObj = - Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() ); - - if ( !anObj.IsNull() && anObj->hasEntry() && anObj->isSame( IObject ) ) - return true; - } - return false; -} - -bool OCCViewer_Viewer3d::isVisible( const Handle(SALOME_InteractiveObject)& IObject ) -{ - AIS_ListOfInteractive List; - myAISContext->DisplayedObjects( List ); - - AIS_ListIteratorOfListOfInteractive ite( List ); - for ( ; ite.More(); ite.Next() ) - { - Handle(SALOME_InteractiveObject) anObj = - Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() ); - - if ( !anObj.IsNull() && anObj->hasEntry() && anObj->isSame( IObject ) ) - return myAISContext->IsDisplayed( ite.Value() ); - } - - return false; -} - -/*! - Returns the interactive context -*/ -Handle (AIS_InteractiveContext) OCCViewer_Viewer3d::getAISContext() const -{ - return myAISContext; -} - -OCCViewer_AISSelector* OCCViewer_Viewer3d::getAISSelector() const -{ - return myAISSelector; -} - -/*! - Returns 'true' if selection is enabled in this viewer, - 'false' otherwise. -*/ -bool OCCViewer_Viewer3d::enabledSelection() const -{ - return myEnableSelection; -} - -/*! - Enables/disables selection in the viewer -*/ -void OCCViewer_Viewer3d::enableSelection( bool enable ) -{ - myEnableSelection = enable; - myAISSelector->enableSelection( enable ); - - /* send notification */ - emit vw3dSelectionEnabled( enable ); -} - -/*! - Enables/disables ordinary and multiple selection - ( by 'Shift' key or with a rectangle ) in this viewer. -*/ -void OCCViewer_Viewer3d::enableMultipleSelection( bool enable ) -{ - /* Enable/disable rectangle skectching which - is used for multiple selection */ - myAISSelector->enableMultipleSelection( enable ); - - myViewFrame->getViewPort()->enableDrawMode( enable ); - - /* Enable non-multiple selection as well */ - if ( !myEnableSelection && enable ) - enableSelection( enable ); -} - -/*! - Key handler -*/ -void OCCViewer_Viewer3d::onKeyPress( QKeyEvent* pe ) -{ - if (!QAD_Application::getDesktop()->getActiveComponent().isEmpty()) { - QAD_Application::getDesktop()->onKeyPress( pe ); - } -} - -/*! - Mouse handler -*/ -void OCCViewer_Viewer3d::onMousePress( QMouseEvent* pe ) -{ - if ( pe->button() == Qt::LeftButton ) { - if ( !QAD_Application::getDesktop()->onMousePress( pe ) ) { - - QAD_ASSERT_DEBUG_ONLY ( myAISSelector ); - if ( pe->state() & Qt::ShiftButton ) - myAISSelector->shiftSelect(); /* append selection */ - else - myAISSelector->select(); /* new selection */ - } - } -} - -/*! - Mouse handler -*/ -void OCCViewer_Viewer3d::onMouseMove( QMouseEvent* pe ) -{ - /* activate hilighting only if no MB pressed */ - if ( ! ( pe->state() & ( Qt::LeftButton | Qt::MidButton | Qt::RightButton ) ) ) { - QAD_Application::getDesktop()->onMouseMove( pe ); - OCCViewer_ViewPort* vp = myViewFrame->getViewPort(); - myAISSelector->moveTo ( pe->x(), pe->y(), ((OCCViewer_ViewPort3d*)vp)->getView() ); - } -} - -/*! - Mouse handler -*/ -void OCCViewer_Viewer3d::onMouseRelease( QMouseEvent* pe ) -{ - /* Selection with a rectangle ( multiple ) */ - OCCViewer_ViewPort* vp = myViewFrame->getViewPort(); - QAD_ASSERT_DEBUG_ONLY ( vp ); - QRect selRect = vp->getSelectionRect (); - if ( selRect.isValid() ) { - QAD_ASSERT_DEBUG_ONLY ( myAISSelector ); - QAD_ASSERT_DEBUG_ONLY ( vp->inherits("OCCViewer_ViewPort3d") ); - if ( pe->state() & Qt::ShiftButton ) - myAISSelector->shiftSelect ( selRect.left(), selRect.top(), - selRect.right(), selRect.bottom(), - ((OCCViewer_ViewPort3d*)vp)->getView() ); - else - myAISSelector->select ( selRect.left(), selRect.top(), - selRect.right(), selRect.bottom(), - ((OCCViewer_ViewPort3d*)vp)->getView() ); - } -} - -/*! - Mouse handler -*/ -void OCCViewer_Viewer3d::onMouseDoubleClick( QMouseEvent* pe ) -{ -} - -/*! - Called when a transformation in viewport is started -*/ -void OCCViewer_Viewer3d::onTransformationStarted( OCCViewer_ViewPort::OperationType type ) -{ - QAD_ASSERT_DEBUG_ONLY ( myAISSelector ); - if ( myEnableSelection ) - myAISSelector->enableSelection ( false ); // lock until the end of transform - - if ( type == OCCViewer_ViewPort::PANGLOBAL || - type == OCCViewer_ViewPort::WINDOWFIT ) - { - /* Start watching 'global panning' and 'window fit'. - These operations require additional user's actions - in viewport and we have to reset the operations if - instead of these actions a user does something else. - */ - qApp->installEventFilter( this ); - } -} - -/*! - Called when a transformation in viewport is finished -*/ -void OCCViewer_Viewer3d::onTransformationFinished( OCCViewer_ViewPort::OperationType type ) -{ - QAD_ASSERT_DEBUG_ONLY ( myAISSelector ); - if ( myEnableSelection ) - myAISSelector->enableSelection ( true ); // unlock - - if ( type == OCCViewer_ViewPort::PANGLOBAL || - type == OCCViewer_ViewPort::WINDOWFIT ) - { - /* stop watching 'global panning' and 'window fit'*/ - qApp->removeEventFilter( this ); - } -} - -/*! - Called when an object is selected -*/ -void OCCViewer_Viewer3d::onSelectionDone( bool bAdded ) -{ - emit vw3dSelectionDone( bAdded ); - -// QAD_Study* myActiveStudy = QAD_Application::getDesktop()->getActiveStudy(); -// QAD_StudyFrame* myActiveSFrame = myActiveStudy->getActiveStudyFrame(); - // SALOME_Selection* Sel = SALOME_Selection::Selection( myActiveStudy->getSelection() ); -// MESSAGE ( "OCCViewer_Viewer3d - NB SELECTED INTERACTIVE OBJECT : " << Sel->IObjectCount() ) - - QString ActiveComp = QAD_Application::getDesktop()->getActiveComponent(); - - if ( ActiveComp.isEmpty() ) - { - unHighlightAll(); - return; - } - - if ( myAISContext->IndexOfCurrentLocal() <= 0 ) - globalSelectionDone( bAdded ); - else - localSelectionDone( bAdded ); - - myV3dViewer->Update(); -} - -/*! - Called when an object is selected and there is no opened local context -*/ -void OCCViewer_Viewer3d::globalSelectionDone( const bool bAdded ) -{ - SALOME_Selection* Sel = SALOME_Selection::Selection( - QAD_Application::getDesktop()->getActiveStudy()->getSelection() ); - - MESSAGE ( "OCCViewer_Viewer3d - NB SELECTED INTERACTIVE OBJECT : " << Sel->IObjectCount() ) - - SALOME_ListIO DeltaPos; - DeltaPos.Clear(); - SALOME_ListIO DeltaNeg; - DeltaNeg.Clear(); - - if ( !bAdded ) - { - for ( myAISContext->InitCurrent(); myAISContext->MoreCurrent(); myAISContext->NextCurrent() ) - { - Handle(SALOME_InteractiveObject) anObj = - Handle(SALOME_InteractiveObject)::DownCast( myAISContext->Current()->GetOwner() ); - - if ( !anObj.IsNull() ) - { - bool itemAllreadySelected = false; - int nbSel = Sel->IObjectCount(); - if ( nbSel == 0 ) - DeltaPos.Append( anObj ); - else - { - SALOME_ListIteratorOfListIO It( Sel->StoredIObjects() ); - for( ; It.More(); It.Next() ) - { - Handle( SALOME_InteractiveObject) IO1 = It.Value(); - if ( anObj->isSame( IO1 ) ) - { - itemAllreadySelected = true; - break; - } - } - if ( !itemAllreadySelected ) - DeltaPos.Append( anObj ); - } - } - else if ( myAISContext->Current()->IsKind( STANDARD_TYPE( SALOME_AISObject ) ) ) - { - //Handle(SALOME_AISObject) aSh = - // Handle(SALOME_AISObject)::DownCast( myAISContext->Current() ); - // Add code here, if someone create a MODULE_AISObject. - } - } - - if ( DeltaPos.Extent() > 0 ) - Sel->ClearIObjects(); - - } - else - { /* shift select */ - SALOME_ListIteratorOfListIO It( Sel->StoredIObjects() ); - for ( ;It.More(); It.Next() ) - { - Handle( SALOME_InteractiveObject) IO1 = It.Value(); - - bool itemAllreadySelected = false; - for ( myAISContext->InitCurrent(); myAISContext->MoreCurrent(); myAISContext->NextCurrent() ) - { - Handle(SALOME_InteractiveObject) anObj = - Handle(SALOME_InteractiveObject)::DownCast( myAISContext->Current()->GetOwner() ); - - if ( !anObj.IsNull() && anObj->isSame( IO1 ) ) - { - itemAllreadySelected = true; - break; - } - else if ( myAISContext->Current()->IsKind( STANDARD_TYPE( SALOME_AISObject ) ) ) - { - //Handle(SALOME_AISObject) aSh = - // Handle(SALOME_AISObject)::DownCast(myAISContext->Current()); - // Add code here, if someone create a MODULE_AISObject. - } - } - - if ( !itemAllreadySelected ) - DeltaNeg.Append( IO1 ); - } - - myAISContext->InitCurrent(); - for ( myAISContext->InitCurrent(); myAISContext->MoreCurrent(); myAISContext->NextCurrent() ) - { - Handle(SALOME_InteractiveObject) anObj = - Handle(SALOME_InteractiveObject)::DownCast( myAISContext->Current()->GetOwner() ); - - if ( !anObj.IsNull() ) - { - bool itemAllreadySelected = false; - SALOME_ListIteratorOfListIO It( Sel->StoredIObjects() ); - for ( ;It.More(); It.Next() ) - { - Handle( SALOME_InteractiveObject) IO1 = It.Value(); - - if ( anObj->isSame( IO1 ) ) - { - itemAllreadySelected = true; - break; - } - } - - if ( !itemAllreadySelected ) - DeltaPos.Append( anObj ); - } - else if ( myAISContext->Current()->IsKind(STANDARD_TYPE(SALOME_AISObject))) - { - //Handle(SALOME_AISObject) aSh = - // Handle(SALOME_AISObject)::DownCast(myAISContext->Current()); - // Add code here, if someone create a MODULE_AISObject. - } - } - } - - // MESSAGE ( "VIEWER onSelectionDone DeltaNeg.count() == " << DeltaNeg.count() ) - SALOME_ListIteratorOfListIO ItNeg( DeltaNeg ); - for( ;ItNeg.More();ItNeg.Next() ) - { - Sel->RemoveIObject( ItNeg.Value(), false ); - } - - // MESSAGE ( "VIEWER onSelectionDone DeltaPos.count() == " << DeltaPos.Extent() ) - SALOME_ListIteratorOfListIO ItPos( DeltaPos ); - for ( ;ItPos.More();ItPos.Next() ) - { - Sel->AddIObject( ItPos.Value(), false ); - } -} - -/*! - Called when an object is selected and there is opened local context -*/ -void OCCViewer_Viewer3d::localSelectionDone( const bool /*bAdded*/ ) -{ - SALOME_Selection* aSelection = SALOME_Selection::Selection( - QAD_Application::getDesktop()->getActiveStudy()->getSelection() ); - - aSelection->BlockSignals( true ); - - OCCViewer_MapOfIOIndexedMapOfShape aMapsOfShapes; // SALOME_InteractiveObject <--> TopTools_IndexedMapOfShape - OCCViewer_MapOfIOMapOfInteger aMapsOfIndexes; // SALOME_InteractiveObject <--> TColStd_MapOfInteger - - - // Iterate through selected objects and add them to selection - for( myAISContext->InitSelected(); myAISContext->MoreSelected(); myAISContext->NextSelected() ) - { - // Retrive selected shape and subshape - Handle(SelectMgr_EntityOwner) anOwner = myAISContext->SelectedOwner(); - if ( anOwner.IsNull() ) - continue; - - Handle(AIS_InteractiveObject) anIO = - Handle(AIS_InteractiveObject)::DownCast( myAISContext->SelectedInteractive() ); - if ( anIO.IsNull() ) - continue; - - Handle(SALOME_InteractiveObject) anObj = - Handle(SALOME_InteractiveObject)::DownCast( anIO->GetOwner() ); - if ( anObj.IsNull() ) - continue; - - if ( anIO->IsKind( STANDARD_TYPE( AIS_Shape ) ) ) - { - Handle(AIS_Shape) anAISShape = Handle(AIS_Shape)::DownCast( anIO ); - TopoDS_Shape aShape = anAISShape->Shape(); - TopoDS_Shape aSubShape = anOwner->Shape(); - if ( aShape.IsNull() || aSubShape.IsNull() ) - continue; - - // Get index of selected shape - if ( aMapsOfShapes.IsBound( anObj ) ) - { - const TopTools_IndexedMapOfShape& aShapes = aMapsOfShapes( anObj ); - int anIndex = aShapes.FindIndex( aSubShape ); - - aMapsOfIndexes( anObj ).Add( anIndex ); - } - else - { - TopTools_IndexedMapOfShape aShapes; - TopExp::MapShapes( aShape, aShapes ); - int anIndex = aShapes.FindIndex( aSubShape ); - - TColStd_MapOfInteger anIndexes; - anIndexes.Add( anIndex ); - - aMapsOfShapes.Bind( anObj, aShapes ); - aMapsOfIndexes.Bind( anObj, anIndexes ); - } - } - else - { - aMapsOfShapes.Bind( anObj, TopTools_IndexedMapOfShape() ); - aMapsOfIndexes.Bind( anObj, TColStd_MapOfInteger() ); - } - } - - // Clear selection - aSelection->ClearIObjects(); - - // Add object in selection - OCCViewer_MapOfIOMapOfInteger::Iterator anIter( aMapsOfIndexes ); - for ( ; anIter.More(); anIter.Next() ) - { - if ( anIter.Value().IsEmpty() ) - aSelection->AddIObject( anIter.Key(), false ); - else - { - aSelection->AddIObject( anIter.Key(), false ); - aSelection->AddOrRemoveIndex( anIter.Key(), anIter.Value(), false, false ); - } - } - - aSelection->BlockSignals( false ); - aSelection->SelectionChanged(); -} - -/*! - Called when an object is unselected -*/ -void OCCViewer_Viewer3d::onSelectionCancel( bool bAdded ) -{ - emit vw3dSelectionCancel(); - - QAD_Study* myActiveStudy = QAD_Application::getDesktop()->getActiveStudy(); - SALOME_Selection* Sel = SALOME_Selection::Selection( myActiveStudy->getSelection() ); - - SALOME_ListIO DeltaPos; - DeltaPos.Clear(); - SALOME_ListIO DeltaNeg; - DeltaNeg.Clear(); - - if ( !bAdded ) - { /* select */ - Sel->ClearIObjects(); - } - else - { /* shiftselect */ - SALOME_ListIteratorOfListIO It( Sel->StoredIObjects() ); - for ( ; It.More(); It.Next() ) - { - Handle( SALOME_InteractiveObject) IO1 = It.Value(); - - bool itemAllreadySelected = false; - myAISContext->InitCurrent(); - for ( myAISContext->InitCurrent(); myAISContext->MoreCurrent(); myAISContext->NextCurrent() ) - { - Handle(SALOME_InteractiveObject) anObj = - Handle(SALOME_InteractiveObject)::DownCast( myAISContext->Current()->GetOwner() ); - - if ( !anObj.IsNull() && anObj->isSame( IO1 ) ) - { - itemAllreadySelected = true; - break; - } - else if ( myAISContext->Current()->IsKind( STANDARD_TYPE( SALOME_AISObject ) ) ) - { - Handle(SALOME_AISObject) aSh = - Handle(SALOME_AISObject)::DownCast(myAISContext->Current()); - // Add code here, if someone create a MODULE_AISObject. - } - } - - // only if isknown - if ( !itemAllreadySelected ) - DeltaNeg.Append( IO1 ); - } - } - - // MESSAGE ( "VIEWER onSelectionCancel DeltaNeg.count() == " << DeltaNeg.Extent() ) - SALOME_ListIteratorOfListIO ItNeg( DeltaNeg ); - for ( ; ItNeg.More(); ItNeg.Next() ) - Sel->RemoveIObject( ItNeg.Value(), false); - - myV3dViewer->Update(); -} - -/*! - Installed while 'fit area' and 'global panning' - operations are active -*/ -bool OCCViewer_Viewer3d::eventFilter( QObject * po, QEvent * pe) -{ - if ( ( pe->type() == QEvent::MouseButtonPress && - po != myViewFrame->getViewPort() ) || - pe->type() == QEvent::KeyPress ) { - /* user press any key or a MB outside the viewport */ - myViewFrame->getViewPort()->resetState(); - } - return QObject::eventFilter( po, pe ); -} - -/*! - Creates CasCade viewer 3D -*/ -void OCCViewer_Viewer3d::createViewer3d() -{ - myV3dViewer = OCCViewer_VService::Viewer ( "", (short*) "Viewer3d", "", 1000., - V3d_XposYnegZpos, true, true); - myV3dViewer->Init(); - - myV3dCollector = OCCViewer_VService::Viewer ( "", (short*) "Collector3d", "", 1000., - V3d_XposYnegZpos, true, true); - myV3dCollector->Init(); -} - -/*! - Returns CasCade viewer 3D -*/ -Handle(V3d_Viewer) OCCViewer_Viewer3d::getViewer3d() const -{ - return myV3dViewer; -} - -/*! - Sets a new cursor on all its studyframes -*/ -void OCCViewer_Viewer3d::setCursor( const QCursor& cursor) -{ - myCursor = cursor; -} - -/*! - Returns the current cursor -*/ -inline const QCursor& OCCViewer_Viewer3d::cursor() const -{ - return myCursor; -} - -/*! - Sets default background color on all its studyframes -*/ -void OCCViewer_Viewer3d::setBackgroundColor( const QColor& aColor ) -{ - myBackColor = aColor; -} - -/*! - Returns the current background -*/ -inline const QColor& OCCViewer_Viewer3d::backgroundColor() const -{ - return myBackColor; -} - -/*! - Sets a new icon to all its studyframes -*/ -void OCCViewer_Viewer3d::setIcon( const QPixmap& icon ) -{ - myIcon = icon; -} - -/*! - Returns current icon -*/ -inline const QPixmap& OCCViewer_Viewer3d::icon() const -{ - return myIcon; -} - -/*! - Builds popup menu -*/ -void OCCViewer_Viewer3d::onCreatePopup() -{ -} - diff --git a/src/OCCViewer/OCCViewer_Viewer3d.h b/src/OCCViewer/OCCViewer_Viewer3d.h deleted file mode 100644 index f9433e290..000000000 --- a/src/OCCViewer/OCCViewer_Viewer3d.h +++ /dev/null @@ -1,148 +0,0 @@ -// SALOME OCCViewer : build OCC Viewer into Salome desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : OCCViewer_Viewer3d.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef OCCVIEWER_VIEWER3D_H -#define OCCVIEWER_VIEWER3D_H - -#include "OCCViewer_ViewPort.h" -#include "QAD.h" -#include "QAD_Popup.h" -#include "QAD_ViewFrame.h" -#include "SALOME_InteractiveObject.hxx" - -// Open CASCADE Includes -#include -#include - -class OCCViewer_ViewFrame; -class OCCViewer_AISSelector; - -class QAD_EXPORT OCCViewer_Viewer3d : public QObject, public QAD_PopupClientServer -{ - Q_OBJECT - -public: - OCCViewer_Viewer3d(OCCViewer_ViewFrame* vf); - ~OCCViewer_Viewer3d(); - -signals: - void vwKeyPress( QKeyEvent* ); - void vwKeyRelease( QKeyEvent* ); - void vwDrawExternal( QPainter* ); - -public slots: - void onKeyPress(QKeyEvent*); - - void onMouseMove(QMouseEvent*); - void onMousePress(QMouseEvent*); - void onMouseRelease(QMouseEvent*); - void onMouseDoubleClick(QMouseEvent*); - - void onSelectionDone( bool bAdded ); - void onSelectionCancel( bool bAdded ); - - void onTransformationStarted( OCCViewer_ViewPort::OperationType ); - void onTransformationFinished( OCCViewer_ViewPort::OperationType ); - -signals: - void vw3dSelectionDone (bool added); - void vw3dSelectionCancel(); - void vw3dSelectionEnabled( bool ); - -public: - void createViewer3d(); - Handle(V3d_Viewer) getViewer3d() const; - - void setTrihedronSize(float size); - bool isTrihedronDisplayed(); - - /* popup management */ - void onCreatePopup(); - - void setCursor( const QCursor& cursor); - const QCursor& cursor() const; - void setIcon( const QPixmap& icon); - const QPixmap& icon() const; - void setBackgroundColor( const QColor& aColor); - const QColor& backgroundColor() const; - - /* Selection management */ - bool highlight( const Handle(SALOME_InteractiveObject)& IObject, - bool highlight, bool update=true); - bool unHighlightAll(); - bool isInViewer( const Handle(SALOME_InteractiveObject)& IObject, - bool onlyInViewer = false ); - bool isVisible( const Handle(SALOME_InteractiveObject)& IObject ); - void rename( const Handle(SALOME_InteractiveObject)& IObject, - QString newName ); - - bool enabledSelection() const; - void enableSelection( bool ); - void enableMultipleSelection( bool ); - - void SetColor(const Handle(SALOME_InteractiveObject)& IObject, - QColor thecolor); - void SwitchRepresentation(const Handle(SALOME_InteractiveObject)& IObject, - int mode); - void SetTransparency(const Handle(SALOME_InteractiveObject)& IObject, - float transp); - - /* interactive context */ - Handle (AIS_InteractiveContext) getAISContext() const; - OCCViewer_AISSelector* getAISSelector() const; - - /* trihedron */ - Handle(AIS_Trihedron) getTrihedron() const; - -protected: - bool eventFilter( QObject *, QEvent * ); - -protected: - OCCViewer_ViewFrame* myViewFrame; - -private: - - void globalSelectionDone( const bool ); - void localSelectionDone ( const bool ); - - Handle (AIS_InteractiveContext) myAISContext; - OCCViewer_AISSelector* myAISSelector; - bool myEnableSelection; - Handle(AIS_Trihedron) myTrihedron; - Handle(V3d_Viewer) myV3dViewer; - Handle(V3d_Viewer) myV3dCollector; - - /* attributes for all the views */ - QPixmap myIcon; /* icon */ - QCursor myCursor; /* current cursor */ - QColor myBackColor; /* background */ - -}; - -#endif - diff --git a/src/PatchQt/BUGS_DESCRIPTION b/src/PatchQt/BUGS_DESCRIPTION deleted file mode 100644 index ecd2a82be..000000000 --- a/src/PatchQt/BUGS_DESCRIPTION +++ /dev/null @@ -1,250 +0,0 @@ -********************************************************************* -* File : BUGS_DESCRIPTION -* Project : PAL/SALOME -* Module : PatchQt -* Author : Vadim SANDLER -* Created : 03/11/2004 -********************************************************************* - -This file contains description of bugs found in Qt 3.0.5 classes and patches with bug-fixes and improvements done for Qt classes -in frames of PAL/SALOME project. - -Main principles of the patches creation: -* the original classes are renamed by adding "P" suffix to the class name; -* private Qt classes are copied to patched files in order to avoid compilation/linking problems; -* classes definitions are moved from *.cpp implementation to *.h header in order to avoid additional moc preprocessing for *.cpp files. - -********************************************************************* - -Bug: keyboard accelerators for actions (menu, toolbar, etc) are not disabled when action itself is disabled (grayed). - -Gravity: medium - -Patched file(s): -* qactionP.cxx: -1) void QActionPrivate::update() -- enable/disable key accelerator according to the action state - -********************************************************************* - -Bug: Wrong MDI behaviour -To reproduce in SALOME: -1. Create new study -- Window Study1#1 appears and becomes active -2. Create one more study -- Window Study2#1 appears and becomes active (Study1#1 becames inactive) -3. Minimize Study2#1 window -- Window Study2#1 is minimized, Study1#1 becames active -4. Minimize Study1#1 window -- Window Study1#1 is minimized but stays still active (highlighted title) -5. Menu command "File/Close" -- Study2 document is closed, but should Study1 !!! - -Gravity: high - -Bug: Crash on close study window -To reproduce in SALOME: -1. Launch application. -2. Create new study with any Viewer. -3. Create second new study. -4. Close second study. --> crash - -Gravity: high - -Bug: crash when leaving a study -To reproduce in SALOME: -1. Create new study -2. Load VISU component -3. Menu Window / New Window / Plot2d Viewer -4. Miximize Study 1#2 window (with Plot2d viewer) -5. Menu File / Close -6. Press "Close w/o saving" button in "Close Active Study" dialog box. --> crash - -Gravity: high - -Patched files(s): -* qworkspaceP.h: -- methods -void QWorkspace::activateNextWindow() -void QWorkspace::activatePreviousWindow() -void QWorkspace::activateWindow( QWidget* w, bool change_focus = TRUE ) -are made public - -* qworkspaceP.cxx: -- methods -void QWorkspace::childEvent( QChildEvent * e) -void QWorkspace::activateWindow( QWidget* w, bool change_focus ) -void QWorkspace::minimizeWindow( QWidget* w) -bool QWorkspace::eventFilter( QObject *o, QEvent * e) -void QWorkspace::activatePreviousWindow() -are modified to activate correct child window on maximizing/minimizing/closing etc operations and to avoid crashes. - -********************************************************************* - -Improvement: Add controls to allow collapse/expand parts of view frame. -The patch adds buttons with small arrows for splitter which allow to collapse/restore splitter in both (left/right or top/botton) directions. - -Gravity: medium - -Bug: Splitter is not shown in python console -To reproduce in SALOME: -1. Create new study -2. Open new window (VTK or OCC) -> python console and message console is hidden -3. Restore normal size of low frames (python and message consoles) by clicking corresponding splitter button. --> horizontal scrolbars for this windows are not shown, i.e. python and message frames are clipped. - -Gravity: medium - -Bug: Splitter does not restore its original position after collapsing/expanding operations. -To reproduce try to collapse/expand repeatedly any splitter (e.g. that one between Python and Message consoles). - -Gravity: medium - -Improvement: Implement a functionality (for VISU module) to control the Viewers behavior from python console - concerning QSplitter it means a possibility -to show/hide different parts of view frame (Object Browser, Python Console, 3d/2d viewer, Python console, Message window). - -Gravity: high - -Patched file(s): -* qsplitterP.h -1) to process correctly resizing events: -- methods -QSizePolicy QSplitter::sizePolicy() const -QSizePolicy QSplitterHandle::sizePolicy() const; -are added - -2) to allow collapse/expand functionality: -- methods -bool QSplitter::isCompressEnabled() const; -void QSplitter::setCompressEnabled(bool on); -void QSplitter::compress(QWidget*); -void QSplitter::unCompress(QWidget*); -QSplitterHandle* QSplitter::getHandleAfter(QWidget* w); -QSplitterHandle* QSplitter::getHandleBefore(QWidget* w); -bool QSplitter::isCompressed( const QWidget* ) const; -QWidget* QSplitter::widgetBefore( int id ) const; -QWidget* QSplitter::widgetAfter( int id ) const; -QSize QSplitter::minSize( const QWidget *w ) const; -QSize QSplitter::maxSize( const QWidget *w ) const; -int QSplitter::hit( QPoint p ); -void QSplitter::updateSplitterHandles() const; -and -void QSplitterHandle::updateButtonState(); -void QSplitterHandle::compressAfter(); -void QSplitterHandle::unCompressAfter(); -void QSplitterHandle::compressBefore(); -void QSplitterHandle::unCompressBefore(); -void QSplitterHandle::onBeforeCompress(); -void QSplitterHandle::onAfterCompress(); -void QSplitterHandle::onBeforeUnCompress(); -void QSplitterHandle::onAfterUnCompress(); -are added - -- fields: -QWidgetList QSplitter::compressed_widgets; -bool QSplitter::compress_flag; -and -int QSplitterHandle::oldpos; -QPushButton* QSplitterHandle::left; -QPushButton* QSplitterHandle::right; -QPushButton* QSplitterHandle::unleft; -QPushButton* QSplitterHandle::unright; -are added - -- method -void QSplitter::setG( QWidget *w, int p, int s ); -is modified - -* qsplitterP.cxx: -1) to draw button arrows: -static const char* splitter_left_xpm[]; -static const char* splitter_right_xpm[]; -static const char* splitter_up_xpm[]; -static const char* splitter_down_xpm[]; -are added - -2) to process correctly resizing events: -- methods -QSizePolicy QSplitter::sizePolicy() const -QSizePolicy QSplitterHandle::sizePolicy() const; -are added - -3) to allow collapse/expand functionality: -- methods -bool QSplitter::isCompressEnabled() const; -void QSplitter::setCompressEnabled(bool on); -void QSplitter::compress(QWidget*); -void QSplitter::unCompress(QWidget*); -QSplitterHandle* QSplitter::getHandleAfter(QWidget* w); -QSplitterHandle* QSplitter::getHandleBefore(QWidget* w); -bool QSplitter::isCompressed( const QWidget* ) const; -QWidget* QSplitter::widgetBefore( int id ) const; -QWidget* QSplitter::widgetAfter( int id ) const; -QSize QSplitter::minSize( const QWidget *w ) const; -QSize QSplitter::maxSize( const QWidget *w ) const; -int QSplitter::hit( QPoint p ); -void QSplitter::updateSplitterHandles() const; -and -void QSplitterHandle::updateButtonState(); -void QSplitterHandle::compressAfter(); -void QSplitterHandle::unCompressAfter(); -void QSplitterHandle::compressBefore(); -void QSplitterHandle::unCompressBefore(); -void QSplitterHandle::onBeforeCompress(); -void QSplitterHandle::onAfterCompress(); -void QSplitterHandle::onBeforeUnCompress(); -void QSplitterHandle::onAfterUnCompress(); -are added - -- methods -QSplitterHandle::QSplitterHandle() -void QSplitter::setG( QWidget *w, int p, int s ); -QSize QSplitterHandle::sizeHint() const -void QSplitterHandle::setOrientation( Qt::Orientation o ) -void QSplitterHandle::mouseReleaseEvent( QMouseEvent *e ) -void QSplitterHandle::paintEvent( QPaintEvent * ) -void QSplitter::init() -void QSplitter::setOrientation( Orientation o ) -QSplitterLayoutStruct *QSplitter::addWidget( QWidget *w, bool first ) -void QSplitter::setRubberband( int p ) -void QSplitter::drawSplitter( QPainter *p, QCOORD x, QCOORD y, QCOORD w, QCOORD h ) -void QSplitter::moveSplitter( QCOORD p, int id ) -void QSplitter::moveBefore( int pos, int id, bool upLeft ) -void QSplitter::moveAfter( int pos, int id, bool upLeft ) -void QSplitter::getRange( int id, int *min, int *max ) -void QSplitter::doResize() -void QSplitter::recalc( bool update ) -void QSplitter::styleChange( QStyle& old ) -are modified: - -********************************************************************* - -Bug: File names filter of the "Open" and "Save" dialog boxes is broken -To reproduce in SALOME: -1) start PAL/SALOME -2) open new study with the help of OCC Viewer and load Geometry module -3) Menu File / Import / BRep -4) Browse to any directory may be changed by yourself -5) Press "Create New Folder" button of the "Import" dialog box -6) Browse to created directory "New Folder 1" -7) Press "Create New Folder" button of the "Import" dialog box -8) Browse to created directory "New Folder 1" -9) Delete first created "New Folder 1" directory externally (e.g. from any terminal window) -10) Press "One directory up" button of the "Import" dialog box -11) Error message box appears: "Could not read directory .../New Folder 1/New Folder 1" - press OK button to close message box. --> Result: "BREP Files (*.brep)" filter is set as "File type" in the "Import" dialog box, but non-BREP files are also visible and available for the selection -in the browser window of the "Import" dialog box --> The same situation takes place for the "Export" dialog box. - -Gravity: low - -Patch: -* qfiledialogP.cxx: -1) methods -void QFileDialogP::urlFinished( QNetworkOperation *op ) -is modified to fix bug - -********************************************************************* - diff --git a/src/PatchQt/LICENSE.QPL b/src/PatchQt/LICENSE.QPL deleted file mode 100644 index ecdad6ef5..000000000 --- a/src/PatchQt/LICENSE.QPL +++ /dev/null @@ -1,103 +0,0 @@ - THE Q PUBLIC LICENSE - version 1.0 - - Copyright (C) 1999-2000 Trolltech AS, Norway. - Everyone is permitted to copy and - distribute this license document. - -The intent of this license is to establish freedom to share and change the -software regulated by this license under the open source model. - -This license applies to any software containing a notice placed by the -copyright holder saying that it may be distributed under the terms of -the Q Public License version 1.0. Such software is herein referred to as -the Software. This license covers modification and distribution of the -Software, use of third-party application programs based on the Software, -and development of free software which uses the Software. - - Granted Rights - -1. You are granted the non-exclusive rights set forth in this license - provided you agree to and comply with any and all conditions in this - license. Whole or partial distribution of the Software, or software - items that link with the Software, in any form signifies acceptance of - this license. - -2. You may copy and distribute the Software in unmodified form provided - that the entire package, including - but not restricted to - copyright, - trademark notices and disclaimers, as released by the initial developer - of the Software, is distributed. - -3. You may make modifications to the Software and distribute your - modifications, in a form that is separate from the Software, such as - patches. The following restrictions apply to modifications: - - a. Modifications must not alter or remove any copyright notices in - the Software. - - b. When modifications to the Software are released under this - license, a non-exclusive royalty-free right is granted to the - initial developer of the Software to distribute your modification - in future versions of the Software provided such versions remain - available under these terms in addition to any other license(s) of - the initial developer. - -4. You may distribute machine-executable forms of the Software or - machine-executable forms of modified versions of the Software, provided - that you meet these restrictions: - - a. You must include this license document in the distribution. - - b. You must ensure that all recipients of the machine-executable forms - are also able to receive the complete machine-readable source code - to the distributed Software, including all modifications, without - any charge beyond the costs of data transfer, and place prominent - notices in the distribution explaining this. - - c. You must ensure that all modifications included in the - machine-executable forms are available under the terms of this - license. - -5. You may use the original or modified versions of the Software to - compile, link and run application programs legally developed by you - or by others. - -6. You may develop application programs, reusable components and other - software items that link with the original or modified versions of the - Software. These items, when distributed, are subject to the following - requirements: - - a. You must ensure that all recipients of machine-executable forms of - these items are also able to receive and use the complete - machine-readable source code to the items without any charge - beyond the costs of data transfer. - - b. You must explicitly license all recipients of your items to use - and re-distribute original and modified versions of the items in - both machine-executable and source code forms. The recipients must - be able to do so without any charges whatsoever, and they must be - able to re-distribute to anyone they choose. - - - c. If the items are not available to the general public, and the - initial developer of the Software requests a copy of the items, - then you must supply one. - - Limitations of Liability - -In no event shall the initial developers or copyright holders be liable -for any damages whatsoever, including - but not restricted to - lost -revenue or profits or other direct, indirect, special, incidental or -consequential damages, even if they have been advised of the possibility -of such damages, except to the extent invariable law, if any, provides -otherwise. - - No Warranty - -The Software and this license document are provided AS IS with NO WARRANTY -OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS -FOR A PARTICULAR PURPOSE. - Choice of Law - -This license is governed by the Laws of Norway. Disputes shall be settled -by Oslo City Court. diff --git a/src/PatchQt/Makefile.in b/src/PatchQt/Makefile.in deleted file mode 100644 index d916a9a7a..000000000 --- a/src/PatchQt/Makefile.in +++ /dev/null @@ -1,60 +0,0 @@ -# SALOME PatchQt : patch for Qt -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Module : SALOME - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - -@COMMENCE@ - -EXPORT_HEADERS = \ - qsplitterP.h \ - qworkspaceP.h \ - qactionP.h \ - qfiledialogP.h - -# Libraries targets - -LIB = libqsplitterP.la -LIB_SRC = qsplitterP.cxx qsplitterP_moc.cxx qworkspaceP.cxx qworkspaceP_moc.cxx qactionP.cxx qactionP_moc.cxx qfiledialogP.cxx qfiledialogP_moc.cxx -qsplitterP_moc.cxx: $(inc_builddir)/qsplitterP.h - $(MOC) $(inc_builddir)/qsplitterP.h -o qsplitterP_moc.cxx - -qworkspaceP_moc.cxx: $(inc_builddir)/qworkspaceP.h - $(MOC) $(inc_builddir)/qworkspaceP.h -o qworkspaceP_moc.cxx - -qactionP_moc.cxx: $(inc_builddir)/qactionP.h - $(MOC) $(inc_builddir)/qactionP.h -o qactionP_moc.cxx - -qfiledialogP_moc.cxx: $(inc_builddir)/qfiledialogP.h - $(MOC) $(inc_builddir)/qfiledialogP.h -o qfiledialogP_moc.cxx - -CPPFLAGS+=$(QT_INCLUDES) -I${QTDIR}/src/kernel -I$(QTDIR)/mkspecs/linux-g++ -CXXFLAGS+= -LDFLAGS+=$(QT_MT_LIBS) - -@CONCLUDE@ diff --git a/src/PatchQt/README b/src/PatchQt/README deleted file mode 100644 index 4a1c1a3bd..000000000 --- a/src/PatchQt/README +++ /dev/null @@ -1,2 +0,0 @@ -This package includes the patch for Qt toolkit. -The files in this package are distributed under conditions of the Q Public License. \ No newline at end of file diff --git a/src/PatchQt/qactionP.cxx b/src/PatchQt/qactionP.cxx deleted file mode 100644 index 0d1269dac..000000000 --- a/src/PatchQt/qactionP.cxx +++ /dev/null @@ -1,1780 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Module : PatchQt -// File : qactionP.cxx -// Description : the patch for Qt's QAction class (qaction.cpp) -///////////////////////////////////////////////////////////////////////////// - -/**************************************************************************** -** $Id$ -** -** Implementation of QAction class -** -** Created : 000000 -** -** Copyright (C) 2000 Trolltech AS. All rights reserved. -** -** This file is part of the widgets module of the Qt GUI Toolkit. -** -** This file may be distributed under the terms of the Q Public License -** as defined by Trolltech AS of Norway and appearing in the file -** LICENSE.QPL included in the packaging of this file. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition -** licenses may use this file in accordance with the Qt Commercial License -** Agreement provided with the Software. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for -** information about Qt Commercial License Agreements. -** See http://www.trolltech.com/qpl/ for QPL licensing information. -** See http://www.trolltech.com/gpl/ for GPL licensing information. -** -** Contact info@trolltech.com if any conditions of this licensing are -** not clear to you. -** -**********************************************************************/ - -#include "qactionP.h" - -#ifndef QT_NO_ACTION - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -/*! - \class QActionP qaction.h - \ingroup basic - \ingroup application - \mainclass - \brief The QActionP class provides an abstract user interface - action that can appear both in menus and tool bars. - - In GUI applications many commands can be invoked via a menu option, a - toolbar button and a keyboard accelerator. Since the same action must - be performed regardless of how the action was invoked, and since the - menu and toolbar should be kept in sync, it is useful to represent a - command as an \e action. An action can be added to a menu and a - toolbar and will automatically keep them in sync. For example, if the - user presses a Bold toolbar button the Bold menu item will - automatically be checked. - - A QActionP may contain an icon, a menu text, an accelerator, a status - text, a whats this text and a tool tip. Most of these can be set in - the constructor. They can also be set independently with setIconSet(), - setText(), setMenuText(), setToolTip(), setStatusTip(), setWhatsThis() - and setAccel(), respectively. - - An action may be a toggle action e.g. a Bold toolbar button, or a - command action, e.g. 'Open File' to invoke an open file dialog. - Toggle actions emit the toggled() signal when their state changes. - Both command and toggle actions emit the activated() signal when they - are invoked. Use setToggleAction() to set an action's toggled status. - To see if an action is a toggle action use isToggleAction(). A toggle - action may be "on", isOn() returns TRUE, or "off", isOn() returns - FALSE. - - Actions are added to widgets (menus or toolbars) using addTo(), and - removed using removeFrom(). - - Once a QActionP has been created it should be added to the relevant - menu and toolbar and then connected to the slot which will perform - the action. For example: - - \quotefile action/application.cpp - \skipto Save File - \printuntil connect - - We create a "File Save" action with a menu text of "&Save" and - \e{Ctrl+S} as the keyboard accelerator. We connect the - fileSaveAction's activated() signal to our own save() slot. Note that at - this point there is no menu or toolbar action, we'll add them next: - - \skipto new QToolBar - \printline - \skipto fileSaveAction->addTo - \printline - \skipto new QPopupMenu - \printuntil insertItem - \skipto fileSaveAction->addTo - \printline - - We create a toolbar and add our fileSaveAction to it. Similarly we - create a menu, add a top-level menu item, and add our - fileSaveAction. - - (See the \link simple-application-action.html Simple Application - Walkthrough featuring QActionP \endlink for a detailed example.) - - We recommend that actions are created as children of the window that - they are used in. In most cases actions will be children of the - application's main window. - - To prevent recursion, don't create an action as a child of a widget - that the action is later added to. -*/ - - -class QActionPPrivate -{ -public: - QActionPPrivate(); - ~QActionPPrivate(); - QIconSet *iconset; - QString text; - QString menutext; - QString tooltip; - QString statustip; - QString whatsthis; - QKeySequence key; -#ifndef QT_NO_ACCEL - QAccel* accel; - int accelid; -#endif - uint enabled : 1; - uint toggleaction :1; - uint on : 1; -#ifndef QT_NO_TOOLTIP - QToolTipGroup* tipGroup; -#endif - - struct MenuItem { - MenuItem():popup(0),id(0){} - QPopupMenu* popup; - int id; - }; - // ComboItem is only necessary for actions that are - // in dropdown/exclusive actiongroups. The actiongroup - // will clean this up - struct ComboItem { - ComboItem():combo(0), id(0) {} - QComboBox *combo; - int id; - }; - QPtrList menuitems; - QPtrList toolbuttons; - QPtrList comboitems; - - enum Update { Everything, Icons, State }; // Everything means everything but icons and state - void update( Update upd = Everything ); - - QString menuText() const; - QString toolTip() const; - QString statusTip() const; -}; - -QActionPPrivate::QActionPPrivate() -{ - iconset = 0; -#ifndef QT_NO_ACCEL - accel = 0; - accelid = 0; -#endif - key = 0; - enabled = 1; - toggleaction = 0; - on = 0; - menuitems.setAutoDelete( TRUE ); - comboitems.setAutoDelete( TRUE ); -#ifndef QT_NO_TOOLTIP - tipGroup = new QToolTipGroup( 0 ); -#endif -} - -QActionPPrivate::~QActionPPrivate() -{ - QPtrListIterator ittb( toolbuttons ); - QToolButton *tb; - - while ( ( tb = ittb.current() ) ) { - ++ittb; - delete tb; - } - - QPtrListIterator itmi( menuitems); - QActionPPrivate::MenuItem* mi; - while ( ( mi = itmi.current() ) ) { - ++itmi; - QPopupMenu* menu = mi->popup; - if ( menu->findItem( mi->id ) ) - menu->removeItem( mi->id ); - } - -#ifndef QT_NO_ACCEL - delete accel; -#endif - delete iconset; -#ifndef QT_NO_TOOLTIP - delete tipGroup; -#endif -} - -void QActionPPrivate::update( Update upd ) -{ - for ( QPtrListIterator it( menuitems); it.current(); ++it ) { - MenuItem* mi = it.current(); - QString t = menuText(); -#ifndef QT_NO_ACCEL - if ( key ) - t += '\t' + QAccel::keyToString( key ); -#endif - switch ( upd ) { - case State: - mi->popup->setItemEnabled( mi->id, enabled ); - if ( toggleaction ) - mi->popup->setItemChecked( mi->id, on ); - break; - case Icons: - if ( iconset ) - mi->popup->changeItem( mi->id, *iconset, t ); - break; - default: - mi->popup->changeItem( mi->id, t ); - if ( !whatsthis.isEmpty() ) - mi->popup->setWhatsThis( mi->id, whatsthis ); - if ( toggleaction ) { - mi->popup->setCheckable( TRUE ); - mi->popup->setItemChecked( mi->id, on ); - } - } - } - for ( QPtrListIterator it2( toolbuttons); it2.current(); ++it2 ) { - QToolButton* btn = it2.current(); - switch ( upd ) { - case State: - btn->setEnabled( enabled ); - if ( toggleaction ) - btn->setOn( on ); - break; - case Icons: - if ( iconset ) - btn->setIconSet( *iconset ); - break; - default: - btn->setToggleButton( toggleaction ); - if ( !text.isEmpty() ) - btn->setTextLabel( text, FALSE ); -#ifndef QT_NO_TOOLTIP - QToolTip::remove( btn ); - QToolTip::add( btn, toolTip(), tipGroup, statusTip() ); -#endif -#ifndef QT_NO_WHATSTHIS - QWhatsThis::remove( btn ); - if ( !whatsthis.isEmpty() ) - QWhatsThis::add( btn, whatsthis ); -#endif - } - } - // Only used by actiongroup - for ( QPtrListIterator it3( comboitems ); it3.current(); ++it3 ) { - ComboItem *ci = it3.current(); - if ( !ci->combo ) - return; - if ( iconset ) - ci->combo->changeItem( iconset->pixmap(), text, ci->id ); - else - ci->combo->changeItem( text, ci->id ); - } - // VSR : enable/disable accel according to action state -#ifndef QT_NO_ACCEL - if ( upd == State && accel ) - accel->setItemEnabled( key, enabled ); -#endif -} - -QString QActionPPrivate::menuText() const -{ - if ( menutext.isNull() ) - return text; - return menutext; -} - -QString QActionPPrivate::toolTip() const -{ - if ( tooltip.isNull() ) { -#ifndef QT_NO_ACCEL - if ( accel ) - return text + " (" + QAccel::keyToString( accel->key( accelid )) + ")"; -#endif - return text; - } - return tooltip; -} - -QString QActionPPrivate::statusTip() const -{ - if ( statustip.isNull() ) - return toolTip(); - return statustip; -} - - - -/*! - Constructs an action with parent \a parent and name \a name. - - If \a toggle is TRUE the action will be a toggle action, otherwise it - will be a command action. - - If \a parent is a QActionPGroup, the new action inserts itself into \a parent. - - For accelerators and status tips to work, \a parent must either be a - widget, or an action group whose parent is a widget. -*/ -QActionP::QActionP( QObject* parent, const char* name, bool toggle ) - : QObject( parent, name ) -{ - d = new QActionPPrivate; - d->toggleaction = toggle; - init(); -} - - -/*! - This constructor creates an action with the following properties: - the description \a text, the icon or iconset \a icon, the menu text - \a menuText and keyboard accelerator \a accel. It is a child of \a parent - and named \a name. If \a toggle is TRUE the action will be a toggle - action, otherwise it will be a command action. - - If \a parent is a QActionPGroup, the action automatically becomes a - member of it. - - For accelerators and status tips to work, \a parent must either be a - widget, or an action group whose parent is a widget. - - The \a text and \a accel will be used for tool tips and status tips - unless you provide specific text for these using setToolTip() and - setStatusTip(). -*/ -QActionP::QActionP( const QString& text, const QIconSet& icon, const QString& menuText, QKeySequence accel, QObject* parent, const char* name, bool toggle ) - : QObject( parent, name ) -{ - d = new QActionPPrivate; - d->toggleaction = toggle; - if ( !icon.isNull() ) - setIconSet( icon ); - - d->text = text; - d->menutext = menuText; - setAccel( accel ); - init(); -} - -/*! This constructor results in an iconless action with the description - \a text, the menu text \a menuText and the keyboard accelerator \a accel. - Its parent is \a parent and its name \a - name. If \a toggle is TRUE the action will be a toggle - action, otherwise it will be a command action. - - The action automatically becomes a member of \a parent if \a parent - is a QActionPGroup. - - For accelerators and status tips to work, \a parent must either be a - widget, or an action group whose parent is a widget. - - The \a text and \a accel will be used for tool tips and status tips - unless you provide specific text for these using setToolTip() and - setStatusTip(). -*/ -QActionP::QActionP( const QString& text, const QString& menuText, QKeySequence accel, QObject* parent, const char* name, bool toggle ) - : QObject( parent, name ) -{ - d = new QActionPPrivate; - d->toggleaction = toggle; - d->text = text; - d->menutext = menuText; - setAccel( accel ); - init(); -} - -/*! - \internal -*/ -void QActionP::init() -{ - if ( parent() && parent()->inherits("QActionPGroup") ) { - ((QActionPGroup*) parent())->add( this ); // insert into action group - } -} - -/*! Destroys the object and frees allocated resources. */ - -QActionP::~QActionP() -{ - delete d; -} - -/*! \property QActionP::iconSet - \brief the action's icon - - The icon is used as the tool button icon and in the menu to the left - of the menu text. There is no default icon. - - (See the action/toggleaction/toggleaction.cpp example.) - -*/ -void QActionP::setIconSet( const QIconSet& icon ) -{ - if ( icon.isNull() ) - return; - - register QIconSet *i = d->iconset; - d->iconset = new QIconSet( icon ); - delete i; - d->update( QActionPPrivate::Icons ); -} - -QIconSet QActionP::iconSet() const -{ - if ( d->iconset ) - return *d->iconset; - return QIconSet(); -} - -/*! \property QActionP::text - \brief the action's descriptive text - - If \l QMainWindow::usesTextLabel is TRUE, the text appears as a - label in the relevant tool button. It also serves as the default text - in menus and tool tips if these have not been specifically defined. There - is no default text. - - \sa setMenuText() setToolTip() setStatusTip() -*/ -void QActionP::setText( const QString& text ) -{ - d->text = text; - d->update(); -} - -QString QActionP::text() const -{ - return d->text; -} - - -/*! \property QActionP::menuText - \brief the action's menu text - - If the action is added to a menu the menu option will consist of - the icon (if there is one), the menu text and the accelerator (if - there is one). If the menu text is not explicitly set in the - constructor or by using setMenuText() the action's description - text will be used as the menu text. There is no default menu text. - - \sa text -*/ -void QActionP::setMenuText( const QString& text ) { d->menutext = text; - d->update(); } - -QString QActionP::menuText() const { return d->menuText(); } - -/*! - \property QActionP::toolTip \brief the action's tool tip - - This text is used for the tool tip. If no status tip has been set - the tool tip will be used for the status tip. - - If no tool tip is specified the action's text is used, and if that - hasn't been specified the description text is used as the tool tip - text. - - There is no default tool tip text. - - \sa setStatusTip() setAccel() -*/ -void QActionP::setToolTip( const QString& tip ) -{ - d->tooltip = tip; - d->update(); -} - -QString QActionP::toolTip() const -{ - return d->toolTip(); -} - -/*! \property QActionP::statusTip - \brief the action's status tip - - The statusTip is displayed on all status bars that this action's - toplevel parent widget provides. - - If no status tip is defined, the action uses the tool tip text. - - There is no default tooltip text. - - \sa setStatusTip() setToolTip() -*/ -//#### Please reimp for QActionPGroup! -//#### For consistency reasons even action groups should show -//#### status tips (as they already do with tool tips) -//#### Please change QActionPGroup class doc appropriately after -//#### reimplementation. -void QActionP::setStatusTip( const QString& tip ) -{ - d->statustip = tip; - d->update(); -} - -QString QActionP::statusTip() const -{ - return d->statusTip(); -} - -/*!\property QActionP::whatsThis - \brief the action's "What's This?" help text - - The whats this text is used to provide a brief description of the - action. The text may contain rich text (i.e. HTML tags -- see - QStyleSheet for the list of supported tags). There is no default - "What's This" text. - - \sa QWhatsThis -*/ -void QActionP::setWhatsThis( const QString& whatsThis ) -{ - if ( d->whatsthis == whatsThis ) - return; - d->whatsthis = whatsThis; -#ifndef QT_NO_ACCEL - if ( !d->whatsthis.isEmpty() && d->accel ) - d->accel->setWhatsThis( d->accelid, d->whatsthis ); -#endif - d->update(); -} - -QString QActionP::whatsThis() const -{ - return d->whatsthis; -} - - -/*! \property QActionP::accel - \brief the action's accelerator key - - The keycodes can be found in \l Qt::Key and \l - Qt::Modifier. There is no default accelerator key. - - -*/ -//#### Please reimp for QActionPGroup! -//#### For consistency reasons even QActionPGroups should respond to -//#### their accelerators and e.g. open the relevant submenu. -//#### Please change appropriate QActionPGroup class doc after -//#### reimplementation. -void QActionP::setAccel( const QKeySequence& key ) -{ - d->key = key; -#ifndef QT_NO_ACCEL - delete d->accel; - d->accel = 0; -#endif - - if ( !(int)key ) { - d->update(); - return; - } - -#ifndef QT_NO_ACCEL - QObject* p = parent(); - while ( p && !p->isWidgetType() ) { - p = p->parent(); - } - if ( p ) { - d->accel = new QAccel( (QWidget*)p, this, "qt_action_accel" ); - d->accelid = d->accel->insertItem( d->key ); - d->accel->connectItem( d->accelid, this, SLOT( internalActivation() ) ); - if ( !d->whatsthis.isEmpty() ) - d->accel->setWhatsThis( d->accelid, d->whatsthis ); - } -#if defined(QT_CHECK_STATE) - else - qWarning( "QActionP::setAccel() (%s) requires widget in parent chain.", name( "unnamed" ) ); -#endif -#endif - d->update(); -} - - -QKeySequence QActionP::accel() const -{ - return d->key; -} - - -/*! - \property QActionP::toggleAction - \brief whether the action is a toggle action - - A toggle action is one which has an on/off state. For example a Bold - toolbar button is either on or off. An action which is not a toggle - action is a command action; a command action is simply executed. - This property's default is FALSE. - - In some situations, the state of one toggle action should depend on - the state of others. For example, "Left Align", "Center" and "Right - Align" toggle actions are mutually exclusive. To achieve exclusive - toggling, add the relevant toggle actions to a QActionPGroup with the - \l QActionPGroup::exclusive property set to TRUE. - -*/ -void QActionP::setToggleAction( bool enable ) -{ - if ( enable == (bool)d->toggleaction ) - return; - - if ( !enable ) - d->on = FALSE; - - d->toggleaction = enable; - d->update(); -} - -bool QActionP::isToggleAction() const -{ - return d->toggleaction; -} - -/*! - Toggles the state of a toggle action. - - \sa on, toggled(), isToggleAction() -*/ -void QActionP::toggle() -{ - if ( !isToggleAction() ) { -#if defined(QT_CHECK_STATE) - qWarning( "QActionP::toggle() (%s) Only toggle actions " - "may be switched", name( "unnamed" ) ); -#endif - return; - } - setOn( !isOn() ); -} - -/*! - \property QActionP::on - \brief whether a toggle action is on - - This property is always on (TRUE) for command actions and - \l{QActionPGroup}s; setOn() has no effect on them. For action's where - isToggleAction() is TRUE, this property's default value is off - (FALSE). - - \sa toggleAction -*/ -void QActionP::setOn( bool enable ) -{ - if ( !isToggleAction() ) { -#if defined(QT_CHECK_STATE) - qWarning( "QActionP::setOn() (%s) Only toggle actions " - "may be switched", name( "unnamed" ) ); -#endif - return; - } - if ( enable == (bool)d->on ) - return; - d->on = enable; - d->update( QActionPPrivate::State ); - emit toggled( enable ); -} - -bool QActionP::isOn() const -{ - return d->on; -} - -/*! \property QActionP::enabled - \brief whether the action is enabled - - Disabled actions can't be chosen by the user. They don't - disappear from the menu/tool bar but are displayed in a way which - indicates that they are unavailable, e.g. they might be displayed - greyed out. - - What's this? help on disabled actions is still available - provided the \l QActionP::whatsThis property is set. - -*/ -void QActionP::setEnabled( bool enable ) -{ - d->enabled = enable; -#ifndef QT_NO_ACCEL - if ( d->accel ) - d->accel->setEnabled( enable ); -#endif - d->update( QActionPPrivate::State ); -} - -bool QActionP::isEnabled() const -{ - return d->enabled; -} - -/*! \internal -*/ -void QActionP::internalActivation() -{ - if ( isToggleAction() ) - setOn( !isOn() ); - emit activated(); -} - -/*! \internal -*/ -void QActionP::toolButtonToggled( bool on ) -{ - if ( !isToggleAction() ) - return; - setOn( on ); -} - -/*! Adds this action to widget \a w. - - Currently actions may be added to QToolBar and QPopupMenu widgets. - - An action added to a tool bar is automatically displayed - as a tool button; an action added to a pop up menu appears - as a menu option. - - addTo() returns TRUE if the action was added successfully and FALSE - otherwise. (If \a w is not a QToolBar or QPopupMenu the action will - not be added and FALSE will be returned.) - - \sa removeFrom() -*/ -bool QActionP::addTo( QWidget* w ) -{ -#ifndef QT_NO_TOOLBAR - if ( w->inherits( "QToolBar" ) ) { - if ( !qstrcmp( name(), "qt_separator_action" ) ) { - ((QToolBar*)w)->addSeparator(); - } else { - QCString bname = name() + QCString( "_action_button" ); - QToolButton* btn = new QToolButton( (QToolBar*) w, bname ); - addedTo( btn, w ); - btn->setToggleButton( d->toggleaction ); - d->toolbuttons.append( btn ); - if ( d->iconset ) - btn->setIconSet( *d->iconset ); - d->update( QActionPPrivate::State ); - d->update( QActionPPrivate::Everything ); - connect( btn, SIGNAL( clicked() ), this, SIGNAL( activated() ) ); - connect( btn, SIGNAL( toggled(bool) ), this, SLOT( toolButtonToggled(bool) ) ); - connect( btn, SIGNAL( destroyed() ), this, SLOT( objectDestroyed() ) ); -#ifndef QT_NO_TOOLTIP - connect( d->tipGroup, SIGNAL(showTip(const QString&)), this, SLOT(showStatusText(const QString&)) ); - connect( d->tipGroup, SIGNAL(removeTip()), this, SLOT(clearStatusText()) ); -#endif - } - } else -#endif - if ( w->inherits( "QPopupMenu" ) ) { - if ( !qstrcmp( name(), "qt_separator_action" ) ) { - ((QPopupMenu*)w)->insertSeparator(); - } else { - QActionPPrivate::MenuItem* mi = new QActionPPrivate::MenuItem; - mi->popup = (QPopupMenu*) w; - QIconSet* diconset = d->iconset; - if ( diconset ) - mi->id = mi->popup->insertItem( *diconset, QString::fromLatin1("") ); - else - mi->id = mi->popup->insertItem( QString::fromLatin1("") ); - addedTo( mi->popup->indexOf( mi->id ), mi->popup ); - mi->popup->connectItem( mi->id, this, SLOT(internalActivation()) ); - d->menuitems.append( mi ); - d->update( QActionPPrivate::State ); - d->update( QActionPPrivate::Everything ); - w->topLevelWidget()->className(); - connect( mi->popup, SIGNAL(highlighted( int )), this, SLOT(menuStatusText( int )) ); - connect( mi->popup, SIGNAL(aboutToHide()), this, SLOT(clearStatusText()) ); - connect( mi->popup, SIGNAL( destroyed() ), this, SLOT( objectDestroyed() ) ); - } - // Makes only sense when called by QActionPGroup::addTo - } else if ( w->inherits( "QComboBox" ) ) { - if ( qstrcmp( name(), "qt_separator_action" ) ) { - QActionPPrivate::ComboItem *ci = new QActionPPrivate::ComboItem; - ci->combo = (QComboBox*)w; - connect( ci->combo, SIGNAL( destroyed() ), this, SLOT( objectDestroyed() ) ); - ci->id = ci->combo->count(); - if ( d->iconset ) - ci->combo->insertItem( d->iconset->pixmap(), text() ); - else - ci->combo->insertItem( text() ); - d->comboitems.append( ci ); - } - } else { - qWarning( "QActionP::addTo(), unknown object" ); - return FALSE; - } - return TRUE; -} - -/*! This function is called from the addTo() function when it created - a widget (\a actionWidget) for the action in the \a container. -*/ - -void QActionP::addedTo( QWidget *actionWidget, QWidget *container ) -{ - Q_UNUSED( actionWidget ); - Q_UNUSED( container ); -} - -/*! \overload - - This function is called from the addTo() function when it created - a menu item at the index \a index in the popup menu \a menu. -*/ - -void QActionP::addedTo( int index, QPopupMenu *menu ) -{ - Q_UNUSED( index ); - Q_UNUSED( menu ); -} - -/*! Sets the status message to \a text */ -void QActionP::showStatusText( const QString& text ) -{ -#ifndef QT_NO_STATUSBAR - // find out whether we are clearing the status bar by the popup that actually set the text - static QPopupMenu *lastmenu = 0; - QObject *s = (QObject*)sender(); - if ( s ) { - QPopupMenu *menu = (QPopupMenu*)s->qt_cast( "QPopupMenu" ); - if ( menu && !!text ) - lastmenu = menu; - else if ( menu && text.isEmpty() ) { - if ( lastmenu && menu != lastmenu ) - return; - lastmenu = 0; - } - } - - QObject* par = parent(); - QObject* lpar = 0; - QStatusBar *bar = 0; - while ( par && !bar ) { - lpar = par; - bar = (QStatusBar*)par->child( 0, "QStatusBar", FALSE ); - par = par->parent(); - } - if ( !bar && lpar ) { - QObjectList *l = lpar->queryList( "QStatusBar" ); - if ( !l ) - return; - // #### hopefully the last one is the one of the mainwindow... - bar = (QStatusBar*)l->last(); - delete l; - } - if ( bar ) { - if ( text.isEmpty() ) - bar->clear(); - else - bar->message( text ); - } -#endif -} - -/*! Sets the status message to the menu item's status text, or - to the tooltip, if there is no status text. -*/ -void QActionP::menuStatusText( int id ) -{ - QString text; - QPtrListIterator it( d->menuitems); - QActionPPrivate::MenuItem* mi; - while ( ( mi = it.current() ) ) { - ++it; - if ( mi->id == id ) { - text = statusTip(); - break; - } - } - - if ( !text.isEmpty() ) - showStatusText( text ); -} - -/*! Clears the status text. -*/ -void QActionP::clearStatusText() -{ - showStatusText( QString::null ); -} - -/*! - Removes the action from widget \a w. - - Returns TRUE if the action was removed successfully; otherwise - returns FALSE. - - \sa addTo() -*/ -bool QActionP::removeFrom( QWidget* w ) -{ -#ifndef QT_NO_TOOLBAR - if ( w->inherits( "QToolBar" ) ) { - QPtrListIterator it( d->toolbuttons); - QToolButton* btn; - while ( ( btn = it.current() ) ) { - ++it; - if ( btn->parentWidget() == w ) { - d->toolbuttons.removeRef( btn ); - disconnect( btn, SIGNAL( destroyed() ), this, SLOT( objectDestroyed() ) ); - delete btn; - // no need to disconnect from statusbar - } - } - } else -#endif - if ( w->inherits( "QPopupMenu" ) ) { - QPtrListIterator it( d->menuitems); - QActionPPrivate::MenuItem* mi; - while ( ( mi = it.current() ) ) { - ++it; - if ( mi->popup == w ) { - disconnect( mi->popup, SIGNAL(highlighted( int )), this, SLOT(menuStatusText(int)) ); - disconnect( mi->popup, SIGNAL(aboutToHide()), this, SLOT(clearStatusText()) ); - disconnect( mi->popup, SIGNAL( destroyed() ), this, SLOT( objectDestroyed() ) ); - mi->popup->removeItem( mi->id ); - d->menuitems.removeRef( mi ); - } - } - } else if ( w->inherits( "QComboBox" ) ) { - QPtrListIterator it( d->comboitems ); - QActionPPrivate::ComboItem *ci; - while ( ( ci = it.current() ) ) { - ++it; - if ( ci->combo == w ) { - disconnect( ci->combo, SIGNAL(destroyed()), this, SLOT(objectDestroyed()) ); - d->comboitems.removeRef( ci ); - } - } - } else { - qWarning( "QActionP::removeFrom(), unknown object" ); - return FALSE; - } - return TRUE; -} - -/*! - \internal -*/ -void QActionP::objectDestroyed() -{ - const QObject* obj = sender(); - QPtrListIterator it( d->menuitems ); - QActionPPrivate::MenuItem* mi; - while ( ( mi = it.current() ) ) { - ++it; - if ( mi->popup == obj ) - d->menuitems.removeRef( mi ); - } - QActionPPrivate::ComboItem *ci; - QPtrListIterator it2( d->comboitems ); - while ( ( ci = it2.current() ) ) { - ++it2; - if ( ci->combo == obj ) - d->comboitems.removeRef( ci ); - } - d->toolbuttons.removeRef( (QToolButton*) obj ); -} - -/*! \fn void QActionP::activated() - - This signal is emitted when an action is activated by the user, i.e. - when the user clicks a menu option or a toolbar button or presses an - action's accelerator key combination. - - Connect to this signal for command actions. Connect to the toggled() - signal for toggle actions. -*/ - -/*! \fn void QActionP::toggled(bool) - - This signal is emitted when a toggle action changes state; - command actions and QActionPGroups don't emit toggled(). - - The argument denotes the new state; i.e. TRUE - if the toggle action was switched on and FALSE if - it was switched off. - - To trigger a user command depending on whether a toggle action has - been switched on or off connect it to a slot that takes a bool to - indicate the state, e.g. - - \quotefile action/toggleaction/toggleaction.cpp - \skipto QMainWindow * window - \printline QMainWindow * window - \skipto labelonoffaction - \printline labelonoffaction - \skipto connect - \printuntil setUsesTextLabel - - \sa activated() setToggleAction() setOn() -*/ - - - -class QActionPGroupPrivate -{ -public: - uint exclusive: 1; - uint dropdown: 1; - QPtrList actions; - QActionP* selected; - QActionP* separatorAction; - - struct MenuItem { - MenuItem():popup(0),id(0){} - QPopupMenu* popup; - int id; - }; - - QPtrList comboboxes; - QPtrList menubuttons; - QPtrList menuitems; - QPtrList popupmenus; - - void update( const QActionPGroup * ); -}; - -void QActionPGroupPrivate::update( const QActionPGroup* that ) -{ - for ( QPtrListIterator it( actions ); it.current(); ++it ) { - it.current()->setEnabled( that->isEnabled() ); - } - for ( QPtrListIterator cb( comboboxes ); cb.current(); ++cb ) { - cb.current()->setEnabled( that->isEnabled() ); - -#ifndef QT_NO_TOOLTIP - QToolTip::remove( cb.current() ); - if ( !!that->toolTip() ) - QToolTip::add( cb.current(), that->toolTip() ); -#endif -#ifndef QT_NO_WHATSTHIS - QWhatsThis::remove( cb.current() ); - if ( !!that->whatsThis() ) - QWhatsThis::add( cb.current(), that->whatsThis() ); -#endif - } - for ( QPtrListIterator mb( menubuttons ); mb.current(); ++mb ) { - mb.current()->setEnabled( that->isEnabled() ); - - if ( !that->text().isNull() ) - mb.current()->setTextLabel( that->text() ); - if ( !that->iconSet().isNull() ) - mb.current()->setIconSet( that->iconSet() ); - -#ifndef QT_NO_TOOLTIP - QToolTip::remove( mb.current() ); - if ( !!that->toolTip() ) - QToolTip::add( mb.current(), that->toolTip() ); -#endif -#ifndef QT_NO_WHATSTHIS - QWhatsThis::remove( mb.current() ); - if ( !!that->whatsThis() ) - QWhatsThis::add( mb.current(), that->whatsThis() ); -#endif - } - for ( QPtrListIterator pu( menuitems ); pu.current(); ++pu ) { - QWidget* parent = pu.current()->popup->parentWidget(); - if ( parent->inherits( "QPopupMenu" ) ) { - QPopupMenu* ppopup = (QPopupMenu*)parent; - ppopup->setItemEnabled( pu.current()->id, that->isEnabled() ); - } else { - pu.current()->popup->setEnabled( that->isEnabled() ); - } - } - for ( QPtrListIterator pm( popupmenus ); pm.current(); ++pm ) { - QPopupMenu *popup = pm.current(); - QPopupMenu *parent = popup->parentWidget()->inherits( "QPopupMenu" ) ? (QPopupMenu*)popup->parentWidget() : 0; - if ( !parent ) - continue; - - int index; - parent->findPopup( popup, &index ); - int id = parent->idAt( index ); - parent->changeItem( id, that->iconSet(), that->menuText() ); - parent->setItemEnabled( id, that->isEnabled() ); - parent->setAccel( that->accel(), id ); - } -} - -/*! - \class QActionPGroup qaction.h - \ingroup basic - \ingroup application - - \brief The QActionPGroup class groups actions together. - - In some situations it is useful to group actions together. For - example, if you have a left justify action, a right justify action - and a center action, only one of these actions should be active at - any one time, and one simple way of achieving this is to group the - actions together in an action group and call setExclusive(TRUE). - - An action group can also be added to a menu or a toolbar as a single - unit, with all the actions within the action group appearing as - separate menu options and toolbar buttons. - - Here's an example from examples/textedit: - \quotefile textedit/textedit.cpp - \skipto QActionPGroup - \printuntil connect - - We create a new action group and call setExclusive() to ensure that - only one of the actions in the group is ever active at any one time. - We then connect the group's selected() signal to our textAlign() slot. - - \printuntil actionAlignLeft->setToggleAction - - We create a left align action, add it to the toolbar and the menu - and make it a toggle action. We create center and right align - actions in exactly the same way. - - \omit - A QActionPGroup emits an activated() signal when one of its actions - is activated. - \endomit - The actions in an action group emit their activated() - (and for toggle actions, toggled()) signals as usual. - - The setExclusive() function is used to ensure that only one action - is active at any one time: it should be used with actions which have - their \c toggleAction set to TRUE. - - Action group actions appear as individual menu options and toolbar - buttons. For exclusive action groups use setUsesDropDown() to - display the actions in a subwidget of any widget the action group is - added to. For example, the actions would appear in a combobox in a - toolbar or as a submenu in a menu. - - Actions can be added to an action group using add(), but normally - they are added by creating the action with the action group as - parent. Actions can have separators dividing them using - addSeparator(). Action groups are added to widgets with addTo(). - -*/ - -/*! Constructs an action group with parent \a parent and name \a name. - - If \a exclusive is TRUE only one toggle action in the group will - ever be active. - -*/ -QActionPGroup::QActionPGroup( QObject* parent, const char* name, bool exclusive ) - : QActionP( parent, name ) -{ - d = new QActionPGroupPrivate; - d->exclusive = exclusive; - d->dropdown = FALSE; - d->selected = 0; - d->separatorAction = 0; - - connect( this, SIGNAL(selected(QActionP*)), SLOT(internalToggle(QActionP*)) ); -} - -/*! Destroys the object and frees allocated resources. */ - -QActionPGroup::~QActionPGroup() -{ - QPtrListIterator mit( d->menuitems ); - while ( mit.current() ) { - QActionPGroupPrivate::MenuItem *mi = mit.current(); - ++mit; - if ( mi->popup ) - mi->popup->disconnect( SIGNAL(destroyed()), this, SLOT(objectDestroyed()) ); - } - - QPtrListIterator cbit( d->comboboxes ); - while ( cbit.current() ) { - QComboBox *cb = cbit.current(); - ++cbit; - cb->disconnect( SIGNAL(destroyed()), this, SLOT(objectDestroyed()) ); - } - QPtrListIterator mbit( d->menubuttons ); - while ( mbit.current() ) { - QToolButton *mb = mbit.current(); - ++mbit; - mb->disconnect( SIGNAL(destroyed()), this, SLOT(objectDestroyed()) ); - } - QPtrListIterator pmit( d->popupmenus ); - while ( pmit.current() ) { - QPopupMenu *pm = pmit.current(); - ++pmit; - pm->disconnect( SIGNAL(destroyed()), this, SLOT(objectDestroyed()) ); - } - - delete d->separatorAction; - d->menubuttons.setAutoDelete( TRUE ); - d->comboboxes.setAutoDelete( TRUE ); - d->menuitems.setAutoDelete( TRUE ); - d->popupmenus.setAutoDelete( TRUE ); - delete d; -} - -/*! \property QActionPGroup::exclusive - \brief whether the action group does exclusive toggling - - If exclusive is TRUE only one toggle action in the action group can - ever be active at any one time. If the user chooses another toggle - action in the group the one they chose becomes active and the one - that was active becomes inactive. By default this property is FALSE. - - \sa QActionP::toggleAction -*/ -void QActionPGroup::setExclusive( bool enable ) -{ - d->exclusive = enable; -} - -bool QActionPGroup::isExclusive() const -{ - return d->exclusive; -} - -/*! \property QActionPGroup::usesDropDown - \brief whether the group's actions are displayed in a - subwidget of the widgets the action group is added to - - Exclusive action groups added to a toolbar display their actions in - a combobox with the action's \l QActionP::text and \l - QActionP::iconSet properties shown. Non-exclusive groups are - represented by a tool button showing their \l QActionP::iconSet and - -- depending on \l QMainWindow::usesTextLabel() -- text() property. - - In a popup menu the member actions are displayed in a - submenu. - - Changing usesDropDown only effects \e subsequent calls to addTo(). - - This property's default is FALSE. - -*/ -void QActionPGroup::setUsesDropDown( bool enable ) -{ - d->dropdown = enable; -} - -bool QActionPGroup::usesDropDown() const -{ - return d->dropdown; -} - -/*! Adds action \a action to this group. - - Normally an action is added to a group by creating it with the group - as parent, so this function is not usually used. - - \sa addTo() -*/ -void QActionPGroup::add( QActionP* action ) -{ - if ( d->actions.containsRef( action ) ) - return; - - d->actions.append( action ); - - if ( action->whatsThis().isNull() ) - action->setWhatsThis( whatsThis() ); - if ( action->toolTip().isNull() ) - action->setToolTip( toolTip() ); - action->setEnabled( isEnabled() ); - - connect( action, SIGNAL( destroyed() ), this, SLOT( childDestroyed() ) ); - connect( action, SIGNAL( activated() ), this, SIGNAL( activated() ) ); - connect( action, SIGNAL( toggled( bool ) ), this, SLOT( childToggled( bool ) ) ); - - for ( QPtrListIterator cb( d->comboboxes ); cb.current(); ++cb ) { - cb.current()->insertItem( action->iconSet().pixmap(), action->text() ); - } - for ( QPtrListIterator mb( d->menubuttons ); mb.current(); ++mb ) { - QPopupMenu* popup = mb.current()->popup(); - if ( !popup ) - continue; - action->addTo( popup ); - } - for ( QPtrListIterator mi( d->menuitems ); mi.current(); ++mi ) { - QPopupMenu* popup = mi.current()->popup; - if ( !popup ) - continue; - action->addTo( popup ); - } -} - -/*! Adds a separator to the group. */ -void QActionPGroup::addSeparator() -{ - if ( !d->separatorAction ) - d->separatorAction = new QActionP( 0, "qt_separator_action" ); - d->actions.append( d->separatorAction ); -} - - -/*! \fn void QActionPGroup::insert( QActionP* a ) - - \obsolete - - Use add() instead, or better still create the action with the action - group as its parent. - */ - -/*! - Adds this action group to the widget \a w. - - If usesDropDown() is TRUE and exclusive is TRUE (see setExclusive()) - the actions are presented in a combobox if \a w is a toolbar and as - a submenu if \a w is a menu. Otherwise (the default) the actions - within the group are added to the widget individually. For example - if the widget is a menu, the actions will appear as individual menu - options, and if the widget is a toolbar, the actions will appear as - toolbar buttons. - - It is recommended that actions in action groups, especially where - usesDropDown() is TRUE, have their menuText() or text() property set. - - All actions should be added to the action group \e before the action - group is added to the widget. If actions are added to the action - group \e after the action group has been added to the widget these - later actions will \e not appear. - - \sa setExclusive() setUsesDropDown() removeFrom() -*/ -bool QActionPGroup::addTo( QWidget* w ) -{ -#ifndef QT_NO_TOOLBAR - if ( w->inherits( "QToolBar" ) ) { - if ( d->dropdown ) { - if ( !d->exclusive ) { - QPtrListIterator it( d->actions); - if ( !it.current() ) - return TRUE; - - QActionP *defAction = it.current(); - - QToolButton* btn = new QToolButton( (QToolBar*) w, "qt_actiongroup_btn" ); - addedTo( btn, w ); - connect( btn, SIGNAL(destroyed()), SLOT(objectDestroyed()) ); - d->menubuttons.append( btn ); - - if ( !iconSet().isNull() ) - btn->setIconSet( iconSet() ); - else if ( !defAction->iconSet().isNull() ) - btn->setIconSet( defAction->iconSet() ); - if ( !!text() ) - btn->setTextLabel( text() ); - else if ( !!defAction->text() ) - btn->setTextLabel( defAction->text() ); -#ifndef QT_NO_TOOLTIP - if ( !!toolTip() ) - QToolTip::add( btn, toolTip() ); - else if ( !!defAction->toolTip() ) - QToolTip::add( btn, defAction->toolTip() ); -#endif -#ifndef QT_NO_WHATSTHIS - if ( !!whatsThis() ) - QWhatsThis::add( btn, whatsThis() ); - else if ( !!defAction->whatsThis() ) - QWhatsThis::add( btn, defAction->whatsThis() ); -#endif - - connect( btn, SIGNAL( clicked() ), defAction, SIGNAL( activated() ) ); - connect( btn, SIGNAL( toggled(bool) ), defAction, SLOT( toolButtonToggled(bool) ) ); - connect( btn, SIGNAL( destroyed() ), defAction, SLOT( objectDestroyed() ) ); - - QPopupMenu *menu = new QPopupMenu( btn, "qt_actiongroup_menu" ); - btn->setPopupDelay( 0 ); - btn->setPopup( menu ); - - while( it.current() ) { - it.current()->addTo( menu ); - ++it; - } - return TRUE; - } else { - QComboBox *box = new QComboBox( FALSE, w, "qt_actiongroup_combo" ); - addedTo( box, w ); - connect( box, SIGNAL(destroyed()), SLOT(objectDestroyed()) ); - d->comboboxes.append( box ); -#ifndef QT_NO_TOOLTIP - if ( !!toolTip() ) - QToolTip::add( box, toolTip() ); -#endif -#ifndef QT_NO_WHATSTHIS - if ( !!whatsThis() ) - QWhatsThis::add( box, whatsThis() ); -#endif - - for ( QPtrListIterator it( d->actions); it.current(); ++it ) { - it.current()->addTo( box ); - } - connect( box, SIGNAL(activated(int)), this, SLOT( internalComboBoxActivated(int)) ); - return TRUE; - } - } - } else -#endif - if ( w->inherits( "QPopupMenu" ) ) { - QPopupMenu *popup; - if ( d->dropdown ) { - QPopupMenu *menu = (QPopupMenu*)w; - popup = new QPopupMenu( w, "qt_actiongroup_menu" ); - d->popupmenus.append( popup ); - connect( popup, SIGNAL(destroyed()), SLOT(objectDestroyed()) ); - - int id; - if ( !iconSet().isNull() ) { - if ( menuText().isEmpty() ) - id = menu->insertItem( iconSet(), text(), popup ); - else - id = menu->insertItem( iconSet(), menuText(), popup ); - } else { - if ( menuText().isEmpty() ) - id = menu->insertItem( text(), popup ); - else - id = menu->insertItem( menuText(), popup ); - } - - addedTo( menu->indexOf( id ), menu ); - - QActionPGroupPrivate::MenuItem *item = new QActionPGroupPrivate::MenuItem; - item->id = id; - item->popup = popup; - d->menuitems.append( item ); - } else { - popup = (QPopupMenu*)w; - } - for ( QPtrListIterator it( d->actions); it.current(); ++it ) { - // #### do an addedTo( index, popup, action), need to find out index - it.current()->addTo( popup ); - } - return TRUE; - } - - for ( QPtrListIterator it( d->actions); it.current(); ++it ) { - // #### do an addedTo( index, popup, action), need to find out index - it.current()->addTo( w ); - } - - return TRUE; -} - -/*! \reimp -*/ -bool QActionPGroup::removeFrom( QWidget* w ) -{ - for ( QPtrListIterator it( d->actions); it.current(); ++it ) { - it.current()->removeFrom( w ); - } - -#ifndef QT_NO_TOOLBAR - if ( w->inherits( "QToolBar" ) ) { - QPtrListIterator cb( d->comboboxes ); - while( cb.current() ) { - QComboBox *box = cb.current(); - ++cb; - if ( box->parentWidget() == w ) - delete box; - } - QPtrListIterator mb( d->menubuttons ); - while( mb.current() ) { - QToolButton *btn = mb.current(); - ++mb; - if ( btn->parentWidget() == w ) - delete btn; - } - } else -#endif - if ( w->inherits( "QPopupMenu" ) ) { - QPtrListIterator pu( d->menuitems ); - while ( pu.current() ) { - QActionPGroupPrivate::MenuItem *mi = pu.current(); - ++pu; - if ( d->dropdown && mi->popup ) - ( (QPopupMenu*)w )->removeItem( mi->id ); - delete mi->popup; - } - } - - return TRUE; -} - -/*! \internal -*/ -void QActionPGroup::childToggled( bool b ) -{ - if ( !isExclusive() ) - return; - QActionP* s = (QActionP*) sender(); - if ( b ) { - if ( s != d->selected ) { - d->selected = s; - for ( QPtrListIterator it( d->actions); it.current(); ++it ) { - if ( it.current()->isToggleAction() && it.current() != s ) - it.current()->setOn( FALSE ); - } - emit activated(); - emit selected( s ); - } - } else { - if ( s == d->selected ) { - // at least one has to be selected - s->setOn( TRUE ); - } - } -} - -/*! \internal -*/ -void QActionPGroup::childDestroyed() -{ - d->actions.removeRef( (QActionP*) sender() ); - if ( d->selected == sender() ) - d->selected = 0; -} - -/*! \reimp -*/ -void QActionPGroup::setEnabled( bool enable ) -{ - if ( enable == isEnabled() ) - return; - - QActionP::setEnabled( enable ); - d->update( this ); -} - -/*! \reimp -*/ -void QActionPGroup::setIconSet( const QIconSet& icon ) -{ - QActionP::setIconSet( icon ); - d->update( this ); -} - -/*! \reimp -*/ -void QActionPGroup::setText( const QString& txt ) -{ - if ( txt == text() ) - return; - - QActionP::setText( txt ); - d->update( this ); -} - -/*! \reimp -*/ -void QActionPGroup::setMenuText( const QString& text ) -{ - if ( text == menuText() ) - return; - - QActionP::setMenuText( text ); - d->update( this ); -} - -/*! \reimp -*/ -void QActionPGroup::setToolTip( const QString& text ) -{ - if ( text == toolTip() ) - return; - for ( QPtrListIterator it( d->actions); it.current(); ++it ) { - if ( it.current()->toolTip().isNull() ) - it.current()->setToolTip( text ); - } - QActionP::setToolTip( text ); - d->update( this ); -} - -/*! \reimp -*/ -void QActionPGroup::setWhatsThis( const QString& text ) -{ - if ( text == whatsThis() ) - return; - for ( QPtrListIterator it( d->actions); it.current(); ++it ) { - if ( it.current()->whatsThis().isNull() ) - it.current()->setWhatsThis( text ); - } - QActionP::setWhatsThis( text ); - d->update( this ); -} - -/*! \reimp -*/ -void QActionPGroup::childEvent( QChildEvent *e ) -{ - if ( !e->child()->inherits( "QActionP" ) ) - return; - - QActionP *action = (QActionP*)e->child(); - - if ( !e->removed() ) - return; - - for ( QPtrListIterator cb( d->comboboxes ); cb.current(); ++cb ) { - for ( int i = 0; i < cb.current()->count(); i++ ) { - if ( cb.current()->text( i ) == action->text() ) { - cb.current()->removeItem( i ); - break; - } - } - } - for ( QPtrListIterator mb( d->menubuttons ); mb.current(); ++mb ) { - QPopupMenu* popup = mb.current()->popup(); - if ( !popup ) - continue; - action->removeFrom( popup ); - } - for ( QPtrListIterator mi( d->menuitems ); mi.current(); ++mi ) { - QPopupMenu* popup = mi.current()->popup; - if ( !popup ) - continue; - action->removeFrom( popup ); - } -} - -/*! - \fn void QActionPGroup::selected( QActionP* ) - - This signal is emitted from exclusive groups when toggle actions - change state. - - The argument is the action whose state changed to "on". - - \quotefile action/actiongroup/editor.cpp - \skipto QActionPGroup - \printline QActionPGroup - \skipto QObject::connect - \printuntil SLOT - - In this example we connect the selected() signal to our own - setFontColor() slot, passing the QActionP so that we know which - action was chosen by the user. - - (See the \link actiongroup.html QActionPGroup Walkthrough. \endlink) - - \sa setExclusive(), isOn() -*/ - -/*! \internal -*/ -void QActionPGroup::internalComboBoxActivated( int index ) -{ - QActionP *a = d->actions.at( index ); - if ( a ) { - if ( a != d->selected ) { - d->selected = a; - for ( QPtrListIterator it( d->actions); it.current(); ++it ) { - if ( it.current()->isToggleAction() && it.current() != a ) - it.current()->setOn( FALSE ); - } - if ( a->isToggleAction() ) - a->setOn( TRUE ); - - emit activated(); - emit selected( d->selected ); - emit ((QActionPGroup*)a)->activated(); - } - } -} - -/*! \internal -*/ -void QActionPGroup::internalToggle( QActionP *a ) -{ - for ( QPtrListIterator it( d->comboboxes); it.current(); ++it ) { - int index = d->actions.find( a ); - if ( index != -1 ) - it.current()->setCurrentItem( index ); - } -} - -/*! \internal -*/ -void QActionPGroup::objectDestroyed() -{ - const QObject* obj = sender(); - d->menubuttons.removeRef( (QToolButton*)obj ); - for ( QPtrListIterator mi( d->menuitems ); mi.current(); ++mi ) { - if ( mi.current()->popup == obj ) { - d->menuitems.removeRef( mi.current() ); - break; - } - } - d->popupmenus.removeRef( (QPopupMenu*)obj ); - d->comboboxes.removeRef( (QComboBox*)obj ); -} - -/*! This function is called from the addTo() function when it created - a widget (\a actionWidget) for the child action \a a in the \a - container. -*/ - -void QActionPGroup::addedTo( QWidget *actionWidget, QWidget *container, QActionP *a ) -{ - Q_UNUSED( actionWidget ); - Q_UNUSED( container ); - Q_UNUSED( a ); -} - -/*! \overload - - This function is called from the addTo() function when it created a - menu item for the child action at the index \a index in the popup - menu \a menu. -*/ - -void QActionPGroup::addedTo( int index, QPopupMenu *menu, QActionP *a ) -{ - Q_UNUSED( index ); - Q_UNUSED( menu ); - Q_UNUSED( a ); -} - -/*! \reimp - \overload - This function is called from the addTo() function when it created - a widget (\a actionWidget) in the \a container. -*/ - -void QActionPGroup::addedTo( QWidget *actionWidget, QWidget *container ) -{ - Q_UNUSED( actionWidget ); - Q_UNUSED( container ); -} - -/*! \reimp - \overload - This function is called from the addTo() function when it created a - menu item at the index \a index in the popup menu \a menu. - -*/ - -void QActionPGroup::addedTo( int index, QPopupMenu *menu ) -{ - Q_UNUSED( index ); - Q_UNUSED( menu ); -} - -#endif diff --git a/src/PatchQt/qactionP.h b/src/PatchQt/qactionP.h deleted file mode 100644 index 1fcf05053..000000000 --- a/src/PatchQt/qactionP.h +++ /dev/null @@ -1,187 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Module : PatchQt -// File : qactionP.h -// Description : the patch for Qt's QAction class (qaction.h) -///////////////////////////////////////////////////////////////////////////// - -/**************************************************************************** -** $Id$ -** -** Definition of QAction class -** -** Created : 000000 -** -** Copyright (C) 2000 Trolltech AS. All rights reserved. -** -** This file is part of the widgets module of the Qt GUI Toolkit. -** -** This file may be distributed under the terms of the Q Public License -** as defined by Trolltech AS of Norway and appearing in the file -** LICENSE.QPL included in the packaging of this file. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition -** licenses may use this file in accordance with the Qt Commercial License -** Agreement provided with the Software. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for -** information about Qt Commercial License Agreements. -** See http://www.trolltech.com/qpl/ for QPL licensing information. -** See http://www.trolltech.com/gpl/ for GPL licensing information. -** -** Contact info@trolltech.com if any conditions of this licensing are -** not clear to you. -** -**********************************************************************/ - -#ifndef QACTIONP_H -#define QACTIONP_H - -#ifndef QT_H -#include -#include -#include -#include -#endif // QT_H - -#ifndef QT_NO_ACTION - -class QActionPPrivate; -class QActionPGroupPrivate; -class QStatusBar; -class QPopupMenu; - -class Q_EXPORT QActionP : public QObject -{ - Q_OBJECT - Q_PROPERTY( bool toggleAction READ isToggleAction WRITE setToggleAction) - Q_PROPERTY( bool on READ isOn WRITE setOn ) - Q_PROPERTY( bool enabled READ isEnabled WRITE setEnabled ) - Q_PROPERTY( QIconSet iconSet READ iconSet WRITE setIconSet ) - Q_PROPERTY( QString text READ text WRITE setText ) - Q_PROPERTY( QString menuText READ menuText WRITE setMenuText ) - Q_PROPERTY( QString toolTip READ toolTip WRITE setToolTip ) - Q_PROPERTY( QString statusTip READ statusTip WRITE setStatusTip ) - Q_PROPERTY( QString whatsThis READ whatsThis WRITE setWhatsThis ) - Q_PROPERTY( QKeySequence accel READ accel WRITE setAccel ) - -public: - QActionP( QObject* parent, const char* name = 0, bool toggle = FALSE ); - QActionP( const QString& text, const QIconSet& icon, const QString& menuText, QKeySequence accel, - QObject* parent, const char* name = 0, bool toggle = FALSE ); - QActionP( const QString& text, const QString& menuText, QKeySequence accel, QObject* parent, - const char* name = 0, bool toggle = FALSE ); - ~QActionP(); - - virtual void setIconSet( const QIconSet& ); - QIconSet iconSet() const; - virtual void setText( const QString& ); - QString text() const; - virtual void setMenuText( const QString& ); - QString menuText() const; - virtual void setToolTip( const QString& ); - QString toolTip() const; - virtual void setStatusTip( const QString& ); - QString statusTip() const; - virtual void setWhatsThis( const QString& ); - QString whatsThis() const; - virtual void setAccel( const QKeySequence& key ); - QKeySequence accel() const; - virtual void setToggleAction( bool ); - bool isToggleAction() const; - bool isOn() const; - bool isEnabled() const; - virtual bool addTo( QWidget* ); - virtual bool removeFrom( QWidget* ); - -protected: - virtual void addedTo( QWidget *actionWidget, QWidget *container ); - virtual void addedTo( int index, QPopupMenu *menu ); - -public slots: - void toggle(); - virtual void setOn( bool ); - virtual void setEnabled( bool ); - -signals: - void activated(); - void toggled( bool ); - -private slots: - void internalActivation(); - void toolButtonToggled( bool ); - void objectDestroyed(); - void menuStatusText( int id ); - void showStatusText( const QString& ); - void clearStatusText(); - -private: - void init(); - - QActionPPrivate* d; - -}; - -class Q_EXPORT QActionPGroup : public QActionP -{ - Q_OBJECT - Q_PROPERTY( bool exclusive READ isExclusive WRITE setExclusive ) - Q_PROPERTY( bool usesDropDown READ usesDropDown WRITE setUsesDropDown ) - -public: - QActionPGroup( QObject* parent, const char* name = 0, bool exclusive = TRUE ); - ~QActionPGroup(); - void setExclusive( bool ); - bool isExclusive() const; - void add( QActionP* a); - void addSeparator(); - bool addTo( QWidget* ); - bool removeFrom( QWidget* ); - void setEnabled( bool ); - - void setUsesDropDown( bool enable ); - bool usesDropDown() const; - - void setIconSet( const QIconSet& ); - void setText( const QString& ); - void setMenuText( const QString& ); - void setToolTip( const QString& ); - void setWhatsThis( const QString& ); - -protected: - void childEvent( QChildEvent* ); - virtual void addedTo( QWidget *actionWidget, QWidget *container, QActionP *a ); - virtual void addedTo( int index, QPopupMenu *menu, QActionP *a ); - virtual void addedTo( QWidget *actionWidget, QWidget *container ); - virtual void addedTo( int index, QPopupMenu *menu ); - -signals: - void selected( QActionP* ); - -private slots: - void childToggled( bool ); - void childDestroyed(); - void internalComboBoxActivated( int ); - void internalToggle( QActionP* ); - void objectDestroyed(); - -private: - QActionPGroupPrivate* d; - -#ifndef QT_NO_COMPAT -public: - void insert( QActionP* a ) { add( a ); } -#endif - -}; - -#endif - -#endif diff --git a/src/PatchQt/qfiledialogP.cxx b/src/PatchQt/qfiledialogP.cxx deleted file mode 100644 index 0b3ca637b..000000000 --- a/src/PatchQt/qfiledialogP.cxx +++ /dev/null @@ -1,5978 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Module : PatchQt -// File : qfiledialogP.cxx -// Description : the patch for Qt's QFileDialog class (qfiledialog.cpp) -///////////////////////////////////////////////////////////////////////////// - -/**************************************************************************** -** $Id$ -** -** Implementation of QFileDialog class -** -** Created : 950429 -** -** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. -** -** This file is part of the dialogs module of the Qt GUI Toolkit. -** -** This file may be distributed under the terms of the Q Public License -** as defined by Trolltech AS of Norway and appearing in the file -** LICENSE.QPL included in the packaging of this file. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition -** licenses may use this file in accordance with the Qt Commercial License -** Agreement provided with the Software. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for -** information about Qt Commercial License Agreements. -** See http://www.trolltech.com/qpl/ for QPL licensing information. -** See http://www.trolltech.com/gpl/ for GPL licensing information. -** -** Contact info@trolltech.com if any conditions of this licensing are -** not clear to you. -** -**********************************************************************/ - -#include "qplatformdefs.h" - -// Solaris redefines connect -> __xnet_connect with _XOPEN_SOURCE_EXTENDED. -#if defined(connect) -#undef connect -#endif - -#include "qfiledialogP.h" - -#ifndef QT_NO_FILEDIALOG - -#include "qlineedit.h" -#include "qcombobox.h" -#include "qlistview.h" -#include "qlistbox.h" -#include "qlabel.h" -#include "qpushbutton.h" -#include "qtoolbutton.h" -#include "qmessagebox.h" -#include "qapplication.h" -#include "private/qapplication_p.h" -#include "qlayout.h" -#include "qbitmap.h" -#include "qpopupmenu.h" -#include "qwidgetstack.h" -#include "qbuttongroup.h" -#include "qptrvector.h" -#include "qregexp.h" -#include "qstrlist.h" -#include "qtimer.h" -#include "qvbox.h" -#include "qhbox.h" -#include "qtooltip.h" -#include "qheader.h" -#include "qdragobject.h" -#include "qmime.h" -#include "qprogressbar.h" -#include "qfile.h" -#include "qcstring.h" -#include "qobjectlist.h" -#include "qcheckbox.h" -#include "qsplitter.h" -#include "qmap.h" -#include "qnetworkprotocol.h" -#include "qsemimodal.h" -#include "qpainter.h" -#include "qcleanuphandler.h" -#include "qstyle.h" -#include "qcursor.h" - -#ifndef Q_OS_TEMP -#include -#endif -#include -#include - -#ifdef Q_WS_MAC -#include "qt_mac.h" -#undef check -#endif - -#ifdef Q_WS_WIN -#include "qt_windows.h" -#endif - -/* XPM */ -static const char * const start_xpm[]={ - "16 15 8 1", - "a c #cec6bd", - "# c #000000", - "e c #ffff00", - "b c #999999", - "f c #cccccc", - "d c #dcdcdc", - "c c #ffffff", - ". c None", - ".....######aaaaa", - "...bb#cccc##aaaa", - "..bcc#cccc#d#aaa", - ".bcef#cccc#dd#aa", - ".bcfe#cccc#####a", - ".bcef#ccccccccc#", - "bbbbbbbbbbbbccc#", - "bccccccccccbbcc#", - "bcefefefefee#bc#", - ".bcefefefefef#c#", - ".bcfefefefefe#c#", - "..bcfefefefeeb##", - "..bbbbbbbbbbbbb#", - "...#############", - "................"}; - -/* XPM */ -static const char * const end_xpm[]={ - "16 15 9 1", - "d c #a0a0a0", - "c c #c3c3c3", - "# c #cec6bd", - ". c #000000", - "f c #ffff00", - "e c #999999", - "g c #cccccc", - "b c #ffffff", - "a c None", - "......####aaaaaa", - ".bbbb..###aaaaaa", - ".bbbb.c.##aaaaaa", - ".bbbb....ddeeeea", - ".bbbbbbb.bbbbbe.", - ".bbbbbbb.bcfgfe.", - "eeeeeeeeeeeeefe.", - "ebbbbbbbbbbeege.", - "ebfgfgfgfgff.ee.", - "aebfgfgfgfgfg.e.", - "aebgfgfgfgfgf.e.", - "aaebgfgfgfgffe..", - "aaeeeeeeeeeeeee.", - "aaa.............", - "aaaaaaaaaaaaaaaa"}; - -/* XPM */ -static const char* const open_xpm[]={ - "16 16 6 1", - ". c None", - "b c #ffff00", - "d c #000000", - "* c #999999", - "c c #cccccc", - "a c #ffffff", - "................", - "................", - "...*****........", - "..*aaaaa*.......", - ".*abcbcba******.", - ".*acbcbcaaaaaa*d", - ".*abcbcbcbcbcb*d", - "*************b*d", - "*aaaaaaaaaa**c*d", - "*abcbcbcbcbbd**d", - ".*abcbcbcbcbcd*d", - ".*acbcbcbcbcbd*d", - "..*acbcbcbcbb*dd", - "..*************d", - "...ddddddddddddd", - "................"}; - -/* XPM */ -static const char * const link_dir_xpm[]={ - "16 16 10 1", - "h c #808080", - "g c #a0a0a0", - "d c #000000", - "b c #ffff00", - "f c #303030", - "# c #999999", - "a c #cccccc", - "e c #585858", - "c c #ffffff", - ". c None", - "................", - "................", - "..#####.........", - ".#ababa#........", - "#abababa######..", - "#cccccccccccc#d.", - "#cbababababab#d.", - "#cabababababa#d.", - "#cbababdddddddd.", - "#cababadccccccd.", - "#cbababdcececcd.", - "#cababadcefdfcd.", - "#cbababdccgdhcd.", - "#######dccchccd.", - ".dddddddddddddd.", - "................"}; - -/* XPM */ -static const char * const link_file_xpm[]={ - "16 16 10 1", - "h c #808080", - "g c #a0a0a0", - "d c #c3c3c3", - ". c #7f7f7f", - "c c #000000", - "b c #bfbfbf", - "f c #303030", - "e c #585858", - "a c #ffffff", - "# c None", - "################", - "..........######", - ".aaaaaaaab.#####", - ".aaaaaaaaba.####", - ".aaaaaaaacccc###", - ".aaaaaaaaaabc###", - ".aaaaaaaaaabc###", - ".aaaaaaaaaadc###", - ".aaaaaaaaaadc###", - ".aaaacccccccc###", - ".aaaacaaaaaac###", - ".aaaacaeaeaac###", - ".aaaacaefcfac###", - ".aaaacaagchac###", - ".ddddcaaahaac###", - "ccccccccccccc###"}; - -/* XPM */ -static const char* const file_xpm[]={ - "16 16 5 1", - ". c #7f7f7f", - "# c None", - "c c #000000", - "b c #bfbfbf", - "a c #ffffff", - "################", - "..........######", - ".aaaaaaaab.#####", - ".aaaaaaaaba.####", - ".aaaaaaaacccc###", - ".aaaaaaaaaabc###", - ".aaaaaaaaaabc###", - ".aaaaaaaaaabc###", - ".aaaaaaaaaabc###", - ".aaaaaaaaaabc###", - ".aaaaaaaaaabc###", - ".aaaaaaaaaabc###", - ".aaaaaaaaaabc###", - ".aaaaaaaaaabc###", - ".bbbbbbbbbbbc###", - "ccccccccccccc###"}; - -/* XPM */ -static const char * const closed_xpm[]={ - "16 16 6 1", - ". c None", - "b c #ffff00", - "d c #000000", - "* c #999999", - "a c #cccccc", - "c c #ffffff", - "................", - "................", - "..*****.........", - ".*ababa*........", - "*abababa******..", - "*cccccccccccc*d.", - "*cbababababab*d.", - "*cabababababa*d.", - "*cbababababab*d.", - "*cabababababa*d.", - "*cbababababab*d.", - "*cabababababa*d.", - "*cbababababab*d.", - "**************d.", - ".dddddddddddddd.", - "................"}; - - -/* XPM */ -static const char* const cdtoparent_xpm[]={ - "15 13 3 1", - ". c None", - "* c #000000", - "a c #ffff99", - "..*****........", - ".*aaaaa*.......", - "***************", - "*aaaaaaaaaaaaa*", - "*aaaa*aaaaaaaa*", - "*aaa***aaaaaaa*", - "*aa*****aaaaaa*", - "*aaaa*aaaaaaaa*", - "*aaaa*aaaaaaaa*", - "*aaaa******aaa*", - "*aaaaaaaaaaaaa*", - "*aaaaaaaaaaaaa*", - "***************"}; - - -/* XPM */ -static const char* const newfolder_xpm[] = { - "15 14 4 1", - " c None", - ". c #000000", - "+ c #FFFF00", - "@ c #FFFFFF", - " . ", - " ", - " . ", - " . . ", - " .... . . . ", - " .+@+@. . . ", - ".......... . .", - ".@+@+@+@+@.. ", - ".+@+@+@+@+. . ", - ".@+@+@+@+@. . ", - ".+@+@+@+@+. ", - ".@+@+@+@+@. ", - ".+@+@+@+@+. ", - "........... "}; - -/* XPM */ -static const char* const detailedview_xpm[]={ - "14 11 3 1", - ". c None", - "* c #000000", - "a c #000099", - ".****.***.***.", - "..............", - "aaaaaaaaaaaaaa", - "..............", - ".****.***.***.", - "..............", - ".****.***.***.", - "..............", - ".****.***.***.", - "..............", - ".****.***.***."}; - -/* XPM */ -static const char* const previewinfoview_xpm[]={ - "13 13 4 1", - ". c #00007f", - "a c black", - "# c #cec6bd", - "b c #000000", - "..#####aaaaaa", - ".#.#bb#a#####", - "...####a#bbb#", - "#######a#####", - "#######a#bb##", - "..#####a#####", - ".#.#bb#a#bbb#", - "...####a#####", - "#######a#bb##", - "#######a#####", - "..#####a#bbb#", - ".#.#bb#a#####", - "...####aaaaaa"}; - -/* XPM */ -static const char* const previewcontentsview_xpm[]={ - "14 13 5 1", - ". c #00007f", - "a c black", - "c c #7f007f", - "# c #cec6bd", - "b c #000000", - "..#####aaaaaaa", - ".#.#bb#a#####a", - "...####a#ccc#a", - "#######a#ccc#a", - "#######a#####a", - "..#####a#bbb#a", - ".#.#bb#a#####a", - "...####a#bbb#a", - "#######a#####a", - "#######a#bbb#a", - "..#####a#####a", - ".#.#bb#a#####a", - "...####aaaaaaa"}; - -/* XPM */ -static const char* const mclistview_xpm[]={ - "15 11 4 1", - "* c None", - "b c #000000", - ". c #000099", - "a c #ffffff", - "...*****...****", - ".a.*bbb*.a.*bbb", - "...*****...****", - "***************", - "...*****...****", - ".a.*bbb*.a.*bbb", - "...*****...****", - "***************", - "...*****...****", - ".a.*bbb*.a.*bbb", - "...*****...****"}; - -/* XPM */ -static const char * const back_xpm [] = { - "13 11 3 1", - "a c #00ffff", - "# c #000000", - ". c None", - ".....#.......", - "....##.......", - "...#a#.......", - "..#aa########", - ".#aaaaaaaaaa#", - "#aaaaaaaaaaa#", - ".#aaaaaaaaaa#", - "..#aa########", - "...#a#.......", - "....##.......", - ".....#......."}; - -static QPixmap * openFolderIcon = 0; -static QPixmap * closedFolderIcon = 0; -static QPixmap * detailViewIcon = 0; -static QPixmap * multiColumnListViewIcon = 0; -static QPixmap * cdToParentIcon = 0; -static QPixmap * newFolderIcon = 0; -static QPixmap * fifteenTransparentPixels = 0; -static QPixmap * symLinkDirIcon = 0; -static QPixmap * symLinkFileIcon = 0; -static QPixmap * fileIcon = 0; -static QPixmap * startCopyIcon = 0; -static QPixmap * endCopyIcon = 0; -static QPixmap * previewContentsViewIcon = 0; -static QPixmap * previewInfoViewIcon = 0; -static QPixmap *goBackIcon = 0; -static QFileIconProviderP * fileIconProvider = 0; -static QSize *lastSize = 0; -static QString * workingDirectory = 0; - -static bool bShowHiddenFiles = FALSE; -static int sortFilesBy = (int)QDir::Name; -static bool sortAscending = TRUE; -static bool detailViewMode = FALSE; - -static QCleanupHandler qfd_cleanup_pixmap; -static QCleanupHandler qfd_cleanup_size; -static QCleanupHandler qfd_cleanup_string; - -static bool isDirectoryMode( int m ) -{ - return m == QFileDialogP::Directory || m == QFileDialogP::DirectoryOnly; -} - -#if defined(Q_WS_WIN) - -class QWindowsIconProvider : public QFileIconProviderP -{ -public: - QWindowsIconProvider( QObject *parent=0, const char *name=0 ); - ~QWindowsIconProvider(); - - const QPixmap * pixmap( const QFileInfo &fi ); - -private: - QPixmap defaultFolder; - QPixmap defaultFile; - QPixmap defaultExe; - QPixmap pix; - int pixw, pixh; - QMap< QString, QPixmap > cache; -}; -#endif - -static void makeVariables() { - if ( !openFolderIcon ) { - workingDirectory = new QString( QDir::currentDirPath() ); - qfd_cleanup_string.add( &workingDirectory ); - - openFolderIcon = new QPixmap( (const char **)open_xpm); - qfd_cleanup_pixmap.add( &openFolderIcon ); - symLinkDirIcon = new QPixmap( (const char **)link_dir_xpm); - qfd_cleanup_pixmap.add( &symLinkDirIcon ); - symLinkFileIcon = new QPixmap( (const char **)link_file_xpm); - qfd_cleanup_pixmap.add( &symLinkFileIcon ); - fileIcon = new QPixmap( (const char **)file_xpm); - qfd_cleanup_pixmap.add( &fileIcon ); - closedFolderIcon = new QPixmap( (const char **)closed_xpm); - qfd_cleanup_pixmap.add( &closedFolderIcon ); - detailViewIcon = new QPixmap( (const char **)detailedview_xpm); - qfd_cleanup_pixmap.add( &detailViewIcon ); - multiColumnListViewIcon = new QPixmap( (const char **)mclistview_xpm); - qfd_cleanup_pixmap.add( &multiColumnListViewIcon ); - cdToParentIcon = new QPixmap( (const char **)cdtoparent_xpm); - qfd_cleanup_pixmap.add( &cdToParentIcon ); - newFolderIcon = new QPixmap( (const char **)newfolder_xpm); - qfd_cleanup_pixmap.add( &newFolderIcon ); - previewInfoViewIcon - = new QPixmap( (const char **)previewinfoview_xpm ); - qfd_cleanup_pixmap.add( &previewInfoViewIcon ); - previewContentsViewIcon - = new QPixmap( (const char **)previewcontentsview_xpm ); - qfd_cleanup_pixmap.add( &previewContentsViewIcon ); - startCopyIcon = new QPixmap( (const char **)start_xpm ); - qfd_cleanup_pixmap.add( &startCopyIcon ); - endCopyIcon = new QPixmap( (const char **)end_xpm ); - qfd_cleanup_pixmap.add( &endCopyIcon ); - goBackIcon = new QPixmap( (const char **)back_xpm ); - qfd_cleanup_pixmap.add( &goBackIcon ); - fifteenTransparentPixels = new QPixmap( closedFolderIcon->width(), 1 ); - qfd_cleanup_pixmap.add( &fifteenTransparentPixels ); - QBitmap m( fifteenTransparentPixels->width(), 1 ); - m.fill( Qt::color0 ); - fifteenTransparentPixels->setMask( m ); - bShowHiddenFiles = FALSE; - sortFilesBy = (int)QDir::Name; - detailViewMode = FALSE; -#if defined(Q_WS_WIN) - if ( !fileIconProvider ) - fileIconProvider = new QWindowsIconProvider( qApp ); -#endif - } -} - -QFDProgressAnimation::QFDProgressAnimation( QWidget *parent ) - : QWidget( parent, "qt_progressanimation" ) -{ - setFixedSize( 300, 50 ); - step = -1; - next(); - timer = new QTimer( this ); - connect( timer, SIGNAL( timeout() ), - this, SLOT( next() ) ); -} - -void QFDProgressAnimation::start() -{ - timer->start( 150, FALSE ); -} - -void QFDProgressAnimation::next() -{ - ++step; - if ( step > 10 ) - step = 0; - repaint(); -} - -void QFDProgressAnimation::paintEvent( QPaintEvent * ) -{ - erase(); - - QPainter p; - p.begin( this ); - if ( step == 0 ) { - p.drawPixmap( 5, ( height() - startCopyIcon->height() ) / 2, - *startCopyIcon ); - p.drawPixmap( width() - 5 - openFolderIcon->width(), - ( height() - openFolderIcon->height() ) / 2 , *openFolderIcon ); - } else if ( step == 10 ) { - p.drawPixmap( 5, ( height() - openFolderIcon->height() ) / 2, - *openFolderIcon ); - p.drawPixmap( width() - 5 - endCopyIcon->width(), - ( height() - endCopyIcon->height() ) / 2 , *endCopyIcon ); - } else { - p.drawPixmap( 5, ( height() - openFolderIcon->height() ) / 2, - *openFolderIcon ); - p.drawPixmap( width() - 5 - openFolderIcon->width(), - ( height() - openFolderIcon->height() ) / 2 , *openFolderIcon ); - int x = 10 + openFolderIcon->width(); - int w = width() - 2 * x; - int s = w / 9; - p.drawPixmap( x + s * step, ( height() - fileIcon->height() ) / 2 - fileIcon->height(), - *fileIcon ); - } -} - -QFDProgressDialog::QFDProgressDialog( QWidget *parent, const QString &fn, int steps ) - : QDialog( parent, "", TRUE ) -{ -#ifndef QT_NO_WIDGET_TOPEXTRA - setCaption( QFileDialogP::tr( "Copy or Move a File" ) ); -#endif - QVBoxLayout *layout = new QVBoxLayout( this ); - layout->setSpacing( 5 ); - layout->setMargin( 5 ); - - animation = new QFDProgressAnimation( this ); - layout->addWidget( animation ); - - layout->addWidget( new QLabel( QFileDialogP::tr( "Read: %1" ).arg( fn ), - this, "qt_read_lbl" ) ); - readBar = new QProgressBar( steps, this, "qt_readbar" ); - readBar->reset(); - readBar->setProgress( 0 ); - layout->addWidget( readBar ); - writeLabel = new QLabel( QFileDialogP::tr( "Write: %1" ).arg( QString::null ), - this, "qt_write_lbl" ); - layout->addWidget( writeLabel ); - writeBar = new QProgressBar( steps, this, "qt_writebar" ); - writeBar->reset(); - writeBar->setProgress( 0 ); - layout->addWidget( writeBar ); - - QPushButton *b = new QPushButton( QFileDialogP::tr( "Cancel" ), this, - "qt_cancel_btn" ); - b->setFixedSize( b->sizeHint() ); - layout->addWidget( b ); - connect( b, SIGNAL( clicked() ), - this, SIGNAL( cancelled() ) ); - - animation->start(); -} - -void QFDProgressDialog::setReadProgress( int p ) -{ - readBar->setProgress( p ); -} - -void QFDProgressDialog::setWriteProgress( int p ) -{ - writeBar->setProgress( p ); -} - -void QFDProgressDialog::setWriteLabel( const QString &s ) -{ - writeLabel->setText( QFileDialogP::tr( "Write: %1" ).arg( s ) ); -} - -/************************************************************************ - * - * Private QFileDialogP members - * - ************************************************************************/ - -class QFileDialogPrivate { -public: - ~QFileDialogPrivate(); - - QStringList history; - - bool geometryDirty; - QComboBox * paths; - QComboBox * types; - QLabel * pathL; - QLabel * fileL; - QLabel * typeL; - - QVBoxLayout * topLevelLayout; - QHBoxLayout *buttonLayout, *leftLayout, *rightLayout; - QPtrList extraWidgetsLayouts; - QPtrList extraLabels; - QPtrList extraWidgets; - QPtrList extraButtons; - QPtrList toolButtons; - - QWidgetStack * stack; - - QToolButton * cdToParent, *newFolder, * detailView, * mcView, - *previewInfo, *previewContents, *goBack; - QButtonGroup * modeButtons; - - QString currentFileName; - QListViewItem *last; - - struct File: public QListViewItem { - File( QFileDialogPrivate * dlgp, - const QUrlInfo * fi, QListViewItem * parent ) - : QListViewItem( parent, dlgp->last ), info( *fi ), d(dlgp), i( 0 ), hasMimePixmap( FALSE ) - { setup(); dlgp->last = this; } - File( QFileDialogPrivate * dlgp, - const QUrlInfo * fi, QListView * parent ) - : QListViewItem( parent, dlgp->last ), info( *fi ), d(dlgp), i( 0 ), hasMimePixmap( FALSE ) - { setup(); dlgp->last = this; } - File( QFileDialogPrivate * dlgp, - const QUrlInfo * fi, QListView * parent, QListViewItem * after ) - : QListViewItem( parent, after ), info( *fi ), d(dlgp), i( 0 ), hasMimePixmap( FALSE ) - { setup(); if ( !nextSibling() ) dlgp->last = this; } - ~File(); - - QString text( int column ) const; - const QPixmap * pixmap( int ) const; - - QUrlInfo info; - QFileDialogPrivate * d; - QListBoxItem *i; - bool hasMimePixmap; - }; - - class MCItem: public QListBoxItem { - public: - MCItem( QListBox *, QListViewItem * item ); - MCItem( QListBox *, QListViewItem * item, QListBoxItem *after ); - QString text() const; - const QPixmap *pixmap() const; - int height( const QListBox * ) const; - int width( const QListBox * ) const; - void paint( QPainter * ); - QListViewItem * i; - }; - - class UrlInfoList : public QPtrList { - public: - UrlInfoList() { setAutoDelete( TRUE ); } - int compareItems( QPtrCollection::Item n1, QPtrCollection::Item n2 ) { - if ( !n1 || !n2 ) - return 0; - - QUrlInfo *i1 = ( QUrlInfo *)n1; - QUrlInfo *i2 = ( QUrlInfo *)n2; - - if ( i1->isDir() && !i2->isDir() ) - return -1; - if ( !i1->isDir() && i2->isDir() ) - return 1; - - if ( i1->name() == ".." ) - return -1; - if ( i2->name() == ".." ) - return 1; - -#if defined(Q_OS_WIN32) - if ( sortFilesBy == QDir::Name ) { - QString name1 = i1->name().lower(); - QString name2 = i2->name().lower(); - return name1.compare( name2 ); - } -#endif - if ( QUrlInfo::equal( *i1, *i2, sortFilesBy ) ) - return 0; - else if ( QUrlInfo::greaterThan( *i1, *i2, sortFilesBy ) ) - return 1; - else if ( QUrlInfo::lessThan( *i1, *i2, sortFilesBy ) ) - return -1; - // can't happen... - return 0; - } - QUrlInfo *operator[]( int i ) { - return at( i ); - } - }; - - UrlInfoList sortedList; - QPtrList pendingItems; - - QFileListBox * moreFiles; - - QFileDialogP::Mode mode; - - QString rw; - QString ro; - QString wo; - QString inaccessible; - - QString symLinkToFile; - QString file; - QString symLinkToDir; - QString dir; - QString symLinkToSpecial; - QString special; - QWidgetStack *preview; - bool infoPreview, contentsPreview; - QSplitter *splitter; - QUrlOperator url, oldUrl; - QWidget *infoPreviewWidget, *contentsPreviewWidget; - QFilePreviewP *infoPreviewer, *contentsPreviewer; - bool hadDotDot; - - bool ignoreNextKeyPress; - // ignores the next refresh operation in case the user forced a selection - bool ignoreNextRefresh; - QFDProgressDialog *progressDia; - bool checkForFilter; - bool ignoreReturn; - bool ignoreStop; - - QTimer *mimeTypeTimer; - const QNetworkOperation *currListChildren; - - // this is similar to QUrl::encode but does encode "*" and - // doesn't encode whitespaces - static QString encodeFileName( const QString& fName ) { - - QString newStr; - QCString cName = fName.utf8(); - const QCString sChars( -#ifdef Q_WS_WIN - "#%" -#else - "<>#@\"&%$:,;?={}|^~[]\'`\\*" -#endif - ); - - int len = cName.length(); - if ( !len ) - return QString::null; - for ( int i = 0; i < len ;++i ) { - uchar inCh = (uchar)cName[ i ]; - if ( inCh >= 128 || sChars.contains(inCh) ) - { - newStr += QChar( '%' ); - ushort c = inCh / 16; - c += c > 9 ? 'A' - 10 : '0'; - newStr += c; - c = inCh % 16; - c += c > 9 ? 'A' - 10 : '0'; - newStr += c; - } else { - newStr += inCh; - } - } - return newStr; - } - -}; - -QFileDialogPrivate::~QFileDialogPrivate() -{ - delete modeButtons; -} - - - -/************************************************************************ - * - * Internal class QRenameEdit - * - ************************************************************************/ - -void QRenameEdit::keyPressEvent( QKeyEvent *e ) -{ - if ( e->key() == Key_Escape ) - emit escapePressed(); - else - QLineEdit::keyPressEvent( e ); - e->accept(); -} - -void QRenameEdit::focusOutEvent( QFocusEvent * ) -{ - emit escapePressed(); -} - -/************************************************************************ - * - * Internal class QFileListBox - * - ************************************************************************/ - -QFileListBox::QFileListBox( QWidget *parent, QFileDialogP *dlg ) - : QListBox( parent, "filelistbox" ), filedialog( dlg ), - renaming( FALSE ), renameItem( 0 ), mousePressed( FALSE ), - firstMousePressEvent( TRUE ) -{ - changeDirTimer = new QTimer( this ); - QVBox *box = new QVBox( viewport(), "qt_vbox" ); - box->setFrameStyle( QFrame::Box | QFrame::Plain ); - lined = new QRenameEdit( box ); - lined->setFixedHeight( lined->sizeHint().height() ); - box->hide(); - box->setBackgroundMode( PaletteBase ); - renameTimer = new QTimer( this ); - connect( lined, SIGNAL( returnPressed() ), - this, SLOT (rename() ) ); - connect( lined, SIGNAL( escapePressed() ), - this, SLOT( cancelRename() ) ); - connect( renameTimer, SIGNAL( timeout() ), - this, SLOT( doubleClickTimeout() ) ); - connect( changeDirTimer, SIGNAL( timeout() ), - this, SLOT( changeDirDuringDrag() ) ); - connect( this, SIGNAL( contentsMoving( int, int ) ), - this, SLOT( contentsMoved( int, int ) ) ); - viewport()->setAcceptDrops( TRUE ); - dragItem = 0; -} - -void QFileListBox::show() -{ - setBackgroundMode( PaletteBase ); - viewport()->setBackgroundMode( PaletteBase ); - QListBox::show(); -} - -void QFileListBox::keyPressEvent( QKeyEvent *e ) -{ - if ( ( e->key() == Key_Enter || - e->key() == Key_Return ) && - renaming ) - return; - - QString keyPressed = ((QKeyEvent *)e)->text().lower(); - QChar keyChar = keyPressed[0]; - if ( keyChar.isLetterOrNumber() ) { - QListBoxItem * i = 0; - if ( currentItem() ) - i = item( currentItem() ); - else - i = firstItem(); - if ( i->next() ) - i = i->next(); - else - i = firstItem(); - while ( i != item( currentItem() ) ) { - QString it = text( index( i ) ); - if ( it[0].lower() == keyChar ) { - clearSelection(); - setCurrentItem( i ); - } else { - if ( i->next() ) - i = i->next(); - else - i = firstItem(); - } - } - } - cancelRename(); - QListBox::keyPressEvent( e ); -} - -void QFileListBox::viewportMousePressEvent( QMouseEvent *e ) -{ - pressPos = e->pos(); - mousePressed = FALSE; - - bool didRename = renaming; - - cancelRename(); - if ( !hasFocus() && !viewport()->hasFocus() ) - setFocus(); - - if ( e->button() != LeftButton ) { - QListBox::viewportMousePressEvent( e ); - firstMousePressEvent = FALSE; - return; - } - - int i = currentItem(); - bool wasSelected = FALSE; - if ( i != -1 ) - wasSelected = item( i )->isSelected(); - QListBox::viewportMousePressEvent( e ); - - QFileDialogPrivate::MCItem *i1 = (QFileDialogPrivate::MCItem*)item( currentItem() ); - if ( i1 ) - mousePressed = !( (QFileDialogPrivate::File*)i1->i )->info.isDir(); - - if ( itemAt( e->pos() ) != item( i ) ) { - firstMousePressEvent = FALSE; - return; - } - - if ( !firstMousePressEvent && !didRename && i == currentItem() && currentItem() != -1 && - wasSelected && filedialog->mode() != QFileDialogP::ExistingFiles && - QUrlInfo( filedialog->d->url, "." ).isWritable() && item( currentItem() )->text() != ".." ) { - renameTimer->start( QApplication::doubleClickInterval(), TRUE ); - renameItem = item( i ); - } - - firstMousePressEvent = FALSE; -} - -void QFileListBox::viewportMouseReleaseEvent( QMouseEvent *e ) -{ - dragItem = 0; - QListBox::viewportMouseReleaseEvent( e ); - mousePressed = FALSE; -} - -void QFileListBox::viewportMouseDoubleClickEvent( QMouseEvent *e ) -{ - renameTimer->stop(); - QListBox::viewportMouseDoubleClickEvent( e ); -} - -void QFileListBox::viewportMouseMoveEvent( QMouseEvent *e ) -{ - if ( !dragItem ) - dragItem = itemAt( e->pos() ); - renameTimer->stop(); -#ifndef QT_NO_DRAGANDDROP - if ( ( pressPos - e->pos() ).manhattanLength() > QApplication::startDragDistance() && mousePressed ) { - QListBoxItem *item = dragItem; - dragItem = 0; - if ( item ) { - if ( !itemRect( item ).contains( e->pos() ) ) - return; - QUriDrag* drag = new QUriDrag( viewport() ); - drag->setUnicodeUris( filedialog->selectedFiles() ); - - if ( lined->parentWidget()->isVisible() ) - cancelRename(); - - connect( drag, SIGNAL( destroyed() ), - this, SLOT( dragObjDestroyed() ) ); - drag->drag(); - - mousePressed = FALSE; - } - } else -#endif - { - QListBox::viewportMouseMoveEvent( e ); - } - -} - -void QFileListBox::dragObjDestroyed() -{ -#ifndef QT_NO_DRAGANDDROP - //####### - //filedialog->rereadDir(); -#endif -} - -#ifndef QT_NO_DRAGANDDROP -void QFileListBox::viewportDragEnterEvent( QDragEnterEvent *e ) -{ - startDragUrl = filedialog->d->url; - startDragDir = filedialog->dirPath(); - currDropItem = 0; - - if ( !QUriDrag::canDecode( e ) ) { - e->ignore(); - return; - } - - QStringList l; - QUriDrag::decodeLocalFiles( e, l ); - urls = (int)l.count(); - - if ( acceptDrop( e->pos(), e->source() ) ) { - e->accept(); - setCurrentDropItem( e->pos() ); - } else { - e->ignore(); - setCurrentDropItem( QPoint( -1, -1 ) ); - } - - oldDragPos = e->pos(); -} - -void QFileListBox::viewportDragMoveEvent( QDragMoveEvent *e ) -{ - if ( acceptDrop( e->pos(), e->source() ) ) { - switch ( e->action() ) { - case QDropEvent::Copy: - e->acceptAction(); - break; - case QDropEvent::Move: - e->acceptAction(); - break; - case QDropEvent::Link: - break; - default: - break; - } - if ( oldDragPos != e->pos() ) - setCurrentDropItem( e->pos() ); - } else { - changeDirTimer->stop(); - e->ignore(); - setCurrentDropItem( QPoint( -1, -1 ) ); - } - - oldDragPos = e->pos(); -} - -void QFileListBox::viewportDragLeaveEvent( QDragLeaveEvent * ) -{ - changeDirTimer->stop(); - setCurrentDropItem( QPoint( -1, -1 ) ); -//######## -// if ( startDragDir != filedialog->d->url ) -// filedialog->setUrl( startDragUrl ); -} - -void QFileListBox::viewportDropEvent( QDropEvent *e ) -{ - changeDirTimer->stop(); - - if ( !QUriDrag::canDecode( e ) ) { - e->ignore(); - return; - } - - QStrList l; - QUriDrag::decode( e, l ); - - bool move = e->action() == QDropEvent::Move; -// bool supportAction = move || e->action() == QDropEvent::Copy; - - QUrlOperator dest; - if ( currDropItem ) - dest = QUrlOperator( filedialog->d->url, QFileDialogPrivate::encodeFileName( currDropItem->text() ) ); - else - dest = filedialog->d->url; - QStringList lst; - for ( uint i = 0; i < l.count(); ++i ) { - lst << l.at( i ); - } - - filedialog->d->url.copy( lst, dest, move ); - - // ##### what is supportAction for? - e->acceptAction(); - currDropItem = 0; -} - -bool QFileListBox::acceptDrop( const QPoint &pnt, QWidget *source ) -{ - QListBoxItem *item = itemAt( pnt ); - if ( !item || item && !itemRect( item ).contains( pnt ) ) { - if ( source == viewport() && startDragDir == filedialog->dirPath() ) - return FALSE; - return TRUE; - } - - QUrlInfo fi( filedialog->d->url, item->text() ); - - if ( fi.isDir() && itemRect( item ).contains( pnt ) ) - return TRUE; - return FALSE; -} - -void QFileListBox::setCurrentDropItem( const QPoint &pnt ) -{ - changeDirTimer->stop(); - - QListBoxItem *item = 0; - if ( pnt != QPoint( -1, -1 ) ) - item = itemAt( pnt ); - if ( item && !QUrlInfo( filedialog->d->url, item->text() ).isDir() ) - item = 0; - if ( item && !itemRect( item ).contains( pnt ) ) - item = 0; - - currDropItem = item; - if ( currDropItem ) - setCurrentItem( currDropItem ); - changeDirTimer->start( 750 ); -} -#endif // QT_NO_DRAGANDDROP - -void QFileListBox::changeDirDuringDrag() -{ -#ifndef QT_NO_DRAGANDDROP - if ( !currDropItem ) - return; - changeDirTimer->stop(); - QUrl u( filedialog->d->url, QFileDialogPrivate::encodeFileName(currDropItem->text()) ); - filedialog->setDir( u ); - currDropItem = 0; -#endif -} - -void QFileListBox::doubleClickTimeout() -{ - startRename(); - renameTimer->stop(); -} - -void QFileListBox::startRename( bool check ) -{ - if ( check && ( !renameItem || renameItem != item( currentItem() ) ) ) - return; - - int i = currentItem(); - setSelected( i, TRUE ); - QRect r = itemRect( item( i ) ); - int bdr = item( i )->pixmap() ? - item( i )->pixmap()->width() : 16; - int x = r.x() + bdr; - int y = r.y(); - int w = item( i )->width( this ) - bdr; - int h = QMAX( lined->height() + 2, r.height() ); - y = y + r.height() / 2 - h / 2; - - lined->parentWidget()->setGeometry( x, y, w + 6, h ); - lined->setFocus(); - lined->setText( item( i )->text() ); - lined->selectAll(); - lined->setFrame( FALSE ); - lined->parentWidget()->show(); - viewport()->setFocusProxy( lined ); - renaming = TRUE; -} - -void QFileListBox::clear() -{ - cancelRename(); - QListBox::clear(); -} - -void QFileListBox::rename() -{ - if ( !lined->text().isEmpty() ) { - QString file = currentText(); - - if ( lined->text() != file ) - filedialog->d->url.rename( file, lined->text() ); - } - cancelRename(); -} - -void QFileListBox::cancelRename() -{ - renameItem = 0; - lined->parentWidget()->hide(); - viewport()->setFocusProxy( this ); - renaming = FALSE; - updateItem( currentItem() ); - if ( lined->hasFocus() ) - viewport()->setFocus(); -} - -void QFileListBox::contentsMoved( int, int ) -{ - changeDirTimer->stop(); -#ifndef QT_NO_DRAGANDDROP - setCurrentDropItem( QPoint( -1, -1 ) ); -#endif -} - -/************************************************************************ - * - * Internal class QFileListView - * - ************************************************************************/ - -QFileDialogQFileListView::QFileDialogQFileListView( QWidget *parent, QFileDialogP *dlg ) - : QListView( parent, "qt_filedlg_listview" ), renaming( FALSE ), renameItem( 0 ), - filedialog( dlg ), mousePressed( FALSE ), - firstMousePressEvent( TRUE ) -{ - changeDirTimer = new QTimer( this ); - QVBox *box = new QVBox( viewport(), "qt_vbox" ); - box->setFrameStyle( QFrame::Box | QFrame::Plain ); - lined = new QRenameEdit( box ); - lined->setFixedHeight( lined->sizeHint().height() ); - box->hide(); - box->setBackgroundMode( PaletteBase ); - renameTimer = new QTimer( this ); - connect( lined, SIGNAL( returnPressed() ), - this, SLOT (rename() ) ); - connect( lined, SIGNAL( escapePressed() ), - this, SLOT( cancelRename() ) ); - header()->setMovingEnabled( FALSE ); - connect( renameTimer, SIGNAL( timeout() ), - this, SLOT( doubleClickTimeout() ) ); - connect( changeDirTimer, SIGNAL( timeout() ), - this, SLOT( changeDirDuringDrag() ) ); - disconnect( header(), SIGNAL( sectionClicked( int ) ), - this, SLOT( changeSortColumn( int ) ) ); - connect( header(), SIGNAL( sectionClicked( int ) ), - this, SLOT( changeSortColumn2( int ) ) ); - connect( this, SIGNAL( contentsMoving( int, int ) ), - this, SLOT( contentsMoved( int, int ) ) ); - - viewport()->setAcceptDrops( TRUE ); - sortcolumn = 0; - ascending = TRUE; - dragItem = 0; -} - -void QFileDialogQFileListView::setSorting( int column, bool increasing ) -{ - if ( column == -1 ) { - QListView::setSorting( column, increasing ); - return; - } - - sortAscending = ascending = increasing; - sortcolumn = column; - switch ( column ) { - case 0: - sortFilesBy = QDir::Name; - break; - case 1: - sortFilesBy = QDir::Size; - break; - case 3: - sortFilesBy = QDir::Time; - break; - default: - sortFilesBy = QDir::Name; // #### ??? - break; - } - - filedialog->resortDir(); -} - -void QFileDialogQFileListView::changeSortColumn2( int column ) -{ - int lcol = header()->mapToLogical( column ); - setSorting( lcol, sortcolumn == lcol ? !ascending : TRUE ); -} - -void QFileDialogQFileListView::keyPressEvent( QKeyEvent *e ) -{ - if ( ( e->key() == Key_Enter || - e->key() == Key_Return ) && - renaming ) - return; - - QString keyPressed = e->text().lower(); - QChar keyChar = keyPressed[0]; - if ( keyChar.isLetterOrNumber() ) { - QListViewItem * i = 0; - if ( currentItem() ) - i = currentItem(); - else - i = firstChild(); - if ( i->nextSibling() ) - i = i->nextSibling(); - else - i = firstChild(); - while ( i != currentItem() ) { - QString it = i->text(0); - if ( it[0].lower() == keyChar ) { - clearSelection(); - ensureItemVisible( i ); - setCurrentItem( i ); - } else { - if ( i->nextSibling() ) - i = i->nextSibling(); - else - i = firstChild(); - } - } - return; - } - - cancelRename(); - QListView::keyPressEvent( e ); -} - -void QFileDialogQFileListView::viewportMousePressEvent( QMouseEvent *e ) -{ - pressPos = e->pos(); - mousePressed = FALSE; - - bool didRename = renaming; - cancelRename(); - if ( !hasFocus() && !viewport()->hasFocus() ) - setFocus(); - - if ( e->button() != LeftButton ) { - QListView::viewportMousePressEvent( e ); - firstMousePressEvent = FALSE; - return; - } - - QListViewItem *i = currentItem(); - QListView::viewportMousePressEvent( e ); - - QFileDialogPrivate::File *i1 = (QFileDialogPrivate::File*)currentItem(); - if ( i1 ) - mousePressed = !i1->info.isDir(); - - if ( itemAt( e->pos() ) != i || - e->x() + contentsX() > columnWidth( 0 ) ) { - firstMousePressEvent = FALSE; - return; - } - - if ( !firstMousePressEvent && !didRename && i == currentItem() && currentItem() && - filedialog->mode() != QFileDialogP::ExistingFiles && - QUrlInfo( filedialog->d->url, "." ).isWritable() && currentItem()->text( 0 ) != ".." ) { - renameTimer->start( QApplication::doubleClickInterval(), TRUE ); - renameItem = currentItem(); - } - - firstMousePressEvent = FALSE; -} - -void QFileDialogQFileListView::viewportMouseDoubleClickEvent( QMouseEvent *e ) -{ - renameTimer->stop(); - QListView::viewportMouseDoubleClickEvent( e ); -} - -void QFileDialogQFileListView::viewportMouseReleaseEvent( QMouseEvent *e ) -{ - QListView::viewportMouseReleaseEvent( e ); - mousePressed = FALSE; - dragItem = 0; -} - -void QFileDialogQFileListView::viewportMouseMoveEvent( QMouseEvent *e ) -{ - renameTimer->stop(); - if ( !dragItem ) - dragItem = itemAt( e->pos() ); -#ifndef QT_NO_DRAGANDDROP - if ( ( pressPos - e->pos() ).manhattanLength() > QApplication::startDragDistance() && mousePressed ) { - QListViewItem *item = dragItem; - dragItem = 0; - if ( item ) { - QUriDrag* drag = new QUriDrag( viewport() ); - drag->setUnicodeUris( filedialog->selectedFiles() ); - - if ( lined->isVisible() ) - cancelRename(); - - connect( drag, SIGNAL( destroyed() ), - this, SLOT( dragObjDestroyed() ) ); - drag->drag(); - - mousePressed = FALSE; - } - } -#endif -} - -void QFileDialogQFileListView::dragObjDestroyed() -{ -#ifndef QT_NO_DRAGANDDROP - //###### - //filedialog->rereadDir(); -#endif -} - -#ifndef QT_NO_DRAGANDDROP -void QFileDialogQFileListView::viewportDragEnterEvent( QDragEnterEvent *e ) -{ - startDragUrl = filedialog->d->url; - startDragDir = filedialog->dirPath(); - currDropItem = 0; - - if ( !QUriDrag::canDecode( e ) ) { - e->ignore(); - return; - } - - QStringList l; - QUriDrag::decodeLocalFiles( e, l ); - urls = (int)l.count(); - - if ( acceptDrop( e->pos(), e->source() ) ) { - e->accept(); - setCurrentDropItem( e->pos() ); - } else { - e->ignore(); - setCurrentDropItem( QPoint( -1, -1 ) ); - } - - oldDragPos = e->pos(); -} - -void QFileDialogQFileListView::viewportDragMoveEvent( QDragMoveEvent *e ) -{ - if ( acceptDrop( e->pos(), e->source() ) ) { - if ( oldDragPos != e->pos() ) - setCurrentDropItem( e->pos() ); - switch ( e->action() ) { - case QDropEvent::Copy: - e->acceptAction(); - break; - case QDropEvent::Move: - e->acceptAction(); - break; - case QDropEvent::Link: - break; - default: - break; - } - } else { - changeDirTimer->stop(); - e->ignore(); - setCurrentDropItem( QPoint( -1, -1 ) ); - } - - oldDragPos = e->pos(); -} - -void QFileDialogQFileListView::viewportDragLeaveEvent( QDragLeaveEvent * ) -{ - changeDirTimer->stop(); - setCurrentDropItem( QPoint( -1, -1 ) ); -//######## -// if ( startDragDir != filedialog->d->url ) -// filedialog->setUrl( startDragUrl ); -} - -void QFileDialogQFileListView::viewportDropEvent( QDropEvent *e ) -{ - changeDirTimer->stop(); - - if ( !QUriDrag::canDecode( e ) ) { - e->ignore(); - return; - } - - QStringList l; - QUriDrag::decodeToUnicodeUris( e, l ); - - bool move = e->action() == QDropEvent::Move; -// bool supportAction = move || e->action() == QDropEvent::Copy; - - QUrlOperator dest; - if ( currDropItem ) - dest = QUrlOperator( filedialog->d->url, QFileDialogPrivate::encodeFileName( currDropItem->text( 0 ) ) ); - else - dest = filedialog->d->url; - filedialog->d->url.copy( l, dest, move ); - - // ##### what is supportAction for? - e->acceptAction(); - currDropItem = 0; -} - -bool QFileDialogQFileListView::acceptDrop( const QPoint &pnt, QWidget *source ) -{ - QListViewItem *item = itemAt( pnt ); - if ( !item || item && !itemRect( item ).contains( pnt ) ) { - if ( source == viewport() && startDragDir == filedialog->dirPath() ) - return FALSE; - return TRUE; - } - - QUrlInfo fi( filedialog->d->url, item->text( 0 ) ); - - if ( fi.isDir() && itemRect( item ).contains( pnt ) ) - return TRUE; - return FALSE; -} - -void QFileDialogQFileListView::setCurrentDropItem( const QPoint &pnt ) -{ - changeDirTimer->stop(); - - QListViewItem *item = itemAt( pnt ); - if ( pnt == QPoint( -1, -1 ) ) - item = 0; - if ( item && !QUrlInfo( filedialog->d->url, item->text( 0 ) ).isDir() ) - item = 0; - - if ( item && !itemRect( item ).contains( pnt ) ) - item = 0; - - currDropItem = item; - - if ( currDropItem ) - setCurrentItem( currDropItem ); - - changeDirTimer->start( 750 ); -} -#endif // QT_NO_DRAGANDDROP - -void QFileDialogQFileListView::changeDirDuringDrag() -{ -#ifndef QT_NO_DRAGANDDROP - if ( !currDropItem ) - return; - changeDirTimer->stop(); - QUrl u( filedialog->d->url, QFileDialogPrivate::encodeFileName(currDropItem->text( 0 ) ) ); - filedialog->setDir( u ); - currDropItem = 0; -#endif // QT_NO_DRAGANDDROP -} - - -void QFileDialogQFileListView::doubleClickTimeout() -{ - startRename(); - renameTimer->stop(); -} - -void QFileDialogQFileListView::startRename( bool check ) -{ - if ( check && ( !renameItem || renameItem != currentItem() ) ) - return; - - QListViewItem *i = currentItem(); - setSelected( i, TRUE ); - - QRect r = itemRect( i ); - int bdr = i->pixmap( 0 ) ? - i->pixmap( 0 )->width() : 16; - int x = r.x() + bdr; - int y = r.y(); - int w = columnWidth( 0 ) - bdr; - int h = QMAX( lined->height() + 2, r.height() ); - y = y + r.height() / 2 - h / 2; - - lined->parentWidget()->setGeometry( x, y, w + 6, h ); - lined->setFocus(); - lined->setText( i->text( 0 ) ); - lined->selectAll(); - lined->setFrame( FALSE ); - lined->parentWidget()->show(); - viewport()->setFocusProxy( lined ); - renaming = TRUE; -} - -void QFileDialogQFileListView::clear() -{ - cancelRename(); - QListView::clear(); -} - -void QFileDialogQFileListView::rename() -{ - if ( !lined->text().isEmpty() ) { - QString file = currentItem()->text( 0 ); - - if ( lined->text() != file ) - filedialog->d->url.rename( file, lined->text() ); - } - cancelRename(); -} - -void QFileDialogQFileListView::cancelRename() -{ - renameItem = 0; - lined->parentWidget()->hide(); - viewport()->setFocusProxy( this ); - renaming = FALSE; - if ( currentItem() ) - currentItem()->repaint(); - if ( lined->hasFocus() ) - viewport()->setFocus(); -} - -void QFileDialogQFileListView::contentsMoved( int, int ) -{ - changeDirTimer->stop(); -#ifndef QT_NO_DRAGANDDROP - setCurrentDropItem( QPoint( -1, -1 ) ); -#endif -} - - -QFileDialogPrivate::File::~File() -{ - if ( d->pendingItems.findRef( this ) ) - d->pendingItems.removeRef( this ); -} - -QString QFileDialogPrivate::File::text( int column ) const -{ - makeVariables(); - - switch( column ) { - case 0: - return info.name(); - case 1: - if ( info.isFile() ) - return QString::number(info.size()); - else - return QString::fromLatin1(""); - case 2: - if ( info.isFile() && info.isSymLink() ) { - return d->symLinkToFile; - } else if ( info.isFile() ) { - return d->file; - } else if ( info.isDir() && info.isSymLink() ) { - return d->symLinkToDir; - } else if ( info.isDir() ) { - return d->dir; - } else if ( info.isSymLink() ) { - return d->symLinkToSpecial; - } else { - return d->special; - } - case 3: { - return info.lastModified().toString( Qt::LocalDate ); - } - case 4: - if ( info.isReadable() ) - return info.isWritable() ? d->rw : d->ro; - else - return info.isWritable() ? d->wo : d->inaccessible; - } - - return QString::fromLatin1("<--->"); -} - -const QPixmap * QFileDialogPrivate::File::pixmap( int column ) const -{ - if ( column ) { - return 0; - } else if ( QListViewItem::pixmap( column ) ) { - return QListViewItem::pixmap( column ); - } else if ( info.isSymLink() ) { - if ( info.isFile() ) - return symLinkFileIcon; - else - return symLinkDirIcon; - } else if ( info.isDir() ) { - return closedFolderIcon; - } else if ( info.isFile() ) { - return fileIcon; - } else { - return fifteenTransparentPixels; - } -} - -QFileDialogPrivate::MCItem::MCItem( QListBox * lb, QListViewItem * item ) - : QListBoxItem() -{ - i = item; - if ( lb ) - lb->insertItem( this ); -} - -QFileDialogPrivate::MCItem::MCItem( QListBox * lb, QListViewItem * item, QListBoxItem *after ) - : QListBoxItem() -{ - i = item; - if ( lb ) - lb->insertItem( this, after ); -} - -QString QFileDialogPrivate::MCItem::text() const -{ - return i->text( 0 ); -} - - -const QPixmap *QFileDialogPrivate::MCItem::pixmap() const -{ - return i->pixmap( 0 ); -} - - -int QFileDialogPrivate::MCItem::height( const QListBox * lb ) const -{ - if ( pixmap() ) - return QMAX( lb->fontMetrics().height(), pixmap()->height()) + 2; - - return lb->fontMetrics().height() + 2; -} - - -int QFileDialogPrivate::MCItem::width( const QListBox * lb ) const -{ - QFontMetrics fm = lb->fontMetrics(); - int w = 2; - if ( pixmap() ) - w += pixmap()->width() + 4; - else - w += 18; - w += fm.width( text() ); - w += -fm.minLeftBearing(); - w += -fm.minRightBearing(); - w += 6; - return w; -} - - -void QFileDialogPrivate::MCItem::paint( QPainter * ptr ) -{ - QFontMetrics fm = ptr->fontMetrics(); - - int h; - - if ( pixmap() ) - h = QMAX( fm.height(), pixmap()->height()) + 2; - else - h = fm.height() + 2; - - const QPixmap * pm = pixmap(); - if ( pm ) - ptr->drawPixmap( 2, 1, *pm ); - - ptr->drawText( pm ? pm->width() + 4 : 22, h - fm.descent() - 2, - text() ); -} - -static QStringList makeFiltersList( const QString &filter ) -{ - if ( filter.isEmpty() ) - return QStringList(); - - int i = filter.find( ";;", 0 ); - QString sep( ";;" ); - if ( i == -1 ) { - if ( filter.find( "\n", 0 ) != -1 ) { - sep = "\n"; - i = filter.find( sep, 0 ); - } - } - - return QStringList::split( sep, filter ); -} - -/*! - \class QFileDialogP qfiledialog.h - \brief The QFileDialogP class provides dialogs that allow users to select files or directories. - \ingroup dialogs - \mainclass - - The QFileDialogP class enables a user to traverse their file system in - order to select one or many files or a directory. - - The easiest way to create a QFileDialogP is to use the static - functions. On Windows, these static functions will call the native - Windows file dialog and on Mac OS X, these static function will call - the native Mac OS X file dialog. - - \code - QString s = QFileDialogP::getOpenFileName( - "/home", - "Images (*.png *.xpm *.jpg)", - this, - "open file dialog" - "Choose a file" ); - \endcode - - In the above example, a modal QFileDialogP is created using a static - function. The startup directory is set to "/home". The file filter - is set to "Images (*.png *.xpm *.jpg)". The parent of the file dialog - is set to \e this and it is given the identification name - "open file - dialog". The caption at the top of file dialog is set to "Choose a - file". - - You can create your own QFileDialogP without using the static - functions. By calling setMode(), you can set what can be returned by - the QFileDialogP. - - \code - QFileDialogP* fd = new QFileDialogP( this, "file dialog", TRUE ); - fd->setMode( QFileDialogP::AnyFile ); - \endcode - - In the above example, the mode of the file dialog is set to \c - AnyFile, meaning that the user can select any file, or even specify a - file that doesn't exist. This mode is useful for creating a "File Save - As" file dialog. Use \c ExistingFile if the user must select an - existing file or \c Directory if only a directory may be selected. - (See the \l QFileDialogP::Mode enum for the complete list of modes.) - - You can retrieve the dialog's mode with mode(). Use setFilter() to set - the dialog's file filter, e.g. - - \code - fd->setFilter( "Images (*.png *.xpm *.jpg)" ); - \endcode - - In the above example, the filter is set to "Images (*.png *.xpm - *.jpg)", this means that only files with the extension \c png, \c xpm - or \c jpg will be shown in the QFileDialogP. You can apply - several filters by using setFilters() and add additional filters with - addFilter(). Use setSelectedFilter() to select one of the filters - you've given as the file dialog's default filter. Whenever the user - changes the filter the filterSelected() signal is emitted. - - The file dialog has two view modes, QFileDialogP::List which simply - lists file and directory names and QFileDialogP::Detail which - displays additional information alongside each name, e.g. file size, - modification date, etc. Set the mode with setViewMode(). - - \code - fd->setViewMode( QFileDialogP::Detail ); - \endcode - - The last important function you will need to use when creating your - own file dialog is selectedFile(). - - \code - QString fileName; - if ( fd->exec() == QDialog::Accepted ) - fileName = fd->selectedFile(); - \endcode - - In the above example, a modal file dialog is created and shown. If - the user clicked OK, then the file they selected is put in \c - fileName. - - If you are using the \c ExistingFiles mode then you will need to use - selectedFiles() which will return the selected files in a QStringList. - - The dialog's working directory can be set with setDir(). The display - of hidden files is controlled with setShowHiddenFiles(). The dialog - can be forced to re-read the directory with rereadDir() and re-sort - the directory with resortDir(). All the files in the current directory - can be selected with selectAll(). - - \section1 Creating and using preview widgets - - There are two kinds of preview widgets that can be used with - QFileDialogPs: \e content preview widgets and \e information preview - widgets. They are created and used in the same way except that the - function names differ, e.g. setContentsPreview() and setInfoPreview(). - - A preview widget is a widget that is placed inside a QFileDialogP so - that the user can see either the contents of the file, or information - about the file. - - \code - class Preview : public QLabel, public QFilePreviewP - { - public: - Preview( QWidget *parent=0 ) : QLabel( parent ) {} - - void previewUrl( const QUrl &u ) - { - QString path = u.path(); - QPixmap pix( path ); - if ( pix.isNull() ) - setText( "This is not a pixmap" ); - else - setPixmap( pix ); - } - }; - \endcode - - In the above snippet, we create a preview widget which inherits from - QLabel and QFilePreviewP. File preview widgets \e must inherit from - QFilePreviewP. - - Inside the class we reimplement QFilePreviewP::previewUrl(), this is - where we determine what happens when a file is selected. In the - above example we only show a preview of the file if it is a valid - pixmap. Here's how to make a file dialog use a preview widget: - - \code - Preview* p = new Preview; - - QFileDialogP* fd = new QFileDialogP( this ); - fd->setContentsPreviewEnabled( TRUE ); - fd->setContentsPreview( p, p ); - fd->setPreviewMode( QFileDialogP::Contents ); - fd->show(); - \endcode - - The first line creates an instance of our preview widget. We then - create our file dialog and call setContentsPreviewEnabled( TRUE ), - this tell the file dialog to preview the contents of the currently - selected file. We then call setContentsPreview() -- note that we pass - the same preview widget twice. Finally, before showing the file - dialog, we call setPreviewMode() setting the mode to \e Contents which - will show the contents preview of the file that the user has selected. - - If you create another preview widget that is used for displaying - information about a file, create it in the same way as the contents - preview widget and call setInfoPreviewEnabled(), and - setInfoPreview(). Then the user will be able to switch between the - two preview modes. - - For more information about creating a QFilePreviewP widget see - \l{QFilePreviewP}. - - - -*/ - - -/*! \enum QFileDialogP::Mode - - This enum is used to indicate what the user may select in the file - dialog, i.e. what the dialog will return if the user clicks OK. - - \value AnyFile The name of a file, whether it exists or not. - \value ExistingFile The name of a single existing file. - \value Directory The name of a directory. Both files and directories - are displayed. - \value DirectoryOnly The name of a directory. The file dialog will only display directories. - \value ExistingFiles The names of zero or more existing files. - - See setMode(). -*/ - -/*! - \enum QFileDialogP::ViewMode - - This enum describes the view mode of the file dialog, i.e. what - information about each file will be displayed. - - \value List Display file and directory names with icons. - \value Detail Display file and directory names with icons plus - additional information, such as file size and modification date. - - See setViewMode(). -*/ - -/*! - \enum QFileDialogP::PreviewMode - - This enum describes the preview mode of the file dialog. - - \value NoPreview No preview is shown at all. - \value Contents Show a preview of the contents of the current file - using the contents preview widget. - \value Info Show information about the current file using the - info preview widget. - - See setPreviewMode(), setContentsPreview() and setInfoPreview(). -*/ - -/*! - \fn void QFileDialogP::detailViewSelectionChanged() - \internal -*/ - -/*! - \fn void QFileDialogP::listBoxSelectionChanged() - \internal -*/ - -extern const char qt_file_dialog_filter_reg_exp[] = - "([a-zA-Z0-9 ]*)\\(([a-zA-Z0-9_.*? +;#\\[\\]]*)\\)$"; - -/*! - Constructs a file dialog called \a name, with the parent, \a parent. - If \a modal is TRUE then the file dialog is modal; otherwise it is - modeless. -*/ - -QFileDialogP::QFileDialogP( QWidget *parent, const char *name, bool modal ) - : QDialog( parent, name, modal, - (modal ? - (WStyle_Customize | WStyle_DialogBorder | WStyle_Title | WStyle_SysMenu) : 0) ) -{ - init(); - d->mode = ExistingFile; - d->types->insertItem( tr( "All Files (*)" ) ); - emit dirEntered( d->url.dirPath() ); - rereadDir(); -} - - -/*! - Constructs a file dialog called \a name with the parent, \a parent. - If \a modal is TRUE then the file dialog is modal; otherwise it is - modeless. - - If \a dirName is specified then it will be used as the dialog's - working directory, i.e. it will be the directory that is shown when - the dialog appears. If \a filter is specified it will be used as the - dialog's file filter. - -*/ - -QFileDialogP::QFileDialogP( const QString& dirName, const QString & filter, - QWidget *parent, const char *name, bool modal ) - : QDialog( parent, name, modal, - (modal ? - (WStyle_Customize | WStyle_DialogBorder | WStyle_Title | WStyle_SysMenu) : 0) ) -{ - init(); - d->mode = ExistingFile; - rereadDir(); - if ( !dirName.isEmpty() ) - setSelection( dirName ); - else if ( workingDirectory && !workingDirectory->isEmpty() ) - setDir( *workingDirectory ); - - if ( !filter.isEmpty() ) { - setFilters( filter ); - if ( !dirName.isEmpty() ) { - int dotpos = dirName.find( QChar('.'), 0, FALSE ); - if ( dotpos != -1 ) { - for ( int b=0 ; btypes->count() ; b++ ) { - if ( d->types->text(b).contains( dirName.right( dirName.length() - dotpos ) ) ) { - d->types->setCurrentItem( b ); - setFilter( d->types->text( b ) ); - return; - } - } - } - } - } else { - d->types->insertItem( tr( "All Files (*)" ) ); - } -} - - -/*! - \internal - Initializes the file dialog. -*/ - -void QFileDialogP::init() -{ - setSizeGripEnabled( TRUE ); - d = new QFileDialogPrivate(); - d->mode = AnyFile; - d->last = 0; - d->moreFiles = 0; - d->infoPreview = FALSE; - d->contentsPreview = FALSE; - d->hadDotDot = FALSE; - d->ignoreNextKeyPress = FALSE; - d->progressDia = 0; - d->checkForFilter = FALSE; - d->ignoreReturn = FALSE; - d->ignoreNextRefresh = FALSE; - d->ignoreStop = FALSE; - d->pendingItems.setAutoDelete( FALSE ); - d->mimeTypeTimer = new QTimer( this ); - connect( d->mimeTypeTimer, SIGNAL( timeout() ), - this, SLOT( doMimeTypeLookup() ) ); - - d->url = QUrlOperator( QDir::currentDirPath() ); - d->oldUrl = d->url; - d->currListChildren = 0; - - connect( &d->url, SIGNAL( start( QNetworkOperation * ) ), - this, SLOT( urlStart( QNetworkOperation * ) ) ); - connect( &d->url, SIGNAL( finished( QNetworkOperation * ) ), - this, SLOT( urlFinished( QNetworkOperation * ) ) ); - connect( &d->url, SIGNAL( newChildren( const QValueList &, QNetworkOperation * ) ), - this, SLOT( insertEntry( const QValueList &, QNetworkOperation * ) ) ); - connect( &d->url, SIGNAL( removed( QNetworkOperation * ) ), - this, SLOT( removeEntry( QNetworkOperation * ) ) ); - connect( &d->url, SIGNAL( createdDirectory( const QUrlInfo &, QNetworkOperation * ) ), - this, SLOT( createdDirectory( const QUrlInfo &, QNetworkOperation * ) ) ); - connect( &d->url, SIGNAL( itemChanged( QNetworkOperation * ) ), - this, SLOT( itemChanged( QNetworkOperation * ) ) ); - connect( &d->url, SIGNAL( dataTransferProgress( int, int, QNetworkOperation * ) ), - this, SLOT( dataTransferProgress( int, int, QNetworkOperation * ) ) ); - - nameEdit = new QLineEdit( this, "name/filter editor" ); - nameEdit->setMaxLength( 255 ); //_POSIX_MAX_PATH - connect( nameEdit, SIGNAL(textChanged(const QString&)), - this, SLOT(fileNameEditDone()) ); - nameEdit->installEventFilter( this ); - - d->splitter = new QSplitter( this, "qt_splitter" ); - - d->stack = new QWidgetStack( d->splitter, "files and more files" ); - - d->splitter->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ) ); - - files = new QFileDialogQFileListView( d->stack, this ); - QFontMetrics fm = fontMetrics(); - files->addColumn( tr("Name") ); - files->addColumn( tr("Size") ); - files->setColumnAlignment( 1, AlignRight ); - files->addColumn( tr("Type") ); - files->addColumn( tr("Date") ); - files->addColumn( tr("Attributes") ); - files->header()->setStretchEnabled( TRUE, 0 ); - - files->setMinimumSize( 50, 25 + 2*fm.lineSpacing() ); - - connect( files, SIGNAL( selectionChanged() ), - this, SLOT( detailViewSelectionChanged() ) ); - connect( files, SIGNAL(currentChanged(QListViewItem *)), - this, SLOT(updateFileNameEdit(QListViewItem *)) ); - connect( files, SIGNAL(doubleClicked(QListViewItem *)), - this, SLOT(selectDirectoryOrFile(QListViewItem *)) ); - connect( files, SIGNAL(returnPressed(QListViewItem *)), - this, SLOT(selectDirectoryOrFile(QListViewItem *)) ); - connect( files, SIGNAL(rightButtonPressed(QListViewItem *, - const QPoint &, int)), - this, SLOT(popupContextMenu(QListViewItem *, - const QPoint &, int)) ); - - files->installEventFilter( this ); - files->viewport()->installEventFilter( this ); - - d->moreFiles = new QFileListBox( d->stack, this ); - d->moreFiles->setRowMode( QListBox::FitToHeight ); - d->moreFiles->setVariableWidth( TRUE ); - - connect( d->moreFiles, SIGNAL(selected(QListBoxItem *)), - this, SLOT(selectDirectoryOrFile(QListBoxItem *)) ); - connect( d->moreFiles, SIGNAL( selectionChanged() ), - this, SLOT( listBoxSelectionChanged() ) ); - connect( d->moreFiles, SIGNAL(highlighted(QListBoxItem *)), - this, SLOT(updateFileNameEdit(QListBoxItem *)) ); - connect( d->moreFiles, SIGNAL( rightButtonPressed( QListBoxItem *, const QPoint & ) ), - this, SLOT( popupContextMenu( QListBoxItem *, const QPoint & ) ) ); - - d->moreFiles->installEventFilter( this ); - d->moreFiles->viewport()->installEventFilter( this ); - - okB = new QPushButton( tr("OK"), this, "OK" ); //### Or "Save (see other "OK") - okB->setDefault( TRUE ); - okB->setEnabled( FALSE ); - connect( okB, SIGNAL(clicked()), this, SLOT(okClicked()) ); - cancelB = new QPushButton( tr("Cancel") , this, "Cancel" ); - connect( cancelB, SIGNAL(clicked()), this, SLOT(cancelClicked()) ); - - d->paths = new QComboBox( TRUE, this, "directory history/editor" ); - d->paths->setDuplicatesEnabled( FALSE ); - d->paths->setInsertionPolicy( QComboBox::NoInsertion ); - const QFileInfoList * rootDrives = QDir::drives(); - QFileInfoListIterator it( *rootDrives ); - QFileInfo *fi; - makeVariables(); - - while ( (fi = it.current()) != 0 ) { - ++it; - d->paths->insertItem( *openFolderIcon, fi->absFilePath() ); - } - - if ( !!QDir::homeDirPath() ) { - if ( !d->paths->listBox()->findItem( QDir::homeDirPath() ) ) - d->paths->insertItem( *openFolderIcon, QDir::homeDirPath() ); - } - - connect( d->paths, SIGNAL(activated(const QString&)), - this, SLOT(setDir(const QString&)) ); - - d->paths->installEventFilter( this ); - QObjectList *ol = d->paths->queryList( "QLineEdit" ); - if ( ol && ol->first() ) - ( (QLineEdit*)ol->first() )->installEventFilter( this ); - delete ol; - - d->geometryDirty = TRUE; - d->types = new QComboBox( TRUE, this, "file types" ); - d->types->setDuplicatesEnabled( FALSE ); - d->types->setEditable( FALSE ); - connect( d->types, SIGNAL(activated(const QString&)), - this, SLOT(setFilter(const QString&)) ); - connect( d->types, SIGNAL(activated(const QString&)), - this, SIGNAL(filterSelected(const QString&)) ); - - d->pathL = new QLabel( d->paths, tr("Look &in:"), this, "qt_looin_lbl" ); - d->fileL = new QLabel( nameEdit, tr("File &name:"), this, "qt_filename_lbl" ); - d->typeL = new QLabel( d->types, tr("File &type:"), this, "qt_filetype_lbl" ); - -#if defined(Q_WS_WIN) - if ( qt_winver == Qt::WV_2000 || qt_winver == Qt::WV_XP ) { - d->goBack = new QToolButton( this, "go back" ); - d->goBack->setAutoRaise( TRUE ); - d->goBack->setEnabled( FALSE ); - d->goBack->setFocusPolicy( TabFocus ); - connect( d->goBack, SIGNAL( clicked() ), - this, SLOT( goBack() ) ); - QToolTip::add( d->goBack, tr( "Back" ) ); - d->goBack->setIconSet( *goBackIcon ); - } else { - d->goBack = 0; - } -#else - d->goBack = 0; -#endif - - d->cdToParent = new QToolButton( this, "cd to parent" ); -#if defined(Q_WS_WIN) - if ( qt_winver == Qt::WV_2000 || qt_winver == Qt::WV_XP ) - d->cdToParent->setAutoRaise( TRUE ); -#endif - d->cdToParent->setFocusPolicy( TabFocus ); -#ifndef QT_NO_TOOLTIP - QToolTip::add( d->cdToParent, tr( "One directory up" ) ); -#endif - d->cdToParent->setIconSet( *cdToParentIcon ); - connect( d->cdToParent, SIGNAL(clicked()), - this, SLOT(cdUpClicked()) ); - - d->newFolder = new QToolButton( this, "new folder" ); -#if defined(Q_WS_WIN) - if ( qt_winver == Qt::WV_2000 || qt_winver == Qt::WV_XP ) - d->newFolder->setAutoRaise( TRUE ); -#endif - d->newFolder->setFocusPolicy( TabFocus ); -#ifndef QT_NO_TOOLTIP - QToolTip::add( d->newFolder, tr( "Create New Folder" ) ); -#endif - d->newFolder->setIconSet( *newFolderIcon ); - connect( d->newFolder, SIGNAL(clicked()), - this, SLOT(newFolderClicked()) ); - - d->modeButtons = new QButtonGroup( 0, "invisible group" ); - connect( d->modeButtons, SIGNAL(destroyed()), - this, SLOT(modeButtonsDestroyed()) ); - d->modeButtons->setExclusive( TRUE ); - connect( d->modeButtons, SIGNAL(clicked(int)), - d->stack, SLOT(raiseWidget(int)) ); - connect( d->modeButtons, SIGNAL(clicked(int)), - this, SLOT(changeMode(int)) ); - - d->mcView = new QToolButton( this, "mclistbox view" ); -#if defined(Q_WS_WIN) - if ( qt_winver == Qt::WV_2000 || qt_winver == Qt::WV_XP ) - d->mcView->setAutoRaise( TRUE ); -#endif - d->mcView->setFocusPolicy( TabFocus ); -#ifndef QT_NO_TOOLTIP - QToolTip::add( d->mcView, tr( "List View" ) ); -#endif - d->mcView->setIconSet( *multiColumnListViewIcon ); - d->mcView->setToggleButton( TRUE ); - d->stack->addWidget( d->moreFiles, d->modeButtons->insert( d->mcView ) ); - d->detailView = new QToolButton( this, "list view" ); -#if defined(Q_WS_WIN) - if ( qt_winver == Qt::WV_2000 || qt_winver == Qt::WV_XP ) - d->detailView->setAutoRaise( TRUE ); -#endif - d->detailView->setFocusPolicy( TabFocus ); -#ifndef QT_NO_TOOLTIP - QToolTip::add( d->detailView, tr( "Detail View" ) ); -#endif - d->detailView->setIconSet( *detailViewIcon ); - d->detailView->setToggleButton( TRUE ); - d->stack->addWidget( files, d->modeButtons->insert( d->detailView ) ); - - d->previewInfo = new QToolButton( this, "preview info view" ); -#if defined(Q_WS_WIN) - if ( qt_winver == Qt::WV_2000 || qt_winver == Qt::WV_XP ) - d->previewInfo->setAutoRaise( TRUE ); -#endif - d->previewInfo->setFocusPolicy( TabFocus ); -#ifndef QT_NO_TOOLTIP - QToolTip::add( d->previewInfo, tr( "Preview File Info" ) ); -#endif - d->previewInfo->setIconSet( *previewInfoViewIcon ); - d->previewInfo->setToggleButton( TRUE ); - d->modeButtons->insert( d->previewInfo ); - - d->previewContents = new QToolButton( this, "preview info view" ); -#if defined(Q_WS_WIN) - if ( qt_winver == Qt::WV_2000 || qt_winver == Qt::WV_XP ) - d->previewContents->setAutoRaise( TRUE ); -#endif - d->previewContents->setFocusPolicy( TabFocus ); -#ifndef QT_NO_TOOLTIP - QToolTip::add( d->previewContents, tr( "Preview File Contents" ) ); -#endif - d->previewContents->setIconSet( *previewContentsViewIcon ); - d->previewContents->setToggleButton( TRUE ); - d->modeButtons->insert( d->previewContents ); - - connect( d->detailView, SIGNAL( clicked() ), - d->moreFiles, SLOT( cancelRename() ) ); - connect( d->detailView, SIGNAL( clicked() ), - files, SLOT( cancelRename() ) ); - connect( d->mcView, SIGNAL( clicked() ), - d->moreFiles, SLOT( cancelRename() ) ); - connect( d->mcView, SIGNAL( clicked() ), - files, SLOT( cancelRename() ) ); - - d->stack->raiseWidget( d->moreFiles ); - d->mcView->setOn( TRUE ); - - QHBoxLayout *lay = new QHBoxLayout( this ); - lay->setMargin( 6 ); - d->leftLayout = new QHBoxLayout( lay, 5 ); - d->topLevelLayout = new QVBoxLayout( (QWidget*)0, 5 ); - lay->addLayout( d->topLevelLayout, 1 ); - d->extraWidgetsLayouts.setAutoDelete( FALSE ); - d->extraLabels.setAutoDelete( FALSE ); - d->extraWidgets.setAutoDelete( FALSE ); - d->extraButtons.setAutoDelete( FALSE ); - d->toolButtons.setAutoDelete( FALSE ); - - QHBoxLayout * h; - - d->preview = new QWidgetStack( d->splitter, "qt_preview" ); - - d->infoPreviewWidget = new QWidget( d->preview, "qt_preview_info" ); - d->contentsPreviewWidget = new QWidget( d->preview, "qt_preview_contents" ); - d->infoPreviewer = d->contentsPreviewer = 0; - - h = new QHBoxLayout( 0 ); - d->buttonLayout = h; - d->topLevelLayout->addLayout( h ); - h->addWidget( d->pathL ); - h->addSpacing( 8 ); - h->addWidget( d->paths ); - h->addSpacing( 8 ); - if ( d->goBack ) - h->addWidget( d->goBack ); - h->addWidget( d->cdToParent ); - h->addSpacing( 2 ); - h->addWidget( d->newFolder ); - h->addSpacing( 4 ); - h->addWidget( d->mcView ); - h->addWidget( d->detailView ); - h->addWidget( d->previewInfo ); - h->addWidget( d->previewContents ); - - d->topLevelLayout->addWidget( d->splitter ); - - h = new QHBoxLayout(); - d->topLevelLayout->addLayout( h ); - h->addWidget( d->fileL ); - h->addWidget( nameEdit ); - h->addSpacing( 15 ); - h->addWidget( okB ); - - h = new QHBoxLayout(); - d->topLevelLayout->addLayout( h ); - h->addWidget( d->typeL ); - h->addWidget( d->types ); - h->addSpacing( 15 ); - h->addWidget( cancelB ); - - d->rightLayout = new QHBoxLayout( lay, 5 ); - d->topLevelLayout->setStretchFactor( d->mcView, 1 ); - d->topLevelLayout->setStretchFactor( files, 1 ); - - updateGeometries(); - - if ( d->goBack ) { - setTabOrder( d->paths, d->goBack ); - setTabOrder( d->goBack, d->cdToParent ); - } else { - setTabOrder( d->paths, d->cdToParent ); - } - setTabOrder( d->cdToParent, d->newFolder ); - setTabOrder( d->newFolder, d->mcView ); - setTabOrder( d->mcView, d->detailView ); - setTabOrder( d->detailView, d->moreFiles ); - setTabOrder( d->moreFiles, files ); - setTabOrder( files, nameEdit ); - setTabOrder( nameEdit, d->types ); - setTabOrder( d->types, okB ); - setTabOrder( okB, cancelB ); - - d->rw = tr( "Read-write" ); - d->ro = tr( "Read-only" ); - d->wo = tr( "Write-only" ); - d->inaccessible = tr( "Inaccessible" ); - - d->symLinkToFile = tr( "Symlink to File" ); - d->symLinkToDir = tr( "Symlink to Directory" ); - d->symLinkToSpecial = tr( "Symlink to Special" ); - d->file = tr( "File" ); - d->dir = tr( "Dir" ); - d->special = tr( "Special" ); - - if ( !lastSize ) { - QRect screen = QApplication::desktop()->screenGeometry( QApplication::desktop()->screenNumber( pos() ) ); - if ( screen.width() < 1024 || - screen.height() < 768 ) { - resize( QMIN(screen.width(),420), - QMIN(screen.height(),236) ); - } else { - QSize s( files->sizeHint() ); - s = QSize( s.width() + 300, s.height() + 82 ); - - if ( s.width() * 3 > screen.width() * 2 ) - s.setWidth( screen.width() * 2 / 3 ); - - if ( s.height() * 3 > screen.height() * 2 ) - s.setHeight( screen.height() * 2 / 3 ); - else if ( s.height() * 3 < screen.height() ) - s.setHeight( screen.height() / 3 ); - - resize( s ); - } - lastSize = new QSize; - qfd_cleanup_size.add( &lastSize ); - *lastSize = size(); - } else - resize( *lastSize ); - - if ( detailViewMode ) { - d->stack->raiseWidget( files ); - d->mcView->setOn( FALSE ); - d->detailView->setOn( TRUE ); - } - - d->preview->hide(); - nameEdit->setFocus(); - - connect( nameEdit, SIGNAL( returnPressed() ), - this, SLOT( fileNameEditReturnPressed() ) ); -} - -/*! - \internal -*/ - -void QFileDialogP::fileNameEditReturnPressed() -{ - d->oldUrl = d->url; - if ( !isDirectoryMode( d->mode ) ) { - okClicked(); - } else { - d->currentFileName = QString::null; - if ( nameEdit->text().isEmpty() ) { - emit fileSelected( selectedFile() ); - accept(); - } else { - QUrlInfo f; - QFileDialogPrivate::File * c - = (QFileDialogPrivate::File *)files->currentItem(); - if ( c && files->isSelected(c) ) - f = c->info; - else - f = QUrlInfo( d->url, nameEdit->text() ); - if ( f.isDir() ) { - setUrl( QUrlOperator( d->url, QFileDialogPrivate::encodeFileName(nameEdit->text() + "/" ) ) ); - d->checkForFilter = TRUE; - trySetSelection( TRUE, d->url, TRUE ); - d->checkForFilter = FALSE; - } - } - nameEdit->setText( QString::null ); - d->ignoreReturn = TRUE; - } -} - -/*! - \internal - Changes the preview mode to the mode specified at \a id. -*/ - -void QFileDialogP::changeMode( int id ) -{ - if ( !d->infoPreview && !d->contentsPreview ) - return; - - QButton *btn = (QButton*)d->modeButtons->find( id ); - if ( !btn ) - return; - - if ( btn == d->previewContents && !d->contentsPreview ) - return; - if ( btn == d->previewInfo && !d->infoPreview ) - return; - - if ( btn != d->previewContents && btn != d->previewInfo ) { - d->preview->hide(); - } else { - if ( files->currentItem() ) { - if ( d->infoPreviewer ) - d->infoPreviewer->previewUrl( QUrl( d->url, files->currentItem()->text( 0 ) ) ); - if ( d->contentsPreviewer ) - d->contentsPreviewer->previewUrl( QUrl( d->url, files->currentItem()->text( 0 ) ) ); - } - if ( btn == d->previewInfo ) - d->preview->raiseWidget( d->infoPreviewWidget ); - else - d->preview->raiseWidget( d->contentsPreviewWidget ); - d->preview->show(); - } -} - -/*! - Destroys the file dialog. -*/ - -QFileDialogP::~QFileDialogP() -{ - // since clear might call setContentsPos which would emit - // a signal and thus cause a recompute of sizes... - files->blockSignals( TRUE ); - d->moreFiles->blockSignals( TRUE ); - files->clear(); - d->moreFiles->clear(); - d->moreFiles->blockSignals( FALSE ); - files->blockSignals( FALSE ); - if ( QApplication::overrideCursor() ) - QApplication::restoreOverrideCursor(); - delete d; - d = 0; -} - - -/*! - \property QFileDialogP::selectedFile - - \brief the name of the selected file - - If a file was selected selectedFile contains the file's name including - its absolute path; otherwise selectedFile is empty. - - \sa QString::isEmpty(), selectedFiles, selectedFilter -*/ - -QString QFileDialogP::selectedFile() const -{ - QString s = d->currentFileName; - // remove the protocol because we do not want to encode it... - QString prot = QUrl( s ).protocol(); - if ( !prot.isEmpty() ) { - prot += ":"; - s.remove( 0, prot.length() ); - } - QUrl u( prot + QFileDialogPrivate::encodeFileName( s ) ); - if ( u.isLocalFile() ) { - QString s = u.toString(); - if ( s.left( 5 ) == "file:" ) - s.remove( 0, 5 ); - return s; - } - return d->currentFileName; -} - -/*! - \property QFileDialogP::selectedFilter - - \brief the filter which the user has selected in the file dialog - - \sa filterSelected(), selectedFiles, selectedFile -*/ - -QString QFileDialogP::selectedFilter() const -{ - return d->types->currentText(); -} - -/*! \overload - - Sets the current filter selected in the file dialog to the - \a{n}-th filter in the filter list. - - \sa filterSelected(), selectedFilter(), selectedFiles(), selectedFile() -*/ - -void QFileDialogP::setSelectedFilter( int n ) -{ - d->types->setCurrentItem( n ); - QString f = d->types->currentText(); - QRegExp r( QString::fromLatin1(qt_file_dialog_filter_reg_exp) ); - int index = r.search( f ); - if ( index >= 0 ) - f = r.cap( 2 ); - d->url.setNameFilter( f ); - rereadDir(); -} - -/*! - Sets the current filter selected in the file dialog to the first - one that contains the text \a mask. -*/ - -void QFileDialogP::setSelectedFilter( const QString& mask ) -{ - int n; - - for ( n = 0; n < d->types->count(); n++ ) { - if ( d->types->text( n ).contains( mask, FALSE ) ) { - d->types->setCurrentItem( n ); - QString f = mask; - QRegExp r( QString::fromLatin1(qt_file_dialog_filter_reg_exp) ); - int index = r.search( f ); - if ( index >= 0 ) - f = r.cap( 2 ); - d->url.setNameFilter( f ); - rereadDir(); - return; - } - } -} - -/*! - \property QFileDialogP::selectedFiles - - \brief the list of selected files - - If one or more files are selected, selectedFiles contains their - names including their absolute paths. If no files are selected or - the mode isn't ExistingFiles selectedFiles is an empty list. - - It is more convenient to use selectedFile() if the mode is - \c ExistingFile, \c Directory or \c DirectoryOnly. - - Note that if you want to iterate over the list, you should - iterate over a copy, e.g. - \code - QStringList list = myFileDialog.selectedFiles(); - QStringList::Iterator it = list.begin(); - while( it != list.end() ) { - myProcessing( *it ); - ++it; - } - \endcode - - \sa selectedFile, selectedFilter, QValueList::empty() -*/ - -QStringList QFileDialogP::selectedFiles() const -{ - QStringList lst; - - if ( mode() == ExistingFiles ) { - QStringList selectedLst; - QString selectedFiles = nameEdit->text(); - selectedFiles.truncate( selectedFiles.findRev( '\"' ) ); - selectedLst = selectedLst.split( QString("\" "), selectedFiles ); - for ( QStringList::Iterator it = selectedLst.begin(); it != selectedLst.end(); ++it ) { - QUrl u; - if ( (*it)[0] == '\"' ) { - u = QUrl( d->url, QFileDialogPrivate::encodeFileName( (*it).mid(1) ) ); - } else { - u = QUrl( d->url, QFileDialogPrivate::encodeFileName( (*it) ) ); - } - if ( u.isLocalFile() ) { - QString s = u.toString(); - if ( s.left( 5 ) == "file:" ) - s.remove( 0, 5 ); - lst << s; - } else { - lst << u.toString(); - } - } - } - - return lst; -} - -/*! - Sets the default selection to \a filename. If \a filename is - absolute, setDir() is also called to set the file dialog's working - directory to the filename's directory. - - \omit - Only for external use. Not useful inside QFileDialogP. - \endomit -*/ - -void QFileDialogP::setSelection( const QString & filename ) -{ - d->oldUrl = d->url; - QString nf = d->url.nameFilter(); - if ( QUrl::isRelativeUrl( filename ) ) - d->url = QUrlOperator( d->url, QFileDialogPrivate::encodeFileName( filename ) ); - else - d->url = QUrlOperator( filename ); - d->url.setNameFilter( nf ); - d->checkForFilter = TRUE; - bool isDirOk; - bool isDir = d->url.isDir( &isDirOk ); - if ( !isDirOk ) - isDir = d->url.path().right( 1 ) == "/"; - if ( !isDir ) { - QUrlOperator u( d->url ); - d->url.setPath( d->url.dirPath() ); - trySetSelection( FALSE, u, TRUE ); - d->ignoreNextRefresh = TRUE; - nameEdit->selectAll(); - rereadDir(); - emit dirEntered( d->url.dirPath() ); - } else { - if ( !d->url.path().isEmpty() && - d->url.path().right( 1 ) != "/" ) { - QString p = d->url.path(); - p += "/"; - d->url.setPath( p ); - } - trySetSelection( TRUE, d->url, FALSE ); - rereadDir(); - emit dirEntered( d->url.dirPath() ); - nameEdit->setText( QString::fromLatin1("") ); - } - d->checkForFilter = FALSE; -} - -/*! - \property QFileDialogP::dirPath - - \brief the file dialog's working directory - - \sa dir(), setDir() -*/ - -QString QFileDialogP::dirPath() const -{ - return d->url.dirPath(); -} - - -/*! - - Sets the filter used in the file dialog to \a newFilter. - - If \a newFilter contains a pair of parentheses containing one or more - of anything*something separated by spaces or by - semi-colons then only the text contained in the parentheses is used as - the filter. This means that these calls are all equivalent: - - \code - fd->setFilter( "All C++ files (*.cpp *.cc *.C *.cxx *.c++)" ); - fd->setFilter( "*.cpp *.cc *.C *.cxx *.c++" ); - fd->setFilter( "All C++ files (*.cpp;*.cc;*.C;*.cxx;*.c++)" ); - fd->setFilter( "*.cpp;*.cc;*.C;*.cxx;*.c++" ); - \endcode - - \sa setFilters() -*/ - -void QFileDialogP::setFilter( const QString & newFilter ) -{ - if ( newFilter.isEmpty() ) - return; - QString f = newFilter; - QRegExp r( QString::fromLatin1(qt_file_dialog_filter_reg_exp) ); - int index = r.search( f ); - if ( index >= 0 ) - f = r.cap( 2 ); - d->url.setNameFilter( f ); - if ( d->types->count() == 1 ) { - d->types->clear(); - d->types->insertItem( newFilter ); - } else { - for ( int i = 0; i < d->types->count(); ++i ) { - if ( d->types->text( i ).left( newFilter.length() ) == newFilter ) { - d->types->setCurrentItem( i ); - break; - } - } - } - rereadDir(); -} - - -/*! \overload - Sets the file dialog's working directory to \a pathstr. - - \sa dir() -*/ - -void QFileDialogP::setDir( const QString & pathstr ) -{ - QString dr = pathstr; - if ( dr.isEmpty() ) - return; - -#if defined(Q_OS_UNIX) - if ( dr.length() && dr[0] == '~' ) { - struct passwd *pw; - int i; - - i = 0; - while( i < (int)dr.length() && dr[i] != '/' ) - i++; - QCString user; - if ( i == 1 ) { - user = ::getlogin(); - if ( !user ) - user = getenv( "LOGNAME" ); - } else - user = dr.mid( 1, i-1 ).local8Bit(); - dr = dr.mid( i, dr.length() ); - pw = ::getpwnam( user ); - if ( pw ) - dr.prepend( QString::fromLocal8Bit(pw->pw_dir) ); - } -#endif - - setUrl( dr ); -} - -/*! - Returns the current directory shown in the file dialog. - - The ownership of the QDir pointer is transferred to the caller, so - it must be deleted by the caller when no longer required. - - \sa setDir() -*/ - -const QDir *QFileDialogP::dir() const -{ - if ( d->url.isLocalFile() ) - return new QDir( d->url.path() ); - else - return 0; -} - -/*! - Sets the file dialog's working directory to \a dir. - \sa dir() -*/ - -void QFileDialogP::setDir( const QDir &dir ) -{ - d->oldUrl = d->url; - QString nf( d->url.nameFilter() ); - d->url = dir.canonicalPath(); - d->url.setNameFilter( nf ); - QUrlInfo i( d->url, nameEdit->text() ); - d->checkForFilter = TRUE; - trySetSelection( i.isDir(), QUrlOperator( d->url, QFileDialogPrivate::encodeFileName(nameEdit->text() ) ), FALSE ); - d->checkForFilter = FALSE; - rereadDir(); - emit dirEntered( d->url.path() ); -} - -/*! - Sets the file dialog's working directory to the directory specified at \a url. - - \sa url() -*/ - -void QFileDialogP::setUrl( const QUrlOperator &url ) -{ - QString nf = d->url.nameFilter(); - - d->url = QUrl( d->url, url.toString( FALSE, FALSE ) ); - d->url.setNameFilter( nf ); - - d->checkForFilter = TRUE; - if ( !d->url.isDir() ) { - QUrlOperator u = d->url; - d->url.setPath( d->url.dirPath() ); - trySetSelection( FALSE, u, FALSE ); - rereadDir(); - emit dirEntered( d->url.dirPath() ); - QString fn = u.fileName(); - nameEdit->setText( fn ); - } else { - trySetSelection( TRUE, d->url, FALSE ); - rereadDir(); - emit dirEntered( d->url.dirPath() ); - } - d->checkForFilter = FALSE; -} - -/*! - \property QFileDialogP::showHiddenFiles - - \brief whether hidden files are shown in the file dialog - - The default is FALSE, i.e. don't show hidden files. -*/ - -void QFileDialogP::setShowHiddenFiles( bool s ) -{ - if ( s == bShowHiddenFiles ) - return; - - bShowHiddenFiles = s; - rereadDir(); -} - -bool QFileDialogP::showHiddenFiles() const -{ - return bShowHiddenFiles; -} - -/*! - Rereads the current directory shown in the file dialog. - - The only time you will need to call this function is if the contents of - the directory change and you wish to refresh the file dialog to reflect - the change. - - \sa resortDir() -*/ - -void QFileDialogP::rereadDir() -{ - if ( !QApplication::overrideCursor() ) - QApplication::setOverrideCursor( QCursor( Qt::WaitCursor ) ); - d->pendingItems.clear(); - if ( d->mimeTypeTimer->isActive() ) - d->mimeTypeTimer->stop(); - d->currListChildren = d->url.listChildren(); -} - - -/*! - \fn void QFileDialogP::fileHighlighted( const QString& ) - - This signal is emitted when the user highlights a file. - - \sa fileSelected(), filesSelected() -*/ - -/*! - \fn void QFileDialogP::fileSelected( const QString& ) - - This signal is emitted when the user selects a file. - - \sa filesSelected(), fileHighlighted(), selectedFile() -*/ - -/*! - \fn void QFileDialogP::filesSelected( const QStringList& ) - - This signal is emitted when the user selects one or more files in \e - ExistingFiles mode. - - \sa fileSelected(), fileHighlighted(), selectedFiles() -*/ - -/*! - \fn void QFileDialogP::dirEntered( const QString& ) - - This signal is emitted when the user enters a directory. - - \sa dir() -*/ - -/*! - \fn void QFileDialogP::filterSelected( const QString& ) - - This signal is emitted when the user selects a filter. - - \sa selectedFilter() -*/ - -extern bool qt_resolve_symlinks; // defined in qapplication.cpp - -/*! - This is a convenience static function that returns an existing file - selected by the user. If the user pressed Cancel, it returns a null - string. - - \code - QString s = QFileDialogP::getOpenFileName( - "/home", - "Images (*.png *.xpm *.jpg)", - this, - "open file dialog", - "Choose a file to open" ); - \endcode - - The function creates a modal file dialog called \a name, with - parent, \a parent. If a parent is not 0, the dialog will be shown - centered over the parent. - - The file dialog's working directory will be set to \a startWith. If \a - startWith includes a file name, the file will be selected. The filter - is set to \a filter so that only those files which match the filter - are shown. The filter selected is set to \a selectedFilter. The parameters - \a startWith, \a selectedFilter and \a filter may be QString::null. - - The dialog's caption is set to \a caption. If \a caption is not - specified then a default caption will be used. - - Under Windows and Mac OS X, this static function will use the native - file dialog and not a QFileDialogP, unless the style of the application - is set to something other than the native style. - - Under Unix/X11, the normal behavior of the file dialog is to resolve - and follow symlinks. For example, if /usr/tmp is a symlink to /var/tmp, - the file dialog will change to /var/tmp after entering /usr/tmp. - If \a resolveSymlinks is FALSE, the file dialog will treat - symlinks as regular directories. - - \sa getOpenFileNames(), getSaveFileName(), getExistingDirectory() -*/ - -QString QFileDialogP::getOpenFileName( const QString & startWith, - const QString& filter, - QWidget *parent, const char* name, - const QString& caption, - QString *selectedFilter, - bool resolveSymlinks ) -{ - bool save_qt_resolve_symlinks = qt_resolve_symlinks; - qt_resolve_symlinks = resolveSymlinks; - - QStringList filters; - if ( !filter.isEmpty() ) - filters = makeFiltersList( filter ); - - makeVariables(); - QString initialSelection; - //### Problem with the logic here: If a startWith is given and a file - // with that name exists in D->URL, the box will be opened at D->URL instead of - // the last directory used ('workingDirectory'). - // - // hm... isn't that problem exactly the documented behaviour? the - // documented behaviour sounds meaningful. - if ( !startWith.isEmpty() ) { - QUrlOperator u( startWith ); - if ( u.isLocalFile() && QFileInfo( u.path() ).isDir() ) { - *workingDirectory = startWith; - } else { - if ( u.isLocalFile() ) { - QFileInfo fi( u.dirPath() ); - if ( fi.exists() ) { - *workingDirectory = u.dirPath(); - initialSelection = u.fileName(); - } - } else { - *workingDirectory = u.toString(); - initialSelection = QString::null;//u.fileName(); - } - } - } - - if ( workingDirectory->isNull() ) - *workingDirectory = QDir::currentDirPath(); - -#if defined(Q_WS_WIN) - if ( qApp->style().styleHint( QStyle::SH_GUIStyle ) == WindowsStyle ) - return winGetOpenFileName( initialSelection, filter, workingDirectory, - parent, name, caption, selectedFilter ); -#elif defined(Q_WS_MAC) - if( ( qApp->style().inherits(QMAC_DEFAULT_STYLE) ) ) { - QString f = macGetOpenFileNames(filter, workingDirectory, - parent, name, caption, FALSE).first(); - return f; - } -#endif - - QFileDialogP *dlg = new QFileDialogP( *workingDirectory, QString::null, parent, name ? name : "qt_filedlg_gofn", TRUE ); - -#ifndef QT_NO_WIDGET_TOPEXTRA - if ( parent && parent->icon() && !parent->icon()->isNull() ) - dlg->setIcon( *parent->icon() ); - else if ( qApp->mainWidget() && qApp->mainWidget()->icon() && !qApp->mainWidget()->icon()->isNull() ) - dlg->setIcon( *qApp->mainWidget()->icon() ); - - if ( !caption.isNull() ) - dlg->setCaption( caption ); - else - dlg->setCaption( QFileDialogP::tr( "Open" ) ); -#endif - - dlg->setFilters( filters ); - if ( selectedFilter ) - dlg->setFilter( *selectedFilter ); - dlg->setMode( QFileDialogP::ExistingFile ); - QString result; - if ( !initialSelection.isEmpty() ) - dlg->setSelection( initialSelection ); - if ( dlg->exec() == QDialog::Accepted ) { - result = dlg->selectedFile(); - *workingDirectory = dlg->d->url; - if ( selectedFilter ) - *selectedFilter = dlg->selectedFilter(); - } - delete dlg; - - qt_resolve_symlinks = save_qt_resolve_symlinks; - - return result; -} - -/*! - This is a convenience static function that will return a file name - selected by the user. The file does not have to exist. - - It creates a modal file dialog called \a name, with parent, \a parent. - If a parent is not 0, the dialog will be shown centered over the - parent. - - \code - QString s = QFileDialogP::getSaveFileName( - "/home", - "Images (*.png *.xpm *.jpg)", - this, - "save file dialog" - "Choose a filename to save under" ); - \endcode - - The file dialog's working directory will be set to \a startWith. If \a - startWith includes a file name, the file will be selected. The filter - is set to \a filter so that only those files which match the filter - are shown. The filter selected is set to \a selectedFilter. The parameters - \a startWith, \a selectedFilter and \a filter may be QString::null. - - The dialog's caption is set to \a caption. If \a caption is not - specified then a default caption will be used. - - Under Windows and Mac OS X, this static function will use the native - file dialog and not a QFileDialogP, unless the style of the application - is set to something other than the native style. - - Under Unix/X11, the normal behavior of the file dialog is to resolve - and follow symlinks. For example, if /usr/tmp is a symlink to /var/tmp, - the file dialog will change to /var/tmp after entering /usr/tmp. - If \a resolveSymlinks is FALSE, the file dialog will treat - symlinks as regular directories. - - \sa getOpenFileName(), getOpenFileNames(), getExistingDirectory() -*/ - -QString QFileDialogP::getSaveFileName( const QString & startWith, - const QString& filter, - QWidget *parent, const char* name, - const QString& caption, - QString *selectedFilter, - bool resolveSymlinks) -{ - bool save_qt_resolve_symlinks = qt_resolve_symlinks; - qt_resolve_symlinks = resolveSymlinks; - - QStringList filters; - if ( !filter.isEmpty() ) - filters = makeFiltersList( filter ); - - makeVariables(); - QString initialSelection; - if ( !startWith.isEmpty() ) { - QUrlOperator u( startWith ); - if ( u.isLocalFile() && QFileInfo( u.path() ).isDir() ) { - *workingDirectory = startWith; - } else { - if ( u.isLocalFile() ) { - QFileInfo fi( u.dirPath() ); - if ( fi.exists() ) { - *workingDirectory = u.dirPath(); - initialSelection = u.fileName(); - } - } else { - *workingDirectory = u.toString(); - initialSelection = QString::null;//u.fileName(); - } - } - } - - if ( workingDirectory->isNull() ) - *workingDirectory = QDir::currentDirPath(); - -#if defined(Q_WS_WIN) - if ( qApp->style().styleHint( QStyle::SH_GUIStyle ) == WindowsStyle ) - return winGetSaveFileName( initialSelection, filter, workingDirectory, - parent, name, caption, selectedFilter ); -#elif defined(Q_WS_MAC) - if( ( qApp->style().inherits(QMAC_DEFAULT_STYLE) ) ) - return macGetSaveFileName( initialSelection, filter, workingDirectory, - parent, name, caption ); -#endif - - QFileDialogP *dlg = new QFileDialogP( *workingDirectory, QString::null, parent, name ? name : "qt_filedlg_gsfn", TRUE ); - - Q_CHECK_PTR( dlg ); -#ifndef QT_NO_WIDGET_TOPEXTRA - if ( parent && parent->icon() && !parent->icon()->isNull() ) - dlg->setIcon( *parent->icon() ); - else if ( qApp->mainWidget() && qApp->mainWidget()->icon() && !qApp->mainWidget()->icon()->isNull() ) - dlg->setIcon( *qApp->mainWidget()->icon() ); - - if ( !caption.isNull() ) - dlg->setCaption( caption ); - else - dlg->setCaption( QFileDialogP::tr( "Save As" ) ); -#endif - - QString result; - dlg->setFilters( filters ); - if ( selectedFilter ) - dlg->setFilter( *selectedFilter ); - dlg->setMode( QFileDialogP::AnyFile ); - if ( !initialSelection.isEmpty() ) - dlg->setSelection( initialSelection ); - if ( dlg->exec() == QDialog::Accepted ) { - result = dlg->selectedFile(); - *workingDirectory = dlg->d->url; - if ( selectedFilter ) - *selectedFilter = dlg->selectedFilter(); - } - delete dlg; - - qt_resolve_symlinks = save_qt_resolve_symlinks; - - return result; -} - -/*! - \internal - Activated when the "OK" button is clicked. -*/ - -void QFileDialogP::okClicked() -{ - QString fn( nameEdit->text() ); - -#if defined(Q_WS_WIN) - QFileInfo fi( d->url.path() + fn ); - if ( fi.isSymLink() ) { - nameEdit->setText( fi.readLink() ); - } -#endif - - if ( fn.contains("*") ) { - addFilter( fn ); - nameEdit->blockSignals( TRUE ); - nameEdit->setText( QString::fromLatin1("") ); - nameEdit->blockSignals( FALSE ); - return; - } - - *workingDirectory = d->url; - detailViewMode = files->isVisible(); - *lastSize = size(); - - if ( isDirectoryMode( d->mode ) ) { - if ( d->ignoreReturn ) { - d->ignoreReturn = FALSE; - return; - } - QUrlInfo f( d->url, nameEdit->text() ); - if ( f.isDir() ) { - d->currentFileName = d->url; - if ( d->currentFileName.right(1) != "/" ) - d->currentFileName += '/'; - if ( f.name() != "." ) - d->currentFileName += f.name(); - accept(); - return; - } - } - - // if we're in multi-selection mode and something is selected, - // accept it and be done. - if ( mode() == ExistingFiles ) { - if ( ! nameEdit->text().isEmpty() ) { - QStringList sf = selectedFiles(); - bool isdir = FALSE; - if ( sf.count() == 1 ) { - QUrlOperator u( d->url, sf[0] ); - bool ok; - isdir = u.isDir(&ok) && ok; - } - if ( !isdir ) { - emit filesSelected( sf ); - accept(); - return; - } - } - } - - if ( mode() == AnyFile ) { - QUrlOperator u( d->url, QFileDialogPrivate::encodeFileName(nameEdit->text()) ); - if ( !u.isDir() ) { - d->currentFileName = u; - emit fileSelected( selectedFile() ); - accept(); - return; - } - } - - if ( mode() == ExistingFile ) { - QUrl u( d->url, QFileDialogPrivate::encodeFileName(nameEdit->text()) ); - if ( u.isLocalFile() ) { - QFileInfo f( u.path() ); - if ( !f.exists() ) - return; - } else { - QNetworkProtocol *p = QNetworkProtocol::getNetworkProtocol( d->url.protocol() ); - if ( p && (p->supportedOperations()&QNetworkProtocol::OpListChildren) ) { - QUrlInfo ui( d->url, nameEdit->text() ); - if ( !ui.isValid() ) - return; - } - } - } - - // If selection is valid, return it, else try - // using selection as a directory to change to. - if ( !d->currentFileName.isNull() && !d->currentFileName.contains( "*" ) ) { - emit fileSelected( selectedFile() ); - accept(); - } else { - QUrlInfo f; - QFileDialogPrivate::File * c - = (QFileDialogPrivate::File *)files->currentItem(); - QFileDialogPrivate::MCItem * m - = (QFileDialogPrivate::MCItem *)d->moreFiles->item( d->moreFiles->currentItem() ); - if ( c && files->isVisible() && files->hasFocus() || - m && d->moreFiles->isVisible() && d->moreFiles->hasFocus() ) { - if ( c && files->isVisible() ) - f = c->info; - else - f = ( (QFileDialogPrivate::File*)m->i )->info; - } else { - f = QUrlInfo( d->url, nameEdit->text() ); - } - if ( f.isDir() ) { - setUrl( QUrlOperator( d->url, QFileDialogPrivate::encodeFileName(f.name() + "/" ) ) ); - d->checkForFilter = TRUE; - trySetSelection( TRUE, d->url, TRUE ); - d->checkForFilter = FALSE; - } else { - if ( !nameEdit->text().contains( "/" ) && - !nameEdit->text().contains( "\\" ) -#if defined(Q_OS_WIN32) - && nameEdit->text()[ 1 ] != ':' -#endif - ) - addFilter( nameEdit->text() ); - else if ( nameEdit->text()[ 0 ] == '/' || - nameEdit->text()[ 0 ] == '\\' -#if defined(Q_OS_WIN32) - || nameEdit->text()[ 1 ] == ':' -#endif - ) - setDir( nameEdit->text() ); - else if ( nameEdit->text().left( 3 ) == "../" || nameEdit->text().left( 3 ) == "..\\" ) - setDir( QUrl( d->url.toString(), QFileDialogPrivate::encodeFileName(nameEdit->text() ) ).toString() ); - } - nameEdit->setText( "" ); - } -} - -/*! - \internal - Activated when the "Filter" button is clicked. -*/ - -void QFileDialogP::filterClicked() -{ - // unused -} - -/*! - \internal - Activated when the "Cancel" button is clicked. -*/ - -void QFileDialogP::cancelClicked() -{ - *workingDirectory = d->url; - detailViewMode = files->isVisible(); - *lastSize = size(); - reject(); -} - - -/*!\reimp -*/ - -void QFileDialogP::resizeEvent( QResizeEvent * e ) -{ - QDialog::resizeEvent( e ); - updateGeometries(); -} - -/* - \internal - The only correct way to try to set currentFileName -*/ -bool QFileDialogP::trySetSelection( bool isDir, const QUrlOperator &u, bool updatelined ) -{ - if ( !isDir && !u.path().isEmpty() && u.path().right( 1 ) == "/" ) - isDir = TRUE; - if ( u.fileName().contains( "*") && d->checkForFilter ) { - QString fn( u.fileName() ); - if ( fn.contains( "*" ) ) { - addFilter( fn ); - d->currentFileName = QString::null; - d->url.setFileName( QString::null ); - nameEdit->setText( QString::fromLatin1("") ); - return FALSE; - } - } - - if ( isDir ) { - if ( d->preview && d->preview->isVisible() ) { - if ( d->infoPreviewer ) - d->infoPreviewer->previewUrl( u ); - if ( d->contentsPreviewer ) - d->contentsPreviewer->previewUrl( u ); - } - } - - QString old = d->currentFileName; - - if ( isDirectoryMode( mode() ) ) { - if ( isDir ) - d->currentFileName = u; - else - d->currentFileName = QString::null; - } else if ( !isDir && mode() == ExistingFiles ) { - d->currentFileName = u; - } else if ( !isDir || ( mode() == AnyFile && !isDir ) ) { - d->currentFileName = u; - } else { - d->currentFileName = QString::null; - } - if ( updatelined && !d->currentFileName.isEmpty() ) { - // If the selection is valid, or if its a directory, allow OK. - if ( !d->currentFileName.isNull() || isDir ) { - if ( u.fileName() != ".." ) { - QString fn = u.fileName(); - nameEdit->setText( fn ); - } else { - nameEdit->setText(""); - } - } else - nameEdit->setText( QString::fromLatin1("") ); - } - - if ( !d->currentFileName.isNull() || isDir ) { - okB->setEnabled( TRUE ); - } else if ( !isDirectoryMode( d->mode ) ) { - okB->setEnabled( FALSE ); - } - - if ( d->currentFileName.length() && old != d->currentFileName ) - emit fileHighlighted( selectedFile() ); - - return !d->currentFileName.isNull(); -} - - -/*! Make sure the minimum and maximum sizes of everything are sane. -*/ - -void QFileDialogP::updateGeometries() -{ - if ( !d || !d->geometryDirty ) - return; - - d->geometryDirty = FALSE; - - QSize r, t; - - // we really should have a QSize::unite() -#define RM r.setWidth( QMAX(r.width(),t.width()) ); \ -r.setHeight( QMAX(r.height(),t.height()) ) - - // labels first - r = d->pathL->sizeHint(); - t = d->fileL->sizeHint(); - RM; - t = d->typeL->sizeHint(); - RM; - d->pathL->setFixedSize( d->pathL->sizeHint() ); - d->fileL->setFixedSize( r ); - d->typeL->setFixedSize( r ); - - // single-line input areas - r = d->paths->sizeHint(); - t = nameEdit->sizeHint(); - RM; - t = d->types->sizeHint(); - RM; - r.setWidth( t.width() * 2 / 3 ); - t.setWidth( QWIDGETSIZE_MAX ); - t.setHeight( r.height() ); - d->paths->setMinimumSize( r ); - d->paths->setMaximumSize( t ); - nameEdit->setMinimumSize( r ); - nameEdit->setMaximumSize( t ); - d->types->setMinimumSize( r ); - d->types->setMaximumSize( t ); - - // buttons on top row - r = QSize( 0, d->paths->minimumSize().height() ); - t = QSize( 21, 20 ); - RM; - if ( r.height()+1 > r.width() ) - r.setWidth( r.height()+1 ); - if ( d->goBack ) - d->goBack->setFixedSize( r ); - d->cdToParent->setFixedSize( r ); - d->newFolder->setFixedSize( r ); - d->mcView->setFixedSize( r ); - d->detailView->setFixedSize( r ); - - QButton *b = 0; - if ( !d->toolButtons.isEmpty() ) { - for ( b = d->toolButtons.first(); b; b = d->toolButtons.next() ) - b->setFixedSize( b->sizeHint().width(), r.height() ); - } - - if ( d->infoPreview ) { - d->previewInfo->show(); - d->previewInfo->setFixedSize( r ); - } else { - d->previewInfo->hide(); - d->previewInfo->setFixedSize( QSize( 0, 0 ) ); - } - - if ( d->contentsPreview ) { - d->previewContents->show(); - d->previewContents->setFixedSize( r ); - } else { - d->previewContents->hide(); - d->previewContents->setFixedSize( QSize( 0, 0 ) ); - } - - // open/save, cancel - r = QSize( 75, 20 ); - t = okB->sizeHint(); - RM; - t = cancelB->sizeHint(); - RM; - - okB->setFixedSize( r ); - cancelB->setFixedSize( r ); - - d->topLevelLayout->activate(); - -#undef RM -} - - -/*! Updates the file name edit box to \a newItem in the file dialog - when the cursor moves in the listview. -*/ - -void QFileDialogP::updateFileNameEdit( QListViewItem * newItem ) -{ - if ( !newItem ) - return; - - if ( mode() == ExistingFiles ) { - detailViewSelectionChanged(); - QUrl u = QUrl( d->url, QFileDialogPrivate::encodeFileName( ((QFileDialogPrivate::File*)files->currentItem())->info.name() ) ); - QFileInfo fi( u.toString( FALSE, FALSE ) ); - if ( !fi.isDir() ) - emit fileHighlighted( u.toString( FALSE, FALSE ) ); - } else if ( files->isSelected( newItem ) ) { - QFileDialogPrivate::File * i = (QFileDialogPrivate::File *)newItem; - if ( i && i->i && !i->i->isSelected() ) { - d->moreFiles->blockSignals( TRUE ); - d->moreFiles->setSelected( i->i, TRUE ); - d->moreFiles->blockSignals( FALSE ); - } - // Encode the filename in case it had any special characters in it - QString encFile = QFileDialogPrivate::encodeFileName( newItem->text( 0 ) ); - trySetSelection( i->info.isDir(), QUrlOperator( d->url, encFile ), TRUE ); - } -} - -void QFileDialogP::detailViewSelectionChanged() -{ - if ( d->mode != ExistingFiles ) - return; - - nameEdit->clear(); - QString str; - QListViewItem * i = files->firstChild(); - d->moreFiles->blockSignals( TRUE ); - while( i ) { - if ( d->moreFiles && isVisible() ) { - if ( ( (QFileDialogPrivate::File *)i )->i->isSelected() != i->isSelected() ) - d->moreFiles->setSelected( ( (QFileDialogPrivate::File *)i )->i, i->isSelected() ); - } - if ( i->isSelected() && !( (QFileDialogPrivate::File *)i )->info.isDir() ) - str += QString( "\"%1\" " ).arg( i->text( 0 ) ); - i = i->nextSibling(); - } - d->moreFiles->blockSignals( FALSE ); - nameEdit->setText( str ); - nameEdit->setCursorPosition( str.length() ); - okB->setEnabled( TRUE ); - if ( d->preview && d->preview->isVisible() && files->currentItem() ) { - QUrl u = QUrl( d->url, QFileDialogPrivate::encodeFileName( ((QFileDialogPrivate::File*)files->currentItem())->info.name() ) ); - if ( d->infoPreviewer ) - d->infoPreviewer->previewUrl( u ); - if ( d->contentsPreviewer ) - d->contentsPreviewer->previewUrl( u ); - } -} - -void QFileDialogP::listBoxSelectionChanged() -{ - if ( d->mode != ExistingFiles ) - return; - - if ( d->ignoreNextRefresh ) { - d->ignoreNextRefresh = FALSE; - return; - } - - nameEdit->clear(); - QString str; - QListBoxItem * i = d->moreFiles->item( 0 ); - QListBoxItem * j = 0; - int index = 0; - files->blockSignals( TRUE ); - while( i ) { - if ( files && isVisible() ) { - if ( ( (QFileDialogPrivate::MCItem *)i )->i->isSelected() != i->isSelected() ) - files->setSelected( ( (QFileDialogPrivate::MCItem *)i )->i, i->isSelected() ); - } - if ( d->moreFiles->isSelected( i ) - && !( (QFileDialogPrivate::File*)( (QFileDialogPrivate::MCItem *)i )->i )->info.isDir() ) - { - str += QString( "\"%1\" " ).arg( i->text() ); - if ( j == 0 ) - j = i; - } - i = d->moreFiles->item( ++index ); - } - files->blockSignals( FALSE ); - nameEdit->setText( str ); - nameEdit->setCursorPosition( str.length() ); - okB->setEnabled( TRUE ); - if ( d->preview && d->preview->isVisible() && j ) { - QUrl u = QUrl( d->url, - QFileDialogPrivate::encodeFileName( ( (QFileDialogPrivate::File*)( (QFileDialogPrivate::MCItem*)j )->i )->info.name() ) ); - if ( d->infoPreviewer ) - d->infoPreviewer->previewUrl( u ); - if ( d->contentsPreviewer ) - d->contentsPreviewer->previewUrl( u ); - } -} - -/*! \overload */ - -void QFileDialogP::updateFileNameEdit( QListBoxItem * newItem ) -{ - if ( !newItem ) - return; - QFileDialogPrivate::MCItem * i = (QFileDialogPrivate::MCItem *)newItem; - if ( d->mode != ExistingFiles && i->i ) { - i->i->listView()->setSelected( i->i, i->isSelected() ); - updateFileNameEdit( i->i ); - } -} - - -/*! Updates the dialog when the file name edit changes. */ - -void QFileDialogP::fileNameEditDone() -{ - QUrlInfo f( d->url, nameEdit->text() ); - if ( mode() != QFileDialogP::ExistingFiles ) { - QUrlOperator u( d->url, QFileDialogPrivate::encodeFileName( nameEdit->text() ) ); - trySetSelection( f.isDir(), u, FALSE ); - if ( d->preview && d->preview->isVisible() ) { - if ( d->infoPreviewer ) - d->infoPreviewer->previewUrl( u ); - if ( d->contentsPreviewer ) - d->contentsPreviewer->previewUrl( u ); - } - } -} - - - -/*! This private slot reacts to double-clicks in the list view. The item that -was double-clicked is specified in \a newItem */ - -void QFileDialogP::selectDirectoryOrFile( QListViewItem * newItem ) -{ - - *workingDirectory = d->url; - detailViewMode = files->isVisible(); - *lastSize = size(); - - if ( !newItem ) - return; - -#if defined(Q_WS_WIN) - QFileInfo fi( d->url.path() + newItem->text(0) ); - if ( fi.isSymLink() ) { - nameEdit->setText( fi.readLink() ); - okClicked(); - return; - } -#endif - - QFileDialogPrivate::File * i = (QFileDialogPrivate::File *)newItem; - - QString oldName = nameEdit->text(); - if ( i->info.isDir() ) { - setUrl( QUrlOperator( d->url, QFileDialogPrivate::encodeFileName( i->info.name() ) + "/" ) ); - if ( isDirectoryMode( mode() ) ) { - QUrlInfo f ( d->url, QString::fromLatin1( "." ) ); - trySetSelection( f.isDir(), d->url, TRUE ); - } - } else if ( newItem->isSelectable() && - trySetSelection( i->info.isDir(), QUrlOperator( d->url, QFileDialogPrivate::encodeFileName( i->info.name() ) ), TRUE ) ) { - if ( !isDirectoryMode( mode() ) ) { - emit fileSelected( selectedFile() ); - accept(); - } - } else if ( isDirectoryMode( d->mode ) ) { - d->currentFileName = d->url; - accept(); - } - if ( !oldName.isEmpty() && !isDirectoryMode( mode() ) ) - nameEdit->setText( oldName ); -} - - -void QFileDialogP::selectDirectoryOrFile( QListBoxItem * newItem ) -{ - if ( !newItem ) - return; - - QFileDialogPrivate::MCItem * i = (QFileDialogPrivate::MCItem *)newItem; - if ( i->i ) { - i->i->listView()->setSelected( i->i, i->isSelected() ); - selectDirectoryOrFile( i->i ); - } -} - - -void QFileDialogP::popupContextMenu( QListViewItem *item, const QPoint &p, - int ) -{ - if ( item && d->mode == ExistingFiles ) - return; - if ( item ) { - files->setCurrentItem( item ); - files->setSelected( item, TRUE ); - } - - PopupAction action; - popupContextMenu( item ? item->text( 0 ) : QString::null, TRUE, action, p ); - - if ( action == PA_Open ) - selectDirectoryOrFile( item ); - else if ( action == PA_Rename ) - files->startRename( FALSE ); - else if ( action == PA_Delete ) - deleteFile( item ? item->text( 0 ) : QString::null ); - else if ( action == PA_Reload ) - rereadDir(); - else if ( action == PA_Hidden ) { - bShowHiddenFiles = !bShowHiddenFiles; - rereadDir(); - } else if ( action == PA_SortName ) { - sortFilesBy = (int)QDir::Name; - sortAscending = TRUE; - resortDir(); - } else if ( action == PA_SortSize ) { - sortFilesBy = (int)QDir::Size; - sortAscending = TRUE; - resortDir(); - } else if ( action == PA_SortDate ) { - sortFilesBy = (int)QDir::Time; - sortAscending = TRUE; - resortDir(); - } else if ( action == PA_SortUnsorted ) { - sortFilesBy = (int)QDir::Unsorted; - sortAscending = TRUE; - resortDir(); - } - -} - -void QFileDialogP::popupContextMenu( QListBoxItem *item, const QPoint & p ) -{ - if ( item && d->mode == ExistingFiles ) - return; - - PopupAction action; - popupContextMenu( item ? item->text() : QString::null, FALSE, action, p ); - - if ( action == PA_Open ) - selectDirectoryOrFile( item ); - else if ( action == PA_Rename ) - d->moreFiles->startRename( FALSE ); - else if ( action == PA_Delete ) - deleteFile( item->text() ); - else if ( action == PA_Reload ) - rereadDir(); - else if ( action == PA_Hidden ) { - bShowHiddenFiles = !bShowHiddenFiles; - rereadDir(); - } else if ( action == PA_SortName ) { - sortFilesBy = (int)QDir::Name; - sortAscending = TRUE; - resortDir(); - } else if ( action == PA_SortSize ) { - sortFilesBy = (int)QDir::Size; - sortAscending = TRUE; - resortDir(); - } else if ( action == PA_SortDate ) { - sortFilesBy = (int)QDir::Time; - sortAscending = TRUE; - resortDir(); - } else if ( action == PA_SortUnsorted ) { - sortFilesBy = (int)QDir::Unsorted; - sortAscending = TRUE; - resortDir(); - } -} - -void QFileDialogP::popupContextMenu( const QString &filename, bool, - PopupAction &action, const QPoint &p ) -{ - action = PA_Cancel; - - bool glob = filename.isEmpty(); - - QPopupMenu m( 0, "file dialog context menu" ); - m.setCheckable( TRUE ); - - if ( !glob ) { - QString okt; - if ( QUrlInfo( d->url, filename ).isDir() ) { - okt = tr( "&Open" ); - } else { - if ( mode() == AnyFile ) - okt = tr( "&Save" ); - else - okt = tr( "&Open" ); - } - int ok = m.insertItem( okt ); - - m.insertSeparator(); - int rename = m.insertItem( tr( "&Rename" ) ); - int del = m.insertItem( tr( "&Delete" ) ); - - if ( filename.isEmpty() || !QUrlInfo( d->url, filename ).isWritable() || - filename == ".." ) { - if ( filename.isEmpty() || !QUrlInfo( d->url, filename ).isReadable() ) - m.setItemEnabled( ok, FALSE ); - m.setItemEnabled( rename, FALSE ); - m.setItemEnabled( del, FALSE ); - } - - if ( mode() == QFileDialogP::ExistingFiles ) - m.setItemEnabled( rename, FALSE ); - - m.move( p ); - int res = m.exec(); - - if ( res == ok ) - action = PA_Open; - else if ( res == rename ) - action = PA_Rename; - else if ( res == del ) - action = PA_Delete; - } else { - int reload = m.insertItem( tr( "R&eload" ) ); - - QPopupMenu m2( 0, "sort menu" ); - - int sname = m2.insertItem( tr( "Sort by &Name" ) ); - //int stype = m2.insertItem( tr( "Sort by &Type" ) ); - int ssize = m2.insertItem( tr( "Sort by &Size" ) ); - int sdate = m2.insertItem( tr( "Sort by &Date" ) ); - m2.insertSeparator(); - int sunsorted = m2.insertItem( tr( "&Unsorted" ) ); - - //m2.setItemEnabled( stype, FALSE ); - - if ( sortFilesBy == (int)QDir::Name ) - m2.setItemChecked( sname, TRUE ); - else if ( sortFilesBy == (int)QDir::Size ) - m2.setItemChecked( ssize, TRUE ); -// else if ( sortFilesBy == 0x16 ) -// m2.setItemChecked( stype, TRUE ); - else if ( sortFilesBy == (int)QDir::Time ) - m2.setItemChecked( sdate, TRUE ); - else if ( sortFilesBy == (int)QDir::Unsorted ) - m2.setItemChecked( sunsorted, TRUE ); - - m.insertItem( tr( "Sort" ), &m2 ); - - m.insertSeparator(); - - int hidden = m.insertItem( tr( "Show &hidden files" ) ); - m.setItemChecked( hidden, bShowHiddenFiles ); - - m.move( p ); - int res = m.exec(); - - if ( res == reload ) - action = PA_Reload; - else if ( res == hidden ) - action = PA_Hidden; - else if ( res == sname ) - action = PA_SortName; -// else if ( res == stype ) -// action = PA_SortType; - else if ( res == sdate ) - action = PA_SortDate; - else if ( res == ssize ) - action = PA_SortSize; - else if ( res == sunsorted ) - action = PA_SortUnsorted; - } - -} - -void QFileDialogP::deleteFile( const QString &filename ) -{ - if ( filename.isEmpty() ) - return; - - QUrlInfo fi( d->url, QFileDialogPrivate::encodeFileName( filename ) ); - QString t = tr( "the file" ); - if ( fi.isDir() ) - t = tr( "the directory" ); - if ( fi.isSymLink() ) - t = tr( "the symlink" ); - - if ( QMessageBox::warning( this, - tr( "Delete %1" ).arg( t ), - tr( "Are you sure you wish to delete %1 \"%2\"?" ) - .arg( t ).arg(filename), - tr( "&Yes" ), tr( "&No" ), QString::null, 1 ) == 0 ) - d->url.remove( QFileDialogPrivate::encodeFileName( filename ) ); - -} - -void QFileDialogP::fileSelected( int ) -{ - // unused -} - -void QFileDialogP::fileHighlighted( int ) -{ - // unused -} - -void QFileDialogP::dirSelected( int ) -{ - // unused -} - -void QFileDialogP::pathSelected( int ) -{ - // unused -} - - -void QFileDialogP::cdUpClicked() -{ - QString oldName = nameEdit->text(); - setUrl( QUrlOperator( d->url, ".." ) ); - if ( !oldName.isEmpty() ) - nameEdit->setText( oldName ); -} - -void QFileDialogP::newFolderClicked() -{ - QString foldername( tr( "New Folder 1" ) ); - int i = 0; - QStringList lst; - QListViewItemIterator it( files ); - for ( ; it.current(); ++it ) - if ( it.current()->text( 0 ).contains( tr( "New Folder" ) ) ) - lst.append( it.current()->text( 0 ) ); - - if ( !lst.count() == 0 ) - while ( lst.contains( foldername ) ) - foldername = tr( "New Folder %1" ).arg( ++i ); - - d->url.mkdir( foldername ); -} - -void QFileDialogP::createdDirectory( const QUrlInfo &info, QNetworkOperation * ) -{ - resortDir(); - if ( d->moreFiles->isVisible() ) { - for ( uint i = 0; i < d->moreFiles->count(); ++i ) { - if ( d->moreFiles->text( i ) == info.name() ) { - d->moreFiles->setCurrentItem( i ); - d->moreFiles->startRename( FALSE ); - break; - } - } - } else { - QListViewItem *item = files->firstChild(); - while ( item ) { - if ( item->text( 0 ) == info.name() ) { - files->setSelected( item, TRUE ); - files->setCurrentItem( item ); - files->startRename( FALSE ); - break; - } - item = item->nextSibling(); - } - } -} - - -/*! - This is a convenience static function that will return an existing directory - selected by the user. - - \code - QString s = QFileDialogP::getExistingDirectory( - "/home", - this, - "get existing directory" - "Choose a directory", - TRUE ); - \endcode - - This function creates a modal file dialog called \a name, with - parent, \a parent. If parent is not 0, the dialog will be shown - centered over the parent. - - The dialog's working directory is set to \a dir, and the caption is - set to \a caption. Either of these may be QString::null in which case - the current directory and a default caption will be used respectively. - - If \a dirOnly is TRUE, then only directories will be shown in - the file dialog; otherwise both directories and files will be shown. - - Under Unix/X11, the normal behavior of the file dialog is to resolve - and follow symlinks. For example, if /usr/tmp is a symlink to /var/tmp, - the file dialog will change to /var/tmp after entering /usr/tmp. - If \a resolveSymlinks is FALSE, the file dialog will treat - symlinks as regular directories. - - \sa getOpenFileName(), getOpenFileNames(), getSaveFileName() -*/ - -QString QFileDialogP::getExistingDirectory( const QString & dir, - QWidget *parent, - const char* name, - const QString& caption, - bool dirOnly, - bool resolveSymlinks) -{ - bool save_qt_resolve_symlinks = qt_resolve_symlinks; - qt_resolve_symlinks = resolveSymlinks; - - makeVariables(); - QString wd; - if ( workingDirectory ) - wd = *workingDirectory; - -#if defined(Q_WS_WIN) - QString initialDir; - if ( !dir.isEmpty() ) { - QUrlOperator u( dir ); - if ( QFileInfo( u.path() ).isDir() ) - initialDir = dir; - } else - initialDir = QString::null; - if ( qApp->style().styleHint( QStyle::SH_GUIStyle ) == WindowsStyle && dirOnly ) - return winGetExistingDirectory( initialDir, parent, name, caption ); -#endif -#if defined(Q_WS_MAC) - if( ( qApp->style().inherits(QMAC_DEFAULT_STYLE) ) ) - return macGetOpenFileNames("", 0, - parent, name, caption, FALSE, TRUE).first(); -#endif - - QFileDialogP *dialog = new QFileDialogP( parent, name ? name : "qt_filedlg_ged", TRUE ); -#ifndef QT_NO_WIDGET_TOPEXTRA - if ( !caption.isNull() ) - dialog->setCaption( caption ); - else - dialog->setCaption( QFileDialogP::tr("Find Directory") ); -#endif - - dialog->setMode( dirOnly ? DirectoryOnly : Directory ); - - dialog->d->types->clear(); - dialog->d->types->insertItem( QFileDialogP::tr("Directories") ); - dialog->d->types->setEnabled( FALSE ); - - QString dir_( dir ); - dir_ = dir_.simplifyWhiteSpace(); - if ( dir_.isEmpty() && !wd.isEmpty() ) - dir_ = wd; - QUrlOperator u( dir_ ); - if ( u.isLocalFile() ) { - if ( !dir_.isEmpty() ) { - QFileInfo f( u.path() ); - if ( f.exists() ) - if ( f.isDir() ) { - dialog->setDir( dir_ ); - wd = dir_; - } - } else if ( !wd.isEmpty() ) { - QUrl tempUrl( wd ); - QFileInfo f( tempUrl.path() ); - if ( f.isDir() ) { - dialog->setDir( wd ); - } - } else { - QString theDir = dir_; - if ( theDir.isEmpty() ) { - theDir = QDir::currentDirPath(); - } if ( !theDir.isEmpty() ) { - QUrl tempUrl( theDir ); - QFileInfo f( tempUrl.path() ); - if ( f.isDir() ) { - wd = theDir; - dialog->setDir( theDir ); - } - } - } - } else { - dialog->setUrl( dir_ ); - } - - QString result; - dialog->setSelection( dialog->d->url.toString() ); - - if ( dialog->exec() == QDialog::Accepted ) { - result = dialog->selectedFile(); - wd = result; - } - delete dialog; - - if ( !result.isEmpty() && result.right( 1 ) != "/" ) - result += "/"; - - qt_resolve_symlinks = save_qt_resolve_symlinks; - - return result; -} - - -/*! - \property QFileDialogP::mode - \brief the file dialog's mode - - The default mode is \c ExistingFile. -*/ - -void QFileDialogP::setMode( Mode newMode ) -{ - if ( d->mode != newMode ) { - d->mode = newMode; - QString sel = d->currentFileName; - if ( isDirectoryMode( newMode ) ) { - files->setMultiSelection( FALSE ); - d->moreFiles->setMultiSelection( FALSE ); - if ( sel.isNull() ) - sel = QString::fromLatin1("."); - d->types->setEnabled( FALSE ); - } else if ( newMode == ExistingFiles ) { - files->setSelectionMode( QListView::Extended ); - d->moreFiles->setSelectionMode( QListBox::Extended ); - d->types->setEnabled( TRUE ); - } else { - files->setMultiSelection( FALSE ); - d->moreFiles->setMultiSelection( FALSE ); - d->types->setEnabled( TRUE ); - } - rereadDir(); - QUrlInfo f( d->url, "." ); - trySetSelection( f.isDir(), d->url, FALSE ); - } - - QString okt; - bool changeFilters = FALSE; - if ( mode() == AnyFile ) { - okt = tr("Save"); - d->fileL->setText( tr("File &name:") ); - if ( d->types->count() == 1 ) { - d->types->setCurrentItem( 0 ); - if ( d->types->currentText() == "Directories" ) { - changeFilters = TRUE; - } - } - } - else if ( mode() == Directory || mode() == DirectoryOnly ) { - okt = tr("OK"); - d->fileL->setText( tr("Directory:") ); - d->types->clear(); - d->types->insertItem( tr("Directories") ); - } - else { - okt = tr("Open"); - d->fileL->setText( tr("File &name:") ); - if ( d->types->count() == 1 ) { - d->types->setCurrentItem( 0 ); - if ( d->types->currentText() == "Directories" ) { - changeFilters = TRUE; - } - } - } - - if ( changeFilters ) { - d->types->clear(); - d->types->insertItem( tr("All Files (*)") ); - } - - okB->setText( okt ); -} - -QFileDialogP::Mode QFileDialogP::mode() const -{ - return d->mode; -} - -/*! \reimp -*/ - -void QFileDialogP::done( int i ) -{ - if ( i == QDialog::Accepted && (d->mode == ExistingFile || d->mode == ExistingFiles) ) { - QStringList selection = selectedFiles(); - for ( uint f = 0; f < selection.count(); f++ ) { - QString file = selection[f]; - if ( file.isNull() ) - continue; - if ( d->url.isLocalFile() && !QFile::exists( file ) ) { - QMessageBox::information( this, tr("Error"), tr("%1\nFile not found.\nCheck path and filename.").arg( file ) ); - return; - } - } - } - QDialog::done( i ); -} - -/*! - \property QFileDialogP::viewMode - - \brief the file dialog's view mode - - If you set the view mode to be \e Detail (the default), then you - will see the file's details, such as the size of the file and the - date the file was last modified in addition to the file's name. - - If you set the view mode to be \e List, then you will just - see a list of the files and folders. - - See \l QFileDialogP::ViewMode -*/ - - -QFileDialogP::ViewMode QFileDialogP::viewMode() const -{ - if ( detailViewMode ) - return Detail; - else - return List; -} - -void QFileDialogP::setViewMode( ViewMode m ) -{ - if ( m == Detail ) { - detailViewMode = TRUE; - d->stack->raiseWidget( files ); - d->detailView->setOn( TRUE ); - d->mcView->setOn( FALSE ); - } else if ( m == List ) { - detailViewMode = FALSE; - d->stack->raiseWidget( d->moreFiles ); - d->detailView->setOn( FALSE ); - d->mcView->setOn( TRUE ); - } -} - - -/*! - \property QFileDialogP::previewMode - - \brief the preview mode for the file dialog - - If you set the mode to be a mode other than \e NoPreview, you must - use setInfoPreview() or setContentsPreview() to set the dialog's - preview widget to your preview widget and enable the preview - widget(s) with setInfoPreviewEnabled() or - setContentsPreviewEnabled(). - - \sa infoPreview, contentsPreview, viewMode -*/ - -void QFileDialogP::setPreviewMode( PreviewMode m ) -{ - if ( m == NoPreview ) { - d->previewInfo->setOn( FALSE ); - d->previewContents->setOn( FALSE ); - } else if ( m == Info && d->infoPreview ) { - d->previewInfo->setOn( TRUE ); - d->previewContents->setOn( FALSE ); - changeMode( d->modeButtons->id( d->previewInfo ) ); - } else if ( m == Contents && d->contentsPreview ) { - d->previewInfo->setOn( FALSE ); - d->previewContents->setOn( TRUE ); - changeMode( d->modeButtons->id( d->previewContents ) ); - } -} -QFileDialogP::PreviewMode QFileDialogP::previewMode() const -{ - if ( d->infoPreview && d->previewInfo->isVisible() ) - return Info; - else if ( d->contentsPreview && d->previewContents->isVisible() ) - return Contents; - - return NoPreview; -} - - -/*! - Adds the specified widgets to the bottom of the file dialog. The - label \a l is placed underneath the "file name" and the "file types" - labels. The widget \a w is placed underneath the file types combobox. - The button \a b is placed underneath the Cancel pushbutton. - - \code - MyFileDialog::MyFileDialog( QWidget* parent, const char* name ) : - QFileDialogP( parent, name ) - { - QLabel* label = new QLabel( "Added widgets", this ); - QLineEdit* lineedit = new QLineEdit( this ); - QToolButton* toolbutton = new QToolButton( this ); - - addWidgets( label, lineedit, toolbutton ); - } - \endcode - - If you don't want to have one of the widgets added, pass 0 in that - widget's position. - - Every time you call this function, a new row of widgets will be added - to the bottom of the file dialog. - - \sa addToolButton(), addLeftWidget(), addRightWidget() -*/ - -void QFileDialogP::addWidgets( QLabel * l, QWidget * w, QPushButton * b ) -{ - if ( !l && !w && !b ) - return; - - d->geometryDirty = TRUE; - - QHBoxLayout *lay = new QHBoxLayout(); - d->extraWidgetsLayouts.append( lay ); - d->topLevelLayout->addLayout( lay ); - - if ( !l ) - l = new QLabel( this, "qt_intern_lbl" ); - d->extraLabels.append( l ); - lay->addWidget( l ); - - if ( !w ) - w = new QWidget( this, "qt_intern_widget" ); - d->extraWidgets.append( w ); - lay->addWidget( w ); - lay->addSpacing( 15 ); - - if ( b ) { - d->extraButtons.append( b ); - lay->addWidget( b ); - } else { - QWidget *wid = new QWidget( this, "qt_extrabuttons_widget" ); - d->extraButtons.append( wid ); - lay->addWidget( wid ); - } - - updateGeometries(); -} - -/*! - Adds the tool button \a b to the row of tool buttons at the top of the - file dialog. The button is appended to the right of - this row. If \a separator is TRUE, a small space is inserted between the - last button of the row and the new button \a b. - - \sa addWidgets(), addLeftWidget(), addRightWidget() -*/ - -void QFileDialogP::addToolButton( QButton *b, bool separator ) -{ - if ( !b || !d->buttonLayout ) - return; - - d->geometryDirty = TRUE; - - d->toolButtons.append( b ); - if ( separator ) - d->buttonLayout->addSpacing( 8 ); - d->buttonLayout->addWidget( b ); - - updateGeometries(); -} - -/*! - Adds the widget \a w to the left-hand side of the file dialog. - - \sa addRightWidget(), addWidgets(), addToolButton() -*/ - -void QFileDialogP::addLeftWidget( QWidget *w ) -{ - if ( !w ) - return; - d->geometryDirty = TRUE; - - d->leftLayout->addWidget( w ); - d->leftLayout->addSpacing( 5 ); - - updateGeometries(); -} - -/*! - Adds the widget \a w to the right-hand side of the file dialog. - - \sa addLeftWidget(), addWidgets(), addToolButton() -*/ - -void QFileDialogP::addRightWidget( QWidget *w ) -{ - if ( !w ) - return; - d->geometryDirty = TRUE; - - d->rightLayout->addSpacing( 5 ); - d->rightLayout->addWidget( w ); - - updateGeometries(); -} - -/*! \reimp */ - -void QFileDialogP::keyPressEvent( QKeyEvent * ke ) -{ - if ( !d->ignoreNextKeyPress && - ke && ( ke->key() == Key_Enter || - ke->key() == Key_Return ) ) { - ke->ignore(); - if ( d->paths->hasFocus() ) { - ke->accept(); - if ( d->url == QUrl(d->paths->currentText()) ) - nameEdit->setFocus(); - } else if ( d->types->hasFocus() ) { - ke->accept(); - // ### is there a suitable condition for this? only valid - // wildcards? - nameEdit->setFocus(); - } else if ( nameEdit->hasFocus() ) { - if ( d->currentFileName.isNull() ) { - // maybe change directory - QUrlInfo i( d->url, nameEdit->text() ); - if ( i.isDir() ) { - nameEdit->setText( QString::fromLatin1("") ); - setDir( QUrlOperator( d->url, QFileDialogPrivate::encodeFileName(i.name()) ) ); - } - ke->accept(); - } else if ( mode() == ExistingFiles ) { - QUrlInfo i( d->url, nameEdit->text() ); - if ( i.isFile() ) { - QListViewItem * i = files->firstChild(); - while ( i && nameEdit->text() != i->text( 0 ) ) - i = i->nextSibling(); - if ( i ) - files->setSelected( i, TRUE ); - else - ke->accept(); // strangely, means to ignore that event - } - } - } else if ( files->hasFocus() || d->moreFiles->hasFocus() ) { - ke->accept(); - } - } else if ( ke->key() == Key_Escape ) { - ke->ignore(); - } - - d->ignoreNextKeyPress = FALSE; - - if ( !ke->isAccepted() ) { - QDialog::keyPressEvent( ke ); - } -} - - -/*! \class QFileIconProviderP qfiledialog.h - - \brief The QFileIconProviderP class provides icons for QFileDialogP to - use. - - \ingroup misc - - By default QFileIconProviderP is not used, but any application or - library can subclass it, reimplement pixmap() to return a suitable - icon, and make all QFileDialogP objects use it by calling the static - function QFileDialogP::setIconProvider(). - - It is advisable to make all the icons that QFileIconProviderP returns be - the same size or at least the same width. This makes the list view - look much better. - - \sa QFileDialogP -*/ - - -/*! Constructs an empty file icon provider called \a name, with the - parent \a parent. -*/ - -QFileIconProviderP::QFileIconProviderP( QObject * parent, const char* name ) - : QObject( parent, name ) -{ - // nothing necessary -} - - -/*! - Returns a pointer to a pixmap that should be used to - signify the file with the information \a info. - - If pixmap() returns 0, QFileDialogP draws the default pixmap. - - The default implementation returns particular icons for files, directories, - link-files and link-directories. It returns a blank "icon" for other types. - - If you return a pixmap here, it should measure 16x16 pixels. -*/ - -const QPixmap * QFileIconProviderP::pixmap( const QFileInfo & info ) -{ - if ( info.isSymLink() ) { - if ( info.isFile() ) - return symLinkFileIcon; - else - return symLinkDirIcon; - } else if ( info.isDir() ) { - return closedFolderIcon; - } else if ( info.isFile() ) { - return fileIcon; - } else { - return fifteenTransparentPixels; - } -} - -/*! - Sets the QFileIconProviderP used by the file dialog to \a provider. - - The default is that there is no QFileIconProviderP and QFileDialogP - just draws a folder icon next to each directory and nothing next - to files. - - \sa QFileIconProviderP, iconProvider() -*/ - -void QFileDialogP::setIconProvider( QFileIconProviderP * provider ) -{ - fileIconProvider = provider; -} - - -/*! - Returns a pointer to the icon provider currently set on the file dialog. - By default there is no icon provider, and this function returns 0. - - \sa setIconProvider(), QFileIconProviderP -*/ - -QFileIconProviderP * QFileDialogP::iconProvider() -{ - return fileIconProvider; -} - - -#if defined(Q_WS_WIN) - -static QString getWindowsRegString( HKEY key, const char *subKey ) -{ - QString s; - char buf[512]; - DWORD bsz = sizeof(buf); -#ifdef Q_OS_TEMP - int r = RegQueryValueEx( key, (LPCTSTR)qt_winTchar(subKey, TRUE), 0, 0, (LPBYTE)buf, &bsz ); -#else - int r = RegQueryValueExA( key, subKey, 0, 0, (LPBYTE)buf, &bsz ); -#endif - if ( r == ERROR_SUCCESS ) { - s = buf; - } else if ( r == ERROR_MORE_DATA ) { - char *ptr = new char[bsz+1]; -#ifdef Q_OS_TEMP - r = RegQueryValueEx( key, (LPCTSTR)qt_winTchar(subKey, TRUE), 0, 0, (LPBYTE)ptr, &bsz ); -#else - r = RegQueryValueExA( key, subKey, 0, 0, (LPBYTE)ptr, &bsz ); -#endif - if ( r == ERROR_SUCCESS ) - s = ptr; - delete [] ptr; - } - return s; -} - -static void initPixmap( QPixmap &pm ) -{ - pm.fill( Qt::white ); -} - -QWindowsIconProvider::QWindowsIconProvider( QObject *parent, const char *name ) - : QFileIconProviderP( parent, name ) -{ - pixw = GetSystemMetrics( SM_CXSMICON ); - pixh = GetSystemMetrics( SM_CYSMICON ); - - HKEY k; - HICON si; - int r; - QString s; - UINT res; - -#ifdef Q_OS_TEMP - // ---------- get default folder pixmap - r = RegOpenKeyEx( HKEY_CLASSES_ROOT, - L"folder\\DefaultIcon", - 0, KEY_READ, &k ); -#else - // ---------- get default folder pixmap - r = RegOpenKeyExA( HKEY_CLASSES_ROOT, - "folder\\DefaultIcon", - 0, KEY_READ, &k ); -#endif - if ( r == ERROR_SUCCESS ) { - s = getWindowsRegString( k, 0 ); - RegCloseKey( k ); - - QStringList lst = QStringList::split( ",", s ); - -#ifdef Q_OS_TEMP - res = (UINT)ExtractIconEx( (LPCTSTR)qt_winTchar( lst[ 0 ].simplifyWhiteSpace(), TRUE ), - lst[ 1 ].simplifyWhiteSpace().toInt(), - 0, &si, 1 ); -#else - res = ExtractIconExA( lst[ 0 ].simplifyWhiteSpace().latin1(), - lst[ 1 ].simplifyWhiteSpace().toInt(), - 0, &si, 1 ); -#endif - - if ( res ) { - defaultFolder.resize( pixw, pixh ); - initPixmap( defaultFolder ); - QPainter p( &defaultFolder ); - DrawIconEx( p.handle(), 0, 0, si, pixw, pixh, 0, NULL, DI_NORMAL ); - p.end(); - defaultFolder.setMask( defaultFolder.createHeuristicMask() ); - *closedFolderIcon = defaultFolder; - DestroyIcon( si ); - } else { - defaultFolder = *closedFolderIcon; - } - } else { - RegCloseKey( k ); - } - -#ifdef Q_OS_TEMP - //------------------------------- get default file pixmap - res = (UINT)ExtractIconEx( L"shell32.dll", - 0, 0, &si, 1 ); -#else - //------------------------------- get default file pixmap - res = ExtractIconExA( "shell32.dll", - 0, 0, &si, 1 ); -#endif - - if ( res ) { - defaultFile.resize( pixw, pixh ); - initPixmap( defaultFile ); - QPainter p( &defaultFile ); - DrawIconEx( p.handle(), 0, 0, si, pixw, pixh, 0, NULL, DI_NORMAL ); - p.end(); - defaultFile.setMask( defaultFile.createHeuristicMask() ); - *fileIcon = defaultFile; - DestroyIcon( si ); - } else { - defaultFile = *fileIcon; - } - -#ifdef Q_OS_TEMP - //------------------------------- get default exe pixmap - res = (UINT)ExtractIconEx( L"shell32.dll", - 2, 0, &si, 1 ); -#else - //------------------------------- get default exe pixmap - res = ExtractIconExA( "shell32.dll", - 2, 0, &si, 1 ); -#endif - - if ( res ) { - defaultExe.resize( pixw, pixh ); - initPixmap( defaultExe ); - QPainter p( &defaultExe ); - DrawIconEx( p.handle(), 0, 0, si, pixw, pixh, 0, NULL, DI_NORMAL ); - p.end(); - defaultExe.setMask( defaultExe.createHeuristicMask() ); - DestroyIcon( si ); - } else { - defaultExe = *fileIcon; - } -} - -QWindowsIconProvider::~QWindowsIconProvider() -{ - if ( this == fileIconProvider ) - fileIconProvider = 0; -} - -const QPixmap * QWindowsIconProvider::pixmap( const QFileInfo &fi ) -{ - QString ext = fi.extension().upper(); - QString key = ext; - ext.prepend( "." ); - QMap< QString, QPixmap >::Iterator it; - - if ( fi.isDir() ) { - return &defaultFolder; - } else if ( ext.lower() != ".exe" ) { - it = cache.find( key ); - if ( it != cache.end() ) - return &( *it ); - - HKEY k, k2; -#ifdef Q_OS_TEMP - int r = RegOpenKeyEx( HKEY_CLASSES_ROOT, - (LPCTSTR)qt_winTchar(ext, TRUE), - 0, KEY_READ, &k ); -#else - int r = RegOpenKeyExA( HKEY_CLASSES_ROOT, - ext.latin1(), - 0, KEY_READ, &k ); -#endif - QString s; - if ( r == ERROR_SUCCESS ) { - s = getWindowsRegString( k, 0 ); - } else { - cache[ key ] = defaultFile; - RegCloseKey( k ); - return &defaultFile; - } - RegCloseKey( k ); - -#ifdef Q_OS_TEMP - r = RegOpenKeyEx( HKEY_CLASSES_ROOT, - (LPCTSTR)qt_winTchar( s + "\\DefaultIcon", TRUE ), - 0, KEY_READ, &k2 ); -#else - r = RegOpenKeyExA( HKEY_CLASSES_ROOT, - QString( s + "\\DefaultIcon" ).latin1() , - 0, KEY_READ, &k2 ); -#endif - if ( r == ERROR_SUCCESS ) { - s = getWindowsRegString( k2, 0 ); - } else { - cache[ key ] = defaultFile; - RegCloseKey( k2 ); - return &defaultFile; - } - RegCloseKey( k2 ); - - QStringList lst = QStringList::split( ",", s ); - - HICON si; - UINT res; - QString filepath = lst[ 0 ].stripWhiteSpace(); - if ( filepath.find("%1") != -1 ) { - filepath = filepath.arg( fi.filePath() ); - if ( ext.lower() == ".dll" ) { - pix = defaultFile; - return &pix; - } - } - -#ifdef Q_OS_TEMP - res = (UINT)ExtractIconEx( (LPCTSTR)qt_winTchar(filepath, TRUE), - lst[ 1 ].stripWhiteSpace().toInt(), - NULL, &si, 1 ); -#else - res = ExtractIconExA( filepath.latin1(), - lst[ 1 ].stripWhiteSpace().toInt(), - NULL, &si, 1 ); -#endif - - if ( res ) { - pix.resize( pixw, pixh ); - initPixmap( pix ); - QPainter p( &pix ); - DrawIconEx( p.handle(), 0, 0, si, pixw, pixh, 0, NULL, DI_NORMAL ); - p.end(); - pix.setMask( pix.createHeuristicMask() ); - DestroyIcon( si ); - } else { - pix = defaultFile; - } - - cache[ key ] = pix; - return &pix; - } else { - HICON si; - UINT res; -#ifdef Q_OS_TEMP - res = (UINT)ExtractIconEx( (LPCTSTR)qt_winTchar(fi.absFilePath(), TRUE), - -1, - 0, 0, 1 ); -#else - res = ExtractIconExA( fi.absFilePath().latin1(), - -1, - 0, 0, 1 ); -#endif - - if ( res == 0 ) { - return &defaultExe; - } else { -#ifdef Q_OS_TEMP - res = (UINT)ExtractIconEx( (LPCTSTR)qt_winTchar(fi.absFilePath(), TRUE), - res - 1, - 0, &si, 1 ); -#else - res = ExtractIconExA( fi.absFilePath().latin1(), - res - 1, - 0, &si, 1 ); -#endif - } - - if ( res ) { - pix.resize( pixw, pixh ); - initPixmap( pix ); - QPainter p( &pix ); - DrawIconEx( p.handle(), 0, 0, si, pixw, pixh, 0, NULL, DI_NORMAL ); - p.end(); - pix.setMask( pix.createHeuristicMask() ); - DestroyIcon( si ); - } else { - pix = defaultExe; - } - - return &pix; - } - - // can't happen! - return 0; -} -#endif - - - -/*! - \reimp -*/ -bool QFileDialogP::eventFilter( QObject * o, QEvent * e ) -{ - if ( e->type() == QEvent::KeyPress && ( (QKeyEvent*)e )->key() == Key_F5 ) { - rereadDir(); - ((QKeyEvent *)e)->accept(); - return TRUE; - } else if ( e->type() == QEvent::KeyPress && ( (QKeyEvent*)e )->key() == Key_F2 && - ( o == files || o == files->viewport() ) ) { - if ( files->isVisible() && files->currentItem() ) { - if ( mode() != QFileDialogP::ExistingFiles && - QUrlInfo( d->url, "." ).isWritable() && files->currentItem()->text( 0 ) != ".." ) { - files->renameItem = files->currentItem(); - files->startRename( TRUE ); - } - } - ((QKeyEvent *)e)->accept(); - return TRUE; - } else if ( e->type() == QEvent::KeyPress && ( (QKeyEvent*)e )->key() == Key_F2 && - ( o == d->moreFiles || o == d->moreFiles->viewport() ) ) { - if ( d->moreFiles->isVisible() && d->moreFiles->currentItem() != -1 ) { - if ( mode() != QFileDialogP::ExistingFiles && - QUrlInfo( d->url, "." ).isWritable() && - d->moreFiles->item( d->moreFiles->currentItem() )->text() != ".." ) { - d->moreFiles->renameItem = d->moreFiles->item( d->moreFiles->currentItem() ); - d->moreFiles->startRename( TRUE ); - } - } - ((QKeyEvent *)e)->accept(); - return TRUE; - } else if ( e->type() == QEvent::KeyPress && d->moreFiles->renaming ) { - d->moreFiles->lined->setFocus(); - QApplication::sendEvent( d->moreFiles->lined, e ); - ((QKeyEvent *)e)->accept(); - return TRUE; - } else if ( e->type() == QEvent::KeyPress && files->renaming ) { - files->lined->setFocus(); - QApplication::sendEvent( files->lined, e ); - ((QKeyEvent *)e)->accept(); - return TRUE; - } else if ( e->type() == QEvent::KeyPress && - ((QKeyEvent *)e)->key() == Key_Backspace && - ( o == files || - o == d->moreFiles || - o == files->viewport() || - o == d->moreFiles->viewport() ) ) { - cdUpClicked(); - ((QKeyEvent *)e)->accept(); - return TRUE; - } else if ( e->type() == QEvent::KeyPress && - ((QKeyEvent *)e)->key() == Key_Delete && - ( o == files || - o == files->viewport() ) ) { - if ( files->currentItem() ) - deleteFile( files->currentItem()->text( 0 ) ); - ((QKeyEvent *)e)->accept(); - return TRUE; - } else if ( e->type() == QEvent::KeyPress && - ((QKeyEvent *)e)->key() == Key_Delete && - ( o == d->moreFiles || - o == d->moreFiles->viewport() ) ) { - int c = d->moreFiles->currentItem(); - if ( c >= 0 ) - deleteFile( d->moreFiles->item( c )->text() ); - ((QKeyEvent *)e)->accept(); - return TRUE; - } else if ( o == files && e->type() == QEvent::FocusOut && - files->currentItem() && mode() != ExistingFiles ) { - } else if ( o == files && e->type() == QEvent::KeyPress ) { - QTimer::singleShot( 0, this, SLOT(fixupNameEdit()) ); - } else if ( o == nameEdit && e->type() == QEvent::KeyPress ) { - if ( ( nameEdit->cursorPosition() == (int)nameEdit->text().length() || nameEdit->hasSelectedText() ) && - isprint(((QKeyEvent *)e)->ascii()) ) { -#if defined(_WS_WIN_) - QString nt( nameEdit->text().lower() ); -#else - QString nt( nameEdit->text() ); -#endif - nt.truncate( nameEdit->cursorPosition() ); - nt += (char)(((QKeyEvent *)e)->ascii()); - QListViewItem * i = files->firstChild(); -#if defined(_WS_WIN_) - while( i && i->text( 0 ).left(nt.length()).lower() != nt ) -#else - while( i && i->text( 0 ).left(nt.length()) != nt ) -#endif - i = i->nextSibling(); - if ( i ) { - nt = i->text( 0 ); - int cp = nameEdit->cursorPosition()+1; - nameEdit->validateAndSet( nt, cp, cp, nt.length() ); - return TRUE; - } - } - } else if ( o == nameEdit && e->type() == QEvent::FocusIn ) { - fileNameEditDone(); - } else if ( d->moreFiles->renaming && o != d->moreFiles->lined && e->type() == QEvent::FocusIn ) { - d->moreFiles->lined->setFocus(); - return TRUE; - } else if ( files->renaming && o != files->lined && e->type() == QEvent::FocusIn ) { - files->lined->setFocus(); - return TRUE; - } else if ( ( o == d->moreFiles || o == d->moreFiles->viewport() ) && - e->type() == QEvent::FocusIn ) { - if ( o == d->moreFiles->viewport() && !d->moreFiles->viewport()->hasFocus() || - o == d->moreFiles && !d->moreFiles->hasFocus() ) - ((QWidget*)o)->setFocus(); - return FALSE; - } - - return QDialog::eventFilter( o, e ); -} - -/*! - Sets the filters used in the file dialog to \a filters. Each group - of filters must be separated by \c{;;} (\e two semi-colons). - - \code - QString types("*.png;;*.xpm;;*.jpg"); - QFileDialogP fd = new QFileDialogP( this ); - fd->setFilters( types ); - fd->show(); - \endcode - -*/ - -void QFileDialogP::setFilters( const QString &filters ) -{ - QStringList lst = makeFiltersList( filters ); - setFilters( lst ); -} - -/*! - \overload - - \a types must be a null-terminated list of strings. - -*/ - -void QFileDialogP::setFilters( const char ** types ) -{ - if ( !types || !*types ) - return; - - d->types->clear(); - while( types && *types ) { - d->types->insertItem( QString::fromLatin1(*types) ); - types++; - } - d->types->setCurrentItem( 0 ); - setFilter( d->types->text( 0 ) ); -} - - -/*! \overload void QFileDialogP::setFilters( const QStringList & ) -*/ - -void QFileDialogP::setFilters( const QStringList & types ) -{ - if ( types.count() < 1 ) - return; - - d->types->clear(); - for ( QStringList::ConstIterator it = types.begin(); it != types.end(); ++it ) - d->types->insertItem( *it ); - d->types->setCurrentItem( 0 ); - setFilter( d->types->text( 0 ) ); -} - -/*! - Adds the filter \a filter to the list of filters and makes it the - current filter. - - \code - QFileDialogP* fd = new QFileDialogP( this ); - fd->addFilter( "Images (*.png *.jpg *.xpm)" ); - fd->show(); - \endcode - - In the above example, a file dialog is created, and the file filter "Images - (*.png *.jpg *.xpm)" is added and is set as the current filter. The original - filter, "All Files (*)", is still available. - - \sa setFilter(), setFilters() -*/ - -void QFileDialogP::addFilter( const QString &filter ) -{ - if ( filter.isEmpty() ) - return; - QString f = filter; - QRegExp r( QString::fromLatin1(qt_file_dialog_filter_reg_exp) ); - int index = r.search( f ); - if ( index >= 0 ) - f = r.cap( 2 ); - for ( int i = 0; i < d->types->count(); ++i ) { - QString f2( d->types->text( i ) ); - int index = r.search( f2 ); - if ( index >= 0 ) - f2 = r.cap( 1 ); - if ( f2 == f ) { - d->types->setCurrentItem( i ); - setFilter( f2 ); - return; - } - } - - d->types->insertItem( filter ); - d->types->setCurrentItem( d->types->count() - 1 ); - setFilter( d->types->text( d->types->count() - 1 ) ); -} - -/*! - Since modeButtons is a top-level widget, it may be destroyed by the - kernel at application exit. Notice if this happens to - avoid double deletion. -*/ - -void QFileDialogP::modeButtonsDestroyed() -{ - if ( d ) - d->modeButtons = 0; -} - - -/*! - This is a convenience static function that will return one or more - existing files selected by the user. - - \code - QStringList files = QFileDialogP::getOpenFileNames( - "Images (*.png *.xpm *.jpg)", - "/home", - this, - "open files dialog" - "Select one or more files to open" ); - \endcode - - This function creates a modal file dialog called \a name, with - parent \a parent. If \a parent is not 0, the dialog will be shown - centered over the parent. - - The file dialog's working directory will be set to \a dir. If \a - dir includes a file name, the file will be selected. The filter - is set to \a filter so that only those files which match the filter - are shown. The filter selected is set to \a selectedFilter. The parameters - \a dir, \a selectedFilter and \a filter may be QString::null. - - The dialog's caption is set to \a caption. If \a caption is not - specified then a default caption will be used. - - Under Windows and Mac OS X, this static function will use the native - file dialog and not a QFileDialogP, unless the style of the application - is set to something other than the native style. - - Under Unix/X11, the normal behavior of the file dialog is to resolve - and follow symlinks. For example, if /usr/tmp is a symlink to /var/tmp, - the file dialog will change to /var/tmp after entering /usr/tmp. - If \a resolveSymlinks is FALSE, the file dialog will treat - symlinks as regular directories. - - Note that if you want to iterate over the list of files, you should - iterate over a copy, e.g. - \code - QStringList list = files; - QStringList::Iterator it = list.begin(); - while( it != list.end() ) { - myProcessing( *it ); - ++it; - } - \endcode - - \sa getOpenFileName(), getSaveFileName(), getExistingDirectory() -*/ - -QStringList QFileDialogP::getOpenFileNames( const QString & filter, - const QString& dir, - QWidget *parent, - const char* name, - const QString& caption, - QString *selectedFilter, - bool resolveSymlinks ) -{ - bool save_qt_resolve_symlinks = qt_resolve_symlinks; - qt_resolve_symlinks = resolveSymlinks; - - QStringList filters; - if ( !filter.isEmpty() ) - filters = makeFiltersList( filter ); - - makeVariables(); - - if ( workingDirectory->isNull() ) - *workingDirectory = QDir::currentDirPath(); - - if ( !dir.isEmpty() ) { - // #### works only correct for local files - QUrlOperator u( dir ); - if ( u.isLocalFile() && QFileInfo( u ).isDir() ) { - *workingDirectory = dir; - } else { - *workingDirectory = u.toString(); - } - } - -#if defined(Q_WS_WIN) - if ( qApp->style().styleHint( QStyle::SH_GUIStyle ) == WindowsStyle ) - return winGetOpenFileNames( filter, workingDirectory, parent, name, caption, selectedFilter ); -#elif defined(Q_WS_MAC) - if( ( qApp->style().inherits(QMAC_DEFAULT_STYLE) ) ) - return macGetOpenFileNames(filter, workingDirectory, parent, name, caption ); -#endif - - QFileDialogP *dlg = new QFileDialogP( *workingDirectory, QString::null, parent, name ? name : "qt_filedlg_gofns", TRUE ); - - Q_CHECK_PTR( dlg ); -#ifndef QT_NO_WIDGET_TOPEXTRA - if ( parent && parent->icon() && !parent->icon()->isNull() ) - dlg->setIcon( *parent->icon() ); - else if ( qApp->mainWidget() && qApp->mainWidget()->icon() && !qApp->mainWidget()->icon()->isNull() ) - dlg->setIcon( *qApp->mainWidget()->icon() ); -#endif - - dlg->setFilters( filters ); - if ( selectedFilter ) - dlg->setFilter( *selectedFilter ); -#ifndef QT_NO_WIDGET_TOPEXTRA - if ( !caption.isNull() ) - dlg->setCaption( caption ); - else - dlg->setCaption( QFileDialogP::tr("Open") ); -#endif - dlg->setMode( QFileDialogP::ExistingFiles ); - QString result; - QStringList lst; - if ( dlg->exec() == QDialog::Accepted ) { - lst = dlg->selectedFiles(); - *workingDirectory = dlg->d->url; - if ( selectedFilter ) - *selectedFilter = dlg->selectedFilter(); - } - delete dlg; - - qt_resolve_symlinks = save_qt_resolve_symlinks; - - return lst; -} - -/*! Updates the line edit to match the speed-key usage in QListView. */ - -void QFileDialogP::fixupNameEdit() -{ - if ( files->currentItem() && d->mode != ExistingFiles ) { - if ( ( (QFileDialogPrivate::File*)files->currentItem() )->info.isFile() ) - nameEdit->setText( files->currentItem()->text( 0 ) ); - } -} - -/*! - Returns the URL of the current working directory in the file dialog. - - \sa setUrl() -*/ - -QUrl QFileDialogP::url() const -{ - return d->url; -} - -static bool isRoot( const QUrl &u ) -{ -#if defined(Q_OS_MAC9) - QString p = QDir::convertSeparators(u.path()); - if(p.contains(':') == 1) - return TRUE; -#elif defined(Q_OS_UNIX) - if ( u.path() == "/" ) - return TRUE; -#elif defined(Q_OS_WIN32) - QString p = u.path(); - if ( p.length() == 3 && - p.right( 2 ) == ":/" ) - return TRUE; - if ( p[ 0 ] == '/' && p[ 1 ] == '/' ) { - int slashes = p.contains( '/' ); - if ( slashes <= 3 ) - return TRUE; - if ( slashes == 4 && p[ (int)p.length() - 1 ] == '/' ) - return TRUE; - } -#else -#if defined(Q_CC_GNU) -#warning "case not covered.." -#endif -#endif - - if ( !u.isLocalFile() && u.path() == "/" ) - return TRUE; - - return FALSE; -} - -void QFileDialogP::urlStart( QNetworkOperation *op ) -{ - if ( !op ) - return; - - if ( op->operation() == QNetworkProtocol::OpListChildren ) { - if ( isRoot( d->url ) ) - d->cdToParent->setEnabled( FALSE ); - else - d->cdToParent->setEnabled( TRUE ); - d->mimeTypeTimer->stop(); - d->sortedList.clear(); - d->pendingItems.clear(); - d->moreFiles->clearSelection(); - files->clearSelection(); - d->moreFiles->clear(); - files->clear(); - files->setSorting( -1 ); - - QString s = d->url.toString( FALSE, FALSE ); - bool found = FALSE; - for ( int i = 0; i < d->paths->count(); ++i ) { -#if defined(Q_WS_WIN) - if ( d->paths->text( i ).lower() == s.lower() ) { -#else - if ( d->paths->text( i ) == s ) { -#endif - found = TRUE; - d->paths->setCurrentItem( i ); - break; - } - } - if ( !found ) { - d->paths->insertItem( *openFolderIcon, s, -1 ); - d->paths->setCurrentItem( d->paths->count() - 1 ); - } - d->last = 0; - d->hadDotDot = FALSE; - - if ( d->goBack && d->history.last() != d->url.toString() ) { - d->history.append( d->url.toString() ); - if ( d->history.count() > 1 ) - d->goBack->setEnabled( TRUE ); - } - } -} - -void QFileDialogP::urlFinished( QNetworkOperation *op ) -{ - if ( !op ) - return; - - if ( op->operation() == QNetworkProtocol::OpListChildren ) { - if ( QApplication::overrideCursor() ) - QApplication::restoreOverrideCursor(); - } - if ( op->state() == QNetworkProtocol::StFailed ) { - if ( d->paths->hasFocus() ) - d->ignoreNextKeyPress = TRUE; - - if ( d->progressDia ) { - d->ignoreStop = TRUE; - d->progressDia->close(); - delete d->progressDia; - d->progressDia = 0; - } - - QMessageBox::critical( this, tr( "Error" ), op->protocolDetail() ); - - int ecode = op->errorCode(); - if ( ecode == QNetworkProtocol::ErrListChildren || ecode == QNetworkProtocol::ErrParse || - ecode == QNetworkProtocol::ErrUnknownProtocol || ecode == QNetworkProtocol::ErrLoginIncorrect || - ecode == QNetworkProtocol::ErrValid || ecode == QNetworkProtocol::ErrHostNotFound || - ecode == QNetworkProtocol::ErrFileNotExisting ) { - if (d->url != d->oldUrl) { - QString nf = d->url.nameFilter(); - d->url = d->oldUrl; - d->url.setNameFilter( nf ); - rereadDir(); - } - } else { - // another error happened, no need to go back to last dir - } - } else if ( op->operation() == QNetworkProtocol::OpListChildren && - op == d->currListChildren ) { - if ( !d->hadDotDot && !isRoot( d->url ) ) { - bool ok = TRUE; -#if defined(Q_WS_WIN) - if ( d->url.path().left( 2 ) == "//" ) - ok = FALSE; -#endif - if ( ok ) { - QUrlInfo ui( d->url, ".." ); - ui.setName( ".." ); - ui.setDir( TRUE ); - ui.setFile( FALSE ); - ui.setSymLink( FALSE ); - ui.setSize( 0 ); - QValueList lst; - lst << ui; - insertEntry( lst, 0 ); - } - } - resortDir(); - } else if ( op->operation() == QNetworkProtocol::OpGet ) { - } else if ( op->operation() == QNetworkProtocol::OpPut ) { - rereadDir(); - if ( d->progressDia ) { - d->ignoreStop = TRUE; - d->progressDia->close(); - } - delete d->progressDia; - d->progressDia = 0; - } -} - -void QFileDialogP::dataTransferProgress( int bytesDone, int bytesTotal, QNetworkOperation *op ) -{ - if ( !op ) - return; - - QString label; - QUrl u( op->arg( 0 ) ); - if ( u.isLocalFile() ) { - label = u.path(); - } else { - label = QString( "%1 (on %2)" ); - label = label.arg( u.path() ).arg( u.host() ); - } - - if ( !d->progressDia ) { - if ( bytesDone < bytesTotal) { - d->ignoreStop = FALSE; - d->progressDia = new QFDProgressDialog( this, label, bytesTotal ); - connect( d->progressDia, SIGNAL( cancelled() ), - this, SLOT( stopCopy() ) ); - d->progressDia->show(); - } else - return; - } - - if ( d->progressDia ) { - if ( op->operation() == QNetworkProtocol::OpGet ) { - if ( d->progressDia ) { - d->progressDia->setReadProgress( bytesDone ); - } - } else if ( op->operation() == QNetworkProtocol::OpPut ) { - if ( d->progressDia ) { - d->progressDia->setWriteLabel( label ); - d->progressDia->setWriteProgress( bytesDone ); - } - } else { - return; - } - } -} - -void QFileDialogP::insertEntry( const QValueList &lst, QNetworkOperation *op ) -{ - if ( op && op->operation() == QNetworkProtocol::OpListChildren && - op != d->currListChildren ) - return; - QValueList::ConstIterator it = lst.begin(); - for ( ; it != lst.end(); ++it ) { - const QUrlInfo &inf = *it; - if ( d->mode == DirectoryOnly && !inf.isDir() ) - continue; - if ( inf.name() == ".." ) { - d->hadDotDot = TRUE; - if ( isRoot( d->url ) ) - continue; -#if defined(Q_WS_WIN) - if ( d->url.path().left( 2 ) == "//" ) - continue; -#endif - } else if ( inf.name() == "." ) - continue; - -#if defined(Q_WS_WIN) - if ( !bShowHiddenFiles ) { - if ( d->url.isLocalFile() ) { - QString file = d->url.path() + inf.name(); -#if defined(UNICODE) - if ( qWinVersion() & Qt::WV_NT_based ) { - if ( GetFileAttributesW( (TCHAR*)qt_winTchar( file, TRUE ) ) & FILE_ATTRIBUTE_HIDDEN ) - continue; - } - else -#endif - { - if ( GetFileAttributesA( file.local8Bit() ) & FILE_ATTRIBUTE_HIDDEN ) - continue; - } - } else { - if ( inf.name() != ".." && inf.name()[0] == QChar('.') ) - continue; - } - } -#else - if ( !bShowHiddenFiles && inf.name() != ".." ) { - if ( inf.name()[ 0 ] == QChar( '.' ) ) - continue; - } - -#endif - if ( !d->url.isLocalFile() ) { - QFileDialogPrivate::File * i = 0; - QFileDialogPrivate::MCItem *i2 = 0; - i = new QFileDialogPrivate::File( d, &inf, files ); - i2 = new QFileDialogPrivate::MCItem( d->moreFiles, i ); - - if ( d->mode == ExistingFiles && inf.isDir() || - ( isDirectoryMode( d->mode ) && inf.isFile() ) ) { - i->setSelectable( FALSE ); - i2->setSelectable( FALSE ); - } - - i->i = i2; - } - - d->sortedList.append( new QUrlInfo( inf ) ); - } -} - -void QFileDialogP::removeEntry( QNetworkOperation *op ) -{ - if ( !op ) - return; - - QUrlInfo *i = 0; - QListViewItemIterator it( files ); - bool ok1 = FALSE, ok2 = FALSE; - for ( i = d->sortedList.first(); it.current(); ++it, i = d->sortedList.next() ) { - if ( ( (QFileDialogPrivate::File*)it.current() )->info.name() == op->arg( 0 ) ) { - d->pendingItems.removeRef( (QFileDialogPrivate::File*)it.current() ); - delete ( (QFileDialogPrivate::File*)it.current() )->i; - delete it.current(); - ok1 = TRUE; - } - if ( i && i->name() == op->arg( 0 ) ) { - d->sortedList.removeRef( i ); - i = d->sortedList.prev(); - ok2 = TRUE; - } - if ( ok1 && ok2 ) - break; - } -} - -void QFileDialogP::itemChanged( QNetworkOperation *op ) -{ - if ( !op ) - return; - - QUrlInfo *i = 0; - QListViewItemIterator it1( files ); - bool ok1 = FALSE, ok2 = FALSE; - // first check whether the new file replaces an existing file. - for ( i = d->sortedList.first(); it1.current(); ++it1, i = d->sortedList.next() ) { - if ( ( (QFileDialogPrivate::File*)it1.current() )->info.name() == op->arg( 1 ) ) { - delete ( (QFileDialogPrivate::File*)it1.current() )->i; - delete it1.current(); - ok1 = TRUE; - } - if ( i && i->name() == op->arg( 1 ) ) { - d->sortedList.removeRef( i ); - i = d->sortedList.prev(); - ok2 = TRUE; - } - if ( ok1 && ok2 ) - break; - } - - i = 0; - QListViewItemIterator it( files ); - ok1 = FALSE; - ok2 = FALSE; - for ( i = d->sortedList.first(); it.current(); ++it, i = d->sortedList.next() ) { - if ( ( (QFileDialogPrivate::File*)it.current() )->info.name() == op->arg( 0 ) ) { - ( (QFileDialogPrivate::File*)it.current() )->info.setName( op->arg( 1 ) ); - ok1 = TRUE; - } - if ( i && i->name() == op->arg( 0 ) ) { - i->setName( op->arg( 1 ) ); - ok2 = TRUE; - } - if ( ok1 && ok2 ) - break; - } - - resortDir(); -} - -/*! - \property QFileDialogP::infoPreview - - \brief whether the file dialog can provide preview information about - the currently selected file - - The default is FALSE. -*/ -bool QFileDialogP::isInfoPreviewEnabled() const -{ - return d->infoPreview; -} - -void QFileDialogP::setInfoPreviewEnabled( bool info ) -{ - if ( info == d->infoPreview ) - return; - d->geometryDirty = TRUE; - d->infoPreview = info; - updateGeometries(); -} - - -/*! - \property QFileDialogP::contentsPreview - - \brief whether the file dialog can provide a contents preview of the - currently selected file - - The default is FALSE. - - \sa setContentsPreview() setInfoPreviewEnabled() -*/ -// ### improve the above documentation: how is the preview done, how can I add -// support for customized preview, etc. - -bool QFileDialogP::isContentsPreviewEnabled() const -{ - return d->contentsPreview; -} - -void QFileDialogP::setContentsPreviewEnabled( bool contents ) -{ - if ( contents == d->contentsPreview ) - return; - d->geometryDirty = TRUE; - d->contentsPreview = contents; - updateGeometries(); -} - - -/*! - Sets the widget to be used for displaying information about the file - to the widget \a w and a preview of that information to the - QFilePreviewP \a preview. - - Normally you would create a preview widget that derives from both QWidget and - QFilePreviewP, so you should pass the same widget twice. - - \code - class Preview : public QLabel, public QFilePreviewP - { - public: - Preview( QWidget *parent=0 ) : QLabel( parent ) {} - - void previewUrl( const QUrl &u ) - { - QString path = u.path(); - QPixmap pix( path ); - if ( pix.isNull() ) - setText( "This is not a pixmap" ); - else - setText( "This is a pixmap" ); - } - }; - - //... - - int main( int argc, char** argv ) - { - Preview* p = new Preview; - - QFileDialogP* fd = new QFileDialogP( this ); - fd->setInfoPreviewEnabled( TRUE ); - fd->setInfoPreview( p, p ); - fd->setPreviewMode( QFileDialogP::Info ); - fd->show(); - } - - \endcode - - \sa setContentsPreview(), setInfoPreviewEnabled(), setPreviewMode() - -*/ - -void QFileDialogP::setInfoPreview( QWidget *w, QFilePreviewP *preview ) -{ - if ( !w || !preview ) - return; - - if ( d->infoPreviewWidget ) { - d->preview->removeWidget( d->infoPreviewWidget ); - delete d->infoPreviewWidget; - } - if ( d->infoPreviewer ) - delete d->infoPreviewer; - d->infoPreviewWidget = w; - d->infoPreviewer = preview; - w->reparent( d->preview, 0, QPoint( 0, 0 ) ); -} - -/*! - Sets the widget to be used for displaying the contents of the file - to the widget \a w and a preview of those contents to the - QFilePreviewP \a preview. - - Normally you would create a preview widget that derives from both QWidget and - QFilePreviewP, so you should pass the same widget twice. - - \code - class Preview : public QLabel, public QFilePreviewP - { - public: - Preview( QWidget *parent=0 ) : QLabel( parent ) {} - - void previewUrl( const QUrl &u ) - { - QString path = u.path(); - QPixmap pix( path ); - if ( pix.isNull() ) - setText( "This is not a pixmap" ); - else - setPixmap( pix ); - } - }; - - //... - - int main( int argc, char** argv ) - { - Preview* p = new Preview; - - QFileDialogP* fd = new QFileDialogP( this ); - fd->setContentsPreviewEnabled( TRUE ); - fd->setContentsPreview( p, p ); - fd->setPreviewMode( QFileDialogP::Contents ); - fd->show(); - } - \endcode - - \sa setContentsPreviewEnabled(), setInfoPreview(), setPreviewMode() -*/ - -void QFileDialogP::setContentsPreview( QWidget *w, QFilePreviewP *preview ) -{ - if ( !w || !preview ) - return; - - if ( d->contentsPreviewWidget ) { - d->preview->removeWidget( d->contentsPreviewWidget ); - delete d->contentsPreviewWidget; - } - if ( d->contentsPreviewer ) - delete d->contentsPreviewer; - d->contentsPreviewWidget = w; - d->contentsPreviewer = preview; - w->reparent( d->preview, 0, QPoint( 0, 0 ) ); -} - -/*! - Re-sorts the displayed directory. - - \sa rereadDir() -*/ - -void QFileDialogP::resortDir() -{ - d->mimeTypeTimer->stop(); - d->pendingItems.clear(); - - QFileDialogPrivate::File *item = 0; - QFileDialogPrivate::MCItem *item2 = 0; - - d->sortedList.sort(); - - if ( files->childCount() > 0 || d->moreFiles->count() > 0 ) { - d->moreFiles->clear(); - files->clear(); - d->last = 0; - files->setSorting( -1 ); - } - - QUrlInfo *i = sortAscending ? d->sortedList.first() : d->sortedList.last(); - for ( ; i; i = sortAscending ? d->sortedList.next() : d->sortedList.prev() ) { - item = new QFileDialogPrivate::File( d, i, files ); - item2 = new QFileDialogPrivate::MCItem( d->moreFiles, item, item2 ); - item->i = item2; - d->pendingItems.append( item ); - if ( d->mode == ExistingFiles && item->info.isDir() || - ( isDirectoryMode( d->mode ) && item->info.isFile() ) ) { - item->setSelectable( FALSE ); - item2->setSelectable( FALSE ); - } - } - - // ##### As the QFileIconProviderP only support QFileInfo and no - // QUrlInfo it can be only used for local files at the moment. In - // 3.0 we have to change the API of QFileIconProviderP to work on - // QUrlInfo so that also remote filesystems can be show mime-type - // specific icons. - if ( d->url.isLocalFile() ) - d->mimeTypeTimer->start( 0 ); -} - -/*! - Stops the current copy operation. -*/ - -void QFileDialogP::stopCopy() -{ - if ( d->ignoreStop ) - return; - - d->url.blockSignals( TRUE ); - d->url.stop(); - if ( d->progressDia ) { - d->ignoreStop = TRUE; - QTimer::singleShot( 100, this, SLOT( removeProgressDia() ) ); - } - d->url.blockSignals( FALSE ); -} - -/*! - \internal -*/ - -void QFileDialogP::removeProgressDia() -{ - if ( d->progressDia ) - delete d->progressDia; - d->progressDia = 0; -} - -/*! - \internal -*/ - -void QFileDialogP::doMimeTypeLookup() -{ - if ( !iconProvider() ) { - d->pendingItems.clear(); - d->mimeTypeTimer->stop(); - return; - } - - d->mimeTypeTimer->stop(); - if ( d->pendingItems.count() == 0 ) { - return; - } - - QRect r; - QFileDialogPrivate::File *item = d->pendingItems.first(); - if ( item ) { - QFileInfo fi; - if ( d->url.isLocalFile() ) { - fi.setFile( QUrl( d->url.path(), QFileDialogPrivate::encodeFileName( item->info.name() ) ).path( FALSE ) ); - } else - fi.setFile( item->info.name() ); // ##### - const QPixmap *p = iconProvider()->pixmap( fi ); - if ( p && p != item->pixmap( 0 ) && - ( !item->pixmap( 0 ) || p->serialNumber() != item->pixmap( 0 )->serialNumber() ) && - p != fifteenTransparentPixels ) { - item->hasMimePixmap = TRUE; - - // evil hack to avoid much too much repaints! - qApp->processEvents(); - files->setUpdatesEnabled( FALSE ); - files->viewport()->setUpdatesEnabled( FALSE ); - if ( item != d->pendingItems.first() ) - return; - item->setPixmap( 0, *p ); - qApp->processEvents(); - files->setUpdatesEnabled( TRUE ); - files->viewport()->setUpdatesEnabled( TRUE ); - - if ( files->isVisible() ) { - QRect ir( files->itemRect( item ) ); - if ( ir != QRect( 0, 0, -1, -1 ) ) { - r = r.unite( ir ); - } - } else { - QRect ir( d->moreFiles->itemRect( item->i ) ); - if ( ir != QRect( 0, 0, -1, -1 ) ) { - r = r.unite( ir ); - } - } - } - if ( d->pendingItems.count() ) - d->pendingItems.removeFirst(); - } - - if ( d->moreFiles->isVisible() ) { - d->moreFiles->viewport()->repaint( r, FALSE ); - } else { - files->viewport()->repaint( r, FALSE ); - } - - if ( d->pendingItems.count() ) - d->mimeTypeTimer->start( 0 ); - else if ( d->moreFiles->isVisible() ) - d->moreFiles->triggerUpdate( TRUE ); -} - -/*! - If \a b is TRUE then all the files in the current directory are selected; - otherwise, they are deselected. -*/ - -void QFileDialogP::selectAll( bool b ) -{ - if ( d->mode != ExistingFiles ) - return; - d->moreFiles->selectAll( b ); - files->selectAll( b ); -} - -void QFileDialogP::goBack() -{ - if ( !d->goBack || !d->goBack->isEnabled() ) - return; - d->history.remove( d->history.last() ); - if ( d->history.count() < 2 ) - d->goBack->setEnabled( FALSE ); - setUrl( d->history.last() ); -} - -// a class with wonderfully inflexible flexibility. why doesn't it -// just subclass QWidget in the first place? 'you have to derive your -// preview widget from QWidget and from this class' indeed. - -/*! - \class QFilePreviewP qfiledialog.h - \ingroup misc - \brief The QFilePreviewP class provides file previewing in QFileDialogP. - - This class is an abstract base class which is used to implement - widgets that can display a preview of a file in a QFileDialogP. - - You must derive the preview widget from both QWidget and from this - class. Then you must reimplement this class's previewUrl() function, - which is called by the file dialog if the preview of a file - (specified as a URL) should be shown. - - See also QFileDialog::setPreviewMode(), QFileDialogP::setContentsPreview(), - QFileDialogP::setInfoPreview(), QFileDialogP::setInfoPreviewEnabled(), - QFileDialogP::setContentsPreviewEnabled(). - - For an example of a preview widget see qt/examples/qdir/qdir.cpp. -*/ - -/*! - Constructs the QFilePreviewP. -*/ - -QFilePreviewP::QFilePreviewP() -{ -} - -/*! - \fn void QFilePreviewP::previewUrl( const QUrl &url ) - - This function is called by QFileDialogP if a preview - for the \a url should be shown. Reimplement this - function to provide file previewing. -*/ - -#endif diff --git a/src/PatchQt/qfiledialogP.h b/src/PatchQt/qfiledialogP.h deleted file mode 100644 index f7355a193..000000000 --- a/src/PatchQt/qfiledialogP.h +++ /dev/null @@ -1,528 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Module : PatchQt -// File : qfiledialogP.h -// Description : the patch for Qt's QFileDialog class (qfiledialog.h) -///////////////////////////////////////////////////////////////////////////// - -/**************************************************************************** -** $Id$ -** -** Definition of QFileDialog class -** -** Created : 950428 -** -** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. -** -** This file is part of the dialogs module of the Qt GUI Toolkit. -** -** This file may be distributed under the terms of the Q Public License -** as defined by Trolltech AS of Norway and appearing in the file -** LICENSE.QPL included in the packaging of this file. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition -** licenses may use this file in accordance with the Qt Commercial License -** Agreement provided with the Software. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for -** information about Qt Commercial License Agreements. -** See http://www.trolltech.com/qpl/ for QPL licensing information. -** See http://www.trolltech.com/gpl/ for GPL licensing information. -** -** Contact info@trolltech.com if any conditions of this licensing are -** not clear to you. -** -**********************************************************************/ - -#ifndef QFILEDIALOGP_H -#define QFILEDIALOGP_H - -class QPushButton; -class QButton; -class QLabel; -class QWidget; -class QFileDialog; -class QTimer; -class QNetworkOperation; -class QLineEdit; -class QListViewItem; -class QListBoxItem; -class QProgressBar; -class QFileDialogPrivate; -class QFileDialogQFileListView; - -#ifndef QT_H -#include "qdir.h" -#include "qdialog.h" -#include "qurloperator.h" -#include "qurlinfo.h" -#include "qlistbox.h" -#include "qlistview.h" -#include "qlineedit.h" -#endif // QT_H - -#ifndef QT_NO_FILEDIALOG - -class Q_EXPORT QFileIconProviderP : public QObject -{ - Q_OBJECT -public: - QFileIconProviderP( QObject * parent = 0, const char* name = 0 ); - virtual const QPixmap * pixmap( const QFileInfo & ); - -private: // Disabled copy constructor and operator= -#if defined(Q_DISABLE_COPY) - QFileIconProviderP( const QFileIconProviderP & ); - QFileIconProviderP& operator=( const QFileIconProviderP & ); -#endif -}; - -class Q_EXPORT QFilePreviewP -{ -public: - QFilePreviewP(); - virtual void previewUrl( const QUrl &url ) = 0; - -}; - -class Q_EXPORT QFileDialogP : public QDialog -{ - Q_OBJECT - Q_ENUMS( Mode ViewMode PreviewMode ) - // ##### Why are this read-only properties ? - Q_PROPERTY( QString selectedFile READ selectedFile ) - Q_PROPERTY( QString selectedFilter READ selectedFilter ) - Q_PROPERTY( QStringList selectedFiles READ selectedFiles ) - // #### Should not we be able to set the path ? - Q_PROPERTY( QString dirPath READ dirPath ) - Q_PROPERTY( bool showHiddenFiles READ showHiddenFiles WRITE setShowHiddenFiles ) - Q_PROPERTY( Mode mode READ mode WRITE setMode ) - Q_PROPERTY( ViewMode viewMode READ viewMode WRITE setViewMode ) - Q_PROPERTY( PreviewMode previewMode READ previewMode WRITE setPreviewMode ) - Q_PROPERTY( bool infoPreview READ isInfoPreviewEnabled WRITE setInfoPreviewEnabled ) - Q_PROPERTY( bool contentsPreview READ isContentsPreviewEnabled WRITE setContentsPreviewEnabled ) - -public: - QFileDialogP( const QString& dirName, const QString& filter = QString::null, - QWidget* parent=0, const char* name=0, bool modal = FALSE ); - QFileDialogP( QWidget* parent=0, const char* name=0, bool modal = FALSE ); - ~QFileDialogP(); - - // recommended static functions - - static QString getOpenFileName( const QString &initially = QString::null, - const QString &filter = QString::null, - QWidget *parent = 0, const char* name = 0, - const QString &caption = QString::null, - QString *selectedFilter = 0, - bool resolveSymlinks = TRUE); - static QString getSaveFileName( const QString &initially = QString::null, - const QString &filter = QString::null, - QWidget *parent = 0, const char* name = 0, - const QString &caption = QString::null, - QString *selectedFilter = 0, - bool resolveSymlinks = TRUE); - static QString getExistingDirectory( const QString &dir = QString::null, - QWidget *parent = 0, - const char* name = 0, - const QString &caption = QString::null, - bool dirOnly = TRUE, - bool resolveSymlinks = TRUE); - static QStringList getOpenFileNames( const QString &filter= QString::null, - const QString &dir = QString::null, - QWidget *parent = 0, - const char* name = 0, - const QString &caption = QString::null, - QString *selectedFilter = 0, - bool resolveSymlinks = TRUE); - - // other static functions - - static void setIconProvider( QFileIconProviderP * ); - static QFileIconProviderP* iconProvider(); - - // non-static function for special needs - - QString selectedFile() const; - QString selectedFilter() const; - virtual void setSelectedFilter( const QString& ); - virtual void setSelectedFilter( int ); - - void setSelection( const QString &); - - void selectAll( bool b ); - - QStringList selectedFiles() const; - - QString dirPath() const; - - void setDir( const QDir & ); - const QDir *dir() const; - - void setShowHiddenFiles( bool s ); - bool showHiddenFiles() const; - - void rereadDir(); - void resortDir(); - - enum Mode { AnyFile, ExistingFile, Directory, ExistingFiles, DirectoryOnly }; - void setMode( Mode ); - Mode mode() const; - - enum ViewMode { Detail, List }; - enum PreviewMode { NoPreview, Contents, Info }; - void setViewMode( ViewMode m ); - ViewMode viewMode() const; - void setPreviewMode( PreviewMode m ); - PreviewMode previewMode() const; - - bool eventFilter( QObject *, QEvent * ); - - bool isInfoPreviewEnabled() const; - bool isContentsPreviewEnabled() const; - void setInfoPreviewEnabled( bool ); - void setContentsPreviewEnabled( bool ); - - void setInfoPreview( QWidget *w, QFilePreviewP *preview ); - void setContentsPreview( QWidget *w, QFilePreviewP *preview ); - - QUrl url() const; - - void addFilter( const QString &filter ); - -public slots: - void done( int ); - void setDir( const QString& ); - void setUrl( const QUrlOperator &url ); - void setFilter( const QString& ); - void setFilters( const QString& ); - void setFilters( const char ** ); - void setFilters( const QStringList& ); - -protected: - void resizeEvent( QResizeEvent * ); - void keyPressEvent( QKeyEvent * ); - - void addWidgets( QLabel *, QWidget *, QPushButton * ); - void addToolButton( QButton *b, bool separator = FALSE ); - void addLeftWidget( QWidget *w ); - void addRightWidget( QWidget *w ); - -signals: - void fileHighlighted( const QString& ); - void fileSelected( const QString& ); - void filesSelected( const QStringList& ); - void dirEntered( const QString& ); - void filterSelected( const QString& ); - -private slots: - void detailViewSelectionChanged(); - void listBoxSelectionChanged(); - void changeMode( int ); - void fileNameEditReturnPressed(); - void stopCopy(); - void removeProgressDia(); - - void fileSelected( int ); - void fileHighlighted( int ); - void dirSelected( int ); - void pathSelected( int ); - - void updateFileNameEdit( QListViewItem *); - void selectDirectoryOrFile( QListViewItem * ); - void popupContextMenu( QListViewItem *, const QPoint &, int ); - void popupContextMenu( QListBoxItem *, const QPoint & ); - void updateFileNameEdit( QListBoxItem *); - void selectDirectoryOrFile( QListBoxItem * ); - void fileNameEditDone(); - - void okClicked(); - void filterClicked(); // not used - void cancelClicked(); - - void cdUpClicked(); - void newFolderClicked(); - - void fixupNameEdit(); - - void doMimeTypeLookup(); - - void updateGeometries(); - void modeButtonsDestroyed(); - void urlStart( QNetworkOperation *op ); - void urlFinished( QNetworkOperation *op ); - void dataTransferProgress( int bytesDone, int bytesTotal, QNetworkOperation * ); - void insertEntry( const QValueList &fi, QNetworkOperation *op ); - void removeEntry( QNetworkOperation * ); - void createdDirectory( const QUrlInfo &info, QNetworkOperation * ); - void itemChanged( QNetworkOperation * ); - void goBack(); - -private: - enum PopupAction { - PA_Open = 0, - PA_Delete, - PA_Rename, - PA_SortName, - PA_SortSize, - PA_SortType, - PA_SortDate, - PA_SortUnsorted, - PA_Cancel, - PA_Reload, - PA_Hidden - }; - - void init(); - bool trySetSelection( bool isDir, const QUrlOperator &, bool ); - void deleteFile( const QString &filename ); - void popupContextMenu( const QString &filename, bool withSort, - PopupAction &action, const QPoint &p ); - - QDir reserved; // was cwd - QString fileName; - - friend class QFileDialogQFileListView; - friend class QFileListBox; - - QFileDialogPrivate *d; - QFileDialogQFileListView *files; - - QLineEdit *nameEdit; // also filter - QPushButton *okB; - QPushButton *cancelB; - -#if defined(Q_WS_WIN) - static QString winGetOpenFileName( const QString &initialSelection, - const QString &filter, - QString* workingDirectory, - QWidget *parent = 0, - const char* name = 0, - const QString& caption = QString::null, - QString* selectedFilter = 0 ); - static QString winGetSaveFileName( const QString &initialSelection, - const QString &filter, - QString* workingDirectory, - QWidget *parent = 0, - const char* name = 0, - const QString& caption = QString::null, - QString* selectedFilter = 0 ); - static QStringList winGetOpenFileNames( const QString &filter, - QString* workingDirectory, - QWidget *parent = 0, - const char* name = 0, - const QString& caption = QString::null, - QString* selectedFilter = 0 ); - static QString winGetExistingDirectory( const QString &initialDirectory, - QWidget* parent = 0, - const char* name = 0, - const QString& caption = QString::null); - static QString resolveLinkFile( const QString& linkfile ); -#endif -#if defined(Q_WS_MACX) || defined(Q_WS_MAC9) - static QString macGetSaveFileName( const QString &, const QString &, - QString *, QWidget *, const char*, - const QString& ); - static QStringList macGetOpenFileNames( const QString &, QString*, - QWidget *, const char *, - const QString&, bool = TRUE, - bool = FALSE ); -#endif - - -private: // Disabled copy constructor and operator= -#if defined(Q_DISABLE_COPY) - QFileDialogP( const QFileDialogP & ); - QFileDialogP &operator=( const QFileDialogP & ); -#endif -}; - -/****************************************************************** - * - * Definitions of view classes - * - ******************************************************************/ - -class QRenameEdit : public QLineEdit -{ - Q_OBJECT - -public: - QRenameEdit( QWidget *parent ) - : QLineEdit( parent, "qt_rename_edit" ) - {} - -protected: - void keyPressEvent( QKeyEvent *e ); - void focusOutEvent( QFocusEvent *e ); - -signals: - void escapePressed(); - -}; - -class QFileListBox : public QListBox -{ - friend class QFileDialogP; - - Q_OBJECT - -private: - QFileListBox( QWidget *parent, QFileDialogP *d ); - - void clear(); - void show(); - void startRename( bool check = TRUE ); - void viewportMousePressEvent( QMouseEvent *e ); - void viewportMouseReleaseEvent( QMouseEvent *e ); - void viewportMouseDoubleClickEvent( QMouseEvent *e ); - void viewportMouseMoveEvent( QMouseEvent *e ); -#ifndef QT_NO_DRAGANDDROP - void viewportDragEnterEvent( QDragEnterEvent *e ); - void viewportDragMoveEvent( QDragMoveEvent *e ); - void viewportDragLeaveEvent( QDragLeaveEvent *e ); - void viewportDropEvent( QDropEvent *e ); - bool acceptDrop( const QPoint &pnt, QWidget *source ); - void setCurrentDropItem( const QPoint &pnt ); -#endif - void keyPressEvent( QKeyEvent *e ); - -private slots: - void rename(); - void cancelRename(); - void doubleClickTimeout(); - void changeDirDuringDrag(); - void dragObjDestroyed(); - void contentsMoved( int, int ); - -private: - QRenameEdit *lined; - QFileDialogP *filedialog; - bool renaming; - QTimer* renameTimer; - QListBoxItem *renameItem, *dragItem; - QPoint pressPos, oldDragPos; - bool mousePressed; - int urls; - QString startDragDir; - QListBoxItem *currDropItem; - QTimer *changeDirTimer; - bool firstMousePressEvent; - QUrlOperator startDragUrl; - -}; - - -class QFileDialogQFileListView : public QListView -{ - Q_OBJECT - -public: - QFileDialogQFileListView( QWidget *parent, QFileDialogP *d ); - - void clear(); - void startRename( bool check = TRUE ); - void setSorting( int column, bool increasing = TRUE ); - - QRenameEdit *lined; - bool renaming; - QListViewItem *renameItem; - -private: - void viewportMousePressEvent( QMouseEvent *e ); - void viewportMouseDoubleClickEvent( QMouseEvent *e ); - void keyPressEvent( QKeyEvent *e ); - void viewportMouseReleaseEvent( QMouseEvent *e ); - void viewportMouseMoveEvent( QMouseEvent *e ); -#ifndef QT_NO_DRAGANDDROP - void viewportDragEnterEvent( QDragEnterEvent *e ); - void viewportDragMoveEvent( QDragMoveEvent *e ); - void viewportDragLeaveEvent( QDragLeaveEvent *e ); - void viewportDropEvent( QDropEvent *e ); - bool acceptDrop( const QPoint &pnt, QWidget *source ); - void setCurrentDropItem( const QPoint &pnt ); -#endif - -private slots: - void rename(); - void cancelRename(); - void changeSortColumn2( int column ); - void doubleClickTimeout(); - void changeDirDuringDrag(); - void dragObjDestroyed(); - void contentsMoved( int, int ); - -private: - QFileDialogP *filedialog; - QTimer* renameTimer; - QPoint pressPos, oldDragPos; - bool mousePressed; - int urls; - QString startDragDir; - QListViewItem *currDropItem, *dragItem; - QTimer *changeDirTimer; - bool firstMousePressEvent; - bool ascending; - int sortcolumn; - QUrlOperator startDragUrl; - -}; - -/**************************************************************************** - * - * Classes for copy progress dialog - * - ****************************************************************************/ - -class QFDProgressAnimation : public QWidget -{ - Q_OBJECT - -public: - QFDProgressAnimation( QWidget *parent ); - void start(); - -private slots: - void next(); - -protected: - void paintEvent( QPaintEvent *e ); - -private: - int step; - QTimer *timer; - -}; - -class QFDProgressDialog : public QDialog -{ - Q_OBJECT - -public: - QFDProgressDialog( QWidget *parent, const QString &fn, int steps ); - - void setReadProgress( int p ); - void setWriteProgress( int p ); - void setWriteLabel( const QString &s ); - -signals: - void cancelled(); - -private: - QProgressBar *readBar; - QProgressBar *writeBar; - QLabel *writeLabel; - QFDProgressAnimation *animation; - -}; - -#endif - -#endif // QFILEDIALOG_H diff --git a/src/PatchQt/qsplitterP.cxx b/src/PatchQt/qsplitterP.cxx deleted file mode 100644 index 3983746b2..000000000 --- a/src/PatchQt/qsplitterP.cxx +++ /dev/null @@ -1,1403 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Module : PatchQt -// File : qsplitterP.cxx -// Description : the patch for Qt's QSplitter class (qsplitter.cpp) -///////////////////////////////////////////////////////////////////////////// - -/**************************************************************************** -** $Id$ -** -** Splitter widget -** -** Created: 980105 -** -** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. -** -** This file is part of the widgets module of the Qt GUI Toolkit. -** -** This file may be distributed under the terms of the Q Public License -** as defined by Trolltech AS of Norway and appearing in the file -** LICENSE.QPL included in the packaging of this file. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition -** licenses may use this file in accordance with the Qt Commercial License -** Agreement provided with the Software. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for -** information about Qt Commercial License Agreements. -** See http://www.trolltech.com/qpl/ for QPL licensing information. -** See http://www.trolltech.com/gpl/ for GPL licensing information. -** -** Contact info@trolltech.com if any conditions of this licensing are -** not clear to you. -** -**********************************************************************/ - -#include "qsplitterP.h" -#ifndef QT_NO_COMPLEXWIDGETS - -#include -#include -#include -#include -#include -#if QT_VERSION < 300 - #include - #include -#else - #include //qt3.x - #include //qt3.x - #include //qt3.x -#endif - -#include -#include //sendPostedEvents -using namespace std; - -#define SPLITTER_ICON_WIDTH 10 -#define SPLITTER_ICON_HEIGHT 12 - -static int mouseOffset; -static int opaqueOldPos = -1; //### there's only one mouse, but this is a bit risky - -static const char* splitter_left_xpm[] = { - "5 5 2 1 0 0", - " s none m none c none", - ". s iconColor1 m black c black", - " ..", - " ....", - ".....", - " ....", - " .." -}; - -static const char* splitter_right_xpm[] = { - "5 5 2 1 0 0", - " s iconColor1 m black c black", - ". s none m none c none", - " ...", - " .", - " ", - " .", - " ..." -}; - -static const char* splitter_up_xpm[] = { - "5 5 2 1 0 0", - " s none m none c none", - ". s iconColor1 m black c black", - " . ", - " ... ", - " ... ", - ".....", - "....." -}; - -static const char* splitter_down_xpm[] = { - "5 5 2 1 0 0", - " s iconColor1 m black c black", - ". s none m none c none", - " ", - " ", - ". .", - ". .", - ".. .." -}; - -QSplitterPHandle::QSplitterPHandle( Qt::Orientation o, - QSplitterP *parent, const char * name ) - : QWidget( parent, name ) -{ - s = parent; - - left = new QPushButton(this); - right = new QPushButton(this); - unleft = new QPushButton(this); - unright = new QPushButton(this); - - setOrientation(o); - - left->setAutoDefault(false); unleft->setAutoDefault(false); - right->setAutoDefault(false); unright->setAutoDefault(false); - left->setFlat(true); right->setFlat(true); unleft->setFlat(true); unright->setFlat(true); - left->setCursor( arrowCursor ); right->setCursor( arrowCursor ); - unleft->setCursor( arrowCursor ); unright->setCursor( arrowCursor ); - - connect(left, SIGNAL(clicked()), this, SLOT(onBeforeCompress())); - connect(right, SIGNAL(clicked()), this, SLOT(onAfterCompress())); - connect(unleft, SIGNAL(clicked()), this, SLOT(onBeforeUnCompress())); - connect(unright, SIGNAL(clicked()), this, SLOT(onAfterUnCompress())); -} - -void QSplitterPHandle::onBeforeCompress() { - oldpos = s->pick(pos()); - int pos = s->pick(s->widgetBefore(id())->pos()); - s->compress(s->widgetBefore(id())); - s->moveSplitter(pos, id()); - s->updateSplitterHandles(); -} - -void QSplitterPHandle::onBeforeUnCompress() { - s->unCompress(s->widgetBefore(id())); - s->moveSplitter(oldpos, id()); - s->updateSplitterHandles(); -} - -void QSplitterPHandle::onAfterCompress() { - oldpos = s->pick(pos()); - int pos = s->pick(s->widgetAfter(id())->pos()) + s->pick(s->widgetAfter(id())->size()) - s->pick(size()); - s->compress(s->widgetAfter(id())); - s->moveSplitter(pos, id()); - s->updateSplitterHandles(); -} - -void QSplitterPHandle::onAfterUnCompress() { - s->unCompress(s->widgetAfter(id())); - s->moveSplitter(oldpos, id()); - s->updateSplitterHandles(); -} - -// VSR 21/11/02 -> ================================ -void QSplitterPHandle::compressAfter() -{ - onAfterCompress(); -} - -void QSplitterPHandle::unCompressAfter() -{ - onAfterUnCompress(); -} - -void QSplitterPHandle::compressBefore() -{ - onBeforeCompress(); -} - -void QSplitterPHandle::unCompressBefore() -{ - onBeforeUnCompress(); -} -// VSR 21/11/02 <- ================================ - -QSizePolicy QSplitterPHandle::sizePolicy() const -{ - //### removeme 3.0 - return QWidget::sizePolicy(); -} - -QSize QSplitterPHandle::sizeHint() const -{ -#if QT_VERSION < 300 - int sw = style().splitterWidth(); - return QSize(sw,sw).expandedTo( QApplication::globalStrut() ); -#else - int sw = style().pixelMetric(QStyle::PM_SplitterWidth, this); - return (style().sizeFromContents(QStyle::CT_Splitter, s, QSize(sw, sw)). - expandedTo(QApplication::globalStrut())); -#endif -} - -void QSplitterPHandle::setOrientation( Qt::Orientation o ) -{ - orient = o; -#ifndef QT_NO_CURSOR - if ( o == QSplitterP::Horizontal ) - setCursor( splitHCursor ); - else - setCursor( splitVCursor ); -#endif - - QPixmap lp, rp; - if ( orient == QSplitterP::Horizontal ) - { - lp = QPixmap(splitter_left_xpm); - rp = QPixmap(splitter_right_xpm); - } - else - { - lp = QPixmap(splitter_up_xpm); - rp = QPixmap(splitter_down_xpm); - } - left->setPixmap(lp); - right->setPixmap(rp); - unleft->setPixmap(rp); - unright->setPixmap(lp); -} - -void QSplitterPHandle::mouseMoveEvent( QMouseEvent *e ) -{ - if ( !(e->state()&LeftButton) ) - return; - QCOORD pos = s->pick(parentWidget()->mapFromGlobal(e->globalPos())) - - mouseOffset; - if ( opaque() ) { - s->moveSplitter( pos, id() ); - } else { - int min = pos; int max = pos; - s->getRange( id(), &min, &max ); - s->setRubberband( QMAX( min, QMIN(max, pos ))); - } -} - -void QSplitterPHandle::mousePressEvent( QMouseEvent *e ) -{ - if ( e->button() == LeftButton ) - mouseOffset = s->pick(e->pos()); -} - -void QSplitterPHandle::mouseReleaseEvent( QMouseEvent *e ) -{ - if ( !opaque() && e->button() == LeftButton ) { - QCOORD pos = s->pick(parentWidget()->mapFromGlobal(e->globalPos())); - s->setRubberband( -1 ); - s->moveSplitter( pos, id() ); - } -} - -void QSplitterPHandle::paintEvent( QPaintEvent * ) -{ - updateButtonState(); - QPainter p( this ); - s->drawSplitter( &p, 0, 0, width(), height() ); -} - -void QSplitterPHandle::updateButtonState() { - if (!s->isCompressEnabled()) { - left->hide(); - right->hide(); - unleft->hide(); - unright->hide(); - } - else { - if ( orient == QSplitterP::Horizontal ) - { - left->setGeometry( QRect( QPoint( (width() - SPLITTER_ICON_WIDTH)/2, 0 ), - QSize ( SPLITTER_ICON_WIDTH, SPLITTER_ICON_HEIGHT ) ) ); - right->setGeometry( QRect( QPoint( (width() - SPLITTER_ICON_WIDTH)/2, SPLITTER_ICON_HEIGHT ), - QSize ( SPLITTER_ICON_WIDTH, SPLITTER_ICON_HEIGHT ) ) ); - unleft->setGeometry( left->geometry() ); - unright->setGeometry( right->geometry() ); - } - else - { - left->setGeometry( QRect( QPoint( 0, (height() - SPLITTER_ICON_WIDTH)/2 ), - QSize ( SPLITTER_ICON_HEIGHT, SPLITTER_ICON_WIDTH ) ) ); - right->setGeometry( QRect( QPoint( SPLITTER_ICON_HEIGHT, (height() - SPLITTER_ICON_WIDTH)/2), - QSize ( SPLITTER_ICON_HEIGHT, SPLITTER_ICON_WIDTH ) ) ); - unleft->setGeometry( left->geometry() ); - unright->setGeometry( right->geometry() ); - } - if ( s->isCompressed( s->widgetBefore( id() ) ) ) { - left->hide(); - unleft->show(); - right->setEnabled(false); - } - else { - unleft->hide(); - left->show(); - right->setEnabled(true); - } - if ( s->isCompressed( s->widgetAfter( id() ) ) ) { - right->hide(); - unright->show(); - left->setEnabled(false); - } - else { - unright->hide(); - right->show(); - left->setEnabled(true); - } - } -} - -class QSplitterPLayoutStruct -{ -public: - QSplitterP::ResizeMode mode; - QCOORD sizer; - bool isSplitter; - QWidget *wid; -}; - -class QSplitterPData -{ -public: - QSplitterPData() : opaque( FALSE ), firstShow( TRUE ) {} - - QList list; - bool opaque; - bool firstShow; -}; - - -// NOT REVISED -/*! - \class QSplitter qsplitter.h - \brief The QSplitter class implements a splitter widget. - - \ingroup organizers - - A splitter lets the user control the size of child widgets by - dragging the boundary between the children. Any number of widgets - may be controlled. - - To show a QListBox, a QListView and a QMultiLineEdit side by side: - - \code - QSplitter *split = new QSplitter( parent ); - QListBox *lb = new QListBox( split ); - QListView *lv = new QListView( split ); - QMultiLineEdit *ed = new QMultiLineEdit( split ); - \endcode - - In QSplitter the boundary can be either horizontal or vertical. The - default is horizontal (the children are side by side) and you - can use setOrientation( QSplitter::Vertical ) to set it to vertical. - - By default, all widgets can be as large or as small as the user - wishes, down to \link QWidget::minimumSizeHint() minimumSizeHint()\endlink. - You can naturally use setMinimumSize() and/or - setMaximumSize() on the children. Use setResizeMode() to specify that - a widget should keep its size when the splitter is resized. - - QSplitter normally resizes the children only at the end of a - resize operation, but if you call setOpaqueResize( TRUE ), the - widgets are resized as often as possible. - - The initial distribution of size between the widgets is determined - by the initial size of each widget. You can also use setSizes() to - set the sizes of all the widgets. The function sizes() returns the - sizes set by the user. - - If you hide() a child, its space will be distributed among the other - children. When you show() it again, it will be reinstated. - - - - \sa QTabBar -*/ - - - -QSize QSplitterP::minSize( const QWidget *w ) const -{ - if ( isCompressed(w) && (data->list.count() > 1 ) ) return QSize(0,0); - QSize min = w->minimumSize(); - QSize s; - if ( min.height() <= 0 || min.width() <= 0 ) - s = w->minimumSizeHint(); - if ( min.height() > 0 ) - s.setHeight( min.height() ); - if ( min.width() > 0 ) - s.setWidth( min.width() ); - return s.expandedTo(QSize(0,0)); -} - -QSize QSplitterP::maxSize( const QWidget* w ) const -{ - if ( isCompressed(w) && (data->list.count() > 1 ) ) return QSize(0,0); - else return w->maximumSize(); -} - -/*! - Constructs a horizontal splitter. -*/ - -QSplitterP::QSplitterP( QWidget *parent, const char *name ) - :QFrame(parent,name,WPaintUnclipped) -{ - orient = Horizontal; - init(); -} - - -/*! - Constructs splitter with orientation \a o. -*/ - -QSplitterP::QSplitterP( Orientation o, QWidget *parent, const char *name ) - :QFrame(parent,name,WPaintUnclipped) -{ - orient = o; - init(); -} - - -/*! - Destructs the splitter. -*/ - -QSplitterP::~QSplitterP() -{ - data->list.setAutoDelete( TRUE ); - delete data; -} - - -void QSplitterP::init() -{ - data = new QSplitterPData; - if ( orient == Horizontal ) - setSizePolicy( QSizePolicy(QSizePolicy::Fixed,QSizePolicy::Minimum) ); - else - setSizePolicy( QSizePolicy(QSizePolicy::Minimum,QSizePolicy::Fixed) ); - compressed_widgets.clear(); - compress_flag = false; -} - - -/*! - \fn void QSplitter::refresh() - - Updates the splitter state. You should not need to call this - function during normal use of the splitter. -*/ - - -/*! Sets the orientation to \a o. By default the orientation is - horizontal (the widgets are side by side). - - \sa orientation() -*/ - -void QSplitterP::setOrientation( Orientation o ) -{ - if ( orient == o ) - return; - orient = o; - - if ( orient == Horizontal ) - setSizePolicy( QSizePolicy( QSizePolicy::Fixed, QSizePolicy::Minimum ) ); - else - setSizePolicy( QSizePolicy( QSizePolicy::Minimum, QSizePolicy::Fixed ) ); - - QSplitterPLayoutStruct *s = data->list.first(); - while ( s ) { - if ( s->isSplitter ) - ((QSplitterPHandle*)s->wid)->setOrientation( o ); - s = data->list.next(); // ### next at end of loop, no iterator - } - recalc( isVisible() ); -} - - -/*! - \fn Orientation QSplitter::orientation() const - - Returns the orientation (\c Horizontal or \c Vertical) of the splitter. - \sa setOrientation() -*/ - -/*! - \reimp -*/ -void QSplitterP::resizeEvent( QResizeEvent * ) -{ - doResize(); -} - - -/*! - Inserts the widget \a w at the end, or at the beginning if \a first is TRUE - - It is the responsibility of the caller of this function to make sure - that \a w is not already in the splitter, and to call recalcId if - needed. (If \a first is TRUE, then recalcId is very probably - needed.) -*/ - -QSplitterPLayoutStruct *QSplitterP::addWidget( QWidget *w, bool first ) -{ - QSplitterPLayoutStruct *s; - QSplitterPHandle *newHandle = 0; - if ( data->list.count() > 0 ) { - s = new QSplitterPLayoutStruct; - s->mode = KeepSize; - newHandle = new QSplitterPHandle( orientation(), this ); - s->wid = newHandle; - newHandle->setId(data->list.count()); - s->isSplitter = TRUE; - s->sizer = pick( newHandle->sizeHint() ); - if ( first ) - data->list.insert( 0, s ); - else - data->list.append( s ); - } - s = new QSplitterPLayoutStruct; - s->mode = Stretch; - s->wid = w; - if ( !testWState( WState_Resized ) && w->sizeHint().isValid() ) - s->sizer = pick( w->sizeHint() ); - else - s->sizer = pick( w->size() ); - s->isSplitter = FALSE; - if ( first ) - data->list.insert( 0, s ); - else - data->list.append( s ); - if ( newHandle && isVisible() ) - newHandle->show(); //will trigger sending of post events - return s; -} - - -/*! - Tells the splitter that a child widget has been inserted/removed. -*/ - -void QSplitterP::childEvent( QChildEvent *c ) -{ - if ( c->type() == QEvent::ChildInserted ) { - if ( !c->child()->isWidgetType() ) - return; - - if ( ((QWidget*)c->child())->testWFlags( WType_TopLevel ) ) - return; - - QSplitterPLayoutStruct *s = data->list.first(); - while ( s ) { - if ( s->wid == c->child() ) - return; - s = data->list.next(); - } - addWidget( (QWidget*)c->child() ); - recalc( isVisible() ); - - } else if ( c->type() == QEvent::ChildRemoved ) { - QSplitterPLayoutStruct *p = 0; - if ( data->list.count() > 1 ) - p = data->list.at(1); //remove handle _after_ first widget. - QSplitterPLayoutStruct *s = data->list.first(); - while ( s ) { - if ( s->wid == c->child() ) { - data->list.removeRef( s ); - delete s; - if ( p && p->isSplitter ) { - data->list.removeRef( p ); - delete p->wid; //will call childEvent - delete p; - } - recalcId(); - doResize(); - return; - } - p = s; - s = data->list.next(); - } - } -} - - -/*! - Shows a rubber band at position \a p. If \a p is negative, the - rubber band is removed. -*/ - -void QSplitterP::setRubberband( int p ) -{ - QPainter paint( this ); - paint.setPen( gray ); - paint.setBrush( gray ); - paint.setRasterOp( XorROP ); - QRect r = contentsRect(); - const int rBord = 3; //Themable???? -#if QT_VERSION < 300 - const int sw = style().splitterWidth(); -#else - int sw = style().pixelMetric(QStyle::PM_SplitterWidth, this); //qt3.x -#endif - if ( orient == Horizontal ) { - if ( opaqueOldPos >= 0 ) - paint.drawRect( opaqueOldPos + sw/2 - rBord , r.y(), - 2*rBord, r.height() ); - if ( p >= 0 ) - paint.drawRect( p + sw/2 - rBord, r.y(), 2*rBord, r.height() ); - } else { - if ( opaqueOldPos >= 0 ) - paint.drawRect( r.x(), opaqueOldPos + sw/2 - rBord, - r.width(), 2*rBord ); - if ( p >= 0 ) - paint.drawRect( r.x(), p + sw/2 - rBord, r.width(), 2*rBord ); - } - opaqueOldPos = p; -} - - -/*! \reimp */ - -bool QSplitterP::event( QEvent *e ) -{ - if ( e->type() == QEvent::LayoutHint || ( e->type() == QEvent::Show && data->firstShow ) ) { - recalc( isVisible() ); - if ( e->type() == QEvent::Show ) - data->firstShow = FALSE; - } - return QWidget::event( e ); -} - - -/*! - Draws the splitter handle in the rectangle described by \a x, \a y, - \a w, \a h using painter \a p. - \sa QStyle::drawSplitter -*/ - -void QSplitterP::drawSplitter( QPainter *p, - QCOORD x, QCOORD y, QCOORD w, QCOORD h ) -{ -#if QT_VERSION < 300 - style().drawSplitter( p, x, y, w, h, colorGroup(), orient ); -#else - style().drawPrimitive(QStyle::PE_Splitter, p, QRect(x, y, w, h), colorGroup(), - (orientation() == Qt::Horizontal ? - QStyle::Style_Horizontal : 0)); -#endif -} - - -/*! - Returns the id of the splitter to the right of or below the widget \a w, - or 0 if there is no such splitter. - (ie. it is either not in this QSplitter, or it is at the end). -*/ - -int QSplitterP::idAfter( QWidget* w ) const -{ - QSplitterPLayoutStruct *s = data->list.first(); - bool seen_w = FALSE; - while ( s ) { - if ( s->isSplitter && seen_w ) - return data->list.at(); - if ( !s->isSplitter && s->wid == w ) - seen_w = TRUE; - s = data->list.next(); - } - return 0; -} - -// VSR 21/11/02 -> ================================ -QSplitterPHandle* QSplitterP::getHandleAfter(QWidget* w) -{ - QSplitterPLayoutStruct *s = data->list.first(); - bool seen_w = FALSE; - while ( s ) { - if ( s->isSplitter && seen_w ) - return (QSplitterPHandle*)s->wid; - if ( !s->isSplitter && s->wid == w ) - seen_w = TRUE; - s = data->list.next(); - } - return 0; -} - -QSplitterPHandle* QSplitterP::getHandleBefore(QWidget* w) -{ - QSplitterPLayoutStruct *s = data->list.first(); - QSplitterPHandle* h = 0; - while ( s ) { - if ( s->isSplitter ) - h = (QSplitterPHandle*)s; - if ( !s->isSplitter && s->wid == w ) - return h; - s = data->list.next(); - } - return 0; -} -// VSR 21/11/02 <- ================================ - -QWidget* QSplitterP::widgetBefore( int id ) const -{ - QSplitterPLayoutStruct *s = data->list.first(); - QWidget* w; - while ( s ) { - if ( !s->isSplitter ) { - w = s->wid; - if (idAfter(w) == id) return w; - } - s = data->list.next(); - } - return 0; -} - -QWidget* QSplitterP::widgetAfter( int id ) const -{ - QSplitterPLayoutStruct *s = data->list.first(); - bool seen_s = FALSE; - while ( s ) { - if ( !s->isSplitter && seen_s ) - return s->wid; - if ( s->isSplitter && data->list.at() == id ) - seen_s = TRUE; - s = data->list.next(); - } - return 0; -} - -void QSplitterP::unCompress(QWidget* w) { - compressed_widgets.remove(w); -} - -void QSplitterP::compress(QWidget* w) -{ - if (!isCompressed(w)) compressed_widgets.append(w); -} - -bool QSplitterP::isCompressed(const QWidget* w) const { - QWidget* t = (QWidget*)w; - if (compressed_widgets.containsRef(t)==0) return false; - else return true; -} - -/*! - Moves the left/top edge of the splitter handle with id \a id as - close as possible to \a p which is the distance from the left (or - top) edge of the widget. - - \sa idAfter() -*/ -void QSplitterP::moveSplitter( QCOORD p, int id ) -{ - p = adjustPos( p, id ); - - QSplitterPLayoutStruct *s = data->list.at(id); - int oldP = orient == Horizontal? s->wid->x() : s->wid->y(); - bool upLeft = p < oldP; - - moveAfter( p, id, upLeft ); - moveBefore( p-1, id-1, upLeft ); - - storeSizes(); -} - - -void QSplitterP::setG( QWidget *w, int p, int s ) -{ - if ( orient == Horizontal ) - w->setGeometry( p, contentsRect().y(), s, contentsRect().height() ); - else - w->setGeometry( contentsRect().x(), p, contentsRect().width(), s ); -} - - -/*! - Places the right/bottom edge of the widget at \a id at position \a pos. - - \sa idAfter() -*/ - -void QSplitterP::moveBefore( int pos, int id, bool upLeft ) -{ - QSplitterPLayoutStruct *s = data->list.at(id); - if ( !s ) - return; - QWidget *w = s->wid; - if ( w->isHidden() ) { - moveBefore( pos, id-1, upLeft ); - } else if ( s->isSplitter ) { - int dd = s->sizer; - if ( upLeft ) { - setG( w, pos-dd+1, dd ); - moveBefore( pos-dd, id-1, upLeft ); - } else { - moveBefore( pos-dd, id-1, upLeft ); - setG( w, pos-dd+1, dd ); - } - } else { - int left = pick( w->pos() ); - int dd = pos - left + 1; - dd = QMAX( pick(minSize(w)), QMIN(dd, pick(maxSize(w)))); - int newLeft = pos-dd+1; - setG( w, newLeft, dd ); - if ( left != newLeft ) - moveBefore( newLeft-1, id-1, upLeft ); - } -} - - -/*! - Places the left/top edge of the widget at \a id at position \a pos. - - \sa idAfter() -*/ - -void QSplitterP::moveAfter( int pos, int id, bool upLeft ) -{ - QSplitterPLayoutStruct *s = id < int(data->list.count()) ? - data->list.at(id) : 0; - if ( !s ) - return; - QWidget *w = s->wid; - if ( w->isHidden() ) { - moveAfter( pos, id+1, upLeft ); - } else if ( pick( w->pos() ) == pos ) { - //No need to do anything if it's already there. - return; - } else if ( s->isSplitter ) { - int dd = s->sizer; - if ( upLeft ) { - setG( w, pos, dd ); - moveAfter( pos+dd, id+1, upLeft ); - } else { - moveAfter( pos+dd, id+1, upLeft ); - setG( w, pos, dd ); - } - } else { - int right = pick( w->geometry().bottomRight() ); - int ddd = pick( QSize(contentsRect().width(), contentsRect().height() ) ) - pos; - int dd = QMIN(right - pos + 1, ddd); - dd = QMAX( pick(minSize(w)), QMIN(dd, pick(maxSize(w)))); - int newRight = pos+dd-1; - setG( w, pos, dd ); - moveAfter( newRight+1, id+1, upLeft ); - } -} - - -/*! - Returns the valid range of the splitter with id \a id in \a min and \a max. - - \sa idAfter() -*/ - -void QSplitterP::getRange( int id, int *min, int *max ) -{ - int minB = 0; //before - int maxB = 0; - int minA = 0; - int maxA = 0; //after - int n = data->list.count(); - if ( id < 0 || id >= n ) - return; - int i; - for ( i = 0; i < id; i++ ) { - QSplitterPLayoutStruct *s = data->list.at(i); - if ( s->isSplitter ) { - minB += s->sizer; - maxB += s->sizer; - } else { - minB += pick( minSize(s->wid) ); - maxB += pick( maxSize(s->wid) ); - } - } - for ( i = id; i < n; i++ ) { - QSplitterPLayoutStruct *s = data->list.at(i); - if ( s->isSplitter ) { - minA += s->sizer; - maxA += s->sizer; - } else { - minA += pick( minSize(s->wid) ); - maxA += pick( maxSize(s->wid) ); - } - } - QRect r = contentsRect(); - if ( min ) - *min = pick(r.topLeft()) + QMAX( minB, pick(r.size())-maxA ); - if ( max ) - *max = pick(r.topLeft()) + QMIN( maxB, pick(r.size())-minA ); - -} - - -/*! - Returns the legal position closest to \a p of the splitter with id \a id. - - \sa idAfter() -*/ - -int QSplitterP::adjustPos( int p, int id ) -{ - int min = 0; - int max = 0; - getRange( id, &min, &max ); - p = QMAX( min, QMIN( p, max ) ); - - return p; -} - - -void QSplitterP::doResize() -{ - QRect r = contentsRect(); - int i; - int n = data->list.count(); - QArray a( n ); - for ( i = 0; i< n; i++ ) { - a[i].init(); - QSplitterPLayoutStruct *s = data->list.at(i); - if ( s->wid->isHidden() ) { - a[i].stretch = 0; - a[i].sizeHint = a[i].minimumSize = 0; - a[i].maximumSize = 0; - } else if ( s->isSplitter ) { - a[i].stretch = 0; - a[i].sizeHint = a[i].minimumSize = a[i].maximumSize = s->sizer; - a[i].empty = FALSE; - } else if ( s->mode == KeepSize ) { - a[i].stretch = 0; - a[i].minimumSize = pick( minSize(s->wid) ); - a[i].sizeHint = s->sizer; - a[i].maximumSize = pick( maxSize(s->wid) ); - a[i].empty = FALSE; - } else if ( s->mode == FollowSizeHint ) { - a[i].stretch = 0; - a[i].minimumSize = a[i].sizeHint = pick( s->wid->sizeHint() ); - a[i].maximumSize = pick( maxSize(s->wid) ); - a[i].empty = FALSE; - } else { //proportional - a[i].stretch = s->sizer; - a[i].maximumSize = pick( maxSize(s->wid) ); - a[i].sizeHint = a[i].minimumSize = pick( minSize(s->wid) ); - a[i].empty = FALSE; - } - } - - qGeomCalc( a, 0, n, pick( r.topLeft() ), pick( r.size() ), 0 ); - for ( i = 0; i< n; i++ ) { - QSplitterPLayoutStruct *s = data->list.at(i); - if ( orient == Horizontal ) - s->wid->setGeometry( a[i].pos, r.top(), a[i].size, r.height() ); - else - s->wid->setGeometry( r.left(), a[i].pos, r.width(), a[i].size ); - } - -} - - -void QSplitterP::recalc( bool update ) -{ - int fi = 2*frameWidth(); - int maxl = fi; - int minl = fi; - int maxt = QWIDGETSIZE_MAX; - int mint = fi; - int n = data->list.count(); - bool first = TRUE; - /* - The splitter before a hidden widget is always hidden. - The splitter before the first visible widget is hidden. - The splitter before any other visible widget is visible. - */ - for ( int i = 0; i< n; i++ ) { - QSplitterPLayoutStruct *s = data->list.at(i); - if ( !s->isSplitter ) { - QSplitterPLayoutStruct *p = (i > 0) ? p = data->list.at( i-1 ) : 0; - if ( p && p->isSplitter ) - if ( first || s->wid->isHidden() ) - p->wid->hide(); //may trigger new recalc - else - p->wid->show(); //may trigger new recalc - if ( !s->wid->isHidden() ) - first = FALSE; - } - } - - bool empty=TRUE; - for ( int j = 0; j< n; j++ ) { - QSplitterPLayoutStruct *s = data->list.at(j); - if ( !s->wid->isHidden() ) { - empty = FALSE; - if ( s->isSplitter ) { - minl += s->sizer; - maxl += s->sizer; - } else { - QSize minS = minSize(s->wid); - minl += pick( minS ); - maxl += pick( maxSize(s->wid) ); - mint = QMAX( mint, trans( minS )); - int tm = trans( maxSize(s->wid) ); - if ( tm > 0 ) - maxt = QMIN( maxt, tm ); - } - } - } - if ( empty ) - maxl = maxt = 0; - else - maxl = QMIN( maxl, QWIDGETSIZE_MAX ); - if ( maxt < mint ) - maxt = mint; - - if ( orient == Horizontal ) { - setMaximumSize( maxl, maxt ); - setMinimumSize( minl, mint ); - } else { - setMaximumSize( maxt, maxl ); - setMinimumSize( mint, minl ); - } - if ( update ) - doResize(); -} - -/*! \enum QSplitter::ResizeMode - - This enum type describes how QSplitter will resize each of its child widgets. The currently defined values are:
    - -
  • \c Stretch - the widget will be resized when the splitter - itself is resized. - -
  • \c KeepSize - QSplitter will try to keep this widget's size - unchanged. - -
  • \c FollowSizeHint - QSplitter will resize the widget when its - size hint changes. - -
- -*/ - -/*! - Sets resize mode of \a w to \a mode. - - \sa ResizeMode -*/ - -void QSplitterP::setResizeMode( QWidget *w, ResizeMode mode ) -{ - processChildEvents(); - QSplitterPLayoutStruct *s = data->list.first(); - while ( s ) { - if ( s->wid == w ) { - s->mode = mode; - return; - } - s = data->list.next(); - } - s = addWidget( w, TRUE ); - s->mode = mode; -} - - -/*! - Returns TRUE if opaque resize is on, FALSE otherwise. - - \sa setOpaqueResize() -*/ - -bool QSplitterP::opaqueResize() const -{ - return data->opaque; -} - - -/*! - Sets opaque resize to \a on. Opaque resize is initially turned off. - - \sa opaqueResize() -*/ - -void QSplitterP::setOpaqueResize( bool on ) -{ - data->opaque = on; -} - - -/*! - Moves \a w to the leftmost/top position. -*/ - -void QSplitterP::moveToFirst( QWidget *w ) -{ - processChildEvents(); - bool found = FALSE; - QSplitterPLayoutStruct *s = data->list.first(); - while ( s ) { - if ( s->wid == w ) { - found = TRUE; - QSplitterPLayoutStruct *p = data->list.prev(); - if ( p ) { // not already at first place - data->list.take(); //take p - data->list.take(); // take s - data->list.insert( 0, p ); - data->list.insert( 0, s ); - } - break; - } - s = data->list.next(); - } - if ( !found ) - addWidget( w, TRUE ); - recalcId(); -} - - -/*! - Moves \a w to the rightmost/bottom position. -*/ - -void QSplitterP::moveToLast( QWidget *w ) -{ - processChildEvents(); - bool found = FALSE; - QSplitterPLayoutStruct *s = data->list.first(); - while ( s ) { - if ( s->wid == w ) { - found = TRUE; - data->list.take(); // take s - QSplitterPLayoutStruct *p = data->list.current(); - if ( p ) { // the splitter handle after s - data->list.take(); //take p - data->list.append( p ); - } - data->list.append( s ); - break; - } - s = data->list.next(); - } - if ( !found ) - addWidget( w); - recalcId(); -} - - -void QSplitterP::recalcId() -{ - int n = data->list.count(); - for ( int i = 0; i < n; i++ ) { - QSplitterPLayoutStruct *s = data->list.at(i); - if ( s->isSplitter ) - ((QSplitterPHandle*)s->wid)->setId(i); - } -} - - -/*!\reimp -*/ -QSize QSplitterP::sizeHint() const -{ - constPolish(); - int l = 0; - int t = 0; - if ( children() ) { - const QObjectList * c = children(); - QObjectListIt it( *c ); - QObject * o; - - while( (o=it.current()) != 0 ) { - ++it; - if ( o->isWidgetType() && - !((QWidget*)o)->isHidden() ) { - QSize s = ((QWidget*)o)->sizeHint(); - if ( s.isValid() ) { - l += pick( s ); - t = QMAX( t, trans( s ) ); - } - } - } - } - return orientation() == Horizontal ? QSize( l, t ) : QSize( t, l ); -} - - -/*! -\reimp -*/ - -QSize QSplitterP::minimumSizeHint() const -{ - constPolish(); - int l = 0; - int t = 0; - if ( children() ) { - const QObjectList * c = children(); - QObjectListIt it( *c ); - QObject * o; - - while( (o=it.current()) != 0 ) { - ++it; - if ( o->isWidgetType() && - !((QWidget*)o)->isHidden() ) { - QSize s = minSize((QWidget*)o); - if ( s.isValid() ) { - l += pick( s ); - t = QMAX( t, trans( s ) ); - } - } - } - } - return orientation() == Horizontal ? QSize( l, t ) : QSize( t, l ); -} - - - -/*!\reimp -*/ -QSizePolicy QSplitterP::sizePolicy() const -{ - return QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ); -} - - -/*! - Calculates stretch parameters from current sizes -*/ - -void QSplitterP::storeSizes() -{ - QSplitterPLayoutStruct *s = data->list.first(); - while ( s ) { - if ( !s->isSplitter ) - s->sizer = pick( s->wid->size() ); - s = data->list.next(); - } -} - - -#if 0 // ### remove this code ASAP - -/*! - Hides \a w if \a hide is TRUE, and updates the splitter. - - \warning Due to a limitation in the current implementation, - calling QWidget::hide() will not work. -*/ - -void QSplitterP::setHidden( QWidget *w, bool hide ) -{ - if ( w == w1 ) { - w1show = !hide; - } else if ( w == w2 ) { - w2show = !hide; - } else { -#ifdef CHECK_RANGE - qWarning( "QSplitterP::setHidden(), unknown widget" ); -#endif - return; - } - if ( hide ) - w->hide(); - else - w->show(); - recalc( TRUE ); -} - - -/*! - Returns the hidden status of \a w -*/ - -bool QSplitterP::isHidden( QWidget *w ) const -{ - if ( w == w1 ) - return !w1show; - else if ( w == w2 ) - return !w2show; -#ifdef CHECK_RANGE - else - qWarning( "QSplitterP::isHidden(), unknown widget" ); -#endif - return FALSE; -} -#endif - - -/*! - Returns a list of the size parameters of all the widgets in this - splitter. - - Giving the values to setSizes() will give a splitter with the same - layout as this one. -*/ - -QValueList QSplitterP::sizes() const -{ - if ( !testWState(WState_Polished) ) { - QWidget* that = (QWidget*) this; - that->polish(); - } - QValueList list; - QSplitterPLayoutStruct *s = data->list.first(); - while ( s ) { - if ( !s->isSplitter ) - list.append( s->sizer ); - s = data->list.next(); - } - return list; -} - - - -/*! - Sets the size parameters to the values given in \a list. - If the splitterP is horizontal, the values set the sizes from - left to right. If it is vertical, the sizes are applied from - top to bottom. - Extra values in \a list are ignored. - - If \a list contains too few values, the result is undefined - but the program will still be well-behaved. -*/ - -void QSplitterP::setSizes( QValueList list ) -{ - processChildEvents(); - QValueList::Iterator it = list.begin(); - QSplitterPLayoutStruct *s = data->list.first(); - while ( s && it != list.end() ) { - if ( !s->isSplitter ) { - s->sizer = *it; - ++it; - } - s = data->list.next(); - } - doResize(); -} - - -/*! - Gets all posted child events, ensuring that the internal state of - the splitter is consistent with the programmer's idea. -*/ - -void QSplitterP::processChildEvents() -{ - QApplication::sendPostedEvents( this, QEvent::ChildInserted ); -} - - -/*! - \reimp -*/ - -void QSplitterP::styleChange( QStyle& old ) -{ -#if QT_VERSION < 300 - int sw = style().splitterWidth(); -#else - int sw = style().pixelMetric(QStyle::PM_SplitterWidth, this); //qt3.x -#endif - QSplitterPLayoutStruct *s = data->list.first(); - while ( s ) { - if ( s->isSplitter ) - s->sizer = sw; - s = data->list.next(); - } - doResize(); - QFrame::styleChange( old ); -} -#endif - -bool QSplitterP::isCompressEnabled() const -{ - return compress_flag; -} - -void QSplitterP::setCompressEnabled(bool on) { - compress_flag = on; -} - -void QSplitterP::updateSplitterHandles() const { - QSplitterPLayoutStruct *s = data->list.first(); - while ( s ) { - if ( s->isSplitter ) - ((QSplitterPHandle*)s->wid)->updateButtonState(); - s = data->list.next(); - } -} diff --git a/src/PatchQt/qsplitterP.h b/src/PatchQt/qsplitterP.h deleted file mode 100644 index 263a90429..000000000 --- a/src/PatchQt/qsplitterP.h +++ /dev/null @@ -1,215 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Module : PatchQt -// File : qsplitterP.h -// Description : the patch for Qt's QSplitter class (qsplitter.h) -///////////////////////////////////////////////////////////////////////////// - -/**************************************************************************** -** $Id$ -** -** Defintion of QSplitter class -** -** Created: 980105 -** -** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. -** -** This file is part of the widgets module of the Qt GUI Toolkit. -** -** This file may be distributed under the terms of the Q Public License -** as defined by Trolltech AS of Norway and appearing in the file -** LICENSE.QPL included in the packaging of this file. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition -** licenses may use this file in accordance with the Qt Commercial License -** Agreement provided with the Software. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for -** information about Qt Commercial License Agreements. -** See http://www.trolltech.com/qpl/ for QPL licensing information. -** See http://www.trolltech.com/gpl/ for GPL licensing information. -** -** Contact info@trolltech.com if any conditions of this licensing are -** not clear to you. -** -**********************************************************************/ -#ifndef QSPLITTERP_H -#define QSPLITTERP_H - -#ifndef QT_H -#include -#include -#include // by STV -#endif // QT_H -#include - -#ifndef QT_NO_COMPLEXWIDGETS - -class QSplitterPHandle; -class QSplitterPData; -class QSplitterPLayoutStruct; - -class Q_EXPORT QSplitterP : public QFrame -{ - Q_OBJECT - Q_PROPERTY( Orientation orientation READ orientation WRITE setOrientation ) - -public: - enum ResizeMode { Stretch, KeepSize, FollowSizeHint }; - - QSplitterP( QWidget *parent=0, const char *name=0 ); - QSplitterP( Orientation, QWidget *parent=0, const char *name=0 ); - ~QSplitterP(); - - virtual void setOrientation( Orientation ); - Orientation orientation() const { return orient; } - - virtual void setResizeMode( QWidget *w, ResizeMode ); - virtual void setOpaqueResize( bool = TRUE ); - bool opaqueResize() const; - - void moveToFirst( QWidget * ); - void moveToLast( QWidget * ); - - void refresh() { recalc( TRUE ); } - QSize sizeHint() const; - QSize minimumSizeHint() const; - QSizePolicy sizePolicy() const; - - QValueList sizes() const; - void setSizes( QValueList ); - bool isCompressEnabled() const; - void setCompressEnabled(bool on); - - void compress(QWidget*); - void unCompress(QWidget*); - -// VSR 21/11/02 -> ================================ - QSplitterPHandle* getHandleAfter(QWidget* w); - QSplitterPHandle* getHandleBefore(QWidget* w); -// VSR 21/11/02 <- ================================ - -// ASL 07/09/04 - bool isCompressed( const QWidget* ) const; -// ASL 07/09/04 - -protected: - void childEvent( QChildEvent * ); - - bool event( QEvent * ); - void resizeEvent( QResizeEvent * ); - - int idAfter( QWidget* ) const; - QWidget* widgetBefore( int id ) const; - QWidget* widgetAfter( int id ) const; - - QSize minSize( const QWidget *w ) const; - QSize maxSize( const QWidget *w ) const; - - void moveSplitter( QCOORD pos, int id ); - virtual void drawSplitter( QPainter*, QCOORD x, QCOORD y, - QCOORD w, QCOORD h ); - void styleChange( QStyle& ); - int adjustPos( int , int ); - virtual void setRubberband( int ); - void getRange( int id, int*, int* ); - -private: - void init(); - void recalc( bool update = FALSE ); - int hit( QPoint p ); - void doResize(); - void storeSizes(); - void processChildEvents(); - QSplitterPLayoutStruct *addWidget( QWidget*, bool first = FALSE ); - void recalcId(); - void moveBefore( int pos, int id, bool upLeft ); - void moveAfter( int pos, int id, bool upLeft ); - void setG( QWidget *w, int p, int s ); - void updateSplitterHandles() const; - - QCOORD pick( const QPoint &p ) const - { return orient == Horizontal ? p.x() : p.y(); } - QCOORD pick( const QSize &s ) const - { return orient == Horizontal ? s.width() : s.height(); } - - QCOORD trans( const QPoint &p ) const - { return orient == Vertical ? p.x() : p.y(); } - QCOORD trans( const QSize &s ) const - { return orient == Vertical ? s.width() : s.height(); } - - QSplitterPData *data; - QWidgetList compressed_widgets; - - Orientation orient; - bool compress_flag; - friend class QSplitterPHandle; -private: // Disabled copy constructor and operator= -#if defined(Q_DISABLE_COPY) - QSplitterP( const QSplitterP & ); - QSplitterP& operator=( const QSplitterP & ); -#endif -}; - -#endif // QT_NO_COMPLEXWIDGETS - - -class Q_EXPORT QSplitterPHandle : public QWidget -{ - Q_OBJECT -public: - QSplitterPHandle( Qt::Orientation o, - QSplitterP *parent, const char* name=0 ); - void setOrientation( Qt::Orientation o ); - Qt::Orientation orientation() const { return orient; } - - bool opaque() const { return s->opaqueResize(); } - - QSize sizeHint() const; - QSizePolicy sizePolicy() const; - - int id() const { return myId; } // data->list.at(id())->wid == this - void setId( int i ) { myId = i; } - void updateButtonState(); - -// VSR 21/11/02 -> ================================ - void compressAfter(); - void unCompressAfter(); - void compressBefore(); - void unCompressBefore(); -// VSR 21/11/02 <- ================================ - -protected: - void paintEvent( QPaintEvent * ); - void mouseMoveEvent( QMouseEvent * ); - void mousePressEvent( QMouseEvent * ); - void mouseReleaseEvent( QMouseEvent * ); - -protected slots: - void onBeforeCompress(); - void onAfterCompress(); - void onBeforeUnCompress(); - void onAfterUnCompress(); - -private: - Qt::Orientation orient; - bool opaq; - int myId; - - QSplitterP *s; - int oldpos; - QPushButton* left; - QPushButton* right; - QPushButton* unleft; - QPushButton* unright; -}; - - -#endif // QSPLITTERP_H diff --git a/src/PatchQt/qworkspaceP.cxx b/src/PatchQt/qworkspaceP.cxx deleted file mode 100644 index 1a959ae47..000000000 --- a/src/PatchQt/qworkspaceP.cxx +++ /dev/null @@ -1,3404 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Module : PatchQt -// File : qworkspaceP.cxx -// Description : the patch for Qt's QWorkspace class (qworkspace.cpp) -///////////////////////////////////////////////////////////////////////////// - -/**************************************************************************** -** $Id$ -** -** Implementation of the QWorkspace class -** -** Created : 931107 -** -** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. -** -** This file is part of the workspace module of the Qt GUI Toolkit. -** -** This file may be distributed under the terms of the Q Public License -** as defined by Trolltech AS of Norway and appearing in the file -** LICENSE.QPL included in the packaging of this file. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** Licensees holding valid Qt Enterprise Edition licenses may use this -** file in accordance with the Qt Commercial License Agreement provided -** with the Software. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for -** information about Qt Commercial License Agreements. -** See http://www.trolltech.com/qpl/ for QPL licensing information. -** See http://www.trolltech.com/gpl/ for GPL licensing information. -** -** Contact info@trolltech.com if any conditions of this licensing are -** not clear to you. -** -**********************************************************************/ - -#include "qworkspaceP.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if defined(Q_WS_WIN) -#include -#endif -#include -#include -#include - -#include -#include -using namespace std; - -#define BUTTON_WIDTH 16 -#define BUTTON_HEIGHT 14 - - -/*! - \class QWorkspaceP qworkspace.h - \brief The QWorkspaceP widget provides a workspace window that can - contain decorated windows, e.g. for MDI. - - \module workspace - - \ingroup application - \ingroup organizers - \mainclass - - An MDI (multiple document interface) application has one main - window with a menu bar. The central widget of this window is a - workspace. The workspace itself contains zero, one or more - document windows, each of which displays a document. - - The workspace itself is an ordinary Qt widget. It has a standard - constructor that takes a parent widget and an object name. The - parent window is usually a QMainWindow, but it need not be. - - Document windows (i.e. MDI windows) are also ordinary Qt widgets - which have the workspace as parent widget. When you call show(), - hide(), showMaximized(), setCaption(), etc. on a document window, - it is shown, hidden, etc. with a frame, caption, icon and icon - text, just as you'd expect. You can provide widget flags which - will be used for the layout of the decoration or the behaviour of - the widget itself. - - To change the geometry of the MDI windows it is necessary to make - the function calls to the parentWidget() of the widget, as this - will move or resize the decorated window. - - A document window becomes active when it gets the keyboard focus. - You can activate it using setFocus(), and the user can activate it - by moving focus in the normal ways. The workspace emits a signal - windowActivated() when it detects the activation change, and the - function activeWindow() always returns a pointer to the active - document window. - - The convenience function windowList() returns a list of all - document windows. This is useful to create a popup menu - "Windows" on the fly, for example. - - QWorkspaceP provides two built-in layout strategies for child - windows: cascade() and tile(). Both are slots so you can easily - connect menu entries to them. - - If you want your users to be able to work with document windows - larger than the actual workspace, set the scrollBarsEnabled - property to TRUE. - - If the top-level window contains a menu bar and a document window - is maximised, QWorkspaceP moves the document window's minimize, - restore and close buttons from the document window's frame to the - workspace window's menu bar. It then inserts a window operations - menu at the far left of the menu bar. -*/ - -static bool inCaptionChange = FALSE; - -class QWorkspacePPrivate { -public: - QWorkspacePChild* active; - QPtrList windows; - QPtrList focus; - QPtrList icons; - QWorkspacePChild* maxWindow; - QRect maxRestore; - QGuardedPtr maxcontrols; - QGuardedPtr maxmenubar; - - int px; - int py; - QWidget *becomeActive; - QGuardedPtr maxtools; - QPopupMenu* popup; - QPopupMenu* toolPopup; - int menuId; - int controlId; - QString topCaption; - bool autoFocusChange; - - QScrollBar *vbar, *hbar; - QWidget *corner; - int yoffset, xoffset; -}; - -/*! - Constructs a workspace with a \a parent and a \a name. - */ -QWorkspaceP::QWorkspaceP( QWidget *parent, const char *name ) - : QWidget( parent, name, WNoMousePropagation ) -{ - d = new QWorkspacePPrivate; - d->maxcontrols = 0; - d->active = 0; - d->maxWindow = 0; - d->maxtools = 0; - d->px = 0; - d->py = 0; - d->becomeActive = 0; - d->autoFocusChange = FALSE; -#if defined(Q_WS_WIN) - d->popup = new QPopupMenu( this, "qt_internal_mdi_popup" ); - d->toolPopup = new QPopupMenu( this, "qt_internal_mdi_popup" ); -#else - d->popup = new QPopupMenu( parentWidget(), "qt_internal_mdi_popup" ); - d->toolPopup = new QPopupMenu( parentWidget(), "qt_internal_mdi_popup" ); -#endif - - d->menuId = -1; - d->controlId = -1; - connect( d->popup, SIGNAL( aboutToShow() ), this, SLOT(operationMenuAboutToShow() )); - connect( d->popup, SIGNAL( activated(int) ), this, SLOT( operationMenuActivated(int) ) ); - d->popup->insertItem(QIconSet(style().stylePixmap(QStyle::SP_TitleBarNormalButton)), tr("&Restore"), 1); - d->popup->insertItem(tr("&Move"), 2); - d->popup->insertItem(tr("&Size"), 3); - d->popup->insertItem(QIconSet(style().stylePixmap(QStyle::SP_TitleBarMinButton)), tr("Mi&nimize"), 4); - d->popup->insertItem(QIconSet(style().stylePixmap(QStyle::SP_TitleBarMaxButton)), tr("Ma&ximize"), 5); - d->popup->insertSeparator(); - d->popup->insertItem(QIconSet(style().stylePixmap(QStyle::SP_TitleBarCloseButton)), - tr("&Close") -#ifndef QT_NO_ACCEL - +"\t"+QAccel::keyToString(CTRL+Key_F4) -#endif - , this, SLOT( closeActiveWindow() ) ); - - connect( d->toolPopup, SIGNAL( aboutToShow() ), this, SLOT(toolMenuAboutToShow() )); - connect( d->toolPopup, SIGNAL( activated(int) ), this, SLOT( operationMenuActivated(int) ) ); - d->toolPopup->insertItem(tr("&Move"), 2); - d->toolPopup->insertItem(tr("&Size"), 3); - d->toolPopup->insertItem(tr("Stay on &Top"), 7); - d->toolPopup->setItemChecked( 7, TRUE ); - d->toolPopup->setCheckable( TRUE ); - d->toolPopup->insertSeparator(); - d->toolPopup->insertItem(QIconSet(style().stylePixmap(QStyle::SP_TitleBarShadeButton)), tr("Sh&ade"), 6); - d->toolPopup->insertItem(QIconSet(style().stylePixmap(QStyle::SP_TitleBarCloseButton)), - tr("&Close") -#ifndef QT_NO_ACCEL - +"\t"+QAccel::keyToString( CTRL+Key_F4) -#endif - , this, SLOT( closeActiveWindow() ) ); - -#ifndef QT_NO_ACCEL - QAccel* a = new QAccel( this ); - a->connectItem( a->insertItem( ALT + Key_Minus), - this, SLOT( showOperationMenu() ) ); - - a->connectItem( a->insertItem( CTRL + Key_F6), - this, SLOT( activateNextWindow() ) ); - a->connectItem( a->insertItem( CTRL + Key_Tab), - this, SLOT( activateNextWindow() ) ); - - a->connectItem( a->insertItem( CTRL + SHIFT + Key_F6), - this, SLOT( activatePreviousWindow() ) ); - a->connectItem( a->insertItem( CTRL + SHIFT + Key_Tab), - this, SLOT( activatePreviousWindow() ) ); - - a->connectItem( a->insertItem( CTRL + Key_F4 ), - this, SLOT( closeActiveWindow() ) ); -#endif - - setBackgroundMode( PaletteDark ); - setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ) ); - -#ifndef QT_NO_WIDGET_TOPEXTRA - d->topCaption = topLevelWidget()->caption(); -#endif - - d->hbar = d->vbar = 0; - d->corner = 0; - d->xoffset = d->yoffset = 0; - - updateWorkspace(); - - topLevelWidget()->installEventFilter( this ); -} - -/*! Destroys the workspace and frees any allocated resources. */ - -QWorkspaceP::~QWorkspaceP() -{ - delete d; - d = 0; -} - -/*!\reimp */ -QSize QWorkspaceP::sizeHint() const -{ - QSize s( QApplication::desktop()->size() ); - return QSize( s.width()*2/3, s.height()*2/3); -} - -/*! \reimp */ -void QWorkspaceP::setPaletteBackgroundColor( const QColor & c ) -{ - setEraseColor( c ); -} - - -/*! \reimp */ -void QWorkspaceP::setPaletteBackgroundPixmap( const QPixmap & pm ) -{ - setErasePixmap( pm ); -} - -/*! \reimp */ -void QWorkspaceP::childEvent( QChildEvent * e) -{ - if (e->inserted() && e->child()->isWidgetType()) { - QWidget* w = (QWidget*) e->child(); - if ( !w || !w->testWFlags( WStyle_Title | WStyle_NormalBorder | WStyle_DialogBorder ) - || d->icons.contains( w ) || w == d->vbar || w == d->hbar || w == d->corner ) - return; // nothing to do - - bool hasBeenHidden = w->isHidden(); - bool hasSize = w->testWState( WState_Resized ); - int x = w->x(); - int y = w->y(); - bool hasPos = x != 0 || y != 0; - QSize s = w->size().expandedTo( w->minimumSizeHint() ); - if ( !hasSize && w->sizeHint().isValid() ) - w->adjustSize(); - - QWorkspacePChild* child = new QWorkspacePChild( w, this, "qt_workspacechild" ); - child->installEventFilter( this ); - - connect( child, SIGNAL( popupOperationMenu( const QPoint& ) ), - this, SLOT( popupOperationMenu( const QPoint& ) ) ); - connect( child, SIGNAL( showOperationMenu() ), - this, SLOT( showOperationMenu() ) ); - d->windows.append( child ); - if ( child->isVisibleTo( this ) ) - d->focus.append( child ); - child->internalRaise(); - - if ( hasBeenHidden ) - w->hide(); - else if ( !isVisible() ) // that's a case were we don't receive a showEvent in time. Tricky. - child->show(); - - if ( !hasPos ) - place( child ); - if ( hasSize ) - child->resize( s + child->baseSize() ); - else - child->adjustSize(); - if ( hasPos ) - child->move( x, y ); - - activateWindow( w ); - updateWorkspace(); - } else if (e->removed() ) { - if ( d->windows.contains( (QWorkspacePChild*)e->child() ) ) { - d->windows.removeRef( (QWorkspacePChild*)e->child() ); - d->focus.removeRef( (QWorkspacePChild*)e->child() ); - if (d->windows.count() <= 0) { // VSR+ 26/03/03 --> - activateWindow( 0 ); - d->maxWindow = 0; - hideMaximizeControls(); - } // <-- VSR+ 26/03/03 - updateWorkspace(); - } - } -} - -/*! \reimp -*/ -#ifndef QT_NO_WHEELEVENT -void QWorkspaceP::wheelEvent( QWheelEvent *e ) -{ - if ( !scrollBarsEnabled() ) - return; - if ( d->vbar && d->vbar->isVisible() && !( e->state() & AltButton ) ) - QApplication::sendEvent( d->vbar, e ); - else if ( d->hbar && d->hbar->isVisible() ) - QApplication::sendEvent( d->hbar, e ); -} -#endif - -void QWorkspaceP::activateWindow( QWidget* w, bool change_focus ) -{ - if ( !w ) { - d->active = 0; - emit windowActivated( 0 ); - return; - } - if ( !isVisibleTo( 0 ) ) { - d->becomeActive = w; - return; - } - if ( d->active && d->active->windowWidget() == w ) - return; - QPtrListIterator it( d->windows ); - while ( it.current () ) { - QWorkspacePChild* c = it.current(); - ++it; - c->setActive( c->windowWidget() == w ); - if (c->windowWidget() == w) - d->active = c; - } - - if (!d->active) - return; - - if ( d->maxWindow && d->maxWindow != d->active && d->active->windowWidget() && - d->active->windowWidget()->testWFlags( WStyle_MinMax ) && - !d->active->windowWidget()->testWFlags( WStyle_Tool ) ) { - maximizeWindow( d->active->windowWidget() ); - if ( d->maxtools ) { -#ifndef QT_NO_WIDGET_TOPEXTRA - if ( w->icon() ) { - QPixmap pm(*w->icon()); - if(pm.width() != 14 || pm.height() != 14) { - QImage im; - im = pm; - pm = im.smoothScale( 14, 14 ); - } - d->maxtools->setPixmap( pm ); - } else -#endif - { - QPixmap pm(14,14); - pm.fill( white ); - d->maxtools->setPixmap( pm ); - } - } - } - - d->active->internalRaise(); - - if ( change_focus ) { - if ( d->focus.find( d->active ) >=0 ) { - d->focus.removeRef( d->active ); -// d->focus.append( d->active ); //VSR- - } - d->focus.append( d->active ); //VSR+ - } - - updateWorkspace(); - emit windowActivated( w ); -} - - -/*! - Returns the active window, or 0 if no window is active. - */ -QWidget* QWorkspaceP::activeWindow() const -{ - return d->active?d->active->windowWidget():0; -} - - -void QWorkspaceP::place( QWidget* w) -{ - int overlap, minOverlap = 0; - int possible; - - QRect r1(0, 0, 0, 0); - QRect r2(0, 0, 0, 0); - QRect maxRect = rect(); - int x = maxRect.left(), y = maxRect.top(); - QPoint wpos(maxRect.left(), maxRect.top()); - - bool firstPass = TRUE; - - do { - if ( y + w->height() > maxRect.bottom() ) { - overlap = -1; - } else if( x + w->width() > maxRect.right() ) { - overlap = -2; - } else { - overlap = 0; - - r1.setRect(x, y, w->width(), w->height()); - - QWidget *l; - QPtrListIterator it( d->windows ); - while ( it.current () ) { - l = it.current(); - ++it; - if (! d->icons.contains(l) && ! l->isHidden() && l != w ) { - if ( d->maxWindow == l ) - r2 = d->maxRestore; - else - r2.setRect(l->x(), l->y(), l->width(), l->height()); - - if (r2.intersects(r1)) { - r2.setCoords(QMAX(r1.left(), r2.left()), - QMAX(r1.top(), r2.top()), - QMIN(r1.right(), r2.right()), - QMIN(r1.bottom(), r2.bottom()) - ); - - overlap += (r2.right() - r2.left()) * - (r2.bottom() - r2.top()); - } - } - } - } - - if (overlap == 0) { - wpos = QPoint(x, y); - break; - } - - if (firstPass) { - firstPass = FALSE; - minOverlap = overlap; - } else if ( overlap >= 0 && overlap < minOverlap) { - minOverlap = overlap; - wpos = QPoint(x, y); - } - - if ( overlap > 0 ) { - possible = maxRect.right(); - if ( possible - w->width() > x) possible -= w->width(); - - QWidget *l; - QPtrListIterator it( d->windows ); - while ( it.current () ) { - l = it.current(); - ++it; - if (! d->icons.contains(l) && ! l->isHidden() && l != w ) { - if ( d->maxWindow == l ) - r2 = d->maxRestore; - else - r2.setRect(l->x(), l->y(), l->width(), l->height()); - - if( ( y < r2.bottom() ) && ( r2.top() < w->height() + y ) ) { - if( r2.right() > x ) - possible = possible < r2.right() ? - possible : r2.right(); - - if( r2.left() - w->width() > x ) - possible = possible < r2.left() - w->width() ? - possible : r2.left() - w->width(); - } - } - } - - x = possible; - } else if ( overlap == -2 ) { - x = maxRect.left(); - possible = maxRect.bottom(); - - if ( possible - w->height() > y ) possible -= w->height(); - - QWidget *l; - QPtrListIterator it( d->windows ); - while ( it.current () ) { - l = it.current(); - ++it; - if (l != w && ! d->icons.contains(w)) { - if ( d->maxWindow == l ) - r2 = d->maxRestore; - else - r2.setRect(l->x(), l->y(), l->width(), l->height()); - - if( r2.bottom() > y) - possible = possible < r2.bottom() ? - possible : r2.bottom(); - - if( r2.top() - w->height() > y ) - possible = possible < r2.top() - w->height() ? - possible : r2.top() - w->height(); - } - } - - y = possible; - } - } - while( overlap != 0 && overlap != -1 ); - - w->move(wpos); - updateWorkspace(); -} - - -void QWorkspaceP::insertIcon( QWidget* w ) -{ - if ( !w || d->icons.contains( w ) ) - return; - d->icons.append( w ); - if (w->parentWidget() != this ) - w->reparent( this, 0, QPoint(0,0), FALSE); - - - QRect cr = updateWorkspace(); - int x = 0; - int y = cr.height() - w->height(); - - QPtrListIterator it( d->icons ); - while ( it.current () ) { - QWidget* i = it.current(); - ++it; - if ( x > 0 && x + i->width() > cr.width() ){ - x = 0; - y -= i->height(); - } - - if ( i != w && - i->geometry().intersects( QRect( x, y, w->width(), w->height() ) ) ) - x += i->width(); - } - w->move( x, y ); - - if ( isVisibleTo( parentWidget() ) ) { - w->show(); - w->lower(); - } - updateWorkspace(); -} - - -void QWorkspaceP::removeIcon( QWidget* w) -{ - if ( !d->icons.contains( w ) ) - return; - d->icons.remove( w ); - w->hide(); -} - - -/*! \reimp */ -void QWorkspaceP::resizeEvent( QResizeEvent * ) -{ - if ( d->maxWindow ) { - d->maxWindow->adjustToFullscreen(); - ((QWorkspaceP*)d->maxWindow->windowWidget())->setWState( WState_Maximized ); - } - - QRect cr = updateWorkspace(); - - QPtrListIterator it( d->windows ); - while ( it.current () ) { - QWorkspacePChild* c = it.current(); - ++it; - if ( c->windowWidget() && !c->windowWidget()->testWFlags( WStyle_Tool ) ) - continue; - - int x = c->x(); - int y = c->y(); - if ( c->snappedDown ) - y = cr.height() - c->height(); - if ( c->snappedRight ) - x = cr.width() - c->width(); - - if ( x != c->x() || y != c->y() ) - c->move( x, y ); - } - -} - -/*! \reimp */ -void QWorkspaceP::showEvent( QShowEvent *e ) -{ - if ( d->maxWindow && !style().styleHint(QStyle::SH_Workspace_FillSpaceOnMaximize, this)) - showMaximizeControls(); - QWidget::showEvent( e ); - if ( d->becomeActive ) { - activateWindow( d->becomeActive ); - d->becomeActive = 0; - } - else if ( d->windows.count() > 0 && !d->active ) - activateWindow( d->windows.first()->windowWidget() ); - - updateWorkspace(); -} - -/*! \reimp */ -void QWorkspaceP::hideEvent( QHideEvent * ) -{ - - if ( !isVisibleTo(0) && !style().styleHint(QStyle::SH_Workspace_FillSpaceOnMaximize, this)) - hideMaximizeControls(); -} - -void QWorkspaceP::minimizeWindow( QWidget* w) -{ - QWorkspacePChild* c = findChild( w ); - QWorkspacePChild* oldActive = d->active; //VSR+ - - if ( !w || w && (!w->testWFlags( WStyle_Minimize ) || w->testWFlags( WStyle_Tool) ) ) - return; - - if ( c ) { - QWorkspaceP *fake = (QWorkspaceP*)w; - - setUpdatesEnabled( FALSE ); - bool wasMax = FALSE; - if ( c == d->maxWindow ) { - wasMax = TRUE; - d->maxWindow = 0; - inCaptionChange = TRUE; -#ifndef QT_NO_WIDGET_TOPEXTRA - if ( !!d->topCaption ) - topLevelWidget()->setCaption( d->topCaption ); -#endif - inCaptionChange = FALSE; - if ( !style().styleHint(QStyle::SH_Workspace_FillSpaceOnMaximize, this) ) - hideMaximizeControls(); - for (QPtrListIterator it( d->windows ); it.current(); ++it ) { - QWorkspacePChild* c = it.current(); - if ( c->titlebar ) - c->titlebar->setMovable( TRUE ); - c->widgetResizeHandler->setActive( TRUE ); - } - } - insertIcon( c->iconWidget() ); - bool wasFocused = c->titlebar->isActive(); - blockSignals( TRUE );//VSR+ - c->hide(); - blockSignals( FALSE );//VSR+ - if ( wasFocused && ( !d->active || d->active && d->active->testWState( WState_Minimized ) ) ) { //VSR+ -// if ( wasFocused && d->active && d->active->testWState( WState_Minimized ) ) { //VSR- -//VSR- blockSignals( TRUE ); - activateWindow( w, FALSE ); -//VSR- blockSignals( FALSE ); - } - else if ( oldActive != d->active ) { //VSR+ - emit ( windowActivated( d->active ? d->active->windowWidget() : 0 ) ); //VSR+ - } //VSR+ - if ( wasMax ) - c->setGeometry( d->maxRestore ); - if ( d->focus.find( c ) < 0 ) // VSR+ - d->focus.append( c ); - - setUpdatesEnabled( TRUE ); - updateWorkspace(); - - fake->clearWState( WState_Maximized ); - fake->setWState( WState_Minimized ); - c->clearWState( WState_Maximized ); - c->setWState( WState_Minimized ); - } -} - -void QWorkspaceP::normalizeWindow( QWidget* w) -{ - QWorkspacePChild* c = findChild( w ); - if ( !w ) - return; - if ( c ) { - QWorkspaceP *fake = (QWorkspaceP*)w; - fake->clearWState( WState_Minimized | WState_Maximized ); - if ( !style().styleHint(QStyle::SH_Workspace_FillSpaceOnMaximize, this) && d->maxWindow ) { - hideMaximizeControls(); - } else { - c->widgetResizeHandler->setActive( TRUE ); - if ( c->titlebar ) - c->titlebar->setMovable(TRUE); - } - fake->clearWState( WState_Minimized | WState_Maximized ); - c->clearWState( WState_Minimized | WState_Maximized ); - - if ( c == d->maxWindow ) { - c->setGeometry( d->maxRestore ); - d->maxWindow = 0; -#ifndef QT_NO_WIDGET_TOPEXTRA - inCaptionChange = TRUE; - if ( !!d->topCaption ) - topLevelWidget()->setCaption( d->topCaption ); - inCaptionChange = FALSE; -#endif - } else { - if ( c->iconw ) - removeIcon( c->iconw->parentWidget() ); - c->show(); - } - - if ( !style().styleHint(QStyle::SH_Workspace_FillSpaceOnMaximize, this)) - hideMaximizeControls(); - for (QPtrListIterator it( d->windows ); it.current(); ++it ) { - QWorkspacePChild* c = it.current(); - if ( c->titlebar ) - c->titlebar->setMovable( TRUE ); - c->widgetResizeHandler->setActive( TRUE ); - } - activateWindow( w, TRUE ); - - updateWorkspace(); - } -} - -void QWorkspaceP::maximizeWindow( QWidget* w) -{ - QWorkspacePChild* c = findChild( w ); - - if ( !w || w && (!w->testWFlags( WStyle_Maximize ) || w->testWFlags( WStyle_Tool) ) ) - return; - if ( w->maximumSize().isValid() && ( w->maximumWidth() < width() || w->maximumHeight() < height() ) ) { - w->resize( w->maximumSize() ); - return; - } - - if ( c ) { - setUpdatesEnabled( FALSE ); - if (c->iconw && d->icons.contains( c->iconw->parentWidget() ) ) - normalizeWindow( w ); - QWorkspaceP *fake = (QWorkspaceP*)w; - - QRect r( c->geometry() ); - c->adjustToFullscreen(); - c->show(); - c->internalRaise(); - qApp->sendPostedEvents( c, QEvent::Resize ); - qApp->sendPostedEvents( c, QEvent::Move ); - qApp->sendPostedEvents( c, QEvent::ShowWindowRequest ); - if ( d->maxWindow != c ) { - if ( d->maxWindow ) - d->maxWindow->setGeometry( d->maxRestore ); - d->maxWindow = c; - d->maxRestore = r; - } - - activateWindow( w ); - if(!style().styleHint(QStyle::SH_Workspace_FillSpaceOnMaximize, this)) { - showMaximizeControls(); - } else { - c->widgetResizeHandler->setActive( FALSE ); - if ( c->titlebar ) - c->titlebar->setMovable( FALSE ); - } -#ifndef QT_NO_WIDGET_TOPEXTRA - inCaptionChange = TRUE; - if ( !!d->topCaption ) - topLevelWidget()->setCaption( tr("%1 - [%2]") - .arg(d->topCaption).arg(c->caption()) ); - inCaptionChange = FALSE; -#endif - setUpdatesEnabled( TRUE ); - - updateWorkspace(); - - fake->clearWState( WState_Minimized ); - fake->setWState( WState_Maximized ); - c->clearWState( WState_Minimized ); - c->setWState( WState_Maximized ); - } -} - -void QWorkspaceP::showWindow( QWidget* w) -{ - if ( d->maxWindow && w->testWFlags( WStyle_Maximize ) && !w->testWFlags( WStyle_Tool) ) - maximizeWindow( w ); - else if ( !w->testWFlags( WStyle_Tool ) ) - normalizeWindow( w ); - else - w->parentWidget()->show(); - if ( d->maxWindow ) - d->maxWindow->raise(); - updateWorkspace(); -} - - -QWorkspacePChild* QWorkspaceP::findChild( QWidget* w) -{ - QPtrListIterator it( d->windows ); - while ( it.current () ) { - QWorkspacePChild* c = it.current(); - ++it; - if (c->windowWidget() == w) - return c; - } - return 0; -} - -/*! - Returns a list of all windows. - */ -QWidgetList QWorkspaceP::windowList() const -{ - QWidgetList windows; - QPtrListIterator it( d->windows ); - while ( it.current () ) { - QWorkspacePChild* c = it.current(); - ++it; - if ( c->windowWidget() ) - windows.append( c->windowWidget() ); - } - return windows; -} - -/*!\reimp*/ -bool QWorkspaceP::eventFilter( QObject *o, QEvent * e) -{ - static QTime* t = 0; - static QWorkspaceP* tc = 0; -#ifndef QT_NO_MENUBAR - if ( o == d->maxtools && d->menuId != -1 ) { - switch ( e->type() ) { - case QEvent::MouseButtonPress: - { - QMenuBar* b = (QMenuBar*)o->parent(); - if ( !t ) - t = new QTime; - if ( tc != this || t->elapsed() > QApplication::doubleClickInterval() ) { - if ( QApplication::reverseLayout() ) { - QPoint p = b->mapToGlobal( QPoint( b->x() + b->width(), b->y() + b->height() ) ); - p.rx() -= d->popup->sizeHint().width(); - popupOperationMenu( p ); - } else { - popupOperationMenu( b->mapToGlobal( QPoint( b->x(), b->y() + b->height() ) ) ); - } - t->start(); - tc = this; - } else { - tc = 0; - closeActiveWindow(); - } - return TRUE; - } - default: - break; - } - return QWidget::eventFilter( o, e ); - } -#endif - switch ( e->type() ) { - case QEvent::Hide: - case QEvent::HideToParent: - if ( !o->isA( "QWorkspacePChild" ) || !isVisible() ) - break; - d->focus.removeRef( (QWorkspacePChild*)o ); - if ( d->active != o ) - break; - if ( d->focus.isEmpty() ) { - activateWindow( 0 ); - } else { - d->autoFocusChange = TRUE; - activatePreviousWindow(); - QWorkspacePChild* c = d->active; - while ( d->active && - d->active->windowWidget() && - d->active->windowWidget()->testWFlags( WStyle_Tool ) ) { - activatePreviousWindow(); - if ( d->active == c ) - break; - } - d->autoFocusChange = FALSE; - } - if ( d->maxWindow == o && d->maxWindow->isHidden() ) { - d->maxWindow->setGeometry( d->maxRestore ); - d->maxWindow = 0; - if ( d->active ) - maximizeWindow( d->active ); - - if ( !d->maxWindow ) { - - if ( style().styleHint(QStyle::SH_Workspace_FillSpaceOnMaximize, this)) { - QWorkspacePChild *wc = (QWorkspacePChild *)o; - wc->widgetResizeHandler->setActive( TRUE ); - if ( wc->titlebar ) - wc->titlebar->setMovable( TRUE ); - } else { - hideMaximizeControls(); - } -#ifndef QT_NO_WIDGET_TOPEXTRA - inCaptionChange = TRUE; - if ( !!d->topCaption ) - topLevelWidget()->setCaption( d->topCaption ); - inCaptionChange = FALSE; -#endif - } - } - break; - case QEvent::Show: - if ( o->isA("QWorkspacePChild") && !d->focus.containsRef( (QWorkspacePChild*)o ) ) - d->focus.append( (QWorkspacePChild*)o ); - updateWorkspace(); - break; - case QEvent::CaptionChange: - if ( inCaptionChange ) - break; - -#ifndef QT_NO_WIDGET_TOPEXTRA - inCaptionChange = TRUE; - if ( o == topLevelWidget() ) - d->topCaption = ((QWidget*)o)->caption(); - - if ( d->maxWindow && !!d->topCaption ) - topLevelWidget()->setCaption( tr("%1 - [%2]") - .arg(d->topCaption).arg(d->maxWindow->caption())); - inCaptionChange = FALSE; -#endif - - break; - case QEvent::Close: - if ( o == topLevelWidget() ) - { - QPtrListIterator it( d->windows ); - while ( it.current () ) { - QWorkspacePChild* c = it.current(); - ++it; - if ( c->shademode ) - c->showShaded(); - } - } else if ( o->inherits("QWorkspacePChild") ) { - d->popup->hide(); - } - if ( d->windows.count() > 1 || d->windows.first() && d->active != d->windows.first() ) - activatePreviousWindow(); - updateWorkspace(); - break; - default: - break; - } - return QWidget::eventFilter( o, e); -} - -void QWorkspaceP::showMaximizeControls() -{ -#ifndef QT_NO_MENUBAR - Q_ASSERT(d->maxWindow); - QMenuBar* b = 0; - - // Do a breadth-first search first on every parent, - QWidget* w = parentWidget(); - QObjectList * l = 0; - while ( !l && w ) { - l = w->queryList( "QMenuBar", 0, FALSE, FALSE ); - w = w->parentWidget(); - if ( l && !l->count() ) { - delete l; - l = 0; - } - } - - // and query recursively if nothing is found. - if ( !l || !l->count() ) { - if ( l ) - delete l; - l = topLevelWidget()->queryList( "QMenuBar", 0, 0, TRUE ); - } - if ( l && l->count() ) - b = (QMenuBar *)l->first(); - delete l; - - if ( !b ) - return; - - if ( !d->maxcontrols ) { - d->maxmenubar = b; - d->maxcontrols = new QFrame( topLevelWidget(), "qt_maxcontrols" ); - QHBoxLayout* l = new QHBoxLayout( d->maxcontrols, - d->maxcontrols->frameWidth(), 0 ); - if ( d->maxWindow->windowWidget()->testWFlags(WStyle_Minimize) ) { - QToolButton* iconB = new QToolButton( d->maxcontrols, "iconify" ); -#ifndef QT_NO_TOOLTIP - QToolTip::add( iconB, tr( "Minimize" ) ); -#endif - l->addWidget( iconB ); - iconB->setFocusPolicy( NoFocus ); - iconB->setIconSet(style().stylePixmap(QStyle::SP_TitleBarMinButton)); - iconB->setFixedSize(BUTTON_WIDTH, BUTTON_HEIGHT); - connect( iconB, SIGNAL( clicked() ), - this, SLOT( minimizeActiveWindow() ) ); - } - - QToolButton* restoreB = new QToolButton( d->maxcontrols, "restore" ); -#ifndef QT_NO_TOOLTIP - QToolTip::add( restoreB, tr( "Restore Down" ) ); -#endif - l->addWidget( restoreB ); - restoreB->setFocusPolicy( NoFocus ); - restoreB->setIconSet( style().stylePixmap(QStyle::SP_TitleBarNormalButton)); - restoreB->setFixedSize(BUTTON_WIDTH, BUTTON_HEIGHT); - connect( restoreB, SIGNAL( clicked() ), - this, SLOT( normalizeActiveWindow() ) ); - - l->addSpacing( 2 ); - QToolButton* closeB = new QToolButton( d->maxcontrols, "close" ); -#ifndef QT_NO_TOOLTIP - QToolTip::add( closeB, tr( "Close" ) ); -#endif - l->addWidget( closeB ); - closeB->setFocusPolicy( NoFocus ); - closeB->setIconSet( style().stylePixmap(QStyle::SP_TitleBarCloseButton) ); - closeB->setFixedSize(BUTTON_WIDTH, BUTTON_HEIGHT); - connect( closeB, SIGNAL( clicked() ), - this, SLOT( closeActiveWindow() ) ); - - d->maxcontrols->setFixedSize( d->maxcontrols->minimumSizeHint() ); - } - - if ( d->controlId == -1 || b->indexOf( d->controlId ) == -1 ) { - QFrame* dmaxcontrols = d->maxcontrols; - d->controlId = b->insertItem( dmaxcontrols, -1, b->count() ); - } - if ( d->active && ( d->menuId == -1 || b->indexOf( d->menuId ) == -1 ) ) { - if ( !d->maxtools ) { - d->maxtools = new QLabel( topLevelWidget(), "qt_maxtools" ); - d->maxtools->installEventFilter( this ); - } -#ifndef QT_NO_WIDGET_TOPEXTRA - if ( d->active->windowWidget() && d->active->windowWidget()->icon() ) { - QPixmap pm(*d->active->windowWidget()->icon()); - if(pm.width() != 14 || pm.height() != 14) { - QImage im; - im = pm; - pm = im.smoothScale( 14, 14 ); - } - d->maxtools->setPixmap( pm ); - } else -#endif - { - QPixmap pm(14,14); - pm.fill( white ); - d->maxtools->setPixmap( pm ); - } - d->menuId = b->insertItem( d->maxtools, -1, 0 ); - } -#endif -} - - -void QWorkspaceP::hideMaximizeControls() -{ -#ifndef QT_NO_MENUBAR - if ( d->maxmenubar ) { - int mi = d->menuId; - if ( mi != -1 ) { - if ( d->maxmenubar->indexOf( mi ) != -1 ) - d->maxmenubar->removeItem( mi ); - d->maxtools = 0; - } - int ci = d->controlId; - if ( ci != -1 && d->maxmenubar->indexOf( ci ) != -1 ) - d->maxmenubar->removeItem( ci ); - } - d->maxcontrols = 0; - d->menuId = -1; - d->controlId = -1; -#endif -} - -void QWorkspaceP::closeActiveWindow() -{ - setUpdatesEnabled( FALSE ); - if ( d->maxWindow && d->maxWindow->windowWidget() ) - d->maxWindow->windowWidget()->close(); - else if ( d->active && d->active->windowWidget() ) - d->active->windowWidget()->close(); - setUpdatesEnabled( TRUE ); - updateWorkspace(); -} - -void QWorkspaceP::closeAllWindows() -{ - QPtrListIterator it( d->windows ); - QWorkspacePChild *c = 0; - while ( ( c = it.current() ) != 0 ) { - ++it; - if ( c->windowWidget() ) - c->windowWidget()->close(); - } -} - -void QWorkspaceP::normalizeActiveWindow() -{ - if ( d->maxWindow ) - d->maxWindow->showNormal(); - else if ( d->active ) - d->active->showNormal(); -} - -void QWorkspaceP::minimizeActiveWindow() -{ - if ( d->maxWindow ) - d->maxWindow->showMinimized(); - else if ( d->active ) - d->active->showMinimized(); -} - -void QWorkspaceP::showOperationMenu() -{ - if ( !d->active || !d->active->windowWidget() ) - return; - Q_ASSERT( d->active->windowWidget()->testWFlags( WStyle_SysMenu ) ); - QPoint p; - QPopupMenu *popup = d->active->windowWidget()->testWFlags( WStyle_Tool ) ? d->toolPopup : d->popup; - if ( QApplication::reverseLayout() ) { - p = QPoint( d->active->windowWidget()->mapToGlobal( QPoint(d->active->windowWidget()->width(),0) ) ); - p.rx() -= popup->sizeHint().width(); - } else { - p = QPoint( d->active->windowWidget()->mapToGlobal( QPoint(0,0) ) ); - } - if ( !d->active->isVisible() ) { - p = d->active->iconWidget()->mapToGlobal( QPoint(0,0) ); - p.ry() -= popup->sizeHint().height(); - } - popupOperationMenu( p ); -} - -void QWorkspaceP::popupOperationMenu( const QPoint& p) -{ - if ( !d->active || !d->active->windowWidget() || !d->active->windowWidget()->testWFlags( WStyle_SysMenu ) ) - return; - if ( d->active->windowWidget()->testWFlags( WStyle_Tool )) - d->toolPopup->popup( p ); - else - d->popup->popup( p ); -} - -void QWorkspaceP::operationMenuAboutToShow() -{ - for ( int i = 1; i < 6; i++ ) { - bool enable = d->active != 0; - d->popup->setItemEnabled( i, enable ); - } - - if ( !d->active || !d->active->windowWidget() ) - return; - - d->popup->setItemEnabled( 4, d->active->windowWidget()->testWFlags( WStyle_Minimize ) ); - d->popup->setItemEnabled( 5, d->active->windowWidget()->testWFlags( WStyle_Maximize ) ); - - if ( d->active == d->maxWindow ) { - d->popup->setItemEnabled( 2, FALSE ); - d->popup->setItemEnabled( 3, FALSE ); - d->popup->setItemEnabled( 5, FALSE ); - } else if ( d->active->isVisible() ){ - d->popup->setItemEnabled( 1, FALSE ); - } else { - d->popup->setItemEnabled( 2, FALSE ); - d->popup->setItemEnabled( 3, FALSE ); - d->popup->setItemEnabled( 4, FALSE ); - } -} - -void QWorkspaceP::toolMenuAboutToShow() -{ - if ( !d->active || !d->active->windowWidget() ) - return; - - d->toolPopup->setItemEnabled( 3, !d->active->shademode ); - if ( d->active->shademode ) - d->toolPopup->changeItem( 6, - QIconSet(style().stylePixmap(QStyle::SP_TitleBarUnshadeButton)), tr("&Unshade") ); - else - d->toolPopup->changeItem( 6, QIconSet(style().stylePixmap(QStyle::SP_TitleBarShadeButton)), tr("Sh&ade") ); - d->toolPopup->setItemEnabled( 6, d->active->windowWidget()->testWFlags( WStyle_MinMax ) ); - d->toolPopup->setItemChecked( 7, d->active->windowWidget()->testWFlags( WStyle_StaysOnTop ) ); -} - -void QWorkspaceP::operationMenuActivated( int a ) -{ - if ( !d->active ) - return; - switch ( a ) { - case 1: - d->active->showNormal(); - break; - case 2: - d->active->doMove(); - break; - case 3: - if ( d->active->shademode ) - d->active->showShaded(); - d->active->doResize(); - break; - case 4: - d->active->showMinimized(); - break; - case 5: - d->active->showMaximized(); - break; - case 6: - d->active->showShaded(); - break; - case 7: - { - QWorkspaceP* w = (QWorkspaceP*)d->active->windowWidget(); - if ( !w ) - break; - if ( w->testWFlags( WStyle_StaysOnTop ) ) { - w->clearWFlags( WStyle_StaysOnTop ); - } else { - w->setWFlags( WStyle_StaysOnTop ); - w->parentWidget()->raise(); - } - } - break; - default: - break; - } -} - -void QWorkspaceP::activateNextWindow() -{ - if ( d->focus.isEmpty() ) - return; - if ( !d->active ) { - if ( d->focus.first() ) - activateWindow( d->focus.first()->windowWidget(), FALSE ); - return; - } - - int a = d->focus.find( d->active ) + 1; - - a = a % d->focus.count(); - - if ( d->focus.at( a ) ) - activateWindow( d->focus.at( a )->windowWidget(), FALSE ); - else - d->active = 0; -} - -void QWorkspaceP::activatePreviousWindow() -{ - if ( d->focus.isEmpty() ) { - if ( d->windows.count() > 0 ) { //VSR+ - activateWindow( d->windows.last()->windowWidget() ); //VSR+ - } //VSR+ - return; - } - if ( !d->active ) { - if ( d->focus.last() ) - activateWindow( d->focus.first()->windowWidget(), FALSE ); - else - activateWindow( 0 ); - - return; - } - - int a = d->focus.find( d->active ) - 1; - - if ( a < 0 ) - a = d->focus.count()-1; - - if ( d->autoFocusChange ) { - QWidget *widget = 0; - while ( a >= 0 && d->focus.at( a ) && ( widget = d->focus.at( a )->windowWidget() ) && !widget->isVisible() ) - a--; - if ( a < 0 ) - a = d->focus.count() - 1; - } - - if ( d->focus.at( a ) ) - activateWindow( d->focus.at( a )->windowWidget(), FALSE ); - else - activateWindow( 0 ); -} - - -/*! - \fn void QWorkspaceP::windowActivated( QWidget* w ) - - This signal is emitted when the window widget \a w becomes active. - Note that \a w can be null, and that more than one signal may be - fired for one activation event. - - \sa activeWindow(), windowList() -*/ - - - -/*! - Arranges all child windows in a cascade pattern. - - \sa tile() - */ -void QWorkspaceP::cascade() -{ - if ( d->maxWindow ) - d->maxWindow->showNormal(); - - if ( d->vbar ) { - d->vbar->blockSignals( TRUE ); - d->vbar->setValue( 0 ); - d->vbar->blockSignals( FALSE ); - d->hbar->blockSignals( TRUE ); - d->hbar->setValue( 0 ); - d->hbar->blockSignals( FALSE ); - scrollBarChanged(); - } - - const int xoffset = 13; - const int yoffset = 20; - - // make a list of all relevant mdi clients - QPtrList widgets; - QWorkspacePChild* wc = 0; - for ( wc = d->windows.first(); wc; wc = d->windows.next() ) - if ( wc->iconw ) - normalizeWindow( wc->windowWidget() ); - for ( wc = d->focus.first(); wc; wc = d->focus.next() ) - if ( wc->windowWidget()->isVisibleTo( this ) && !wc->windowWidget()->testWFlags( WStyle_Tool ) ) - widgets.append( wc ); - - int x = 0; - int y = 0; - - setUpdatesEnabled( FALSE ); - QPtrListIterator it( widgets ); - int children = d->windows.count() - 1; - while ( it.current () ) { - QWorkspacePChild *child = it.current(); - ++it; - child->setUpdatesEnabled( FALSE ); - bool hasSizeHint = FALSE; - QSize prefSize = child->windowWidget()->sizeHint().expandedTo( child->windowWidget()->minimumSizeHint() ); - - if ( !prefSize.isValid() ) - prefSize = QSize( width() - children * xoffset, height() - children * yoffset ); - else - hasSizeHint = TRUE; - prefSize = prefSize.expandedTo( child->windowWidget()->minimumSize() ).boundedTo( child->windowWidget()->maximumSize() ); - if ( hasSizeHint ) - prefSize += QSize( child->baseSize().width(), child->baseSize().height() ); - - int w = prefSize.width(); - int h = prefSize.height(); - - child->showNormal(); - qApp->sendPostedEvents( 0, QEvent::ShowNormal ); - if ( y + h > height() ) - y = 0; - if ( x + w > width() ) - x = 0; - child->setGeometry( x, y, w, h ); - x += xoffset; - y += yoffset; - child->internalRaise(); - child->setUpdatesEnabled( TRUE ); - } - setUpdatesEnabled( TRUE ); - updateWorkspace(); -} - -/*! - Arranges all child windows in a tile pattern. - - \sa cascade() - */ -void QWorkspaceP::tile() -{ - if ( d->maxWindow ) - d->maxWindow->showNormal(); - - if ( d->vbar ) { - d->vbar->blockSignals( TRUE ); - d->vbar->setValue( 0 ); - d->vbar->blockSignals( FALSE ); - d->hbar->blockSignals( TRUE ); - d->hbar->setValue( 0 ); - d->hbar->blockSignals( FALSE ); - scrollBarChanged(); - } - - int rows = 1; - int cols = 1; - int n = 0; - QWorkspacePChild* c; - - QPtrListIterator it( d->windows ); - while ( it.current () ) { - c = it.current(); - ++it; - if ( !c->windowWidget()->isHidden() && - !c->windowWidget()->testWFlags( WStyle_StaysOnTop ) && - !c->windowWidget()->testWFlags( WStyle_Tool ) ) - n++; - } - - while ( rows * cols < n ) { - if ( cols <= rows ) - cols++; - else - rows++; - } - int add = cols * rows - n; - bool* used = new bool[ cols*rows ]; - for ( int i = 0; i < rows*cols; i++ ) - used[i] = FALSE; - - int row = 0; - int col = 0; - int w = width() / cols; - int h = height() / rows; - - it.toFirst(); - while ( it.current () ) { - c = it.current(); - ++it; - if ( c->windowWidget()->isHidden() || c->windowWidget()->testWFlags( WStyle_Tool ) ) - continue; - if ( c->windowWidget()->testWFlags( WStyle_StaysOnTop ) ) { - QPoint p = c->pos(); - if ( p.x()+c->width() < 0 ) - p.setX( 0 ); - if ( p.x() > width() ) - p.setX( width() - c->width() ); - if ( p.y() + 10 < 0 ) - p.setY( 0 ); - if ( p.y() > height() ) - p.setY( height() - c->height() ); - - - if ( p != c->pos() ) - c->QFrame::move( p ); - } else { - c->showNormal(); - qApp->sendPostedEvents( 0, QEvent::ShowNormal ); - used[row*cols+col] = TRUE; - if ( add ) { - c->setGeometry( col*w, row*h, QMIN( w, c->windowWidget()->maximumWidth()+c->baseSize().width() ), - QMIN( 2*h, c->windowWidget()->maximumHeight()+c->baseSize().height() ) ); - used[(row+1)*cols+col] = TRUE; - add--; - } else { - c->setGeometry( col*w, row*h, QMIN( w, c->windowWidget()->maximumWidth()+c->baseSize().width() ), - QMIN( h, c->windowWidget()->maximumHeight()+c->baseSize().height() ) ); - } - while( row < rows && col < cols && used[row*cols+col] ) { - col++; - if ( col == cols ) { - col = 0; - row++; - } - } - } - } - delete [] used; - updateWorkspace(); -} - -QWorkspacePChild::QWorkspacePChild( QWidget* window, QWorkspaceP *parent, - const char *name ) - : QFrame( parent, name, - WStyle_Customize | WStyle_NoBorder | WDestructiveClose | WNoMousePropagation | WSubWindow ) -{ - setMouseTracking( TRUE ); - act = FALSE; - iconw = 0; - lastfocusw = 0; - shademode = FALSE; - titlebar = 0; - snappedRight = FALSE; - snappedDown = FALSE; - - if (window) { - switch (window->focusPolicy()) { - case QWidget::NoFocus: - window->setFocusPolicy(QWidget::ClickFocus); - break; - case QWidget::TabFocus: - window->setFocusPolicy(QWidget::StrongFocus); - break; - default: - break; - } - } - - if ( window && window->testWFlags( WStyle_Title ) ) { - titlebar = new QTitleBarP( window, this, "qt_ws_titlebar" ); - connect( titlebar, SIGNAL( doActivate() ), - this, SLOT( activate() ) ); - connect( titlebar, SIGNAL( doClose() ), - window, SLOT( close() ) ); - connect( titlebar, SIGNAL( doMinimize() ), - this, SLOT( showMinimized() ) ); - connect( titlebar, SIGNAL( doNormal() ), - this, SLOT( showNormal() ) ); - connect( titlebar, SIGNAL( doMaximize() ), - this, SLOT( showMaximized() ) ); - connect( titlebar, SIGNAL( popupOperationMenu( const QPoint& ) ), - this, SIGNAL( popupOperationMenu( const QPoint& ) ) ); - connect( titlebar, SIGNAL( showOperationMenu() ), - this, SIGNAL( showOperationMenu() ) ); - connect( titlebar, SIGNAL( doShade() ), - this, SLOT( showShaded() ) ); - connect( titlebar, SIGNAL( doubleClicked() ), - this, SLOT( titleBarDoubleClicked() ) ); - } - - if ( window && window->testWFlags( WStyle_Tool ) ) { - setFrameStyle( QFrame::StyledPanel | QFrame::Raised ); - setLineWidth( 2 ); - setMinimumSize( 128, 0 ); - } else { - setFrameStyle( QFrame::StyledPanel | QFrame::Raised ); - setLineWidth( 2 ); - setMinimumSize( 128, 0 ); - } - - childWidget = window; - if (!childWidget) - return; - -#ifndef QT_NO_WIDGET_TOPEXTRA - setCaption( childWidget->caption() ); -#endif - - QPoint p; - QSize s; - QSize cs; - - bool hasBeenResized = childWidget->testWState( WState_Resized ); - - if ( !hasBeenResized ) - cs = childWidget->sizeHint().expandedTo( childWidget->minimumSizeHint() ); - else - cs = childWidget->size(); - - int th = titlebar ? titlebar->sizeHint().height() : 0; - if ( titlebar ) { -#ifndef QT_NO_WIDGET_TOPEXTRA - if( childWidget->icon() ) { - QPixmap pm(*childWidget->icon()); - if(pm.width() != 14 || pm.height() != 14) { - QImage im; - im = pm; - pm = im.smoothScale( 14, 14 ); - } - titlebar->setIcon( pm ); - } -#endif - p = QPoint( contentsRect().x(), - th + contentsRect().y() ); - s = QSize( cs.width() + 2*frameWidth(), - cs.height() + 2*frameWidth() + th + 2 ); - } else { - p = QPoint( contentsRect().x(), contentsRect().y() ); - s = QSize( cs.width() + 2*frameWidth(), - cs.height() + 2*frameWidth() ); - } - - childWidget->reparent( this, p); - resize( s ); - - childWidget->installEventFilter( this ); - - widgetResizeHandler = new QWidgetResizeHandlerP( this, window ); - widgetResizeHandler->setMovingEnabled( FALSE ); - widgetResizeHandler->setSizeProtection( !parent->scrollBarsEnabled() ); - connect( widgetResizeHandler, SIGNAL( activate() ), - this, SLOT( activate() ) ); - widgetResizeHandler->setExtraHeight( th + 2 ); - - setBaseSize( baseSize() ); -} - -QWorkspacePChild::~QWorkspacePChild() -{ - if ( iconw ) - delete iconw->parentWidget(); -} - -void QWorkspacePChild::moveEvent( QMoveEvent * ) -{ - ((QWorkspaceP*) parentWidget() )->updateWorkspace(); -} - -void QWorkspacePChild::resizeEvent( QResizeEvent * ) -{ - QRect r = contentsRect(); - QRect cr; - - if ( titlebar ) { - int th = titlebar->sizeHint().height(); - QRect tbrect( 0, 0, width(), th ); - if ( !style().styleHint( QStyle::SH_TitleBar_NoBorder ) ) - tbrect = QRect( r.x(), r.y(), r.width(), th ); - titlebar->setGeometry( tbrect ); - cr = QRect( r.x(), r.y() + titlebar->height() + (shademode ? 5 : 1), - r.width(), r.height() - titlebar->height() - 2 ); - } else { - cr = r; - } - - if (!childWidget) - return; - - windowSize = cr.size(); - childWidget->setGeometry( cr ); - ((QWorkspaceP*) parentWidget() )->updateWorkspace(); -} - -QSize QWorkspacePChild::baseSize() const -{ - int th = titlebar ? titlebar->sizeHint().height() : 0; - return QSize( 2*frameWidth(), 2*frameWidth() + th + 2 ); -} - -QSize QWorkspacePChild::sizeHint() const -{ - if ( !childWidget ) - return QFrame::sizeHint() + baseSize(); - return childWidget->sizeHint().expandedTo( childWidget->minimumSizeHint() ) + baseSize(); -} - -QSize QWorkspacePChild::minimumSizeHint() const -{ - if ( !childWidget ) - return QFrame::minimumSizeHint() + baseSize(); - QSize s = childWidget->minimumSize(); - if ( s.isEmpty() ) - s = childWidget->minimumSizeHint(); - return s + baseSize(); -} - -void QWorkspacePChild::activate() -{ - ((QWorkspaceP*)parentWidget())->activateWindow( windowWidget() ); -} - -bool QWorkspacePChild::eventFilter( QObject * o, QEvent * e) -{ - if ( !isActive() && ( e->type() == QEvent::MouseButtonPress || - e->type() == QEvent::FocusIn ) ) { - if ( iconw ) { - ((QWorkspaceP*)parentWidget())->normalizeWindow( windowWidget() ); - if ( iconw ) { - ((QWorkspaceP*)parentWidget())->removeIcon( iconw->parentWidget() ); - delete iconw->parentWidget(); - iconw = 0; - } - } - activate(); - } - - // for all widgets except the window, we that's the only thing we - // process, and if we have no childWidget we skip totally - if ( o != childWidget || childWidget == 0 ) - return FALSE; - - switch ( e->type() ) { - case QEvent::Show: - if ( ((QWorkspaceP*)parentWidget())->d->focus.find( this ) < 0 ) - ((QWorkspaceP*)parentWidget())->d->focus.append( this ); - if ( isVisibleTo( parentWidget() ) ) - break; - if (( (QShowEvent*)e)->spontaneous() ) - break; - // fall through - case QEvent::ShowToParent: - if ( windowWidget() && windowWidget()->testWFlags( WStyle_StaysOnTop ) ) { - internalRaise(); - show(); - } - ((QWorkspaceP*)parentWidget())->showWindow( windowWidget() ); - break; - case QEvent::ShowMaximized: - if ( windowWidget()->maximumSize().isValid() && - ( windowWidget()->maximumWidth() < parentWidget()->width() || - windowWidget()->maximumHeight() < parentWidget()->height() ) ) { - windowWidget()->resize( windowWidget()->maximumSize() ); - break; - } - if ( windowWidget()->testWFlags( WStyle_Maximize ) && !windowWidget()->testWFlags( WStyle_Tool ) ) - ((QWorkspaceP*)parentWidget())->maximizeWindow( windowWidget() ); - else - ((QWorkspaceP*)parentWidget())->normalizeWindow( windowWidget() ); - break; - case QEvent::ShowMinimized: - ((QWorkspaceP*)parentWidget())->minimizeWindow( windowWidget() ); - break; - case QEvent::ShowNormal: - ((QWorkspaceP*)parentWidget())->normalizeWindow( windowWidget() ); - if (iconw) { - ((QWorkspaceP*)parentWidget())->removeIcon( iconw->parentWidget() ); - delete iconw->parentWidget(); - } - break; - case QEvent::Hide: - case QEvent::HideToParent: - if ( !childWidget->isVisibleTo( this ) ) { - QWidget * w = iconw; - if ( w && ( w = w->parentWidget() ) ) { - ((QWorkspaceP*)parentWidget())->removeIcon( w ); - delete w; - } - hide(); - } - break; - case QEvent::CaptionChange: -#ifndef QT_NO_WIDGET_TOPEXTRA - setCaption( childWidget->caption() ); - if ( iconw ) - iconw->setCaption( childWidget->caption() ); -#endif - break; - case QEvent::IconChange: - { - QWorkspaceP* ws = (QWorkspaceP*)parentWidget(); - if ( !titlebar ) - break; -#ifndef QT_NO_WIDGET_TOPEXTRA - if ( childWidget->icon() ) { - titlebar->setIcon( *childWidget->icon() ); - } else -#endif - { - QPixmap pm; - titlebar->setIcon( pm ); - } - - if ( ws->d->maxWindow != this ) - break; - - if ( ws->d->maxtools ) { -#ifndef QT_NO_WIDGET_TOPEXTRA - if ( childWidget->icon() ) { - QPixmap pm(*childWidget->icon()); - if(pm.width() != 14 || pm.height() != 14) { - QImage im; - im = pm; - pm = im.smoothScale( 14, 14 ); - } - ws->d->maxtools->setPixmap( pm ); - } else -#endif - { - QPixmap pm(14,14); - pm.fill( white ); - ws->d->maxtools->setPixmap( pm ); - } - } - } - break; - case QEvent::Resize: - { - QResizeEvent* re = (QResizeEvent*)e; - if ( re->size() != windowSize && !shademode ) - resize( re->size() + baseSize() ); - } - break; - - case QEvent::WindowDeactivate: - if ( titlebar ) - titlebar->setActive( FALSE ); - break; - - case QEvent::WindowActivate: - if ( titlebar ) - titlebar->setActive( act ); - break; - - default: - break; - } - - return QFrame::eventFilter(o, e); -} - -bool QWorkspacePChild::focusNextPrevChild( bool next ) -{ - QFocusData *f = focusData(); - - QWidget *startingPoint = f->home(); - QWidget *candidate = 0; - QWidget *w = next ? f->next() : f->prev(); - while( !candidate && w != startingPoint ) { - if ( w != startingPoint && - (w->focusPolicy() & TabFocus) == TabFocus - && w->isEnabled() &&!w->focusProxy() && w->isVisible() ) - candidate = w; - w = next ? f->next() : f->prev(); - } - - if ( candidate ) { - QObjectList *ol = queryList(); - bool ischild = ol->findRef( candidate ) != -1; - delete ol; - if ( !ischild ) { - startingPoint = f->home(); - QWidget *nw = next ? f->prev() : f->next(); - QObjectList *ol2 = queryList(); - QWidget *lastValid = 0; - candidate = startingPoint; - while ( nw != startingPoint ) { - if ( ( candidate->focusPolicy() & TabFocus ) == TabFocus - && candidate->isEnabled() &&!candidate->focusProxy() && candidate->isVisible() ) - lastValid = candidate; - if ( ol2->findRef( nw ) == -1 ) { - candidate = lastValid; - break; - } - candidate = nw; - nw = next ? f->prev() : f->next(); - } - delete ol2; - } - } - - if ( !candidate ) - return FALSE; - - candidate->setFocus(); - return TRUE; -} - -void QWorkspacePChild::childEvent( QChildEvent* e) -{ - if ( e->type() == QEvent::ChildRemoved && e->child() == childWidget ) { - childWidget = 0; - if ( iconw ) { - ((QWorkspaceP*)parentWidget())->removeIcon( iconw->parentWidget() ); - delete iconw->parentWidget(); - } - close(); - } -} - - -void QWorkspacePChild::doResize() -{ - widgetResizeHandler->doResize(); -} - -void QWorkspacePChild::doMove() -{ - widgetResizeHandler->doMove(); -} - -void QWorkspacePChild::enterEvent( QEvent * ) -{ -} - -void QWorkspacePChild::leaveEvent( QEvent * ) -{ -#ifndef QT_NO_CURSOR - if ( !widgetResizeHandler->isButtonDown() ) - setCursor( arrowCursor ); -#endif -} - -void QWorkspacePChild::drawFrame( QPainter *p ) -{ - QStyle::SFlags flags = QStyle::Style_Default; - QStyleOption opt(lineWidth(),midLineWidth()); - - if ( act ) - flags |= QStyle::Style_Active; - - style().drawPrimitive( QStyle::PE_WindowFrame, p, rect(), colorGroup(), flags, opt ); -} - -void QWorkspacePChild::styleChange( QStyle & ) -{ - resizeEvent( 0 ); - if ( iconw ) { - QVBox *vbox = (QVBox*)iconw->parentWidget()->qt_cast( "QVBox" ); - Q_ASSERT(vbox); - if ( !style().styleHint( QStyle::SH_TitleBar_NoBorder ) ) { - vbox->setFrameStyle( QFrame::WinPanel | QFrame::Raised ); - vbox->resize( 196+2*vbox->frameWidth(), 20 + 2*vbox->frameWidth() ); - } else { - vbox->resize( 196, 20 ); - } - } -} - -static bool isChildOf( QWidget * child, QWidget * parent ) -{ - if ( !parent || !child ) - return FALSE; - QWidget * w = child; - while( w && w != parent ) - w = w->parentWidget(); - return w != 0; -} - - -void QWorkspacePChild::setActive( bool b ) -{ - if ( !childWidget ) - return; - - if ( act == b ) - return; - - act = b; - repaint( FALSE ); - - if ( titlebar ) - titlebar->setActive( act ); - if ( iconw ) - iconw->setActive( act ); - - QObjectList* ol = childWidget->queryList( "QWidget" ); - if ( act ) { - QObject *o; - for ( o = ol->first(); o; o = ol->next() ) - o->removeEventFilter( this ); - bool hasFocus = isChildOf( focusWidget(), childWidget ); - if ( !hasFocus ) { - if ( lastfocusw && ol->contains( lastfocusw ) && - lastfocusw->focusPolicy() != NoFocus ) { - // this is a bug if lastfocusw has been deleted, a new - // widget has been created, and the new one is a child - // of the same window as the old one. but even though - // it's a bug the behaviour is reasonable - lastfocusw->setFocus(); - } else if ( childWidget->focusPolicy() != NoFocus ) { - childWidget->setFocus(); - } else { - // find something, anything, that accepts focus, and use that. - o = ol->first(); - while( o && ((QWidget*)o)->focusPolicy() == NoFocus ) - o = ol->next(); - if ( o ) - ((QWidget*)o)->setFocus(); - } - } - } else { - lastfocusw = 0; - if ( isChildOf( focusWidget(), childWidget ) ) - lastfocusw = focusWidget(); - QObject * o; - for ( o = ol->first(); o; o = ol->next() ) { - o->removeEventFilter( this ); - o->installEventFilter( this ); - } - } - delete ol; -} - -bool QWorkspacePChild::isActive() const -{ - return act; -} - -QWidget* QWorkspacePChild::windowWidget() const -{ - return childWidget; -} - - -QWidget* QWorkspacePChild::iconWidget() const -{ - if ( !iconw ) { - QWorkspacePChild* that = (QWorkspacePChild*) this; - QVBox* vbox = new QVBox(0, "qt_vbox" ); - if ( !style().styleHint( QStyle::SH_TitleBar_NoBorder ) ) { - vbox->setFrameStyle( QFrame::WinPanel | QFrame::Raised ); - vbox->resize( 196+2*vbox->frameWidth(), 20 + 2*vbox->frameWidth() ); - } else { - vbox->resize( 196, 20 ); - } - QTitleBarP *tb = new QTitleBarP( windowWidget(), vbox, "_workspacechild_icon_"); - ((QWorkspacePChild*)tb)->setWState( WState_Minimized ); - that->iconw = tb; - iconw->setActive( isActive() ); - connect( iconw, SIGNAL( doActivate() ), - this, SLOT( activate() ) ); - connect( iconw, SIGNAL( doClose() ), - windowWidget(), SLOT( close() ) ); - connect( iconw, SIGNAL( doNormal() ), - this, SLOT( showNormal() ) ); - connect( iconw, SIGNAL( doMaximize() ), - this, SLOT( showMaximized() ) ); - connect( iconw, SIGNAL( popupOperationMenu( const QPoint& ) ), - this, SIGNAL( popupOperationMenu( const QPoint& ) ) ); - connect( iconw, SIGNAL( showOperationMenu() ), - this, SIGNAL( showOperationMenu() ) ); - connect( iconw, SIGNAL( doubleClicked() ), - this, SLOT( titleBarDoubleClicked() ) ); - } -#ifndef QT_NO_WIDGET_TOPEXTRA - if ( windowWidget() ) { - iconw->setCaption( windowWidget()->caption() ); - if ( windowWidget()->icon() ) - iconw->setIcon( *windowWidget()->icon() ); - } -#endif - return iconw->parentWidget(); -} - -void QWorkspacePChild::showMinimized() -{ - QApplication::postEvent( windowWidget(), new QEvent( QEvent::ShowMinimized ) ); -} - -void QWorkspacePChild::showMaximized() -{ - QApplication::postEvent( windowWidget(), new QEvent( QEvent::ShowMaximized ) ); -} - -void QWorkspacePChild::showNormal() -{ - QApplication::postEvent( windowWidget(), new QEvent( QEvent::ShowNormal ) ); -} - -void QWorkspacePChild::showShaded() -{ - if ( !titlebar) - return; - Q_ASSERT( windowWidget()->testWFlags( WStyle_MinMax ) && windowWidget()->testWFlags( WStyle_Tool ) ); - ((QWorkspaceP*)parentWidget())->activateWindow( windowWidget() ); - if ( shademode ) { - QWorkspacePChild* fake = (QWorkspacePChild*)windowWidget(); - fake->clearWState( WState_Minimized ); - clearWState( WState_Minimized ); - - shademode = FALSE; - resize( shadeRestore ); - setMinimumSize( shadeRestoreMin ); - } else { - shadeRestore = size(); - shadeRestoreMin = minimumSize(); - setMinimumHeight(0); - shademode = TRUE; - QWorkspacePChild* fake = (QWorkspacePChild*)windowWidget(); - fake->setWState( WState_Minimized ); - setWState( WState_Minimized ); - - resize( width(), titlebar->height() + 2*lineWidth() + 1 ); - } - titlebar->update(); -} - -void QWorkspacePChild::titleBarDoubleClicked() -{ - if ( !windowWidget() ) - return; - if ( windowWidget()->testWFlags( WStyle_MinMax ) ) { - if ( windowWidget()->testWFlags( WStyle_Tool ) ) - showShaded(); - else if ( iconw ) - showNormal(); - else if ( windowWidget()->testWFlags( WStyle_Maximize ) ) - showMaximized(); - } -} - -void QWorkspacePChild::adjustToFullscreen() -{ - qApp->sendPostedEvents( this, QEvent::Resize ); - qApp->sendPostedEvents( childWidget, QEvent::Resize ); - qApp->sendPostedEvents( childWidget, QEvent::Move ); - if(style().styleHint(QStyle::SH_Workspace_FillSpaceOnMaximize, this)) { - setGeometry( 0, 0, parentWidget()->width(), parentWidget()->height()); - } else { - setGeometry( -childWidget->x(), -childWidget->y(), - parentWidget()->width() + width() - childWidget->width(), - parentWidget()->height() + height() - childWidget->height() ); - } - setWState( WState_Maximized ); - ((QWorkspacePChild*)childWidget)->setWState( WState_Maximized ); -} - -void QWorkspacePChild::adjustSize() -{ - if ( !testWState(WState_Polished) ) - polish(); - - QSize prefSize = windowWidget()->sizeHint().expandedTo( windowWidget()->minimumSizeHint() ); - prefSize = prefSize.expandedTo( windowWidget()->minimumSize() ).boundedTo( windowWidget()->maximumSize() ); - prefSize += baseSize(); - - resize( prefSize ); -} - -void QWorkspacePChild::setCaption( const QString& cap ) -{ - if ( titlebar ) - titlebar->setCaption( cap ); -#ifndef QT_NO_WIDGET_TOPEXTRA - QWidget::setCaption( cap ); -#endif -} - -void QWorkspacePChild::internalRaise() -{ - setUpdatesEnabled( FALSE ); - if ( iconw ) - iconw->parentWidget()->raise(); - raise(); - - if ( !windowWidget() || windowWidget()->testWFlags( WStyle_StaysOnTop ) ) { - setUpdatesEnabled( TRUE ); - return; - } - - QPtrListIterator it( ((QWorkspaceP*)parent())->d->windows ); - while ( it.current () ) { - QWorkspacePChild* c = it.current(); - ++it; - if ( c->windowWidget() && - !c->windowWidget()->isHidden() && - c->windowWidget()->testWFlags( WStyle_StaysOnTop ) ) - c->raise(); - } - - setUpdatesEnabled( TRUE ); -} - -void QWorkspacePChild::move( int x, int y ) -{ - int nx = x; - int ny = y; - - if ( windowWidget() && windowWidget()->testWFlags( WStyle_Tool ) ) { - int dx = 10; - int dy = 10; - - if ( QABS( x ) < dx ) - nx = 0; - if ( QABS( y ) < dy ) - ny = 0; - if ( QABS( x + width() - parentWidget()->width() ) < dx ) { - nx = parentWidget()->width() - width(); - snappedRight = TRUE; - } else - snappedRight = FALSE; - - if ( QABS( y + height() - parentWidget()->height() ) < dy ) { - ny = parentWidget()->height() - height(); - snappedDown = TRUE; - } else - snappedDown = FALSE; - } - QFrame::move( nx, ny ); -} - -bool QWorkspaceP::scrollBarsEnabled() const -{ - return d->vbar != 0; -} - -/*! \property QWorkspaceP::scrollBarsEnabled - \brief whether the workspace provides scrollbars - - If this property is set to TRUE, it is possible to resize child - windows over the right or the bottom edge out of the visible area - of the workspace. The workspace shows scrollbars to make it - possible for the user to access those windows. If this property is - set to FALSE (the default), resizing windows out of the visible - area of the workspace is not permitted. -*/ -void QWorkspaceP::setScrollBarsEnabled( bool enable ) -{ - if ( (d->vbar != 0) == enable ) - return; - - d->xoffset = d->yoffset = 0; - if ( enable ) { - d->vbar = new QScrollBar( Vertical, this, "vertical scrollbar" ); - connect( d->vbar, SIGNAL( valueChanged(int) ), this, SLOT( scrollBarChanged() ) ); - d->hbar = new QScrollBar( Horizontal, this, "horizontal scrollbar" ); - connect( d->hbar, SIGNAL( valueChanged(int) ), this, SLOT( scrollBarChanged() ) ); - d->corner = new QWidget( this, "qt_corner" ); - updateWorkspace(); - } else { - delete d->vbar; - delete d->hbar; - delete d->corner; - d->vbar = d->hbar = 0; - d->corner = 0; - } - - QPtrListIterator it( d->windows ); - while ( it.current () ) { - QWorkspacePChild *child = it.current(); - ++it; - child->widgetResizeHandler->setSizeProtection( !enable ); - } -} - -QRect QWorkspaceP::updateWorkspace() -{ - if ( !isUpdatesEnabled() ) - return rect(); - - QRect cr( rect() ); - - if ( scrollBarsEnabled() && !d->maxWindow ) { - d->corner->raise(); - d->vbar->raise(); - d->hbar->raise(); - if ( d->maxWindow ) - d->maxWindow->raise(); - - QRect r( 0, 0, 0, 0 ); - QPtrListIterator it( d->windows ); - while ( it.current () ) { - QWorkspacePChild *child = it.current(); - ++it; - if ( !child->isHidden() ) - r = r.unite( child->geometry() ); - } - d->vbar->blockSignals( TRUE ); - d->hbar->blockSignals( TRUE ); - - int hsbExt = d->hbar->sizeHint().height(); - int vsbExt = d->vbar->sizeHint().width(); - - - bool showv = d->yoffset || d->yoffset + r.bottom() - height() + 1 > 0 || d->yoffset + r.top() < 0; - bool showh = d->xoffset || d->xoffset + r.right() - width() + 1 > 0 || d->xoffset + r.left() < 0; - - if ( showh && !showv) - showv = d->yoffset + r.bottom() - height() + hsbExt + 1 > 0; - if ( showv && !showh ) - showh = d->xoffset + r.right() - width() + vsbExt + 1 > 0; - - if ( !showh ) - hsbExt = 0; - if ( !showv ) - vsbExt = 0; - - if ( showv ) { - d->vbar->setSteps( QMAX( height() / 12, 30 ), height() - hsbExt ); - d->vbar->setRange( QMIN( 0, d->yoffset + QMIN( 0, r.top() ) ), QMAX( 0, d->yoffset + QMAX( 0, r.bottom() - height() + hsbExt + 1) ) ); - d->vbar->setGeometry( width() - vsbExt, 0, vsbExt, height() - hsbExt ); - d->vbar->setValue( d->yoffset ); - d->vbar->show(); - } else { - d->vbar->hide(); - } - - if ( showh ) { - d->hbar->setSteps( QMAX( width() / 12, 30 ), width() - vsbExt ); - d->hbar->setRange( QMIN( 0, d->xoffset + QMIN( 0, r.left() ) ), QMAX( 0, d->xoffset + QMAX( 0, r.right() - width() + vsbExt + 1) ) ); - d->hbar->setGeometry( 0, height() - hsbExt, width() - vsbExt, hsbExt ); - d->hbar->setValue( d->xoffset ); - d->hbar->show(); - } else { - d->hbar->hide(); - } - - if ( showh && showv ) { - d->corner->setGeometry( width() - vsbExt, height() - hsbExt, vsbExt, hsbExt ); - d->corner->show(); - } else { - d->corner->hide(); - } - - d->vbar->blockSignals( FALSE ); - d->hbar->blockSignals( FALSE ); - - cr.setRect( 0, 0, width() - vsbExt, height() - hsbExt ); - } - - QPtrListIterator ii( d->icons ); - while ( ii.current() ) { - QWorkspacePChild* w = (QWorkspacePChild*)ii.current(); - ++ii; - int x = w->x(); - int y = w->y(); - bool m = FALSE; - if ( x+w->width() > cr.width() ) { - m = TRUE; - x = cr.width() - w->width(); - } - if ( y+w->height() > cr.height() ) { - y = cr.height() - w->height(); - m = TRUE; - } - if ( m ) - w->move( x, y ); - } - - return cr; - -} - -void QWorkspaceP::scrollBarChanged() -{ - int ver = d->yoffset - d->vbar->value(); - int hor = d->xoffset - d->hbar->value(); - d->yoffset = d->vbar->value(); - d->xoffset = d->hbar->value(); - - QPtrListIterator it( d->windows ); - while ( it.current () ) { - QWorkspacePChild *child = it.current(); - ++it; - // we do not use move() due to the reimplementation in QWorkspacePChild - child->setGeometry( child->x() + hor, child->y() + ver, child->width(), child->height() ); - } - updateWorkspace(); -} - -#ifndef QT_NO_STYLE -/*!\reimp */ -void QWorkspaceP::styleChange( QStyle &olds ) -{ - int fs = style().styleHint(QStyle::SH_Workspace_FillSpaceOnMaximize, this); - if ( isVisibleTo(0) && d->maxWindow && - fs != olds.styleHint(QStyle::SH_Workspace_FillSpaceOnMaximize, this)) { - if( fs ) - hideMaximizeControls(); - else - showMaximizeControls(); - } - QWidget::styleChange(olds); -} -#endif - -#define RANGE 4 - -static bool resizeHorizontalDirectionFixed = FALSE; -static bool resizeVerticalDirectionFixed = FALSE; - -QWidgetResizeHandlerP::QWidgetResizeHandlerP( QWidget *parent, QWidget *cw, const char *name ) - : QObject( parent, name ), widget( parent ), childWidget( cw ? cw : parent ), - extrahei( 0 ), buttonDown( FALSE ), moveResizeMode( FALSE ), sizeprotect( TRUE ), moving( TRUE ) -{ - mode = Nowhere; - widget->setMouseTracking( TRUE ); - range = widget->inherits( "QFrame" ) ? ((QFrame*)widget)->frameWidth() : RANGE; - range = QMAX( RANGE, range ); - active = TRUE; - qApp->installEventFilter( this ); -} - -static QWidget *childOf( QWidget *w, QWidget *child ) -{ - while ( child ) { - if ( child == w ) - return child; - child = child->parentWidget(); - } - return 0; -} - -bool QWidgetResizeHandlerP::eventFilter( QObject *o, QEvent *ee ) -{ - if ( !active || !o->isWidgetType() ) - return FALSE; - - QWidget *w = childOf( widget, (QWidget*)o ); - if ( !w || o->inherits( "QSizeGrip" ) ) - return FALSE; - - QMouseEvent *e = (QMouseEvent*)ee; - switch ( e->type() ) { - case QEvent::MouseButtonPress: { - if ( w->isMaximized() ) - break; - if ( !widget->rect().contains( widget->mapFromGlobal( e->globalPos() ) ) ) - return FALSE; - if ( e->button() == LeftButton ) { - emit activate(); - bool me = isMovingEnabled(); - setMovingEnabled( me && o == widget ); - mouseMoveEvent( e ); - setMovingEnabled( me ); - buttonDown = TRUE; - moveOffset = widget->mapFromGlobal( e->globalPos() ); - invertedMoveOffset = widget->rect().bottomRight() - moveOffset; - } - } break; - case QEvent::MouseButtonRelease: - if ( w->isMaximized() ) - break; - if ( e->button() == LeftButton ) { - moveResizeMode = FALSE; - buttonDown = FALSE; - widget->releaseMouse(); - widget->releaseKeyboard(); - } - break; - case QEvent::MouseMove: { - if ( w->isMaximized() ) - break; - bool me = isMovingEnabled(); - setMovingEnabled( me && o == widget ); - mouseMoveEvent( e ); - setMovingEnabled( me ); - if ( buttonDown && mode != Center ) - return TRUE; - } break; - case QEvent::KeyPress: - keyPressEvent( (QKeyEvent*)e ); - break; - case QEvent::AccelOverride: - if ( buttonDown ) { - ((QKeyEvent*)ee)->accept(); - return TRUE; - } - break; - default: - break; - } - return FALSE; -} - -void QWidgetResizeHandlerP::mouseMoveEvent( QMouseEvent *e ) -{ - QPoint pos = widget->mapFromGlobal( e->globalPos() ); - if ( !moveResizeMode && ( !buttonDown || ( e->state() & LeftButton ) == 0 ) ) { - if ( pos.y() <= range && pos.x() <= range) - mode = TopLeft; - else if ( pos.y() >= widget->height()-range && pos.x() >= widget->width()-range) - mode = BottomRight; - else if ( pos.y() >= widget->height()-range && pos.x() <= range) - mode = BottomLeft; - else if ( pos.y() <= range && pos.x() >= widget->width()-range) - mode = TopRight; - else if ( pos.y() <= range ) - mode = Top; - else if ( pos.y() >= widget->height()-range ) - mode = Bottom; - else if ( pos.x() <= range ) - mode = Left; - else if ( pos.x() >= widget->width()-range ) - mode = Right; - else - mode = Center; - - if ( widget->isMinimized() ) - mode = Center; -#ifndef QT_NO_CURSOR - setMouseCursor( mode ); -#endif - return; - } - - if ( buttonDown && !isMovingEnabled() && mode == Center && !moveResizeMode ) - return; - - if ( widget->testWState( WState_ConfigPending ) ) - return; - - QPoint globalPos = widget->parentWidget( TRUE ) ? - widget->parentWidget( TRUE )->mapFromGlobal( e->globalPos() ) : e->globalPos(); - if ( widget->parentWidget( TRUE ) && !widget->parentWidget( TRUE )->rect().contains( globalPos ) ) { - if ( globalPos.x() < 0 ) - globalPos.rx() = 0; - if ( globalPos.y() < 0 ) - globalPos.ry() = 0; - if ( sizeprotect && globalPos.x() > widget->parentWidget()->width() ) - globalPos.rx() = widget->parentWidget()->width(); - if ( sizeprotect && globalPos.y() > widget->parentWidget()->height() ) - globalPos.ry() = widget->parentWidget()->height(); - } - - QPoint p = globalPos + invertedMoveOffset; - QPoint pp = globalPos - moveOffset; - - int fw = 0; - int mw = QMAX( childWidget->minimumSizeHint().width(), - childWidget->minimumWidth() ); - int mh = QMAX( childWidget->minimumSizeHint().height(), - childWidget->minimumHeight() ); - if ( childWidget != widget ) { - if ( widget->inherits( "QFrame" ) ) - fw = ( (QFrame *) widget )->frameWidth(); - mw += 2 * fw; - mh += 2 * fw + extrahei; - } - - QSize mpsize( widget->geometry().right() - pp.x() + 1, - widget->geometry().bottom() - pp.y() + 1 ); - mpsize = mpsize.expandedTo( widget->minimumSize() ).expandedTo( QSize(mw, mh) ); - QPoint mp( widget->geometry().right() - mpsize.width() + 1, - widget->geometry().bottom() - mpsize.height() + 1 ); - - QRect geom = widget->geometry(); - - switch ( mode ) { - case TopLeft: - geom = QRect( mp, widget->geometry().bottomRight() ) ; - break; - case BottomRight: - geom = QRect( widget->geometry().topLeft(), p ) ; - break; - case BottomLeft: - geom = QRect( QPoint(mp.x(), widget->geometry().y() ), QPoint( widget->geometry().right(), p.y()) ) ; - break; - case TopRight: - geom = QRect( QPoint( widget->geometry().x(), mp.y() ), QPoint( p.x(), widget->geometry().bottom()) ) ; - break; - case Top: - geom = QRect( QPoint( widget->geometry().left(), mp.y() ), widget->geometry().bottomRight() ) ; - break; - case Bottom: - geom = QRect( widget->geometry().topLeft(), QPoint( widget->geometry().right(), p.y() ) ) ; - break; - case Left: - geom = QRect( QPoint( mp.x(), widget->geometry().top() ), widget->geometry().bottomRight() ) ; - break; - case Right: - geom = QRect( widget->geometry().topLeft(), QPoint( p.x(), widget->geometry().bottom() ) ) ; - break; - case Center: - if ( isMovingEnabled() || moveResizeMode ) - geom.moveTopLeft( pp ); - break; - default: - break; - } - - QSize maxsize( childWidget->maximumSize() ); - if ( childWidget != widget ) - maxsize += QSize( 2 * fw, 2 * fw + extrahei ); - - geom = QRect( geom.topLeft(), - geom.size().expandedTo( widget->minimumSize() ) - .expandedTo( QSize(mw, mh) ) - .boundedTo( maxsize ) ); - - if ( geom != widget->geometry() && - ( widget->isTopLevel() || widget->parentWidget()->rect().intersects( geom ) ) ) { - if ( widget->isMinimized() ) - widget->move( geom.topLeft() ); - else - widget->setGeometry( geom ); - } - -#if defined(Q_WS_WIN) - MSG msg; -#if defined(UNICODE) -# ifndef Q_OS_TEMP - if ( qWinVersion() & WV_NT_based ) { -# endif - while(PeekMessageW( &msg, widget->winId(), WM_MOUSEMOVE, WM_MOUSEMOVE, PM_REMOVE )) - ; -# ifndef Q_OS_TEMP - } else -# endif -#endif -#ifndef Q_OS_TEMP - { - while(PeekMessageA( &msg, widget->winId(), WM_MOUSEMOVE, WM_MOUSEMOVE, PM_REMOVE )) - ; - } -#endif -#endif - - QApplication::syncX(); -} - -void QWidgetResizeHandlerP::setMouseCursor( MousePosition m ) -{ -#ifndef QT_NO_CURSOR - switch ( m ) { - case TopLeft: - case BottomRight: - widget->setCursor( sizeFDiagCursor ); - break; - case BottomLeft: - case TopRight: - widget->setCursor( sizeBDiagCursor ); - break; - case Top: - case Bottom: - widget->setCursor( sizeVerCursor ); - break; - case Left: - case Right: - widget->setCursor( sizeHorCursor ); - break; - default: - widget->setCursor( arrowCursor ); - break; - } -#endif -} - -void QWidgetResizeHandlerP::keyPressEvent( QKeyEvent * e ) -{ - if ( !isMove() && !isResize() ) - return; - bool is_control = e->state() & ControlButton; - int delta = is_control?1:8; - QPoint pos = QCursor::pos(); - switch ( e->key() ) { - case Key_Left: - pos.rx() -= delta; - if ( pos.x() <= QApplication::desktop()->geometry().left() ) { - if ( mode == TopLeft || mode == BottomLeft ) { - moveOffset.rx() += delta; - invertedMoveOffset.rx() += delta; - } else { - moveOffset.rx() -= delta; - invertedMoveOffset.rx() -= delta; - } - } - if ( isResize() && !resizeHorizontalDirectionFixed ) { - resizeHorizontalDirectionFixed = TRUE; - if ( mode == BottomRight ) - mode = BottomLeft; - else if ( mode == TopRight ) - mode = TopLeft; -#ifndef QT_NO_CURSOR - setMouseCursor( mode ); - widget->grabMouse( widget->cursor() ); -#else - widget->grabMouse(); -#endif - } - break; - case Key_Right: - pos.rx() += delta; - if ( pos.x() >= QApplication::desktop()->geometry().right() ) { - if ( mode == TopRight || mode == BottomRight ) { - moveOffset.rx() += delta; - invertedMoveOffset.rx() += delta; - } else { - moveOffset.rx() -= delta; - invertedMoveOffset.rx() -= delta; - } - } - if ( isResize() && !resizeHorizontalDirectionFixed ) { - resizeHorizontalDirectionFixed = TRUE; - if ( mode == BottomLeft ) - mode = BottomRight; - else if ( mode == TopLeft ) - mode = TopRight; -#ifndef QT_NO_CURSOR - setMouseCursor( mode ); - widget->grabMouse( widget->cursor() ); -#else - widget->grabMouse(); -#endif - } - break; - case Key_Up: - pos.ry() -= delta; - if ( pos.y() <= QApplication::desktop()->geometry().top() ) { - if ( mode == TopLeft || mode == TopRight ) { - moveOffset.ry() += delta; - invertedMoveOffset.ry() += delta; - } else { - moveOffset.ry() -= delta; - invertedMoveOffset.ry() -= delta; - } - } - if ( isResize() && !resizeVerticalDirectionFixed ) { - resizeVerticalDirectionFixed = TRUE; - if ( mode == BottomLeft ) - mode = TopLeft; - else if ( mode == BottomRight ) - mode = TopRight; -#ifndef QT_NO_CURSOR - setMouseCursor( mode ); - widget->grabMouse( widget->cursor() ); -#else - widget->grabMouse(); -#endif - } - break; - case Key_Down: - pos.ry() += delta; - if ( pos.y() >= QApplication::desktop()->geometry().bottom() ) { - if ( mode == BottomLeft || mode == BottomRight ) { - moveOffset.ry() += delta; - invertedMoveOffset.ry() += delta; - } else { - moveOffset.ry() -= delta; - invertedMoveOffset.ry() -= delta; - } - } - if ( isResize() && !resizeVerticalDirectionFixed ) { - resizeVerticalDirectionFixed = TRUE; - if ( mode == TopLeft ) - mode = BottomLeft; - else if ( mode == TopRight ) - mode = BottomRight; -#ifndef QT_NO_CURSOR - setMouseCursor( mode ); - widget->grabMouse( widget->cursor() ); -#else - widget->grabMouse(); -#endif - } - break; - case Key_Space: - case Key_Return: - case Key_Enter: - case Key_Escape: - moveResizeMode = FALSE; - widget->releaseMouse(); - widget->releaseKeyboard(); - buttonDown = FALSE; - break; - default: - return; - } - QCursor::setPos( pos ); -} - - -void QWidgetResizeHandlerP::doResize() -{ - if ( !active ) - return; - - moveResizeMode = TRUE; - buttonDown = TRUE; - moveOffset = widget->mapFromGlobal( QCursor::pos() ); - if ( moveOffset.x() < widget->width()/2) { - if ( moveOffset.y() < widget->height()/2) - mode = TopLeft; - else - mode = BottomLeft; - } else { - if ( moveOffset.y() < widget->height()/2) - mode = TopRight; - else - mode = BottomRight; - } - invertedMoveOffset = widget->rect().bottomRight() - moveOffset; -#ifndef QT_NO_CURSOR - setMouseCursor( mode ); - widget->grabMouse( widget->cursor() ); -#else - widget->grabMouse(); -#endif - widget->grabKeyboard(); - resizeHorizontalDirectionFixed = FALSE; - resizeVerticalDirectionFixed = FALSE; -} - -void QWidgetResizeHandlerP::doMove() -{ - if ( !active ) - return; - - mode = Center; - moveResizeMode = TRUE; - buttonDown = TRUE; - moveOffset = widget->mapFromGlobal( QCursor::pos() ); - invertedMoveOffset = widget->rect().bottomRight() - moveOffset; -#ifndef QT_NO_CURSOR - widget->grabMouse( SizeAllCursor ); -#else - widget->grabMouse(); -#endif - widget->grabKeyboard(); -} - -#ifndef QT_NO_TOOLTIP -class QTitleBarPTip : public QToolTip -{ -public: - QTitleBarPTip( QWidget * parent ) : QToolTip( parent ) { } - - void maybeTip( const QPoint &pos ) - { - if ( !parentWidget()->inherits( "QTitleBarP" ) ) - return; - QTitleBarP *t = (QTitleBarP *)parentWidget(); - - QString tipstring; - QStyle::SubControl ctrl = t->style().querySubControl(QStyle::CC_TitleBar, t, pos); - QSize controlSize = t->style().querySubControlMetrics(QStyle::CC_TitleBar, t, ctrl).size(); - - QWidget *window = t->window(); - if ( window ) { - switch(ctrl) { - case QStyle::SC_TitleBarSysMenu: - if ( t->testWFlags( WStyle_SysMenu ) ) - tipstring = QTitleBarP::tr( "System Menu" ); - break; - - case QStyle::SC_TitleBarShadeButton: - if ( t->testWFlags( WStyle_Tool ) && t->testWFlags( WStyle_MinMax ) ) - tipstring = QTitleBarP::tr( "Shade" ); - break; - - case QStyle::SC_TitleBarUnshadeButton: - if ( t->testWFlags( WStyle_Tool ) && t->testWFlags( WStyle_MinMax ) ) - tipstring = QTitleBarP::tr( "Unshade" ); - break; - - case QStyle::SC_TitleBarNormalButton: - case QStyle::SC_TitleBarMinButton: - if ( !t->testWFlags( WStyle_Tool ) && t->testWFlags( WStyle_Minimize ) ) { - if( window->isMinimized() ) - tipstring = QTitleBarP::tr( "Normalize" ); - else - tipstring = QTitleBarP::tr( "Minimize" ); - } - break; - - case QStyle::SC_TitleBarMaxButton: - if ( !t->testWFlags( WStyle_Tool ) && t->testWFlags( WStyle_Maximize ) ) - tipstring = QTitleBarP::tr( "Maximize" ); - break; - - case QStyle::SC_TitleBarCloseButton: - if ( t->testWFlags( WStyle_SysMenu ) ) - tipstring = QTitleBarP::tr( "Close" ); - break; - - default: - break; - } - } -#ifndef QT_NO_WIDGET_TOPEXTRA - if ( tipstring.isEmpty() ) { - if ( t->visibleText() != t->caption() ) - tipstring = t->caption(); - } -#endif - if(!tipstring.isEmpty()) - tip( QRect(pos, controlSize), tipstring ); - } -}; -#endif - -class QTitleBarPPrivate -{ -public: - QTitleBarPPrivate() - : toolTip( 0 ), act( 0 ), window( 0 ), movable( 1 ), pressed( 0 ), autoraise(0) - { - } - - QStyle::SCFlags buttonDown; - QPoint moveOffset; - QToolTip *toolTip; - bool act :1; - QWidget* window; - bool movable :1; - bool pressed :1; - bool autoraise :1; - QString cuttext; -}; - -QTitleBarP::QTitleBarP(QWidget* w, QWidget* parent, const char* name) - : QWidget( parent, name, WStyle_Customize | WStyle_NoBorder | WResizeNoErase | WRepaintNoErase ) -{ - d = new QTitleBarPPrivate(); - -#ifndef QT_NO_TOOLTIP - d->toolTip = new QTitleBarPTip( this ); -#endif - d->window = w; - d->buttonDown = QStyle::SC_None; - d->act = 0; - if ( w ) { - setWFlags( ((QTitleBarP*)w)->getWFlags() | WResizeNoErase | WRepaintNoErase ); -#ifndef QT_NO_WIDGET_TOPEXTRA - setCaption( w->caption() ); -#endif - } else { - setWFlags( WStyle_Customize | WResizeNoErase | WRepaintNoErase ); - } - - readColors(); - setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - setMouseTracking(TRUE); -} - -QTitleBarP::~QTitleBarP() -{ -#ifndef QT_NO_TOOLTIP - delete d->toolTip; -#endif - - delete d; - d = 0; -} - -#ifdef Q_WS_WIN -extern QRgb qt_colorref2qrgb(COLORREF col); -#endif - -void QTitleBarP::readColors() -{ - QPalette pal = palette(); - -#ifdef Q_WS_WIN // ask system properties on windows -#ifndef SPI_GETGRADIENTCAPTIONS -#define SPI_GETGRADIENTCAPTIONS 0x1008 -#endif -#ifndef COLOR_GRADIENTACTIVECAPTION -#define COLOR_GRADIENTACTIVECAPTION 27 -#endif -#ifndef COLOR_GRADIENTINACTIVECAPTION -#define COLOR_GRADIENTINACTIVECAPTION 28 -#endif - if ( QApplication::desktopSettingsAware() ) { - pal.setColor( QPalette::Active, QColorGroup::Highlight, qt_colorref2qrgb(GetSysColor(COLOR_ACTIVECAPTION)) ); - pal.setColor( QPalette::Inactive, QColorGroup::Highlight, qt_colorref2qrgb(GetSysColor(COLOR_INACTIVECAPTION)) ); - pal.setColor( QPalette::Active, QColorGroup::HighlightedText, qt_colorref2qrgb(GetSysColor(COLOR_CAPTIONTEXT)) ); - pal.setColor( QPalette::Inactive, QColorGroup::HighlightedText, qt_colorref2qrgb(GetSysColor(COLOR_INACTIVECAPTIONTEXT)) ); - if ( qt_winver != Qt::WV_95 && qt_winver != WV_NT ) { - BOOL gradient; -#ifdef Q_OS_TEMP - SystemParametersInfo( SPI_GETGRADIENTCAPTIONS, 0, &gradient, 0 ); -#else -#if defined(UNICODE) - if ( qt_winver & Qt::WV_NT_based ) - SystemParametersInfo( SPI_GETGRADIENTCAPTIONS, 0, &gradient, 0 ); - else -#endif - SystemParametersInfoA( SPI_GETGRADIENTCAPTIONS, 0, &gradient, 0 ); -#endif - if ( gradient ) { - pal.setColor( QPalette::Active, QColorGroup::Base, qt_colorref2qrgb(GetSysColor(COLOR_GRADIENTACTIVECAPTION)) ); - pal.setColor( QPalette::Inactive, QColorGroup::Base, qt_colorref2qrgb(GetSysColor(COLOR_GRADIENTINACTIVECAPTION)) ); - } else { - pal.setColor( QPalette::Active, QColorGroup::Base, palette().active().highlight() ); - pal.setColor( QPalette::Inactive, QColorGroup::Base, palette().inactive().highlight() ); - } - } - } else -#endif // Q_WS_WIN - { - pal.setColor( QPalette::Active, QColorGroup::Highlight, palette().active().highlight() ); - pal.setColor( QPalette::Active, QColorGroup::Base, palette().active().highlight() ); - pal.setColor( QPalette::Inactive, QColorGroup::Highlight, palette().inactive().dark() ); - pal.setColor( QPalette::Inactive, QColorGroup::Base, palette().inactive().dark() ); - pal.setColor( QPalette::Inactive, QColorGroup::HighlightedText, palette().inactive().background() ); - } - - setPalette( pal ); - setActive( d->act ); -} - -void QTitleBarP::mousePressEvent( QMouseEvent * e) -{ - emit doActivate(); - if ( e->button() == LeftButton ) { - d->pressed = TRUE; - QStyle::SCFlags ctrl = style().querySubControl(QStyle::CC_TitleBar, this, e->pos()); - switch (ctrl) { - case QStyle::SC_TitleBarSysMenu: - if ( testWFlags( WStyle_SysMenu ) && !testWFlags( WStyle_Tool ) ) { - d->buttonDown = QStyle::SC_None; - static QTime* t = 0; - static QTitleBarP* tc = 0; - if ( !t ) - t = new QTime; - if ( tc != this || t->elapsed() > QApplication::doubleClickInterval() ) { - emit showOperationMenu(); - t->start(); - tc = this; - } else { - tc = 0; - emit doClose(); - return; - } - } - break; - - case QStyle::SC_TitleBarShadeButton: - case QStyle::SC_TitleBarUnshadeButton: - if ( testWFlags( WStyle_MinMax ) && testWFlags( WStyle_Tool ) ) - d->buttonDown = ctrl; - break; - - case QStyle::SC_TitleBarNormalButton: - if( testWFlags( WStyle_Minimize ) && !testWFlags( WStyle_Tool ) ) - d->buttonDown = ctrl; - break; - - case QStyle::SC_TitleBarMinButton: - if( testWFlags( WStyle_Minimize ) && !testWFlags( WStyle_Tool ) ) - d->buttonDown = ctrl; - break; - - case QStyle::SC_TitleBarMaxButton: - if ( testWFlags( WStyle_Maximize ) && !testWFlags( WStyle_Tool ) ) - d->buttonDown = ctrl; - break; - - case QStyle::SC_TitleBarCloseButton: - if ( testWFlags( WStyle_SysMenu ) ) - d->buttonDown = ctrl; - break; - - case QStyle::SC_TitleBarLabel: - d->buttonDown = ctrl; - d->moveOffset = mapToParent( e->pos() ); - break; - - default: - break; - } - repaint( FALSE ); - } else { - d->pressed = FALSE; - } -} - -void QTitleBarP::contextMenuEvent( QContextMenuEvent *e ) -{ - QStyle::SCFlags ctrl = style().querySubControl(QStyle::CC_TitleBar, this, e->pos()); - if( ctrl == QStyle::SC_TitleBarLabel || ctrl == QStyle::SC_TitleBarSysMenu ) { - emit popupOperationMenu(e->globalPos()); - e->accept(); - } -} - -void QTitleBarP::mouseReleaseEvent( QMouseEvent * e) -{ - if ( e->button() == LeftButton && d->pressed) { - QStyle::SCFlags ctrl = style().querySubControl(QStyle::CC_TitleBar, this, e->pos()); - - if (ctrl == d->buttonDown) { - switch(ctrl) { - case QStyle::SC_TitleBarShadeButton: - case QStyle::SC_TitleBarUnshadeButton: - if( testWFlags( WStyle_MinMax ) && testWFlags( WStyle_Tool ) ) - emit doShade(); - break; - - case QStyle::SC_TitleBarNormalButton: - if( testWFlags( WStyle_MinMax ) && !testWFlags( WStyle_Tool ) ) - emit doNormal(); - break; - - case QStyle::SC_TitleBarMinButton: - if( testWFlags( WStyle_Minimize ) && !testWFlags( WStyle_Tool ) ) - emit doMinimize(); - break; - - case QStyle::SC_TitleBarMaxButton: - if( d->window && testWFlags( WStyle_Maximize ) && !testWFlags( WStyle_Tool ) ) { - if(d->window->isMaximized()) - emit doNormal(); - else - emit doMaximize(); - } - break; - - case QStyle::SC_TitleBarCloseButton: - if( testWFlags( WStyle_SysMenu ) ) { - d->buttonDown = QStyle::SC_None; - repaint(FALSE); - emit doClose(); - return; - } - break; - - default: - break; - } - } - d->buttonDown = QStyle::SC_None; - repaint(FALSE); - d->pressed = FALSE; - } -} - -void QTitleBarP::mouseMoveEvent( QMouseEvent * e) -{ - switch (d->buttonDown) { - case QStyle::SC_None: - if(autoRaise()) - repaint( FALSE ); - break; - case QStyle::SC_TitleBarSysMenu: - break; - case QStyle::SC_TitleBarShadeButton: - case QStyle::SC_TitleBarUnshadeButton: - case QStyle::SC_TitleBarNormalButton: - case QStyle::SC_TitleBarMinButton: - case QStyle::SC_TitleBarMaxButton: - case QStyle::SC_TitleBarCloseButton: - { - QStyle::SCFlags last_ctrl = d->buttonDown; - d->buttonDown = style().querySubControl(QStyle::CC_TitleBar, this, e->pos()); - if( d->buttonDown != last_ctrl) - d->buttonDown = QStyle::SC_None; - repaint(FALSE); - d->buttonDown = last_ctrl; - } - break; - - case QStyle::SC_TitleBarLabel: - if ( d->buttonDown == QStyle::SC_TitleBarLabel && d->movable && d->pressed ) { - if ( (d->moveOffset - mapToParent( e->pos() ) ).manhattanLength() >= 4 ) { - QPoint p = mapFromGlobal(e->globalPos()); -#ifndef QT_NO_WORKSPACE - if(d->window && d->window->parentWidget()->inherits("QWorkspacePChild")) { - QWidget *w = d->window->parentWidget()->parentWidget(); - if(w && w->inherits("QWorkspaceP")) { - QWorkspaceP *workspace = (QWorkspaceP*)w; - p = workspace->mapFromGlobal( e->globalPos() ); - if ( !workspace->rect().contains(p) ) { - if ( p.x() < 0 ) - p.rx() = 0; - if ( p.y() < 0 ) - p.ry() = 0; - if ( p.x() > workspace->width() ) - p.rx() = workspace->width(); - if ( p.y() > workspace->height() ) - p.ry() = workspace->height(); - } - } - } -#endif - QPoint pp = p - d->moveOffset; - parentWidget()->move( pp ); - } - } else { - QStyle::SCFlags last_ctrl = d->buttonDown; - d->buttonDown = QStyle::SC_None; - if( d->buttonDown != last_ctrl) - repaint(FALSE); - } - break; - } -} - -void QTitleBarP::resizeEvent( QResizeEvent *r) -{ - QWidget::resizeEvent(r); - cutText(); -} - -void QTitleBarP::paintEvent(QPaintEvent *) -{ - QStyle::SCFlags ctrls = QStyle::SC_TitleBarLabel; - if ( testWFlags( WStyle_SysMenu) ) { - if ( testWFlags( WStyle_Tool ) ) { - ctrls |= QStyle::SC_TitleBarCloseButton; - if ( d->window && testWFlags( WStyle_MinMax ) ) { - if ( d->window->isMinimized() ) - ctrls |= QStyle::SC_TitleBarUnshadeButton; - else - ctrls |= QStyle::SC_TitleBarShadeButton; - } - } else { - ctrls |= QStyle::SC_TitleBarSysMenu | QStyle::SC_TitleBarCloseButton; - if ( d->window && testWFlags( WStyle_Minimize ) ) { - if( d->window && d->window->isMinimized() ) - ctrls |= QStyle::SC_TitleBarNormalButton; - else - ctrls |= QStyle::SC_TitleBarMinButton; - } - if ( d->window && testWFlags( WStyle_Maximize ) && !d->window->isMaximized() ) - ctrls |= QStyle::SC_TitleBarMaxButton; - } - } - - QStyle::SCFlags under_mouse = QStyle::SC_None; - if( autoRaise() && hasMouse() ) { - QPoint p(mapFromGlobal(QCursor::pos())); - under_mouse = style().querySubControl(QStyle::CC_TitleBar, this, p); - ctrls ^= under_mouse; - } - - // QSharedDoubleBuffer buffer( (bool)FALSE, (bool)FALSE ); - // buffer.begin( this, rect() ); - QSharedDoubleBuffer buffer( this, rect() ); - style().drawComplexControl(QStyle::CC_TitleBar, buffer.painter(), this, rect(), - colorGroup(), - isEnabled() ? QStyle::Style_Enabled : - QStyle::Style_Default, ctrls, d->buttonDown); - if(under_mouse != QStyle::SC_None) - style().drawComplexControl(QStyle::CC_TitleBar, buffer.painter(), this, rect(), - colorGroup(), - QStyle::Style_MouseOver | - (isEnabled() ? QStyle::Style_Enabled : 0), - under_mouse, d->buttonDown); -} - -void QTitleBarP::mouseDoubleClickEvent( QMouseEvent *e ) -{ - if ( e->button() != LeftButton ) - return; - - switch(style().querySubControl(QStyle::CC_TitleBar, this, e->pos())) { - case QStyle::SC_TitleBarLabel: - emit doubleClicked(); - break; - - case QStyle::SC_TitleBarSysMenu: - if ( testWFlags( WStyle_SysMenu ) ) - emit doClose(); - break; - - default: - break; - } -} - -void QTitleBarP::cutText() -{ -#ifndef QT_NO_WIDGET_TOPEXTRA - QFontMetrics fm( font() ); - - int maxw = style().querySubControlMetrics(QStyle::CC_TitleBar, this, - QStyle::SC_TitleBarLabel).width(); - if ( !d->window ) - maxw = width() - 20; - const QString txt = caption(); - d->cuttext = txt; - if ( fm.width( txt + "m" ) > maxw ) { - int i = txt.length(); - int dotlength = fm.width( "..." ); - while ( i>0 && fm.width(txt.left( i )) + dotlength > maxw ) - i--; - if(i != (int)txt.length()) - d->cuttext = txt.left( i ) + "..."; - } -#endif -} - -void QTitleBarP::setCaption( const QString& title ) -{ -#ifndef QT_NO_WIDGET_TOPEXTRA - if( caption() == title) - return; - QWidget::setCaption( title ); - cutText(); - - update(); -#endif -} - - -void QTitleBarP::setIcon( const QPixmap& icon ) -{ -#ifndef QT_NO_WIDGET_TOPEXTRA -#ifndef QT_NO_IMAGE_SMOOTHSCALE - QRect menur = style().querySubControlMetrics(QStyle::CC_TitleBar, this, - QStyle::SC_TitleBarSysMenu); - - QPixmap theIcon; - if (icon.width() > menur.width()) { - // try to keep something close to the same aspect - int aspect = (icon.height() * 100) / icon.width(); - int newh = (aspect * menur.width()) / 100; - theIcon.convertFromImage( icon.convertToImage().smoothScale(menur.width(), - newh) ); - } else if (icon.height() > menur.height()) { - // try to keep something close to the same aspect - int aspect = (icon.width() * 100) / icon.height(); - int neww = (aspect * menur.height()) / 100; - theIcon.convertFromImage( icon.convertToImage().smoothScale(neww, - menur.height()) ); - } else - theIcon = icon; - - QWidget::setIcon( theIcon ); -#else - QWidget::setIcon( icon ); -#endif - - update(); -#endif -} - -void QTitleBarP::leaveEvent( QEvent * ) -{ - if(autoRaise() && !d->pressed) - repaint( FALSE ); -} - -void QTitleBarP::enterEvent( QEvent * ) -{ - if(autoRaise() && !d->pressed) - repaint( FALSE ); - QEvent e( QEvent::Leave ); - QApplication::sendEvent( parentWidget(), &e ); -} - -void QTitleBarP::setActive( bool active ) -{ - if ( d->act == active ) - return ; - - d->act = active; - update(); -} - -bool QTitleBarP::isActive() const -{ - return d->act; -} - -bool QTitleBarP::usesActiveColor() const -{ - return ( isActive() && isActiveWindow() ) || - ( !window() && topLevelWidget()->isActiveWindow() ); -} - -QString QTitleBarP::visibleText() const -{ - return d->cuttext; -} - -QWidget *QTitleBarP::window() const -{ - return d->window; -} - -bool QTitleBarP::event( QEvent* e ) -{ - if ( e->type() == QEvent::ApplicationPaletteChange ) { - readColors(); - return TRUE; - } else if ( e->type() == QEvent::WindowActivate ) { - setActive( d->act ); - } else if ( e->type() == QEvent::WindowDeactivate ) { - bool wasActive = d->act; - setActive( FALSE ); - d->act = wasActive; - } - - return QWidget::event( e ); -} - -void QTitleBarP::setMovable(bool b) -{ - d->movable = b; -} - -bool QTitleBarP::isMovable() const -{ - return d->movable; -} - -void QTitleBarP::setAutoRaise(bool b) -{ - d->autoraise = b; -} - -bool QTitleBarP::autoRaise() const -{ - return d->autoraise; -} - -QSize QTitleBarP::sizeHint() const -{ - constPolish(); - QRect menur = style().querySubControlMetrics(QStyle::CC_TitleBar, this, - QStyle::SC_TitleBarSysMenu); - return QSize( menur.width(), style().pixelMetric( QStyle::PM_TitleBarHeight, this ) ); -} - diff --git a/src/PatchQt/qworkspaceP.h b/src/PatchQt/qworkspaceP.h deleted file mode 100644 index fb1523735..000000000 --- a/src/PatchQt/qworkspaceP.h +++ /dev/null @@ -1,354 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Module : PatchQt -// File : qworkspaceP.h -// Description : the patch for Qt's QWorkspace class (qworkspace.h) -///////////////////////////////////////////////////////////////////////////// - -/**************************************************************************** -** $Id$ -** -** Definition of the QWorkspace class -** -** Created : 990210 -** -** Copyright (C) 1999-2000 Trolltech AS. All rights reserved. -** -** This file is part of the workspace module of the Qt GUI Toolkit. -** -** This file may be distributed under the terms of the Q Public License -** as defined by Trolltech AS of Norway and appearing in the file -** LICENSE.QPL included in the packaging of this file. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** Licensees holding valid Qt Enterprise Edition licenses may use this -** file in accordance with the Qt Commercial License Agreement provided -** with the Software. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for -** information about Qt Commercial License Agreements. -** See http://www.trolltech.com/qpl/ for QPL licensing information. -** See http://www.trolltech.com/gpl/ for GPL licensing information. -** -** Contact info@trolltech.com if any conditions of this licensing are -** not clear to you. -** -**********************************************************************/ - -#ifndef QWORKSPACEP_H -#define QWORKSPACEP_H - -#ifndef QT_H -#include -#include -#include -#include -#include -#include -#include -#endif // QT_H - -class QWorkspacePChild; -class QShowEvent; -class QWorkspacePPrivate; -class QPopupMenu; -class QWidgetResizeHandlerP; -class QTitleBarP; - -class Q_EXPORT QWorkspaceP : public QWidget -{ - Q_OBJECT - Q_PROPERTY( bool scrollBarsEnabled READ scrollBarsEnabled WRITE setScrollBarsEnabled ) -public: - QWorkspaceP( QWidget* parent=0, const char* name=0 ); - ~QWorkspaceP(); - - QWidget* activeWindow() const; - QWidgetList windowList() const; - - QSize sizeHint() const; - - bool scrollBarsEnabled() const; - void setScrollBarsEnabled( bool enable ); - - void setPaletteBackgroundColor( const QColor & ); - void setPaletteBackgroundPixmap( const QPixmap & ); - -signals: - void windowActivated( QWidget* w); - -public slots: - void cascade(); - void tile(); - -protected: -#ifndef QT_NO_STYLE - void styleChange( QStyle& ); -#endif - void childEvent( QChildEvent * ); - void resizeEvent( QResizeEvent * ); - bool eventFilter( QObject *, QEvent * ); - void showEvent( QShowEvent *e ); - void hideEvent( QHideEvent *e ); -#ifndef QT_NO_WHEELEVENT - void wheelEvent( QWheelEvent *e ); -#endif - -private slots: - void closeActiveWindow(); - void closeAllWindows(); - void normalizeActiveWindow(); - void minimizeActiveWindow(); - void showOperationMenu(); - void popupOperationMenu( const QPoint& ); - void operationMenuActivated( int ); - void operationMenuAboutToShow(); - void toolMenuAboutToShow(); - void scrollBarChanged(); -public slots: - void activateNextWindow(); - void activatePreviousWindow(); - -public: - void activateWindow( QWidget* w, bool change_focus = TRUE ); - -private: - void insertIcon( QWidget* w); - void removeIcon( QWidget* w); - void place( QWidget* ); - - QWorkspacePChild* findChild( QWidget* w); - void showMaximizeControls(); - void hideMaximizeControls(); - void showWindow( QWidget* w); - void maximizeWindow( QWidget* w); - void minimizeWindow( QWidget* w); - void normalizeWindow( QWidget* w); - - QRect updateWorkspace(); - - QPopupMenu* popup; - QWorkspacePPrivate* d; - - friend class QWorkspacePChild; - -private: // Disabled copy constructor and operator= -#if defined(Q_DISABLE_COPY) - QWorkspaceP( const QWorkspaceP & ); - QWorkspaceP& operator=( const QWorkspaceP & ); -#endif -}; - -class QWorkspacePChild : public QFrame -{ - Q_OBJECT - - friend class QWorkspaceP; - friend class QTitleBarP; - -public: - QWorkspacePChild( QWidget* window, - QWorkspaceP* parent=0, const char* name=0 ); - ~QWorkspacePChild(); - - void setActive( bool ); - bool isActive() const; - - void adjustToFullscreen(); - void adjustSize(); - - QWidget* windowWidget() const; - QWidget* iconWidget() const; - - void doResize(); - void doMove(); - - QSize sizeHint() const; - QSize minimumSizeHint() const; - - QSize baseSize() const; - -signals: - void showOperationMenu(); - void popupOperationMenu( const QPoint& ); - -public slots: - void activate(); - void showMinimized(); - void showMaximized(); - void showNormal(); - void showShaded(); - void setCaption( const QString& ); - void internalRaise(); - void titleBarDoubleClicked(); - - void move( int x, int y ); - -protected: - void enterEvent( QEvent * ); - void leaveEvent( QEvent * ); - void childEvent( QChildEvent* ); - void resizeEvent( QResizeEvent * ); - void moveEvent( QMoveEvent * ); - bool eventFilter( QObject *, QEvent * ); - - bool focusNextPrevChild( bool ); - - void drawFrame( QPainter * ); - void styleChange( QStyle & ); - -private: - QWidget* childWidget; - QWidget* lastfocusw; - QWidgetResizeHandlerP *widgetResizeHandler; - QTitleBarP* titlebar; - QGuardedPtr iconw; - QSize windowSize; - QSize shadeRestore; - QSize shadeRestoreMin; - bool act :1; - bool shademode :1; - bool snappedRight :1; - bool snappedDown :1; -}; - -#ifndef QT_H -#endif // QT_H -class QMouseEvent; -class QKeyEvent; - -class Q_EXPORT QWidgetResizeHandlerP : public QObject -{ - Q_OBJECT - -public: - QWidgetResizeHandlerP( QWidget *parent, QWidget *cw = 0, const char *name = 0 ); - void setActive( bool b ) { active = b; if ( !active ) setMouseCursor( Nowhere ); } - bool isActive() const { return active; } - void setMovingEnabled( bool b ) { moving = b; } - bool isMovingEnabled() const { return moving; } - - bool isButtonDown() const { return buttonDown; } - - void setExtraHeight( int h ) { extrahei = h; } - void setSizeProtection( bool b ) { sizeprotect = b; } - - void doResize(); - void doMove(); - -signals: - void activate(); - -protected: - bool eventFilter( QObject *o, QEvent *e ); - void mouseMoveEvent( QMouseEvent *e ); - void keyPressEvent( QKeyEvent *e ); - -private: - enum MousePosition { - Nowhere, - TopLeft, BottomRight, BottomLeft, TopRight, - Top, Bottom, Left, Right, - Center - }; - - QWidget *widget; - QWidget *childWidget; - QPoint moveOffset; - QPoint invertedMoveOffset; - MousePosition mode; - int extrahei; - int range; - uint buttonDown :1; - uint moveResizeMode :1; - uint active :1; - uint sizeprotect :1; - uint moving :1; - - void setMouseCursor( MousePosition m ); - bool isMove() const { - return moveResizeMode && mode == Center; - } - bool isResize() const { - return moveResizeMode && !isMove(); - } - -private: // Disabled copy constructor and operator= -#if defined(Q_DISABLE_COPY) - QWidgetResizeHandlerP( const QWidgetResizeHandlerP & ); - QWidgetResizeHandlerP& operator=( const QWidgetResizeHandlerP & ); -#endif - -}; - -class QToolTip; -class QTitleBarPPrivate; -class QPixmap; - -class Q_EXPORT QTitleBarP : public QWidget -{ - Q_OBJECT - Q_PROPERTY( bool autoRaise READ autoRaise WRITE setAutoRaise ) - Q_PROPERTY( bool movable READ isMovable WRITE setMovable ) - -public: - QTitleBarP (QWidget* w, QWidget* parent, const char* name=0); - ~QTitleBarP(); - - bool isActive() const; - bool usesActiveColor() const; - virtual QString visibleText() const; - - bool isMovable() const; - void setMovable(bool); - - bool autoRaise() const; - void setAutoRaise(bool); - - QWidget *window() const; - - QSize sizeHint() const; - -public slots: - void setActive( bool ); - void setCaption( const QString& title ); - void setIcon( const QPixmap& icon ); - -signals: - void doActivate(); - void doNormal(); - void doClose(); - void doMaximize(); - void doMinimize(); - void doShade(); - void showOperationMenu(); - void popupOperationMenu( const QPoint& ); - void doubleClicked(); - -protected: - bool event( QEvent *); - void resizeEvent( QResizeEvent *); - void contextMenuEvent( QContextMenuEvent * ); - void mousePressEvent( QMouseEvent * ); - void mouseDoubleClickEvent( QMouseEvent * ); - void mouseReleaseEvent( QMouseEvent * ); - void mouseMoveEvent( QMouseEvent * ); - void enterEvent( QEvent *e ); - void leaveEvent( QEvent *e ); - void paintEvent( QPaintEvent *p ); - - virtual void cutText(); - -private: - void readColors(); - - QTitleBarPPrivate *d; -}; - -#endif // QWORKSPACEP_H diff --git a/src/Plot2d/Makefile.in b/src/Plot2d/Makefile.in deleted file mode 100644 index ca9f91bf1..000000000 --- a/src/Plot2d/Makefile.in +++ /dev/null @@ -1,58 +0,0 @@ -# source path -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -EXPORT_HEADERS = \ - Plot2d.h \ - Plot2d_Curve.h \ - Plot2d_CurveContainer.h \ - Plot2d_ViewFrame.h \ - Plot2d_SetupViewDlg.h \ - Plot2d_SetupPlot2dDlg.h \ - Plot2d_FitDataDlg.h \ - Plot2d_Prs.h - -# .po files to transform in .qm -#PO_FILES = \ - -# Libraries targets - -LIB = libPlot2d.la -LIB_SRC = \ - Plot2d.cxx \ - Plot2d_Curve.cxx \ - Plot2d_CurveContainer.cxx \ - Plot2d_ViewFrame.cxx \ - Plot2d_SetupViewDlg.cxx \ - Plot2d_SetupPlot2dDlg.cxx \ - Plot2d_FitDataDlg.cxx \ - Plot2d_Prs.cxx - -LIB_MOC = \ - Plot2d.h \ - Plot2d_ViewFrame.h \ - Plot2d_SetupViewDlg.h \ - Plot2d_SetupPlot2dDlg.h \ - Plot2d_FitDataDlg.h - -LIB_CLIENT_IDL = SALOMEDS.idl \ - SALOME_ModuleCatalog.idl \ - SALOME_Component.idl \ - SALOME_ContainerManager.idl \ - SALOME_Exception.idl - -CPPFLAGS+=$(QT_INCLUDES) $(OCC_INCLUDES) $(OGL_INCLUDES) $(PYTHON_INCLUDES) $(QWT_INCLUDES) -LDFLAGS+=$(QT_MT_LIBS) $(OGL_LIBS) $(QWT_LIBS) -lSalomePrs -lSalomeGUI - - -@CONCLUDE@ - - - - - diff --git a/src/Plot2d/Plot2d.cxx b/src/Plot2d/Plot2d.cxx deleted file mode 100644 index 3034de6e6..000000000 --- a/src/Plot2d/Plot2d.cxx +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : Plot2d.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "Plot2d.h" -#include "Plot2d_ViewFrame.h" -using namespace std; - -QAD_ViewFrame* Plot2d::createView(QAD_RightFrame* parent) -{ - return new Plot2d_ViewFrame( parent, "plotView" ); -} - -extern "C" -{ - QAD_ViewFrame* createView(QAD_RightFrame* parent) - { - return Plot2d::createView(parent); - } -} diff --git a/src/Plot2d/Plot2d.h b/src/Plot2d/Plot2d.h deleted file mode 100644 index c05af67f3..000000000 --- a/src/Plot2d/Plot2d.h +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : Plot2d.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef Plot2d_HeaderFile -#define Plot2d_HeaderFile - -#include "QAD_RightFrame.h" -#include "QAD_ViewFrame.h" - -class Plot2d : public QObject -{ - Q_OBJECT - -public : - - Standard_EXPORT static QAD_ViewFrame* createView ( QAD_RightFrame* parent); - -}; - -#endif // Plot2d_HeaderFile diff --git a/src/Plot2d/Plot2d_Curve.cxx b/src/Plot2d/Plot2d_Curve.cxx deleted file mode 100644 index e32f477e0..000000000 --- a/src/Plot2d/Plot2d_Curve.cxx +++ /dev/null @@ -1,227 +0,0 @@ -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : Plot2d_Curve.cxx -// Author : Vadim SANDLER -// Module : SALOME -// $Header$ - -#include "Plot2d_Curve.h" -#include "utilities.h" -using namespace std; - -/*! - Constructor -*/ -Plot2d_Curve::Plot2d_Curve() - : myHorTitle( "" ), myVerTitle( "" ), - myHorUnits( "" ), myVerUnits( "" ), - myAutoAssign( true ), myColor( 0,0,0 ), myMarker( Circle ), myLine( Solid ), myLineWidth( 0 ) -{ -} -/*! - Destructor -*/ -Plot2d_Curve::~Plot2d_Curve() -{ -// MESSAGE("Plot2d_Curve::~Plot2d_Curve"); -} -/*! - Copy constructor. Makes deep copy of data. -*/ -Plot2d_Curve::Plot2d_Curve( const Plot2d_Curve& curve ) -{ - myAutoAssign = curve.isAutoAssign(); - myHorTitle = curve.getHorTitle(); - myVerTitle = curve.getVerTitle(); - myHorUnits = curve.getHorUnits(); - myVerUnits = curve.getVerUnits(); - myColor = curve.getColor(); - myMarker = curve.getMarker(); - myLine = curve.getLine(); - myLineWidth = curve.getLineWidth(); - myHorData.duplicate( curve.horData(), curve.nbPoints() ); - myVerData.duplicate( curve.verData(), curve.nbPoints() ); -} -/*! - operator=. Makes deep copy of data. -*/ -Plot2d_Curve& Plot2d_Curve::operator=( const Plot2d_Curve& curve ) -{ - myAutoAssign = curve.isAutoAssign(); - myHorTitle = curve.getHorTitle(); - myVerTitle = curve.getVerTitle(); - myHorUnits = curve.getHorUnits(); - myVerUnits = curve.getVerUnits(); - myColor = curve.getColor(); - myMarker = curve.getMarker(); - myLine = curve.getLine(); - myLineWidth = curve.getLineWidth(); - myHorData.duplicate( curve.horData(), curve.nbPoints() ); - myVerData.duplicate( curve.verData(), curve.nbPoints() ); - return *this; -} -/*! - Sets curve's horizontal title -*/ -void Plot2d_Curve::setHorTitle( const QString& title ) -{ - myHorTitle = title; -} -/*! - Gets curve's horizontal title -*/ -QString Plot2d_Curve::getHorTitle() const -{ - return myHorTitle; -} -/*! - Sets curve's vertical title -*/ -void Plot2d_Curve::setVerTitle( const QString& title ) -{ - myVerTitle = title; -} -/*! - Gets curve's vertical title -*/ -QString Plot2d_Curve::getVerTitle() const -{ - return myVerTitle; -} -/*! - Sets curve's horizontal units -*/ -void Plot2d_Curve::setHorUnits( const QString& units ) -{ - myHorUnits = units; -} -/*! - Gets curve's horizontal units -*/ -QString Plot2d_Curve::getHorUnits() const -{ - return myHorUnits; -} -/*! - Sets curve's vertical units -*/ -void Plot2d_Curve::setVerUnits( const QString& units ) -{ - myVerUnits = units; -} -/*! - Gets curve's vertical units -*/ -QString Plot2d_Curve::getVerUnits() const -{ - return myVerUnits; -} -/*! - Sets curve's data. Makes shallow copy of data. -*/ -void Plot2d_Curve::setData( const double* hData, const double* vData, long size ) -{ - myHorData.assign( hData, size ); - myVerData.assign( vData, size ); -} -/*! - Gets curve's data : abscissas of points -*/ -double* Plot2d_Curve::horData() const -{ - return myHorData.data(); -} -/*! - Gets curve's data : ordinates of points -*/ -double* Plot2d_Curve::verData() const -{ - return myVerData.data(); -} -/*! - Gets curve's data : number of points -*/ -long Plot2d_Curve::nbPoints() const -{ - return myHorData.size(); -} -/*! - Returns true if curve has no data -*/ -bool Plot2d_Curve::isEmpty() const -{ - return ( myHorData.isEmpty() || myVerData.isEmpty() ); -} -/*! - Sets curve's AutoAssign flag - in this case attributes will be set automatically -*/ -void Plot2d_Curve::setAutoAssign( bool on ) -{ - myAutoAssign = on; -} -/*! - Gets curve's AutoAssign flag state -*/ -bool Plot2d_Curve::isAutoAssign() const -{ - return myAutoAssign; -} -/*! - Sets curve's color ( and resets AutoAssign flag ) -*/ -void Plot2d_Curve::setColor( const QColor color ) -{ - myColor = color; - myAutoAssign = false; -} -/*! - Gets curve's color -*/ -QColor Plot2d_Curve::getColor() const -{ - return myColor; -} -/*! - Sets curve's marker ( and resets AutoAssign flag ) -*/ -void Plot2d_Curve::setMarker( MarkerType marker ) -{ - myMarker = marker; - myAutoAssign = false; -} -/*! - Gets curve's marker -*/ -Plot2d_Curve::MarkerType Plot2d_Curve::getMarker() const -{ - return myMarker; -} -/*! - Sets curve's line type and width ( and resets AutoAssign flag ) - NOTE : A line width of 0 will produce a 1 pixel wide line using a fast algorithm for diagonals. - A line width of 1 will also produce a 1 pixel wide line, but uses a slower more accurate algorithm for diagonals. - For horizontal and vertical lines a line width of 0 is the same as a line width of 1. -*/ -void Plot2d_Curve::setLine( LineType line, const int lineWidth ) -{ - myLine = line; - myLineWidth = lineWidth; - if ( myLineWidth < 0 ) myLineWidth = 0; - myAutoAssign = false; -} -/*! - Gets curve's line type -*/ -Plot2d_Curve::LineType Plot2d_Curve::getLine() const -{ - return myLine; -} -/*! - Gets curve's line width -*/ -int Plot2d_Curve::getLineWidth() const -{ - return myLineWidth; -} diff --git a/src/Plot2d/Plot2d_Curve.h b/src/Plot2d/Plot2d_Curve.h deleted file mode 100644 index 5cc959483..000000000 --- a/src/Plot2d/Plot2d_Curve.h +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : Plot2d_Curve.h -// Author : Vadim SANDLER -// Module : SALOME -// $Header$ - -#ifndef Plot2d_Curve_h -#define Plot2d_Curve_h - -#include -#include -#include -#ifndef _Handle_SALOME_InteractiveObject_HeaderFile -#include -#endif -#include "SALOME_InteractiveObject.hxx" - -typedef QMemArray DoubleArray; - -class Plot2d_Curve -{ -public: - enum MarkerType { None, Circle, Rectangle, Diamond, - DTriangle, UTriangle, LTriangle, RTriangle, - Cross, XCross }; - enum LineType { NoPen, Solid, Dash, Dot, DashDot, DashDotDot }; - - Plot2d_Curve(); - ~Plot2d_Curve(); - Plot2d_Curve( const Plot2d_Curve& curve ); - Plot2d_Curve& operator= ( const Plot2d_Curve& curve ); - - void setHorTitle( const QString& title ); - QString getHorTitle() const; - void setVerTitle( const QString& title ); - QString getVerTitle() const; - void setHorUnits( const QString& units ); - QString getHorUnits() const; - void setVerUnits( const QString& units ); - QString getVerUnits() const; - void setData( const double* hData, const double* vData, long size ); - double* horData() const; - double* verData() const; - long nbPoints() const; - bool isEmpty() const; - - void setAutoAssign( bool on ); - bool isAutoAssign() const; - void setColor( const QColor color ); - QColor getColor() const; - void setMarker( MarkerType marker ); - MarkerType getMarker() const; - void setLine( LineType line, const int lineWidth = 0 ); - LineType getLine() const; - int getLineWidth() const; - - virtual bool hasIO() { return !myIO.IsNull(); } - virtual Handle(SALOME_InteractiveObject) getIO() { return myIO; } - virtual void setIO( const Handle(SALOME_InteractiveObject)& io ) { myIO = io; } - - virtual bool hasTableIO() { return !myTableIO.IsNull(); } - virtual Handle(SALOME_InteractiveObject) getTableIO() { return myTableIO; } - virtual void setTableIO( const Handle(SALOME_InteractiveObject)& io ) { myTableIO = io; } - -private: - Handle(SALOME_InteractiveObject) myIO; - Handle(SALOME_InteractiveObject) myTableIO; - - bool myAutoAssign; - QString myHorTitle; - QString myVerTitle; - QString myHorUnits; - QString myVerUnits; - QColor myColor; - MarkerType myMarker; - LineType myLine; - int myLineWidth; - DoubleArray myHorData; - DoubleArray myVerData; -}; - -#endif // Plot2d_Curve_h - - diff --git a/src/Plot2d/Plot2d_CurveContainer.cxx b/src/Plot2d/Plot2d_CurveContainer.cxx deleted file mode 100644 index 895328d59..000000000 --- a/src/Plot2d/Plot2d_CurveContainer.cxx +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : Plot2d_CurveContainer.cxx -// Author : Vadim SANDLER -// Module : SALOME -// $Header$ - -#include "Plot2d_CurveContainer.h" -using namespace std; - -/*! - Constructor -*/ -Plot2d_CurveContainer::Plot2d_CurveContainer() -{ - myCurves.setAutoDelete( false ); -} -/*! - Destructor -*/ -Plot2d_CurveContainer::~Plot2d_CurveContainer() -{ - -} -/*! - Adds curve if not exist yet in the container -*/ -void Plot2d_CurveContainer::addCurve( Plot2d_Curve* curve ) -{ - if ( myCurves.find( curve ) < 0 ) - myCurves.append( curve ); -} -/*! - Removes curve form the container ( and deletes it if is true ) -*/ -void Plot2d_CurveContainer::removeCurve( const int index, bool alsoDelete ) -{ - Plot2d_Curve* curve = myCurves.take( index ); - if ( curve && alsoDelete ) - delete curve; -} -/*! - Clears container contents ( removes and deletes all curves ) -*/ -void Plot2d_CurveContainer::clear( bool alsoDelete ) -{ - while( myCurves.count() > 0 ) { - Plot2d_Curve* curve = myCurves.take( 0 ); - if ( curve && alsoDelete ) - delete curve; - } -} -/*! - Gets nb of curves in container -*/ -int Plot2d_CurveContainer::count() -{ - return myCurves.count(); -} -/*! - Returns true if contains no curves -*/ -bool Plot2d_CurveContainer::isEmpty() const -{ - return myCurves.isEmpty(); -} -/*! - Gets curve by index -*/ -Plot2d_Curve* Plot2d_CurveContainer::curve( const int index ) -{ - return myCurves.at( index ); -} - - diff --git a/src/Plot2d/Plot2d_CurveContainer.h b/src/Plot2d/Plot2d_CurveContainer.h deleted file mode 100644 index ff5fdfcd8..000000000 --- a/src/Plot2d/Plot2d_CurveContainer.h +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : Plot2d_CurveContainer.h -// Author : Vadim SANDLER -// Module : SALOME -// $Header$ - -#ifndef Plot2d_CurveContainer_h -#define Plot2d_CurveContainer_h - -#include "Plot2d_Curve.h" -#include - -class Plot2d_CurveContainer -{ -public: - Plot2d_CurveContainer(); - ~Plot2d_CurveContainer(); - - void addCurve( Plot2d_Curve* curve ); - void removeCurve( const int index, bool alsoDelete = false ) ; - void clear( bool alsoDelete = false ); - int count(); - bool isEmpty() const; - Plot2d_Curve* curve( const int index ); - -private: - QList myCurves; -}; - -#endif // Plot2d_CurveContainer_h - - diff --git a/src/Plot2d/Plot2d_FitDataDlg.cxx b/src/Plot2d/Plot2d_FitDataDlg.cxx deleted file mode 100644 index c9fde0205..000000000 --- a/src/Plot2d/Plot2d_FitDataDlg.cxx +++ /dev/null @@ -1,218 +0,0 @@ -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : Plot2d_FitDataDlg.cxx -// Author : Vadim SANDLER -// Module : SALOME -// $Header$ - -#include "Plot2d_FitDataDlg.h" -#include -#include -#include -#include "QAD_Tools.h" -#include "QAD_Application.h" -#include "QAD_Desktop.h" -using namespace std; - -#define SPACING_SIZE 6 -#define MARGIN_SIZE 11 -#define MIN_EDIT_SIZE 100 - -/*! - Constructor -*/ -Plot2d_FitDataDlg::Plot2d_FitDataDlg( QWidget* parent ) - : QDialog( parent ? parent : QAD_Application::getDesktop(), - "Plot2d_FitDataDlg", - true, - WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ) -{ - setCaption( tr( "FIT_DATA_TLT" ) ); - setSizeGripEnabled( TRUE ); - QGridLayout* topLayout = new QGridLayout( this ); - topLayout->setSpacing( SPACING_SIZE ); - topLayout->setMargin( MARGIN_SIZE ); - - // 'Range' group - myRangeGrp = new QButtonGroup( this ); - myRangeGrp->setColumnLayout( 0, Qt::Vertical ); - myRangeGrp->layout()->setSpacing( 0 ); - myRangeGrp->layout()->setMargin( 0 ); - QGridLayout* aGridLayout = new QGridLayout( myRangeGrp->layout() ); - aGridLayout->setAlignment( Qt::AlignTop ); - aGridLayout->setMargin( MARGIN_SIZE ); - aGridLayout->setSpacing( SPACING_SIZE ); - - myModeAllRB = new QRadioButton( tr( "FIT_ALL" ), myRangeGrp ); - myModeHorRB = new QRadioButton( tr( "FIT_HORIZONTAL" ), myRangeGrp ); - myModeVerRB = new QRadioButton( tr( "FIT_VERTICAL" ), myRangeGrp ); - - QDoubleValidator* aValidator = new QDoubleValidator( this ); - myXMinEdit = new QLineEdit( myRangeGrp ); - myXMinEdit->setValidator( aValidator ); - myXMinEdit->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myXMinEdit->setMinimumSize( MIN_EDIT_SIZE, 0 ); - myXMinEdit->setText( "0.0" ); - - myYMinEdit = new QLineEdit( myRangeGrp ); - myYMinEdit->setValidator( aValidator ); - myYMinEdit->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myYMinEdit->setMinimumSize( MIN_EDIT_SIZE, 0 ); - myYMinEdit->setText( "0.0" ); - - myXMaxEdit = new QLineEdit( myRangeGrp ); - myXMaxEdit->setValidator( aValidator ); - myXMaxEdit->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myXMaxEdit->setMinimumSize( MIN_EDIT_SIZE, 0 ); - myXMaxEdit->setText( "0.0" ); - - myYMaxEdit = new QLineEdit( myRangeGrp ); - myYMaxEdit->setValidator( aValidator ); - myYMaxEdit->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myYMaxEdit->setMinimumSize( MIN_EDIT_SIZE, 0 ); - myYMaxEdit->setText( "0.0" ); - - QFrame* aHLine = new QFrame( myRangeGrp ); - aHLine->setFrameStyle( QFrame::HLine | QFrame::Sunken ); - - QHBoxLayout* aModeLayout = new QHBoxLayout; - aModeLayout->setMargin( 0 ); - aModeLayout->setSpacing( SPACING_SIZE ); - aModeLayout->addWidget( myModeAllRB ); - aModeLayout->addWidget( myModeHorRB ); - aModeLayout->addWidget( myModeVerRB ); - - QLabel* horLab = new QLabel( tr( "HORIZONTAL_AXIS" ), myRangeGrp ); - QLabel* verLab = new QLabel( tr( "VERTICAL_AXIS" ), myRangeGrp ); - QFont font = horLab->font(); font.setBold( true ); - horLab->setFont( font ); verLab->setFont( font ); - - aGridLayout->addMultiCellLayout( aModeLayout, 0, 0, 0, 4 ); - aGridLayout->addMultiCellWidget( aHLine, 1, 1, 0, 4 ); - aGridLayout->addWidget ( horLab, 2, 0 ); - aGridLayout->addWidget ( new QLabel( tr( "MIN_VALUE_LAB" ), myRangeGrp ), - 2, 1 ); - aGridLayout->addWidget ( myXMinEdit, 2, 2 ); - aGridLayout->addWidget ( new QLabel( tr( "MAX_VALUE_LAB" ), myRangeGrp ), - 2, 3 ); - aGridLayout->addWidget ( myXMaxEdit, 2, 4 ); - aGridLayout->addWidget ( verLab, 3, 0 ); - aGridLayout->addWidget ( new QLabel( tr( "MIN_VALUE_LAB" ), myRangeGrp ), - 3, 1 ); - aGridLayout->addWidget ( myYMinEdit, 3, 2 ); - aGridLayout->addWidget ( new QLabel( tr( "MAX_VALUE_LAB" ), myRangeGrp ), - 3, 3 ); - aGridLayout->addWidget ( myYMaxEdit, 3, 4 ); - - // OK/Cancel buttons - myOkBtn = new QPushButton( tr( "BUT_OK" ), this, "buttonOk" ); - myOkBtn->setAutoDefault( TRUE ); - myOkBtn->setDefault( TRUE ); - myCancelBtn = new QPushButton( tr( "BUT_CANCEL" ), this, "buttonCancel" ); - myCancelBtn->setAutoDefault( TRUE ); - - topLayout->addMultiCellWidget( myRangeGrp, 0, 0, 0, 2 ); - topLayout->addWidget( myOkBtn, 1, 0 ); - topLayout->setColStretch( 1, 5 ); - topLayout->addWidget( myCancelBtn, 1, 2 ); - - // connect signals - connect( myOkBtn, SIGNAL( clicked() ), this, SLOT( accept() ) ); - connect( myCancelBtn, SIGNAL( clicked() ), this, SLOT( reject() ) ); - connect( myRangeGrp, SIGNAL( clicked( int ) ), this, SLOT( onModeChanged( int ) ) ); - - // initial state - myModeAllRB->setChecked( true ); - onModeChanged( 0 ); - - /* Center widget inside it's parent widget */ - QAD_Tools::centerWidget( this, parentWidget() ); -} - -/*! - Sets range -*/ -void Plot2d_FitDataDlg::setRange( const double xMin, - const double xMax, - const double yMin, - const double yMax ) -{ - myXMinEdit->setText( QString::number( xMin ) ); - myXMaxEdit->setText( QString::number( xMax ) ); - myYMinEdit->setText( QString::number( yMin ) ); - myYMaxEdit->setText( QString::number( yMax ) ); -} - -/*! - Gets range, returns mode (see getMode()) -*/ -int Plot2d_FitDataDlg::getRange( double& xMin, - double& xMax, - double& yMin, - double& yMax ) -{ - xMin = myXMinEdit->text().toDouble(); - xMax = myXMaxEdit->text().toDouble(); - yMin = myYMinEdit->text().toDouble(); - yMax = myYMaxEdit->text().toDouble(); - int myMode = 0; - if ( myModeAllRB->isChecked() ) - myMode = 0; - if ( myModeHorRB->isChecked() ) - myMode = 1; - if ( myModeVerRB->isChecked() ) - myMode = 2; - return myMode; -} - -/*! - Gets mode : 0 - Fit all; 1 - Fit horizontal, 2 - Fit vertical -*/ -int Plot2d_FitDataDlg::getMode() -{ - int myMode = 0; - if ( myModeAllRB->isChecked() ) - myMode = 0; - if ( myModeHorRB->isChecked() ) - myMode = 1; - if ( myModeVerRB->isChecked() ) - myMode = 2; - return myMode; -} - -/*! - Called when range mode changed -*/ -void Plot2d_FitDataDlg::onModeChanged(int mode) -{ - bool badFocus; - switch( mode ) { - case 0: // fit all mode - myXMinEdit->setEnabled(true); - myXMaxEdit->setEnabled(true); - myYMinEdit->setEnabled(true); - myYMaxEdit->setEnabled(true); - break; - case 1: // fit horizontal mode - badFocus = myYMinEdit->hasFocus() || myYMaxEdit->hasFocus(); - myXMinEdit->setEnabled(true); - myXMaxEdit->setEnabled(true); - myYMinEdit->setEnabled(false); - myYMaxEdit->setEnabled(false); - if (badFocus) - myXMinEdit->setFocus(); - break; - case 2: // fit vertical mode - badFocus = myXMinEdit->hasFocus() || myXMaxEdit->hasFocus(); - myXMinEdit->setEnabled(false); - myXMaxEdit->setEnabled(false); - myYMinEdit->setEnabled(true); - myYMaxEdit->setEnabled(true); - if (badFocus) - myYMinEdit->setFocus(); - break; - } -} - diff --git a/src/Plot2d/Plot2d_FitDataDlg.h b/src/Plot2d/Plot2d_FitDataDlg.h deleted file mode 100644 index ad8bbad34..000000000 --- a/src/Plot2d/Plot2d_FitDataDlg.h +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : Plot2d_FitDataDlg.h -// Author : Vadim SANDLER -// Module : SALOME -// $Header$ - -#if !defined(Plot2d_FitDataDlg_H) -#define Plot2d_FitDataDlg_H - -#include - -#include -#include -#include -#include -#include - -//================================================================ -// Class : Plot2d_FitDataDlg -// Description : Dialog to fit view for given data area -//================================================================ -class Plot2d_FitDataDlg : public QDialog -{ - Q_OBJECT -public: -// constuctor - Plot2d_FitDataDlg(QWidget* parent); - -// sets range - void setRange(const double xMin, - const double xMax, - const double yMin, - const double yMax); -// gets range, returns mode (see getMode()) - int getRange(double& xMin, - double& xMax, - double& yMin, - double& yMax); -// gets mode : 0 - Fit all; 1 - Fit horizontal, 2 - Fit vertical - int getMode(); - -protected slots: -// called when range mode changed - void onModeChanged(int); - -private: - QButtonGroup* myRangeGrp; - QRadioButton* myModeAllRB; - QRadioButton* myModeHorRB; - QRadioButton* myModeVerRB; - QLineEdit* myXMinEdit; - QLineEdit* myYMinEdit; - QLineEdit* myXMaxEdit; - QLineEdit* myYMaxEdit; - QPushButton* myOkBtn; - QPushButton* myCancelBtn; -}; - -#endif // !defined(Plot2d_FitDataDlg_H) diff --git a/src/Plot2d/Plot2d_Prs.cxx b/src/Plot2d/Plot2d_Prs.cxx deleted file mode 100644 index 8f3ec0687..000000000 --- a/src/Plot2d/Plot2d_Prs.cxx +++ /dev/null @@ -1,96 +0,0 @@ -// SALOME OCCViewer : build OCC Viewer into Salome desktop -// -// Copyright (C) 2004 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org or email : webmaster.salome@opencascade.org -// -// -// -// File : Plot2d_Prs.cxx -// Author : Sergey ANIKIN -// Module : SALOME -// $Header$ - -#include "Plot2d_Prs.h" -using namespace std; - -//========================================================== -/*! - * Plot2d_Prs::Plot2d_Prs - * Default constructor - */ -//========================================================== -Plot2d_Prs::Plot2d_Prs() -{ -} - -//========================================================== -/*! - * Plot2d_Prs::Plot2d_Prs - * Standard constructor - */ -//========================================================== -Plot2d_Prs::Plot2d_Prs( const Plot2d_Curve* obj ) -{ - AddObject( obj ); -} - -//========================================================== -/*! - * Plot2d_Prs::~Plot2d_Prs - * Destructor - */ -//========================================================== -Plot2d_Prs::~Plot2d_Prs() -{ - myObjects.clear(); -} - -//========================================================== -/*! - * Plot2d_Prs::GetObjects - * Get curves list - */ -//========================================================== -Plot2d_CurveContainer Plot2d_Prs::GetObjects() const -{ - return myObjects; -} - -//========================================================== -/*! - * Plot2d_Prs::AddObject - * Add curbe - */ -//========================================================== -void Plot2d_Prs::AddObject( const Plot2d_Curve* obj ) -{ - myObjects.addCurve( (Plot2d_Curve*)obj ); -} - -//========================================================== -/*! - * Plot2d_Prs::IsNull - * Return 0 if list of the curves is empty - * [ Reimplemented from SALOME_Prs ] - */ -//========================================================== -bool Plot2d_Prs::IsNull() const -{ - return myObjects.isEmpty(); -} diff --git a/src/Plot2d/Plot2d_Prs.h b/src/Plot2d/Plot2d_Prs.h deleted file mode 100644 index 551f75511..000000000 --- a/src/Plot2d/Plot2d_Prs.h +++ /dev/null @@ -1,59 +0,0 @@ -// SALOME OCCViewer : build OCC Viewer into Salome desktop -// -// Copyright (C) 2004 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org or email : webmaster.salome@opencascade.org -// -// -// -// File : Plot2d_Prs.h -// Author : Sergey ANIKIN -// Module : SALOME -// $Header$ - -#ifndef PLOT2D_PRS_H -#define PLOT2D_PRS_H - -#include "SALOME_Prs.h" -#include - -class Plot2d_Curve; - -class Plot2d_Prs : public SALOME_Prs2d -{ -public: - Plot2d_Prs(); - // Default constructor - Plot2d_Prs( const Plot2d_Curve* obj ); - // Standard constructor - ~Plot2d_Prs(); - // Destructor - - Plot2d_CurveContainer GetObjects() const; - // Get curves list - void AddObject( const Plot2d_Curve* obj ); - // Add curve - - bool IsNull() const; - // Reimplemented from SALOME_Prs - -private: - Plot2d_CurveContainer myObjects; // list of curves -}; - -#endif diff --git a/src/Plot2d/Plot2d_SetupPlot2dDlg.cxx b/src/Plot2d/Plot2d_SetupPlot2dDlg.cxx deleted file mode 100644 index 1a14428e4..000000000 --- a/src/Plot2d/Plot2d_SetupPlot2dDlg.cxx +++ /dev/null @@ -1,678 +0,0 @@ -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : Plot2d_SetupPlot2dDlg.cxx -// Author : Vadim SANDLER -// Module : SALOME -// $Header$ - -#include "Plot2d_SetupPlot2dDlg.h" -#include "QAD_Application.h" -#include "QAD_Desktop.h" -#include "QAD_Tools.h" -#include "QAD_MessageBox.h" -#include "Plot2d_Curve.h" -#include "Plot2d_CurveContainer.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "utilities.h" - -using namespace std; - -#define DLG_SIZE_WIDTH 500 -#define DLG_SIZE_HEIGHT 400 -#define MAX_LINE_WIDTH 100 -#define MARGIN_SIZE 11 -#define SPACING_SIZE 6 - -/*! - Constructor -*/ -Plot2d_SetupPlot2dDlg::Plot2d_SetupPlot2dDlg( SALOMEDS::SObject_var object, QWidget* parent ) - : QDialog( parent ? parent : QAD_Application::getDesktop(), - "Plot2d_SetupPlot2dDlg", - true, - WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ) -{ - setCaption( tr("TLT_SETUP_PLOT2D") ); - setSizeGripEnabled( TRUE ); - QGridLayout* topLayout = new QGridLayout( this ); - topLayout->setSpacing( SPACING_SIZE ); - topLayout->setMargin( MARGIN_SIZE ); - - myItems.setAutoDelete( false ); - - myObject = SALOMEDS::SObject::_duplicate( object ); - - /* Top scroll view */ - myView = new QScrollView( this ); - QFrame* frame = new QFrame( myView ); - frame->setFrameStyle( QFrame::Plain | QFrame::NoFrame ); - QGridLayout* frameLayout = new QGridLayout( frame, 1, 12 ); - frameLayout->setMargin( MARGIN_SIZE ); frameLayout->setSpacing( SPACING_SIZE ); - - QFrame* lin; - - QLabel* labAxis = new QLabel( tr( "AXIS_LBL" ), frame ); - QLabel* labData = new QLabel( tr( "DATA_LBL" ), frame ); - QLabel* labUnit = new QLabel( tr( "UNITS_LBL" ), frame ); - QLabel* labAttr = new QLabel( tr( "ATTRIBUTES_LBL" ), frame ); - labAxis->setAlignment( AlignCenter ); - labData->setAlignment( AlignCenter ); - labUnit->setAlignment( AlignCenter ); - labAttr->setAlignment( AlignCenter ); - QFont font = labAxis->font(); font.setBold( true ); - labAxis->setFont( font ); - labData->setFont( font ); - labUnit->setFont( font ); - labAttr->setFont( font ); - - frameLayout->addMultiCellWidget( labAxis, 0, 0, 0, 1 ); - lin = new QFrame( frame ); lin->setFrameStyle( QFrame::VLine | QFrame::Sunken ); - frameLayout->addWidget( lin, 0, 2 ); - frameLayout->addWidget( labData, 0, 3 ); - lin = new QFrame( frame ); lin->setFrameStyle( QFrame::VLine | QFrame::Sunken ); - frameLayout->addWidget( lin, 0, 4 ); - frameLayout->addWidget( labUnit, 0, 5 ); - lin = new QFrame( frame ); lin->setFrameStyle( QFrame::VLine | QFrame::Sunken ); - frameLayout->addWidget( lin, 0, 6 ); - frameLayout->addMultiCellWidget( labAttr, 0, 0, 7, 11 ); - frameLayout->setColStretch( 12, 5 ); - lin = new QFrame( frame ); lin->setFrameStyle( QFrame::HLine | QFrame::Sunken ); - frameLayout->addMultiCellWidget( lin, 1, 1, 0, 12 ); - - int row = 2; - SALOMEDS::GenericAttribute_var anAttr; - SALOMEDS::AttributeTableOfInteger_var tblIntAttr; - SALOMEDS::AttributeTableOfReal_var tblRealAttr; - - /* Try table of integer */ - if ( myObject->FindAttribute( anAttr, "AttributeTableOfInteger" ) ) { - tblIntAttr = SALOMEDS::AttributeTableOfInteger::_narrow( anAttr ); - if ( !tblIntAttr->_is_nil() ) { - try { - int nbRows = tblIntAttr->GetNbRows() ; - SALOMEDS::StringSeq_var rowTitles = tblIntAttr->GetRowTitles(); - SALOMEDS::StringSeq_var rowUnits = tblIntAttr->GetRowUnits(); - for ( int i = 0; i < nbRows; i++ ) { - Plot2d_ItemContainer* item = new Plot2d_ItemContainer( this ); - item->createWidgets( frame ); - frameLayout->addWidget( item->myHBtn, row, 0 ); - frameLayout->addWidget( item->myVBtn, row, 1 ); - frameLayout->addWidget( item->myTitleLab, row, 3 ); - if ( rowTitles->length() > 0 ) - item->myTitleLab->setText( QString( rowTitles[ i ] ) ); - frameLayout->addWidget( item->myUnitLab, row, 5 ); - if ( rowUnits->length() > 0 ) - item->myUnitLab->setText( QString( rowUnits[ i ] ) ); - frameLayout->addWidget( item->myAutoCheck, row, 7 ); - frameLayout->addWidget( item->myLineCombo, row, 8 ); - frameLayout->addWidget( item->myLineSpin, row, 9 ); - frameLayout->addWidget( item->myMarkerCombo, row, 10 ); - frameLayout->addWidget( item->myColorBtn, row, 11 ); - connect( item, SIGNAL( horToggled( bool ) ), this, SLOT( onHBtnToggled( bool ) ) ); - connect( item, SIGNAL( verToggled( bool ) ), this, SLOT( onVBtnToggled( bool ) ) ); - myItems.append( item ); - row++; - } - } - catch( ... ) { - MESSAGE("Plot2d_SetupPlot2dDlg::Plot2d_SetupPlot2dDlg : Exception has been caught (int)!!!"); - } - } - } - /* Try table of real */ - else if ( myObject->FindAttribute( anAttr, "AttributeTableOfReal" ) ) { - tblRealAttr = SALOMEDS::AttributeTableOfReal::_narrow( anAttr ); - if ( !tblRealAttr->_is_nil() ) { - try { - int nbRows = tblRealAttr->GetNbRows() ; - SALOMEDS::StringSeq_var rowTitles = tblRealAttr->GetRowTitles(); - SALOMEDS::StringSeq_var rowUnits = tblRealAttr->GetRowUnits(); - for ( int i = 0; i < nbRows; i++ ) { - Plot2d_ItemContainer* item = new Plot2d_ItemContainer( this ); - item->createWidgets( frame ); - frameLayout->addWidget( item->myHBtn, row, 0 ); - frameLayout->addWidget( item->myVBtn, row, 1 ); - frameLayout->addWidget( item->myTitleLab, row, 3 ); - if ( rowTitles->length() > 0 ) - item->myTitleLab->setText( QString( rowTitles[ i ] ) ); - frameLayout->addWidget( item->myUnitLab, row, 5 ); - if ( rowUnits->length() > 0 ) - item->myUnitLab->setText( QString( rowUnits[ i ] ) ); - frameLayout->addWidget( item->myAutoCheck, row, 7 ); - frameLayout->addWidget( item->myLineCombo, row, 8 ); - frameLayout->addWidget( item->myLineSpin, row, 9 ); - frameLayout->addWidget( item->myMarkerCombo, row, 10 ); - frameLayout->addWidget( item->myColorBtn, row, 11 ); - connect( item, SIGNAL( horToggled( bool ) ), this, SLOT( onHBtnToggled( bool ) ) ); - connect( item, SIGNAL( verToggled( bool ) ), this, SLOT( onVBtnToggled( bool ) ) ); - myItems.append( item ); - row++; - } - } - catch( ... ) { - MESSAGE("Plot2d_SetupPlot2dDlg::Plot2d_SetupPlot2dDlg : Exception has been caught (real)!!!"); - } - } - } - lin = new QFrame( frame ); lin->setFrameStyle( QFrame::VLine | QFrame::Sunken ); - frameLayout->addMultiCellWidget( lin, 2, row+1, 2, 2 ); - lin = new QFrame( frame ); lin->setFrameStyle( QFrame::VLine | QFrame::Sunken ); - frameLayout->addMultiCellWidget( lin, 2, row+1, 4, 4 ); - lin = new QFrame( frame ); lin->setFrameStyle( QFrame::VLine | QFrame::Sunken ); - frameLayout->addMultiCellWidget( lin, 2, row+1, 6, 6 ); - frameLayout->setRowStretch( row+1, 5 ); - - myView->addChild( frame, 0, 0 ); - myView->setResizePolicy( QScrollView::AutoOneFit ); - - myView->setMinimumWidth( frame->sizeHint().width() + MARGIN_SIZE * 2 ); - - /* OK/Cancel buttons */ - myOkBtn = new QPushButton( tr( "BUT_OK" ), this, "buttonOk" ); - myOkBtn->setAutoDefault( TRUE ); - myOkBtn->setDefault( TRUE ); - myCancelBtn = new QPushButton( tr( "BUT_CANCEL" ), this, "buttonCancel" ); - myCancelBtn->setAutoDefault( TRUE ); - - topLayout->addMultiCellWidget( myView, 0, 0, 0, 2 ); - topLayout->addWidget( myOkBtn, 1, 0 ); - topLayout->setColStretch( 1, 5 ); - topLayout->addWidget( myCancelBtn, 1, 2 ); - - connect( myOkBtn, SIGNAL( clicked() ), this, SLOT( accept() ) ); - connect( myCancelBtn, SIGNAL( clicked() ), this, SLOT( reject() ) ); - - enableControls(); - - /* Center widget inside it's parent widget */ - resize( DLG_SIZE_WIDTH, DLG_SIZE_HEIGHT ); - QAD_Tools::centerWidget( this, parentWidget() ); -} -/*! - Destructor -*/ -Plot2d_SetupPlot2dDlg::~Plot2d_SetupPlot2dDlg() -{ -} -/*! - Gets curves info ( indexes of row data in the table for horizontal and verical axes ) -*/ -void Plot2d_SetupPlot2dDlg::getCurvesSource( int& horIndex, QValueList& verIndexes ) -{ - /* collecting horizontal and vertical axis items */ - horIndex = -1; - int i, j; - for ( i = 0; i < myItems.count(); i++ ) { - if ( myItems.at( i )->isHorizontalOn() ) { - horIndex = i; - } - else if ( myItems.at( i )->isVerticalOn() ) { - verIndexes.append( i ); - } - } -} -/*! - Gets curve attributes -*/ -bool Plot2d_SetupPlot2dDlg::getCurveAttributes( const int vIndex, - bool& isAuto, - int& marker, - int& line, - int& lineWidth, - QColor& color) -{ - if ( vIndex >= 0 && vIndex < myItems.count() ) { - isAuto = myItems.at( vIndex )->isAutoAssign(); - marker = myItems.at( vIndex )->getMarker(); - line = myItems.at( vIndex )->getLine(); - lineWidth = myItems.at( vIndex )->getLineWidth(); - color = myItems.at( vIndex )->getColor(); - return true; - } - return false; -} -/*! - Creates and returns curves presentations -*/ -void Plot2d_SetupPlot2dDlg::getCurves( Plot2d_CurveContainer& container ) -{ - SALOMEDS::GenericAttribute_var anAttr; - SALOMEDS::AttributeTableOfInteger_var tblIntAttr; - SALOMEDS::AttributeTableOfReal_var tblRealAttr; - - /* clearing container contents */ - container.clear(); - - /* collecting horizontal and vertical axis items */ - int horIndex; - int i, j; - QValueList verIndex; - getCurvesSource( horIndex, verIndex ); - if ( horIndex < 0 || verIndex.isEmpty() ) /* no curves can be created */ - return; - - /* Try table of integer */ - if ( myObject->FindAttribute( anAttr, "AttributeTableOfInteger" ) ) { - tblIntAttr = SALOMEDS::AttributeTableOfInteger::_narrow( anAttr ); - if ( !tblIntAttr->_is_nil() ) { - try { - int nbCols = tblIntAttr->GetNbColumns() ; - SALOMEDS::StringSeq_var rowTitles = tblIntAttr->GetRowTitles(); - SALOMEDS::StringSeq_var rowUnits = tblIntAttr->GetRowUnits(); - - for ( i = 0; i < verIndex.count(); i++ ) { - Plot2d_Curve* curve = new Plot2d_Curve(); - // curve titles - if ( rowTitles->length() > 0 ) { - curve->setHorTitle( QString( rowTitles[ horIndex ] ) ); - curve->setVerTitle( QString( rowTitles[ verIndex[i] ] ) ); - } - // curve units - if ( rowUnits->length() > 0 ) { - curve->setHorUnits( QString( rowUnits[ horIndex ] ) ); - curve->setVerUnits( QString( rowUnits[ verIndex[i] ] ) ); - } - // curve data - int nbPoints = 0; - for ( j = 1; j <= nbCols; j++ ) { - if ( tblIntAttr->HasValue( horIndex+1, j ) && tblIntAttr->HasValue( verIndex[i]+1, j ) ) - nbPoints++; - } - if ( nbPoints > 0 ) { - double* xList = new double[ nbPoints ]; - double* yList = new double[ nbPoints ]; - for ( j = 1; j <= nbCols; j++ ) { - if ( tblIntAttr->HasValue( horIndex+1, j ) && tblIntAttr->HasValue( verIndex[i]+1, j ) ) { - xList[j-1] = tblIntAttr->GetValue( horIndex +1, j ); - yList[j-1] = tblIntAttr->GetValue( verIndex[i]+1, j ); - } - } - curve->setData( xList, yList, nbPoints ); - } - // curve attributes - curve->setLine( (Plot2d_Curve::LineType)myItems.at( verIndex[i] )->getLine(), myItems.at( verIndex[i] )->getLineWidth() ); - curve->setMarker( (Plot2d_Curve::MarkerType)myItems.at( verIndex[i] )->getMarker() ); - curve->setColor( myItems.at( verIndex[i] )->getColor() ); - curve->setAutoAssign( myItems.at( verIndex[i] )->isAutoAssign() ); - // add curve into container - container.addCurve( curve ); - } - } - catch( ... ) { - MESSAGE("Plot2d_SetupPlot2dDlg::getCurves : Exception has been caught (int)!!!"); - } - } - } - /* Try table of real */ - else if ( myObject->FindAttribute( anAttr, "AttributeTableOfReal" ) ) { - tblRealAttr = SALOMEDS::AttributeTableOfReal::_narrow( anAttr ); - if ( !tblRealAttr->_is_nil() ) { - try { - int nbCols = tblRealAttr->GetNbColumns() ; - SALOMEDS::StringSeq_var rowTitles = tblRealAttr->GetRowTitles(); - SALOMEDS::StringSeq_var rowUnits = tblRealAttr->GetRowUnits(); - - for ( i = 0; i < verIndex.count(); i++ ) { - Plot2d_Curve* curve = new Plot2d_Curve(); - // curve titles - if ( rowTitles->length() > 0 ) { - curve->setHorTitle( QString( rowTitles[ horIndex ] ) ); - curve->setVerTitle( QString( rowTitles[ verIndex[i] ] ) ); - } - // curve units - if ( rowUnits->length() > 0 ) { - curve->setHorUnits( QString( rowUnits[ horIndex ] ) ); - curve->setVerUnits( QString( rowUnits[ verIndex[i] ] ) ); - } - // curve data - int nbPoints = 0; - for ( j = 1; j <= nbCols; j++ ) { - if ( tblRealAttr->HasValue( horIndex+1, j ) && tblRealAttr->HasValue( verIndex[i]+1, j ) ) - nbPoints++; - } - if ( nbPoints > 0 ) { - double* xList = new double[ nbPoints ]; - double* yList = new double[ nbPoints ]; - for ( j = 1; j <= nbCols; j++ ) { - if ( tblRealAttr->HasValue( horIndex+1, j ) && tblRealAttr->HasValue( verIndex[i]+1, j ) ) { - xList[j-1] = tblRealAttr->GetValue( horIndex +1, j ); - yList[j-1] = tblRealAttr->GetValue( verIndex[i]+1, j ); - } - } - curve->setData( xList, yList, nbPoints ); - } - // curve attributes - curve->setLine( (Plot2d_Curve::LineType)myItems.at( verIndex[i] )->getLine(), myItems.at( verIndex[i] )->getLineWidth() ); - curve->setMarker( (Plot2d_Curve::MarkerType)myItems.at( verIndex[i] )->getMarker() ); - curve->setColor( myItems.at( verIndex[i] )->getColor() ); - curve->setAutoAssign( myItems.at( verIndex[i] )->isAutoAssign() ); - // add curve into container - container.addCurve( curve ); - } - } - catch( ... ) { - MESSAGE("Plot2d_SetupPlot2dDlg::getCurves : Exception has been caught (real)!!!"); - } - } - } -} -/*! - Slot, called when any button is clicked -*/ -void Plot2d_SetupPlot2dDlg::onHBtnToggled( bool on ) -{ - Plot2d_ItemContainer* item = ( Plot2d_ItemContainer* )sender(); - if ( on ) { - for ( int i = 0; i < myItems.count(); i++ ) { - if ( myItems.at( i ) != item ) - myItems.at( i )->setHorizontalOn( false ); - } - } - enableControls(); -} -/*! - Slot, called when any button is clicked -*/ -void Plot2d_SetupPlot2dDlg::onVBtnToggled( bool on ) -{ - Plot2d_ItemContainer* item = ( Plot2d_ItemContainer* )sender(); - QList itemList; - itemList.setAutoDelete( false ); - int i; - if ( on ) { - int totalOn = 0; - for ( i = 0; i < myItems.count(); i++ ) { - if ( myItems.at( i ) != item && !myItems.at( i )->isHorizontalOn() ) { - if ( myItems.at( i )->myUnitLab->text() == item->myUnitLab->text() ) { - if ( myItems.at( i )->isVerticalOn() ) - totalOn++; - else - itemList.append( myItems.at( i ) ); - } - else { - myItems.at( i )->setVerticalOn( false ); - } - } - } - if ( totalOn == 0 && !itemList.isEmpty() && - QAD_MessageBox::info2( this, - this->caption(), - tr( "QUE_WANT_SAME_UNITS" ), - tr( "BUT_YES" ), - tr( "BUT_NO" ), - 0, 1, 1 ) == 0 ) { - for ( i = 0; i < itemList.count(); i++ ) { - itemList.at( i )->blockSignals( true ); - itemList.at( i )->setVerticalOn( true ); - itemList.at( i )->blockSignals( false ); - } - } - } - enableControls(); -} -/*! - Enables/disables buttons -*/ -void Plot2d_SetupPlot2dDlg::enableControls() -{ - bool bHSet = false; - bool bVSet = false; - for ( int i = 0; i < myItems.count(); i++ ) { - if ( myItems.at( i )->isHorizontalOn() ) { - bHSet = true; - break; - } - } - for ( int i = 0; i < myItems.count(); i++ ) { - if ( myItems.at( i )->isVerticalOn() ) - bVSet = true; - myItems.at( i )->enableWidgets( bHSet && myItems.at( i )->isVerticalOn() ); - } - myOkBtn->setEnabled( bHSet && bVSet ); -} - -// ==================================================================================== -/*! - Constructor -*/ -Plot2d_ItemContainer::Plot2d_ItemContainer( QObject* parent, const char* name ) - : QObject( parent, name ), - myEnabled( true ) -{ -} -/*! - Creates widgets -*/ -void Plot2d_ItemContainer::createWidgets( QWidget* parentWidget ) -{ - myHBtn = new QToolButton( parentWidget ); - myHBtn->setText( tr( " H " ) ); - myHBtn->setToggleButton( true ); - myHBtn->setOn( false ); - - myVBtn = new QToolButton( parentWidget ); - myVBtn->setText( tr( " V " ) ); - myVBtn->setToggleButton( true ); - myVBtn->setOn( false ); - - myTitleLab = new QLabel( parentWidget ); - myUnitLab = new QLabel( parentWidget ); - myUnitLab->setAlignment( AlignCenter); - - myAutoCheck = new QCheckBox( tr( "AUTO_CHECK_LBL" ), parentWidget ); - myAutoCheck->setChecked( true ); - - myLineCombo = new QComboBox( false, parentWidget ); - myLineCombo->insertItem( tr( "NONE_LINE_LBL" ) ); - myLineCombo->insertItem( tr( "SOLID_LINE_LBL" ) ); - myLineCombo->insertItem( tr( "DASH_LINE_LBL" ) ); - myLineCombo->insertItem( tr( "DOT_LINE_LBL" ) ); - myLineCombo->insertItem( tr( "DASHDOT_LINE_LBL" ) ); - myLineCombo->insertItem( tr( "DAHSDOTDOT_LINE_LBL" ) ); - myLineCombo->setCurrentItem( 1 ); // SOLID by default - - myLineSpin = new QSpinBox( 0, MAX_LINE_WIDTH, 1, parentWidget ); - myLineSpin->setValue( 0 ); // width = 0 by default - - myMarkerCombo = new QComboBox( false, parentWidget ); - myMarkerCombo->insertItem( tr( "NONE_MARKER_LBL" ) ); - myMarkerCombo->insertItem( tr( "CIRCLE_MARKER_LBL" ) ); - myMarkerCombo->insertItem( tr( "RECTANGLE_MARKER_LBL" ) ); - myMarkerCombo->insertItem( tr( "DIAMOND_MARKER_LBL" ) ); - myMarkerCombo->insertItem( tr( "DTRIANGLE_MARKER_LBL" ) ); - myMarkerCombo->insertItem( tr( "UTRIANGLE_MARKER_LBL" ) ); - myMarkerCombo->insertItem( tr( "LTRIANGLE_MARKER_LBL" ) ); - myMarkerCombo->insertItem( tr( "RTRIANGLE_MARKER_LBL" ) ); - myMarkerCombo->insertItem( tr( "CROSS_MARKER_LBL" ) ); - myMarkerCombo->insertItem( tr( "XCROSS_MARKER_LBL" ) ); - myMarkerCombo->setCurrentItem( 1 ); // CIRCLE by default - - myColorBtn = new QToolButton( parentWidget ); - - connect( myAutoCheck, SIGNAL( clicked() ), this, SLOT( onAutoChanged() ) ); - connect( myColorBtn, SIGNAL( clicked() ), this, SLOT( onColorChanged() ) ); - connect( myHBtn, SIGNAL( toggled( bool ) ), this, SLOT( onHVToggled( bool ) ) ); - connect( myVBtn, SIGNAL( toggled( bool ) ), this, SLOT( onHVToggled( bool ) ) ); - setColor( QColor( 0, 0, 0 ) ); - updateState(); -} -/*! - Enables attributes widgets -*/ -void Plot2d_ItemContainer::enableWidgets( bool enable ) -{ - myEnabled = enable; - updateState(); -} -/*! - Sets horizontal button's state on -*/ -void Plot2d_ItemContainer::setHorizontalOn( bool on ) -{ - myHBtn->setOn( on ); -} -/*! - Gets horizontal button's state -*/ -bool Plot2d_ItemContainer::isHorizontalOn() const -{ - return myHBtn->isOn(); -} -/*! - Sets vertical button's state on -*/ -void Plot2d_ItemContainer::setVerticalOn( bool on ) -{ - myVBtn->setOn( on ); -} -/*! - Gets vertical button's state -*/ -bool Plot2d_ItemContainer::isVerticalOn() const -{ - return myVBtn->isOn(); -} -/*! - Sets item AutoAssign flag state -*/ -void Plot2d_ItemContainer::setAutoAssign( bool on ) -{ - myAutoCheck->setChecked( on ); - updateState(); -} -/*! - Gets item AutoAssign flag state -*/ -bool Plot2d_ItemContainer::isAutoAssign() const -{ - return myAutoCheck->isChecked(); -} -/*! - Sets item line type and width -*/ -void Plot2d_ItemContainer::setLine( const int line, const int width ) -{ - myLineCombo->setCurrentItem( line ); -} -/*! - Gets item line type -*/ -int Plot2d_ItemContainer::getLine() const -{ - return myLineCombo->currentItem(); -} -/*! - Gets item line width -*/ -int Plot2d_ItemContainer::getLineWidth() const -{ - return myLineSpin->value(); -} -/*! - Sets item marker type -*/ -void Plot2d_ItemContainer::setMarker( const int marker ) -{ - myMarkerCombo->setCurrentItem( marker ); -} -/*! - Gets item marker type -*/ -int Plot2d_ItemContainer::getMarker() const -{ - return myMarkerCombo->currentItem(); -} -/*! - Sets item color -*/ -void Plot2d_ItemContainer::setColor( const QColor& color ) -{ - QPalette pal = myColorBtn->palette(); - QColorGroup ca = pal.active(); - ca.setColor( QColorGroup::Button, color ); - QColorGroup ci = pal.inactive(); - ci.setColor( QColorGroup::Button, color ); - pal.setActive( ca ); - pal.setInactive( ci ); - myColorBtn->setPalette( pal ); -} -/*! - Gets item color -*/ -QColor Plot2d_ItemContainer::getColor() const -{ - return myColorBtn->palette().active().button(); -} -/*! - Enables/disables widgets -*/ -void Plot2d_ItemContainer::updateState() -{ - myAutoCheck->setEnabled( myEnabled ); - myLineCombo->setEnabled( myEnabled && !myAutoCheck->isChecked() ); - myLineSpin->setEnabled( myEnabled && !myAutoCheck->isChecked() ); - myMarkerCombo->setEnabled( myEnabled && !myAutoCheck->isChecked() ); - myColorBtn->setEnabled( myEnabled && !myAutoCheck->isChecked() ); -} -/*! - Slot, called when user clickes check box -*/ -void Plot2d_ItemContainer::onAutoChanged() -{ - updateState(); - emit( autoClicked() ); -} -/*! - button slot, invokes color selection dialog box -*/ -void Plot2d_ItemContainer::onColorChanged() -{ - QColor color = QColorDialog::getColor( getColor() ); - if ( color.isValid() ) { - setColor( color ); - } -} -/*! - and buttons slot -*/ -void Plot2d_ItemContainer::onHVToggled( bool on ) -{ - const QObject* snd = sender(); - if ( snd == myHBtn ) { - if ( on ) { - if ( myVBtn->isOn() ) { -// blockSignals( true ); - myVBtn->setOn( false ); -// blockSignals( false ); - } - } - emit horToggled( on ); - } - else { - if ( on ) { - if ( myHBtn->isOn() ) { -// blockSignals( true ); - myHBtn->setOn( false ); -// blockSignals( false ); - } - } - emit verToggled( on ); - } -} - - - - - diff --git a/src/Plot2d/Plot2d_SetupPlot2dDlg.h b/src/Plot2d/Plot2d_SetupPlot2dDlg.h deleted file mode 100644 index ad4b4523d..000000000 --- a/src/Plot2d/Plot2d_SetupPlot2dDlg.h +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : Plot2d_SetupPlot2dDlg.h -// Author : Vadim SANDLER -// Module : SALOME -// $Header$ - -#ifndef Plot2d_SetupPlot2dDlg_H -#define Plot2d_SetupPlot2dDlg_H - -#include -#include - -#include -#include CORBA_SERVER_HEADER(SALOMEDS) -#include CORBA_SERVER_HEADER(SALOMEDS_Attributes) - -//================================================================================= -// class : Plot2d_SetupPlot2dDlg -// purpose : Dialog box for setup Plot2d view -//================================================================================= - -class QScrollView; -class QPushButton; -class QLabel; -class QCheckBox; -class QComboBox; -class QSpinBox; -class QToolButton; -class Plot2d_ItemContainer; -class Plot2d_CurveContainer; - -class Plot2d_SetupPlot2dDlg : public QDialog -{ - Q_OBJECT - -public: - Plot2d_SetupPlot2dDlg( SALOMEDS::SObject_var object, QWidget* parent = 0 ); - ~Plot2d_SetupPlot2dDlg(); - - void getCurves( Plot2d_CurveContainer& container ); - void getCurvesSource( int& horIndex, QValueList& verIndexes ); - bool getCurveAttributes( const int vIndex, bool& isAuto, int& marker, int& line, int& lineWidth, QColor& color); - -private slots: - void onHBtnToggled( bool ); - void onVBtnToggled( bool ); - void enableControls(); - -private: - QScrollView* myView; - QPushButton* myOkBtn; - QPushButton* myCancelBtn; - QList myItems; - - SALOMEDS::SObject_var myObject; -}; - -class Plot2d_ItemContainer : public QObject -{ - Q_OBJECT - -public: - Plot2d_ItemContainer( QObject* parent = 0, const char* name = 0 ); - - void createWidgets( QWidget* parentWidget ); - void enableWidgets( bool enable ); - - void setHorizontalOn( bool on ); - bool isHorizontalOn() const; - void setVerticalOn( bool on ); - bool isVerticalOn() const; - bool isAutoAssign() const; - void setAutoAssign( bool on ); - void setLine( const int line, const int width ); - int getLine() const; - int getLineWidth() const; - void setMarker( const int marker ); - int getMarker() const; - void setColor( const QColor& color ); - QColor getColor() const; - -protected: - void updateState(); - -signals: - void autoClicked(); - void horToggled( bool ); - void verToggled( bool ); - -public slots: - void onAutoChanged(); - void onColorChanged(); - void onHVToggled( bool ); - -public: - bool myEnabled; - QToolButton* myHBtn; - QToolButton* myVBtn; - QLabel* myTitleLab; - QLabel* myUnitLab; - QCheckBox* myAutoCheck; - QComboBox* myLineCombo; - QSpinBox* myLineSpin; - QComboBox* myMarkerCombo; - QToolButton* myColorBtn; -}; - -#endif // Plot2d_SetupPlot2dDlg_H - diff --git a/src/Plot2d/Plot2d_SetupViewDlg.cxx b/src/Plot2d/Plot2d_SetupViewDlg.cxx deleted file mode 100644 index c7e157eec..000000000 --- a/src/Plot2d/Plot2d_SetupViewDlg.cxx +++ /dev/null @@ -1,496 +0,0 @@ -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : Plot2d_SetupViewDlg.cxx -// Author : Vadim SANDLER -// Module : SALOME -// $Header$ - -#include "Plot2d_SetupViewDlg.h" -#include "QAD_Tools.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -using namespace std; - -#define MARGIN_SIZE 11 -#define SPACING_SIZE 6 -#define MIN_EDIT_WIDTH 200 -#define MIN_COMBO_WIDTH 100 -#define MIN_SPIN_WIDTH 70 - -/*! - Constructor -*/ -Plot2d_SetupViewDlg::Plot2d_SetupViewDlg( QWidget* parent, bool showDefCheck ) - : QDialog( parent, "Plot2d_SetupViewDlg", true, - WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ) -{ - setCaption( tr("TLT_SETUP_PLOT2D_VIEW") ); - setSizeGripEnabled( TRUE ); - QGridLayout* topLayout = new QGridLayout( this ); - topLayout->setSpacing( SPACING_SIZE ); - topLayout->setMargin( MARGIN_SIZE ); - - // main title - myTitleCheck = new QCheckBox( tr( "PLOT2D_ENABLE_MAIN_TITLE" ), this ); - myTitleEdit = new QLineEdit( this ); - myTitleEdit->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myTitleEdit->setMinimumWidth( MIN_EDIT_WIDTH ); - // horizontal axis title - myTitleXCheck = new QCheckBox( tr( "PLOT2D_ENABLE_HOR_TITLE" ), this ); - myTitleXEdit = new QLineEdit( this ); - myTitleXEdit->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myTitleXEdit->setMinimumWidth( MIN_EDIT_WIDTH ); - // vertical axis title - myTitleYCheck = new QCheckBox( tr( "PLOT2D_ENABLE_VER_TITLE" ), this ); - myTitleYEdit = new QLineEdit( this ); - myTitleYEdit->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myTitleYEdit->setMinimumWidth( MIN_EDIT_WIDTH ); - // curve type : points, lines, spline - QLabel* aCurveLab = new QLabel( tr( "PLOT2D_CURVE_TYPE_LBL" ), this ); - myCurveCombo = new QComboBox( false, this ); - myCurveCombo->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myCurveCombo->setMinimumWidth( MIN_COMBO_WIDTH ); - myCurveCombo->insertItem( tr( "PLOT2D_CURVE_TYPE_POINTS" ) ); - myCurveCombo->insertItem( tr( "PLOT2D_CURVE_TYPE_LINES" ) ); - myCurveCombo->insertItem( tr( "PLOT2D_CURVE_TYPE_SPLINE" ) ); - // legend - myLegendCheck = new QCheckBox( tr( "PLOT2D_ENABLE_LEGEND" ), this ); - myLegendCombo = new QComboBox( false, this ); - myLegendCombo->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myLegendCombo->setMinimumWidth( MIN_COMBO_WIDTH ); - myLegendCombo->insertItem( tr( "PLOT2D_LEGEND_POSITION_LEFT" ) ); - myLegendCombo->insertItem( tr( "PLOT2D_LEGEND_POSITION_RIGHT" ) ); - myLegendCombo->insertItem( tr( "PLOT2D_LEGEND_POSITION_TOP" ) ); - myLegendCombo->insertItem( tr( "PLOT2D_LEGEND_POSITION_BOTTOM" ) ); - // marker size - QLabel* aMarkerLab = new QLabel( tr( "PLOT2D_MARKER_SIZE_LBL" ), this ); - myMarkerSpin = new QSpinBox( 0, 100, 1, this ); - myMarkerSpin->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myMarkerSpin->setMinimumWidth( MIN_SPIN_WIDTH ); - // background color - QLabel* aBGLab = new QLabel( tr( "PLOT2D_BACKGROUND_COLOR_LBL" ), this ); - myBackgroundBtn = new QToolButton( this ); - // scale mode - QGroupBox* aScaleGrp = new QGroupBox( tr( "PLOT2D_SCALE_TLT" ), this ); - aScaleGrp->setColumnLayout(0, Qt::Vertical ); - aScaleGrp->layout()->setSpacing( 0 ); aScaleGrp->layout()->setMargin( 0 ); - QGridLayout* aScaleLayout = new QGridLayout( aScaleGrp->layout() ); - aScaleLayout->setMargin( MARGIN_SIZE ); aScaleLayout->setSpacing( SPACING_SIZE ); - - QLabel* xScaleLab = new QLabel( tr( "PLOT2D_SCALE_MODE_HOR" ), aScaleGrp ); - myXModeCombo = new QComboBox( false, aScaleGrp ); - myXModeCombo->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myXModeCombo->setMinimumWidth( MIN_COMBO_WIDTH ); - myXModeCombo->insertItem( tr( "PLOT2D_SCALE_MODE_LINEAR" ) ); - myXModeCombo->insertItem( tr( "PLOT2D_SCALE_MODE_LOGARITHMIC" ) ); - QLabel* yScaleLab = new QLabel( tr( "PLOT2D_SCALE_MODE_VER" ), aScaleGrp ); - myYModeCombo = new QComboBox( false, aScaleGrp ); - myYModeCombo->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myYModeCombo->setMinimumWidth( MIN_COMBO_WIDTH ); - myYModeCombo->insertItem( tr( "PLOT2D_SCALE_MODE_LINEAR" ) ); - myYModeCombo->insertItem( tr( "PLOT2D_SCALE_MODE_LOGARITHMIC" ) ); - - aScaleLayout->addWidget( xScaleLab, 0, 0 ); - aScaleLayout->addWidget( myXModeCombo, 0, 1 ); - aScaleLayout->addWidget( yScaleLab, 0, 2 ); - aScaleLayout->addWidget( myYModeCombo, 0, 3 ); - - // grid - QGroupBox* aGridGrp = new QGroupBox( tr( "PLOT2D_GRID_TLT" ), this ); - aGridGrp->setColumnLayout(0, Qt::Vertical ); - aGridGrp->layout()->setSpacing( 0 ); aGridGrp->layout()->setMargin( 0 ); - QGridLayout* aGridLayout = new QGridLayout( aGridGrp->layout() ); - aGridLayout->setMargin( MARGIN_SIZE ); aGridLayout->setSpacing( SPACING_SIZE ); - - myXGridCheck = new QCheckBox( tr( "PLOT2D_GRID_ENABLE_HOR_MAJOR" ), aGridGrp ); - myXGridSpin = new QSpinBox( 1, 100, 1, aGridGrp ); - myXGridSpin->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myXGridSpin->setMinimumWidth( MIN_SPIN_WIDTH ); - myYGridCheck = new QCheckBox( tr( "PLOT2D_GRID_ENABLE_VER_MAJOR" ), aGridGrp ); - myYGridSpin = new QSpinBox( 1, 100, 1, aGridGrp ); - myYGridSpin->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myYGridSpin->setMinimumWidth( MIN_SPIN_WIDTH ); - myXMinGridCheck = new QCheckBox( tr( "PLOT2D_GRID_ENABLE_HOR_MINOR" ), aGridGrp ); - myXMinGridSpin = new QSpinBox( 1, 100, 1, aGridGrp ); - myXMinGridSpin->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myXMinGridSpin->setMinimumWidth( MIN_SPIN_WIDTH ); - myYMinGridCheck = new QCheckBox( tr( "PLOT2D_GRID_ENABLE_VER_MINOR" ), aGridGrp ); - myYMinGridSpin = new QSpinBox( 1, 100, 1, aGridGrp ); - myYMinGridSpin->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myYMinGridSpin->setMinimumWidth( MIN_SPIN_WIDTH ); - - aGridLayout->addWidget( myXGridCheck, 0, 0 ); - aGridLayout->addWidget( myXGridSpin, 0, 1 ); - aGridLayout->addWidget( myYGridCheck, 0, 2 ); - aGridLayout->addWidget( myYGridSpin, 0, 3 ); - aGridLayout->addWidget( myXMinGridCheck, 1, 0 ); - aGridLayout->addWidget( myXMinGridSpin, 1, 1 ); - aGridLayout->addWidget( myYMinGridCheck, 1, 2 ); - aGridLayout->addWidget( myYMinGridSpin, 1, 3 ); - - /* "Set as default" check box */ - myDefCheck = new QCheckBox( tr( "PLOT2D_SET_AS_DEFAULT_CHECK" ), this ); - - /* OK/Cancel buttons */ - myOkBtn = new QPushButton( tr( "BUT_OK" ), this ); - myOkBtn->setAutoDefault( TRUE ); - myOkBtn->setDefault( TRUE ); - myCancelBtn = new QPushButton( tr( "BUT_CANCEL" ), this ); - myCancelBtn->setAutoDefault( TRUE ); - QHBoxLayout* btnLayout = new QHBoxLayout; - btnLayout->addWidget( myOkBtn ); - btnLayout->addStretch(); - btnLayout->addWidget( myCancelBtn ); - - // layout widgets - topLayout->addWidget( myTitleCheck, 0, 0 ); - topLayout->addMultiCellWidget( myTitleEdit, 0, 0, 1, 3 ); - topLayout->addWidget( myTitleXCheck, 1, 0 ); - topLayout->addMultiCellWidget( myTitleXEdit, 1, 1, 1, 3 ); - topLayout->addWidget( myTitleYCheck, 2, 0 ); - topLayout->addMultiCellWidget( myTitleYEdit, 2, 2, 1, 3 ); - topLayout->addWidget( aCurveLab, 3, 0 ); - topLayout->addWidget( myCurveCombo, 3, 1 ); - topLayout->addWidget( myLegendCheck, 3, 2 ); - topLayout->addWidget( myLegendCombo, 3, 3 ); - topLayout->addWidget( aMarkerLab, 4, 0 ); - topLayout->addWidget( myMarkerSpin, 4, 1 ); - QHBoxLayout* bgLayout = new QHBoxLayout; - bgLayout->addWidget( myBackgroundBtn ); bgLayout->addStretch(); - topLayout->addWidget( aBGLab, 4, 2 ); - topLayout->addLayout( bgLayout, 4, 3 ); - topLayout->addMultiCellWidget( aScaleGrp, 5, 5, 0, 3 ); - topLayout->addMultiCellWidget( aGridGrp, 6, 6, 0, 3 ); - topLayout->addMultiCellWidget( myDefCheck, 7, 7, 0, 3 ); - topLayout->setRowStretch( 8, 5 ); - topLayout->addMultiCellLayout( btnLayout, 9, 9, 0, 3 ); - - if ( !showDefCheck ) - myDefCheck->hide(); - - connect( myTitleCheck, SIGNAL( clicked() ), this, SLOT( onMainTitleChecked() ) ); - connect( myTitleXCheck, SIGNAL( clicked() ), this, SLOT( onXTitleChecked() ) ); - connect( myTitleYCheck, SIGNAL( clicked() ), this, SLOT( onYTitleChecked() ) ); - connect( myBackgroundBtn, SIGNAL( clicked() ), this, SLOT( onBackgroundClicked() ) ); - connect( myLegendCheck, SIGNAL( clicked() ), this, SLOT( onLegendChecked() ) ); - connect( myXGridCheck, SIGNAL( clicked() ), this, SLOT( onXGridMajorChecked() ) ); - connect( myYGridCheck, SIGNAL( clicked() ), this, SLOT( onYGridMajorChecked() ) ); - connect( myXMinGridCheck, SIGNAL( clicked() ), this, SLOT( onXGridMinorChecked() ) ); - connect( myYMinGridCheck, SIGNAL( clicked() ), this, SLOT( onYGridMinorChecked() ) ); - - connect( myOkBtn, SIGNAL( clicked() ), this, SLOT( accept() ) ); - connect( myCancelBtn, SIGNAL( clicked() ), this, SLOT( reject() ) ); - - /* Center widget inside it's parent widget */ - QAD_Tools::centerWidget( this, parentWidget() ); - - // init fields - setBackgroundColor( Qt::gray ); - onMainTitleChecked(); - onXTitleChecked(); - onYTitleChecked(); - onLegendChecked(); - onXGridMajorChecked(); - onYGridMajorChecked(); - onXGridMinorChecked(); - onYGridMinorChecked(); -} - -/*! - Destructor -*/ -Plot2d_SetupViewDlg::~Plot2d_SetupViewDlg() -{ -} -/*! - Sets main title attributes -*/ -void Plot2d_SetupViewDlg::setMainTitle( bool enable, const QString& title ) -{ - myTitleCheck->setChecked( enable ); - if ( !title.isNull() ) - myTitleEdit->setText( title ); - onMainTitleChecked(); -} -/*! - Returns TRUE if main title is enabled -*/ -bool Plot2d_SetupViewDlg::isMainTitleEnabled() -{ - return myTitleCheck->isChecked(); -} -/*! - Gets main title -*/ -QString Plot2d_SetupViewDlg::getMainTitle() -{ - return myTitleEdit->text(); -} -/*! - Sets horizontal axis title attributes -*/ -void Plot2d_SetupViewDlg::setXTitle( bool enable, const QString& title ) -{ - myTitleXCheck->setChecked( enable ); - if ( !title.isNull() ) - myTitleXEdit->setText( title ); - onXTitleChecked(); -} -/*! - Returns TRUE if horizontal axis title is enabled -*/ -bool Plot2d_SetupViewDlg::isXTitleEnabled() -{ - return myTitleXCheck->isChecked(); -} -/*! - Gets horizontal axis title -*/ -QString Plot2d_SetupViewDlg::getXTitle() -{ - return myTitleXEdit->text(); -} -/*! - Sets horizontal axis title attributes -*/ -void Plot2d_SetupViewDlg::setYTitle( bool enable, const QString& title ) -{ - myTitleYCheck->setChecked( enable ); - if ( !title.isNull() ) - myTitleYEdit->setText( title ); - onYTitleChecked(); -} -/*! - Returns TRUE if vertical axis title is enabled -*/ -bool Plot2d_SetupViewDlg::isYTitleEnabled() -{ - return myTitleYCheck->isChecked(); -} -/*! - Gets vertical axis title -*/ -QString Plot2d_SetupViewDlg::getYTitle() -{ - return myTitleYEdit->text(); -} -/*! - Sets curve type : 0 - points, 1 - lines, 2 - splines -*/ -void Plot2d_SetupViewDlg::setCurveType( const int type ) -{ - myCurveCombo->setCurrentItem( type ); -} -/*! - Gets curve type : 0 - points, 1 - lines, 2 - splines -*/ -int Plot2d_SetupViewDlg::getCurveType() -{ - return myCurveCombo->currentItem(); -} -/*! - Sets legend attributes : pos = 0 - left, 1 - right, 2 - top, 3 - bottom -*/ -void Plot2d_SetupViewDlg::setLegend( bool enable, int pos ) -{ - myLegendCheck->setChecked( enable ); - myLegendCombo->setCurrentItem( pos ); - onLegendChecked(); -} -/*! - Returns TRUE if legend is enabled -*/ -bool Plot2d_SetupViewDlg::isLegendEnabled() -{ - return myLegendCheck->isChecked(); -} -/*! - Returns legend position -*/ -int Plot2d_SetupViewDlg::getLegendPos() -{ - return myLegendCombo->currentItem(); -} -/*! - Sets marker size -*/ -void Plot2d_SetupViewDlg::setMarkerSize( const int size ) -{ - myMarkerSpin->setValue( size ); -} -/*! - Gets marker size -*/ -int Plot2d_SetupViewDlg::getMarkerSize() -{ - return myMarkerSpin->value(); -} -/*! - Sets background color -*/ -void Plot2d_SetupViewDlg::setBackgroundColor( const QColor& color ) -{ - QPalette pal = myBackgroundBtn->palette(); - QColorGroup ca = pal.active(); - ca.setColor( QColorGroup::Button, color ); - QColorGroup ci = pal.inactive(); - ci.setColor( QColorGroup::Button, color ); - pal.setActive( ca ); - pal.setInactive( ci ); - myBackgroundBtn->setPalette( pal ); -} -/*! - Gets background color -*/ -QColor Plot2d_SetupViewDlg::getBackgroundColor() -{ - return myBackgroundBtn->palette().active().button(); -} -/*! - Sets major grid parameters -*/ -void Plot2d_SetupViewDlg::setMajorGrid( bool enableX, const int divX, bool enableY, const int divY ) -{ - myXGridCheck->setChecked( enableX ); - myXGridSpin->setValue( divX ); - myYGridCheck->setChecked( enableY ); - myYGridSpin->setValue( divY ); - onXGridMajorChecked(); - onYGridMajorChecked(); -} -/*! - Gets major grid parameters -*/ -void Plot2d_SetupViewDlg::getMajorGrid( bool& enableX, int& divX, bool& enableY, int& divY ) -{ - enableX = myXGridCheck->isChecked(); - divX = myXGridSpin->value(); - enableY = myYGridCheck->isChecked(); - divY = myYGridSpin->value(); -} -/*! - Sets minor grid parameters -*/ -void Plot2d_SetupViewDlg::setMinorGrid( bool enableX, const int divX, bool enableY, const int divY ) -{ - myXMinGridCheck->setChecked( enableX ); - myXMinGridSpin->setValue( divX ); - myYMinGridCheck->setChecked( enableY ); - myYMinGridSpin->setValue( divY ); - onXGridMinorChecked(); - onYGridMinorChecked(); -} -/*! - Gets minor grid parameters -*/ -void Plot2d_SetupViewDlg::getMinorGrid( bool& enableX, int& divX, bool& enableY, int& divY ) -{ - enableX = myXMinGridCheck->isChecked(); - divX = myXMinGridSpin->value(); - enableY = myYMinGridCheck->isChecked(); - divY = myYMinGridSpin->value(); -} -/*! - Sets scale mode for hor. and ver. axes : 0 - linear, 1 - logarithmic -*/ -void Plot2d_SetupViewDlg::setScaleMode( const int xMode, const int yMode ) -{ - myXModeCombo->setCurrentItem( xMode ); - myYModeCombo->setCurrentItem( yMode ); -} -/*! - Gets scale mode for hor. axis : 0 - linear, 1 - logarithmic -*/ -int Plot2d_SetupViewDlg::getXScaleMode() -{ - return myXModeCombo->currentItem(); -} -/*! - Gets scale mode for hor. axis : 0 - linear, 1 - logarithmic -*/ -int Plot2d_SetupViewDlg::getYScaleMode() -{ - return myYModeCombo->currentItem(); -} -/*! - Slot, called when user clicks "Show main title" check box -*/ -void Plot2d_SetupViewDlg::onMainTitleChecked() -{ - myTitleEdit->setEnabled( myTitleCheck->isChecked() ); -} -/*! - Slot, called when user clicks "Show horizontal axis title" check box -*/ -void Plot2d_SetupViewDlg::onXTitleChecked() -{ - myTitleXEdit->setEnabled( myTitleXCheck->isChecked() ); -} -/*! - Slot, called when user clicks "Show vertical axis title" check box -*/ -void Plot2d_SetupViewDlg::onYTitleChecked() -{ - myTitleYEdit->setEnabled( myTitleYCheck->isChecked() ); -} -/*! - Slot, called when user clicks "Change bacground color" button -*/ -void Plot2d_SetupViewDlg::onBackgroundClicked() -{ - QColor color = QColorDialog::getColor( getBackgroundColor() ); - if ( color.isValid() ) { - setBackgroundColor( color ); - } -} -/*! - Slot, called when user clicks "Show Legend" check box -*/ -void Plot2d_SetupViewDlg::onLegendChecked() -{ - myLegendCombo->setEnabled( myLegendCheck->isChecked() ); -} -/*! - Slot, called when user clicks "Enable hor. major grid" check box -*/ -void Plot2d_SetupViewDlg::onXGridMajorChecked() -{ - myXMinGridCheck->setEnabled( myXGridCheck->isChecked() ); -} -/*! - Slot, called when user clicks "Enable ver. major grid" check box -*/ -void Plot2d_SetupViewDlg::onYGridMajorChecked() -{ - myYMinGridCheck->setEnabled( myYGridCheck->isChecked() ); -} -/*! - Slot, called when user clicks "Enable hor. minor grid" check box -*/ -void Plot2d_SetupViewDlg::onXGridMinorChecked() -{ -} -/*! - Slot, called when user clicks "Enable ver. minor grid" check box -*/ -void Plot2d_SetupViewDlg::onYGridMinorChecked() -{ -} -/*! - Retursns true if "Set as default" check box is on -*/ -bool Plot2d_SetupViewDlg::isSetAsDefault() -{ - return myDefCheck->isChecked(); -} diff --git a/src/Plot2d/Plot2d_SetupViewDlg.h b/src/Plot2d/Plot2d_SetupViewDlg.h deleted file mode 100644 index 9958e8479..000000000 --- a/src/Plot2d/Plot2d_SetupViewDlg.h +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : Plot2d_SetupViewDlg.h -// Author : Vadim SANDLER -// Module : SALOME -// $Header$ - -#ifndef Plot2d_SetupViewDlg_H -#define Plot2d_SetupViewDlg_H - -#include - -//================================================================================= -// class : Plot2d_SetupViewDlg -// purpose : Settings dialog for Plot2d view -//================================================================================= - -class QCheckBox; -class QLineEdit; -class QComboBox; -class QSpinBox; -class QToolButton; -class QPushButton; - -class Plot2d_SetupViewDlg : public QDialog -{ - Q_OBJECT - -public: - Plot2d_SetupViewDlg( QWidget* parent = 0, bool showDefCheck = false ); - ~Plot2d_SetupViewDlg(); - - void setMainTitle( bool enable, const QString& title = QString::null ); - bool isMainTitleEnabled(); - QString getMainTitle(); - void setXTitle( bool enable, const QString& title = QString::null ); - bool isXTitleEnabled(); - QString getXTitle(); - void setYTitle( bool enable, const QString& title = QString::null ); - bool isYTitleEnabled(); - QString getYTitle(); - void setCurveType( const int type ); - int getCurveType(); - void setLegend( bool enable, int pos ); - bool isLegendEnabled(); - int getLegendPos(); - void setMarkerSize( const int size ); - int getMarkerSize(); - void setBackgroundColor( const QColor& color ); - QColor getBackgroundColor(); - void setMajorGrid( bool enableX, const int xdiv, bool enableY, const int divY ); - void getMajorGrid( bool& enableX, int& xdiv, bool& enableY, int& divY ); - void setMinorGrid( bool enableX, const int xdiv, bool enableY, const int divY ); - void getMinorGrid( bool& enableX, int& xdiv, bool& enableY, int& divY ); - void setScaleMode( const int xMode, const int yMode ); - int getXScaleMode(); - int getYScaleMode(); - bool isSetAsDefault(); - -protected slots: - void onMainTitleChecked(); - void onXTitleChecked(); - void onYTitleChecked(); - void onBackgroundClicked(); - void onLegendChecked(); - void onXGridMajorChecked(); - void onYGridMajorChecked(); - void onXGridMinorChecked(); - void onYGridMinorChecked(); - -private: - QCheckBox* myTitleCheck; - QLineEdit* myTitleEdit; - QCheckBox* myTitleXCheck; - QLineEdit* myTitleXEdit; - QCheckBox* myTitleYCheck; - QLineEdit* myTitleYEdit; - QToolButton* myBackgroundBtn; - QCheckBox* myXGridCheck; - QSpinBox* myXGridSpin; - QCheckBox* myYGridCheck; - QSpinBox* myYGridSpin; - QCheckBox* myXMinGridCheck; - QSpinBox* myXMinGridSpin; - QCheckBox* myYMinGridCheck; - QSpinBox* myYMinGridSpin; - QComboBox* myCurveCombo; - QCheckBox* myLegendCheck; - QComboBox* myLegendCombo; - QSpinBox* myMarkerSpin; - QComboBox* myXModeCombo; - QComboBox* myYModeCombo; - QCheckBox* myDefCheck; - - QPushButton* myOkBtn; - QPushButton* myCancelBtn; -}; - -#endif // Plot2d_SetupViewDlg_H - diff --git a/src/Plot2d/Plot2d_ViewFrame.cxx b/src/Plot2d/Plot2d_ViewFrame.cxx deleted file mode 100644 index cde7a3961..000000000 --- a/src/Plot2d/Plot2d_ViewFrame.cxx +++ /dev/null @@ -1,1885 +0,0 @@ -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : Plot2d_ViewFrame.cxx -// Author : Vadim SANDLER -// Module : SALOME -// $Header$ - -#include "Plot2d_ViewFrame.h" -#include "Plot2d_SetupViewDlg.h" -#include "Plot2d_Prs.h" - -#include "QAD_Desktop.h" -#include "QAD_ResourceMgr.h" -#include "QAD_FileDlg.h" -#include "QAD_Tools.h" -#include "QAD_MessageBox.h" -#include "QAD_Config.h" -#include "SALOME_Selection.h" -#include "Plot2d_CurveContainer.h" -#include "Plot2d_Curve.h" -#include "Plot2d_FitDataDlg.h" -#include "utilities.h" -#include "qapplication.h" -#include -#include -#include -#include -#include -#include -#include -#include "utilities.h" - -// IDL headers -#include -#include CORBA_SERVER_HEADER(SALOMEDS) -#include CORBA_SERVER_HEADER(SALOMEDS_Attributes) -using namespace std; - -#define DEFAULT_LINE_WIDTH 0 // (default) line width -#define DEFAULT_MARKER_SIZE 9 // default marker size -#define MIN_RECT_SIZE 11 // min sensibility area size - -/* XPM */ -const char* imageZoomCursor[] = { -"32 32 3 1", -". c None", -"a c #000000", -"# c #ffffff", -"................................", -"................................", -".#######........................", -"..aaaaaaa.......................", -"................................", -".............#####..............", -"...........##.aaaa##............", -"..........#.aa.....a#...........", -".........#.a.........#..........", -".........#a..........#a.........", -"........#.a...........#.........", -"........#a............#a........", -"........#a............#a........", -"........#a............#a........", -"........#a............#a........", -".........#...........#.a........", -".........#a..........#a.........", -".........##.........#.a.........", -"........#####.....##.a..........", -".......###aaa#####.aa...........", -"......###aa...aaaaa.......#.....", -".....###aa................#a....", -"....###aa.................#a....", -"...###aa...............#######..", -"....#aa.................aa#aaaa.", -".....a....................#a....", -"..........................#a....", -"...........................a....", -"................................", -"................................", -"................................", -"................................"}; - - -//================================================================================= -// Plot2d_ViewFrame implementation -//================================================================================= - -/*! - Constructor -*/ -Plot2d_ViewFrame::Plot2d_ViewFrame( QWidget* parent, const QString& title ) - : QAD_ViewFrame( parent, title ), - myOperation( NoOpId ), - myCurveType( 1 ), - myShowLegend( true ), myLegendPos( 1 ), - myMarkerSize( DEFAULT_MARKER_SIZE ), - myTitle( "" ), myXTitle( "" ), myYTitle( "" ), - myBackground( white ), - myTitleEnabled( true ), myXTitleEnabled( true ), myYTitleEnabled( true ), - myXGridMajorEnabled( true ), myYGridMajorEnabled( true ), - myXGridMinorEnabled( false ), myYGridMinorEnabled( false ), - myXGridMaxMajor( 8 ), myYGridMaxMajor( 8 ), myXGridMaxMinor( 5 ), myYGridMaxMinor( 5 ), - myXMode( 0 ), myYMode( 0 ) - -{ - myCurves.setAutoDelete( true ); - /* Plot 2d View */ - myPlot = new Plot2d_Plot2d( this ); - setCentralWidget( myPlot ); - - createActions(); - - connect( myPlot, SIGNAL( plotMouseMoved( const QMouseEvent& ) ), - this, SLOT( plotMouseMoved( const QMouseEvent& ) ) ); - connect( myPlot, SIGNAL( plotMousePressed( const QMouseEvent& ) ), - this, SLOT( plotMousePressed( const QMouseEvent& ) ) ); - connect( myPlot, SIGNAL( plotMouseReleased( const QMouseEvent& ) ), - this, SLOT( plotMouseReleased( const QMouseEvent& ) ) ); - connect( myPlot, SIGNAL( legendClicked( long ) ), - this, SLOT( onLegendClicked( long ) ) ); - - /* Initial Setup - get from the preferences */ - readPreferences(); - - myPlot->setMargin( 5 ); - setCurveType( myCurveType, false ); - setXGrid( myXGridMajorEnabled, myXGridMaxMajor, myXGridMinorEnabled, myXGridMaxMinor, false ); - setYGrid( myYGridMajorEnabled, myYGridMaxMajor, myYGridMinorEnabled, myYGridMaxMinor, false ); - setMainTitle( myTitleEnabled, myTitle, false ); - setXTitle( myXTitleEnabled, myXTitle, false ); - setYTitle( myYTitleEnabled, myYTitle, false ); - setHorScaleMode( myXMode, false ); - setVerScaleMode( myYMode, false ); - setBackgroundColor( myBackground ); - setLegendPos( myLegendPos ); - showLegend( myShowLegend, false ); - myPlot->replot(); - - if ( parent ) { - resize( (int)(0.8 * parent->width()), (int)(0.8 * parent->height()) ); - } -} -/*! - Destructor -*/ -Plot2d_ViewFrame::~Plot2d_ViewFrame() -{ - myActions.clear(); - qApp->removeEventFilter( this ); -} -/*! - Creates popup menu actions -*/ -void Plot2d_ViewFrame::createActions() -{ - QAD_ResourceMgr* rmgr = QAD_Desktop::getResourceManager(); - /* Linear/logarithmic mode */ - // Horizontal axis - QActionPGroup* modeHorGrp = new QActionPGroup( this ); - modeHorGrp->setExclusive( TRUE ); - QActionP* linearXAction = new QActionP ( tr( "TOT_PLOT2D_MODE_LINEAR_HOR"), - rmgr->loadPixmap( "SALOMEGUI", tr("ICON_PLOT2D_MODE_LINEAR_HOR") ) , - tr( "MEN_PLOT2D_MODE_LINEAR_HOR" ), 0, modeHorGrp ); - linearXAction->setStatusTip ( tr( "PRP_PLOT2D_MODE_LINEAR_HOR" ) ); - linearXAction->setToggleAction( true ); - myActions.insert( ModeXLinearId, linearXAction ); - QActionP* logXAction = new QActionP ( tr( "TOT_PLOT2D_MODE_LOGARITHMIC_HOR"), - rmgr->loadPixmap( "SALOMEGUI", tr("ICON_PLOT2D_MODE_LOGARITHMIC_HOR") ) , - tr( "MEN_PLOT2D_MODE_LOGARITHMIC_HOR" ), 0, modeHorGrp ); - logXAction->setStatusTip ( tr( "PRP_PLOT2D_MODE_LOGARITHMIC_HOR" ) ); - logXAction->setToggleAction( true ); - myActions.insert( ModeXLogarithmicId, logXAction ); - connect( modeHorGrp, SIGNAL( selected( QActionP* ) ), this, SLOT( onHorMode() ) ); - - // Vertical axis - QActionPGroup* modeVerGrp = new QActionPGroup( this ); - modeVerGrp->setExclusive( TRUE ); - QActionP* linearYAction = new QActionP ( tr( "TOT_PLOT2D_MODE_LINEAR_VER"), - rmgr->loadPixmap( "SALOMEGUI", tr("ICON_PLOT2D_MODE_LINEAR_VER") ) , - tr( "MEN_PLOT2D_MODE_LINEAR_VER" ), 0, modeVerGrp ); - linearYAction->setStatusTip ( tr( "PRP_PLOT2D_MODE_LINEAR_VER" ) ); - linearYAction->setToggleAction( true ); - myActions.insert( ModeYLinearId, linearYAction ); - QActionP* logYAction = new QActionP ( tr( "TOT_PLOT2D_MODE_LOGARITHMIC_VER"), - rmgr->loadPixmap( "SALOMEGUI", tr("ICON_PLOT2D_MODE_LOGARITHMIC_VER") ) , - tr( "MEN_PLOT2D_MODE_LOGARITHMIC_VER" ), 0, modeVerGrp ); - logYAction->setStatusTip ( tr( "PRP_PLOT2D_MODE_LOGARITHMIC_VER" ) ); - logYAction->setToggleAction( true ); - myActions.insert( ModeYLogarithmicId, logYAction ); - connect( modeVerGrp, SIGNAL( selected( QActionP* ) ), this, SLOT( onVerMode() ) ); - - /* Legend */ - QActionP* legendAction = new QActionP ( tr( "TOT_PLOT2D_SHOW_LEGEND"), - rmgr->loadPixmap( "SALOMEGUI", tr("ICON_PLOT2D_SHOW_LEGEND") ) , - tr( "MEN_PLOT2D_SHOW_LEGEND" ), 0, this ); - legendAction->setStatusTip ( tr( "PRP_PLOT2D_SHOW_LEGEND" ) ); - legendAction->setToggleAction( true ); - myActions.insert( LegendId, legendAction ); - connect( legendAction, SIGNAL( activated() ), this, SLOT( onLegend() ) ); - - /* Curve type */ - QActionPGroup* curveGrp = new QActionPGroup( this ); - curveGrp->setExclusive( TRUE ); - QActionP* pointsAction = new QActionP ( tr( "TOT_PLOT2D_CURVES_POINTS"), - rmgr->loadPixmap( "SALOMEGUI", tr("ICON_PLOT2D_CURVES_POINTS") ) , - tr( "MEN_PLOT2D_CURVES_POINTS" ), 0, curveGrp ); - pointsAction->setStatusTip ( tr( "PRP_PLOT2D_CURVES_POINTS" ) ); - pointsAction->setToggleAction( true ); - myActions.insert( CurvePointsId, pointsAction ); - QActionP* linesAction = new QActionP ( tr( "TOT_PLOT2D_CURVES_LINES"), - rmgr->loadPixmap( "SALOMEGUI", tr("ICON_PLOT2D_CURVES_LINES") ) , - tr( "MEN_PLOT2D_CURVES_LINES" ), 0, curveGrp ); - linesAction->setStatusTip ( tr( "PRP_PLOT2D_CURVES_LINES" ) ); - linesAction->setToggleAction( true ); - myActions.insert( CurveLinesId, linesAction ); - QActionP* splinesAction = new QActionP ( tr( "TOT_PLOT2D_CURVES_SPLINES"), - rmgr->loadPixmap( "SALOMEGUI", tr("ICON_PLOT2D_CURVES_SPLINES") ) , - tr( "MEN_PLOT2D_CURVES_SPLINES" ), 0, curveGrp ); - splinesAction->setStatusTip ( tr( "PRP_PLOT2D_CURVES_SPLINES" ) ); - splinesAction->setToggleAction( true ); - myActions.insert( CurveSplinesId, splinesAction ); - connect( curveGrp, SIGNAL( selected( QActionP* ) ), this, SLOT( onCurves() ) ); - - // Settings - QActionP* settingsAction = new QActionP ( tr( "TOT_PLOT2D_SETTINGS"), - rmgr->loadPixmap( "SALOMEGUI", tr("ICON_PLOT2D_SETTINGS") ) , - tr( "MEN_PLOT2D_SETTINGS" ), 0, this ); - settingsAction->setStatusTip ( tr( "PRP_PLOT2D_SETTINGS" ) ); - myActions.insert( SettingsId, settingsAction ); - connect( settingsAction, SIGNAL( activated() ), this, SLOT( onSettings() ) ); - - // Fit Data - QActionP* fitDataAction = new QActionP ( tr( "TOT_PLOT2D_FITDATA"), - rmgr->loadPixmap( "SALOMEGUI", tr("ICON_PLOT2D_FITDATA") ) , - tr( "MEN_PLOT2D_FITDATA" ), 0, this ); - fitDataAction->setStatusTip ( tr( "PRP_PLOT2D_FITDATA" ) ); - myActions.insert( FitDataId, fitDataAction ); - connect( fitDataAction, SIGNAL( activated() ), this, SLOT( onFitData() ) ); - - // Change background - QActionP* changeBGAction = new QActionP ( tr( "TOT_PLOT2D_CHANGE_BACKGROUND"), - tr( "MEN_PLOT2D_CHANGE_BACKGROUND" ), 0, this ); - fitDataAction->setStatusTip ( tr( "PRP_PLOT2D_CHANGE_BACKGROUND" ) ); - myActions.insert( ChangeBackgroundId, changeBGAction ); - connect( changeBGAction, SIGNAL( activated() ), this, SLOT( onChangeBackground() ) ); -} -/*! - Gets window's central widget -*/ -QWidget* Plot2d_ViewFrame::getViewWidget() -{ - return (QWidget*)myPlot; -} -/* Popup management : sets Popup server */ -void Plot2d_ViewFrame::setPopupServer( QAD_Application* App ) -{ -// QAD_PopupClientServer::setPopupServer( (QAD_PopupServer*)App ); -} -/*! - Popup menu creation -*/ -void Plot2d_ViewFrame::onCreatePopup() -{ - if ( myPopup ) { - myPopup->clear(); - // scaling - QPopupMenu* scalingPopup = new QPopupMenu( myPopup ); - myActions[ ModeXLinearId ]->addTo( scalingPopup ); - myActions[ ModeXLogarithmicId ]->addTo( scalingPopup ); - scalingPopup->insertSeparator(); - myActions[ ModeYLinearId ]->addTo( scalingPopup ); - myActions[ ModeYLogarithmicId ]->addTo( scalingPopup ); - myActions[ FitDataId ]->addTo( myPopup ); - myPopup->insertItem( tr( "SCALING_POPUP" ), scalingPopup ); - // curve type - QPopupMenu* curTypePopup = new QPopupMenu( myPopup ); - myActions[ CurvePointsId ]->addTo( curTypePopup ); - myActions[ CurveLinesId ]->addTo( curTypePopup ); - myActions[ CurveSplinesId ]->addTo( curTypePopup ); - myPopup->insertItem( tr( "CURVE_TYPE_POPUP" ), curTypePopup ); - // legend - myPopup->insertSeparator(); - myActions[ LegendId ]->addTo( myPopup ); - // settings - myPopup->insertSeparator(); - myActions[ SettingsId ]->addTo( myPopup ); - // Change background - myPopup->insertSeparator(); - myActions[ ChangeBackgroundId ]->addTo( myPopup ); - } -} -/*! - Renames curve if it is found -*/ -void Plot2d_ViewFrame::rename( const Handle(SALOME_InteractiveObject)& IObject, QString newName ) -{ - Plot2d_Curve* curve = getCurveByIO( IObject ); - if ( curve ) { - curve->setVerTitle( newName ); - int key = hasCurve( curve ); - if ( key ) { - myPlot->setCurveTitle( key, newName ); -// int legendIndex = myPlot->getLegend()->findFirstKey( key ); -// if ( legendIndex != myPlot->getLegend()->itemCnt() ) -// myPlot->getLegend()->setText( legendIndex, aSymbol ); - } - } - updateTitles(); -} -/*! - Returns true if interactive object is presented in the viewer -*/ -bool Plot2d_ViewFrame::isInViewer( const Handle(SALOME_InteractiveObject)& IObject ) -{ - if( getCurveByIO( IObject ) != NULL ) - return 1; - else{ - if(!IObject.IsNull()){ - QIntDictIterator it(myCurves); - for(; it.current();++it){ - if(it.current()->hasIO() && it.current()->getTableIO()->isSame(IObject)) - return 1; - }} - } - return 0; -} -/*! - Returns true if interactive object is presented in the viewer and displayed -*/ -bool Plot2d_ViewFrame::isVisible( const Handle(SALOME_InteractiveObject)& IObject ) -{ - Plot2d_Curve* curve = getCurveByIO( IObject ); - if ( curve ) { - int key = hasCurve( curve ); - if ( key ) - return myPlot->curve( key )->enabled(); - } - return false; -} -/*! - Return interactive obeject if is presented in the viewer -*/ -Handle(SALOME_InteractiveObject) Plot2d_ViewFrame::FindIObject( const char* Entry ) -{ - Handle(SALOME_InteractiveObject) o; - QIntDictIterator it( myCurves ); - for ( ; it.current(); ++it ) { - if ( it.current()->hasIO() && !strcmp( it.current()->getIO()->getEntry(), Entry ) ) { - o = it.current()->getIO(); - break; - } - } - return o; -} -/*! - Actually this method just re-displays curves which refers to the -*/ -void Plot2d_ViewFrame::Display( const Handle(SALOME_InteractiveObject)& IObject, bool update ) -{ - Plot2d_Curve* curve = getCurveByIO( IObject ); - if ( curve ) - updateCurve( curve, update ); -} -/*! - Actually this method just erases all curves which don't refer to - and re-displays curve which is of -*/ -void Plot2d_ViewFrame::DisplayOnly( const Handle(SALOME_InteractiveObject)& IObject ) -{ - Plot2d_Curve* curve = getCurveByIO( IObject ); - QList clist; - getCurves( clist ); - for ( int i = 0; i < clist.count(); i++ ) { - if ( clist.at( i ) != curve ) - eraseCurve( curve ); - else - updateCurve( curve, false ); - } - myPlot->replot(); -} -/*! - Removes from the viewer the curves which refer to -*/ -void Plot2d_ViewFrame::Erase( const Handle(SALOME_InteractiveObject)& IObject, bool update ) -{ - Plot2d_Curve* curve = getCurveByIO( IObject ); - if ( curve ) - eraseCurve( curve, update ); - // it can be table or container object selected - QAD_Study* activeStudy = QAD_Application::getDesktop()->getActiveStudy(); - SALOMEDS::SObject_var aSO = activeStudy->getStudyDocument()->FindObjectID(IObject->getEntry()); - if ( !aSO->_is_nil() ) { - SALOMEDS::ChildIterator_var aIter = activeStudy->getStudyDocument()->NewChildIterator( aSO ); - for ( ; aIter->More(); aIter->Next() ) { - SALOMEDS::SObject_var aChildSO = aIter->Value(); - SALOMEDS::SObject_var refSO; - if ( aChildSO->ReferencedObject( refSO ) && !refSO->_is_nil() ) - aChildSO = refSO; - curve = getCurveByIO( new SALOME_InteractiveObject( aChildSO->GetID(), "", "" ) ); - if ( curve ) - eraseCurve( curve, update ); - } - } -} -/*! - Actually this method just re-displays all curves which are presented in the viewer -*/ -void Plot2d_ViewFrame::DisplayAll() -{ - QList clist; - getCurves( clist ); - for ( int i = 0; i < clist.count(); i++ ) { - updateCurve( clist.at( i ), false ); - } - myPlot->replot(); -} -/*! - Removes all curves from the view -*/ -void Plot2d_ViewFrame::EraseAll() -{ - myPlot->clear(); - myCurves.clear(); - myPlot->replot(); -} -/*! - Redraws viewframe contents -*/ -void Plot2d_ViewFrame::Repaint() -{ - myPlot->replot(); -} -/*! - Event filter -*/ -bool Plot2d_ViewFrame::eventFilter( QObject* o, QEvent* e ) -{ - if ( ( e->type() == QEvent::MouseButtonPress || e->type() == QEvent::KeyPress ) && o != myPlot->canvas() ) { - myOperation = NoOpId; - qApp->removeEventFilter( this ); - } - return QMainWindow::eventFilter( o, e ); -} -/*! - Sets title -*/ -void Plot2d_ViewFrame::setTitle( const QString& title ) -{ - setMainTitle( myTitleEnabled, title, true ); -} -/*! - Reads Plot2d view settings from the preferences -*/ -void Plot2d_ViewFrame::readPreferences() -{ - if ( QAD_CONFIG->hasSetting( "Plot2d:CurveType" ) ) { // curve type - myCurveType = QAD_CONFIG->getSetting( "Plot2d:CurveType" ).toInt(); - if ( myCurveType < 0 || myCurveType > 2 ) myCurveType = 1; - } - if ( QAD_CONFIG->hasSetting( "Plot2d:ShowLegend" ) ) { - myShowLegend = QAD_CONFIG->getSetting( "Plot2d:ShowLegend" ) == QString( "true" ); // show legend - } - if ( QAD_CONFIG->hasSetting( "Plot2d:LegendPos" ) ) { // legend position - myLegendPos = QAD_CONFIG->getSetting( "Plot2d:LegendPos" ).toInt(); - if ( myLegendPos < 0 || myLegendPos > 3 ) myLegendPos = 1; - } - if ( QAD_CONFIG->hasSetting( "Plot2d:MarkerSize" ) ) { // marker size - myMarkerSize = QAD_CONFIG->getSetting( "Plot2d:MarkerSize" ).toInt(); - } - if ( QAD_CONFIG->hasSetting( "Plot2d:Background" ) ) { // background color - QString bgString = QAD_CONFIG->getSetting( "Plot2d:Background" ); - QStringList bgData = QStringList::split( ":", bgString, true ); - int bgRed = 0, bgGreen = 0, bgBlue = 0; - if ( bgData.count() > 0 ) bgRed = bgData[ 0 ].toInt(); - if ( bgData.count() > 1 ) bgGreen = bgData[ 1 ].toInt(); - if ( bgData.count() > 2 ) bgBlue = bgData[ 2 ].toInt(); - myBackground = QColor( bgRed, bgGreen, bgBlue ); - } - if ( QAD_CONFIG->hasSetting( "Plot2d:ShowTitle" ) ) { // main title - myTitleEnabled = QAD_CONFIG->getSetting( "Plot2d:ShowTitle" ) == QString( "true" ); - } - if ( QAD_CONFIG->hasSetting( "Plot2d:ShowHorTitle" ) ) { // hor.axis title - myXTitleEnabled = QAD_CONFIG->getSetting( "Plot2d:ShowHorTitle" ) == QString( "true" ); - } - if ( QAD_CONFIG->hasSetting( "Plot2d:ShowVerTitle" ) ) { // ver.axisn title - myYTitleEnabled = QAD_CONFIG->getSetting( "Plot2d:ShowVerTitle" ) == QString( "true" ); - } - if ( QAD_CONFIG->hasSetting( "Plot2d:EnableHorMajorGrid" ) ) { // grid - myXGridMajorEnabled = QAD_CONFIG->getSetting( "Plot2d:EnableHorMajorGrid" ) == QString( "true" ); - } - if ( QAD_CONFIG->hasSetting( "Plot2d:EnableVerMajorGrid" ) ) { - myYGridMajorEnabled = QAD_CONFIG->getSetting( "Plot2d:EnableVerMajorGrid" ) == QString( "true" ); - } - if ( QAD_CONFIG->hasSetting( "Plot2d:EnableHorMinorGrid" ) ) { - myXGridMinorEnabled = QAD_CONFIG->getSetting( "Plot2d:EnableHorMinorGrid" ) == QString( "true" ); - } - if ( QAD_CONFIG->hasSetting( "Plot2d:EnableVerMinorGrid" ) ) { - myYGridMinorEnabled = QAD_CONFIG->getSetting( "Plot2d:EnableVerMinorGrid" ) == QString( "true" ); - } - if ( QAD_CONFIG->hasSetting( "Plot2d:HorMajorGridMax" ) ) { - myXGridMaxMajor = QAD_CONFIG->getSetting( "Plot2d:HorMajorGridMax" ).toInt(); - } - if ( QAD_CONFIG->hasSetting( "Plot2d:VerMajorGridMax" ) ) { - myYGridMaxMajor = QAD_CONFIG->getSetting( "Plot2d:VerMajorGridMax" ).toInt(); - } - if ( QAD_CONFIG->hasSetting( "Plot2d:HorMinorGridMax" ) ) { - myXGridMaxMinor = QAD_CONFIG->getSetting( "Plot2d:HorMinorGridMax" ).toInt(); - } - if ( QAD_CONFIG->hasSetting( "Plot2d:VerMinorGridMax" ) ) { - myYGridMaxMinor = QAD_CONFIG->getSetting( "Plot2d:VerMinorGridMax" ).toInt(); - } - if ( QAD_CONFIG->hasSetting( "Plot2d:HorScaleMode" ) ) { // scale mode - myXMode = QAD_CONFIG->getSetting( "Plot2d:HorScaleMode" ).toInt(); - if ( myXMode < 0 || myXMode > 1 ) myXMode = 0; - } - if ( QAD_CONFIG->hasSetting( "Plot2d:VerScaleMode" ) ) { - myYMode = QAD_CONFIG->getSetting( "Plot2d:VerScaleMode" ).toInt(); - if ( myYMode < 0 || myYMode > 1 ) myYMode = 0; - } -} -/*! - Writes Plot2d view settings to the preferences -*/ -void Plot2d_ViewFrame::writePreferences() -{ - QAD_CONFIG->addSetting( "Plot2d:CurveType", myCurveType ); // curve type - QAD_CONFIG->addSetting( "Plot2d:ShowLegend", myShowLegend ? "true" : "false" ); // show legend - QAD_CONFIG->addSetting( "Plot2d:LegendPos", myLegendPos ); // legend position - QAD_CONFIG->addSetting( "Plot2d:MarkerSize", myMarkerSize ); // marker size - QStringList bgData; - bgData.append( QString::number( myBackground.red() ) ); - bgData.append( QString::number( myBackground.green() ) ); - bgData.append( QString::number( myBackground.blue() ) ); - QAD_CONFIG->addSetting( "Plot2d:Background", bgData.join( ":" ) ); // background color - QAD_CONFIG->addSetting( "Plot2d:ShowTitle", myTitleEnabled ? "true" : "false" ); // titles - QAD_CONFIG->addSetting( "Plot2d:ShowHorTitle", myXTitleEnabled ? "true" : "false" ); - QAD_CONFIG->addSetting( "Plot2d:ShowVerTitle", myYTitleEnabled ? "true" : "false" ); - QAD_CONFIG->addSetting( "Plot2d:EnableHorMajorGrid", myXGridMajorEnabled ? "true" : "false" ); // grid - QAD_CONFIG->addSetting( "Plot2d:EnableVerMajorGrid", myYGridMajorEnabled ? "true" : "false" ); - QAD_CONFIG->addSetting( "Plot2d:EnableHorMinorGrid", myXGridMinorEnabled ? "true" : "false" ); - QAD_CONFIG->addSetting( "Plot2d:EnableVerMinorGrid", myYGridMinorEnabled ? "true" : "false" ); - QAD_CONFIG->addSetting( "Plot2d:HorMajorGridMax", myXGridMaxMajor ); - QAD_CONFIG->addSetting( "Plot2d:VerMajorGridMax", myYGridMaxMajor ); - QAD_CONFIG->addSetting( "Plot2d:HorMinorGridMax", myXGridMaxMinor ); - QAD_CONFIG->addSetting( "Plot2d:VerMinorGridMax", myYGridMaxMinor ); - QAD_CONFIG->addSetting( "Plot2d:HorScaleMode", myXMode ); // scale mode - QAD_CONFIG->addSetting( "Plot2d:VerScaleMode", myYMode ); -} -/*! - Prints mouse cursor coordinates into string -*/ -QString Plot2d_ViewFrame::getInfo( const QPoint& pnt ) -{ - bool xFound = false, yFound = false; - double xCoord, yCoord; - const QwtScaleDiv* aXscale = myPlot->axisScale( QwtPlot::xBottom ); - for ( int i = 0; i < aXscale->majCnt(); i++ ) { - double majXmark = aXscale->majMark( i ); - int xmark = myPlot->transform( QwtPlot::xBottom, majXmark ); - if ( xmark-2 == pnt.x() ) { - xCoord = majXmark; - xFound = true; - MESSAGE("Plot2d_ViewFrame::getInfo : close maj X mark("<minCnt(); i++ ) { - double minXmark = aXscale->minMark( i ); - int xmark = myPlot->transform( QwtPlot::xBottom, minXmark ); - if ( xmark-2 == pnt.x() ) { - xCoord = minXmark; - xFound = true; - MESSAGE("Plot2d_ViewFrame::getInfo : close min X mark("<axisScale( QwtPlot::yLeft ); - for ( int i = 0; i < aYscale->majCnt(); i++ ) { - double majYmark = aYscale->majMark( i ); - int ymark = myPlot->transform( QwtPlot::yLeft, majYmark ); - if ( ymark-2 == pnt.y() ) { - yCoord = majYmark; - yFound = true; - break; - } - } - if ( !yFound ) { - for ( int i = 0; i < aYscale->minCnt(); i++ ) { - double minYmark = aYscale->minMark( i ); - int ymark = myPlot->transform( QwtPlot::yLeft, minYmark ); - if ( ymark-2 == pnt.y() ) { - yCoord = minYmark; - yFound = true; - break; - } - } - } - QString strX = QString::number( xFound ? xCoord : myPlot->invTransform( QwtPlot::xBottom, pnt.x() ) ).stripWhiteSpace(); - if ( strX == "-0" ) - strX = "0"; - QString strY = QString::number( yFound ? yCoord : myPlot->invTransform( QwtPlot::yLeft, pnt.y() ) ).stripWhiteSpace(); - if ( strY == "-0" ) - strY = "0"; - QString info = tr("INF_COORDINATES").arg( strX ).arg( strY ); - return info; -} -/*! - Converts Plot2d_Curve's marker style to Qwt marker style [ static ] -*/ -static QwtSymbol::Style plot2qwtMarker( Plot2d_Curve::MarkerType m ) -{ - QwtSymbol::Style ms = QwtSymbol::None; - switch ( m ) { - case Plot2d_Curve::Circle: - ms = QwtSymbol::Ellipse; break; - case Plot2d_Curve::Rectangle: - ms = QwtSymbol::Rect; break; - case Plot2d_Curve::Diamond: - ms = QwtSymbol::Diamond; break; - case Plot2d_Curve::DTriangle: - ms = QwtSymbol::DTriangle; break; - case Plot2d_Curve::UTriangle: - ms = QwtSymbol::UTriangle; break; - case Plot2d_Curve::LTriangle: // Qwt confuses LTriangle and RTriangle :((( - ms = QwtSymbol::RTriangle; break; - case Plot2d_Curve::RTriangle: // Qwt confuses LTriangle and RTriangle :((( - ms = QwtSymbol::LTriangle; break; - case Plot2d_Curve::Cross: - ms = QwtSymbol::Cross; break; - case Plot2d_Curve::XCross: - ms = QwtSymbol::XCross; break; - case Plot2d_Curve::None: - default: - ms = QwtSymbol::None; break; - } - return ms; -} -/*! - Converts Qwt marker style to Plot2d_Curve's marker style [ static ] -*/ -static Plot2d_Curve::MarkerType qwt2plotMarker( QwtSymbol::Style m ) -{ - Plot2d_Curve::MarkerType ms = Plot2d_Curve::None; - switch ( m ) { - case QwtSymbol::Ellipse: - ms = Plot2d_Curve::Circle; break; - case QwtSymbol::Rect: - ms = Plot2d_Curve::Rectangle; break; - case QwtSymbol::Diamond: - ms = Plot2d_Curve::Diamond; break; - case QwtSymbol::DTriangle: - ms = Plot2d_Curve::DTriangle; break; - case QwtSymbol::UTriangle: - ms = Plot2d_Curve::UTriangle; break; - case QwtSymbol::RTriangle: // Qwt confuses LTriangle and RTriangle :((( - ms = Plot2d_Curve::LTriangle; break; - case QwtSymbol::LTriangle: // Qwt confuses LTriangle and RTriangle :((( - ms = Plot2d_Curve::RTriangle; break; - case QwtSymbol::Cross: - ms = Plot2d_Curve::Cross; break; - case QwtSymbol::XCross: - ms = Plot2d_Curve::XCross; break; - case QwtSymbol::None: - default: - ms = Plot2d_Curve::None; break; - } - return ms; -} -/*! - Converts Plot2d_Curve's line style to Qwt line style [ static ] -*/ -static Qt::PenStyle plot2qwtLine( Plot2d_Curve::LineType p ) -{ - Qt::PenStyle ps = Qt::NoPen; - switch ( p ) { - case Plot2d_Curve::Solid: - ps = Qt::SolidLine; break; - case Plot2d_Curve::Dash: - ps = Qt::DashLine; break; - case Plot2d_Curve::Dot: - ps = Qt::DotLine; break; - case Plot2d_Curve::DashDot: - ps = Qt::DashDotLine; break; - case Plot2d_Curve::DashDotDot: - ps = Qt::DashDotDotLine; break; - case Plot2d_Curve::NoPen: - default: - ps = Qt::NoPen; break; - } - return ps; -} -/*! - Converts Qwt line style to Plot2d_Curve's line style [ static ] -*/ -static Plot2d_Curve::LineType qwt2plotLine( Qt::PenStyle p ) -{ - Plot2d_Curve::LineType ps = Plot2d_Curve::NoPen; - switch ( p ) { - case Qt::SolidLine: - ps = Plot2d_Curve::Solid; break; - case Qt::DashLine: - ps = Plot2d_Curve::Dash; break; - case Qt::DotLine: - ps = Plot2d_Curve::Dot; break; - case Qt::DashDotLine: - ps = Plot2d_Curve::DashDot; break; - case Qt::DashDotDotLine: - ps = Plot2d_Curve::DashDotDot; break; - case Qt::NoPen: - default: - ps = Plot2d_Curve::NoPen; break; - } - return ps; -} -/*! - Adds curve into view -*/ -void Plot2d_ViewFrame::displayCurve( Plot2d_Curve* curve, bool update ) -{ - if ( !curve ) - return; - if ( hasCurve( curve ) ) { - updateCurve( curve, update ); - } - else { - long curveKey = myPlot->insertCurve( curve->getVerTitle() ); - myCurves.insert( curveKey, curve ); - if ( curve->isAutoAssign() ) { - QwtSymbol::Style typeMarker; - QColor color; - Qt::PenStyle typeLine; - myPlot->getNextMarker( typeMarker, color, typeLine ); - myPlot->setCurvePen( curveKey, QPen( color, DEFAULT_LINE_WIDTH, typeLine ) ); - myPlot->setCurveSymbol( curveKey, QwtSymbol( typeMarker, - QBrush( color ), - QPen( color ), - QSize( myMarkerSize, myMarkerSize ) ) ); - curve->setColor( color ); - curve->setLine( qwt2plotLine( typeLine ) ); - curve->setMarker( qwt2plotMarker( typeMarker ) ); - } - else { - Qt::PenStyle ps = plot2qwtLine( curve->getLine() ); - QwtSymbol::Style ms = plot2qwtMarker( curve->getMarker() ); - myPlot->setCurvePen( curveKey, QPen( curve->getColor(), curve->getLineWidth(), ps ) ); - myPlot->setCurveSymbol( curveKey, QwtSymbol( ms, - QBrush( curve->getColor() ), - QPen( curve->getColor() ), - QSize( myMarkerSize, myMarkerSize ) ) ); - } - if ( myCurveType == 0 ) - myPlot->setCurveStyle( curveKey, QwtCurve::NoCurve ); - else if ( myCurveType == 1 ) - myPlot->setCurveStyle( curveKey, QwtCurve::Lines ); - else if ( myCurveType == 2 ) - myPlot->setCurveStyle( curveKey, QwtCurve::Spline ); - myPlot->setCurveData( curveKey, curve->horData(), curve->verData(), curve->nbPoints() ); - } - updateTitles(); - if ( update ) - myPlot->replot(); -} -/*! - Adds curves into view -*/ -void Plot2d_ViewFrame::displayCurves( Plot2d_CurveContainer& curves, bool update ) -{ - myPlot->setUpdatesEnabled( false ); - for ( int i = 0; i < curves.count(); i++ ) { - displayCurve( curves.curve( i ), false ); - } -// fitAll(); - myPlot->setUpdatesEnabled( true ); - if ( update ) - myPlot->replot(); -} -/*! - Erases curve -*/ -void Plot2d_ViewFrame::eraseCurve( Plot2d_Curve* curve, bool update ) -{ - if ( !curve ) - return; - int curveKey = hasCurve( curve ); - if ( curveKey ) { - myPlot->removeCurve( curveKey ); - myCurves.remove( curveKey ); - updateTitles(); - if ( update ) - myPlot->replot(); - } -} -/*! - Erases curves -*/ -void Plot2d_ViewFrame::eraseCurves( Plot2d_CurveContainer& curves, bool update ) -{ - for ( int i = 0; i < curves.count(); i++ ) { - eraseCurve( curves.curve( i ), false ); - } -// fitAll(); - if ( update ) - myPlot->replot(); -} -/*! - Updates curves attributes -*/ -void Plot2d_ViewFrame::updateCurve( Plot2d_Curve* curve, bool update ) -{ - if ( !curve ) - return; - int curveKey = hasCurve( curve ); - if ( curveKey ) { - if ( !curve->isAutoAssign() ) { - Qt::PenStyle ps = plot2qwtLine( curve->getLine() ); - QwtSymbol::Style ms = plot2qwtMarker( curve->getMarker() ); - myPlot->setCurvePen( curveKey, QPen( curve->getColor(), curve->getLineWidth(), ps ) ); - myPlot->setCurveSymbol( curveKey, QwtSymbol( ms, - QBrush( curve->getColor() ), - QPen( curve->getColor() ), - QSize( myMarkerSize, myMarkerSize ) ) ); - } - myPlot->setCurveTitle( curveKey, curve->getVerTitle() ); - myPlot->setCurveData( curveKey, curve->horData(), curve->verData(), curve->nbPoints() ); - myPlot->curve( curveKey )->setEnabled( true ); - updateTitles(); - if ( update ) - myPlot->replot(); - } -} -/*! - Returns curve key if is is displayed in the viewer and 0 otherwise -*/ -int Plot2d_ViewFrame::hasCurve( Plot2d_Curve* curve ) -{ - QIntDictIterator it( myCurves ); - for ( ; it.current(); ++it ) { - if ( it.current() == curve ) - return it.currentKey(); - } - return 0; -} -Plot2d_Curve* Plot2d_ViewFrame::getCurveByIO( const Handle(SALOME_InteractiveObject)& theIObject ) -{ - if ( !theIObject.IsNull() ) { - QIntDictIterator it( myCurves ); - for ( ; it.current(); ++it ) { - if ( it.current()->hasIO() && it.current()->getIO()->isSame( theIObject ) ) - return it.current(); - } - } - return 0; -} -/*! - Gets lsit of displayed curves -*/ -int Plot2d_ViewFrame::getCurves( QList& clist ) -{ - clist.clear(); - clist.setAutoDelete( false ); - QIntDictIterator it( myCurves ); - for ( ; it.current(); ++it ) { - clist.append( it.current() ); - } - return clist.count(); -} - -/*! - Updates titles according to curves -*/ -#define BRACKETIZE(x) QString( "[ " ) + x + QString( " ]" ) -void Plot2d_ViewFrame::updateTitles() -{ - QAD_Study* activeStudy = QAD_Application::getDesktop()->getActiveStudy(); - QIntDictIterator it( myCurves ); - QStringList aXTitles; - QStringList aYTitles; - QStringList aXUnits; - QStringList aYUnits; - QStringList aTables; - int i = 0; - while ( it.current() ) { - // collect titles and units from all curves... - QString xTitle = it.current()->getHorTitle().stripWhiteSpace(); - QString yTitle = it.current()->getVerTitle().stripWhiteSpace(); - QString xUnits = it.current()->getHorUnits().stripWhiteSpace(); - QString yUnits = it.current()->getVerUnits().stripWhiteSpace(); - - aYTitles.append( yTitle ); - if ( aXTitles.find( xTitle ) == aXTitles.end() ) - aXTitles.append( xTitle ); - if ( aXUnits.find( xUnits ) == aXUnits.end() ) - aXUnits.append( xUnits ); - if ( aYUnits.find( yUnits ) == aYUnits.end() ) - aYUnits.append( yUnits ); - - if ( activeStudy && it.current()->hasTableIO() ) { - SALOMEDS::SObject_var SO = activeStudy->getStudyDocument()->FindObjectID( it.current()->getTableIO()->getEntry() ); - if ( !SO->_is_nil() ) { - SALOMEDS::GenericAttribute_var anAttr; - if ( SO->FindAttribute( anAttr, "AttributeName" ) ) { - SALOMEDS::AttributeName_var aNameAttr = SALOMEDS::AttributeName::_narrow( anAttr ); - QString aName = aNameAttr->Value(); - if ( !aName.isEmpty() && aTables.find( aName ) == aTables.end() ) - aTables.append( aName ); - } - } - } - - ++it; - ++i; - } - // ... and update plot 2d view - QString xUnits, yUnits; - if ( aXUnits.count() == 1 && !aXUnits[0].isEmpty() ) - xUnits = BRACKETIZE( aXUnits[0] ); - if ( aYUnits.count() == 1 && !aYUnits[0].isEmpty()) - yUnits = BRACKETIZE( aYUnits[0] ); - QString xTitle, yTitle; - if ( aXTitles.count() == 1 && aXUnits.count() == 1 ) - xTitle = aXTitles[0]; - if ( aYTitles.count() == 1 ) - yTitle = aYTitles[0]; - - if ( !xTitle.isEmpty() && !xUnits.isEmpty() ) - xTitle += " "; - if ( !yTitle.isEmpty() && !yUnits.isEmpty() ) - yTitle += " "; - - setXTitle( myXTitleEnabled, xTitle + xUnits ); - setYTitle( myYTitleEnabled, yTitle + yUnits ); - setTitle( aTables.join("; ") ); -} -/*! - Fits the view to see all data -*/ -void Plot2d_ViewFrame::fitAll() -{ - myPlot->setAxisAutoScale( QwtPlot::yLeft ); - myPlot->setAxisAutoScale( QwtPlot::xBottom ); - myPlot->replot(); -} -/*! - Fits the view to rectangle area (pixels) -*/ -void Plot2d_ViewFrame::fitArea( const QRect& area ) -{ - QRect rect = area.normalize(); - if ( rect.width() < MIN_RECT_SIZE ) { - rect.setWidth( MIN_RECT_SIZE ); - rect.setLeft( rect.left() - MIN_RECT_SIZE/2 ); - } - if ( rect.height() < MIN_RECT_SIZE ) { - rect.setHeight( MIN_RECT_SIZE ); - rect.setTop( rect.top() - MIN_RECT_SIZE/2 ); - } - myPlot->setAxisScale( QwtPlot::yLeft, - myPlot->invTransform( QwtPlot::yLeft, rect.top() ), - myPlot->invTransform( QwtPlot::yLeft, rect.bottom() ) ); - myPlot->setAxisScale( QwtPlot::xBottom, - myPlot->invTransform( QwtPlot::xBottom, rect.left() ), - myPlot->invTransform( QwtPlot::xBottom, rect.right() ) ); - myPlot->replot(); -} -/*! - Tests if it is necessary to start operation on mouse action -*/ -int Plot2d_ViewFrame::testOperation( const QMouseEvent& me ) -{ - int btn = me.button() | me.state(); - int zoomBtn = ControlButton | LeftButton; - int panBtn = ControlButton | MidButton; - int fitBtn = ControlButton | RightButton; - - if ( btn == zoomBtn ) - return ZoomId; - if ( btn == panBtn ) - return PanId; - if ( btn == fitBtn ) - return FitAreaId; - return NoOpId; -} -/*! - Mode toolbar buttons slot - horizontal axis (/) -*/ -void Plot2d_ViewFrame::onHorMode() -{ - if ( myActions[ ModeXLinearId ]->isOn() ) - setHorScaleMode( 0 ); - else if ( myActions[ ModeXLogarithmicId ]->isOn() ) - setHorScaleMode( 1 ); -} -/*! - Mode toolbar buttons slot - vertical axis (/) -*/ -void Plot2d_ViewFrame::onVerMode() -{ - if ( myActions[ ModeYLinearId ]->isOn() ) - setVerScaleMode( 0 ); - else if ( myActions[ ModeYLogarithmicId ]->isOn() ) - setVerScaleMode( 1 ); -} -/*! - "Show/hide legend" toolbar action slot -*/ -void Plot2d_ViewFrame::onLegend() -{ - showLegend( myActions[ LegendId ]->isOn() ); -} -/*! - "Curve type" toolbar action slot -*/ -void Plot2d_ViewFrame::onCurves() -{ - if ( myActions[ CurvePointsId ]->isOn() ) - setCurveType( 0 ); - else if ( myActions[ CurveLinesId ]->isOn() ) - setCurveType( 1 ); - else if ( myActions[ CurveSplinesId ]->isOn() ) - setCurveType( 2 ); -} -/*! - "Settings" toolbar action slot -*/ -void Plot2d_ViewFrame::onSettings() -{ -#ifdef TEST_AUTOASSIGN - typedef QMap IList; - typedef QMap SList; - IList mars, lins; - SList cols; - cols[ "red-min" ] = 1000; - cols[ "red-max" ] = -1; - cols[ "green-min" ] = 1000; - cols[ "green-max" ] = -1; - cols[ "blue-min" ] = 1000; - cols[ "blue-max" ] = -1; - for ( unsigned i = 0; i < 10000; i++ ) { - QwtSymbol::Style typeMarker; - QColor color; - Qt::PenStyle typeLine; - myPlot->getNextMarker( typeMarker, color, typeLine ); - if ( mars.contains(typeMarker) ) - mars[ typeMarker ] = mars[ typeMarker ]+1; - else - mars[ typeMarker ] = 0; - if ( lins.contains(typeLine) ) - lins[ typeLine ] = lins[ typeLine ]+1; - else - lins[ typeLine ] = 0; - if ( cols[ "red-max" ] < color.red() ) - cols[ "red-max" ] = color.red(); - if ( cols[ "red-min" ] > color.red() ) - cols[ "red-min" ] = color.red(); - if ( cols[ "green-max" ] < color.green() ) - cols[ "green-max" ] = color.green(); - if ( cols[ "green-min" ] > color.green() ) - cols[ "green-min" ] = color.green(); - if ( cols[ "blue-max" ] < color.blue() ) - cols[ "blue-max" ] = color.blue(); - if ( cols[ "blue-min" ] > color.blue() ) - cols[ "blue-min" ] = color.blue(); - } - for (IList::Iterator it = mars.begin(); it != mars.end(); ++it) - MESSAGE("markers( " << it.key() << ") = " << it.data() ); - for (IList::Iterator it = lins.begin(); it != lins.end(); ++it) - MESSAGE("lines( " << it.key() << ") = " << it.data() ); - for (SList::Iterator it = cols.begin(); it != cols.end(); ++it) - MESSAGE("colors( " << it.key() << ") = " << it.data() ); -#endif - - Plot2d_SetupViewDlg* dlg = new Plot2d_SetupViewDlg( this, true ); - dlg->setMainTitle( myTitleEnabled, myTitle ); - dlg->setXTitle( myXTitleEnabled, myXTitle ); - dlg->setYTitle( myYTitleEnabled, myYTitle ); - dlg->setCurveType( myCurveType ); - dlg->setLegend( myShowLegend, myLegendPos ); - dlg->setMarkerSize( myMarkerSize ); - dlg->setBackgroundColor( myBackground ); - dlg->setMajorGrid( myXGridMajorEnabled, myPlot->axisMaxMajor( QwtPlot::xBottom ), - myYGridMajorEnabled, myPlot->axisMaxMajor( QwtPlot::yLeft ) ); - dlg->setMinorGrid( myXGridMinorEnabled, myPlot->axisMaxMinor( QwtPlot::xBottom ), - myYGridMinorEnabled, myPlot->axisMaxMinor( QwtPlot::yLeft ) ); - dlg->setScaleMode( myXMode, myYMode ); - - if ( dlg->exec() == QDialog::Accepted ) { - // horizontal axis title - setXTitle( dlg->isXTitleEnabled(), dlg->getXTitle(), false ); - // vertical axis title - setYTitle( dlg->isYTitleEnabled(), dlg->getYTitle(), false ); - // main title - setMainTitle( dlg->isMainTitleEnabled(), dlg->getMainTitle(), true ); - // curve type - if ( myCurveType != dlg->getCurveType() ) { - setCurveType( dlg->getCurveType(), false ); - } - // legend - if ( myShowLegend != dlg->isLegendEnabled() ) { - showLegend( dlg->isLegendEnabled(), false ); - } - if ( myLegendPos != dlg->getLegendPos() ) { - setLegendPos( dlg->getLegendPos() ); - } - // marker size - if ( myMarkerSize != dlg->getMarkerSize() ) { - setMarkerSize( dlg->getMarkerSize(), false ); - } - // background color - if ( myBackground != dlg->getBackgroundColor() ) { - setBackgroundColor( dlg->getBackgroundColor() ); - } - // grid - bool aXGridMajorEnabled, aXGridMinorEnabled, aYGridMajorEnabled, aYGridMinorEnabled; - int aXGridMaxMajor, aXGridMaxMinor, aYGridMaxMajor, aYGridMaxMinor; - dlg->getMajorGrid( aXGridMajorEnabled, aXGridMaxMajor, aYGridMajorEnabled, aYGridMaxMajor ); - dlg->getMinorGrid( aXGridMinorEnabled, aXGridMaxMinor, aYGridMinorEnabled, aYGridMaxMinor ); - setXGrid( aXGridMajorEnabled, aXGridMaxMajor, aXGridMinorEnabled, aXGridMaxMinor, false ); - setYGrid( aYGridMajorEnabled, aYGridMaxMajor, aYGridMinorEnabled, aYGridMaxMinor, false ); - // scale mode - if ( myXMode != dlg->getXScaleMode() ) { - setHorScaleMode( dlg->getXScaleMode() ); - } - if ( myYMode != dlg->getYScaleMode() ) { - setVerScaleMode( dlg->getYScaleMode() ); - } - // update view - myPlot->replot(); - // update preferences - if ( dlg->isSetAsDefault() ) - writePreferences(); - } - delete dlg; -} -/*! - "Fit Data" command slot -*/ -void Plot2d_ViewFrame::onFitData() -{ - Plot2d_FitDataDlg* dlg = new Plot2d_FitDataDlg( this ); - int ixMin = myPlot->canvasMap( QwtPlot::xBottom ).i1(); - int ixMax = myPlot->canvasMap( QwtPlot::xBottom ).i2(); - int iyMin = myPlot->canvasMap( QwtPlot::yLeft ).i1(); - int iyMax = myPlot->canvasMap( QwtPlot::yLeft ).i2(); - double xMin = myPlot->invTransform(QwtPlot::xBottom, ixMin); - double xMax = myPlot->invTransform(QwtPlot::xBottom, ixMax); - double yMin = myPlot->invTransform(QwtPlot::yLeft, iyMin); - double yMax = myPlot->invTransform(QwtPlot::yLeft, iyMax); - - dlg->setRange( xMin, xMax, yMin, yMax ); - if ( dlg->exec() == QDialog::Accepted ) { - int mode = dlg->getRange( xMin, xMax, yMin, yMax ); - if ( mode == 0 || mode == 2 ) - myPlot->setAxisScale( QwtPlot::yLeft, yMax, yMin ); - if ( mode == 0 || mode == 1 ) - myPlot->setAxisScale( QwtPlot::xBottom, xMin, xMax ); - myPlot->replot(); - } - delete dlg; -} -/*! - Change background color -*/ -void Plot2d_ViewFrame::onChangeBackground() -{ - QColor selColor = QColorDialog::getColor ( backgroundColor(), this ); - if ( selColor.isValid() ) { - setBackgroundColor( selColor ); - } -} -/*! - Sets curve type -*/ -void Plot2d_ViewFrame::setCurveType( int curveType, bool update ) -{ - myCurveType = curveType; - if ( curveType == 0 ) - myActions[ CurvePointsId ]->setOn( true ); - else if ( curveType == 1 ) - myActions[ CurveLinesId ]->setOn( true ); - else if ( curveType == 2 ) - myActions[ CurveSplinesId ]->setOn( true ); - - QArray keys = myPlot->curveKeys(); - for ( int i = 0; i < keys.count(); i++ ) { - if ( myCurveType == 0 ) - myPlot->setCurveStyle( keys[i], QwtCurve::NoCurve ); - else if ( myCurveType == 1 ) - myPlot->setCurveStyle( keys[i], QwtCurve::Lines ); - else if ( myCurveType == 2 ) - myPlot->setCurveStyle( keys[i], QwtCurve::Spline ); - } - if ( update ) - myPlot->replot(); -} -/*! - Shows/hides legend -*/ -void Plot2d_ViewFrame::showLegend( bool show, bool update ) -{ - myShowLegend = show; - myActions[ LegendId ]->setOn( myShowLegend ); - { - myPlot->setAutoLegend( myShowLegend ); - myPlot->enableLegend( myShowLegend ); - } - if ( update ) - myPlot->replot(); -} -/*! - Sets legend position : 0 - left, 1 - right, 2 - top, 3 - bottom -*/ -void Plot2d_ViewFrame::setLegendPos( int pos ) -{ - myLegendPos = pos; - switch( pos ) { - case 0: - myPlot->setLegendPos( Qwt::Left ); - break; - case 1: - myPlot->setLegendPos( Qwt::Right ); - break; - case 2: - myPlot->setLegendPos( Qwt::Top ); - break; - case 3: - myPlot->setLegendPos( Qwt::Bottom ); - break; - } -} -/*! - Sets new marker size -*/ -void Plot2d_ViewFrame::setMarkerSize( const int size, bool update ) -{ - if ( myMarkerSize != size ) { - myMarkerSize = size; - QArray keys = myPlot->curveKeys(); - for ( int i = 0; i < keys.count(); i++ ) { - QwtPlotCurve* crv = myPlot->curve( keys[i] ); - if ( crv ) { - QwtSymbol aSymbol = crv->symbol(); - aSymbol.setSize( myMarkerSize, myMarkerSize ); - crv->setSymbol( aSymbol ); - int legendIndex = myPlot->getLegend()->findFirstKey( keys[i] ); - if ( legendIndex != myPlot->getLegend()->itemCnt() ) - myPlot->getLegend()->setSymbol( legendIndex, aSymbol ); - } - } - if ( update ) - myPlot->replot(); - } -} -/*! - Sets background color -*/ -void Plot2d_ViewFrame::setBackgroundColor( const QColor& color ) -{ - myBackground = color; - //myPlot->setCanvasBackground( myBackground ); - myPlot->canvas()->setPalette( myBackground ); - myPlot->setPalette( myBackground ); - QPalette aPal = myPlot->getLegend()->palette(); - for ( int i = 0; i < QPalette::NColorGroups; i++ ) { - QPalette::ColorGroup cg = (QPalette::ColorGroup)i; - aPal.setColor( cg, QColorGroup::Base, myBackground ); - aPal.setColor( cg, QColorGroup::Background, myBackground ); - } - myPlot->getLegend()->setPalette( aPal ); -} -/*! - Gets background color -*/ -QColor Plot2d_ViewFrame::backgroundColor() const -{ - return myBackground; -} -/*! - Sets hor.axis grid parameters -*/ -void Plot2d_ViewFrame::setXGrid( bool xMajorEnabled, const int xMajorMax, - bool xMinorEnabled, const int xMinorMax, - bool update ) -{ - myXGridMajorEnabled = xMajorEnabled; - myXGridMinorEnabled = xMinorEnabled; - myXGridMaxMajor = xMajorMax; - myXGridMaxMinor = xMinorMax; - myPlot->setAxisMaxMajor( QwtPlot::xBottom, myXGridMaxMajor ); - myPlot->setAxisMaxMinor( QwtPlot::xBottom, myXGridMaxMinor ); - myPlot->enableGridX( myXGridMajorEnabled ); - myPlot->enableGridXMin( myXGridMinorEnabled ); - if ( update ) - myPlot->replot(); -} -/*! - Sets ver.axis grid parameters -*/ -void Plot2d_ViewFrame::setYGrid( bool yMajorEnabled, const int yMajorMax, - bool yMinorEnabled, const int yMinorMax, - bool update ) -{ - myYGridMajorEnabled = yMajorEnabled; - myYGridMinorEnabled = yMinorEnabled; - myYGridMaxMajor = yMajorMax; - myYGridMaxMinor = yMinorMax; - myPlot->setAxisMaxMajor( QwtPlot::yLeft, myYGridMaxMajor ); - myPlot->setAxisMaxMinor( QwtPlot::yLeft, myYGridMaxMinor ); - myPlot->enableGridY( myYGridMajorEnabled ); - myPlot->enableGridYMin( myYGridMinorEnabled ); - if ( update ) - myPlot->replot(); -} -/*! - Sets main title -*/ -void Plot2d_ViewFrame::setMainTitle( bool enabled, const QString& title, bool update ) -{ - myTitleEnabled = enabled; - myTitle = title; - myPlot->setTitle( myTitleEnabled ? myTitle : QString::null ); - if ( update ) - myPlot->replot(); -} -/*! - Sets hor.axis title -*/ -void Plot2d_ViewFrame::setXTitle( bool enabled, const QString& title, bool update ) -{ - myXTitleEnabled = enabled; - myXTitle = title; - myPlot->setAxisTitle( QwtPlot::xBottom, myXTitleEnabled ? myXTitle : QString::null ); - if ( update ) - myPlot->replot(); -} -/*! - Sets ver.axis title -*/ -void Plot2d_ViewFrame::setYTitle( bool enabled, const QString& title, bool update ) -{ - myYTitleEnabled = enabled; - myYTitle = title; - myPlot->setAxisTitle( QwtPlot::yLeft, myYTitleEnabled ? myYTitle : QString::null ); - if ( update ) - myPlot->replot(); -} -/*! - Sets scale mode for horizontal axis: 0 - linear, 1 - logarithmic -*/ -void Plot2d_ViewFrame::setHorScaleMode( const int mode, bool update ) -{ - myXMode = mode; - if ( myXMode == 0 ) { // linear - myActions[ ModeXLogarithmicId ]->setOn( false ); - myActions[ ModeXLinearId ]->setOn( true ); - myPlot->changeAxisOptions( QwtPlot::xBottom, QwtAutoScale::Logarithmic, false ); - } - else { // logarithmic - myActions[ ModeXLinearId ]->setOn( false ); - myActions[ ModeXLogarithmicId ]->setOn( true ); - myPlot->changeAxisOptions( QwtPlot::xBottom, QwtAutoScale::Logarithmic, true ); - } - if ( update ) -// myPlot->replot(); - fitAll(); -} -/*! - Sets scale mode for vertical axis: 0 - linear, 1 - logarithmic -*/ -void Plot2d_ViewFrame::setVerScaleMode( const int mode, bool update ) -{ - myYMode = mode; - if ( myYMode == 0 ) { // linear - myActions[ ModeYLogarithmicId ]->setOn( false ); - myActions[ ModeYLinearId ]->setOn( true ); - myPlot->changeAxisOptions( QwtPlot::yLeft, QwtAutoScale::Logarithmic, false ); - } - else { // logarithmic - myActions[ ModeYLinearId ]->setOn( false ); - myActions[ ModeYLogarithmicId ]->setOn( true ); - myPlot->changeAxisOptions( QwtPlot::yLeft, QwtAutoScale::Logarithmic, true ); - } - if ( update ) -// myPlot->replot(); - fitAll(); -} -/*! - Slot, called when Legend item is clicked -*/ -void Plot2d_ViewFrame::onLegendClicked( long key ) -{ - Plot2d_Curve* curve = myCurves[ key ]; - if ( curve && curve->hasIO() ) { - SALOME_Selection* Sel = SALOME_Selection::Selection( QAD_Application::getDesktop()->getActiveStudy()->getSelection() ); - Sel->ClearIObjects(); - Sel->AddIObject( curve->getIO(), true ); - } -} - -/*! - Slot, called when user presses mouse button -*/ -void Plot2d_ViewFrame::plotMousePressed( const QMouseEvent& me ) -{ - if ( myOperation == NoOpId ) - myOperation = testOperation( me ); - if ( myOperation != NoOpId ) { - myPnt = me.pos(); - if ( myOperation == ZoomId ) { - myPlot->canvas()->setCursor( QCursor( QPixmap( imageZoomCursor ) ) ); - } - else if ( myOperation == PanId ) { - myPlot->canvas()->setCursor( QCursor( Qt::SizeAllCursor ) ); - } - else if ( myOperation == FitAreaId ) { - myPlot->canvas()->setCursor( QCursor( Qt::PointingHandCursor ) ); - myPlot->setOutlineStyle( Qwt::Rect ); - } - } - else { - int btn = me.button() | me.state(); - if ( btn == RightButton ) { - createPopup(); - if ( myPopup ) { - QAD_Tools::checkPopup( myPopup ); - if ( myPopup->count()>0 ) { - myPopup->exec( QCursor::pos() ); - } - destroyPopup(); - } - } - else { - myPlot->setOutlineStyle( Qwt::Cross ); - QAD_Application::getDesktop()->putInfo( getInfo( me.pos() ) ); - } - } -} -/*! - Slot, called when user moves mouse -*/ -void Plot2d_ViewFrame::plotMouseMoved( const QMouseEvent& me ) -{ - int dx = me.pos().x() - myPnt.x(); - int dy = me.pos().y() - myPnt.y(); - - if ( myOperation != NoOpId) { - if ( myOperation == ZoomId ) { - this->incrementalZoom( dx, dy ); - myPnt = me.pos(); - } - else if ( myOperation == PanId ) { - this->incrementalPan( dx, dy ); - myPnt = me.pos(); - } - } - else { - QAD_Application::getDesktop()->putInfo( getInfo( me.pos() ) ); - } -} -/*! - Slot, called when user releases mouse -*/ -void Plot2d_ViewFrame::plotMouseReleased( const QMouseEvent& me ) -{ - if ( myOperation == FitAreaId ) { - QRect rect( myPnt, me.pos() ); - fitArea( rect ); - } - myPlot->canvas()->setCursor( QCursor( Qt::CrossCursor ) ); - myPlot->setOutlineStyle( Qwt::Triangle ); - QAD_Application::getDesktop()->putInfo( tr( "INF_READY" ) ); - myOperation = NoOpId; -} -/*! - View operations : Pan view -*/ -void Plot2d_ViewFrame::onViewPan() -{ - myOperation = PanId; - qApp->installEventFilter( this ); -} -/*! - View operations : Zoom view -*/ -void Plot2d_ViewFrame::onViewZoom() -{ - myOperation = ZoomId; - qApp->installEventFilter( this ); -} -/*! - View operations : Fot All -*/ -void Plot2d_ViewFrame::onViewFitAll() -{ - fitAll(); -} -/*! - View operations : Fit Area -*/ -void Plot2d_ViewFrame::onViewFitArea() -{ - myOperation = FitAreaId; - qApp->installEventFilter( this ); -} -/*! - View operations : Global panning -*/ -void Plot2d_ViewFrame::onViewGlobalPan() -{ MESSAGE( "Plot2d_ViewFrame::onViewGlobalPan : NOT SUPPORTED" ); } -/*! - View operations : Rotate view -*/ -void Plot2d_ViewFrame::onViewRotate() -{ MESSAGE( "Plot2d_ViewFrame::onViewRotate : NOT SUPPORTED" ); } -/*! - View operations : Reset view -*/ -void Plot2d_ViewFrame::onViewReset() -{ MESSAGE( "Plot2d_ViewFrame::onViewReset : NOT SUPPORTED" ); } -/*! - View operations : View front -*/ -void Plot2d_ViewFrame::onViewFront() -{ MESSAGE( "Plot2d_ViewFrame::onViewFront : NOT SUPPORTED" ); } -/*! - View operations : View back -*/ -void Plot2d_ViewFrame::onViewBack() -{ MESSAGE( "Plot2d_ViewFrame::onViewBack : NOT SUPPORTED" ); } -/*! - View operations : View right -*/ -void Plot2d_ViewFrame::onViewRight() -{ MESSAGE( "Plot2d_ViewFrame::onViewRight : NOT SUPPORTED" ); } -/*! - View operations : View left -*/ -void Plot2d_ViewFrame::onViewLeft() -{ MESSAGE( "Plot2d_ViewFrame::onViewLeft : NOT SUPPORTED" ); } -/*! - View operations : View bottom -*/ -void Plot2d_ViewFrame::onViewBottom() -{ MESSAGE( "Plot2d_ViewFrame::onViewBottom : NOT SUPPORTED" ); } -/*! - View operations : View top -*/ -void Plot2d_ViewFrame::onViewTop() -{ MESSAGE( "Plot2d_ViewFrame::onViewTop : NOT SUPPORTED" ); } -/*! - View operations : Show/hide trihedron -*/ -void Plot2d_ViewFrame::onViewTrihedron() -{ MESSAGE( "Plot2d_ViewFrame::onViewTrihedron : NOT SUPPORTED" ); } - - -//================================================================================= -// Plot2d_Plot2d implementation -//================================================================================= - -/*! - Constructor -*/ -Plot2d_Plot2d::Plot2d_Plot2d( QWidget* parent ) - : QwtPlot( parent ) -{ - // outline - enableOutline( true ); - setOutlineStyle( Qwt::Triangle ); - setOutlinePen( green ); - // legend - setAutoLegend( false ); - setLegendFrameStyle( QFrame::Box | QFrame::Sunken ); - enableLegend( false ); - // grid - enableGridX( false ); - enableGridXMin( false ); - enableGridY( false ); - enableGridYMin( false ); - // auto scaling by default - setAxisAutoScale( QwtPlot::yLeft ); - setAxisAutoScale( QwtPlot::xBottom ); -} -/*! - Recalculates and redraws Plot 2d view -*/ -void Plot2d_Plot2d::replot() -{ - updateLayout(); // to fix bug(?) of Qwt - view is not updated when title is changed - QwtPlot::replot(); -} -/*! - Checks if two colors are close to each other [ static ] - uses COLOR_DISTANCE variable as max tolerance for comparing of colors -*/ -const long COLOR_DISTANCE = 100; -const int MAX_ATTEMPTS = 10; -static bool closeColors( const QColor& color1, const QColor& color2 ) -{ - long tol = abs( color2.red() - color1.red() ) + - abs( color2.green() - color1.green() ) + - abs( color2.blue() - color1.blue() ); - - return ( tol <= COLOR_DISTANCE ); -} -/*! - Gets new unique marker for item if possible -*/ -void Plot2d_Plot2d::getNextMarker( QwtSymbol::Style& typeMarker, QColor& color, Qt::PenStyle& typeLine ) -{ - bool bOk = false; - int cnt = 1; - while ( !bOk ) { - int aRed = (int)( 256.0 * random() / RAND_MAX); // generate random color - int aGreen = (int)( 256.0 * random() / RAND_MAX); // ... - int aBlue = (int)( 256.0 * random() / RAND_MAX); // ... - int aMarker = (int)( 9.0 * random() / RAND_MAX) + 1; // 9 markers types ( not including empty ) - int aLine = (int)( 5.0 * random() / RAND_MAX) + 1; // 5 line types ( not including empty ) - - typeMarker = ( QwtSymbol::Style )aMarker; - color = QColor( aRed, aGreen, aBlue ); - typeLine = ( Qt::PenStyle )aLine; - - cnt++; - if ( cnt == MAX_ATTEMPTS ) - bOk = true; - else - bOk = !existMarker( typeMarker, color, typeLine ); - } -/* - static int aMarker = -1; - static int aColor = -1; - static int aLine = -1; - - if ( myColors.isEmpty() ) { - // creating colors list - myColors.append( Qt::white ); - myColors.append( Qt::blue ); - myColors.append( Qt::gray ); - myColors.append( Qt::darkGreen ); - myColors.append( Qt::magenta ); - myColors.append( Qt::darkGray ); - myColors.append( Qt::red ); - myColors.append( Qt::darkBlue ); - myColors.append( Qt::darkYellow ); - myColors.append( Qt::cyan ); - myColors.append( Qt::darkRed ); - myColors.append( Qt::darkCyan ); - myColors.append( Qt::yellow ); - myColors.append( Qt::darkMagenta ); - myColors.append( Qt::green ); - myColors.append( Qt::black ); - } - - int nbMarkers = 11; // QwtSymbol supports 11 marker types - int nbLines = 6; // Qt supports 6 line types - int nbColors = myColors.count(); // number of default colors supported - - aMarker = ( aMarker + 1 ) % nbMarkers; - if ( aMarker == QwtSymbol::None || aMarker == QwtSymbol::Triangle ) aMarker++; - aColor = ( aColor + 1 ) % nbColors; - aLine = ( aLine + 1 ) % nbLines; - if ( aLine == Qt::NoPen ) aLine++; - - typeMarker = ( QwtSymbol::Style )aMarker; - color = myColors[ aColor ]; - typeLine = ( Qt::PenStyle )aLine; - if ( !existMarker( typeMarker, color, typeLine ) ) - return; - - int i, j, k; - for ( i = 0; i < nbMarkers; i++ ) { - aMarker = ( aMarker + 1 ) % nbMarkers; - if ( aMarker == QwtSymbol::None || aMarker == QwtSymbol::Triangle ) aMarker++; - for ( j = 0; j < nbColors; j++ ) { - aColor = ( aColor + 1 ) % nbColors; - for ( k = 0; k < nbLines; k++ ) { - aLine = ( aLine + 1 ) % nbLines; - if ( aLine == Qt::NoPen ) aLine++; - if ( !existMarker( ( QwtSymbol::Style )aMarker, aColor, ( Qt::PenStyle )aLine ) ) { - typeMarker = ( QwtSymbol::Style )aMarker; - color = myColors[ aColor ]; - typeLine = ( Qt::PenStyle )aLine; - return; - } - } - } - } -*/ -} -/*! - Checks if marker belongs to any enitity -*/ -bool Plot2d_Plot2d::existMarker( const QwtSymbol::Style typeMarker, const QColor& color, const Qt::PenStyle typeLine ) -{ - // getting all curves - QArray keys = curveKeys(); - QColor aRgbColor; - - if ( closeColors( color, backgroundColor() ) ) - return true; - for ( int i = 0; i < keys.count(); i++ ) { - QwtPlotCurve* crv = curve( keys[i] ); - if ( crv ) { - QwtSymbol::Style aStyle = crv->symbol().style(); - QColor aColor = crv->pen().color(); - Qt::PenStyle aLine = crv->pen().style(); -// if ( aStyle == typeMarker && aColor == color && aLine == typeLine ) - if ( aStyle == typeMarker && closeColors( aColor,color ) && aLine == typeLine ) - return true; - } - } - return false; -} - -//========================================================== -/*! - * Plot2d_ViewFrame::Display - * Display presentation - */ -//========================================================== -void Plot2d_ViewFrame::Display( const SALOME_Prs2d* prs ) -{ - // try do downcast object - const Plot2d_Prs* aPlot2dPrs = dynamic_cast( prs ); - if ( !aPlot2dPrs || aPlot2dPrs->IsNull() ) - return; - - // display all curves from presentation - Plot2d_CurveContainer aCurves = aPlot2dPrs->GetObjects(); - displayCurves( aCurves ); -} - -//========================================================== -/*! - * Plot2d_ViewFrame::Erase - * Erase presentation - */ -//========================================================== -void Plot2d_ViewFrame::Erase( const SALOME_Prs2d* prs, const bool ) -{ - // try do downcast object - const Plot2d_Prs* aPlot2dPrs = dynamic_cast( prs ); - if ( !aPlot2dPrs || aPlot2dPrs->IsNull() ) - return; - - // erase all curves from presentation - Plot2d_CurveContainer aCurves = aPlot2dPrs->GetObjects(); - eraseCurves( aCurves ); -} - -//========================================================== -/*! - * Plot2d_ViewFrame::CreatePrs - * Create presentation by entry - */ -//========================================================== -SALOME_Prs* Plot2d_ViewFrame::CreatePrs( const char* entry ) -{ - Plot2d_Prs* prs = new Plot2d_Prs(); - if ( entry ) { - QIntDictIterator it( myCurves ); - for ( ; it.current(); ++it ) { - if ( it.current()->hasIO() && !strcmp( it.current()->getIO()->getEntry(), entry ) ) { - prs->AddObject( it.current() ); - } - } - } - return prs; -} - -//========================================================== -/*! - * Plot2d_ViewFrame::BeforeDisplay - * Axiluary method called before displaying of objects - */ -//========================================================== -void Plot2d_ViewFrame::BeforeDisplay( SALOME_Displayer* d ) -{ - d->BeforeDisplay( this, SALOME_Plot2dViewType() ); -} - -//========================================================== -/*! - * Plot2d_ViewFrame::AfterDisplay - * Axiluary method called after displaying of objects - */ -//========================================================== -void Plot2d_ViewFrame::AfterDisplay( SALOME_Displayer* d ) -{ - d->AfterDisplay( this, SALOME_Plot2dViewType() ); -} - -#define INCREMENT_FOR_OP 10 - -//======================================================================= -// Plot2d_ViewFrame::onPanLeft -// Performs incremental panning to the left -//======================================================================= -void Plot2d_ViewFrame::onPanLeft() -{ - this->incrementalPan( -INCREMENT_FOR_OP, 0 ); -} - -//======================================================================= -// Plot2d_ViewFrame::onPanRight -// Performs incremental panning to the right -//======================================================================= -void Plot2d_ViewFrame::onPanRight() -{ - this->incrementalPan( INCREMENT_FOR_OP, 0 ); -} - -//======================================================================= -// Plot2d_ViewFrame::onPanUp -// Performs incremental panning to the top -//======================================================================= -void Plot2d_ViewFrame::onPanUp() -{ - this->incrementalPan( 0, -INCREMENT_FOR_OP ); -} - -//======================================================================= -// Plot2d_ViewFrame::onPanDown -// Performs incremental panning to the bottom -//======================================================================= -void Plot2d_ViewFrame::onPanDown() -{ - this->incrementalPan( 0, INCREMENT_FOR_OP ); -} - -//======================================================================= -// Plot2d_ViewFrame::onZoomIn -// Performs incremental zooming in -//======================================================================= -void Plot2d_ViewFrame::onZoomIn() -{ - this->incrementalZoom( INCREMENT_FOR_OP, INCREMENT_FOR_OP ); -} - -//======================================================================= -// Plot2d_ViewFrame::onZoomOut -// Performs incremental zooming out -//======================================================================= -void Plot2d_ViewFrame::onZoomOut() -{ - this->incrementalZoom( -INCREMENT_FOR_OP, -INCREMENT_FOR_OP ); -} - -//======================================================================= -// Plot2d_ViewFrame::incrementalPan -// Incremental zooming operation -//======================================================================= -void Plot2d_ViewFrame::incrementalPan( const int incrX, const int incrY ) { - QwtDiMap xMap = myPlot->canvasMap( QwtPlot::xBottom ); - QwtDiMap yMap = myPlot->canvasMap( QwtPlot::yLeft ); - - myPlot->setAxisScale( QwtPlot::yLeft, - myPlot->invTransform( QwtPlot::yLeft, yMap.i1()-incrY ), - myPlot->invTransform( QwtPlot::yLeft, yMap.i2()-incrY ) ); - myPlot->setAxisScale( QwtPlot::xBottom, - myPlot->invTransform( QwtPlot::xBottom, xMap.i1()-incrX ), - myPlot->invTransform( QwtPlot::xBottom, xMap.i2()-incrX ) ); - myPlot->replot(); -} - -//======================================================================= -// Plot2d_ViewFrame::incrementalZoom -// Incremental panning operation -//======================================================================= -void Plot2d_ViewFrame::incrementalZoom( const int incrX, const int incrY ) { - QwtDiMap xMap = myPlot->canvasMap( QwtPlot::xBottom ); - QwtDiMap yMap = myPlot->canvasMap( QwtPlot::yLeft ); - - myPlot->setAxisScale( QwtPlot::yLeft, - myPlot->invTransform( QwtPlot::yLeft, yMap.i1() ), - myPlot->invTransform( QwtPlot::yLeft, yMap.i2() + incrY ) ); - myPlot->setAxisScale( QwtPlot::xBottom, - myPlot->invTransform( QwtPlot::xBottom, xMap.i1() ), - myPlot->invTransform( QwtPlot::xBottom, xMap.i2() - incrX ) ); - myPlot->replot(); -} - diff --git a/src/Plot2d/Plot2d_ViewFrame.h b/src/Plot2d/Plot2d_ViewFrame.h deleted file mode 100644 index 275c432fb..000000000 --- a/src/Plot2d/Plot2d_ViewFrame.h +++ /dev/null @@ -1,219 +0,0 @@ -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : Plot2d_ViewFrame.h -// Author : Vadim SANDLER -// Module : SALOME -// $Header$ - -#ifndef Plot2d_ViewFrame_H -#define Plot2d_ViewFrame_H - -#include "QAD_ViewFrame.h" -#include "QAD_Popup.h" -#include "QAD_Action.h" -#include "Plot2d_Curve.h" -#include "Plot2d_CurveContainer.h" -#include "SALOME_Selection.h" -#include -#include -#include -#include -#include - -//================================================================================= -// class : Plot2d_ViewFrame -// purpose : Plot2d view frame -//================================================================================= -class Plot2d_Plot2d; -typedef QIntDict CurveDict; - -class QAD_EXPORT Plot2d_ViewFrame : public QAD_ViewFrame, public QAD_PopupClientServer -{ - Q_OBJECT - - enum { NoOpId, FitAllId, FitAreaId, ZoomId, PanId, DumpId, - ModeXLinearId, ModeXLogarithmicId, ModeYLinearId, ModeYLogarithmicId, - LegendId, CurvePointsId, CurveLinesId, CurveSplinesId, SettingsId, FitDataId, ChangeBackgroundId }; -public: - /* Construction/destruction */ - Plot2d_ViewFrame( QWidget* parent, const QString& title = "" ); - virtual ~Plot2d_ViewFrame(); - -public: - /* inherited */ - ViewType getTypeView() const { return VIEW_PLOT2D; } - QWidget* getViewWidget(); - void SetSelectionMode( Selection_Mode mode ) {} - void onAdjustTrihedron( ) {} - - /* popup management */ - void setPopupServer( QAD_Application* ); - void onCreatePopup(); - - /* interactive object management */ - void highlight( const Handle(SALOME_InteractiveObject)& IObject, - bool highlight, bool update = true ) {} - void unHighlightAll() {} - void rename( const Handle(SALOME_InteractiveObject)& IObject, - QString newName ); - bool isInViewer( const Handle(SALOME_InteractiveObject)& IObject ); - bool isVisible( const Handle(SALOME_InteractiveObject)& IObject ); - - /* undo/redo management */ - void undo( SALOMEDS::Study_var aStudy, - const char* StudyFrameEntry ) {} - void redo( SALOMEDS::Study_var aStudy, - const char* StudyFrameEntry ) {} - - /* interactive objects handling */ - Handle(SALOME_InteractiveObject) FindIObject( const char* Entry ); - - /* display */ - void Display( const Handle(SALOME_InteractiveObject)& IObject, bool update = true ); - void DisplayOnly( const Handle(SALOME_InteractiveObject)& IObject ); - void Erase( const Handle(SALOME_InteractiveObject)& IObject, bool update = true ); - void DisplayAll(); - void EraseAll(); - void Repaint(); - - /* Reimplemented from SALOME_View */ - void Display( const SALOME_Prs2d* ); - void Erase( const SALOME_Prs2d*, const bool = false ); - SALOME_Prs* CreatePrs( const char* entry = 0 ); - virtual void BeforeDisplay( SALOME_Displayer* d ); - virtual void AfterDisplay ( SALOME_Displayer* d ); - - /* event filter */ - bool eventFilter( QObject* o, QEvent* e ); - - /* operations */ - void setTitle( const QString& title ); - QString getTitle() const { return myTitle; } - void displayCurve( Plot2d_Curve* curve, bool update = false ); - void displayCurves( Plot2d_CurveContainer& curves, bool update = false ); - void eraseCurve( Plot2d_Curve* curve, bool update = false ); - void eraseCurves( Plot2d_CurveContainer& curves, bool update = false ); - int getCurves( QList& clist ); - int hasCurve( Plot2d_Curve* curve ); - Plot2d_Curve* getCurveByIO( const Handle(SALOME_InteractiveObject)& theIObject ); - void updateCurve( Plot2d_Curve* curve, bool update = false ); - void fitAll(); - void fitArea( const QRect& area ); - - /* view parameters */ - void setCurveType( int curveType, bool update = true ); - int getCurveType() const { return myCurveType; } - void showLegend( bool show, bool update = true ); - void setLegendPos( int pos ); - int getLegendPos() const { return myLegendPos; } - void setMarkerSize( const int size, bool update = true ); - int getMarkerSize() const { return myMarkerSize; } - void setBackgroundColor( const QColor& color ); - QColor backgroundColor() const; - void setXGrid( bool xMajorEnabled, const int xMajorMax, bool xMinorEnabled, const int xMinorMax, bool update = true ); - void setYGrid( bool yMajorEnabled, const int yMajorMax, bool yMinorEnabled, const int yMinorMax, bool update = true ); - void setMainTitle( bool enabled, const QString& title, bool update = true); - void setXTitle( bool enabled, const QString& title, bool update = true ); - QString getXTitle() const { return myXTitle; } - void setYTitle( bool enabled, const QString& title, bool update = true ); - QString getYTitle() const { return myYTitle; } - void setHorScaleMode( const int mode, bool update = true ); - int getHorScaleMode() const { return myXMode; } - void setVerScaleMode( const int mode, bool update = true ); - int getVerScaleMode() const { return myYMode; } - - void incrementalPan ( const int incrX, const int incrY ); - void incrementalZoom( const int incrX, const int incrY ); - -protected: - void createActions(); - int testOperation( const QMouseEvent& ); - void readPreferences(); - void writePreferences(); - QString getInfo( const QPoint& pnt ); - void updateTitles(); - -public slots: - void onViewPan(); - void onViewZoom(); - void onViewFitAll(); - void onViewFitArea(); - void onViewGlobalPan(); - void onViewRotate(); - void onViewReset(); - void onViewFront(); - void onViewBack(); - void onViewRight(); - void onViewLeft(); - void onViewBottom(); - void onViewTop(); - void onViewTrihedron(); - void onHorMode(); - void onVerMode(); - void onLegend(); - void onCurves(); - void onSettings(); - void onFitData(); - void onChangeBackground(); - - void onPanLeft(); - void onPanRight(); - void onPanUp(); - void onPanDown(); - void onZoomIn(); - void onZoomOut(); - -protected slots: - void onLegendClicked( long key ); - void plotMousePressed( const QMouseEvent& ); - void plotMouseMoved( const QMouseEvent& ); - void plotMouseReleased( const QMouseEvent& ); - -private: - Plot2d_Plot2d* myPlot; - ActionMap myActions; - int myOperation; - QPoint myPnt; - CurveDict myCurves; - - int myCurveType; - bool myShowLegend; - int myLegendPos; - int myMarkerSize; - QColor myBackground; - QString myTitle, myXTitle, myYTitle; - bool myTitleEnabled, myXTitleEnabled, myYTitleEnabled; - bool myXGridMajorEnabled, myYGridMajorEnabled; - bool myXGridMinorEnabled, myYGridMinorEnabled; - int myXGridMaxMajor, myYGridMaxMajor; - int myXGridMaxMinor, myYGridMaxMinor; - int myXMode, myYMode; -}; - -//================================================================================= -// class : Plot2d_Plot2d -// purpose : Plot2d View -//================================================================================= -class Plot2d_Plot2d : public QwtPlot -{ -public: - Plot2d_Plot2d( QWidget* parent ); - - void replot(); - void getNextMarker( QwtSymbol::Style& typeMarker, QColor& color, Qt::PenStyle& typeLine ); - QwtLegend* getLegend() { return d_legend; } - -protected: - bool existMarker( const QwtSymbol::Style typeMarker, const QColor& color, const Qt::PenStyle typeLine ); - -protected: - QValueList myColors; -}; - -#endif // Plot2d_ViewFrame_H - - - - diff --git a/src/Prs/Makefile.in b/src/Prs/Makefile.in deleted file mode 100755 index 09f8a248a..000000000 --- a/src/Prs/Makefile.in +++ /dev/null @@ -1,27 +0,0 @@ -# source path -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -EXPORT_HEADERS = SALOME_Prs.h - -# Libraries targets - -LIB = libSalomePrs.la -LIB_SRC = SALOME_Prs.cxx - -LIB_CLIENT_IDL = - -# Executables targets -BIN = -BIN_SRC = - -CPPFLAGS+= -LDFLAGS+= - - -@CONCLUDE@ diff --git a/src/Prs/SALOME_Prs.cxx b/src/Prs/SALOME_Prs.cxx deleted file mode 100644 index 1856fa15a..000000000 --- a/src/Prs/SALOME_Prs.cxx +++ /dev/null @@ -1,364 +0,0 @@ -// File: SALOME_Prs.cxx -// Created: Wed Apr 28 15:03:43 2004 -// Author: Sergey ANIKIN -// - - -#include "SALOME_Prs.h" - -#include "utilities.h" - -using namespace std; - -//=========================================================== -/*! - * Function: SALOME_OCCPrs::DisplayIn - * Purpose: Dispatches display operation to proper Display() - * method of SALOME_View - */ -//=========================================================== -void SALOME_OCCPrs::DisplayIn( SALOME_View* v ) const -{ - if ( v ) v->Display( this ); -} - -//=========================================================== -/*! - * Function: SALOME_OCCPrs::EraseIn - * Purpose: Dispatches display operation to proper Erase() - * method of SALOME_View - */ -//=========================================================== -void SALOME_OCCPrs::EraseIn( SALOME_View* v, const bool forced ) const -{ - if ( v ) v->Erase( this, forced ); -} - -//=========================================================== -/*! - * Function: SALOME_OCCPrs::LocalSelectionIn - * Purpose: Dispatches operation to proper LocalSelectionIn() - * method of SALOME_View - */ -//=========================================================== -void SALOME_OCCPrs::LocalSelectionIn( SALOME_View* v, const int mode ) const -{ - if ( v ) v->LocalSelection( this, mode ); -} - -//=========================================================== -/*! - * Function: SALOME_OCCPrs::Update - * Purpose: Dispatches update operation to proper Update() - * method of SALOME_Displayer - */ -//=========================================================== -void SALOME_OCCPrs::Update( SALOME_Displayer* d ) -{ - if ( d ) d->Update( this ); -} - -//=========================================================== -/*! - * Function: SALOME_VTKPrs::DisplayIn - * Purpose: Dispatches display operation to proper Display() - * method of SALOME_View - */ -//=========================================================== -void SALOME_VTKPrs::DisplayIn( SALOME_View* v ) const -{ - if ( v ) v->Display( this ); -} - -//=========================================================== -/*! - * Function: SALOME_VTKPrs::EraseIn - * Purpose: Dispatches display operation to proper Erase() - * method of SALOME_View - */ -//=========================================================== -void SALOME_VTKPrs::EraseIn( SALOME_View* v, const bool forced ) const -{ - if ( v ) v->Erase( this, forced ); -} - -//=========================================================== -/*! - * Function: SALOME_VTKPrs::LocalSelectionIn - * Purpose: Dispatches operation to proper LocalSelectionIn() - * method of SALOME_View - */ -//=========================================================== -void SALOME_VTKPrs::LocalSelectionIn( SALOME_View* v, const int mode ) const -{ - if ( v ) v->LocalSelection( this, mode ); -} - -//=========================================================== -/*! - * Function: SALOME_VTKPrs::Update - * Purpose: Dispatches update operation to proper Update() - * method of SALOME_Displayer - */ -//=========================================================== -void SALOME_VTKPrs::Update( SALOME_Displayer* d ) -{ - if ( d ) d->Update( this ); -} - -//=========================================================== -/*! - * Function: SALOME_Prs2d::DisplayIn - * Purpose: Dispatches display operation to proper Display() - * method of SALOME_View - */ -//=========================================================== -void SALOME_Prs2d::DisplayIn( SALOME_View* v ) const -{ - if ( v ) v->Display( this ); -} - -//=========================================================== -/*! - * Function: SALOME_Prs2d::EraseIn - * Purpose: Dispatches display operation to proper Erase() - * method of SALOME_View - */ -//=========================================================== -void SALOME_Prs2d::EraseIn( SALOME_View* v, const bool forced ) const -{ - if ( v ) v->Erase( this, forced ); -} - -//=========================================================== -/*! - * Function: SALOME_Prs2d::LocalSelectionIn - * Purpose: Dispatches operation to proper LocalSelectionIn() - * method of SALOME_View - */ -//=========================================================== -void SALOME_Prs2d::LocalSelectionIn( SALOME_View* v, const int mode ) const -{ - if ( v ) v->LocalSelection( this, mode ); -} - -//=========================================================== -/*! - * Function: SALOME_Prs2d::Update - * Purpose: Dispatches update operation to proper Update() - * method of SALOME_Displayer - */ -//=========================================================== -void SALOME_Prs2d::Update( SALOME_Displayer* d ) -{ - if ( d ) d->Update( this ); -} - -//=========================================================== -/*! - * Function: SALOME_View::Display - * Purpose: Gives control to SALOME_Prs object, so that - * it could perform double dispatch - */ -//=========================================================== -void SALOME_View::Display( const SALOME_Prs* prs ) -{ - prs->DisplayIn( this ); -} - -//=========================================================== -/*! - * Function: SALOME_View::Erase - * Purpose: Gives control to SALOME_Prs object, so that - * it could perform double dispatch - */ -//=========================================================== -void SALOME_View::Erase( const SALOME_Prs* prs, const bool forced ) -{ - prs->EraseIn( this, forced ); -} - -//=========================================================== -/*! - * Function: SALOME_View::LocalSelection - * Purpose: Gives control to SALOME_Prs object, so that - * it could perform double dispatch - */ -//=========================================================== -void SALOME_View::LocalSelection( const SALOME_Prs* prs, const int mode ) -{ - prs->LocalSelectionIn( this, mode ); -} - -//=========================================================== -/*! - * Function: SALOME_View::Display - * Purpose: Virtual method, should be reimplemented in successors, - * by default issues a warning and does nothing. - */ -//=========================================================== -void SALOME_View::Display( const SALOME_OCCPrs* ) -{ - MESSAGE( "SALOME_View::Display( const SALOME_OCCPrs& ) called! Probably, presentation is being displayed in uncompatible viewframe." ); -} - -//=========================================================== -/*! - * Function: SALOME_View::Display - * Purpose: Virtual method, should be reimplemented in successors, - * by default issues a warning and does nothing. - */ -//=========================================================== -void SALOME_View::Display( const SALOME_VTKPrs* ) -{ - MESSAGE( "SALOME_View::Display( const SALOME_VTKPrs& ) called! Probably, presentation is being displayed in uncompatible viewframe." ); -} - -//=========================================================== -/*! - * Function: SALOME_View::Display - * Purpose: Virtual method, should be reimplemented in successors, - * by default issues a warning and does nothing. - */ -//=========================================================== -void SALOME_View::Display( const SALOME_Prs2d* ) -{ - MESSAGE( "SALOME_View::Display( const SALOME_Prs2d& ) called! Probably, presentation is being displayed in uncompatible viewframe." ); -} - -//=========================================================== -/*! - * Function: SALOME_View::Erase - * Purpose: Virtual method, should be reimplemented in successors, - * by default issues a warning and does nothing. - */ -//=========================================================== -void SALOME_View::Erase( const SALOME_OCCPrs*, const bool ) -{ - MESSAGE( "SALOME_View::Erase( const SALOME_OCCPrs& ) called! Probably, presentation is being erased in uncompatible viewframe." ); -} - -//=========================================================== -/*! - * Function: SALOME_View::Erase - * Purpose: Virtual method, should be reimplemented in successors, - * by default issues a warning and does nothing. - */ -//=========================================================== -void SALOME_View::Erase( const SALOME_VTKPrs*, const bool ) -{ - MESSAGE( "SALOME_View::Erase( const SALOME_VTKPrs& ) called! Probably, presentation is being erased in uncompatible viewframe." ); -} - -//=========================================================== -/*! - * Function: SALOME_View::Erase - * Purpose: Virtual method, should be reimplemented in successors, - * by default issues a warning and does nothing. - */ -//=========================================================== -void SALOME_View::Erase( const SALOME_Prs2d*, const bool ) -{ - MESSAGE( "SALOME_View::Erase( const SALOME_Prs2d& ) called! Probably, presentation is being erased in uncompatible viewframe." ); -} - -//=========================================================== -/*! - * Function: SALOME_View::LocalSelection - * Purpose: Virtual method, should be reimplemented in successors, - * by default issues a warning and does nothing. - */ -//=========================================================== -void SALOME_View::LocalSelection( const SALOME_OCCPrs*, const int ) -{ - MESSAGE( "SALOME_View::LocalSelection( const SALOME_OCCPrs* ) called! \ - Probably, selection is being activated in uncompatible viewframe." ); -} - -//=========================================================== -/*! - * Function: SALOME_View::LocalSelection - * Purpose: Virtual method, should be reimplemented in successors, - * by default issues a warning and does nothing. - */ -//=========================================================== -void SALOME_View::LocalSelection( const SALOME_VTKPrs*, const int ) -{ - MESSAGE( "SALOME_View::LocalSelection( const SALOME_VTKPrs* ) called! \ - Probably, selection is being activated in uncompatible viewframe." ); -} - -//=========================================================== -/*! - * Function: SALOME_View::LocalSelection - * Purpose: Virtual method, should be reimplemented in successors, - * by default issues a warning and does nothing. - */ -//=========================================================== -void SALOME_View::LocalSelection( const SALOME_Prs2d*, const int ) -{ - MESSAGE( "SALOME_View::LocalSelection( const SALOME_Prs2d* ) called! \ - Probably, selection is being activated in uncompatible viewframe." ); -} - -//=========================================================== -/*! - * Function: SALOME_View::GlobalSelection - * Purpose: Virtual method, should be reimplemented in successors, - * by default issues a warning and does nothing. - */ -//=========================================================== -void SALOME_View::GlobalSelection( const bool ) const -{ - MESSAGE( "SALOME_View::GlobalSelection() called! \ - Probably, selection is being activated in uncompatible viewframe." ); -} - -//=========================================================== -/*! - * Function: SALOME_Displayer::UpdatePrs - * Purpose: Gives control to SALOME_Prs object, so that - * it could perform double dispatch - */ -//=========================================================== -void SALOME_Displayer::UpdatePrs( SALOME_Prs* prs ) -{ - prs->Update( this ); -} - -//=========================================================== -/*! - * Function: SALOME_Displayer::Update - * Purpose: Virtual method, should be reimplemented in successors, - * by default issues a warning and does nothing. - */ -//=========================================================== -void SALOME_Displayer::Update( SALOME_OCCPrs* ) -{ - MESSAGE( "SALOME_Displayer::Update( SALOME_OCCPrs* ) called! Probably, presentation is being updated in uncompatible viewframe." ); -} - -//=========================================================== -/*! - * Function: SALOME_Displayer::Update - * Purpose: Virtual method, should be reimplemented in successors, - * by default issues a warning and does nothing. - */ -//=========================================================== -void SALOME_Displayer::Update( SALOME_VTKPrs* ) -{ - MESSAGE( "SALOME_Displayer::Update( SALOME_VTKPrs* ) called! Probably, presentation is being updated in uncompatible viewframe." ); -} - -//=========================================================== -/*! - * Function: SALOME_Displayer::Update - * Purpose: Virtual method, should be reimplemented in successors, - * by default issues a warning and does nothing. - */ -//=========================================================== -void SALOME_Displayer::Update( SALOME_Prs2d* ) -{ - MESSAGE( "SALOME_Displayer::Update( SALOME_Prs2d* ) called! Probably, presentation is being updated in uncompatible viewframe." ); -} - diff --git a/src/Prs/SALOME_Prs.h b/src/Prs/SALOME_Prs.h deleted file mode 100644 index 060bf1838..000000000 --- a/src/Prs/SALOME_Prs.h +++ /dev/null @@ -1,255 +0,0 @@ -// SALOME OBJECT : implementation of interactive object visualization for OCC and VTK viewers -// -// Copyright (C) 2004 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_Prs.h -// Author : Sergey ANIKIN -// Module : SALOME -// $Header$ - -#ifndef SALOME_PRS_H -#define SALOME_PRS_H - -class SALOME_View; -class SALOME_Displayer; - -//=========================================================== -/*! - * Class: SALOME_Prs - * Description: Base class for SALOME graphic object wrappers - presentations. - * Presentations are temporary objects, so they can be created on the stack. - */ -//=========================================================== - -class SALOME_Prs -{ -public: - virtual ~SALOME_Prs() {} - // Destructor - - virtual void DisplayIn( SALOME_View* ) const = 0; - // Key method for double dispatch of display operation - - virtual void EraseIn( SALOME_View*, const bool = false ) const = 0; - // Key method for double dispatch of erase operation - - virtual void Update( SALOME_Displayer* ) = 0; - // Key method for double dispatch of update operation - - virtual bool IsNull() const = 0; - // Should return true, if this presentation contains a graphic object - - virtual void LocalSelectionIn( SALOME_View*, const int ) const = 0; - // Key method for double dispatch of activation of subshapes selection -}; - -//=========================================================== -/*! - * Class: SALOME_OCCPrs - * Description: Base class for OpenCASCADE graphic object (AIS_InteractiveObject) wrappers. - * This intermediate class is necessary to avoid dependencies from OCC libs. - */ -//=========================================================== - -class SALOME_OCCPrs : public SALOME_Prs -{ -public: - virtual void DisplayIn( SALOME_View* ) const; - // It uses double dispatch in order to - // invoke Display() method corresponding to the actual type of presentation. - - virtual void EraseIn( SALOME_View*, const bool = false ) const; - // It uses double dispatch in order to - // invoke Erase() method corresponding to the actual type of presentation. - - virtual void Update( SALOME_Displayer* ); - // It uses double dispatch in order to - // invoke Update() method corresponding to the actual type of presentation. - - virtual void LocalSelectionIn( SALOME_View*, const int ) const; - // Key method for double dispatch of activation of subshapes selection -}; - -//=========================================================== -/*! - * Class: SALOME_VTKPrs - * Description: Base class for VTK graphic object (vtkActor) wrappers - * This intermediate class is necessary to avoid dependencies from VTK libs. - */ -//=========================================================== - -class SALOME_VTKPrs : public SALOME_Prs -{ -public: - virtual void DisplayIn( SALOME_View* ) const; - // It uses double dispatch in order to - // invoke Display() method corresponding to the actual type of presentation. - - virtual void EraseIn( SALOME_View*, const bool = false ) const; - // It uses double dispatch in order to - // invoke Erase() method corresponding to the actual type of presentation. - - virtual void Update( SALOME_Displayer* ); - // It uses double dispatch in order to - // invoke Update() method corresponding to the actual type of presentation. - - virtual void LocalSelectionIn( SALOME_View*, const int ) const; - // Key method for double dispatch of activation of subshapes selection -}; - -//=========================================================== -/*! - * Class: SALOME_Prs2d - * Description: Base class for Plot2d graphic object (Plot2d_Curve) wrappers. - */ -//=========================================================== - -class SALOME_Prs2d : public SALOME_Prs -{ -public: - virtual void DisplayIn( SALOME_View* ) const; - // It uses double dispatch in order to - // invoke Display() method corresponding to the actual type of presentation. - - virtual void EraseIn( SALOME_View*, const bool = false ) const; - // It uses double dispatch in order to - // invoke Erase() method corresponding to the actual type of presentation. - - virtual void Update( SALOME_Displayer* ); - // It uses double dispatch in order to - // invoke Update() method corresponding to the actual type of presentation. - - virtual void LocalSelectionIn( SALOME_View*, const int ) const; - // Key method for double dispatch of activation of subshapes selection -}; - -///////////////////////////////////////////////////////////////////////// -// Base classes for object wrappers for any other visualization libraries -// should be added here! -///////////////////////////////////////////////////////////////////////// - -//=========================================================== -/*! - * Class: SALOME_View - * Description: Base class for SALOME views (or view frames) - */ -//=========================================================== - -class SALOME_View -{ -public: - virtual ~SALOME_View() {} - // Destructor - - void Display( const SALOME_Prs* ); - // This Display() method should be called to display given presentation - // created anywhere by anybody. It simply passes control to SALOME_Prs object - // so that it could perform double dispatch. - void Erase( const SALOME_Prs*, const bool = false ); - // This Erase() method should be called to erase given presentation - // created anywhere by anybody. It simply passes control to SALOME_Prs object - // so that it could perform double dispatch. - - void LocalSelection( const SALOME_Prs*, const int ); - // This LocalSelection() method should be called to activate sub-shapes selection - // created anywhere by anybody. It simply passes control to SALOME_Prs object - // so that it could perform double dispatch. - - // Interface for derived views - - // Display() methods for ALL kinds of presentation should appear here - virtual void Display( const SALOME_OCCPrs* ); - virtual void Display( const SALOME_VTKPrs* ); - virtual void Display( const SALOME_Prs2d* ); - // Add new Display() methods here... - - // Erase() methods for ALL kinds of presentation should appear here - virtual void Erase( const SALOME_OCCPrs*, const bool = false ); - virtual void Erase( const SALOME_VTKPrs*, const bool = false ); - virtual void Erase( const SALOME_Prs2d*, const bool = false ); - // Add new Erase() methods here... - - // LocalSelection() methods for ALL kinds of presentation should appear here - virtual void LocalSelection( const SALOME_OCCPrs*, const int ); - virtual void LocalSelection( const SALOME_VTKPrs*, const int ); - virtual void LocalSelection( const SALOME_Prs2d* , const int ); - - virtual void GlobalSelection( const bool = false ) const; - // Deactivates selection of sub-shapes (must be redefined with OCC viewer) - - // Creates empty presenation of corresponding type - virtual SALOME_Prs* CreatePrs( const char* entry = 0 ) { return 0; } - - // Axiluary methods called before and after displaying of objects - virtual void BeforeDisplay( SALOME_Displayer* d ) {} - virtual void AfterDisplay ( SALOME_Displayer* d ) {} -}; - -//=========================================================== -/*! - * Classes: SALOME_Displayer - * Description: These classes are used to specify type of view - * VTK, OCC or Plot2d - */ -//=========================================================== - -class SALOME_OCCViewType {}; -class SALOME_VTKViewType {}; -class SALOME_Plot2dViewType {}; - -//=========================================================== -/*! - * Class: SALOME_Displayer - * Description: Base class for SALOME displayers - */ -//=========================================================== - -class SALOME_Displayer -{ -public: - virtual ~SALOME_Displayer() {} - // Destructor - - void UpdatePrs( SALOME_Prs* ); - // This Update() method should be called to update given presentation - // created anywhere by anybody. It simply passes control to SALOME_Prs object - // so that it could perform double dispatch. - - // Interface for derived displayers - - // Update() methods for ALL kinds of presentation should appear here - virtual void Update( SALOME_OCCPrs* ); - virtual void Update( SALOME_VTKPrs* ); - virtual void Update( SALOME_Prs2d* ); - // Add new Update() methods here... - - // Axiluary methods called before and after displaying of objects - virtual void BeforeDisplay( SALOME_View*, const SALOME_OCCViewType& ) {}; - virtual void AfterDisplay ( SALOME_View*, const SALOME_OCCViewType& ) {}; - virtual void BeforeDisplay( SALOME_View*, const SALOME_VTKViewType& ) {}; - virtual void AfterDisplay ( SALOME_View*, const SALOME_VTKViewType& ) {}; - virtual void BeforeDisplay( SALOME_View*, const SALOME_Plot2dViewType& ) {}; - virtual void AfterDisplay ( SALOME_View*, const SALOME_Plot2dViewType& ) {}; -}; - -#endif - diff --git a/src/RegistryDisplay/HelpWindow.cxx b/src/RegistryDisplay/HelpWindow.cxx deleted file mode 100644 index 40889fe28..000000000 --- a/src/RegistryDisplay/HelpWindow.cxx +++ /dev/null @@ -1,101 +0,0 @@ -// SALOME RegistryDisplay : GUI for Registry server implementation -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : HelpWindow.cxx -// Author : Pascale NOYRET, EDF -// Module : SALOME -// $Header$ - -# include "HelpWindow.hxx" -# include "utilities.h" - -# include -# include -# include -# include -using namespace std; - -HelpWindow::HelpWindow(QWidget* parent, const char* name ) - : QMainWindow( parent, name, WType_TopLevel | WDestructiveClose ) -{ - BEGIN_OF("Constructeur HelpWindow"); - - setCaption( tr( "Help" ) ); - - myTextView = new QTextView( this, "myTextView" ); - QPalette pal = myTextView->palette(); - QColorGroup cg = pal.active(); - cg.setColor( QColorGroup::Highlight, QColor( 0, 0, 128) ); - cg.setColor( QColorGroup::HighlightedText, Qt::white ); - cg.setColor( QColorGroup::Base, QColor( 255,255,220 ) ); - cg.setColor( QColorGroup::Text, Qt::black ); - pal.setActive ( cg ); - cg = pal.inactive(); - cg.setColor( QColorGroup::Highlight, QColor( 0, 0, 128) ); - cg.setColor( QColorGroup::HighlightedText, Qt::white ); - cg.setColor( QColorGroup::Base, QColor( 255,255,220 ) ); - cg.setColor( QColorGroup::Text, Qt::black ); - pal.setInactive( cg ); - cg = pal.disabled(); - cg.setColor( QColorGroup::Highlight, QColor( 0, 0, 128) ); - cg.setColor( QColorGroup::HighlightedText, Qt::white ); - cg.setColor( QColorGroup::Base, QColor( 255,255,220 ) ); - cg.setColor( QColorGroup::Text, Qt::black ); - pal.setDisabled( cg ); - myTextView->setPalette( pal ); - - setCentralWidget( myTextView ); - setMinimumSize( 450, 250 ); - - QFile f ( "tmp.txt" ); - if ( f.open( IO_ReadOnly ) ) - { - QTextStream t( &f ); - while ( !t.eof() ) - { - myTextView->append(t.readLine()); - } - } - f.close(); - - END_OF("Constructeur HelpWindow"); -} - -/*! - Destructor -*/ -HelpWindow::~HelpWindow() -{ - BEGIN_OF("Destructeur HelpWindow"); - END_OF("Destructeur HelpWindow"); -}; - -/*! - Sets text -*/ -void HelpWindow::setText( const QString& text ) -{ - myTextView->setText( text ); -} - - diff --git a/src/RegistryDisplay/HelpWindow.hxx b/src/RegistryDisplay/HelpWindow.hxx deleted file mode 100644 index 6f7a9d4ae..000000000 --- a/src/RegistryDisplay/HelpWindow.hxx +++ /dev/null @@ -1,51 +0,0 @@ -// SALOME RegistryDisplay : GUI for Registry server implementation -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : HelpWindow.hxx -// Author : Pascale NOYRET, EDF -// Module : SALOME -// $Header$ - -# ifndef __HELPWINDOW_H__ -# define __HELPWINDOW_H__ - -# include -# include - -class QTextView; - -class HelpWindow : public QMainWindow -{ -public: - HelpWindow( QWidget* parent = 0, const char* name = 0); - ~HelpWindow(); - - void setText( const QString& text ); - QTextView* textView() const { return myTextView; } - -private: - QTextView* myTextView; -}; -# endif /* __HELPWINDOW_H__ */ - - diff --git a/src/RegistryDisplay/IntervalWindow.cxx b/src/RegistryDisplay/IntervalWindow.cxx deleted file mode 100644 index 239de1fe0..000000000 --- a/src/RegistryDisplay/IntervalWindow.cxx +++ /dev/null @@ -1,108 +0,0 @@ -// SALOME RegistryDisplay : GUI for Registry server implementation -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : IntervalWindow.cxx -// Author : Oksana TCHEBANOVA -// Module : SALOME - -#include - -#include -#include -#include -#include -# include "utilities.h" -using namespace std; - -#define MARGIN_SIZE 11 -#define SPACING_SIZE 6 -#define MIN_SPIN_WIDTH 100 - -IntervalWindow::IntervalWindow ( QWidget* parent ) - : QDialog( parent, "IntervalWindow" , true, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu | WDestructiveClose ) -{ - BEGIN_OF("IntervalWindow constructor") - setCaption( tr( "Refresh Interval" ) ); - setSizeGripEnabled( true ); - - QGridLayout* topLayout = new QGridLayout( this ); - topLayout->setSpacing( SPACING_SIZE ); - topLayout->setMargin( MARGIN_SIZE ); - - QGroupBox* intervalGrp = new QGroupBox( this, "intervalGrp" ); - intervalGrp->setColumnLayout( 0, Qt::Horizontal );//Vertical - intervalGrp->layout()->setSpacing( 0 ); - intervalGrp->layout()->setMargin( 0 ); - QGridLayout* intervalGrpLayout = new QGridLayout( intervalGrp->layout() ); - intervalGrpLayout->setAlignment( Qt::AlignTop ); - intervalGrpLayout->setSpacing( SPACING_SIZE ); - intervalGrpLayout->setMargin( MARGIN_SIZE ); - - QHBoxLayout* aBtnLayout = new QHBoxLayout; - aBtnLayout->setSpacing( SPACING_SIZE ); - aBtnLayout->setMargin( 0 ); - - myButtonOk = new QPushButton( this, "buttonOk" ); - myButtonOk->setText( tr( "BUT_OK" ) ); - myButtonOk->setAutoDefault( TRUE ); - myButtonOk->setDefault( TRUE ); - - myButtonCancel = new QPushButton( this, "buttonCancel" ); - myButtonCancel->setText( tr( "BUT_CANCEL" ) ); - myButtonCancel->setAutoDefault( TRUE ); - - QLabel* TextLabel = new QLabel( intervalGrp, "TextLabel" ); - TextLabel->setText( tr( "Please, enter a number of seconds:" ) ); - - mySpinBox = new QSpinBox( 1, 999999999, 1, intervalGrp, "SpinBox" ); - mySpinBox->setValue( 100 ); - mySpinBox->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed)); - mySpinBox->setMinimumWidth(MIN_SPIN_WIDTH); - - intervalGrpLayout->addWidget(TextLabel, 0, 0); - intervalGrpLayout->addWidget(mySpinBox, 0, 1); - - aBtnLayout->addWidget( myButtonOk ); - aBtnLayout->addItem( new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ) ); - aBtnLayout->addWidget( myButtonCancel ); - - topLayout->addWidget( intervalGrp, 0, 0 ); - topLayout->addLayout( aBtnLayout, 1, 0 ); - - END_OF("IntervalWindow constructor") -} -IntervalWindow::~IntervalWindow() {} -/* - Sets start interval size -*/ -void IntervalWindow::setValue(const int size) -{ - mySpinBox->setValue(size); -} - -/* - Gets interval size -*/ -int IntervalWindow::getValue() -{ - return mySpinBox->value(); -} - -/* - gets a pointer to myButtonOk -*/ -QPushButton* IntervalWindow::Ok() -{ - return myButtonOk; -} - -/* - gets a pointer to myButtonCancel -*/ -QPushButton* IntervalWindow::Cancel() -{ - return myButtonCancel; -} diff --git a/src/RegistryDisplay/IntervalWindow.hxx b/src/RegistryDisplay/IntervalWindow.hxx deleted file mode 100644 index 9e732f1b2..000000000 --- a/src/RegistryDisplay/IntervalWindow.hxx +++ /dev/null @@ -1,38 +0,0 @@ -// SALOME RegistryDisplay : GUI for Registry server implementation -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : IntervalWindow.hxx -// Author : Oksana TCHEBANOVA -// Module : SALOME - -#ifndef IntervalWindow_HeaderFile -#define IntervalWindow_HeaderFile - -# include -# include -# include -# include - - -class IntervalWindow : public QDialog -{ -public: - IntervalWindow( QWidget* parent = 0 ); - ~IntervalWindow(); - - QPushButton* Ok(); - QPushButton* Cancel(); - - int getValue(); - void setValue( int ); - -private: - QSpinBox* mySpinBox; - QPushButton* myButtonOk; - QPushButton* myButtonCancel; -}; - -#endif diff --git a/src/RegistryDisplay/Makefile.in b/src/RegistryDisplay/Makefile.in deleted file mode 100644 index 1c6fd6a1a..000000000 --- a/src/RegistryDisplay/Makefile.in +++ /dev/null @@ -1,58 +0,0 @@ -# SALOME RegistryDisplay : GUI for Registry server implementation -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Author : Paul RASCLE, EDF -# Module : SALOME -# $Header$ - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - -@COMMENCE@ - -EXPORT_PYSCRIPTS = - -EXPORT_HEADERS = - -# Libraries targets - -LIB = libRegistryDisplay.la - -LIB_SRC = HelpWindow.cxx \ - RegWidget.cxx \ - RegWidgetFactory.cxx \ - RegWidget_moc.cxx \ - IntervalWindow.cxx - -LIB_CLIENT_IDL = SALOME_Registry.idl - -CPPFLAGS+=$(QT_INCLUDES) -LDFLAGS+=$(QT_MT_LIBS) -lSalomeNS -lOpUtil - -%_moc.cxx: %.hxx - $(MOC) $< -o $@ - -@CONCLUDE@ diff --git a/src/RegistryDisplay/RegWidget.cxx b/src/RegistryDisplay/RegWidget.cxx deleted file mode 100644 index a2cb69e3b..000000000 --- a/src/RegistryDisplay/RegWidget.cxx +++ /dev/null @@ -1,670 +0,0 @@ -// SALOME RegistryDisplay : GUI for Registry server implementation -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : RegWidget.cxx -// Author : Pascale NOYRET, EDF -// Module : SALOME -// $Header$ - -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "SALOME_NamingService.hxx" -# include "ServiceUnreachable.hxx" -# include "Utils_SINGLETON.hxx" -# include "Utils_CommException.hxx" - -# include "utilities.h" -# include "OpUtil.hxx" - -# include "RegWidget.hxx" -# include "HelpWindow.hxx" -# include "IntervalWindow.hxx" -using namespace std; - -typedef int PIXELS; -RegWidget* RegWidget::myRegWidgetPtr = 0; -QString addSlash( const QString& ); -QString findFile( QString filename ); - -#define BOLD( text ) ( QString( "" ) + QString( text ) + QString( "" ) ) - -/*! - Creates components list -*/ - -Registry::Components_var MakeRegistry( CORBA::ORB_var &orb ) -{ - - const char *registryName="Registry" ; - - SALOME_NamingService &naming = *SINGLETON_::Instance() ; - naming.init_orb( orb ) ; - - // Recuperation de la reference de l'objet - CORBA::Object_var object = 0 ; - try - { - SCRUTE(registryName) ; - object = naming.Resolve( registryName ) ; - if(CORBA::is_nil(object)) throw CommException( "unable to find the RegistryService" ) ; - } - catch( const ServiceUnreachable &ex ) - { - MESSAGE( ex.what() ) - exit( EXIT_FAILURE ) ; - } - catch( const CORBA::Exception &exx ) - { - exit( EXIT_FAILURE ) ; - } - - // Specialisation de l'objet generique - - return Registry::Components::_narrow( object ) ; -} - -/*! - Only one global registry window should exist at the moment - This method creates registry window if necessary and returns it - [ static ] -*/ -RegWidget* RegWidget::GetRegWidget( CORBA::ORB_var &orb , QWidget *parent, const char *name ) -{ - if ( !myRegWidgetPtr ) - myRegWidgetPtr = new RegWidget( orb, parent, name ); - return myRegWidgetPtr; -} - -/*! - Constructor -*/ -RegWidget::RegWidget(CORBA::ORB_var &orb, QWidget *parent, const char *name ) - : QMainWindow( parent, name, WType_TopLevel | WDestructiveClose ), - _VarComponents( MakeRegistry(orb) ), - _clients(0), _history(0), _parent( parent ), - _tabWidget(0), _refresh(0), _interval(0), - myInfoWindow(0), myHelpWindow(0), myIntervalWindow(0) -{ - QString aFile = findFile("default.png"); - /* char* dir = getenv( "CSF_ResourcesDefaults" ); - QString path( "" ); - if ( dir ) { - QDir qDir( dir ); - path = qDir.filePath( "default.png" ); - }*/ - QPixmap pm ( aFile ); - if ( !pm.isNull() ) - setIcon( pm ); - - // Buttons definition - QToolBar* topbar = new QToolBar( tr("Toolbar"), this ); - setDockEnabled( topbar, DockTornOff, false ); - setDockMenuEnabled( false ); - - _refresh = new QPushButton( tr( "Refresh" ), topbar ); - connect( _refresh, SIGNAL( clicked() ), this, SLOT( slotListeSelect() ) ); - QToolTip::add( _refresh, "", toolTipGroup(), tr("Immediately updates list of components") ); - - /* PAL5540 - this button is needless - QPushButton* help = new QPushButton( tr( "Help" ), topbar ); - connect( help, SIGNAL( clicked() ), this, SLOT( slotHelp() ) ); - QToolTip::add( help, "", toolTipGroup(), tr("Opens Help window") ); - */ - - _interval = new QPushButton( tr( "Interval" ), topbar ); - connect( _interval, SIGNAL( clicked() ), this, SLOT( slotSelectRefresh() ) ); - QToolTip::add( _interval, "", toolTipGroup(), tr("Changes refresh interval") ); - - // Display area and associated slots definition - _tabWidget = new QTabWidget( this ); - _clients = new QListView( _tabWidget ); - SetListe(); - _history = new QListView( _tabWidget ); - SetListeHistory(); - - _tabWidget->addTab( _clients, tr( "Running" ) ); - _tabWidget->addTab( _history, tr( "History" ) ); - connect( _tabWidget, SIGNAL( currentChanged( QWidget* )), this, SLOT( slotListeSelect() ) ); - connect( _clients, SIGNAL( clicked( QListViewItem* ) ), this, SLOT( slotClientChanged( QListViewItem* ) ) ); - connect( _history, SIGNAL( clicked( QListViewItem* ) ), this, SLOT( slotHistoryChanged( QListViewItem* ) ) ); - setCentralWidget( _tabWidget ); - - // Timer definition (used to automaticaly refresh the display area) - _counter = new QTimer( this ); - connect( _counter, SIGNAL( timeout() ), this, SLOT( slotListeSelect() ) ); - myRefreshInterval = 10; - _counter->start( myRefreshInterval * 1000 ); - - PIXELS xpos = 160 ; - PIXELS ypos = 100 ; - PIXELS largeur = 800 ; - PIXELS hauteur = 350 ; - setGeometry( xpos, ypos, largeur, hauteur ) ; - setCaption( name ) ; - statusBar()->message(" "); -} - -/*! - Destructor -*/ -RegWidget::~RegWidget() -{ - MESSAGE("Debut du Destructeur"); - _counter->stop(); - myRegWidgetPtr = 0; -}; - -/*! - Event filter -*/ -bool RegWidget::eventFilter( QObject* object, QEvent* event ) -{ - if ( object ) { - if ( object == myHelpWindow && event->type() == QEvent::Close ) { - myHelpWindow = 0; - } - else if ( object == myInfoWindow && event->type() == QEvent::Close ) { - myInfoWindow = 0; - } - else if ( object == myIntervalWindow && event->type() == QEvent::Close ) { - myIntervalWindow = 0; - } - } - return QMainWindow::eventFilter( object, event ); -} - -/*! - Searches item in the list and returns it's index or -1 if not found -*/ -int RegWidget::numitem(const QString &name, const QString &pid, const QString &machine,const Registry::AllInfos *listclient) -{ - BEGIN_OF("numitem"); - for (CORBA::ULong i=0; ilength(); i++) - { - const Registry::Infos & c_info=(*listclient)[i]; - ASSERT( c_info.name!=NULL); - QString b; - b.setNum(int(c_info.pid)); - if ( (name.compare(QString(c_info.name)) == 0) && - (machine.compare(QString(c_info.machine)) == 0) && - (pid.compare(b) == 0) ) - { - END_OF("numitem"); - return i; - } - } - END_OF("numitem"); - return -1; -} - -/*! - Returns text, containing information about client [ static ] -*/ -QString RegWidget::setlongText( const Registry::Infos &c_info) -{ - BEGIN_OF("setlongText"); - ASSERT( c_info.name != NULL ); - QString a = QString( "

" ) + tr( "Code" ) + QString( " : " ); - a.append( QString( c_info.name ) ); - a.append( "



" ); - a.append( tr( "Process Id" ) + QString( " : " ) ); - a.append( BOLD( QString::number( int( c_info.pid ) ) ) ); - a.append( QString( " " ) + tr( "on machine" ) + QString( " " ) ); - a.append( BOLD( c_info.machine ) ); - a.append( QString( " " ) + tr( "ip address" ) + QString( " : " ) ); - a.append( BOLD( c_info.adip ) ); - a.append( "
" ); - - a.append( tr( "launched by user" ) + QString( " " ) ); - a.append( BOLD( c_info.pwname ) ); - a.append( QString( " ( " ) + tr( "pid" ) + QString( " : " ) ); - a.append( BOLD( QString::number( int( c_info.uid ) ) ) ); - a.append( QString( " )
" ) + tr( "in directory" ) + QString( " " )); - a.append( BOLD( c_info.cdir ) ); - - a.append( QString( "
" ) + tr( "begins" ) + QString( " " ) ); - char * t1 = (char * )duplicate(ctime(&c_info.tc_start)); - t1 [strlen(t1) -1 ] = ' '; - a.append( BOLD( t1 ) ); - delete [] t1; - a.append( "
" ); - - if (c_info.tc_hello != 0 ) - { - char * t2 = (char * )duplicate(ctime(&c_info.tc_hello)); - t2 [strlen(t2) -1 ] = ' '; - a.append( tr( "last signal" ) + QString(" : ") ); - a.append( BOLD( t2 ) ); - a.append( "
" ); - delete [] t2; - } - if ((c_info.tc_end - c_info.difftime) != 0) - { - char * t3 = (char * )duplicate(ctime(&c_info.tc_end)); - t3 [strlen(t3) -1 ] = ' '; - a.append( tr( "ends" ) + QString( " " ) ); - a.append( BOLD( t3 ) ); - a.append( "
" ); - delete [] t3; - } - else - { - a.append( tr( "still running" ) + QString( "
" ) ); - } - - SCRUTE(c_info.difftime); - if (c_info.difftime!= 0) - { - a.append( QString( "(" ) + tr( "Time on" ) + QString( " " ) ); - a.append( BOLD( c_info.machine ) ); - a.append( QString( " " ) + tr( "differs from server's time. The difference is" ) + QString( " " )); - a.append( BOLD( QString::number( int( c_info.difftime ) ) ) ); - a.append( QString( " " ) + tr( "seconds" ) + QString( ")
" ) ); - } - END_OF("setlongText"); - return a; - -} - -/*! - Close event -*/ -void RegWidget::closeEvent( QCloseEvent *e) -{ - BEGIN_OF("closeEvent"); - if ( myInfoWindow ) - myInfoWindow->close(); - if ( myHelpWindow ) - myHelpWindow->close(); - if (myIntervalWindow) - myIntervalWindow->close(); - e->accept(); - END_OF("closeEvent"); -}; - -/*! - Setups Clients list -*/ -void RegWidget::SetListe() -{ - BEGIN_OF("SetListe"); - _clients->addColumn( tr( "Component" ), -1); - _clients->addColumn( tr( "PID" ), -1 ); - _clients->addColumn( tr( "User Name" ), -1 ); - _clients->addColumn( tr( "Machine" ), -1 ); - _clients->addColumn( tr( "begins" ), -1 ); - _clients->addColumn( tr( "hello" ) , -1 ); - _clients->setColumnAlignment( 1, Qt::AlignRight ); - END_OF("SetListe"); -} - -/*! - Setups History list -*/ -void RegWidget::SetListeHistory() -{ - BEGIN_OF("SetListeHistory") - _history->addColumn( tr( "Component" ), -1); - _history->addColumn( tr( "PID" ), -1 ); - _history->addColumn( tr( "User Name" ), -1 ); - _history->addColumn( tr( "Machine" ), -1 ); - _history->addColumn( tr( "begins" ), -1 ); - _history->addColumn( tr( "ends" ), -1 ); - _history->setColumnAlignment( 1, Qt::AlignRight ); - END_OF("SetListeHistory") -} - -/*! - Updates History list -*/ -void RegWidget::InfoHistory() -{ - - BEGIN_OF("InfoHistory") - _history->clear(); - try - { - _serverhistory = _VarComponents->history(); - for (CORBA::ULong i=0; i<_serverhistory->length(); i++) - { - const Registry::Infos & c_info=(*_serverhistory)[i]; - ASSERT( c_info.name!=NULL); - QString a; - a.setNum(int(c_info.pid)); - char * t1 = (char * )duplicate(ctime(&c_info.tc_start)); - t1 [strlen(t1) -1 ] = ' '; - char * t2 = (char * )duplicate(ctime(&c_info.tc_end)); - t2 [strlen(t2) -1 ] = ' '; - QListViewItem * item = new QListViewItem(_history, QString(c_info.name),\ - a, QString(c_info.pwname), QString(c_info.machine), \ - QString(t1), QString(t2)); - item=0 ; - delete [] t1; - delete [] t2; - - } - } - catch( ... ) - { - _interval->setDisabled( TRUE ) ; - _refresh->setDisabled( TRUE ) ; - _counter->stop(); - MESSAGE("Sorry, No more Registry Server") ; - statusBar()->message( tr( "Sorry, No more Registry Server" ) ) ; - } - END_OF("InfoHistory") -} - -/*! - Updates clients list -*/ -void RegWidget::InfoReg() -{ - BEGIN_OF("InfoReg") - _clients->clear(); - try - { - _serverclients = _VarComponents->getall(); - for (CORBA::ULong i=0; i<_serverclients->length(); i++) - { - const Registry::Infos & c_info=(*_serverclients)[i]; - ASSERT( c_info.name!=NULL); - QString a; - a.setNum(int(c_info.pid)); - char * t1 = (char * )duplicate(ctime(&c_info.tc_start)); - t1 [strlen(t1) -1 ] = ' '; - char * t2 = (char * )duplicate(ctime(&c_info.tc_hello)); - t2 [strlen(t2) -1 ] = ' '; - QListViewItem * item = new QListViewItem(_clients, QString(c_info.name),\ - a, QString(c_info.pwname), QString(c_info.machine), \ - QString(t1), QString(t2)); - item=0 ; - delete [] t1; - delete [] t2; - - } - } - catch( ... ) - { - _interval->setDisabled( TRUE ) ; - _refresh->setDisabled( TRUE ) ; - _counter->stop(); - MESSAGE("Sorry, No more Registry Server") ; - statusBar()->message( tr( "Sorry, No more Registry Server" ) ) ; - } - END_OF("InfoReg") -} - -/*! - Called when button is clicked -*/ -void RegWidget::slotListeSelect() -{ - try - { - ASSERT(_tabWidget->currentPage() != NULL); - if (_tabWidget->currentPage () == _clients) InfoReg(); - else if (_tabWidget->currentPage () == _history) InfoHistory(); - } - catch( ... ) - { - MESSAGE("Sorry, No more Registry Server") ; - statusBar()->message( tr( "Sorry, No more Registry Server" ) ) ; - } -} - -/*! - Called when button is clicked (changing refresh interval) -*/ -void RegWidget::slotSelectRefresh() -{ - BEGIN_OF("slotSelectRefresh"); - myIntervalWindow = new IntervalWindow(this); - myIntervalWindow->installEventFilter( this ); - myIntervalWindow->setValue(myRefreshInterval); - myIntervalWindow->show(); - connect( myIntervalWindow->Cancel(), SIGNAL( clicked() ), myIntervalWindow, SLOT( close() ) ); - connect( myIntervalWindow->Ok(), SIGNAL( clicked() ), this, SLOT( slotIntervalOk() ) ); - END_OF("slotSelectRefresh"); -} - -void RegWidget::slotIntervalOk() -{ - BEGIN_OF("slotIntervalOk"); - myRefreshInterval = myIntervalWindow->getValue(); - _counter->changeInterval( myRefreshInterval * 1000 ); - SCRUTE(myRefreshInterval); - myIntervalWindow->close(); - END_OF("slotIntervalOk"); -} -/*! - Called when button is clicked -*/ -void RegWidget::slotHelp() -{ - BEGIN_OF("slotHelp()"); - - if ( !myHelpWindow ) { - myHelpWindow = new HelpWindow( this ); - myHelpWindow->installEventFilter( this ); - } - myHelpWindow->show(); - myHelpWindow->raise(); - myHelpWindow->setActiveWindow(); - - END_OF("slotHelp()") ; -} - -/*! - Called when user clicks on item in list -*/ -void RegWidget::slotClientChanged( QListViewItem* item ) -{ - BEGIN_OF("slotClientChanged()") ; - - if ( item <= 0) - return; - - blockSignals( true ); // for sure that item will not be deleted when refreshing - - int numeroItem = numitem(item->text(0), item->text(1), item->text(3), _serverclients); - SCRUTE(numeroItem) ; - SCRUTE(item->text(1)) ; - - ASSERT(numeroItem>=0) ; - ASSERT((size_t)numeroItem<_serverclients->length()) ; - const Registry::Infos & c_info=(*_serverclients)[numeroItem]; - ASSERT( c_info.name!=NULL); - - if ( !myInfoWindow ) { - myInfoWindow = new InfoWindow( this ); - myInfoWindow->installEventFilter( this ); - } - QString a = tr( "More about" ) + QString( " " ) + QString( c_info.name ); - myInfoWindow->setCaption(a); - myInfoWindow->setText( RegWidget::setlongText( c_info) ); - myInfoWindow->show(); - myInfoWindow->raise(); - myInfoWindow->setActiveWindow(); - - blockSignals( false ); // enabling signals again - - END_OF("slotClientChanged()") ; - return ; -} - -/*! - Called when user clicks on item in list -*/ -void RegWidget::slotHistoryChanged( QListViewItem* item ) -{ - - BEGIN_OF("slotHistoryChanged()") ; - - if ( item <= 0) - return; - - blockSignals( true ); // for sure that item will not be deleted when refreshing - - int numeroItem = numitem(item->text(0), item->text(1), item->text(3), _serverhistory); - - SCRUTE(numeroItem) ; - SCRUTE(item->text(1)) ; - ASSERT(numeroItem>=0) ; - ASSERT((size_t)numeroItem<_serverhistory->length()) ; - const Registry::Infos & c_info=(*_serverhistory)[numeroItem]; - ASSERT( c_info.name!=NULL); - - if ( !myInfoWindow ) { - myInfoWindow = new InfoWindow( this ); - myInfoWindow->installEventFilter( this ); - } - QString a = tr( "More about" ) + QString( " " ) + QString( c_info.name ); - myInfoWindow->setCaption(a); - myInfoWindow->setText( RegWidget::setlongText( c_info ) ); - myInfoWindow->show(); - myInfoWindow->raise(); - myInfoWindow->setActiveWindow(); - - blockSignals( false ); // enabling signals again - - END_OF("slotHistoryChanged()") ; - return ; -} - -/*! - Constructor -*/ -InfoWindow::InfoWindow( QWidget* parent, const char* name ) - : QMainWindow( parent, name, WType_TopLevel | WDestructiveClose ) -{ - BEGIN_OF("InfoWindow"); - myTextView = new QTextView( this, "myTextView" ); - setCentralWidget( myTextView ); - setMinimumSize( 450, 250 ); - END_OF("InfoWindow"); -} - -/*! - Sets text -*/ -void InfoWindow::setText( const QString& text ) -{ - myTextView->setText( text ); -} - -static const char* SEPARATOR = ":"; - -QString findFile( QString filename ) -{ - QString dir; - char* cenv; - - // Try ${HOME}/.salome/resources directory - cenv = getenv( "HOME" ); - if ( cenv ) { - dir.sprintf( "%s", cenv ); - if ( !dir.isEmpty() ) { - dir = addSlash(dir) ; - dir = dir + ".salome" ; - dir = addSlash(dir) ; - dir = dir + "resources" ; - dir = addSlash(dir) ; - QFileInfo fileInfo( dir + filename ); - if ( fileInfo.isFile() && fileInfo.exists() ) - return fileInfo.filePath(); - } - } - // Try ${SALOME_SITE_DIR}/share/salome/resources directory - cenv = getenv( "SALOME_SITE_DIR" ); - if ( cenv ) { - dir.sprintf( "%s", cenv ); - if ( !dir.isEmpty() ) { - dir = addSlash(dir) ; - dir = dir + "share" ; - dir = addSlash(dir) ; - cenv = getenv("SALOME_SITE_NAME"); - if (cenv) dir = dir + cenv; - else dir = dir + "salome" ; - dir = addSlash(dir) ; - dir = dir + "resources" ; - dir = addSlash(dir) ; - QFileInfo fileInfo( dir + filename ); - if ( fileInfo.isFile() && fileInfo.exists() ) - return fileInfo.filePath(); - } - } - // Try ${KERNEL_ROOT_DIR}/share/salome/resources directory - cenv = getenv( "KERNEL_ROOT_DIR" ); - if ( cenv ) { - dir.sprintf( "%s", cenv ); - if ( !dir.isEmpty() ) { - dir = addSlash(dir) ; - dir = dir + "share" ; - dir = addSlash(dir) ; - dir = dir + "salome" ; - dir = addSlash(dir) ; - dir = dir + "resources" ; - dir = addSlash(dir) ; - QFileInfo fileInfo( dir + filename ); - if ( fileInfo.isFile() && fileInfo.exists() ) - return fileInfo.filePath(); - } - } - // Try CSF_SaloameResources env.var directory ( or directory list ) - cenv = getenv( "CSF_SalomeResources" ); - if ( cenv ) { - dir.sprintf( "%s", cenv ); - if ( !dir.isEmpty() ) { - QStringList dirList = QStringList::split( SEPARATOR, dir, false ); // skip empty entries - for ( int i = 0; i < dirList.count(); i++ ) { - QFileInfo fileInfo( addSlash( dirList[ i ] ) + filename ); - if ( fileInfo.isFile() && fileInfo.exists() ) - return fileInfo.filePath(); - } - } - } - return filename; -} -QString addSlash( const QString& path ) -{ - if (!path.isNull()) { -#ifdef WNT - QChar slash ('\\'); -#else - QChar slash ('/'); -#endif - if ( path.at(path.length()-1) != slash ) - return path + slash; - } - return path; -} diff --git a/src/RegistryDisplay/RegWidget.hxx b/src/RegistryDisplay/RegWidget.hxx deleted file mode 100644 index 556d26727..000000000 --- a/src/RegistryDisplay/RegWidget.hxx +++ /dev/null @@ -1,122 +0,0 @@ -// SALOME RegistryDisplay : GUI for Registry server implementation -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : RegWidget.hxx -// Author : Pascale NOYRET, EDF -// Module : SALOME -// $Header$ - -# ifndef __REGWIDGET_H__ -# define __REGWIDGET_H__ -# include -# include - -#include -#include CORBA_CLIENT_HEADER(SALOME_Registry) - -#include - -class QTabWidget; -class QListView; -class QListViewItem; -class QWidget; -class QTimer; -class QCloseEvent; -class QTextView; -#if QT_VERSION > 300 -class QPushButton; -#endif -class HelpWindow; -class InfoWindow; - -class RegWidget : public QMainWindow -{ - - Q_OBJECT - -public: - RegWidget( CORBA::ORB_var &orb , QWidget *parent = 0, const char *name = 0 ); - ~RegWidget(); - void SetListe(); - void SetListeHistory(); - void InfoReg(); - void InfoHistory(); - - bool eventFilter( QObject* object, QEvent* event ); - - static RegWidget* GetRegWidget( CORBA::ORB_var &orb , QWidget *parent = 0, const char *name = 0 ); - -public slots: - void slotHelp(); - void slotListeSelect(); - void slotClientChanged( QListViewItem* ); - void slotHistoryChanged( QListViewItem* ); - void slotSelectRefresh(); - void slotIntervalOk(); -protected: - static QString setlongText( const Registry::Infos &c_info ); - int numitem( const QString& name, const QString& pid, const QString& machine, const Registry::AllInfos* c_info ); - void closeEvent( QCloseEvent *e); - -protected : - QListView* _clients; - QListView* _history; - QWidget* _parent; - QTabWidget* _tabWidget; - QPushButton* _refresh; - QPushButton* _interval; - QTimer* _counter; - Registry::AllInfos* _serverhistory; - Registry::AllInfos* _serverclients; - InfoWindow* myInfoWindow; - HelpWindow* myHelpWindow; - IntervalWindow* myIntervalWindow; - int myRefreshInterval; - -private: - const Registry::Components_var _VarComponents; - static RegWidget* myRegWidgetPtr; -}; - -class InfoWindow : public QMainWindow { -public: - InfoWindow( QWidget* parent = 0, const char* name = 0); - - void setText( const QString& text ); - QTextView* textView() const { return myTextView; } - -private: - QTextView* myTextView; - -}; - -# endif /* # ifndef __REGWIDGET_H__ */ - - - - - - - - - diff --git a/src/RegistryDisplay/RegWidgetFactory.cxx b/src/RegistryDisplay/RegWidgetFactory.cxx deleted file mode 100644 index ffef14c4d..000000000 --- a/src/RegistryDisplay/RegWidgetFactory.cxx +++ /dev/null @@ -1,47 +0,0 @@ -// SALOME RegistryDisplay : GUI for Registry server implementation -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : RegWidgetFactory.cxx -// Author : Pascale NOYRET, EDF -// Module : SALOME -// $Header$ - -# include "RegWidget.hxx" -# include "utilities.h" -using namespace std; - -extern "C" -{ - -void OnGUIEvent( CORBA::ORB_var &orb, QWidget *parent, const char *name ) -{ - // N.B. parent can be 0 - RegWidget* ptrRegWidget = RegWidget::GetRegWidget( orb, parent, name ); - //ASSERT ( !ptrRegWidget ); - ptrRegWidget->show(); - ptrRegWidget->raise(); - ptrRegWidget->setActiveWindow(); - return; -} - -} diff --git a/src/SALOMEGUI/CLIENT_icons.po b/src/SALOMEGUI/CLIENT_icons.po deleted file mode 100644 index 3cd768ba3..000000000 --- a/src/SALOMEGUI/CLIENT_icons.po +++ /dev/null @@ -1,43 +0,0 @@ -# SALOME SALOMEGUI : implementation of desktop and GUI kernel -# -# Copyright (C) 2003 CEA/DEN, EDF R&D -# -# -# -# File : CLIENT_icons.po -# Module : SALOME - -msgid "" -msgstr "" -"Project-Id-Version: example-Qt-message-extraction\n" -"POT-Creation-Date: 1999-02-23 15:38+0200\n" -"PO-Revision-Date: 1999-02-23 15:38+0200\n" -"Last-Translator: \n" -"Content-Type: text/plain; charset=iso-8859-1\n" - -#-------------- -# DESKTOP -#-------------- - -msgid "ICON_DESK_DEFAULTICON" -msgstr "default.png" - -msgid "ICON_DESK_BACKGROUNDICON" -msgstr "Desktop.png" - -#-------------- -# APPLICATION -#-------------- - -msgid "ICON_APP_DEFAULTICON" -msgstr "default.png" - -#-------------- -# ABOUT -#-------------- - -msgid "ICON_ABOUT" -msgstr "Application-About.png" - -msgid "ICON_DESK_LOGO" -msgstr "Application-Logo.png" \ No newline at end of file diff --git a/src/SALOMEGUI/CLIENT_msg_en.po b/src/SALOMEGUI/CLIENT_msg_en.po deleted file mode 100644 index a4695f62b..000000000 --- a/src/SALOMEGUI/CLIENT_msg_en.po +++ /dev/null @@ -1,45 +0,0 @@ -# SALOME SALOMEGUI : implementation of desktop and GUI kernel -# -# Copyright (C) 2003 CEA/DEN, EDF R&D -# -# -# -# File : CLIENT_msg_en.po -# Module : SALOME - -msgid "" -msgstr "" -"Project-Id-Version: example-Qt-message-extraction\n" -"POT-Creation-Date: 1999-02-23 15:38+0200\n" -"PO-Revision-Date: 1999-02-23 15:38+0200\n" -"Last-Translator: \n" -"Content-Type: text/plain; charset=iso-8859-1\n" - -#--------------- -# INFORMATIONS -#--------------- - -msgid "INF_VERSION" -msgstr "Version 2.2.0" - -msgid "INF_COPYRIGHT" -msgstr "Copyright (C) 2003-2004 OPEN CASCADE, EADS/CCR, LIP6,\nCEA/DEN, CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS" - -msgid "INF_LICENSE" -msgstr "GNU LGPL" - -#: SALOMEGUI_AboutDlg.cxx:42 -msgid "ABOUT_TLT" -msgstr "About SALOME" - -#: QAD_Config.cxx:84 -msgid "MEN_APPNAME" -msgstr "salome" - -#: QAD_Application.cxx:133 -msgid "QAD_Application::APP_DEFAULTTITLE" -msgstr "SALOME 2.2.0" - -#: QAD_Desktop.cxx:424 -msgid "QAD_Desktop::DESK_DEFAULTTITLE" -msgstr "SALOME 2.2.0" diff --git a/src/SALOMEGUI/Handle_SALOME_DataMapNodeOfDataMapOfIOMapOfInteger.hxx b/src/SALOMEGUI/Handle_SALOME_DataMapNodeOfDataMapOfIOMapOfInteger.hxx deleted file mode 100644 index 4caa5b2d5..000000000 --- a/src/SALOMEGUI/Handle_SALOME_DataMapNodeOfDataMapOfIOMapOfInteger.hxx +++ /dev/null @@ -1,100 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Handle_SALOME_DataMapNodeOfDataMapOfIOMapOfInteger.hxx -// Module : SALOME - -#ifndef _Handle_SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_HeaderFile -#define _Handle_SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class SALOME_DataMapNodeOfDataMapOfIOMapOfInteger; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger); - -class Handle(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger) : public Handle(TCollection_MapNode) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } -// inline void operator delete(void *anAddress, size_t size) -// { -// if (anAddress) Standard::Free((Standard_Address&)anAddress,size); -// } - Handle(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger)():Handle(TCollection_MapNode)() {} - Handle(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger)(const Handle(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger)(const SALOME_DataMapNodeOfDataMapOfIOMapOfInteger* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger)& operator=(const Handle(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger)& operator=(const SALOME_DataMapNodeOfDataMapOfIOMapOfInteger* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - SALOME_DataMapNodeOfDataMapOfIOMapOfInteger* operator->() - { - return (SALOME_DataMapNodeOfDataMapOfIOMapOfInteger *)ControlAccess(); - } - - SALOME_DataMapNodeOfDataMapOfIOMapOfInteger* operator->() const - { - return (SALOME_DataMapNodeOfDataMapOfIOMapOfInteger *)ControlAccess(); - } - - Standard_EXPORT ~Handle(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger)(); - - Standard_EXPORT static const Handle(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/SALOMEGUI/Handle_SALOME_Filter.hxx b/src/SALOMEGUI/Handle_SALOME_Filter.hxx deleted file mode 100644 index 49eb7b877..000000000 --- a/src/SALOMEGUI/Handle_SALOME_Filter.hxx +++ /dev/null @@ -1,100 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Handle_SALOME_Filter.hxx -// Module : SALOME - -#ifndef _Handle_SALOME_Filter_HeaderFile -#define _Handle_SALOME_Filter_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_MMgt_TShared_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(MMgt_TShared); -class SALOME_Filter; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(SALOME_Filter); - -class Handle(SALOME_Filter) : public Handle(MMgt_TShared) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } -// inline void operator delete(void *anAddress, size_t size) -// { -// if (anAddress) Standard::Free((Standard_Address&)anAddress,size); -// } - Handle(SALOME_Filter)():Handle(MMgt_TShared)() {} - Handle(SALOME_Filter)(const Handle(SALOME_Filter)& aHandle) : Handle(MMgt_TShared)(aHandle) - { - } - - Handle(SALOME_Filter)(const SALOME_Filter* anItem) : Handle(MMgt_TShared)((MMgt_TShared *)anItem) - { - } - - Handle(SALOME_Filter)& operator=(const Handle(SALOME_Filter)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(SALOME_Filter)& operator=(const SALOME_Filter* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - SALOME_Filter* operator->() - { - return (SALOME_Filter *)ControlAccess(); - } - - SALOME_Filter* operator->() const - { - return (SALOME_Filter *)ControlAccess(); - } - - Standard_EXPORT ~Handle(SALOME_Filter)(); - - Standard_EXPORT static const Handle(SALOME_Filter) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/SALOMEGUI/Handle_SALOME_ListNodeOfListIO.hxx b/src/SALOMEGUI/Handle_SALOME_ListNodeOfListIO.hxx deleted file mode 100644 index 0df5e98be..000000000 --- a/src/SALOMEGUI/Handle_SALOME_ListNodeOfListIO.hxx +++ /dev/null @@ -1,96 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Handle_SALOME_ListNodeOfListIO.hxx -// Module : SALOME - -#ifndef _Handle_SALOME_ListNodeOfListIO_HeaderFile -#define _Handle_SALOME_ListNodeOfListIO_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class SALOME_ListNodeOfListIO; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(SALOME_ListNodeOfListIO); - -class Handle(SALOME_ListNodeOfListIO) : public Handle(TCollection_MapNode) { - public: - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - Handle(SALOME_ListNodeOfListIO)():Handle(TCollection_MapNode)() {} - Handle(SALOME_ListNodeOfListIO)(const Handle(SALOME_ListNodeOfListIO)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(SALOME_ListNodeOfListIO)(const SALOME_ListNodeOfListIO* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(SALOME_ListNodeOfListIO)& operator=(const Handle(SALOME_ListNodeOfListIO)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(SALOME_ListNodeOfListIO)& operator=(const SALOME_ListNodeOfListIO* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - SALOME_ListNodeOfListIO* operator->() - { - return (SALOME_ListNodeOfListIO *)ControlAccess(); - } - - SALOME_ListNodeOfListIO* operator->() const - { - return (SALOME_ListNodeOfListIO *)ControlAccess(); - } - - Standard_EXPORT ~Handle(SALOME_ListNodeOfListIO)(); - - Standard_EXPORT static const Handle(SALOME_ListNodeOfListIO) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/SALOMEGUI/Handle_SALOME_ListNodeOfListOfFilter.hxx b/src/SALOMEGUI/Handle_SALOME_ListNodeOfListOfFilter.hxx deleted file mode 100644 index 07d7fd81f..000000000 --- a/src/SALOMEGUI/Handle_SALOME_ListNodeOfListOfFilter.hxx +++ /dev/null @@ -1,100 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Handle_SALOME_ListNodeOfListOfFilter.hxx -// Module : SALOME - -#ifndef _Handle_SALOME_ListNodeOfListOfFilter_HeaderFile -#define _Handle_SALOME_ListNodeOfListOfFilter_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class SALOME_ListNodeOfListOfFilter; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(SALOME_ListNodeOfListOfFilter); - -class Handle(SALOME_ListNodeOfListOfFilter) : public Handle(TCollection_MapNode) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } -// inline void operator delete(void *anAddress, size_t size) -// { -// if (anAddress) Standard::Free((Standard_Address&)anAddress,size); -// } - Handle(SALOME_ListNodeOfListOfFilter)():Handle(TCollection_MapNode)() {} - Handle(SALOME_ListNodeOfListOfFilter)(const Handle(SALOME_ListNodeOfListOfFilter)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(SALOME_ListNodeOfListOfFilter)(const SALOME_ListNodeOfListOfFilter* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(SALOME_ListNodeOfListOfFilter)& operator=(const Handle(SALOME_ListNodeOfListOfFilter)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(SALOME_ListNodeOfListOfFilter)& operator=(const SALOME_ListNodeOfListOfFilter* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - SALOME_ListNodeOfListOfFilter* operator->() - { - return (SALOME_ListNodeOfListOfFilter *)ControlAccess(); - } - - SALOME_ListNodeOfListOfFilter* operator->() const - { - return (SALOME_ListNodeOfListOfFilter *)ControlAccess(); - } - - Standard_EXPORT ~Handle(SALOME_ListNodeOfListOfFilter)(); - - Standard_EXPORT static const Handle(SALOME_ListNodeOfListOfFilter) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/SALOMEGUI/Handle_SALOME_NumberFilter.hxx b/src/SALOMEGUI/Handle_SALOME_NumberFilter.hxx deleted file mode 100644 index efdfc177c..000000000 --- a/src/SALOMEGUI/Handle_SALOME_NumberFilter.hxx +++ /dev/null @@ -1,100 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Handle_SALOME_NumberFilter.hxx -// Module : SALOME - -#ifndef _Handle_SALOME_NumberFilter_HeaderFile -#define _Handle_SALOME_NumberFilter_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_SALOME_Filter_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(SALOME_Filter); -class SALOME_NumberFilter; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(SALOME_NumberFilter); - -class Handle(SALOME_NumberFilter) : public Handle(SALOME_Filter) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } -// inline void operator delete(void *anAddress, size_t size) -// { -// if (anAddress) Standard::Free((Standard_Address&)anAddress,size); -// } - Handle(SALOME_NumberFilter)():Handle(SALOME_Filter)() {} - Handle(SALOME_NumberFilter)(const Handle(SALOME_NumberFilter)& aHandle) : Handle(SALOME_Filter)(aHandle) - { - } - - Handle(SALOME_NumberFilter)(const SALOME_NumberFilter* anItem) : Handle(SALOME_Filter)((SALOME_Filter *)anItem) - { - } - - Handle(SALOME_NumberFilter)& operator=(const Handle(SALOME_NumberFilter)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(SALOME_NumberFilter)& operator=(const SALOME_NumberFilter* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - SALOME_NumberFilter* operator->() - { - return (SALOME_NumberFilter *)ControlAccess(); - } - - SALOME_NumberFilter* operator->() const - { - return (SALOME_NumberFilter *)ControlAccess(); - } - - Standard_EXPORT ~Handle(SALOME_NumberFilter)(); - - Standard_EXPORT static const Handle(SALOME_NumberFilter) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/SALOMEGUI/Handle_SALOME_TypeFilter.hxx b/src/SALOMEGUI/Handle_SALOME_TypeFilter.hxx deleted file mode 100644 index 4fdd91368..000000000 --- a/src/SALOMEGUI/Handle_SALOME_TypeFilter.hxx +++ /dev/null @@ -1,100 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Handle_SALOME_TypeFilter.hxx -// Module : SALOME - -#ifndef _Handle_SALOME_TypeFilter_HeaderFile -#define _Handle_SALOME_TypeFilter_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_SALOME_Filter_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(SALOME_Filter); -class SALOME_TypeFilter; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(SALOME_TypeFilter); - -class Handle(SALOME_TypeFilter) : public Handle(SALOME_Filter) { - public: - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } -// inline void operator delete(void *anAddress, size_t size) -// { -// if (anAddress) Standard::Free((Standard_Address&)anAddress,size); -// } - Handle(SALOME_TypeFilter)():Handle(SALOME_Filter)() {} - Handle(SALOME_TypeFilter)(const Handle(SALOME_TypeFilter)& aHandle) : Handle(SALOME_Filter)(aHandle) - { - } - - Handle(SALOME_TypeFilter)(const SALOME_TypeFilter* anItem) : Handle(SALOME_Filter)((SALOME_Filter *)anItem) - { - } - - Handle(SALOME_TypeFilter)& operator=(const Handle(SALOME_TypeFilter)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(SALOME_TypeFilter)& operator=(const SALOME_TypeFilter* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - SALOME_TypeFilter* operator->() - { - return (SALOME_TypeFilter *)ControlAccess(); - } - - SALOME_TypeFilter* operator->() const - { - return (SALOME_TypeFilter *)ControlAccess(); - } - - Standard_EXPORT ~Handle(SALOME_TypeFilter)(); - - Standard_EXPORT static const Handle(SALOME_TypeFilter) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/SALOMEGUI/Makefile.in b/src/SALOMEGUI/Makefile.in deleted file mode 100644 index d3acbc362..000000000 --- a/src/SALOMEGUI/Makefile.in +++ /dev/null @@ -1,230 +0,0 @@ -# SALOME SALOMEGUI : implementation of desktop and GUI kernel -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Module : SALOME - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -EXPORT_HEADERS = \ - QAD.h \ - QAD_Action.h \ - QAD_Application.h \ - QAD_Config.h \ - QAD_Desktop.h \ - QAD_DirListDlg.h \ - QAD_XmlHandler.h \ - QAD_FileDlg.h \ - QAD_FileValidator.h \ - QAD_Help.h \ - QAD_PyInterp.h \ - QAD_LeftFrame.h \ - QAD_ListMenuIdAction.h \ - QAD_ListPopupMenu.h \ - QAD_ListView.h \ - QAD_Menus.h \ - QAD_Message.h \ - QAD_MessageBox.h \ - QAD_Operation.h \ - QAD_OperatorMenus.h \ - QAD_ObjectBrowser.h \ - QAD_ObjectBrowserItem.h \ - QAD_Popup.h \ - QAD_PyEditor.h \ - PyInterp_base.h \ - PyInterp_PyQt.h \ - QAD_Resource.h \ - QAD_ResourceMgr.h \ - QAD_RightFrame.h \ - QAD_Settings.h \ - QAD_SpinBoxDbl.h \ - QAD_Splitter.h \ - QAD_Study.h \ - QAD_StudyFrame.h \ - QAD_Tools.h \ - QAD_ViewFrame.h \ - QAD_WaitCursor.h \ - SALOMEGUI_Application.h \ - SALOMEGUI_Desktop.h \ - SALOMEGUI_ImportOperation.h \ - SALOMEGUI_ViewChoiceDlg.h \ - SALOMEGUI_Swig.hxx \ - SALOMEGUI_Swig.i \ - SALOMEGUI_QtCatchCorbaException.hxx \ - SALOME_ListIO.hxx \ - SALOME_ListIteratorOfListIO.hxx \ - Handle_SALOME_ListNodeOfListIO.hxx \ - SALOME_Selection.h \ - Handle_SALOME_Filter.hxx \ - SALOME_Filter.hxx \ - SALOME_TypeFilter.hxx \ - Handle_SALOME_TypeFilter.hxx \ - SALOME_ListOfFilter.hxx \ - SALOME_ListIteratorOfListOfFilter.hxx \ - Handle_SALOME_ListNodeOfListOfFilter.hxx \ - SALOME_NumberFilter.hxx \ - Handle_SALOME_NumberFilter.hxx \ - SALOME_DataMapOfIOMapOfInteger.hxx \ - SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger.hxx \ - Handle_SALOME_DataMapNodeOfDataMapOfIOMapOfInteger.hxx \ - SALOMEGUI.h \ - SALOMEGUI_LoadStudiesDlg.h \ - SALOMEGUI_TableDlg.h \ - SALOMEGUI_NameDlg.h \ - SALOMEGUI_SetValueDlg.h \ - SALOMEGUI_SetupCurveDlg.h \ - SALOMEGUI_CloseDlg.h - -# .po files to transform in .qm -PO_FILES = \ - QAD_icons.po \ - QAD_msg_en.po \ - QAD_msg_fr.po \ - SALOMEGUI_icons.po \ - SALOMEGUI_msg_en.po \ - SALOMEGUI_msg_fr.po \ - CLIENT_icons.po \ - CLIENT_msg_en.po - -# Libraries targets - -LIB = libSalomeGUI.la -LIB_SRC = \ - QAD_Application.cxx \ - QAD_Config.cxx \ - QAD_Desktop.cxx \ - QAD_DirListDlg.cxx \ - QAD_XmlHandler.cxx \ - QAD_FileDlg.cxx \ - QAD_FileValidator.cxx \ - QAD_Help.cxx \ - PyInterp_base.cxx \ - QAD_PyInterp.cxx \ - QAD_PyInterp_mono.cxx \ - PyInterp_PyQt.cxx \ - QAD_LeftFrame.cxx \ - QAD_ListMenuIdAction.cxx \ - QAD_ListPopupMenu.cxx \ - QAD_ListView.cxx \ - QAD_Menus.cxx \ - QAD_Message.cxx \ - QAD_MessageBox.cxx \ - QAD_Operation.cxx \ - QAD_OperatorMenus.cxx \ - QAD_ObjectBrowser.cxx \ - QAD_ObjectBrowserItem.cxx \ - QAD_ParserSettings.cxx \ - QAD_Popup.cxx \ - QAD_PyEditor.cxx \ - QAD_ResourceMgr.cxx \ - QAD_RightFrame.cxx \ - QAD_Settings.cxx \ - QAD_SpinBoxDbl.cxx \ - QAD_Splitter.cxx \ - QAD_Study.cxx \ - QAD_StudyFrame.cxx \ - QAD_Tools.cxx \ - QAD_ViewFrame.cxx \ - SALOMEGUI.cxx \ - SALOMEGUI_Application.cxx \ - SALOMEGUI_Desktop.cxx \ - SALOMEGUI_ImportOperation.cxx \ - SALOMEGUI_ViewChoiceDlg.cxx \ - SALOMEGUI_AboutDlg.cxx \ - SALOMEGUI_Swig.cxx \ - SALOMEGUI_OpenWith.cxx \ - SALOMEGUI_StudyPropertiesDlg.cxx \ - SALOMEGUI_QtCatchCorbaException.cxx \ - SALOME_ListIO_0.cxx \ - SALOME_ListNodeOfListIO_0.cxx \ - SALOME_ListIteratorOfListIO_0.cxx \ - SALOME_Selection.cxx \ - SALOME_Filter.cxx \ - SALOME_ListOfFilter_0.cxx \ - SALOME_ListNodeOfListOfFilter_0.cxx \ - SALOME_ListIteratorOfListOfFilter_0.cxx \ - SALOME_TypeFilter.cxx \ - SALOME_NumberFilter.cxx \ - SALOME_DataMapOfIOMapOfInteger_0.cxx \ - SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_0.cxx \ - SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger_0.cxx \ - SALOMEGUI_TrihedronSizeDlg.cxx \ - SALOMEGUI_ExternalBrowserDlg.cxx \ - SALOMEGUI_LoadStudiesDlg.cxx \ - SALOMEGUI_TableDlg.cxx \ - SALOMEGUI_NameDlg.cxx \ - SALOMEGUI_SetValueDlg.cxx \ - SALOMEGUI_SetupCurveDlg.cxx \ - SALOMEGUI_CloseDlg.cxx \ - SALOMEGUI_ActivateComponentDlg.cxx -LIB_MOC = \ - SALOMEGUI.h \ - SALOMEGUI_Application.h \ - SALOMEGUI_Desktop.h \ - QAD_Application.h \ - QAD_Action.h \ - QAD_Desktop.h \ - QAD_DirListDlg.h \ - QAD_FileDlg.h \ - QAD_ListView.h \ - QAD_ObjectBrowser.h \ - QAD_Operation.h \ - QAD_PyEditor.h \ - QAD_ResourceMgr.h \ - QAD_Settings.h \ - QAD_SpinBoxDbl.h \ - QAD_Study.h \ - QAD_StudyFrame.h \ - QAD_ViewFrame.h \ - SALOMEGUI_OpenWith.h \ - SALOMEGUI_StudyPropertiesDlg.h \ - SALOMEGUI_TrihedronSizeDlg.h \ - SALOMEGUI_ExternalBrowserDlg.h \ - SALOME_Selection.h \ - SALOMEGUI_LoadStudiesDlg.h \ - SALOMEGUI_ViewChoiceDlg.h \ - SALOMEGUI_TableDlg.h \ - SALOMEGUI_NameDlg.h \ - SALOMEGUI_SetupCurveDlg.h \ - SALOMEGUI_CloseDlg.h \ - SALOMEGUI_ActivateComponentDlg.h -LIB_CLIENT_IDL = SALOMEDS.idl \ - SALOMEDS_Attributes.idl \ - SALOME_ModuleCatalog.idl \ - SALOME_Component.idl \ - SALOME_ContainerManager.idl \ - SALOME_Exception.idl - -CPPFLAGS+=$(QT_INCLUDES) $(PYTHON_INCLUDES) $(OCC_INCLUDES) -LDFLAGS+=$(QT_MT_LIBS) -lSalomeNS -lqsplitterP -lSalomeLifeCycleCORBA -lOpUtil -lSalomeObject -lEvent -lSalomePrs - -LIBS+= $(PYTHON_LIBS) - - -@CONCLUDE@ diff --git a/src/SALOMEGUI/PyInterp_PyQt.cxx b/src/SALOMEGUI/PyInterp_PyQt.cxx deleted file mode 100644 index 440c302f3..000000000 --- a/src/SALOMEGUI/PyInterp_PyQt.cxx +++ /dev/null @@ -1,66 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : PyInterp_PyQt.cxx -// Author : Christian CAREMOLI, Paul RASCLE, EDF -// Module : SALOME -// $Header$ - -#include "PyInterp_PyQt.h" -#include "utilities.h" - -using namespace std; - - -/*! - * constructor : the main SALOME Python interpreter is used for PyQt GUI. - * calls initialize method defined in base class, which calls virtual methods - * initstate & initcontext redefined here - */ -PyInterp_PyQt::PyInterp_PyQt(): PyInterp_base() -{ -} - -PyInterp_PyQt::~PyInterp_PyQt() -{ -} - -void PyInterp_PyQt::initState() -{ - SCRUTE(PyInterp_base::_gtstate); - _tstate=PyInterp_base::_gtstate; - PyThreadState_Swap(_tstate); - SCRUTE(_tstate); -} - -void PyInterp_PyQt::initContext() -{ - _g = PyDict_New(); // create interpreter dictionnary context - PyObject *bimod = PyImport_ImportModule("__builtin__"); - PyDict_SetItemString(_g, "__builtins__", bimod); - Py_DECREF(bimod); -} - -void PyInterp_PyQt::run(const char *command) -{ - MESSAGE("compile"); - PyLockWrapper aLock(_tstate); - PyObject *code = Py_CompileString((char *)command,"PyGUI",Py_file_input); - if(!code){ - // Une erreur s est produite en general SyntaxError - PyErr_Print(); - return; - } - PyObject *r = PyEval_EvalCode(code,_g,_g); - Py_DECREF(code); - if(!r){ - // Une erreur s est produite a l execution - PyErr_Print(); - return; - } - Py_DECREF(r); -} - diff --git a/src/SALOMEGUI/PyInterp_PyQt.h b/src/SALOMEGUI/PyInterp_PyQt.h deleted file mode 100644 index 74d743e27..000000000 --- a/src/SALOMEGUI/PyInterp_PyQt.h +++ /dev/null @@ -1,30 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : PyInterp_PyQt.h -// Author : Christian CAREMOLI, Paul RASCLE, EDF -// Module : SALOME -// $Header$ - -#ifndef _PYINTERP_PYQT_H_ -#define _PYINTERP_PYQT_H_ - -#include "PyInterp_base.h" - -class PyInterp_PyQt : public PyInterp_base -{ - public: - PyInterp_PyQt(); - ~PyInterp_PyQt(); - - void run(const char *command); - - protected: - virtual void initState(); - virtual void initContext(); -}; - -#endif diff --git a/src/SALOMEGUI/PyInterp_base.cxx b/src/SALOMEGUI/PyInterp_base.cxx deleted file mode 100644 index 153872048..000000000 --- a/src/SALOMEGUI/PyInterp_base.cxx +++ /dev/null @@ -1,336 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : PyInterp_base.cxx -// Author : Christian CAREMOLI, Paul RASCLE, EDF -// Module : SALOME -// $Header$ - - -#include -#include - -#include -#include - -#include - -#include "PyInterp_base.h" -#include "utilities.h" - - -using namespace std; - - -#ifdef _DEBUG_ -static int MYDEBUG = 0; -static int MYPYDEBUG = 0; -#else -static int MYDEBUG = 0; -static int MYPYDEBUG = 0; -#endif - - -static QMutex myMutex(true); - - -PyLockWrapper::PyLockWrapper(PyThreadState* theThreadState): - myThreadState(theThreadState), - mySaveThreadState(PyInterp_base::_gtstate) -{ - PyEval_AcquireLock(); - mySaveThreadState = PyThreadState_Swap(myThreadState); -} - - -PyLockWrapper::~PyLockWrapper(){ - PyThreadState_Swap(mySaveThreadState); - PyEval_ReleaseLock(); -} - - -ThreadLock::ThreadLock(QMutex* theMutex, const char* theComment): - myMutex(theMutex), - myComment(theComment) -{ - if(MYDEBUG && myComment != "") MESSAGE(" ThreadLock "<locked()); - myMutex->lock(); -} - - -ThreadLock::~ThreadLock(){ - if(MYDEBUG && myComment != "") MESSAGE("~ThreadLock "<unlock(); -} - - -bool IsPyLocked(){ - return myMutex.locked(); -} - - -ThreadLock GetPyThreadLock(const char* theComment){ - return ThreadLock(&myMutex,theComment); -} - - -class PyReleaseLock{ -public: - ~PyReleaseLock(){ - if(MYPYDEBUG) MESSAGE("~PyReleaseLock()"); - PyEval_ReleaseLock(); - } -}; - - -PyLockWrapper PyInterp_base::GetLockWrapper(){ - return _tstate; -} - - -// main python interpreter - -PyThreadState *PyInterp_base::_gtstate = 0; // force 0 before execution -int PyInterp_base::_argc = 1; -char* PyInterp_base::_argv[] = {""}; - -PyObject *PyInterp_base::builtinmodule = NULL; -PyObject *PyInterp_base::salome_shared_modules_module = NULL; - - -/*! - * basic constructor here : herited classes constructors must call initalize() method - * defined here. - */ -PyInterp_base::PyInterp_base(): _tstate(0), _vout(0), _verr(0), _g(0), _atFirst(true) -{ - if(MYPYDEBUG) MESSAGE("PyInterp_base::PyInterp_base() - this = "<NewOutput(128); - _verr = PycStringIO->NewOutput(128); - - // All the initRun outputs are redirected to the standard output (console) - initRun(); -} - - -string PyInterp_base::getbanner() -{ - string aBanner("Python "); - aBanner = aBanner + Py_GetVersion() + " on " + Py_GetPlatform() ; - aBanner = aBanner + "\ntype help to get general information on environment\n"; - return aBanner; -} - - -int PyInterp_base::initRun() -{ - PySys_SetObject("stderr",_verr); - PySys_SetObject("stdout",_vout); - - PyObjWrapper verr(PyObject_CallMethod(_verr,"reset","")); - PyObjWrapper vout(PyObject_CallMethod(_vout,"reset","")); - - PyObject *m = PyImport_GetModuleDict(); - - PySys_SetObject("stdout",PySys_GetObject("__stdout__")); - PySys_SetObject("stderr",PySys_GetObject("__stderr__")); - - if(MYPYDEBUG) MESSAGE("PyInterp_base::initRun() - this = "<cgetvalue(_verr)); - string aRet(PyString_AsString(v)); - return aRet; -} - - -string PyInterp_base::getvout(){ - PyLockWrapper aLock(_tstate); - PyObjWrapper v(PycStringIO->cgetvalue(_vout)); - string aRet(PyString_AsString(v)); - return aRet; -} - diff --git a/src/SALOMEGUI/PyInterp_base.h b/src/SALOMEGUI/PyInterp_base.h deleted file mode 100644 index 157d5c3f7..000000000 --- a/src/SALOMEGUI/PyInterp_base.h +++ /dev/null @@ -1,137 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : PyInterp_base.h -// Author : Christian CAREMOLI, Paul RASCLE, EDF -// Module : SALOME -// $Header$ - -#ifndef _PYINTERP_BASE_H_ -#define _PYINTERP_BASE_H_ - -#include -#include -#include - -#include - -class QSemaphore; -class QMutex; - -extern "C" PyObject * PyEval_EvalCode(PyObject *co, PyObject *g, PyObject *l); - -#define TOP_HISTORY_PY "--- top of history ---" -#define BEGIN_HISTORY_PY "--- begin of history ---" - - -class SemaphoreLock{ - QSemaphore* mySemaphore; - std::string myComment; - public: - SemaphoreLock(QSemaphore* theSemaphore, const char* theComment = ""); - ~SemaphoreLock(); -}; - - -class PyLockWrapper{ - PyThreadState* myThreadState; - PyThreadState* mySaveThreadState; - public: - PyLockWrapper(PyThreadState* theThreadState); - ~PyLockWrapper(); -}; - - -class ThreadLock{ - QMutex* myMutex; - std::string myComment; - public: - ThreadLock(QMutex* theMutex, const char* theComment = ""); - ~ThreadLock(); -}; - - -bool IsPyLocked(); - -ThreadLock GetPyThreadLock(const char* theComment = ""); - - -class PyInterp_base{ - public: - static PyThreadState *_gtstate; - static int _argc; - static char* _argv[]; - static PyObject *builtinmodule; - static PyObject *salome_shared_modules_module; - - PyInterp_base(); - ~PyInterp_base(); - - virtual void initialize(); - - int run(const char *command); - - PyLockWrapper GetLockWrapper(); - - std::string getbanner(); - std::string getverr(); - std::string getvout(); - - const char * getPrevious(); - const char * getNext(); - - protected: - PyThreadState * _tstate; - PyObject * _vout; - PyObject * _verr; - PyObject * _g; - std::list _history; - std::list::iterator _ith; - bool _atFirst; - - int simpleRun(const char* command); - int initRun(); - - virtual void initState() = 0; - virtual void initContext() = 0; -}; - - -class PyObjWrapper{ - PyObject* myObject; -public: - PyObjWrapper(PyObject* theObject): myObject(theObject) {} - PyObjWrapper(): myObject(0) {} - operator PyObject*(){ - return myObject; - } - PyObject* operator->(){ - return myObject; - } - PyObject* get(){ - return myObject; - } - bool operator!(){ - return !myObject; - } - bool operator==(PyObject* theObject){ - return myObject == theObject; - } - PyObject** operator&(){ - return &myObject; - } - PyObjWrapper& operator=(PyObjWrapper* theObjWrapper){ - Py_XDECREF(myObject); - myObject = theObjWrapper->myObject; - return *this; - } - virtual ~PyObjWrapper(){ - Py_XDECREF(myObject); - } -}; - - -#endif diff --git a/src/SALOMEGUI/QAD.h b/src/SALOMEGUI/QAD.h deleted file mode 100644 index b5d542e1e..000000000 --- a/src/SALOMEGUI/QAD.h +++ /dev/null @@ -1,77 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD.h -// Module : SALOME - -/*********************************************************** -** File: QAD.h -** Descr: General definitions for QAD -** Created: UI team, 20.09.00 -************************************************************/ -#ifndef QAD_H -#define QAD_H - -#include - -#if defined QAD_DLL -#if defined WNT -#define QAD_EXPORT _declspec( dllexport ) -#else -#define QAD_EXPORT -#endif -#else -#if defined WNT -#define QAD_EXPORT _declspec( dllimport ) -#else -#define QAD_EXPORT -#endif -#endif - -#if defined SOLARIS -#define bool int -#define false 0 -#define true 1 -#endif - -#if defined WNT -#pragma warning ( disable: 4251 ) -#endif - -#if defined (_DEBUG) -#define QAD_ASSERT(x) assert(x) -#define QAD_ASSERT_DEBUG_ONLY(x) assert(x) - -#else /* _DEBUG */ -#define QAD_ASSERT(x) x -#define QAD_ASSERT_DEBUG_ONLY(x) -#endif - -/* Message box button's IDs */ -#define QAD_OK 1 -#define QAD_CANCEL 2 -#define QAD_YES 3 -#define QAD_NO 4 -#define QAD_HELP 5 - -#endif diff --git a/src/SALOMEGUI/QAD_Action.h b/src/SALOMEGUI/QAD_Action.h deleted file mode 100644 index 5dcea8c45..000000000 --- a/src/SALOMEGUI/QAD_Action.h +++ /dev/null @@ -1,77 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_Action.h -// Author : Vadim SANDLER -// Module : SALOME -// $Header$ - -#ifndef QAD_ACTION_H -#define QAD_ACTION_H - -#include "qactionP.h" -#include - -class ActionMap { - public: - ActionMap() {} - ~ActionMap() - { - QMapIterator it; - for ( it = myMap.begin(); it != myMap.end(); it++ ) delete (QActionP*)it.data(); - myMap.clear(); - } - bool isEmpty() { return myMap.isEmpty(); } - void insert( const int id, QActionP* action ) { myMap[id] = action; } - QActionP* at( const int id ) { return myMap[id]; } - void clear() { myMap.clear(); } - QActionP*& operator[] (const int id) { return myMap[id]; } - bool hasAction( const int id ) { return myMap.contains(id); } - - private: - QMap myMap; - -}; - -class ToggleAction : public QActionP { - Q_OBJECT - public: - ToggleAction( const QString& text, const QString& menuText, - QKeySequence accel, QObject* parent, - const char* name = 0, bool toggle = FALSE) - : QActionP( text, menuText, accel, parent, name, toggle ) - { - connect( this, SIGNAL(toggled(bool)), this, SLOT(onToggled(bool))); - } - private slots: - void onToggled( bool on) - { - on ? emit( toggledOn() ) : emit( toggledOff() ); - } - - signals: - void toggledOn(); - void toggledOff(); -}; - -#endif diff --git a/src/SALOMEGUI/QAD_Application.cxx b/src/SALOMEGUI/QAD_Application.cxx deleted file mode 100644 index c58e5f57f..000000000 --- a/src/SALOMEGUI/QAD_Application.cxx +++ /dev/null @@ -1,1309 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_Application.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -/*! - \class QAD_Application QAD_Application.h - \brief Study manager for QAD-based application. -*/ - -#include "QAD.h" -#include "QAD_Tools.h" -#include "QAD_Desktop.h" -#include "QAD_Application.h" -#include "QAD_MessageBox.h" -#include "QAD_Config.h" -#include "SALOMEGUI_AboutDlg.h" -#include "SALOME_Selection.h" - -#include -#include CORBA_CLIENT_HEADER(SALOME_Exception) - -// QT Includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// Open CASCADE Includes -#include -#include -#include -using namespace std; - -static bool checkPermission(QString fileName) { - if ( QFile::exists( fileName ) ) { - // if file exists - check it for writeability - if ( !QFileInfo( fileName ).isWritable() ) { - return false; - } - } - else { - // if file doesn't exist - try to create it - QFile qf( fileName ); - if ( !qf.open( IO_WriteOnly ) ) { - return false; - } - else { - qf.close(); - qf.remove(); - } - } - return true; -} - -QAD_Desktop* QAD_Application::desktop = 0; - -/*! - Registers a new application object and - adds it to the desktop [ static ] -*/ -bool QAD_Application::addToDesktop( QAD_Application* app, SALOME_NamingService* name_service ) -{ - /* create CAF application */ - if ( !app->initApp(name_service) ) - return false; - - /* create the only desktop */ - if ( !app->getDesktop() ) - { - app->createDesktop(name_service); - emit app->desktopCreated(); - } - - /* add application to the desktop */ - desktop->addApplication( app ); - return true; -} - -/*! - Runs the application [ static ] -*/ -void QAD_Application::run() -{ - /* at least one application must be on desktop */ - QAD_ASSERT_DEBUG_ONLY ( desktop ); - desktop->showDesktop(); -} - - -/*! - Returns reference to main desktop [ static ] -*/ -QAD_Desktop* QAD_Application::getDesktop() -{ - return desktop; -} - -/*! - Returns standard Palette [ static ] -*/ -QPalette QAD_Application::getPalette(bool alternative) -{ -/* $$$ ---> commented 20.09.2002 - application uses global palette but little changed if is true - QPalette pal; - QColorGroup cg; - cg.setColor( QColorGroup::Foreground, Qt::black ); - cg.setColor( QColorGroup::Button, QColor( 192, 192, 192) ); - cg.setColor( QColorGroup::Light, Qt::white ); - cg.setColor( QColorGroup::Midlight, QColor( 223, 223, 223) ); - cg.setColor( QColorGroup::Dark, QColor( 96, 96, 96) ); - cg.setColor( QColorGroup::Mid, QColor( 128, 128, 128) ); - cg.setColor( QColorGroup::Text, Qt::black ); - cg.setColor( QColorGroup::BrightText, Qt::white ); - cg.setColor( QColorGroup::ButtonText, Qt::black ); - cg.setColor( QColorGroup::Base, QColor( 255,255,220 ) ); - cg.setColor( QColorGroup::Background, QColor( 192, 192, 192) ); - cg.setColor( QColorGroup::Shadow, Qt::black ); - cg.setColor( QColorGroup::Highlight, QColor( 0, 0, 128) ); - cg.setColor( QColorGroup::HighlightedText, Qt::white ); - pal.setActive( cg ); - cg.setColor( QColorGroup::Foreground, Qt::black ); - cg.setColor( QColorGroup::Button, QColor( 192, 192, 192) ); - cg.setColor( QColorGroup::Light, Qt::white ); - cg.setColor( QColorGroup::Midlight, QColor( 220, 220, 220) ); - cg.setColor( QColorGroup::Dark, QColor( 96, 96, 96) ); - cg.setColor( QColorGroup::Mid, QColor( 128, 128, 128) ); - cg.setColor( QColorGroup::Text, Qt::black ); - cg.setColor( QColorGroup::BrightText, Qt::white ); - cg.setColor( QColorGroup::ButtonText, Qt::black ); - cg.setColor( QColorGroup::Base, QColor( 255,255,220 ) ); - cg.setColor( QColorGroup::Background, QColor( 192, 192, 192) ); - cg.setColor( QColorGroup::Shadow, Qt::black ); - cg.setColor( QColorGroup::Highlight, QColor( 0, 0, 128) ); - cg.setColor( QColorGroup::HighlightedText, Qt::white ); - pal.setInactive( cg ); - cg.setColor( QColorGroup::Foreground, QColor( 128, 128, 128) ); - cg.setColor( QColorGroup::Button, QColor( 192, 192, 192) ); - cg.setColor( QColorGroup::Light, Qt::white ); - cg.setColor( QColorGroup::Midlight, QColor( 220, 220, 220) ); - cg.setColor( QColorGroup::Dark, QColor( 96, 96, 96) ); - cg.setColor( QColorGroup::Mid, QColor( 128, 128, 128) ); - cg.setColor( QColorGroup::Text, Qt::black ); - cg.setColor( QColorGroup::BrightText, Qt::white ); - cg.setColor( QColorGroup::ButtonText, QColor( 128, 128, 128) ); - cg.setColor( QColorGroup::Base, QColor( 255,255,220 ) ); - cg.setColor( QColorGroup::Background, QColor( 192, 192, 192) ); - cg.setColor( QColorGroup::Shadow, Qt::black ); - cg.setColor( QColorGroup::Highlight, QColor( 0, 0, 128) ); - cg.setColor( QColorGroup::HighlightedText, Qt::white ); - pal.setDisabled( cg ); - $$$ <--------------------------------------------------------------------- */ - QPalette pal = QApplication::palette(); - // $$$ --> this prevents qt bug - bag child window's icon drawing (not transparent) - // when it is maximized - pal.setColor(QPalette::Active, QColorGroup::Background, pal.active().button()); - pal.setColor(QPalette::Inactive, QColorGroup::Background, pal.inactive().button()); - pal.setColor(QPalette::Disabled, QColorGroup::Background, pal.disabled().button()); - // $$$ <--- - if (alternative) { - // alternative palette is used for Object Browser, PyEditor, Message and Help windows - QColorGroup cg = pal.active(); - cg.setColor( QColorGroup::Highlight, QColor( 0, 0, 128) ); - cg.setColor( QColorGroup::HighlightedText, Qt::white ); - cg.setColor( QColorGroup::Base, QColor( 255,255,220 ) ); - cg.setColor( QColorGroup::Text, Qt::black ); - pal.setActive ( cg ); - cg = pal.inactive(); - cg.setColor( QColorGroup::Highlight, QColor( 0, 0, 128) ); - cg.setColor( QColorGroup::HighlightedText, Qt::white ); - cg.setColor( QColorGroup::Base, QColor( 255,255,220 ) ); - cg.setColor( QColorGroup::Text, Qt::black ); - pal.setInactive( cg ); - cg = pal.disabled(); - cg.setColor( QColorGroup::Highlight, QColor( 0, 0, 128) ); - cg.setColor( QColorGroup::HighlightedText, Qt::white ); - cg.setColor( QColorGroup::Base, QColor( 255,255,220 ) ); - cg.setColor( QColorGroup::Text, Qt::black ); - pal.setDisabled( cg ); - } - return pal; -} - -/*! - Constructor -*/ -QAD_Application::QAD_Application( const QString& format, const QString& description, - const QString& extension ) : -myActiveStudy( 0 ), -myStudyFormat( format ), -myStudyExtension( extension ), -myStudyDescription( description ) -{ - /* actions are stored in vectors only */ - - /* studies are managed by me */ - myStudies.setAutoDelete( true ); - - /* load resources for all QAD */ - QAD_ResourceMgr* resMgr = QAD_Desktop::getResourceManager(); - if ( !resMgr ) resMgr = QAD_Desktop::createResourceManager(); - QString message; - resMgr->loadResources( "QAD", message ); - resMgr->loadResources( "CLIENT", message ); - - /* set default icon */ - myIcon = resMgr->loadPixmap( "CLIENT", tr("ICON_APP_DEFAULTICON") ); - myName = tr("APP_DEFAULTTITLE"); - - /* We need to know that desktop is created in order - to have some additional internal initialization */ - QAD_ASSERT( connect( this, SIGNAL(desktopCreated()), this, - SLOT(onDesktopCreated()) )); -} - -/*! - Destructor -*/ -QAD_Application::~QAD_Application () -{ - myEditActions.clear(); - myViewActions.clear(); - myHelpActions.clear(); - QMap::Iterator it; - for ( it = myToolBars.begin(); it != myToolBars.end(); it++ ) { - delete it.data(); - } - myToolBars.clear(); -} - -/*! - Creates the main desktop( called once ) -*/ -bool QAD_Application::createDesktop( SALOME_NamingService* name_service ) -{ - QAD_ASSERT_DEBUG_ONLY( !desktop ); - desktop = new QAD_Desktop ( name_service ); - return ( desktop != NULL ); -} - -/*! - Creates the actions provided by this application - ( internal ) -*/ -void QAD_Application::createActions() -{ - /* Basic application provides only Undo/Redo - functionalities which is disabled by default. - All others must be added by subclasses. - */ - QAD_ResourceMgr* rmgr = QAD_Desktop::getResourceManager(); - // Undo - if ( !myEditActions.at( EditUndoId ) ) - { - QActionP* editUndo = new QActionP( tr("TOT_APP_EDIT_UNDO"), - rmgr->loadPixmap( "QAD", - tr("ICON_APP_EDIT_UNDO") ), - tr("MEN_APP_EDIT_UNDO"), - CTRL+Key_Z, desktop ); - editUndo->setStatusTip ( tr("PRP_APP_EDIT_UNDO") ); - QAD_ASSERT ( connect( editUndo, SIGNAL( activated() ), this, SLOT( onUndo() ))); - myEditActions.insert( EditUndoId, editUndo ); - } - // Redo - if ( !myEditActions.at( EditRedoId ) ) - { - QActionP* editRedo = new QActionP ( tr("TOT_APP_EDIT_REDO"), - rmgr->loadPixmap( "QAD", tr("ICON_APP_EDIT_REDO") ), - tr("MEN_APP_EDIT_REDO"), CTRL+Key_Y, desktop ); - editRedo->setStatusTip ( tr("PRP_APP_EDIT_REDO") ); - QAD_ASSERT ( connect( editRedo, SIGNAL( activated() ), this, SLOT( onRedo() ))); - myEditActions.insert( EditRedoId, editRedo ); - } - // Copy - if ( !myEditActions.at( EditCopyId ) ) - { - QActionP* editCopy = new QActionP ( tr("TOT_APP_EDIT_COPY"), - rmgr->loadPixmap( "QAD", - tr("ICON_APP_EDIT_COPY") ), - tr("MEN_APP_EDIT_COPY"), - CTRL+Key_C, desktop ); - editCopy->setStatusTip ( tr("PRP_APP_EDIT_COPY") ); - QAD_ASSERT ( connect( editCopy, SIGNAL( activated() ), this, SLOT( onCopy() ))); - myEditActions.insert( EditCopyId, editCopy ); - } - // Paste - if ( !myEditActions.at( EditPasteId ) ) - { - QActionP* editPaste = new QActionP ( tr("TOT_APP_EDIT_PASTE"), - rmgr->loadPixmap( "QAD", - tr("ICON_APP_EDIT_PASTE") ), - tr("MEN_APP_EDIT_PASTE"), - CTRL+Key_V, desktop ); - editPaste->setStatusTip ( tr("PRP_APP_EDIT_PASTE") ); - QAD_ASSERT ( connect( editPaste, SIGNAL( activated() ), this, SLOT( onPaste() ))); - myEditActions.insert( EditPasteId, editPaste ); - } - // Update action state - updateActions(); -} - -/*! - Enables/disables the actions according to the - application state -*/ -void QAD_Application::updateActions() -{ - QAD_ASSERT_DEBUG_ONLY( !myEditActions.isEmpty() ); - if ( myActiveStudy ) { - myEditActions.at( EditUndoId )->setEnabled( myActiveStudy->canUndo() ); - myEditActions.at( EditRedoId )->setEnabled( myActiveStudy->canRedo() ); - myEditActions.at( EditCopyId )->setEnabled( canCopy() ); - myEditActions.at( EditPasteId )->setEnabled( canPaste() ); - } - else { - myEditActions.at( EditUndoId )->setEnabled( false ); - myEditActions.at( EditRedoId )->setEnabled( false ); - myEditActions.at( EditCopyId )->setEnabled( false ); - myEditActions.at( EditPasteId )->setEnabled( false ); - } -} - -/*! - Returns the aplication name -*/ -const QString& QAD_Application::getApplicationName() const -{ - return myName; -} - -/*! - Returns the application icon -*/ -const QPixmap& QAD_Application::getApplicationIcon() const -{ - return myIcon; -} - -/*! - Returns the study description -*/ -const QString& QAD_Application::getStudyDescription() const -{ - return myStudyDescription; -} - -/*! - Returns the CAF study format -*/ -const QString& QAD_Application::getStudyFormat() const -{ - return myStudyFormat; -} - -/*! - Returns the extension of supported type of files -*/ -const QString& QAD_Application::getStudyExtension() const -{ - return myStudyExtension; -} - -/*! - Returns 'true' if study is opened -*/ -bool QAD_Application::isStudyOpened( const QString& studyName ) -{ - QString Name = QAD_Tools::getFileNameFromPath( studyName, true ); - return (( getStudyByName( studyName ) != NULL ) || (getStudyByName( Name ) != NULL )); -} - -/*! - Returns the study object by its name -*/ -QAD_Study* QAD_Application::getStudyByName( const QString& studyname ) -{ - for ( QAD_Study* study = myStudies.first(); study; study = myStudies.next() ) - { - if ( (studyname.compare( study->getPath() ) == 0 ) || - (studyname.compare( study->getTitle() ) == 0 )) - return study; - } - return NULL; -} - -/*! - Returns vector of all opened studies -*/ -QList& QAD_Application::getStudies() -{ - return myStudies; -} - -/*! - Adds the study to the list of opened studies - and set listeners for the study signals. -*/ -void QAD_Application::addStudy( QAD_Study* study ) -{ - if ( !study ) return; - - QAD_ASSERT( connect(study,SIGNAL(docClosing(QAD_Study*)),desktop, - SLOT(onCloseStudy(QAD_Study*))) ); - myStudies.append( study ); -} - -/*! - Removes the study from the list of opened studies -*/ -void QAD_Application::removeStudy( QAD_Study* study ) -{ - if ( study ) - { - /* close and destroy */ - if ( study == myActiveStudy ) - myActiveStudy = 0; - myStudies.removeRef( study ); - } -} - -/*! - Activates 'About' dialog -*/ -void QAD_Application::helpAbout() -{ - /* just calls QAD_Desktop::helpAbout() but can have own implementation */ - getDesktop()->helpAbout(); -} - -/*! - Activates search in help -*/ -void QAD_Application::helpSearch() -{ - /* just calls QAD_Desktop::helpSearch() but can have own implementation */ -// getDesktop()->helpSearch(); -} - -/*! - Activates help contents -*/ -void QAD_Application::helpContents() -{ - /* just calls QAD_Desktop::helpContents() but can have own implementation */ -// getDesktop()->helpContents(); -} - -/*! - Customizes menu "File" for the active application -*/ -void QAD_Application::updateFilePopup( QPopupMenu* menu, bool add, int index ) -{ - if ( !menu ) return; - -#ifdef DEBUG - /* ensure that 'add' command is followed by 'remove' */ - static bool isAdded = false; - QAD_ASSERT_DEBUG_ONLY ( (add && !isAdded) || (!add && isAdded) ); - isAdded = add; -#endif - onUpdateFileActions( menu, add, index ); -} - -/*! - Customizes menu "Edit" for the active application -*/ -void QAD_Application::updateEditPopup( QPopupMenu* menu, bool add, int index ) -{ - if ( !menu ) return; - -#ifdef DEBUG - /* ensure that 'add' command is followed by 'remove' */ - static bool isAdded = false; - QAD_ASSERT_DEBUG_ONLY ( (add && !isAdded) || (!add && isAdded) ); - isAdded = add; -#endif - onUpdateEditActions( menu, add, index ); -} - -/*! - Customizes menu "View" for the active application -*/ -void QAD_Application::updateViewPopup( QPopupMenu* menu, bool add, int index ) -{ - if ( !menu ) return; - -#ifdef DEBUG - /* ensure that 'add' command is followed by 'remove' */ - static bool isAdded = false; - QAD_ASSERT_DEBUG_ONLY ( (add && !isAdded) || (!add && isAdded) ); - isAdded = add; -#endif - onUpdateViewActions( menu, add, index ); -} - -/*! - Customizes menu "Help" for the active application -*/ -void QAD_Application::updateHelpPopup( QPopupMenu* menu, bool add, int index ) -{ - if ( !menu ) return; -#ifdef DEBUG - /* ensure that 'add' command is followed by 'remove' */ - static bool isAdded = false; - QAD_ASSERT_DEBUG_ONLY ( (add && !isAdded) || (!add && isAdded) ); - isAdded = add; -#endif - onUpdateHelpActions ( menu, add, index ); -} - -/*! - Customizes the main menu bar to add some new popup, - 'Options' or 'Tools' for example. -*/ -void QAD_Application::updateMainMenu( QMenuBar* menubar, bool add, int index ) -{ - if ( !menubar ) return; -#ifdef DEBUG - /* ensure that 'add' command is followed by 'remove' */ - static bool isAdded = false; - QAD_ASSERT_DEBUG_ONLY ( (add && !isAdded) || (!add && isAdded) ); - isAdded = add; -#endif - onUpdateMainMenuItems ( menubar, add, index ); -} - -/*! - Adds specific application buttons for standard toolbar -*/ -void QAD_Application::updateToolBars( bool add ) -{ -#ifdef DEBUG - /* ensure that 'add' command is followed by 'remove' */ - static bool isAdded = false; - QAD_ASSERT_DEBUG_ONLY ( (add && !isAdded) || (!add && isAdded) ); - isAdded = add; -#endif - onUpdateToolBars ( add ); -} - -/*! - Customizes the status bar -*/ -void QAD_Application::updateStatusBar( QStatusBar* statusBar, bool add ) -{ -#ifdef DEBUG - /* ensure that 'add' command is followed by 'remove' */ - static bool isAdded = false; - QAD_ASSERT_DEBUG_ONLY ( (add && !isAdded) || (!add && isAdded) ); - isAdded = add; -#endif - onUpdateStatusBar( statusBar, add ); -} - -/*! - Creates toolbar to be managed by QAD_Application -*/ -QToolBar* QAD_Application::createToolBar( int id, - const QString& label, Dock dock, - bool dockTop, bool dockBottom, - bool dockLeft, bool dockRight, - bool dockMinimized, bool dockTornOff ) -{ - QToolBar* tb = 0; - if ( getDesktop() ) { - tb = new QToolBar( label, getDesktop(), 0 ); - tb->setCloseMode( QDockWindow::Undocked ); - getDesktop()->setDockEnabled( tb, DockTop, dockTop ); - getDesktop()->setDockEnabled( tb, DockBottom, dockBottom ); - getDesktop()->setDockEnabled( tb, DockLeft, dockLeft ); - getDesktop()->setDockEnabled( tb, DockRight, dockRight ); - getDesktop()->setDockEnabled( tb, DockMinimized, dockMinimized ); - getDesktop()->setDockEnabled( tb, DockTornOff, dockTornOff ); - getDesktop()->addDockWindow( tb, label, dock ); - getDesktop()->setAppropriate( tb, false ); - tb->hide(); - removeToolBar( id ); - myToolBars.insert( id, tb); - } - return tb; -} - -/*! - Removes toolbar -*/ -void QAD_Application::removeToolBar( int id ) -{ - QToolBar* tb = myToolBars[ id ]; - if ( tb ) { - myToolBars.remove( id ); - getDesktop()->removeDockWindow( tb ); - delete tb; - } -} - -/*! - Gets toolbar by id -*/ -QToolBar* QAD_Application::getToolBar( int id ) -{ - return myToolBars[ id ]; -} - -/*! - Gets all toolbars managed by QAD_Applica -*/ -QList QAD_Application::getToolBars() -{ - QList toolbars; - QMap::Iterator it; - for ( it = myToolBars.begin(); it != myToolBars.end(); it++ ) - toolbars.append( it.data() ); - return toolbars; -} - -/*! - Called by 'updateMainMenu' when application is activated/deactivated. - Redefine to insert/remove the actions provided by the application - to the main menu at 'index'. - Returns the number of added/removed items. -*/ -int QAD_Application::onUpdateMainMenuItems ( QMenuBar* mb, bool add, int index ) -{ - return 0; -} - -/*! - Called by 'updateFilePopup' when application is activated/deactivated. - Redefine to insert/remove the actions provided by the application to - 'File' menu of the desktop at 'index'. - Returns the number of added/removed items. -*/ -int QAD_Application::onUpdateFileActions ( QPopupMenu* popup, bool add, int index ) -{ - return 0; -} - -/*! - Called by 'updateEditPopup' when application is activated/deactivated. - Redefine to insert/remove the actions provided by the application to - 'Edit' menu of the desktop at 'index'. - Returns the number of added/removed items. -*/ -int QAD_Application::onUpdateEditActions ( QPopupMenu* popup, bool add, int index ) -{ - QAD_ASSERT_DEBUG_ONLY( !myEditActions.isEmpty() ); - QToolBar* tb = getDesktop()->getStdToolBar(); - QActionP* undo = myEditActions.at( EditUndoId ); - QActionP* redo = myEditActions.at( EditRedoId ); - QActionP* copy = myEditActions.at( EditCopyId ); - QActionP* paste = myEditActions.at( EditPasteId ); - if ( add ) - { - undo->addTo( popup ); - index++; - redo->addTo( popup ); - index++; - copy->addTo( popup ); - index++; - paste->addTo( popup ); - index++; - undo->addTo( tb ); - redo->addTo( tb ); - copy->addTo( tb ); - paste->addTo( tb ); - } - else - { - popup->removeItemAt(index); - popup->removeItemAt(index); - popup->removeItemAt(index); - popup->removeItemAt(index); - - undo->removeFrom( tb ); - redo->removeFrom( tb ); - copy->removeFrom( tb ); - paste->removeFrom( tb ); - } - return index; -} - -/*! - Called by 'updateViewPopup' when application is activated/deactivated. - Redefine to insert/remove the actions provided by the application to the - 'View' menu of the desktop at 'index'. - Returns the number of added/removed items. -*/ -int QAD_Application::onUpdateViewActions ( QPopupMenu* popup, bool add, int index ) -{ - return 0; -} - -/*! - Called by 'updateHelpPopup' when application is activated/deactivated. - Redefine to insert/remove the actions provided by the application - to 'Help' menu of the desktop at 'index'. - Returns the number of added/removed items. -*/ -int QAD_Application::onUpdateHelpActions ( QPopupMenu* popup, bool add, int index ) -{ - return 0; -} - -/*! - Called by 'updateStatusBar' when application is activated/deactivated. - Redefine to customize status bar. -*/ -void QAD_Application::onUpdateStatusBar( QStatusBar* sb, bool activate ) -{ -} - -/*! - Called by 'updateToolBars' when application is activated/deactivated. - Redefine to show your specific toolbars on the desktop. -*/ -void QAD_Application::onUpdateToolBars( bool activate ) -{ - QMap::Iterator it; - for ( it = myToolBars.begin(); it != myToolBars.end(); it++ ) { - activate ? it.data()->show() : it.data()->hide(); - getDesktop()->setAppropriate( it.data(), activate ); - } -} - -//=======================================================================// -// Study management // -//=======================================================================// -/*! - Returns the active study -*/ -QAD_Study* QAD_Application::getActiveStudy() const -{ - return myActiveStudy; -} - -//=======================================================================// -// Operation management // -//=======================================================================// -/*! - Runs a new operation of class appointed -*/ -void QAD_Application::startOperation( QAD_Operation* op ) -{ - if ( op ) op->start(); -} - - -//=======================================================================// -// Study management // -//=======================================================================// -/*! - Creates new study -*/ -QAD_Study* QAD_Application::newStudy() -{ - QAD_Study* newStudy = 0; - QAD_ASSERT_DEBUG_ONLY( !myStudyMgr->_is_nil() ); - QApplication::setOverrideCursor( Qt::waitCursor ); - try { - /* create QAD study*/ - QString StudyName = getDesktop()->getNewStudyName(); - - CORBA::Object_var obj = getDesktop()->getNameService()->Resolve("/myStudyManager"); - SALOMEDS::StudyManager_var myStudyMgr = SALOMEDS::StudyManager::_narrow(obj); - ASSERT(! CORBA::is_nil(myStudyMgr)); - SALOMEDS::ListOfOpenStudies_var List = myStudyMgr->GetOpenStudies(); - - bool exist = true; - - while ( exist ) { - exist = false; - for (unsigned int ind = 0; ind < List->length();ind++) { - QString NameS = QAD_Tools::getFileNameFromPath( QString( List[ind] ), true ); - if ( NameS.compare( StudyName ) == 0 ) { - StudyName = getDesktop()->getNewStudyName(); - exist = true; - break; - } - } - } - - if (getStudyByName ( StudyName ) != NULL ) - { - /* create StudyDS */ - SALOMEDS::Study_var aStudy = myStudyMgr->NewStudy(getDesktop()->getNewStudyName()); - newStudy = new QAD_Study( this, aStudy, getDesktop()->getNewStudyName()); - } - else - { - /* create StudyDS */ - SALOMEDS::Study_var aStudy = myStudyMgr->NewStudy(StudyName); - newStudy = new QAD_Study( this, aStudy, StudyName); - } - - newStudy->Init(); - - if ( newStudy->getResult() ) { - addStudy( newStudy ); - - /* activate */ - onStudyActivated( newStudy ); - - /* customization on create ( called only once )*/ - onStudyCreated( newStudy ); - - /* show */ - newStudy->show(); - - /* customization on show ( called only once ) */ - onStudyShown( newStudy ); - } - } - catch( Standard_Failure ) { - } - qApp->processEvents(); /* update desktop*/ - QApplication::restoreOverrideCursor(); - return newStudy; -} - -/*! - Loads the existed study in StudyManager -*/ -QAD_Study* QAD_Application::loadStudy( const QString& fileName ) -{ - /* connect CAF document to CAF application */ - QAD_ASSERT_DEBUG_ONLY( !myStudyMgr->_is_nil() ); - - SALOMEDS::Study_var aStudy = myStudyMgr->GetStudyByName( fileName ); - - // SALOMEDS::ListOfOpenStudies_var List = myStudyMgr->GetOpenStudies(); -// for (unsigned int ind = 0; ind < List->length();ind++) { -// MESSAGE ( " Study index : " << List[ind] ) -// aStudy = myStudyMgr->GetStudyByName(List[ind]); -// } - - QAD_Study* loadStudy = 0; - QApplication::setOverrideCursor( Qt::waitCursor ); - try { - /* create QAD study */ - loadStudy = new QAD_Study( this, aStudy, aStudy->Name() ); - - if ( loadStudy->getResult() ) { - addStudy( loadStudy ); - - /* activate */ - onStudyActivated( loadStudy ); - - /* customisation on load ( called only once ) */ - onStudyOpened( loadStudy ); - - /* show */ - loadStudy->show(); - - /* customization on show ( called only once ) */ - onStudyShown( loadStudy ); - } - - } - catch( Standard_Failure ) { - } - qApp->processEvents(); /* update desktop*/ - QApplication::restoreOverrideCursor(); - return loadStudy; -} - -/*! - Opens the existed study -*/ -QAD_Study* QAD_Application::openStudy( const QString& fileName ) -{ -#ifdef WNT - /* Qt uses UNIX-like slashes even on WIN platform */ - QString name = QAD_Tools::unix2win( fileName ); -#else - QString name = fileName; -#endif - SALOMEDS::Study_var aStudy; - - /* connect CAF document to CAF application */ - QAD_ASSERT_DEBUG_ONLY( !myStudyMgr->_is_nil() ); - - QAD_Study* openStudy = 0; - QApplication::setOverrideCursor( Qt::waitCursor ); - try { - /* open StudyDS */ - SALOMEDS::Study_var aStudy = myStudyMgr->Open((char*) name.latin1()); - - //MPV: name of the study is set in the study manager now - //NRI DEBUG : 11/02/2002 - //aStudy->Name( QAD_Tools::getFileNameFromPath(name,true) ); - - /* create QAD study */ - openStudy = new QAD_Study( this, aStudy, fileName ); - - if ( openStudy->getResult() ) { - addStudy( openStudy ); - - /* activate */ - onStudyActivated( openStudy ); - - /* customisation on open ( called only once ) */ - onStudyOpened( openStudy ); - - /* show */ - openStudy->show(); - - /* customization on show ( called only once ) */ - onStudyShown( openStudy ); - } - - } - // Handle SALOME::SALOME_Exception raised by SALOMEDS::StudyMgr - // Ensure that null study is returned in case of errors - catch(SALOME::SALOME_Exception&) { - if (openStudy) { - delete openStudy; - openStudy = 0; - } - } - catch( Standard_Failure ) { - } - qApp->processEvents(); /* update desktop*/ - QApplication::restoreOverrideCursor(); - return openStudy; -} - -/*! - Saves the study -*/ -bool QAD_Application::saveStudy( QAD_Study* study ) -{ - bool MultiSave = QAD_CONFIG->getSetting("Desktop:MultiFileSave") == "true"; - bool ASCIISave = QAD_CONFIG->getSetting("Desktop:ASCIISave") == "true"; - bool success = true; - QApplication::setOverrideCursor( Qt::waitCursor ); - try { - /* save StudyDS */ - if (ASCIISave) myStudyMgr->SaveASCII(study->getStudyDocument(), MultiSave); - else myStudyMgr->Save(study->getStudyDocument(), MultiSave); - study->updateCaptions(); - } - catch ( Standard_Failure ) { - success = false; - } - qApp->processEvents(); /* update desktop*/ - QApplication::restoreOverrideCursor(); - return success; -} - -/*! - Saves the study in a new file -*/ -bool QAD_Application::saveAsStudy( QAD_Study* study, const QString& fileName ) -{ - bool MultiSave = QAD_CONFIG->getSetting("Desktop:MultiFileSave") == "true"; - bool ASCIISave = QAD_CONFIG->getSetting("Desktop:ASCIISave") == "true"; - bool success = false; -#ifdef WNT - /* Qt uses UNIX-like slashes even on WIN platform */ - QString name = QAD_Tools::unix2win( fileName ); -#else - QString name = fileName; -#endif - if ( !name.isNull() ) - { - /* check permission */ - if (!checkPermission(name)) - return false; - QApplication::setOverrideCursor( Qt::waitCursor ); - TCollection_ExtendedString fileNameExt ( (char*) name.latin1() ); - try { - /* save as StudyDS */ - if (ASCIISave) myStudyMgr->SaveAsASCII(name.latin1(), study->getStudyDocument(), MultiSave); - else myStudyMgr->SaveAs(name.latin1(), study->getStudyDocument(), MultiSave); - - study->setTitle( fileName ); - study->updateCaptions(); - success = true; - } - catch (Standard_Failure) { - } - qApp->processEvents(); /* update desktop*/ - QApplication::restoreOverrideCursor(); - } - return success; -} - -/*! - Closes the study -*/ -bool QAD_Application::closeStudy( QAD_Study* study, bool permanently /*=false*/ ) -{ - bool success = true; - /* close CAF document */ - QApplication::setOverrideCursor( Qt::waitCursor ); - try - { - SALOMEDS::Study_var aStudyDocument = study->getStudyDocument(); - - /* customization */ - onStudyClosed( study ); - - /* remove */ - removeStudy( study ); - - /* activate */ - myActiveStudy = myStudies.last(); - - /* close application when the last study is closed */ - if ( myStudies.isEmpty() ) - emit appDeactivated ( this ); - - if ( permanently ) - { - /* close StudyDS */ - myStudyMgr->Close( aStudyDocument ); - } - } - catch ( Standard_Failure ) - { - success = false; - } - qApp->processEvents(); /* update desktop*/ - QApplication::restoreOverrideCursor(); - return success; -} - -/*! - Undo operation on the active study. - Calls undo( activeStudy ). -*/ -bool QAD_Application::onUndo() -{ - bool ok = undo( myActiveStudy ); - updateActions(); /* enable/disable undo/redo */ - return ok; -} - -/*! - Undo operation on the given study -*/ -bool QAD_Application::undo(QAD_Study* study) -{ - bool status = false; - if ( study ) - { - status = study->undo(); - } - return status; -} - -/*! - Redo operation on the active study. - Calls redo( myActiveStudy ). -*/ -bool QAD_Application::onRedo() -{ - bool ok = redo( myActiveStudy ); - updateActions(); /* enable/disable undo/redo */ - return ok; -} - -/*! - Redo operation on the given study. -*/ -bool QAD_Application::redo(QAD_Study* study) -{ - bool status = false; - if ( study ) - { - status = study->redo(); - } - return status; -} - -/*! - Copies object to the pseudo-clipboard -*/ -bool QAD_Application::onCopy() -{ - bool status = false; - if ( myActiveStudy) { - SALOME_Selection* Sel = SALOME_Selection::Selection( myActiveStudy->getSelection() ); - if ( Sel && Sel->IObjectCount() == 1 ) { - SALOMEDS::SObject_var SO = myActiveStudy->getStudyDocument()->FindObjectID( Sel->firstIObject()->getEntry() ); - if ( !SO->_is_nil() ) { - SALOMEDS::SComponent_var SComp = SALOMEDS::SComponent::_narrow( SO ); - if ( SComp->_is_nil() ) { // disable 'copy' operations for components - status = myStudyMgr->Copy( SO ); - updateActions(); - } - } - } - } - return status; -} - -/*! - Pastes object from the pseudo-clipboard -*/ -bool QAD_Application::onPaste() -{ - SALOMEDS::SObject_var aResult; - if ( myActiveStudy) { - SALOME_Selection* Sel = SALOME_Selection::Selection( myActiveStudy->getSelection() ); - if ( Sel && Sel->IObjectCount() == 1 ) { - SALOMEDS::SObject_var SO = myActiveStudy->getStudyDocument()->FindObjectID( Sel->firstIObject()->getEntry() ); - if ( !SO->_is_nil() ) { - try { - aResult = myStudyMgr->Paste( SO ); - } - catch ( SALOMEDS::StudyBuilder::LockProtection& ) { - myActiveStudy->updateObjBrowser( true ); - updateActions(); - QAD_MessageBox::warn1 ((QWidget*)QAD_Application::getDesktop(), - QObject::tr("WRN_WARNING"), - QObject::tr("WRN_STUDY_LOCKED"), - QObject::tr("BUT_OK")); - return false; - } - myActiveStudy->updateObjBrowser( true ); - updateActions(); - } - } - } - return aResult->_is_nil(); -} - -/*! - Checks if it is possible to make 'copy' operation -*/ -bool QAD_Application::canCopy() -{ - bool status = false; - if ( myActiveStudy) { - SALOME_Selection* Sel = SALOME_Selection::Selection( myActiveStudy->getSelection() ); - if ( Sel && Sel->IObjectCount() == 1 ) { - SALOMEDS::SObject_var SO = myActiveStudy->getStudyDocument()->FindObjectID( Sel->firstIObject()->getEntry() ); - if ( !SO->_is_nil() ) { - SALOMEDS::SComponent_var SComp = SALOMEDS::SComponent::_narrow( SO ); - if ( SComp->_is_nil() ) // disable copy for components - status = myStudyMgr->CanCopy( SO ); - } - } - } - return status; -} - -/*! - Checks if it is possible to make 'paste' operation -*/ -bool QAD_Application::canPaste() -{ - bool status = false; - if ( myActiveStudy) { - SALOME_Selection* Sel = SALOME_Selection::Selection( myActiveStudy->getSelection() ); - if ( Sel && Sel->IObjectCount() == 1 ) { - SALOMEDS::SObject_var SO = myActiveStudy->getStudyDocument()->FindObjectID( Sel->firstIObject()->getEntry() ); - if ( !SO->_is_nil() ) { - status = myStudyMgr->CanPaste( SO ); - } - } - } - return status; -} - -/*! - Called when the main desktop is created ( internal ) -*/ -void QAD_Application::onDesktopCreated() -{ - createActions(); -} - -/*! - Called after creating the given study -*/ -void QAD_Application::onStudyCreated(QAD_Study* study) -{ -} - -/*! - Called after opening the given study -*/ -void QAD_Application::onStudyOpened(QAD_Study* study) -{ -} - -/*! - Called after the first showing of the given study -*/ -void QAD_Application::onStudyShown( QAD_Study* study ) -{ -} - -/*! - Called when the given study is activated -*/ -void QAD_Application::onStudyActivated(QAD_Study* study) -{ - // MESSAGE ("QAD_Application::onStudyActivated init. "); - - /* deactivate old study, activate new study*/ - - /* NRI : init DEBUG IAP_001 */ - QAD_Study* oldActiveStudy = 0; - if ( myActiveStudy != NULL ) - oldActiveStudy = myActiveStudy; - /* NRI : end DEBUG IAP_001 */ - - - if ( myActiveStudy ) - onStudyDeactivated( myActiveStudy ); - - myActiveStudy = study; - - // VSR : call app activate before informing modules that active study is changed ===> - /* application activated */ - emit appActivated( this ); - - /* notification */ - onActiveStudyChanged( oldActiveStudy, myActiveStudy ); - // VSR : call app activate before informing modules that active study is changed <=== -} - -/*! - Called when the given study is deactivated -*/ -void QAD_Application::onStudyDeactivated(QAD_Study* study) -{ - // MESSAGE ("QAD_Application::onStudyDeactivated init. "); - QAD_ASSERT_DEBUG_ONLY ( myActiveStudy == study ); - if ( study ) - study->onStudyDeactivated(); - // MESSAGE ("QAD_Application::onStudyDeactivated done. "); -} - -/*! - Called before closing the given study -*/ -void QAD_Application::onStudyClosed(QAD_Study* study) -{ -} - -/*! - Called when the active study changed -*/ -void QAD_Application::onActiveStudyChanged( QAD_Study* oldActiveStudy, - QAD_Study* newActiveStudy ) -{ - getDesktop()->onActiveStudyChanged(); - - if ( oldActiveStudy ) - QAD_ASSERT( disconnect( oldActiveStudy, SIGNAL(docOperationTerminated( bool )), - this, SLOT( onOperationTerminated( bool ) ) )); - if ( newActiveStudy ) - QAD_ASSERT( connect( newActiveStudy, SIGNAL(docOperationTerminated( bool )), - this, SLOT( onOperationTerminated( bool ) ) )); - updateActions(); -} - -/*! - Called when the operation 'op' terminated [ protected slot ] -*/ -void QAD_Application::onOperationTerminated( bool successfully ) -{ - if ( successfully ) - updateActions(); /* enable/disable undo/redo */ -} - -/*! - Adds the specific items to context popup menu activated usually by MB3. - Redefine to fill with desired items. -*/ -void QAD_Application::onCreatePopup () -{ -} - diff --git a/src/SALOMEGUI/QAD_Application.h b/src/SALOMEGUI/QAD_Application.h deleted file mode 100644 index cd6985ae6..000000000 --- a/src/SALOMEGUI/QAD_Application.h +++ /dev/null @@ -1,200 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_Application.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef QAD_Application_H -#define QAD_Application_H - -#include "QAD.h" -#include "QAD_Popup.h" -#include "QAD_Study.h" -#include "QAD_Action.h" - -#include "SALOME_NamingService.hxx" - -// QT Includes -#include -#include -#include -#include -#include -#include - -class QAD_Operation; -class QAD_Desktop; -class QAD_EXPORT QAD_Application : public QObject, public QAD_PopupServer -{ - Q_OBJECT - enum { EditUndoId, EditRedoId, EditCopyId, EditPasteId }; - -friend class QAD_Desktop; - -public: - QAD_Application ( const QString& format, const QString& description, - const QString& filter); - ~QAD_Application(); - -public: - static void run(); - static bool addToDesktop( QAD_Application* app, SALOME_NamingService* name_service ); - static QAD_Desktop* getDesktop(); - - static QPalette getPalette(bool alternative = false); - - const QString& getApplicationName() const; - const QPixmap& getApplicationIcon() const; - - /* studies management */ - const QString& getStudyFormat() const; - const QString& getStudyExtension() const; - const QString& getStudyDescription() const; - - /* studies */ - bool isStudyOpened( const QString& studyname ); - QAD_Study* getStudyByName( const QString& studyname ); - QAD_Study* getActiveStudy() const; - QList& getStudies(); - - QAD_Study* newStudy(); - QAD_Study* loadStudy( const QString& fileName); - QAD_Study* openStudy( const QString& fileName); - bool saveStudy( QAD_Study* study ); - bool saveAsStudy( QAD_Study* study, const QString& fileName ); - bool closeStudy( QAD_Study* study, bool permanently = false ); - - /* customization */ - void updateFilePopup( QPopupMenu* menu, bool add, int index = -1 ); - void updateEditPopup( QPopupMenu* menu, bool add, int index = -1 ); - void updateViewPopup( QPopupMenu* menu, bool add, int index = -1 ); - void updateHelpPopup( QPopupMenu* menu, bool add, int index = -1 ); - void updateMainMenu( QMenuBar* menu, bool add, int index = -1 ); - void updateStatusBar( QStatusBar*, bool add ); - void updateToolBars( bool add ); - - /* toolbars */ - QToolBar* createToolBar( int id, - const QString& label, Dock dock = DockTop, - bool dockTop = true, bool dockBottom = true, - bool dockLeft = true, bool dockRight = true, - bool dockMinimized = true, bool dockTornOff = true ); - void removeToolBar( int id ); - QToolBar* getToolBar( int id ); - QList getToolBars(); - - virtual void onStudyActivated( QAD_Study* ); - virtual void onStudyDeactivated( QAD_Study* ); - virtual void startOperation( QAD_Operation* op ); - - virtual void helpAbout(); - virtual void helpSearch(); - virtual void helpContents(); - -public slots: - void updateActions(); - -signals: - void appActivated ( QAD_Application* ); - void appDeactivated ( QAD_Application* ); - void desktopCreated(); - -protected slots: - virtual bool onUndo(); - virtual bool onRedo(); - virtual bool onCopy(); - virtual bool onPaste(); - virtual void onOperationTerminated( bool ); - -private slots: - void onDesktopCreated(); - -protected: - /* menu */ - virtual int onUpdateMainMenuItems ( QMenuBar*, bool add, int index ); - virtual int onUpdateFileActions ( QPopupMenu*, bool add, int index ); - virtual int onUpdateEditActions ( QPopupMenu*, bool add, int index ); - virtual int onUpdateViewActions ( QPopupMenu*, bool add, int index ); - virtual int onUpdateHelpActions ( QPopupMenu*, bool add, int index ); - virtual void onUpdateStatusBar( QStatusBar*, bool activate ); - virtual void onUpdateToolBars( bool activate ); - - /* study */ - virtual void onStudyCreated( QAD_Study* ); - virtual void onStudyOpened( QAD_Study* ); - virtual void onStudyClosed( QAD_Study* ); - virtual void onStudyShown( QAD_Study* ); - virtual void onActiveStudyChanged( QAD_Study* oldActiveStudy, - QAD_Study* newActiveStudy ); - /* specific initialization ( CAF etc. ) */ - virtual bool initApp(SALOME_NamingService* name_service) = 0; - virtual bool createDesktop(SALOME_NamingService* name_service); - - /* undo/redo */ - virtual bool undo( QAD_Study* study ); - virtual bool redo( QAD_Study* study ); - /* copy/paste */ - bool canCopy(); - bool canPaste(); - - /* popup */ - void onCreatePopup(); - -protected: - - SALOMEDS::StudyManager_var myStudyMgr; - - QAD_Study* myActiveStudy; - QList myStudies; - QPixmap myIcon; - QString myName; - - QString myStudyFormat; - QString myStudyExtension; - QString myStudyDescription; - -#if defined SOLARIS -/* SUN C++ v4.1 compiler BUG ? - Error when using protected 'desktop' in subclasses. - */ -public: -#endif - static QAD_Desktop* desktop; /* the only QAD desktop */ - -private: - void createActions(); - - void addStudy( QAD_Study* study ); - void removeStudy( QAD_Study* study ); - -private : - ActionMap myEditActions; - ActionMap myViewActions; - ActionMap myHelpActions; - QMap myToolBars; -}; - -#endif - diff --git a/src/SALOMEGUI/QAD_Config.cxx b/src/SALOMEGUI/QAD_Config.cxx deleted file mode 100644 index 0616c2611..000000000 --- a/src/SALOMEGUI/QAD_Config.cxx +++ /dev/null @@ -1,233 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_Config.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -/*! - \class QAD_Config QAD_Config.h - \brief Settings file management for QAD-based application. -*/ - -#include "QAD_Config.h" -#include "QAD_ParserSettings.h" - -// QT Includes -#include -#include -#include -#include -using namespace std; - - -/*! - QAD_Config provides access to global settings. -*/ -QAD_Config* QAD_Config::theOneAndOnlyConfig=0; - - -/*! - Creates a new one on first call. -*/ -QAD_Config* QAD_Config::getConfig() -{ - if(theOneAndOnlyConfig==0) { - theOneAndOnlyConfig = new QAD_Config; - theOneAndOnlyConfig->ini(); - } - return theOneAndOnlyConfig; -} - - - -/*! - Constructor. -*/ -QAD_Config::QAD_Config() - : QAD_Settings('=', '"', '"') -{ -} - -/*! - Destructor. -*/ -QAD_Config::~QAD_Config() -{ -} - -/*! - Initializes the config object (only called once). -*/ -void QAD_Config::ini() -{ -} - - -/*! - Set default directory for config files. -*/ -void QAD_Config::setDefaultConfigDir() -{ -#ifdef DEF_WINDOWS - setConfigDir(QDir(prgDir.absPath())); -#else - QString vers = tr("INF_VERSION"); - int first_dot = vers.find('.'); - int blanc_before = vers.findRev(' ', first_dot) + 1; - int blanc_after = vers.find(' ', first_dot); - if (blanc_after == -1) blanc_after = vers.length(); - int vers_len = blanc_after - blanc_before; - vers.truncate(blanc_after); - QString vers_nb = vers.right(vers_len); - setConfigDir(QDir(QDir::home().absPath() + "/." + tr("MEN_APPNAME") + "_" + vers_nb)); -#endif -} - -/*! - Creates not existing config files. -*/ -bool QAD_Config::createConfigFile( bool overwrite ) -{ - bool ret = true; - - setDefaultConfigDir(); - - // Create config directory: - if(!configDir.exists()) { - if(!configDir.mkdir(configDir.absPath(), true)) { - // Can't create directory for config file! - return false; - } - } - - // Create "..conf": - QFile configFile(configDir.absPath() + "/" + tr("MEN_APPNAME") + ".conf"); - - if(!configFile.exists() || overwrite) { - if(configFile.open(IO_WriteOnly)) { // file opened successfully - QTextStream ts(&configFile); - QAD_Setting* setting; - - ts << - "# This file is automatically generated by " << tr("MEN_APPNAME") << ".\n" - "# Please edit only if " << tr("MEN_APPNAME") << " is not running.\n"; - - int sep; - QString section; - QString variable; - QStringList sectionList; // List of all sections - - // Collect section list: - for(setting=settingList.first(); setting!=0; setting=settingList.next()) { - sep = setting->getName().find( ':' ); - section = setting->getName().left( sep ); - - if( sectionList.find( section ) == sectionList.end() ) { - sectionList += section; - } - } - - sectionList.sort(); - - // Write the sections: - for( QStringList::Iterator it = sectionList.begin(); it!=sectionList.end(); ++it ) { - ts << "\n[" << (*it) << "]\n"; - for( setting=settingList.first(); setting!=0; setting=settingList.next() ) { - sep = setting->getName().find( ':' ); - section = setting->getName().left( sep ); - - if( section==(*it) ) { - variable = setting->getName().right( setting->getName().length()-sep-1 ); - ts << variable << "=\"" << setting->getValue() << "\"\n"; - } - } - } - - configFile.close(); - } - - else { - // Can't create file - ret=false; - } - } - - return ret; -} - -/*! - Reads the config file. -*/ -bool QAD_Config::readConfigFile() -{ - setDefaultConfigDir(); - - QString configPath; - configPath = configDir.absPath() + "/" + tr("MEN_APPNAME") + ".conf"; - - int i=0, j, l=0; // Index, length of matching string - QRegExp regSection("\\[[^]]*\\]"); // Reg exp for a section including brackets - QRegExp regName("[^=[]*"); // Reg exp for a setting name (lvalue) - QRegExp regValue("\"[^\"]*\""); // Reg exp for a setting value (rvalue) including quote marks - QString lSectionName; // Section name excluding brackets - QString setName; // Setting name - QString setValue; // Setting value - - // Get file contents without comments: - QString cont = QAD_ParserSettings::getContents(configPath, false); - - do { - // Read next section (name/contents): - i=regSection.match(cont, i, &l); - if(i==-1) break; - lSectionName = cont.mid(i+1, l-2); - i+=l; - - // Read next setting: - do { - j=regName.match(cont, i, &l); - if(j==-1) break; - setName = cont.mid(j, l); - if(setName.stripWhiteSpace().isEmpty()) break; - i=j+l; - - j=regValue.match(cont, i, &l); - if(j==-1) break; - setValue = cont.mid(j+1, l-2); - i=j+l; - - addSetting(lSectionName + ":" + setName.stripWhiteSpace(), setValue); - - } while(true); - - } while(true); - - // Add some values which were not saved in config file: - - return false; -} - - -// EOF diff --git a/src/SALOMEGUI/QAD_Config.h b/src/SALOMEGUI/QAD_Config.h deleted file mode 100644 index 24d863ac3..000000000 --- a/src/SALOMEGUI/QAD_Config.h +++ /dev/null @@ -1,77 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_Config.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef QAD_CONFIG_H -#define QAD_CONFIG_H - -// Used for access to the configuration file e.g.: QAD_CONFIG->getSetting("Language:Language") -#define QAD_CONFIG QAD_Config::getConfig() - -#include -#include - -#include "QAD_Settings.h" - -class QAD_Config : public QAD_Settings -{ - -protected: - QAD_Config(); - - void ini(); - -public: - ~QAD_Config(); - - static QAD_Config* getConfig(); - - /** Sets directory of the local configuration file. */ - void setConfigDir(QDir _configDir) { configDir=_configDir; } - /** Gets directory of the local configuration file. */ - QDir getConfigDir() const { return configDir; } - - /** Sets directory of KERNEL_ROOT. */ - void setPrgDir(QDir _prgDir) { prgDir=_prgDir; } - /** Gets directory of KERNEL_ROOT. */ - QDir getPrgDir() const { return prgDir; } - - void setDefaultConfigDir(); - bool createConfigFile( bool overwrite=false ); - bool readConfigFile(); - -private: - static QAD_Config* theOneAndOnlyConfig; - - QDir prgDir; - QDir configDir; -}; - - -#endif - -// EOF diff --git a/src/SALOMEGUI/QAD_Desktop.cxx b/src/SALOMEGUI/QAD_Desktop.cxx deleted file mode 100644 index 5fa319a28..000000000 --- a/src/SALOMEGUI/QAD_Desktop.cxx +++ /dev/null @@ -1,4252 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_Desktop.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -/*! - \class QAD_Desktop QAD_Desktop.h - \brief Main desktop of QAD-based application. -*/ -# include "Utils_ORB_INIT.hxx" -# include "Utils_SINGLETON.hxx" - -#define INCLUDE_MENUITEM_DEF -#define DEFAULT_BROWSER "mozilla" - - -#include "QAD.h" -#include "QAD_Help.h" -#include "QAD_Tools.h" -#include "QAD_Desktop.h" -#include "QAD_LeftFrame.h" -#include "QAD_RightFrame.h" -#include "QAD_PyEditor.h" -#include "QAD_Operation.h" -#include "QAD_XmlHandler.h" -#include "QAD_MessageBox.h" -#include "QAD_Application.h" -#include "QAD_Settings.h" -#include "QAD_Config.h" -#include "QAD_ObjectBrowser.h" -#include "QAD_Resource.h" -#include "QAD_FileDlg.h" -//NRI #include "QAD_HelpWindow.h" -#include "QAD_DirListDlg.h" -#include "QAD_WaitCursor.h" -#include "SALOMEGUI.h" -#include "SALOMEGUI_OpenWith.h" -#include "SALOMEGUI_StudyPropertiesDlg.h" -#include "SALOMEGUI_TrihedronSizeDlg.h" -#include "SALOMEGUI_ExternalBrowserDlg.h" -#include "SALOMEGUI_LoadStudiesDlg.h" -//#include "SALOME_Selection.h" -#include "SALOME_InteractiveObject.hxx" -#include "SALOME_ListIteratorOfListIO.hxx" -#include "SALOMEGUI_AboutDlg.h" -#include "SALOMEGUI_ViewChoiceDlg.h" -#include "SALOMEGUI_SetValueDlg.h" -#include "utilities.h" - -#include "SALOMEGUI_CloseDlg.h" -#include "SALOMEGUI_ActivateComponentDlg.h" -#include "SALOMEGUI_QtCatchCorbaException.hxx" - -#include "SALOME_Event.hxx" - -// QT Includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if QT_VERSION > 300 - #include - #include -#endif - -// Open CASCADE Includes -#include -#include -#include -#include -using namespace std; - -static const char* SEPARATOR = ":"; - -extern "C" -{ -# include -} - -enum { voPanLeft, - voPanRight, - voPanUp, - voPanDown, - voZoomIn, - voZoomOut, - voZoomFit, - voRotateLeft, - voRotateRight, - voRotateUp, - voRotateDown }; - -QAD_ResourceMgr* QAD_Desktop::resourceMgr = 0; -QPalette* QAD_Desktop::palette = 0; - -static QString createString( int theItemId, int thePosId ) -{ - QString aRetString = QString("item-id="); - QString aString; - QString aItemId = aString.setNum(theItemId); - QString aPosId = aString.setNum(thePosId); - aRetString = aRetString + '"'; aRetString = aRetString + aItemId; aRetString = aRetString + '"'; - aRetString = aRetString + " pos-id="; aRetString = aRetString + '"'; - aRetString = aRetString + aPosId; - aRetString = aRetString + '"'; aRetString = aRetString + ">"; - return aRetString; -} - -/*! - Creates the resource manager [ static ] -*/ -QAD_ResourceMgr* QAD_Desktop::createResourceManager() -{ - if ( !resourceMgr ) - resourceMgr = new QAD_ResourceMgr; - return resourceMgr; -} - -/*! - Returns the resource manager [ static ] -*/ -QAD_ResourceMgr* QAD_Desktop::getResourceManager() -{ - return resourceMgr; -} - - -/*! - Loads the palette from settings [ static ] -*/ -QPalette* QAD_Desktop::createPalette() -{ - if ( !palette ) - palette = new QPalette(); - - return palette; -} - -/*! - Returns the palette [ static ] -*/ -QPalette* QAD_Desktop::getPalette() -{ - return palette; -} - -///*! -// Gets window ratio width/heght [ static ] -//*/ -//static double = 1; -//static double getWindowRatio() -//{ -// return myWindowRatio; -//} -// -///*! -// Sets window ratio width/heght [ static ] -//*/ -//static void setWindowRatio(double aRatio) -//{ -// myWindowRatio = aRatio; -//} - -/*! - Constructor -*/ -QAD_Desktop::QAD_Desktop(SALOME_NamingService* name_service) : -QMainWindow(0, 0, WType_TopLevel | WDestructiveClose), -myStdToolBar(0), -myStatusBar(0), -myActiveApp(0), -myActiveStudy(0), -myCntUntitled(0), -//NRImyHelpWindow(0), -myDefaultTitle( tr("DESK_DEFAULTTITLE") ), -myQueryClose( true ), -myAboutToClose( false ) -{ - /* Force reading of user config file */ - QAD_CONFIG->readConfigFile(); - - /* menubar and status bar */ - myStatusBar = statusBar(); - myMainMenu = menuBar(); - myActiveComp = ""; - myNameService = name_service; - - /* default background icon */ - QPixmap backgroundicon ( QAD_Desktop::getResourceManager()->loadPixmap( "CLIENT", - tr("ICON_DESK_BACKGROUNDICON") )); -//myToolBarAction.setAutoDelete( true ); - - /* default icon and title */ - QPixmap icon ( QAD_Desktop::getResourceManager()->loadPixmap( "CLIENT", - tr("ICON_DESK_DEFAULTICON") )); - if ( !icon.isNull() ) { - myDefaultIcon = icon; - setIcon( myDefaultIcon ); - } - setCaption( myDefaultTitle ); - - /* set size as 1/2 of the screen and center it */ - QWidget* d = QApplication::desktop(); - resize( 2*d->width()/3, 2*d->height()/3 ); - QAD_Tools::centerWidget( this, d ); - - /* workspace will manage child frames */ - QHBox* border = new QHBox ( this ); - border->setFrameStyle ( QFrame::Panel | QFrame::Sunken ); - setCentralWidget( border ); - myWorkspace = new QWorkspaceP( border ); - - QPalette pal = QAD_Application::getPalette(); - setPalette(pal); - QColorGroup cgA = pal.active(); - QColorGroup cgI = pal.inactive(); - QColorGroup cgD = pal.disabled(); - cgA.setColor( QColorGroup::Background, QColor(192, 192, 192)); - cgI.setColor( QColorGroup::Background, QColor(192, 192, 192)); - cgD.setColor( QColorGroup::Background, QColor(192, 192, 192)); - pal.setActive ( cgA ); - pal.setInactive( cgI ); - pal.setDisabled( cgD ); - myWorkspace->setPalette( pal ); - if ( !backgroundicon.isNull() ) { - MESSAGE("!!!DESKTOP background icon found!!!"); - myWorkspace->setPaletteBackgroundPixmap(backgroundicon); - } - - /* define standard file commands */ - createActions(); - - /* define operator menus for xml */ - myOperatorMenus = new QAD_OperatorMenus(this); - myXmlHandler = new QAD_XmlHandler(); - - /* New catalogue */ - CORBA::Object_var objVarN = myNameService->Resolve("/Kernel/ModulCatalog"); - myCatalogue = SALOME_ModuleCatalog::ModuleCatalog::_narrow(objVarN); - - SALOME_ModuleCatalog::ListOfIAPP_Affich_var list_composants = - myCatalogue->GetComponentIconeList(); - - - QToolBar* tbComponent = new QToolBar( tr("MEN_DESK_COMPONENTTOOLBAR"), this ); - tbComponent->setCloseMode( QDockWindow::Undocked ); - addToolBar(tbComponent, tr("MEN_DESK_COMPONENTTOOLBAR"), Bottom, TRUE ); - setDockEnabled( tbComponent, DockLeft, false ); - setDockEnabled( tbComponent, DockRight, false ); - - myCombo = new QComboBox( FALSE, tbComponent, "comboBox" ); - myCombo->setFocusPolicy( NoFocus ); - - tbComponent->addSeparator(); - - // PG : add ResourceManager to get function findFile !! - QAD_ResourceMgr* resMgr = QAD_Desktop::createResourceManager(); - - for (unsigned int ind = 0; ind < list_composants->length();ind++) { - QString resDir; - - /* find component icon */ - QString iconfile = CORBA::string_dup(list_composants[ind].moduleicone) ; - QString modulename = CORBA::string_dup(list_composants[ind].modulename) ; - QString moduleusername = CORBA::string_dup(list_composants[ind].moduleusername) ; - QString moduleversion = CORBA::string_dup(list_composants[ind].moduleversion) ; - QString modulecomment = CORBA::string_dup(list_composants[ind].modulecomment) ; - - // MESSAGE ( " MODULE = " << modulename ) - // MESSAGE ( " MODULE icon = " << iconfile ) - // MESSAGE ( " MODULE username = " << moduleusername ) - - if ( mapComponentName.contains( moduleusername ) ) { - QMessageBox::warning( this, tr("WRN_WARNING"), QString( moduleusername + " is already associated with " + mapComponentName[moduleusername] + ".\nPlease, change the component username of " + modulename) , tr ("BUT_OK") ); - continue; - } - mapComponentName.insert( moduleusername, modulename ); - - resDir = resMgr->findFile(iconfile,modulename) ; - if (resDir) - { - MESSAGE ( "resDir" << resDir ) - //resDir = QAD_Tools::addSlash(resDir) ; - //QPixmap Icone(resDir+iconfile) ; - QPixmap Icone( QAD_Tools::addSlash( resDir ) + iconfile ); - QToolButton * toolb = - new QToolButton( QIconSet( Icone ), moduleusername, QString::null, this, - SLOT( onButtonActiveComponent () ),tbComponent ); - QString ttip = QString("") + moduleusername + QString(""); - if ( !moduleversion.isEmpty() ) ttip += QString("
Version: ") + moduleversion; - toolb->setToggleButton( true ); - QToolTip::add(toolb, ttip, this->toolTipGroup(), modulecomment); - myComponentButton.append(toolb); - } - else - { - QString errMsg = tr("INF_ICON_RESOURCES").arg(iconfile).arg(modulename) + - tr("INF_RESOURCES"); - //QMessageBox::warning( this, tr("WRN_WARNING"), errMsg, tr ("BUT_OK") ); - } - if ( ( resDir || moduleusername == "Salome" ) && !modulename.isEmpty() ) // VSR: Force "Salome" component to appear in the combo box - myCombo->insertItem( moduleusername ); - } - - myCombo->adjustSize(); - connect( myCombo, SIGNAL(activated(const QString&)), - this, SLOT( onComboActiveComponent(const QString&) ) ); - - /* new LifeCycleCORBA client, for Engines */ - myEnginesLifeCycle = new SALOME_LifeCycleCORBA(name_service); - - /* VSR 13/01/03 : installing global event filter for the application */ - qApp->installEventFilter( this ); - - /* init pseudo random numbers generator */ - QTime cTime = QTime::currentTime(); - int secs = cTime.second() + 1; - for ( int s = 0; s < secs; s++ ) random(); -} - -/*! - Destructor -*/ -QAD_Desktop::~QAD_Desktop () -{ - qApp->removeEventFilter( this ); - myFilePopup.clear(); - myEditPopup.clear(); - myViewPopup.clear(); - myObjBrowserPopup.clear(); - //VRV: T2.5 - add default viewer - myDefaultViewer.clear(); - //VRV: T2.5 - add default viewer - myViewerPopup.clear(); - //NRI : SAL2214 - myNewViewPopup.clear(); - //NRI : SAL2214 - myHelpContentsModulePopup.clear(); - myToolsPopup.clear(); - myPrefPopup.clear(); - myStdActions.clear(); - myHelpPopup.clear(); - myToolBarsPopup.clear(); - myToolBarAction.clear(); - myApps.clear(); - delete resourceMgr; -//NRI if (myHelpWindow) -// myHelpWindow->close(); - resourceMgr = 0; - QAD_Application::desktop = 0; -} - -const int IdCut = 1001; -const int IdCopy = 1002; -const int IdPaste = 1003; -const int IdSelectAll = 1004; -#ifndef QT_NO_ACCEL -#include -#define ACCEL_KEY(k) "\t" + QString(QKeySequence( Qt::CTRL | Qt::Key_ ## k )) -#else -#define ACCEL_KEY(k) "\t" + QString("Ctrl+" #k) -#endif -#include -/*! - Global event filter for qapplication (VSR 13/01/03) -*/ -bool QAD_Desktop::eventFilter( QObject* o, QEvent* e ) -{ - if (e->type() == QEvent::Close && o == this ) - myAboutToClose = true; - else if (e->type() == 2000 ) { - QMessageBox::information (this, tr ( "Help Information" ), tr ( "Can't run choosen browser.\nRunning default browser (Mozilla). ")); - return TRUE; - } - else if (e->type() == 2001 ) { - QMessageBox::critical(this, tr ( "Help Error" ), tr ( "Can't run the default browser.") ); - return TRUE; - } - else if ( e->type() == QEvent::ContextMenu ) { - QContextMenuEvent* ce = (QContextMenuEvent*)e; - if ( o->inherits("QRenameEdit") ) { - return TRUE; - } - else if ( o->inherits("QLineEdit") ) { - QLineEdit* le = (QLineEdit*)o; - if ( le->parentWidget() ) { - if ( ( le->parentWidget()->inherits("QSpinBox") || - le->parentWidget()->inherits("QSpinWidget") || - le->parentWidget()->inherits("QAD_SpinBoxDbl") ) && - le->isEnabled() ) { - QPopupMenu* popup = new QPopupMenu( 0, "qt_edit_menu" ); - popup->insertItem( tr( "EDIT_CUT_CMD" ) + ACCEL_KEY( X ), IdCut ); - popup->insertItem( tr( "EDIT_COPY_CMD" ) + ACCEL_KEY( C ), IdCopy ); - popup->insertItem( tr( "EDIT_PASTE_CMD" ) + ACCEL_KEY( V ), IdPaste ); - popup->insertSeparator(); -#if defined(Q_WS_X11) - popup->insertItem( tr( "EDIT_SELECTALL_CMD" ), IdSelectAll ); -#else - popup->insertItem( tr( "EDIT_SELECTALL_CMD" ) + ACCEL_KEY( A ), IdSelectAll ); -#endif - bool enableCut = !le->isReadOnly() && le->hasSelectedText(); - popup->setItemEnabled( IdCut, enableCut ); - popup->setItemEnabled( IdCopy, le->hasSelectedText() ); - bool enablePaste = !le->isReadOnly() && !QApplication::clipboard()->text().isEmpty(); - popup->setItemEnabled( IdPaste, enablePaste ); - bool allSelected = (le->selectedText() == le->text() ); - popup->setItemEnabled( IdSelectAll, (bool)(le->text().length()) && !allSelected ); - - QPoint pos = ce->reason() == QContextMenuEvent::Mouse ? ce->globalPos() : - le->mapToGlobal( QPoint(ce->pos().x(), 0) ) + QPoint( le->width() / 2, le->height() / 2 ); - if ( popup ) { - int r = popup->exec( pos ); - switch ( r ) { - case IdCut: - le->cut(); - break; - case IdCopy: - le->copy(); - break; - case IdPaste: - le->paste(); - break; - case IdSelectAll: - le->selectAll(); - break; - } - delete popup; - } - return TRUE; - } - } - } - } - else if ( e->type() == SALOME_EVENT ) { - SALOME_Event* aSE = (SALOME_Event*)((QCustomEvent*)e)->data(); - processEvent(aSE); - ((QCustomEvent*)e)->setData( 0 ); - return TRUE; - } - return QMainWindow::eventFilter( o, e ); -} - -/*! - Dispatches to the target component GUI -*/ -void QAD_Desktop::processEvent( SALOME_Event* theEvent ) -{ - if(theEvent){ - theEvent->Execute(); - // Signal the calling thread that the event has been processed - theEvent->processed(); - } -} - -/*! - Creates and initializes the standard file operations - such as 'New/Open/Save/SaveAs/Close' and 'Help'. -*/ -void QAD_Desktop::createActions() -{ - - /* Used for string compare */ - const QString& aTrueQString = "true" ; - - /* create 'standard' toolbar */ - if ( !myStdToolBar ) { - myStdToolBar = new QToolBar ( tr("MEN_DESK_VIEW_STDTOOLBAR"), this ); - myStdToolBar->setCloseMode( QDockWindow::Undocked ); - } - - if ( !myMainMenu->count() ) { - /* Create main menu bar */ - myMainMenu->insertItem ( tr("MEN_DESK_FILE"), &myFilePopup, 1 ); /* add popup FILE */ - myMainMenu->insertItem ( tr("MEN_DESK_VIEW"), &myViewPopup, 2 ); /* add popup VIEW */ - myMainMenu->insertItem ( tr("MEN_DESK_TOOLS"), &myToolsPopup, 5 ); /* add popup TOOLS */ - myMainMenu->insertItem ( tr("MEN_DESK_PREF"), &myPrefPopup, 4 ); /* add popup PREF */ - myMainMenu->insertItem ( tr("MEN_DESK_WINDOW"), &myWindowPopup, 6 ); /* add popup WINDOW */ - myMainMenu->insertItem ( tr("MEN_DESK_HELP"), &myHelpPopup, 7 ); /* add popup HELP */ - - /* Applications will insert their items after 'File' 'Edit' and 'View' - ( 'Edit' will be inserted later ) - */ - myMainMenuPos = 3; - } - - /* insert logo picture to menu bar */ - QHBox* aLogoFrm = new QHBox(this); - aLogoFrm->setFrameStyle( QFrame::Plain | QFrame::NoFrame ); - QPixmap aLogoPixmap ( QAD_Desktop::getResourceManager()->loadPixmap( "CLIENT", - tr("ICON_DESK_LOGO") )); - QLabel* aLogoLab = new QLabel(aLogoFrm); - aLogoLab->setPixmap(aLogoPixmap); - aLogoLab->setAlignment(AlignCenter); - aLogoLab->setScaledContents(false); - myMainMenu->insertItem(aLogoFrm); - - if ( myStdActions.isEmpty() ) { - /* Define standard actions. They should be inserted - into the list in order of their IDs. - */ - - /* 'File' actions */ - /* new */ - QAD_ResourceMgr* rmgr = QAD_Desktop::getResourceManager(); - QActionP* fileNewAction = new QActionP ( tr("TOT_DESK_FILE_NEW"), - rmgr->loadPixmap( "QAD", tr("ICON_FILE_NEW") ) , - tr("MEN_DESK_FILE_NEW"), CTRL+Key_N, this ); - fileNewAction->setStatusTip ( tr("PRP_DESK_FILE_NEW") ); - fileNewAction->setEnabled ( true ); - QAD_ASSERT ( connect( fileNewAction, SIGNAL( activated() ), this, SLOT( onNewStudy() ))); - fileNewAction->addTo( myStdToolBar ); - fileNewAction->addTo( &myFilePopup ); - myStdActions.insert ( FileNewId, fileNewAction ); - - /* open */ - QActionP* fileOpenAction = new QActionP( tr("TOT_DESK_FILE_OPEN"), rmgr->loadPixmap( "QAD", tr("ICON_FILE_OPEN") ), - tr("MEN_DESK_FILE_OPEN"), CTRL+Key_O, this ); - fileOpenAction->setStatusTip ( tr("PRP_DESK_FILE_OPEN") ); - fileOpenAction->setEnabled ( true ); - QAD_ASSERT ( connect( fileOpenAction, SIGNAL( activated() ), this, SLOT( onOpenStudy() ))); - fileOpenAction->addTo( myStdToolBar ); - fileOpenAction->addTo( &myFilePopup ); - myStdActions.insert ( FileOpenId, fileOpenAction ); - - /* load */ - QActionP* fileLoadAction = new QActionP( tr("TOT_DESK_FILE_LOAD"), rmgr->loadPixmap( "QAD", tr("ICON_FILE_LOAD") ), - tr("MEN_DESK_FILE_LOAD"), CTRL+Key_L, this ); - fileLoadAction->setStatusTip ( tr("PRP_DESK_FILE_LOAD") ); - fileLoadAction->setEnabled ( true ); - QAD_ASSERT ( connect( fileLoadAction, SIGNAL( activated() ), this, SLOT( onLoadStudy() ))); - fileLoadAction->addTo( &myFilePopup ); - myStdActions.insert ( FileLoadId, fileLoadAction ); - - /* close */ - QActionP* fileCloseAction = new QActionP( "", rmgr->loadPixmap( "QAD", tr("ICON_FILE_CLOSE") ), - tr("MEN_DESK_FILE_CLOSE"), CTRL+Key_W, this ); - fileCloseAction->setStatusTip ( tr("PRP_DESK_FILE_CLOSE") ); - QAD_ASSERT ( connect( fileCloseAction, SIGNAL( activated() ), this, SLOT( onCloseStudy() ))); - fileCloseAction->addTo( &myFilePopup ); - myStdActions.insert ( FileCloseId, fileCloseAction ); - - /* separator */ - myFilePopup.insertSeparator(); - - /* save */ - QActionP* fileSaveAction = new QActionP( tr("TOT_DESK_FILE_SAVE"), rmgr->loadPixmap( "QAD", tr("ICON_FILE_SAVE") ), - tr("MEN_DESK_FILE_SAVE"), CTRL+Key_S, this ); - fileSaveAction->setStatusTip ( tr("PRP_DESK_FILE_SAVE") ); - QAD_ASSERT ( connect( fileSaveAction, SIGNAL( activated() ), this, SLOT( onSaveStudy() ))); - fileSaveAction->addTo( myStdToolBar ); - fileSaveAction->addTo( &myFilePopup ); - myStdActions.insert ( FileSaveId, fileSaveAction ); - - /* save as */ - QActionP* fileSaveAsAction = new QActionP( "", tr("MEN_DESK_FILE_SAVEAS"), 0, this ); - fileSaveAsAction->setStatusTip ( tr("PRP_DESK_FILE_SAVEAS") ); - QAD_ASSERT ( connect( fileSaveAsAction, SIGNAL( activated() ), - this, SLOT( onSaveAsStudy() ))); - fileSaveAsAction->addTo( &myFilePopup ); - myStdActions.insert ( FileSaveAsId, fileSaveAsAction ); - - - /* separator */ - myFilePopup.insertSeparator(); - - // Study properties - QActionP* filePropsAction = new QActionP( "", QPixmap(), tr("MEN_DESK_FILE_PROPERTIES"), 0, this ); - filePropsAction->setStatusTip ( tr("PRP_DESK_FILE_PROPERTIES") ); - filePropsAction->setEnabled(false); - QAD_ASSERT ( connect( filePropsAction, SIGNAL( activated() ), this, SLOT( onStudyProperties() ))); - filePropsAction->addTo( &myFilePopup ); - myStdActions.insert ( FilePropsId, filePropsAction ); - - - int id = myFilePopup.insertSeparator(); - /* keep the position from which an application will insert its items - to menu 'File' at the time of customization of the desktop */ - - myFilePos = myFilePopup.indexOf( id ) + 1; - - /* exit application */ - QActionP* exitAction = new QActionP( "", tr("MEN_DESK_FILE_EXIT"), - CTRL+Key_X, this ); - exitAction->setStatusTip ( tr("PRP_DESK_FILE_EXIT") ); - QAD_ASSERT ( connect( exitAction, SIGNAL( activated() ), - this, SLOT( onExit() ))); - exitAction->addTo( &myFilePopup ); - myStdActions.insert ( FileExitId, exitAction ); - - QAD_ASSERT( connect( &myFilePopup, SIGNAL(highlighted( int )), - this, SLOT(onFilePopupStatusText( int )) )); - - - /* 'Edit' actions : provided by application only */ - myEditPos = 0; - - QAD_ASSERT( connect( &myEditPopup, SIGNAL(highlighted( int )), - this, SLOT(onEditPopupStatusText( int )) )); - - /* 'View' actions */ - /* toolbars popup menu */ - myViewPopup.insertItem( tr("MEN_DESK_VIEW_TOOLBARS"), &myToolBarsPopup ); - QAD_ASSERT( connect ( &myViewPopup, SIGNAL(aboutToShow()), - this, SLOT(onToolBarPopupAboutToShow()) )); - - /* status bar */ - QActionP* viewStatusBarAction = new QActionP( "", - tr("MEN_DESK_VIEW_STATUSBAR"), - 0, this, 0, true ); - viewStatusBarAction->setStatusTip ( tr("PRP_DESK_VIEW_STATUSBAR") ); - viewStatusBarAction->setOn( true ); - QAD_ASSERT(connect( viewStatusBarAction, SIGNAL(activated()), this, SLOT(onViewStatusBar() ))); - viewStatusBarAction->addTo( &myViewPopup ); - myStdActions.insert( ViewStatusBarId, viewStatusBarAction ); - -// myViewPopup.insertItem( tr("MEN_DESK_SELECTION_MODE"), &mySelectionModePopup ); - - QActionP* SelectionPointAction = new QActionP( "", tr("MEN_DESK_SELECTION_POINT"), 0, this, 0, true ); - QAD_ASSERT(connect( SelectionPointAction, SIGNAL(activated()), this, SLOT(onSelectionMode() ))); - SelectionPointAction->addTo( &mySelectionModePopup ); - myStdActions.insert( SelectionPointId, SelectionPointAction ); - - QActionP* SelectionEdgeAction = new QActionP( "", tr("MEN_DESK_SELECTION_EDGE"), 0, this, 0, true ); - QAD_ASSERT(connect( SelectionEdgeAction, SIGNAL(activated()), this, SLOT(onSelectionMode() ))); - SelectionEdgeAction->addTo( &mySelectionModePopup ); - myStdActions.insert( SelectionEdgeId, SelectionEdgeAction ); - - QActionP* SelectionCellAction = new QActionP( "", tr("MEN_DESK_SELECTION_CELL"), 0, this, 0, true ); - QAD_ASSERT(connect( SelectionCellAction, SIGNAL(activated()), this, SLOT(onSelectionMode() ))); - SelectionCellAction->addTo( &mySelectionModePopup ); - myStdActions.insert( SelectionCellId, SelectionCellAction ); - - QActionP* SelectionActorAction = new QActionP( "", tr("MEN_DESK_SELECTION_ACTOR"), 0, this, 0, true ); - QAD_ASSERT(connect( SelectionActorAction, SIGNAL(activated()), this, SLOT(onSelectionMode() ))); - SelectionActorAction->addTo( &mySelectionModePopup ); - myStdActions.insert( SelectionActorId, SelectionActorAction ); - SelectionActorAction->setOn(true); - - myViewPos = myViewPopup.count(); - - QAD_ASSERT( connect( &myViewPopup, SIGNAL(highlighted( int )), - this, SLOT(onViewPopupStatusText( int )) )); - - /* Parse xml file */ - QAD_ResourceMgr* resMgr = QAD_Desktop::createResourceManager(); - if ( resMgr ) { - QString msg; - if(!resMgr->loadResources( "ToolsGUI", msg )) - { - //NRI QCString errMsg; - // errMsg.sprintf( "Do not load all resources for module ToolsGUI.\n" ); - QMessageBox::warning( this, tr("WRN_WARNING"), msg, tr ("BUT_OK") ); - } - } - - myOperatorMenus = new QAD_OperatorMenus(this); - myXmlHandler = new QAD_XmlHandler(); - ASSERT(myXmlHandler) ; - myXmlHandler->setMainWindow(this); - if ( myXmlHandler->setComponent( resMgr->resources( "ToolsGUI" ) ) ) { - QString language = resMgr->language( "ToolsGUI" ); - QString ToolsXml = QString( "Tools_" ) + language + QString( ".xml" ); - - //ToolsXml = resMgr->resources("ToolsGUI") ; - //ToolsXml = QAD_Tools::addSlash(ToolsXml) ; - //ToolsXml = ToolsXml + "Tools_" + language + ".xml" ; - ToolsXml = QAD_Tools::addSlash( resMgr->findFile( ToolsXml, "ToolsGUI" ) ) + ToolsXml; - - QFile file( QAD_Tools::unix2win( ToolsXml ) ); - if ( file.exists() && file.open( IO_ReadOnly ) ) { - file.close(); - QXmlInputSource source( file ); - QXmlSimpleReader reader; - reader.setContentHandler( myXmlHandler ); - reader.setErrorHandler( myXmlHandler ); - bool ok = reader.parse( source ); - file.close(); - if ( !ok ) { - QMessageBox::critical( 0, - tr( "INF_PARSE_ERROR" ), - tr( myXmlHandler->errorProtocol() ) ); - } else { - myMenusList=myXmlHandler->myMenusList; - myActiveMenus=myMenusList.at(0); - myOperatorMenus->showMenuBar(0); - myActiveMenus->showAllToolBars(); - } - } - } - // } - - if ( myToolsPopup.count() == 0 ) { - myMainMenu->removeItem(5); - } - - /* 'Pref' actions */ - /* Viewer BackgroundColor */ - myPrefPopup.insertItem( tr("MEN_DESK_PREF_VIEWER"), &myViewerPopup ); - - QActionP* viewerOCCAction = new QActionP( "", tr("MEN_DESK_PREF_VIEWER_OCC"), 0, this ); - QAD_ASSERT(connect( viewerOCCAction, SIGNAL(activated()), this, SLOT(onViewerOCC() ))); - viewerOCCAction->addTo( &myViewerPopup ); - myStdActions.insert( PrefViewerOCCId, viewerOCCAction ); - - QActionP* viewerVTKAction = new QActionP( "", tr("MEN_DESK_PREF_VIEWER_VTK"), 0, this ); - QAD_ASSERT(connect( viewerVTKAction, SIGNAL(activated()), this, SLOT(onViewerVTK() ))); - viewerVTKAction->addTo( &myViewerPopup ); - myStdActions.insert( PrefViewerVTKId, viewerVTKAction ); - - QActionP* graphSupervisorAction = new QActionP( "", tr("MEN_DESK_PREF_GRAPH_SUPERVISOR"), 0, this ); - QAD_ASSERT(connect( graphSupervisorAction, SIGNAL(activated()), this, SLOT(onGraphSupervisor() ))); - graphSupervisorAction->addTo( &myViewerPopup ); - myStdActions.insert( PrefGraphSupervisorId, graphSupervisorAction ); - - QActionP* viewerPlot2dAction = new QActionP( "", tr("MEN_DESK_PREF_VIEWER_PLOT2D"), 0, this ); - QAD_ASSERT(connect( viewerPlot2dAction, SIGNAL(activated()), this, SLOT(onPlot2d() ))); - viewerPlot2dAction->addTo( &myViewerPopup ); - myStdActions.insert( PrefViewerPlot2dId, viewerPlot2dAction ); - - //VRV: T2.5 - add default viewer - QString viewerValue = QAD_CONFIG->getSetting( "Viewer:DefaultViewer" ); - bool ok; - int aViewerValue = viewerValue.toInt( &ok, 10 ); - if (!ok || aViewerValue < VIEW_OCC || aViewerValue >= VIEW_TYPE_MAX) - aViewerValue = VIEW_VTK; - - myPrefPopup.insertItem( tr("MEN_DESK_PREF_DEFAULT_VIEWER"), &myDefaultViewer ); - QActionPGroup* myQAG = new QActionPGroup ( this); - QActionP* viewerOCCAction1 = new QActionP( "", tr("MEN_DESK_PREF_VIEWER_OCC"), 0, this ); - viewerOCCAction1->setToggleAction ( true); - viewerOCCAction1->setOn ( aViewerValue == VIEW_OCC ); - myQAG->insert( viewerOCCAction1 ); - myStdActions.insert( DefaultViewerOCCId, viewerOCCAction1 ); - - QActionP* viewerVTKAction1 = new QActionP( "", tr("MEN_DESK_PREF_VIEWER_VTK"), 0, this ); - viewerVTKAction1->setToggleAction ( true); - viewerVTKAction1->setOn ( aViewerValue == VIEW_VTK ); - myQAG->insert( viewerVTKAction1 ); - myStdActions.insert( DefaultViewerVTKId, viewerVTKAction1 ); - -/* Remove Supervisor viewer from setting the background */ -// QActionP* graphSupervisorAction1 = new QActionP( "", tr("MEN_DESK_PREF_GRAPH_SUPERVISOR"), 0, this ); -// graphSupervisorAction1->setToggleAction ( true); -// graphSupervisorAction1->setOn ( aViewerValue == VIEW_GRAPHSUPERV ); -// myQAG->insert( graphSupervisorAction1 ); -// myStdActions.insert( DefaultGraphSupervisorId, graphSupervisorAction1 ); - - QActionP* viewerPlot2dAction1 = new QActionP( "", tr("MEN_DESK_PREF_VIEWER_PLOT2D"), 0, this ); - viewerPlot2dAction1->setToggleAction ( true); - viewerPlot2dAction1->setOn ( aViewerValue == VIEW_PLOT2D ); - myQAG->insert( viewerPlot2dAction1 ); - myStdActions.insert( DefaultPlot2dId, viewerPlot2dAction1 ); - - myQAG->addTo( &myDefaultViewer ); - QAD_ASSERT(connect( myQAG, SIGNAL(selected(QActionP * )), this, SLOT(onDefaultViewer(QActionP *) ))); - //VRV: T2.5 - add default viewer - - myPrefPopup.insertSeparator(); - - QActionP* viewerTrihedronAction = new QActionP( "", tr("MEN_DESK_PREF_VIEWER_TRIHEDRON"), 0, this ); - QAD_ASSERT(connect( viewerTrihedronAction, SIGNAL(activated()), this, SLOT(onViewerTrihedron() ))); - viewerTrihedronAction->addTo( &myPrefPopup ); - myStdActions.insert( PrefViewerTrihedronId, viewerTrihedronAction ); - - QActionP* consoleFontAction = new QActionP( "", tr("MEN_DESK_PREF_CONSOLE_FONT"), 0, this ); - QAD_ASSERT(connect( consoleFontAction, SIGNAL(activated()), this, SLOT(onConsoleFontAction() ))); - consoleFontAction->addTo( &myPrefPopup ); - myStdActions.insert( PrefConsoleFontId, consoleFontAction ); - - /* MultiFile save */ - QActionP* multiFileSaveAction = new QActionP( "", tr("MEN_DESK_PREF_MULTI_FILE_SAVE"), 0, this, 0, true ); - QAD_ASSERT(connect( multiFileSaveAction, SIGNAL(activated()), this, SLOT(onMultiFileSave() ))); - multiFileSaveAction->setToggleAction( true ); - QString MultiSave = QAD_CONFIG->getSetting("Desktop:MultiFileSave"); - multiFileSaveAction->setOn( MultiSave.compare( aTrueQString ) == 0 ); - multiFileSaveAction->addTo( &myPrefPopup ); - myStdActions.insert( PrefMultiFileSave, multiFileSaveAction ); - - /* ASCII save */ - QActionP* ASCIISaveAction = new QActionP( "", tr("MEN_DESK_PREF_ASCII_SAVE"), 0, this, 0, true ); - QAD_ASSERT(connect( ASCIISaveAction, SIGNAL(activated()), this, SLOT(onASCIISave() ))); - ASCIISaveAction->setToggleAction( true ); - QString ASCIISave = QAD_CONFIG->getSetting("Desktop:ASCIISave"); - ASCIISaveAction->setOn( ASCIISave.compare( aTrueQString ) == 0 ); - ASCIISaveAction->addTo( &myPrefPopup ); - myStdActions.insert( PrefASCIISave, ASCIISaveAction ); - - /* Undo level */ - QActionP* UndoLevelAction = new QActionP( "", tr("MEN_DESK_PREF_UNDO_LEVEL"), 0, this ); - QAD_ASSERT(connect( UndoLevelAction, SIGNAL(activated()), this, SLOT(onUndoLevel() ))); - UndoLevelAction->addTo( &myPrefPopup ); - myStdActions.insert( PrefUndoLevelId, UndoLevelAction ); - - myPrefPopup.insertSeparator(); - - /* External Browser */ - QActionP* externalBrowserAction = new QActionP( "", tr("MEN_DESK_PREF_EXTERNAL_BROWSER"), 0, this ); - QAD_ASSERT(connect( externalBrowserAction, SIGNAL(activated()), this, SLOT(onExternalBrowser() ))); - externalBrowserAction->addTo( &myPrefPopup ); - myStdActions.insert( PrefExternalBrowserId, externalBrowserAction ); - - myPrefPopup.insertSeparator(); - /* BrowserPopup */ - myPrefPopup.insertItem( tr("MEN_DESK_PREF_OBJECTBROWSER"), &myObjBrowserPopup ); - - QActionP* objectBrowserEntryAction = new QActionP( "", tr("MEN_DESK_PREF_OBJECTBROWSER_ENTRY"), 0, this, 0, true ); - QAD_ASSERT(connect( objectBrowserEntryAction, SIGNAL(activated()), this, SLOT(onObjectBrowser() ))); - objectBrowserEntryAction->setToggleAction(true); - QString AddColumn = QAD_CONFIG->getSetting("ObjectBrowser:AddColumn"); - - if ( AddColumn.compare( aTrueQString ) == 0 ) - objectBrowserEntryAction->setOn(true); - else - objectBrowserEntryAction->setOn(false); - - objectBrowserEntryAction->addTo( &myObjBrowserPopup ); - myStdActions.insert( PrefObjectBrowserEntryId, objectBrowserEntryAction ); - - QActionP* objectBrowserValueAction = new QActionP( "", tr("MEN_DESK_PREF_OBJECTBROWSER_VALUE"), 0, this, 0, true ); - QAD_ASSERT(connect( objectBrowserValueAction, SIGNAL(activated()), this, SLOT(onObjectBrowser() ))); - objectBrowserValueAction->setToggleAction(true); - QString ValueColumn = QAD_CONFIG->getSetting("ObjectBrowser:ValueColumn"); - - if ( ValueColumn.compare( aTrueQString ) == 0 ) - objectBrowserValueAction->setOn(true); - else - objectBrowserValueAction->setOn(false); - - objectBrowserValueAction->addTo( &myObjBrowserPopup ); - myStdActions.insert( PrefObjectBrowserValueId, objectBrowserValueAction ); - - QActionP* objectBrowserIAPPAction = new QActionP( "", tr("MEN_DESK_PREF_OBJECTBROWSER_IAPP"), 0, this, 0, true ); - QAD_ASSERT(connect( objectBrowserIAPPAction, SIGNAL(activated()), this, SLOT(onObjectBrowser() ))); - objectBrowserIAPPAction->setToggleAction(true); - QString showIAPP = QAD_CONFIG->getSetting("ObjectBrowser:IAPP"); - - if ( showIAPP.compare( aTrueQString ) == 0 ) - objectBrowserIAPPAction->setOn(true); - else - objectBrowserIAPPAction->setOn(false); - - objectBrowserIAPPAction->addTo( &myObjBrowserPopup ); - myStdActions.insert( PrefObjectBrowserIAPPId, objectBrowserIAPPAction ); - - /* Chronological sorting of shapes on the entry creation */ - QActionP* objectBrowserCHRONO_SORTAction = new QActionP( "", tr("MEN_DESK_PREF_OBJECTBROWSER_CHRONO_SORT"), 0, this, 0, true ); - QAD_ASSERT(connect( objectBrowserCHRONO_SORTAction, SIGNAL(activated()), this, SLOT(onObjectBrowser() ))); - objectBrowserCHRONO_SORTAction->setToggleAction(true); - QString showSORT = QAD_CONFIG->getSetting("ObjectBrowser:ChronologicalSort"); - - if ( showSORT.compare( aTrueQString ) == 0 ) - objectBrowserCHRONO_SORTAction->setOn(true) ; - else - objectBrowserCHRONO_SORTAction->setOn(false) ; - - objectBrowserCHRONO_SORTAction->addTo( &myObjBrowserPopup ); - myStdActions.insert( PrefObjectBrowserCHRONO_SORTId, objectBrowserCHRONO_SORTAction ) ; - - /* Show or don't Show UseCase browser */ - QActionP* objectBrowserShowUseCaseAction = new QActionP( "", tr("MEN_DESK_PREF_OBJECTBROWSER_SHOW_USECASE"), 0, this, 0, true ); - QAD_ASSERT(connect( objectBrowserShowUseCaseAction, SIGNAL(activated()), this, SLOT(onObjectBrowser() ))); - objectBrowserShowUseCaseAction->setToggleAction(true); - QString showUseCase = QAD_CONFIG->getSetting("ObjectBrowser:ShowUseCaseBrowser"); - - if ( showUseCase.compare( aTrueQString ) == 0 ) - objectBrowserShowUseCaseAction->setOn(true) ; - else - objectBrowserShowUseCaseAction->setOn(false) ; - - objectBrowserShowUseCaseAction->addTo( &myObjBrowserPopup ); - myStdActions.insert( PrefObjectBrowserShowUseCaseId, objectBrowserShowUseCaseAction ) ; - - /* Resize or don't resize columns automatically */ - QActionP* objectBrowserNoAutoSizeAction = new QActionP( "", tr("MEN_DESK_PREF_OBJECTBROWSER_NO_AUTOSIZE"), 0, this, 0, true ); - QAD_ASSERT(connect( objectBrowserNoAutoSizeAction, SIGNAL(activated()), this, SLOT(onObjectBrowser() ))); - objectBrowserNoAutoSizeAction->setToggleAction(true); - QString noAutoSize = QAD_CONFIG->getSetting("ObjectBrowser:NoAutoSizeColumns"); - - if ( noAutoSize.compare( aTrueQString ) == 0 ) - objectBrowserNoAutoSizeAction->setOn(true) ; - else - objectBrowserNoAutoSizeAction->setOn(false) ; - - objectBrowserNoAutoSizeAction->addTo( &myObjBrowserPopup ); - myStdActions.insert( PrefObjectBrowserNoAutoSizeColumnsId, objectBrowserNoAutoSizeAction ) ; - - myPrefPopup.insertSeparator(); - - QActionP* dirAction = new QActionP( "", tr("MEN_DESK_PREF_DIRICTORIES"), ALT+Key_D, this ); - QAD_ASSERT(connect( dirAction, SIGNAL(activated()), this, SLOT(onDirList() ))); - dirAction->addTo( &myPrefPopup ); - myStdActions.insert( PrefDirsId, dirAction ); - - myPrefPopup.insertSeparator(); - - QActionP* saveAction = new QActionP( "", tr("MEN_DESK_PREF_SAVE"), 0, this ); - QAD_ASSERT(connect( saveAction, SIGNAL(activated()), this, SLOT(onSavePref() ))); - saveAction->addTo( &myPrefPopup ); - myStdActions.insert( PrefSaveId, saveAction ); - - /* 'Window' actions */ - /* new Window 3D */ - //NRI : SAL2214 - myWindowPopup.insertItem( tr("MEN_DESK_WINDOW_NEW3D"), &myNewViewPopup, WindowNew3dId ); - - QActionP* viewOCCAction = new QActionP( "", tr("MEN_DESK_VIEW_OCC"), ALT+Key_O, this ); - QAD_ASSERT(connect( viewOCCAction, SIGNAL(activated()), this, SLOT(onNewWindow3d() ))); - viewOCCAction->addTo( &myNewViewPopup ); - myStdActions.insert( ViewOCCId, viewOCCAction ); - - QActionP* viewVTKAction = new QActionP( "", tr("MEN_DESK_VIEW_VTK"), ALT+Key_K, this ); - QAD_ASSERT(connect( viewVTKAction, SIGNAL(activated()), this, SLOT(onNewWindow3d() ))); - viewVTKAction->addTo( &myNewViewPopup ); - myStdActions.insert( ViewVTKId, viewVTKAction ); - - QActionP* viewPlot2dAction = new QActionP( "", tr("MEN_DESK_VIEW_PLOT2D"), ALT+Key_P, this ); - QAD_ASSERT(connect( viewPlot2dAction, SIGNAL(activated()), this, SLOT(onNewWindow3d() ))); - viewPlot2dAction->addTo( &myNewViewPopup ); - myStdActions.insert( ViewPlot2dId, viewPlot2dAction ); - - // QActionP* windowNew3dAction = new QActionP( "",/* rmgr->loadPixmap( "QAD", tr("ICON_DESK_WINDOW_NEW3D") ), */ - /*tr("MEN_DESK_WINDOW_NEW3D"), 0, this ); - windowNew3dAction->addTo( &myWindowPopup ); - QAD_ASSERT( connect( windowNew3dAction, SIGNAL(activated()), this , - SLOT( onNewWindow3d() ))); - myStdActions.insert( WindowNew3dId, windowNew3dAction ); - */ - - //NRI : SAL2214 - - /* cascaded */ - QActionP* windowCascadeAction = new QActionP( "", rmgr->loadPixmap( "QAD", tr("ICON_DESK_WINDOW_CASCADE") ), - tr("MEN_DESK_WINDOW_CASCADE"), 0, this ); - windowCascadeAction->setStatusTip ( tr("PRP_DESK_WINDOW_CASCADE") ); - QAD_ASSERT( connect( windowCascadeAction, SIGNAL(activated()), this, - SLOT( onCascade() ))); - myStdActions.insert( WindowCascadeId, windowCascadeAction ); - - /* tiled */ - QActionP* windowTileAction = new QActionP( "", rmgr->loadPixmap( "QAD", tr("ICON_DESK_WINDOW_TILE") ), - tr("MEN_DESK_WINDOW_TILE"), 0, this ); - windowTileAction->setStatusTip ( tr("PRP_DESK_WINDOW_TILE") ); - QAD_ASSERT( connect( windowTileAction, SIGNAL(activated()), myWorkspace, SLOT( tile() ))); - myStdActions.insert( WindowTileId, windowTileAction ); - - QAD_ASSERT( connect ( &myWindowPopup, SIGNAL(aboutToShow()), - this, SLOT(onWindowPopupAboutToShow()) )); - /* 'Help' actions - */ - /* contents */ - // MZN : Commented - // QActionP* helpContentsAction = new QActionP( "", tr("MEN_DESK_HELP_CONTENTS"), Key_F1, this ); - // helpContentsAction->setStatusTip ( tr("PRP_DESK_HELP_CONTENTS") ); -// QAD_ASSERT(connect( helpContentsAction, SIGNAL(activated()), -// this, SLOT( onHelpContents() ))); -// helpContentsAction->addTo( &myHelpPopup ); -// myStdActions.insert( HelpContentsId , helpContentsAction ); - -// id = myHelpPopup.insertSeparator(); - - /* GUI contents */ - myHelpPopup.insertItem( tr("MEN_DESK_HELP_MODULECONTENTS"), &myHelpContentsModulePopup, HelpContentsModuleId); - bool toEnable = false; - - CORBA::Object_var objVarN = myNameService->Resolve("/Kernel/ModulCatalog"); - myCatalogue = SALOME_ModuleCatalog::ModuleCatalog::_narrow(objVarN); - - SALOME_ModuleCatalog::ListOfIAPP_Affich_var list_composants = - myCatalogue->GetComponentIconeList(); - - for (unsigned int ind = 0; ind < list_composants->length(); ind++) { - QString aModuleName = CORBA::string_dup(list_composants[ind].modulename) ; - QString dir; - if (dir = getenv( aModuleName + "_ROOT_DIR")) { - dir = QAD_Tools::addSlash( QAD_Tools::addSlash(dir) + "doc/salome/" ); - QString aFileName = aModuleName + "_index.html"; - if ( QFileInfo( dir + aFileName ).exists() ) { - QString aModuleUserName = CORBA::string_dup(list_composants[ind].moduleusername) ; - if ( aModuleUserName == "Salome" ) aModuleUserName = "Kernel" ; - QActionP* moduleHelpAction = new QActionP( "", aModuleUserName + " Help" , 0, this, aModuleName); - QAD_ASSERT(connect( moduleHelpAction, SIGNAL(activated()), this, SLOT(onHelpContentsModule() ))); - moduleHelpAction->addTo( &myHelpContentsModulePopup ); - if (!toEnable) toEnable = true; - } - } - } - - myHelpContentsModulePopup.setEnabled(toEnable); - - // NRI : Temporary commented - -// QActionP* helpContentsActionGUI = new QActionP( "", tr("MEN_DESK_HELP_GUICONTENTS"), 0, this ); -// helpContentsActionGUI->setStatusTip ( tr("PRP_DESK_HELP_GUICONTENTS") ); -// QAD_ASSERT(connect( helpContentsActionGUI, SIGNAL(activated()), -// this, SLOT( onHelpContentsGUI() ))); -// helpContentsActionGUI->addTo( &myHelpPopup ); -// myStdActions.insert( HelpContentsId , helpContentsActionGUI ); - - - /* TUI contents */ - /* - QActionP* helpContentsActionTUI = new QActionP( "", tr("MEN_DESK_HELP_TUICONTENTS"), 0, this ); - helpContentsActionTUI->setStatusTip ( tr("PRP_DESK_HELP_TUICONTENTS") ); - QAD_ASSERT(connect( helpContentsActionTUI, SIGNAL(activated()), - this, SLOT( onHelpContentsTUI() ))); - helpContentsActionTUI->addTo( &myHelpPopup ); - myStdActions.insert( HelpContentsId , helpContentsActionTUI ); - */ - - - // Provide status tip for Module help menu item - QAD_ASSERT( connect( &myHelpPopup, SIGNAL(highlighted( int )), this, - SLOT(onHelpModulePopupStatusText( int )) )); - - - /* search */ -// QActionP* helpSearchAction = new QActionP( "", tr("MEN_DESK_HELP_SEARCH"), 0, this ); -// helpSearchAction->setStatusTip ( tr("PRP_DESK_HELP_SEARCH") ); -// QAD_ASSERT( connect( helpSearchAction, SIGNAL(activated()), this, SLOT( onHelpSearch() ))); -// helpSearchAction->addTo( &myHelpPopup ); -// myStdActions.insert( HelpSearchId, helpSearchAction ); - - /* What's This */ -// QActionP* helpWhatsThisAction = new QActionP( "", tr("MEN_DESK_HELP_WHATSTHIS"), SHIFT+Key_F1, this ); -// helpWhatsThisAction->setStatusTip ( tr("PRP_DESK_HELP_WHATSTHIS" )); -// QAD_ASSERT( connect( helpWhatsThisAction, SIGNAL(activated()), this, SLOT( whatsThis() ))); -// helpWhatsThisAction->addTo( &myHelpPopup ); -// myStdActions.insert( HelpWhatsThisId, helpWhatsThisAction ); -// (void)QWhatsThis::whatsThisButton( myStdToolBar ); - - id = myHelpPopup.insertSeparator(); - myHelpPos = myHelpPopup.indexOf( id ); - - /* about */ - QActionP* helpAboutAction = new QActionP( "", tr("MEN_DESK_HELP_ABOUT"), 0, this ); - helpAboutAction->setStatusTip ( tr("PRP_DESK_HELP_ABOUT") ); - QAD_ASSERT( connect( helpAboutAction, SIGNAL(activated()), this, SLOT( onHelpAbout() ))); - helpAboutAction->addTo( &myHelpPopup ); - myStdActions.insert(HelpAboutId, helpAboutAction ); - - /* additional key accelerators */ - QAccel* accel = new QAccel( this ); - // pan left - myAccelMap[ accel->insertItem( CTRL+Key_Left ) ] = voPanLeft; - // pan right - myAccelMap[ accel->insertItem( CTRL+Key_Right ) ] = voPanRight; - // pan up - myAccelMap[ accel->insertItem( CTRL+Key_Up ) ] = voPanUp; - // pan down - myAccelMap[ accel->insertItem( CTRL+Key_Down ) ] = voPanDown; - // zoom in - myAccelMap[ accel->insertItem( CTRL+Key_Plus ) ] = voZoomIn; - // zoom out - myAccelMap[ accel->insertItem( CTRL+Key_Minus ) ] = voZoomOut; - // zoom in - myAccelMap[ accel->insertItem( CTRL+Key_Equal ) ] = voZoomIn; - // fit all - myAccelMap[ accel->insertItem( CTRL+Key_Asterisk ) ] = voZoomFit; - // fit all - myAccelMap[ accel->insertItem( CTRL+SHIFT+Key_Asterisk ) ] = voZoomFit; - // rotate left - myAccelMap[ accel->insertItem( ALT+Key_Left ) ] = voRotateLeft; - // rotate right - myAccelMap[ accel->insertItem( ALT+Key_Right ) ] = voRotateRight; - // rotate up - myAccelMap[ accel->insertItem( ALT+Key_Up ) ] = voRotateUp; - // rotate down - myAccelMap[ accel->insertItem( ALT+Key_Down ) ] = voRotateDown; - // connect signal to slot - connect( accel, SIGNAL( activated(int) ), this, SLOT( onKeyAccel(int) ) ); - } - updateActions(); -} - -/*! - Adds the given application into the list of supported applications -*/ -void QAD_Desktop::addApplication(QAD_Application* app) -{ - /* add only if is not already in the list */ - if ( myApps.findRef( app ) == -1 ) - { - myApps.append( app ); - - /* set activation/deactivation listener */ - QAD_ASSERT ( connect( app, SIGNAL(appActivated(QAD_Application*)), - this, SLOT(onActivateApp(QAD_Application*))) ); - - QAD_ASSERT ( connect( app, SIGNAL(appDeactivated(QAD_Application*)), - this, SLOT(onDeactivateApp(QAD_Application*))) ); - } -} - -/*! - Displays the control panel of the application. - This function is called when the desktop is shown first time. -*/ -void QAD_Desktop::showDesktop() -{ - show(); -} - -/*! - Closes Desktop. If is true query for exit will be skipped. -*/ -void QAD_Desktop::closeDesktop( bool forceClose ) -{ - if ( forceClose) - myQueryClose = false; - close(); -} - -/*! - Puts the message to the status bar -*/ -void QAD_Desktop::putInfo ( const QString& msg ) -{ - if ( myStatusBar ) - //NRI : bug 1209. message is now displayed during 3000 ms - myStatusBar->message ( msg, 3000 ); -} - -/*! - Puts the message to the status bar for ms milli-seconds -*/ -void QAD_Desktop::putInfo ( const QString& msg, int ms ) -{ - if ( myStatusBar ) - myStatusBar->message ( msg, ms ); -} - -/*! - Returns the standard toolbar -*/ -QMenuBar* QAD_Desktop::getMainMenuBar() const -{ - return myMainMenu; -} - -/*! - Returns the standard toolbar -*/ -QToolBar* QAD_Desktop::getStdToolBar() const -{ - return myStdToolBar; -} - -/*! - Updates desktop panel (menu, toolbar and status bar) according to current state of - the application. Calls update() for the active application. - The command { UD_ADD_APP or UD_REMOVE_APP ) specifies the desktop components - will be changed according to new active application. - This function is called after activating new study, closing current study etc. -*/ -void QAD_Desktop::updateDesktop( UpdateCommand cmd ) -{ - updateMenu( cmd ); - updateToolBars( cmd ); - updateStatusBar( cmd ); - updateActions(); -} - -/*! - Updates the desktop caption -*/ -void QAD_Desktop::updateCaption( UpdateCommand cmd ) -{ - if ( cmd == ActivateApp ) - { /* application's icon and title */ - setIcon( myActiveApp->getApplicationIcon() ); - setCaption( myActiveApp->getApplicationName() ); - } - else - { /* default icon and title */ - setIcon( myDefaultIcon ); - qApp->processEvents(); - setCaption( myDefaultTitle ); - } -} - -/*! - Updates status bar when a new application becomes current -*/ -void QAD_Desktop::updateStatusBar( UpdateCommand cmd ) -{ - if ( myActiveApp ) - { - bool activate = ( cmd == ActivateApp ); - myActiveApp->updateStatusBar ( myStatusBar, activate ); - } -} - -/*! - Updates toolbars according to current active application. - This function is called from updateDesktop(). -*/ -void QAD_Desktop::updateToolBars( UpdateCommand cmd ) -{ - if ( myActiveApp ) - { - bool activate = ( cmd == ActivateApp ); - myActiveApp->updateToolBars ( activate ); - } -} - -/*! - Updates main menu bar of the application when application is activated - or deactivated. - This function is called by updateDesktop() -*/ -void QAD_Desktop::updateMenu( UpdateCommand cmd ) -{ - if ( myActiveApp ) - { - bool activate = ( cmd == ActivateApp ); - myActiveApp->updateFilePopup( &myFilePopup, activate, myFilePos ); - myActiveApp->updateEditPopup( &myEditPopup, activate, myEditPos ); - myActiveApp->updateViewPopup( &myViewPopup, activate, myViewPos ); - myActiveApp->updateHelpPopup( &myHelpPopup, activate, myHelpPos ); - myActiveApp->updateMainMenu( myMainMenu, activate, myMainMenuPos ); - - /* NOTE: - Since 'Edit' popup is completely customized by applications - desktop doesn't show it in main menubar without the active - application and we insert/remove this popup from the menubar - when activating/deactivating applications. - - We can't have 'Edit' popup be customized by an application - via UpdateMainMenu() method because applications may insert - its items to the menubar only AFTER 'View' item ( this fact - is respected by myMainMenuPos ) and the possibility of an - application to add its items into any arbitrary positions of - the main menubar requires a bit sophisticated implementation, - so we decided to avoid it, sorry :-(. - */ -#if defined( DEBUG ) - if ( !activate ) - /* applications MUST clear 'Edit' after themselves */ - QAD_ASSERT_DEBUG_ONLY( !myEditPopup.count() ); -#endif - - if ( activate ) /* insert after 'File' item */ - myMainMenu->insertItem( tr("MEN_DESK_EDIT"), &myEditPopup, 3, 1 ); - else - myMainMenu->removeItem( 3 ); - } -} - -/*! - Returns icon file name used by the application -*/ -const QPixmap& QAD_Desktop::getDefaultIcon() const -{ - static QPixmap defaultPixmap( QAD_Desktop::getResourceManager()->loadPixmap( "QAD", - tr("ICON_DESK_DEFAULTICON") )); - return defaultPixmap; -} - -/*! - Returns name of the application used as the title of desktop panel -*/ -const QString& QAD_Desktop::getDefaultTitle() const -{ - static QString defaultTitle ( tr("DESK_DEFAULTTITLE") ); - return defaultTitle; -} - -/*! - Returns default name of new studies -*/ -const QString& QAD_Desktop::getDefaultStudyName() const -{ - static QString defaultStudyName( tr("DESK_DEFAULTDOC") ); - return defaultStudyName; -} - -/*! - Returns next name for new study -*/ -QString QAD_Desktop::getNewStudyName() -{ - QString number; - number.sprintf( "%d", ++myCntUntitled ); - return ( getDefaultStudyName() + number ); -} - -/*! - Searches QAD_Study corresponding to , returns NULL if fails -*/ -QAD_Study* QAD_Desktop::findStudy( SALOMEDS::Study_ptr theStudy ) -{ - for ( QAD_Application* app = myApps.first(); app; app = myApps.next() ) { - QList studies; - studies.setAutoDelete( false ); - studies = app->getStudies(); - for ( QAD_Study* study = studies.first(); study; study = studies.next() ) { - if ( study->getStudyDocument()->_is_equivalent( theStudy ) ) - return study; - } - } - return 0; -} - -/*! - Gets value of max undo level for SALOMEDS::Study's from preferences -*/ -int QAD_Desktop::getUndoLevel() -{ - static int MAX_UNDO = 10; - int anUndoLevel = MAX_UNDO; - QString aLevel = QAD_CONFIG->getSetting("Desktop:UndoLevel"); - if(!aLevel.isEmpty()) anUndoLevel = aLevel.toInt(); - return anUndoLevel; -} - -/*! - Returns current active application -*/ -QAD_Application* QAD_Desktop::getActiveApp() const -{ - return myActiveApp; -} - -/*! - Returns current active study -*/ -QAD_Study* QAD_Desktop::getActiveStudy() const -{ - return myActiveStudy; -} - -/*! - Returns main frame -*/ -QWorkspaceP* QAD_Desktop::getMainFrame() const -{ - return myWorkspace; -} - -/*! - Find or load Engine, given a container name and an engine name -*/ -Engines::Component_var QAD_Desktop::getEngine(const char *containerName, - const char *componentName) -{ - Engines::Component_var eng = - myEnginesLifeCycle->FindOrLoad_Component(containerName, - componentName); - return eng._retn(); -} - -QString QAD_Desktop::getComponentName(const char *componentUserName) -{ - if ( mapComponentName.contains(componentUserName) ) - return mapComponentName[ componentUserName ] ; - else - return ""; -} - -QString QAD_Desktop::getComponentUserName(const char *componentName) -{ - QMap::Iterator it; - for( it = mapComponentName.begin(); it != mapComponentName.end(); ++it ) - if (it.data() == componentName ) - return it.key(); - return ""; -} - -// /*! -// gets application Help Window (and creates if necessary) -// */ -// QAD_HelpWindow* QAD_Desktop::getHelpWindow() -// { -// if (!myHelpWindow) { -// myHelpWindow = new QAD_HelpWindow(); - -// QMap::Iterator it; -// for( it = mapComponentName.begin(); it != mapComponentName.end(); ++it ) { -// QCString dir; -// QString root; - -// // look for index.html and set homeDir -// // 1. $(MODULE_ROOT_DIR)/doc/index.html -// // 2. $(MODULE_ROOT_DIR)/doc/html/index.html -// // 3. $(MODULE_ROOT_DIR)/doc/html/html/index.html - -// if (dir = getenv( QString( it.data() + "_ROOT_DIR")) ) { -// root = QAD_Tools::addSlash( QAD_Tools::addSlash(dir) + QAD_Tools::addSlash("share") + QAD_Tools::addSlash("salome") + "doc" ); -// if ( QFileInfo( root + "index.html" ).exists() ) { -// helpContext( root + "index.html", "" ); -// } -// else { -// root = QAD_Tools::addSlash( root + "html" ); -// if ( QFileInfo( root + "index.html" ).exists() ) { -// helpContext( root + "index.html", "" ); -// } -// else { -// root = QAD_Tools::addSlash( root + "html" ); -// if ( QFileInfo( root + "index.html" ).exists() ) { -// helpContext( root + "index.html", "" ); -// } -// } -// } -// } -// } - -// connect(myHelpWindow, SIGNAL(helpWindowClosed()), this, SLOT(onHelpWindowClosed())); -// } -// return myHelpWindow; -// } - -/*! - Called when desktop is closing -*/ -void QAD_Desktop::closeEvent ( QCloseEvent* e ) -{ - bool doClose = true; - if ( myQueryClose ) { - doClose = QAD_MessageBox::info2 ( this, tr("INF_DESK_EXIT"), - tr("QUE_DESK_EXIT"), tr ("BUT_OK"), - tr ("BUT_CANCEL"), QAD_YES, - QAD_NO, QAD_NO ) == QAD_YES; - } - - for ( QAD_Application* app = myApps.first(); doClose && app; app = myApps.next() ) { - QList& studies = app->getStudies(); - for(QAD_Study* study = studies.first(); doClose && study != 0; study = studies.next()) { - if(myQueryClose && study->getStudyDocument()->IsModified()) { - SALOMEGUI_CloseDlg aDlg( this ); - switch ( aDlg.exec() ) { - case 1: - if ( !onSaveStudy( study ) ) { - putInfo( tr("INF_CANCELLED") ); - doClose = false; - } - break; - case 2: - case 3: - break; - case 0: - default: - doClose = false; - putInfo( tr("INF_CANCELLED") ); - } - } - if ( doClose ) - study->close(); - } - } - - myQueryClose = true; - - if ( !doClose ) { - myAboutToClose = false; - // onActiveStudyChanged() is normally caused by QWorkspace::eventFilter(), - // but this call was blocked by myAboutToClose == true, so now we should do it manually - onActiveStudyChanged(); - - e->ignore(); - } - else - e->accept(); -} - -/*! - Called when desktop is resized -*/ -void QAD_Desktop::resizeEvent( QResizeEvent* e ) -{ - QMainWindow::resizeEvent( e ); - myWorkspace->setGeometry( 1,1, centralWidget()->width()-2, - centralWidget()->height()-2 ); -} - - -/*! - Terminates the application. -*/ -void QAD_Desktop::onExit() -{ - close(); -} - -/************************************************************************ -** Study operations -*************************************************************************/ - -/*! - Creates new study. - If several application are supported it displays dialog window - to choose type of study. -*/ -void QAD_Desktop::createStudy(){ - onNewStudy(); -} -void QAD_Desktop::onNewStudy() -{ - unsigned numApps = myApps.count(); - if ( numApps ) { - if ( numApps == 1 ) - onNewStudy ( myApps.at(0) ); - else { /* select the type of application for new study */ - Desktop_AppSelectionDlg selDlg( this, myApps ); - if ( selDlg.exec() == QDialog::Accepted ) { - onNewStudy ( selDlg.selectedApp() ); - } - } - } else { /* no applications available in desktop */ - QAD_MessageBox::error1( this, - tr("ERR_ERROR"), - tr("ERR_APP_NOAPP"), - tr("BUT_OK") ); - } -} - -/*! - Creates new study for the given application. - Calls the respective function of the application class. -*/ -void QAD_Desktop::onNewStudy( QAD_Application* app ) -{ - if ( !app ) return; - - /* create new study of the specific app */ - putInfo ( tr ("INF_DOC_CREATING") ); - QAD_Study* newStudy = app->newStudy(); - - if ( !newStudy ) { - /* can't create new study */ - QAD_MessageBox::error1( this, tr("ERR_ERROR"), - tr("ERR_DOC_CANTCREATE"), - tr("BUT_OK") ); - } - putInfo ( tr("INF_READY") ); -} - -/*! - Loads the existing study. -*/ -void QAD_Desktop::onLoadStudy() -{ - QString name, studyname, ext; - - SALOMEGUI_LoadStudiesDlg* aDlg = new SALOMEGUI_LoadStudiesDlg( this, "Load Study", TRUE); - - CORBA::Object_var obj = myNameService->Resolve("/myStudyManager"); - SALOMEDS::StudyManager_var myStudyMgr = SALOMEDS::StudyManager::_narrow(obj); - ASSERT(! CORBA::is_nil(myStudyMgr)); - SALOMEDS::ListOfOpenStudies_var List = myStudyMgr->GetOpenStudies(); - for (unsigned int ind = 0; ind < List->length();ind++) { - studyname = List[ind]; - aDlg->ListComponent->insertItem( studyname ); - } - - int retVal = aDlg->exec(); - studyname = aDlg->ListComponent->currentText(); - delete aDlg; - if (retVal == QDialog::Rejected) - return; - - if ( studyname.isNull() || studyname.isEmpty() ) - return; - - name = studyname; - name.replace( QRegExp(":"), "/" ); - - /* - Try to associate an application to the opened study. - Assumed that the association study<->application is unique. - */ - bool appFound = false; - putInfo ( tr("INF_DOC_OPENING") + " " + name ); - for ( QAD_Application* app = myApps.first(); app; app = myApps.next() ) - { - /* application found */ - if ( app->isStudyOpened( name ) ) - { - /* already opened: prompt for reopen */ - if ( QAD_MessageBox::warn2 ( this, tr("WRN_WARNING"), - tr("QUE_DOC_ALREADYOPEN").arg( name ), - tr ("BUT_YES"), tr ("BUT_NO"), QAD_YES, QAD_NO, - QAD_NO ) == QAD_NO ) - { - putInfo ( tr("INF_READY") ); - return; - } - /* now the study is closed to be re-opened */ - //don't ask user to remove study permanently - if (app->getStudyByName ( name ) != NULL) - onCloseStudy ( app->getStudyByName ( name ), false ); - else if (app->getStudyByName ( QAD_Tools::getFileNameFromPath( name, true )) != NULL) - onCloseStudy ( app->getStudyByName ( QAD_Tools::getFileNameFromPath( name, true )), false ); - } - appFound = true; - - /* open the study */ - QAD_Study* openStudy = app->loadStudy( studyname ); - if ( !openStudy ) { - QAD_MessageBox::error1( this, - tr("ERR_ERROR"), - tr("ERR_DOC_CANTOPEN") + "\n" + name, - tr("BUT_OK") ); - } - break; - } - - if ( !appFound ) { - QAD_MessageBox::error1( this, - tr("ERR_ERROR"), - tr("ERR_DOC_UNKNOWNTYPE"), - tr("BUT_OK") ); - } - putInfo ( tr("INF_READY") ); -} - - - -QAD_Study* QAD_Desktop::loadStudy(QString theStudyName) { - QString studyname(""); - - CORBA::Object_var obj = myNameService->Resolve("/myStudyManager"); - SALOMEDS::StudyManager_var myStudyMgr = SALOMEDS::StudyManager::_narrow(obj); - ASSERT(! CORBA::is_nil(myStudyMgr)); - - SALOMEDS::ListOfOpenStudies_var List = myStudyMgr->GetOpenStudies(); - for (unsigned int ind = 0; ind < List->length();ind++) { - if (theStudyName == QString(List[ind])) { - studyname = theStudyName; - break; - } - } - if (studyname == "") { - return NULL; - } - bool appFound = false; - for ( QAD_Application* app = myApps.first(); app; app = myApps.next() ) { - appFound = true; - QAD_Study* openStudy = app->loadStudy( studyname ); - if (openStudy) { - // if (myActiveApp == 0) - //myActiveApp = app; - return openStudy; - } - break; - } - return NULL; -} - - -/*! - Opens the existing study. - Displays select file dialog and calls corresponding function of - application class - (application is defined according to extension of selected file). -*/ -void QAD_Desktop::onOpenStudy() -{ - QString name, ext; - - /* Select a file to open */ - name = selectFileName ( true ); - if ( name.isNull() || name.isEmpty() ) - return; - - // Workaround for non-existent files - QFileInfo fi(name); - if (!fi.exists() || !fi.isFile()) { - QAD_MessageBox::error1 ( this, tr("ERR_ERROR"), - tr("ERR_DOC_CANTOPEN") +": " + name, - tr("BUT_OK") ); - return; - } - - CORBA::Object_var obj = myNameService->Resolve("/myStudyManager"); - SALOMEDS::StudyManager_var myStudyMgr = SALOMEDS::StudyManager::_narrow(obj); - ASSERT(! CORBA::is_nil(myStudyMgr)); - SALOMEDS::ListOfOpenStudies_var List = myStudyMgr->GetOpenStudies(); - for (unsigned int ind = 0; ind < List->length();ind++) { - QString NameExistingStudy(List[ind]); - QString NameOpeningStudy = QAD_Tools::getFileNameFromPath( name, true ); - if ( NameExistingStudy.compare( NameOpeningStudy ) == 0 ) { - if ( QAD_MessageBox::warn2 ( this, tr("WRN_WARNING"), - tr("QUE_DOC_ALREADYEXIST").arg( name ), - tr ("BUT_YES"), tr ("BUT_NO"), QAD_YES, QAD_NO, - QAD_NO ) == QAD_NO ) - { - putInfo ( tr("INF_READY") ); - return; - } -// else -// { -// onLoadStudy(); -// return; -// } - } - } - - /* - Try to associate an application to the opened study. - Assumed that the association study<->application is unique. - */ - bool appFound = false; - putInfo ( tr("INF_DOC_OPENING") + " " + name ); - for ( QAD_Application* app = myApps.first(); app; app = myApps.next() ) - { - QString ext = QAD_Tools::getFileExtensionFromPath ( name ); - if ( app->getStudyExtension() == ext ) - { - /* application found */ - if ( app->isStudyOpened( name ) ) - { - /* already opened: prompt for reopen */ - if ( QAD_MessageBox::warn2 ( this, tr("WRN_WARNING"), - tr("QUE_DOC_ALREADYOPEN").arg( name ), - tr ("BUT_YES"), tr ("BUT_NO"), QAD_YES, QAD_NO, - QAD_NO ) == QAD_NO ) - { - putInfo ( tr("INF_READY") ); - return; - } - /* now the study is closed to be re-opened */ - //don't ask user to remove study permanently - if (app->getStudyByName ( name ) != NULL) - onCloseStudy ( app->getStudyByName ( name ), false ); - else if (app->getStudyByName ( QAD_Tools::getFileNameFromPath( name, true )) != NULL) - onCloseStudy ( app->getStudyByName ( QAD_Tools::getFileNameFromPath( name, true )), false ); - } - appFound = true; - - /* open the study */ - QAD_Study* openStudy = app->openStudy( name ); - if ( !openStudy ) { - QAD_MessageBox::error1( this, - tr("ERR_ERROR"), - tr("ERR_DOC_CANTOPEN") + "\n" + name, - tr("BUT_OK") ); - } - break; - } - } - - if ( !appFound ) - { - QAD_MessageBox::error1( this, - tr("ERR_ERROR"), - tr("ERR_DOC_UNKNOWNTYPE"), - tr("BUT_OK")); - } - putInfo ( tr("INF_READY") ); -} - -bool QAD_Desktop::loadComponentData( const QString& compName ) -{ - QAD_WaitCursor wc; - - if ( compName.isEmpty() ) { - MESSAGE("loadComponentData(): empty component name passed!") - return false; - } - - // Open component's data in active study if any - MESSAGE("loadComponentData(): Opening " << compName << " component data ") - if (!myActiveStudy) { - MESSAGE("loadComponentData(): No active study exists") - return false; - } - - Engines::Component_var comp ; - if ( compName.compare("SUPERV") == 0 ) { - comp = getEngine( "SuperVisionContainer", compName) ; - } - else { - /* comp = ( compName.compare("Data1") != 0 ) ? getEngine( "FactoryServer", compName) : - getEngine( "FactoryServerPy", compName); - */ - comp = getEngine( "FactoryServer", compName); - if ( comp->_is_nil() ) - comp = getEngine( "FactoryServerPy", compName); - } - - if ( CORBA::is_nil( comp ) ) { - MESSAGE("loadComponentData(): Engine is null"); - return false; - } - - SALOMEDS::Study_var aStudy = myActiveStudy->getStudyDocument(); - SALOMEDS::SComponent_var SCO = SALOMEDS::SComponent::_narrow(aStudy->FindObject( getComponentUserName(compName) )); - - if (!SCO->_is_nil()) { - SALOMEDS::Driver_var driver = SALOMEDS::Driver::_narrow(comp); - if (!CORBA::is_nil(driver)) { - SALOMEDS::StudyBuilder_var B = aStudy->NewBuilder(); - if (!CORBA::is_nil(B)) { - try { - B->LoadWith(SCO,driver); - } - catch( const SALOME::SALOME_Exception& ) { - // Oops, something went wrong while loading -> return an error - return false; - } - } - } else { - MESSAGE("loadComponentData(): Driver is null"); - // Incorrect! All components should inherit SALOMEDS::Driver - return false; - } - } else { - MESSAGE("loadComponentData(): SComponent is null"); - // Don't return false here, for there might be no data - // for a given component in the study yet - } - - return true; -} - -/*! - Saves the active study -*/ -bool QAD_Desktop::onSaveStudy() -{ - return onSaveStudy ( myActiveStudy ); -} - -/*! - Saves the given study -*/ -bool QAD_Desktop::onSaveStudy( QAD_Study* study ) -{ - if ( !study ) return true; - - if ( !study->isSaved() ) - return onSaveAsStudy ( study ); - - /* saving study... */ - QAD_Application* app = study->getApp(); - QAD_ASSERT_DEBUG_ONLY ( app ); - putInfo ( tr("INF_DOC_SAVING") + study->getTitle() ); - if ( !app->saveStudy( study ) ) - { - putInfo( tr("INF_CANCELLED") ); - return false; - } - - /* saved ok */ - putInfo ( tr("INF_DOC_SAVED").arg( "" ) ); - return true; -} - -/*! - Saves the active study under a new name -*/ -bool QAD_Desktop::onSaveAsStudy() -{ - return onSaveAsStudy( myActiveStudy ); -} - -/*! - Saves the given study under a new name -*/ -bool QAD_Desktop::onSaveAsStudy( QAD_Study* study ) -{ - if ( !study ) return true; - - /* Save study in a format supported by its application - */ - QAD_Application* app = study->getApp(); - QAD_ASSERT_DEBUG_ONLY ( app ); - - /* Select a file where to save - */ - QString name = selectFileName ( false ); - if ( name.isNull() || name.isEmpty() ) - { - putInfo( tr("INF_CANCELLED") ); - return false; - } - - /* Saving study - */ - putInfo ( tr("INF_DOC_SAVING") + name ); - if ( !app->saveAsStudy( study, name ) ) { - /* can't save the file */ - QAD_MessageBox::error1( this, - tr("ERR_ERROR"), - tr("ERR_DOC_CANTWRITE") + "\n" + name, - tr("BUT_OK") ); - putInfo(""); - return false; /* cannot save */ - } - putInfo ( tr("INF_DOC_SAVED").arg( name ) ); - return true; /* saved ok */ -} - -/*! - Closes the active study -*/ -bool QAD_Desktop::onCloseStudy() -{ - bool close = this->onCloseStudy ( getActiveStudy(), true ); - return close; -} - -/*! - Closes the given study and ask user to remove study - from the study manager permanently -*/ -bool QAD_Desktop::onCloseStudy( QAD_Study* study ) -{ - return onCloseStudy( study, true ); -} - -/*! - Closes the given study and ask user to remove study - from the study manager permanently if ask is equal true -*/ -bool QAD_Desktop::onCloseStudy( QAD_Study* study, bool ask ) -{ - bool removePerm = false; - - if ( ask ) - { - SALOMEGUI_CloseDlg aDlg( this ); - int res = aDlg.exec(); - - switch ( res ) - { - case 1: - //if ( study->isModified() ) - if ( !onSaveStudy( study ) ) { - putInfo( tr("INF_CANCELLED") ); - return false; - } - removePerm = true; - break; - case 2: - removePerm = true; - break; - case 3: - removePerm = false; - break; - case 0: - default: - putInfo( tr("INF_CANCELLED") ); - return false; - } - } - /* close active component */ - if (!myXmlHandler->myIdList.IsEmpty()) - { - deactivateComponent(); - clearMenus(); - myActiveComp=""; - myCombo->setCurrentItem (0); - for ( QToolButton* aButton=myComponentButton.first(); aButton; aButton=myComponentButton.next() ) - aButton->setOn(false); - qApp->processEvents(); - } - /* close the study */ - return study->getApp()->closeStudy( study, removePerm ); -} - -// Displays study properties dialog box -void QAD_Desktop::onStudyProperties() -{ - if (myActiveStudy) { - // open transaction - QAD_Operation* op = new QAD_Operation( myActiveStudy ); - op->start(); - - SALOMEGUI_StudyPropertiesDlg aDlg(this); - int res = aDlg.exec(); - - if ( res == QDialog::Accepted && aDlg.isChanged() ) - op->finish(); - else - op->abort(); - - // T2.12 - add the word "locked" to study frame captions if study is locked - myActiveStudy->updateCaptions(); - } -} - - -/*! - locate all windows in cascade mode - and resize them -*/ -void QAD_Desktop::onCascade() -{ - myWorkspace->cascade(); - int w = myWorkspace->width(); - int h = myWorkspace->height(); - QWidgetList wList = myWorkspace->windowList(); - QWidgetListIt it(wList); - - for(;it.current(); ++it) - it.current()->resize((int)(0.8*w), (int)(0.8*h)); -} - -// /*! -// called when help window closed -// */ -// void QAD_Desktop::onHelpWindowClosed() -// { -// myHelpWindow = 0; -// } - -/*! - Called when 'view status bar' option - is switched on/off. -*/ -void QAD_Desktop::onViewStatusBar() -{ - bool show = myStdActions.at( ViewStatusBarId )->isOn(); - if ( show == myStatusBar->isVisible() ) - return; - if ( show ) - myStatusBar->show(); - else - myStatusBar->hide(); -} - -/*! - Called when View/Toolbars popup menu is about to show -*/ -void QAD_Desktop::onToolBarPopupAboutToShow() -{ - myToolBarAction.clear(); - myToolBarsPopup.clear(); - QPtrList wlist = dockWindows(); - for ( QDockWindow* w = wlist.first(); w; w = wlist.next() ) { - if ( w->inherits( "QToolBar" ) ) { - QToolBar* tb = ( QToolBar* )w; - if ( appropriate( tb ) ) { - ToggleAction* a = new ToggleAction( tb->label(), tb->label(), 0, this, 0, true ); - a->setStatusTip ( tr("PRP_DESK_VIEW_TOOLBAR") ); - a->setOn( tb->isVisible() ); - QAD_ASSERT( connect( a, SIGNAL( toggledOn() ), tb, SLOT( show() ) ) ); - QAD_ASSERT( connect( a, SIGNAL( toggledOff() ), tb, SLOT( hide() ) ) ); - a->addTo( &myToolBarsPopup ); - myToolBarAction.append( a ); - } - } - } -} - -/*! - Called on 'View\Selection Mode' -*/ -void QAD_Desktop::onSelectionMode() -{ - const QActionP* obj = (QActionP*) sender(); - - Selection_Mode SelectionMode = ActorSelection; - - if ( obj == myStdActions.at(SelectionActorId) ) { - SelectionMode = ActorSelection; - if ( obj->isOn() ) { - myStdActions.at(SelectionCellId)->setOn(false); - myStdActions.at(SelectionEdgeId)->setOn(false); - myStdActions.at(SelectionPointId)->setOn(false); - } else - myStdActions.at(SelectionActorId)->setOn(true); - - } else if ( obj == myStdActions.at(SelectionCellId) ) { - SelectionMode = CellSelection; - if ( obj->isOn() ) { - myStdActions.at(SelectionActorId)->setOn(false); - myStdActions.at(SelectionEdgeId)->setOn(false); - myStdActions.at(SelectionPointId)->setOn(false); - } else - myStdActions.at(SelectionActorId)->setOn(true); - - } else if ( obj == myStdActions.at(SelectionEdgeId) ) { - SelectionMode = EdgeOfCellSelection; - if ( obj->isOn() ) { - myStdActions.at(SelectionActorId)->setOn(false); - myStdActions.at(SelectionCellId)->setOn(false); - myStdActions.at(SelectionPointId)->setOn(false); - } else - myStdActions.at(SelectionActorId)->setOn(true); - - } else if ( obj == myStdActions.at(SelectionPointId) ) { - SelectionMode = NodeSelection; - if ( obj->isOn() ) { - myStdActions.at(SelectionEdgeId)->setOn(false); - myStdActions.at(SelectionCellId)->setOn(false); - myStdActions.at(SelectionActorId)->setOn(false); - } else - myStdActions.at(SelectionActorId)->setOn(true); - } - - QAD_StudyFrame* sf = myActiveApp->getActiveStudy()->getActiveStudyFrame(); - sf->getRightFrame()->getViewFrame()->SetSelectionMode( SelectionMode ); - - SALOME_Selection* Sel = SALOME_Selection::Selection( myActiveApp->getActiveStudy()->getSelection() ); - Sel->SetSelectionMode( SelectionMode ); -} - -/*! - Called on 'View\Selection Mode' -*/ -void QAD_Desktop::SetSelectionMode(Selection_Mode mode, bool activeCompOnly) -{ - switch (mode) { - case NodeSelection: - { - myStdActions.at(SelectionEdgeId)->setOn(false); - myStdActions.at(SelectionCellId)->setOn(false); - myStdActions.at(SelectionActorId)->setOn(false); - myStdActions.at(SelectionPointId)->setOn(true); - break; - } - case EdgeOfCellSelection: - { - myStdActions.at(SelectionActorId)->setOn(false); - myStdActions.at(SelectionCellId)->setOn(false); - myStdActions.at(SelectionPointId)->setOn(false); - myStdActions.at(SelectionEdgeId)->setOn(true); - break; - } - case CellSelection: - case EdgeSelection: - case FaceSelection: - case VolumeSelection: - { - myStdActions.at(SelectionActorId)->setOn(false); - myStdActions.at(SelectionEdgeId)->setOn(false); - myStdActions.at(SelectionPointId)->setOn(false); - myStdActions.at(SelectionCellId)->setOn(true); - break; - } - case ActorSelection: - { - myStdActions.at(SelectionCellId)->setOn(false); - myStdActions.at(SelectionEdgeId)->setOn(false); - myStdActions.at(SelectionPointId)->setOn(false); - myStdActions.at(SelectionActorId)->setOn(true); - break; - } - } - - QAD_StudyFrame* sf = myActiveApp->getActiveStudy()->getActiveStudyFrame(); - if ( sf->getTypeView() == VIEW_VTK ) { - sf->getRightFrame()->getViewFrame()->SetSelectionMode( mode ); - SALOME_Selection* Sel = SALOME_Selection::Selection( myActiveApp->getActiveStudy()->getSelection() ); - Sel->SetSelectionMode( mode, activeCompOnly ); - } else { - } -} - -/*! - Called on 'Window\NewWindow3d' -*/ -void QAD_Desktop::onNewWindow3d() -{ - //NRI : SAL2214 - /* - //VRV: T2.5 - add default viewer - QApplication::restoreOverrideCursor(); - SALOMEGUI_ViewChoiceDlg *choice = new SALOMEGUI_ViewChoiceDlg(this, "", TRUE); - int r = choice->exec(); - if (r) - { - myActiveApp->getActiveStudy()->newWindow3d(QString(""),(ViewType)(choice->getSelectedViewer())); - } - //VRV: T2.5 - add default viewer - */ - const QActionP* obj = (QActionP*) sender(); - if ( obj == myStdActions.at(ViewOCCId) ) { - myActiveApp->getActiveStudy()->newWindow3d(QString(""),(ViewType)(0)); - } else if ( obj == myStdActions.at(ViewVTKId) ) { - myActiveApp->getActiveStudy()->newWindow3d(QString(""),(ViewType)(1)); - } else if ( obj == myStdActions.at(ViewPlot2dId) ) { - myActiveApp->getActiveStudy()->newWindow3d(QString(""),(ViewType)(3)); - } - //NRI : SAL2214 -} - -// Helps to execute command -class RunBrowser: public QThread { -public: - - RunBrowser(QString theApp, QString theParams, QString theHelpFile, QString theContext=NULL): - myApp(theApp), myParams(theParams), myHelpFile("file:" + theHelpFile + theContext), myStatus(0) {}; - - virtual void run() - { - QString aCommand; - - if ( !myApp.isEmpty()) - { - aCommand.sprintf("%s %s %s",myApp.latin1(),myParams.latin1(),myHelpFile.latin1()); - myStatus = system(aCommand); - if(myStatus != 0) - { - QCustomEvent* ce2000 = new QCustomEvent (2000); - postEvent (qApp, ce2000); - } - } - - if( myStatus != 0 || myApp.isEmpty()) - { - myParams = ""; - aCommand.sprintf("%s %s %s", QString(DEFAULT_BROWSER).latin1(),myParams.latin1(), myHelpFile.latin1()); - myStatus = system(aCommand); - if(myStatus != 0) - { - QCustomEvent* ce2001 = new QCustomEvent (2001); - postEvent (qApp, ce2001); - } - } - } - -private: - QString myApp; - QString myParams; - QString myHelpFile; - int myStatus; - -}; - -// Provide status tip for GUI help menu item - -void QAD_Desktop::onHelpModulePopupStatusText(int id) -{ - int Id = myHelpPopup.idAt( 0 ); // HelpContentsModuleId - // MESSAGE ( "myHelpContentsModulePopup : " << id << "-" << Id) - if (id == Id) - putInfo("Shows the help contents of each module"); -} - -/*! - Called on 'help\contents' -*/ -void QAD_Desktop::onHelpContents() -{ if (myActiveComp == "") - myActiveComp = getComponentUserName( "KERNEL" ); //NRI "Salome"; - - QCString dir; - QString root; - QString homeDir; - if (dir = getenv( getComponentName( myActiveComp ) + "_ROOT_DIR")) { - root = QAD_Tools::addSlash( QAD_Tools::addSlash(dir) + QAD_Tools::addSlash("share") + QAD_Tools::addSlash("salome") + QAD_Tools::addSlash("doc") + "html" ); - if ( QFileInfo( root + "index.html" ).exists() ) { - homeDir = root; - } else { - QMessageBox::warning( this, tr("WRN_WARNING"), - QString( "%1index.html doesn't exist." ).arg(root), tr ("BUT_OK") ); - return; - } - } - - QString helpFile = QFileInfo( homeDir + "index.html" ).absFilePath(); - QString anApp = QAD_CONFIG->getSetting("ExternalBrowser:Application"); - QString aParams = QAD_CONFIG->getSetting("ExternalBrowser:Parameters"); - - RunBrowser* rs = new RunBrowser(anApp, aParams, helpFile); - rs->start(); -} - -/*! - Called on 'Module Help Reference' -*/ -void QAD_Desktop::onHelpContentsModule() -{ - const QActionP* obj = (QActionP*) sender(); - - QString aComponentName = obj->name(); - QString aFileName = aComponentName + "_index.html"; - - QCString dir; - QString root; - QString homeDir; - if (dir = getenv( aComponentName + "_ROOT_DIR")) { - root = QAD_Tools::addSlash( QAD_Tools::addSlash(dir) + QAD_Tools::addSlash("doc") + QAD_Tools::addSlash("salome") ); - if ( QFileInfo( root + aFileName ).exists() ) { - homeDir = root; - } else { - QMessageBox::warning( this, tr("WRN_WARNING"), - QString( "%1"+ aFileName + " doesn't exist." ).arg(root), tr ("BUT_OK") ); - return; - } - } - - QString helpFile = QFileInfo( homeDir + aFileName ).absFilePath(); - QString anApp = QAD_CONFIG->getSetting("ExternalBrowser:Application"); - QString aParams = QAD_CONFIG->getSetting("ExternalBrowser:Parameters"); - - RunBrowser* rs = new RunBrowser(anApp, aParams, helpFile); - rs->start(); -} - -/*! - Called on 'help\TUI Reference' -*/ - -/* Commented -void QAD_Desktop::onHelpContentsTUI() -{ - if (myActiveComp == "") - myActiveComp = getComponentUserName( "KERNEL" ); //NRI "Salome"; - - QCString dir; - QString root; - QString homeDir; - if (dir = getenv( getComponentName( myActiveComp ) + "_ROOT_DIR")) { - root = QAD_Tools::addSlash( QAD_Tools::addSlash(dir) + QAD_Tools::addSlash("doc") + "html" ); - if ( QFileInfo( root + "index.html" ).exists() ) { - homeDir = root; - } else if (QFileInfo( root + "html/index.html" ).exists()) - homeDir = root + QAD_Tools::addSlash("html"); - else { - QMessageBox::warning( this, tr("WRN_WARNING"), - QString( "%1index.html doesn't exist." ).arg(root), tr ("BUT_OK") ); - return; - } - } - - QString helpFile = QFileInfo( homeDir + "index.html" ).absFilePath(); - - QString anApp = QAD_CONFIG->getSetting("ExternalBrowser:Application"); - QString aParams = QAD_CONFIG->getSetting("ExternalBrowser:Parameters"); - - RunBrowser* rs = new RunBrowser(anApp, aParams, helpFile); - rs->start(); -} -*/ - - -// /*! -// Called on 'help\search' -// */ -// void QAD_Desktop::onHelpSearch() -// { -// if (myActiveApp) -// myActiveApp->helpSearch(); -// else -// helpSearch(); -// } - -/*! - Called on 'help\about' -*/ -void QAD_Desktop::onHelpAbout() -{ - if (myActiveApp) - myActiveApp->helpAbout(); - else - helpAbout(); -} - - -/*! - Activates the application and its active study -*/ -void QAD_Desktop::onActivateApp( QAD_Application* activeApp ) -{ - bool appChanged = ( activeApp != myActiveApp ); - if ( appChanged ) - { - updateDesktop( DeactivateApp ); - } - if ( activeApp ) - { - myActiveApp = activeApp; - myActiveStudy = myActiveApp->getActiveStudy(); - } - else - { - myActiveApp = 0; - myActiveStudy = 0; - } - - if ( appChanged ) - { - updateDesktop( ActivateApp ); - updateCaption( (activeApp != NULL) ? ActivateApp : DeactivateApp ); - } - updateActions(); -} - -/*! - Called when the last study is removed from - the application 'app'. -*/ -void QAD_Desktop::onDeactivateApp(QAD_Application* app) -{ - if ( app && app == myActiveApp ) - onActivateApp( 0 ); -} - -/*! - Enables/disables standard actions -*/ -void QAD_Desktop::updateActions() -{ - myStdActions.at( FileCloseId )->setEnabled ( myActiveStudy != NULL ); - myStdActions.at( FileSaveId )->setEnabled ( myActiveStudy != NULL ); - myStdActions.at( FileSaveAsId )->setEnabled ( myActiveStudy != NULL ); - myStdActions.at( FilePropsId )->setEnabled( myActiveStudy != NULL ); -// myStdActions.at( HelpContentsId )->setEnabled ( myActiveApp != NULL ); -// myStdActions.at( HelpSearchId )->setEnabled ( myActiveApp != NULL ); -// myStdActions.at( HelpWhatsThisId )->setEnabled ( myActiveApp != NULL ); -// myStdActions.at( HelpAboutId )->setEnabled ( myActiveApp != NULL ); - -// myToolsPopup.setEnabled ( myActiveStudy != NULL ); -// myPrefPopup.setEnabled ( myActiveStudy != NULL ); - - mySelectionModePopup.setEnabled ( myActiveStudy != NULL ); - - // VSR ==> SAL2982 - myStdActions.at( ViewOCCId )->setEnabled( myActiveStudy != NULL ); - myStdActions.at( ViewVTKId )->setEnabled( myActiveStudy != NULL ); - myStdActions.at( ViewPlot2dId )->setEnabled( myActiveStudy != NULL ); - // VSR <== SAL2982 -} - -/*! - Called when 'Window' popup is about to show -*/ -void QAD_Desktop::onWindowPopupAboutToShow() -{ - /* add cascade/tile items */ - myWindowPopup.clear(); - - //NRI : SAL2214 - //myStdActions.at( WindowNew3dId )->addTo( &myWindowPopup ); - myWindowPopup.insertItem( tr("MEN_DESK_WINDOW_NEW3D"), &myNewViewPopup, WindowNew3dId ); - //myStdActions.at( WindowNew3dId )->setEnabled( true ); - myWindowPopup.setItemEnabled( WindowNew3dId, true ); - //NRI : SAL2214 - myStdActions.at( WindowCascadeId )->addTo( &myWindowPopup ); - myStdActions.at( WindowCascadeId )->setEnabled( true ); - myStdActions.at( WindowTileId )->addTo( &myWindowPopup ); - myStdActions.at( WindowTileId )->setEnabled( true ); - - /* add names of opened studies */ - QWidgetList windows = myWorkspace->windowList(); - if ( windows.isEmpty() ) - { - //NRI : SAL2214 myStdActions.at( WindowNew3dId )->setEnabled( false ); - myWindowPopup.setItemEnabled( WindowNew3dId, false ); - //NRI : SAL2214 - myStdActions.at( WindowCascadeId )->setEnabled( false ); - myStdActions.at( WindowTileId )->setEnabled( false ); - } - else - { - myWindowPopup.insertSeparator(); - for ( int i = 0; i < int(windows.count()); ++i ) - { - int id = myWindowPopup.insertItem( windows.at(i)->caption(), - this, SLOT( onWindowsPopupActivated( int ) ) ); - myWindowPopup.setItemParameter( id, i ); - myWindowPopup.setItemChecked( id, myWorkspace->activeWindow() == windows.at(i) ); - } - QAD_ASSERT( connect( &myWindowPopup, SIGNAL(highlighted( int )), this, - SLOT(onWindowsPopupStatusText( int )) )); - } -} - -/*! - Called when the item with 'id' of 'Windows' popup - is highlighted -*/ -void QAD_Desktop::onWindowsPopupStatusText( int id ) -{ - int cascadeId = myWindowPopup.idAt( 1 ); - int tileId = myWindowPopup.idAt( 2 ); - if ( id == cascadeId || id == tileId ) - return; - putInfo( tr("PRP_DESK_WINDOW_ACTIVATE") ); -} - -/*! - Called when user wants to activate a child window with 'wid' - in the main frame -*/ -void QAD_Desktop::onWindowsPopupActivated( int wid ) -{ - QWidget* w = myWorkspace->windowList().at( wid ); - if ( w ) w->setFocus(); -} - -/*! - Selects a file name when opening or saving files. - The basic implementation just uses the standard - Open/Save dialogs. - Please redefine if another behaviour is required. -*/ -QString QAD_Desktop::selectFileName ( bool open ) -{ - QAD_FileDlg* fd = new QAD_FileDlg( this, open, true, true ); - - QString name = ""; - QString dir = ""; - QStringList filters; - - if (open) { - // All the file types of the supported applications - // can be opened - for ( QAD_Application* app = myApps.first(); app; app = myApps.next() ) - { - filters += app->getStudyDescription() + " " + tr("DESK_FILES") + " " + - "(*." + app->getStudyExtension() + ")"; - } - } - else { - QAD_ASSERT_DEBUG_ONLY ( myActiveStudy ); - if (myActiveStudy) { - // get file name of active study - name = QAD_Tools::getFileNameFromPath ( myActiveStudy->getTitle() ); - // get path to the active study file - dir = QAD_Tools::getDirFromPath ( myActiveStudy->getPath(), false ); - } - QAD_ASSERT_DEBUG_ONLY ( !name.isNull() ); - // the file types supported by the active application - filters += myActiveApp->getStudyDescription() + " " + tr("DESK_FILES") + " " + - "(*." + myActiveApp->getStudyExtension() + ")" ; - } - if (!dir.isEmpty()) { - // when saving document ("Save As" command) - to get dir from active study filename - // for new documents - to use last opened directory - fd->setDir( dir ); - } - fd->setSelection( name ); - fd->setFilters( filters ); - - fd->exec(); - QString filename = fd->selectedFile(); - delete fd; - qApp->processEvents(); - return filename; -} - -/*! - Closes all the studies of 'app'. Returns - 'true' if thay are closed OK, 'false' at least - one can't be closed or user cancel the closure. -*/ -bool QAD_Desktop::closeAllStudies( QAD_Application* app ) -{ - QList& studies = app->getStudies(); - while ( !studies.isEmpty() ) - { - //don't ask user to remove study permanently - if ( !onCloseStudy( studies.at(0), false ) ) - return false; /* user cancelled closing */ - } - return true; -} - -/*! - Called on Popup item when SComponent representation in Object Browser is selected. -*/ -void QAD_Desktop::onOpenWith() -{ - Engines::Component_var comp; - QString ComponentSelected; - - SALOMEDS::SObject_var SO; - SALOMEDS::SComponent_var SCO; - SALOMEDS::Study_var aStudy = myActiveStudy->getStudyDocument(); - SALOMEDS::GenericAttribute_var anAttr; - SALOMEDS::AttributeName_var aName; - - SALOME_Selection* Sel = SALOME_Selection::Selection( myActiveStudy->getSelection() ); - if ( Sel->IObjectCount() == 1 ) { - Handle(SALOME_InteractiveObject) IO = Sel->firstIObject(); - SO = aStudy->FindObjectID( IO->getEntry() ); - SCO = SO->GetFatherComponent(); - char* name; - if (SCO->FindAttribute(anAttr, "AttributeName")) { - aName = SALOMEDS::AttributeName::_narrow(anAttr); - name = aName->Value(); - if ( getComponentName( name ).isEmpty() ) - return; - SALOME_ModuleCatalog::Acomponent_var Comp = myCatalogue->GetComponent( getComponentName(name) ); - if ( !Comp->_is_nil() ) { - - SALOME_ModuleCatalog::ListOfComponents_var list_type_composants = - myCatalogue->GetTypedComponentList( Comp->component_type() ); - - if ( list_type_composants->length() == 1 ) { - ComponentSelected = name; - } else if ( list_type_composants->length() > 1 ) { - SALOMEGUI_OpenWith* aDlg = new SALOMEGUI_OpenWith( this ); - for (unsigned int ind = 0; ind < list_type_composants->length();ind++) { - QString compusername = getComponentUserName( (char*)list_type_composants[ind] ); - if ( !compusername.isEmpty() ) - aDlg->addComponent( compusername ); - } - - int retVal = aDlg->exec(); - ComponentSelected = aDlg->getComponent(); - delete aDlg; - if ( retVal == QDialog::Rejected || ComponentSelected.isEmpty()) { - return; - } - } else { - MESSAGE( "No component with type : " << Comp->component_type() << " exists" ); - return; - } - - } else { - MESSAGE( "This component not exists in the catalog" ); - return; - } - - QApplication::setOverrideCursor( Qt::waitCursor ); - Sel->ClearIObjects(); - -// if (loadComponentData(ComponentSelected)) { - onComboActiveComponent(ComponentSelected); -// int nbItem = myCombo->count(); -// int Index = 0; -// for (int i = 0; i < nbItem; i++) { -// if (myCombo->text(i).compare(ComponentSelected)==0) { -// Index = i; -// break; -// } -// } -// myCombo->setCurrentItem(Index); -// myActiveStudy->updateObjBrowser(true); -// } - } - } - QApplication::restoreOverrideCursor(); -} - - -/*! - Called to define settings of component. -*/ -void QAD_Desktop::setSettings() -{ - SALOMEGUI* anActiveGUI = getActiveGUI(); - if ( anActiveGUI ) { - QString Component = mapComponentName[myActiveComp]; - anActiveGUI->SetSettings( this, (char*)Component.latin1() ); - } -} - -/*! - Called to load Component : xml resources and GUI librairy. -*/ -bool QAD_Desktop::loadComponent(QString Component) -{ - if ( Component.isEmpty() ) { - MESSAGE("loadComponent(): empty component name passed!") - return false; - } - - QAD_WaitCursor wc; - QString resDir("/"); //NRI : Pb under Windows - - QAD_ResourceMgr* resMgr = QAD_Desktop::createResourceManager(); - if ( resMgr ) { - QString msg; - if (!resMgr->loadResources( Component, msg )) - { - //NRI QCString errMsg; - // errMsg.sprintf( "Do not load all resources for module %sGUI.\n" , - // Component.latin1() ); - wc.stop(); - QMessageBox::warning( this, tr("WRN_WARNING"), msg, tr ("BUT_OK") ); - return false; - } - } - - /* Parse xml file */ - myXmlHandler = new QAD_XmlHandler(); - myXmlHandler->setMainWindow(this); - if (!myXmlHandler->setComponent(resMgr->resources( Component ))) return false; - - QString language = resMgr->language( Component ); - - QString ComponentXml = Component + "_" + language + ".xml"; - //ComponentXml = resMgr->resources(Component + "GUI") ; - //ComponentXml = QAD_Tools::addSlash(ComponentXml) ; - ComponentXml = QAD_Tools::addSlash( resMgr->findFile( ComponentXml, Component ) ) + ComponentXml; - QFile file( ComponentXml ); - - if ( !file.exists() || !file.open( IO_ReadOnly ) ) { - QString errMsg; - errMsg.sprintf( "Cannot open xml file: %s\n.", - (file.name()).latin1() ); - wc.stop(); - QMessageBox::critical( this, tr("ERR_ERROR"), errMsg, tr ("BUT_OK") ); - return false; - } - file.close(); - - QXmlInputSource source( file ); - QXmlSimpleReader reader; - reader.setContentHandler( myXmlHandler ); - reader.setErrorHandler( myXmlHandler ); - - bool IsMaxActStudy = myActiveStudy->getActiveStudyFrame()->isMaximized(); - if (IsMaxActStudy) { - QString aSourceData = source.data(); - aSourceData = changeXmlInputSourceData( aSourceData, Component ); - source.setData(aSourceData); - } - - bool ok = reader.parse( source ); - file.close(); - if ( !ok ) { - wc.stop(); - QMessageBox::critical( this, - tr( "INF_PARSE_ERROR" ), - tr( myXmlHandler->errorProtocol() ) ); - return false; - } - - myMenusList=myXmlHandler->myMenusList; - myActiveMenus=myMenusList.at(0); - myOperatorMenus->showMenuBar(0); - myActiveMenus->showAllToolBars(); - - /* Components toolbars */ - int nbToolbars = 0; - if (myActiveMenus) - nbToolbars = myActiveMenus->getToolBarList().count(); - - /* COMPONENT INTERFACE */ - SALOME_ModuleCatalog::Acomponent_ptr aComponent = - myCatalogue->GetComponent(Component.latin1()); - - if (CORBA::is_nil (aComponent)) { - MESSAGE( "Catalog Error : Component not found in the catalog" ) - return false; - } - - myActiveStudy->setMessage(QString("Component : ") + - aComponent->componentusername() + " created " ); - myActiveStudy->setMessage(QString("Type : ") + - QString::number(aComponent->component_type())); - myActiveStudy->setMessage(QString("Constraint : ") + - aComponent->constraint() ); - - /* obtain interfaces list of the component */ - SALOME_ModuleCatalog::ListOfInterfaces_var _list = - new SALOME_ModuleCatalog::ListOfInterfaces; - _list = aComponent->GetInterfaceList(); - - if (_list->length() != 0 ) { - - for (unsigned int ind = 0; ind < _list->length();ind++) - myActiveStudy->setMessage( QString("Interface name : ") + - _list[ind] ); - - - /* obtain services list of the component */ - SALOME_ModuleCatalog::ListOfServices_var list_services_component = - new SALOME_ModuleCatalog::ListOfServices; - list_services_component = aComponent->GetServiceList(_list[0]); - - if (list_services_component->length() != 0 ) { - - for (unsigned int ind = 0; ind < list_services_component->length();ind++) - myActiveStudy->setMessage( QString("Service name : ") + - list_services_component[ind] ); - - // Get a service of the component - SALOME_ModuleCatalog::Service_var service = new SALOME_ModuleCatalog::Service; - service = aComponent->GetService(_list[0],list_services_component[0]) ; - myActiveStudy->setMessage( QString("Service name: ") + service->ServiceName); - for (unsigned int ind1 = 0; ind1 ServiceinParameter.length();ind1++) { - myActiveStudy->setMessage( QString("Type of the in Parameter of this service : ") + - (const char *) service->ServiceinParameter[ind1].Parametertype); - myActiveStudy->setMessage( QString("Name of the in Parameter of this service : ") + - (const char *) service->ServiceinParameter[ind1].Parametername); - } - for (unsigned int ind1 = 0; ind1 ServiceoutParameter.length();ind1++) { - myActiveStudy->setMessage( QString("Type of the out Parameter of this service : ") + - (const char *) service->ServiceoutParameter[ind1].Parametertype); - myActiveStudy->setMessage( QString("Name of the out Parameter of this service : ") + - (const char *) service->ServiceoutParameter[ind1].Parametername); - } - } - } - return true; -} - -QString QAD_Desktop::changeXmlInputSourceData(QString theData, QString theComponent) -{ - // MESSAGE ( " changeXmlInputSourceData : " << theComponent.latin1() ) - if ( theComponent=="SUPERV" ) { - //Supervision main menu item - int aItemId = 300; - int aPosId = 3; - QString aStrOld = createString( aItemId, aPosId ); - QString aStrNew = createString( aItemId, aPosId+1 ); - theData = theData.replace( QRegExp(aStrOld), aStrNew ); - } - - if ( theComponent == "VISU" ) { - //Visualization main menu item - int aItemId = 401; - int aPosId = 3; - QString aStrOld = createString( aItemId, aPosId ); - QString aStrNew = createString( aItemId, aPosId+1 ); - theData = theData.replace( QRegExp(aStrOld), aStrNew ); - - //Selection main menu item - aItemId = 41; - aPosId = 4; - aStrOld = createString( aItemId, aPosId ); - aStrNew = createString( aItemId, aPosId+1 ); - theData = theData.replace( QRegExp(aStrOld), aStrNew ); - - //Representation main menu item - aItemId = 42; - aPosId = 5; - aStrOld = createString( aItemId, aPosId ); - aStrNew = createString( aItemId, aPosId+1 ); - theData = theData.replace( QRegExp(aStrOld), aStrNew ); - } - - if ( theComponent == "SMESH" ) { - //Hypotheses main menu item - int aItemId = 50; - int aPosId = 3; - QString aStrOld = createString( aItemId, aPosId ); - QString aStrNew = createString( aItemId, aPosId+1 ); - theData = theData.replace( QRegExp(aStrOld), aStrNew ); - - //Mesh main menu item - aItemId = 70; - aPosId = 4; - aStrOld = createString( aItemId, aPosId ); - aStrNew = createString( aItemId, aPosId+1 ); - theData = theData.replace( QRegExp(aStrOld), aStrNew ); - - //Controls main menu item - aItemId = 60; - aPosId = 5; - aStrOld = createString( aItemId, aPosId ); - aStrNew = createString( aItemId, aPosId+1 ); - theData = theData.replace( QRegExp(aStrOld), aStrNew ); - - //Modification main menu item - aItemId = 40; - aPosId = 6; - aStrOld = createString( aItemId, aPosId ); - aStrNew = createString( aItemId, aPosId+1 ); - theData = theData.replace( QRegExp(aStrOld), aStrNew ); - - //Numbering main menu item -// aItemId = 80; -// aPosId = 7; -// aStrOld = createString( aItemId, aPosId ); -// aStrNew = createString( aItemId, aPosId+1 ); -// theData = theData.replace( QRegExp(aStrOld), aStrNew ); - } - - if ( theComponent == "GEOM" ) { - //New Entity main menu item - int aItemId = 40; - int aPosId = 3; - QString aStrOld = createString( aItemId, aPosId ); - QString aStrNew = createString( aItemId, aPosId+1 ); - theData = theData.replace( QRegExp(aStrOld), aStrNew ); - - //Operations main menu item - aItemId = 50; - aPosId = 4; - aStrOld = createString( aItemId, aPosId ); - aStrNew = createString( aItemId, aPosId+1 ); - theData = theData.replace( QRegExp(aStrOld), aStrNew ); - - //Repair main menu item - aItemId = 60; - aPosId = 5; - aStrOld = createString( aItemId, aPosId ); - aStrNew = createString( aItemId, aPosId+1 ); - theData = theData.replace( QRegExp(aStrOld), aStrNew ); - - //Measures main menu item - aItemId = 70; - aPosId = 6; - aStrOld = createString( aItemId, aPosId ); - aStrNew = createString( aItemId, aPosId+1 ); - theData = theData.replace( QRegExp(aStrOld), aStrNew ); - } - - if ( theComponent == "MED" ) { - //MED main menu item - int aItemId = 90; - int aPosId = 3; - QString aStrOld = createString( aItemId, aPosId ); - QString aStrNew = createString( aItemId, aPosId+1 ); - theData = theData.replace( QRegExp(aStrOld), aStrNew ); - } - - return theData; -} - -typedef bool OneDim(int, QAD_Desktop*); -typedef void (*PTR_FACTORY_FUNCTION)( CORBA::ORB_var &orb, QWidget *parent, const char *name ) ; - -/*! - */ -void QAD_Desktop::onDispatch() -{ - const QObject* obj = sender(); - - QList MenuList = myActiveMenus->getMenuList(); - QAD_ListMenuIdAction* aMenu; - int id = -1; - for(aMenu=MenuList.first();aMenu!=NULL;aMenu=MenuList.next()) { - if (aMenu->getAction()==obj) { - id = aMenu->getId(); - break; - } - } - onDispatch(id); -} - -/*! - */ -void QAD_Desktop::onDispatchTools(int id) -{ - /* Open Shared Library */ - OSD_SharedLibrary ToolsLibrary = OSD_SharedLibrary(); - - QString ToolsLib; - QCString dir; - QFileInfo fileInfo ; - bool found = false; - - bool libToolsGUI = true; - if( QAD_XmlHandler::_bibmap[ id ].isEmpty() ) - { - if ( (dir = getenv("KERNEL_ROOT_DIR")) && !found ) { - dir = QAD_Tools::addSlash(dir) ; - dir = dir + "lib" ; - dir = QAD_Tools::addSlash(dir) ; - dir = dir + "salome" ; - dir = QAD_Tools::addSlash(dir) ; -#ifdef WNT - dir = dir + "libToolsGUI.dll" ; -#else - dir = dir + "libToolsGUI.so" ; -#endif - MESSAGE ( " GUI library = " << dir ); - fileInfo.setFile(dir) ; - if (fileInfo.exists()) { - ToolsLib = fileInfo.fileName() ; - found = true; - } - } - } - else { - libToolsGUI = false; - SCRUTE( QAD_XmlHandler::_bibmap[ id ] ) ; - if ( (dir = getenv("KERNEL_ROOT_DIR")) && !found ) { - dir = QAD_Tools::addSlash(dir) ; - dir = dir + "lib" ; - dir = QAD_Tools::addSlash(dir) ; - dir = dir + "salome" ; - dir = QAD_Tools::addSlash(dir) ; - dir = dir + QAD_XmlHandler::_bibmap[ id ].latin1() ; - MESSAGE ( " GUI library = " << dir ); - fileInfo.setFile(dir) ; - if (fileInfo.exists()) { - ToolsLib = fileInfo.fileName() ; - found = true; - } - } - } - - ToolsLibrary.SetName(TCollection_AsciiString((char*)ToolsLib.latin1()).ToCString()); - bool ok = ToolsLibrary.DlOpen(OSD_RTLD_LAZY); - if (ok) { - if ( libToolsGUI ) { - OSD_Function osdF = ToolsLibrary.DlSymb("OnGUIEvent"); - OneDim (*f1) = NULL; - f1 = (bool (*) (int, QAD_Desktop*)) osdF; - (*f1)(id,this); - } else { - ORB_INIT &init = *SINGLETON_::Instance() ; - ASSERT(SINGLETON_::IsAlreadyExisting()) ; - CORBA::ORB_var &orb = init(0 , 0 ) ; - OSD_Function osdF = ToolsLibrary.DlSymb("OnGUIEvent"); - PTR_FACTORY_FUNCTION f1 = NULL; - f1 = (PTR_FACTORY_FUNCTION) osdF; - f1(orb,0,"Registry"); - } - } else { - QMessageBox::critical( this, - tr("ERR_ERROR"), - tr( ToolsLibrary.DlError() ) ); - } -} - -/*! - */ -void QAD_Desktop::onDispatch(int id) -{ - SALOMEGUI* anActiveGUI = getActiveGUI(); - if ( anActiveGUI ) - anActiveGUI->OnGUIEvent(id,this); -} - -/*! - Returns the component's catalogue -*/ -SALOME_ModuleCatalog::ModuleCatalog_var QAD_Desktop::getCatalogue() -{ - return myCatalogue; -} - -/*! - */ -void QAD_Desktop::onComboActiveComponent( const QString & component ){ - onComboActiveComponent(component,true); -} -void QAD_Desktop::onComboActiveComponent( const QString & component, bool isLoadData) -{ - if (myActiveStudy != 0) { - if (myActiveComp.compare(component)!=0) { - // deactivate previous component - deactivateComponent(); - - if (!myXmlHandler->myIdList.IsEmpty()) clearMenus(); - if ( myCombo->currentText() != component ) - myCombo->setCurrentText( component ); - //NRI if (component.compare(QString("Salome"))!= 0) { - if (component.compare( getComponentUserName( "KERNEL" ) )!= 0) { -// QApplication::setOverrideCursor( Qt::waitCursor ); - bool isOk = ( !isLoadData || loadComponentData( getComponentName(component) ) ); - if ( !isOk ) { - QAD_MessageBox::error1( this, - tr("ERR_ERROR"), - tr("ERR_COMP_DATA_NOT_LOADED").arg( component ), - tr("BUT_OK") ); - } - - if ( !isOk || !loadComponent( getComponentName(component) ) ) { - myCombo->setCurrentItem (0); - for ( QToolButton* aButton=myComponentButton.first(); aButton; aButton=myComponentButton.next() ) { - aButton->setOn(false); - } - myActiveComp = ""; - return; - } - - myActiveComp = component; - - SALOME_Selection* oldSel = SALOME_Selection::Selection( myActiveStudy->getSelection() ); - - for ( QToolButton* aButton=myComponentButton.first(); aButton; aButton=myComponentButton.next() ) { - if ( aButton->textLabel().compare(component)==0) - aButton->setOn(true); - else - aButton->setOn(false); - } - - myActiveStudy->Selection( component ); - - SALOME_Selection* Sel = SALOME_Selection::Selection( myActiveStudy->getSelection() ); - SALOME_ListIteratorOfListIO It( oldSel->StoredIObjects() ); - for(;It.More();It.Next()) { - int res = Sel->AddIObject( It.Value() ); - - if ( res == -1 ) - myActiveStudy->highlight( It.Value(), false ); - if ( res == 0 ) - myActiveStudy->highlight( It.Value(), true ); - - } - - oldSel->Clear(); - - /* SETTINGS */ - // IMPORTANT: SetSettings() should be called AFTER SALOME_Selection - // has been created for a newly activated component - getComponentGUI(component)->SetSettings( this, (char*)getComponentName(component).latin1() ); - - myActiveStudy->updateObjBrowser(true); - -// QApplication::restoreOverrideCursor(); - - } else { // component == "Salome" - myActiveComp = ""; - //NRI myActiveStudy->Selection( "Salome" ); - myActiveStudy->Selection( getComponentUserName( "KERNEL" ) ); - SALOME_Selection* Sel = SALOME_Selection::Selection( myActiveStudy->getSelection() ); - Sel->ClearIObjects(); - for ( QToolButton* aButton=myComponentButton.first(); aButton; aButton=myComponentButton.next() ) { - aButton->setOn(false); - } - } - } else { - for ( QToolButton* aButton=myComponentButton.first(); aButton; aButton=myComponentButton.next() ) { - if ( aButton->textLabel().compare(component)==0) - aButton->setOn(true); - } - } - } else if (component.compare(QString("Salome"))!= 0) { - - QPixmap pm; - for ( QToolButton* aButton=myComponentButton.first(); aButton; aButton=myComponentButton.next() ) { - if ( aButton->textLabel().compare( component ) == 0 ) - pm = aButton->iconSet().pixmap(); - } - SALOMEGUI_ActivateComponentDlg aDlg( this, component, pm ); - int res = aDlg.exec(); - - switch ( res ) - { - case 1: - onNewStudy(); - onComboActiveComponent(component,true); - break; - case 2: - onOpenStudy(); - onComboActiveComponent(component,true); - break; - case 3: - onLoadStudy(); - onComboActiveComponent(component,true);; - break; - case 0: - default: - putInfo( tr("INF_CANCELLED") ); - myCombo->setCurrentItem (0); - for ( QToolButton* aButton=myComponentButton.first(); aButton; aButton=myComponentButton.next() ) { - aButton->setOn(false); - // return; - } - } - } -} - -/*! - */ -void QAD_Desktop::activateComponent(const QString& theName, bool isLoadData){ - - int nbItem = myCombo->count(); - int Index = 0; - - for (int i = 0; i < nbItem; i++) { - if (myCombo->text(i).compare(theName)==0) { - Index = i; - break; - } - } - myCombo->setCurrentItem (Index); - onComboActiveComponent(theName,isLoadData); -}; - -void QAD_Desktop::onButtonActiveComponent( ) -{ - QToolButton* obj = (QToolButton*)sender(); - activateComponent(obj->textLabel()); -} - -/*! - Clears All Resources of current component - */ -void QAD_Desktop::clearMenus() -{ - // san - commented as presumably obsolete - // onActiveStudyChanged(); - - /* menus */ - myMenusList.clear(); - if (myXmlHandler) { - int length = myXmlHandler->myIdList.Length(); - for (int k=length; k>0; k--) { - QMenuData* parent; - if ( menuBar()->findItem(myXmlHandler->myIdList.Value(k), &parent) ) - parent->removeItem( myXmlHandler->myIdList.Value(k) ); - } - } - - /* toolbars */ - if (myActiveMenus) { - int nbtoolbars = myActiveMenus->getToolBarList().count(); - for (int k=0; kgetToolBarList().at(k)->hide(); - myActiveMenus->getToolBarList().at(k)->clear(); - } - myActiveMenus->clearToolBar(); - - /* popups */ - QList PopupList = myActiveMenus->getPopupMenuList(); - QAD_ListPopupMenu* aPopup; - for(aPopup=PopupList.first();aPopup!=NULL;aPopup=PopupList.next()){ - aPopup->getPopup()->clear(); - - } - myActiveMenus->clearPopupMenu(); - - } - myActiveComp = ""; -} - -typedef bool TwoDim1(QKeyEvent* pe, QAD_Desktop*, QAD_StudyFrame*); -/*! - Exports Key Events in active component ( GUI Librairy ) - */ -void QAD_Desktop::onKeyPress( QKeyEvent* pe ) -{ - // MESSAGE ( "QAD_Desktop::onKeyPress" ) - SALOMEGUI* anActiveGUI = getActiveGUI(); - if ( anActiveGUI ) - anActiveGUI->OnKeyPress(pe,this,myActiveStudy->getActiveStudyFrame()); -} - -typedef bool TwoDim(QMouseEvent* pe, QAD_Desktop*, QAD_StudyFrame*); -/*! - Exports Mouse Press Events in active component ( GUI Librairy ) - */ -bool QAD_Desktop::onMousePress( QMouseEvent* pe ) -{ - // MESSAGE ( "QAD_Desktop::onMousePress" ) - SALOMEGUI* anActiveGUI = getActiveGUI(); - if ( anActiveGUI ) - return anActiveGUI->OnMousePress(pe,this,myActiveStudy->getActiveStudyFrame()); - return false; -} - -/*! - Exports Mouse Move Events in active component ( GUI Librairy ) - */ -void QAD_Desktop::onMouseMove( QMouseEvent* pe ) -{ - SALOMEGUI* anActiveGUI = getActiveGUI(); - if ( anActiveGUI ) - anActiveGUI->OnMouseMove(pe,this,myActiveStudy->getActiveStudyFrame()); -} - -/*! - Returns name of active component -*/ -const QString& QAD_Desktop::getActiveComponent() const -{ - return myActiveComp; -} - -SALOMEGUI* QAD_Desktop::getActiveGUI() -{ - SALOMEGUI* anActiveGUI = 0; - if ( myComponents.find( myActiveComp ) != myComponents.end() ) - anActiveGUI = myComponents[myActiveComp]; - return anActiveGUI; -} - -typedef SALOMEGUI* (*ComponentGUI)(); - -SALOMEGUI* QAD_Desktop::getComponentGUI( const QString& component ) -{ - SALOMEGUI* aCompGUI = 0; - if ( component.isEmpty() || getComponentName( component ).isEmpty() ) - return aCompGUI; - - // Load component GUI if requested for the first time - if ( myComponents.find( component ) == myComponents.end() ) { - OSD_SharedLibrary aSharedLibrary; - QString ComponentLib; - QCString libs; - QFileInfo fileInfo ; - QString fileString ; - QString dir; - - QAD_WaitCursor wc; - - _islibso= false; - - if ( libs = getenv("LD_LIBRARY_PATH")) { - // MESSAGE ( " LD_LIBRARY_PATH : " << libs ); - QStringList dirList = QStringList::split( SEPARATOR, libs, false ); // skip empty entries - for ( int i = dirList.count()-1; i >= 0; i-- ) { - dir = dirList[ i ]; -#ifdef WNT - fileString = QAD_Tools::addSlash( dir ) + "lib" + getComponentName( component ) + "GUI.dll" ; -#else - fileString = QAD_Tools::addSlash( dir ) + "lib" + getComponentName( component ) + "GUI.so" ; -#endif - - fileInfo.setFile(fileString) ; - if (fileInfo.exists()) { - // MESSAGE( " GUI library = " << fileString.latin1() ); - ComponentLib = fileInfo.fileName() ; - _islibso = true; - break; - } - } - } - - if (!_islibso) // component GUI could be in PyQt, use generic library - { - MESSAGE("GUI library not found, trying generic library for PyQt GUI"); - bool found = false; - if (dir = getenv("KERNEL_ROOT_DIR")) - { - dir = QAD_Tools::addSlash(dir) ; - dir = dir + "lib" ; - dir = QAD_Tools::addSlash(dir) ; - dir = dir + "salome" ; - dir = QAD_Tools::addSlash(dir) ; -#ifdef WNT - dir = dir + "libSalomePyQtcmodule.dll" ; -#else - dir = dir + "libSalomePyQtcmodule.so" ; -#endif - MESSAGE ( " GUI library = " << dir ); - fileInfo.setFile(dir) ; - if (fileInfo.exists()) - { - ComponentLib = fileInfo.fileName() ; - found = true; - } - } - if ( !found ) - { - QMessageBox::critical( this, - tr("ERR_ERROR"), - tr("ERR_LIBGUI" ).arg(component) ); - return aCompGUI; - } - } - - aSharedLibrary.SetName(TCollection_AsciiString((char*)ComponentLib.latin1()).ToCString()); - bool ok = aSharedLibrary.DlOpen(OSD_RTLD_LAZY); - if (!ok) { - wc.stop(); - QMessageBox::critical( this, - tr("ERR_ERROR"), - tr( aSharedLibrary.DlError() ) ); - return aCompGUI; - } - - OSD_Function osdF = aSharedLibrary.DlSymb("GetComponentGUI"); - if ( osdF != NULL ) { - ComponentGUI f1 = (SALOMEGUI* (*) ()) osdF; - SALOMEGUI* aCompGUI = (*f1)(); - if ( aCompGUI ) - myComponents.insert( component, aCompGUI ); - else { - wc.stop(); - QMessageBox::critical( this, - tr("ERR_ERROR"), - tr("ERR_GET_GUI_FAILED" ).arg(component) ); - return aCompGUI; - } - } - else { - wc.stop(); - QMessageBox::critical( this, - tr("ERR_ERROR"), - tr("ERR_GET_GUI_NOT_FOUND" ).arg(ComponentLib) ); - return aCompGUI; - } - } - aCompGUI = myComponents[component]; - return aCompGUI; -} - - -/*! - Returns name of active component -*/ -QString QAD_Desktop::getComponentDataType() const -{ - using namespace SALOMEDS; - Study_var aStudy = getActiveStudy()->getStudyDocument(); - SObject_var aSObject = aStudy->FindObject(myActiveComp.latin1()); - SComponent_var aComponent = SComponent::_narrow(aSObject); - if(!aComponent->_is_nil()){ - CORBA::String_var aString = aComponent->ComponentDataType(); - return aString.in(); - } - return ""; -} - -void QAD_Desktop::definePopup(QString & theContext, - QString & theParent, - QString & theObject ) -{ - SALOMEGUI* anActiveGUI = getActiveGUI(); - if ( anActiveGUI ) - anActiveGUI->DefinePopup(theContext, theParent, theObject); -} - - -/*! - Copy popup menu [ static ] -*/ -static void makePopup( QPopupMenu* popup, QPopupMenu* fromPopup, QAD_Desktop* receiver ) -{ - // safe check - if ( !popup || !fromPopup ) - return; - // iterator through all popup items - for ( int i = fromPopup->count()-1; i >= 0; i-- ) { - int cmdId = fromPopup->idAt( i ); - QMenuItem* item = fromPopup->findItem( cmdId ); - if ( item ) { - // if item is a separator - if ( item->isSeparator() ) { - popup->insertSeparator( 0 ); - } - else { - QIconSet* iconSet = item->iconSet(); - QKeySequence accel = fromPopup->accel( cmdId ); - - QPopupMenu* popupChild = item->popup(); - // if item is a popup - if ( popupChild && popupChild != fromPopup ) { - QPopupMenu* newPopup = new QPopupMenu( popup ); - if ( iconSet ) - popup->insertItem( *iconSet, item->text(), newPopup, cmdId, 0 ); - else - popup->insertItem( item->text(), newPopup, cmdId, 0 ); - makePopup( newPopup, popupChild, receiver ); - } - // if item is a command - else { - if ( iconSet ) - popup->insertItem( *iconSet, item->text(), cmdId, 0 ); - else - popup->insertItem( item->text(), cmdId, 0 ); - popup->connectItem( cmdId, receiver, SLOT( onDispatch( int ) ) ); - } - popup->setAccel( accel, cmdId ); - } - } - } -} - -/*! - Create popup -*/ -void QAD_Desktop::createPopup(QPopupMenu* popup, const QString & theContext, - const QString & theParent, const QString & theObject ) -{ - if ( !myActiveComp.isEmpty() && - getOperatorMenus()->createPopupMenu(theContext,theParent,theObject) != NULL ) { - makePopup( popup, getOperatorMenus()->createPopupMenu(theContext,theParent,theObject)->getPopup(), this ); - } - // IAPP Popup - // Should be moved to SALOMEGUI_Application::onCreatePopup()... - if ( myActiveComp.isEmpty() ) { - popup->removeItem(QAD_Display_Popup_ID); - popup->removeItem(QAD_DisplayOnly_Popup_ID); - popup->removeItem(QAD_Erase_Popup_ID); - int id = popup->idAt(popup->count()-1); // last item - if (id < 0 && id != -1) popup->removeItem(id); // separator - - if ( popup && theParent.compare("ObjectBrowser")==0 ) { - if ( popup->count()>0 ) { - popup->insertItem (tr ("MEN_OPENWITH"), this, SLOT(onOpenWith()), 0, -1, 2); - popup->insertSeparator (3); - } - else { - popup->insertItem (tr ("MEN_OPENWITH"), this, SLOT(onOpenWith()) ); - } - } - } - -} - -void QAD_Desktop::onActiveStudyChanged() -{ - // Avoid recursive calls caused by QAD_MessageBox - static bool isRecursion = false; - if ( isRecursion || myAboutToClose ) - return; - - if (myActiveComp != "") { - // Try to load active component's data in the activated study - if ( !loadComponentData(mapComponentName[myActiveComp]) ) { - isRecursion = true; - QAD_MessageBox::error1( this, - tr("ERR_ERROR"), - tr("ERR_COMP_DATA_NOT_LOADED").arg( myActiveComp ), - tr("BUT_OK") ); - // Error while loading component's data -> deactivate it - deactivateComponent(); - if (!myXmlHandler->myIdList.IsEmpty()) clearMenus(); - myCombo->setCurrentItem (0); - for ( QToolButton* aButton=myComponentButton.first(); aButton; aButton=myComponentButton.next() ) { - aButton->setOn(false); - } - myActiveComp = ""; - isRecursion = false; - return; - } - else - myActiveStudy->updateObjBrowser(true); - } - - SALOMEGUI* anActiveGUI = getActiveGUI(); - if ( anActiveGUI ) - anActiveGUI->ActiveStudyChanged(this); -} - -void QAD_Desktop::deactivateComponent() -{ - SALOMEGUI* anActiveGUI = getActiveGUI(); - if ( anActiveGUI ) - anActiveGUI->Deactivate(); -} - -/*! - Custom popup ( GUI Library ) -*/ -void QAD_Desktop::customPopup(QPopupMenu* popup, const QString & theContext, - const QString & theParent, const QString & theObject) -{ - SALOMEGUI* anActiveGUI = getActiveGUI(); - if ( anActiveGUI ) - anActiveGUI->CustomPopup(this, popup, theContext, theParent, theObject); -} - -void QAD_Desktop::onObjectBrowser() -{ - bool checkDiff = false; - - bool state = QAD_CONFIG->getSetting("ObjectBrowser:AddColumn").compare("true") == 0; - - if ( myStdActions.at( PrefObjectBrowserEntryId )->isOn() != state ) - checkDiff = true; - - bool showEntry; - if ( myStdActions.at( PrefObjectBrowserEntryId )->isOn() ) { - showEntry = true; - QAD_CONFIG->addSetting( "ObjectBrowser:AddColumn", "true"); - } else { - showEntry = false; - QAD_CONFIG->addSetting( "ObjectBrowser:AddColumn", "false"); - } - - bool showValue; - if ( myStdActions.at( PrefObjectBrowserValueId )->isOn() ) { - showValue = true; - QAD_CONFIG->addSetting( "ObjectBrowser:ValueColumn", "true"); - } else { - showValue = false; - QAD_CONFIG->addSetting( "ObjectBrowser:ValueColumn", "false"); - } - - bool showIAPP; - if ( myStdActions.at( PrefObjectBrowserIAPPId )->isOn() ) { - showIAPP = true; - QAD_CONFIG->addSetting( "ObjectBrowser:IAPP", "true"); - } else { - showIAPP = false; - QAD_CONFIG->addSetting( "ObjectBrowser:IAPP", "false"); - } - - /* To sort created object in chrono order or reverse chrono order */ - bool showCHRONO_SORT ; - if ( myStdActions.at( PrefObjectBrowserCHRONO_SORTId )->isOn() ) { - showCHRONO_SORT = true; - QAD_CONFIG->addSetting( "ObjectBrowser:ChronologicalSort", "true"); - } else { - showCHRONO_SORT = false; - QAD_CONFIG->addSetting( "ObjectBrowser:ChronologicalSort", "false"); - } - - /* To show or not to show UseCase browser */ - bool showUseCase; - if ( myStdActions.at( PrefObjectBrowserShowUseCaseId )->isOn() ) { - showUseCase = true; - QAD_CONFIG->addSetting( "ObjectBrowser:ShowUseCaseBrowser", "true"); - } else { - showUseCase = false; - QAD_CONFIG->addSetting( "ObjectBrowser:ShowUseCaseBrowser", "false"); - } - - /* Resize or don't resize columns automatically */ - bool autoSize; - if ( myStdActions.at( PrefObjectBrowserNoAutoSizeColumnsId )->isOn() ) { - autoSize = false; - QAD_CONFIG->addSetting( "ObjectBrowser:NoAutoSizeColumns", "true"); - } else { - autoSize = true; - QAD_CONFIG->addSetting( "ObjectBrowser:NoAutoSizeColumns", "false"); - } - - if ( myActiveApp ) { - QList& studies = myActiveApp->getStudies(); - for ( QAD_Study* study = studies.first(); study; study = studies.next() ) { - int nbSf = study->getStudyFramesCount(); - for ( int i = 0; i < nbSf; i++ ) { - QAD_StudyFrame* sf = study->getStudyFrame(i); - sf->getLeftFrame()->getObjectBrowser()->setShowInfoColumns( showEntry ); - sf->getLeftFrame()->getObjectBrowser()->setShowValueColumn( showValue ); - sf->getLeftFrame()->getObjectBrowser()->setEnableChronoSort( showCHRONO_SORT ); -// sf->getLeftFrame()->getObjectBrowser()->setShowIAPP( showIAPP ); // this is done by below updateObjBrowser() call - sf->getLeftFrame()->getObjectBrowser()->showUseCaseBrowser( showUseCase ); - sf->getLeftFrame()->getObjectBrowser()->autoSizeColumns( autoSize ); - } - study->updateObjBrowser(true); - } - } -} - -void QAD_Desktop::onViewerTrihedron() -{ - QString Size = QAD_CONFIG->getSetting("Viewer:TrihedronSize"); - float dim; - - SALOMEGUI_TrihedronSizeDlg *Dlg = new SALOMEGUI_TrihedronSizeDlg(this); - if (!Size.isEmpty()) - Dlg->setTrihedronSize(Size.toInt()); - int r = Dlg->exec(); - dim = Dlg->getTrihedronSize(); - delete Dlg; - - if (r == QDialog::Accepted) { - QAD_CONFIG->addSetting("Viewer:TrihedronSize", dim); - - if( myActiveApp ) { - QList& studies = myActiveApp->getStudies(); - for ( QAD_Study* study = studies.first(); study; study = studies.next() ) { - int nbSf = study->getStudyFramesCount(); - for ( int i = 0; i < nbSf; i++ ) { - study->getStudyFrame(i)->getRightFrame()->getViewFrame()->onAdjustTrihedron(); - } - } - } - } -} - -void QAD_Desktop::onExternalBrowser() -{ - - QString theApp = QAD_CONFIG->getSetting("ExternalBrowser:Application"); - QString theParams = QAD_CONFIG->getSetting("ExternalBrowser:Parameters"); - - SALOMEGUI_ExternalBrowserDlg *Dlg = new SALOMEGUI_ExternalBrowserDlg(this); - - if (!theApp.isEmpty()) - { - QString theParams = QAD_CONFIG->getSetting("ExternalBrowser:Parameters"); - Dlg->setSettings(theApp, theParams); - } - int r = Dlg->exec(); - QString theAppFromDialog = Dlg->getApp(); - QString theParamsFromDialog = Dlg->getParams(); - delete Dlg; - - if (r == QDialog::Accepted) - { - QAD_CONFIG->addSetting("ExternalBrowser:Application", theAppFromDialog ); - QAD_CONFIG->addSetting("ExternalBrowser:Parameters", theParamsFromDialog ); - } - -} - - -void QAD_Desktop::onDirList() -{ - // getting dir list from settings - QStringList dirList = QStringList::split(';', QAD_CONFIG->getSetting("FileDlg:QuickDirList"), false); - QAD_DirListDlg* dlg = new QAD_DirListDlg(this); - dlg->setPathList(dirList); - if ( dlg->exec() == QDialog::Accepted) { - dlg->getPathList(dirList); - QAD_CONFIG->addSetting("FileDlg:QuickDirList", dirList.join(";")); - } - delete dlg; -} - -void QAD_Desktop::onConsoleFontAction() -{ - // getting font from settings - QString fntSet = QAD_CONFIG->getSetting("Viewer:ConsoleFont"); - QFont font = QAD_Tools::stringToFont( fntSet ); - bool bOk; - font = QFontDialog::getFont( &bOk, font, this ); - if ( bOk ) { - fntSet = QAD_Tools::fontToString( font ); - QAD_CONFIG->addSetting("Viewer:ConsoleFont", fntSet ); - - if( myActiveApp ) { - QList& studies = myActiveApp->getStudies(); - for ( QAD_Study* study = studies.first(); study; study = studies.next() ) { - int nbSf = study->getStudyFramesCount(); - for ( int i = 0; i < nbSf; i++ ) { - study->getStudyFrame(i)->getRightFrame()->getPyEditor()->setFont( font ); - study->getStudyFrame(i)->getRightFrame()->getMessage()->setFont( font ); - } - } - } - } -} - -void QAD_Desktop::onSavePref() -{ - QAD_CONFIG->createConfigFile(true); -} - -//VRV: T2.5 - add default viewer -void QAD_Desktop::onDefaultViewer(QActionP * theAction) -{ - int type = VIEW_TYPE_MAX; - - QString myValue; - if (myStdActions.at(DefaultViewerOCCId) == theAction) - type = VIEW_OCC; - else if (myStdActions.at(DefaultViewerVTKId) == theAction) - type = VIEW_VTK; - else if (myStdActions.at(DefaultGraphSupervisorId) == theAction) - type = VIEW_GRAPHSUPERV; - else if (myStdActions.at(DefaultPlot2dId) == theAction) - type = VIEW_PLOT2D; - if ( type != VIEW_TYPE_MAX ) - QAD_CONFIG->addSetting( "Viewer:DefaultViewer", QString::number( type ) ); -} -//VRV: T2.5 - add default viewer - -void QAD_Desktop::onViewerOCC() -{ - QString BackgroundColorRed = QAD_CONFIG->getSetting("OCCViewer:BackgroundColorRed"); - QString BackgroundColorGreen = QAD_CONFIG->getSetting("OCCViewer:BackgroundColorGreen"); - QString BackgroundColorBlue = QAD_CONFIG->getSetting("OCCViewer:BackgroundColorBlue"); - QColor color; - - if( !BackgroundColorRed.isEmpty() && !BackgroundColorGreen.isEmpty() && !BackgroundColorBlue.isEmpty() ) - color = QColor(BackgroundColorRed.toInt(), - BackgroundColorGreen.toInt(), - BackgroundColorBlue.toInt()); - else - color = QColor(35, 136, 145); - - QColor c = QColorDialog::getColor( color, QAD_Application::getDesktop() ); - - if (c.isValid()) { - /* VSR : PAL5420 --------------------------------------------------- - if ( myActiveApp ) { - QList& studies = myActiveApp->getStudies(); - for ( QAD_Study* study = studies.first(); study; study = studies.next() ) { - int nbSf = study->getStudyFramesCount(); - for ( int i = 0; i < nbSf; i++ ) { - QAD_StudyFrame* sf = study->getStudyFrame(i); - if ( sf->getTypeView() == VIEW_OCC ) { - sf->getRightFrame()->getViewFrame()->setBackgroundColor( c ); - } - } - } - } - VSR : PAL5420 --------------------------------------------------- */ - QAD_CONFIG->addSetting( "OCCViewer:BackgroundColorRed", c.red() ); - QAD_CONFIG->addSetting( "OCCViewer:BackgroundColorGreen", c.green() ); - QAD_CONFIG->addSetting( "OCCViewer:BackgroundColorBlue", c.blue() ); - } -} - -void QAD_Desktop::onGraphSupervisor() -{ - QString BackgroundColorRed = QAD_CONFIG->getSetting("SUPERVGraph:BackgroundColorRed"); - QString BackgroundColorGreen = QAD_CONFIG->getSetting("SUPERVGraph:BackgroundColorGreen"); - QString BackgroundColorBlue = QAD_CONFIG->getSetting("SUPERVGraph:BackgroundColorBlue"); - QColor color; - - if( !BackgroundColorRed.isEmpty() && !BackgroundColorGreen.isEmpty() && !BackgroundColorBlue.isEmpty() ) - color = QColor(BackgroundColorRed.toInt(), - BackgroundColorGreen.toInt(), - BackgroundColorBlue.toInt()); - else - color = QColor(35, 136, 145); - - QColor c = QColorDialog::getColor( color, QAD_Application::getDesktop() ); - - if (c.isValid()) { - /* VSR : PAL5420 --------------------------------------------------- - if ( myActiveApp ) { - QList& studies = myActiveApp->getStudies(); - for ( QAD_Study* study = studies.first(); study; study = studies.next() ) { - int nbSf = study->getStudyFramesCount(); - for ( int i = 0; i < nbSf; i++ ) { - QAD_StudyFrame* sf = study->getStudyFrame(i); - if ( sf->getTypeView() == VIEW_GRAPHSUPERV ) { - sf->getRightFrame()->getViewFrame()->setBackgroundColor( c ); - } - } - } - } - VSR : PAL5420 --------------------------------------------------- */ - QAD_CONFIG->addSetting( "SUPERVGraph:BackgroundColorRed", c.red() ); - QAD_CONFIG->addSetting( "SUPERVGraph:BackgroundColorGreen", c.green() ); - QAD_CONFIG->addSetting( "SUPERVGraph:BackgroundColorBlue", c.blue() ); - } -} - -void QAD_Desktop::onViewerVTK() -{ - QString BackgroundColorRed = QAD_CONFIG->getSetting("VTKViewer:BackgroundColorRed"); - QString BackgroundColorGreen = QAD_CONFIG->getSetting("VTKViewer:BackgroundColorGreen"); - QString BackgroundColorBlue = QAD_CONFIG->getSetting("VTKViewer:BackgroundColorBlue"); - QColor color; - - if( !BackgroundColorRed.isEmpty() && !BackgroundColorGreen.isEmpty() && !BackgroundColorBlue.isEmpty() ) - color = QColor(BackgroundColorRed.toInt(), - BackgroundColorGreen.toInt(), - BackgroundColorBlue.toInt()); - else - color = QColor(0, 0, 0); - - QColor c = QColorDialog::getColor( color, QAD_Application::getDesktop() ); - - if (c.isValid()) { - /* VSR : PAL5420 --------------------------------------------------- - if ( myActiveApp ) { - QList& studies = myActiveApp->getStudies(); - for ( QAD_Study* study = studies.first(); study; study = studies.next() ) { - int nbSf = study->getStudyFramesCount(); - for ( int i = 0; i < nbSf; i++ ) { - QAD_StudyFrame* sf = study->getStudyFrame(i); - if ( sf->getTypeView() == VIEW_VTK ) { - sf->getRightFrame()->getViewFrame()->setBackgroundColor( c ); - } - } - } - } - VSR : PAL5420 --------------------------------------------------- */ - QAD_CONFIG->addSetting( "VTKViewer:BackgroundColorRed", c.red() ); - QAD_CONFIG->addSetting( "VTKViewer:BackgroundColorGreen", c.green() ); - QAD_CONFIG->addSetting( "VTKViewer:BackgroundColorBlue", c.blue() ); - } -} - -void QAD_Desktop::onPlot2d() -{ - QColor color; - if ( QAD_CONFIG->hasSetting( "Plot2d:Background" ) ) { - QString bgString = QAD_CONFIG->getSetting( "Plot2d:Background" ); - QStringList bgData = QStringList::split( ":", bgString, true ); - int bgRed = 0, bgGreen = 0, bgBlue = 0; - if ( bgData.count() > 0 ) bgRed = bgData[ 0 ].toInt(); - if ( bgData.count() > 1 ) bgGreen = bgData[ 1 ].toInt(); - if ( bgData.count() > 2 ) bgBlue = bgData[ 2 ].toInt(); - color = QColor( bgRed, bgGreen, bgBlue ); - } - else { - color = QColor(255, 255, 255); - } - - color = QColorDialog::getColor( color, QAD_Application::getDesktop() ); - - if ( color.isValid() ) { - /* VSR : PAL5420 --------------------------------------------------- - if ( myActiveApp ) { - QList& studies = myActiveApp->getStudies(); - for ( QAD_Study* study = studies.first(); study; study = studies.next() ) { - int nbSf = study->getStudyFramesCount(); - for ( int i = 0; i < nbSf; i++ ) { - QAD_StudyFrame* sf = study->getStudyFrame(i); - if ( sf->getTypeView() == VIEW_PLOT2D ) { - sf->getRightFrame()->getViewFrame()->setBackgroundColor( color ); - } - } - } - } - VSR : PAL5420 --------------------------------------------------- */ - QStringList bgData; - bgData.append( QString::number( color.red() ) ); - bgData.append( QString::number( color.green() ) ); - bgData.append( QString::number( color.blue() ) ); - QAD_CONFIG->addSetting( "Plot2d:Background", bgData.join( ":" ) ); - } -} - -/* Help About */ -void QAD_Desktop::helpAbout() -{ - SALOMEGUI_AboutDlg* About = new SALOMEGUI_AboutDlg( QAD_Application::getDesktop(), tr("MEN_ABOUT")); - About->exec(); - delete About; -} - -// /* Help Search */ -// void QAD_Desktop::helpSearch() -// { -// } - -// /* Help Contents */ -// void QAD_Desktop::helpContents() -// { -// if (myActiveComp == "") -// myActiveComp = getComponentUserName( "KERNEL" ); //NRI "Salome"; - -// QCString dir; -// QString root; -// if (dir = getenv( getComponentName( myActiveComp ) + "_ROOT_DIR")) { -// root = QAD_Tools::addSlash( QAD_Tools::addSlash(dir) + QAD_Tools::addSlash("share") + QAD_Tools::addSlash("salome") + "doc" ); -// if ( QFileInfo( root + "index.html" ).exists() ) { -// helpContext( root + "index.html", "" ); -// } -// else { -// root = QAD_Tools::addSlash( root + "html" ); -// if ( QFileInfo( root + "index.html" ).exists() ) { -// helpContext( root + "index.html", "" ); -// } -// else { -// root = QAD_Tools::addSlash( root + "html" ); -// if ( QFileInfo( root + "index.html" ).exists() ) { -// helpContext( root + "index.html", "" ); -// } -// } -// } -// } - -// // //NRI getHelpWindow()->contents(); -// // getHelpWindow()->show(); -// // getHelpWindow()->raise(); -// // getHelpWindow()->setActiveWindow(); -// } - -/* Help Context */ -//void QAD_Desktop::helpContext(const QString& source, const QString& context) -//{ -// //getHelpWindow()->context(source, context); //implemented in QAD_HelpWindow::context( const QString& _source, const QString& _context) -// //getHelpWindow()->show(); //from QMainWindow class -// //getHelpWindow()->raise(); //from QMainWindow class -// //getHelpWindow()->setActiveWindow(); //from QMainWindow class - -// QString anApp = QAD_CONFIG->getSetting("ExternalBrowser:Application"); -// QString aParams = QAD_CONFIG->getSetting("ExternalBrowser:Parameters"); - -// RunBrowser* rs = new RunBrowser(anApp, aParams, source, context); -// rs->start(); -//} - -/* Preferences/MultiFile Save */ -void QAD_Desktop::onMultiFileSave() -{ - if ( myStdActions.at( PrefMultiFileSave )->isOn() ) - QAD_CONFIG->addSetting( "Desktop:MultiFileSave", "true"); - else - QAD_CONFIG->addSetting( "Desktop:MultiFileSave", "false"); -} - -/* Preferences/ASCII Save */ -void QAD_Desktop::onASCIISave() -{ - if ( myStdActions.at( PrefASCIISave )->isOn() ) - QAD_CONFIG->addSetting( "Desktop:ASCIISave", "true"); - else - QAD_CONFIG->addSetting( "Desktop:ASCIISave", "false"); -} - -/* Preferences / Undo Level */ -void QAD_Desktop::onUndoLevel() -{ - static int MAX_UNDO_LEVEL = 1000; - bool isAccepted = false; - static QString aLabel = QString("Level value (%1 ... %2) : "). - arg(1).arg(MAX_UNDO_LEVEL); - int anUndoLevel = - SALOMEGUI_SetValueDlg::getInteger("Undo Level",aLabel, - 1,MAX_UNDO_LEVEL,getUndoLevel(), - &isAccepted); - if(!isAccepted) return; - QAD_CONFIG->addSetting("Desktop:UndoLevel", anUndoLevel); - if(!myActiveApp) return; - QList& studies = myActiveApp->getStudies(); - int aWasWarning = 0; - for(QAD_Study* study = studies.first(); study; study = studies.next()){ - SALOMEDS::Study_var aStudyDoc = study->getStudyDocument(); - SALOMEDS::StudyBuilder_var aStudyBuilder = aStudyDoc->NewBuilder(); - if (!aStudyDoc->GetProperties()->IsLocked()) { - aStudyBuilder->UndoLimit(anUndoLevel); - } else { - if (!aWasWarning) { - QAD_MessageBox::warn1 ((QWidget*)QAD_Application::getDesktop(), - QObject::tr("WRN_WARNING"), - QObject::tr("WRN_STUDY_LOCKED"), - QObject::tr("BUT_OK")); - aWasWarning = 1; - } - } - } -} - -/* Update status bar for File menu items */ -void QAD_Desktop::onFilePopupStatusText( int id ) -{ - QString component = getActiveComponent(); - - if (component != "") { - //one of the modules is active now - int importId = myFilePopup.idAt(8); - int exportId = myFilePopup.idAt(9); - int importTableId = myFilePopup.idAt(10); - - if (component == getComponentUserName("SMESH") || component == getComponentUserName("GEOM")) { - if (id == importId) - putInfo( tr("PRP_DESK_FILE_IMPORT") ); - if (id == exportId) - putInfo( tr("PRP_DESK_FILE_EXPORT") ); - } - if (component == getComponentUserName("VISU")) { - if (id == importId) - putInfo( tr("PRP_DESK_FILE_IMPORTMED") ); - if (id == importTableId) - putInfo( tr("PRP_DESK_FILE_IMPORTTABLE") ); - if (id == exportId) - putInfo( tr("PRP_DESK_FILE_EXPLOREMEDFILE") ); - } - if (component == getComponentUserName("SUPERV")) { - if (id == importId) - putInfo( tr("PRP_DESK_FILE_IMPORTDF") ); - if (id == exportId) - putInfo( tr("PRP_DESK_FILE_EXPORTDF") ); - } - } -} - -/* Update status bar for Edit menu items */ -void QAD_Desktop::onEditPopupStatusText( int id ) -{ - QString component = getActiveComponent(); - - if (component != "") { - //one of the modules is active now - - if (component == getComponentUserName("SMESH") || component == getComponentUserName("GEOM") ) { - int deleteId = myEditPopup.idAt(5); - if (id == deleteId) - putInfo( tr("PRP_DESK_EDIT_DELETE") ); - } - if (component == getComponentUserName("SUPERV") ) { - int newDFId = myEditPopup.idAt(5); - int modifyDFId = myEditPopup.idAt(6); - if (id == newDFId) - putInfo( tr("PRP_DESK_EDIT_NEWDF") ); - if (id == modifyDFId) - putInfo( tr("PRP_DESK_EDIT_MODIFYDF") ); - } - } -} - -/* Update status bar for View menu items */ -void QAD_Desktop::onViewPopupStatusText( int id ) -{ - QString component = getActiveComponent(); - - if (component != "") { - //one of the modules is active now - int DispModeId = myViewPopup.idAt(2); - - if (component == getComponentUserName("GEOM")) { - if (id == DispModeId) - putInfo( tr("PRP_DESK_VIEW_DISPLAYMODE") ); - } - if (component == getComponentUserName("SMESH")) { - int updateId = myViewPopup.idAt(3); - - if (id == DispModeId) - putInfo( tr("PRP_DESK_VIEW_DISPLAYMODE") ); - if (id == updateId) - putInfo( tr("PRP_DESK_VIEW_UPDATE") ); - } - } -} - -/* Processes additinal key accelerators, e.g. viewer incremental transfomrations */ -void QAD_Desktop::onKeyAccel( int id ) -{ - if ( myAccelMap.find( id ) != myAccelMap.end() ) { - int cmd = myAccelMap[ id ]; - if ( myActiveApp != 0 && myActiveApp->getActiveStudy() != 0 && myActiveApp->getActiveStudy()->getActiveStudyFrame() != 0 ) { - QAD_ViewFrame* vf = myActiveApp->getActiveStudy()->getActiveStudyFrame()->getRightFrame()->getViewFrame(); - switch ( cmd ) { - case voPanLeft: - vf->onPanLeft(); - break; - case voPanRight: - vf->onPanRight(); - break; - case voPanUp: - vf->onPanUp(); - break; - case voPanDown: - vf->onPanDown(); - break; - case voZoomIn: - vf->onZoomIn(); - break; - case voZoomOut: - vf->onZoomOut(); - break; - case voZoomFit: - vf->onViewFitAll(); - break; - case voRotateLeft: - vf->onRotateLeft(); - break; - case voRotateRight: - vf->onRotateRight(); - break; - case voRotateUp: - vf->onRotateUp(); - break; - case voRotateDown: - vf->onRotateDown(); - break; - } - } - } -} - -/********************************************************************* -** Class: AppSelectionDlg -** Descr: Dialog for the selection of the application when several -** applications exist in the desktop and new study creation -** is activated by user. -** Level: Internal -**********************************************************************/ -/*! - \class Desktop_AppSelectionDlg QAD_Desktop.h - \brief Dialog for the selection of the application when several - applications exist in the desktop and new study creation - is activated by user. - - Level: Internal. -*/ - -Desktop_AppSelectionDlg::Desktop_AppSelectionDlg( QAD_Desktop* desktop, - QList& apps ) : -QDialog( desktop, 0, true ), -myAppId( 0 ), -myApps( apps ) -{ - QAD_ASSERT_DEBUG_ONLY ( desktop ); - setCaption( tr("INF_DESK_DOC_CREATE") ); - if ( desktop->icon() ) - setIcon( *desktop->icon() ); - - QBoxLayout* mainLayout = new QVBoxLayout( this, 5 ); - - /* Create selection buttons */ - QVButtonGroup* buttonGrp = new QVButtonGroup ( this ); - buttonGrp->setExclusive ( true ); - QBoxLayout* vLayout = new QVBoxLayout( mainLayout, 5 ); - vLayout->addWidget ( buttonGrp ); - - /* Create selection button for available app */ - unsigned id = 0; - for ( QAD_Application* app = myApps.first(); app; app = myApps.next(), id++ ) - { - /* add radio button for application */ - buttonGrp->insert( new QRadioButton( app->getStudyDescription() + - " (*." + app->getStudyExtension() + ")", buttonGrp ), id ); - } - - /* make the first application selected */ - buttonGrp->setButton( 0 ); - - /* listen to the selection */ - QAD_ASSERT ( connect ( buttonGrp, SIGNAL(clicked(int)), this, SLOT(onAppSelected(int)) )); - - /* Create OK/Cancel buttons - */ - QBoxLayout* hLayout = new QHBoxLayout( mainLayout, 5 ); - QPushButton* buttonOK = new QPushButton( tr("BUT_OK"), this ); - QPushButton* buttonCancel = new QPushButton( tr("BUT_CANCEL"), this ); - QPushButton* buttonHelp = new QPushButton( tr("BUT_HELP"), this ); - buttonOK->setDefault( true ); - - hLayout->addStretch(); - hLayout->addWidget( buttonOK ); - hLayout->addWidget( buttonCancel ); - hLayout->addWidget( buttonHelp ); - - /* connect buttons */ - QAD_ASSERT ( connect( buttonOK, SIGNAL(clicked()), this, SLOT(accept())) ); - QAD_ASSERT ( connect( buttonCancel, SIGNAL(clicked()), this, SLOT(reject())) ); - QAD_ASSERT ( connect( buttonHelp, SIGNAL(clicked()), this, SLOT(onHelp())) ); - - /* disable resizing */ - setFixedSize( 0, 0 ); - setSizePolicy( QSizePolicy ( QSizePolicy::Fixed, QSizePolicy::Fixed ) ); -} - -Desktop_AppSelectionDlg::~Desktop_AppSelectionDlg() -{ -} - -QAD_Application* Desktop_AppSelectionDlg::selectedApp() const -{ - return myApps.at( myAppId ); -} - -void Desktop_AppSelectionDlg::resizeEvent( QResizeEvent* e ) -{ - QAD_Tools::centerWidget( this, parentWidget() ); -} - -/* - * Slots -*/ -void Desktop_AppSelectionDlg::onAppSelected( int id ) -{ - myAppId = id; -} - -void Desktop_AppSelectionDlg::onHelp() -{ -} diff --git a/src/SALOMEGUI/QAD_Desktop.h b/src/SALOMEGUI/QAD_Desktop.h deleted file mode 100644 index 35c71416e..000000000 --- a/src/SALOMEGUI/QAD_Desktop.h +++ /dev/null @@ -1,384 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_Desktop.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef QAD_DESKTOP_H -#define QAD_DESKTOP_H - -#include "QAD.h" -#include "QAD_ResourceMgr.h" -#include "QAD_Application.h" -#include "QAD_OperatorMenus.h" -#include "QAD_Menus.h" -//NRI#include "QAD_HelpWindow.h" -#include "QAD_Action.h" - -#include "SALOME_NamingService.hxx" -#include "SALOME_LifeCycleCORBA.hxx" -#include "SALOME_Selection.h" - -// IDL Headers -#include -#include CORBA_CLIENT_HEADER(SALOME_ModuleCatalog) -#include CORBA_CLIENT_HEADER(SALOME_Component) -#include CORBA_SERVER_HEADER(SALOMEDS) - -// QT Includes -#include -#include -#include -#include -#include -#include -#include -#include "qworkspaceP.h" -#include -#include -#include - -class QAD_XmlHandler; -class SALOMEGUI; -class SALOME_Event; - -class QAD_EXPORT QAD_Desktop : public QMainWindow -{ - Q_OBJECT - -protected: - //NRI - unused - : enum ComponentType {GEOM, MESH, SOLVER, DATA, VISU, OTHER} ; - - enum { FileNewId = -1000, FileOpenId, FileLoadId, FileCloseId, FileSaveId, FileSaveAsId, FilePropsId, FileExitId, - ViewStatusBarId, - SelectionPointId, SelectionEdgeId, SelectionCellId, SelectionActorId, - PrefViewerOCCId, PrefViewerVTKId, PrefGraphSupervisorId, PrefViewerPlot2dId, - //VRV: T2.5 - add default viewer - DefaultViewerOCCId, DefaultViewerVTKId, DefaultGraphSupervisorId, DefaultPlot2dId, - //VRV: T2.5 - add default viewer - PrefViewerTrihedronId, PrefConsoleFontId, PrefObjectBrowserEntryId, - PrefObjectBrowserIAPPId, PrefObjectBrowserValueId, PrefObjectBrowserCHRONO_SORTId,PrefObjectBrowserShowUseCaseId, - PrefObjectBrowserNoAutoSizeColumnsId, - PrefDirsId, PrefMultiFileSave, PrefASCIISave, PrefUndoLevelId, PrefExternalBrowserId, PrefSaveId, - //NRI : SAL2214 - WindowNew3dId, ViewOCCId, ViewVTKId, ViewPlot2dId, - //NRI : SAL2214 - WindowCascadeId, WindowTileId, - HelpContentsId, HelpContentsModuleId, - HelpSearchId, HelpWhatsThisId, HelpAboutId }; - enum UpdateCommand { ActivateApp, DeactivateApp }; - - /* Desktop can be created only by application */ - friend bool QAD_Application::createDesktop( SALOME_NamingService* name_service ); - QAD_Desktop( SALOME_NamingService* name_service ); - -public: - ~QAD_Desktop(); - - /* global event filter for qapplication */ - bool eventFilter( QObject* o, QEvent* e ); - - /* resources */ - static QAD_ResourceMgr* getResourceManager(); - static QAD_ResourceMgr* createResourceManager(); - - /* palette */ - static QPalette* getPalette(); - static QPalette* createPalette(); - - /* activeStudyChanged */ - void onActiveStudyChanged(); - - /* popup */ - void definePopup(QString & theContext, - QString & theParent, - QString & theObject ); - void createPopup(QPopupMenu* popup, const QString & theContext, - const QString & theParent, const QString & theObject ); - void customPopup(QPopupMenu* popup, const QString & theContext, - const QString & theParent, const QString & theObject); - - /* selection mode */ - void SetSelectionMode(Selection_Mode mode, bool activeCompOnly = false); - - /* desktop */ - void showDesktop(); - void closeDesktop( bool forceClose = false ); - void putInfo ( const QString& ); - void putInfo ( const QString&, int ); - QToolBar* getStdToolBar() const; - QMenuBar* getMainMenuBar() const; - - /* application */ - void addApplication(QAD_Application* app); - - /* studies */ - const QString& getDefaultTitle() const; - const QPixmap& getDefaultIcon() const; - const QString& getDefaultStudyName() const; - QAD_Application* getActiveApp() const; - QAD_Study* getActiveStudy() const; - QWorkspaceP* getMainFrame() const; - QString getNewStudyName(); - QAD_Study* findStudy( SALOMEDS::Study_ptr theStudy ); - static int getUndoLevel(); - /* help actions */ - virtual void helpAbout(); -/* virtual void helpSearch(); - virtual void helpContents(); - virtual void helpContext(const QString& path, const QString& dir = QString::null); -*/ - bool loadComponent(QString); - bool loadComponentData( const QString& ); - QString changeXmlInputSourceData(QString theData, QString theComponent); - void activateComponent(const QString& theName, bool isLoadData = true); - void deactivateComponent(); - void createStudy(); - - void setSettings(); - - SALOME_ModuleCatalog::ModuleCatalog_var getCatalogue(); - - QAD_Menus* getActiveMenus() {return myActiveMenus;} - QAD_OperatorMenus* getOperatorMenus() {return myOperatorMenus;} - const QString& getActiveComponent() const; - SALOMEGUI* getActiveGUI(); - SALOMEGUI* getComponentGUI( const QString& ); // accepts component`s user name - QString getComponentDataType() const; - SALOME_NamingService* getNameService() {return myNameService;} - - Engines::Component_var getEngine(const char *containerName, - const char *componentName); - - QString getComponentName(const char *componentUserName); - QString getComponentUserName(const char *componentName); - - //NRI QAD_HelpWindow* getHelpWindow(); - - void onMouseMove(QMouseEvent*); - bool onMousePress(QMouseEvent*); - void onKeyPress(QKeyEvent*); - - virtual QAD_Study* loadStudy(QString theStudyName); - -protected: - bool closeAllStudies( QAD_Application* ); - void closeEvent( QCloseEvent* ); - void resizeEvent( QResizeEvent* ); - - virtual QString selectFileName ( bool open ); - - virtual void updateDesktop( UpdateCommand ); - virtual void updateStatusBar( UpdateCommand ); - virtual void updateToolBars( UpdateCommand ); - virtual void updateCaption( UpdateCommand ); - virtual void updateMenu( UpdateCommand ); - -protected slots: - virtual void onNewStudy(); - virtual void onNewStudy(QAD_Application* app); - virtual void onLoadStudy(); - virtual void onOpenStudy(); - virtual bool onSaveStudy(); - virtual bool onSaveStudy(QAD_Study* doc); - virtual bool onSaveAsStudy(); - virtual bool onSaveAsStudy(QAD_Study* doc); - virtual bool onCloseStudy(); - virtual bool onCloseStudy(QAD_Study* doc); - //ask user to remove study from study manager permanently - virtual bool onCloseStudy(QAD_Study* doc, bool ask); - - virtual void onStudyProperties(); - - virtual void onViewStatusBar(); - virtual void onToolBarPopupAboutToShow(); - - virtual void onExit(); - - virtual void onWindowPopupAboutToShow(); - void onWindowsPopupActivated( int id ); - void onWindowsPopupStatusText( int id ); - void onHelpModulePopupStatusText(int id); - - void onFilePopupStatusText( int id ); - void onEditPopupStatusText( int id ); - void onViewPopupStatusText( int id ); - - void onSelectionMode(); - - void onDirList(); - void onSavePref(); - void onViewerOCC(); - void onViewerVTK(); - void onGraphSupervisor(); - void onPlot2d(); - void onConsoleFontAction(); - //VRV: T2.5 - add default viewer - void onDefaultViewer( QActionP * theAction); - //VRV: T2.5 - add default viewer - - void onViewerTrihedron(); - void onObjectBrowser(); - void onMultiFileSave(); - void onASCIISave(); - void onUndoLevel(); - void onExternalBrowser(); - - void onActivateApp(QAD_Application* app); - void onDeactivateApp(QAD_Application* app); - - void onHelpContents(); - void onHelpContentsModule(); - /* void onHelpContentsTUI(); */ -/* void onHelpSearch(); */ - void onHelpAbout(); - - void onNewWindow3d(); - - void onOpenWith(); - - void onDispatchTools(int id); - void onDispatch(int id); - void onDispatch(); - void clearMenus(); - void onButtonActiveComponent(); - void onComboActiveComponent( const QString & ); - void onComboActiveComponent( const QString & , bool isLoadData); - void onCascade(); - - void onKeyAccel( int id ); -/* NRI void onHelpWindowClosed(); */ - -protected: - QMenuBar* myMainMenu; /* the main menu bar */ - int myMainMenuPos; /* index after which application inserts its items */ - QPopupMenu myFilePopup; - int myFilePos; - QPopupMenu myEditPopup; - int myEditPos; - QPopupMenu myViewPopup; - int myViewPos; - QPopupMenu myHelpPopup; - int myHelpPos; - - //VRV: T2.5 - add default viewer - QPopupMenu myDefaultViewer; - //VRV: T2.5 - add default viewer - QPopupMenu myObjBrowserPopup; - QPopupMenu myViewerPopup; - //NRI : SAL2214 - QPopupMenu myNewViewPopup; - //NRI : SAL2214 - QPopupMenu myHelpContentsModulePopup; - - QPopupMenu myToolsPopup; - QPopupMenu myPrefPopup; - QPopupMenu mySelectionModePopup; - QPopupMenu myWindowPopup; /* not customized by an application */ - - ActionMap myStdActions; /* default actions */ - QToolBar* myStdToolBar; /* standard toolbar */ - QStatusBar* myStatusBar; /* the only status bar */ - - QList myToolBarAction; - QPopupMenu myToolBarsPopup; - - QList myApps; /* running applications */ - QAD_Application* myActiveApp; /* the active application */ - QAD_Study* myActiveStudy; /* the active document */ - - int myCntUntitled; /* number of untitled docs */ - QWorkspaceP* myWorkspace; /* workspace */ - - QPixmap myDefaultIcon; /* if no application is active */ - QString myDefaultTitle; /* desktop will use them */ - - QAD_OperatorMenus* myOperatorMenus; - QList myMenusList; - QAD_Menus* myActiveMenus; - - //NRI QAD_HelpWindow* myHelpWindow; - - QList myComponentButton; - - QMap mapComponentName; - -private: - void processEvent( SALOME_Event* ); - -private: - typedef QMap ComponentMap; - -private: - static QAD_ResourceMgr* resourceMgr; - static QPalette* palette; - void createActions(); - void updateActions(); - QAD_XmlHandler* myXmlHandler; - QString myActiveComp; - SALOME_NamingService* myNameService; - SALOME_ModuleCatalog::ModuleCatalog_var myCatalogue; - SALOME_LifeCycleCORBA * myEnginesLifeCycle; - QComboBox * myCombo; - bool myQueryClose; - bool myAboutToClose; - bool _islibso; - - ComponentMap myComponents; - QMap myAccelMap; -}; - -/******************************************************************** -** Class: AppSelectionDlg -** Descr: Dialog for the selection of the application when several -** applications exist in the desktop and new document creation -** is activated by user. -** Level: Internal -*********************************************************************/ -class Desktop_AppSelectionDlg : public QDialog -{ - Q_OBJECT - -public: - Desktop_AppSelectionDlg( QAD_Desktop*, QList& ); - ~Desktop_AppSelectionDlg(); - -public: - QAD_Application* selectedApp() const; - -protected: - void resizeEvent( QResizeEvent* ); - -protected slots: - void onAppSelected(int); - void onHelp(); - -protected: - int myAppId; - QList& myApps; -}; - -#endif - diff --git a/src/SALOMEGUI/QAD_DirListDlg.cxx b/src/SALOMEGUI/QAD_DirListDlg.cxx deleted file mode 100644 index a0479d944..000000000 --- a/src/SALOMEGUI/QAD_DirListDlg.cxx +++ /dev/null @@ -1,548 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : QAD_DirListDlg.cxx -// Author : Vadim SANDLER -// Module : SALOME -// $Header$ - -#include "QAD_DirListDlg.h" -#include "QAD_Desktop.h" -#include "QAD_FileDlg.h" -#include "QAD_MessageBox.h" -#include "QAD_Tools.h" -#include -#include -#include -#include -using namespace std; - -#define MIN_WIDTH 400 -#define MIN_HEIGHT 200 -#define MARGIN_SIZE 11 -#define SPACING_SIZE 6 -#define SPACER_SIZE 5 - -/*! - Constructor -*/ -QAD_DirListDlg::QAD_DirListDlg(QWidget* parent, const char* name) - : QDialog (parent, name, true, WStyle_NormalBorder | WStyle_Customize | WStyle_Title | WStyle_SysMenu ) -{ - myEdited = false; - myLastSelected = 0; - myEdit = 0; - myBtn = 0; - - setCaption(tr("QUICK_DIR_LIST_TLT")); - setSizeGripEnabled( true ); - - QGridLayout* topLayout = new QGridLayout(this); - topLayout->setMargin(MARGIN_SIZE); - topLayout->setSpacing(SPACING_SIZE); - - myDirList = new QListBox(this); - myDirList->setMinimumSize(MIN_WIDTH, MIN_HEIGHT); -// myDirList->setMaximumSize(MIN_WIDTH, MIN_HEIGHT); - myDirList->setSelectionMode(QListBox::Single); - myDirList->setHScrollBarMode(QListBox::AlwaysOff); - myDirList->horizontalScrollBar()->installEventFilter(this); - myDirList->verticalScrollBar()->installEventFilter(this); - myDirList->insertItem(tr("EMPTY_DIR")); - myDirList->installEventFilter(this); - - QHBoxLayout* ctrlLayout = new QHBoxLayout; - ctrlLayout->setMargin(0); - ctrlLayout->setSpacing(0); - - QLabel* lab = new QLabel(myDirList, tr("DIRECTORIES_LBL"), this); - - QToolButton* insertBtn = new QToolButton(this); - insertBtn->setIconSet(QAD_Desktop::getResourceManager()->loadPixmap("QAD", tr("ICON_DIRLIST_INSERT"))); - insertBtn->setAutoRaise(true); - - QToolButton* deleteBtn = new QToolButton(this); - deleteBtn->setIconSet(QAD_Desktop::getResourceManager()->loadPixmap("QAD", tr("ICON_DIRLIST_DELETE"))); - deleteBtn->setAutoRaise(true); - - QToolButton* upBtn = new QToolButton(this); - upBtn->setIconSet(QAD_Desktop::getResourceManager()->loadPixmap("QAD", tr("ICON_DIRLIST_MOVEUP"))); - upBtn->setAutoRaise(true); - - QToolButton* downBtn = new QToolButton(this); - downBtn->setIconSet(QAD_Desktop::getResourceManager()->loadPixmap("QAD", tr("ICON_DIRLIST_MOVEDOWN"))); - downBtn->setAutoRaise(true); - - ctrlLayout->addWidget(lab); - ctrlLayout->addItem(new QSpacerItem(SPACER_SIZE, SPACER_SIZE, QSizePolicy::Expanding, QSizePolicy::Minimum)); - ctrlLayout->addWidget(insertBtn); - ctrlLayout->addWidget(deleteBtn); - ctrlLayout->addWidget(upBtn); - ctrlLayout->addWidget(downBtn); - - QHBoxLayout* btnLayout = new QHBoxLayout; - btnLayout->setMargin(0); - btnLayout->setSpacing(6); - - QPushButton * okBtn = new QPushButton(tr("BUT_OK"), this); - QPushButton * cancelBtn = new QPushButton(tr("BUT_CANCEL"), this); - okBtn->setDefault(true); - okBtn->setAutoDefault(true); - cancelBtn->setAutoDefault(true); - - btnLayout->addWidget(okBtn); - btnLayout->addItem(new QSpacerItem(SPACER_SIZE, SPACER_SIZE, QSizePolicy::Expanding, QSizePolicy::Minimum)); - btnLayout->addWidget(cancelBtn); - - topLayout->addLayout(ctrlLayout, 0, 0); - topLayout->addWidget(myDirList, 1, 0); - topLayout->addLayout(btnLayout, 2, 0); - - connect(myDirList, SIGNAL(mouseButtonClicked(int, QListBoxItem*, const QPoint&)), - this, SLOT(onMouseButtonClicked(int, QListBoxItem*, const QPoint&))); - connect(myDirList, SIGNAL(doubleClicked(QListBoxItem*)), - this, SLOT(onDblClicked(QListBoxItem*))); - - connect(insertBtn, SIGNAL(clicked()), this, SLOT(onInsert())); - connect(deleteBtn, SIGNAL(clicked()), this, SLOT(onDelete())); - connect(upBtn, SIGNAL(clicked()), this, SLOT(onUp())); - connect(downBtn, SIGNAL(clicked()), this, SLOT(onDown())); - connect(okBtn, SIGNAL(clicked()), this, SLOT(onOk())); - connect(cancelBtn, SIGNAL(clicked()), this, SLOT(reject())); - - QAD_Tools::centerWidget(this, parent); -} - -/*! - Destructor -*/ -QAD_DirListDlg::~QAD_DirListDlg() { -} - -/*! - Gets list of paths -*/ -void QAD_DirListDlg::getPathList(QStringList& list) { - list.clear(); - for (unsigned i = 0; i < myDirList->count()-1; i++) - list.append(myDirList->text(i)); -} - -/*! - Sets list of paths -*/ -void QAD_DirListDlg::setPathList(const QStringList& list) { - for (unsigned i = 0; i < list.count(); i++) - myDirList->insertItem(list[i], myDirList->count()-1); -} - -/*! - Validates entered path, returns true if OK -*/ -#ifndef WNT -#include -#endif -bool QAD_DirListDlg::validate() { - if (myEdited) { - QString dirPath = myEdit->text().stripWhiteSpace(); -#ifndef WNT - if ( dirPath.startsWith( "~") ) { - dirPath = dirPath.remove(0,1); - QString user; - int slashPos = dirPath.find("/"); - if ( slashPos >= 0 ) { - user = dirPath.left(slashPos); - dirPath = dirPath.mid(slashPos); - } - else { - user = dirPath; - dirPath = ""; - } - if ( user.isEmpty() ) - user = getenv( "USER" ); - - struct passwd* user_data = getpwnam( user.latin1() ); - if ( user_data == NULL ) { - // unknown user or something another error - QAD_MessageBox::error1(this, - tr("ERR_ERROR"), - tr("Unknown user %1").arg(user), - tr("BUT_OK")); - myEdit->setFocus(); - return false; - } - dirPath = user_data->pw_dir + dirPath; - } -#endif - QDir dir(dirPath); - QListBoxItem* found = 0; - for (unsigned i = 0; i < myDirList->count()-1; i++) { - QDir aDir(myDirList->text(i)); - if ( aDir.canonicalPath().isNull() && myDirList->text(i) == dir.absPath() || - !aDir.canonicalPath().isNull() && aDir.exists() && aDir.canonicalPath() == dir.canonicalPath()) { - found = myDirList->item(i); - break; - } - } - if (dirPath.isEmpty()) { - if (found) { - // it should be last (empty) item in the list - nothing to do - return true; - } - else { - // delete directory from the list - removeDir(myLastSelected); - return true; - } - } - else { - if (found) { - if (found != myLastSelected) { - // it is forbidden to add directory more then once - QAD_MessageBox::error1(this, - tr("ERR_ERROR"), - tr("ERR_DIRECTORY_SPECIFIED"), - tr("BUT_OK")); - myEdit->setFocus(); - return false; - } - } - else { - if (!dir.exists()) { - if ( QAD_MessageBox::info2(this, - tr("WRN_WARNING"), - tr("WRN_DIRECTORY_N0T_EXIST").arg(dir.absPath()), - tr ("BUT_YES"), tr ("BUT_NO"), - QAD_YES, QAD_NO, QAD_NO ) == QAD_NO ) { - myEdit->setFocus(); - return false; - } - } - // append - appendDir(myLastSelected, dir.absPath()); - } - } - } - return true; -} - -/*! - Appends/changes directory -*/ -void QAD_DirListDlg::appendDir(QListBoxItem* item, const QString& dir) { - int index = myDirList->index(item); - if (index >= 0 && index < (int)myDirList->count()) { - if (index == (int)myDirList->count()-1) { - // it is the last item (new), well, insert it before the last (empty) - myDirList->insertItem(dir, myDirList->count()-1); - } - else { - // change item - myDirList->changeItem(dir, index); - } - } -} - -/*! - Removes directory from list -*/ -void QAD_DirListDlg::removeDir(QListBoxItem* item) { - // do not remove last item (empty) - int index = myDirList->index(item); - if (index >= 0 && index < (int)myDirList->count()-1) { - delete item; - myLastSelected = myDirList->item(index); - myDirList->setSelected(myLastSelected, true); - } -} - -/*! - KeyPress event handler, processes and keys -*/ -void QAD_DirListDlg::keyPressEvent(QKeyEvent* event) { - if ( myEdited ) { - if ( event->key() == Key_Escape ) { - delete myEdit; - delete myBtn; - myEdit = 0; - myBtn = 0; - myEdited = false; - myDirList->setFocus(); - } - return; - } - if (event->key() == Key_Return || event->key() == Key_Enter) { - accept(); - } - QDialog::keyPressEvent(event); -} - -/*! - Resize event -*/ -void QAD_DirListDlg::resizeEvent(QResizeEvent* event) { - QDialog::resizeEvent(event); - if ( myEdited ) { - myEdit->resize(myDirList->viewport()->width()-myBtn->sizeHint().width(), myEdit->height()); - myBtn->move(myEdit->width(), myEdit->y()); - } -} - -/*! - Called when user clicks inside directories list box -*/ -void QAD_DirListDlg::onMouseButtonClicked(int button, - QListBoxItem* item, - const QPoint& point) { - if (myEdited) { - if (!validate()) { - myDirList->setCurrentItem(myLastSelected); - myDirList->setSelected(myLastSelected, true); - return; - } - delete myEdit; - delete myBtn; - myEdit = 0; - myBtn = 0; - myEdited = false; - myDirList->setFocus(); - } - if (item) { - myDirList->setCurrentItem(item); - myDirList->setSelected(item, true); - myDirList->ensureCurrentVisible(); - qApp->processEvents(); - if (button == LeftButton && myLastSelected == item) { - QRect ir = myDirList->itemRect(myLastSelected); - - myEdit = new QLineEdit(myDirList->viewport()); - myBtn = new QToolButton(myDirList->viewport()); - myBtn->setText(" ... "); - connect(myBtn, SIGNAL(clicked()), this, SLOT(onBtnClicked())); - myEdit->setGeometry(0, - ir.top()-(myEdit->sizeHint().height()-ir.height())/2, - myDirList->viewport()->width()-myBtn->sizeHint().width(), - myEdit->sizeHint().height()); - myBtn->setGeometry (myEdit->width(), - ir.top()-(myEdit->sizeHint().height()-ir.height())/2, - myBtn->sizeHint().width(), - myEdit->sizeHint().height()); - connect(myEdit, SIGNAL(returnPressed()), this, SLOT(onEditFinished())); - myEdited = true; - myEdit->show(); - myBtn->show(); - if (myDirList->index(myLastSelected) != (int)myDirList->count()-1) - myEdit->setText(myLastSelected->text()); - myEdit->selectAll(); - myEdit->setCursorPosition(myEdit->text().length()); - myEdit->installEventFilter(this); - myEdit->setFocus(); - } - } - else { - myDirList->clearSelection(); - } - myLastSelected = item; -} - -/*! - Called when user double-clicks on any item -*/ -void QAD_DirListDlg::onDblClicked(QListBoxItem* item) { - onMouseButtonClicked(LeftButton, item, QPoint(0,0)); -} - -/*! - <...> (Browse dir) button slot -*/ -void QAD_DirListDlg::onBtnClicked() { - QString dir = myEdit->text().stripWhiteSpace().isEmpty() ? - QString::null : - myEdit->text().stripWhiteSpace(); - dir = QAD_FileDlg::getExistingDirectory(this, dir, tr("SELECT_DIRECTORY"), true); - if (!dir.isEmpty()) { - myEdit->setText(dir); - myEdit->selectAll(); - myEdit->setCursorPosition(myEdit->text().length()); - } -} - -/*! - Called when user finises editing of path by pressing -*/ -void QAD_DirListDlg::onEditFinished() { - if (myEdit) { - if (!validate()) { - myDirList->setCurrentItem(myLastSelected); - myDirList->setSelected(myLastSelected, true); - return; - } - delete myEdit; - delete myBtn; - myEdit = 0; - myBtn = 0; - myEdited = false; - myDirList->setFocus(); - } -} - -/*! - Event filter -*/ -bool QAD_DirListDlg::eventFilter(QObject* object, QEvent* event) { - if ( myEdited ) { - if (event->type() == QEvent::MouseButtonPress || event->type() == QEvent::MouseButtonDblClick) { - if (object == myDirList->horizontalScrollBar() || object == myDirList->verticalScrollBar()) { - if (!validate()) { - myDirList->setCurrentItem(myLastSelected); - myDirList->setSelected(myLastSelected, true); - return true; - } - delete myEdit; - delete myBtn; - myEdit = 0; - myBtn = 0; - myEdited = false; - myDirList->setFocus(); - } - } - else if (event->type() == QEvent::KeyPress) { - QKeyEvent* ke = (QKeyEvent*)event; - if (ke->key() == Key_Tab) - return true; - if (object == myDirList) { - return true; - } - else if (object == myEdit) { - if ( ke->key() == Key_Up || ke->key() == Key_Down || ke->key() == Key_PageUp || ke->key() == Key_PageDown || - ( ke->key() == Key_Home || ke->key() == Key_End || ke->key() == Key_Prior || ke->key() == Key_Next ) && - (ke->state() & ControlButton) ) { - return true; - } - else if ( ke->key() == Key_Escape ) { - delete myEdit; - delete myBtn; - myEdit = 0; - myBtn = 0; - myEdited = false; - myDirList->setFocus(); - return true; - } - } - } - } - else { - if (event->type() == QEvent::KeyPress) { - if (object == myDirList) { - QKeyEvent* ke = (QKeyEvent*)event; - if (ke->key() == Key_Return || ke->key() == Key_Enter) { - accept(); - } - else { - QChar c(ke->ascii()); - if (c.isPrint()) { - QListBoxItem* item = myDirList->item(myDirList->currentItem()); - if (item) { - myDirList->setCurrentItem(item); - myDirList->setSelected(item, true); - myDirList->ensureCurrentVisible(); - myLastSelected = item; - qApp->processEvents(); - QRect ir = myDirList->itemRect(myLastSelected); - - myEdit = new QLineEdit(myDirList->viewport()); - myBtn = new QToolButton(myDirList->viewport()); - myBtn->setText(" ... "); - connect(myBtn, SIGNAL(clicked()), this, SLOT(onBtnClicked())); - myEdit->setGeometry(0, - ir.top()-(myEdit->sizeHint().height()-ir.height())/2, - myDirList->viewport()->width()-myBtn->sizeHint().width(), - myEdit->sizeHint().height()); - myBtn->setGeometry (myEdit->width(), - ir.top()-(myEdit->sizeHint().height()-ir.height())/2, - myBtn->sizeHint().width(), - myEdit->sizeHint().height()); - connect(myEdit, SIGNAL(returnPressed()), this, SLOT(onEditFinished())); - myEdited = true; - myEdit->show(); - myBtn->show(); - myEdit->setText(c); - myEdit->setCursorPosition(myEdit->text().length()); - myEdit->installEventFilter(this); - myEdit->setFocus(); - } - } - } - } - } - } - return QDialog::eventFilter(object, event); -} - -/*! - button slot -*/ -void QAD_DirListDlg::onInsert() { - if (!myEdited) { - myLastSelected = 0; - onMouseButtonClicked(LeftButton, myDirList->item(myDirList->count()-1), QPoint(0,0)); - onMouseButtonClicked(LeftButton, myDirList->item(myDirList->count()-1), QPoint(0,0)); - } -} - -/*! - button slot -*/ -void QAD_DirListDlg::onDelete() { - if (!myEdited && myDirList->currentItem() >=0) { - removeDir(myDirList->item(myDirList->currentItem())); - myDirList->setFocus(); - } -} - -/*! - button slot -*/ -void QAD_DirListDlg::onUp() { - if (!myEdited && myLastSelected) { - int index = myDirList->currentItem(); - if (index > 0 && index < (int)myDirList->count()-1 && myDirList->isSelected(index)) { - QString t = myDirList->text(index-1); - myDirList->changeItem(myDirList->text(index), index-1); - myDirList->changeItem(t, index); - myDirList->setCurrentItem(index-1); - myLastSelected = myDirList->item(index-1); - myDirList->setSelected(myLastSelected, true); - myDirList->setFocus(); - } - } -} - -/*! - button slot -*/ -void QAD_DirListDlg::onDown() { - if (!myEdited && myLastSelected) { - int index = myDirList->currentItem(); - if (index >= 0 && index < (int)myDirList->count()-2 && myDirList->isSelected(index)) { - QString t = myDirList->text(index+1); - myDirList->changeItem(myDirList->text(index), index+1); - myDirList->changeItem(t, index); - myDirList->setCurrentItem(index+1); - myLastSelected = myDirList->item(index+1); - myDirList->setSelected(myLastSelected, true); - myDirList->setFocus(); - } - } -} - -/*! - Purpose : button slot -*/ -void QAD_DirListDlg::onOk() { - if (validate()) - accept(); -} diff --git a/src/SALOMEGUI/QAD_DirListDlg.h b/src/SALOMEGUI/QAD_DirListDlg.h deleted file mode 100644 index 369d5ea24..000000000 --- a/src/SALOMEGUI/QAD_DirListDlg.h +++ /dev/null @@ -1,79 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : QAD_DirListDlg.h -// Author : Vadim SANDLER -// Module : SALOME -// $Header$ - -#if !defined(QAD_DirListDlg_h) -#define QAD_DirListDlg_h - -#include -#include -#include -#include -#include - -class QAD_DirListDlg : public QDialog { - - Q_OBJECT - -public: -// constructor - QAD_DirListDlg(QWidget* parent, const char* name = 0); -// destructor - ~QAD_DirListDlg(); - -// gets list of paths - void getPathList(QStringList& list); -// sets list of paths - void setPathList(const QStringList& list); -// event filter - bool eventFilter(QObject* object, QEvent* event); - -protected: -// validates entered path, returns true if OK - bool validate(); -// appends/changes path - void appendDir(QListBoxItem* item, const QString& dir); -// removes directory from list - void removeDir(QListBoxItem* item); -// KeyPress event handler, processes and keys - void keyPressEvent(QKeyEvent* event); -// Resize event - void resizeEvent(QResizeEvent* event); - -protected slots: -// called when user clicks inside directories list box - void onMouseButtonClicked(int, QListBoxItem*, const QPoint&); -// called when user double-clicks on any item - void onDblClicked(QListBoxItem*); -// <...> (Browse dir) button slot - void onBtnClicked(); -// called when user finises editing of path by pressing - void onEditFinished(); -// button slot - void onInsert(); -// button slot - void onDelete(); -// button slot - void onUp(); -// button slot - void onDown(); -// button slot - void onOk(); - -private: - QListBox* myDirList; // directory list - QLineEdit* myEdit; // path edit box - QToolButton* myBtn; // browse pah button - bool myEdited; // edit mode flag - QListBoxItem* myLastSelected; // last selected row - -}; - -#endif // !defined(QAD_DirListDlg_h) diff --git a/src/SALOMEGUI/QAD_FileDlg.cxx b/src/SALOMEGUI/QAD_FileDlg.cxx deleted file mode 100644 index 3f35d228e..000000000 --- a/src/SALOMEGUI/QAD_FileDlg.cxx +++ /dev/null @@ -1,418 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : QAD_FileDlg.cxx -// Author : -// Module : SALOME -// $Header$ - -#include -#include -#include -#include -#include -#include -#include "QAD_Config.h" -#include "QAD_Desktop.h" -#include "QAD_FileDlg.h" -#include "QAD_MessageBox.h" -#include "QAD_Tools.h" -using namespace std; - -#define MIN_COMBO_SIZE 100 - -QString QAD_FileDlg::myLastVisitedPath; - -/*! -Constructor -*/ -QAD_FileDlg::QAD_FileDlg( QWidget* parent, bool open, bool showQuickDir, bool modal ) : -QFileDialogP( parent, 0, modal ), -myValidator( 0 ), -myQuickCombo( 0 ), -myOpen( open ) -{ - if ( parent->icon() ) - setIcon( *parent->icon() ); - setSizeGripEnabled( true ); - - if (showQuickDir) { - // inserting quick dir combo box - QLabel* lab = new QLabel(tr("QUICK_PATH_LAB"), this); - myQuickCombo = new QComboBox(false, this); - myQuickCombo->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed)); - myQuickCombo->setMinimumSize(MIN_COMBO_SIZE, 0); - - myQuickButton = new QPushButton(tr("ADD_PATH_BTN"), this); - - connect(myQuickCombo, SIGNAL(activated(const QString&)), this, SLOT(quickDir(const QString&))); - connect(myQuickButton, SIGNAL(clicked()), this, SLOT(addQuickDir())); - addWidgets(lab, myQuickCombo, myQuickButton); - - // getting dir list from settings - QString dirs = QAD_CONFIG->getSetting("FileDlg:QuickDirList"); - QStringList dirList = QStringList::split(';', dirs, false); - if (dirList.count() > 0) { - for (unsigned i = 0; i < dirList.count(); i++) - myQuickCombo->insertItem(dirList[i]); - } - else { - myQuickCombo->insertItem(QDir::homeDirPath()); - } - - // the following is a workaround for proper layouting of custom widgets =========== - QValueList buttonList; - QValueList labelList; - const QObjectList *list = children(); - QObjectListIt it(*list); - int maxButWidth = lab->sizeHint().width(); - int maxLabWidth = myQuickButton->sizeHint().width(); - - for (; it.current() ; ++it) { - if ( it.current()->isA( "QLabel" ) ) { - int tempW = ((QLabel*)it.current())->minimumWidth(); - if ( maxLabWidth < tempW ) maxLabWidth = tempW; - labelList.append( (QLabel*)it.current() ); - } - else if( it.current()->isA("QPushButton") ) { - int tempW = ((QPushButton*)it.current())->minimumWidth(); - if ( maxButWidth < tempW ) maxButWidth = tempW; - buttonList.append( (QPushButton*)it.current() ); - } - } - if (maxButWidth > 0) { - QValueList::Iterator bListIt; - for ( bListIt = buttonList.begin(); bListIt != buttonList.end(); ++bListIt ) - (*bListIt)->setFixedWidth( maxButWidth ); - } - if (maxLabWidth > 0) { - QValueList::Iterator lListIt; - for ( lListIt = labelList.begin(); lListIt != labelList.end(); ++lListIt ) - (*lListIt)->setFixedWidth( maxLabWidth ); - } - // ================================================================================ - } - setMode( myOpen ? ExistingFile : AnyFile ); - setCaption( myOpen ? tr( "INF_DESK_DOC_OPEN" ) : tr( "INF_DESK_DOC_SAVE" ) ); - if (myLastVisitedPath.isNull() || myLastVisitedPath.isEmpty()) { - // If no last visited path exists -> switch to the first preferred path - processPath(myQuickCombo->text(0)); - } - else if ( !processPath(myLastVisitedPath) ) { - // If last visited path doesn't exist -> switch to the first preferred path - processPath(myQuickCombo->text(0)); - } - myValidator = new QAD_FileValidator(this); - -} - -/*! -Destructor -*/ -QAD_FileDlg::~QAD_FileDlg() -{ -} - -/*! -Sets validator for file names to open/save -Deletes previous validator -*/ -void QAD_FileDlg::setValidator( QAD_FileValidator* v ) -{ - if (myValidator) - delete myValidator; - myValidator = v; -} - -/*! -Returns the selected file -*/ -QString QAD_FileDlg::selectedFile() const -{ - return mySelectedFile; -} - -/*! -Returns 'true' if this is 'Open File' dialog -and 'false' if 'Save File' dialog -*/ -bool QAD_FileDlg::isOpenDlg() const -{ - return myOpen; -} - -/*! -Closes this dialog and sets the return code to 'Accepted' -if the selected name is valid ( see 'acceptData()' ) -*/ -void QAD_FileDlg::accept() -{ -// mySelectedFile = QFileDialog::selectedFile().simplifyWhiteSpace(); //VSR- 06/12/02 - if ( mode() != ExistingFiles ) { - mySelectedFile = QFileDialogP::selectedFile(); //VSR+ 06/12/02 - addExtension(); - } -// mySelectedFile = mySelectedFile.simplifyWhiteSpace(); //VSR- 06/12/02 - - /* Qt 2.2.2 BUG: accept() is called twice if you validate - the selected file name by pressing 'Return' key in file - name editor but this name is not acceptable for acceptData() - */ - if ( acceptData() ) { - myLastVisitedPath = dirPath(); - QFileDialogP::accept(); - } -} - -/*! -Closes this dialog and sets the return code to 'Rejected' -*/ -void QAD_FileDlg::reject() -{ - mySelectedFile = QString::null; - QFileDialogP::reject(); -} - -/*! -Returns 'true' if selected file is valid. -The validity is checked by a file validator, -if there is no validator the file is always -considered as valid -*/ -bool QAD_FileDlg::acceptData() -{ - if ( myValidator ) - { - if ( isOpenDlg() ) - if ( mode() == ExistingFiles ) { - QStringList fileNames = selectedFiles(); - for ( int i = 0; i < fileNames.count(); i++ ) { - if ( !myValidator->canOpen( fileNames[i] ) ) - return false; - } - return true; - } - else { - return myValidator->canOpen( selectedFile() ); - } - else - return myValidator->canSave( selectedFile() ); - } - return true; -} - -/*! -Adds an extension to the selected file name -if the file has not it. -The extension is extracted from the active filter. -*/ -void QAD_FileDlg::addExtension() -{ -// mySelectedFile.stripWhiteSpace();//VSR- 06/12/02 -// if ( mySelectedFile.isEmpty() )//VSR- 06/12/02 - if ( mySelectedFile.stripWhiteSpace().isEmpty() )//VSR+ 06/12/02 - return; - -// if ( QAD_Tools::getFileExtensionFromPath( mySelectedFile ).isEmpty() ) //VSR- 06/12/02 -//ota : 16/12/03 if ( QAD_Tools::getFileExtensionFromPath( mySelectedFile ).isEmpty() ) //VSR+ 06/12/02 -// { - -#if QT_VERSION < 0x030000 - QRegExp r( QString::fromLatin1("([a-zA-Z0-9.*? +;#]*)$") ); - int len, index = r.match( selectedFilter(), 0, &len ); -#else - QRegExp r( QString::fromLatin1("\\([a-zA-Z0-9.*? +;#]*\\)$") ); - int index = r.search(selectedFilter()); -#endif - if ( index >= 0 ) - { -#if QT_VERSION < 0x030000 -// QString wildcard = selectedFilter().mid( index + 1, len-2 ); //VSR- 06/12/02 - QString wildcard = selectedFilter().mid( index + 1, len-2 ).stripWhiteSpace(); //VSR+ 06/12/02 -#else -// QString wildcard = selectedFilter().mid( index + 1, r.matchedLength()-2 ); //VSR- 06/12/02 - QString wildcard = selectedFilter().mid( index + 1, r.matchedLength()-2 ).stripWhiteSpace(); //VSR+ 06/12/02 -#endif - if ( mySelectedFile[mySelectedFile.length() - 1] == '.') - //if the file name ends with the point remove it - mySelectedFile.truncate(mySelectedFile.length() - 1); - QString anExt = "." + QAD_Tools::getFileExtensionFromPath( mySelectedFile ).stripWhiteSpace(); - // From the filters list make a pattern to validate a file extension - // Due to transformations from the filter list (*.txt *.*xx *.c++ QAD*.* ) we - // will have the pattern (\.txt|\..*xx|\.c\+\+|\..*) (as we validate extension only we remove - // stay extension mask only in the pattern - QString aPattern(wildcard); - QRegExp anExtRExp("("+aPattern.replace(QRegExp("(^| )[0-9a-zA-Z*_?]*\\."), " \\."). - stripWhiteSpace().replace(QRegExp("\\s+"), "|"). - replace(QRegExp("[*]"),".*").replace(QRegExp("[+]"),"\\+") + ")"); - - if ( anExtRExp.match(anExt) == -1 ) //if a selected file extension does not match to filter's list - { //remove a point if it is at the word end - if (anExt[ anExt.length() - 1 ] == '.') anExt.truncate( anExt.length() - 1 ); - index = wildcard.findRev( '.' ); - if ( index >= 0 ) - mySelectedFile += wildcard.mid( index ); //add the extension - } - } - // } -} - -/*! - Processes selection : tries to set given path or filename as selection -*/ -bool QAD_FileDlg::processPath( const QString& path ) -{ - if ( !path.isNull() ) { - QFileInfo fi( path ); - if ( fi.exists() ) { - if ( fi.isFile() ) - setSelection( path ); - else if ( fi.isDir() ) - setDir( path ); - return true; - } - else { - if ( QFileInfo( fi.dirPath() ).exists() ) { - setDir( fi.dirPath() ); - setSelection( path ); - return true; - } - } - } - return false; -} -/*! - Called when user selects item from "Quick Dir" combo box -*/ -void QAD_FileDlg::quickDir(const QString& dirPath) -{ - if ( !QDir(dirPath).exists() ) { - QAD_MessageBox::error1(this, - tr("ERR_ERROR"), - tr("ERR_DIR_NOT_EXIST").arg(dirPath), - tr("BUT_OK")); - - } - else { - processPath(dirPath); - } -} -/*! - Called when user presses "Add" button - adds current directory to quick directory - list and to the preferences -*/ -void QAD_FileDlg::addQuickDir() -{ - QString dp = dirPath(); - if ( !dp.isEmpty() ) { - QDir dir( dp ); - // getting dir list from settings - QString dirs = QAD_CONFIG->getSetting("FileDlg:QuickDirList"); - QStringList dirList = QStringList::split(';', dirs, false); - bool found = false; - bool emptyAndHome = false; - if ( dirList.count() > 0 ) { - for ( unsigned i = 0; i < dirList.count(); i++ ) { - QDir aDir( dirList[i] ); - if ( aDir.canonicalPath().isNull() && dirList[i] == dir.absPath() || - !aDir.canonicalPath().isNull() && aDir.exists() && aDir.canonicalPath() == dir.canonicalPath() ) { - found = true; - break; - } - } - } - else { - emptyAndHome = dir.canonicalPath() == QDir(QDir::homeDirPath()).canonicalPath(); - } - if ( !found ) { - dirList.append( dp ); - QAD_CONFIG->addSetting("FileDlg:QuickDirList", dirList.join(";")); - if ( !emptyAndHome ) - myQuickCombo->insertItem( dp ); - } - } -} -/*! - Returns the file name for Open/Save [ static ] -*/ -QString QAD_FileDlg::getFileName( QWidget* parent, - const QString& initial, - const QStringList& filters, - const QString& caption, - bool open, - bool showQuickDir, - QAD_FileValidator* validator ) -{ - QAD_FileDlg* fd = new QAD_FileDlg( parent, open, showQuickDir, true ); - if ( !caption.isEmpty() ) - fd->setCaption( caption ); - if ( !initial.isEmpty() ) { - fd->processPath( initial ); // VSR 24/03/03 check for existing of directory has been added to avoid QFileDialog's bug - } - - fd->setFilters( filters ); - - if ( validator ) - fd->setValidator( validator ); - fd->exec(); - QString filename = fd->selectedFile(); - delete fd; - qApp->processEvents(); - return filename; -} - - -/*! - Returns the list of files to be opened [ static ] -*/ -QStringList QAD_FileDlg::getOpenFileNames( QWidget* parent, - const QString& initial, - const QStringList& filters, - const QString& caption, - bool showQuickDir, - QAD_FileValidator* validator ) -{ - QAD_FileDlg* fd = new QAD_FileDlg( parent, true, showQuickDir, true ); - fd->setMode( ExistingFiles ); - if ( !caption.isEmpty() ) - fd->setCaption( caption ); - if ( !initial.isEmpty() ) { - fd->processPath( initial ); // VSR 24/03/03 check for existing of directory has been added to avoid QFileDialog's bug - } - fd->setFilters( filters ); - if ( validator ) - fd->setValidator( validator ); - fd->exec(); - QStringList filenames = fd->selectedFiles(); - delete fd; - qApp->processEvents(); - return filenames; -} - -/*! - Existing directory selection dialog [ static ] -*/ -QString QAD_FileDlg::getExistingDirectory ( QWidget* parent, - const QString& initial, - const QString& caption, - bool showQuickDir ) -{ - QAD_FileDlg* fd = new QAD_FileDlg( parent, true, showQuickDir, true); - if ( !caption.isEmpty() ) - fd->setCaption( caption ); - if ( !initial.isEmpty() ) { - fd->processPath( initial ); // VSR 24/03/03 check for existing of directory has been added to avoid QFileDialog's bug - } - fd->setMode( DirectoryOnly ); - fd->setFilters(tr("DIRECTORIES_FILTER")); - - fd->exec(); - QString dirname = fd->selectedFile(); - delete fd; - qApp->processEvents(); - return dirname; -} - diff --git a/src/SALOMEGUI/QAD_FileDlg.h b/src/SALOMEGUI/QAD_FileDlg.h deleted file mode 100644 index a234de43d..000000000 --- a/src/SALOMEGUI/QAD_FileDlg.h +++ /dev/null @@ -1,83 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : QAD_FileDlg.h -// Author : -// Module : SALOME -// $Header$ - -#ifndef QAD_FILEDIALOG_H -#define QAD_FILEDIALOG_H - -#include -#include - -// VSR (18/01/2005): use patched QFileDialog only for the official 3.0.5 version of Qt -#if QT_VERSION == 0x030005 -#include -#else -#include -#define QFileDialogP QFileDialog -#endif - -#include "QAD.h" -#include "QAD_FileValidator.h" - -class QAD_EXPORT QAD_FileDlg : public QFileDialogP -{ - Q_OBJECT - -public: - QAD_FileDlg( QWidget* parent, bool open, bool showQuickDir = true, bool modal = true ); - virtual ~QAD_FileDlg(); - -public: - bool isOpenDlg() const; - QString selectedFile() const; - - void setValidator( QAD_FileValidator* ); - - static QString getFileName( QWidget* parent, - const QString& initial, - const QStringList& filters, - const QString& caption, - bool open, - bool showQuickDir = true, - QAD_FileValidator* validator = 0); - static QStringList getOpenFileNames( QWidget* parent, - const QString& initial, - const QStringList& filters, - const QString& caption, - bool showQuickDir = true, - QAD_FileValidator* validator = 0); - static QString getExistingDirectory ( QWidget* parent, - const QString& initial, - const QString& caption, - bool showQuickDir = true); - -protected: - virtual bool acceptData(); - -private: - void addExtension(); - bool processPath( const QString& path ); - -protected slots: - void accept(); - void reject(); - void quickDir(const QString&); - void addQuickDir(); - -protected: - bool myOpen; /* open/save selector */ - QString mySelectedFile; /* selected filename */ - QAD_FileValidator* myValidator; /* file validator */ - static QString myLastVisitedPath; /* last visited path */ - QComboBox* myQuickCombo; /* quick dir combo box */ - QPushButton* myQuickButton; /* quick dir add button */ -}; - -#endif diff --git a/src/SALOMEGUI/QAD_FileValidator.cxx b/src/SALOMEGUI/QAD_FileValidator.cxx deleted file mode 100644 index 0a4c77426..000000000 --- a/src/SALOMEGUI/QAD_FileValidator.cxx +++ /dev/null @@ -1,97 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : QAD_FileValidator.cxx -// Author : -// Module : SALOME -// $Header$ - -#include "QAD_FileValidator.h" -#include "QAD_Application.h" -#include "QAD_Desktop.h" -#include "QAD_MessageBox.h" - -#include "utilities.h" - -#include -#include - -using namespace std; - -/* constructor */ -QAD_FileValidator::QAD_FileValidator(QWidget* parent) : -myParent(parent) -{ - if (!myParent) { - myParent = QAD_Application::getDesktop(); - } -} - -/* returns false if can't open file */ -bool QAD_FileValidator::canOpen( const QString& file ) -{ -MESSAGE ( "QAD_FileValidator::canOpen" ) - if ( !QFile::exists( file ) ) { - QAD_MessageBox::error1( myParent, - QObject::tr( "ERR_ERROR" ), - QObject::tr( "ERR_DOC_FILENOTEXIST" ).arg( file ), - QObject::tr( "BUT_OK" ) ); - return false; - } - if ( !QFileInfo( file ).isReadable() ) { - QAD_MessageBox::error1( myParent, - QObject::tr( "ERR_ERROR" ), - QObject::tr( "ERR_PERMISSION_DENIED" ).arg( file ), - QObject::tr( "BUT_OK" ) ); - return false; - } - return true; -} - -/* returns false if can't save file */ -bool QAD_FileValidator::canSave( const QString& file ) -{ -MESSAGE ( "QAD_FileValidator::canSave" ) - if ( QFile::exists( file ) ) { - // if file exists - raise warning... - if ( QAD_MessageBox::warn2( myParent, - QObject::tr( "WRN_WARNING" ), - QObject::tr( "QUE_DOC_FILEEXISTS" ).arg( file ), - QObject::tr( "BUT_YES" ), - QObject::tr( "BUT_NO" ), - QAD_YES, - QAD_NO, - QAD_NO ) == QAD_NO ) { - return false; - } - // ... and if user wants to overwrite file, check it for writeability - if ( !QFileInfo( file ).isWritable() ) { - QAD_MessageBox::error1( myParent, - QObject::tr( "ERR_ERROR" ), - QObject::tr( "ERR_PERMISSION_DENIED" ).arg( file ), - QObject::tr( "BUT_OK" ) ); - return false; - } - } - else { - // if file doesn't exist - try to create it - QFile qf( file ); - if ( !qf.open( IO_WriteOnly ) ) { - QAD_MessageBox::error1( myParent, - QObject::tr( "ERR_ERROR" ), - QObject::tr( "ERR_PERMISSION_DENIED" ).arg( file ), - QObject::tr( "BUT_OK" ) ); - return false; - } - else { - // remove just created file - qf.close(); - qf.remove(); - } - } - return true; -} - diff --git a/src/SALOMEGUI/QAD_FileValidator.h b/src/SALOMEGUI/QAD_FileValidator.h deleted file mode 100644 index 6bb6ef867..000000000 --- a/src/SALOMEGUI/QAD_FileValidator.h +++ /dev/null @@ -1,30 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : QAD_FileValidator.h -// Author : -// Module : SALOME -// $Header$ - -#ifndef QAD_FILEVALIDATOR_H -#define QAD_FILEVALIDATOR_H - -#include -#include "QAD.h" - -class QAD_EXPORT QAD_FileValidator -{ -public: - QAD_FileValidator(QWidget* parent = 0); - - virtual bool canOpen( const QString& file ); - virtual bool canSave( const QString& file ); - - private: - QWidget* myParent; -}; - -#endif diff --git a/src/SALOMEGUI/QAD_Help.cxx b/src/SALOMEGUI/QAD_Help.cxx deleted file mode 100644 index e14035b59..000000000 --- a/src/SALOMEGUI/QAD_Help.cxx +++ /dev/null @@ -1,77 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_Help.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "QAD_Help.h" -using namespace std; - -/*! - \class QAD_Help QAD_HelpL.h - \brief Shows help in QAD-based applications. -*/ - -/*! - Constructor -*/ -QAD_Help::QAD_Help() -{ -} - -/*! - Destructor -*/ -QAD_Help::~QAD_Help() -{ -} - -/*! - Shows help index -*/ -void QAD_Help::index() -{ -} - -/*! - Help search -*/ -void QAD_Help::search() -{ -} - -/*! - Shows help contents -*/ -void QAD_Help::contents() -{ -} - -/*! - Shows context help for 'section' and 'topic' -*/ -void QAD_Help::context( const QCString& section, const QCString& topic ) -{ -} diff --git a/src/SALOMEGUI/QAD_Help.h b/src/SALOMEGUI/QAD_Help.h deleted file mode 100644 index b5c1d9437..000000000 --- a/src/SALOMEGUI/QAD_Help.h +++ /dev/null @@ -1,48 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_Help.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef QAD_HELP_H -#define QAD_HELP_H - -#include - -class QAD_Help -{ -public: - QAD_Help(); - ~QAD_Help(); - - static void index(); - static void search(); - static void contents (); - static void context( const QCString& context, const QCString& topic ); -}; - -#endif - - diff --git a/src/SALOMEGUI/QAD_HelpWindow.cxx b/src/SALOMEGUI/QAD_HelpWindow.cxx deleted file mode 100644 index 2453ec7e4..000000000 --- a/src/SALOMEGUI/QAD_HelpWindow.cxx +++ /dev/null @@ -1,245 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_HelpWindow.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -/*! - \class QAD_HelpWindow QAD_HelpWindow.h - \brief Html browser for help. -*/ - -#include "QAD_HelpWindow.h" -#include "QAD_ResourceMgr.h" -#include "QAD_Desktop.h" -#include "QAD_Application.h" -#include "QAD_Tools.h" - -// QT Includes -#include -#include -#include -#include -#include -#include -#include -using namespace std; - -/*! - Constructor -*/ -QAD_HelpWindow::QAD_HelpWindow() - : QMainWindow( 0, "SALOME Professional Help", WStyle_Customize | WType_TopLevel | WDestructiveClose ), - pathCombo( 0 ), selectedURL() -{ - QAD_ResourceMgr* rmgr = QAD_Desktop::getResourceManager(); - - // alternative palette - setPalette( QAD_Application::getPalette(true) ); - // caption - setCaption( tr("SALOMEGUI_HELP_TITLE") ); - // icon - QPixmap icon ( rmgr->loadPixmap( "CLIENT", tr("ICON_DESK_DEFAULTICON") ) ); - if ( !icon.isNull() ) setIcon( icon ); - - // create browser - browser = new QTextBrowser( this ); - browser->setFrameStyle( QFrame::Panel | QFrame::Sunken ); - connect( browser, SIGNAL( textChanged() ), this, SLOT( textChanged() ) ); - setCentralWidget( browser ); - - // menu/toolbar actions - menuBar()->setItemEnabled( forwardId, FALSE); - menuBar()->setItemEnabled( backwardId, FALSE); - connect( browser, SIGNAL( backwardAvailable( bool ) ), - this, SLOT( setBackwardAvailable( bool ) ) ); - connect( browser, SIGNAL( forwardAvailable( bool ) ), - this, SLOT( setForwardAvailable( bool ) ) ); - - QIconSet icon_back( QPixmap(rmgr->loadPixmap("QAD", tr("ICON_APP_HELP_BACK")) )); - QIconSet icon_forward( QPixmap(rmgr->loadPixmap("QAD", tr("ICON_APP_HELP_FORWARD")) )); - QIconSet icon_home( QPixmap(rmgr->loadPixmap("QAD", tr("ICON_APP_HELP_HOME")) )); - - QToolBar* toolbar = new QToolBar( this ); - addToolBar( toolbar, "Toolbar"); - QToolButton* button; - - button = new QToolButton( icon_back, tr("TOT_HELPWINDOW_BACKWARD"), "", browser, SLOT(backward()), toolbar ); - connect( browser, SIGNAL( backwardAvailable(bool) ), button, SLOT( setEnabled(bool) ) ); - button->setEnabled( FALSE ); - button = new QToolButton( icon_forward, tr("TOT_HELPWINDOW_FORWARD"), "", browser, SLOT(forward()), toolbar ); - connect( browser, SIGNAL( forwardAvailable(bool) ), button, SLOT( setEnabled(bool) ) ); - button->setEnabled( FALSE ); - button = new QToolButton( icon_home, tr("TOT_HELPWINDOW_HOME"), "", browser, SLOT(home()), toolbar ); - - toolbar->addSeparator(); - - pathCombo = new QComboBox( TRUE, toolbar ); - pathCombo->setInsertionPolicy(QComboBox::NoInsertion); - pathCombo->setDuplicatesEnabled(false); - connect( pathCombo, SIGNAL( activated( const QString & ) ), - this, SLOT( pathSelected( const QString & ) ) ); - toolbar->setStretchableWidget( pathCombo ); - setRightJustification( TRUE ); - setDockEnabled( Left, FALSE ); - setDockEnabled( Right, FALSE ); - setDockEnabled( Bottom, FALSE ); - setDockEnabled( TornOff, FALSE ); - setDockMenuEnabled( false ); - - /* - // look for index.html and set homeDir - // 1. $(KERNEL_ROOT_DIR)/doc/index.html - // 2. $(KERNEL_ROOT_DIR)/doc/html/index.html - // 3. $(KERNEL_ROOT_DIR)/doc/html/html/index.html - // 4. /usr/local/doc/html/index.html - - QCString dir; - QString root; - if ( (dir = getenv("KERNEL_ROOT_DIR")) ) { - root = QAD_Tools::addSlash( QAD_Tools::addSlash(dir) + QAD_Tools::addSlash("share") + QAD_Tools::addSlash("salome") + "doc" ); - if ( QFileInfo( root + "index.html" ).exists() ) { - homeDir = root; - } - else { - root = QAD_Tools::addSlash( root + "html" ); - if ( QFileInfo( root + "index.html" ).exists() ) { - homeDir = root; - } - else { - root = QAD_Tools::addSlash( root + "html" ); - if ( QFileInfo( root + "index.html" ).exists() ) { - homeDir = root; - } - } - } - } - if ( root.isEmpty() ) { - if ( QFileInfo( "/usr/local/doc/html/index.html" ).exists() ) { - homeDir = "/usr/local/doc/html/"; - } - } - if ( root.isEmpty() ) - root = "./doc/"; - - browser->setSource( QFileInfo( homeDir + "index.html" ).absFilePath() ); - */ - browser->setFocus(); - - QSize dSize = QApplication::desktop()->size(); - int x = ( dSize.width() - 750 ) / 2; - int y = ( dSize.height() - 680 ) / 2; - setGeometry( x, y, 750, 680 ); -} - -/*! - Destructor -*/ -QAD_HelpWindow::~QAD_HelpWindow() -{ - emit(helpWindowClosed()); -} - -/*! - enables/disables button -*/ -void QAD_HelpWindow::setBackwardAvailable( bool b) -{ - menuBar()->setItemEnabled( backwardId, b); -} - -/*! - enables/disables button - */ -void QAD_HelpWindow::setForwardAvailable( bool b) -{ - menuBar()->setItemEnabled( forwardId, b); -} - -/*! - called when new document is loaded into browser -*/ -void QAD_HelpWindow::textChanged() -{ - if ( browser->documentTitle().isNull() && browser->context().isNull() && browser->source().isNull() ) - browser->clear(); - selectedURL = browser->source(); //caption(); - if ( !selectedURL.isEmpty() && pathCombo ) { - bool exists = FALSE; - int i; - for ( i = 0; i < pathCombo->count(); ++i ) { - if ( pathCombo->text( i ) == selectedURL ) { - exists = TRUE; - break; - } - } - if ( !exists ) { - pathCombo->insertItem( selectedURL, 0 ); - pathCombo->setCurrentItem( 0 ); - } else { - pathCombo->setCurrentItem( i ); - } - selectedURL = QString::null; - } -} - -/*! - called when users selectes dosument from the combo box -*/ -void QAD_HelpWindow::pathSelected( const QString& _path ) -{ - browser->setSource( _path ); -} - -/*! - goes back to the contents -*/ -void QAD_HelpWindow::contents() -{ - browser->home(); -} - -/*! - opens new document in browser window and makes context search - <_source> is a filename, can be relative, if empty, index.html name is used - <_context> is a context, e.g. link in the file -*/ -void QAD_HelpWindow::context( const QString& _source, const QString& _context) -{ - QString src; - if ( _source.isEmpty() ) { - src = homeDir + "index.html"; - } - else { - QFileInfo fi( _source ); - if ( fi.isRelative() ) - src = homeDir + _source; - else - src = _source; - } - if ( !_context.isEmpty() ) - src += "#" + _context; - browser->setSource( src ); -} diff --git a/src/SALOMEGUI/QAD_HelpWindow.h b/src/SALOMEGUI/QAD_HelpWindow.h deleted file mode 100644 index 33f44d2fe..000000000 --- a/src/SALOMEGUI/QAD_HelpWindow.h +++ /dev/null @@ -1,67 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_HelpWindow.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef QAD_HELPWINDOW_H -#define QAD_HELPWINDOW_H - -#include -#include - -class QComboBox; -class QPopupMenu; - -class QAD_HelpWindow : public QMainWindow -{ - Q_OBJECT -public: - QAD_HelpWindow(); - ~QAD_HelpWindow(); - - void contents(); - void context( const QString& _source, const QString& _context = QString::null ); - -private slots: - void setBackwardAvailable( bool ); - void setForwardAvailable( bool ); - void textChanged(); - void pathSelected( const QString & ); - -signals: - void helpWindowClosed(); - -private: - QTextBrowser* browser; - QComboBox* pathCombo; - int backwardId, forwardId; - QString selectedURL; - QString homeDir; - -}; - -#endif - diff --git a/src/SALOMEGUI/QAD_LeftFrame.cxx b/src/SALOMEGUI/QAD_LeftFrame.cxx deleted file mode 100644 index 8edb54c48..000000000 --- a/src/SALOMEGUI/QAD_LeftFrame.cxx +++ /dev/null @@ -1,64 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_LeftFrame.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "QAD_LeftFrame.h" -#include "QAD_ObjectBrowser.h" -#include -using namespace std; - -/*! - \class QAD_LeftFrame QAD_LeftFrame.h - \brief Frame window which contains QAD_ObjectBrowser. -*/ - -/*! - Constructor -*/ -QAD_LeftFrame::QAD_LeftFrame( SALOMEDS::Study_var study, QWidget *parent, const char *name) - : QWidget( parent, name ) -{ - QVBoxLayout* layout = new QVBoxLayout( this ); - layout->setMargin( 0 ); layout->setSpacing( 6 ); - myObjectBrowser = new QAD_ObjectBrowser( study, this ); - layout->addWidget( myObjectBrowser ); -} - -/*! - Destructor -*/ -QAD_LeftFrame::~QAD_LeftFrame() -{ -} - -/*! - Returns reference to Object Browser [ static ] -*/ -QAD_ObjectBrowser* QAD_LeftFrame::getObjectBrowser() const -{ - return myObjectBrowser; -} diff --git a/src/SALOMEGUI/QAD_LeftFrame.h b/src/SALOMEGUI/QAD_LeftFrame.h deleted file mode 100644 index f8db981e9..000000000 --- a/src/SALOMEGUI/QAD_LeftFrame.h +++ /dev/null @@ -1,52 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_LeftFrame.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef QAD_LeftFrame_H -#define QAD_LeftFrame_H - -#include "QAD.h" -#include -// IDL Headers -#include -#include CORBA_SERVER_HEADER(SALOMEDS) - -class QAD_ObjectBrowser; - -class QAD_EXPORT QAD_LeftFrame : public QWidget -{ -public: - QAD_LeftFrame( SALOMEDS::Study_var study, QWidget *parent, const char *name ); - ~QAD_LeftFrame(); - - QAD_ObjectBrowser* getObjectBrowser() const; - -protected: - QAD_ObjectBrowser* myObjectBrowser; -}; - -#endif diff --git a/src/SALOMEGUI/QAD_ListMenuIdAction.cxx b/src/SALOMEGUI/QAD_ListMenuIdAction.cxx deleted file mode 100644 index 16bb368dc..000000000 --- a/src/SALOMEGUI/QAD_ListMenuIdAction.cxx +++ /dev/null @@ -1,43 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_ListMenuIdAction.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "QAD_ListMenuIdAction.h" -using namespace std; - -QAD_ListMenuIdAction::QAD_ListMenuIdAction(QPopupMenu* theMenu, - int id, - QActionP* theAction) -{ - myMenu = theMenu; - myId = id; - myAction = theAction; -} - -QAD_ListMenuIdAction::~QAD_ListMenuIdAction() -{ -} diff --git a/src/SALOMEGUI/QAD_ListMenuIdAction.h b/src/SALOMEGUI/QAD_ListMenuIdAction.h deleted file mode 100644 index 7fec36775..000000000 --- a/src/SALOMEGUI/QAD_ListMenuIdAction.h +++ /dev/null @@ -1,52 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_ListMenuIdAction.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef QAD_LISTMENUIDACTION_H -#define QAD_LISTMENUIDACTION_H - -#include -#include "qactionP.h" - -class QAD_ListMenuIdAction -{ - -public: - QAD_ListMenuIdAction(QPopupMenu*,int,QActionP*); - virtual ~QAD_ListMenuIdAction(); - - int getId() {return myId;} - QPopupMenu* getMenu() {return myMenu;} - QActionP* getAction() {return myAction;} - -private: - QPopupMenu* myMenu; - int myId; - QActionP* myAction; -}; - -#endif diff --git a/src/SALOMEGUI/QAD_ListPopupMenu.cxx b/src/SALOMEGUI/QAD_ListPopupMenu.cxx deleted file mode 100644 index 1d9e9a7b9..000000000 --- a/src/SALOMEGUI/QAD_ListPopupMenu.cxx +++ /dev/null @@ -1,51 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_ListPopupMenu.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "QAD_ListPopupMenu.h" -using namespace std; - -/*! - Constructor. -*/ -QAD_ListPopupMenu::QAD_ListPopupMenu(QPopupMenu* thePopup, - const QString & theContext, - const QString & theParent, - const QString & theObject) -{ - myPopup = thePopup; - myContext = theContext; - myParent = theParent; - myObject = theObject; -} - -/*! - Destructor. -*/ -QAD_ListPopupMenu::~QAD_ListPopupMenu() -{ -} diff --git a/src/SALOMEGUI/QAD_ListPopupMenu.h b/src/SALOMEGUI/QAD_ListPopupMenu.h deleted file mode 100644 index a86e6bc5b..000000000 --- a/src/SALOMEGUI/QAD_ListPopupMenu.h +++ /dev/null @@ -1,56 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_ListPopupMenu.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef QAD_LISTPOPUPMENU_H -#define QAD_LISTPOPUPMENU_H - -#include - -class QAD_ListPopupMenu -{ - -public: - QAD_ListPopupMenu(QPopupMenu*, - const QString & theContext, - const QString & theParent, - const QString & theObject); - virtual ~QAD_ListPopupMenu(); - - QPopupMenu* getPopup() {return myPopup;} - QString & getContext() {return myContext;} - QString & getParent() {return myParent;} - QString & getObject() {return myObject;} - -private: - QPopupMenu* myPopup; - QString myContext; - QString myParent; - QString myObject; -}; - -#endif diff --git a/src/SALOMEGUI/QAD_ListView.cxx b/src/SALOMEGUI/QAD_ListView.cxx deleted file mode 100644 index b48d62418..000000000 --- a/src/SALOMEGUI/QAD_ListView.cxx +++ /dev/null @@ -1,1520 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : QAD_ListView.cxx -// Author : Vadim SANDLER -// Module : SALOME -// $Header$ - -#include "QAD_ListView.h" - -#include -#include -#include -#include - -#include "QAD_Desktop.h" - -#include -#include - -#include "utilities.h" - -using namespace std; - -////////////////////////////////////////////////////////////////////// -// QAD_ListView class implementation -////////////////////////////////////////////////////////////////////// - -//================================================================ -// Function : computeEditGeometry -// Purpose : static function - used for resizing editing widget -//================================================================ -void computeEditGeometry(QAD_ListViewItem* theItem, - QAD_EntityEdit* theWidget) -{ - if (!theItem) - return; - QListView* aListView = theItem->listView(); - int anEditColumn = theItem->getEditedColumn(); - if (anEditColumn < 0) - return; - - int aX = 0, aY = 0, aW = 0, aH = 0; - - QRect aRect = aListView->itemRect(theItem); - aListView->contentsToViewport(aListView->header()->sectionPos(anEditColumn), 0, aX, aY); - if (aX < 0) - aX = 0; // THIS CAN BE REMOVED - QSize aSize = theWidget->getControl()->sizeHint(); - aH = QMAX(aSize.height() , aRect.height() ); - aY = aRect.y() - ((aH - aRect.height()) / 2); - //aW = aListView->columnWidth(anEditColumn); // CAN SUBSTITUTE NEXT 3 ROWS - aW = aListView->viewport()->width() - aX; - if (aW < 0) - aW = 0; - theWidget->setGeometry(aX, aY, aW, aH); -} - -//================================================================ -// Function : QAD_ListView::QAD_ListView -// Purpose : constructor -//================================================================ -QAD_ListView::QAD_ListView(QWidget *parent) : -QListView(parent) -{ - myPopup = 0; - myMouseEnabled = true; - myEditingEnabled = false; - enablePopup( true ); - setSelectionMode(Single); - setSorting(-1); - setRootIsDecorated(false); - setAllColumnsShowFocus(false); -// header()->setClickEnabled(false); - header()->setMovingEnabled(false); - - myEditedItem = 0; - myEdit = 0; - - viewport()->installEventFilter(this); - - connect(this, SIGNAL(selectionChanged()), - this, SLOT(onSelectionChanged())); - connect(header(), SIGNAL(sizeChange(int, int, int)), - this, SLOT(onHeaderSizeChange(int, int, int))); -} - -//================================================================ -// Function : QAD_ListView::~QAD_ListView -// Purpose : destructor -//================================================================ -QAD_ListView::~QAD_ListView() -{ -// destroy popup menu - deletePopupMenu(); - if (myEdit) { - delete myEdit; - } - myEdit = 0; - myEditedItem = 0; -} - -//================================================================ -// Function : QAD_ListView::updateViewer -// Purpose : updates all data viewer -//================================================================ -void QAD_ListView::updateViewer() -{ - // temporary disconnecting selection changed SIGNAL - blockSignals(true); - QAD_ListViewItem* aRoot = (QAD_ListViewItem*)firstChild(); - if (aRoot) - aRoot->updateAllLevels(); - updateContents(); - // connecting again selection changed SIGNAL - blockSignals(false); - emit selectionChanged(); -} - -//================================================================ -// Function : QAD_ListView::updateSelected -// Purpose : updates currently selected item(s) -//================================================================ -void QAD_ListView::updateSelected() -{ - // temporary disconnecting selection changed SIGNAL - blockSignals(true); - QAD_ListViewItem* aChild = (QAD_ListViewItem*)selectedItem(); - if (aChild) - aChild->updateAllLevels(); - updateContents(); - // connecting again selection changed SIGNAL - blockSignals(false); - emit selectionChanged(); -} - -//================================================================ -// Function : QAD_ListView::onCreatePopup -// Purpose : fills popup menu with items -//================================================================ -void QAD_ListView::onCreatePopup() -{ - if (myPopup) { - // add items here... - } -} - -//================================================================ -// Function : QAD_ListView::deletePopupMenu -// Purpose : delete popup menu -//================================================================ -void QAD_ListView::deletePopupMenu() -{ - if (myPopup) { - destroyPopup(); - delete myPopup; - myPopup = 0; - } -} - -//================================================================ -// Function : QAD_ListView::clear -// Purpose : clears view -//================================================================ -void QAD_ListView::clear() -{ - if (myEdit) { - delete myEdit; - myEdit = 0; - myEditedItem = 0; - } - QListView::clear(); -} - -//================================================================ -// Function : QAD_ListView::isMouseEnabled -// Purpose : returms true if mouse events are enabled -//================================================================ -bool QAD_ListView::isMouseEnabled() -{ - return myMouseEnabled; -} - -//================================================================ -// Function : QAD_ListView::enableMouse -// Purpose : enabled/disables mouse events (excluding MouseMove) -//================================================================ -void QAD_ListView::enableMouse(bool enable) -{ - myMouseEnabled = enable; -} - -//================================================================ -// Function : QAD_ListView::eventFilter -// Purpose : event filter -//================================================================ -bool QAD_ListView::eventFilter(QObject* object, QEvent* event) -{ - if (object == viewport() && - (event->type() == QEvent::MouseButtonPress || - event->type() == QEvent::MouseButtonRelease || - event->type() == QEvent::MouseButtonDblClick) && - !isMouseEnabled()) - return true; - else - return QListView::eventFilter(object, event); -} - -//================================================================ -// Function : QAD_ListView::enableEditing -// Purpose : setting editing of items availbale/not available -//================================================================ -void QAD_ListView::enableEditing(bool theFlag) -{ - myEditingEnabled = theFlag; - if (!myEditingEnabled) { - if (myEdit) { - delete myEdit; - myEdit = 0; - myEditedItem = 0; - } - } -} - -//================================================================ -// Function : QAD_ListView::isEnableEditing -// Purpose : says if editing is enabled -//================================================================ -bool QAD_ListView::isEnableEditing() -{ - return myEditingEnabled; -} - -//================================================================ -// Function : QAD_ListView::accept -// Purpose : calls finishEditing(true)... -//================================================================ -void QAD_ListView::accept() -{ - finishEditing(true); -} - -//================================================================ -// Function : QAD_ListView::contentsMouseReleaseEvent -// Purpose : mouse release button event -//================================================================ -void QAD_ListView::contentsMouseReleaseEvent(QMouseEvent* e) -{ - QListView::contentsMouseReleaseEvent(e); - // destroy popup menu if exist - qApp->processEvents(); - // create popup menu on right button click - if(e->button() == RightButton) { - - deletePopupMenu(); - QPopupMenu* aPopup = createPopup(); - if (aPopup) { - myPopup = aPopup; - if (myPopup->count() > 0) - //myPopup->exec(QCursor::pos()); - myPopup->popup(e->globalPos()); - } - } -} - -//================================================================ -// Function : QAD_ListView::onSelectionChanged -// Purpose : slot, called when selection changed in List Viewer -//================================================================ -void QAD_ListView::onSelectionChanged() -{ - if (myEdit) { - finishEditing(true); - delete myEdit; - myEdit = 0; - if (myEditedItem && !myEditedItem->isAccepted()) { - delete myEditedItem; - updateContents(); - } - myEditedItem = 0; - } - // editing is allowed in Single Selection Mode only - if (selectionMode() != Single || !isEnableEditing()) - return; - QAD_ListViewItem* anItem = (QAD_ListViewItem*)selectedItem(); - if (anItem) { - if (!anItem->isEditable()) - return; - myEdit = anItem->startEditing(); - if (myEdit) { - connect(myEdit, SIGNAL(returnPressed()), this, SLOT(onEditOk())); - connect(myEdit, SIGNAL(escapePressed()), this, SLOT(onEditCancel())); - myEditedItem = anItem; - myEdit->show(); - myEdit->setFocus(); - } - } -} - -//================================================================ -// Function : QAD_ListView::resizeEvent -// Purpose : called when Data Viewer is resized -//================================================================ -void QAD_ListView::resizeEvent( QResizeEvent * e) -{ - QListView::resizeEvent(e); - int aW = columnWidth(columns()-1); - int aX = header()->sectionPos(columns()-1); - if (aW < width() - frameWidth() * 2 - aX - 1) - setColumnWidth(columns()-1, width() - frameWidth() * 2 - aX - 1); - updateContents(); -} - -//================================================================ -// Function : QAD_ListView::onHeaderSizeChange -// Purpose : slot, called when columns sizes are changed -//================================================================ -void QAD_ListView::onHeaderSizeChange(int, int, int) -{ - int aW = columnWidth(columns()-1); - int aX = header()->sectionPos(columns()-1); - if (aW < width() - frameWidth() * 2 - aX - 1) - setColumnWidth(columns()-1, width() - frameWidth() * 2 - aX - 1); -} - -//================================================================ -// Function : QAD_ListView::viewportPaintEvent -// Purpose : handler for paint event -//================================================================ -void QAD_ListView::viewportPaintEvent(QPaintEvent* e) -{ - QListView::viewportPaintEvent(e); - if (myEditedItem && myEdit) { - computeEditGeometry(myEditedItem, myEdit); - } -} - -//================================================================ -// Function : QAD_ListView::onEditOk -// Purpose : called when user finishes in editing of item -//================================================================ -void QAD_ListView::onEditOk() -{ - finishEditing(true); -} - -//================================================================ -// Function : QAD_ListView::onEditCancel -// Purpose : called when user cancels item editing -//================================================================ -void QAD_ListView::onEditCancel() -{ - finishEditing(false); -} - -//================================================================ -// Function : QAD_ListView::finishEditing -// Purpose : finishes editing of entity -//================================================================ -UpdateType QAD_ListView::finishEditing(bool ok) -{ - UpdateType aNeedsUpdate = utCancel; - if (myEditedItem && myEdit) - { - disconnect(myEdit, SIGNAL(returnPressed()), this, SLOT(onEditOk())); - disconnect(myEdit, SIGNAL(escapePressed()), this, SLOT(onEditCancel())); - myEditedItem->setAccepted(true); - if (ok) { - aNeedsUpdate = myEditedItem->finishEditing(myEdit); - if (aNeedsUpdate == utCancel) { - // something to do here on Cancel... - } - else { - // something to do here on OK... - } - // updating contents - switch (aNeedsUpdate) { - case utUpdateItem: - { - if (myEditedItem) - myEditedItem->updateAllLevels(); - break; - } - case utUpdateParent: - { - if (myEditedItem) { - QAD_ListViewItem* aParent = (QAD_ListViewItem*)(myEditedItem->parent()); - if (aParent) - aParent->updateAllLevels(); - else - myEditedItem->updateAllLevels(); - } - break; - } - case utUpdateViewer: - { - updateViewer(); - break; - } - case utUpdateAll: - { - // doing the same as for utUpdateViewer here - // descendants can add extra processing - updateViewer(); - break; - } - default: - break; - } - } - } - - // hide widget - if (myEdit) { - myEdit->hide(); - } - - return aNeedsUpdate; -} - -//================================================================ -// Function : QAD_ListView::tip -// Purpose : gets current tooltip for list view -// returns valid rect in success -//================================================================ -QRect QAD_ListView::tip(QPoint aPos, - QString& aText, - QRect& dspRect, - QFont& dspFnt) const -{ - QRect result( -1, -1, -1, -1 ); - QAD_ListViewItem* aItem = (QAD_ListViewItem*)itemAt( aPos ); - if ( aItem ) { - for (int i = 0; i < columns(); i++) { - QRect aItemRect = aItem->itemRect(i); - QRect aTextRect = aItem->textRect(i); - if ( !aItem->text(i).isEmpty() && - ( aItemRect.width() > header()->sectionSize(i) || - aTextRect.left() < 0 || - aTextRect.top() < 0 || - aTextRect.right() > viewport()->width() || - aTextRect.bottom() > viewport()->height() ) ) { - // calculating tip data - aText = aItem->tipText(); - dspRect = aItem->tipRect(); - dspFnt = font(); - if (dspRect.isValid()) { - result = QRect(QPoint(0, aItemRect.top()), - QSize(viewport()->width(), aItemRect.height())); - } - } - } - } - return result; -} - -////////////////////////////////////////////////////////////////////// -// QAD_ListViewItem Class Implementation -////////////////////////////////////////////////////////////////////// - -//================================================================ -// Function : QAD_ListViewItem::QAD_ListViewItem -// Purpose : constructor -//================================================================ -QAD_ListViewItem::QAD_ListViewItem(QAD_ListView* parent) : -QListViewItem( parent ) -{ - init(); -} - -//================================================================ -// Function : QAD_ListViewItem::QAD_ListViewItem -// Purpose : constructor -//================================================================ -QAD_ListViewItem::QAD_ListViewItem(QAD_ListView* parent, - QAD_ListViewItem* after) : -QListViewItem( parent, after ) -{ - init(); -} - -//================================================================ -// Function : QAD_ListViewItem::QAD_ListViewItem -// Purpose : constructor -//================================================================ -QAD_ListViewItem::QAD_ListViewItem(QAD_ListView* parent, - const QString theName, - const bool theEditable) : -QListViewItem(parent, theName) -{ - init(); - setEditable(theEditable); -} - -//================================================================ -// Function : QAD_ListViewItem::QAD_ListViewItem -// Purpose : constructor -//================================================================ -QAD_ListViewItem::QAD_ListViewItem(QAD_ListView* parent, - const QString theName, - const QString theValue, - const bool theEditable) : -QListViewItem(parent, theName, theValue) -{ - init(); - setEditable(theEditable); -} - -//================================================================ -// Function : QAD_ListViewItem::QAD_ListViewItem -// Purpose : constructor -//================================================================ -QAD_ListViewItem::QAD_ListViewItem(QAD_ListViewItem* parent, - const QString theName, - const bool theEditable) : -QListViewItem(parent, theName) -{ - init(); - setEditable(theEditable); -} - -//================================================================ -// Function : QAD_ListViewItem::QAD_ListViewItem -// Purpose : constructor -//================================================================ -QAD_ListViewItem::QAD_ListViewItem(QAD_ListViewItem* parent, - QAD_ListViewItem* after, - const QString theName, - const bool theEditable) : -QListViewItem(parent, after, theName) -{ - init(); - setEditable(theEditable); -} - -//================================================================ -// Function : QAD_ListViewItem::QAD_ListViewItem -// Purpose : constructor -//================================================================ -QAD_ListViewItem::QAD_ListViewItem(QAD_ListView* parent, - QAD_ListViewItem* after, - const QString theName, - const bool theEditable) : -QListViewItem(parent, after, theName) -{ - init(); - setEditable(theEditable); -} - - -//================================================================ -// Function : QAD_ListViewItem::QAD_ListViewItem -// Purpose : constructor -//================================================================ -QAD_ListViewItem::QAD_ListViewItem(QAD_ListViewItem* parent, - const QString theName, - const QString theValue, - const bool theEditable) : -QListViewItem(parent, theName, theValue) -{ - init(); - setEditable(theEditable); -} - - -//================================================================ -// Function : QAD_ListViewItem::QAD_ListViewItem -// Purpose : constructor -//================================================================ -QAD_ListViewItem::QAD_ListViewItem(QAD_ListViewItem* parent, - QAD_ListViewItem* after, - const QString theName, - const QString theValue, - const bool theEditable) : -QListViewItem(parent, after, theName, theValue) -{ - init(); - setEditable(theEditable); -} - -//================================================================ -// Function : QAD_ListViewItem::QAD_ListViewItem -// Purpose : constructor -//================================================================ -QAD_ListViewItem::QAD_ListViewItem(QAD_ListView* parent, - QAD_ListViewItem* after, - const QString theName, - const QString theValue, - const bool theEditable) : -QListViewItem(parent, after, theName, theValue) -{ - init(); - setEditable(theEditable); -} - -//================================================================ -// Function : QAD_ListViewItem::~QAD_ListViewItem -// Purpose : destructor -//================================================================ -QAD_ListViewItem::~QAD_ListViewItem() -{ -} - -//================================================================ -// Function : QAD_ListViewItem::init -// Purpose : initialization -//================================================================ -void QAD_ListViewItem::init() -{ - myEditable = false; - myAccepted = true; - myEditingType = (int)QAD_EntityEdit::etLineEdit; - myValueType = (int)QAD_EntityEdit::vtString; - myButtons = 0; - myUserType = -1; -} - -//================================================================ -// Function : QAD_ListViewItem::getName -// Purpose : as default returns text in the first column -//================================================================ -QString QAD_ListViewItem::getName() const -{ - return ( listView()->columns() > 0 ) ? text(0) : QString(""); -} - -//================================================================ -// Function : QAD_ListViewItem::setName -// Purpose : as default sets text in the first column -//================================================================ -UpdateType QAD_ListViewItem::setName(const QString theName) -{ - UpdateType aNeedsUpdate = utCancel; - if (listView()->columns() > 0) { - setText(0, theName); - aNeedsUpdate = utNone; - } - return aNeedsUpdate; -} - -//================================================================ -// Function : QAD_ListViewItem::getValue -// Purpose : as default returns text in the second column -//================================================================ -QString QAD_ListViewItem::getValue() const -{ - return ( listView()->columns() > 1 ) ? text(1) : QString(""); -} - -//================================================================ -// Function : QAD_ListViewItem::setValue -// Purpose : as default sets text in the second column -//================================================================ -UpdateType QAD_ListViewItem::setValue(const QString theValue) -{ - UpdateType aNeedsUpdate = utCancel; - if (listView()->columns() > 1) { - setText(1, theValue); - aNeedsUpdate = utNone; - } - return aNeedsUpdate; -} - -//================================================================ -// Function : QAD_ListViewItem::fullName -// Purpose : returns full path to the entity from the root -//================================================================ -QString QAD_ListViewItem::fullName() -{ - QString aFullName = getName(); - QAD_ListViewItem* aParent = (QAD_ListViewItem*)parent(); - while(aParent != NULL) { - aFullName = aParent->getName() + QString(".") + aFullName; - aParent = (QAD_ListViewItem*)(aParent->parent()); - } - return aFullName; -} - -//================================================================ -// Function : QAD_ListViewItem::openAllLevels -// Purpose : expands all entities beginning from this level -//================================================================ -void QAD_ListViewItem::openAllLevels() -{ - setOpen(true); - QAD_ListViewItem* aChild = (QAD_ListViewItem*)firstChild(); - while( aChild ) { - aChild->openAllLevels(); - aChild = (QAD_ListViewItem*)(aChild->nextSibling()); - } -} - -//================================================================ -// Function : QAD_ListViewItem::updateAllLevels -// Purpose : update all entites beginning from this level -//================================================================ -void QAD_ListViewItem::updateAllLevels() -{ - QAD_ListViewItem* aChild = (QAD_ListViewItem*)firstChild(); - while( aChild ) { - aChild->updateAllLevels(); - aChild = (QAD_ListViewItem*)(aChild->nextSibling()); - } -} - -//================================================================ -// Function : QAD_EditBox::isEditable -// Purpose : return true if entity is editable -//================================================================ -bool QAD_ListViewItem::isEditable() const -{ - return myEditable; -} - -//================================================================ -// Function : QAD_ListViewItem::setEditable -// Purpose : sets editable flag fo the entity -//================================================================ -void QAD_ListViewItem::setEditable(bool theEditable) -{ - myEditable = theEditable; -} - -//================================================================ -// Function : QAD_ListViewItem::isAccepted -// Purpose : returns true if entitiy is accepted after editing -//================================================================ -bool QAD_ListViewItem::isAccepted() const -{ - return myAccepted; -} - -//================================================================ -// Function : QAD_ListViewItem::setAccepted -// Purpose : set entitiy accepted or not after editing -//================================================================ -void QAD_ListViewItem::setAccepted(bool theAccepted) -{ - myAccepted = theAccepted; -} - -//================================================================ -// Function : QAD_ListViewItem::getEditingType -// Purpose : returns type of edit control (0 - edit box, 1 - combo box, -// 2 - editable combo box), default is edit box -//================================================================ -int QAD_ListViewItem::getEditingType() -{ - return myEditingType; -} - -//================================================================ -// Function : QAD_ListViewItem::setEditingType -// Purpose : sets type of edit control (0 - edit box, 1 - combo box, -// 2 - editable combo box), negative value means none -//================================================================ -void QAD_ListViewItem::setEditingType(const int type) -{ - myEditingType = type; -} - -//================================================================ -// Function : QAD_ListViewItem::getEditedColumn -// Purpose : returns edited column, default is last column -// negative value means there are no editable columns -//================================================================ -int QAD_ListViewItem::getEditedColumn() -{ - return listView()->columns()-1; -} - -//================================================================ -// Function : QAD_ListViewItem::getValueType -// Purpose : returns type of edited value (string, int, double) -// default is string -//================================================================ -int QAD_ListViewItem::getValueType() -{ - return myValueType; -} - -//================================================================ -// Function : QAD_ListViewItem::setValueType -// Purpose : sets type of edited value -//================================================================ -void QAD_ListViewItem::setValueType(const int valueType) -{ - myValueType = valueType; -} - -//================================================================ -// Function : QAD_ListViewItem::getUserType -// Purpose : sets type of edited value -//================================================================ -int QAD_ListViewItem::getUserType() -{ - return myUserType; -} - -//================================================================ -// Function : QAD_ListViewItem::setUserType -// Purpose : sets type of edited value -//================================================================ -void QAD_ListViewItem::setUserType(const int userType) -{ - myUserType = userType; -} - -//================================================================ -// Function : QAD_ListViewItem::getButtons -// Purpose : returns buttons for editing widget (Apply (V), Cancel (X)) -// default is both buttons -//================================================================ -int QAD_ListViewItem::getButtons() -{ - return myButtons; -} - -//================================================================ -// Function : QAD_ListViewItem::getButtons -// Purpose : sets buttons for editing widget (Apply (V), Cancel (X)) -//================================================================ -void QAD_ListViewItem::setButtons(const int buttons) -{ - myButtons = buttons; -} - -//================================================================ -// Function : QAD_ListViewItem::startEditing -// Purpose : creates control for editing and fills it with values -//================================================================ -QAD_EntityEdit* QAD_ListViewItem::startEditing() -{ - QAD_EntityEdit* aWidget = 0; - QListView* aListView = listView(); - if (aListView) { - if (!isEditable()) - return 0; - int anEditType = getEditingType(); - int aValueType = getValueType(); - int aButtons = getButtons(); - int anEditColumn = getEditedColumn(); - if (anEditColumn < 0 || anEditType < 0) - return 0; - aWidget = new QAD_EntityEdit(aListView->viewport(), - anEditType, - aValueType, - aButtons & QAD_EntityEdit::btApply, - aButtons & QAD_EntityEdit::btCancel); - computeEditGeometry(this, aWidget); - - fillWidgetWithValues(aWidget); - } - return aWidget; -} - -//================================================================ -// Function : QAD_ListViewItem::fillWidgetWithValues -// Purpose : fills widget with initial values (list or single value) -//================================================================ -void QAD_ListViewItem::fillWidgetWithValues(QAD_EntityEdit* theWidget) -{ - int anEditColumn = getEditedColumn(); - if (theWidget && anEditColumn >= 0 && !text(anEditColumn).isEmpty()) - theWidget->insertItem(text(anEditColumn), true); -} - -//================================================================ -// Function : QAD_ListViewItem::finishEditing -// Purpose : finishes editing of entity -//================================================================ -UpdateType QAD_ListViewItem::finishEditing(QAD_EntityEdit* theWidget) -{ - UpdateType aNeedsUpdate = utCancel; - try { - if (theWidget) { - int anEditColumn = getEditedColumn(); - switch (anEditColumn) { - case 0: - aNeedsUpdate = setName(theWidget->getText()); - break; - case 1: - aNeedsUpdate = setValue(theWidget->getText()); - break; - default: - break; - } - } - } - catch (...) { - MESSAGE( "System error has been caught - QAD_ListViewItem::finishEditing" ) - } - return aNeedsUpdate; -} - -//================================================================ -// Function : QAD_ListViewItem::tipRect -// Purpose : calculates rectangle which should contain item's tip -//================================================================ -QRect QAD_ListViewItem::tipRect() -{ - QRect aRect = QRect(-1, -1, -1, -1); - QRect aItemRect = listView()->itemRect(this); - if ( !aItemRect.isValid() ) - return aItemRect; - - QString aTip = tipText(); - if (!aTip.isEmpty()) { - QRect aRect0 = textRect(0); - QFont aFont(listView()->font()); - QFontMetrics fm(aFont); - int iw = fm.width(aTip); - aRect = QRect(QPoint(aRect0.x() < 0 ? 0 : aRect0.x(), - aRect0.y()), - QSize (iw, - aRect0.height())); - } - return aRect; -} - -//================================================================ -// Function : QAD_ListViewItem::tipText -// Purpose : returns text for tooltip -//================================================================ -QString QAD_ListViewItem::tipText() -{ - QString aText = getName(); - if (!getValue().isEmpty()) - aText += QString(" : ") + getValue(); - return aText; -} - -//================================================================ -// Function : QAD_ListViewItem::textRect -// Purpose : calculates rect of item text in viewport coordinates -//================================================================ -QRect QAD_ListViewItem::textRect(const int column) const -{ - QRect aItemRect = listView()->itemRect( this ); - if ( !aItemRect.isValid() ) - return aItemRect; - - QFont aFont(listView()->font()); - QFontMetrics fm(aFont); - - int decorWidth = ( listView()->rootIsDecorated() ) ? - ( listView()->treeStepSize() * (depth() + 1) ) : - ( listView()->treeStepSize() * depth() ); - int pixmapWidth = ( pixmap(column) ) ? - pixmap(column)->width() + listView()->itemMargin() * 2 : - listView()->itemMargin(); - int prevWidth = 0; - for (int i = 0; i < column; i++) - prevWidth += listView()->header()->sectionSize(i); - int ix = prevWidth + - pixmapWidth + - ((column == 0) ? decorWidth : 0); - int iy = aItemRect.y(); - int iw = fm.width(text(column)); - int ih = aItemRect.height(); - if (pixmap(column)) { - iy += listView()->itemMargin(); - ih -= listView()->itemMargin() * 2; - } - ix -= listView()->contentsX(); - - QRect theResult(QPoint(ix, iy), QSize(iw, ih)); - return theResult; -} - -//================================================================ -// Function : QAD_ListViewItem::itemRect -// Purpose : calculates rect of item data in viewport coordinates -//================================================================ -QRect QAD_ListViewItem::itemRect(const int column) const -{ - QRect aItemRect = listView()->itemRect( this ); - if ( !aItemRect.isValid() ) - return aItemRect; - - QFont aFont(listView()->font()); - QFontMetrics fm(aFont); - - int decorWidth = ( listView()->rootIsDecorated() ) ? - ( listView()->treeStepSize() * (depth() + 1) ) : - ( listView()->treeStepSize() * depth() ); - int pixmapWidth = ( pixmap(column) ) ? - pixmap(column)->width() + listView()->itemMargin() * 2 : - 0; - int prevWidth = 0; - for (int i = 0; i < column; i++) - prevWidth += listView()->header()->sectionSize(i); - int ix = prevWidth; - int iy = aItemRect.y(); - int iw = pixmapWidth + - listView()->itemMargin() * 2 + - ((column == 0) ? decorWidth : 0) + - fm.width(text(column)); - int ih = aItemRect.height(); - ix -= listView()->contentsX(); - - QRect theResult(QPoint(ix, iy), QSize(iw, ih)); - return theResult; -} - -////////////////////////////////////////////////////////////////////// -// QAD_EditBox class implementation -////////////////////////////////////////////////////////////////////// - -//================================================================ -// Function : QAD_EditBox::QAD_EditBox -// Purpose : constructor -//================================================================ -QAD_EditBox::QAD_EditBox(QWidget* parent) : -QLineEdit(parent) -{ -} - -//================================================================ -// Function : QAD_EditBox::keyPressEvent -// Purpose : event filter for key pressing -//================================================================ -void QAD_EditBox::keyPressEvent( QKeyEvent *e ) -{ - if ( e->key() == Key_Escape ) - emit escapePressed(); - else - QLineEdit::keyPressEvent( e ); - e->accept(); -} - -////////////////////////////////////////////////////////////////////// -// QAD_ComboBox class implementation -////////////////////////////////////////////////////////////////////// - -//================================================================ -// Function : QAD_ComboBox::QAD_ComboBox -// Purpose : constructor -//================================================================ -QAD_ComboBox::QAD_ComboBox(bool rw, QWidget* parent, const char* name) : -QComboBox(rw, parent, name) -{ -} - -//================================================================ -// Function : QAD_ComboBox::findItem -// Purpose : searches item in list and returns its index -//================================================================ -int QAD_ComboBox::findItem(const QString theText) -{ - for (int i = 0; i < count(); i++) - if (text(i) == theText) - return i; - return -1; -} - -//================================================================ -// Function : QAD_ComboBox::insertItem -// Purpose : adds item in combo box -//================================================================ -void QAD_ComboBox::insertItem(const QString& theValue, - int theIndex) -{ - if (duplicatesEnabled() || findItem(theValue) < 0) - QComboBox::insertItem(theValue, theIndex); -} - -//================================================================ -// Function : QAD_ComboBox::insertList -// Purpose : adds list of items in combo box -//================================================================ -void QAD_ComboBox::insertList(const QStringList& theList) -{ - for (unsigned i = 0; i < theList.count(); i++) - insertItem(theList[i]); -} - -//================================================================ -// Function : QAD_ComboBox::insertItem -// Purpose : adds item in combo box -//================================================================ -void QAD_ComboBox::insertItem(const int theValue) -{ - int aNum; - bool bOk; - for (int i = 0; i < count(); i++) { - aNum = text(i).toInt(&bOk); - if (bOk) { - if (aNum > theValue || (aNum == theValue && duplicatesEnabled())) { - insertItem(QString::number(theValue), i); - return; - } - } - } - insertItem(QString::number(theValue)); -} - -//================================================================ -// Function : QAD_ComboBox::insertList -// Purpose : adds list of items in combo box -//================================================================ -void QAD_ComboBox::insertList(const TColStd_ListOfInteger& theList) -{ - for (TColStd_ListIteratorOfListOfInteger aIter(theList); aIter.More(); aIter.Next()) - insertItem(aIter.Value()); -} - -//================================================================ -// Function : QAD_ComboBox::insertItem -// Purpose : adds item in combo box -//================================================================ -void QAD_ComboBox::insertItem(const double theValue) -{ - double aNum; - bool bOk; - for (int i = 0; i < count(); i++) { - aNum = text(i).toDouble(&bOk); - if (bOk) { - if (aNum > theValue || (aNum == theValue && duplicatesEnabled())) { - insertItem(QString::number(theValue), i); - return; - } - } - } - insertItem(QString::number(theValue)); -} - -//================================================================ -// Function : QAD_ComboBox::insertList -// Purpose : adds list of items in combo box -//================================================================ -void QAD_ComboBox::insertList(const TColStd_ListOfReal& theList) -{ - for (TColStd_ListIteratorOfListOfReal aIter(theList); aIter.More(); aIter.Next()) - insertItem(aIter.Value()); -} - -////////////////////////////////////////////////////////////////////// -// QAD_EntityEdit class implementation -////////////////////////////////////////////////////////////////////// - -#include - -#define MIN_COMBO_WIDTH 1 -#define MIN_EDIT_WIDTH 1 - -//================================================================ -// Function : QAD_EntityEdit::QAD_EntityEdit -// Purpose : constructor -//================================================================ -QAD_EntityEdit::QAD_EntityEdit(QWidget* parent, - int controlType, - int valueType, - bool butApply, - bool butCancel) : -QWidget(parent), -myEdit(0), -myCombo(0), -myApplyBtn(0), -myCancelBtn(0) -{ - QHBoxLayout* aTopLayout = new QHBoxLayout(this); - aTopLayout->setAlignment( Qt::AlignTop ); - aTopLayout->setSpacing( 0 ); - aTopLayout->setMargin( 1 ); - if (controlType != etLineEdit && - controlType != etComboBox && - controlType != etComboEdit) - controlType = etLineEdit; - if (controlType == etComboBox || controlType == etComboEdit) { - // this is an editable combo box - myCombo = new QAD_ComboBox(controlType == etComboEdit, this); - myCombo->setMinimumSize(MIN_COMBO_WIDTH, 0); - myCombo->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, - QSizePolicy::Fixed)); - // no insertions - myCombo->setInsertionPolicy(QComboBox::NoInsertion); - // no duplicates enabled by default - myCombo->setDuplicatesEnabled(false); - aTopLayout->addWidget(myCombo); - // connect signals - connect(myCombo, SIGNAL(activated(const QString&)), this, SLOT(onComboActivated(const QString&))); - connect(myCombo, SIGNAL(textChanged(const QString&)), this, SLOT(onTextChanged(const QString&))); - } - else { - // and this is an edit box - myEdit = new QAD_EditBox(this); - myEdit->setMinimumSize(MIN_EDIT_WIDTH, 0); - myEdit->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, - QSizePolicy::Fixed)); - aTopLayout->addWidget(myEdit); - connect(myEdit, SIGNAL(textChanged(const QString&)), this, SLOT(onTextChanged(const QString&))); - connect(myEdit, SIGNAL(returnPressed()), this, SLOT(onApply())); - connect(myEdit, SIGNAL(escapePressed()), this, SLOT(onCancel())); - } - if (valueType != vtString && - valueType != vtInteger && - valueType != vtDouble) - valueType = vtString; - if (valueType == vtInteger) - setValidator(new QIntValidator(this)); - else if (valueType == vtDouble) - setValidator(new QDoubleValidator(this)); - if (butApply) { - // Apply button (V) - myApplyBtn = new QToolButton(this); - QPixmap anIcon = QAD_Desktop::getResourceManager()->loadPixmap( - "QAD",tr("ICON_APPLY_BTN")); - myApplyBtn->setPixmap(anIcon); - myApplyBtn->setEnabled(false); - myApplyBtn->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed)); - myApplyBtn->setMinimumSize(16, 16); - myApplyBtn->setMaximumSize(16, 20); - aTopLayout->addWidget(myApplyBtn); - connect(myApplyBtn, SIGNAL(clicked()), this, SLOT(onApply())); - } - if (butCancel) { - // Cancel button (X) - myCancelBtn = new QToolButton(this); - QPixmap anIcon = QAD_Desktop::getResourceManager()->loadPixmap( - "QAD",tr("ICON_CANCEL_BTN")); - myCancelBtn->setPixmap(anIcon); - myCancelBtn->setEnabled(false); - myCancelBtn->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed)); - myCancelBtn->setMinimumSize(16, 16); - myCancelBtn->setMaximumSize(16, 20); - aTopLayout->addWidget(myCancelBtn); - connect(myCancelBtn, SIGNAL(clicked()), this, SLOT(onCancel())); - } -} - -//================================================================ -// Function : QAD_EntityEdit::~QAD_EntityEdit -// Purpose : destructor -//================================================================ -QAD_EntityEdit::~QAD_EntityEdit() -{ -} - -//================================================================ -// Function : QAD_EntityEdit::clear -// Purpose : clears edit/combo box -//================================================================ -void QAD_EntityEdit::clear() -{ - if (myEdit) - myEdit->clear(); - if (myCombo) - myCombo->clear(); -} - -//================================================================ -// Function : QAD_EntityEdit::getText -// Purpose : returns current text in edit box or combo box -//================================================================ -QString QAD_EntityEdit::getText() -{ - if (myEdit) - return myEdit->text(); - else if (myCombo) - return myCombo->currentText(); - else - return ""; -} - -//================================================================ -// Function : QAD_EntityEdit::setText -// Purpose : sets text -//================================================================ -void QAD_EntityEdit::setText(const QString& theText) -{ - myString = theText; - if (myEdit) - myEdit->setText(theText); - if (myCombo) { - int aFound = myCombo->findItem(theText); - if (aFound >= 0) { - myCombo->setCurrentItem(aFound); - onTextChanged(theText); - } - } -} - -//================================================================ -// Function : QAD_EntityEdit::insertItem -// Purpose : adds item in combo box, -// sets it current if theSetCurrent is true -//================================================================ -void QAD_EntityEdit::insertItem(const QString& theValue, - bool theSetCurrent, - int theOrder) -{ - if (myCombo) { - int aIndexAt = -1; - if (theOrder == atTop) - aIndexAt = 0; - else if (theOrder == atBeforeCurrent && myCombo->count() > 0) - aIndexAt = myCombo->currentItem(); - else if (theOrder == atAfterCurrent && - myCombo->count() > 0 && - myCombo->currentItem() < myCombo->count()-1) - aIndexAt = myCombo->currentItem() + 1; - myCombo->insertItem(theValue, aIndexAt); - } - if (theSetCurrent) - setText(theValue); -} - -//================================================================ -// Function : QAD_EntityEdit::insertList -// Purpose : adds items in combo box, -// sets item theCurrent as current -//================================================================ -void QAD_EntityEdit::insertList(const QStringList& theList, - const int theCurrent) -{ - if (myCombo) - myCombo->insertList(theList); - if (theCurrent >= 0 && theCurrent < (int)theList.count()) - setText(theList[theCurrent]); -} - -//================================================================ -// Function : QAD_EntityEdit::insertItem -// Purpose : adds item in combo box, -// sets it current if theSetCurrent is true -//================================================================ -void QAD_EntityEdit::insertItem(const int theValue, - bool theSetCurrent) -{ - if (myCombo) { - myCombo->insertItem(theValue); - } - if (theSetCurrent) - setText(QString::number(theValue)); -} - -//================================================================ -// Function : QAD_EntityEdit::insertList -// Purpose : adds items in combo box, -// sets item theCurrent as current -//================================================================ -void QAD_EntityEdit::insertList(const TColStd_ListOfInteger& theList, - const int theCurrent) -{ - if (myCombo) - myCombo->insertList(theList); - - TColStd_ListIteratorOfListOfInteger aIter(theList); - for (unsigned i = 0; aIter.More(); aIter.Next(), i++) { - if (theCurrent == i) { - setText(QString::number(aIter.Value())); - break; - } - } -} - -//================================================================ -// Function : QAD_EntityEdit::insertItem -// Purpose : adds item in combo box, -// sets it current if theSetCurrent is true -//================================================================ -void QAD_EntityEdit::insertItem(const double theValue, - bool theSetCurrent) -{ - if (myCombo) { - myCombo->insertItem(theValue); - } - if (theSetCurrent) - setText(QString::number(theValue)); -} - -//================================================================ -// Function : QAD_EntityEdit::insertList -// Purpose : adds items in combo box, -// sets item theCurrent as current -//================================================================ -void QAD_EntityEdit::insertList(const TColStd_ListOfReal& theList, - const int theCurrent) -{ - if (myCombo) - myCombo->insertList(theList); - - TColStd_ListIteratorOfListOfReal aIter(theList); - for (unsigned i = 0; aIter.More(); aIter.Next(), i++) { - if (theCurrent == i) { - setText(QString::number(aIter.Value())); - break; - } - } -} - -//================================================================ -// Function : QAD_EntityEdit::getControl -// Purpose : gets actual widget -//================================================================ -QWidget* QAD_EntityEdit::getControl() -{ - if (myEdit) - return myEdit; - else if (myCombo) - return myCombo; - else - return 0; -} - -//================================================================ -// Function : QAD_EntityEdit::setFocus -// Purpose : redirect focus to corresponding widget -//================================================================ -void QAD_EntityEdit::setFocus() -{ - if (myEdit) { - myEdit->setFocus(); - //myEdit->selectAll(); - } - else if (myCombo && myCombo->editable()) { - myCombo->setFocus(); - //myCombo->lineEdit()->selectAll(); - } -} - -//================================================================ -// Function : QAD_EntityEdit::setValidator -// Purpose : sets validator for the control -//================================================================ -void QAD_EntityEdit::setValidator(const QValidator* theValidator) -{ - if (myEdit) - myEdit->setValidator(theValidator); - if (myCombo) - myCombo->setValidator(theValidator); -} - -//================================================================ -// Function : QAD_EntityEdit::keyPressEvent -// Purpose : event filter for KeyPress event -//================================================================ -void QAD_EntityEdit::keyPressEvent( QKeyEvent * e) -{ - if ( (e->key() == Key_Enter || - e->key() == Key_Return ) ) - onApply(); - else if (e->key() == Key_Escape) - onCancel(); -} - -//================================================================ -// Function : QAD_EntityEdit::onComboActivated -// Purpose : called when item activated in combo box -//================================================================ -void QAD_EntityEdit::onComboActivated(const QString& theText) -{ - onTextChanged(theText); -} - -//================================================================ -// Function : QAD_EntityEdit::onTextChanged -// Purpose : slot, called when text changed in line edit -//================================================================ -void QAD_EntityEdit::onTextChanged(const QString& theText) -{ - if (myApplyBtn) - myApplyBtn->setEnabled(!(theText == myString)); - if (myCancelBtn) - myCancelBtn->setEnabled(!(theText == myString)); -} - -//================================================================ -// Function : QAD_EntityEdit::onCancel -// Purpose : slot, called when user presses Cancel button -//================================================================ -void QAD_EntityEdit::onCancel() -{ - setText(myString); - if (myApplyBtn) - myApplyBtn->setEnabled(false); - if (myCancelBtn) - myCancelBtn->setEnabled(false); - emit escapePressed(); -} - -//================================================================ -// Function : QAD_EntityEdit::onApply -// Purpose : slot, called when user presses Apply button -//================================================================ -void QAD_EntityEdit::onApply() -{ - myString = getText(); - if (myApplyBtn) - myApplyBtn->setEnabled(false); - if (myCancelBtn) - myCancelBtn->setEnabled(false); - emit returnPressed(); -} - -//================================================================ -// Function : QAD_EntityEdit::showButtons -// Purpose : shows/hides buttons -//================================================================ -void QAD_EntityEdit::showButtons(bool show) -{ - if (myApplyBtn) - show ? myApplyBtn->show() : myApplyBtn->hide(); - if (myCancelBtn) - show ? myCancelBtn->show() : myCancelBtn->hide(); -} - -//================================================================ -// Function : QAD_EntityEdit::setDuplicatesEnabled -// Purpose : enables/disables data duplication (for combo box) -//================================================================ -void QAD_EntityEdit::setDuplicatesEnabled(bool enabled) -{ - if (myCombo) - myCombo->setDuplicatesEnabled(enabled); -} diff --git a/src/SALOMEGUI/QAD_ListView.h b/src/SALOMEGUI/QAD_ListView.h deleted file mode 100644 index 6bbe34378..000000000 --- a/src/SALOMEGUI/QAD_ListView.h +++ /dev/null @@ -1,416 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : QAD_ListView.h -// Author : Vadim SANDLER -// Module : SALOME -// $Header$ - -#if !defined(_QAD_ListView_HeaderFile) -#define _QAD_ListView_HeaderFile - -#include -#include -#include -#include -#include -#include - -//VRV: porting on Qt 3.0.5 -#if QT_VERSION >= 0x030005 -#include -#endif -//VRV: porting on Qt 3.0.5 - -#include "QAD_Popup.h" - -#include -#include - -// enumeration for ListView updating mode -enum UpdateType { - utCancel = -1, // cancel updating - utNone = 0, // needs no any update - utUpdateItem, // update one item - utUpdateParent, // update parent item too - utUpdateViewer, // update all viewer - utUpdateAll // strong update -}; - -class QAD_ListViewItem; -class QAD_EntityEdit; - -//================================================================ -// Class : QAD_ListView -// Description : parent class for Data Viewer and Properties Viewer -//================================================================ -class QAD_ListView : public QListView , public QAD_PopupServer { - - Q_OBJECT - -public: -// constructor - QAD_ListView(QWidget *parent); -// destructor - virtual ~QAD_ListView(); - -// updates list viewer - virtual void updateViewer(); -// updtes currently selected item(s) - virtual void updateSelected(); - -// fills popup with items - void onCreatePopup(); -// delete popup - void deletePopupMenu(); - -// setting editing of items availbale/not available - void enableEditing(bool theFlag); -// says if editing is enabled - bool isEnableEditing(); -// accepts user input by calling finishEditing(true) - void accept(); - -// clears view - void clear(); - -// event filter - bool eventFilter(QObject* object, QEvent* event) ; - -// gets current tooltip for list view -// returns valid rect in success - QRect tip(QPoint aPos, QString& aText, QRect& dspRect, QFont& dspFnt) const; - -protected: -// handler for mouse button release event (execute popup menu) - void contentsMouseReleaseEvent(QMouseEvent* e); -// handler for resize event - void resizeEvent(QResizeEvent* e); -// handler for paint event - void viewportPaintEvent(QPaintEvent* e); -// finishes editing of entity - virtual UpdateType finishEditing(bool ok); - -// returns true if mouse events are enabled - bool isMouseEnabled(); -// enables/disables mouse events (excluding MouseMove) - void enableMouse(bool enable); - -protected slots: -// called when selection changed in list - virtual void onSelectionChanged(); -// called when user finishes in editing of item - void onEditOk(); -// called when user cancels item editing - void onEditCancel(); -// called when columns sizes are changed - void onHeaderSizeChange(int, int, int); - -protected: - QAD_EntityEdit* myEdit; - QAD_ListViewItem* myEditedItem; - bool myEditingEnabled; - bool myMouseEnabled; -}; - - -//================================================================ -// Class : QAD_ListViewItem -// Purpose : List Viewer entity -//================================================================ -class QAD_ListViewItem : public QListViewItem { - -public: -// constructor - QAD_ListViewItem(QAD_ListView* parent); -// constructor - QAD_ListViewItem(QAD_ListView* parent, - QAD_ListViewItem* after); -// constructor - QAD_ListViewItem(QAD_ListView* parent, - const QString theName, - const bool theEditable = false); -// constructor - QAD_ListViewItem(QAD_ListView* parent, - const QString theName, - const QString theValue, - const bool theEditable = false); -// constructor - QAD_ListViewItem(QAD_ListViewItem* parent, - const QString theName, - const bool theEditable = false); -// constructor - QAD_ListViewItem(QAD_ListView* parent, - QAD_ListViewItem* after, - const QString theName, - const bool theEditable = false); -// constructor - QAD_ListViewItem(QAD_ListViewItem* parent, - QAD_ListViewItem* after, - const QString theName, - const bool theEditable = false); -// constructor - QAD_ListViewItem(QAD_ListViewItem* parent, - const QString theName, - const QString theValue, - const bool theEditable = false); -// constructor - QAD_ListViewItem(QAD_ListView* parent, - QAD_ListViewItem* after, - const QString theName, - const QString theValue, - const bool theEditable = false); -// constructor - QAD_ListViewItem(QAD_ListViewItem* parent, - QAD_ListViewItem* after, - const QString theName, - const QString theValue, - const bool theEditable = false); -// destructor - ~QAD_ListViewItem(); - -// returns full path to the entity (full name) - QString fullName(); - -// expands all entities beginning from this level - void openAllLevels(); -// updates all entites beginning from this level - virtual void updateAllLevels(); - -// returns true if entity can be edited - bool isEditable() const; -// set entity as editable/uneditable - void setEditable(bool theEditable); - -// returns true if entitiy is accepted after editing - bool isAccepted() const; -// set entity accepted or not after editing - void setAccepted(bool theAccepted); - -// returns name of entity (as default it is text in first column) - virtual QString getName() const; -// sets name of entity (as default it is text in first column) - virtual UpdateType setName(const QString theName); - -// returns value of entity (as default it is text in second column) - virtual QString getValue() const; -// sets value of entity (as default it is text in second column) - virtual UpdateType setValue(const QString theValue); - -// creates control for editing and fills it with values - QAD_EntityEdit* startEditing(); -// fills widget with initial values (list or single value) - virtual void fillWidgetWithValues(QAD_EntityEdit* theWidget); -// finishes editing of entity - virtual UpdateType finishEditing(QAD_EntityEdit* theWidget); - -// returns type of edit control (0 - edit box, 1 - combo box, 2 - editable combo box) - virtual int getEditingType(); -// sets type of edit control (0 - edit box, 1 - combo box, 2 - editable combo box) - virtual void setEditingType(const int); -// returns edited column - virtual int getEditedColumn(); -// returns type of edited value (string, int, double) - virtual int getValueType(); -// sets type of edited value (string, int, double) - virtual void setValueType(const int); - -// gets user type - virtual int getUserType(); -// sets user type - virtual void setUserType(const int); - -// returns buttons for editing widget - virtual int getButtons(); -// sets buttons for editing widget - virtual void setButtons(const int); -// returns text for tooltip - QString tipText(); -// calculates rectangle which should contain items tip - QRect tipRect(); -// calculates rect of item text in viewport coordinates - QRect textRect(const int column) const; -// calculates full rect of item data in viewport coordinates - QRect itemRect(const int column) const; - -protected: -// initialization - void init(); - -private: - bool myEditable; - bool myAccepted; - int myEditingType; - int myValueType; - int myButtons; - int myUserType; // user are welcome to put additional data here and use it in fillWidgetWithValues() -}; - - -//================================================================ -// Class : QAD_EditBox -// Description : edit box for list entity editing -//================================================================ -class QAD_EditBox: public QLineEdit { - - Q_OBJECT - -public: -// constructor - QAD_EditBox(QWidget* parent); - -protected: -// event filter (for KeyPress event) - void keyPressEvent(QKeyEvent* e); - -signals: - void escapePressed(); - -}; - - -//================================================================ -// Class : QAD_ComboBox -// Description : combo box for list entity editing -//================================================================ -class QAD_ComboBox: public QComboBox { - - Q_OBJECT - -public: -// constructor - QAD_ComboBox(bool rw, QWidget* parent = 0, const char* name = 0); - -// searches item in list and returns its index - int findItem(const QString theText); -// adds item in combo box - void insertItem(const QString& theValue, int theIndex = -1); -// adds list of items in combo box - void insertList(const QStringList& theList); -// adds item in combo box - void insertItem(const int theValue); -// adds list of items in combo box - void insertList(const TColStd_ListOfInteger& theList); -// adds item in combo box - void insertItem(const double theValue); -// adds list of items in combo box - void insertList(const TColStd_ListOfReal& theList); - -}; - - -//================================================================ -// Class : QAD_EntityEdit -// Description : edit control for QAD List View -//================================================================ -class QAD_EntityEdit : public QWidget { - - Q_OBJECT - -public: -// enum for edit control type - enum { - etLineEdit, // simple edit box - etComboBox, // non-editable combo box - etComboEdit // editable combo box - }; -// enum for value type - enum { - vtString, // string - vtInteger, // integer value - vtDouble // double value - }; -// enum for insertion order - enum { - atBottom, - atTop, - atBeforeCurrent, - atAfterCurrent - }; -// enum for edit box buttons (Apply = Cancel) - enum { - btApply = 0x0001, - btCancel = 0x0002 - }; - -// constructor - QAD_EntityEdit(QWidget* parent, - int controlType = etLineEdit, - int valueType = vtString, - bool butApply = false, - bool butCancel = false); -// destructor - ~QAD_EntityEdit(); - -// finishes editing - void finishEditing(); -// clears edit/combo box - void clear(); -// returns current text in edit box or combo box - QString getText(); -// sets text - void setText(const QString& theText); -// adds item in combo box - void insertItem(const QString& theValue, - bool theSetCurrent = false, - int theOrder = atBottom); -// adds list of items in combo box - void insertList(const QStringList& theList, - const int theCurrent = -1); -// adds item in combo box - void insertItem(const int theValue, - bool theSetCurrent = false); -// adds list of items in combo box - void insertList(const TColStd_ListOfInteger& theList, - const int theCurrent = -1); -// adds item in combo box - void insertItem(const double theValue, - bool theSetCurrent = false); -// adds list of items in combo box - void insertList(const TColStd_ListOfReal& theList, - const int theCurrent = -1); -// gets actual widget - QWidget* getControl(); -// redirect focus to corresponding widget - void setFocus(); -// sets validator for the control - void setValidator(const QValidator*); -// shows/hides buttons - void showButtons(bool show); -// enables/disables data duplication (for combo box) - void setDuplicatesEnabled(bool enabled); - -protected: -// event filter for KeyPress event - void keyPressEvent ( QKeyEvent * e); - -private slots: -// called when item activated in combo box - void onComboActivated(const QString&); -// called when text changed in control - void onTextChanged(const QString&); -// called when user presses Apply button - void onApply(); -// called when user presses Cancel button - void onCancel(); - -signals: - void returnPressed(); - void escapePressed(); - -private: -// Widgets - QAD_EditBox* myEdit; - QAD_ComboBox* myCombo; - QToolButton* myApplyBtn; - QToolButton* myCancelBtn; - - QString myString; - -}; - - -#endif diff --git a/src/SALOMEGUI/QAD_Menus.cxx b/src/SALOMEGUI/QAD_Menus.cxx deleted file mode 100644 index b7ddf6ae7..000000000 --- a/src/SALOMEGUI/QAD_Menus.cxx +++ /dev/null @@ -1,170 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_Menus.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "QAD_Menus.h" -using namespace std; - -/*! - Constructor. -*/ -QAD_Menus::QAD_Menus(QMainWindow* theParent) -{ - myMainWindow=theParent; - myToolBarList.setAutoDelete(TRUE); -} - -/*! - Desctructor. -*/ -QAD_Menus::~QAD_Menus() -{ - myToolBarList.clear(); - myPopupMenuList.clear(); - myMenuBarList.clear(); - myMenuList.clear(); -} - -/*! - Appends a MenuBar -*/ -void QAD_Menus::append(QMenuBar* theMenuBar) -{ - myMenuBarList.append(theMenuBar); -} - -/*! - Appends a ToolBar -*/ -void QAD_Menus::append(QToolBar* theToolBar) -{ - myToolBarList.append(theToolBar); -} - -/*! - Appends a PopupMenu -*/ -void QAD_Menus::append(QAD_ListPopupMenu* thePopupMenu) -{ - myPopupMenuList.append(thePopupMenu); -} - -/*! - Appends a MenuId -*/ -void QAD_Menus::append(QAD_ListMenuIdAction* theMenu) -{ - myMenuList.append(theMenu); -} - -/*! - Shows a ToolBar -*/ -void QAD_Menus::showToolBar(QToolBar* theToolBar) -{ - if(theToolBar!=NULL && theToolBar->isHidden()) { - theToolBar->show(); - } -} - -/*! - Shows all ToolBars -*/ -void QAD_Menus::showAllToolBars() -{ - QToolBar* aToolBar; - - for(aToolBar=myToolBarList.first();aToolBar!=NULL;aToolBar=myToolBarList.next()) { - if(aToolBar->isHidden()) { - aToolBar->show(); - } - } -} - -/*! - Hides a ToolBar -*/ -void QAD_Menus::hideToolBar(QToolBar* theToolBar) -{ - if(theToolBar!=NULL && theToolBar->isVisible()) { - theToolBar->hide(); - } -} - -/*! - Hides all ToolBars -*/ -void QAD_Menus::hideAllToolBars() -{ - QToolBar* aToolBar; - - for(aToolBar=myToolBarList.first();aToolBar!=NULL;aToolBar=myToolBarList.next()) { - if(aToolBar->isVisible()) { - aToolBar->hide(); - } - } -} - -/*! - Sets current MenuBar -*/ -void QAD_Menus::setActiveMenuBar(QMenuBar* theMenuBar) -{ - myActiveMenuBar=theMenuBar; -} - -/*! - Sets current setActivePopupMenu with index \a thePopupMenuIndex -*/ -void QAD_Menus::setActivePopupMenu(int thePopupMenuIndex) -{ - myActivePopupMenu=myPopupMenuList.at(thePopupMenuIndex)->getPopup(); -} - -/*! - Sets current PopupMenu -*/ -void QAD_Menus::setActivePopupMenu(QPopupMenu* thePopupMenu) -{ - myActivePopupMenu=thePopupMenu; -} - -/*! - Sets current ToolBar with index \a theToolBarIndex -*/ -void QAD_Menus::setActiveToolBar(int theToolBarIndex) -{ - myActiveToolBar=myToolBarList.at(theToolBarIndex); -} - -/*! - Sets current ToolBar -*/ -void QAD_Menus::setActiveToolBar(QToolBar* theToolBar) -{ - myActiveToolBar=theToolBar; -} diff --git a/src/SALOMEGUI/QAD_Menus.h b/src/SALOMEGUI/QAD_Menus.h deleted file mode 100644 index f521cb57b..000000000 --- a/src/SALOMEGUI/QAD_Menus.h +++ /dev/null @@ -1,87 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_Menus.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef QAD_MENUS_H -#define QAD_MENUS_H - -#include "QAD_ListMenuIdAction.h" -#include "QAD_ListPopupMenu.h" - -#include -#include -#include -#include - -class QAD_MainWindow; - -class QAD_Menus -{ - -public: - QAD_Menus(QMainWindow*); - virtual ~QAD_Menus(); - - QMenuBar* myActiveMenuBar; - QToolBar* myActiveToolBar; - QStatusBar* myActiveStatusBar; - QPopupMenu* myActivePopupMenu; - - QMainWindow* getMainWindow() {return myMainWindow;} - QList getMenuBarList() {return myMenuBarList;} - QList getToolBarList() {return myToolBarList;} - QPopupMenu* getActivePopupMenu() {return myActivePopupMenu;} - QList getMenuList() {return myMenuList;} - QList getPopupMenuList() {return myPopupMenuList;} - - void setActiveMenuBar(QMenuBar*); - void setActivePopupMenu(int); - void setActivePopupMenu(QPopupMenu*); - void setActiveToolBar(int); - void setActiveToolBar(QToolBar*); - - void append(QMenuBar*); - void append(QToolBar*); - void append(QAD_ListPopupMenu*); - void append(QAD_ListMenuIdAction*); - void clearToolBar() {myToolBarList.clear();} - void clearPopupMenu() {myPopupMenuList.clear();} - void showToolBar(QToolBar*); - void showAllToolBars(); - void hideToolBar(QToolBar*); - void hideAllToolBars(); - -protected: - QMainWindow* myMainWindow; - QList myMenuBarList; - QList myToolBarList; - QList myMenuList; - QList myPopupMenuList; - -}; - -#endif diff --git a/src/SALOMEGUI/QAD_Message.cxx b/src/SALOMEGUI/QAD_Message.cxx deleted file mode 100644 index 1f5f570c4..000000000 --- a/src/SALOMEGUI/QAD_Message.cxx +++ /dev/null @@ -1,145 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_Message.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "QAD_Message.h" -#include "QAD_Application.h" -#include "QAD_Config.h" -#include "QAD_Tools.h" -#include -#include -#include -#include -using namespace std; - -enum { IdCopy, IdClear, IdSelectAll }; - -/*! - \class QAD_Message QAD_Message.h - \brief Messages window for Study. -*/ - -/*! - Constructor - creates Message Log window -*/ -QAD_Message::QAD_Message(QWidget *parent, const char* name) - : QMultiLineEdit(parent, name) -{ - // setting default title - myTitle = tr("MESSAGE_LOG_NAME"); - // setting default prompt - myPrompt = ">>> "; - // setting font ( from preferences ) - QString fntSet = QAD_CONFIG->getSetting("Viewer:ConsoleFont"); - QFont myFont = QAD_Tools::stringToFont( fntSet ); -// QFont myFont("Courier", 11); - setFont(myFont); - setReadOnly(TRUE); - // appending title - setMessage(myTitle); - // setting palette (special) - setPalette( QAD_Application::getPalette(true) ); - setFocusPolicy( NoFocus ); - // currently no text wrap - setWordWrap(NoWrap); -} - -/*! - Destructor -*/ -QAD_Message::~QAD_Message() -{ -} - -/*! - Adds message -*/ -void QAD_Message::setMessage(const QString& s) -{ - int line = numLines() > 0 ? numLines()-1 : 0; - int col = lineLength(line); - if (!s.isNull() && s.length() > 0) { - QString ss = s; - insertAt(ss, line, col, false); - } - append(myPrompt); -} - -/* - Processes own popup manu -*/ -void QAD_Message::mousePressEvent(QMouseEvent* event) -{ - if ( event->button() == RightButton ) { - QPopupMenu *popup = new QPopupMenu( this ); - QMap idMap; - - int line1, col1, line2, col2; - getMarkedRegion(&line1, &col1, &line2, &col2); - bool allSelected = getMarkedRegion(&line1, &col1, &line2, &col2) && - line1 == 0 && line2 == numLines()-1 && col1 == 0 && col2 == lineLength(line2); - int id; - id = popup->insertItem( tr( "EDIT_COPY_CMD" ) ); - idMap.insert(IdCopy, id); - id = popup->insertItem( tr( "EDIT_CLEAR_CMD" ) ); - idMap.insert(IdClear, id); - popup->insertSeparator(); - id = popup->insertItem( tr( "EDIT_SELECTALL_CMD" ) ); - idMap.insert(IdSelectAll, id); - popup->setItemEnabled( idMap[ IdCopy ], hasMarkedText() ); - popup->setItemEnabled( idMap[ IdSelectAll ], !allSelected ); - popup->setItemEnabled( idMap[ IdClear ], textLine(1)!=myPrompt ); - - int r = popup->exec( event->globalPos() ); - delete popup; - - if ( r == idMap[ IdCopy ] ) { - copy(); - } - else if ( r == idMap [ IdClear ] ) { - clear(); - setMessage(myTitle); - } - else if ( r == idMap[ IdSelectAll ] ) { - selectAll(); - } - return; - } - else { - QMultiLineEdit::mousePressEvent(event); - } -} - -/* - Sets prompt ( default is '>>> ' ) -*/ -void QAD_Message::setPrompt(const QString& prompt) -{ - myPrompt = prompt; - clear(); - setMessage(myTitle); -} diff --git a/src/SALOMEGUI/QAD_Message.h b/src/SALOMEGUI/QAD_Message.h deleted file mode 100644 index 9b0c8dfa9..000000000 --- a/src/SALOMEGUI/QAD_Message.h +++ /dev/null @@ -1,59 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_Message.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef QAD_Message_H -#define QAD_Message_H - -#include "QAD.h" -#include - -class QAD_EXPORT QAD_Message : public QMultiLineEdit -{ -public: -// constructor - QAD_Message(QWidget *parent = 0, const char* name = 0 ); -// destructor - ~QAD_Message(); - -// adds message - void setMessage(const QString& s); -// sets prompt - void setPrompt(const QString& prompt); - -protected: -// MousePress event handler - void mousePressEvent(QMouseEvent* event); - -private: -// Title - QString myTitle; -// Prompt - QString myPrompt; -}; - -#endif diff --git a/src/SALOMEGUI/QAD_MessageBox.cxx b/src/SALOMEGUI/QAD_MessageBox.cxx deleted file mode 100644 index 2f4160624..000000000 --- a/src/SALOMEGUI/QAD_MessageBox.cxx +++ /dev/null @@ -1,207 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_MessageBox.cxx -// Author : UI team -// Module : SALOME -// $Header$ - -/*! - \class QAD_MessageBox QAD_MessageBox.h - \brief Message dialog box for QAD-based application. -*/ - -#include "QAD_MessageBox.h" - -// QT Includes -#include -#include -using namespace std; - -/*! - Shows info message box with one button [ static ] -*/ -int QAD_MessageBox::info1 ( QWidget* parent, const QString& caption, const QString& text, - const QString& textButton0 ) -{ - int ret = QMessageBox::information ( parent, caption, text, textButton0, - QString::null, QString::null, 0, 0); - qApp->processEvents(); /* update desktop */ - return ret; -} - -/*! - Shows warning message box with one button [ static ] -*/ -int QAD_MessageBox::warn1 ( QWidget* parent, const QString& caption, const QString& text, - const QString& textButton0 ) -{ - int ret = QMessageBox::warning ( parent, caption, text, textButton0, - QString::null, QString::null, 0, 0); - qApp->processEvents(); /* update desktop */ - return ret; -} - -/*! - Shows error message box with one button [ static ] -*/ -int QAD_MessageBox::error1 ( QWidget* parent, const QString& caption, const QString& text, - const QString& textButton0 ) -{ - int ret = QMessageBox::critical ( parent, caption, text, textButton0, - QString::null, QString::null, 0, 0); - qApp->processEvents(); /* update desktop */ - return ret; -} - -/*! - Shows info message box with two buttons. - Returns id of the pressed button or -1 if escaped [ static ] -*/ -int QAD_MessageBox::info2 ( QWidget* parent, const QString& caption, const QString& text, - const QString& textButton0, const QString& textButton1, - int idButton0, int idButton1, int idDefault ) -{ - if ( idDefault == idButton0 ) idDefault = 0; - else if ( idDefault == idButton1 ) idDefault = 1; - else idDefault = 0; - - int ret = QMessageBox::information ( parent, caption, text, textButton0, - textButton1, QString::null, idDefault ); - qApp->processEvents(); /* update desktop */ - return ( ret == 0 ? idButton0 : idButton1 ); -} - -/*! - Shows warning message box with two buttons. - Returns id of the pressed button or -1 if escaped [ static ] -*/ -int QAD_MessageBox::warn2 ( QWidget* parent, const QString& caption, const QString& text, - const QString& textButton0, const QString& textButton1, - int idButton0, int idButton1, int idDefault ) -{ - if ( idDefault == idButton0 ) idDefault = 0; - else if ( idDefault == idButton1 ) idDefault = 1; - else idDefault = 0; - - int ret = QMessageBox::warning ( parent, caption, text, textButton0, - textButton1, QString::null, idDefault ); - qApp->processEvents(); /* update desktop */ - return ( ret == 0 ? idButton0 : idButton1 ); -} - -/*! - Shows error message box with two buttons - Returns id of the pressed button or -1 if escaped [ static ] -*/ -int QAD_MessageBox::error2 ( QWidget* parent, const QString& caption, const QString& text, - const QString& textButton0, const QString& textButton1, - int idButton0, int idButton1, int idDefault ) -{ - if ( idDefault == idButton0 ) idDefault = 0; - else if ( idDefault == idButton1 ) idDefault = 1; - else idDefault = 0; - - int ret = QMessageBox::critical ( parent, caption, text, textButton0, - textButton1, QString::null, idDefault ); - qApp->processEvents(); /* update desktop */ - return ( ret == 0 ? idButton0 : idButton1 ); -} - -/*! - Shows info message box with three buttons. - Returns id of the pressed button or -1 if escaped [ static ] -*/ -int QAD_MessageBox::info3 ( QWidget* parent, const QString& caption, const QString& text, - const QString& textButton0, const QString& textButton1, - const QString& textButton2, int idButton0, int idButton1, - int idButton2, int idDefault ) -{ - if ( idDefault == idButton0 ) idDefault = 0; - else if ( idDefault == idButton1 ) idDefault = 1; - else if ( idDefault == idButton2 ) idDefault = 2; - else idDefault = 0; - - int ret = QMessageBox::information ( parent, caption, text, textButton0, - textButton1, textButton2, idDefault ); - qApp->processEvents(); /* update desktop */ - switch ( ret ) - { - case 0: return idButton0; - case 1: return idButton1; - case 2: return idButton2; - } - return -1; -} - -/*! - Shows warning message box with three buttons. - Returns id of the pressed button or -1 if escaped [ static ] -*/ -int QAD_MessageBox::warn3 ( QWidget* parent, const QString& caption, const QString& text, - const QString& textButton0, const QString& textButton1, - const QString& textButton2, int idButton0, int idButton1, - int idButton2, int idDefault ) -{ - if ( idDefault == idButton0 ) idDefault = 0; - else if ( idDefault == idButton1 ) idDefault = 1; - else if ( idDefault == idButton2 ) idDefault = 2; - else idDefault = 0; - - int ret = QMessageBox::warning ( parent, caption, text, textButton0, - textButton1, textButton2, idDefault ); - qApp->processEvents(); /* update desktop */ - switch ( ret ) - { - case 0: return idButton0; - case 1: return idButton1; - case 2: return idButton2; - } - return -1; -} - -/*! - Shows error message box with three buttons. - Returns id of the pressed button or -1 if escaped [ static ] -*/ -int QAD_MessageBox::error3 ( QWidget* parent, const QString& caption, const QString& text, - const QString& textButton0, const QString& textButton1, - const QString& textButton2, int idButton0, int idButton1, - int idButton2, int idDefault ) -{ - if ( idDefault == idButton0 ) idDefault = 0; - else if ( idDefault == idButton1 ) idDefault = 1; - else if ( idDefault == idButton2 ) idDefault = 2; - else idDefault = 0; - - int ret = QMessageBox::critical ( parent, caption, text, textButton0, - textButton1, textButton2, idDefault ); - qApp->processEvents(); /* update desktop */ - switch ( ret ) - { - case 0: return idButton0; - case 1: return idButton1; - case 2: return idButton2; - } - return -1; -} diff --git a/src/SALOMEGUI/QAD_MessageBox.h b/src/SALOMEGUI/QAD_MessageBox.h deleted file mode 100644 index a94362ad9..000000000 --- a/src/SALOMEGUI/QAD_MessageBox.h +++ /dev/null @@ -1,79 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_MessageBox.h -// Module : SALOME - -/******************************************************************** -** Class: QAD_MessageBox -** Descr: Message dialog box for QAD-based application -** Module: QAD -** Created: UI team, 02.10.00 -*********************************************************************/ -#ifndef QAD_MESSAGEBOX_H -#define QAD_MESSAGEBOX_H - -#include -#include - -#include "QAD.h" - -class QAD_EXPORT QAD_MessageBox -{ -public: - /* show a box with one button */ - static int info1 ( QWidget* parent, const QString& caption, const QString& text, - const QString& textButton0 ); - static int warn1 ( QWidget* parent, const QString& caption, const QString& text, - const QString& textButton0 ); - static int error1 ( QWidget* parent, const QString& caption, const QString& text, - const QString& textButton0 ); - - /* show a box with two buttons */ - static int info2 ( QWidget* parent, const QString& caption, const QString& text, - const QString& textButton0, const QString& textButton1, - int idButton0, int idButton1, int idDefault ); - static int warn2 ( QWidget* parent, const QString& caption, const QString& text, - const QString& textButton0, const QString& textButton1, - int idButton0, int idButton1, int idDefault ); - static int error2 ( QWidget* parent, const QString& caption, const QString& text, - const QString& textButton0, const QString& textButton1, - int idButton0, int idButton1, int idDefault ); - - /* show a box with three buttons */ - static int info3 ( QWidget* parent, const QString& caption, const QString& text, - const QString& textButton0, const QString& textButton1, - const QString& textButton2, int idButton0, int idButton1, - int idButton2, int idDefault ); - static int warn3 ( QWidget* parent, const QString& caption, const QString& text, - const QString& textButton0, const QString& textButton1, - const QString& textButton2, int idButton0, int idButton1, - int idButton2, int idDefault ); - static int error3 ( QWidget* parent, const QString& caption, const QString& text, - const QString& textButton0, const QString& textButton1, - const QString& textButton2, int idButton0, int idButton1, - int idButton2, int idDefault ); -}; - -#endif - diff --git a/src/SALOMEGUI/QAD_NameBrowser.cxx b/src/SALOMEGUI/QAD_NameBrowser.cxx deleted file mode 100644 index 7cdf04b59..000000000 --- a/src/SALOMEGUI/QAD_NameBrowser.cxx +++ /dev/null @@ -1,446 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_NameBrowser.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "QAD_NameBrowser.h" - -#include "QAD_Study.h" -#include "QAD_Desktop.h" -#include "QAD_Application.h" -#include "QAD_Selection.h" -#include "QAD_InteractiveObject.h" - -#include "utilities.h" - -// IDL headers -#include -#include CORBA_SERVER_HEADER(SALOMEDS) - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -using namespace std; - -/*! - Constructs a QAD_NameBrowser which is a child of 'parent', with the - name 'name' -*/ -QAD_NameBrowser::QAD_NameBrowser( QWidget* parent, const char* name) - : QMainWindow( parent, name, WStyle_NormalBorder | - WStyle_MinMax | WStyle_SysMenu | WDestructiveClose ) -{ - if ( !name ) - setName( "QAD_NameBrowser" ); - - resize( 321, 280 ); - setCaption( name ); - - GroupBox1 = new QGroupBox( this, "GroupBox1" ); - GroupBox1->setGeometry( QRect( 10, 10, 300, 50 ) ); - GroupBox1->setTitle( tr( "Filters" ) ); - - ComboBox1 = new QComboBox( TRUE, GroupBox1 ); - ComboBox1->setGeometry( QRect( 10, 20, 120, 21 ) ); - ComboBox1->insertItem( tr( "Type" ) ); - - connect( ComboBox1, SIGNAL( textChanged(const QString &) ), this, SLOT( updateFilters() ) ); - - - PushButton5 = new QPushButton( tr( " = " ), GroupBox1); - PushButton5->setGeometry( QRect( 140, 20, 30, 21 ) ); - - ComboBox2 = new QComboBox( TRUE, GroupBox1); - ComboBox2->setGeometry( QRect( 180, 20, 111, 21 ) ); - ComboBox2->insertItem( tr( "All" ) ); - connect( ComboBox2, SIGNAL( textChanged(const QString &) ), this, SLOT( updateFilters() ) ); - - GroupBox2 = new QGroupBox( this, "GroupBox2" ); - GroupBox2->setGeometry( QRect( 10, 60, 300, 200 ) ); - GroupBox2->setTitle( tr( "Objects" ) ); - - PushButton1 = new QPushButton( tr( "All" ), GroupBox2 ); - PushButton1->setGeometry( QRect( 10, 170, 71, 21 ) ); - connect( PushButton1, SIGNAL( clicked() ), this, SLOT( selectAllFilteredObjects() ) ); - - ListView1 = new QListView( GroupBox2 ); - ListView1->setGeometry( QRect( 10, 20, 280, 140 ) ); - ListView1->addColumn(""); - ListView1->addColumn(""); - ListView1->addColumn(""); - ListView1->setColumnText( 0, tr( "Filtered" ) ); - ListView1->setColumnWidth(0, 130); - ListView1->setRootIsDecorated(TRUE); - ListView1->setMultiSelection (TRUE); - ListView1->setSelectionMode ( QListView::Extended ); - - connect (ListView1, - SIGNAL( selectionChanged() ), - this, SLOT(onFilteredObjects()) ); - - initFilters(); -} - -/*! - Returns reference to QListView -*/ -QListView* QAD_NameBrowser::getListView() const -{ - return ListView1; -} - -/*! - Destroys the object and frees any allocated resources -*/ -QAD_NameBrowser::~QAD_NameBrowser() -{ - // no need to delete child widgets, Qt does it all for us -} - -void QAD_NameBrowser::selectAllFilteredObjects() -{ - ListView1->selectAll( true ); -} - -void QAD_NameBrowser::updateFilters() -{ - initFilters(); -} - -void QAD_NameBrowser::initFilters() -{ - QAD_Desktop* myDesktop = QAD_Application::getDesktop(); - QAD_Study* myActiveStudy = myDesktop->getActiveStudy(); - SALOMEDS::Study_var aStudy = myActiveStudy->getStudyDocument(); - - Update( aStudy ); - - -// QAD_Selection* Sel = QAD_Selection::Selection( myActiveStudy->getSelection() ); -// const QList& ListIO = Sel->getInteractiveObjects(); -// int NbSelected = ListIO.count(); -// if ( NbSelected == 0 ) { -// // setFilter "All" -// Update( aStudy ); - -// } else if ( NbSelected == 1 ) { -// // setFilter "type of selected object" -// QAD_InteractiveObject* IObject = Sel->getFisrtInteractiveObject(); -// SALOMEDS::SComponent_var SC = SALOMEDS::SComponent::_narrow ( myActiveStudy->FindObjectIOR( IObject->getFatherIOR() )); -// if ( !SC->_is_nil() ) { -// char* ObjectComp = ""; -// if ( SC->GetAttribute(SALOMEDS::Name, ObjectComp)) { -// Update( aStudy, SC ); -// } -// } - -// } else { -// // const QList& ListIO = Sel->getInteractiveObjects(); -// // QListIterator it( Sel->getInteractiveObjects() ); -// // for ( ; it.current(); ++it ) { -// // QAD_InteractiveObject* IObject = it.current(); -// // QString IOR = IObject->getFatherIOR() )); - -// // } - -// // heterogeneous selection -> setFilter "All" -// Update( aStudy ); - -// // homogeneous selection -> setFilter "type of selected objects" -// } -} - -void QAD_NameBrowser::onFilteredObjects() -{ - QAD_Study* myActiveStudy = QAD_Application::getDesktop()->getActiveStudy(); - SALOMEDS::Study_var aStudy = myActiveStudy->getStudyDocument(); - QAD_Selection* Sel = QAD_Selection::Selection( myActiveStudy->getSelection() ); - QAD_StudyFrame* myActiveSFrame = myActiveStudy->getActiveStudyFrame(); - - QString ActiveComp = QAD_Application::getDesktop()->getActiveComponent(); - - MESSAGE ( "QAD_NAMEBROWSER - NB SELECTED INTERACTIVE OBJECT : " << Sel->getInteractiveObjectCount() ) - - QList DeltaPos; - DeltaPos.clear(); - QList DeltaNeg; - DeltaNeg.clear(); - - QListViewItemIterator it( ListView1 ); - for ( ; it.current(); ++it ) { - QListViewItem* item = it.current(); - QString theIOR = item->text(2); - QString theEntry = item->text(1); - - if ( ActiveComp.isEmpty() ) {/* Neutral point = no component loaded */ - if ( !theEntry.isEmpty() && theIOR.isEmpty() ) { /* A component may be selected */ - if ( item->isSelected() ) { - bool itemAlreadySelected = false; - - int nbSel = Sel->getInteractiveObjectCount(); - for ( int i = 0; i < nbSel; i++ ) { - QAD_InteractiveObject* SO = Sel->getInteractiveObject(i); - if ( SO->getIOR().compare(item->text(1)) == 0 ) { - itemAlreadySelected = true; - break; - } - } - if (!itemAlreadySelected) { - QAD_InteractiveObject* SO = new QAD_InteractiveObject( item->text(1), "" ); - DeltaPos.append( SO ); - } - } else { - int nbSel = Sel->getInteractiveObjectCount(); - for ( int i = 0; i < nbSel; i++ ) { - QAD_InteractiveObject* SO = Sel->getInteractiveObject(i); - if ( SO->getIOR().compare(item->text(1)) == 0 ) { - DeltaNeg.append( SO ); - break; - } - } - } - - } else { /* An object is selected */ - if ( item->isSelected() ) { - item->setSelected( false ); - item->repaint(); - } - } - - } else { - if ( !theIOR.isEmpty() ) { - if ( item->isSelected() ) { - bool itemAllreadySelected = false; - - int nbSel = Sel->getInteractiveObjectCount(); - for ( int i = 0; i < nbSel; i++ ) { - QAD_InteractiveObject* SO = Sel->getInteractiveObject(i); - if ( SO->getIOR().compare(theIOR) == 0 ) { - itemAllreadySelected = true; - break; - } - } - - if (!itemAllreadySelected) { - SALOMEDS::SObject_var obj = aStudy->FindObjectID(theEntry.latin1()); - SALOMEDS::SComponent_var theComponent = obj->GetFatherComponent(); - SALOMEDS::GenericAttribute_var anAttr; - SALOMEDS::AttributeIOR_var anIOR; - Standard_CString ior =" "; - Standard_CString iorFather =" "; - if (obj->FindAttribute(anAttr, "AttributeIOR")) { - anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr); - ior = anIOR->Value(); - } - theComponent->ComponentIOR(iorFather); - QAD_InteractiveObject* SO = new QAD_InteractiveObject( QString(ior), - QString(iorFather), - QString(theEntry) ); - DeltaPos.append( SO ); - } - } else { - int nbSel = Sel->getInteractiveObjectCount(); - for ( int i = 0; i < nbSel; i++ ) { - QAD_InteractiveObject* SO = Sel->getInteractiveObject(i); - if ( SO->getIOR().compare(theIOR) == 0 ) { - DeltaNeg.append( SO ); - break; - } - } - - } - } else if ( !theEntry.isEmpty() && theIOR.isEmpty() ) { - if ( item->isSelected() ) { - bool itemAllreadySelected = false; - - int nbSel = Sel->getInteractiveObjectCount(); - for ( int i = 0; i < nbSel; i++ ) { - QAD_InteractiveObject* SO = Sel->getInteractiveObject(i); - if ( SO->getEntry().compare(theEntry) == 0 ) { - itemAllreadySelected = true; - break; - } - } - if (!itemAllreadySelected) { - SALOMEDS::SObject_var obj = aStudy->FindObjectID(theEntry.latin1()); - SALOMEDS::SComponent_var theComponent = obj->GetFatherComponent(); - SALOMEDS::GenericAttribute_var anAttr; - SALOMEDS::AttributeIOR_var anIOR; - Standard_CString ior =" "; - Standard_CString iorFather =" "; - if (obj->FindAttribute(anAttr, "AttributeIOR")) { - anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr); - ior = anIOR->Value(); - } - theComponent->ComponentIOR(iorFather); - QAD_InteractiveObject* SO = new QAD_InteractiveObject( QString(ior), - QString(iorFather), - QString(theEntry) ); - DeltaPos.append( SO ); - } - } else { - int nbSel = Sel->getInteractiveObjectCount(); - for ( int i = 0; i < nbSel; i++ ) { - QAD_InteractiveObject* SO = Sel->getInteractiveObject(i); - if ( SO->getEntry().compare(theEntry) == 0 ) { - DeltaNeg.append( SO ); - break; - } - } - - } - } else { - item->setSelected( false ); - item->repaint(); - } - } - } - - MESSAGE ( "NAMEBROWSER DeltaNeg.count() == " << DeltaNeg.count() ) - for ( QAD_InteractiveObject* SO = DeltaNeg.first(); SO; SO = DeltaNeg.next() ) { - MESSAGE ( "------" << SO->getIOR() ) - Sel->RemoveInteractiveObject(SO); - } - MESSAGE ( "NAMEBROWSER DeltaPos.count() == " << DeltaPos.count() ) - for ( QAD_InteractiveObject* SO = DeltaPos.first(); SO; SO = DeltaPos.next() ) { - MESSAGE ( "++++++" << SO->getIOR() ) - Sel->AddInteractiveObject(SO); - } -} - -/*! - Update -*/ -void QAD_NameBrowser::Update(SALOMEDS::Study_ptr Study, - SALOMEDS::SObject_ptr SO) -{ - SALOMEDS::SObject_var RefSO; - SALOMEDS::ChildIterator_var it = Study->NewChildIterator(SO); - - for (; it->More();it->Next()) { - SALOMEDS::SObject_var CSO= it->Value(); - SALOMEDS::GenericAttribute_var anAttr; - SALOMEDS::AttributeName_var aName; - SALOMEDS::AttributeIOR_var anIOR; - QListViewItem* Item; - - if (CSO->FindAttribute(anAttr, "AttributeName")) { - aName = SALOMEDS::AttributeName::_narrow(anAttr); - if (CSO->FindAttribute(anAttr, "AttributeIOR")) { - anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr); - Item = AddItem ( aName->Value(), CSO->GetID(), anIOR->Value()); - } - } - - Update(Study,CSO); - } -} - -/*! - Update -*/ -void QAD_NameBrowser::Update(SALOMEDS::Study_ptr Study, - SALOMEDS::SComponent_ptr SC) -{ - ListView1->clear(); - - if (Study->_is_nil()) { - return; - } - -// Standard_CString name; - Standard_CString dataType; - Standard_CString ior=""; - - QListViewItem* Item; - - SALOMEDS::SComponentIterator_var itcomp; - SALOMEDS::GenericAttribute_var anAttr; - SALOMEDS::AttributeName_var aName; - SALOMEDS::AttributeIOR_var anIOR; - - if ( !SC->_is_nil() ) { - if (SC->FindAttribute(anAttr, "AttributeName")) { - aName = SALOMEDS::AttributeName::_narrow(anAttr); - Item = AddItem (aName->Value(),SC->GetID(),ior); - } else { - Item = AddItem (dataType,SC->GetID(),ior); - } - Update ( Study, SALOMEDS::SObject::_narrow(SC) ); - - } else { - itcomp = Study->NewComponentIterator(); - for (; itcomp->More(); itcomp->Next()) { - SALOMEDS::SComponent_var SC1 = itcomp->Value(); - dataType = SC1->ComponentDataType(); - - if (SC1->FindAttribute(anAttr, "AttributeIOR")) { - anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr); - ior = anIOR->Value(); - } - - if ( QString(dataType).compare("Interface Applicative") != 0 ) { - if (SC1->FindAttribute(anAttr, "AttributeName")) { - aName = SALOMEDS::AttributeName::_narrow(anAttr); - Item = AddItem (aName->Value(), SC1->GetID(), ior); - } else { - Item = AddItem (dataType, SC1->GetID(), ior); - } - - Update ( Study, SALOMEDS::SObject::_narrow(SC1) ); - } - } - } -} - -QListViewItem* QAD_NameBrowser::AddItem(const QString& theText, - const QString& theEntry, - const QString& theIOR) - -{ - QListViewItem* anItem = new QListViewItem( ListView1 ); - anItem->setText(0, theText); - anItem->setText(1, theEntry); - anItem->setText(2, theIOR); - - return anItem; -} - -/*! - Called when NameBrowser is about to close -*/ -void QAD_NameBrowser::closeEvent(QCloseEvent* e) -{ - QAD_Application::getDesktop()->closeNameBrowser(); - e->accept(); -} diff --git a/src/SALOMEGUI/QAD_NameBrowser.h b/src/SALOMEGUI/QAD_NameBrowser.h deleted file mode 100644 index 79f66730a..000000000 --- a/src/SALOMEGUI/QAD_NameBrowser.h +++ /dev/null @@ -1,90 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_NameBrowser.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef QAD_NAMEBROWSER_H -#define QAD_NAMEBROWSER_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QComboBox; -class QGroupBox; -class QLabel; -class QListView; -class QListViewItem; -class QPushButton; -class QToolButton; - -// IDL headers -#include -#include CORBA_SERVER_HEADER(SALOMEDS) -#include CORBA_SERVER_HEADER(SALOMEDS_Attributes) - -class QAD_NameBrowser : public QMainWindow -{ - Q_OBJECT - -public: - QAD_NameBrowser( QWidget* parent = 0, const char* name = 0); - ~QAD_NameBrowser(); - - QListView* getListView() const; - - void initFilters(); - - QListViewItem* AddItem(const QString&, - const QString&, - const QString&); - void Update(SALOMEDS::Study_ptr Study, - SALOMEDS::SObject_ptr SO); - void Update(SALOMEDS::Study_ptr Study, - SALOMEDS::SComponent_ptr SC = SALOMEDS::SComponent::_narrow( CORBA::Object::_nil() )); - - - void closeEvent(QCloseEvent* e); - -protected slots: - void selectAllFilteredObjects(); - void updateFilters(); - - void onFilteredObjects(); - -private: - QGroupBox* GroupBox1; - QComboBox* ComboBox1; - QPushButton* PushButton5; - QComboBox* ComboBox2; - QGroupBox* GroupBox2; - QPushButton* PushButton1; - QListView* ListView1; - -}; - -#endif // QAD_NAMEBROWSER_H diff --git a/src/SALOMEGUI/QAD_ObjectBrowser.cxx b/src/SALOMEGUI/QAD_ObjectBrowser.cxx deleted file mode 100644 index e97f591ed..000000000 --- a/src/SALOMEGUI/QAD_ObjectBrowser.cxx +++ /dev/null @@ -1,2019 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_ObjectBrowser.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "QAD_ObjectBrowserItem.h" -#include "QAD_ObjectBrowser.h" -#include "QAD_Application.h" -#include "QAD_MessageBox.h" -#include "QAD_Desktop.h" -#include "QAD_Config.h" -#include "QAD_Settings.h" -#include "QAD_Tools.h" -#include "QAD_RightFrame.h" -#include "QAD_LeftFrame.h" -#include "SALOME_Selection.h" -#include "SALOME_InteractiveObject.hxx" -#include "SALOME_ListIteratorOfListIO.hxx" -#include "SALOMEGUI_SetValueDlg.h" -#include "SALOMEGUI_TableDlg.h" -#include "SALOMEGUI_NameDlg.h" - -// QT Includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace std; - -//VRV: porting on Qt 3.0.5 -#if QT_VERSION >= 0x030005 -#include -#endif -//VRV: porting on Qt 3.0.5 - -#define UC_NEW_EMPTY_ID 1000000 -#define UC_NEW_COMP_ID 1000002 -#define UC_NEW_FULL_ID 1000004 -#define UC_NEW_COPY_ID 1000006 -#define UC_APPEND_ID 1000008 -#define UC_REMOVE_ID 1000010 -#define UC_RENAME_ID 1000012 -#define UC_CLEAR_ID 1000014 -#define UC_SET_CURRENT_ID 1000016 - - -#ifdef _DEBUG_ -static int MYDEBUG = 0; -#else -static int MYDEBUG = 0; -#endif - - -/*! - Small button which updates Object Browser's contents -*/ -Btn::Btn ( QWidget * parent, const char * name ) : QToolButton( parent, name ) -{ - connect( this, SIGNAL(clicked()), this, SLOT(onClicked()) ); -} -void Btn::onClicked() -{ - QAD_ObjectBrowser* OB = QAD_Application::getDesktop()->getActiveApp()->getActiveStudy()->getActiveStudyFrame()->getLeftFrame()->getObjectBrowser(); - OB->Update(); -} - -/*! - Gets selected top-level items (i.e. not including sub-items) [ static ] -*/ -static void getSelectedParents( QListViewItem* listViewItem, QList& itemList ) -{ - QListViewItem* item = listViewItem->firstChild(); - while ( item ) { - if ( item->isSelected() ) { - itemList.append( item ); - } - else { - getSelectedParents( item, itemList ); - } - item = item->nextSibling(); - } -} -/*! - Gets selected top-level items (i.e. not including sub-items) [ static ] -*/ -static void getSelectedParents( QListView* listView, QList& itemList, bool ignoreRoot = false ) -{ - itemList.clear(); - QListViewItem* item = listView->firstChild(); - while ( item ) { - if ( item->isSelected() && !ignoreRoot ) { - itemList.append( item ); - } - else { - getSelectedParents( item, itemList ); - } - item = item->nextSibling(); - } -} -/*! - Gets top-most parent item [ static ] -*/ -static QListViewItem* getTopParent( QListViewItem* item ) -{ - if ( !item ) - return 0; - QListViewItem* p = item->parent(); - if ( !p ) - return item; - while ( p->parent() ) { - p = p->parent(); - } - return p; -} -/*! - Returns true if the item is top-level (root) -*/ -static bool isRootItem( QListViewItem* item ) -{ - return ( item->listView() && !item->parent() ); -} -/*! - Constructor -*/ -QAD_ObjectBrowser::QAD_ObjectBrowser( SALOMEDS::Study_var study, QWidget* parent, const char* name, WFlags fl ) - : QTabWidget( parent, name, fl ) -{ - myStudy = SALOMEDS::Study::_duplicate( study ); - myListViewMap.clear(); - myUseCaseMap.clear(); - myListView=0; // must be done before setupListView(): setCornerWidget() provoque call to eventFilter - myUseCaseView=0; // and test myUseCaseView->viewport() before initialisation - setupListView(); -} - -/*! - Destructor -*/ -QAD_ObjectBrowser::~QAD_ObjectBrowser() -{ - if (!myStudy->_is_nil()) - CORBA::release(myStudy); -} - -/*! - Configures Object Browser and UseCase Browser. - Columns, Selection Mode and Palette. -*/ -void QAD_ObjectBrowser::setupListView() -{ - QAD_ResourceMgr* resMgr = QAD_Desktop::createResourceManager(); - - this->setTabPosition( QTabWidget::Bottom ); - - /* Reading setting : Columns for Value, OCAF Doc entry, object IOR, OCAF Doc ref entry and Chrono sorting */ - QString AddColumn = QAD_CONFIG->getSetting( "ObjectBrowser:AddColumn" ); - QString ValueColumn = QAD_CONFIG->getSetting( "ObjectBrowser:ValueColumn" ); - QString ShowCHRONO_SORT = QAD_CONFIG->getSetting( "ObjectBrowser:ChronologicalSort" ); - QString showUseCase = QAD_CONFIG->getSetting("ObjectBrowser:ShowUseCaseBrowser"); - QString noAutoSizeColumns = QAD_CONFIG->getSetting( "ObjectBrowser:NoAutoSizeColumns" ); - - /* create and setup Object Browser ================================= */ - myListView = new QListView( this, "Object Browser"); - myListView->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ) ); - myListView->setMinimumSize( 1, 1 ); - myListView->setPalette( QAD_Application::getPalette( true ) ); - - /* First two columns = object name and value - always visible */ - myListView->addColumn( tr( "OBJECT_BROWSER_OBJECT" ) ); /* Adding Object column */ - myListView->addColumn( tr( "OBJECT_BROWSER_VALUE" ) ); /* Adding Value column */ - myListView->addColumn( tr( "OBJECT_BROWSER_ENTRY" ) ); /* Adding Doc entry column */ - myListView->addColumn( tr( "OBJECT_BROWSER_IOR" ) ); /* Adding Object IOR column */ - myListView->addColumn( tr( "OBJECT_BROWSER_REFENTRY" ) ); /* Adding OCAF Doc ref entry column */ - myListView->header()->setMovingEnabled( false ); - - /* Properties */ - myListView->header()->setClickEnabled( TRUE ); /* Enable clicking on the header */ - myListView->setShowSortIndicator( TRUE ) ; /* Add user arrows to indicate the sort order : LPN */ - myListView->setRootIsDecorated( TRUE ); /* Enable expand/collapse control for the root item */ - myListView->setSelectionMode ( QListView::Extended ); /* Enable multiple selection */ - myListView->setVScrollBarMode( QScrollView::AlwaysOn ); /* Set scrollbars always visible */ - myListView->setHScrollBarMode( QScrollView::AlwaysOn ); /* ... */ - - myListView->setCornerWidget( new Btn( this ) ); - /* Connect section */ - //VRV: porting on Qt 3.0.5 -#if QT_VERSION < 0x030005 - connect( myListView, SIGNAL( rightButtonClicked( QListViewItem*, const QPoint&, int ) ), - this, SLOT( showPopupMenu( QListViewItem* ) ) ); -#else - connect( myListView, SIGNAL( contextMenuRequested( QListViewItem*, const QPoint&, int ) ), - this, SLOT( showPopupMenu( QListViewItem* ) ) ); -#endif - //VRV: porting on Qt 3.0.5 - - connect( myListView, SIGNAL( selectionChanged() ), - this, SLOT( onSelectedItem() ) ); - connect( myListView, SIGNAL( expanded( QListViewItem* ) ), - this, SLOT( onExpanded( QListViewItem* ) ) ); - connect( myListView, SIGNAL( collapsed( QListViewItem* ) ), - this, SLOT( onCollapsed( QListViewItem* ) ) ); - - /* create and setup UseCase Browser ================================ */ - myVBox = new QWidget( this ); - QVBoxLayout* vBoxLayout = new QVBoxLayout( myVBox ); - - myUseCaseView = new QListView( myVBox, "UseCase Browser"); - myUseCaseView->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ) ); - myUseCaseView->setMinimumSize( 1, 1 ); - myUseCaseView->setPalette( QAD_Application::getPalette( true ) ); - - /* First column = object name */ - myUseCaseView->addColumn( tr( "OBJECT_BROWSER_OBJECT" ) ); - /* Properties */ - myUseCaseView->header()->setClickEnabled( TRUE ); /* Enable clicking on the header */ - myUseCaseView->setShowSortIndicator( TRUE ) ; /* Add user arrows to indicate the sort order : LPN */ - myUseCaseView->setRootIsDecorated( TRUE ); /* Enable expand/collapse control for the root item */ - myUseCaseView->setSelectionMode ( QListView::Extended ); /* Enable multiple selection */ - myUseCaseView->setVScrollBarMode( QScrollView::AlwaysOn ); /* Set scrollbars always visible */ - myUseCaseView->setHScrollBarMode( QScrollView::AlwaysOn ); /* ... */ - myUseCaseView->header()->setMovingEnabled( false ); - myUseCaseView->viewport()->setAcceptDrops( true ); - myUseCaseView->installEventFilter( this ); - myUseCaseView->viewport()->installEventFilter( this ); - myUseCaseView->setSorting( -1 ) ; - vBoxLayout->addWidget( myUseCaseView ); - - myUseCaseView->setCornerWidget( new Btn( this ) ); - - myNewBtn = new QToolButton( myVBox ); - myNewBtn->setIconSet( resMgr->loadPixmap( "QAD", tr("ICON_UC_NEW") ) ); - myNewBtn->setAutoRaise( true ); - QToolTip::add( myNewBtn, tr( "UC_NEW_ID" ), QAD_Application::getDesktop()->toolTipGroup(), tr( "UC_NEW_TIP" ) ); - myAddBtn = new QToolButton( myVBox ); - myAddBtn->setIconSet( resMgr->loadPixmap( "QAD", tr("ICON_UC_ADD") ) ); - myAddBtn->setAutoRaise( true ); - QToolTip::add( myAddBtn, tr( "UC_APPEND_ID" ), QAD_Application::getDesktop()->toolTipGroup(), tr( "UC_APPEND_TIP" ) ); - myDelBtn = new QToolButton( myVBox ); - myDelBtn->setIconSet( resMgr->loadPixmap( "QAD", tr("ICON_UC_REMOVE") ) ); - myDelBtn->setAutoRaise( true ); - QToolTip::add( myDelBtn, tr( "UC_REMOVE_ID" ), QAD_Application::getDesktop()->toolTipGroup(), tr( "UC_REMOVE_TIP" ) ); - myClearBtn = new QToolButton( myVBox ); - myClearBtn->setIconSet( resMgr->loadPixmap( "QAD", tr("ICON_UC_CLEAR") ) ); - myClearBtn->setAutoRaise( true ); - QToolTip::add( myClearBtn, tr( "UC_CLEAR_ID" ), QAD_Application::getDesktop()->toolTipGroup(), tr( "UC_CLEAR_TIP" ) ); - myCurrentBtn = new QToolButton( myVBox ); - myCurrentBtn->setIconSet( resMgr->loadPixmap( "QAD", tr("ICON_UC_SET_CURRENT") ) ); - myCurrentBtn->setAutoRaise( true ); - QToolTip::add( myCurrentBtn, tr( "UC_SET_CURRENT_ID" ), QAD_Application::getDesktop()->toolTipGroup(), tr( "UC_SET_CURRENT_TIP" ) ); - - QHBoxLayout* btnLayout = new QHBoxLayout; - btnLayout->setMargin( 3 ); btnLayout->setSpacing( 3 ); - btnLayout->addWidget( myNewBtn ); - btnLayout->addStretch(); - btnLayout->addSpacing( 5 ); - btnLayout->addStretch(); - btnLayout->addWidget( myAddBtn ); - btnLayout->addWidget( myDelBtn ); - btnLayout->addStretch(); - btnLayout->addSpacing( 5 ); - btnLayout->addStretch(); - btnLayout->addWidget( myClearBtn ); - btnLayout->addStretch(); - btnLayout->addSpacing( 5 ); - btnLayout->addStretch(); - btnLayout->addWidget( myCurrentBtn ); - btnLayout->addStretch(); - - vBoxLayout->addLayout( btnLayout ); - - connect( myNewBtn, SIGNAL( clicked() ), this, SLOT( onUseCaseBtn() ) ); - connect( myAddBtn, SIGNAL( clicked() ), this, SLOT( onUseCaseBtn() ) ); - connect( myDelBtn, SIGNAL( clicked() ), this, SLOT( onUseCaseBtn() ) ); - connect( myClearBtn, SIGNAL( clicked() ), this, SLOT( onUseCaseBtn() ) ); - connect( myCurrentBtn, SIGNAL( clicked() ), this, SLOT( onUseCaseBtn() ) ); - - /* Connect section */ -#if QT_VERSION < 0x030005 - connect( myUseCaseView, SIGNAL( rightButtonClicked( QListViewItem*, const QPoint&, int ) ), - this, SLOT( showPopupMenu( QListViewItem* ) ) ); -#else - connect( myUseCaseView, SIGNAL( contextMenuRequested( QListViewItem*, const QPoint&, int ) ), - this, SLOT( showPopupMenu( QListViewItem* ) ) ); -#endif - - connect( myUseCaseView, SIGNAL( selectionChanged() ), - this, SLOT( onSelectedItem() ) ); - - /* add Object Browser and UseCase Browser as pages ================= */ - this->addTab( myListView, tr( "TLT_OBJECT_BROWSER" ) ); - this->addTab( myVBox, tr( "TLT_USECASE_BROWSER" ) ); - - if ( showUseCase != "true") - this->removePage(myVBox); - - setShowInfoColumns( AddColumn == "true" ); - setShowValueColumn( ValueColumn == "true" ); - setEnableChronoSort( ShowCHRONO_SORT == "true" ); - - if ( noAutoSizeColumns == "true" ) - { - for (int i = 0; i < myListView->header()->count(); i++ ) - myListView->setColumnWidthMode(i, QListView::Manual); - } - - resize( QSize( 100, 400 ) ); -} - -/*! - Event filter -*/ - -bool QAD_ObjectBrowser::eventFilter( QObject* o, QEvent* e ) -{ - QAD_Desktop* Desktop = (QAD_Desktop*) QAD_Application::getDesktop(); - QAD_Study* myActiveStudy = Desktop->getActiveStudy(); - - if ( myStudy->_is_nil() ) - return QTabWidget::eventFilter( o, e ); - - SALOMEDS::UseCaseBuilder_var UCBuilder = myStudy->GetUseCaseBuilder(); - if (! myUseCaseView) return QTabWidget::eventFilter( o, e ); - if (o == myUseCaseView->viewport()) { - if ( e->type() == QEvent::MouseButtonPress ) { - // Test if clicked on selection and start drag if necessary - QMouseEvent* me = ( QMouseEvent* )e; - QAD_ObjectBrowserItem* item = ( QAD_ObjectBrowserItem* )( myUseCaseView->itemAt( me->pos() ) ); - if ( item && item->isSelected() && me->button() == LeftButton) { - if ( me->pos().x() > myUseCaseView->header()->sectionPos( myUseCaseView->header()->mapToIndex( 0 ) ) + - myUseCaseView->treeStepSize() * ( item->depth() + ( myUseCaseView->rootIsDecorated() ? 1 : 0 ) ) + - myUseCaseView->itemMargin() || - me->pos().x() < myUseCaseView->header()->sectionPos( myUseCaseView->header()->mapToIndex( 0 ) ) ) { - QStringList entryList; - QListViewItemIterator it( myUseCaseView ); - bool done = true; - for ( ; it.current(); ++it ) { - QAD_ObjectBrowserItem* selItem = ( QAD_ObjectBrowserItem* )( it.current() ); - if ( selItem->isSelected() ) { - if ( isRootItem( selItem ) ) { - done = false; - break; - } - else { - entryList.append( selItem->getEntry() ); - } - } - } - if ( done && !entryList.isEmpty() ) { - QTextDrag *d = new QTextDrag( entryList.join("*"), myUseCaseView->viewport() ); - d->dragMove(); - return true; - } - } - } - } - else if ( e->type() == QEvent::DragMove ) { - QDragMoveEvent* dme = ( QDragMoveEvent* )e; - if ( dme->source() == myUseCaseView->viewport() ) { - dme->accept(); - } - else { - dme->ignore(); - } - return true; - } - else if ( e->type() == QEvent::Drop ) { - QDropEvent* de = ( QDropEvent* )e; - QString text; - QAD_ObjectBrowserItem* dropItem = ( QAD_ObjectBrowserItem* )( myUseCaseView->itemAt( de->pos() ) ); - if ( de->source() == myUseCaseView->viewport() ) { - if ( QTextDrag::decode( de, text ) && dropItem && !dropItem->isSelected() ) { - QAD_ObjectBrowserItem* useCaseItem = ( QAD_ObjectBrowserItem* )getTopParent( dropItem ); - if ( useCaseItem ) { - if ( !UCBuilder->_is_nil() ) { - UCBuilder->SetRootCurrent(); - if ( useCaseItem != dropItem ) { - SALOMEDS::SObject_var dropObject = myStudy->FindObjectID( dropItem->getEntry() ); - if ( !dropObject->_is_nil() ) - UCBuilder->SetCurrentObject( dropObject ); - } - QStringList entryList = QStringList::split( "*", text, false ); - // if Move action then first remove all selected items - if ( de->action() == QDropEvent::Move ) { - QList ucSelected; - ucSelected.setAutoDelete( false ); - getSelectedParents( myUseCaseView, ucSelected ); - for ( int j = 0; j < entryList.count(); j++ ) { - QAD_ObjectBrowserItem* delItem = ( QAD_ObjectBrowserItem* )( ucSelected.at( j ) ); - QAD_ObjectBrowserItem* ucDelItem = ( QAD_ObjectBrowserItem* )getTopParent( delItem ); - SALOMEDS::SObject_var delSO = myStudy->FindObjectID( delItem->getEntry() ); - if ( !delSO->_is_nil() && ucDelItem ) { - UCBuilder->Remove( delSO ); - } - } - } - // then try to append items to destination - for ( int i = 0; i < entryList.count(); i++ ) { - SALOMEDS::SObject_var SO = myStudy->FindObjectID( entryList[i] ); - if ( !SO->_is_nil() ) { - UCBuilder->Remove( SO ); - UCBuilder->Append( SO ); - } - } - myActiveStudy->updateUseCaseBrowser(); - } - } - } - de->acceptAction(); - } - else { - de->ignore(); - } - return true; - } - } - else if ( o == myUseCaseView ) { - if ( e->type() == QEvent::KeyPress ) { - QKeyEvent* ke = ( QKeyEvent* )e; - if ( ke->key() == Key_Delete ) { - onUseCasePopupMenu( UC_REMOVE_ID ); - return true; - } - } - } - return QTabWidget::eventFilter( o, e ); -} - - -/*! - Returns true if item is collapsed has collapsed children -*/ -static bool hasCollapsed( QListViewItem* item ) -{ - if ( !item ) - return false; - - bool res = ( item->childCount() && !item->isOpen() ); - for ( QListViewItem* child = item->firstChild(); !res && child; child = child->nextSibling() ) - res = hasCollapsed( child ); - - return res; -} - -/*! - Expands item and all its children -*/ -static void expand(QListViewItem* item) -{ - if ( !item ) - return; - - item->setOpen( true ); - - for ( QListViewItem* child = item->firstChild(); child; child = child->nextSibling() ) - expand( child ); -} - -/*! - Builds popup menu -*/ -void QAD_ObjectBrowser::onCreatePopup() -{ - QAD_Desktop* Desktop = (QAD_Desktop*) QAD_Application::getDesktop(); - QAD_Study* myActiveStudy = Desktop->getActiveStudy(); - SALOME_Selection* Sel = SALOME_Selection::Selection( myActiveStudy->getSelection() ); - - bool canExpand = false; - /* VSR : Creation of common POPUP menu for Object Browser/Use Case Browser */ - if ( Sel->IObjectCount() > 0 ) { - QString theContext; - QString theParent; - QString theObject; - - Desktop->definePopup( theContext, theParent, theObject ); - if ( myPopup ) { - Desktop->createPopup( myPopup, theContext, "ObjectBrowser", theObject); - if ( !Desktop->getActiveComponent().isEmpty() ) { - Desktop->customPopup( myPopup, theContext, "ObjectBrowser", theObject ); - } - // VSR:22/01/03 - Command for edit attributes value - bool EditValues = QAD_CONFIG->getSetting( "ObjectBrowser:EditValues" ) == "true"; - if ( EditValues && Sel->IObjectCount() == 1 && hasEditableAttribute(Sel->firstIObject()) ) { - if ( myPopup->count() > 0 ) - myPopup->insertSeparator(); - myPopup->insertItem( tr( "EDIT_VALUE_CMD" ), - this, - SLOT( onEditAttribute() ) ); - } - - for ( QListViewItemIterator it( currentPage() == myListView ? myListView : myUseCaseView ); it.current() && !canExpand; ++it ) - canExpand = canExpand || ( it.current()->isSelected() && hasCollapsed( it.current() ) ); - - if ( canExpand ) { - if ( myPopup->count() > 0 ) - myPopup->insertSeparator(); - myPopup->insertItem( tr( "EXPAND_ALL_CMD" ), - this, - SLOT( onExpandAll() ) ); - } - } - } else { - // NRI 02/12/2002 - // No selected item => it's not necessary to create popup - //NRI- : Desktop->createPopup( myPopup, "", "ObjectBrowser", ""); - } - if ( currentPage() != myListView ) { - /* VSR : Creation of POPUP menu for UseCase Browser */ - QList ucSelected; - ucSelected.setAutoDelete( false ); - getSelectedParents( myUseCaseView, ucSelected ); - - if ( myPopup && !myStudy->_is_nil() ) { - SALOMEDS::UseCaseBuilder_var UCBuilder = myStudy->GetUseCaseBuilder(); -// myPopup->clear(); - bool isOne = ucSelected.count() == 1; - bool isRoot = isOne && isRootItem( ucSelected.at( 0 ) ); - bool manyChildren = myUseCaseView->childCount() > 0 && myUseCaseView->firstChild()->childCount() > 0; - bool isUseCase = isOne && - ( isRoot || UCBuilder->IsUseCase( myStudy->FindObjectID( (( QAD_ObjectBrowserItem* )( ucSelected.at(0) ))->getEntry() ) ) ); - - if ( isRoot ) { - myPopup->clear(); - if ( canExpand ) { - myPopup->insertItem( tr( "EXPAND_ALL_CMD" ), - this, - SLOT( onExpandAll() ) ); - } - } - QPopupMenu *UseCasePopup = new QPopupMenu( myPopup ); - if ( isOne ) - UseCasePopup->insertItem( tr( "UC_NEW_ID" ), this, SLOT( onUseCasePopupMenu( int ) ), 0, UC_NEW_EMPTY_ID ); - if ( isOne ) - UseCasePopup->insertItem( tr( "UC_SET_CURRENT_ID" ), this, SLOT( onUseCasePopupMenu( int ) ), 0, UC_SET_CURRENT_ID ); - if ( isUseCase ) - UseCasePopup->insertItem( tr( "UC_RENAME_ID" ), this, SLOT( onUseCasePopupMenu( int ) ), 0, UC_RENAME_ID ); - if ( isRoot && manyChildren ) - UseCasePopup->insertItem( tr( "UC_CLEAR_ID" ), this, SLOT( onUseCasePopupMenu( int ) ), 0, UC_CLEAR_ID ); - - if ( UseCasePopup->count() > 0 ) { - if ( myPopup->count() > 0 ) - myPopup->insertSeparator(); - myPopup->insertItem( tr( "UC_POPUP" ), UseCasePopup ); - } - else { - delete UseCasePopup; - } - } - } -} - -/*! - Called on "Expand all" popup menu command -*/ -void QAD_ObjectBrowser::onExpandAll() -{ - for ( QListViewItemIterator it( currentPage() == myListView ? myListView : myUseCaseView ); it.current(); ++it ) - if ( it.current()->isSelected() ) - expand( it.current() ); -} - -/*! - Returns Object Browser list view -*/ -QListView* QAD_ObjectBrowser::getListView() const -{ - return myListView; -} - -/*! - Returns UseCase Browser list view -*/ -QListView* QAD_ObjectBrowser::getUseCaseView() const -{ - return myUseCaseView; -} - -/*! - Adds anItem ( probably a SComponent ) -*/ -QAD_ObjectBrowserItem* QAD_ObjectBrowser::AddItem(QListView* theView, - const QString& theName, - const QString& theEntry, - const QString& theIOR, - int theType, - const QString& theValue, - QAD_ObjectBrowserItem* theAfter) - -{ - QAD_ObjectBrowserItem* last = (QAD_ObjectBrowserItem*)(theView->firstChild()); - if ( theAfter ) - last = theAfter; - else if ( last ) { - for ( ; last->nextSibling(); last = (QAD_ObjectBrowserItem*)(last->nextSibling()) ); - } - QAD_ObjectBrowserItem* anItem = new QAD_ObjectBrowserItem( theView, last ); - - anItem->setType( theType ); - anItem->setOpen( FALSE ); - anItem->setName( theName ); - anItem->setValue( theValue ); - anItem->setEntry( theEntry ); - anItem->setIOR( theIOR ); - anItem->setReference( "" ); - - return anItem; -} - -/*! - Adds anItem ( probably a StudyObject ) -*/ -QAD_ObjectBrowserItem* QAD_ObjectBrowser::AddItem(QAD_ObjectBrowserItem* theParentItem, - const QString& theName, - const QString& theEntry, - const QString& theIOR, - int theType, - const QString& theRef, - const QString& theValue, - QAD_ObjectBrowserItem* theAfter) - -{ - QAD_ObjectBrowserItem* last = (QAD_ObjectBrowserItem*)(theParentItem->firstChild()); - if ( theAfter ) - last = theAfter; - else if ( last ) { - for ( ; last->nextSibling(); last = (QAD_ObjectBrowserItem*)(last->nextSibling()) ); - } - QAD_ObjectBrowserItem* anItem = new QAD_ObjectBrowserItem(theParentItem, last); - anItem->setType( theType ); - anItem->setOpen( FALSE ); - anItem->setName( theName ); - anItem->setValue( theValue ); - anItem->setEntry( theEntry ); - anItem->setIOR( theIOR ); - anItem->setReference( theRef ); - - return anItem; -} - -/*! - Updates Object Browsers' item [ protected ] -*/ -void QAD_ObjectBrowser::Update( SALOMEDS::SObject_ptr SO, - QAD_ObjectBrowserItem* theParentItem ) -{ - if ( myStudy->_is_nil() || SO->_is_nil() || !theParentItem ) { - return; - } - SALOMEDS::ChildIterator_var it = myStudy->NewChildIterator(SO); - - for (; it->More();it->Next()) { - SALOMEDS::SObject_var CSO = it->Value(); - SALOMEDS::SObject_var RefSO; - QString ior = ""; - CORBA::String_var aString(CSO->GetID()); - QString CSOEntry(aString.in()); - SALOMEDS::GenericAttribute_var anAttr; - SALOMEDS::AttributeName_var aName; - SALOMEDS::AttributeComment_var aCmnt; - SALOMEDS::AttributeIOR_var anIOR; - SALOMEDS::AttributeReal_var aReal; - SALOMEDS::AttributeInteger_var anInt; - SALOMEDS::AttributeSelectable_var aSelectable; - SALOMEDS::AttributeExpandable_var anExpandable; - SALOMEDS::AttributeOpened_var anOpened; - SALOMEDS::AttributePixMap_var aPixmap; - SALOMEDS::AttributeTextColor_var aTextColor; - SALOMEDS::AttributeTextHighlightColor_var aTextHighlightColor; - - QAD_ObjectBrowserItem* Item = 0; - QString valueString; - - if ( CSO->ReferencedObject(RefSO) && !RefSO->_is_nil() ) { - - aString = RefSO->GetID(); - QString RefSOEntry(aString.in()); - if (CSO->FindAttribute(anAttr, "AttributeName") || RefSO->FindAttribute(anAttr, "AttributeName")) { - aName = SALOMEDS::AttributeName::_narrow(anAttr); - if (RefSO->FindAttribute(anAttr, "AttributeIOR")) { - anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr); - aString = anIOR->Value(); - ior = aString.in(); - } - valueString = getValueFromObject( RefSO ); - aString = aName->Value(); - Item = AddItem(theParentItem, - QString(" * ") + aString.in(), - RefSOEntry, - ior, - 2, - CSOEntry, - valueString); - myListViewMap[ RefSOEntry ].append( Item ); - } - else { - if(MYDEBUG) MESSAGE("QAD_ObjectBrowser::Update : noname item: "<GetID()); - } - } else { - // getting Value - valueString = getValueFromObject( CSO ); - // getting IOR - if (CSO->FindAttribute(anAttr, "AttributeIOR")) { - anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr); - aString = anIOR->Value(); - ior = aString.in(); - } - // getting Name and adding new Item - if (CSO->FindAttribute(anAttr, "AttributeName") ) { - aName = SALOMEDS::AttributeName::_narrow(anAttr); - aString = aName->Value(); - Item = AddItem(theParentItem, aString.in(), CSOEntry, ior, 0, "", valueString); - myListViewMap[ CSOEntry ].append( Item ); - } - else { - if(MYDEBUG) MESSAGE("QAD_ObjectBrowser::Update : noname item: "<GetID()); - } - // adding other attributes - if (Item) { - // Selectable - if ( CSO->FindAttribute(anAttr, "AttributeSelectable") ) { - aSelectable = SALOMEDS::AttributeSelectable::_narrow(anAttr); - Item->setSelectable(aSelectable->IsSelectable()); - } - // Expandable - if ( CSO->FindAttribute(anAttr, "AttributeExpandable") ) { - anExpandable = SALOMEDS::AttributeExpandable::_narrow(anAttr); - Item->setExpandable(anExpandable->IsExpandable()); - } - // Opened - if ( CSO->FindAttribute(anAttr, "AttributeOpened") ) { - anOpened = SALOMEDS::AttributeOpened::_narrow(anAttr); - Item->setOpen(anOpened->IsOpened()); - } - // TextColor - if ( CSO->FindAttribute(anAttr, "AttributeTextColor") ) { - aTextColor = SALOMEDS::AttributeTextColor::_narrow(anAttr); - QColor aColor((int)(aTextColor->TextColor().R), (int)(aTextColor->TextColor().G), (int)(aTextColor->TextColor().B)) ; - Item->setTextColor(aColor); - } - // TextHighlightColor - if ( CSO->FindAttribute(anAttr, "AttributeTextHighlightColor") ) { - aTextHighlightColor = SALOMEDS::AttributeTextHighlightColor::_narrow(anAttr); - QColor aColor((int)(aTextHighlightColor->TextHighlightColor().R), - (int)(aTextHighlightColor->TextHighlightColor().G), - (int)(aTextHighlightColor->TextHighlightColor().B)) ; - Item->setTextHighlightColor(aColor); - } - // Pixmap - if ( CSO->FindAttribute(anAttr, "AttributePixMap") ) { - aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr); - if ( aPixmap->HasPixMap() ) { - SALOMEDS::SComponent_var father = CSO->GetFatherComponent(); - if (father->FindAttribute(anAttr, "AttributeName") ) { - SALOMEDS::AttributeName_var aFatherName; - aFatherName = SALOMEDS::AttributeName::_narrow(anAttr); - - QString msg; - QAD_ResourceMgr* resMgr = QAD_Desktop::createResourceManager(); - if ( resMgr ) { - //if(resMgr->loadResources( QString(aFatherName->Value()) + "GUI", msg )) { - if( resMgr->loadResources( QAD_Application::getDesktop()->getComponentName( QString( aFatherName->Value() ) ), msg ) ) { - QPixmap icon ( resMgr->loadPixmap( QAD_Application::getDesktop()->getComponentName( QString( aFatherName->Value() ) ), - tr( aPixmap->GetPixMap() ) /*tr( "ICON_OBJBROWSER_" + theComponent )*/ ) ); - //QPixmap icon ( resMgr->loadPixmap( QString(aFatherName->Value()) + "GUI", - //tr(aPixmap->GetPixMap()) /*tr( "ICON_OBJBROWSER_" + theComponent )*/ )); - Item->setPixmap( 0, icon ); - } - } - } - } - } - } - } -// if ( theParentItem->isOpen() ) -// Item->setOpen(TRUE); - - if ( Item ) - Update(CSO, Item); - } -} - -/*! - Updates Object Browser tree and UseCase Browser tree -*/ -void QAD_ObjectBrowser::Update() -{ - int xc = myListView->contentsX(); - int yc = myListView->contentsY(); - myListView->viewport()->setUpdatesEnabled( false ); - - myListView->clear(); - myListViewMap.clear(); - - if ( myStudy->_is_nil() ) { - return; - } - - QString ShowIAPP = QAD_CONFIG->getSetting("ObjectBrowser:IAPP"); - - /* Updating Object Browser ============================================== */ - SALOMEDS::SComponentIterator_var itcomp = myStudy->NewComponentIterator(); - for (; itcomp->More(); itcomp->Next()) { - QAD_ObjectBrowserItem* Item = 0; - SALOMEDS::SComponent_var SC = itcomp->Value(); - CORBA::String_var aString = SC->ComponentDataType(); - QString dataType = aString.in(); - QString ior = ""; - aString = SC->GetID(); - QString SCEntry = aString.in(); - - SALOMEDS::GenericAttribute_var anAttr; - SALOMEDS::AttributeName_var aName; - SALOMEDS::AttributeComment_var aCmnt; - SALOMEDS::AttributeIOR_var anIOR; - SALOMEDS::AttributeReal_var aReal; - SALOMEDS::AttributeInteger_var anInt; - SALOMEDS::AttributeSelectable_var aSelectable; - SALOMEDS::AttributeExpandable_var anExpandable; - SALOMEDS::AttributeOpened_var anOpened; - SALOMEDS::AttributePixMap_var aPixmap; - SALOMEDS::AttributeTextColor_var aTextColor; - SALOMEDS::AttributeTextHighlightColor_var aTextHighlightColor; - - if (SC->FindAttribute(anAttr, "AttributeIOR")) { - anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr); - aString = anIOR->Value(); - ior = aString.in(); - } - - bool caseIAPP = false; - - // create data-tree item, corresponding to component (and set name if component has it) - if ( dataType.compare("Interface Applicative") == 0 ) { - caseIAPP = true; - if ( ShowIAPP.compare("true") == 0 ) { - if (SC->FindAttribute(anAttr, "AttributeName")) { - aName = SALOMEDS::AttributeName::_narrow(anAttr); - aString = aName->Value(); - Item = AddItem (myListView, aString.in(), SCEntry.latin1(), ior, 1, ""); - myListViewMap[ SCEntry ].append( Item ); - } - else { - Item = AddItem (myListView, dataType, SCEntry, ior, 1, ""); - myListViewMap[ SCEntry ].append( Item ); - } - - } - } - else { - caseIAPP = false; - if (SC->FindAttribute(anAttr, "AttributeName")) { - aName = SALOMEDS::AttributeName::_narrow(anAttr); - aString = aName->Value(); - Item = AddItem (myListView, aString.in(), SCEntry, ior, 1, ""); - myListViewMap[ SCEntry ].append( Item ); - } - else { - /*In according to CAF - any label (even if it is empty) exist during to whole session. - So, if label haven't an "AttributeName" it is means that the label is empty. - Therefore follow action couses bug - - Item = AddItem (myListView, dataType, SC->GetID(), ior, 1, ""); - */ - } - } - // add other attributes - if (Item) { - // Selectable - if ( SC->FindAttribute(anAttr, "AttributeSelectable") ) { - aSelectable = SALOMEDS::AttributeSelectable::_narrow(anAttr); - Item->setSelectable(aSelectable->IsSelectable()); - } - // Expandable - if ( SC->FindAttribute(anAttr, "AttributeExpandable") ) { - anExpandable = SALOMEDS::AttributeExpandable::_narrow(anAttr); - Item->setExpandable(anExpandable->IsExpandable()); - } - // Opened - if ( SC->FindAttribute(anAttr, "AttributeOpened") ) { - anOpened = SALOMEDS::AttributeOpened::_narrow(anAttr); - Item->setOpen(anOpened->IsOpened()); - } - // TextColor - if ( SC->FindAttribute(anAttr, "AttributeTextColor") ) { - aTextColor = SALOMEDS::AttributeTextColor::_narrow(anAttr); - QColor aColor((int)(aTextColor->TextColor().R), (int)(aTextColor->TextColor().G), (int)(aTextColor->TextColor().B)) ; - Item->setTextColor(aColor); - } - // TextHighlightColor - if ( SC->FindAttribute(anAttr, "AttributeTextHighlightColor") ) { - aTextHighlightColor = SALOMEDS::AttributeTextHighlightColor::_narrow(anAttr); - QColor aColor((int)(aTextHighlightColor->TextHighlightColor().R), - (int)(aTextHighlightColor->TextHighlightColor().G), - (int)(aTextHighlightColor->TextHighlightColor().B)) ; - Item->setTextHighlightColor(aColor); - } - - // Pixmap - if ( SC->FindAttribute(anAttr, "AttributePixMap") ) { - aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr); - if ( aPixmap->HasPixMap() ) { - QString msg; - QAD_ResourceMgr* resMgr = QAD_Desktop::createResourceManager(); - if ( resMgr ) { - if(MYDEBUG) MESSAGE ( " Component " << aName->Value() ); - if(MYDEBUG) MESSAGE ( " Icon " << aPixmap->GetPixMap() ); - if(resMgr->loadResources( QAD_Application::getDesktop()->getComponentName(QString(aName->Value())), msg )) { - QPixmap icon ( resMgr->loadPixmap( QAD_Application::getDesktop()->getComponentName(QString(aName->Value())), - tr(aPixmap->GetPixMap()) /*tr( "ICON_OBJBROWSER_" + theComponent )*/ )); - Item->setPixmap( 0, icon ); - } - } - } - } - /* - if ( strcmp(dataType, TypeComponent) == 0 ) - Item->setOpen(TRUE); - */ - if ( caseIAPP && ShowIAPP.compare("true") == 0 ) - Update (SC, Item); - - if ( !caseIAPP ) - Update (SC, Item); - } - } - myListView->setContentsPos(xc,yc); - - myListView->viewport()->setUpdatesEnabled( true ); - myListView->viewport()->repaint( false ); - /* Updating UseCase Browser ============================================= */ - if ( this->count() > 1 ) - UpdateUseCaseBrowser(); -} - -/*! - Removes item with all childs from the map - used to optimize UseCase browser update -*/ -void removeFromMap( ItemMap& theMap, QAD_ObjectBrowserItem* item ) -{ - if ( item ) { - QAD_ObjectBrowserItem* subItem = ( QAD_ObjectBrowserItem* )( item->firstChild() ); - while ( subItem ) { - removeFromMap( theMap, subItem ); - subItem = ( QAD_ObjectBrowserItem* )( subItem->nextSibling() ); - } - if ( theMap.contains( item->getEntry() ) ) { - theMap[ item->getEntry() ].removeRef( item ); - if ( theMap[ item->getEntry() ].isEmpty() ) { - theMap.remove( item->getEntry() ); - } - } - } -} - -/*! - Updates only UseCase Browser -*/ -void QAD_ObjectBrowser::UpdateUseCaseBrowser() { -// myUseCaseView->clear(); myUseCaseMap.clear(); - if ( myStudy->_is_nil() || this->count()<2 ) { - return; - } - myUseCaseView->blockSignals( true ); -// myUseCaseView->setUpdatesEnabled( false ); - - QAD_ObjectBrowserItem* root = ( QAD_ObjectBrowserItem* )myUseCaseView->firstChild(); - SALOMEDS::UseCaseBuilder_var UCBuilder = myStudy->GetUseCaseBuilder(); - SALOMEDS::SObject_var SOCurrent = UCBuilder->GetCurrentObject(); - CORBA::String_var aString = UCBuilder->GetName(); - QString UCName = aString.in(); - if ( UCName.isEmpty() ) - UCName = QString( tr( "Root" ) ); - // creating root item if is not yet created - if ( !root ) { - root = AddItem( myUseCaseView, UCName, "0:2", "", 1, "" ); - myUseCaseMap[ "0:2" ].append( root ); - } - else - root->setName( UCName ); - // setting it current if necessary - root->setCurrent( SOCurrent->_is_nil() || !strcmp( SOCurrent->GetID(), "0:2" ) ); - // updating list view... - QMap ucList; - SALOMEDS::UseCaseIterator_var UCIter = UCBuilder->GetUseCaseIterator( SALOMEDS::SObject::_nil() ); - if ( !UCIter->_is_nil() ) { - for ( ; UCIter->More(); UCIter->Next() ) { - SALOMEDS::SObject_var UCObject = UCIter->Value(); - aString = UCObject->GetID(); - QString UCEntry = aString.in(); - ucList[ UCEntry ] = UCObject; - } - } - // ... 1) delete removed items - QAD_ObjectBrowserItem* childItem = ( QAD_ObjectBrowserItem* )root->firstChild(); - while ( childItem ) { - QAD_ObjectBrowserItem* prevItem = childItem; - childItem = ( QAD_ObjectBrowserItem* )childItem->nextSibling(); - if ( !ucList.contains( prevItem->getEntry() ) ) { -// myUseCaseMap[ prevItem->getEntry() ].removeRef( prevItem ); -// if ( myUseCaseMap[ prevItem->getEntry() ].isEmpty() ) -// myUseCaseMap.remove( prevItem->getEntry() ); - removeFromMap( myUseCaseMap, prevItem ); - delete prevItem; - } - } - // ... 2) create/update existing - QMap::Iterator it; - for ( it = ucList.begin(); it != ucList.end(); ++it ) { - UpdateUCItem( it.data(), root ); - } - myUseCaseView->blockSignals( false ); -// myUseCaseView->setUpdatesEnabled( true ); -// myUseCaseView->update(); -// UCItem->setOpen( true ); -} - -/*! - Updates UseCase Browser's item -*/ -void QAD_ObjectBrowser::UpdateUCItem( SALOMEDS::SObject_var UCObject, QAD_ObjectBrowserItem* UCItem ) -{ - if ( myStudy->_is_nil() || !UCItem ) - return; - - // --- VSR: 01/02/05 --- start - // skip all 'Interface Applicative' objects - SALOMEDS::SComponent_var SCO = UCObject->GetFatherComponent(); - CORBA::String_var aCorbaString = SCO->ComponentDataType(); - QString dataType = aCorbaString.in(); - if ( dataType.compare("Interface Applicative") == 0 ) - return; - // --- VSR: 01/02/05 --- finish - - /* Creating SObjects item */ - SALOMEDS::SObject_var RefSO; - SALOMEDS::GenericAttribute_var anAttr; - SALOMEDS::AttributeName_var aName; - SALOMEDS::AttributeIOR_var anIOR; - SALOMEDS::AttributeSelectable_var aSelectable; - SALOMEDS::AttributeExpandable_var anExpandable; - SALOMEDS::AttributePixMap_var aPixmap; - SALOMEDS::AttributeTextColor_var aTextColor; - SALOMEDS::AttributeTextHighlightColor_var aTextHighlightColor; - QString valueString; - QString ior = ""; - CORBA::String_var aString = UCObject->GetID(); - QString UCEntry = aString.in(); - - SALOMEDS::UseCaseBuilder_var UCBuilder = myStudy->GetUseCaseBuilder(); - SALOMEDS::SObject_var SOCurrent = UCBuilder->GetCurrentObject(); - bool isUseCase = UCBuilder->IsUseCase( UCObject ); - - QAD_ObjectBrowserItem* UCSubItem = 0; - if ( myUseCaseMap.contains( UCEntry ) && myUseCaseMap[ UCEntry ].count() > 0 ) - UCSubItem = myUseCaseMap[ UCEntry ].first(); - - if ( UCObject->ReferencedObject( RefSO ) && !RefSO->_is_nil() ) { - aString = RefSO->GetID(); - QString RefSOEntry = aString.in(); - if ( UCObject->FindAttribute( anAttr, "AttributeName" ) || RefSO->FindAttribute( anAttr, "AttributeName" ) ) { - aName = SALOMEDS::AttributeName::_narrow( anAttr ); - if ( RefSO->FindAttribute( anAttr, "AttributeIOR" ) ) { - anIOR = SALOMEDS::AttributeIOR::_narrow( anAttr ); - aString = anIOR->Value(); - ior = aString.in(); - } - valueString = getValueFromObject( RefSO ); - aString = aName->Value(); - if ( !UCSubItem ) { - UCSubItem = AddItem( UCItem, - QString( " * " ) + aString.in(), - RefSOEntry, - ior, - 2, - UCEntry, - valueString ); - myUseCaseMap[ RefSOEntry ].append( UCSubItem ); - } - else { - UCSubItem->setName( QString( " * " ) + aString.in() ); - UCSubItem->setEntry( RefSOEntry ); - UCSubItem->setIOR( ior ); - UCSubItem->setReference( UCEntry ); - UCSubItem->setValue( valueString ); - } - UCSubItem->setCurrent( !SOCurrent->_is_nil() && QString( SOCurrent->GetID() ) == QString( UCEntry ) ); - } - } - else { - // getting Value - valueString = getValueFromObject( UCObject ); - // getting IOR - if ( UCObject->FindAttribute( anAttr, "AttributeIOR" ) ) { - anIOR = SALOMEDS::AttributeIOR::_narrow( anAttr ); - aString = anIOR->Value(); - ior = aString.in(); - } - // getting Name and adding new Item - if ( UCObject->FindAttribute( anAttr, "AttributeName" ) ) { - aName = SALOMEDS::AttributeName::_narrow( anAttr ); - aString = aName->Value(); - if ( !UCSubItem ) { - UCSubItem = AddItem( UCItem, aString.in(), UCEntry, ior, isUseCase ? 1 : 0, "", valueString ); - myUseCaseMap[ UCEntry ].append( UCSubItem ); - } - else { - UCSubItem->setName( aString.in() ); - UCSubItem->setEntry( UCEntry ); - UCSubItem->setIOR( ior ); - UCSubItem->setReference( "" ); - UCSubItem->setValue( valueString ); - } - } - // adding other attributes - if ( UCSubItem ) { - UCSubItem->setCurrent( !SOCurrent->_is_nil() && QString( SOCurrent->GetID() ) == QString( UCEntry ) ); -// Selectable -// if ( UCObject->FindAttribute( anAttr, "AttributeSelectable" ) ) { -// aSelectable = SALOMEDS::AttributeSelectable::_narrow( anAttr ); -// UCSubItem->setSelectable( aSelectable->IsSelectable() ); -// } -// Expandable -// if ( UCObject->FindAttribute( anAttr, "AttributeExpandable" ) ) { -// anExpandable = SALOMEDS::AttributeExpandable::_narrow( anAttr ); -// UCSubItem->setExpandable( anExpandable->IsExpandable() ); -// } -// TextColor - if ( UCObject->FindAttribute(anAttr, "AttributeTextColor" ) ) { - aTextColor = SALOMEDS::AttributeTextColor::_narrow( anAttr ); - QColor aColor( (int)(aTextColor->TextColor().R), - (int)(aTextColor->TextColor().G), - (int)(aTextColor->TextColor().B) ); - UCSubItem->setTextColor( aColor ); - } - // TextHighlightColor - if ( UCObject->FindAttribute( anAttr, "AttributeTextHighlightColor" ) ) { - aTextHighlightColor = SALOMEDS::AttributeTextHighlightColor::_narrow( anAttr ); - QColor aColor( (int)(aTextHighlightColor->TextHighlightColor().R), - (int)(aTextHighlightColor->TextHighlightColor().G), - (int)(aTextHighlightColor->TextHighlightColor().B) ); - UCSubItem->setTextHighlightColor( aColor ); - } - // Pixmap - if ( UCObject->FindAttribute( anAttr, "AttributePixMap" ) ) { - aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr); - if ( aPixmap->HasPixMap() ) { - SALOMEDS::SComponent_var father = UCObject->GetFatherComponent(); - if ( father->FindAttribute( anAttr, "AttributeName" ) ) { - SALOMEDS::AttributeName_var aFatherName; - aFatherName = SALOMEDS::AttributeName::_narrow( anAttr ); - QAD_ResourceMgr* resMgr = QAD_Desktop::getResourceManager(); - if ( resMgr ) { - QString msg; - if( resMgr->loadResources( QAD_Application::getDesktop()->getComponentName(QString( aFatherName->Value() )), msg ) ) { - QPixmap icon ( resMgr->loadPixmap( QAD_Application::getDesktop()->getComponentName(QString( aFatherName->Value() )), - tr( aPixmap->GetPixMap() ) /*tr( "ICON_OBJBROWSER_" + theComponent )*/ ) ); - UCSubItem->setPixmap( 0, icon ); - } - } - } - } - } - } - } - if ( UCSubItem ) { - // updating children ... - QMap ucList; - SALOMEDS::UseCaseIterator_var UCIter = UCBuilder->GetUseCaseIterator( UCObject ); - if ( !UCIter->_is_nil() ) { - for ( ; UCIter->More(); UCIter->Next() ) { - SALOMEDS::SObject_var UCSubObject = UCIter->Value(); - aString = UCSubObject->GetID(); - QString UCSubEntry = aString.in(); - ucList[ UCSubEntry ] = UCSubObject; - } - } - // ... 1) delete removed items - QAD_ObjectBrowserItem* childItem = ( QAD_ObjectBrowserItem* )UCSubItem->firstChild(); - while ( childItem ) { - QAD_ObjectBrowserItem* prevItem = childItem; - childItem = ( QAD_ObjectBrowserItem* )childItem->nextSibling(); - if ( !ucList.contains( prevItem->getEntry() ) ) { - // myUseCaseMap[ prevItem->getEntry() ].removeRef( prevItem ); - // if ( myUseCaseMap[ prevItem->getEntry() ].isEmpty() ) - // myUseCaseMap.remove( prevItem->getEntry() ); - removeFromMap( myUseCaseMap, prevItem ); - delete prevItem; - } - } - // ... 2) create/update existing - QMap::Iterator it; - for ( it = ucList.begin(); it != ucList.end(); ++it ) { - UpdateUCItem( it.data(), UCSubItem ); - } - } -} - -/*! - Unhighlights all items -*/ -void QAD_ObjectBrowser::unHighlightAll() -{ - myListView->clearSelection(); - myUseCaseView->clearSelection(); -} - -/*! - Highlights items which refer to object -*/ -void QAD_ObjectBrowser::highlight( const Handle(SALOME_InteractiveObject)& IObject, bool highlight ) -{ - QList List; - if (getItems(IObject, List)) { - for (int i = 0; i < List.count(); i++) { - List.at(i)->setSelected( highlight ); - List.at(i)->repaint(); - } - } -} - -/*! - Gets items from Object Browser which refer to object -*/ -bool QAD_ObjectBrowser::getItems( const Handle(SALOME_InteractiveObject)& IObject, - QList& List) -{ - List.clear(); - if ( myListViewMap.contains( IObject->getEntry() ) ) { - ItemList ilist = myListViewMap[ IObject->getEntry() ]; - for ( int i = 0; i < ilist.count(); i++ ) - List.append( ilist.at(i) ); - } - if ( myUseCaseMap.contains( IObject->getEntry() ) ) { - ItemList ilist = myUseCaseMap[ IObject->getEntry() ]; - for ( int i = 0; i < ilist.count(); i++ ) - List.append( ilist.at(i) ); - } - return (List.count() > 0); -} - -/*! - Gets items from Object Browser which refer to object -*/ -bool QAD_ObjectBrowser::getItems( SALOMEDS::SObject_ptr SO, - QList& List) -{ - List.clear(); - if ( myListViewMap.contains( SO->GetID() ) ) { - ItemList ilist = myListViewMap[ SO->GetID() ]; - for ( int i = 0; i < ilist.count(); i++ ) - List.append( ilist.at(i) ); - } - if ( myUseCaseMap.contains( SO->GetID() ) ) { - ItemList ilist = myUseCaseMap[ SO->GetID() ]; - for ( int i = 0; i < ilist.count(); i++ ) - List.append( ilist.at(i) ); - } - return (List.count() > 0); -} - -/*! - Gets first item from Object Browser which refers to object (not reference) -*/ -QAD_ObjectBrowserItem* QAD_ObjectBrowser::getItem( const Handle(SALOME_InteractiveObject)& IObject ) -{ - if ( myListViewMap.contains( IObject->getEntry() ) ) { - ItemList ilist = myListViewMap[ IObject->getEntry() ]; - for ( int i = 0; i < ilist.count(); i++ ) { - QString aRef = ilist.at(i)->getReference(); - if ( ilist.at(i)->getReference().isEmpty() ) - return ilist.at(i); - } - } - return 0; -} - -/*! - Finds item from Object Browser corresponding to Object, returns 0 if fails -*/ -QAD_ObjectBrowserItem* QAD_ObjectBrowser::getItem( SALOMEDS::SObject_ptr SO ) -{ - if ( myListViewMap.contains( SO->GetID() ) ) { - ItemList ilist = myListViewMap[ SO->GetID() ]; - for ( int i = 0; i < ilist.count(); i++ ) { - QString aRef = ilist.at(i)->getReference(); - if ( ilist.at(i)->getReference().isEmpty() ) - return ilist.at(i); - } - } - return 0; -} - - -/*! - Gets first item from UseCase Browser which refers to object (not reference) -*/ -QAD_ObjectBrowserItem* QAD_ObjectBrowser::getUCItem( const Handle(SALOME_InteractiveObject)& IObject ) -{ - if ( myUseCaseMap.contains( IObject->getEntry() ) ) { - ItemList ilist = myUseCaseMap[ IObject->getEntry() ]; - for ( int i = 0; i < ilist.count(); i++ ) { - QString aRef = ilist.at(i)->getReference(); - if ( ilist.at(i)->getReference().isEmpty() ) - return ilist.at(i); - } - } - return 0; -} - -/*! - Finds item from UseCase Browser corresponding to Object, returns 0 if fails -*/ -QAD_ObjectBrowserItem* QAD_ObjectBrowser::getUCItem( SALOMEDS::SObject_ptr SO ) -{ - if ( myUseCaseMap.contains( SO->GetID() ) ) { - ItemList ilist = myUseCaseMap[ SO->GetID() ]; - for ( int i = 0; i < ilist.count(); i++ ) { - QString aRef = ilist.at(i)->getReference(); - if ( ilist.at(i)->getReference().isEmpty() ) - return ilist.at(i); - } - } - return 0; -} -/*! - Finds item corresponding to interactive object, returns 0 if fails -*/ -void QAD_ObjectBrowser::rename( const Handle(SALOME_InteractiveObject)& IObject, QString newName ) -{ - QAD_ObjectBrowserItem* item = getItem( IObject ); - if ( item ) { - item->setName( newName ); - item->repaint(); - } - item = getUCItem( IObject ); - if ( item ) { - item->setName( newName ); - item->repaint(); - } -} - -/*! - Creates and show specific Popup to this according to current selection (Object Browser) -*/ -void QAD_ObjectBrowser::showPopupMenu(QListViewItem* theItem) -{ - QAD_Study* myActiveStudy = QAD_Application::getDesktop()->getActiveStudy(); - SALOME_Selection* Sel = SALOME_Selection::Selection( myActiveStudy->getSelection() ); - QString ActiveComp = QAD_Application::getDesktop()->getActiveComponent(); - - if (theItem != NULL && ( Sel->IObjectCount()>0 || ActiveComp.isEmpty() ) ) { - - // PAL5618: if IO is presented by several items, assure that the selected IO - // is presented exactly by theItem: difference is in reference - QAD_ObjectBrowserItem *item = (QAD_ObjectBrowserItem *) theItem; - QString theEntry = item->getEntry(); - const SALOME_ListIO& SelIO = Sel->StoredIObjects(); - for ( SALOME_ListIteratorOfListIO SelIt( SelIO ); SelIt.More(); SelIt.Next() ) { - const Handle(SALOME_InteractiveObject)& IO = SelIt.Value(); - if ( strcmp ( IO->getEntry(), theEntry ) == 0 ) - IO->setReference( item->getReference() ); - } - - createPopup(); - - if ( myPopup ) { - QAD_Tools::checkPopup( myPopup ); - if ( myPopup->count()>0 ) { - myPopup->exec( QCursor::pos() ); - } - destroyPopup(); - } - } -} - -/*! - Creates and show specific Popup to this according to current selection (UseCase Browser) -*/ -void QAD_ObjectBrowser::showUseCasePopupMenu(QListViewItem* theItem) -{ - createPopup(); - if ( myPopup ) { - QAD_Tools::checkPopup( myPopup ); - if ( myPopup->count() > 0 ) { - myPopup->exec( QCursor::pos() ); - } - destroyPopup(); - } -} - -/*! - Called when current selection was changed (Object Browser) -*/ -void QAD_ObjectBrowser::onSelectedItem() -{ - if (currentPage()==myListView) - myUseCaseView->clearSelection(); - - QListView* whoIs; - if ( sender()->inherits("QListView") ) - whoIs = (QListView*)sender(); - else - whoIs = myListView; - QAD_Study* myActiveStudy = QAD_Application::getDesktop()->getActiveStudy(); - SALOMEDS::Study_var aStudy = myActiveStudy->getStudyDocument(); - SALOME_Selection* Sel = SALOME_Selection::Selection( myActiveStudy->getSelection() ); - QAD_Application* myApp = QAD_Application::getDesktop()->getActiveApp(); - - SALOME_ListIO DeltaPos; - DeltaPos.Clear(); - SALOME_ListIO DeltaNeg; - DeltaNeg.Clear(); - - typedef QMap SelMap; - - SelMap currMap, allMap; - for( SALOME_ListIteratorOfListIO It( Sel->StoredIObjects() ); It.More(); It.Next() ) - currMap.insert( It.Value()->getEntry(), It.Value().operator->() ); - - QListViewItemIterator it( whoIs ); - for ( ; it.current(); ++it ) { - QAD_ObjectBrowserItem* item = (QAD_ObjectBrowserItem*)it.current(); - QString theEntry = item->getEntry(); - QString theName = item->getName(); - QString theRef = item->getReference(); - - if ( !theEntry.isEmpty() ) { - if ( item->isSelected() ) { - allMap.insert( theEntry, 0 ); - - if ( !currMap.contains( theEntry ) ) { - Handle(SALOME_InteractiveObject) newIO; - SALOMEDS::SObject_var obj = aStudy->FindObjectID( theEntry.latin1() ); - if ( !obj->_is_nil() ) { - SALOMEDS::SComponent_var comp = obj->GetFatherComponent(); - if ( !comp->_is_nil() ) { - CORBA::String_var datatype(comp->ComponentDataType()); - newIO = new SALOME_InteractiveObject( theEntry.latin1(), - datatype.in(), - theName.latin1() ); - newIO->setReference( theRef.latin1() ); - } - } else { - newIO = new SALOME_InteractiveObject( theEntry.latin1(), - "", - theName.latin1() ); - newIO->setReference( theRef.latin1() ); - } - if (!newIO.IsNull()) { - DeltaPos.Append( newIO ); - } - } - } else if ( currMap.contains( theEntry ) ) - DeltaNeg.Append( currMap[theEntry] ); - } - } - - SALOME_ListIteratorOfListIO ItNeg( DeltaNeg ); - for(;ItNeg.More();ItNeg.Next()) { - Sel->RemoveIObject( ItNeg.Value() ); - } - - SALOME_ListIteratorOfListIO ItPos( DeltaPos ); - for(;ItPos.More();ItPos.Next()) { - Sel->AddIObject( ItPos.Value() ); - } - - for ( SelMap::iterator it = currMap.begin(); it != currMap.end(); ++it ) - if ( !allMap.contains( it.key() ) ) - Sel->RemoveIObject( it.data() ); - - if ( myApp ) - myApp->updateActions(); -} - -/*! - Called when selection is changed (UseCase Browser) -*/ -void QAD_ObjectBrowser::onUseCaseSelectedItem() -{ -} - -/*! - Called when item is expanded -*/ -void QAD_ObjectBrowser::onExpanded (QListViewItem* item) -{ - QAD_ObjectBrowserItem* aItem = (QAD_ObjectBrowserItem*)item; - if (!myStudy->_is_nil() && aItem) - { - SALOMEDS::SObject_var Object = myStudy->FindObjectID(aItem->getEntry()); - if (!Object->_is_nil()) - { - SALOMEDS::StudyBuilder_var StudyBuilder = myStudy->NewBuilder(); - SALOMEDS::AttributeOpened_var anAttr = SALOMEDS::AttributeOpened::_narrow( - StudyBuilder->FindOrCreateAttribute(Object, "AttributeOpened") ); - anAttr->SetOpened(true); - } - } -} - -/*! - Called when item is collapsed -*/ -void QAD_ObjectBrowser::onCollapsed(QListViewItem* item) -{ - QAD_ObjectBrowserItem* aItem = (QAD_ObjectBrowserItem*)item; - if (!myStudy->_is_nil() && aItem) - { - SALOMEDS::SObject_var Object = myStudy->FindObjectID(aItem->getEntry()); - if (!Object->_is_nil()) - { - SALOMEDS::StudyBuilder_var StudyBuilder = myStudy->NewBuilder(); - SALOMEDS::AttributeOpened_var anAttr = SALOMEDS::AttributeOpened::_narrow( - StudyBuilder->FindOrCreateAttribute(Object, "AttributeOpened") ); - anAttr->SetOpened(false); - } - } -} - -/*! - Find and returns value for the object - Warning: object can have several values attributes, search is done in the following order: - [integer], [real], [table of integer], [table of real], [comment] -*/ -QString QAD_ObjectBrowser::getValueFromObject( SALOMEDS::SObject_ptr SO ) -{ - if ( SO->_is_nil() ) - return QString::null; - SALOMEDS::SComponent_var isComponent = SALOMEDS::SComponent::_narrow( SO ); - if ( !isComponent->_is_nil() ) - return QString::null; // no values to show for components - - SALOMEDS::GenericAttribute_var anAttr; - SALOMEDS::AttributeInteger_var anInt; - SALOMEDS::AttributeReal_var aReal; - SALOMEDS::AttributeTableOfInteger_var aTableInt; - SALOMEDS::AttributeTableOfReal_var aTableReal; - SALOMEDS::AttributeComment_var aComment; - CORBA::String_var aString; - - // Integer - if ( SO->FindAttribute( anAttr, "AttributeInteger" ) ) { - anInt = SALOMEDS::AttributeInteger::_narrow( anAttr ); - QString val = QString::number( anInt->Value() ); - return val; - } - // Real - if ( SO->FindAttribute( anAttr, "AttributeReal" ) ) { - aReal = SALOMEDS::AttributeReal::_narrow( anAttr ); - QString val = QString::number( aReal->Value() ); - return val; - } - // Table of integer - if ( SO->FindAttribute( anAttr, "AttributeTableOfInteger" ) ) { - aTableInt = SALOMEDS::AttributeTableOfInteger::_narrow( anAttr ); - aString = aTableInt->GetTitle(); - QString tlt( aString.in() ); - if ( !tlt.isEmpty() ) - tlt += " "; - int nbRows = aTableInt->GetNbRows() ; - int nbCols = aTableInt->GetNbColumns(); - QString val = tlt + QString( "[" ) + QString::number( nbRows ) + QString( "," ) + QString::number( nbCols ) + QString( "]" ); - return val; - } - // Table of real - if ( SO->FindAttribute( anAttr, "AttributeTableOfReal" ) ) { - aTableReal = SALOMEDS::AttributeTableOfReal::_narrow( anAttr ); - aString = aTableReal->GetTitle(); - QString tlt( aString.in() ); - if ( !tlt.isEmpty() ) - tlt += " "; - int nbRows = aTableReal->GetNbRows() ; - int nbCols = aTableReal->GetNbColumns(); - QString val = tlt + QString( "[" ) + QString::number( nbRows ) + QString( "," ) + QString::number( nbCols ) + QString( "]" ); - return val; - } - // Comment - if ( SO->FindAttribute(anAttr, "AttributeComment") ) { - aComment = SALOMEDS::AttributeComment::_narrow( anAttr ); - aString = aComment->Value(); - QString val = QString( aString.in() ); - return val; - } - return QString::null; -} - -/*! - Shows/hides IAPP sub-tree in ObjectBrowser - Current implementation just udpates browser -*/ -void QAD_ObjectBrowser::setShowIAPP( bool show ) -{ - Update(); -} - -/*! - Shows/hides info columns: Entry, IOR, Reference -*/ -void QAD_ObjectBrowser::setShowInfoColumns( bool show ) -{ - bool shown = myListView->header()->isResizeEnabled( 2 ); - - if ( show != shown ) { - if ( show ) { - myListView->header()->setResizeEnabled( true, 2 ); - myListView->header()->setResizeEnabled( true, 3 ); - myListView->header()->setResizeEnabled( true, 4 ); - myListView->setColumnWidthMode( 2, QListView::Maximum ); - myListView->setColumnWidthMode( 3, QListView::Maximum ); - myListView->setColumnWidthMode( 4, QListView::Maximum ); - if ( myListView->columnWidth( 2 ) <= 0 ) - myListView->header()->resizeSection( 2, 50 ); - if ( myListView->columnWidth( 3 ) <= 0 ) - myListView->header()->resizeSection( 3, 50 ); - if ( myListView->columnWidth( 4 ) <= 0 ) - myListView->header()->resizeSection( 4, 50 ); - } - else { - myListView->setColumnWidthMode( 2, QListView::Manual ); - myListView->setColumnWidthMode( 3, QListView::Manual ); - myListView->setColumnWidthMode( 4, QListView::Manual ); - myListView->header()->resizeSection( 2, 0 ); - myListView->header()->resizeSection( 3, 0 ); - myListView->header()->resizeSection( 4, 0 ); - myListView->header()->setResizeEnabled( false, 2 ); - myListView->header()->setResizeEnabled( false, 3 ); - myListView->header()->setResizeEnabled( false, 4 ); - } - } -} - -/*! - Shows/hides Value column -*/ -void QAD_ObjectBrowser::setShowValueColumn( bool show ) -{ - bool shown = myListView->header()->isResizeEnabled( 1 ); - - if ( show != shown ) { - if ( show ) { - myListView->header()->setResizeEnabled( true, 1 ); - myListView->setColumnWidthMode( 1, QListView::Maximum ); - if ( myListView->columnWidth( 1 ) <= 0 ) - myListView->header()->resizeSection( 1, 50 ); - } - else { - myListView->setColumnWidthMode( 1, QListView::Manual ); - myListView->header()->resizeSection( 1, 0 ); - myListView->header()->setResizeEnabled( false, 1 ); - } - } -} - -/*! - Sets CHRONO sorting enabled/disabled - Note: when CHRONO sorting is enabled items are sorted by Entry value and column headers - become unclickable to prohibit another sort type; - when CHRONO sorting is disabled column headers become clickable - this allows - to sort data by any column -*/ -void QAD_ObjectBrowser::setEnableChronoSort( bool enable ) -{ - if ( enable ) { - // if CHRONO sorting is enabled set clickable header disabled ... - myListView->header()->setClickEnabled( false ); - // ... and then sort by column 2 - OCAF doc entry - myListView->setSorting( 2, TRUE ) ; - } - else { - // if CHRONO sorting is enabled set clickable header enabled ... - myListView->header()->setClickEnabled( true ); - // and clear sorting by column 2 - myListView->setSorting( 10, TRUE ); - } -// myListView->sort( ) ; -} - -/*! - Slot, called to edit value -*/ -void QAD_ObjectBrowser::onEditAttribute() -{ - QAD_Study* myActiveStudy = QAD_Application::getDesktop()->getActiveStudy(); - SALOME_Selection* Sel = SALOME_Selection::Selection( myActiveStudy->getSelection() ); - QString ActiveComp = QAD_Application::getDesktop()->getActiveComponent(); - if ( myStudy->_is_nil() ) - return; - - if ( Sel->IObjectCount() == 1 ) { - SALOMEDS::SObject_var SO = myStudy->FindObjectID( Sel->firstIObject()->getEntry() ); - SALOMEDS::SComponent_var isComponent = SALOMEDS::SComponent::_narrow( SO ); - if ( !SO->_is_nil() && isComponent->_is_nil() ) { // no values to show for components - SALOMEDS::GenericAttribute_var anAttr; - SALOMEDS::AttributeInteger_var anInt; - SALOMEDS::AttributeReal_var aReal; - SALOMEDS::AttributeTableOfInteger_var aTableInt; - SALOMEDS::AttributeTableOfReal_var aTableReal; - SALOMEDS::AttributeComment_var aComment; - bool bOk = false; - - // if Integer - if ( SO->FindAttribute( anAttr, "AttributeInteger" ) ) { - anInt = SALOMEDS::AttributeInteger::_narrow( anAttr ); - int val = SALOMEGUI_SetValueDlg::getInteger( tr( "SET_VALUE_INT_TLT" ), - tr( "SET_VALUE_INT_LBL" ), - anInt->Value(), - &bOk, - QAD_Application::getDesktop() ); - if ( bOk ) { - anInt->SetValue( val ); - } - } - // if Real - else - if ( SO->FindAttribute( anAttr, "AttributeReal" ) ) { - aReal = SALOMEDS::AttributeReal::_narrow( anAttr ); - double val = SALOMEGUI_SetValueDlg::getDouble( tr( "SET_VALUE_REAL_TLT" ), - tr( "SET_VALUE_REAL_LBL" ), - aReal->Value(), - &bOk, - QAD_Application::getDesktop() ); - if ( bOk ) { - aReal->SetValue( val ); - } - } - // if Table of integer - else - if ( SO->FindAttribute( anAttr, "AttributeTableOfInteger" ) ) { - SALOMEGUI_TableDlg* dlg = new SALOMEGUI_TableDlg( QAD_Application::getDesktop(), - SO, - true, - SALOMEGUI_TableDlg::ttInt ); - bOk = ( dlg->exec() == QDialog::Accepted ); - } - // if Table of real - else - if ( SO->FindAttribute( anAttr, "AttributeTableOfReal" ) ) { - SALOMEGUI_TableDlg* dlg = new SALOMEGUI_TableDlg( QAD_Application::getDesktop(), - SO, - true, - SALOMEGUI_TableDlg::ttReal ); - bOk = ( dlg->exec() == QDialog::Accepted ); - } - // if Comment - else - if ( SO->FindAttribute(anAttr, "AttributeComment") ) { - aComment = SALOMEDS::AttributeComment::_narrow( anAttr ); - QString val = SALOMEGUI_SetValueDlg::getString( tr( "SET_VALUE_COMMENT_TLT" ), - tr( "SET_VALUE_COMMENT_LBL" ), - aComment->Value(), - &bOk, - QAD_Application::getDesktop() ); - if ( bOk ) { - aComment->SetValue( val ); - } - } - if ( bOk ) { - Update(); - } - } - } -} - -/*! - Returns true if object has editable attrubute : - integer, real, table or comment -*/ -bool QAD_ObjectBrowser::hasEditableAttribute( const Handle(SALOME_InteractiveObject)& object ) -{ - if ( !myStudy->_is_nil() ) { - SALOMEDS::SObject_var obj = myStudy->FindObjectID( object->getEntry() ); - SALOMEDS::SComponent_var comp = myStudy->FindComponentID( object->getEntry() ); - if ( !comp->_is_nil() || obj->_is_nil() ) - return false; - QString val = getValueFromObject( obj ); - return ( !val.isNull() ); - } - return false; -} - -/*! - Returns true if object has table attrubute ( integer and/or real ) -*/ -bool QAD_ObjectBrowser::hasTable( const Handle(SALOME_InteractiveObject)& object ) -{ - SALOMEDS::GenericAttribute_var anAttr; - if ( !myStudy->_is_nil() ) { - SALOMEDS::SObject_var obj = myStudy->FindObjectID( object->getEntry() ); - SALOMEDS::SComponent_var comp = myStudy->FindComponentID( object->getEntry() ); - if ( !comp->_is_nil() || obj->_is_nil() ) - return false; - if ( obj->FindAttribute( anAttr, "AttributeTableOfInteger" ) ) - return true; - if ( obj->FindAttribute( anAttr, "AttributeTableOfReal" ) ) - return true; - } - return false; -} - -/*! - Slot, called when one of the UseCase Browser menu command is called -*/ -void QAD_ObjectBrowser::onUseCasePopupMenu( int action ) -{ - if ( myStudy->_is_nil() ) - return; - - // Check if the study is locked - QAD_Desktop* Desktop = (QAD_Desktop*) QAD_Application::getDesktop(); - QAD_Study* myActiveStudy = Desktop->getActiveStudy(); - SALOMEDS::Study_var aStudy = myActiveStudy->getStudyDocument(); - if ( aStudy->GetProperties()->IsLocked() ) - { - QAD_MessageBox::warn1 ( (QWidget*)QAD_Application::getDesktop(), - QObject::tr("WRN_WARNING"), - QObject::tr("WRN_STUDY_LOCKED"), - QObject::tr("BUT_OK") ); - return; - } - - SALOME_Selection* Sel = SALOME_Selection::Selection( myActiveStudy->getSelection() ); - SALOMEDS::UseCaseBuilder_var UCBuilder = myStudy->GetUseCaseBuilder(); - SALOMEDS::SObject_var Current = UCBuilder->GetCurrentObject(); - CORBA::String_var aString; - - QList ucSelected; - ucSelected.setAutoDelete( false ); - getSelectedParents( myUseCaseView, ucSelected ); - - if ( action == UC_NEW_EMPTY_ID ) { - if ( ucSelected.count() == 1 ) { - if ( isRootItem( ucSelected.at(0) ) ) - UCBuilder->SetRootCurrent(); - else - UCBuilder->SetCurrentObject( myStudy->FindObjectID( (( QAD_ObjectBrowserItem* )( ucSelected.at(0) ))->getEntry() ) ); - UCBuilder->AddUseCase( tr( "NEW_OBJECT" ) ); - myActiveStudy->updateUseCaseBrowser(); - } - } - else - if ( action == UC_SET_CURRENT_ID ) { - if ( ucSelected.count() > 0 ) { - if ( isRootItem( ucSelected.at(0) ) ) - UCBuilder->SetRootCurrent(); - else - UCBuilder->SetCurrentObject( myStudy->FindObjectID( (( QAD_ObjectBrowserItem* )( ucSelected.at(0) ))->getEntry() ) ); - } - myActiveStudy->updateUseCaseBrowser( ); - } - else - if ( action == UC_RENAME_ID ) { - if ( ucSelected.count() == 1 ) { - QAD_ObjectBrowserItem* useCaseItem = ( QAD_ObjectBrowserItem* )( ucSelected.at( 0 ) ); - aString = UCBuilder->GetName(); - if ( isRootItem( useCaseItem ) ) { - QString name = SALOMEGUI_NameDlg::getName( QAD_Application::getDesktop(), aString.in() ); - if ( !name.isEmpty() ) { - UCBuilder->SetName( name.latin1() ); - myActiveStudy->updateUseCaseBrowser( ); - } - } - else/* if ( UCBuilder->IsUseCase( myStudy->FindObjectID( (( QAD_ObjectBrowserItem* )( ucSelected.at(0) ))->getEntry() ) ) )*/ { - QString name = SALOMEGUI_NameDlg::getName( QAD_Application::getDesktop(), aString.in() ); - if ( !name.isEmpty() ) { - myActiveStudy->renameIObject( Sel->firstIObject(), name ); - } - } - } - } - else - if ( action == UC_APPEND_ID ) { - if ( Sel->IObjectCount() > 0 ) { - SALOME_ListIO SelIO; SelIO = Sel->StoredIObjects(); - SALOME_ListIteratorOfListIO SelIt( SelIO ); - for( ; SelIt.More(); SelIt.Next() ) { - SALOMEDS::SObject_var selSO = myStudy->FindObjectID( SelIt.Value()->getEntry() ); - if ( !selSO->_is_nil() && strcmp( SelIt.Value()->getEntry(), ( "0:2" ) ) != 0 ) { - UCBuilder->Remove( selSO ); // first remove object for sure ... - UCBuilder->Append( selSO ); // ... and now re-append it - } - } - myActiveStudy->updateUseCaseBrowser( true ); - } - } - else - if ( action == UC_REMOVE_ID ) { - ucSelected.clear(); - getSelectedParents( myUseCaseView, ucSelected, true ); - for ( int i = 0; i < ucSelected.count(); i++ ) { - QAD_ObjectBrowserItem* item = ( QAD_ObjectBrowserItem* )ucSelected.at( i ); - if ( !isRootItem( item ) ) { - // SObject selected - SALOMEDS::SObject_var SO = myStudy->FindObjectID( item->getEntry() ); - if ( !SO->_is_nil() ) { - UCBuilder->Remove( SO ); - } - } - else { - } - } - Sel->ClearIObjects(); - myActiveStudy->updateUseCaseBrowser( true ); - } - else - if ( action == UC_CLEAR_ID ) { - if ( myUseCaseView->childCount() > 0 && myUseCaseView->firstChild()->childCount() > 0) { - QAD_ObjectBrowserItem* child = ( QAD_ObjectBrowserItem* )myUseCaseView->firstChild()->firstChild(); - while ( child ) { - UCBuilder->Remove( myStudy->FindObjectID( child->getEntry().latin1() ) ); - child = ( QAD_ObjectBrowserItem* )( child->nextSibling() ); - } - Sel->ClearIObjects(); - myActiveStudy->updateUseCaseBrowser(); - } - } -} -/*! - Use Case browser buttons slot -*/ -void QAD_ObjectBrowser::onUseCaseBtn() -{ - // Check if the study is locked - QAD_Desktop* Desktop = (QAD_Desktop*) QAD_Application::getDesktop(); - QAD_Study* myActiveStudy = Desktop->getActiveStudy(); - SALOMEDS::Study_var aStudy = myActiveStudy->getStudyDocument(); - if ( aStudy->GetProperties()->IsLocked() ) - { - QAD_MessageBox::warn1 ( (QWidget*)QAD_Application::getDesktop(), - QObject::tr("WRN_WARNING"), - QObject::tr("WRN_STUDY_LOCKED"), - QObject::tr("BUT_OK") ); - return; - } - - if ( sender() == myNewBtn ) { - SALOMEDS::UseCaseBuilder_var UCBuilder = myStudy->GetUseCaseBuilder(); - UCBuilder->AddUseCase( tr( "NEW_OBJECT" ) ); - myActiveStudy->updateUseCaseBrowser(); - } - if ( sender() == myAddBtn ) - onUseCasePopupMenu( UC_APPEND_ID ); - if ( sender() == myDelBtn ) - onUseCasePopupMenu( UC_REMOVE_ID ); - if ( sender() == myClearBtn ) - onUseCasePopupMenu( UC_CLEAR_ID ); - if ( sender() == myCurrentBtn ) - onUseCasePopupMenu( UC_SET_CURRENT_ID ); -} - -/* - Show/remove UseCase Browser -*/ - -void QAD_ObjectBrowser::showUseCaseBrowser ( bool show ) -{ - bool shown = (this->count() > 1); - - if (show != shown) - { - if (show) - { - this->addTab( myVBox, tr( "TLT_USECASE_BROWSER" ) ); - UpdateUseCaseBrowser(); - unHighlightAll(); - } - else - this->removePage(myVBox); - } -} - -/*! - Switch between auto resizing of columns and manual mode -*/ -void QAD_ObjectBrowser::autoSizeColumns( bool autosize ) -{ - if (autosize) - { - for (int i = 0; i < myListView->header()->count(); i++ ) - if (myListView->header()->isResizeEnabled(i)) - myListView->setColumnWidthMode(i, QListView::Maximum); - - } - else - { - for (int i = 0; i < myListView->header()->count(); i++ ) - myListView->setColumnWidthMode(i, QListView::Manual); - } -} diff --git a/src/SALOMEGUI/QAD_ObjectBrowser.h b/src/SALOMEGUI/QAD_ObjectBrowser.h deleted file mode 100644 index fec96c965..000000000 --- a/src/SALOMEGUI/QAD_ObjectBrowser.h +++ /dev/null @@ -1,160 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_ObjectBrowser.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef QAD_OBJECTBROWSER_H -#define QAD_OBJECTBROWSER_H - -#include "QAD.h" -#include "QAD_Popup.h" - -#include "SALOME_InteractiveObject.hxx" - -// QT Includes -#include -#include -#include -#include -#include -#include - -// IDL headers -#include -#include CORBA_SERVER_HEADER(SALOMEDS) -#include CORBA_SERVER_HEADER(SALOMEDS_Attributes) - -class QListViewItem; -class QListView; -class QAD_ObjectBrowserItem; -typedef QList ItemList; -typedef QMap ItemMap; - -class QAD_EXPORT QAD_ObjectBrowser : public QTabWidget, public QAD_PopupClientServer -{ - Q_OBJECT - -public: - QAD_ObjectBrowser( SALOMEDS::Study_var study, QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - virtual ~QAD_ObjectBrowser(); - - bool eventFilter( QObject* o, QEvent* e ); - - void setupListView(); - /* popup management */ - void onCreatePopup(); - - QListView* getListView() const; - QListView* getUseCaseView() const; - - void Update(); - void UpdateUseCaseBrowser(); - - void unHighlightAll(); - void highlight( const Handle(SALOME_InteractiveObject)& IObject, bool highlight ); - bool getItems( const Handle(SALOME_InteractiveObject)& IObject, - QList& List); - bool getItems( SALOMEDS::SObject_ptr SO, - QList& List); - QAD_ObjectBrowserItem* getItem( const Handle(SALOME_InteractiveObject)& IObject ); - QAD_ObjectBrowserItem* getItem( SALOMEDS::SObject_ptr SO ); - QAD_ObjectBrowserItem* getUCItem( const Handle(SALOME_InteractiveObject)& IObject ); - QAD_ObjectBrowserItem* getUCItem( SALOMEDS::SObject_ptr SO ); - void rename( const Handle(SALOME_InteractiveObject)& IObject, QString newName ); - - void setShowIAPP( bool show ); - void setShowInfoColumns( bool show ); - void setShowValueColumn( bool show ); - void setEnableChronoSort( bool enable ); - void showUseCaseBrowser ( bool show ); - void autoSizeColumns ( bool autosize ); - -protected: - void Update( SALOMEDS::SObject_ptr SO, - QAD_ObjectBrowserItem* theParentItem ); - void UpdateUCItem( SALOMEDS::SObject_var UCObject, - QAD_ObjectBrowserItem* UCItem ); - QAD_ObjectBrowserItem* AddItem( QListView* theView, - const QString& theName, - const QString& theEntry, - const QString& theIOR, - int theType, - const QString& theValue, - QAD_ObjectBrowserItem* theAfter = 0 ); - QAD_ObjectBrowserItem* AddItem( QAD_ObjectBrowserItem* theParentItem, - const QString& theName, - const QString& theEntry, - const QString& theIOR, - int theType, - const QString& theRef, - const QString& theValue, - QAD_ObjectBrowserItem* theAfter = 0 ); - QString getValueFromObject( SALOMEDS::SObject_ptr SO ); - bool hasEditableAttribute( const Handle(SALOME_InteractiveObject)& object ); - bool hasTable( const Handle(SALOME_InteractiveObject)& object ); - -protected slots: - void onSelectedItem(); - void onUseCaseSelectedItem(); - void onEditAttribute(); - - void showPopupMenu(QListViewItem*); - void showUseCasePopupMenu(QListViewItem*); - - void onExpandAll(); - void onExpanded (QListViewItem*); - void onCollapsed(QListViewItem*); - void onUseCasePopupMenu( int ); - - void onUseCaseBtn(); - -private: - ItemMap myListViewMap; - ItemMap myUseCaseMap; - QListView* myListView; - QWidget* myVBox; - QListView* myUseCaseView; - QPopupMenu* myPopupMenu; - SALOMEDS::Study_ptr myStudy; - QToolButton* myNewBtn; - QToolButton* myAddBtn; - QToolButton* myDelBtn; - QToolButton* myCurrentBtn; - QToolButton* myRenameBtn; - QToolButton* myClearBtn; -}; - - -class Btn : public QToolButton -{ - Q_OBJECT -public: - Btn ( QWidget * parent, const char * name = 0 ); -public slots: - void onClicked(); -}; - -#endif diff --git a/src/SALOMEGUI/QAD_ObjectBrowserItem.cxx b/src/SALOMEGUI/QAD_ObjectBrowserItem.cxx deleted file mode 100644 index 696fb78f4..000000000 --- a/src/SALOMEGUI/QAD_ObjectBrowserItem.cxx +++ /dev/null @@ -1,279 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_ObjectBrowserItem.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "QAD_ObjectBrowserItem.h" - -#include -#include -#include -#include -#include -using namespace std; - -/*! - Constructors -*/ -QAD_ObjectBrowserItem::QAD_ObjectBrowserItem( QListView *theParent ) - : QListViewItem(theParent) -{ - myType = BlackItem; - myCurrent = false; -} -QAD_ObjectBrowserItem::QAD_ObjectBrowserItem( QListView* theParent, QAD_ObjectBrowserItem* after ) - : QListViewItem(theParent, after) -{ - myType = BlackItem; - myCurrent = false; -} -QAD_ObjectBrowserItem::QAD_ObjectBrowserItem( QAD_ObjectBrowserItem *theParent ) - : QListViewItem(theParent) -{ - myType = BlackItem; - myCurrent = false; -} -QAD_ObjectBrowserItem::QAD_ObjectBrowserItem( QAD_ObjectBrowserItem *theParent, QAD_ObjectBrowserItem* after ) - : QListViewItem(theParent, after) -{ - myType = BlackItem; - myCurrent = false; -} - -/*! - Destructor -*/ -QAD_ObjectBrowserItem::~QAD_ObjectBrowserItem() -{ -} - -/*! - Sets type -*/ -void QAD_ObjectBrowserItem::setType( int type ) -{ - myType = type; - repaint(); -} - -/*! - Sets text color -*/ -void QAD_ObjectBrowserItem::setTextColor( const QColor& color ) -{ - myTextColor = color; - repaint(); -} - -/*! - Sets text highlight color -*/ -void QAD_ObjectBrowserItem::setTextHighlightColor(const QColor& color) -{ - myTextHighlightColor = color; -} - -/*! - Gets item name -*/ -QString QAD_ObjectBrowserItem::getName() const -{ - return QListViewItem::text( 0 ); -} - -/*! - Sets name -*/ -void QAD_ObjectBrowserItem::setName( const QString& name ) -{ - setText( 0, name ); -} - -/*! - Gets value -*/ -QString QAD_ObjectBrowserItem::getValue() const -{ - return QListViewItem::text( 1 ); -} - -/*! - Sets value -*/ -void QAD_ObjectBrowserItem::setValue( const QString& value ) -{ - setText( 1, value ); -} - -/*! - Gets entry -*/ -QString QAD_ObjectBrowserItem::getEntry() const -{ - return QListViewItem::text( 2 ); -} - -/*! - Sets entry -*/ -void QAD_ObjectBrowserItem::setEntry( const QString& entry ) -{ - setText( 2, entry ); -} - -/*! - Gets IOR -*/ -QString QAD_ObjectBrowserItem::getIOR() const -{ - return QListViewItem::text( 3 ); -} - -/*! - Sets IOR -*/ - void QAD_ObjectBrowserItem::setIOR( const QString& IOR ) -{ - setText( 3, IOR ); -} - -/*! - Gets reference -*/ -QString QAD_ObjectBrowserItem::getReference() const -{ - return QListViewItem::text( 4 ); -} - -/*! - Sets reference -*/ -void QAD_ObjectBrowserItem::setReference( const QString& ref ) -{ - setText( 4, ref ); -} -/*! - Returns true if this item is current (for UseCase browser - it is bold) -*/ -bool QAD_ObjectBrowserItem::isCurrent() const -{ - return myCurrent; -} -/*! - Sets this item to be current (for UseCase browser - it is bold) -*/ -void QAD_ObjectBrowserItem::setCurrent( bool on ) -{ - myCurrent = on; - repaint(); -} - -/*! - Paints cell [ redefined ] -*/ -void QAD_ObjectBrowserItem::paintCell( QPainter* thePainter, - const QColorGroup& theColorGroup, - int theColumn, - int theWidth, - int theAlignment ) -{ - QColorGroup aColorGroup(theColorGroup); - QColor aColor = aColorGroup.text(); - QColor aColorHighlight = aColorGroup.highlight(); - - switch (myType) - { - case 1 : - { - aColorGroup.setColor(QColorGroup::Text, Qt::blue); - aColorGroup.setColor(QColorGroup::Highlight, Qt::blue); - break; - } - case 2 : - { - aColorGroup.setColor(QColorGroup::Text, Qt::red); - aColorGroup.setColor(QColorGroup::Highlight, Qt::red); - break; - } - default : - { - aColorGroup.setColor(QColorGroup::Text, Qt::black); - aColorGroup.setColor(QColorGroup::Highlight, Qt::black); - break; - } - } - - if (myTextColor.isValid()) { - aColorGroup.setColor(QColorGroup::Text, myTextColor); - aColorGroup.setColor(QColorGroup::HighlightedText, myTextColor); - } - if (myTextHighlightColor.isValid()) - aColorGroup.setColor(QColorGroup::Highlight, myTextHighlightColor); - if (myCurrent) { // UseCase's current entry - QFont font = thePainter->font(); - font.setBold(true); - thePainter->setFont(font); - } - - QListViewItem::paintCell(thePainter, - aColorGroup, - theColumn, - theWidth, - theAlignment); - aColorGroup.setColor(QColorGroup::Text, aColor); - aColorGroup.setColor(QColorGroup::Highlight, aColorHighlight); -} - -/*! - Returns item's column text - Overrided to protect access outside -*/ -QString QAD_ObjectBrowserItem::text( int column ) const -{ - return QListViewItem::text( column ); -} - -/*! - Compares two item to sort list view data by column -*/ -int QAD_ObjectBrowserItem::compare( QListViewItem* i, int col, bool ascending ) const -{ - // Additional check is necessary for Entry or Reference entry (2 and 4) columns - if ( ( col == 2 || col == 4 ) && !key( col, ascending ).isEmpty() && !i->key( col, ascending ).isEmpty() ) { - QStringList mylist = QStringList::split( ":", key( col, ascending ), false ); - QStringList ilist = QStringList::split( ":", i->key( col, ascending ), false ); - if ( mylist.count() != ilist.count() || mylist.count() == 0 ) - return ( mylist.count() < ilist.count() ) ? -1 : 1; - for ( int i = 0; i < mylist.count(); i++ ) { - if ( mylist[i].toInt() < ilist[i].toInt() ) - return -1; - else if ( mylist[i].toInt() > ilist[i].toInt() ) - return 1; - } - return 0; - } - return QListViewItem::compare( i, col, ascending ); -} diff --git a/src/SALOMEGUI/QAD_ObjectBrowserItem.h b/src/SALOMEGUI/QAD_ObjectBrowserItem.h deleted file mode 100644 index cb04d2e4d..000000000 --- a/src/SALOMEGUI/QAD_ObjectBrowserItem.h +++ /dev/null @@ -1,86 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_ObjectBrowserItem.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef QAD_OBJECTBROWSERITEM_H -#define QAD_OBJECTBROWSERITEM_H - -#include -#include - -class QPainter; -class QColorGroup; - -class QAD_ObjectBrowserItem : public QListViewItem -{ - friend class QListView; - -public: - QAD_ObjectBrowserItem( QListView* theParent ); - QAD_ObjectBrowserItem( QListView* theParent, QAD_ObjectBrowserItem* after ); - QAD_ObjectBrowserItem( QAD_ObjectBrowserItem* theParent ); - QAD_ObjectBrowserItem( QAD_ObjectBrowserItem* theParent, QAD_ObjectBrowserItem* after ); - virtual ~QAD_ObjectBrowserItem(); - - void setType( int type ); - void setTextColor( const QColor& color ); - void setTextHighlightColor( const QColor& color ); - - QString getName() const; - void setName( const QString& name ); - QString getValue() const; - void setValue( const QString& value ); - QString getEntry() const; - void setEntry( const QString& entry ); - QString getIOR() const; - void setIOR( const QString& IOR ); - QString getReference() const; - void setReference( const QString& ref ); - - bool isCurrent() const; - void setCurrent( bool on ); - - int compare( QListViewItem* i, int col, bool ascending ) const; - -protected: - enum { BlackItem = 0, BlueItem, RedItem }; - int myType; - QColor myTextColor; - QColor myTextHighlightColor; - bool myCurrent; - - void paintCell( QPainter*, const QColorGroup &, int, int, int ); - QString text( int column ) const; -}; - -#endif - - - - - - diff --git a/src/SALOMEGUI/QAD_Operation.cxx b/src/SALOMEGUI/QAD_Operation.cxx deleted file mode 100644 index 42e0bb955..000000000 --- a/src/SALOMEGUI/QAD_Operation.cxx +++ /dev/null @@ -1,201 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_Operation.cxx -// Author : UI team -// Module : SALOME -// $Header$ - -/*! - \class QAD_Operation QAD_Operation.h - \brief Base class for OCAF operations in QAD-based application. -*/ - -#include "QAD.h" -#include "QAD_Operation.h" -#include "QAD_Study.h" -#include "QAD_Application.h" - -// QT Include -#include -using namespace std; - -/*! - Constructor -*/ -QAD_Operation::QAD_Operation (QAD_Study* doc) : -myDoc ( doc ) -{ - /* this class is useless without valid doc */ - QAD_ASSERT_DEBUG_ONLY( myDoc ); -} - -/*! - Destructor -*/ -QAD_Operation::~QAD_Operation () -{ -} - -/*! - Returns reference to the document -*/ -QAD_Study* QAD_Operation::getDoc() const -{ - return myDoc; -} - -/*! - Returns reference to the application -*/ -QAD_Application* QAD_Operation::getApp() const -{ - return myDoc->getApp(); -} - -/*! - Checks compatibility with the other launched operations. - Returns \true if appointed operation can be performed. - By default returns \false for all operations. -*/ -bool QAD_Operation::compatibleWith( QAD_Operation* op ) const -{ - return false; -} - -/*! - Returns true if operation can be aborted by pressing "Escape" key - (default behaviour). -*/ -bool QAD_Operation::supportCancelByEscape() const -{ - return true; -} - -/*! - Returns true if operation changes document data. In this case it won't be - launched if document is opened as "read only". Value by default is true. -*/ -bool QAD_Operation::changesData() const -{ - return true; -} - -/*! - Starts this operation. -*/ -bool QAD_Operation::start() -{ - /* open transaction */ - if ( !myDoc->onOperationStarted( this ) ) - return false; - - /* started OK */ - onStartOperation(); - return true; -} - -/*! - Called after operation started. Does nothing by default. - Override to set a desired behaviour. -*/ -void QAD_Operation::onStartOperation() -{ -} - -/*! - Ends the operation. -*/ -void QAD_Operation::finish() -{ - QApplication::setOverrideCursor( Qt::waitCursor ); - - onFinishOperation(); /* customization */ - myDoc->onOperationFinished( this ); /* close transaction */ - - QApplication::restoreOverrideCursor(); -} - -/*! - Called after operation finished. Does nothing by default. - Override to set a desired behaviour. -*/ -void QAD_Operation::onFinishOperation() -{ -} - -/*! - Suspends operation process when the document is deactivated. -*/ -void QAD_Operation::suspend() -{ - onSuspendOperation(); /* customization */ - myDoc->onOperationSuspended( this ); /* notification */ -} - -/*! - Called after operation suspended. Does nothing by default. - Override to set a desired behaviour. -*/ -void QAD_Operation::onSuspendOperation() -{ -} - -/*! - Resumes operation performing process when the document became active - (if the operation wasn't aborted earlier). -*/ -void QAD_Operation::resume() -{ - onResumeOperation(); /* customization */ - myDoc->onOperationResumed( this ); /* notification */ -} - -/*! - Called after operation resumed. Does nothing by default. - Override to set a desired behaviour. -*/ -void QAD_Operation::onResumeOperation() -{ -} - -/*! - Cancels operation performing process without ending. -*/ -void QAD_Operation::abort() -{ - QApplication::setOverrideCursor( Qt::waitCursor ); - - onAbortOperation(); /* customization */ - myDoc->onOperationAborted( this ); /* abort transaction */ - - QApplication::restoreOverrideCursor(); -} - -/*! - Called after operation aborted. Does nothing by default. - Override to set a desired behaviour. -*/ -void QAD_Operation::onAbortOperation() -{ -} diff --git a/src/SALOMEGUI/QAD_Operation.h b/src/SALOMEGUI/QAD_Operation.h deleted file mode 100644 index 813999078..000000000 --- a/src/SALOMEGUI/QAD_Operation.h +++ /dev/null @@ -1,78 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_Operation.h -// Author : UI team -// Module : SALOME -// $Header$ - -#ifndef QAD_Operation_H -#define QAD_Operation_H - -#include "QAD.h" -#include - -class QAD_Study; -class QAD_Application; - -enum OperationState { - Undef, Started, Finished, Suspended, Resumed, - Aborted -}; - -class QAD_EXPORT QAD_Operation : public QObject -{ - Q_OBJECT - -public: - QAD_Operation( QAD_Study* aDoc ); - ~QAD_Operation(); - -public: - QAD_Study* getDoc() const; - QAD_Application* getApp() const; - - bool start(); - void finish(); - void suspend(); - void resume(); - void abort(); - - virtual bool changesData() const; - virtual bool supportCancelByEscape() const; - virtual bool compatibleWith( QAD_Operation* ) const; - -protected: - /* customization */ - virtual void onStartOperation(); - virtual void onFinishOperation(); - virtual void onSuspendOperation(); - virtual void onResumeOperation(); - virtual void onAbortOperation(); - -protected: - QAD_Study* myDoc; -}; - -#endif - diff --git a/src/SALOMEGUI/QAD_OperatorMenus.cxx b/src/SALOMEGUI/QAD_OperatorMenus.cxx deleted file mode 100644 index 34bc0290c..000000000 --- a/src/SALOMEGUI/QAD_OperatorMenus.cxx +++ /dev/null @@ -1,131 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_OperatorMenus.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "QAD_OperatorMenus.h" -#include "QAD_Desktop.h" -using namespace std; - -/*! - Constructor. -*/ -QAD_OperatorMenus::QAD_OperatorMenus(QAD_Desktop* theDesktop) -{ - myDesktop=theDesktop; -} - -/*! - Destructor. -*/ -QAD_OperatorMenus::~QAD_OperatorMenus() -{ -} - -/*! - Builds popup menu with a 'Context', a 'Parent' and an 'Object'. - Parent is equal to 'Objectbrowser' or 'Viewer'. -*/ -QAD_ListPopupMenu* QAD_OperatorMenus::createPopupMenu(const QString & theContext, - const QString & theParent, - const QString & theObject) -{ - QAD_Menus* aMenus = myDesktop->getActiveMenus(); - QAD_ListPopupMenu* aPopup; - - QList PopupList = aMenus->getPopupMenuList(); - - for(aPopup=PopupList.first();aPopup!=NULL;aPopup=PopupList.next()){ - if ((aPopup->getContext().compare(theContext)==0) && - (aPopup->getParent().compare(theParent)==0) && - (aPopup->getObject().compare(theObject)==0)) { - return aPopup; - } - } - return NULL; -} - -QAD_ListPopupMenu* QAD_OperatorMenus::createPopupMenu(int thePopupMenuId) -{ - QAD_Menus* aMenus = myDesktop->getActiveMenus(); - - if(!aMenus->getPopupMenuList().isEmpty() && - aMenus->getPopupMenuList().at(thePopupMenuId)!=NULL) { - return aMenus->getPopupMenuList().at(thePopupMenuId); - } else - return NULL; -} - -void QAD_OperatorMenus::showMenuBar(int theMenuBarId) - -{ - QAD_Menus* aMenus = myDesktop->getActiveMenus(); - if(!aMenus->getMenuBarList().isEmpty() && - aMenus->getMenuBarList().at(theMenuBarId)!=NULL) { - aMenus->getMenuBarList().at(theMenuBarId)->show(); - } -} - -void QAD_OperatorMenus::hideMenuBar(int theMenuBarId) - -{ - QAD_Menus* aMenus; - aMenus=myDesktop->getActiveMenus(); - if(!aMenus->getMenuBarList().isEmpty() && - aMenus->getMenuBarList().at(theMenuBarId)!=NULL) { - aMenus->getMenuBarList().at(theMenuBarId)->hide(); - } -} - -void QAD_OperatorMenus::showToolBar(int theToolBarId) - -{ - QAD_Menus* aMenus; - - aMenus=myDesktop->getActiveMenus(); - if(!aMenus->getToolBarList().isEmpty() && - aMenus->getToolBarList().at(theToolBarId)!=NULL) { - aMenus->getToolBarList().at(theToolBarId)->show(); - } -} - -void QAD_OperatorMenus::hideToolBar(int theToolBarId) - -{ - QAD_Menus* aMenus; - - aMenus=myDesktop->getActiveMenus(); - if(!aMenus->getToolBarList().isEmpty() && - aMenus->getToolBarList().at(theToolBarId)!=NULL) { - aMenus->getToolBarList().at(theToolBarId)->hide(); - } -} - - - - - - diff --git a/src/SALOMEGUI/QAD_OperatorMenus.h b/src/SALOMEGUI/QAD_OperatorMenus.h deleted file mode 100644 index e2ce210c5..000000000 --- a/src/SALOMEGUI/QAD_OperatorMenus.h +++ /dev/null @@ -1,55 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_OperatorMenus.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef QAD_OPERATOR_MENUS_H -#define QAD_OPERATOR_MENUS_H - -#include "QAD_ListPopupMenu.h" - -class QAD_Desktop; - -class QAD_OperatorMenus -{ -public: - QAD_OperatorMenus(QAD_Desktop *); - virtual ~QAD_OperatorMenus(); - - QAD_Desktop* myDesktop; - QAD_ListPopupMenu* createPopupMenu(int); - QAD_ListPopupMenu* createPopupMenu(const QString & theContext, - const QString & theParent, - const QString & theObject); - - void showMenuBar(int); - void hideMenuBar(int); - void showToolBar(int); - void hideToolBar(int); -}; - -#endif - diff --git a/src/SALOMEGUI/QAD_ParserSettings.cxx b/src/SALOMEGUI/QAD_ParserSettings.cxx deleted file mode 100644 index c0506f189..000000000 --- a/src/SALOMEGUI/QAD_ParserSettings.cxx +++ /dev/null @@ -1,344 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_ParserSettings.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "QAD_ParserSettings.h" - -#include - -// QT Includes -#include -#include -#include -using namespace std; - - -/*! - Constructor. -*/ -QAD_ParserSettings::QAD_ParserSettings() -{ -} - - -/*! - Destructor. -*/ -QAD_ParserSettings::~QAD_ParserSettings() -{ -} - - -/*! - Gets the contents of a file. -*/ -QString QAD_ParserSettings::getContents(QString fileName, bool comments, - bool sections, bool whiteSpace, - bool htmlComments) -{ - QFileInfo fi(fileName); - QFile f(fi.absFilePath()); - QString s=""; // Buffer for the whole file - - if(f.open(IO_ReadOnly)) { // file opened successfully - QTextStream t(&f); // use a text stream - - s = t.read(); // The whole file in a string - f.close(); - - if(!comments) s = QAD_ParserSettings::removeComments(s); - if(!sections) s = QAD_ParserSettings::removeSections(s); - if(!whiteSpace) s = s.simplifyWhiteSpace(); - if(!htmlComments) s = QAD_ParserSettings::removeHtmlComments(s); - } - else { - // Can't open file - } - - return s; -} - - -/*! - Gets the body of a section from a string. -*/ -QString QAD_ParserSettings::getSection(QString s, QString sectionName) -{ - QString result=""; - - QChar ch; // A single byte of the file - int bracketCounter=1; // Bracket counter (increase on '{' and decrese on '}'. - int i; // Current index - int l=0; // Length of current part we must have - - if((i=s.find(sectionName, 0, false)) >= 0 && // Jump to section [styles] - (i=s.find('{', i)) >= 0 ) { - - ++i; - - while(i+l<(int)s.length()) { - ch = s.at(i+l); // Single byte - - ++l; - - if(ch=='{') ++bracketCounter; - if(ch=='}') --bracketCounter; - - if(bracketCounter==0) break; - } - - result = s.mid(i, l-1); - } - - return result; -} - - - -/*! - Gets the HTML comments out of a file. -*/ -QString QAD_ParserSettings::getHtmlComment(QString s) -{ - QString result=""; - int length; // length of the sub string - int ind=0; - - if((ind =s.find("", ind)-ind)!=0) { - - result=s.mid(ind, length-3); - } - - return result; -} - - - -/*! - Gets the next String between two given characters. The index-parameter gets moved to the character after - the stopper or to -1 if the starter / stopper were not found. -*/ -QString QAD_ParserSettings::getNextStringBetween(QString s, int& startIndex, - QChar starter, QChar stopper) -{ - QString result=""; - int length=0; // length of the sub string - - if((startIndex =s.find(starter, startIndex))>=0 && - (length=s.find(stopper, startIndex+1)-startIndex)!=0) { - - result=s.mid(startIndex+1, length-1); - startIndex+=2; - } - - return result; -} - - -/*! - Gets the next String between the given index and a given stopper character. The index-parameter gets moved to - the character after the stopper or to -1 if the stopper was not found. -*/ -QString QAD_ParserSettings::getNextStringUntil(QString s, int& startIndex, QChar stopper) -{ - QString result=""; - int length; // length of the sub string - - if((length=s.find(stopper, startIndex)-startIndex)!=0) { - result=s.mid(startIndex, length); - startIndex++; - } - - return result; -} - - -/*! - Removes all comments (between '/ *' and '* /'). -*/ -QString QAD_ParserSettings::removeComments(QString s) -{ - QString result=""; - int i1=0, i2; - - while((i2=s.find("/*", i1))>=0) { - result += s.mid(i1, i2-i1); - - i1+=2; - i1=s.find("*/", i1); - i1+=2; - } - - result += s.mid(i1, s.length()-i1); - - return result; -} - - - -/*! - Removes all HTML comments (between ''). -*/ -QString QAD_ParserSettings::removeHtmlComments(QString s) -{ - QString result=""; - int i1=0, i2; - - while((i2=s.find("", i1); - i1+=3; - } - - result += s.mid(i1, s.length()-i1); - - return result; -} - - - -/*! - Removes all sections ('[section] { }'). -*/ -QString QAD_ParserSettings::removeSections(QString s) -{ - QString result=""; - - QChar ch; // A single byte of the file - int bracketCounter; // Bracket counter (increase on '{' and decrese on '}'. - int i=0; // Current index - - while(i<(int)s.length()) { - ch = s.at(i); // Single byte - - if(ch=='[') { - bracketCounter=1; - while(i<(int)s.length() && ch!=']') { ch = s.at(i); ++i; } - ++i; - while(i<(int)s.length() && ch!='{') { ch = s.at(i); ++i; } - ++i; - - while(i<(int)s.length() && bracketCounter!=0) { - ch = s.at(i); - if(ch=='{') ++bracketCounter; - if(ch=='}') --bracketCounter; - ++i; - } - ++i; - } - else { - result+=ch; - } - - ++i; - } - - return result; -} - - -/*! - Format plain text into HTML-code with a given maximal width. - Spaces get replaced with non breaking spaces. Tabulators get filled up - with non breaking spaces. -*/ -QString QAD_ParserSettings::plainTextToHtml(QString s, int autoBreak) -{ - QString result="\n"; - - if(!s.isEmpty()) { - int col=1, i; - - for(i=0; i<(int)s.length(); ++i) { - // Line feed: - // - if(s[i]=='\n') { - result+="
\n"; - col=1; - } - - // Auto break: - // - else if(col==autoBreak && autoBreak!=0) { - result+="
\n"; - result+=s[i]; - col=1; - } - - // Tab: - // - else if(s[i]=='\t') { - while(col%8!=0) { result+=" "; ++col; } - result+=" "; - ++col; - } - - // Space: - // - else if(s[i]==' ') { - result+=" "; - ++col; - } - - // Normal char / special code: - // - else { - if(s[i].isLetter() || s[i].isNumber()) { - result+=s[i]; - } - else { - result+=charToHtml(s[i]); - } - ++col; - } - } - - result+="\n"; - } - - return result; -} - - -/*! - Converts a special character to html code (e.g.: '»' to "»") -*/ -QString QAD_ParserSettings::charToHtml(QChar c) -{ - QString s; - QString uc; - uc.setNum(c.unicode()); - s = "&#" + uc + ";"; - return s; -} - - -// EOF diff --git a/src/SALOMEGUI/QAD_ParserSettings.h b/src/SALOMEGUI/QAD_ParserSettings.h deleted file mode 100644 index 295851c4a..000000000 --- a/src/SALOMEGUI/QAD_ParserSettings.h +++ /dev/null @@ -1,55 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_ParserSettings.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef QAD_PARSERSETTINGS_H -#define QAD_PARSERSETTINGS_H - -#include - -class QAD_ParserSettings -{ -public: - QAD_ParserSettings(); - ~QAD_ParserSettings(); - - static QString getContents(QString fileName, bool comments=true, - bool sections=true, bool whitespace=true, - bool htmlComments=true); - static QString getSection(QString s, QString sectionName); - static QString getHtmlComment(QString s); - static QString getNextStringBetween(QString s, int& startIndex, QChar starter, QChar stopper); - static QString getNextStringUntil(QString s, int& startIndex, QChar stopper); - static QString removeComments(QString s); - static QString removeHtmlComments(QString s); - static QString removeSections(QString s); - static QString plainTextToHtml(QString s, int autoBreak); - static QString charToHtml(QChar c); - -}; - -#endif diff --git a/src/SALOMEGUI/QAD_Popup.cxx b/src/SALOMEGUI/QAD_Popup.cxx deleted file mode 100644 index 9bd085b6b..000000000 --- a/src/SALOMEGUI/QAD_Popup.cxx +++ /dev/null @@ -1,231 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_Popup.cxx -// Author : UI team -// Module : SALOME -// $Header$ - -#include "QAD.h" -#include "QAD_Popup.h" -#include "utilities.h" -using namespace std; - -/***************************************************************************** -** Class QAD_PopupClientServer -*****************************************************************************/ - -/*! - Constructor -*/ -QAD_PopupServer::QAD_PopupServer() : -myPopup( NULL ), -myEnablePopup( true ) -{ -} - -/*! - Enables/disables creation of popup. - Useful when user doesn't want to create popup - provided by server by default and does not - want to inherit from the server -*/ -void QAD_PopupServer::enablePopup( bool enable ) -{ - myEnablePopup = enable; -} - -/*! - Called by popup client when it wants - to activate popup -*/ -QPopupMenu* QAD_PopupServer::createPopup() -{ - if ( !myEnablePopup ) - return 0; - - if ( !myPopup ) - myPopup = new QPopupMenu; - onCreatePopup(); /* add specific menu items */ - return myPopup; -} - -/*! - Called by popup client when popup - is deactivated. -*/ -void QAD_PopupServer::destroyPopup() -{ - if ( myPopup ) myPopup->clear(); -} - -/*! - Destructor -*/ -QAD_PopupServer::~QAD_PopupServer() -{ - delete (QPopupMenu*) myPopup; -} - -/***************************************************************************** -** Class QAD_PopupClient -*****************************************************************************/ - -/*! - Constructor -*/ -QAD_PopupClient::QAD_PopupClient() : -myPopupServer( 0 ) -{ -} - -/*! - Destructor -*/ -QAD_PopupClient::~QAD_PopupClient() -{ -} - -/*! - Sets a popup server for this client -*/ -void QAD_PopupClient::setPopupServer ( QAD_PopupServer* server) -{ - myPopupServer = server; -} - -/*! - Returns the popup server for this client -*/ -QAD_PopupServer* QAD_PopupClient::getPopupServer () const -{ - return myPopupServer; -} - -/***************************************************************************** -** Class QAD_PopupClientServer -*****************************************************************************/ - -/*! - Constructor -*/ -QAD_PopupClientServer::QAD_PopupClientServer( bool separateItems, bool smartSeparator ) : - myOnlyServer( false ), - mySeparateItems( separateItems ), - mySmartSeparator( smartSeparator ) -{ -} - -/*! - Destructor -*/ -QAD_PopupClientServer::~QAD_PopupClientServer() -{ -} - -/*! - Called by popup client when it wants - to activate popup. The result is the - popup returned by this object's server - ( client role ) + the appended popup - provided by itself ( server role ). -*/ -QPopupMenu* QAD_PopupClientServer::createPopup() -{ - if ( !myEnablePopup ) - return 0; - - QPopupMenu* popupMenu = 0; - if ( myPopupServer ) - { /* get the popup provided by my server */ - popupMenu = myPopupServer->createPopup(); - } - - if ( !popupMenu ) - { /* there is no popup from my server */ - if ( !myPopup ) myPopup = new QPopupMenu; - popupMenu = myPopup; - myOnlyServer = true; - } - else - { - if ( myPopup ) myPopup->clear(); - myPopup = popupMenu; - myOnlyServer = false; - } - - /* Attach my popup to the popup of my server */ - if ( popupMenu->count() && mySeparateItems ) - { - /* Separate my items only if I will really - add some items - */ - int sepId, numBefore, numAfter; - sepId = mySmartSeparator ? popupMenu->insertSeparator(0) : popupMenu->insertSeparator(); - numBefore = popupMenu->count(); - int sepPosBefore = mySmartSeparator ? 0 : numBefore - 1; - - /* add items */ - onCreatePopup(); - - numAfter = popupMenu->count(); - int sepPosAfter = popupMenu->indexOf(sepId); - if ( numAfter > numBefore || ( sepPosAfter != -1 && sepPosAfter && sepPosAfter != numAfter - 1 ) ) { - myIDs.append( sepId ); - } - else if ( sepPosAfter != -1 ) - popupMenu->removeItem( sepId ); - } - else - onCreatePopup(); /* add items */ - - return popupMenu; -} - -/*! - Deactivates the popup -*/ -void QAD_PopupClientServer::destroyPopup() -{ - if ( myPopup ) - { - /* remove all my items */ - QValueList::ConstIterator it; - for( it = myIDs.begin(); it != myIDs.end(); ++it ) - myPopup->removeItem ( *it ); - - /* clear list of IDs */ - myIDs.clear(); - - if ( myOnlyServer ) - { /* popup must be empty now */ - QAD_ASSERT_DEBUG_ONLY ( !myPopup->count() ); - return; - } - myPopup = 0; - } - - /* dispatch to my server */ - if ( myPopupServer ) - myPopupServer->destroyPopup(); -} diff --git a/src/SALOMEGUI/QAD_Popup.h b/src/SALOMEGUI/QAD_Popup.h deleted file mode 100644 index 20bd7ca9e..000000000 --- a/src/SALOMEGUI/QAD_Popup.h +++ /dev/null @@ -1,106 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_Popup.h -// Author : UI team -// Module : SALOME -// $Header$ - -#ifndef QAD_POPUP_H -#define QAD_POPUP_H - -#include "QAD.h" -#include -#include - -/**************************************************************************** -** -** Interface QAD_PopupServer: must be implemented by a class which is going -** to be a popup server for clients i.e. be able to create a popup menu -** -*****************************************************************************/ -class QAD_EXPORT QAD_PopupServer -{ -public: - QAD_PopupServer(); - virtual ~QAD_PopupServer(); - -public: - virtual QPopupMenu* createPopup(); - virtual void destroyPopup(); - void enablePopup( bool ); - -protected: - virtual void onCreatePopup () = 0; /* addition of menu items goes here */ - -protected: - QPopupMenu* myPopup; /* resulting popup menu */ - bool myEnablePopup; /* enable/disable popup creation */ -}; - -/**************************************************************************** -** -** Class QAD_PopupClient: must be inherited by a class which is going -** to be a popup client i.e. be able to show its server's popup menu -** -*****************************************************************************/ -class QAD_EXPORT QAD_PopupClient -{ -public: - QAD_PopupClient(); - virtual ~QAD_PopupClient(); - -public: - void setPopupServer ( QAD_PopupServer* ); - QAD_PopupServer* getPopupServer () const; - -protected: - QAD_PopupServer* myPopupServer; -}; - -/**************************************************************************** -** -** Class QAD_PopupClientServer: both client and server. Can be used as -** a server only or as a client only ( if server is not set ). -** -*****************************************************************************/ -class QAD_EXPORT QAD_PopupClientServer : public QAD_PopupClient, - public QAD_PopupServer -{ -public: - QAD_PopupClientServer( bool separateItems = true, bool smartSeparator = true ); - ~QAD_PopupClientServer(); - -public: - QPopupMenu* createPopup(); - void destroyPopup(); - -protected: - QValueList myIDs; // ids of the items added by myself as a server - bool myOnlyServer; // true if I`m fully responsible for the menu - bool mySeparateItems; // to insert separator before my items - bool mySmartSeparator; // if true then separator is inserted after own items, - // not at the end of menu -}; - -#endif diff --git a/src/SALOMEGUI/QAD_PyEditor.cxx b/src/SALOMEGUI/QAD_PyEditor.cxx deleted file mode 100644 index bfd4ec997..000000000 --- a/src/SALOMEGUI/QAD_PyEditor.cxx +++ /dev/null @@ -1,778 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_PyEditor.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "QAD_PyEditor.h" -#include "QAD_PyInterp.h" -#include "QAD_Application.h" -#include "QAD_Desktop.h" -#include "QAD_Config.h" -#include "QAD_Tools.h" -#include "QAD_MessageBox.h" - -#include -#include -#include -#include -#include - -// NRI : Temporary added -// IDL Headers -#include -#include CORBA_SERVER_HEADER(SALOMEDS) -#include CORBA_SERVER_HEADER(SALOMEDS_Attributes) -//NRI - -#include "utilities.h" -using namespace std; - - -#ifdef _DEBUG_ -static int MYDEBUG = 0; -#else -static int MYDEBUG = 0; -#endif - - -enum { IdCopy, IdPaste, IdClear, IdSelectAll }; - - -static QString READY_PROMPT = ">>> "; -static QString DOTS_PROMPT = "... "; -#define PROMPT_SIZE _currentPrompt.length() - -class TInitEditorThread : public QThread -{ -public: - TInitEditorThread(QAD_PyInterp*& theInterp, - QMutex* theStudyMutex, QMutex* theMutex, - QAD_PyEditor* theListener): - myInterp(theInterp), - myMutex(theMutex), - myStudyMutex(theStudyMutex), - myListener(theListener) - { - // san - commented as inefficient: sometimes event is processed significant period of time after this moment - //QThread::postEvent(myListener, new QCustomEvent(QAD_PyEditor::SET_WAIT_CURSOR)); - } - - virtual ~TInitEditorThread(){} - -protected: - virtual void run(){ - ThreadLock anEditorLock(myMutex,"TInitEditorThread::anEditorLock"); - ThreadLock aStudyLock(myStudyMutex,"TInitEditorThread::aStudyLock"); - ThreadLock aPyLock = GetPyThreadLock("TInitEditorThread::aPyLock"); - if(MYDEBUG) MESSAGE("TInitEditorThread::run() - myInterp = "<run( myCommand.latin1() ); - if(MYDEBUG) MESSAGE("TExecCommand::run() - myInterp = "< 0) - anId = QAD_PyEditor::PYTHON_INCOMPLETE; - myListener->myError = myInterp->getverr().c_str(); - myListener->myOutput = myInterp->getvout().c_str(); - }else{ - myListener->myError = ""; - myListener->myOutput = ""; - } - QThread::postEvent(myListener, new QCustomEvent(anId)); - QThread::postEvent(myListener, new QCustomEvent(QAD_PyEditor::UNSET_CURSOR)); - } - -private: - QMutex* myMutex; - QMutex* myStudyMutex; - QAD_PyInterp*& myInterp; - QAD_PyEditor* myListener; - QString myCommand; -}; - - -/*! - Constructor -*/ -QAD_PyEditor::QAD_PyEditor(QAD_PyInterp*& theInterp, QMutex* theMutex, - QWidget *theParent, const char* theName): - QTextEdit(theParent,theName), - myStudyMutex(theMutex), - myInitEditorMutex(new QMutex), - myExecCommandMutex(new QMutex), - myInterp(theInterp), - myInitEditorThread(0), - myExecCommandThread(0) -{ - QString fntSet = QAD_CONFIG->getSetting("Viewer:ConsoleFont"); - QFont myFont = QAD_Tools::stringToFont( fntSet ); -// QFont myFont("Courier",11); - setFont(myFont); - setTextFormat(QTextEdit::PlainText); - - // san - This is necessary for troubleless initialization - setReadOnly( true ); - viewport()->setCursor( waitCursor ); - - myInitEditorThread = new TInitEditorThread(myInterp,myStudyMutex,myInitEditorMutex,this); - myExecCommandThread = new TExecCommandThread(myInterp,myStudyMutex,myExecCommandMutex,this); - - _currentPrompt = READY_PROMPT; - setPalette( QAD_Application::getPalette(true) ); - setWordWrap(NoWrap); - - connect(this,SIGNAL(returnPressed()),this,SLOT(handleReturn()) ); -} - - -void QAD_PyEditor::Init() -{ - myInitEditorThread->start(); -} - - -/*! - Destructor -*/ -QAD_PyEditor::~QAD_PyEditor() -{ - if(MYDEBUG) MESSAGE("QAD_PyEditor::~QAD_PyEditor()"); - { - { - ThreadLock aLock(myInitEditorMutex,"myInitEditorMutex"); - delete myInitEditorThread; - } - delete myInitEditorMutex; - } - { - { - ThreadLock aLock(myExecCommandMutex,"myExecCommandMutex"); - delete myExecCommandThread; - } - delete myExecCommandMutex; - } -} - -/*! - Called to insert a string s -*/ -void QAD_PyEditor::setText(QString s) -{ - int para=paragraphs()-1; - int col=paragraphLength(para); - insertAt(s,para,col); - int n = paragraphs()-1; - setCursorPosition( n, paragraphLength(n)); -} - -/*! - Called when an handleReturn -*/ -void QAD_PyEditor::handleReturn() -{ - int para=paragraphs()-2; - - // NRI : Temporary added - SALOMEDS::Study_var aStudy = QAD_Application::getDesktop()->getActiveStudy()->getStudyDocument(); - - if ( aStudy->GetProperties()->IsLocked() ) { - QApplication::restoreOverrideCursor(); - QAD_MessageBox::warn1 ( (QWidget*)QAD_Application::getDesktop(), - QObject::tr("WARNING"), - QObject::tr("WRN_STUDY_LOCKED"), - QObject::tr("BUT_OK") ); - - _currentPrompt = READY_PROMPT; - setText(_currentPrompt); - - return; - } - // NRI - - _buf.append(text(para).remove(0,PROMPT_SIZE)); - _buf.truncate( _buf.length() - 1 ); - setReadOnly( true ); - viewport()->setCursor( waitCursor ); - myExecCommandThread->exec(_buf.latin1()); -} - -/* - Processes drop event: paste dragged text -*/ -void QAD_PyEditor::contentsDropEvent( QDropEvent* event ) -{ - event->acceptAction(); - QString text; - if ( QTextDrag::decode( event, text ) ) { - int par, col; - int endLine = paragraphs() -1; - col = charAt( event->pos(), &par ); - - if ( col >= 0 && par >= 0 ) { - if ( par != endLine || col < PROMPT_SIZE ) { - par = endLine; - col = paragraphLength( endLine ); - } - setCursorPosition( par, col ); - insertAt( text, par, col ); - removeSelection(); - } - } -} - -/* - Processes middle button release event - paste clipboard's contents -*/ -void QAD_PyEditor::contentsMouseReleaseEvent( QMouseEvent* event ) -{ - if ( event->button() == LeftButton ) { - QTextEdit::contentsMouseReleaseEvent(event); - copy(); - } - if ( event->button() == MidButton ) { - if (QApplication::clipboard()->supportsSelection()) { - int par, col; - int endLine = paragraphs() -1; - col = charAt( event->pos(), &par ); - if ( col >= 0 && par >= 0 ) { - if ( par != endLine || col < PROMPT_SIZE ) - setCursorPosition( endLine, paragraphLength( endLine ) ); - else - setCursorPosition( par, col ); - QApplication::clipboard()->setSelectionMode(TRUE); - paste(); - QApplication::clipboard()->setSelectionMode(FALSE); - } - } - } - else { - QTextEdit::contentsMouseReleaseEvent(event); - } -} - -/* - Processes own popup menu -*/ -void QAD_PyEditor::mousePressEvent (QMouseEvent* event) -{ - if ( event->button() == RightButton ) { - QPopupMenu *popup = new QPopupMenu( this ); - QMap idMap; - - int para1, col1, para2, col2; - getSelection(¶1, &col1, ¶2, &col2); - bool allSelected = hasSelectedText() && - para1 == 0 && para2 == paragraphs()-1 && col1 == 0 && para2 == paragraphLength(para2); - int id; - id = popup->insertItem( tr( "EDIT_COPY_CMD" ) ); - idMap.insert(IdCopy, id); - id = popup->insertItem( tr( "EDIT_PASTE_CMD" ) ); - idMap.insert(IdPaste, id); - id = popup->insertItem( tr( "EDIT_CLEAR_CMD" ) ); - idMap.insert(IdClear, id); - popup->insertSeparator(); - id = popup->insertItem( tr( "EDIT_SELECTALL_CMD" ) ); - idMap.insert(IdSelectAll, id); - popup->setItemEnabled( idMap[ IdCopy ], hasSelectedText() ); - popup->setItemEnabled( idMap[ IdPaste ], - !isReadOnly() && (bool)QApplication::clipboard()->text().length() ); - popup->setItemEnabled( idMap[ IdSelectAll ], - (bool)text().length() && !allSelected ); - - int r = popup->exec( event->globalPos() ); - delete popup; - - if ( r == idMap[ IdCopy ] ) { - copy(); - } - else if ( r == idMap[ IdPaste ] ) { - paste(); - } - else if ( r == idMap[ IdClear ] ) { - clear(); - setText(myBanner); - _currentPrompt = READY_PROMPT; - setText(_currentPrompt); - } - else if ( r == idMap[ IdSelectAll ] ) { - selectAll(); - } - } - else { - QTextEdit::mousePressEvent(event); - } -} - -/*! - Checks, is the string a command line or not. -*/ - -bool QAD_PyEditor::isCommand( const QString& str) const -{ - // prompt may be '>>> ' or for '... ' - return ( str.find( READY_PROMPT ) == 0 || str.find( DOTS_PROMPT ) == 0 ); -} - - -/*! - Called when a keyPress event -*/ -void QAD_PyEditor::keyPressEvent( QKeyEvent* e ) -{ - // get cursor position - int curLine, curCol; - getCursorPosition(&curLine, &curCol); - - // get last edited line - int endLine = paragraphs() -1; - - // get pressed key code - int aKey = e->key(); - - // check if is pressed - bool ctrlPressed = e->state() & ControlButton; - // check if is pressed - bool shftPressed = e->state() & ShiftButton; - // check if is pressed - bool altPressed = e->state() & AltButton; - - // process + key-bindings - if ( aKey == Key_C && ctrlPressed ) { - _buf.truncate(0); - setText("\n"); - _currentPrompt = READY_PROMPT; - setText(_currentPrompt); - return; - } - - // check for printed key - aKey = ( aKey < Key_Space || aKey > Key_ydiaeresis ) ? aKey : 0; - - switch ( aKey ) { - case 0 : - // any printed key - { - if ( curLine < endLine || curCol < PROMPT_SIZE ) - moveCursor( QTextEdit::MoveEnd, false ); - QTextEdit::keyPressEvent( e ); - break; - } - case Key_Return: - case Key_Enter: - // key - { - moveCursor( QTextEdit::MoveEnd, false ); - QTextEdit::keyPressEvent( e ); - break; - } - case Key_Up: - // arrow key: process as follows: - // - without , modifiers: previous command in history - // - with modifier key pressed: move cursor one row up without selection - // - with modifier key pressed: move cursor one row up with selection - // - with + modifier keys pressed: scroll one row up - { - if ( ctrlPressed && shftPressed ) { - scrollBy( 0, -QFontMetrics( font() ).lineSpacing() ); - } - else if ( shftPressed ) { - if ( curLine > 0 ) - moveCursor( QTextEdit::MoveUp, true ); - } - else if ( ctrlPressed ) { - moveCursor( QTextEdit::MoveUp, false ); - } - else { - QString histLine = _currentPrompt; - if ( ! _isInHistory ) { - _isInHistory = true; - _currentCommand = text( endLine ).remove( 0, PROMPT_SIZE ); - _currentCommand.truncate( _currentCommand.length() - 1 ); - } - QString previousCommand = myInterp->getPrevious(); - if ( previousCommand.compare( BEGIN_HISTORY_PY ) != 0 ) { - removeParagraph( endLine ); - histLine.append( previousCommand ); - insertParagraph( histLine, -1 ); - } - moveCursor( QTextEdit::MoveEnd, false ); - } - break; - } - case Key_Down: - // arrow key: process as follows: - // - without , modifiers: next command in history - // - with modifier key pressed: move cursor one row down without selection - // - with modifier key pressed: move cursor one row down with selection - // - with + modifier keys pressed: scroll one row down - { - if ( ctrlPressed && shftPressed ) { - scrollBy( 0, QFontMetrics( font() ).lineSpacing() ); - } - else if ( shftPressed ) { - if ( curLine < endLine ) - moveCursor( QTextEdit::MoveDown, true ); - } - else if ( ctrlPressed ) { - moveCursor( QTextEdit::MoveDown, false ); - } - else { - QString histLine = _currentPrompt; - QString nextCommand = myInterp->getNext(); - if ( nextCommand.compare( TOP_HISTORY_PY ) != 0 ) { - removeParagraph( endLine ); - histLine.append( nextCommand ); - insertParagraph( histLine, -1 ); - } - else { - if (_isInHistory) { - _isInHistory = false; - removeParagraph( endLine ); - histLine.append( _currentCommand ); - insertParagraph( histLine, -1 ); - } - } - moveCursor( QTextEdit::MoveEnd, false ); - } - break; - } - case Key_Left: - // arrow key: process as follows: - // - without , modifiers: move one symbol left (taking into account prompt) - // - with modifier key pressed: move one word left (taking into account prompt) - // - with modifier key pressed: move one symbol left with selection - // - with + modifier keys pressed: move one word left with selection - { - if ( !shftPressed && isCommand( text( curLine ) ) && curCol <= PROMPT_SIZE ) { - setCursorPosition( curLine-1, 0 ); - moveCursor( QTextEdit::MoveLineEnd, false ); - } - else { - QTextEdit::keyPressEvent( e ); - } - break; - } - case Key_Right: - // arrow key: process as follows: - // - without , modifiers: move one symbol right (taking into account prompt) - // - with modifier key pressed: move one word right (taking into account prompt) - // - with modifier key pressed: move one symbol right with selection - // - with + modifier keys pressed: move one word right with selection - { - if ( !shftPressed ) { - if ( curCol < paragraphLength( curLine ) ) { - if ( isCommand( text( curLine ) ) && curCol < PROMPT_SIZE ) { - setCursorPosition( curLine, PROMPT_SIZE ); - break; - } - } - else { - if ( curLine < endLine && isCommand( text( curLine+1 ) ) ) { - setCursorPosition( curLine+1, PROMPT_SIZE ); - break; - } - } - } - QTextEdit::keyPressEvent( e ); - break; - } - case Key_PageUp: - // key: process as follows: - // - without , modifiers: first command in history - // - with modifier key pressed: move cursor one page up without selection - // - with modifier key pressed: move cursor one page up with selection - // - with + modifier keys pressed: scroll one page up - { - if ( ctrlPressed && shftPressed ) { - scrollBy( 0, -visibleHeight() ); - } - else if ( shftPressed ) { - if ( curLine > 0 ) - moveCursor( QTextEdit::MovePgUp, true ); - } - else if ( ctrlPressed ) { - moveCursor( QTextEdit::MovePgUp, false ); - } - else { - QString histLine = _currentPrompt; - if ( ! _isInHistory ) { - _isInHistory = true; - _currentCommand = text( endLine ).remove( 0, PROMPT_SIZE ); - _currentCommand.truncate( _currentCommand.length() - 1 ); - } - QString firstCommand = myInterp->getPrevious(); - QString pcmd; - while ( ( pcmd = QString( myInterp->getPrevious() ) ).compare( BEGIN_HISTORY_PY ) != 0 ) - firstCommand = pcmd; - if ( firstCommand.compare( BEGIN_HISTORY_PY ) != 0 ) { - removeParagraph( endLine ); - histLine.append( firstCommand ); - insertParagraph( histLine, -1 ); - } - moveCursor( QTextEdit::MoveEnd, false ); - } - break; - } - case Key_PageDown: - // key: process as follows: - // - without , modifiers: last command in history - // - with modifier key pressed: move cursor one page down without selection - // - with modifier key pressed: move cursor one page down with selection - // - with + modifier keys pressed: scroll one page down - { - if ( ctrlPressed && shftPressed ) { - scrollBy( 0, visibleHeight() ); - } - else if ( shftPressed ) { - if ( curLine < endLine ) - moveCursor( QTextEdit::MovePgDown, true ); - } - else if ( ctrlPressed ) { - moveCursor( QTextEdit::MovePgDown, false ); - } - else { - if ( _isInHistory ) { - QString histLine = _currentPrompt; - while ( QString( myInterp->getNext() ).compare( TOP_HISTORY_PY ) != 0 ); - _isInHistory = false; - removeParagraph( endLine ); - histLine.append( _currentCommand ); - insertParagraph( histLine, -1 ); - } - moveCursor( QTextEdit::MoveEnd, false ); - } - break; - } - case Key_Home: - // key: process as follows: - // - without , modifiers: move cursor to the beginning of the current line without selection - // - with modifier key pressed: move cursor to the very first symbol without selection - // - with modifier key pressed: move cursor to the beginning of the current line with selection - // - with + modifier keys pressed: move cursor to the very first symbol with selection - { - if ( ctrlPressed ) { - moveCursor( QTextEdit::MoveHome, shftPressed ); - } - else { - if ( isCommand( text( curLine ) ) ) { - int ps1, ps2, cs1, cs2; - bool hasSelection = hasSelectedText(); - if ( hasSelection ) - getSelection( &ps1, &cs1, &ps2, &cs2 ); - removeSelection(); - horizontalScrollBar()->setValue( horizontalScrollBar()->minValue() ); - if ( curCol > PROMPT_SIZE && shftPressed ) - setSelection( curLine, PROMPT_SIZE, curLine, ( hasSelection && ps1 == ps2 && ps1 == curLine && cs2 > PROMPT_SIZE ) ? cs2 : curCol ); - setCursorPosition( curLine, PROMPT_SIZE ); - } - else { - moveCursor( QTextEdit::MoveLineStart, shftPressed ); - } - } - break; - } - case Key_End: - // key: process as follows: - // - without , modifiers: move cursor to the end of the current line without selection - // - with modifier key pressed: move cursor to the very last symbol without selection - // - with modifier key pressed: move cursor to the end of the current line with selection - // - with + modifier keys pressed: move cursor to the very last symbol with selection - { - if ( ctrlPressed ) { - moveCursor( QTextEdit::MoveEnd, shftPressed ); - } - else { - moveCursor( QTextEdit::MoveLineEnd, shftPressed ); - } - break; - } - case Key_Backspace : - // key: process as follows - // - without any modifiers : delete symbol before the cursor / selection (taking into account prompt) - // - with modifier key pressed: delete previous word - // works only for last (command) line - { - if ( curLine == endLine && ( curCol > PROMPT_SIZE || curCol >= PROMPT_SIZE && hasSelectedText() ) ) { - if ( ctrlPressed && !hasSelectedText() ) { - QString txt = text( curLine ); - int ind = curCol-1; - while ( ind > 0 && txt[ ind ] == ' ' ) ind--; - ind = txt.findRev( ' ', ind ) + 1; - if ( ind > PROMPT_SIZE-1 ) { - setSelection( curLine, ind, curLine, curCol ); - removeSelectedText(); - } - else { - QTextEdit::keyPressEvent( e ); - } - } - else { - QTextEdit::keyPressEvent( e ); - } - } - break; - } - case Key_Delete : - // key: process as follows - // - without any modifiers : delete symbol after the cursor / selection (taking into account prompt) - // - with modifier key pressed: delete next word - // works only for last (command) line - { - if ( curLine == endLine && curCol > PROMPT_SIZE-1 ) { - if ( ctrlPressed && !hasSelectedText() ) { - QString txt = text( curLine ); - int ind = curCol; - while ( ind < txt.length()-1 && txt[ ind ] == ' ' ) ind++; - ind = txt.find( ' ', ind ); - while ( ind < txt.length()-1 && txt[ ind ] == ' ' ) ind++; - if ( ind > PROMPT_SIZE-1 ) { - setSelection( curLine, curCol, curLine, ind ); - removeSelectedText(); - } - else { - QTextEdit::keyPressEvent( e ); - } - } - else { - QTextEdit::keyPressEvent( e ); - } - } - break; - } - case Key_Insert : - // key: process as follows - // - with modifier key pressed: copy() - // - with modifier key pressed: paste() to the command line - { - if ( ctrlPressed ) { - copy(); - } - else if ( shftPressed ) { - if ( curLine != endLine || curCol < PROMPT_SIZE ) - moveCursor( QTextEdit::MoveEnd, false ); - paste(); - } - else - QTextEdit::keyPressEvent( e ); - break; - } - } - // NRI : DEBUG PAS TERRIBLE // - if (( e->key() == Key_F3) || - ( e->key() == Key_F4) || - ( e->key() == Key_Return) || - ( e->key() == Key_Escape)) - QAD_Application::getDesktop()->onKeyPress( e ); - // NRI // -} - -void QAD_PyEditor::customEvent(QCustomEvent* e) -{ - switch( e->type() ) { - case PYTHON_OK: - case PYTHON_ERROR: - { - _buf.truncate(0); - setText(myOutput); - setText(myError); - _currentPrompt = READY_PROMPT; - setText(_currentPrompt); - break; - } - case PYTHON_INCOMPLETE: - { - _buf.append("\n"); - _currentPrompt = DOTS_PROMPT; - setText(_currentPrompt); - break; - } - case INITIALIZE: - { - setText(myInterp->getbanner().c_str()); - _buf.truncate(0); - QApplication::restoreOverrideCursor(); - break; - } - case SET_WAIT_CURSOR: - { - viewport()->setCursor( waitCursor ); - break; - } - case UNSET_CURSOR: - { - viewport()->unsetCursor(); - break; - } - default: - QTextEdit::customEvent( e ); - } - - setReadOnly( false ); - _isInHistory = false; -} diff --git a/src/SALOMEGUI/QAD_PyEditor.h b/src/SALOMEGUI/QAD_PyEditor.h deleted file mode 100644 index 941a340df..000000000 --- a/src/SALOMEGUI/QAD_PyEditor.h +++ /dev/null @@ -1,90 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_PyEditor.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef QAD_PyEditor_H -#define QAD_PyEditor_H - -#include -#include - -class QMutex; - -class QAD_PyInterp; -class TInitEditorThread; -class TExecCommandThread; - -class QAD_PyEditor : public QTextEdit -{ - Q_OBJECT; - - friend class TInitEditorThread; - friend class TExecCommandThread; - -public: - enum { PYTHON_OK = QEvent::User + 5000, PYTHON_ERROR, PYTHON_INCOMPLETE, - INITIALIZE, SET_WAIT_CURSOR, UNSET_CURSOR }; - -public: - QAD_PyEditor(QAD_PyInterp*& theInterp, QMutex* theMutex, - QWidget *theParent = 0, const char* theName = ""); - virtual void Init(); - ~QAD_PyEditor(); - - virtual void setText(QString s); - bool isCommand(const QString& str) const; - -protected: - virtual void contentsDropEvent( QDropEvent* event ); - virtual void contentsMouseReleaseEvent( QMouseEvent* event ); - virtual void keyPressEvent (QKeyEvent* event); - virtual void mousePressEvent (QMouseEvent* event); - virtual void customEvent (QCustomEvent* event); - -public slots: - void handleReturn(); - -private: - QString _buf; - QString _currentCommand; - QString _currentPrompt; - bool _isInHistory; - - QAD_PyInterp*& myInterp; - QMutex* myStudyMutex; - QMutex* myInitEditorMutex; - QMutex* myExecCommandMutex; - TInitEditorThread* myInitEditorThread; - TExecCommandThread* myExecCommandThread; - - QString myBanner; - QString myOutput; - QString myError; -}; - -#endif - diff --git a/src/SALOMEGUI/QAD_PyInterp.cxx b/src/SALOMEGUI/QAD_PyInterp.cxx deleted file mode 100644 index d7da14e42..000000000 --- a/src/SALOMEGUI/QAD_PyInterp.cxx +++ /dev/null @@ -1,129 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_PyInterp.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "QAD_PyInterp.h" -#include "utilities.h" - -using namespace std; - - -#ifdef _DEBUG_ -static int MYDEBUG = 0; -#else -static int MYDEBUG = 0; -#endif - - -/*! - * constructor : multi Python interpreter, one per SALOME study. - * calls initialize method defined in base class, which calls virtual methods - * initstate & initcontext redefined here. - */ -QAD_PyInterp::QAD_PyInterp(): PyInterp_base() -{ -} - -QAD_PyInterp::~QAD_PyInterp() -{ -} - -/*! - * EDF-CCAR - * When SALOME uses multi Python interpreter feature, - * Every study has its own interpreter and thread state (_tstate = Py_NewInterpreter()) - * This is fine because every study has its own modules (sys.modules) stdout and stderr - * BUT some Python modules must be imported only once. In multi interpreter context Python - * modules (*.py) are imported several times. - * The pyqt module must be imported only once because it registers classes in a C module. - * It's quite the same with omniorb modules (internals and generated with omniidl) - * This problem is handled with "shared modules" defined in salome_shared_modules.py - * These "shared modules" are imported only once and only copied in all the other interpreters - * BUT it's not the only problem. Every interpreter has its own __builtin__ module. That's fine - * but if we have copied some modules and imported others problems may arise with operations that - * are not allowed in restricted execution environment. So we must impose that all interpreters - * have identical __builtin__ module. - * That's all, for the moment ... - */ - -void QAD_PyInterp::initState() -{ - _tstate = Py_NewInterpreter(); // create an interpreter and save current state - PySys_SetArgv(PyInterp_base::_argc,PyInterp_base::_argv); // initialize sys.argv - if(MYDEBUG) MESSAGE("QAD_PyInterp::initState - this = "<ob_refcnt); // builtinmodule reference counter - _tstate->interp->builtins = PyModule_GetDict(builtinmodule); - Py_INCREF(_tstate->interp->builtins); - } -} - - -void QAD_PyInterp::initContext() -{ - PyObject *m = PyImport_AddModule("__main__"); // interpreter main module (module context) - if(!m){ - if(MYDEBUG) MESSAGE("problem..."); - PyErr_Print(); - ASSERT(0); - return; - } - _g = PyModule_GetDict(m); // get interpreter dictionnary context - if(MYDEBUG) MESSAGE("QAD_PyInterp::initContext - this = "< -#include -#include -#include -#include - -#include -using namespace std; - -/* configuration file */ -static const char* CONFIG_FILE = "config"; - -/* config keys */ -static const char* RES_DIR = "res"; -static const char* RES_DOCS = "docs"; -static const char* RES_PIXMAPS = "icons"; -static const char* RES_STRINGS = "strings"; -static const char* RES_LANGUAGE = "language"; -static const char* RES_FILES = "resources"; - -static const char* SEPARATOR = ":"; - -/*! - Constructor -*/ -QAD_ResourceMgr::QAD_ResourceMgr() : -myRes( 5, false ) -{ - myRes.setAutoDelete( true ); -} - -/*! - Destructor -*/ -QAD_ResourceMgr::~QAD_ResourceMgr() -{ - myRes.clear(); -} - -/*! - Removes icons and messages from 'prefix'_msg_'lang' - and 'prefix'_icons' files. Returns 'true' if OK. - Each application which has its own resources must - have a unique 'prefix' ( prefix "QAD" is reserved ) -*/ -bool QAD_ResourceMgr::removeResources( const char* prefix ) -{ - return myRes.remove(prefix); -} - -/*! - Loads icons and messages from 'prefix'_msg_'lang' - and 'prefix'_icons' files. Returns 'true' if OK. - Each application which has its own resources must - have a unique 'prefix' ( prefix "QAD" is reserved ) -*/ -bool QAD_ResourceMgr::loadResources( const char* prefix, QString &msg ) -{ - bool allLoaded = true; - if ( !myRes[ prefix ] ) { - QCString dir ; - - /* We read the settings once and keep them. - The resources are loaded consequently from the end of directory list - which ( see collectDirs() method description ). This allows to override - resources when it is necessary. - */ - - ResourceSettings* settings = new ResourceSettings(); - StringDict& conf = settings->config(); - myRes.insert( prefix, settings ); - - // settings->config().insert( RES_DIR, new QString( resDir ) ); - - /* we search language definition : we read it in config file - If not found, we use default : English - */ - conf.insert( RES_LANGUAGE, new QString( "en" ) ); - - /* Read configuration file */ - - /* WE MUST HAVE ONE CONFIGURATION FILE FOR ALL SALOME !!! - I DON'T KNOW WHERE READ IT AND SAVE ITS CONTENTS FOR ALL GUI - ALL GUI HAS SAME LANGUAGE AND HAVE DEFAULT (en) IF SPECIFIED - IS NOT FOUND !! - */ - QString resDirs = collectDirs( prefix ); - conf.insert( RES_DIR, new QString( resDirs ) ); - QString fileConfig = QString( prefix ) + QString( "." ) + QString( CONFIG_FILE ); - fileConfig = path( fileConfig, prefix, 0 ) ; - //MESSAGE("QAD_ResourceMgr::loadresources : config : "< 0 ) { - int index; - if ( ( index = line.find( "=" ) ) > 0 ) { - QString key = line.left(index).stripWhiteSpace(); - QString value = line.mid( index+1 ).stripWhiteSpace(); - conf.replace( key, new QString( value ) ); - } - } - } - configFile.close(); - } - } - - /* Load the resources */ - QString stFile( prefix ); - stFile = stFile + "_msg_" + *( conf[ RES_LANGUAGE ] ) + ".qm" ; - QString imagesFile( prefix ); - imagesFile = imagesFile + "_" + RES_PIXMAPS + ".qm"; - if ( conf[ RES_STRINGS ] && !conf[ RES_STRINGS ]->isEmpty() ) - stFile = QAD_Tools::addSlash( *conf[ RES_STRINGS ] ) + stFile; - if ( conf[ RES_PIXMAPS ] && !conf[ RES_PIXMAPS ]->isEmpty() ) - imagesFile = QAD_Tools::addSlash( *conf[ RES_PIXMAPS ] ) + imagesFile; - - bool bLoadString = false; - bool bLoadImages = false; - - QStringList resFiles = conf[ RES_FILES ] ? QStringList::split( SEPARATOR, *( conf[ RES_FILES ] ), false ) : QStringList(); - - // first load main module's resources - QString fileString = path( stFile, prefix, 0 ); - QString fileImage = path( imagesFile, prefix, 0 ); - - if ( !fileString.isEmpty() && settings->load( fileString ) ) { - bLoadString = true; - } - if ( !fileImage.isEmpty() && settings->load( fileImage ) ) { - bLoadImages = true; - } - - // then load additional module's resources if any are given - for ( int j = 0; j < resFiles.count(); j++ ) { - QString stFileAdd = resFiles[j] + "_msg_" + *( conf[ RES_LANGUAGE ] ) + ".qm" ; - QString imagesFileAdd = resFiles[j] + "_" + RES_PIXMAPS + ".qm"; - if ( conf[ RES_STRINGS ] && !conf[ RES_STRINGS ]->isEmpty() ) - stFileAdd = QAD_Tools::addSlash( *conf[ RES_STRINGS ] ) + stFileAdd; - if ( conf[ RES_PIXMAPS ] && !conf[ RES_PIXMAPS ]->isEmpty() ) - imagesFileAdd = QAD_Tools::addSlash( *conf[ RES_PIXMAPS ] ) + imagesFileAdd; - - QString fileStringAdd = path( stFileAdd, prefix, 0 ); - QString fileImageAdd = path( imagesFileAdd, prefix, 0 ); - - if ( !fileStringAdd.isEmpty() ) - settings->load( fileStringAdd ); - if ( !fileImageAdd.isEmpty() ) - settings->load( fileImageAdd ); - } - - if ( !bLoadString ) { - QString warnMsg; - warnMsg.sprintf( "String resources for module %s not found.\n" - "Please, check your settings.", - prefix ); - msg = warnMsg; -// removeResources( prefix ); - return false; - } - if ( !bLoadImages ) { - QString warnMsg; - warnMsg.sprintf( "Icons resources for module %s not found.\n" - "Please, check your settings.", - prefix ); - msg = warnMsg; -// removeResources( prefix ); - return false; - } - allLoaded = bLoadString && bLoadImages; - } - return allLoaded; -} - -/*! - Returns language setting for the module 'prefix' ( e.g. "en" ) -*/ -QString QAD_ResourceMgr::language( const char* prefix ) const -{ - QString ret; - ResourceSettings* rs = myRes[ prefix ]; - if ( rs ) - { - StringDict& conf = rs->config(); - ret = *(conf[RES_LANGUAGE]); - } - return ret; -} - -/*! - Returns list of directories where resources can be located - See collectDirs() method description for more detail -*/ -QString QAD_ResourceMgr::resources( const char* prefix ) const -{ - QString ret; - ResourceSettings* rs = myRes[ prefix ]; - if ( rs ) - { - StringDict& conf = rs->config(); - ret = *(conf[RES_DIR]); - } - return ret; -} - -/*! - Collects list of directories, separated by ';' where resources for module 'prefix' - can be situated - The order is following : - - _ROOT_DIR/share/salome/resources directory - - SALOME_Resources env.var directory ( or directory list ) - - ${HOME}/.salome/resources directory - - ${SALOME_SITE_DIR}/share/${SALOME_SITE_NAME}/resources directory (for SALOME-based applications) - - ${KERNEL_ROOT_DIR}/share/salome/resources directory -*/ -QString QAD_ResourceMgr::collectDirs( const QString& prefix ) const -{ - QString dirList; - QCString envVar; - QString dir; - char* cenv; - - if ( !prefix.isEmpty() ) { - envVar = prefix.latin1() + QCString( "_ROOT_DIR" ); - cenv = getenv( ( const char* ) envVar ); - if ( cenv ) { - dir.sprintf( "%s", cenv ); - if ( !dir.isEmpty() ) { - dir = QAD_Tools::addSlash(dir) ; - dir = dir + "share" ; - dir = QAD_Tools::addSlash(dir) ; - dir = dir + "salome" ; - dir = QAD_Tools::addSlash(dir) ; - dir = dir + "resources" ; - dir = QAD_Tools::addSlash(dir) ; - dirList.append( dirList.isEmpty() ? dir : ( QString( SEPARATOR ) + dir ) ); - } - } - } - - // Try SALOME_Resources env.var directory ( or directory list ) - if ( !prefix.isEmpty() ) { - envVar = QCString( "SALOME_" ) + prefix.latin1() + QCString( "Resources" ); - cenv = getenv( ( const char* ) envVar ); - if ( cenv ) { - dir.sprintf( "%s", cenv ); - if ( !dir.isEmpty() ) - dirList.append( dirList.isEmpty() ? dir : ( QString( SEPARATOR ) + dir ) ); - } - } - // Try ${HOME}/.salome/resources directory - cenv = getenv( "HOME" ); - if ( cenv ) { - dir.sprintf( "%s", cenv ); - if ( !dir.isEmpty() ) { - dir = QAD_Tools::addSlash(dir) ; - dir = dir + ".salome" ; - dir = QAD_Tools::addSlash(dir) ; - dir = dir + "resources" ; - dir = QAD_Tools::addSlash(dir) ; - dirList.append( dirList.isEmpty() ? dir : ( QString( SEPARATOR ) + dir ) ); - } - } - // Try ${SALOME_SITE_DIR}/share/${SALOME_SITE_NAME}/resources directory - cenv = getenv( "SALOME_SITE_DIR" ); - if ( cenv ) { - dir.sprintf( "%s", cenv ); - if ( !dir.isEmpty() ) { - dir = QAD_Tools::addSlash(dir) ; - dir = dir + "share" ; - dir = QAD_Tools::addSlash(dir) ; - cenv = getenv( "SALOME_SITE_NAME" ); - if ( cenv ) - dir = dir + cenv ; - else - dir = dir + "salome" ; - dir = QAD_Tools::addSlash(dir) ; - dir = dir + "resources" ; - dir = QAD_Tools::addSlash(dir) ; - dirList.append( dirList.isEmpty() ? dir : ( QString( SEPARATOR ) + dir ) ); - } - } - // Try ${KERNEL_ROOT_DIR}/share/salome/resources directory - cenv = getenv( "KERNEL_ROOT_DIR" ); - if ( cenv ) { - dir.sprintf( "%s", cenv ); - if ( !dir.isEmpty() ) { - dir = QAD_Tools::addSlash(dir) ; - dir = dir + "share" ; - dir = QAD_Tools::addSlash(dir) ; - dir = dir + "salome" ; - dir = QAD_Tools::addSlash(dir) ; - dir = dir + "resources" ; - dir = QAD_Tools::addSlash(dir) ; - dirList.append( dirList.isEmpty() ? dir : ( QString( SEPARATOR ) + dir ) ); - } - } - //MESSAGE("QAD_ResourceMgr::collectDirs : "<config(); - QString resDirs = QString( *( conf[ RES_DIR ] ) ); - if ( !resDirs.isEmpty() ) { - //MESSAGE("QAD_ResourceMgr::resDirs : <"<") ; - QStringList dirList = QStringList::split( SEPARATOR, resDirs, false ); // skip empty entries - for ( int i = 0; i < dirList.count(); i++ ) { - QString dir = dirList[ i ]; - dir = QAD_Tools::addSlash( dir ); - if ( key && conf[ key ] ) { - dir = dir + QString( *( conf[ key ] ) ); - dir = QAD_Tools::addSlash( dir ); - } - dir = dir + filename; - QFileInfo fileInfo( dir ); - if ( fileInfo.isFile() && fileInfo.exists() ) { - return fileInfo.filePath(); - } - } - } - } - //MESSAGE("QAD_ResourceMgr::path : <"< : "<= 0x030000 // VSR: workaround - crash on qt3.0.5 ========== - static const int magic_length = 16; // length of *.qm file header (qtranslator.cpp) - static const uchar magic[magic_length] = { // magic number for the file - 0x3c, 0xb8, 0x64, 0x18, 0xca, 0xef, 0x9c, 0x95, - 0xcd, 0x21, 0x1c, 0xbf, 0x60, 0xa1, 0xbd, 0xdd }; - QFile f(file); - if ( !f.exists() || f.size() < magic_length) - return false; - char buf[magic_length]; - if ( !f.open(IO_ReadOnly) ) - return false; - bool bOk = ( f.readBlock(buf, magic_length) == magic_length ); - f.close(); - if (!bOk) - return false; - if ( memcmp( (const void *)buf, magic, magic_length ) ) - return false; - if ( f.size() == magic_length) - return true; -#endif // VSR ============================================================= - QTranslator* strTbl = new QTranslator( 0 ); - try { - if ( !strTbl->load( file, "" ) ) { - delete strTbl; - return false; - } - } - catch (...) { - return false; - } - QAD_ASSERT_DEBUG_ONLY( qApp ); - qApp->installTranslator( strTbl ); - return true; -} diff --git a/src/SALOMEGUI/QAD_ResourceMgr.h b/src/SALOMEGUI/QAD_ResourceMgr.h deleted file mode 100644 index 8aaaceb8a..000000000 --- a/src/SALOMEGUI/QAD_ResourceMgr.h +++ /dev/null @@ -1,86 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_ResourceMgr.cxx -// Author : UI team -// Module : SALOME -// $Header$ - -#ifndef QAD_RESOURCEMGR_H -#define QAD_RESOURCEMGR_H - -#include -#include -#include -#include -#include - -#include "QAD.h" -class QAD_EXPORT QAD_ResourceMgr : public QObject -{ - Q_OBJECT - - typedef QDict StringDict; - class ResourceSettings - { - StringDict myConfig; - public: - ResourceSettings() : myConfig( 10, false ) - { myConfig.setAutoDelete( true ); } - ~ResourceSettings() - { myConfig.clear(); } - - StringDict& config() { return myConfig; } - bool load( const QString& filename ); - }; - -public: - QAD_ResourceMgr(); - ~QAD_ResourceMgr(); - -public: - bool loadResources( const char* resname, QString& msg ); - QPixmap loadPixmap( const char* resname, - const QString& id ) const; - bool loadDoc( const char* resname, - const QString& id ) const; - QString language( const char* prefix ) const; - QString resources( const char* prefix ) const; - - QString findFile(const QString& filename, const char* prefix ) const; - QString getFile( const QString& filename, const char* prefix ) const; - - bool removeResources( const char* resname ); - -private: - QString path( const QString& filename, - const char* resname, - const char* key ) const; - QString collectDirs( const QString& prefix ) const; - -private: - QAsciiDict myRes; /* prefix <-> resources */ -}; - -#endif - diff --git a/src/SALOMEGUI/QAD_RightFrame.cxx b/src/SALOMEGUI/QAD_RightFrame.cxx deleted file mode 100644 index 8559ce5fb..000000000 --- a/src/SALOMEGUI/QAD_RightFrame.cxx +++ /dev/null @@ -1,332 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_RightFrame.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "QAD_RightFrame.h" -#include "QAD_Application.h" -#include "QAD_Desktop.h" -#include "QAD_StudyFrame.h" -#include "QAD_Tools.h" -#include "QAD_PyEditor.h" -#include "QAD_PyInterp.h" - -#include - -// QT Include -#include - -// Open CASCADE Include -#include - -using namespace std; - -/*! - \class QAD_RightFrame QAD_RightFrame.h - \brief Frame window which contains QAD_ViewFrame, QAD_PyInterp and QAD_Message. -*/ - -typedef QAD_ViewFrame* View(QAD_RightFrame*); - - -/*! - Constructor -*/ -QAD_RightFrame::QAD_RightFrame(QWidget *theParent, - const char *theTitle, ViewType theTypeView, - QAD_PyInterp*& theInterp, QMutex* theMutex): - QAD_Splitter( Qt::Vertical, theParent, theTitle ), - myViewType(theTypeView), - myInterp(theInterp) -{ - this->setCompressEnabled( true ); - - QAD_Desktop* Desktop = QAD_Application::getDesktop(); - int DesktopHeight = Desktop->getMainFrame()->width(); - int DesktopWidth = Desktop->getMainFrame()->height(); - - OSD_SharedLibrary SharedLib = OSD_SharedLibrary(); - QString ComponentLib; - QCString dir; - QFileInfo fileInfo ; - bool found = false; - if (myViewType == VIEW_OCC) { - if ( (dir = getenv("KERNEL_ROOT_DIR")) && !found ) { - dir = QAD_Tools::addSlash(dir) ; - dir = dir + "lib" ; - dir = QAD_Tools::addSlash(dir) ; - dir = dir + "salome" ; - dir = QAD_Tools::addSlash(dir) ; -#ifdef WNT - dir = dir + "libOCCViewer.dll" ; -#else - dir = dir + "libOCCViewer.so" ; -#endif - MESSAGE ( " GUI library = " << dir ) - fileInfo.setFile(dir) ; - if (fileInfo.exists()) { - ComponentLib = fileInfo.fileName(); - found = true; - MESSAGE (" Found ") - } else - MESSAGE (" Not found ") - } - } else if (myViewType == VIEW_VTK) { - if ( (dir = getenv("KERNEL_ROOT_DIR")) && !found ) { - dir = QAD_Tools::addSlash(dir) ; - dir = dir + "lib" ; - dir = QAD_Tools::addSlash(dir) ; - dir = dir + "salome" ; - dir = QAD_Tools::addSlash(dir) ; -#ifdef WNT - dir = dir + "libVTKViewer.dll" ; -#else - dir = dir + "libVTKViewer.so" ; -#endif - MESSAGE ( " GUI library = " << dir ); - fileInfo.setFile(dir) ; - if (fileInfo.exists()) { - ComponentLib = fileInfo.fileName(); - found = true; - MESSAGE (" Found "); - } else - MESSAGE (" Not found "); - } - } else if (myViewType == VIEW_GRAPHSUPERV) { - if ( (dir = getenv("KERNEL_ROOT_DIR")) && !found ) { - dir = QAD_Tools::addSlash(dir) ; - dir = dir + "lib" ; - dir = QAD_Tools::addSlash(dir) ; - dir = dir + "salome" ; - dir = QAD_Tools::addSlash(dir) ; -#ifdef WNT - dir = dir + "libSUPERVGraph.dll" ; -#else - dir = dir + "libSUPERVGraph.so" ; -#endif - MESSAGE ( " GUI library = " << dir ) - fileInfo.setFile(dir) ; - if (fileInfo.exists()) { - ComponentLib = fileInfo.fileName() ; - found = true; - MESSAGE (" Found ") - } else - MESSAGE (" Not found ") - } - } else if (myViewType == VIEW_PLOT2D) { - if ( (dir = getenv("KERNEL_ROOT_DIR")) && !found ) { - dir = QAD_Tools::addSlash(dir) ; - dir = dir + "lib" ; - dir = QAD_Tools::addSlash(dir) ; - dir = dir + "salome" ; - dir = QAD_Tools::addSlash(dir) ; -#ifdef WNT - dir = dir + "libPlot2d.dll" ; -#else - dir = dir + "libPlot2d.so" ; -#endif - MESSAGE ( " GUI library = " << dir ) - fileInfo.setFile(dir) ; - if (fileInfo.exists()) { - ComponentLib = fileInfo.fileName() ; - found = true; - MESSAGE (" Found ") - } else - MESSAGE (" Not found ") - } - } else { - QMessageBox::critical( this, - tr("ERR_ERROR"), - tr("undefined view type") ); - return; - } - - const Standard_CString aCopyCL = CORBA::string_dup(ComponentLib); - SharedLib.SetName( aCopyCL); - delete(aCopyCL); - - - bool ok = SharedLib.DlOpen(OSD_RTLD_LAZY); - if (!ok) { - QMessageBox::critical( this, - tr("ERR_ERROR"), - tr( SharedLib.DlError() ) ); - return; - } else { - OSD_Function osdF = SharedLib.DlSymb("createView"); - if ( osdF != NULL ) { - View (*f1) = (QAD_ViewFrame* (*) (QAD_RightFrame*)) osdF; - myViewFrame = (*f1)(this); - } else { - QMessageBox::critical( this, - tr("ERR_ERROR"), - tr("createView undefined") ); - return; - } - } - - QValueList sizes; - - myViewFrame->setMinimumSize( 1, 1 ); - mySplitter = new QAD_Splitter( Qt::Horizontal, this ); - mySplitter->setMinimumSize( 1, 1 ); - mySplitter->setCompressEnabled( true ); - - myPyEditor = new QAD_PyEditor(myInterp, theMutex, mySplitter ,"Python Interpreter"); - myPyEditor->setMinimumSize( 1, 1 ); - myPyEditor->Init(); - - myMessage = new QAD_Message( mySplitter ,"Message"); - myMessage->setMinimumSize( 1, 1 ); - - sizes.append( (int)(0.48 * DesktopHeight) ); - sizes.append( (int)(0.16 * DesktopHeight) ); - setSizes( sizes ); - sizes.clear(); - sizes.append( (int)(0.25 * DesktopWidth) ); - sizes.append( (int)(0.25 * DesktopWidth) ); - mySplitter->setSizes( sizes ); -} - -/*! - Destructor -*/ -QAD_RightFrame::~QAD_RightFrame() -{ -} - -QAD_ViewFrame* QAD_RightFrame::getViewFrame() const -{ - return myViewFrame; -} - -/*! - Returns reference to the message window [ static ] -*/ -QAD_Message* QAD_RightFrame::getMessage() const -{ - return myMessage; -} - -/*! - Returns the Python interpreter that belongs to this study -*/ -QAD_PyInterp* QAD_RightFrame::get_PyInterp(void) -{ - return myInterp; -} - -/*! - Returns reference to the Python window [ static ] -*/ -QAD_PyEditor* QAD_RightFrame::getPyEditor() const -{ - return myPyEditor; -} - -/*! - Compress views -*/ -void QAD_RightFrame::compressUp() -{ - QSplitterPHandle* h = getHandleAfter(myViewFrame); - if (h) - h->compressBefore(); -} - -/*! - Uncompress views -*/ -void QAD_RightFrame::unCompressUp() -{ - QSplitterPHandle* h = getHandleAfter(myViewFrame); - if (h) - h->unCompressBefore(); -} - -/*! - Compress Python Interpreter and Messages windows -*/ -void QAD_RightFrame::compressBottom() -{ - QSplitterPHandle* h = getHandleAfter(myViewFrame); - if (h) - h->compressAfter(); -} - -/*! - Uncompress Python Interpreter and Messages windows -*/ -void QAD_RightFrame::unCompressBottom() -{ - QSplitterPHandle* h = getHandleAfter(myViewFrame); - if (h) - h->unCompressAfter(); -} - -void QAD_RightFrame::compressLeft() -{ - QSplitterPHandle* h = mySplitter->getHandleAfter( getPyEditor() ); - if( h ) - h->compressBefore(); -} - -void QAD_RightFrame::compressRight() -{ - QSplitterPHandle* h = mySplitter->getHandleAfter( getPyEditor() ); - if( h ) - h->compressAfter(); -} - -void QAD_RightFrame::unCompressLeft() -{ - QSplitterPHandle* h = mySplitter->getHandleAfter( getPyEditor() ); - if( h ) - h->unCompressBefore(); -} - -void QAD_RightFrame::unCompressRight() -{ - QSplitterPHandle* h = mySplitter->getHandleAfter( getPyEditor() ); - if( h ) - h->unCompressAfter(); -} - -bool QAD_RightFrame::isCompressedViewFrame() const -{ - return isCompressed( myViewFrame ); -} - -bool QAD_RightFrame::isCompressedPython() const -{ - return mySplitter->isCompressed( getPyEditor() ); -} - -bool QAD_RightFrame::isCompressedMessage() const -{ - return mySplitter->isCompressed( getMessage() ); -} - diff --git a/src/SALOMEGUI/QAD_RightFrame.h b/src/SALOMEGUI/QAD_RightFrame.h deleted file mode 100644 index 8b4a10b9e..000000000 --- a/src/SALOMEGUI/QAD_RightFrame.h +++ /dev/null @@ -1,79 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_RightFrame.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef QAD_RightFrame_H -#define QAD_RightFrame_H - -#include "QAD_ViewFrame.h" -#include "QAD_Message.h" -#include "QAD_Splitter.h" - -class QMutex; - -class QAD_PyEditor; -class QAD_PyInterp; - -class QAD_EXPORT QAD_RightFrame : public QAD_Splitter -{ - public: - QAD_RightFrame(QWidget *theParent, - const char *theTitle, ViewType theTypeView, - QAD_PyInterp*& theInterp, QMutex* theMutex); - ~QAD_RightFrame(); - - QAD_ViewFrame* getViewFrame() const; - QAD_PyInterp* get_PyInterp(void); - QAD_Message* getMessage() const; - QAD_PyEditor* getPyEditor() const; - - void compressBottom(); - void compressUp(); - void unCompressBottom(); - void unCompressUp(); - - void compressLeft(); - void compressRight(); - void unCompressLeft(); - void unCompressRight(); - - bool isCompressedViewFrame() const; - bool isCompressedPython() const; - bool isCompressedMessage() const; - -protected: - ViewType myViewType; - - QAD_ViewFrame* myViewFrame; - QAD_PyEditor* myPyEditor; - QAD_Message* myMessage; - QAD_Splitter* mySplitter; - QAD_PyInterp*& myInterp; -}; - -#endif - diff --git a/src/SALOMEGUI/QAD_Settings.cxx b/src/SALOMEGUI/QAD_Settings.cxx deleted file mode 100644 index d1fec9a21..000000000 --- a/src/SALOMEGUI/QAD_Settings.cxx +++ /dev/null @@ -1,250 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_Settings.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "QAD_Settings.h" - -#include - -// QT Includes -#include -#include -#include -#include -using namespace std; - -/*! - Class QAD_Settings is a base class for different kind of settings - (identifying strings and values). -*/ -QAD_Settings::QAD_Settings(QString _sectionName, - QChar _nameStarter, QChar _nameStopper, - QChar _valueStarter, QChar _valueStopper) -{ - sectionName = _sectionName; - nameStarter = _nameStarter; - nameStopper = _nameStopper; - valueStarter = _valueStarter; - valueStopper = _valueStopper; - settingList.setAutoDelete(true); -} - -/*! - Constructor. -*/ -QAD_Settings::QAD_Settings(QString _sectionName, - QChar _nameStarter, - QChar _separator, - QChar _valueStopper) -{ - sectionName = _sectionName; - nameStarter = _nameStarter; - nameStopper = _separator; - valueStopper = _valueStopper; - valueStarter=0; - settingList.setAutoDelete(true); -} -/*! - Constructor. -*/ -QAD_Settings::QAD_Settings(QChar _nameStopper, QChar _valueStarter, - QChar _valueStopper) -{ - sectionName = ""; - nameStarter = 0; - nameStopper = _nameStopper; - valueStarter = _valueStarter; - valueStopper = _valueStopper; - settingList.setAutoDelete(true); -} - - -/*! - Destructor. -*/ -QAD_Settings::~QAD_Settings() -{ -} - - -/*! - Clears all settings. -*/ -void QAD_Settings::clear() -{ - settingList.clear(); -} - - -/*! - Adds a setting. If a setting with the given name is already defined it - gets overwritten. -*/ -void QAD_Settings::addSetting(QString _name, QString _value, bool _autoValue) -{ - // Remove all settings with the same name: - removeSettings(_name.simplifyWhiteSpace()); - - // Add new setting: - QAD_Setting* newSetting = new QAD_Setting(_name.simplifyWhiteSpace(), - _value.simplifyWhiteSpace(), - _autoValue); - settingList.append(newSetting); -} - - -/*! - Adds an int setting. If a setting with the given name is already defined it - gets overwritten. -*/ -void QAD_Settings::addSetting(QString _name, int _value, bool _autoValue) -{ - QString strVal; - strVal.setNum(_value); - - addSetting(_name, strVal, _autoValue); -} - -/*! - Adds a double setting. If a setting with the given name is already defined it - gets overwritten. -*/ -void QAD_Settings::addSetting(QString _name, double _value, bool _autoValue) -{ - QString strVal; - strVal.setNum(_value); - - addSetting(_name, strVal, _autoValue); -} - - -/*! - Removes all setting with the given name (should be unique anyway). -*/ -bool QAD_Settings::removeSettings(QString name) -{ - QAD_Setting* s; - bool ret=false; - - for(s=settingList.first(); s!=0;) { - if(s->getName()==name) { - settingList.remove(s); - s=settingList.current(); - ret=true; - } - else { - s=settingList.next(); - } - } - - return ret; -} - - -/*! - Removes all setting which are not automatically generated. -*/ -void QAD_Settings::removeNonAutoSettings() -{ - QAD_Setting* s; - - for(s=settingList.first(); s!=0;) { - if(!s->isAutoValue()) { - settingList.remove(s); - s=settingList.current(); - } - else { - s=settingList.next(); - } - } -} - - -/*! - Gets the setting value of the given setting. -*/ -QString QAD_Settings::getSetting(QString name) -{ - QAD_Setting* s; - - for(s=settingList.first(); s!=0; s=settingList.next()) { - if(s->getName()==name) return s->getValue(); - } - - return ""; -} - -/*! - Replaces variables in the given string by their values. -*/ -QString QAD_Settings::replace(QString str) -{ - if(!str.contains('$')) return str; - - QAD_Setting* t; - QString result=str.copy(); - int i; - bool found; - - // Replace until we have no occurences of variables or recursive counter>16: - do { - found=false; - for(t=settingList.first(); t!=0; t=settingList.next()) { - if(result.contains('$')) { - i=0; - do { - i = result.find(QRegExp("\\$" + t->getName() + "[^a-zA-z0-9_]"), i); - if(i!=-1) { - result.replace(i, (int)t->getName().length()+1, t->getValue()); - found=true; - } - }while(i!=-1); - } - else goto end; - } - } while(found); - - end: - - return result; -} - -/*! - Returns true if list contains given setting -*/ -bool QAD_Settings::hasSetting(QString name) -{ - QAD_Setting* s; - - for(s=settingList.first(); s!=0; s=settingList.next()) { - if(s->getName()==name) return true; - } - return false; -} - -// EOF - diff --git a/src/SALOMEGUI/QAD_Settings.h b/src/SALOMEGUI/QAD_Settings.h deleted file mode 100644 index 03b17d479..000000000 --- a/src/SALOMEGUI/QAD_Settings.h +++ /dev/null @@ -1,133 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_Settings.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef QAD_SETTINGS_H -#define QAD_SETTINGS_H - -#include -#include -#include - -/*! - Class Setting wraps a single setting with a name and a value. -*/ -class QAD_Setting -{ - -public: - /** Constructor. */ - QAD_Setting() { autoValue=true; } - QAD_Setting( QString _name, QString _value, bool _autoValue=true ) - { name=_name; value=_value; autoValue=_autoValue; } - - ~QAD_Setting() {} - - /** Sets the name of this setting. */ - void setName(QString _name) - { name=_name; } - - /** Gets the name of this setting. */ - QString getName() - { return name; } - - /** Sets the value of this setting. */ - void setValue(QString _value) - { value=_value; } - - /** Gets the value of the setting. */ - QString getValue() - { return value; } - - /** Sets the auto value flag. */ - void setAutoValue(bool _av) - { autoValue=_av; } - - /** Gets the auto value flag. */ - bool isAutoValue() - { return autoValue; } - -private: - QString name; - QString value; - bool autoValue; -}; - - - -class QAD_Settings : public QObject -{ - Q_OBJECT - -public: - /** Constructor. */ - QAD_Settings() { settingList.setAutoDelete(true); } - QAD_Settings(QString _sectionName, - QChar _nameStarter, QChar _nameStopper, - QChar _valueStarter, QChar _valueStopper); - QAD_Settings(QString _sectionName, - QChar _nameStarter, QChar _separator, - QChar _valueStopper); - QAD_Settings(QChar _nameStopper, QChar _valueStarter, - QChar _valueStopper); - virtual ~QAD_Settings(); - - /** Returns the list of settings as a QList. */ - QList* getSettingList() { return &settingList; } - - /** Sets the name of the section where this settings are saved. */ - virtual void setSectionName(QString name) { sectionName=name; } - - virtual void clear(); - virtual void addSetting(QString _name, QString _value, bool _autoValue=true); - virtual void addSetting(QString _name, int _value, bool _autoValue=true); - virtual void addSetting(QString _name, double _value, bool _autoValue=true); - virtual bool removeSettings(QString name); - virtual void removeNonAutoSettings(); - virtual QString getSetting(QString name); - virtual QString replace(QString str); - virtual bool hasSetting(QString name); - -protected: - /** The list which contains all stored settings. */ - QList settingList; - -private: - QString sectionName; - QChar nameStarter; - QChar nameStopper; - QChar valueStarter; - QChar valueStopper; - -}; - -#endif - - - - - diff --git a/src/SALOMEGUI/QAD_SpinBoxDbl.cxx b/src/SALOMEGUI/QAD_SpinBoxDbl.cxx deleted file mode 100644 index dffa96919..000000000 --- a/src/SALOMEGUI/QAD_SpinBoxDbl.cxx +++ /dev/null @@ -1,1227 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : QAD_SpinBoxDbl.cxx -// Author : Vadim SANDLER -// Module : SALOME -// $Header$ - -#include "QAD_SpinBoxDbl.h" -#include -#include -#include -#include -#include -#include -#include -#include -using namespace std; - -//****************************************************************************** -// QDblRangeControl class -//****************************************************************************** - -/*! - Constructs a range control with min value 0.00, max value 99.99, - line step 0.1, page step 1.00, precision 6, double precision 10e-6, - convertion flag 'g' and initial value 0.00. -*/ -QDblRangeControl::QDblRangeControl() -{ - prec = 6; - dblPrec = 10e-6; - convFlag = 'g'; - minVal = roundPrecision( 0.00 ); - maxVal = roundPrecision( 99.99 ); - line = roundPrecision( 0.10 ); - page = roundPrecision( 1.00 ); - prevVal = roundPrecision( -0.10 ); - val = bound( 0.00 ); -} - -/*! - Constructs a range control whose value can never be smaller than - or greater than , whose line step size is - and page step size is and whose value is - initially (which is guaranteed to be in range using bound()), - precision is , double precision is and - convertion flag is -*/ -QDblRangeControl::QDblRangeControl( double minValue, double maxValue, - double lineStep, double pageStep, - double value, - int precision, - double dblPrecision, - char cFlag ) -{ - prec = precision; - dblPrec = dblPrecision; - convFlag = cFlag; - minVal = roundPrecision( minValue ); - maxVal = roundPrecision( maxValue ); - line = roundPrecision( QABS( lineStep ) ); - page = roundPrecision( QABS( pageStep ) ); - prevVal = roundPrecision( minVal - 0.1 ); - val = bound( value ); -} - -/*! - Destroys the range control -*/ -QDblRangeControl::~QDblRangeControl() -{ -} - -/*! - Returns the current range control value. This is guaranteed to be - within the range [minValue(), maxValue()]. -*/ -inline double QDblRangeControl::value() const -{ return val; } - -/*! - Sets the range control's value to and forces it to be within - the legal range. - Calls the virtual valueChange() function if the new value is - different from the previous value. The old value can still be - retrieved using prevValue(). -*/ -void QDblRangeControl::setValue( double value ) -{ - directSetValue( value ); - if ( !equal(prevVal, val ) ) - valueChange(); -} - -/*! - Equivalent to {setValue( value() + pageStep() )}. - If the value is changed, then valueChange() is called. -*/ -void QDblRangeControl::addPage() -{ - setValue( value() + pageStep() ); -} - -/*! - Equivalent to {setValue( value() - pageStep() )}. - If the value is changed, then valueChange() is called. -*/ -void QDblRangeControl::subtractPage() -{ - setValue( value() - pageStep() ); -} - -/*! - Equivalent to {setValue( value() + lineStep() )}. - If the value is changed, then valueChange() is called. -*/ -void QDblRangeControl::addLine() -{ - setValue( value() + lineStep() ); -} - -/*! - Equivalent to {setValue( value() - lineStep() )}. - If the value is changed, then valueChange() is called. -*/ -void QDblRangeControl::subtractLine() -{ - setValue( value() - lineStep() ); -} - -/*! - Returns the current minimum value of the range. -*/ -inline double QDblRangeControl::minValue() const -{ return minVal; } - -/*! - Returns the current maximum value of the range. -*/ -inline double QDblRangeControl::maxValue() const -{ return maxVal; } - -/*! - Sets the range control's min value to and its max value - to . - - Calls the virtual rangeChange() function if one or both of the new - min and max values are different from the previous setting. Calls - the virtual valueChange() function if the current value is adjusted - because it was outside the new range. - - If is smaller than , becomes the - only legal value. -*/ -void QDblRangeControl::setRange( double minValue, double maxValue ) -{ - minValue = roundPrecision( minValue ); - maxValue = roundPrecision( maxValue ); - if ( minValue > maxValue ) { - maxValue = minValue; - } - if ( equal( minValue, minVal ) && equal( maxValue, maxVal ) ) - return; - minVal = minValue; - maxVal = maxValue; - double tmp = bound( val ); - rangeChange(); - if ( !equal( tmp, val ) ) { - prevVal = val; - val = tmp; - valueChange(); - } -} - -/*! - Sets the current minimum value of the range to . - If necessary, the maxValue() is adjusted so that the range remains - valid. -*/ -void QDblRangeControl::setMinValue( double minVal ) -{ - double maxVal = maxValue(); - if ( maxVal < minVal ) - maxVal = minVal; - setRange( minVal, maxVal ); -} - -/*! - Sets the current maximum value of the range to . - If necessary, the minValue() is adjusted so that the range remains - valid. -*/ -void QDblRangeControl::setMaxValue( double maxVal ) -{ - double minVal = minValue(); - if ( minVal > maxVal ) - minVal = maxVal; - setRange( minVal, maxVal ); -} - -/*! - Returns the current line step. -*/ -inline double QDblRangeControl::lineStep() const -{ return line; } - -/*! - Returns the current page step. -*/ -inline double QDblRangeControl::pageStep() const -{ return page; } - -/*! - Sets the range line step to and page step to . - Calls the virtual stepChange() function if the new line step and/or - page step are different from the previous settings. -*/ -void QDblRangeControl::setSteps( double lineStep, double pageStep ) -{ - lineStep = roundPrecision( QABS( lineStep ) ); - pageStep = roundPrecision( QABS( pageStep ) ); - if ( !equal( lineStep, line ) || !equal( pageStep, page ) ) { - line = lineStep; - page = pageStep; - stepChange(); - } -} - -/*! - Returs precision ( see QString::setNum() for details ) -*/ -int QDblRangeControl::precision() const -{ return prec; } - -/*! - Sets precision ( see QString::setNum() for details ) -*/ -void QDblRangeControl::setPrecision( int precision ) -{ - if ( precision > 0 && prec != precision ) { - prec = precision; - setRange( minValue(), maxValue() ); - setSteps( lineStep(), pageStep() ); - } -} - -/*! - Returns double precision which is used for rounding amd comparing - of double numbers -*/ -double QDblRangeControl::dblPrecision() const -{ return dblPrec; } - -/*! - Sets double precision which is used for rounding amd comparing - of double numbers -*/ -void QDblRangeControl::setDblPrecision( double dblPrecision ) -{ - dblPrecision = QABS( dblPrecision ); - if ( dblPrecision > 0 && dblPrecision != dblPrec ) { - dblPrec = dblPrecision; - setRange( minValue(), maxValue() ); - setSteps( lineStep(), pageStep() ); - } -} - -/*! - Returns convertion flag ( see QString::setNum() for details ) -*/ -char QDblRangeControl::convertFlag() const -{ return convFlag; } - -/*! - Sets convertion flag ( see QString::setNum() for details ) -*/ -void QDblRangeControl::setConvertFlag( char cFlag ) -{ - if ( ( cFlag == 'f' || cFlag == 'F' || cFlag == 'e' || - cFlag == 'E' || cFlag == 'g' || cFlag == 'G' ) && - ( cFlag != convFlag ) ) { - convFlag = cFlag; - setRange( minValue(), maxValue() ); - setSteps( lineStep(), pageStep() ); - } -} - -/*! - Forces the value to be within the range from minValue() to - maxValue() inclusive, and returns the result. - - This function is provided so that you can easily force other numbers - than value() into the allowed range. You do not need to call it in - order to use QDblRangeControl itself. -*/ -double QDblRangeControl::bound( double v ) const -{ - if ( v < minVal ) - return minVal; - if ( v > maxVal ) - return maxVal; - return roundPrecision( v ); -} - -/*! - Sets the range control value directly without calling valueChange(). - Forces the new value to be within the legal range. - - You will rarely have to call this function. However, if you want to - change the range control's value inside the overloaded method - valueChange(), setValue() would call the function valueChange() - again. To avoid this recursion you must use directSetValue() - instead. -*/ -void QDblRangeControl::directSetValue( double value ) -{ - prevVal = val; - val = bound( value ); -} - -/*! - Returns the previous value of the range control. "Previous value" - means the value before the last change occurred. Setting a new range - may affect the value, too, because the value is forced to be inside - the specified range. When the range control is initially created, - this is the same as value(). - - prevValue() can be outside the current legal range if a call to - setRange() causes the current value to change. For example, if the - range was [0, 1000] and the current value is 500, setRange(0, 400) - makes value() return 400 and prevValue() return 500. -*/ -inline double QDblRangeControl::prevValue() const -{ return prevVal; } - -/*! - This virtual function is called whenever the range control value - changes. You can reimplement it if you want to be notified when the - value changes. The default implementation does nothing. - - Note that this method is called after the value changed. The previous - value can be retrieved using prevValue(). -*/ -void QDblRangeControl::valueChange() -{ -} - -/*! - This virtual function is called whenever the range control's range - changes. You can reimplement it if you want to be notified when the range - changes. The default implementation does nothing. - - Note that this method is called after the range changed. -*/ -void QDblRangeControl::rangeChange() -{ -} - -/*! - This virtual function is called whenever the range control's - line/page step settings change. You can reimplement it if you want - to be notified when the step changes. The default implementation - does nothing. - - Note that this method is called after the step settings change. -*/ -void QDblRangeControl::stepChange() -{ -} - -/*! - returns true if values qre equal ( with tolerance = dblPrecision() ) -*/ -bool QDblRangeControl::equal( double first, double second ) const -{ - return QABS( first - second ) < dblPrecision(); -} - -/*! - Retuns rounded value -*/ -double QDblRangeControl::roundPrecision( double value) const -{ - bool bOk; - QString convertor; - convertor.setNum( value, convertFlag(), precision() ); - double newValue = convertor.toDouble(&bOk); - if ( bOk ) { - if ( QABS( newValue ) < dblPrecision() ) - newValue = 0.0; - } - else { - newValue = value; - } - return newValue; -} - -//****************************************************************************** -// QAD_SpinBox class -//****************************************************************************** - -/*! - Returns true if ends by [ static ] -*/ -static bool endsWith(const QString& str, const QString& substr) -{ -#if QT_VERSION < 0x030000 - if ( str.length() < substr.length() ) - return false; - return ( str.right( substr.length() ) == substr ); -#else - return str.endsWith(substr); -#endif -} - -/*! - Validator class for double value spin box -*/ -class QAD_SpinBoxDblValidator: public QDoubleValidator -{ -public: - QAD_SpinBoxDblValidator( QAD_SpinBoxDbl* sb, const char* name ) - : QDoubleValidator( sb, name ), - spinBox( sb ) {} - - State validate( QString& str, int& pos ) const; - -private: - QAD_SpinBoxDbl* spinBox; -}; - -/*! - Validates data entered -*/ -QValidator::State QAD_SpinBoxDblValidator::validate( QString& str, int& pos ) const -{ - QString pref = spinBox->prefix(); - QString suff = spinBox->suffix(); - uint overhead = pref.length() + suff.length(); - State state = Invalid; - - ((QDoubleValidator *) this)->setRange( spinBox->minValue(), - spinBox->maxValue() ); - if ( overhead == 0 ) { - state = QDoubleValidator::validate( str, pos ); - } else { - if ( str.length() >= overhead && - str.startsWith(pref) && - endsWith(str, suff) ) { - QString core = str.mid( pref.length(), str.length() - overhead ); - int corePos = pos - pref.length(); - state = QDoubleValidator::validate( core, corePos ); - pos = corePos + pref.length(); - str.replace( pref.length(), str.length() - overhead, core ); - } else { - state = QDoubleValidator::validate( str, pos ); - if ( state == Invalid ) { - // stripWhiteSpace(), cf. QAD_SpinBoxDbl::interpretText() - QString special = spinBox->specialValueText().stripWhiteSpace(); - QString candidate = str.stripWhiteSpace(); - - if ( special.startsWith(candidate) ) { - if ( candidate.length() == special.length() ) { - state = Acceptable; - } else { - state = Intermediate; - } - } - } - } - } - return state; -} - -/*! - Creates a spin box with min value 0.00, max value 99.99, - line step 0.1, precision 6, double precision 10e-6, - convertion flag 'g' and initial value 0.00. -*/ -QAD_SpinBoxDbl::QAD_SpinBoxDbl( QWidget* parent, const char* name ) -: QFrame(parent, name), - QDblRangeControl() -{ - initSpinBox(); -} - -/*! - Constructor - Creates a spin box with min value , max value , - line step , precision , double precision , - convertion flag and initial value -*/ -QAD_SpinBoxDbl::QAD_SpinBoxDbl( QWidget* parent, - double minValue, - double maxValue, - double step, - int precision, - double dblPrecision, - char cFlag, - const char* name ) -: QFrame( parent, name ), - QDblRangeControl( minValue, maxValue, step, step, minValue, precision, dblPrecision, cFlag ) -{ - initSpinBox(); -} - -/*! - Destructor -*/ -QAD_SpinBoxDbl::~QAD_SpinBoxDbl() -{} - -/*! - Internal initialization. -*/ -void QAD_SpinBoxDbl::initSpinBox() -{ - wrap = FALSE; - edited = FALSE; - butSymbols = UpDownArrows; - selreq = FALSE; - - up = new QPushButton( this, "up" ); - up->setFocusPolicy( QWidget::NoFocus ); - up->setAutoDefault( FALSE ); - up->setAutoRepeat( TRUE ); - - down = new QPushButton( this, "down" ); - down->setFocusPolicy( QWidget::NoFocus ); - down->setAutoDefault( FALSE ); - down->setAutoRepeat( TRUE ); - - validate = new QAD_SpinBoxDblValidator( this, "validator" ); - vi = new QLineEdit( this, "line editor" ); - vi->setFrame( FALSE ); - setFocusProxy( vi ); - setFocusPolicy( StrongFocus ); - vi->setValidator( validate ); - vi->installEventFilter( this ); - - setFrameStyle( Panel | Sunken ); - setLineWidth( 2 ); - -// setPalettePropagation( AllChildren ); -// setFontPropagation( AllChildren ); - - setSizePolicy( QSizePolicy( QSizePolicy::MinimumExpanding, QSizePolicy::Fixed ) ); - updateDisplay(); - - connect( up, SIGNAL(pressed()), SLOT(stepUp()) ); - connect( down, SIGNAL(pressed()), SLOT(stepDown()) ); - connect( vi, SIGNAL(textChanged(const QString&)), SLOT(textChanged()) ); -} - -/*! - Returns the current text of the spin box, including any prefix() and suffix(). -*/ -QString QAD_SpinBoxDbl::text() const -{ - return vi->text(); -} - -/*! - Returns a copy of the current text of the spin box with any prefix - and/or suffix and white space at the start and end removed. -*/ -QString QAD_SpinBoxDbl::cleanText() const -{ - QString s = QString(text()).stripWhiteSpace(); - if ( !prefix().isEmpty() ) { - QString px = QString(prefix()).stripWhiteSpace(); - int len = px.length(); - if ( len && s.left(len) == px ) // Remove _only_ if it is the prefix - s.remove( 0, len ); - } - if ( !suffix().isEmpty() ) { - QString sx = QString(suffix()).stripWhiteSpace(); - int len = sx.length(); - if ( len && s.right(len) == sx ) // Remove _only_ if it is the suffix - s.truncate( s.length() - len ); - } - return s.stripWhiteSpace(); -} - -/*! - Sets the special-value text to text. If set, the spin box will - display this text instead of a numeric value whenever the current - value is equal to minVal(). Typically used for indicating that this - choice has a special (default) meaning. -*/ -void QAD_SpinBoxDbl::setSpecialValueText( const QString &text ) -{ - specText = text; - updateDisplay(); -} - -/*! - Returns the currently special-value text, or a null string if no - special-value text is currently set. -*/ -QString QAD_SpinBoxDbl::specialValueText() const -{ - if ( specText.isEmpty() ) - return QString::null; - else - return specText; -} - -/*! - Sets the prefix to . The prefix is prepended to the start of - the displayed value. Typical use is to indicate the unit of - measurement to the user. -*/ -void QAD_SpinBoxDbl::setPrefix( const QString &text ) -{ - pfix = text; - updateDisplay(); -} - -/*! - Sets the suffix to . The suffix is appended to the end of the - displayed value. Typical use is to indicate the unit of measurement - to the user. -*/ -void QAD_SpinBoxDbl::setSuffix( const QString &text ) -{ - sfix = text; - updateDisplay(); -} - -/*! - Returns the currently set prefix, or a null string if no prefix is set. -*/ -QString QAD_SpinBoxDbl::prefix() const -{ - if ( pfix.isEmpty() ) - return QString::null; - else - return pfix; -} - -/*! - Returns the currently set suffix, or a null string if no suffix is set. -*/ -QString QAD_SpinBoxDbl::suffix() const -{ - if ( sfix.isEmpty() ) - return QString::null; - else - return sfix; -} - -/*! - Setting wrapping to TRUE will allow the value to be stepped from the - highest value to the lowest, and vice versa. By default, wrapping is - turned off. -*/ -void QAD_SpinBoxDbl::setWrapping( bool on ) -{ - wrap = on; - updateDisplay(); -} - -/*! - Returns the current setWrapping() value. -*/ -bool QAD_SpinBoxDbl::wrapping() const -{ - return wrap; -} - -/*! - Reimplementation -*/ -QSize QAD_SpinBoxDbl::sizeHint() const -{ - constPolish(); - QFontMetrics fm = fontMetrics(); - int h = vi->sizeHint().height(); - if ( h < 12 ) // ensure enough space for the button pixmaps - h = 12; - int w = 35; // minimum width for the value - int wx = fm.width( ' ' )*2; - QString s; - - QAD_SpinBoxDbl* that = (QAD_SpinBoxDbl*)this; - s = prefix() + that->mapValueToText( that->minValue() ) + suffix(); - w = QMAX( w, fm.width( s ) + wx); - s = prefix() + that->mapValueToText( that->maxValue() ) + suffix(); - w = QMAX(w, fm.width( s ) + wx ); - if ( !specialValueText().isEmpty() ) { - s = specialValueText(); - w = QMAX( w, fm.width( s ) + wx ); - } - QSize r( h * 8/5 // ~ buttons width - + w // widest value - + frameWidth() * 2, // left/right frame - frameWidth() * 2 // top/bottom frame - + h // font height - ); - return r.expandedTo( QApplication::globalStrut() ); -} - -/*! - Does the layout of the lineedit and the buttons -*/ -void QAD_SpinBoxDbl::arrangeWidgets() -{ - if ( !up || !down ) // may happen if the application has a pointer error - return; - - QSize bs; // no, it's short for 'button size' - bs.setHeight( height()/2 - frameWidth() ); - if ( bs.height() < 8 ) - bs.setHeight( 8 ); - bs.setWidth( bs.height() * 8 / 5 ); // 1.6 - approximate golden mean - setFrameRect( QRect( 0, 0, 0, 0 ) ); - - if ( up->size() != bs || down->size() != bs ) { - up->resize( bs ); - down->resize( bs ); - updateButtonSymbols(); - } - - int y = frameWidth(); - int x = width() - y - bs.width(); - up->move( x, y ); - down->move( x, height() - y - up->height() ); - vi->setGeometry( frameWidth(), frameWidth(), - x - frameWidth(), height() - 2*frameWidth() ); -} - -/*! - Sets the current value of the spin box to . This is - QRangeControl::setValue() made available as a slot. -*/ -void QAD_SpinBoxDbl::setValue( double value ) -{ - QDblRangeControl::setValue( value ); -} - -/*! - Increases the current value one step, wrapping as necessary. This is - the same as clicking on the pointing-up button, and can be used for - e.g. keyboard accelerators. -*/ -void QAD_SpinBoxDbl::stepUp() -{ - if ( edited ) - interpretText(); - if ( wrapping() && ( value()+lineStep() > maxValue() ) ) - setValue( minValue() ); - else - addLine(); -} - -/*! - Decreases the current value one step, wrapping as necessary. This is - the same as clicking on the pointing-down button, and can be used - for e.g. keyboard accelerators. -*/ -void QAD_SpinBoxDbl::stepDown() -{ - if ( edited ) - interpretText(); - if ( wrapping() && ( value()-lineStep() < minValue() ) ) - setValue( maxValue() ); - else - subtractLine(); -} - -/*! - Intercepts and handles those events coming to the embedded QLineEdit - which have special meaning for the QAD_SpinBoxDbl. -*/ -bool QAD_SpinBoxDbl::eventFilter( QObject* obj, QEvent* ev ) -{ - if ( obj != vi ) - return FALSE; - - if ( ev->type() == QEvent::KeyPress ) { - QKeyEvent* k = (QKeyEvent*)ev; - - bool retval = FALSE; // workaround for MSVC++ optimization bug - if( (k->key() == Key_Tab) || (k->key() == Key_BackTab) ){ - if ( edited ) - interpretText(); - qApp->sendEvent( this, ev ); - retval = TRUE; - } if ( k->key() == Key_Up ) { - stepUp(); - retval = TRUE; - } else if ( k->key() == Key_Down ) { - stepDown(); - retval = TRUE; - } else if ( k->key() == Key_Return ) { - interpretText(); - return FALSE; - } - if ( retval ) - return retval; - } else if ( ev->type() == QEvent::FocusOut || ev->type() == QEvent::Leave || ev->type() == QEvent::Hide ) { - if ( edited ) { - interpretText(); - } - return FALSE; - } - return FALSE; -} - -/*! - Reimplementation -*/ -void QAD_SpinBoxDbl::leaveEvent( QEvent* ) -{ - if ( edited ) - interpretText(); -} - -/*! - Reimplementation -*/ -void QAD_SpinBoxDbl::resizeEvent( QResizeEvent* ) -{ - arrangeWidgets(); -} - -/*! - Reimplementation -*/ -void QAD_SpinBoxDbl::wheelEvent( QWheelEvent * e ) -{ - e->accept(); - static float offset = 0; - static QAD_SpinBoxDbl* offset_owner = 0; - if (offset_owner != this) { - offset_owner = this; - offset = 0; - } - offset += -e->delta()/120; - if (QABS(offset) < 1) - return; - int ioff = int(offset); - int i; - for (i=0; i 0 ? stepDown() : stepUp(); - offset -= ioff; -} - -/*! - This method gets called by QRangeControl whenever the value has changed. - Updates the display and emits the valueChanged() signals. -*/ -void QAD_SpinBoxDbl::valueChange() -{ - selreq = hasFocus(); - updateDisplay(); - selreq = FALSE; - emit valueChanged( value() ); - emit valueChanged( currentValueText() ); -} - -/*! - This method gets called by QRangeControl whenever the range has - changed. It adjusts the default validator and updates the display. -*/ -void QAD_SpinBoxDbl::rangeChange() -{ - updateDisplay(); -} - -/*! - Sets the validator to . The validator controls what keyboard - input is accepted when the user is editing in the value field. The - default is to use a suitable QIntValidator. -*/ -void QAD_SpinBoxDbl::setValidator( const QValidator* v ) -{ - if ( vi ) - vi->setValidator( v ); -} -/*! - Returns the validator which constrains editing for this spin box if - there is any, or else 0. -*/ -const QValidator* QAD_SpinBoxDbl::validator() const -{ - return vi ? vi->validator() : 0; -} - -/*! - Updates the contents of the embedded QLineEdit to reflect current - value, using mapValueToText(). Also enables/disables the push - buttons accordingly. -*/ -void QAD_SpinBoxDbl::updateDisplay() -{ - vi->setUpdatesEnabled( FALSE ); - vi->setText( currentValueText() ); - if ( selreq && isVisible() && ( hasFocus() || vi->hasFocus() ) ) { - selectAll(); - } else { - if ( !suffix().isEmpty() && - endsWith(vi->text(), suffix()) ) - vi->setCursorPosition( vi->text().length() - suffix().length() ); - } - vi->setUpdatesEnabled( TRUE ); - vi->repaint( FALSE ); // immediate repaint needed for some reason - edited = FALSE; - - up->setEnabled( isEnabled() && (wrapping() || value() < maxValue()) ); - down->setEnabled( isEnabled() && (wrapping() || value() > minValue()) ); - vi->setEnabled( isEnabled() ); -} - -/*! - QAD_SpinBoxDbl calls this after the user has manually edited the contents - of the spin box (not using the up/down buttons/keys). - The default implementation of this function interprets the new text - using mapTextToValue(). If mapTextToValue() is successful, it - changes the spin box' value. If not the value if left unchanged. -*/ -void QAD_SpinBoxDbl::interpretText() -{ - bool ok = TRUE; - bool done = FALSE; - double newVal = 0; - if ( !specialValueText().isEmpty() ) { - QString s = QString(text()).stripWhiteSpace(); - QString t = QString(specialValueText()).stripWhiteSpace(); - if ( s == t ) { - newVal = minValue(); - done = TRUE; - } - } - if ( !done ) - newVal = mapTextToValue( &ok ); - if ( ok ) - setValue( newVal ); - updateDisplay(); // Sometimes redundant -} - -/*! - Returns a pointer to the embedded 'up' button. -*/ - -QPushButton* QAD_SpinBoxDbl::upButton() const -{ - return up; -} - -/*! - Returns a pointer to the embedded 'down' button. -*/ -QPushButton* QAD_SpinBoxDbl::downButton() const -{ - return down; -} - -/*! - Returns a pointer to the embedded QLineEdit. -*/ -QLineEdit* QAD_SpinBoxDbl::editor() const -{ - return vi; -} - -/*! - This slot gets called whenever the user edits the text of the spin box. -*/ -void QAD_SpinBoxDbl::textChanged() -{ - edited = TRUE; // This flag is cleared in updateDisplay() -}; - -/*! - This virtual function is used by the spin box whenever it needs to - display value . The default implementation returns a string - containing printed in the standard way. -*/ - -QString QAD_SpinBoxDbl::mapValueToText( double v ) -{ - QString s; - s.setNum( v, convertFlag(), precision() ); - return s; -} - -/*! - This virtual function is used by the spin box whenever it needs to - interpret the text entered by the user as a value. The default - implementation tries to interpret it as an integer in the standard - way, and returns the double value. -*/ -double QAD_SpinBoxDbl::mapTextToValue( bool* ok ) -{ - QString s = text(); - double newVal = s.toDouble( ok ); - if ( !(*ok) && !( !prefix() && !suffix() ) ) {// Try removing any pre/suffix - s = cleanText(); - newVal = s.toDouble( ok ); - } - return newVal; -} - -/*! - Returns the full text calculated from the current value, including any - prefix, suffix or special-value text. -*/ -QString QAD_SpinBoxDbl::currentValueText() -{ - QString s; - if ( (value() <= minValue()) && !specialValueText().isEmpty() ) { - s = specialValueText(); - } else { - s = prefix(); - s.append( mapValueToText( value() ) ); - s.append( suffix() ); - } - return s; -} - -/*! - Reimplementation -*/ -void QAD_SpinBoxDbl::setEnabled( bool on ) -{ - bool b = isEnabled(); - QFrame::setEnabled( on ); - if ( isEnabled() != b ) { - // ## enabledChange() might have been a better choice - updateDisplay(); - } -} - -/*! - Reimplementation -*/ -void QAD_SpinBoxDbl::styleChange( QStyle& old ) -{ - setFrameStyle( Panel | Sunken ); - arrangeWidgets(); - QWidget::styleChange( old ); -} - -/*! - Sets the spin box to display on its buttons. - can be either (the default) or . -*/ -void QAD_SpinBoxDbl::setButtonSymbols( ButtonSymbols newSymbols ) -{ - if ( buttonSymbols() == newSymbols ) - return; - butSymbols = newSymbols; - updateButtonSymbols(); -} - -/*! - Returns the current button symbol mode. The default is -*/ -QAD_SpinBoxDbl::ButtonSymbols QAD_SpinBoxDbl::buttonSymbols() const -{ - return butSymbols; -} - -/*! - This function uses the pixmap cache for a Different Reason: the - pixmap cache also preserves QPixmap::serialNumber(). by doing - this, QButton::setPixmap() is able to avoid flicker e.g. when the - spin box is resized in such a way that the height of the buttons - does not change (common the default size policy). -*/ -void QAD_SpinBoxDbl::updateButtonSymbols() -{ - QString key( QString::fromLatin1( "$qt$QAD_SpinBoxDbl$" ) ); - bool pmSym = buttonSymbols() == PlusMinus; - key += QString::fromLatin1( pmSym ? "+-" : "^v" ); - key += QString::number( down->height() ); - QString upKey = key + QString::fromLatin1( "$up" ); - QString dnKey = key + QString::fromLatin1( "$down" ); - QBitmap upBm; - QBitmap dnBm; - - bool found = QPixmapCache::find( dnKey, dnBm ) - && QPixmapCache::find( upKey, upBm ); - - if ( !found ) { - QPainter p; - if ( pmSym ) { - int h = down->height()-4; - if ( h < 3 ) - return; - else if ( h == 4 ) - h = 3; - else if ( (h > 6) && (h & 1) ) - h--; - h -= ( h / 8 ) * 2; // Empty border - dnBm.resize( h, h ); - p.begin( &dnBm ); - p.eraseRect( 0, 0, h, h ); - p.setBrush( color1 ); - int c = h/2; - p.drawLine( 0, c, h, c ); - if ( !(h & 1) ) - p.drawLine( 0, c-1, h, c-1 ); - p.end(); - upBm = dnBm; - p.begin( &upBm ); - p.drawLine( c, 0, c, h ); - if ( !(h & 1) ) - p.drawLine( c-1, 0, c-1, h ); - p.end(); - } - else { - int w = down->width()-4; - if ( w < 3 ) - return; - else if ( !(w & 1) ) - w--; - w -= ( w / 7 ) * 2; // Empty border - int h = w/2 + 2; // Must have empty row at foot of arrow - dnBm.resize( w, h ); - p.begin( &dnBm ); - p.eraseRect( 0, 0, w, h ); - QPointArray a; - a.setPoints( 3, 0, 1, w-1, 1, h-2, h-1 ); - p.setBrush( color1 ); - p.drawPolygon( a ); - p.end(); -#ifndef QT_NO_TRANSFORMATIONS - QWMatrix wm; - wm.scale( 1, -1 ); - upBm = dnBm.xForm( wm ); -#else - upBm.resize( w, h ); - p.begin( &upBm ); - p.eraseRect( 0, 0, w, h ); - a.setPoints( 3, 0, h-2, w-1, h-2, h-2, 0 ); - p.setBrush( color1 ); - p.drawPolygon( a ); - p.end(); -#endif - } - QPixmapCache::insert( dnKey, dnBm ); - QPixmapCache::insert( upKey, upBm ); - } - down->setPixmap( dnBm ); - up->setPixmap( upBm ); -} - -/*! - Returns minimum value, reimplementaion -*/ -double QAD_SpinBoxDbl::minValue() -{ - return QDblRangeControl::minValue(); -} - -/*! - Returns maximum value, reimplementaion -*/ -double QAD_SpinBoxDbl::maxValue() -{ - return QDblRangeControl::maxValue(); -} - -/*! - Sets minimum value, reimplementaion -*/ -void QAD_SpinBoxDbl::setMinValue( double minValue ) -{ - QDblRangeControl::setMinValue( minValue ); -} - -/*! - Sets maximum value, reimplementaion -*/ -void QAD_SpinBoxDbl::setMaxValue( double maxValue ) -{ - QDblRangeControl::setMaxValue( maxValue ); -} - -/*! - Returns step size, reimplementaion -*/ -double QAD_SpinBoxDbl::lineStep() -{ - return QDblRangeControl::lineStep(); -} - -/*! - Sets step size -*/ -void QAD_SpinBoxDbl::setLineStep( double step ) -{ - setSteps( step, pageStep() ); -} - -/*! - Returns value of the spin box, reimplementaion -*/ -double QAD_SpinBoxDbl::value() -{ - QAD_SpinBoxDbl* that = ( QAD_SpinBoxDbl* ) this; - if ( edited ) { - that->edited = FALSE; // avoid recursion - that->interpretText(); - } - return QDblRangeControl::value(); -} - -/*! - Selects all the text in the editor of the spinbox. -*/ -void QAD_SpinBoxDbl::selectAll() -{ - int overhead = prefix().length() + suffix().length(); - if ( !overhead || currentValueText() == specialValueText() ) { - vi->selectAll(); - } else { - vi->setSelection( prefix().length(), vi->text().length() - overhead ); - } -} diff --git a/src/SALOMEGUI/QAD_SpinBoxDbl.h b/src/SALOMEGUI/QAD_SpinBoxDbl.h deleted file mode 100644 index 87c55f7e2..000000000 --- a/src/SALOMEGUI/QAD_SpinBoxDbl.h +++ /dev/null @@ -1,193 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : QAD_SpinBoxDbl.h -// Author : Vadim SANDLER -// Module : SALOME -// $Header$ - -#ifndef QAD_SPINBOXDBL_H -#define QAD_SPINBOXDBL_H - -#include "QAD.h" -#include - -class QAD_EXPORT QDblRangeControl -{ -public: - QDblRangeControl(); - QDblRangeControl( double minValue, double maxValue, - double lineStep, double pageStep, - double value, - int precision = 6, - double dblPrecision = 1e-6, - char cFlag = 'g'); - virtual ~QDblRangeControl(); - double value() const; - void setValue( double ); - void addPage(); - void subtractPage(); - void addLine(); - void subtractLine(); - - double minValue() const; - double maxValue() const; - void setRange( double minValue, double maxValue ); - void setMinValue( double minVal ); - void setMaxValue( double minVal ); - - double lineStep() const; - double pageStep() const; - void setSteps( double line, double page ); - - int precision() const; - void setPrecision( int precision ); - double dblPrecision() const; - void setDblPrecision( double dblPrecision ); - char convertFlag() const; - void setConvertFlag( char cFlag ); - - double bound( double ) const; - -protected: - void directSetValue( double val ); - double prevValue() const; - - virtual void valueChange(); - virtual void rangeChange(); - virtual void stepChange(); - bool equal( double first, double second ) const; - double roundPrecision( double value) const; - -private: - double minVal, maxVal; - double line, page; - double val, prevVal; - int prec; - double dblPrec; - char convFlag; - -private: // Disabled copy constructor and operator= -#if defined(Q_DISABLE_COPY) - QDblRangeControl( const QDblRangeControl & ); - QDblRangeControl &operator=( const QDblRangeControl & ); -#endif -}; - -class QPushButton; -class QLineEdit; -class QValidator; - -class QAD_EXPORT QAD_SpinBoxDbl: public QFrame, public QDblRangeControl -{ - Q_OBJECT - -public: - QAD_SpinBoxDbl( QWidget* parent, const char* name = 0 ); - QAD_SpinBoxDbl( QWidget* parent, - double minValue, - double maxValue, - double step, - int precision = 6, - double dblPrecision = 1e-6, - char cFlag = 'g', - const char* name = 0 ); - ~QAD_SpinBoxDbl(); - - QString text() const; - - virtual QString prefix() const; - virtual QString suffix() const; - virtual QString cleanText() const; - - virtual void setSpecialValueText( const QString &text ); - QString specialValueText() const; - - virtual void setWrapping( bool on ); - bool wrapping() const; - - enum ButtonSymbols { UpDownArrows, PlusMinus }; - void setButtonSymbols( ButtonSymbols ); - ButtonSymbols buttonSymbols() const; - - virtual void setValidator( const QValidator* v ); - const QValidator* validator() const; - - QSize sizeHint() const; - - double minValue(); - double maxValue(); - void setMinValue( double ); - void setMaxValue( double ); - double lineStep(); - void setLineStep( double ); - double value(); - -public slots: - virtual void setValue( double ); - virtual void setPrefix( const QString &text ); - virtual void setSuffix( const QString &text ); - virtual void stepUp(); - virtual void stepDown(); - virtual void setEnabled( bool ); - virtual void selectAll(); - -signals: - void valueChanged( double value ); - void valueChanged( const QString &valueText ); - -protected: - virtual QString mapValueToText( double value ); - virtual double mapTextToValue( bool* ok ); - QString currentValueText(); - - virtual void updateDisplay(); - virtual void interpretText(); - - QPushButton* upButton() const; - QPushButton* downButton() const; - QLineEdit* editor() const; - - virtual void valueChange(); - virtual void rangeChange(); - - bool eventFilter( QObject* obj, QEvent* ev ); - void resizeEvent( QResizeEvent* ev ); - void wheelEvent( QWheelEvent * ); - void leaveEvent( QEvent* ); - - void styleChange( QStyle& ); - -protected slots: - void textChanged(); - -private: - void initSpinBox(); - - ButtonSymbols butSymbols; - QPushButton* up; - QPushButton* down; - QLineEdit* vi; - QValidator* validate; - QString pfix; - QString sfix; - QString specText; - bool wrap; - bool edited; - bool selreq; - - void arrangeWidgets(); - void updateButtonSymbols(); - - private: // Disabled copy constructor and operator= -#if defined(Q_DISABLE_COPY) - QAD_SpinBoxDbl( const QAD_SpinBoxDbl& ); - QAD_SpinBoxDbl& operator=( const QAD_SpinBoxDbl& ); -#endif - -}; - -#endif diff --git a/src/SALOMEGUI/QAD_Splitter.cxx b/src/SALOMEGUI/QAD_Splitter.cxx deleted file mode 100644 index 0d620f597..000000000 --- a/src/SALOMEGUI/QAD_Splitter.cxx +++ /dev/null @@ -1,54 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_Splitter.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "QAD_Splitter.h" -using namespace std; - -/*! - Constructs an horizontal splitter. -*/ - -QAD_Splitter::QAD_Splitter( QWidget *parent, const char *name ) - :QSplitterP(parent,name) -{ -} - -/*! - Constructs splitter with orientation \a o. -*/ -QAD_Splitter::QAD_Splitter( Orientation o, QWidget *parent, const char *name ) - :QSplitterP(o, parent, name) -{ -} - -/*! - Destructs the splitter. -*/ -QAD_Splitter::~QAD_Splitter() -{ -} diff --git a/src/SALOMEGUI/QAD_Splitter.h b/src/SALOMEGUI/QAD_Splitter.h deleted file mode 100644 index cab61251e..000000000 --- a/src/SALOMEGUI/QAD_Splitter.h +++ /dev/null @@ -1,43 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_Splitter.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef QAD_SPLITTER_H -#define QAD_SPLITTER_H - -#include - -class QSplitterP; -class QAD_Splitter : public QSplitterP -{ -public: - QAD_Splitter( QWidget *parent=0, const char *name=0 ); - QAD_Splitter( Orientation, QWidget *parent=0, const char *name=0 ); - ~QAD_Splitter(); -}; - -#endif diff --git a/src/SALOMEGUI/QAD_Study.cxx b/src/SALOMEGUI/QAD_Study.cxx deleted file mode 100644 index b52002cb2..000000000 --- a/src/SALOMEGUI/QAD_Study.cxx +++ /dev/null @@ -1,1389 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_Study.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -/*! - \class QAD_Study QAD_Study.h - \brief Study for QAD-based application. -*/ - -#include "QAD.h" -#include "QAD_Tools.h" -#include "QAD_Desktop.h" -#include "QAD_Study.h" -#include "QAD_RightFrame.h" -#include "QAD_LeftFrame.h" -#include "QAD_MessageBox.h" -#include "QAD_Application.h" -#include "QAD_ObjectBrowser.h" -#include "QAD_PyInterp.h" -#include "QAD_Config.h" -#include "QAD_PyInterp.h" - -#include "utilities.h" - -#include "SALOME_Selection.h" -#include "SALOME_TypeFilter.hxx" -#include "SALOME_InteractiveObject.hxx" -#include "SALOME_ListIteratorOfListIO.hxx" - -#include -#include CORBA_SERVER_HEADER(SALOMEDS) - -// OPEN CASCADE Include -#include - -// QT Include -#include -#include -#include - -using namespace std; - - -#ifdef _DEBUG_ -static int MYDEBUG = 1; -#else -static int MYDEBUG = 0; -#endif - - -class TInitStudyThread : public QThread{ - TInitStudyThread(); - TInitStudyThread(const TInitStudyThread&); - -public: - TInitStudyThread(QAD_PyInterp*& theInterp, QMutex* theMutex): - myInterp(theInterp), - myStudyLock(new ThreadLock(theMutex,"TInitStudyThread::TInitStudyThread")) - {} - virtual ~TInitStudyThread() { - if(myStudyLock) - delete myStudyLock; - } - -protected: - virtual void run(){ - { - ThreadLock aPyLock = GetPyThreadLock("TInitStudyThread::aPyLock"); - if(MYDEBUG) MESSAGE("TInitStudyThread::run()"); - myInterp = new QAD_PyInterp(); - myInterp->initialize(); - } - delete myStudyLock; - myStudyLock = NULL; - } - -private: - QAD_PyInterp*& myInterp; - ThreadLock* myStudyLock; -}; - - -/*! - Constructor -*/ -QAD_Study::QAD_Study(QAD_Application* theApp, - SALOMEDS::Study_var theStudy, - const QString& thePath): - myStudy(theStudy), - myOperationState(Undef), - myApp(theApp), - myActiveStudyFrame(0), - myStudyFrameCount(0), - myPath(thePath), - myTitle(QAD_Tools::getFileNameFromPath(thePath,true)), - myIsActive(false), - myIsSaved(false), - myIsModified(false), - myIsReadOnly(false), - myResult(true), - myInterp(0), - myInitStudyThread(0), - myMutex(new QMutex()) -{ - myStudyFrames.setAutoDelete( true ); - myOperations.setAutoDelete( true ); - myChildWidgets.setAutoDelete( true ); - - /* create default selection */ - //NRI Selection( "Salome" ); - Selection( QAD_Application::getDesktop()->getComponentUserName( "KERNEL" ) ); - - /* create python interpreter */ - myInitStudyThread = new TInitStudyThread(myInterp,myMutex); - myInitStudyThread->start(); - - /* create study frame */ - createStudyFrame( getNextStudyFrameName() ); - - /* set default Undo/Redo limit */ - QAD_ASSERT_DEBUG_ONLY( !myStudy->_is_nil() ); - SALOMEDS::StudyBuilder_var SB = myStudy->NewBuilder(); - - int aLocked = myStudy->GetProperties()->IsLocked(); - if (aLocked) myStudy->GetProperties()->SetLocked(false); - SB->UndoLimit(QAD_Desktop::getUndoLevel()); - if (aLocked) myStudy->GetProperties()->SetLocked(true); -} - - -void QAD_Study::Init() -{ -} - - -/*! - Destructor -*/ -QAD_Study::~QAD_Study () -{ - close(); - //SRN: added - clear selection in case the study will be loaded again so the title will coincide - SALOME_Selection::RemoveSelection( QString(myTitle + "_" + mySelection) ); - { - { - ThreadLock aLock(myMutex,"QAD_Study::~QAD_Study()"); - delete myInitStudyThread; - } - delete myMutex; - delete myInterp; - } -} - -/*! - Returns TRUE if Study is created correctly. Returns FALSE otherwise. -*/ -bool QAD_Study::getResult() -{ - return myResult; -} - - -//=======================================================================// -// StudyFrames management // -//=======================================================================// -/*! - Adds study frame -*/ -void QAD_Study::addStudyFrame(QAD_StudyFrame* sf ) -{ - myStudyFrames.append( sf ); - - sf->getRightFrame()->getViewFrame()->setPopupServer( myApp ); - // Provide the same common popup menu commands for both the Object Browser and 3D viewer - sf->getLeftFrame()->getObjectBrowser()->setPopupServer( myApp ); - - /* icon of Study Frame */ - const QPixmap& icon = myApp->getApplicationIcon(); - if ( !icon.isNull() ) - sf->setIcon ( icon ); - - /* activation */ - QAD_ASSERT ( connect( sf, SIGNAL(sfStudyFrameActivated(QAD_StudyFrame*) ), - SLOT(onStudyFrameActivated(QAD_StudyFrame*))) ); - - /* closing */ - QAD_ASSERT ( connect( sf, - SIGNAL(sfStudyFrameClosing(QAD_StudyFrame*) ), - this, - SLOT(onLastStudyFrameClosing(QAD_StudyFrame*))) ); - - /* set active sf */ - myActiveStudyFrame = sf; -} - -/*! - Removes studyframe from the list -*/ -void QAD_Study::removeStudyFrame( QAD_StudyFrame* sf ) -{ - if (sf) { - if (!myStudy->IsEmpty()) { - SALOMEDS::SObject_var fatherSF = myStudy->FindObjectID(sf->entry()); - if (!fatherSF->_is_nil()) { - SALOMEDS::StudyBuilder_var aStudyBuilder = myStudy->NewBuilder(); - int aLocked = myStudy->GetProperties()->IsLocked(); - if (aLocked) myStudy->GetProperties()->SetLocked(false); - aStudyBuilder->RemoveObject(fatherSF); - if (aLocked) myStudy->GetProperties()->SetLocked(true); - } - - updateObjBrowser( true ); - } - - QAD_RightFrame* rightFrame = sf->getRightFrame(); - if ( rightFrame ) { - QAD_ViewFrame* viewFrame = rightFrame->getViewFrame(); - if ( viewFrame ) - emit supervStudyFrameClosing( viewFrame ); - } - - myStudyFrames.removeRef( sf ); - } -} - -/*! - Returns number of study frames -*/ -int QAD_Study::getStudyFramesCount() const -{ - return myStudyFrames.count(); -} - -/*! - Returns study frame by its index in list -*/ -QAD_StudyFrame* QAD_Study::getStudyFrame( unsigned i ) -{ - return myStudyFrames.at(i); -} - -/*! - Returns study frame by its name or null if not found -*/ -QAD_StudyFrame* QAD_Study::getStudyFrameByName ( const QString& name ) -{ - for ( QAD_StudyFrame* sf = myStudyFrames.first(); sf; sf = myStudyFrames.next() ) - { - if ( sf->title().compare(name) == 0 ) { - return sf; - } - } - return NULL; -} - -/*! - Returns first study frame in the list -*/ -QAD_StudyFrame* QAD_Study::getFirstStudyFrame() -{ - return myStudyFrames.first(); -} - -/*! - Returns last study frame in the list -*/ -QAD_StudyFrame* QAD_Study::getLastStudyFrame() -{ - return myStudyFrames.last(); -} - -/*! - Returns the vector of studyframes -*/ -const QList& QAD_Study::getStudyFrames() const -{ - return myStudyFrames; -} - -/*! - Returns the active study frame -*/ -QAD_StudyFrame* QAD_Study::getActiveStudyFrame() const -{ - return myActiveStudyFrame; -} - -//=======================================================================// -// Study properties // -//=======================================================================// -/*! - Returns reference to supporting application -*/ -QAD_Application* QAD_Study::getApp() const -{ - return myApp; -} - -/*! - Returns the name of document ( filename without path and extension ) -*/ -const QString& QAD_Study::getTitle() const -{ - return myTitle; -} - -/*! - Returns the absolute file path of this document -*/ -const QString& QAD_Study::getPath() const -{ - return myPath; -} - -/*! - Changes the name of document -*/ -void QAD_Study::setTitle( const QString& path ) -{ - myPath = path; - - QString title = QAD_Tools::getFileNameFromPath( path, true ); - QAD_ASSERT_DEBUG_ONLY ( !title.isNull() ); - - for ( QAD_StudyFrame* sf = myStudyFrames.first(); sf ; sf = myStudyFrames.next() ) - { - QString oldName = sf->title(); - int k = oldName.find( myTitle, 0, false ); - QString restName = ( oldName.length() > myTitle.length() + k) ? - oldName.right(oldName.length() - (myTitle.length() + k) + 1) : - QString( "" ); - - if ( k != -1 ) - { - QString newName; - if ( k == 0 ) { - int l = restName.find( "#", 0, false ); - int ll = restName.length(); - newName = title + restName.mid( l, ll-l ); - } else { - newName = oldName.mid(0, k); - newName = newName + title + restName; - } - sf->setTitle( newName ); - } - } - myTitle = title; - - Selection( QAD_Application::getDesktop()->getActiveComponent() ); -} - -/*! - Returns whether the document is active -*/ -bool QAD_Study::isActive() const -{ - return myIsActive; -} - -/*! - Returns whether the document is read only -*/ -bool QAD_Study::isReadOnly() const -{ - return myIsReadOnly; -} - -/*! - Sets read-only property -*/ -void QAD_Study::setReadOnly(bool state) -{ - myIsReadOnly = state; -} - -bool QAD_Study::isLocked() -{ - bool state = false; - if ( !CORBA::is_nil( myStudy ) ) - state = myStudy->GetProperties()->IsLocked(); - return state; -} - -//=======================================================================// -// Study operations // -//=======================================================================// -/*! - Performs specific study frame related actions when it is activated. - By default resumes all suspended operations. -*/ -void QAD_Study::onStudyFrameActivated( QAD_StudyFrame* activeStudyFrame ) -{ -// static int IS_FIRST_STUDY = 1; -// if(IS_FIRST_STUDY){ //for normally initialize "salome.py and ..." -// _interp->run(""); IS_FIRST_STUDY = 0; -// } -// bool found = false; - for ( QPtrListIterator it( myStudyFrames ); it.current(); ++it ) { - if ( it.current() == activeStudyFrame) { /* one of my study frames */ -// found = true; -// if ( !myActiveStudyFrame || myActiveStudyFrame != activeStudyFrame ) { - myActiveStudyFrame = activeStudyFrame; - //NRI if ( !myIsActive ) { - myIsActive = true; - resumeAllOperations(); - /* activate application */ - myApp->onStudyActivated( this ); - //NRI } -// } -// return; - } - } -// if (!found) -// myActiveStudyFrame = 0; -} - - -/*! - Performs specific study related actions when it is deactivated. - By default suspends all performing operations. -*/ -void QAD_Study::onStudyDeactivated() -{ - // MESSAGE ("QAD_Study::onStudyDeactivated init. "); - myIsActive = false; - suspendAllOperations(); - // MESSAGE ("QAD_Study::onStudyDeactivated done. "); -} - -/*! - Closes all study frames of the study and performs other specific study - related actions needed for proper closing of the study -*/ -void QAD_Study::close() -{ - emit closed(); - if ( !myStudy->_is_nil() ) - abortAllOperations(); - /* clear each study frame */ - for ( QAD_StudyFrame* sf = myStudyFrames.first(); sf; sf = myStudyFrames.first() ) { - sf->disconnect(); - sf->close(); - // SAL2200 - QApplication::sendPostedEvents(); - removeStudyFrame(sf); - } - - /* delete all studyframes */ - myStudyFrames.clear(); - myOperations.clear(); - myChildWidgets.clear(); - -// QWorkspace* ws = QAD_Application::getDesktop()->getMainFrame(); -// if (/* !ws->activeWindow() && */ws->windowList().count() > 0 ) -// ws->activateWindow(ws->windowList().last()); -} - -//=======================================================================// -// Operations management // -//=======================================================================// -/*! - Returns number of completed operations -*/ -int QAD_Study::getOperationsCount() const -{ - return myOperations.count(); -} - -/*! - Returns the state of the last operation -*/ -OperationState QAD_Study::getOperationState() const -{ - return myOperationState; -} - -/*! - Returns operation by its index in list -*/ -QAD_Operation* QAD_Study::getOperation( unsigned i) -{ - return ( myOperations.isEmpty() ? 0 : myOperations.at(i) ); -} - -/*! - Returns performing operation launched first -*/ -QAD_Operation* QAD_Study::getFirstOperation() -{ - return ( myOperations.isEmpty() ? 0 : myOperations.first() ); -} - -/*! - Returns performing operation launched last -*/ -QAD_Operation* QAD_Study::getLastOperation() -{ - return ( myOperations.isEmpty() ? 0 : myOperations.last() ); -} - -/*! - Aborts all performing operations -*/ -void QAD_Study::abortAllOperations() -{ - for ( QAD_Operation* op = myOperations.last(); op; - op = myOperations.prev() ) - op->abort(); -} - -/*! - Resumes all performing operations -*/ -void QAD_Study::resumeAllOperations() -{ - for ( QAD_Operation* op = myOperations.first(); op; - op = myOperations.next() ) - op->resume(); -} - -/*! - Suspendes all performing operations -*/ -void QAD_Study::suspendAllOperations() -{ - // MESSAGE ( " QAD_Study::suspendAllOperations init. " ) - for ( QAD_Operation* op = myOperations.last(); op; - op = myOperations.prev() ) - op->suspend(); -} - -/*! - Initializes the operation and checks its compatibility - with another operation in process if any. - Returns 'true' if init'ed OK, 'false' otherwise. -*/ -bool QAD_Study::initOperation( QAD_Operation* op ) -{ - if ( myIsReadOnly ) - { /* can't start a non-const operation */ - if ( op->changesData() ) - { - QAD_MessageBox::error1( QAD_Application::getDesktop(), tr("ERR_ERROR"), - tr("ERR_DOC_READONLY"), tr("BUT_OK") ); - return false; - } - } - - /* Add the new operation - */ - if ( myOperations.isEmpty() ) - myOperations.append( op ); - else - { - /* Check compatibility of new operation with the existing operations. - Since each operations is checked in that way, it's enough to check - the last operation only */ - if ( !getLastOperation()->compatibleWith( op ) ) - { - if ( QAD_MessageBox::warn2( QAD_Application::getDesktop(), tr("WRN_WARNING"), - tr("QUE_ABORTCURRENTOPERATION"), tr("BUT_YES"), - tr("BUT_NO"), QAD_YES, QAD_NO, QAD_NO ) - == QAD_NO ) - return false; - getLastOperation()->abort(); - } - myOperations.append( op ); - } - return true; -} - -/*! - Called when operation was finished. - Removes appointed operation from the list and aborted all operations - launched after it. -*/ -void QAD_Study::clearOperation( QAD_Operation* op) -{ - if ( myOperations.contains( op ) ) - { - /* abort all the operations launched after 'op' */ - for ( QAD_Operation* cur = myOperations.last(); cur; - cur = myOperations.prev() ) - { - if ( cur == op ) break; - cur->abort(); - } - myOperations.remove( op ); - } -} - -/*! - Creates study frame -*/ -QAD_StudyFrame* QAD_Study::createStudyFrame( const QString& title, ViewType theViewType) -{ - QAD_Desktop* parent = QAD_Application::getDesktop(); -//srn: Forbid appending Interface Applicative and its children to UseCase - myStudy->EnableUseCaseAutoFilling(false); - - SALOMEDS::SComponent_var father = myStudy->FindComponent("Interface Applicative"); - SALOMEDS::StudyBuilder_var aStudyBuilder = myStudy->NewBuilder(); - SALOMEDS::GenericAttribute_var anAttr; - SALOMEDS::AttributeName_var aName; - SALOMEDS::AttributeComment_var aComment; - SALOMEDS::AttributeSelectable_var aSelAttr; - -// mpv : where is "NewCommand" call? -// aStudyBuilder->CommitCommand(); - -// mpv : is study is locked, then next code will raise exception. So, temporary unlock study - int aLocked = myStudy->GetProperties()->IsLocked(); - if (aLocked) myStudy->GetProperties()->SetLocked(false); - - if ( father->_is_nil() ) { - father = aStudyBuilder->NewComponent("Interface Applicative"); - anAttr = aStudyBuilder->FindOrCreateAttribute(father, "AttributeName"); - aName = SALOMEDS::AttributeName::_narrow(anAttr); - aName->SetValue("Interface Applicative"); - - anAttr = aStudyBuilder->FindOrCreateAttribute(father, "AttributeSelectable"); - aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr); - aSelAttr->SetSelectable(false); - } - - //VRV: T2.5 - add default viewer - if(theViewType == VIEW_TYPE_MAX) { - QString viewerValue = QAD_CONFIG->getSetting( "Viewer:DefaultViewer" ); - bool ok; - theViewType = (ViewType)viewerValue.toInt( &ok, 10 ); - if (!ok || theViewType < VIEW_OCC || theViewType >= VIEW_TYPE_MAX) - theViewType = VIEW_VTK; - } - //QApplication::restoreOverrideCursor(); - QAD_StudyFrame* sf = NULL; - SALOMEDS::SObject_var newObj = aStudyBuilder->NewObject(father); - if ( theViewType == VIEW_OCC) { - // MESSAGE ("Create Study Frame for OCC viewer"); - sf = new QAD_StudyFrame ( this, parent->getMainFrame(), - title, VIEW_OCC, - myInterp, myMutex ); - - Standard_CString name = CORBA::string_dup(sf->title().latin1()); - anAttr = aStudyBuilder->FindOrCreateAttribute(newObj, "AttributeName"); - aName = SALOMEDS::AttributeName::_narrow(anAttr); - aName->SetValue(name); - anAttr = aStudyBuilder->FindOrCreateAttribute(newObj, "AttributeComment"); - aComment = SALOMEDS::AttributeComment::_narrow(anAttr); - aComment->SetValue("OCC"); - - anAttr = aStudyBuilder->FindOrCreateAttribute(newObj, "AttributeSelectable"); - aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr); - aSelAttr->SetSelectable(false); - } - else if ( theViewType == VIEW_VTK) { - // MESSAGE ("Create Study Frame for VTK viewer"); - sf = new QAD_StudyFrame ( this, parent->getMainFrame(), - title, VIEW_VTK, - myInterp, myMutex ); - Standard_CString name = strdup(sf->title().latin1()); - anAttr = aStudyBuilder->FindOrCreateAttribute(newObj, "AttributeName"); - aName = SALOMEDS::AttributeName::_narrow(anAttr); - aName->SetValue(name); - anAttr = aStudyBuilder->FindOrCreateAttribute(newObj, "AttributeComment"); - aComment = SALOMEDS::AttributeComment::_narrow(anAttr); - aComment->SetValue("VTK"); - - anAttr = aStudyBuilder->FindOrCreateAttribute(newObj, "AttributeSelectable"); - aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr); - aSelAttr->SetSelectable(false); - } - else if ( theViewType == VIEW_GRAPHSUPERV) { - //MESSAGE ("Create Study Frame for SUPER`VISOR Graph"); - sf = new QAD_StudyFrame ( this, parent->getMainFrame(), - title, VIEW_GRAPHSUPERV, - myInterp, myMutex ); - Standard_CString name = strdup(sf->title().latin1()); - anAttr = aStudyBuilder->FindOrCreateAttribute(newObj, "AttributeName"); - aName = SALOMEDS::AttributeName::_narrow(anAttr); - aName->SetValue(name); - anAttr = aStudyBuilder->FindOrCreateAttribute(newObj, "AttributeComment"); - aComment = SALOMEDS::AttributeComment::_narrow(anAttr); - aComment->SetValue("GRAPH"); - - anAttr = aStudyBuilder->FindOrCreateAttribute(newObj, "AttributeSelectable"); - aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr); - aSelAttr->SetSelectable(false); - } - else if ( theViewType == VIEW_PLOT2D ) { - sf = new QAD_StudyFrame ( this, parent->getMainFrame(), - title, VIEW_PLOT2D, - myInterp, myMutex ); - Standard_CString name = strdup(sf->title().latin1()); - anAttr = aStudyBuilder->FindOrCreateAttribute(newObj, "AttributeName"); - aName = SALOMEDS::AttributeName::_narrow(anAttr); - aName->SetValue(name); - anAttr = aStudyBuilder->FindOrCreateAttribute(newObj, "AttributeComment"); - aComment = SALOMEDS::AttributeComment::_narrow(anAttr); - aComment->SetValue("PLOT2D"); - - anAttr = aStudyBuilder->FindOrCreateAttribute(newObj, "AttributeSelectable"); - aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr); - aSelAttr->SetSelectable(false); - } - //VRV: T2.5 - add default viewer - - sf->resize( int (0.8*parent->getMainFrame()->width()), - int (0.8*parent->getMainFrame()->height() )); - - sf->setEntry(newObj->GetID()); - - addStudyFrame( sf ); - - updateObjBrowser( true ); - - parent->setSettings(); - - myResult = true; - - if (aLocked) myStudy->GetProperties()->SetLocked(true); - - // T2.12 - add the word "locked" to study frame captions if this study is locked - updateCaptions(); - - myStudy->EnableUseCaseAutoFilling(true); - - return sf; -} - -/*! - Updates study frame captions according to IsLocked study flag -*/ -void QAD_Study::updateCaptions() -{ - QString appendix(""); - - if (!myStudy->_is_nil()) { - SALOMEDS::AttributeStudyProperties_var propAttr = myStudy->GetProperties(); -/* - if (!propAttr->_is_nil() ) { - if ( propAttr->IsModified() ) - appendix += " (" + tr("PRP_STUDY_MODIFIED") + ")"; - else - appendix += " (" + tr("PRP_STUDY_SAVED") + ")"; - } - -*/ - if (!propAttr->_is_nil() && propAttr->IsLocked()) { - appendix += " (" + tr("PRP_STUDY_LOCKED") + ")"; - } - } - - for ( QPtrListIterator it( myStudyFrames ); it.current(); ++it ) { - it.current()->setCaption(it.current()->title() + appendix); - } - -} - -/*! - Shows the active study frame. - Called by Desktop after 'new' and 'open' commands. -*/ -void QAD_Study::show() -{ - for ( QPtrListIterator it( myStudyFrames ); it.current(); ++it ) { - it.current()->show(); - } -} - -//=======================================================================// -// Study properties (CAF related) // -//=======================================================================// - -/*! - Returns connected SALOMEDS_Study object -*/ -SALOMEDS::Study_var QAD_Study::getStudyDocument() -{ - return myStudy; -} - -/*! - Returns whether the document was saved in file -*/ -bool QAD_Study::isSaved() const -{ - return myStudy->IsSaved(); -} - -/*! - Returns whether the document is modified -*/ -bool QAD_Study::isModified() const -{ -// return myStudy->IsModified(); // VSR:05/12/02 - USE PROPERTY : MODIFIED FLAG - if ( !myStudy->_is_nil() ) { - SALOMEDS::AttributeStudyProperties_var propAttr = myStudy->GetProperties(); - if ( !propAttr->_is_nil() ) - return propAttr->IsModified(); - } - return false; -} - -bool QAD_Study::undo() -{ - try { - SALOMEDS::StudyBuilder_var SB = myStudy->NewBuilder(); - SB->Undo(); - - /* Update Object Browser */ - updateObjBrowser( true ); - - for ( QPtrListIterator it( myStudyFrames ); it.current(); ++it ) { - /* Update Viewer */ - it.current()->getRightFrame()->getViewFrame()->undo( this, it.current()->entry() ); - } - updateCaptions(); - - // mpv 07.03.2003 SAL1805: clear selection must be called after study structure changed - SALOME_Selection* Sel = SALOME_Selection::Selection( getSelection() ); - Sel->ClearIObjects(); - } - // mpv : undo command can raise exception, if study is locked - catch ( SALOMEDS::StudyBuilder::LockProtection& ) { - QAD_MessageBox::warn1 ((QWidget*)QAD_Application::getDesktop(), - QObject::tr("WRN_WARNING"), - QObject::tr("WRN_STUDY_LOCKED"), - QObject::tr("BUT_OK")); - return false; - } - catch ( Standard_Failure ) { - return false; } - return true; -} - -/*! - Redo last undo -*/ -bool QAD_Study::redo() -{ - try { - SALOMEDS::StudyBuilder_var SB = myStudy->NewBuilder(); - SB->Redo(); - - /* Update Object Browser */ - updateObjBrowser( true ); - - /* Update Viewer */ - for ( QPtrListIterator it( myStudyFrames ); it.current(); ++it ) { - it.current()->getRightFrame()->getViewFrame()->redo( this, it.current()->entry() ); - } - updateCaptions(); - - // mpv 07.03.2003 SAL1805: clear selection must be called after study structure changed - SALOME_Selection* Sel = SALOME_Selection::Selection( getSelection() ); - Sel->ClearIObjects(); - } - // mpv : redo command can raise exception, if study is locked - catch ( SALOMEDS::StudyBuilder::LockProtection& ) { - QAD_MessageBox::warn1 ((QWidget*)QAD_Application::getDesktop(), - QObject::tr("WRN_WARNING"), - QObject::tr("WRN_STUDY_LOCKED"), - QObject::tr("BUT_OK")); - return false; - } - catch ( Standard_Failure ) { - return false; } - return true; -} - -/*! - Check if possible to perform 'undo' command -*/ -bool QAD_Study::canUndo() const -{ - if ( myStudy->_is_nil() ) - return false; - - SALOMEDS::StudyBuilder_var SB = myStudy->NewBuilder(); - return (SB->GetAvailableUndos() > 0 ); -} - -/*! - Check if possible to perform 'redo' command -*/ -bool QAD_Study::canRedo() const -{ - if ( myStudy->_is_nil() ) - return false; - - SALOMEDS::StudyBuilder_var SB = myStudy->NewBuilder(); - return (SB->GetAvailableRedos() > 0 ); -} - -/*! - Called when operation is started - Returns 'true' if started OK, 'false' otherwise. -*/ -bool QAD_Study::onOperationStarted( QAD_Operation* op ) -{ - if ( !initOperation( op ) ) - return false; - - try - { /* start a new transaction */ - SALOMEDS::StudyBuilder_var SB = myStudy->NewBuilder(); - SB->NewCommand(); - } - catch ( Standard_Failure ) - { - /* May be, a transaction is already open, - it's not a problem */ - } - myOperationState = Started; - return true; -} - -/*! - Called when operation is finished -*/ -void QAD_Study::onOperationFinished( QAD_Operation* op ) -{ - try { - /* transaction is completed OK */ - SALOMEDS::StudyBuilder_var SB = myStudy->NewBuilder(); - SB->CommitCommand(); - } - catch ( SALOMEDS::StudyBuilder::LockProtection& ) { - QApplication::restoreOverrideCursor(); - QAD_MessageBox::warn1 ((QWidget*)QAD_Application::getDesktop(), - QObject::tr("WRN_WARNING"), - QObject::tr("WRN_STUDY_LOCKED"), - QObject::tr("BUT_OK")); - onOperationAborted(op); - updateObjBrowser( true ); - return; - } - catch ( Standard_Failure ) { - } - myOperationState = Finished; - emit docOperationTerminated( true ); /* terminated successfully */ - - updateCaptions(); - // mpv: any operation must call this method, otherwise study may not be saved - updateObjBrowser( true ); - - clearOperation( op ); /* we don't need the operation anymore */ - QAD_Application::getDesktop()->putInfo ( tr("INF_DOC_OPERATIONFINISHED") ); -} - -/*! - Called when operation is suspended -*/ -void QAD_Study::onOperationSuspended( QAD_Operation* op ) -{ - myOperationState = Suspended; -} - -/*! - Called when operation is resumed -*/ -void QAD_Study::onOperationResumed( QAD_Operation* op ) -{ - myOperationState = Resumed; -} - -/*! - Called when operation is aborted -*/ -void QAD_Study::onOperationAborted(QAD_Operation* op) -{ - try { - /* abort transaction */ - SALOMEDS::StudyBuilder_var SB = myStudy->NewBuilder(); - SB->AbortCommand(); - } - catch ( Standard_Failure ) - { - } - myOperationState = Aborted; - emit docOperationTerminated( false ); /* aborted */ - - updateCaptions(); - - clearOperation(op); - QAD_Application::getDesktop()->putInfo ( tr("INF_DOC_OPERATIONABORTED") ); -} - -/*! - Call when the last study frame is closing -*/ -void QAD_Study::onLastStudyFrameClosing( QAD_StudyFrame* sf ) -{ - if ( myStudyFrames.count() == 1 ) { - emit docClosing( this ); - } else - removeStudyFrame( sf ); - -// QWorkspace* ws = QAD_Application::getDesktop()->getMainFrame(); -// if ( !ws->activeWindow() && ws->windowList().count() > 0 ) -// ws->activatePreviousWindow(); -} - -/*! - Call when created a new window3d -*/ -QAD_StudyFrame* QAD_Study::newWindow3d(QString name, ViewType theViewType, bool toShow) -{ - if(name == "") name = getNextStudyFrameName(); - QAD_StudyFrame* sf = createStudyFrame( name, theViewType ); - if ( myResult ) { - if (toShow) showFrame(sf); - // sf->compressLeft(); /* compress LeftFrame */ - sf->getRightFrame()->compressBottom(); /* compress BottomFrame */ - return sf; - } - return 0; -} - -void QAD_Study::showFrame(QAD_StudyFrame* theFrame){ - theFrame->resize( (int)(0.64*QAD_Application::getDesktop()->getMainFrame()->width()), - (int)(0.64*QAD_Application::getDesktop()->getMainFrame()->height())); - theFrame->show(); - -} - - - -/*! - Call when setted a message -*/ -void QAD_Study::setMessage(const char* message) -{ - for ( QPtrListIterator it( myStudyFrames ); it.current(); ++it ) { - it.current()->getRightFrame()->getMessage()->setMessage(message); - } -} - -/*! - Call when updated object browser -*/ -void QAD_Study::updateObjBrowser( bool updateSelection ) -{ - QAD_Desktop* parent = QAD_Application::getDesktop(); - SALOME_ModuleCatalog::ModuleCatalog_var Catalog = parent->getCatalogue(); - - QString ActiveComp = parent->getActiveComponent(); - - for ( QPtrListIterator it( myStudyFrames ); it.current(); ++it ) { - it.current()->getLeftFrame()->getObjectBrowser()->Update(); - } - - /* update selection */ - if ( updateSelection && (myStudyFrames.count() > 0) ) { - SALOME_Selection* Sel = SALOME_Selection::Selection( getSelection() ); - SALOME_ListIteratorOfListIO It( Sel->StoredIObjects() ); - for(;It.More();It.Next()) { - if ( Sel->AddIObject( It.Value() ) == 0 ) { - highlight( It.Value(), true, false ); - } - } - } - /* update viewers */ - update3dViewers(); -} - -/*! - Updates only Use Case Browser -*/ -void QAD_Study::updateUseCaseBrowser( bool updateSelection ) -{ - for ( QPtrListIterator it( myStudyFrames ); it.current(); ++it ) { - it.current()->getLeftFrame()->getObjectBrowser()->UpdateUseCaseBrowser(); - } - /* update selection */ - if ( updateSelection && (myStudyFrames.count() > 0) ) { - SALOME_Selection* Sel = SALOME_Selection::Selection( getSelection() ); - SALOME_ListIteratorOfListIO It( Sel->StoredIObjects() ); - for(;It.More();It.Next()) { - if ( Sel->AddIObject( It.Value() ) == 0 ) { - highlight( It.Value(), true, false ); - } - } - /* update viewers */ - update3dViewers(); - } -} - -/*! - unHighlight All Interactive Objects in All Devices -*/ -void QAD_Study::unHighlightAll() -{ - for ( QPtrListIterator it( myStudyFrames ); it.current(); ++it ) { - /* Device = Viewers */ - it.current()->getRightFrame()->getViewFrame()->unHighlightAll(); - - /* Device = ObjectBrowser */ - it.current()->getLeftFrame()->getObjectBrowser()->unHighlightAll(); - } -} - -/*! - Returns type of Interactive Object -*/ -int QAD_Study::typeIObject( const Handle(SALOME_InteractiveObject)& IObject ) -{ - bool IsStudyObject = isInStudy( IObject ); - bool IsGraphicalObject = isInViewer( IObject ); - - // MESSAGE ( "IsStudyObject : " << IsStudyObject ) - // MESSAGE ( "IsGraphicalObject : " << IsGraphicalObject ) - - if ( IsStudyObject ) { - if ( IsGraphicalObject ) - return 1; /* StudyObject and GraphicalObject */ - else - return 2; /* only StudyObject */ - } else { - if ( IsGraphicalObject ) - return 3; /* only GraphicalObject */ - else - return 4; /* may be a component */ - } - return 0; -} - - -/*! - Renames the Interactive Object in All Devices -*/ -void QAD_Study::renameIObject( const Handle(SALOME_InteractiveObject)& IObject, QString newName ) -{ - if (myStudy->GetProperties()->IsLocked()) { - QAD_MessageBox::warn1 ((QWidget*)QAD_Application::getDesktop(), - QObject::tr("WRN_WARNING"), - QObject::tr("WRN_STUDY_LOCKED"), - QObject::tr("BUT_OK")); - return; - } - - highlight( IObject, false ); - - int nbFrames = myStudyFrames.count(); - for ( int i = 0; i < nbFrames; i++ ) { - QAD_StudyFrame* sf = myStudyFrames.at( i ); - switch ( typeIObject(IObject) ) { - case 1: - { - /* Device = Viewers */ - sf->getRightFrame()->getViewFrame()->rename(IObject, newName); - /* Device = ObjectBrowser */ - sf->getLeftFrame()->getObjectBrowser()->rename(IObject, newName); - break; - } - case 2: - { - /* Device = ObjectBrowser */ - sf->getLeftFrame()->getObjectBrowser()->rename(IObject, newName); - break; - } - case 3: - { - /* Device = Viewers */ - sf->getRightFrame()->getViewFrame()->rename(IObject, newName); - break; - } - case 4: - { - QString ActiveComp = QAD_Application::getDesktop()->getActiveComponent(); - if ( !ActiveComp.isEmpty() ) { - sf->getLeftFrame()->getObjectBrowser()->rename(IObject,newName); - } - break; - } - } - } - - /* SALOMEDS */ - SALOMEDS::StudyBuilder_var aStudyBuilder = myStudy->NewBuilder(); - SALOMEDS::SObject_var obj = myStudy->FindObjectID( IObject->getEntry() ); - if ( !obj->_is_nil() ) { - SALOMEDS::GenericAttribute_var anAttr; - SALOMEDS::AttributeName_var aName; - anAttr = aStudyBuilder->FindOrCreateAttribute(obj, "AttributeName"); - aName = SALOMEDS::AttributeName::_narrow(anAttr); - aName->SetValue(newName.latin1()); - } - - // VSR 13/03/03 - rename Interactive object - IObject->setName( ( char* )newName.latin1() ); - - updateObjBrowser( true ); -} - -/*! - Selects the Interactive Object in All Devices -*/ -void QAD_Study::highlight( const Handle(SALOME_InteractiveObject)& IObject, bool highlight,bool immediatly ) -{ - // MESSAGE ( " QAD_Study::highlight : " << highlight ) - int typeIO = typeIObject( IObject ); - - for ( QPtrListIterator it( myStudyFrames ); it.current(); ++it ) { - switch ( typeIO ) { - case 1: - { - /* Device = Viewer */ - if (it.current()->getTypeView() >= 0 ) { /* Device = Viewers */ - it.current()->getRightFrame()->getViewFrame()->highlight(IObject, highlight, immediatly); - } - /* Device = ObjectBrowser */ - it.current()->getLeftFrame()->getObjectBrowser()->highlight(IObject, highlight); - break; - } - case 2: - { - /* Device = ObjectBrowser */ - it.current()->getLeftFrame()->getObjectBrowser()->highlight(IObject, highlight); - break; - } - case 3: - { - /* Device = Viewer */ - if (it.current()->getTypeView() >= 0) { /* Device = Viewers */ - it.current()->getRightFrame()->getViewFrame()->highlight(IObject, highlight, immediatly); - } - break; - } - case 4: - { - QString ActiveComp = QAD_Application::getDesktop()->getActiveComponent(); - if ( !ActiveComp.isEmpty() ) { - it.current()->getLeftFrame()->getObjectBrowser()->highlight(IObject,highlight); - } - break; - } - } - } -} - -/*! - Returns TRUE if the IObject is a Study Object. Returns FALSE otherwise. -*/ -bool QAD_Study::isInStudy( const Handle(SALOME_InteractiveObject)& IObject ) -{ - return IObject->hasEntry(); -} - -/*! - Returns true if the IObject has a Graphical Object. Returns FALSE otherwise. -*/ -bool QAD_Study::isInViewer( const Handle(SALOME_InteractiveObject)& IObject ) -{ - bool found = false; - for ( QPtrListIterator it( myStudyFrames ); it.current(); ++it ) { - found = it.current()->getRightFrame()->getViewFrame()->isInViewer(IObject); - if ( found ) - return true; - } - return found; -} - -/*! - Returns true if the IObject has a Graphical Object into studyframe. Returns FALSE otherwise. -*/ -bool QAD_Study::isInViewer(const char* anEntry, const char* StudyFrameEntry) -{ - SALOMEDS::SObject_var RefSO; - SALOMEDS::SObject_var SO = myStudy->FindObjectID(StudyFrameEntry); - SALOMEDS::ChildIterator_var it = myStudy->NewChildIterator(SO); - for (; it->More();it->Next()){ - SALOMEDS::SObject_var CSO= it->Value(); - if (CSO->ReferencedObject(RefSO)) - if ( strcmp( anEntry, RefSO->GetID() ) == 0 ) - return 1; - } - return 0; -} - - -/*! - Returns title for the new studyframe window -*/ -QString QAD_Study::getNextStudyFrameName() -{ - QString numStudyFrame; - numStudyFrame.sprintf("%s%d", "#", ++myStudyFrameCount ); - return myTitle + numStudyFrame; /* return unique name ( title + unique number) */ -} - - -/*! - Returns the Python interpreter that belongs to this study -*/ -QAD_PyInterp* QAD_Study::get_PyInterp(void) -{ - return myInterp; -} - -/*! - Sets current selection. -*/ -void QAD_Study::Selection( QString aSelection ) -{ - if ( !SALOME_Selection::FindSelection( QString(myTitle + "_" + aSelection) ) ) - SALOME_Selection::CreateSelection( QString(myTitle + "_" + aSelection) ); - - SALOME_Selection* Sel = SALOME_Selection::Selection( QString(myTitle + "_" + aSelection) ); - - mySelection = aSelection; -} - -/*! - Returns the name of current selection -*/ -QString QAD_Study::getSelection() const -{ - return QString (myTitle + "_" + mySelection); -} - -/*! - Returns the study Id. -*/ -int QAD_Study::getStudyId() -{ - return myStudy->StudyId(); -} - -void QAD_Study::update3dViewers() -{ - for ( QPtrListIterator it( myStudyFrames ); it.current(); ++it ) { - it.current()->getRightFrame()->getViewFrame()->Repaint(); - } -} - -/* Adds new child window */ -void QAD_Study::addChildWidget( QWidget* child ) -{ - if ( myChildWidgets.findRef( child ) < 0 ) { - myChildWidgets.append( child ); - child->installEventFilter( this ); - } -} - -/*! - Removes child window from the list ( and deletes it ) -*/ -void QAD_Study::removeChildWidget( QWidget* child ) -{ - myChildWidgets.removeRef( child ); -} - -/* Event filter */ -bool QAD_Study::eventFilter( QObject* o, QEvent* e) -{ - int index = myChildWidgets.findRef( ( QWidget* )o ); - if ( index >= 0 && e->type() == QEvent::Close ) { - myChildWidgets.at( index )->removeEventFilter( this ); - myChildWidgets.remove( ( QWidget* )o ); - return TRUE; - } - return QObject::eventFilter( o, e ); -} - diff --git a/src/SALOMEGUI/QAD_Study.h b/src/SALOMEGUI/QAD_Study.h deleted file mode 100644 index 409b2aba4..000000000 --- a/src/SALOMEGUI/QAD_Study.h +++ /dev/null @@ -1,206 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_Study.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef QAD_STUDY_H -#define QAD_STUDY_H - -#include "QAD_Operation.h" -#include "QAD_StudyFrame.h" - -#include "SALOME_InteractiveObject.hxx" - -// IDL Headers -#include -#include CORBA_SERVER_HEADER(SALOMEDS) - -// QT Includes -#include -#include -#include - -class QAD_Application; - -class QMutex; -class QAD_PyInterp; -class TInitStudyThread; -class QAD_ViewFrame; - -class QAD_EXPORT QAD_Study : public QObject -{ - Q_OBJECT - -public: - QAD_Study(QAD_Application* app, - SALOMEDS::Study_var aStudy, - const QString& title); - virtual void Init(); - ~QAD_Study(); - - /* Event filter */ - bool eventFilter( QObject* o, QEvent* e); - -public: - /* studyframes management */ - QAD_StudyFrame* createStudyFrame(const QString& name, ViewType theViewType = VIEW_TYPE_MAX); - void removeStudyFrame( QAD_StudyFrame* ); - int getStudyFramesCount() const; - const QList& getStudyFrames() const; - QAD_StudyFrame* getStudyFrameByName( const QString& name ); - QAD_StudyFrame* getFirstStudyFrame(); - QAD_StudyFrame* getLastStudyFrame(); - QAD_StudyFrame* getStudyFrame( unsigned i ); - QAD_StudyFrame* getActiveStudyFrame() const; - - bool getResult(); - - /* document state management */ - bool isActive() const; - bool isSaved() const; - bool isModified() const; - bool isReadOnly() const; - void setReadOnly(bool state); - bool isLocked(); - const QString& getTitle() const; - int getStudyId(); - const QString& getPath() const; - void setTitle( const QString& title); - void updateCaptions(); - void close(); - QAD_Application* getApp() const; - - /* visualization */ - void show(); - - /* operation management */ - OperationState getOperationState() const; - int getOperationsCount() const; - QAD_Operation* getOperation( unsigned i ); - QAD_Operation* getFirstOperation(); - QAD_Operation* getLastOperation(); - - void abortAllOperations(); - void resumeAllOperations(); - void suspendAllOperations(); - - bool onOperationStarted( QAD_Operation* ); - void onOperationFinished( QAD_Operation* ); - void onOperationSuspended( QAD_Operation* ); - void onOperationResumed( QAD_Operation* ); - void onOperationAborted( QAD_Operation* ); - - /* standard CAF document */ - SALOMEDS::Study_var getStudyDocument(); - - bool undo(); - bool redo(); - bool canUndo() const; - bool canRedo() const; - - QAD_StudyFrame* newWindow3d(QString name = "", ViewType theViewType = VIEW_TYPE_MAX, bool toShow = true); - void showFrame(QAD_StudyFrame* theFrame); - - void setMessage(const char* message); - - void updateObjBrowser( bool updateSelection = true ); - void updateUseCaseBrowser( bool updateSelection = true ); - void update3dViewers(); - - /* interactive object management */ - void highlight( const Handle(SALOME_InteractiveObject)& IObject, - bool highlight, bool immediatly=true ); - void unHighlightAll(); - - void renameIObject( const Handle(SALOME_InteractiveObject)& IObject, - QString newName ); - int typeIObject( const Handle(SALOME_InteractiveObject)& IObject ); - - bool isInStudy( const Handle(SALOME_InteractiveObject)& IObject ); - bool isInViewer( const Handle(SALOME_InteractiveObject)& IObject ); - bool isInViewer(const char* anEntry, - const char* StudyFrameEntry); - - /* selection */ - void Selection( QString aSelection ); - QString getSelection() const; - - /* python interpreter */ - QAD_PyInterp* get_PyInterp(void); - - QString getNextStudyFrameName(); - - /* Child widgets handling (not QAD_StudyFrame) */ - void addChildWidget( QWidget* child ); - void removeChildWidget( QWidget* child ); - -signals: - void docClosing( QAD_Study* ); - void docOperationTerminated( bool ); - void closed(); - void supervStudyFrameClosing( QAD_ViewFrame* ); - -public slots: - void onStudyFrameActivated( QAD_StudyFrame* ); - void onStudyDeactivated(); - void onLastStudyFrameClosing( QAD_StudyFrame* ); - -private: - void addStudyFrame( QAD_StudyFrame* ); - bool initOperation( QAD_Operation* ); - void clearOperation( QAD_Operation* ); - -private: - SALOMEDS::Study_var myStudy; - - QList myOperations; - OperationState myOperationState; - - QAD_Application* myApp; - QList myStudyFrames; - QAD_StudyFrame* myActiveStudyFrame; - int myStudyFrameCount; - - QList myChildWidgets; - - QString myPath; - QString myTitle; - - QString mySelection; - - bool myIsActive; - bool myIsSaved; - bool myIsModified; - bool myIsReadOnly; - bool myResult; - - QMutex* myMutex; - QAD_PyInterp* myInterp; - TInitStudyThread* myInitStudyThread; -}; - -#endif - diff --git a/src/SALOMEGUI/QAD_StudyFrame.cxx b/src/SALOMEGUI/QAD_StudyFrame.cxx deleted file mode 100644 index cfba6977e..000000000 --- a/src/SALOMEGUI/QAD_StudyFrame.cxx +++ /dev/null @@ -1,226 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_StudyFrame.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -/*! - \class QAD_StudyFrame QAD_StudyFrame.h - \brief Frame window which contains QAD_LeftFrame and QAD_RightFrame. -*/ - -#include "QAD_StudyFrame.h" -#include "QAD_StudyFrame.h" -#include "QAD_RightFrame.h" -#include "QAD_LeftFrame.h" -#include "QAD_Splitter.h" -#include "QAD_Application.h" -#include "QAD_Desktop.h" -#include "QAD_Study.h" -#include "QAD_ObjectBrowser.h" -#include "QAD_PyInterp.h" - -#include - -using namespace std; - -/*! - Constructor -*/ -QAD_StudyFrame::QAD_StudyFrame(QAD_Study* theStudy, QWidget* theParent, - const QString& theTitle, ViewType theTypeView, - QAD_PyInterp*& theInterp, QMutex* theMutex): - QMainWindow( theParent , theTitle, WStyle_NormalBorder | - WStyle_MinMax | WStyle_SysMenu | WDestructiveClose), - myTitle(theTitle), - myEntry(""), - myTypeView(theTypeView), - myStudy(theStudy), - myInterp(theInterp) -{ - setCaption( myTitle ); - setPalette(QAD_Application::getPalette()); - - mySplitter = new QAD_Splitter( Qt::Horizontal, this); - mySplitter->setCompressEnabled( true ); - - setCentralWidget(mySplitter); - myLeftFrm = new QAD_LeftFrame(myStudy->getStudyDocument(), mySplitter, theTitle ); - myRightFrm = new QAD_RightFrame( mySplitter, theTitle, myTypeView, myInterp, theMutex); - - QValueList sizes; - sizes.append( (int)(0.30*QAD_Application::getDesktop()->getMainFrame()->width()) ); - sizes.append( (int)(0.50*QAD_Application::getDesktop()->getMainFrame()->width()) ); - mySplitter->setSizes( sizes ); - - QAD_ASSERT_DEBUG_ONLY ( theParent->inherits("QWorkspaceP") ); - QAD_ASSERT ( QObject::connect( (QWorkspaceP*)theParent, SIGNAL(windowActivated(QWidget*)), - this, SLOT(onStudyFrameActivated(QWidget*))) ); -} - - -/*! - Destructor -*/ -QAD_StudyFrame::~QAD_StudyFrame() -{ -} - -/*! - Returns the rightframe of this frame -*/ -QAD_RightFrame* QAD_StudyFrame::getRightFrame() const -{ - return myRightFrm; -} - -/*! - Returns the leftframe of this frame -*/ -QAD_LeftFrame* QAD_StudyFrame::getLeftFrame() const -{ - return myLeftFrm; -} - -/*! - Returns 'true' if studyframe is visible -*/ -void QAD_StudyFrame::setVisible( bool visible ) -{ - if ( visible == isVisible() ) - return; - - if ( visible ) show(); - else hide(); -} - -/*! - Called when StudyFrame is about to close -*/ -void QAD_StudyFrame::closeEvent(QCloseEvent* e) -{ - if ( IsPyLocked() ) { - e->ignore(); - return; - } - - emit sfStudyFrameClosing(this); -} - -/*! - Call when - */ -void QAD_StudyFrame::compressLeft() -{ - QSplitterPHandle* h = mySplitter->getHandleAfter(myLeftFrm); - if( h ) - h->compressBefore(); -} - -void QAD_StudyFrame::compressRight() -{ - QSplitterPHandle* h = mySplitter->getHandleAfter(myLeftFrm); - if( h ) - h->compressAfter(); -} - -void QAD_StudyFrame::unCompressLeft() -{ - QSplitterPHandle* h = mySplitter->getHandleAfter(myLeftFrm); - if( h ) - h->unCompressBefore(); -} - -void QAD_StudyFrame::unCompressRight() -{ - QSplitterPHandle* h = mySplitter->getHandleAfter(myLeftFrm); - if( h ) - h->unCompressAfter(); -} - -bool QAD_StudyFrame::isCompressedLeft() const -{ - return mySplitter->isCompressed(myLeftFrm); -} - -bool QAD_StudyFrame::isCompressedRight() const -{ - return mySplitter->isCompressed(myRightFrm); -} - -/*! - Returns the title of studyframe -*/ -const QString& QAD_StudyFrame::title() const -{ - return myTitle; -} - -/*! - Sets the new title of studyframe -*/ -void QAD_StudyFrame::setTitle( const QString& title ) -{ - myTitle = title; - setCaption( myTitle ); -} - -/*! - Returns the entry of studyframe -*/ -const QString& QAD_StudyFrame::entry() const -{ - return myEntry; -} - -/*! - Sets the new entru of studyframe -*/ -void QAD_StudyFrame::setEntry( const QString& entry ) -{ - myEntry = entry; -} - -ViewType QAD_StudyFrame::getTypeView() const -{ - return myTypeView; -} - -/*! - The slot is called when a studyframe is activated -*/ -void QAD_StudyFrame::onStudyFrameActivated ( QWidget* activeWindow ) -{ - emit sfStudyFrameActivated( (QAD_StudyFrame*) activeWindow ); - getRightFrame()->getViewFrame()->Activate( getStudy() ); -} - -/*! - Returns the Python interpreter that belongs to this study -*/ -QAD_PyInterp* QAD_StudyFrame::get_PyInterp(void) -{ - return myInterp; -} diff --git a/src/SALOMEGUI/QAD_StudyFrame.h b/src/SALOMEGUI/QAD_StudyFrame.h deleted file mode 100644 index ea8e45e82..000000000 --- a/src/SALOMEGUI/QAD_StudyFrame.h +++ /dev/null @@ -1,111 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_StudyFrame.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef QAD_StudyFrame_H -#define QAD_StudyFrame_H - -#include "QAD.h" - -// QT Includes -#include -#include - -class QMutex; - -class QAD_RightFrame; -class QAD_LeftFrame; -class QAD_Splitter; -class QAD_Study; -class QAD_PyInterp; - -enum ViewType { - VIEW_OCC, - VIEW_VTK, - VIEW_GRAPHSUPERV, - VIEW_PLOT2D, - VIEW_TYPE_MAX // must always be the last one; insert new values before it -}; - -class QAD_EXPORT QAD_StudyFrame: public QMainWindow -{ - Q_OBJECT - - public: - QAD_StudyFrame(QAD_Study* theStudy, QWidget* theParent, - const QString& theTitle, ViewType theTypeView, - QAD_PyInterp*& theInterp, QMutex* theMutex); - virtual ~QAD_StudyFrame(); - - QAD_Study* getStudy() { return myStudy; } - QAD_RightFrame* getRightFrame() const; - QAD_LeftFrame* getLeftFrame() const; - - ViewType getTypeView() const; - - QAD_PyInterp* get_PyInterp(void); - - void setTitle( const QString& aTitle); - const QString& title() const; - - void setEntry( const QString& aTitle); - const QString& entry() const; - - void setVisible( bool isVisible = true ); - - void compressLeft(); - void compressRight(); - void unCompressLeft(); - void unCompressRight(); - - bool isCompressedLeft() const; - bool isCompressedRight() const; - - signals: - void sfStudyFrameActivated( QAD_StudyFrame* ); - void sfStudyFrameClosing( QAD_StudyFrame*); - - public slots: - void onStudyFrameActivated ( QWidget* ); - - protected: - virtual void closeEvent ( QCloseEvent* ); - - - private: - QString myTitle; /* title */ - QString myEntry; /* entry */ - - ViewType myTypeView; - QAD_LeftFrame* myLeftFrm; - QAD_RightFrame* myRightFrm; - QAD_Splitter* mySplitter; - QAD_Study* myStudy; - QAD_PyInterp*& myInterp; -}; - -#endif diff --git a/src/SALOMEGUI/QAD_Tools.cxx b/src/SALOMEGUI/QAD_Tools.cxx deleted file mode 100644 index dfa23e5c7..000000000 --- a/src/SALOMEGUI/QAD_Tools.cxx +++ /dev/null @@ -1,318 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_Tools.cxx -// Author : UI team -// Module : SALOME -// $Header$ - -/*! - \class QAD_Tools QAD_Tools.h - \brief Helpful functions for QAD. -*/ - -#include "QAD_Tools.h" -#include "utilities.h" - -// QT Inlcude -#include -#include -#include -#include -#include -#include -#include -#include -using namespace std; - -static char* tempName() -{ - static char tempDir[512]; - strcpy ( tempDir, getenv ("tmp") ); - -#if defined WNT - if ( tempDir[ strlen(tempDir)-1 ] != '\\' ) - strcat ( tempDir,"\\"); -#else - if ( tempDir[ strlen(tempDir)-1 ] != '/' ) - strcat ( tempDir,"/"); -#endif - strcat ( tempDir,"Salome_trace"); - return tempDir; -} - -/*! - Returns max 'int' value [ static ] -*/ -inline int QAD_Tools::getMax(int v1, int v2) -{ - return v1 >= v2 ? v1 : v2; -} - -/*! - Returns min 'int' value [ static ] -*/ -inline int QAD_Tools::getMin(int v1, int v2) -{ - return v1 <= v2 ? v1 : v2; -} - -/*! - [ static ] - Creates a rect with TopLeft = ( min(x1,x2), min(y1,y2) ) - and BottomRight = ( TopLeft + (x2-x1)(y2-y1) ) -*/ -QRect QAD_Tools::makeRect(int x1, int y1, int x2, int y2) -{ - QRect aRect; - aRect.setRect( getMin(x1, x2), getMin(y1, y2), abs(x2-x1), abs(y2-y1)); - return aRect; -} - -/*! - Traces output to log-file. [ static ] - If log is NULL, 'Salome_trace' file is created in temp directory. - Log file is written in 'append' mode. -*/ -void QAD_Tools::trace (const char* lpszLog, const char* lpszFormat, ... ) -{ - static char* lpszTmp = tempName(); - - FILE* pStream; - pStream = fopen ( lpszLog ? lpszLog : lpszTmp, "a" ); - if ( pStream ) - { - va_list argptr; - va_start(argptr, lpszFormat); - //NRI vfprintf ( pStream, lpszFormat, argptr); - fprintf ( pStream, "- Trace %s [%d] : %s", __FILE__, __LINE__, lpszFormat); - va_end(argptr); - fclose ( pStream ); - } -} - -/*! - Parses the path to select the dir name only [ static ]. - Returns NULL if the path is empty (null). - NB: Unix-style slashes are assumed in 'path' -*/ -QString QAD_Tools::getDirFromPath ( const QString& path, bool absPath ) -{ - return QFileInfo( path ).dirPath( absPath ); -} - - -/*! - Parses the path to select the file name with or without extension [ static ]. -*/ -QString QAD_Tools::getFileNameFromPath( const QString& path, - bool withExtension ) -{ - if ( withExtension ) - return QFileInfo( path ).fileName(); - else - return QFileInfo( path ).baseName(); -} - -/*! - Parses the path to select the file extension [ static ]. -*/ -QString QAD_Tools::getFileExtensionFromPath( const QString& path ) -{ - return QFileInfo( path ).extension(false); -} - -/*! - Adds a slash to the end of 'path' if it is not already there [ static ] -*/ -QString QAD_Tools::addSlash( const QString& path ) -{ - if (!path.isNull()) { -#ifdef WNT - QChar slash ('\\'); -#else - QChar slash ('/'); -#endif - if ( path.at(path.length()-1) != slash ) - return path + slash; - } - return path; -} - -/*! - Converts slashes from unix-like to win-like [ static ] - Returns null string if 'path' is empty or null. -*/ -QString QAD_Tools::unix2win( const QString& path ) -{ - QString ret = path; -#ifdef WNT - int pos; - QChar winSlash ('\\'), unixSlash('/'); - for ( int start = 0; - (pos = path.find( unixSlash, start, false )) >= 0; - start = pos + 1 ) - { - ret.replace( pos, 1, &winSlash, 1 ); - } -#endif - return ret; -} -/*! - Centers widget 'w' as refered to widget 'ref' [ static ] -*/ -void QAD_Tools::centerWidget( QWidget* src, const QWidget* ref ) -{ - QAD_Tools::alignWidget(src, ref, Qt::AlignCenter); -} - -/*! - Aligns widget 'w' as refered to widget 'ref' [ static ] -*/ -void QAD_Tools::alignWidget ( QWidget* src, const QWidget* ref, int alignFlags ) -{ - if ( !src || !ref || !alignFlags ) return; - - QPoint srcOri = src->mapToGlobal( QPoint( 1, 1 ) ); - QPoint refOri = ref->mapToGlobal( QPoint( 1, 1 ) ); - - int x = srcOri.x(), y = srcOri.y(); - int refWidth = ref->width(), refHei = ref->height(); - int srcWidth = src->width(), srcHei = src->height(); - if ( srcWidth <= 1 ) - srcWidth = src->sizeHint().width(); - if ( srcHei <= 1 ) - srcHei = src->sizeHint().height(); - - if ( alignFlags & AlignLeft ) - x = refOri.x(); - if ( alignFlags & AlignRight ) - x = refOri.x() + refWidth - srcWidth; - if ( alignFlags & AlignTop ) - y = refOri.y(); - if ( alignFlags & AlignBottom ) - y = refOri.y() + refHei - srcHei; - if ( alignFlags & AlignHCenter ) - x = refOri.x() + ( refWidth - srcWidth ) / 2; - if ( alignFlags & AlignVCenter ) - y = refOri.y() + ( refHei - srcHei ) / 2; - - if ( src->parentWidget() && /* we move a widget inside its parent */ - !src->inherits( "QDialog" )) /* dialogs use global coordinates */ - { - QPoint pos = src->parentWidget()->mapFromGlobal( QPoint(x,y) ); - x = pos.x(); y = pos.y(); - } -#ifdef WNT - x -= 4; /* - frame border width ( approx. ) */ - y -= 30; /* - caption height ( approx. ) */ -#endif - - src->move( x, y ); -} - -/*! - Converts TCollection_ExtendedString to QString -*/ -QString QAD_Tools::toQString( const TCollection_ExtendedString& extString) -{ - QString result = QString ( (const QChar*) extString.ToExtString(), - extString.Length() ); - return result; -} - -/*! - Converts QString to TCollection_ExtendedString -*/ -TCollection_ExtendedString QAD_Tools::toExtString( const QString& qString) -{ - TCollection_ExtendedString result; - for ( int i = 0; i < (int)qString.length(); i++ ) - result.Insert( i + 1, qString[ i ].unicode() ); - return result; -} - -/*! - Converts TCollection_AsciiString to QString -*/ -QString QAD_Tools::toQString( const TCollection_AsciiString& asciiString) -{ - QString result = QString ( asciiString.ToCString() ); - return result; -} - -/*! - Converts QString to TCollection_AsciiString -*/ -TCollection_AsciiString QAD_Tools::toAsciiString( const QString& qString) -{ - TCollection_AsciiString result = TCollection_AsciiString((char*)(qString.latin1())); - return result; -} - -/*! - Creates font from string description -*/ -QFont QAD_Tools::stringToFont( const QString& fontDescription ) -{ - QFont font; - if ( fontDescription.stripWhiteSpace().isEmpty() || !font.fromString( fontDescription ) ) - font = QFont( "Courier", 11 ); - return font; -} - -/*! - Creates font's string description -*/ -QString QAD_Tools::fontToString( const QFont& font ) -{ - return font.toString(); -} - -/*! - Checks popup menu recursively for unnecessary separators and removes them -*/ -void QAD_Tools::checkPopup( QPopupMenu* popup ) -{ - if ( popup->count() > 0 ) { - QValueList idRemove; - for ( int i = 1; i < popup->count(); i++ ) { - if ( popup->findItem( popup->idAt( i ) )->isSeparator() ) { - if ( popup->findItem( popup->idAt( i-1 ) )->isSeparator() ) - idRemove.append( popup->idAt( i ) ); - } - else { - QPopupMenu* child = popup->findItem( popup->idAt( i ) )->popup(); - if ( child ) { - checkPopup( child ); - } - } - } - for ( int i = 0; i < idRemove.count(); i++ ) - popup->removeItem( idRemove[i] ); - if ( popup->count() > 0 && popup->findItem( popup->idAt( 0 ) )->isSeparator() ) - popup->removeItem( popup->idAt( 0 ) ); - if ( popup->count() > 0 && popup->findItem( popup->idAt( popup->count()-1 ) )->isSeparator() ) - popup->removeItem( popup->idAt( popup->count()-1 ) ); - } -} diff --git a/src/SALOMEGUI/QAD_Tools.h b/src/SALOMEGUI/QAD_Tools.h deleted file mode 100644 index ef9e7cd07..000000000 --- a/src/SALOMEGUI/QAD_Tools.h +++ /dev/null @@ -1,80 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_Tools.h -// Author : UI team -// Module : SALOME -// $Header$ - -#ifndef QAD_TOOLS_H -#define QAD_TOOLS_H - -#include "QAD.h" -#include -#include -#include -#include -#include -#include - -class QAD_EXPORT QAD_Tools : public Qt -{ -public: - /* min/max functions */ - static int getMax(int v1, int v2); - static int getMin(int v1, int v2); - - /* makes rectangle */ - static QRect makeRect(int x1, int y1, int x2, int y2); - - /* trace function */ - static void trace (const char* pLog, const char* szFormat, ... ); - - /* path functions */ - static QString getDirFromPath( const QString& path, bool absPath = true ); - static QString getFileNameFromPath( const QString& path, bool withExtension = true ); - static QString getFileExtensionFromPath( const QString& path ); - static QString addSlash( const QString& path ); - static QString unix2win( const QString& path ); - - /* aligning widget in 'ref' widget */ - static void centerWidget( QWidget* src, const QWidget* ref ); - static void alignWidget ( QWidget* src, const QWidget* ref, int alignFlags = AlignCenter ); - - /* converting strings */ - static QString toQString ( const TCollection_ExtendedString& extString); - static TCollection_ExtendedString toExtString ( const QString& qString); - static QString toQString ( const TCollection_AsciiString& asciiString); - static TCollection_AsciiString toAsciiString( const QString& qString); - - static QFont stringToFont( const QString& fontDescription ); - static QString fontToString( const QFont& font ); - - /* popup menu optimization */ - static void checkPopup( QPopupMenu* popup ); -}; - -#endif - - - diff --git a/src/SALOMEGUI/QAD_ViewFrame.cxx b/src/SALOMEGUI/QAD_ViewFrame.cxx deleted file mode 100644 index c22c7a4a8..000000000 --- a/src/SALOMEGUI/QAD_ViewFrame.cxx +++ /dev/null @@ -1,107 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_ViewFrame.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "QAD.h" -#include "QAD_ViewFrame.h" -#include "QAD_Application.h" -#include "QAD_Desktop.h" -#include "QAD_FileDlg.h" -#include "QAD_MessageBox.h" -#include "QAD_Tools.h" -#include -#include -#include "utilities.h" - -using namespace std; - -/*! - Constructor -*/ -QAD_ViewFrame::QAD_ViewFrame(QWidget* parent, const QString& title) - : QMainWindow (parent, title, 0) -{ -} - -/*! - Constructor -*/ -QAD_ViewFrame::QAD_ViewFrame( QWidget* parent ) - : QMainWindow (parent, "",0) -{ -} - -/*! - Destructor -*/ -QAD_ViewFrame::~QAD_ViewFrame() -{ - cleanup(); -} - -/*! - Cleanup viewframe -*/ -void QAD_ViewFrame::cleanup() -{ -} - -/* - Dumps 3d-Viewer contents into image file - File format is defined by file's extension; supported formats : PNG, BMP, GIF, JPG -*/ -void QAD_ViewFrame::onViewDump() -{ - if (!getViewWidget()) - return; - - QApplication::setOverrideCursor( Qt::waitCursor ); - QPixmap px = QPixmap::grabWindow(getViewWidget()->winId()); - QApplication::restoreOverrideCursor(); - - QString fileName = QAD_FileDlg::getFileName(QAD_Application::getDesktop(), - QString::null, - tr("OCC_IMAGE_FILES"), - tr("INF_APP_DUMP_VIEW"), - false); - if (!fileName.isNull()) { - QApplication::setOverrideCursor( Qt::waitCursor ); - QString fmt = QAD_Tools::getFileExtensionFromPath(fileName).upper(); - if (fmt.isEmpty()) - fmt = QString("BMP"); // default format - if (fmt == "JPG") - fmt = "JPEG"; - bool bOk = px.save(fileName, fmt.latin1()); - QApplication::restoreOverrideCursor(); - if (!bOk) { - QAD_MessageBox::error1(QAD_Application::getDesktop(), - tr("ERR_ERROR"), - tr("ERR_DOC_CANT_SAVE_FILE"), - tr("BUT_OK")); - } - } -} diff --git a/src/SALOMEGUI/QAD_ViewFrame.h b/src/SALOMEGUI/QAD_ViewFrame.h deleted file mode 100644 index 7ea86fb5f..000000000 --- a/src/SALOMEGUI/QAD_ViewFrame.h +++ /dev/null @@ -1,134 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_ViewFrame.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef QAD_ViewFrame_H -#define QAD_ViewFrame_H - -#include "QAD.h" -#include "QAD_Application.h" -#include "QAD_StudyFrame.h" -#include "SALOME_InteractiveObject.hxx" -#include "SALOME_Selection.h" -#include "SALOME_Prs.h" - -class QAD_Study; - -// QT Include -#include - - -class QAD_EXPORT QAD_ViewFrame : public QMainWindow, public SALOME_View -{ - Q_OBJECT - -public: - QAD_ViewFrame(QWidget* parent, const QString& title); - QAD_ViewFrame(QWidget* parent = 0); - virtual ~QAD_ViewFrame(); - - void cleanup(); - - virtual ViewType getTypeView() const = 0; - virtual QWidget* getViewWidget() = 0; - - virtual void setBackgroundColor( const QColor& ) = 0; - virtual QColor backgroundColor() const = 0; - - virtual void SetSelectionMode( Selection_Mode mode ) = 0; - - virtual void onAdjustTrihedron() = 0; - - /* popup management */ - virtual void setPopupServer( QAD_Application* ) = 0; - - /* interactive object management */ - virtual void highlight( const Handle(SALOME_InteractiveObject)& IObject, - bool highlight, bool immediatly = true ) = 0; - virtual void unHighlightAll() = 0; - virtual void rename( const Handle(SALOME_InteractiveObject)& IObject, - QString newName ) = 0; - virtual bool isInViewer( const Handle(SALOME_InteractiveObject)& IObject ) = 0; - virtual bool isVisible( const Handle(SALOME_InteractiveObject)& IObject ) = 0; - - /* undo/redo management */ - virtual void undo(QAD_Study* aStudy, const char* StudyFrameEntry) {} - virtual void redo(QAD_Study* aStudy, const char* StudyFrameEntry) {} - - /* selection */ - virtual Handle(SALOME_InteractiveObject) FindIObject(const char* Entry) = 0; - - /* display */ - virtual void Display(const Handle(SALOME_InteractiveObject)& IObject, bool immediatly = true) = 0; - virtual void DisplayOnly(const Handle(SALOME_InteractiveObject)& IObject) = 0; - virtual void Erase(const Handle(SALOME_InteractiveObject)& IObject, bool immediatly = true) = 0; - virtual void DisplayAll() = 0; - virtual void EraseAll() = 0; - virtual void Repaint() = 0; - - /* activation */ - virtual void Activate( QAD_Study* ) {} - // this method is called when parent window of view frame is activated - -public slots: - /* basic view operations, - most of them are pure virtual - and should be redefined in derived classes - */ - virtual void onViewPan() = 0; - virtual void onViewZoom() = 0; - virtual void onViewFitAll() = 0; - virtual void onViewFitArea() = 0; - virtual void onViewGlobalPan() = 0; - virtual void onViewRotate() = 0; - virtual void onViewReset() = 0; - virtual void onViewFront() = 0; - virtual void onViewBack() = 0; - virtual void onViewRight() = 0; - virtual void onViewLeft() = 0; - virtual void onViewBottom() = 0; - virtual void onViewTop() = 0; - virtual void onViewTrihedron() = 0; - virtual void onViewDump(); - - /* view incremental transformation operations. - virtual, can be redefined in derived classes - */ - virtual void onPanLeft() {} - virtual void onPanRight() {} - virtual void onPanUp() {} - virtual void onPanDown() {} - virtual void onZoomIn() {} - virtual void onZoomOut() {} - virtual void onRotateLeft() {} - virtual void onRotateRight() {} - virtual void onRotateUp() {} - virtual void onRotateDown() {} -}; - -#endif - diff --git a/src/SALOMEGUI/QAD_WaitCursor.h b/src/SALOMEGUI/QAD_WaitCursor.h deleted file mode 100644 index 2f5dbe6d9..000000000 --- a/src/SALOMEGUI/QAD_WaitCursor.h +++ /dev/null @@ -1,37 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : QAD_WaitCursor.h -// Author : Vadim SANDLER -// Module : SALOME -// $Header$ - -#ifndef QAD_WAITCURSOR_H -#define QAD_WAITCURSOR_H - -#include -#include "QAD.h" - -class QAD_EXPORT QAD_WaitCursor { - public: -// constructor - QAD_WaitCursor() : myStarted( false ), myDepth( 1 ) { start(); } -// destructor - ~QAD_WaitCursor() { if ( !myStarted ) { myDepth--; start(); } else { QApplication::restoreOverrideCursor(); } } - -// sets WAIT cursor if not set yet - void start() { if ( !myStarted ) { while( myDepth-- ) QApplication::setOverrideCursor( Qt::waitCursor ); myStarted = true; } myDepth = 0; } -// clears WAIT cursor if set - void stop() { if ( myStarted ) { while( QApplication::overrideCursor() ) { QApplication::restoreOverrideCursor(); myDepth++; } myStarted = false; } } -// returns true if WAIT cursor is active - bool isStarted() { return myStarted; } - - private: - bool myStarted; - int myDepth; -}; - -#endif diff --git a/src/SALOMEGUI/QAD_XmlHandler.cxx b/src/SALOMEGUI/QAD_XmlHandler.cxx deleted file mode 100644 index 85df10900..000000000 --- a/src/SALOMEGUI/QAD_XmlHandler.cxx +++ /dev/null @@ -1,362 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_XmlHandler.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#define INCLUDE_MENUITEM_DEF - -#include "QAD_Desktop.h" -#include "QAD_XmlHandler.h" -#include "QAD_ListMenuIdAction.h" -#include "QAD_Menus.h" -#include "QAD_MessageBox.h" -#include "QAD_Tools.h" -#include "QAD_Resource.h" - -// QT Include -#include -#include -#include -using namespace std; - -map QAD_XmlHandler::_bibmap; - -static const char* SEPARATOR = ":"; - -static QString findFile( QString resDirs, QString fileName ) -{ - QStringList dirList = QStringList::split( SEPARATOR, resDirs, false ); // skip empty entries - for ( int i = 0; i < dirList.count(); i++ ) { - QString dir = dirList[ i ]; - QFileInfo fi( QAD_Tools::addSlash( dir ) + fileName ); - if ( fi.isFile() && fi.exists() ) - return fi.filePath(); - } - return QString(); -} - -/*! - Constructor -*/ -QAD_XmlHandler::QAD_XmlHandler() -{ -} - -/*! - Destructor -*/ -QAD_XmlHandler::~QAD_XmlHandler() -{ -} - -/*! - Sets \a desktop widget which contains menubar. -*/ -void QAD_XmlHandler::setMainWindow(QAD_Desktop* desktop) -{ - myDesktop = desktop; - myIdList = TColStd_SequenceOfInteger(); - myBackMenu = true; - myBackPopupMenus.setAutoDelete(false); -} - -/*! - Returns TRUE if environment variable CSF_"Component"Resources is undefined. - Returns FALSE otherwise. -*/ -bool QAD_XmlHandler::setComponent (const QString& dirs ) -{ - myPathResources = dirs; - - return true ; -} - -/*! - Starts parsing of document. Does some initialization - - Reimplemented from QXmlDefaultHandler. -*/ -bool QAD_XmlHandler::startDocument() -{ - myErrorProt = ""; - return TRUE; -} - -/*! - Does different actions depending on the name of the tag and the - state you are in document. - - Reimplemented from QXmlDefaultHandler. -*/ -bool QAD_XmlHandler::startElement( const QString&, const QString&, - const QString& qName, - const QXmlAttributes& atts ) -{ - char Slot_Name[200]; - - if ( qName == "application") { - myMenus=new QAD_Menus(myDesktop); - myMenusList.append(myMenus); - } else if ( qName == "desktop" ) { //DESKTOP - } else if ( qName == "menubar" ) { //MENUBAR - QMenuBar* aMenuBar = myDesktop->menuBar(); /*new QMenuBar(myMainWindow);*/ - myMenus->myActiveMenuBar=aMenuBar; - myMenus->append(aMenuBar); - myMenus->myActiveMenuBar->hide(); - - } else if ( qName == "menu-item" ) { //MENU-ITEM - myBackMenu = true; - QMenuItem* item = myMenus->myActiveMenuBar->findItem(atts.value( "item-id" ).toInt()); - if ( item ) { - QPopupMenu* aMenuItem = item->popup(); - myMenus->myActivePopupMenu=aMenuItem; - } else { - QPopupMenu* aMenuItem=new QPopupMenu(myMenus->myActiveMenuBar); - myMenus->myActivePopupMenu=aMenuItem; - int id; - int pos; - if (atts.value( "pos-id" ).compare(QString(""))==0) { - pos = -1; - } - else { - pos = atts.value( "pos-id" ).toInt(); - if ( pos < 0 ) - pos = myMenus->myActiveMenuBar->count() + pos; - } - id = myMenus->myActiveMenuBar->insertItem( atts.value( "label-id" ), - aMenuItem, - atts.value( "item-id" ).toInt(), - pos ); - myIdList.Append( id ); - } - } else if ( qName == "popup-item" ) { //POPUP-ITEM - QString aCommandID(atts.value( "item-id" )); - int id; - int pos; - if (atts.value( "pos-id" ).compare(QString(""))==0) { - pos = -1; - } - else { - pos = atts.value( "pos-id" ).toInt(); - if ( pos < 0 ) - pos = myMenus->myActivePopupMenu->count() + pos; - } - if (atts.value( "icon-id").compare(QString(""))==0) - if (atts.value( "execute-action" ).compare(QString(""))==0) - id = myMenus->myActivePopupMenu->insertItem( atts.value( "label-id" ), - myDesktop, SLOT (onDispatch( int )), - QAccel::stringToKey(atts.value( "accel-id" )), - aCommandID.toInt(), - pos); - else - id = myMenus->myActivePopupMenu->insertItem( atts.value( "label-id" ), - myDesktop, SLOT (onDispatchTools( int )), - QAccel::stringToKey(atts.value( "accel-id" )), - aCommandID.toInt(), - pos); - - else - if (atts.value( "execute-action" ).compare(QString(""))==0) - id = myMenus->myActivePopupMenu->insertItem( QPixmap( findFile( myPathResources, atts.value( "icon-id" ) ) ), - atts.value( "label-id" ), - myDesktop, SLOT (onDispatch( int )), - QAccel::stringToKey(atts.value( "accel-id" )), - aCommandID.toInt(), - pos ); - else - id = myMenus->myActivePopupMenu->insertItem( QPixmap( findFile( myPathResources, atts.value( "icon-id") ) ), - atts.value( "label-id" ), - myDesktop, SLOT (onDispatchTools( int )), - QAccel::stringToKey(atts.value( "accel-id" )), - aCommandID.toInt(), - pos); - if (atts.value( "chaine")!=NULL) { - QAD_XmlHandler::_bibmap[atts.value( "item-id").toInt()]=QString(atts.value( "chaine")); -// SCRUTE(atts.value( "item-id").toInt() ) ; -// SCRUTE(QAD_XmlHandler::_bibmap[atts.value( "item-id").toInt()] ) ; - } - if (atts.value( "toggle-id" ).compare(QString(""))!=0) { - if (atts.value( "toggle-id" ).compare(QString("false"))==0) { - myMenus->myActivePopupMenu->setItemChecked(id,false); - } - if (atts.value( "toggle-id" ).compare(QString("true"))==0) { - myMenus->myActivePopupMenu->setItemChecked(id,true); - } - } - myIdList.Append( id ); - myMenus->myActivePopupMenu->setItemParameter( id, aCommandID.toInt()); - } else if ( qName == "submenu" ) { //SUBMENU - myBackPopupMenus.push(myMenus->myActivePopupMenu); - QMenuItem* item = 0; - if ( myBackMenu ) - item = myMenus->myActivePopupMenu->findItem(atts.value( "item-id" ).toInt()); - - QPopupMenu* aSubmenu = new QPopupMenu(); - if ( item ) { - if (item->popup()) { - aSubmenu=item->popup(); - //Enable submenu only if disable - if (!myMenus->myActivePopupMenu->isItemEnabled( atts.value( "item-id" ).toInt())) - myMenus->myActivePopupMenu->setItemEnabled( atts.value( "item-id" ).toInt(), true); - } - } else { - aSubmenu=new QPopupMenu(myMenus->myActivePopupMenu); - int id; - int pos; - if (atts.value( "pos-id" ).compare(QString(""))==0) { - pos = -1; - } - else { - pos = atts.value( "pos-id" ).toInt(); - if ( pos < 0 ) - pos = myMenus->myActivePopupMenu->count() + pos; - } - id = myMenus->myActivePopupMenu->insertItem(atts.value( "label-id" ), - aSubmenu,atts.value( "item-id" ).toInt(), - pos); - myIdList.Append(id); - } - myMenus->myActivePopupMenu=aSubmenu; - } else if ( qName == "endsubmenu" ) { //SUBMENU - myMenus->myActivePopupMenu = myBackPopupMenus.pop(); - } else if ( qName == "popupmenu" ) { //POPUP MENU - myBackMenu = false; - QPopupMenu* aPopupMenu=new QPopupMenu; - myMenus->myActivePopupMenu=aPopupMenu; - aPopupMenu->insertItem( atts.value( "label-id" ), aPopupMenu, QAD_TopLabel_Popup_ID); - QAD_ListPopupMenu* pmenu = new QAD_ListPopupMenu(myMenus->myActivePopupMenu, - atts.value( "context-id" ), - atts.value( "parent-id" ), - atts.value( "object-id" )); - myMenus->append(pmenu); - } else if ( qName == "toolbar" ) { //TOOLBAR - QToolBar* aToolBar=new QToolBar(atts.value( "label-id" ),myDesktop); - aToolBar->setCloseMode( QDockWindow::Undocked ); - myMenus->append(aToolBar); - myMenus->myActiveToolBar=aToolBar; - myMenus->myActiveToolBar->hide(); - } else if ( qName == "toolbutton-item" ) { //TOOL BUTTON - QString aQStringToolButtonItemId(atts.value( "item-id" )); - QActionP* anAction= - new QActionP - (QObject::tr(atts.value( "label-id" )), - QPixmap( findFile( myPathResources, atts.value( "icon-id") ) ), - QObject::tr(atts.value( "label-id" )), - QAccel::stringToKey(QObject::tr(atts.value( "accel-id" ))), - myDesktop); - - anAction->setStatusTip(QObject::tr(atts.value( "tooltip-id" ))); - anAction->setToolTip(QObject::tr(atts.value( "tooltip-id" ))); - anAction->addTo(myMenus->myActiveToolBar); - QAD_ListMenuIdAction* menu = new QAD_ListMenuIdAction(myMenus->myActivePopupMenu, - aQStringToolButtonItemId.toInt(), - anAction); - myMenus->append(menu); - QObject::connect(anAction,SIGNAL(activated()), myDesktop,SLOT(onDispatch( ))); - } else if (qName == "separatorTB") { - myMenus->myActiveToolBar->addSeparator(); - } else if (qName == "separator") { - int id; - int pos; - if (atts.value( "pos-id" ).compare(QString(""))==0) { - pos = -1; - } - else { - pos = atts.value( "pos-id" ).toInt(); - if ( pos < 0 ) - pos = myMenus->myActivePopupMenu->count() + pos; - } - id = myMenus->myActivePopupMenu->insertSeparator( pos ); - myIdList.Append(id); - }else { - // error - return FALSE; - } - return TRUE; -} - - -/*! - Reimplemented from QXmlDefaultHandler. -*/ -bool QAD_XmlHandler::endElement( const QString&, const QString&, const QString& ) -{ - return TRUE; -} - - -/*! - Reimplemented from QXmlDefaultHandler. -*/ -bool QAD_XmlHandler::characters( const QString& ch ) -{ - // we are not interested in whitespaces - QString ch_simplified = ch.simplifyWhiteSpace(); - if ( ch_simplified.isEmpty() ) - return TRUE; - return TRUE; -} - - -/*! - Returns the default error string. - - Reimplemented from QXmlDefaultHandler. -*/ -QString QAD_XmlHandler::errorString() -{ - return "the document is not in the quote file format"; -} - -/*! - Returns exception - - Reimplemented from QXmlDefaultHandler. -*/ -bool QAD_XmlHandler::fatalError( const QXmlParseException& exception ) -{ - myErrorProt += QString( "fatal parsing error: %1 in line %2, column %3\n" ) - .arg( exception.message() ) - .arg( exception.lineNumber() ) - .arg( exception.columnNumber() ); - - return QXmlDefaultHandler::fatalError( exception ); -} - -/*! - Returns the error protocol if parsing failed - - Reimplemented from QXmlDefaultHandler. -*/ -QString QAD_XmlHandler::errorProtocol() -{ - return myErrorProt; -} - -QString QAD_XmlHandler::givebib(const int mykey) -{ - return QAD_XmlHandler::_bibmap[mykey]; -} diff --git a/src/SALOMEGUI/QAD_XmlHandler.h b/src/SALOMEGUI/QAD_XmlHandler.h deleted file mode 100644 index 1cc9f4f16..000000000 --- a/src/SALOMEGUI/QAD_XmlHandler.h +++ /dev/null @@ -1,74 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : QAD_XmlHandler.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include -#include -#include -#include -#include - -#include - -class QAD_Desktop; -class QAD_Menus; - -class QAD_XmlHandler : public QXmlDefaultHandler -{ -public: - QAD_XmlHandler(); - virtual ~QAD_XmlHandler(); - - bool startDocument(); - bool startElement( const QString& namespaceURI, const QString& localName, - const QString& qName, const QXmlAttributes& atts ); - bool endElement( const QString& namespaceURI, const QString& localName, const QString& qName ); - bool characters( const QString& ch ); - - QString errorString(); - QString errorProtocol(); - bool fatalError (const QXmlParseException& exception); - QString givebib (const int mykey); - - void setMainWindow(QAD_Desktop*); - bool setComponent (const QString& aComponent); - - QList myMenusList; - TColStd_SequenceOfInteger myIdList; - QAD_Menus* myMenus; - - static map _bibmap; - -private: - QString myErrorProt; - QString myPathResources; - - bool myBackMenu; - QStack myBackPopupMenus; - - QAD_Desktop* myDesktop; -}; diff --git a/src/SALOMEGUI/QAD_icons.po b/src/SALOMEGUI/QAD_icons.po deleted file mode 100644 index 5b1e636f7..000000000 --- a/src/SALOMEGUI/QAD_icons.po +++ /dev/null @@ -1,139 +0,0 @@ -# SALOME SALOMEGUI : implementation of desktop and GUI kernel -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : QAD_icons.po -# Module : SALOME - -msgid "" -msgstr "" -"Project-Id-Version: example-Qt-message-extraction\n" -"POT-Creation-Date: 1999-02-23 15:38+0200\n" -"PO-Revision-Date: 1999-02-23 15:38+0200\n" -"Last-Translator: \n" -"Content-Type: text/plain; charset=iso-8859-1\n" - -#-------------- -# DESKTOP -#-------------- - -msgid "ICON_DESK_WINDOW_CASCADE" -msgstr "cascade.png" - -msgid "ICON_DESK_WINDOW_TILE" -msgstr "tile.png" - -#-------------- -# FILE -#-------------- - -msgid "ICON_FILE_NEW" -msgstr "new.png" - -msgid "ICON_FILE_OPEN" -msgstr "open.png" - -msgid "ICON_FILE_LOAD" -msgstr "open.png" - -msgid "ICON_FILE_SAVE" -msgstr "save.png" - -msgid "ICON_FILE_CLOSE" -msgstr "close.png" - -#-------------- -# HELP -#-------------- - -msgid "ICON_HELP" -msgstr "help.png" - -msgid "QAD_HelpWindow::ICON_APP_HELP_BACK" -msgstr "back.xpm" - -msgid "QAD_HelpWindow::ICON_APP_HELP_FORWARD" -msgstr "forward.xpm" - -msgid "QAD_HelpWindow::ICON_APP_HELP_HOME" -msgstr "home.xpm" - -#-------------- -# VIEW -#-------------- - -msgid "ICON_PRINT" -msgstr "print.png" - -msgid "ICON_RESET" -msgstr "reset.png" - -#-------------- -# APPLICATION -#-------------- - -msgid "ICON_APP_EDIT_UNDO" -msgstr "undo.png" - -msgid "ICON_APP_EDIT_REDO" -msgstr "redo.png" - -msgid "ICON_APP_EDIT_COPY" -msgstr "copy.png" - -msgid "ICON_APP_EDIT_PASTE" -msgstr "paste.png" - -#-------------- -# DIALOGS -#-------------- - -msgid "ICON_DIRLIST_INSERT" -msgstr "dl_insert.png" - -msgid "ICON_DIRLIST_DELETE" -msgstr "dl_delete.png" - -msgid "ICON_DIRLIST_MOVEUP" -msgstr "dl_moveup.png" - -msgid "ICON_DIRLIST_MOVEDOWN" -msgstr "dl_movedown.png" - -#----------------- -# USE CASE BROWSER -#----------------- - -msgid "ICON_UC_ADD" -msgstr "uc_add.png" - -msgid "ICON_UC_REMOVE" -msgstr "uc_del.png" - -msgid "ICON_UC_SET_CURRENT" -msgstr "uc_current.png" - -msgid "ICON_UC_NEW" -msgstr "uc_new.png" - -msgid "ICON_UC_CLEAR" -msgstr "uc_clear.png" diff --git a/src/SALOMEGUI/QAD_msg_en.po b/src/SALOMEGUI/QAD_msg_en.po deleted file mode 100644 index feca9f9e5..000000000 --- a/src/SALOMEGUI/QAD_msg_en.po +++ /dev/null @@ -1,879 +0,0 @@ -# SALOME SALOMEGUI : implementation of desktop and GUI kernel -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : QAD_msg_en.po -# Module : SALOME - -msgid "" -msgstr "" -"Project-Id-Version: example-Qt-message-extraction\n" -"POT-Creation-Date: 1999-02-23 15:38+0200\n" -"PO-Revision-Date: 2004-04-26 16:29+0400\n" -"Last-Translator: \n" -"Content-Type: text/plain; charset=iso-8859-1\n" - -#--------------- -# BUTTONS -#--------------- - -msgid "BUT_CANCEL" -msgstr "Cancel" - -msgid "BUT_HELP" -msgstr "Help" - -msgid "BUT_OK" -msgstr "Ok" - -msgid "BUT_NO" -msgstr "No" - -msgid "BUT_YES" -msgstr "Yes" - -#--------------- -# INFORMATIONS -#--------------- - -#: QAD_Desktop.cxx:1152 -msgid "Desktop_AppSelectionDlg::INF_DESK_DOC_CREATE" -msgstr "Create a new study" - -#: QAD_Desktop.cxx:722 -msgid "INF_CANCELLED" -msgstr "Cancelled" - -#: QAD_Desktop.cxx:605 -msgid "INF_READY" -msgstr "Ready" - -#: QAD_Desktop.cxx:605 -msgid "INF_RESOURCES" -msgstr "Check your resources installation." - -#: QAD_Desktop.cxx:605 -msgid "INF_ICON_RESOURCES" -msgstr "Could not find icon file %1 for module %2.\n" - -#: QAD_Desktop.cxx:551 -msgid "INF_DESK_DOC_OPEN" -msgstr "Open study" - -#: QAD_Desktop.cxx:654 -msgid "INF_DESK_DOC_SAVE" -msgstr "Save study" - -#: QAD_Desktop.cxx:465 -msgid "QAD_Desktop::INF_DESK_EXIT" -msgstr "Exit" - -#: QAD_Desktop.cxx:530 -msgid "QAD_Desktop::INF_DOC_CREATING" -msgstr "Creating study " - -#: QAD_Desktop.cxx:558 -msgid "QAD_Desktop::INF_DOC_OPENING" -msgstr "Opening study " - -#: QAD_Desktop.cxx:691 -msgid "QAD_Desktop::INF_DOC_SAVED" -msgstr "Study %1 saved" - -#: QAD_Desktop.cxx:679 -msgid "QAD_Desktop::INF_DOC_SAVING" -msgstr "Saving study " - -#: QAD_Desktop.cxx:993 -msgid "QAD_Desktop::INF_PARSE_ERROR" -msgstr "Parse error" - -#: QAD_Study.cxx:570 -msgid "QAD_Study::INF_DOC_OPERATIONABORTED" -msgstr "Operation aborted" - -#: QAD_Study.cxx:539 -msgid "QAD_Study::INF_DOC_OPERATIONFINISHED" -msgstr "Operation finished" - -#: *.cxx:855 -msgid "INF_APP_EXPORT" -msgstr "Image Files" - -#--------------- -# MENUS -#--------------- - -#: QAD_Desktop.cxx:19 -msgid "QAD_Desktop::MEN_OPENWITH" -msgstr "Open With..." - -#: QAD_Desktop.cxx:407 -msgid "QAD_Desktop::MEN_DESK_EDIT" -msgstr "&Edit" - -#: QAD_Desktop.cxx:138 -msgid "QAD_Desktop::MEN_DESK_FILE" -msgstr "&File" - -#: QAD_Desktop.cxx:176 -msgid "QAD_Desktop::MEN_DESK_FILE_CLOSE" -msgstr "&Close" - -#: QAD_Desktop.cxx:206 -msgid "QAD_Desktop::MEN_DESK_FILE_EXIT" -msgstr "E&xit" - -#: QAD_Desktop.cxx:155 -msgid "QAD_Desktop::MEN_DESK_FILE_NEW" -msgstr "&New" - -#: QAD_Desktop.cxx:166 -msgid "QAD_Desktop::MEN_DESK_FILE_OPEN" -msgstr "&Open ..." - -#: QAD_Desktop.cxx:166 -msgid "QAD_Desktop::MEN_DESK_FILE_LOAD" -msgstr "&Load ..." - -#: QAD_Desktop.cxx:187 -msgid "QAD_Desktop::MEN_DESK_FILE_SAVE" -msgstr "&Save" - -#: QAD_Desktop.cxx:195 -msgid "QAD_Desktop::MEN_DESK_FILE_SAVEAS" -msgstr "Save As ..." - -#: QAD_Desktop.cxx:141 -msgid "QAD_Desktop::MEN_DESK_HELP" -msgstr "&Help" - -#: QAD_Desktop.cxx:291 -msgid "QAD_Desktop::MEN_DESK_HELP_ABOUT" -msgstr "&About ..." - -#: QAD_Desktop.cxx:265 -msgid "QAD_Desktop::MEN_DESK_HELP_CONTENTS" -msgstr "&Contents" - -#: QAD_Desktop.cxx:265 -msgid "QAD_Desktop::MEN_DESK_HELP_MODULECONTENTS" -msgstr "&Module Help" - -#: QAD_Desktop.cxx:265 -msgid "QAD_Desktop::MEN_DESK_HELP_TUICONTENTS" -msgstr "&TUI Reference" - -#: QAD_Desktop.cxx:273 -msgid "QAD_Desktop::MEN_DESK_HELP_SEARCH" -msgstr "&Search ..." - -#: QAD_Desktop.cxx:280 -msgid "QAD_Desktop::MEN_DESK_HELP_WHATSTHIS" -msgstr "What's this?" - -#: QAD_Desktop.cxx:139 -msgid "QAD_Desktop::MEN_DESK_VIEW" -msgstr "&View" - -#: QAD_Config.cxx:265 -msgid "MEN_DESK_PREF" -msgstr "Preferences" - -#: QAD_Config.cxx:376 -msgid "MEN_DESK_PREF_SAVE" -msgstr "Save" - -#: QAD_Config.cxx:376 -msgid "MEN_DESK_PREF_VIEWER" -msgstr "Viewer background" - -#: QAD_Config.cxx:376 -msgid "MEN_DESK_PREF_VIEWER_TRIHEDRON" -msgstr "Trihedron size" - -#: QAD_Desktop.cxx:747 -msgid "MEN_DESK_PREF_EXTERNAL_BROWSER" -msgstr "External browser" - -msgid "MEN_DESK_PREF_DEFAULT_VIEWER" -msgstr "Default viewer" - -#: QAD_Config.cxx:378 -msgid "MEN_DESK_PREF_VIEWER_OCC" -msgstr "OCC Viewer" - -#: QAD_Config.cxx:383 -msgid "MEN_DESK_PREF_VIEWER_VTK" -msgstr "VTK Viewer" - -#: QAD_Config.cxx:383 -msgid "MEN_DESK_PREF_GRAPH_SUPERVISOR" -msgstr "Graph Supervisor" - -msgid "MEN_DESK_PREF_VIEWER_PLOT2D" -msgstr "Plot2d Viewer" - -#: QAD_Config.cxx:378 -msgid "MEN_DESK_VIEW_OCC" -msgstr "OCC View" - -#: QAD_Config.cxx:383 -msgid "MEN_DESK_VIEW_VTK" -msgstr "VTK View" - -msgid "MEN_DESK_VIEW_PLOT2D" -msgstr "Plot2d View" - -#: QAD_Desktop.cxx:473 -msgid "MEN_DESK_PREF_OBJECTBROWSER" -msgstr "ObjectBrowser" - -#: QAD_Desktop.cxx:473 -msgid "MEN_DESK_PREF_OBJECTBROWSER_ENTRY" -msgstr "Entry, IOR columns" - -#: QAD_Desktop.cxx:473 -msgid "MEN_DESK_PREF_OBJECTBROWSER_IAPP" -msgstr "Interface Applicative" - -msgid "MEN_DESK_PREF_OBJECTBROWSER_CHRONO_SORT" -msgstr "Chronological sort of objects" - -msgid "MEN_DESK_PREF_OBJECTBROWSER_SHOW_USECASE" -msgstr "Show UseCase Browser" - -msgid "MEN_DESK_PREF_OBJECTBROWSER_NO_AUTOSIZE" -msgstr "No autosize columns" - - -msgid "QAD_Desktop::MEN_DESK_SELECTION_MODE" -msgstr "Selection Mode" - -msgid "QAD_Desktop::MEN_DESK_SELECTION_POINT" -msgstr "Point" - -msgid "QAD_Desktop::MEN_DESK_SELECTION_EDGE" -msgstr "Link" - -msgid "QAD_Desktop::MEN_DESK_SELECTION_CELL" -msgstr "Cell" - -msgid "QAD_Desktop::MEN_DESK_SELECTION_ACTOR" -msgstr "Actor" - -#: QAD_Config.cxx:265 -msgid "MEN_DESK_TOOLS" -msgstr "Tools" - -#: QAD_Desktop.cxx:228 -msgid "QAD_Desktop::MEN_DESK_VIEW_STATUSBAR" -msgstr "&Status Bar" - -#: QAD_Desktop.cxx:217 -msgid "QAD_Desktop::MEN_DESK_VIEW_STDTOOLBAR" -msgstr "Standard" - -#: SALOMEGUI_Application.cxx:82 -msgid "SALOMEGUI_Application::MEN_DESK_VIEWERTOOLBAR" -msgstr "Viewer" - -#: QAD_Desktop.cxx:226 -msgid "QAD_Desktop::MEN_DESK_COMPONENTTOOLBAR" -msgstr "Components" - -#: QAD_Desktop.cxx:140 -msgid "QAD_Desktop::MEN_DESK_WINDOW" -msgstr "&Window" - -#: QAD_Desktop.cxx:248 -msgid "QAD_Desktop::MEN_DESK_WINDOW_CASCADE" -msgstr "&Cascade" - -#: QAD_Desktop.cxx:240 -msgid "QAD_Desktop::MEN_DESK_WINDOW_NEW3D" -msgstr "&New Window" - -#: QAD_Desktop.cxx:256 -msgid "QAD_Desktop::MEN_DESK_WINDOW_TILE" -msgstr "&Tile" - -#: QAD_Application.cxx:175 -msgid "QAD_Application::MEN_APP_EDIT_REDO" -msgstr "&Redo" - -#: QAD_Application.cxx:165 -msgid "QAD_Application::MEN_APP_EDIT_UNDO" -msgstr "&Undo" - -#: QAD_Study.cxx:482 -msgid "QAD_Study::MEN_VIEWER" -msgstr "Viewer" - -#: *.cxx:45 -msgid "MEN_VP3D_CHANGEBGR" -msgstr "Change background..." - -msgid "MEN_APP_DISPLAY" -msgstr "Display" - -msgid "MEN_APP_DISPLAY_ONLY" -msgstr "Display only" - -msgid "MEN_APP_ERASE" -msgstr "Erase" - -#--------------- -# PRP -#--------------- - -#: QAD_Desktop.cxx:177 -msgid "QAD_Desktop::PRP_DESK_FILE_CLOSE" -msgstr "Closes the active study" - -#: QAD_Desktop.cxx:207 -msgid "QAD_Desktop::PRP_DESK_FILE_EXIT" -msgstr "Exits the application" - -#: QAD_Desktop.cxx:156 -msgid "QAD_Desktop::PRP_DESK_FILE_NEW" -msgstr "Creates a new study" - -#: QAD_Desktop.cxx:167 -msgid "QAD_Desktop::PRP_DESK_FILE_OPEN" -msgstr "Opens an existing study" - -#: QAD_Desktop.cxx:167 -msgid "QAD_Desktop::PRP_DESK_FILE_LOAD" -msgstr "Loads an existing study" - -#: QAD_Desktop.cxx:188 -msgid "QAD_Desktop::PRP_DESK_FILE_SAVE" -msgstr "Saves the active study" - -#: QAD_Desktop.cxx:196 -msgid "QAD_Desktop::PRP_DESK_FILE_SAVEAS" -msgstr "Saves the active study with a new name" - -#: QAD_Desktop.cxx:3759 -msgid "QAD_Desktop::PRP_DESK_FILE_IMPORT" -msgstr "Import file" - -#: QAD_Desktop.cxx:3765 -msgid "QAD_Desktop::PRP_DESK_FILE_IMPORTMESH" -msgstr "Import Mesh from file" - -#: QAD_Desktop.cxx:3765 -msgid "QAD_Desktop::PRP_DESK_FILE_IMPORTMED" -msgstr "Import MED file" - -#: QAD_Desktop.cxx:3765 -msgid "QAD_Desktop::PRP_DESK_FILE_IMPORTTABLE" -msgstr "Import TABLE from file" - -#: QAD_Desktop.cxx:3765 -msgid "QAD_Desktop::PRP_DESK_FILE_EXPLOREMEDFILE" -msgstr "Explore MED file" - -#: QAD_Desktop.cxx:3771 -msgid "QAD_Desktop::PRP_DESK_FILE_IMPORTDF" -msgstr "Import Dataflow from file" - -#: QAD_Desktop.cxx:3761 -msgid "QAD_Desktop::PRP_DESK_FILE_EXPORT" -msgstr "Export file" - -#: QAD_Desktop.cxx:3761 -msgid "QAD_Desktop::PRP_DESK_FILE_EXPORTRESULT" -msgstr "Export Result" - -#: QAD_Desktop.cxx:3773 -msgid "QAD_Desktop::PRP_DESK_FILE_EXPORTDF" -msgstr "Export Dataflow" - -#: QAD_Desktop.cxx:3793 -msgid "QAD_Desktop::PRP_DESK_EDIT_DELETE" -msgstr "Delete object" - -#: QAD_Desktop.cxx:3799 -msgid "QAD_Desktop::PRP_DESK_EDIT_NEWDF" -msgstr "Creates new Dataflow" - -#: QAD_Desktop.cxx:3801 -msgid "QAD_Desktop::PRP_DESK_EDIT_MODIFYDF" -msgstr "Modifies already existent Dataflow" - -#: QAD_Desktop.cxx:292 -msgid "QAD_Desktop::PRP_DESK_HELP_ABOUT" -msgstr "Shows \'About\' dialog" - -#: QAD_Desktop.cxx:266 -msgid "QAD_Desktop::PRP_DESK_HELP_CONTENTS" -msgstr "Shows the whole help contents" - -#: QAD_Desktop.cxx:266 -msgid "QAD_Desktop::PRP_DESK_HELP_GUICONTENTS" -msgstr "Shows the GUI help contents" - -#: QAD_Desktop.cxx:266 -msgid "QAD_Desktop::PRP_DESK_HELP_TUICONTENTS" -msgstr "Shows the TUI help contents" - -#: QAD_Desktop.cxx:274 -msgid "QAD_Desktop::PRP_DESK_HELP_SEARCH" -msgstr "Searches help for a topic" - -#: QAD_Desktop.cxx:281 -msgid "QAD_Desktop::PRP_DESK_HELP_WHATSTHIS" -msgstr "What's this?" - -msgid "QAD_Desktop::MEN_DESK_VIEW_TOOLBARS" -msgstr "Toolbars" - -#: QAD_Desktop.cxx:230 -msgid "QAD_Desktop::PRP_DESK_VIEW_STATUSBAR" -msgstr "Toggles status bar view on/off" - -#: QAD_Desktop.cxx:220 -msgid "QAD_Desktop::PRP_DESK_VIEW_TOOLBAR" -msgstr "Toggles toolbar on/off" - -#: QAD_Desktop.cxx:220 -msgid "QAD_Desktop::PRP_DESK_VIEW_DISPLAYMODE" -msgstr "Choose the display mode" - -#: QAD_Desktop.cxx:220 -msgid "QAD_Desktop::PRP_DESK_VIEW_UPDATE" -msgstr "Update view" - -#: QAD_Desktop.cxx:871 -msgid "QAD_Desktop::PRP_DESK_WINDOW_ACTIVATE" -msgstr "Activates this window" - -#: QAD_Desktop.cxx:249 -msgid "QAD_Desktop::PRP_DESK_WINDOW_CASCADE" -msgstr "Arranges the windows as overlapping tiles" - -#: QAD_Desktop.cxx:257 -msgid "QAD_Desktop::PRP_DESK_WINDOW_TILE" -msgstr "Arranges the windows as nonoverlapping tiles" - -#: QAD_Application.cxx:176 -msgid "QAD_Application::PRP_APP_EDIT_REDO" -msgstr "Redoes the last operation" - -#: QAD_Application.cxx:166 -msgid "QAD_Application::PRP_APP_EDIT_UNDO" -msgstr "Undoes the last operation" - -#: *.cxx:405 -msgid "PRP_VW3D_POINTCENTER" -msgstr "Set a new center of the view with MB1" - -#: *.cxx:374 -msgid "PRP_VW3D_SKETCHAREA" -msgstr "Sketch a rectangular area to fit the view" - -#--------------- -# TOOL TIP -#--------------- - -#: QAD_HelpWindow.cxx:57 -msgid "QAD_HelpWindow::TOT_HELPWINDOW_BACKWARD" -msgstr "Backward" - -#: QAD_HelpWindow.cxx:60 -msgid "QAD_HelpWindow::TOT_HELPWINDOW_FORWARD" -msgstr "Forward" - -#: QAD_HelpWindow.cxx:63 -msgid "QAD_HelpWindow::TOT_HELPWINDOW_HOME" -msgstr "Home" - -msgid "QAD_HelpWindow::QAD_HELP_CONTENTS" -msgstr "Contents" - -#: QAD_Application.cxx:173 -msgid "QAD_Application::TOT_APP_EDIT_REDO" -msgstr "Redo last operation" - -#: QAD_Application.cxx:163 -msgid "QAD_Application::TOT_APP_EDIT_UNDO" -msgstr "Undo last operation" - -#: QAD_Desktop.cxx:153 -msgid "QAD_Desktop::TOT_DESK_FILE_NEW" -msgstr "New study" - -#: QAD_Desktop.cxx:165 -msgid "QAD_Desktop::TOT_DESK_FILE_OPEN" -msgstr "Open study" - -#: QAD_Desktop.cxx:165 -msgid "QAD_Desktop::TOT_DESK_FILE_LOAD" -msgstr "Load study" - -#: QAD_Desktop.cxx:186 -msgid "QAD_Desktop::TOT_DESK_FILE_SAVE" -msgstr "Save study" - -#--------------- -# ERROR -#--------------- - -#: *.cxx:233 -msgid "QObject::ERR_VP_NOVIEW" -msgstr "No View" - -#: QAD_Desktop.cxx:516 -msgid "QAD_Desktop::ERR_APP_NOAPP" -msgstr "No application" - -#: QAD_Desktop.cxx:535 -msgid "QAD_Desktop::ERR_DOC_CANTCREATE" -msgstr "Cannot create study" - -#: QAD_Desktop.cxx:586 -msgid "QAD_Desktop::ERR_DOC_CANTOPEN" -msgstr "Cannot open study" - -#: QAD_Desktop.cxx:683 -msgid "QAD_Desktop::ERR_DOC_CANTWRITE" -msgstr "Cannot save study" - -#: QAD_Desktop.cxx:599 -msgid "QAD_Desktop::ERR_DOC_UNKNOWNTYPE" -msgstr "Unknown study type" - -#: QAD_Study.cxx:321 -msgid "QAD_Study::ERR_DOC_READONLY" -msgstr "The study is read-only" - -#: QAD_Desktop.cxx:683 -msgid "ERR_ERROR" -msgstr "Error" - -msgid "ERR_APP_EXCEPTION" -msgstr "An exception has been caught. Click to continue." - -msgid "ERR_ONLY_PLOT2D_VIEWER" -msgstr "This function is available only in Plot2d viewer" - -#: QAD_Desktop.cxx:2339 -msgid "ERR_LIBGUI" -msgstr "lib%1GUI.so has not been found. Check LD_LIBRARY_PATH environment variable" - -msgid "ERR_GET_GUI_FAILED" -msgstr "%1GUI instance creation failed!" - -msgid "ERR_GET_GUI_NOT_FOUND" -msgstr "GetComponentGUI() function not found in %1 library!" - -msgid "ERR_EMPTY_COMP_NAME" -msgstr "Component name not found for %1" - -msgid "ERR_COMP_DATA_NOT_LOADED" -msgstr "Persistent data for %1 component has not been loaded!\nProbably, persistent data file is missing or corrupted.\nThe component will be deactivated." - -#--------------- -# QUESTION -#--------------- - -#: QAD_Study.cxx:335 -msgid "QAD_Study::QUE_ABORTCURRENTOPERATION" -msgstr "The current operation is not terminated yet.\nDo you want to abort it ?" - -#: QAD_Desktop.cxx:465 -msgid "QAD_Desktop::QUE_DESK_EXIT" -msgstr "Do you really want to quit ?" - -#: QAD_Desktop.cxx:569 -msgid "QAD_Desktop::QUE_DOC_ALREADYOPEN" -msgstr "The study %1 is already open.\nDo you want to reload it ?" - -#: QAD_Desktop.cxx:569 -msgid "QAD_Desktop::QUE_DOC_ALREADYEXIST" -msgstr "The study %1 already exists in study manager.\nDo you want to reload it ?" - -#: QAD_Desktop.cxx:668 -msgid "QUE_DOC_FILEEXISTS" -msgstr "The file %1 already exists.\nDo you want to overwrite it ?" - -#: *.cxx:502 -#msgid "INF_READY" -#msgstr "Ready" - -#: QAD_Desktop.cxx:710 -msgid "QAD_Desktop::QUE_DOC_NOTSAVED" -msgstr "The study %1 is not saved.\nDo you want to save it ?" - -#--------------- -# WARNING -#--------------- - -#: *.cxx:374 -#msgid "PRP_VW3D_SKETCHAREA" -#msgstr "Sketch a rectangular area to fit the view" - -#: *.cxx:709 -msgid "WRN_WARNING" -msgstr "Warning" - -msgid "WRN_STUDY_LOCKED" -msgstr "This study is locked and therefore cannot be modified" - ------- - -#: QAD_Desktop.cxx:431 -msgid "QAD_Desktop::DESK_DEFAULTDOC" -msgstr "Study" - - -#: QAD_Desktop.cxx:920 -msgid "QAD_Desktop::DESK_FILES" -msgstr "Files" - -msgid "OCC_IMAGE_FILES" -msgstr "Images Files (*.bmp *.png *.jpg *.jpeg)" - -msgid "VTK_IMAGE_FILES" -msgstr "Images Files (*.tif)" - -msgid "INF_APP_DUMP_VIEW" -msgstr "Dump view" - -msgid "ERR_DOC_CANT_SAVE_FILE" -msgstr "Cannot save file" - -msgid "EDIT_CUT_CMD" -msgstr "Cu&t" - -msgid "EDIT_COPY_CMD" -msgstr "&Copy" - -msgid "EDIT_PASTE_CMD" -msgstr "&Paste" - -msgid "EDIT_CLEAR_CMD" -msgstr "Clear" - -msgid "EDIT_SELECTALL_CMD" -msgstr "Select All" - -msgid "MESSAGE_LOG_NAME" -msgstr "Message Log" - -msgid "QAD_DirListDlg::QUICK_DIR_LIST_TLT" -msgstr "Quick directory list" - -msgid "QAD_DirListDlg::EMPTY_DIR" -msgstr "" - -msgid "QAD_DirListDlg::DIRECTORIES_LBL" -msgstr "&Directories:" - -msgid "QAD_DirListDlg::ERR_DIRECTORY_SPECIFIED" -msgstr "Directory already specified." - -msgid "QAD_DirListDlg::WRN_DIRECTORY_N0T_EXIST" -msgstr "%1\n\nThe directory doesn't exist.\nAdd directory anyway?" - -msgid "QAD_DirListDlg::SELECT_DIRECTORY" -msgstr "Select directory" - -msgid "ERR_DOC_FILENOTEXIST" -msgstr "The file %1 doesn't exist" - -msgid "ERR_PERMISSION_DENIED" -msgstr "Can't save file %1.\nPermission denied." - -msgid "ERR_DIR_NOT_EXIST" -msgstr "%1\n\nThe directory doesn't exist." - -msgid "MEN_DESK_PREF_DIRICTORIES" -msgstr "&Directories..." - -msgid "QAD_FileDlg::DIRECTORIES_FILTER" -msgstr "Directories" - -msgid "MEN_DESK_FILE_PROPERTIES" -msgstr "&Properties..." - -msgid "PRP_DESK_FILE_PROPERTIES" -msgstr "View/modify study properties" - -msgid "PRP_YES" -msgstr "Yes" - -msgid "PRP_NO" -msgstr "No" - -msgid "PRP_STUDY_LOCKED" -msgstr "LOCKED" - -msgid "PRP_STUDY_MODIFIED" -msgstr "MODIFIED" - -msgid "PRP_STUDY_SAVED" -msgstr "SAVED" - -msgid "PRP_MODIFICATIONS" -msgstr "Modifications" - -msgid "PRP_MODE_FROM_SCRATCH" -msgstr "from scratch" - -msgid "PRP_MODE_FROM_COPYFROM" -msgstr "copy from" - -msgid "SALOMEGUI_StudyPropertiesDlg::TLT_STUDY_PROPERTIES" -msgstr "Study Properties" - -msgid "MEN_DESK_PREF_CONSOLE_FONT" -msgstr "Console Font" - -msgid "TLT_OBJECT_BROWSER" -msgstr "Object Browser" - -msgid "TLT_USECASE_BROWSER" -msgstr "UseCase Browser" - -msgid "OBJECT_BROWSER_VALUE" -msgstr "Value" - -msgid "OBJECT_BROWSER_ENTRY" -msgstr "Entry" - -msgid "OBJECT_BROWSER_IOR" -msgstr "IOR" - -msgid "OBJECT_BROWSER_REFENTRY" -msgstr "Reference entry" - -msgid "OBJECT_BROWSER_OBJECT" -msgstr "Object" - -msgid "MEN_DESK_PREF_OBJECTBROWSER_VALUE" -msgstr "Value column" - -msgid "SET_VALUE_INT_TLT" -msgstr "Set Integer" - -msgid "SET_VALUE_INT_LBL" -msgstr "Value:" - -msgid "SET_VALUE_REAL_TLT" -msgstr "Set Real" - -msgid "SET_VALUE_REAL_LBL" -msgstr "Value:" - -msgid "SET_VALUE_COMMENT_TLT" -msgstr "Set Comment" - -msgid "SET_VALUE_COMMENT_LBL" -msgstr "Comment:" - -msgid "QAD_Desktop::TLT_CLOSESTUDY" -msgstr "Close Study" - -msgid "QAD_Desktop::QUESTION_CLOSESTUDY" -msgstr "Do you want to delete study permanently?" - -msgid "UC_POPUP" -msgstr "Use case" - -msgid "UC_NEW_ID" -msgstr "New object" -msgid "UC_NEW_TIP" -msgstr "Creates new object under current context" - -msgid "UC_SET_CURRENT_ID" -msgstr "Set current" -msgid "UC_SET_CURRENT_TIP" -msgstr "Sets current context" - -msgid "UC_APPEND_ID" -msgstr "Add objects" -msgid "UC_APPEND_TIP" -msgstr "Add selected object(s) under current context" - -msgid "UC_REMOVE_ID" -msgstr "Remove objects" -msgid "UC_REMOVE_TIP" -msgstr "Remove selected object(s) from use case" - -msgid "UC_RENAME_ID" -msgstr "Rename" -msgid "UC_RENAME_TIP" -msgstr "Renames object" - -msgid "UC_CLEAR_ID" -msgstr "Clear" -msgid "UC_CLEAR_TIP" -msgstr "Clears use case" - -msgid "MEN_DESK_PREF_MULTI_FILE_SAVE" -msgstr "MultiFile Save" - -msgid "MEN_DESK_PREF_ASCII_SAVE" -msgstr "ASCII Save" - -msgid "TOT_APP_EDIT_COPY" -msgstr "Copy" - -msgid "MEN_DESK_PREF_UNDO_LEVEL" -msgstr "Undo Level" - -msgid "MEN_APP_EDIT_COPY" -msgstr "&Copy" - -msgid "PRP_APP_EDIT_COPY" -msgstr "Copies selected object into the clipboard" - -msgid "TOT_APP_EDIT_PASTE" -msgstr "Paste" - -msgid "MEN_APP_EDIT_PASTE" -msgstr "&Paste" - -msgid "PRP_APP_EDIT_PASTE" -msgstr "Pastes object from the clipboard" - -msgid "EDIT_VALUE_CMD" -msgstr "Edit value" - -msgid "EXPAND_ALL_CMD" -msgstr "Expand all" - -msgid "PLOT_TABLE_CMD" -msgstr "Plot table" - -msgid "NEW_OBJECT" -msgstr "New object" - -msgid "QUICK_PATH_LAB" -msgstr "Quick path:" - -msgid "ADD_PATH_BTN" -msgstr "Add" - diff --git a/src/SALOMEGUI/QAD_msg_fr.po b/src/SALOMEGUI/QAD_msg_fr.po deleted file mode 100644 index dec15cf79..000000000 --- a/src/SALOMEGUI/QAD_msg_fr.po +++ /dev/null @@ -1,615 +0,0 @@ -# SALOME SALOMEGUI : implementation of desktop and GUI kernel -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : QAD_msg_fr.po -# Module : SALOME - -msgid "" -msgstr "" -"Project-Id-Version: example-Qt-message-extraction\n" -"POT-Creation-Date: 1999-02-23 15:38+0200\n" -"PO-Revision-Date: 1999-02-23 15:38+0200\n" -"Last-Translator: \n" -"Content-Type: text/plain; charset=iso-8859-1\n" - -#--------------- -# BUTTONS -#--------------- - -msgid "BUT_CANCEL" -msgstr "Annule" - -msgid "BUT_HELP" -msgstr "Aide" - -msgid "BUT_OK" -msgstr "Ok" - -msgid "BUT_NO" -msgstr "Non" - -msgid "BUT_YES" -msgstr "Oui" - -#--------------- -# INFORMATIONS -#--------------- - -#: QAD_Desktop.cxx:1152 -msgid "Desktop_AppSelectionDlg::INF_DESK_DOC_CREATE" -msgstr "Créer une nouvelle étude" - -#: QAD_Desktop.cxx:722 -msgid "INF_CANCELLED" -msgstr "Annulé" - -#: QAD_Desktop.cxx:605 -msgid "INF_READY" -msgstr "Ready" - -#: QAD_Desktop.cxx:605 -msgid "INF_RESOURCES" -msgstr "Check your resources installation." - -#: QAD_Desktop.cxx:605 -msgid "INF_ICON_RESOURCES" -msgstr "Could not find icon file %1 for module %2.\n" - -#: QAD_Desktop.cxx:551 -msgid "INF_DESK_DOC_OPEN" -msgstr "Ouvrir l'étude" - -#: QAD_Desktop.cxx:654 -msgid "INF_DESK_DOC_SAVE" -msgstr "Enregistrer l'étude" - -#: QAD_Desktop.cxx:465 -msgid "QAD_Desktop::INF_DESK_EXIT" -msgstr "Quitter" - -#: QAD_Desktop.cxx:530 -msgid "QAD_Desktop::INF_DOC_CREATING" -msgstr "Création de l'étude" - -#: QAD_Desktop.cxx:558 -msgid "QAD_Desktop::INF_DOC_OPENING" -msgstr "Ouverture de l'étude" - -#: QAD_Desktop.cxx:691 -msgid "QAD_Desktop::INF_DOC_SAVED" -msgstr "Étude %1 sauvée" - -#: QAD_Desktop.cxx:679 -msgid "QAD_Desktop::INF_DOC_SAVING" -msgstr "Enregistrement de l'étude" - -#: QAD_Desktop.cxx:993 -msgid "QAD_Desktop::INF_PARSE_ERROR" -msgstr "Parse error" - -#: QAD_Study.cxx:570 -msgid "QAD_Study::INF_DOC_OPERATIONABORTED" -msgstr "Opération interrompue" - -#: QAD_Study.cxx:539 -msgid "QAD_Study::INF_DOC_OPERATIONFINISHED" -msgstr "Opération terminée" - -#: *.cxx:855 -msgid "INF_APP_EXPORT" -msgstr "Fichiers Images" - -#--------------- -# MENUS -#--------------- - -#: QAD_Desktop.cxx:19 -msgid "QAD_Desktop::MEN_OPENWITH" -msgstr "Open With..." - -#: QAD_Application.cxx:331 -msgid "QAD_Application::MEN_ABOUT" -msgstr "A propos de SALOME " - -#: QAD_Desktop.cxx:407 -msgid "QAD_Desktop::MEN_DESK_EDIT" -msgstr "&Édition" - -#: QAD_Desktop.cxx:138 -msgid "QAD_Desktop::MEN_DESK_FILE" -msgstr "&Fichier" - -#: QAD_Desktop.cxx:176 -msgid "QAD_Desktop::MEN_DESK_FILE_CLOSE" -msgstr "&Fermer" - -#: QAD_Desktop.cxx:206 -msgid "QAD_Desktop::MEN_DESK_FILE_EXIT" -msgstr "&Quitter" - -#: QAD_Desktop.cxx:155 -msgid "QAD_Desktop::MEN_DESK_FILE_NEW" -msgstr "&Nouveau" - -#: QAD_Desktop.cxx:166 -msgid "QAD_Desktop::MEN_DESK_FILE_OPEN" -msgstr "&Ouvrir ..." - -#: QAD_Desktop.cxx:166 -msgid "QAD_Desktop::MEN_DESK_FILE_LOAD" -msgstr "&Charger ..." - -#: QAD_Desktop.cxx:187 -msgid "QAD_Desktop::MEN_DESK_FILE_SAVE" -msgstr "&Enregistrer" - -#: QAD_Desktop.cxx:195 -msgid "QAD_Desktop::MEN_DESK_FILE_SAVEAS" -msgstr "Enregistrer sous ..." - -#: QAD_Desktop.cxx:141 -msgid "QAD_Desktop::MEN_DESK_HELP" -msgstr "&Aide" - -#: QAD_Desktop.cxx:291 -msgid "QAD_Desktop::MEN_DESK_HELP_ABOUT" -msgstr "&A propos de ..." - -#: QAD_Desktop.cxx:265 -msgid "QAD_Desktop::MEN_DESK_HELP_CONTENTS" -msgstr "&Sommaire" - -#: QAD_Desktop.cxx:273 -msgid "QAD_Desktop::MEN_DESK_HELP_SEARCH" -msgstr "&Recherche ..." - -#: QAD_Desktop.cxx:280 -msgid "QAD_Desktop::MEN_DESK_HELP_WHATSTHIS" -msgstr "Qu'est-ce-que c'est?" - -#: QAD_Desktop.cxx:139 -msgid "QAD_Desktop::MEN_DESK_VIEW" -msgstr "&Affichage" - -#: QAD_Config.cxx:265 -msgid "MEN_DESK_PREF" -msgstr "Préférences" - -#: QAD_Config.cxx:376 -msgid "MEN_DESK_PREF_SAVE" -msgstr "Enregistrer" - -#: QAD_Config.cxx:376 -msgid "MEN_DESK_PREF_VIEWER" -msgstr "Fond vues 3D" - -#: QAD_Config.cxx:376 -msgid "MEN_DESK_PREF_VIEWER_TRIHEDRON" -msgstr "Dimension du repère" - -msgid "MEN_DESK_PREF_DEFAULT_VIEWER" -msgstr "Default viewer" - -#: QAD_Config.cxx:378 -msgid "MEN_DESK_PREF_VIEWER_OCC" -msgstr "Viewer OCC" - -#: QAD_Config.cxx:383 -msgid "MEN_DESK_PREF_VIEWER_VTK" -msgstr "Viewer VTK" - -#: QAD_Config.cxx:383 -msgid "MEN_DESK_PREF_GRAPH_SUPERVISOR" -msgstr "Graphe Supervision" - -#: QAD_Desktop.cxx:473 -msgid "MEN_DESK_PREF_OBJECTBROWSER" -msgstr "ObjectBrowser" - -#: QAD_Desktop.cxx:473 -msgid "MEN_DESK_PREF_OBJECTBROWSER_ENTRY" -msgstr "Entry, IOR colonnes" - -#: QAD_Desktop.cxx:473 -msgid "MEN_DESK_PREF_OBJECTBROWSER_IAPP" -msgstr "Interface Applicative" - -msgid "MEN_DESK_PREF_OBJECTBROWSER_CHRONO_SORT" -msgstr "Objets par ordre chrono" - - -msgid "QAD_Desktop::MEN_DESK_SELECTION_MODE" -msgstr "Mode de Selection" - -msgid "QAD_Desktop::MEN_DESK_SELECTION_POINT" -msgstr "Point" - -msgid "QAD_Desktop::MEN_DESK_SELECTION_EDGE" -msgstr "Arête" - -msgid "QAD_Desktop::MEN_DESK_SELECTION_CELL" -msgstr "Cellule" - -msgid "QAD_Desktop::MEN_DESK_SELECTION_ACTOR" -msgstr "Acteur" - -#: QAD_Config.cxx:265 -msgid "MEN_DESK_TOOLS" -msgstr "Outils" - -#: QAD_Desktop.cxx:228 -msgid "QAD_Desktop::MEN_DESK_VIEW_STATUSBAR" -msgstr "&Barre d'état" - -#: QAD_Desktop.cxx:217 -msgid "QAD_Desktop::MEN_DESK_VIEW_STDTOOLBAR" -msgstr "Barre d'outils standard" - -#: QAD_Desktop.cxx:140 -msgid "QAD_Desktop::MEN_DESK_WINDOW" -msgstr "&Fenêtre" - -#: QAD_Desktop.cxx:248 -msgid "QAD_Desktop::MEN_DESK_WINDOW_CASCADE" -msgstr "&Cascade" - -#: QAD_Desktop.cxx:240 -msgid "QAD_Desktop::MEN_DESK_WINDOW_NEW3D" -msgstr "&Nouvelle fenêtre 3D" - -#: QAD_Desktop.cxx:256 -msgid "QAD_Desktop::MEN_DESK_WINDOW_TILE" -msgstr "&Mozaïque" - -#: QAD_Application.cxx:175 -msgid "QAD_Application::MEN_APP_EDIT_REDO" -msgstr "Répeter" - -#: QAD_Application.cxx:165 -msgid "QAD_Application::MEN_APP_EDIT_UNDO" -msgstr "Annuler" - -#: QAD_Config.cxx:84 -msgid "MEN_APPNAME" -msgstr "salome" - -#: QAD_Study.cxx:482 -msgid "QAD_Study::MEN_VIEWER" -msgstr "Viewer" - -#: *.cxx:45 -msgid "MEN_VP3D_CHANGEBGR" -msgstr "Changer l'arrière-plan..." - -msgid "MEN_APP_DISPLAY" -msgstr "Afficher" - -msgid "MEN_APP_DISPLAY_ONLY" -msgstr "Afficher seulement" - -msgid "MEN_APP_ERASE" -msgstr "Effacer" - -#--------------- -# PRP -#--------------- - -#: QAD_Desktop.cxx:177 -msgid "QAD_Desktop::PRP_DESK_FILE_CLOSE" -msgstr "Fermer l'étude" - -#: QAD_Desktop.cxx:207 -msgid "QAD_Desktop::PRP_DESK_FILE_EXIT" -msgstr "Quitter l'application" - -#: QAD_Desktop.cxx:156 -msgid "QAD_Desktop::PRP_DESK_FILE_NEW" -msgstr "Créer une nouvelle étude" - -#: QAD_Desktop.cxx:167 -msgid "QAD_Desktop::PRP_DESK_FILE_OPEN" -msgstr "Ouvrir une étude existante" - -#: QAD_Desktop.cxx:167 -msgid "QAD_Desktop::PRP_DESK_FILE_LOAD" -msgstr "Charger une étude existante" - -#: QAD_Desktop.cxx:188 -msgid "QAD_Desktop::PRP_DESK_FILE_SAVE" -msgstr "Enregistrer l'étude" - -#: QAD_Desktop.cxx:196 -msgid "QAD_Desktop::PRP_DESK_FILE_SAVEAS" -msgstr "Enregistrer l'étude sous ..." - -#: QAD_Desktop.cxx:292 -msgid "QAD_Desktop::PRP_DESK_HELP_ABOUT" -msgstr "Shows \'About\' dialog" - -#: QAD_Desktop.cxx:266 -msgid "QAD_Desktop::PRP_DESK_HELP_CONTENTS" -msgstr "Sommaire" - -#: QAD_Desktop.cxx:274 -msgid "QAD_Desktop::PRP_DESK_HELP_SEARCH" -msgstr "Recherche" - -#: QAD_Desktop.cxx:281 -msgid "QAD_Desktop::PRP_DESK_HELP_WHATSTHIS" -msgstr "Qu'est-ce-que c'est?" - -#: QAD_Desktop.cxx:230 -msgid "QAD_Desktop::PRP_DESK_VIEW_STATUSBAR" -msgstr "Toggles status bar view on/off" - -#: QAD_Desktop.cxx:220 -msgid "QAD_Desktop::PRP_DESK_VIEW_STDTOOLBAR" -msgstr "Toggles standard toolbar on/off" - -#: QAD_Desktop.cxx:871 -msgid "QAD_Desktop::PRP_DESK_WINDOW_ACTIVATE" -msgstr "Activer cette fenêtre" - -#: QAD_Desktop.cxx:249 -msgid "QAD_Desktop::PRP_DESK_WINDOW_CASCADE" -msgstr "Fenêtres en cascade" - -#: QAD_Desktop.cxx:257 -msgid "QAD_Desktop::PRP_DESK_WINDOW_TILE" -msgstr "Fenêtres en mozaïque" - -#: QAD_Application.cxx:176 -msgid "QAD_Application::PRP_APP_EDIT_REDO" -msgstr "Répéter la dernière opération" - -#: QAD_Application.cxx:166 -msgid "QAD_Application::PRP_APP_EDIT_UNDO" -msgstr "Annuler la dernière opération" - -#: *.cxx:405 -msgid "PRP_VW3D_POINTCENTER" -msgstr "Choisir un centre pour la vue avec MB1" - -#: *.cxx:374 -msgid "PRP_VW3D_SKETCHAREA" -msgstr "Sélectionner une zone d'affichage" - -#--------------- -# TOOL TIP -#--------------- - -#: QAD_Application.cxx:173 -msgid "QAD_Application::TOT_APP_EDIT_REDO" -msgstr "Répéter l'opération" - -#: QAD_Application.cxx:163 -msgid "QAD_Application::TOT_APP_EDIT_UNDO" -msgstr "Annuler l'opération" - -#: QAD_Desktop.cxx:153 -msgid "QAD_Desktop::TOT_DESK_FILE_NEW" -msgstr "Nouvelle étude" - -#: QAD_Desktop.cxx:165 -msgid "QAD_Desktop::TOT_DESK_FILE_OPEN" -msgstr "Ouvrir étude" - -#: QAD_Desktop.cxx:165 -msgid "QAD_Desktop::TOT_DESK_FILE_LOAD" -msgstr "Charger étude" - -#: QAD_Desktop.cxx:186 -msgid "QAD_Desktop::TOT_DESK_FILE_SAVE" -msgstr "Enregistrer étude" - -#--------------- -# ERROR -#--------------- - -#: *.cxx:233 -msgid "QObject::ERR_VP_NOVIEW" -msgstr "Pas de Vue" - -#: QAD_Desktop.cxx:516 -msgid "QAD_Desktop::ERR_APP_NOAPP" -msgstr "Pas d'application" - -#: QAD_Desktop.cxx:535 -msgid "QAD_Desktop::ERR_DOC_CANTCREATE" -msgstr "Impossible de créer l'étude" - -#: QAD_Desktop.cxx:586 -msgid "QAD_Desktop::ERR_DOC_CANTOPEN" -msgstr "Impossible d'ouvrir l'étude" - -#: QAD_Desktop.cxx:683 -msgid "QAD_Desktop::ERR_DOC_CANTWRITE" -msgstr "Impossible d'enregistrer l'étude" - -#: QAD_Desktop.cxx:599 -msgid "QAD_Desktop::ERR_DOC_UNKNOWNTYPE" -msgstr "Type d'étude inconnu" - -#: QAD_Study.cxx:321 -msgid "QAD_Study::ERR_DOC_READONLY" -msgstr "L'étude est en lecture seule" - -#: QAD_Desktop.cxx:683 -msgid "ERR_ERROR" -msgstr "Erreur" - - -#: QAD_Desktop.cxx:2339 -msgid "ERR_LIBGUI" -msgstr "La lib%1.so n'a pas été trouvée. Verifier la variable d'environnement LD_LIBRARY_PATH" - -#--------------- -# QUESTION -#--------------- - -#: QAD_Study.cxx:335 -msgid "QAD_Study::QUE_ABORTCURRENTOPERATION" -msgstr "L'opération n'est pas encore terminée.\nVoulez-vous l'interrompre ?" - -#: QAD_Desktop.cxx:465 -msgid "QAD_Desktop::QUE_DESK_EXIT" -msgstr "Voulez-vous vraiment quitter ? " - -#: QAD_Desktop.cxx:569 -msgid "QAD_Desktop::QUE_DOC_ALREADYOPEN" -msgstr "L'étude %1 est déja ouverte.\nVoulez-vous la recharger ?" - -#: QAD_Desktop.cxx:569 -msgid "QAD_Desktop::QUE_DOC_ALREADYEXIST" -msgstr "L'étude %1 est déja présente dans le gestionnaire d'études.\nVoulez-vous la recharger ?" - -#: *.cxx:502 -#msgid "INF_READY" -#msgstr "Ready" - -#: QAD_Desktop.cxx:668 -msgid "QAD_Desktop::QUE_DOC_FILEEXISTS" -msgstr "Le fichier %1 existe déja.\nVoulez-vous l'écraser ?" - -#: *.cxx:405 -#msgid "PRP_VW3D_POINTCENTER" -#msgstr "Choisir un centre pour la vue avec MB1" - -#: QAD_Desktop.cxx:710 -msgid "QAD_Desktop::QUE_DOC_NOTSAVED" -msgstr "L'étude %1 n'est pas enregistrée.\nVoulez-vous l'enregistrer ?" - -#--------------- -# WARNING -#--------------- - -#: QAD_Desktop.cxx:709 -msgid "WRN_WARNING" -msgstr "Attention" - -#: QAD_Desktop.cxx:1072 -msgid "QAD_Desktop::WRN_LOAD_COMPONENT" -msgstr "Créer ou ouvrir une étude" - ------- - -#: QAD_Application.cxx:133 -msgid "QAD_Application::APP_DEFAULTTITLE" -msgstr "SALOME" - - -#: QAD_Desktop.cxx:431 -msgid "QAD_Desktop::DESK_DEFAULTDOC" -msgstr "Étude" - -#: QAD_Desktop.cxx:424 -msgid "QAD_Desktop::DESK_DEFAULTTITLE" -msgstr "SALOME" - -#: QAD_Desktop.cxx:920 -msgid "QAD_Desktop::DESK_FILES" -msgstr "Fichiers" - -msgid "OCC_IMAGE_FILES" -msgstr "Fichiers Images (*.bmp *.png *.jpg *.jpeg)" - -msgid "VTK_IMAGE_FILES" -msgstr "Fichiers Images (*.tif)" - -msgid "INF_APP_DUMP_VIEW" -msgstr "Dump vue" - -msgid "ERR_DOC_CANT_SAVE_FILE" -msgstr "Impossible d'enregistrer le fichier" - -msgid "EDIT_COPY_CMD" -msgstr "Copier" - -msgid "EDIT_PASTE_CMD" -msgstr "Coller" - -msgid "EDIT_CLEAR_CMD" -msgstr "Vider" - -msgid "EDIT_SELECTALL_CMD" -msgstr "Sélectionner Tout" - -msgid "MESSAGE_LOG_NAME" -msgstr "Message Log" - -msgid "QAD_DirListDlg::QUICK_DIR_LIST_TLT" -msgstr "Quick directory list" - -msgid "QAD_DirListDlg::EMPTY_DIR" -msgstr "" - -msgid "QAD_DirListDlg::DIRECTORIES_LBL" -msgstr "&Directories:" - -msgid "QAD_DirListDlg::ERR_DIRECTORY_SPECIFIED" -msgstr "Directory already specified." - -msgid "QAD_DirListDlg::WRN_DIRECTORY_N0T_EXIST" -msgstr "%1\n\nThe directory doesn't exist.\nAdd directory anyway?" - -msgid "QAD_DirListDlg::SELECT_DIRECTORY" -msgstr "Select directory" - -msgid "ERR_DOC_FILENOTEXIST" -msgstr "The file %1 doesn't exist" - -msgid "ERR_PERMISSION_DENIED" -msgstr "Can't save file %1.\nPermission denied." - -msgid "ERR_DIR_NOT_EXIST" -msgstr "%1\n\nThe directory doesn't exist." - -msgid "MEN_DESK_PREF_DIRICTORIES" -msgstr "&Directories..." - -msgid "QAD_FileDlg::DIRECTORIES_FILTER" -msgstr "Directories" - -msgid "MEN_DESK_FILE_PROPERTIES" -msgstr "&Properties..." - -msgid "PRP_DESK_FILE_PROPERTIES" -msgstr "View/modify study properties" - -msgid "PRP_YES" -msgstr "Yes" - -msgid "PRP_NO" -msgstr "No" - -msgid "PRP_STUDY_LOCKED" -msgstr "LOCKED" - -msgid "PRP_STUDY_MODIFIED" -msgstr "MODIFIED" - -msgid "PRP_STUDY_SAVED" -msgstr "SAVED" - -msgid "PRP_MODIFICATIONS" -msgstr "Modifications" diff --git a/src/SALOMEGUI/SALOMEGUI.cxx b/src/SALOMEGUI/SALOMEGUI.cxx deleted file mode 100644 index 81e91ae42..000000000 --- a/src/SALOMEGUI/SALOMEGUI.cxx +++ /dev/null @@ -1,181 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOMEGUI.cxx -// Author : Sergey ANIKIN -// Module : SALOME -// $Header$ - -#include "SALOMEGUI.h" -#include "QAD_Desktop.h" - -using namespace std; - -//============================================================================= -/*! - * - */ -//============================================================================= -SALOMEGUI::SALOMEGUI( const QString& name, QObject* parent ) -: QObject( parent ), - myName( name ) -{ -} - -//============================================================================= -/*! - * - */ -//============================================================================= -SALOMEGUI::~SALOMEGUI() -{ -} - -//============================================================================= -/*! - * - */ -//============================================================================= -bool SALOMEGUI::OnGUIEvent(int theCommandID, QAD_Desktop* parent) -{ - return true; -} - -//============================================================================= -/*! - * - */ -//============================================================================= -bool SALOMEGUI::OnKeyPress(QKeyEvent* pe, QAD_Desktop* parent, QAD_StudyFrame* studyFrame) -{ - return true; -} - -//============================================================================= -/*! - * - */ -//============================================================================= -bool SALOMEGUI::OnMousePress(QMouseEvent* pe, QAD_Desktop* parent, QAD_StudyFrame* studyFrame) -{ - return true; -} - -//============================================================================= -/*! - * - */ -//============================================================================= -bool SALOMEGUI::OnMouseMove(QMouseEvent* pe, QAD_Desktop* parent, QAD_StudyFrame* studyFrame) -{ - return true; -} - -//============================================================================= -/*! - * - */ -//============================================================================= -bool SALOMEGUI::SetSettings( QAD_Desktop* parent ) -{ - return true; -} - -//============================================================================= -/*! - * - */ -//============================================================================= -bool SALOMEGUI::SetSettings( QAD_Desktop* parent, char* compName ) -{ - return SetSettings( parent); -} - -//============================================================================= -/*! - * - */ -//============================================================================= -bool SALOMEGUI::CustomPopup( QAD_Desktop* parent, QPopupMenu* popup, const QString & theContext, - const QString & theParent, const QString & theObject ) -{ - return true; -} - -//============================================================================= -/*! - * - */ -//============================================================================= -void SALOMEGUI::DefinePopup( QString & theContext, QString & theParent, QString & theObject ) -{ -} - -//============================================================================= -/*! - * - */ -//============================================================================= -bool SALOMEGUI::ActiveStudyChanged( QAD_Desktop* parent ) -{ - //static QAD_Study* aPrevStudy = NULL; - //QAD_Study* aStudy = parent->getActiveStudy(); - //if(!aPrevStudy) - // aPrevStudy = aStudy; - //if(aStudy != aPrevStudy){ - // emit SignalCloseAllDialogs(); - // aPrevStudy = aStudy; - //} - emit SignalCloseAllDialogs(); - return true; -} - -//============================================================================= -/*! - * - */ -//============================================================================= -void SALOMEGUI::BuildPresentation( const Handle(SALOME_InteractiveObject)&, - QAD_ViewFrame* ) -{ -} - -//============================================================================= -/*! - * - */ -//============================================================================= -void SALOMEGUI::SupportedViewType(int* /*buffer*/, int /*bufferSize*/ ) -{ -} - -//============================================================================= -/*! - * - */ -//============================================================================= -void SALOMEGUI::Deactivate() -{ - emit SignalCloseAllDialogs(); -} - diff --git a/src/SALOMEGUI/SALOMEGUI.h b/src/SALOMEGUI/SALOMEGUI.h deleted file mode 100644 index 3e3ede634..000000000 --- a/src/SALOMEGUI/SALOMEGUI.h +++ /dev/null @@ -1,81 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOMEGUI.hxx -// Author : Sergey ANIKIN -// Module : SALOME -// $Header$ - -#ifndef SALOMEGUI_HeaderFile -#define SALOMEGUI_HeaderFile - -#include - -#include -#include - -class QAD_Desktop; -class QAD_ViewFrame; -class QAD_StudyFrame; -class SALOME_Event; - -class Handle_SALOME_InteractiveObject; - -class QKeyEvent; -class QMouseEvent; -class QPopupMenu; -class QString; - - -class Standard_EXPORT SALOMEGUI : public QObject -{ - Q_OBJECT - -public: - SALOMEGUI( const QString& name = "", QObject* parent = 0 ); - virtual ~SALOMEGUI(); - - virtual bool OnGUIEvent (int theCommandID, QAD_Desktop* parent); - virtual bool OnKeyPress (QKeyEvent* pe, QAD_Desktop* parent, QAD_StudyFrame* studyFrame); - virtual bool OnMousePress (QMouseEvent* pe, QAD_Desktop* parent, QAD_StudyFrame* studyFrame); - virtual bool OnMouseMove (QMouseEvent* pe, QAD_Desktop* parent, QAD_StudyFrame* studyFrame); - virtual bool SetSettings ( QAD_Desktop* parent ); - virtual bool SetSettings ( QAD_Desktop* parent, char* compName ); - virtual bool CustomPopup ( QAD_Desktop* parent, QPopupMenu* popup, const QString & theContext, - const QString & theParent, const QString & theObject ); - virtual void DefinePopup ( QString & theContext, QString & theParent, QString & theObject ); - virtual bool ActiveStudyChanged( QAD_Desktop* parent ); - virtual void BuildPresentation ( const Handle(SALOME_InteractiveObject)& theIO, - QAD_ViewFrame* = 0 ); - virtual void SupportedViewType (int* buffer, int bufferSize); - virtual void Deactivate (); - -signals: - void SignalDeactivateActiveDialog(); - void SignalCloseAllDialogs (); - -private: - QString myName; -}; - -#endif diff --git a/src/SALOMEGUI/SALOMEGUI_AboutDlg.cxx b/src/SALOMEGUI/SALOMEGUI_AboutDlg.cxx deleted file mode 100644 index fb7e59301..000000000 --- a/src/SALOMEGUI/SALOMEGUI_AboutDlg.cxx +++ /dev/null @@ -1,147 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOMEGUI_AboutDlg.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "SALOMEGUI_AboutDlg.h" -#include "QAD_Desktop.h" -#include "QAD_Tools.h" -#include -#include -#include -using namespace std; - -/* - * Constructor - */ -SALOMEGUI_AboutDlg::SALOMEGUI_AboutDlg(QWidget* parent, const char* name ) - : QDialog( parent, name, true, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ) -{ - QPalette pal = palette(); - QColorGroup cg; - cg.setColor( QColorGroup::Foreground, Qt::black ); - cg.setColor( QColorGroup::Button, QColor( 192, 192, 192) ); - cg.setColor( QColorGroup::Light, Qt::white ); - cg.setColor( QColorGroup::Midlight, QColor( 223, 223, 223) ); - cg.setColor( QColorGroup::Dark, QColor( 96, 96, 96) ); - cg.setColor( QColorGroup::Mid, QColor( 128, 128, 128) ); - cg.setColor( QColorGroup::Text, Qt::black ); - cg.setColor( QColorGroup::BrightText, Qt::white ); - cg.setColor( QColorGroup::ButtonText, Qt::black ); - cg.setColor( QColorGroup::Base, Qt::white ); - cg.setColor( QColorGroup::Background, Qt::white ); - cg.setColor( QColorGroup::Shadow, Qt::black ); - cg.setColor( QColorGroup::Highlight, QColor( 0, 0, 128) ); - cg.setColor( QColorGroup::HighlightedText, Qt::white ); - pal.setActive( cg ); - pal.setInactive( cg ); - pal.setDisabled( cg ); - setPalette(pal); - - setCaption( tr("ABOUT_TLT") ); - setSizeGripEnabled( false ); - QVBoxLayout* SALOMEGUI_AboutDlgLayout = new QVBoxLayout( this ); - SALOMEGUI_AboutDlgLayout->setSpacing( 6 ); - SALOMEGUI_AboutDlgLayout->setMargin( 11 ); - - AboutPicLab = new QLabel( this, "AboutPicLab" ); - AboutPicLab->setFrameStyle( QLabel::Plain | QLabel::Box ); - QPixmap icon1 ( QAD_Desktop::getResourceManager()->loadPixmap( "CLIENT", - tr("ICON_ABOUT") )); - - QString msg; - if(!QAD_Desktop::getResourceManager()->loadResources( "CLIENT", msg )) - { - QMessageBox::warning( this, tr("WRN_WARNING"), msg, tr ("BUT_OK") ); - } - - AboutPicLab->setPixmap( icon1 ); - AboutPicLab->setScaledContents( false ); - AboutPicLab->setAlignment( AlignCenter ); - AboutPicLab->installEventFilter(this); - SALOMEGUI_AboutDlgLayout->addWidget( AboutPicLab ); - - VersionLab = new QLabel( this, "VersionLab" ); - VersionLab->setText( tr( "INF_VERSION" ) ); - VersionLab->setAlignment( AlignCenter ); - VersionLab->installEventFilter(this); - SALOMEGUI_AboutDlgLayout->addWidget( VersionLab ); - - CopyrightLab = new QLabel( this, "CopyrightLab" ); - CopyrightLab->setText( tr( "INF_COPYRIGHT" ) ); - CopyrightLab->setAlignment( AlignCenter ); - CopyrightLab->installEventFilter(this); - SALOMEGUI_AboutDlgLayout->addWidget( CopyrightLab ); - - LicenseLab = new QLabel( this, "LicenseLab" ); - LicenseLab->setText( tr( "INF_LICENSE" ) ); - LicenseLab->setAlignment( int( QLabel::WordBreak | QLabel::AlignCenter ) ); - QFont LicenseLabFont( LicenseLab->font() ); - LicenseLabFont.setPointSize( 10 ); - LicenseLab->setFont( LicenseLabFont ); - LicenseLab->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum)); - LicenseLab->installEventFilter(this); - SALOMEGUI_AboutDlgLayout->addWidget( LicenseLab ); - LicenseLab->polish(); - - setMaximumSize(minimumSize()); - - QAD_Tools::alignWidget(this, parent, AlignCenter); -} - -/* - * Destroys the object and frees any allocated resources - */ -SALOMEGUI_AboutDlg::~SALOMEGUI_AboutDlg() -{ - // no need to delete child widgets, Qt does it all for us -} - -/* - * Main event handler. Reimplemented to handle application - * font changes - */ -bool SALOMEGUI_AboutDlg::event( QEvent* ev ) -{ - bool ret = QDialog::event( ev ); - if ( ev->type() == QEvent::ApplicationFontChange ) { - QFont LicenseLabFont( LicenseLab->font() ); - LicenseLabFont.setPointSize( 10 ); - LicenseLab->setFont( LicenseLabFont ); - } - else if ( ev->type() == QEvent::MouseButtonRelease ) { - accept(); - } - return ret; -} - -bool SALOMEGUI_AboutDlg::eventFilter( QObject* o, QEvent* e) -{ - if (e->type() == QEvent::MouseButtonRelease) { - accept(); - } - return QDialog::eventFilter(o, e); -} diff --git a/src/SALOMEGUI/SALOMEGUI_AboutDlg.h b/src/SALOMEGUI/SALOMEGUI_AboutDlg.h deleted file mode 100644 index ea869812e..000000000 --- a/src/SALOMEGUI/SALOMEGUI_AboutDlg.h +++ /dev/null @@ -1,54 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOMEGUI_AboutDlg.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef SALOMEGUI_ABOUTDLG_H -#define SALOMEGUI_ABOUTDLG_H - -#include -#include -#include - -class SALOMEGUI_AboutDlg : public QDialog -{ -public: - SALOMEGUI_AboutDlg( QWidget* parent = 0, const char* name = 0 ); - ~SALOMEGUI_AboutDlg(); - -protected: - bool event( QEvent* ); - bool eventFilter( QObject*, QEvent* ); - -protected: - QLabel* AboutPicLab; - QLabel* VersionLab; - QLabel* CopyrightLab; - QLabel* PartnerPicLab; - QLabel* LicenseLab; -}; - -#endif // SALOMEGUI_ABOUTDIALOG_H diff --git a/src/SALOMEGUI/SALOMEGUI_ActivateComponentDlg.cxx b/src/SALOMEGUI/SALOMEGUI_ActivateComponentDlg.cxx deleted file mode 100644 index a182a2d46..000000000 --- a/src/SALOMEGUI/SALOMEGUI_ActivateComponentDlg.cxx +++ /dev/null @@ -1,200 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : SALOMEGUI_ActivateComponentDlg.cxx -// Author : Michael Zorin (mzn) -// Module : SALOME - -#include "SALOMEGUI_ActivateComponentDlg.h" - -#include -#include -#include -#include -#include -using namespace std; - -static const char* const default_icon[] = { -"48 48 17 1", -". c None", -"# c #161e4c", -"b c #1d3638", -"e c #2f585b", -"i c #345b5e", -"c c #386266", -"g c #3f7477", -"d c #4d8589", -"m c #519099", -"o c #6abbc1", -"a c #70c9d3", -"f c #79ddea", -"n c #7adff2", -"k c #7ce2f4", -"j c #993550", -"h c #d84b71", -"l c #ef537d", -"................................................", -"................................................", -"................................................", -"................................................", -"................................................", -"................########.########.########......", -"...............#aaaaaa###aaaaaa###aaaaaa##......", -"..............#aaaaaa#b#aaaaaa#b#aaaaaa#c#......", -".............########b########b########cc#......", -".............#dddddd#b#dddddd#b#dddddd#cc#......", -"...........########d########d########d#cc#......", -"..........#aaaaaa###aaaaaa###aaaaaa##d#cc#......", -".........#aaaaaa#b#aaaaaa#b#aaaaaa#c#d#cc#......", -"........########b########e########cc#d#c#.......", -"........#dddddd#b#dddddd#e#ffffff#cc#d####......", -"......########d########d########f#cc###g##......", -".....#aaaaaa###aaaaaa###hhhhhh##f#cc#gg#c#......", -"....#aaaaaa#b#aaaaaa#i#hhhhhh#j#f#cc###cc#......", -"...########b########i########jj#f#c#gg#cc#......", -"...#kkkkkk#b#kkkkkk#i#llllll#jj#f####g#cc#......", -"...#kkkkkk#b#kkkkkk#i#llllll#jj###m##g#cc#......", -"...#knnkkk#b#kkkkkk#i#llllll#jj#mm#c#g#cc#......", -"...#knnkkk#b#kkkkkk#i#llllll#jj###cc#g#c#.......", -"...#kkkkkk#b#kkkkkk#i#llllll#j#dd#cc#g####......", -"...#kkkkkk###kkkkkk###llllll####d#cc###g##......", -"...########g########g########o##d#cc#gg#c#......", -"....#gggggg#b#gggggg#b#oooooo#c#d#cc###cc#......", -"...########b########b########cc#d#c#gg#cc#......", -"...#kkkkkk#b#kkkkkk#b#kkkkkk#cc#d####g#cc#......", -"...#kkkkkk#b#kkkkkk#b#kkkkkk#cc###g##g#cc#......", -"...#kkkkkk#b#kkkkkk#b#kkkkkk#cc#gg#c#g#cc#......", -"...#kkkkkk#b#kkkkkk#b#kkkkkk#cc###cc#g#c#.......", -"...#kkkkkk#b#kkkkkk#b#kkkkkk#c#gg#cc#g##........", -"...#kkkkkk###kkkkkk###kkkkkk####g#cc###.........", -"...########g########g########g##g#cc#...........", -"....#gggggg#b#gggggg#b#gggggg#c#g#cc#...........", -"...########b########b########cc#g#c#............", -"...#kkkkkk#b#kkkkkk#b#kkkkkk#cc#g##.............", -"...#kkkkkk#b#kkkkkk#b#kkkkkk#cc###..............", -"...#kkkkkk#b#kkkkkk#b#kkkkkk#cc#................", -"...#kkkkkk#b#kkkkkk#b#kkkkkk#cc#................", -"...#kkkkkk#b#kkkkkk#b#kkkkkk#c#.................", -"...#kkkkkk###kkkkkk###kkkkkk##..................", -"...########.########.########...................", -"................................................", -"................................................", -"................................................", -"................................................"}; - -//============================================================================================================================== -/*! - * SALOMEGUI_ActivateComponentDlg::SALOMEGUI_ActivateComponentDlg - * - * Constructor - */ -//============================================================================================================================== -SALOMEGUI_ActivateComponentDlg::SALOMEGUI_ActivateComponentDlg ( QWidget * parent, const QString& component, const QPixmap icon ) - : QDialog ( parent, "ActivateModuleDlg", true, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ) -{ - QPixmap defaultIcon( ( const char** ) default_icon ); - setCaption( tr( "CAPTION" ) ); - setSizeGripEnabled( TRUE ); - - QGridLayout* ActivateModuleDlgLayout = new QGridLayout( this ); - ActivateModuleDlgLayout->setMargin( 11 ); ActivateModuleDlgLayout->setSpacing( 6 ); - - // Module's name and icon - myComponentFrame = new QFrame( this, "myComponentFrame" ); - myComponentFrame->setSizePolicy( QSizePolicy( QSizePolicy::Fixed, QSizePolicy::Expanding ) ); - myComponentFrame->setMinimumHeight( 100 ); - myComponentFrame->setFrameStyle( QFrame::Box | QFrame::Sunken ); - - QGridLayout* myComponentFrameLayout = new QGridLayout( myComponentFrame ); - myComponentFrameLayout->setMargin( 11 ); myComponentFrameLayout->setSpacing( 6 ); - - // --> icon - myComponentIcon = new QLabel( myComponentFrame, "myComponentIcon" ); - myComponentIcon->setSizePolicy( QSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed ) ); - myComponentIcon->setPixmap( !icon.isNull() ? icon : defaultIcon ); - myComponentIcon->setScaledContents( false ); - myComponentIcon->setAlignment( AlignCenter ); - // --> name - myComponentLab = new QLabel( component, myComponentFrame, "myComponentLab" ); - QFont fnt = myComponentLab->font(); fnt.setBold( TRUE ); myComponentLab->setFont( fnt ); - myComponentLab->setAlignment( AlignCenter ); - - myComponentFrameLayout->addWidget( myComponentIcon, 0, 0 ); - myComponentFrameLayout->addWidget( myComponentLab, 0, 1 ); - - // Info - QVBoxLayout* infoLayout = new QVBoxLayout(); - infoLayout->setMargin( 0 ); infoLayout->setSpacing( 6 ); - - // --> top line - QFrame* myLine1 = new QFrame( this, "myLine1" ); - myLine1->setFrameStyle( QFrame::HLine | QFrame::Plain ); - // --> info label - myInfoLabel = new QLabel( tr ("ActivateComponent_DESCRIPTION"), this, "myInfoLabel" ); - myInfoLabel->setAlignment( AlignCenter ); - // --> bottom line - QFrame* myLine2 = new QFrame( this, "myLine2" ); - myLine2->setFrameStyle( QFrame::HLine | QFrame::Plain ); - - infoLayout->addStretch(); - infoLayout->addWidget( myLine1 ); - infoLayout->addWidget( myInfoLabel ); - infoLayout->addWidget( myLine2 ); - infoLayout->addStretch(); - - // Buttons - QHBoxLayout* btnLayout = new QHBoxLayout(); - btnLayout->setMargin( 0 ); btnLayout->setSpacing( 6 ); - - // --> New - myNewBtn = new QPushButton( tr( "NEW" ), this, "myNewBtn" ); - myNewBtn->setDefault( true ); myNewBtn->setAutoDefault( true ); - // --> Open - myOpenBtn = new QPushButton( tr( "OPEN" ), this, "myOpenBtn" ); - myOpenBtn->setAutoDefault( true ); - // --> Load - myLoadBtn = new QPushButton( tr( "LOAD" ), this, "myLoadBtn" ); - myLoadBtn->setAutoDefault( true ); - // --> Cancel - myCancelBtn = new QPushButton( tr( "CANCEL" ), this, "myCancelBtn" ); - myCancelBtn->setAutoDefault( true ); - - btnLayout->addWidget( myNewBtn ); - btnLayout->addWidget( myOpenBtn ); - btnLayout->addWidget( myLoadBtn ); - btnLayout->addStretch(); - btnLayout->addSpacing( 70 ); - btnLayout->addStretch(); - btnLayout->addWidget( myCancelBtn ); - - ActivateModuleDlgLayout->addWidget( myComponentFrame, 0, 0 ); - ActivateModuleDlgLayout->addLayout( infoLayout, 0, 1 ); - ActivateModuleDlgLayout->addMultiCellLayout( btnLayout, 1, 1, 0, 1 ); - - // signals and slots connections - connect( myNewBtn, SIGNAL( clicked() ), this, SLOT( onButtonClicked() ) ); - connect( myOpenBtn, SIGNAL( clicked() ), this, SLOT( onButtonClicked() ) ); - connect( myLoadBtn, SIGNAL( clicked() ), this, SLOT( onButtonClicked() ) ); - connect( myCancelBtn, SIGNAL( clicked() ), this, SLOT( reject() ) ); -} - -//============================================================================================================================== -/*! - * SALOMEGUI_ActivateComponentDlg::onButtonClicked - * - * Buttons slot - */ -//============================================================================================================================== -void SALOMEGUI_ActivateComponentDlg::onButtonClicked() -{ - QPushButton* btn = ( QPushButton* )sender(); - if ( btn == myNewBtn ) - done( 1 ); - if ( btn == myOpenBtn ) - done( 2 ); - if ( btn == myLoadBtn ) - done( 3 ); -} diff --git a/src/SALOMEGUI/SALOMEGUI_ActivateComponentDlg.h b/src/SALOMEGUI/SALOMEGUI_ActivateComponentDlg.h deleted file mode 100644 index 878cb9d08..000000000 --- a/src/SALOMEGUI/SALOMEGUI_ActivateComponentDlg.h +++ /dev/null @@ -1,44 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : SALOMEGUI_ActivateComponentDlg.h -// Author : Michael ZORIN (mzn) -// Module : SALOME - -#ifndef SALOMEGUI_ActivateComponentDlg_H -#define SALOMEGUI_ActivateComponentDlg_H - -#include -#include - -class QFrame; -class QLabel; -class QPushButton; - -class SALOMEGUI_ActivateComponentDlg: public QDialog -{ - Q_OBJECT - -public: - SALOMEGUI_ActivateComponentDlg ( QWidget* parent, const QString& component, const QPixmap icon = QPixmap() ) ; - ~SALOMEGUI_ActivateComponentDlg ( ) { }; - -private slots: - void onButtonClicked(); - -private: - QFrame* myComponentFrame; - QLabel* myComponentLab; - QLabel* myComponentIcon; - QLabel* myInfoLabel; - QPushButton* myNewBtn; - QPushButton* myOpenBtn; - QPushButton* myLoadBtn; - QPushButton* myCancelBtn; -}; - -#endif - diff --git a/src/SALOMEGUI/SALOMEGUI_Application.cxx b/src/SALOMEGUI/SALOMEGUI_Application.cxx deleted file mode 100644 index 4b2a35045..000000000 --- a/src/SALOMEGUI/SALOMEGUI_Application.cxx +++ /dev/null @@ -1,611 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOMEGUI_Application.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "SALOMEGUI_Application.h" -#include "SALOMEGUI_Desktop.h" -#include "SALOMEGUI_ImportOperation.h" -#include "SALOMEGUI.h" -#include "SALOME_Selection.h" -#include "SALOME_ListIO.hxx" -#include "SALOME_ListIteratorOfListIO.hxx" -#include "SALOME_InteractiveObject.hxx" -#include "QAD.h" -#include "QAD_Desktop.h" -#include "QAD_RightFrame.h" -#include "QAD_LeftFrame.h" -#include "QAD_ObjectBrowser.h" -#include "QAD_Resource.h" -#include "QAD_Tools.h" -#include "QAD_WaitCursor.h" -#include "QAD_MessageBox.h" - -// QT Includes -#include -#include -#include - -// Open CASCADE Include -#include -#include -using namespace std; - -/*! - Constructor -*/ -SALOMEGUI_Application::SALOMEGUI_Application( const QString& format, - const QString& description, - const QString& filters) : -QAD_Application( format, description, filters ) -{ - /* load resources */ - QString message; - QAD_ResourceMgr* resMgr = QAD_Desktop::getResourceManager(); - if ( !resMgr ) resMgr = QAD_Desktop::createResourceManager(); - if ( resMgr ) resMgr->loadResources( "SALOMEGUI", message ); - - QPalette* palette = QAD_Desktop::getPalette(); - if ( !palette) palette = QAD_Desktop::createPalette(); - // if ( !palette) palette->loadPalette(); - - //myViewActions.setAutoDelete( true ); - - /* We need to know that the desktop is created to have - some additional internal initialization */ - QAD_ASSERT( connect( this, SIGNAL(desktopCreated()), SLOT(onDesktopCreated()) )); -} - -/*! - Destructor -*/ -SALOMEGUI_Application::~SALOMEGUI_Application() -{ -} - -/*! - Creates the actions provided by this application( internal ) -*/ -void SALOMEGUI_Application::createActions() -{ -#ifdef DEBUG - /* this function must be called only once */ - static bool created = false; - QAD_ASSERT_DEBUG_ONLY( !created ); - created = true; -#endif - - /* Create 'View' actions - */ - QToolBar* tbView = createToolBar( ViewToolBarId, tr("MEN_DESK_VIEWERTOOLBAR") ); - - QAD_ResourceMgr* rmgr = QAD_Desktop::getResourceManager(); -#define CREATE_ACTION(ID,NAME) \ - if(!myViewActions.at(ID)){ \ - QActionP* action = new QActionP(tr("TOT_APP_VIEW_" #NAME), \ - rmgr->loadPixmap("SALOMEGUI", tr("ICON_APP_VIEW_" #NAME)), \ - tr("MEN_APP_VIEW_" #NAME), 0, QAD_Application::getDesktop()); \ - action->setStatusTip(tr("PRP_APP_VIEW_" #NAME)); \ - myViewActions.insert(ID,action); \ - } - - CREATE_ACTION(ViewDumpId,DUMP); - CREATE_ACTION(ViewTrihedronId,TRIHEDRON); - CREATE_ACTION(ViewFitAllId,FITALL); - CREATE_ACTION(ViewFitAreaId,FITAREA); - CREATE_ACTION(ViewZoomId,ZOOM); - CREATE_ACTION(ViewPanId,PAN); - CREATE_ACTION(ViewRotateId,ROTATE); - CREATE_ACTION(ViewGlobalPanId,GLOBALPAN); - CREATE_ACTION(ViewFrontId,FRONT); - CREATE_ACTION(ViewBackId,BACK); - CREATE_ACTION(ViewTopId,TOP); - CREATE_ACTION(ViewBottomId,BOTTOM); - CREATE_ACTION(ViewLeftId,LEFT); - CREATE_ACTION(ViewRightId,RIGHT); - CREATE_ACTION(ViewResetId,RESET); - -#undef CREATE_ACTION -} - -/*! - Enables/disables the actions provided by this - application( internal ) -*/ -void SALOMEGUI_Application::updateActions() -{ -} - -/*! - Creates CAF application -*/ -bool SALOMEGUI_Application::initApp(SALOME_NamingService* name_service) -{ - if ( myStudyMgr->_is_nil() ) { - try { - CORBA::Object_ptr obj = name_service->Resolve("/myStudyManager"); - myStudyMgr = SALOMEDS::StudyManager::_narrow(obj); - } - catch ( Standard_Failure ) { - return false; - } - } - - return true; -} - -/*! - Creates the main desktop -*/ -bool SALOMEGUI_Application::createDesktop( SALOME_NamingService* name_service ) -{ - QAD_ASSERT_DEBUG_ONLY( !desktop ); - desktop = new SALOMEGUI_Desktop(name_service); - return ( desktop != NULL ); -} - -/*! - Called when the main desktop is created ( internal ) -*/ -void SALOMEGUI_Application::onDesktopCreated() -{ - createActions(); -} - -/*! - Called for customization when study is created -*/ -void SALOMEGUI_Application::onStudyCreated( QAD_Study* study ) -{ -} - -/*! - Called for customization when study is opened -*/ -void SALOMEGUI_Application::onStudyOpened( QAD_Study* study ) -{ -} - -/*! - Called for customization when study is activated (shown) -*/ -void SALOMEGUI_Application::onStudyShown( QAD_Study* study ) -{ - SALOMEDS::Study_var aStudy = study->getStudyDocument(); - -//srn: Forbid appending Interface Applicative and its children to UseCase - aStudy->EnableUseCaseAutoFilling(false); - - /* mpv: study may be locked */ - int aLocked = aStudy->GetProperties()->IsLocked(); - if (aLocked) aStudy->GetProperties()->SetLocked(false); - - /* update Object Browser */ - SALOMEDS::StudyBuilder_var B = aStudy->NewBuilder(); - SALOMEDS::SComponentIterator_var itcomp = aStudy->NewComponentIterator(); - for (; itcomp->More(); itcomp->Next()) { - SALOMEDS::SComponent_var SC = itcomp->Value(); - Standard_CString dataType = SC->ComponentDataType(); - if ( QString(dataType).compare("Interface Applicative") == 0 ) { - SALOMEDS::ChildIterator_var it = aStudy->NewChildIterator(SC); - for (; it->More();it->Next()) { - SALOMEDS::SObject_var CSO = it->Value(); - B->RemoveObject(CSO); - } - } - } - - QAD_StudyFrame* sf = myActiveStudy->getActiveStudyFrame(); - Standard_CString name = CORBA::string_dup(sf->title().latin1()); - - SALOMEDS::SComponent_var father = aStudy->FindComponent("Interface Applicative"); - SALOMEDS::SObject_var newObj = B->NewObject(father); - SALOMEDS::GenericAttribute_var anAttr; - SALOMEDS::AttributeName_var aName; - SALOMEDS::AttributeComment_var aComment; - SALOMEDS::AttributeSelectable_var aSelAttr; - - anAttr = B->FindOrCreateAttribute(newObj, "AttributeName"); - aName = SALOMEDS::AttributeName::_narrow(anAttr); - aName->SetValue(name); - - anAttr = B->FindOrCreateAttribute(newObj, "AttributeSelectable"); - aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr); - aSelAttr->SetSelectable(false); - - if (sf->getTypeView() == VIEW_OCC) { - anAttr = B->FindOrCreateAttribute(newObj, "AttributeComment"); - aComment = SALOMEDS::AttributeComment::_narrow(anAttr); - aComment->SetValue("OCC"); - } - else if (sf->getTypeView() == VIEW_VTK) { - anAttr = B->FindOrCreateAttribute(newObj, "AttributeComment"); - aComment = SALOMEDS::AttributeComment::_narrow(anAttr); - aComment->SetValue("VTK"); - } else { - anAttr = B->FindOrCreateAttribute(newObj, "AttributeComment"); - aComment = SALOMEDS::AttributeComment::_narrow(anAttr); - aComment->SetValue("GRAPH"); - } - sf->setEntry(newObj->GetID()); - - if (aLocked) aStudy->GetProperties()->SetLocked(true); - - study->updateObjBrowser( false ); - - aStudy->EnableUseCaseAutoFilling(true); -} - -/*! - Called for customization when the active study is changed -*/ -void SALOMEGUI_Application::onActiveStudyChanged( QAD_Study* oldActiveStudy, - QAD_Study* newActiveStudy ) -{ - // MESSAGE ("SALOMEGUI_Application::onActiveStudyChanged init."); - /* superclass MUST be called */ - QAD_Application::onActiveStudyChanged( oldActiveStudy, newActiveStudy ); - - if ( oldActiveStudy ) { - int count = oldActiveStudy->getStudyFramesCount(); - for ( int i = 0; i < count; i++ ) { - disconnectFromViewer( oldActiveStudy->getStudyFrame(i)->getRightFrame()->getViewFrame() ); - } - } - - if ( newActiveStudy && newActiveStudy->getActiveStudyFrame() ) { - connectToViewer( newActiveStudy->getActiveStudyFrame()->getRightFrame()->getViewFrame() ); - } -} - -void SALOMEGUI_Application::connectToViewer( QAD_ViewFrame* vf ) -{ -#define CONNECT_ACTION(NAME) \ - QAD_ASSERT(connect(myViewActions.at(View ##NAME ##Id), SIGNAL(activated()), vf, SLOT(onView ##NAME()))) - - if ( vf ) { - QToolBar* tbView = getToolBar( ViewToolBarId ); - for ( int cmd = ViewDumpId; cmd <= ViewResetId; cmd++ ) - if ( myViewActions.at( cmd ) ) - myViewActions.at( cmd )->removeFrom(tbView); - if( vf->getTypeView() == VIEW_GRAPHSUPERV ) { - //myViewActions.at(ViewDumpId)->addTo(tbView); - //myViewActions.at(ViewFitAllId)->addTo(tbView); - //myViewActions.at(ViewFitAreaId)->addTo(tbView); - //myViewActions.at(ViewZoomId)->addTo(tbView); - myViewActions.at(ViewPanId)->addTo(tbView); - //myViewActions.at(ViewGlobalPanId)->addTo(tbView); - myViewActions.at(ViewResetId)->addTo(tbView); - } - else if( vf->getTypeView() == VIEW_PLOT2D ) { - myViewActions.at(ViewDumpId)->addTo(tbView); - myViewActions.at(ViewFitAllId)->addTo(tbView); - myViewActions.at(ViewFitAreaId)->addTo(tbView); - myViewActions.at(ViewZoomId)->addTo(tbView); - myViewActions.at(ViewPanId)->addTo(tbView); - //myViewActions.at(ViewGlobalPanId)->addTo(tbView); - //myViewActions.at(ViewResetId)->addTo(tbView); - } - else { - for ( int cmd = ViewDumpId; cmd <= ViewResetId; cmd++ ) - if ( myViewActions.at( cmd ) ) - myViewActions.at( cmd )->addTo(tbView); - } - //CONNECT_ACTION(Mu4Id) - CONNECT_ACTION(Dump); - CONNECT_ACTION(Trihedron); - CONNECT_ACTION(FitAll); - CONNECT_ACTION(FitArea); - CONNECT_ACTION(Zoom); - CONNECT_ACTION(Pan); - CONNECT_ACTION(Rotate); - CONNECT_ACTION(GlobalPan); - CONNECT_ACTION(Front); - CONNECT_ACTION(Back); - CONNECT_ACTION(Top); - CONNECT_ACTION(Bottom); - CONNECT_ACTION(Left); - CONNECT_ACTION(Right); - CONNECT_ACTION(Reset); - } - -#undef CONNECT_ACTION -} - -void SALOMEGUI_Application::disconnectFromViewer( QAD_ViewFrame* vf ) -{ -#define DISCONNECT_ACTION(NAME) \ - QAD_ASSERT(disconnect(myViewActions.at(View ##NAME ##Id), SIGNAL(activated()), vf, SLOT(onView ##NAME()))); - - if ( !vf || myViewActions.isEmpty() ) - return; - //DISCONNECT_ACTION(Mu4Id) - DISCONNECT_ACTION(Dump); - DISCONNECT_ACTION(Trihedron); - DISCONNECT_ACTION(FitAll); - DISCONNECT_ACTION(FitArea); - DISCONNECT_ACTION(Zoom); - DISCONNECT_ACTION(Pan); - DISCONNECT_ACTION(Rotate); - DISCONNECT_ACTION(GlobalPan); - DISCONNECT_ACTION(Front); - DISCONNECT_ACTION(Back); - DISCONNECT_ACTION(Top); - DISCONNECT_ACTION(Bottom); - DISCONNECT_ACTION(Left); - DISCONNECT_ACTION(Right); - DISCONNECT_ACTION(Reset); - -#undef DISCONNECT_ACTION -} - -/*! - Customizes 'View' menu of the desktop -*/ -int SALOMEGUI_Application::onUpdateViewActions ( QPopupMenu* popup, bool add, int index ) -{ - int nItemsAdded = QAD_Application::onUpdateViewActions( popup, add, index ); - // NRI - // if ( add ) { - // index += nItemsAdded; - // QAD_ASSERT_DEBUG_ONLY( !myViewActions.isEmpty() ); - // popup->insertSeparator( index++ ); - // myViewActions.at( ViewTrihedronId )->addTo( popup ); - // index++; - // popup->insertSeparator( index++ ); - // for ( int i = (int)ViewMu4Id; i <= (int)ViewRightId; i++ ) { - // myViewActions.at( i )->addTo( popup ); - // index++; - // } - // popup->insertSeparator( index++ ); - // myViewActions.at( ViewResetId )->addTo( popup ); - // index++; - // } else { - // for ( int i = (int)ViewTrihedronId; i <= (int)ViewResetId; i++ ) { - // popup->removeItemAt(index); - // } - - // /* remove separators */ - // popup->removeItemAt( index ); - // popup->removeItemAt( index ); - // popup->removeItemAt( index ); - // } - - return index; -} - -/*! - Adds the context popup items -*/ -void SALOMEGUI_Application::onCreatePopup() -{ - // Here common menu items should be added (Display, Erase, etc.). - // They should be obtained through the standard XML-based mechanism, - // i.e. corresponding XML file should be loaded somewhere in advance - // and desktop->getOperatorsMenu() should return the default popup menu. - // These items are always added; if necessary any of them can be hidden - // during popup customization by means of the corresponding unique ID defined in QAD_Resource.h. - SALOME_Selection* Sel = SALOME_Selection::Selection( myActiveStudy->getSelection() ); - - if ( Sel->IObjectCount() > 0 ) { - myPopup->insertItem (tr ("MEN_APP_DISPLAY"), this, SLOT(onDisplay(int)), 0, QAD_Display_Popup_ID); - myPopup->insertItem (tr ("MEN_APP_DISPLAY_ONLY"), this, SLOT(onDisplay(int)), 0, QAD_DisplayOnly_Popup_ID); - myPopup->insertItem (tr ("MEN_APP_ERASE"), this, SLOT(onErase()), 0, QAD_Erase_Popup_ID); - } - -} - - -void SALOMEGUI_Application::onDisplay(int id) -{ - QAD_WaitCursor waitCursor; - - // Obtain the component to deal with (according to selected object's parent component) - SALOME_Selection* Sel = SALOME_Selection::Selection(myActiveStudy->getSelection() ); - - QString parentComp = ((SALOMEGUI_Desktop*)desktop)->getComponentFromSelection(); - if (parentComp.isNull()) { // objects from several components are selected -> do nothing - return; - } - - bool isViewTypeOK = true; - int viewTypes[VIEW_TYPE_MAX]; - - for (int i = 0; i < VIEW_TYPE_MAX; i++) - viewTypes[i] = -1; - - // Obtain the component's GUI - SALOMEGUI* aGUI = desktop->getComponentGUI( parentComp ); - if ( !aGUI ) - return; - - // Check if another view type is required (if viewToActivate < 0 then any type of view is acceptable) - aGUI->SupportedViewType(viewTypes, VIEW_TYPE_MAX); - if (viewTypes[0] >= 0) { // not all the view types are supported - for (int i = 0; i < VIEW_TYPE_MAX; i++) { - if (viewTypes[i] < 0) // no more types supported - break; - isViewTypeOK = ((int)myActiveStudy->getActiveStudyFrame()->getTypeView() == viewTypes[i]); - if (isViewTypeOK) // one of supported views is already active - break; - } - } - - // Try to activate a view of one of supported types - if (!isViewTypeOK) { - MESSAGE("onDisplay(): view type is not acceptable") - unsigned frameCount = myActiveStudy->getStudyFramesCount(); - for (unsigned i = 0; i < frameCount; i++) { - QAD_StudyFrame* frame = myActiveStudy->getStudyFrame(i); - for (int j = 0; j < VIEW_TYPE_MAX; j++) { - if (frame->getTypeView() == viewTypes[j]) { - MESSAGE("onDisplay(): activating other frame") - isViewTypeOK = true; - frame->setFocus(); - break; - } - } - } - if (!isViewTypeOK) { - waitCursor.stop(); - QMessageBox::warning( desktop, - tr("ERR_ERROR"), - tr("ERR_APP_WRONG_VIEW_TYPE")); - return; - } - } - - QAD_ViewFrame* viewFrame = myActiveStudy->getActiveStudyFrame()->getRightFrame()->getViewFrame(); - - // Ensure that parent component's data are loaded - QString compName = desktop->getComponentName( parentComp ); - if ( compName.isEmpty() ) { - waitCursor.stop(); - QAD_MessageBox::error1( desktop, - tr("ERR_ERROR"), - tr("ERR_EMPTY_COMP_NAME").arg( parentComp ), - tr("BUT_OK")); - return; - } - - desktop->loadComponentData( compName ); - - // Build the graphic presentation (it is stored in the corresponding viewer) - - bool isComponent = false; - SALOMEDS::Study_var aStudy = myActiveStudy->getStudyDocument(); - bool needRepaint = false; - - // Copy the selection - SALOME_ListIteratorOfListIO itInit( Sel->StoredIObjects() ); - SALOME_ListIO selList; - for (; itInit.More(); itInit.Next()) { - Handle(SALOME_InteractiveObject) IObject = itInit.Value(); - if ( IObject->hasEntry() ) { - // check whether the component is selected - SALOMEDS::SObject_var obj = aStudy->FindObjectID(IObject->getEntry() ); - if ( !obj->_is_nil() && strcmp( obj->GetFatherComponent()->GetID(), obj->GetID() ) == 0 ) { - selList.Clear(); - isComponent = true; - selList.Append( IObject ); - break; - } - } - selList.Append( IObject ); - } - - if (id == QAD_DisplayOnly_Popup_ID) - viewFrame->EraseAll(); - - // For component -> display all children - if ( isComponent ) { - SALOMEDS::SObject_var obj = aStudy->FindObjectID( selList.First()->getEntry() ); - SALOMEDS::ChildIterator_ptr It = aStudy->NewChildIterator( obj ); - It->InitEx( true ); - for ( ; It->More(); It->Next() ) { - SALOMEDS::SObject_ptr child = It->Value(); - SALOMEDS::SObject_ptr ref; - if ( !child->ReferencedObject( ref ) ) { - Handle(SALOME_InteractiveObject) childIObject = new SALOME_InteractiveObject(); - childIObject->setEntry( child->GetID() ); - // Ensure that proper 3D presentation exists for IObject - aGUI->BuildPresentation(childIObject); - viewFrame->Display(childIObject, false); - needRepaint = true; - } - } - } - else { // for child object -> simply display it (no children are displayed) - SALOME_ListIteratorOfListIO It( selList ); - for( ;It.More();It.Next() ) { - Handle(SALOME_InteractiveObject) IObject = It.Value(); - // Ensure that proper 3D presentation exists for IObject - aGUI->BuildPresentation(IObject); - viewFrame->Display(IObject, false); - needRepaint = true; - } - } - - if ( needRepaint ) - viewFrame->Repaint(); - - myActiveStudy->updateObjBrowser(true); -} - - - -void SALOMEGUI_Application::onErase() -{ - QAD_WaitCursor waitCursor; - - SALOME_Selection* Sel = SALOME_Selection::Selection(myActiveStudy->getSelection() ); - SALOMEDS::Study_var aStudy = myActiveStudy->getStudyDocument(); - QAD_ViewFrame* viewFrame = myActiveStudy->getActiveStudyFrame()->getRightFrame()->getViewFrame(); - bool needRepaint = false; - - // Copy the selection - SALOME_ListIteratorOfListIO itInit( Sel->StoredIObjects() ); - SALOME_ListIO selList; - for (; itInit.More(); itInit.Next()) { - selList.Append(itInit.Value()); - } - - SALOME_ListIteratorOfListIO It( selList ); - for(;It.More();It.Next()) { - Handle(SALOME_InteractiveObject) IObject = It.Value(); - - // First check whether the object is a component or a child object - bool isComponent = false; - SALOMEDS::SObject_var obj; - - if (IObject->hasEntry()) { - obj = aStudy->FindObjectID(IObject->getEntry()); - if (!obj->_is_nil()) { - SALOMEDS::SComponent_var comp = obj->GetFatherComponent(); - isComponent = (strcmp(comp->GetID(), obj->GetID()) == 0); - } - } - - // For component -> erase all children - if (isComponent) { - SALOMEDS::ChildIterator_ptr it = aStudy->NewChildIterator(obj); - it->InitEx(true); - for ( ; it->More(); it->Next()) { - SALOMEDS::SObject_ptr child = it->Value(); - Handle(SALOME_InteractiveObject) childIObject = new SALOME_InteractiveObject(); - childIObject->setEntry(child->GetID()); - viewFrame->Erase(childIObject, false); - } - } else { // for child object -> simply erase it (no children are erased) - viewFrame->Erase(IObject, false); - } - needRepaint = true; - } - - if (needRepaint) - viewFrame->Repaint(); - -} diff --git a/src/SALOMEGUI/SALOMEGUI_Application.h b/src/SALOMEGUI/SALOMEGUI_Application.h deleted file mode 100644 index 91e5ab142..000000000 --- a/src/SALOMEGUI/SALOMEGUI_Application.h +++ /dev/null @@ -1,99 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOMEGUI_Application.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef SALOMEGUI_APPLICATION_H -#define SALOMEGUI_APPLICATION_H - -#include "QAD_Application.h" -#include "QAD_ViewFrame.h" -#include "QAD_Action.h" - -// IDL headers -#include -#include CORBA_SERVER_HEADER(SALOMEDS) -#include CORBA_SERVER_HEADER(SALOMEDS_Attributes) - -// QT Includes -#include -#include -#include -#include - -class SALOMEGUI_Application : public QAD_Application -{ - Q_OBJECT - enum { ViewToolBarId = 100 }; - - enum { ViewDumpId, ViewTrihedronId, ViewFitAllId, ViewFitAreaId, - ViewZoomId, ViewPanId, ViewRotateId, ViewGlobalPanId, - ViewFrontId, ViewBackId, ViewTopId, ViewBottomId, ViewLeftId, - ViewRightId, ViewResetId }; -public: - SALOMEGUI_Application ( const QString& format, - const QString& description, - const QString& filters); - ~SALOMEGUI_Application(); -public slots: - // Common display services - void onDisplay(int); - void onErase(); - -protected: - /* application management */ - bool initApp( SALOME_NamingService* name_service ); - bool createDesktop( SALOME_NamingService* name_service ); - - /* popup */ - void onCreatePopup(); - - /* document management */ - void onStudyCreated( QAD_Study* ); - void onStudyOpened( QAD_Study* ); - void onActiveStudyChanged( QAD_Study* oldActiveStudy, - QAD_Study* newActiveStudy ); - void onStudyShown( QAD_Study* ); - - /* menu management */ - int onUpdateViewActions ( QPopupMenu*, bool add, int index ); - -private slots: - void onDesktopCreated(); - -private: - void connectToViewer( QAD_ViewFrame* ); - void disconnectFromViewer( QAD_ViewFrame* ); - void createActions(); - void updateActions(); - -private: - ActionMap myViewActions; - QAD_Operation* myCurOperation; -}; - -#endif - diff --git a/src/SALOMEGUI/SALOMEGUI_CloseDlg.cxx b/src/SALOMEGUI/SALOMEGUI_CloseDlg.cxx deleted file mode 100644 index 556e10ca4..000000000 --- a/src/SALOMEGUI/SALOMEGUI_CloseDlg.cxx +++ /dev/null @@ -1,79 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : SALOMEGUI_CloseDlg.cxx -// Author : Vasily RUSYAEV (vrv) -// Module : SALOME - -#include "SALOMEGUI_CloseDlg.h" - -#include -#include -#include -#include -#include -using namespace std; - - -SALOMEGUI_CloseDlg::SALOMEGUI_CloseDlg ( QWidget * parent, const char * name, bool modal, WFlags f ) - : QDialog ( parent, "", TRUE, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ) -{ - setSizeGripEnabled ( TRUE ) ; - setCaption( tr( "CAPTION" ) ); - - QVBoxLayout* m_vbL = new QVBoxLayout( this ); - m_vbL->setMargin( 11 ); m_vbL->setSpacing( 6 ); - - QLabel* m_lIcon = new QLabel (this, "m_lDescr"); - QPixmap pm = QMessageBox::standardIcon( QMessageBox::Warning ); - m_lIcon->setPixmap( pm ); - m_lIcon->setScaledContents( false ); - m_lIcon->setAlignment( Qt::AlignCenter ); - - QLabel* m_lDescr = new QLabel (this, "m_lDescr"); - m_lDescr->setText ( tr ("CLOSE_DESCRIPTION") ); - m_lDescr->setAlignment( Qt::AlignCenter ); - m_lDescr->setMinimumHeight( m_lDescr->sizeHint().height()*5 ); - m_lDescr->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ) ); - - QHBoxLayout* m_hl1 = new QHBoxLayout(); - m_hl1->setMargin( 0 ); m_hl1->setSpacing( 6 ); - m_hl1->addWidget( m_lIcon ); - m_hl1->addWidget( m_lDescr ); - - m_pb1 = new QPushButton( tr ("SAVE_CLOSE"), this ); - m_pb2 = new QPushButton( tr ("CLOSE"), this ); - m_pb3 = new QPushButton( tr ("UNLOAD"), this ); - m_pb4 = new QPushButton( tr ("CANCEL"), this ); - - QGridLayout* m_hl2 = new QGridLayout(); - m_hl2->setMargin( 0 ); m_hl2->setSpacing( 6 ); - m_hl2->addWidget( m_pb1, 0, 0 ); - m_hl2->addWidget( m_pb2, 0, 1 ); - m_hl2->addWidget( m_pb3, 0, 2 ); - m_hl2->addColSpacing( 3, 10 ); - m_hl2->setColStretch( 3, 5 ); - m_hl2->addWidget( m_pb4, 0, 4 ); - - m_vbL->addLayout( m_hl1 ); - m_vbL->addLayout( m_hl2 ); - - connect( m_pb1, SIGNAL( clicked() ), this, SLOT( onButtonClicked() ) ); - connect( m_pb2, SIGNAL( clicked() ), this, SLOT( onButtonClicked() ) ); - connect( m_pb3, SIGNAL( clicked() ), this, SLOT( onButtonClicked() ) ); - connect( m_pb4, SIGNAL( clicked() ), this, SLOT( reject() ) ); -} - -void SALOMEGUI_CloseDlg::onButtonClicked() -{ - QPushButton* btn = ( QPushButton* )sender(); - if ( btn == m_pb1 ) - done( 1 ); - if ( btn == m_pb2 ) - done( 2 ); - if ( btn == m_pb3 ) - done( 3 ); -} diff --git a/src/SALOMEGUI/SALOMEGUI_CloseDlg.h b/src/SALOMEGUI/SALOMEGUI_CloseDlg.h deleted file mode 100644 index 2816303ea..000000000 --- a/src/SALOMEGUI/SALOMEGUI_CloseDlg.h +++ /dev/null @@ -1,35 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : SALOMEGUI_CloseDlg.h -// Author : Vasily RUSYAEV (vrv) -// Module : SALOME - -#ifndef SALOMEGUI_CloseDlg_H -#define SALOMEGUI_CloseDlg_H - -#include - -class SALOMEGUI_CloseDlg: public QDialog -{ - Q_OBJECT - -public: - SALOMEGUI_CloseDlg ( QWidget * parent = 0, const char * name = 0, bool modal = FALSE, WFlags f = 0 ) ; - ~SALOMEGUI_CloseDlg ( ) { }; - -private slots: - void onButtonClicked(); - -private: - QPushButton* m_pb1; - QPushButton *m_pb2; - QPushButton *m_pb3; - QPushButton *m_pb4; -}; - -#endif - diff --git a/src/SALOMEGUI/SALOMEGUI_Desktop.cxx b/src/SALOMEGUI/SALOMEGUI_Desktop.cxx deleted file mode 100644 index c73bd1e3d..000000000 --- a/src/SALOMEGUI/SALOMEGUI_Desktop.cxx +++ /dev/null @@ -1,103 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOMEGUI_Desktop.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "SALOMEGUI_Desktop.h" -#include "SALOME_Selection.h" -#include "SALOME_ListIteratorOfListIO.hxx" - -#include CORBA_SERVER_HEADER(SALOMEDS_Attributes) -using namespace std; - -/*! - Constructor -*/ -SALOMEGUI_Desktop::SALOMEGUI_Desktop(SALOME_NamingService* name_service) : - QAD_Desktop( name_service ) -{ - QAD_ASSERT_DEBUG_ONLY( !myStdActions.isEmpty() ); - //myStdActions.at( FileOpenId )->setEnabled( true ); - //myStdActions.at( FileSaveId )->setEnabled( true ); - //myStdActions.at( FileSaveAsId )->setEnabled( true ); -} - -/*! - Disable file actions for DEMO -*/ -void SALOMEGUI_Desktop::updateDesktop( UpdateCommand cmd ) -{ - QAD_Desktop::updateDesktop( cmd ); - - QAD_ASSERT_DEBUG_ONLY( !myStdActions.isEmpty() ); - //myStdActions.at( FileOpenId )->setEnabled( true ); - //myStdActions.at( FileSaveId )->setEnabled( true ); - //myStdActions.at( FileSaveAsId )->setEnabled( true ); -} - -QString SALOMEGUI_Desktop::getComponentFromSelection() -{ - SALOME_Selection* Sel = SALOME_Selection::Selection( myActiveStudy->getSelection() ); - /* copy the list */ - SALOME_ListIO List; - SALOME_ListIteratorOfListIO Itinit( Sel->StoredIObjects() ); - for (; Itinit.More(); Itinit.Next()) { - List.Append(Itinit.Value()); - } - - SALOMEDS::Study_var aStudy = myActiveStudy->getStudyDocument(); - - SALOME_ListIteratorOfListIO It( List ); - QString parentComp; - - for (; It.More(); It.Next()) { - Handle(SALOME_InteractiveObject) IObject = It.Value(); - - if (!IObject->hasEntry()) continue; - - SALOMEDS::SObject_var obj = aStudy->FindObjectID( IObject->getEntry() ); - - if ( !obj->_is_nil() ) { - SALOMEDS::SComponent_var comp = obj->GetFatherComponent(); - if ( !comp->_is_nil() ) { - SALOMEDS::GenericAttribute_var anAttr; - SALOMEDS::AttributeName_var aName; - if (comp->FindAttribute(anAttr, "AttributeName")) { - aName = SALOMEDS::AttributeName::_narrow(anAttr); - QString compName(aName->Value()); - if (parentComp.isNull()) - parentComp = compName; - else if (parentComp.compare(compName) != 0) { // objects belonging to different components are selected - parentComp = QString::null; - break; - } - } - } - } - } - - return parentComp; -} diff --git a/src/SALOMEGUI/SALOMEGUI_Desktop.h b/src/SALOMEGUI/SALOMEGUI_Desktop.h deleted file mode 100644 index fcb82d31c..000000000 --- a/src/SALOMEGUI/SALOMEGUI_Desktop.h +++ /dev/null @@ -1,50 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOMEGUI_Desktop.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef SALOMEGUI_DESKTOP_H -#define SALOMEGUI_DESKTOP_H - -#include "QAD_Desktop.h" -#include "QAD_Study.h" -class SALOMEGUI_Desktop : public QAD_Desktop -{ - Q_OBJECT - -public: - SALOMEGUI_Desktop( SALOME_NamingService* name_service ); - - // returns the name of the component selected objects belong to (null if two or more components) - QString getComponentFromSelection(); - -protected: - void updateDesktop( UpdateCommand ); - -}; - -#endif - diff --git a/src/SALOMEGUI/SALOMEGUI_ExternalBrowserDlg.cxx b/src/SALOMEGUI/SALOMEGUI_ExternalBrowserDlg.cxx deleted file mode 100644 index 34a33b1a3..000000000 --- a/src/SALOMEGUI/SALOMEGUI_ExternalBrowserDlg.cxx +++ /dev/null @@ -1,134 +0,0 @@ -// File : SALOMEGUI_ExternalBrowserDlg.cxx -// Author : Nichael ZORIN -// Module : SALOME -// $Header$ - -#include "SALOMEGUI_ExternalBrowserDlg.h" - -#include -#include -#include -#include -#include - -#include "QAD_FileDlg.h" -#include "QAD_Tools.h" -using namespace std; - -/* - * Constructs a modal SALOMEGUI_ExternalBowserDlg which is a child of 'parent' - * - */ - -SALOMEGUI_ExternalBrowserDlg::SALOMEGUI_ExternalBrowserDlg( QWidget* parent ) - : QDialog( parent, "SALOMEGUI_ExternalBrowserDlg", true, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ) -{ - setCaption( tr( "MEN_EXTERNAL_BROWSER" ) ); - setSizeGripEnabled( true ); - - QGridLayout* TopLayout = new QGridLayout( this ); - TopLayout->setSpacing( 6 ); - TopLayout->setMargin( 11 ); - - QGroupBox* TopGroup = new QGroupBox( this, "TopGroup" ); - TopGroup->setColumnLayout(0, Qt::Vertical ); - TopGroup->layout()->setSpacing( 0 ); - TopGroup->layout()->setMargin( 0 ); - QGridLayout* TopGroupLayout = new QGridLayout( TopGroup->layout() ); - TopGroupLayout->setAlignment( Qt::AlignTop ); - TopGroupLayout->setSpacing( 6 ); - TopGroupLayout->setMargin( 11 ); - - QLabel* LabelApp = new QLabel( tr( "MEN_EXTERNAL_BROWSER_APP" ), TopGroup, "LabelApp" ); - TopGroupLayout->addWidget( LabelApp, 0, 0 ); - ApplicationLine = new QLineEdit( TopGroup ); - ApplicationLine->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - ApplicationLine->setMinimumSize( 250, 0 ); - LabelApp->setBuddy(ApplicationLine); - TopGroupLayout->addWidget( ApplicationLine, 0, 1 ); - - QLabel* LabelParams = new QLabel( tr( "MEN_EXTERNAL_BROWSER_PARAMS" ), TopGroup, "LabelParams" ); - TopGroupLayout->addWidget( LabelParams, 1, 0 ); - ParametersLine = new QLineEdit( TopGroup ); - ParametersLine->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - ParametersLine->setMinimumSize( 250, 0 ); - LabelParams->setBuddy(ParametersLine); - TopGroupLayout->addWidget( ParametersLine, 1, 1 ); - - browseButton = new QPushButton( tr( "MEN_EXTERNAL_BROWSER_BROWSE" ) , TopGroup, "browseButton" ); - TopGroupLayout->addWidget( browseButton, 0, 2 ); - - QGroupBox* GroupButtons = new QGroupBox( this, "GroupButtons" ); - GroupButtons->setGeometry( QRect( 10, 10, 381, 48 ) ); - GroupButtons->setColumnLayout(0, Qt::Vertical ); - GroupButtons->layout()->setSpacing( 0 ); - GroupButtons->layout()->setMargin( 0 ); - QGridLayout* GroupButtonsLayout = new QGridLayout( GroupButtons->layout() ); - GroupButtonsLayout->setAlignment( Qt::AlignTop ); - GroupButtonsLayout->setSpacing( 6 ); - GroupButtonsLayout->setMargin( 11 ); - - QPushButton* buttonOk = new QPushButton( tr( "BUT_OK" ), GroupButtons, "buttonOk" ); - buttonOk->setAutoDefault( TRUE ); - buttonOk->setDefault( TRUE ); - GroupButtonsLayout->addWidget( buttonOk, 0, 0 ); - GroupButtonsLayout->addItem( new QSpacerItem( 5, 5, QSizePolicy::Expanding, QSizePolicy::Minimum ), 0, 1 ); - QPushButton* buttonCancel = new QPushButton( tr( "BUT_CANCEL" ) , GroupButtons, "buttonCancel" ); - buttonCancel->setAutoDefault( TRUE ); - GroupButtonsLayout->addWidget( buttonCancel, 0, 2 ); - - TopLayout->addWidget( TopGroup, 0, 0 ); - TopLayout->addWidget( GroupButtons, 1, 0 ); - - // signals and slots connections - connect( browseButton, SIGNAL( clicked() ), this, SLOT( onButtonClicked() ) ); - connect( buttonOk, SIGNAL( clicked() ), this, SLOT( accept() ) ); - connect( buttonCancel, SIGNAL( clicked() ), this, SLOT( reject() ) ); - -} - -void SALOMEGUI_ExternalBrowserDlg::onButtonClicked() -{ - QStringList flt; - flt.append( "ALL Files(*)" ); - QString aDir = QAD_Tools::getDirFromPath ( ApplicationLine->text() ); - QFileInfo aFileInfo = QAD_FileDlg::getFileName (this, aDir, flt, tr( "MEN_EXTERNAL_BROWSER_CHOOSEAPP" ), true); - if(aFileInfo.exists()) - ApplicationLine->setText(aFileInfo.filePath()); -} - -void SALOMEGUI_ExternalBrowserDlg::setSettings(const QString& AppString, const QString& ParamsString) -{ - ApplicationLine->setText(AppString); - ParametersLine->setText(ParamsString); -} - -QString SALOMEGUI_ExternalBrowserDlg::getApp() -{ - return ApplicationLine->text(); -} - -QString SALOMEGUI_ExternalBrowserDlg::getParams() -{ - return ParametersLine->text(); -} - -void SALOMEGUI_ExternalBrowserDlg::accept() { - - QFileInfo aFile = QFileInfo(ApplicationLine->text()); - - if (aFile.isFile() && !aFile.isExecutable()) - QMessageBox::warning ( this, tr( "Error" ) , tr ( "MEN_EXTERNAL_BROWSER_NOTEXECUTABLE" )); - else - QDialog::accept(); -} - -/* - * Destroys the object and frees any allocated resources - */ -SALOMEGUI_ExternalBrowserDlg::~SALOMEGUI_ExternalBrowserDlg() -{ - // no need to delete child widgets, Qt does it all for us -} - - diff --git a/src/SALOMEGUI/SALOMEGUI_ExternalBrowserDlg.h b/src/SALOMEGUI/SALOMEGUI_ExternalBrowserDlg.h deleted file mode 100644 index f92b559c4..000000000 --- a/src/SALOMEGUI/SALOMEGUI_ExternalBrowserDlg.h +++ /dev/null @@ -1,36 +0,0 @@ -// File : SALOMEGUI_ExternalBrowserDlg.h -// Author : Michael Zorin -// Module : SALOME -// $Header$ - -#ifndef SALOMEGUI_EXTERNAL_BROWSER_DLG_H -#define SALOMEGUI_EXTERNAL_BROWSER_DLG_H - -#include -#include - -class SALOMEGUI_ExternalBrowserDlg : public QDialog -{ - Q_OBJECT - - public: - - SALOMEGUI_ExternalBrowserDlg( QWidget* parent = 0 ); - ~SALOMEGUI_ExternalBrowserDlg(); - void setSettings(const QString& AppString, const QString& ParamsString); - QString getApp(); - QString getParams(); - - private slots: - - void onButtonClicked(); - void accept(); - - private: - - QPushButton* browseButton; - QLineEdit* ApplicationLine; - QLineEdit* ParametersLine; -}; - -#endif // SALOMEGUI_EXTERNAL_BROWSER_DLG_H diff --git a/src/SALOMEGUI/SALOMEGUI_ImportOperation.cxx b/src/SALOMEGUI/SALOMEGUI_ImportOperation.cxx deleted file mode 100644 index 84e0c17ce..000000000 --- a/src/SALOMEGUI/SALOMEGUI_ImportOperation.cxx +++ /dev/null @@ -1,35 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOMEGUI_ImportOperation.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "SALOMEGUI_ImportOperation.h" -using namespace std; - -SALOMEGUI_ImportOperation::SALOMEGUI_ImportOperation( QAD_Study* study ) : -QAD_Operation( study ) -{ -} diff --git a/src/SALOMEGUI/SALOMEGUI_ImportOperation.h b/src/SALOMEGUI/SALOMEGUI_ImportOperation.h deleted file mode 100644 index 54f37fed4..000000000 --- a/src/SALOMEGUI/SALOMEGUI_ImportOperation.h +++ /dev/null @@ -1,43 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOMEGUI_ImportOperation.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#if !defined SALOMEGUI_IMPORTOPERATION -#define SALOMEGUI_IMPORTOPERATION - -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 - -#include "QAD_Operation.h" -class SALOMEGUI_ImportOperation : public QAD_Operation -{ -public: - SALOMEGUI_ImportOperation( QAD_Study* ); -}; - -#endif diff --git a/src/SALOMEGUI/SALOMEGUI_LoadStudiesDlg.cxx b/src/SALOMEGUI/SALOMEGUI_LoadStudiesDlg.cxx deleted file mode 100644 index 0e3c09dce..000000000 --- a/src/SALOMEGUI/SALOMEGUI_LoadStudiesDlg.cxx +++ /dev/null @@ -1,97 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOMEGUI_LoadStudiesDlg.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "SALOMEGUI_LoadStudiesDlg.h" - -#include -#include -#include -#include -using namespace std; - -#define SPACING_SIZE 6 -#define MARGIN_SIZE 11 -#define MIN_LISTBOX_WIDTH 150 -#define MIN_LISTBOX_HEIGHT 100 - -SALOMEGUI_LoadStudiesDlg::SALOMEGUI_LoadStudiesDlg( QWidget* parent, const char* name, bool modal, WFlags fl ) - : QDialog( parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ) -{ - if ( !name ) - setName( "SALOMEGUI_LoadStudiesDlg" ); - resize( 321, 181 ); - setCaption( name ); - setSizeGripEnabled( TRUE ); - - QGridLayout* aTopLayout = new QGridLayout(this); - aTopLayout->setMargin(MARGIN_SIZE); - aTopLayout->setSpacing(SPACING_SIZE); - - TextLabel1 = new QLabel( this, "TextLabel1" ); - TextLabel1->setGeometry( QRect( 11, 12, 297, 16 ) ); - TextLabel1->setText( tr( "MEN_STUDIES_CHOICE" ) ); - - QHBoxLayout* aBtnLayout = new QHBoxLayout; - aBtnLayout->setSpacing( SPACING_SIZE ); - aBtnLayout->setMargin( 0 ); - - buttonOk = new QPushButton( this, "buttonOk" ); - buttonOk->setText( tr( "BUT_OK" ) ); - buttonOk->setAutoDefault( true ); - buttonOk->setDefault( true ); - - buttonCancel = new QPushButton( this, "buttonCancel" ); - buttonCancel->setText( tr( "BUT_CANCEL" ) ); - buttonCancel->setAutoDefault( true ); - - aBtnLayout->addWidget( buttonOk ); - aBtnLayout->addItem( new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ) ); - aBtnLayout->addWidget( buttonCancel ); - - ListComponent = new QListBox( this, "ListComponent" ); - ListComponent->setVScrollBarMode(QListBox::AlwaysOn); - ListComponent->setMinimumSize(MIN_LISTBOX_WIDTH, MIN_LISTBOX_HEIGHT); - ListComponent->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); - ListComponent->setSelectionMode(QListBox::Single); - - aTopLayout->addWidget(TextLabel1, 0, 0); - aTopLayout->addWidget(ListComponent, 1, 0); - aTopLayout->addLayout(aBtnLayout, 2, 0); - - // signals and slots connections - connect( buttonOk, SIGNAL( clicked() ), this, SLOT( accept() ) ); - connect( buttonCancel, SIGNAL( clicked() ), this, SLOT( reject() ) ); -} - -/* - * Destroys the object and frees any allocated resources - */ -SALOMEGUI_LoadStudiesDlg::~SALOMEGUI_LoadStudiesDlg() -{ - // no need to delete child widgets, Qt does it all for us -} diff --git a/src/SALOMEGUI/SALOMEGUI_LoadStudiesDlg.h b/src/SALOMEGUI/SALOMEGUI_LoadStudiesDlg.h deleted file mode 100644 index b3dfde6fd..000000000 --- a/src/SALOMEGUI/SALOMEGUI_LoadStudiesDlg.h +++ /dev/null @@ -1,57 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOMEGUI_LoadStudiesDlg.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef SALOMEGUI_LOADSTUDIESDLG_H -#define SALOMEGUI_LOADSTUDIESDLG_H - -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QLabel; -class QListBox; -class QListBoxItem; -class QPushButton; - -class SALOMEGUI_LoadStudiesDlg : public QDialog -{ - Q_OBJECT - -public: - SALOMEGUI_LoadStudiesDlg( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); - ~SALOMEGUI_LoadStudiesDlg(); - - QLabel* TextLabel1; - QPushButton* buttonOk; - QPushButton* buttonCancel; - QListBox* ListComponent; - -}; - -#endif // SALOMEGUI_LOADSTUDIESDLG_H diff --git a/src/SALOMEGUI/SALOMEGUI_NameDlg.cxx b/src/SALOMEGUI/SALOMEGUI_NameDlg.cxx deleted file mode 100644 index dd21fe89b..000000000 --- a/src/SALOMEGUI/SALOMEGUI_NameDlg.cxx +++ /dev/null @@ -1,132 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : SALOMEGUI_NameDlg.cxx -// Author : Vadim SANDLER -// Module : SALOME -// $Header$ - -#include "SALOMEGUI_NameDlg.h" -#include "QAD_Application.h" -#include "QAD_Desktop.h" -#include "QAD_Tools.h" - -#include -#include -#include -#include -#include -using namespace std; - -/*! - Constructor -*/ -SALOMEGUI_NameDlg::SALOMEGUI_NameDlg( QWidget* parent ) - : QDialog( parent ? parent : QAD_Application::getDesktop(), - "SALOMEGUI_NameDlg", - true, - WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ) -{ - setCaption( tr("TLT_RENAME") ); - setSizeGripEnabled( TRUE ); - - QVBoxLayout* topLayout = new QVBoxLayout( this ); - topLayout->setMargin( 11 ); topLayout->setSpacing( 6 ); - - /***************************************************************/ - QGroupBox* GroupC1 = new QGroupBox( this, "GroupC1" ); - GroupC1->setColumnLayout(0, Qt::Vertical ); - GroupC1->layout()->setMargin( 0 ); GroupC1->layout()->setSpacing( 0 ); - QHBoxLayout* GroupC1Layout = new QHBoxLayout( GroupC1->layout() ); - GroupC1Layout->setAlignment( Qt::AlignTop ); - GroupC1Layout->setMargin( 11 ); GroupC1Layout->setSpacing( 6 ); - - QLabel* TextLabel = new QLabel( GroupC1, "TextLabel1" ); - TextLabel->setText( tr( "NAME_LBL" ) ); - GroupC1Layout->addWidget( TextLabel ); - - myLineEdit = new QLineEdit( GroupC1, "LineEdit1" ); - myLineEdit->setMinimumSize( 250, 0 ); - GroupC1Layout->addWidget( myLineEdit ); - - /***************************************************************/ - QGroupBox* GroupButtons = new QGroupBox( this, "GroupButtons" ); - GroupButtons->setColumnLayout(0, Qt::Vertical ); - GroupButtons->layout()->setMargin( 0 ); GroupButtons->layout()->setSpacing( 0 ); - QHBoxLayout* GroupButtonsLayout = new QHBoxLayout( GroupButtons->layout() ); - GroupButtonsLayout->setAlignment( Qt::AlignTop ); - GroupButtonsLayout->setMargin( 11 ); GroupButtonsLayout->setSpacing( 6 ); - - myButtonOk = new QPushButton( GroupButtons, "buttonOk" ); - myButtonOk->setText( tr( "BUT_OK" ) ); - myButtonOk->setAutoDefault( TRUE ); myButtonOk->setDefault( TRUE ); - GroupButtonsLayout->addWidget( myButtonOk ); - - GroupButtonsLayout->addStretch(); - - myButtonCancel = new QPushButton( GroupButtons, "buttonCancel" ); - myButtonCancel->setText( tr( "BUT_CANCEL" ) ); - myButtonCancel->setAutoDefault( TRUE ); - GroupButtonsLayout->addWidget( myButtonCancel ); - /***************************************************************/ - - topLayout->addWidget( GroupC1 ); - topLayout->addWidget( GroupButtons ); - - // signals and slots connections - connect( myButtonOk, SIGNAL( clicked() ), this, SLOT( accept() ) ); - connect( myButtonCancel, SIGNAL( clicked() ), this, SLOT( reject() ) ); - - /* Move widget on the botton right corner of main widget */ - QAD_Tools::centerWidget( this, parent ); -} - -/*! - Destructor -*/ -SALOMEGUI_NameDlg::~SALOMEGUI_NameDlg() -{ -} - -/*! - Sets name -*/ -void SALOMEGUI_NameDlg::setName( const QString& name ) -{ - myLineEdit->setText( name ); - myLineEdit->end(false); - myLineEdit->home(true); -} - -/*! - Returns name entered by user -*/ -QString SALOMEGUI_NameDlg::name() -{ - return myLineEdit->text(); -} - -void SALOMEGUI_NameDlg::accept() -{ - if ( name().stripWhiteSpace().isEmpty() ) - return; - QDialog::accept(); -} - -/*! - Creates modal dialog and returns name entered [ static ] -*/ -QString SALOMEGUI_NameDlg::getName( QWidget* parent, const QString& oldName ) -{ - QString n; - SALOMEGUI_NameDlg* dlg = new SALOMEGUI_NameDlg( parent ); - if ( !oldName.isNull() ) - dlg->setName( oldName ); - if ( dlg->exec() == QDialog::Accepted ) - n = dlg->name(); - delete dlg; - return n; -} diff --git a/src/SALOMEGUI/SALOMEGUI_NameDlg.h b/src/SALOMEGUI/SALOMEGUI_NameDlg.h deleted file mode 100644 index 23fa03eb2..000000000 --- a/src/SALOMEGUI/SALOMEGUI_NameDlg.h +++ /dev/null @@ -1,46 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : SALOMEGUI_NameDlg.h -// Author : Vadim SANDLER -// Module : SALOME -// $Header$ - -#ifndef SALOMEGUI_NAMEDLG_H -#define SALOMEGUI_NAMEDLG_H - -#include - -class QLineEdit; -class QPushButton; - -//================================================================================= -// class : SALOMEGUI_NameDlg -// purpose : Common dialog box class -//================================================================================= -class SALOMEGUI_NameDlg : public QDialog -{ - Q_OBJECT - -public: - SALOMEGUI_NameDlg( QWidget* parent = 0 ); - ~SALOMEGUI_NameDlg(); - - void setName( const QString& name ); - QString name(); - - static QString getName( QWidget* parent = 0, const QString& oldName = QString::null ); - -protected slots: - void accept(); - -private: - QPushButton* myButtonOk; - QPushButton* myButtonCancel; - QLineEdit* myLineEdit; -}; - -#endif // SALOMEGUI_NAMEDLG_H diff --git a/src/SALOMEGUI/SALOMEGUI_OpenWith.cxx b/src/SALOMEGUI/SALOMEGUI_OpenWith.cxx deleted file mode 100644 index 2203f5f97..000000000 --- a/src/SALOMEGUI/SALOMEGUI_OpenWith.cxx +++ /dev/null @@ -1,144 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOMEGUI_OpenWith.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "SALOMEGUI_OpenWith.h" - -#include -#include -#include -#include -#include -using namespace std; - -#define SPACING_SIZE 6 -#define MARGIN_SIZE 11 -#define MIN_LISTBOX_WIDTH 150 -#define MIN_LISTBOX_HEIGHT 100 - -/* - * Constructs modal SALOMEGUI_OpenWith which is a child of 'parent', with the - * name 'name' - */ -SALOMEGUI_OpenWith::SALOMEGUI_OpenWith(QWidget* parent, const char* name) - : QDialog( parent, name, true, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ) -{ - if ( !name ) - setName( "SALOMEGUI_OpenWith" ); - setCaption( tr("OPEN_WITH_TLT") ); - setSizeGripEnabled( TRUE ); - - QGridLayout* aTopLayout = new QGridLayout(this); - aTopLayout->setMargin(MARGIN_SIZE); - aTopLayout->setSpacing(SPACING_SIZE); - - AllwaysCheckBox = 0; -/* - AllwaysCheckBox = new QCheckBox( this, "AllwaysCheckBox" ); - AllwaysCheckBox->setText( tr( "MEN_COMPONENT_CHOICE1" ) ); -*/ - QHBoxLayout* aBtnLayout = new QHBoxLayout; - aBtnLayout->setSpacing( SPACING_SIZE ); - aBtnLayout->setMargin( 0 ); - - buttonOk = new QPushButton( this, "buttonOk" ); - buttonOk->setText( tr( "BUT_OK" ) ); - buttonOk->setAutoDefault( true ); - buttonOk->setDefault( true ); - - buttonCancel = new QPushButton( this, "buttonCancel" ); - buttonCancel->setText( tr( "BUT_CANCEL" ) ); - buttonCancel->setAutoDefault( true ); - - aBtnLayout->addWidget( buttonOk ); - aBtnLayout->addItem( new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ) ); - aBtnLayout->addWidget( buttonCancel ); - - ListComponent = new QListBox( this, "ListComponent" ); - ListComponent->setVScrollBarMode(QListBox::AlwaysOn); - ListComponent->setMinimumSize(MIN_LISTBOX_WIDTH, MIN_LISTBOX_HEIGHT); - ListComponent->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); - ListComponent->setSelectionMode(QListBox::Single); - - aTopLayout->addWidget(ListComponent, 0, 0); -// aTopLayout->addWidget(AllwaysCheckBox, 1, 0); - aTopLayout->addLayout(aBtnLayout, 1, 0); - - // signals and slots connections - connect( buttonOk, SIGNAL( clicked() ), this, SLOT( accept() ) ); - connect( buttonCancel, SIGNAL( clicked() ), this, SLOT( reject() ) ); - connect( ListComponent, SIGNAL( selectionChanged() ), this, SLOT( onSelectionChanged() )); - connect( ListComponent, SIGNAL( doubleClicked( QListBoxItem* ) ), this, SLOT( onDoubleClickEvent( QListBoxItem* ) )); - - updateButtonState(); -} - -/* - * Destroys the object and frees any allocated resources - */ -SALOMEGUI_OpenWith::~SALOMEGUI_OpenWith() -{ -} - -/* - Inserts new component into component list -*/ -void SALOMEGUI_OpenWith::addComponent(const QString& aComp) -{ - ListComponent->insertItem(aComp); -} - -/* - Returns choosen component -*/ -QString SALOMEGUI_OpenWith::getComponent() -{ - return ListComponent->currentText(); -} - -bool SALOMEGUI_OpenWith::getAlwaysFlag() -{ - if ( AllwaysCheckBox ) - return AllwaysCheckBox->isChecked(); - return false; -} -void SALOMEGUI_OpenWith::onSelectionChanged() -{ - updateButtonState(); -} - -void SALOMEGUI_OpenWith:: updateButtonState() -{ - buttonOk->setEnabled( ListComponent->currentItem() >=0 && - ListComponent->currentItem() < ListComponent->count() ) ; -} - -void SALOMEGUI_OpenWith::onDoubleClickEvent( QListBoxItem* item ) -{ - if ( item ) - accept(); -} diff --git a/src/SALOMEGUI/SALOMEGUI_OpenWith.h b/src/SALOMEGUI/SALOMEGUI_OpenWith.h deleted file mode 100644 index b71ac6e08..000000000 --- a/src/SALOMEGUI/SALOMEGUI_OpenWith.h +++ /dev/null @@ -1,66 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOMEGUI_OpenWith.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef SALOMEGUI_OPENWITH_H -#define SALOMEGUI_OPENWITH_H - -#include - -class QListBox; -class QListBoxItem; -class QCheckBox; -class QPushButton; - -class SALOMEGUI_OpenWith : public QDialog -{ - Q_OBJECT - -public: - SALOMEGUI_OpenWith(QWidget* parent = 0, const char* name = 0); - ~SALOMEGUI_OpenWith(); - - void addComponent(const QString& aComp); - QString getComponent(); - bool getAlwaysFlag(); - -protected slots: - void onSelectionChanged(); - void onDoubleClickEvent( QListBoxItem* item ); - -protected: - void updateButtonState(); - -protected: - QListBox* ListComponent; - QCheckBox* AllwaysCheckBox; - QPushButton* buttonHelp; - QPushButton* buttonCancel; - QPushButton* buttonOk; -}; - -#endif // SALOMEGUI_OPENWITH_H diff --git a/src/SALOMEGUI/SALOMEGUI_QtCatchCorbaException.cxx b/src/SALOMEGUI/SALOMEGUI_QtCatchCorbaException.cxx deleted file mode 100644 index ede2c4366..000000000 --- a/src/SALOMEGUI/SALOMEGUI_QtCatchCorbaException.cxx +++ /dev/null @@ -1,87 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOMEGUI_QtCatchCorbaException.cxx -// Author : Paul RASCLE, EDF -// Module : SALOME -// $Header$ - -#include "SALOMEGUI_QtCatchCorbaException.hxx" -#include "utilities.h" - -#include "QAD_Desktop.h" -#include "QAD_MessageBox.h" -using namespace std; - -void QtCatchCorbaException(const SALOME::SALOME_Exception & S_ex) -{ - switch (S_ex.details.type) - { - case SALOME::COMM: - case SALOME::INTERNAL_ERROR: - { - QString str(S_ex.details.text); - QString source(S_ex.details.sourceFile); - QString line; - line.setNum(S_ex.details.lineNumber); - QString message = str + " \n" + source + " : " + line; - QAD_MessageBox::error1 - ( QAD_Application::getDesktop(), - QObject::tr ("Engine Error"), - message, - QObject::tr ("OK") ); - break; - } - - case SALOME::BAD_PARAM: - { - QString message(S_ex.details.text); -#ifdef _DEBUG_ - QString source(S_ex.details.sourceFile); - QString line; - line.setNum(S_ex.details.lineNumber); - message = message + " \n" + source + " : " + line; -#endif - QAD_MessageBox::warn1 - ( QAD_Application::getDesktop(), - QObject::tr ("Engine Warning"), - message, - QObject::tr ("OK") ); - break; - } - default: - { - QString str("SALOME CORBA Exception Type invalid"); - QString source(S_ex.details.sourceFile); - QString line; - line.setNum(S_ex.details.lineNumber); - QString message = str + " \n" + source + " : " + line; - QAD_MessageBox::error1 - ( QAD_Application::getDesktop(), - QObject::tr ("Internal SALOME Error"), - message, - QObject::tr ("OK") ); - break; - } - } -} diff --git a/src/SALOMEGUI/SALOMEGUI_QtCatchCorbaException.hxx b/src/SALOMEGUI/SALOMEGUI_QtCatchCorbaException.hxx deleted file mode 100644 index ade9ad95d..000000000 --- a/src/SALOMEGUI/SALOMEGUI_QtCatchCorbaException.hxx +++ /dev/null @@ -1,37 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOMEGUI_QtCatchCorbaException.hxx -// Author : Paul RASCLE, EDF -// Module : SALOME -// $Header$ - -#ifndef _SALOMEGUI__QTCATCHCORBAEXCEPTION_HXX_ -#define _SALOMEGUI__QTCATCHCORBAEXCEPTION_HXX_ - -#include -#include CORBA_CLIENT_HEADER(SALOME_Exception) - -void QtCatchCorbaException(const SALOME::SALOME_Exception & S_ex); - -#endif diff --git a/src/SALOMEGUI/SALOMEGUI_SetValueDlg.cxx b/src/SALOMEGUI/SALOMEGUI_SetValueDlg.cxx deleted file mode 100644 index caa274038..000000000 --- a/src/SALOMEGUI/SALOMEGUI_SetValueDlg.cxx +++ /dev/null @@ -1,233 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : SALOMEGUI_SetValueDlg.cxx -// Author : Vadim SANDLER -// Module : SALOME -// $Header$ - -#include "SALOMEGUI_SetValueDlg.h" -#include "QAD_Tools.h" - -#include -#include -#include -#include -#include -#include -using namespace std; - -#define MARGIN_SIZE 11 -#define SPACING_SIZE 6 -/*! - Constructor -*/ -SALOMEGUI_SetValueDlg::SALOMEGUI_SetValueDlg( QWidget* parent ) - : QDialog( parent, "SALOMEGUI_SetValueDlg", true, - WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ) -{ - setCaption( tr("TLT_SETVALUE") ); - setSizeGripEnabled( TRUE ); - - QVBoxLayout* topLayout = new QVBoxLayout( this ); - topLayout->setMargin( MARGIN_SIZE ); topLayout->setSpacing( SPACING_SIZE ); - - /***************************************************************/ - QGroupBox* TopGroup = new QGroupBox( this, "TopGroup" ); - TopGroup->setColumnLayout(0, Qt::Vertical ); - TopGroup->layout()->setMargin( 0 ); TopGroup->layout()->setSpacing( 0 ); - QHBoxLayout* TopGroupLayout = new QHBoxLayout( TopGroup->layout() ); - TopGroupLayout->setAlignment( Qt::AlignTop ); - TopGroupLayout->setMargin( MARGIN_SIZE ); TopGroupLayout->setSpacing( SPACING_SIZE ); - - myLabel = new QLabel( tr( "VALUE_LBL" ), TopGroup, "myLabel" ); - myLineEdit = new QLineEdit( TopGroup, "myLineEdit" ); - myLineEdit->setMinimumSize( 250, 0 ); - - TopGroupLayout->addWidget( myLabel ); - TopGroupLayout->addWidget( myLineEdit ); - - /***************************************************************/ - QGroupBox* GroupButtons = new QGroupBox( this, "GroupButtons" ); - GroupButtons->setColumnLayout(0, Qt::Vertical ); - GroupButtons->layout()->setMargin( 0 ); GroupButtons->layout()->setSpacing( 0 ); - QHBoxLayout* GroupButtonsLayout = new QHBoxLayout( GroupButtons->layout() ); - GroupButtonsLayout->setAlignment( Qt::AlignTop ); - GroupButtonsLayout->setMargin( MARGIN_SIZE ); GroupButtonsLayout->setSpacing( SPACING_SIZE ); - - myButtonOk = new QPushButton( tr( "BUT_OK" ), GroupButtons, "myButtonOk" ); - myButtonOk->setAutoDefault( TRUE ); myButtonOk->setDefault( TRUE ); - myButtonCancel = new QPushButton( tr( "BUT_CANCEL" ), GroupButtons, "myButtonCancel" ); - myButtonCancel->setAutoDefault( TRUE ); - - GroupButtonsLayout->addWidget( myButtonOk ); - GroupButtonsLayout->addStretch(); - GroupButtonsLayout->addWidget( myButtonCancel ); - /***************************************************************/ - - topLayout->addWidget( TopGroup ); - topLayout->addWidget( GroupButtons ); - - // signals and slots connections - connect( myButtonOk, SIGNAL( clicked() ), this, SLOT( accept() ) ); - connect( myButtonCancel, SIGNAL( clicked() ), this, SLOT( reject() ) ); - - /* Move widget on the botton right corner of main widget */ - QAD_Tools::centerWidget( this, parent ); -} - -/*! - Destructor -*/ -SALOMEGUI_SetValueDlg::~SALOMEGUI_SetValueDlg() -{ -} - -/*! - Sets value -*/ -void SALOMEGUI_SetValueDlg::setValue( const QString& value ) -{ - myLineEdit->setText( value ); - myLineEdit->selectAll(); -} - -/*! - Returns value entered by user -*/ -QString SALOMEGUI_SetValueDlg::value() -{ - return myLineEdit->text(); -} - -/*! - Sets validator -*/ -void SALOMEGUI_SetValueDlg::setValidator( QValidator* v ) -{ - myLineEdit->setValidator( v ); -} - -/*! - Sets label text -*/ -void SALOMEGUI_SetValueDlg::setLabel( const QString& label ) -{ - myLabel->setText( label ); -} - -void SALOMEGUI_SetValueDlg::accept() -{ - const QValidator* v = myLineEdit->validator(); - if ( v ) { - if ( v->inherits( "QIntValidator" ) ) { - bool b; - int val = myLineEdit->text().toInt( &b ); - const QIntValidator* iv = dynamic_cast(v); - if ( !b || val < iv->bottom() || val > iv->top()) - return; - } - } - QDialog::accept(); -} - -/*! - Gets string value -*/ -QString SALOMEGUI_SetValueDlg::getString ( const QString& caption, - const QString& label, - const QString& oldValue, - bool* ok, - QWidget* parent ) -{ - QString v = QString::null; - SALOMEGUI_SetValueDlg* dlg = new SALOMEGUI_SetValueDlg( parent ); - dlg->setCaption( caption ); - dlg->setLabel( label ); - if ( !oldValue.isNull() ) - dlg->setValue( oldValue ); - int result = dlg->exec(); - if ( result == QDialog::Accepted ) - v = dlg->value(); - if ( ok ) - *ok = result == QDialog::Accepted; - delete dlg; - return v; -} - -/*! - Gets integer value -*/ -int SALOMEGUI_SetValueDlg::getInteger( const QString& caption, - const QString& label, - const int oldValue, - bool* ok, - QWidget* parent ) -{ - int v = 0; - SALOMEGUI_SetValueDlg* dlg = new SALOMEGUI_SetValueDlg( parent ); - dlg->setCaption( caption ); - dlg->setLabel( label ); - dlg->setValidator( new QIntValidator( dlg ) ); - dlg->setValue( QString::number( oldValue ) ); - int result = dlg->exec(); - if ( result == QDialog::Accepted ) - v = dlg->value().toInt(); - if ( ok ) - *ok = result == QDialog::Accepted; - delete dlg; - return v; -} - -/*! - Gets integer value -*/ -int SALOMEGUI_SetValueDlg::getInteger( const QString& caption, - const QString& label, - int bottom, - int top, - const int oldValue, - bool* ok, - QWidget* parent ) -{ - int v = 0; - SALOMEGUI_SetValueDlg* dlg = new SALOMEGUI_SetValueDlg( parent ); - dlg->setCaption( caption ); - dlg->setLabel( label ); - dlg->setValidator( new QIntValidator( bottom, top, dlg ) ); - dlg->setValue( QString::number( oldValue ) ); - int result = dlg->exec(); - if ( result == QDialog::Accepted ) - v = dlg->value().toInt(); - if ( ok ) - *ok = result == QDialog::Accepted; - delete dlg; - return v; -} - -/*! - Gets double value -*/ -double SALOMEGUI_SetValueDlg::getDouble ( const QString& caption, - const QString& label, - const double oldValue, - bool* ok, - QWidget* parent ) -{ - double v = 0; - SALOMEGUI_SetValueDlg* dlg = new SALOMEGUI_SetValueDlg( parent ); - dlg->setCaption( caption ); - dlg->setLabel( label ); - dlg->setValidator( new QDoubleValidator( dlg ) ); - dlg->setValue( QString::number( oldValue ) ); - int result = dlg->exec(); - if ( result == QDialog::Accepted ) - v = dlg->value().toDouble(); - if ( ok ) - *ok = result == QDialog::Accepted; - delete dlg; - return v; -} diff --git a/src/SALOMEGUI/SALOMEGUI_SetValueDlg.h b/src/SALOMEGUI/SALOMEGUI_SetValueDlg.h deleted file mode 100644 index 3b5bd02b9..000000000 --- a/src/SALOMEGUI/SALOMEGUI_SetValueDlg.h +++ /dev/null @@ -1,70 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : SALOMEGUI_SetValueDlg.h -// Author : Vadim SANDLER -// Module : SALOME -// $Header$ - -#ifndef SALOMEGUI_SETVALUEDLG_H -#define SALOMEGUI_SETVALUEDLG_H - -#include - -class QLineEdit; -class QPushButton; -class QValidator; -class QLabel; - -//================================================================================= -// class : SALOMEGUI_SetValueDlg -// purpose : Common dialog box for setting integer, double and string values -//================================================================================= -class SALOMEGUI_SetValueDlg : public QDialog -{ -public: - static QString getString ( const QString& caption, - const QString& label, - const QString& oldValue = QString::null, - bool* ok = 0, - QWidget* parent = 0 ); - static int getInteger( const QString& caption, - const QString& label, - const int oldValue = 0, - bool* ok = 0, - QWidget* parent = 0 ); - static int getInteger( const QString& caption, - const QString& label, - int bottom, - int top, - const int oldValue = 0, - bool* ok = 0, - QWidget* parent = 0 ); - static double getDouble ( const QString& caption, - const QString& label, - const double oldValue = 0.0, - bool* ok = 0, - QWidget* parent = 0 ); -public slots: - void accept(); - -private: - SALOMEGUI_SetValueDlg( QWidget* parent = 0 ); - ~SALOMEGUI_SetValueDlg(); - - void setValue( const QString& value ); - QString value(); - void setValidator( QValidator* v ); - void setLabel( const QString& label ); - -private: - QLabel* myLabel; - QLineEdit* myLineEdit; - QPushButton* myButtonOk; - QPushButton* myButtonCancel; -}; - -#endif // SALOMEGUI_SETVALUEDLG_H diff --git a/src/SALOMEGUI/SALOMEGUI_SetupCurveDlg.cxx b/src/SALOMEGUI/SALOMEGUI_SetupCurveDlg.cxx deleted file mode 100644 index 4265cb95d..000000000 --- a/src/SALOMEGUI/SALOMEGUI_SetupCurveDlg.cxx +++ /dev/null @@ -1,199 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : SALOMEGUI_SetupCurveDlg.cxx -// Author : Vadim SANDLER -// Module : SALOME -// $Header$ - -#include "SALOMEGUI_SetupCurveDlg.h" -#include "QAD_Tools.h" -#include -#include -#include -#include -#include -#include -#include -#include -using namespace std; - -#define MARGIN_SIZE 11 -#define SPACING_SIZE 6 -#define MIN_COMBO_WIDTH 100 -#define MIN_SPIN_WIDTH 50 -#define MAX_LINE_WIDTH 100 - -/*! - Constructor -*/ -SALOMEGUI_SetupCurveDlg::SALOMEGUI_SetupCurveDlg( QWidget* parent ) - : QDialog( parent, "SALOMEGUI_SetupCurveDlg", true, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ) -{ - setCaption( tr("TLT_SETUP_CURVE") ); - setSizeGripEnabled( TRUE ); - QGridLayout* topLayout = new QGridLayout( this ); - topLayout->setSpacing( SPACING_SIZE ); - topLayout->setMargin( MARGIN_SIZE ); - - QGroupBox* TopGroup = new QGroupBox( this ); - TopGroup->setColumnLayout( 0, Qt::Vertical ); - TopGroup->layout()->setSpacing( 0 ); TopGroup->layout()->setMargin( 0 ); - QGridLayout* TopGroupLayout = new QGridLayout( TopGroup->layout() ); - TopGroupLayout->setAlignment( Qt::AlignTop ); - TopGroupLayout->setSpacing( SPACING_SIZE ); TopGroupLayout->setMargin( MARGIN_SIZE ); - - QLabel* aLineTypeLab = new QLabel( tr( "CURVE_LINE_TYPE_LAB" ), TopGroup ); - myLineCombo = new QComboBox( false, TopGroup ); - myLineCombo->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myLineCombo->setMinimumWidth( MIN_COMBO_WIDTH ); - myLineCombo->insertItem( tr( "NONE_LINE_LBL" ) ); - myLineCombo->insertItem( tr( "SOLID_LINE_LBL" ) ); - myLineCombo->insertItem( tr( "DASH_LINE_LBL" ) ); - myLineCombo->insertItem( tr( "DOT_LINE_LBL" ) ); - myLineCombo->insertItem( tr( "DASHDOT_LINE_LBL" ) ); - myLineCombo->insertItem( tr( "DAHSDOTDOT_LINE_LBL" ) ); - myLineCombo->setCurrentItem( 1 ); // SOLID by default - - QLabel* aLineWidthLab = new QLabel( tr( "CURVE_LINE_WIDTH_LAB" ), TopGroup ); - myLineSpin = new QSpinBox( 0, MAX_LINE_WIDTH, 1, TopGroup ); - myLineSpin->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myLineSpin->setMinimumWidth( MIN_SPIN_WIDTH ); - myLineSpin->setValue( 0 ); // default width is 0 - - QLabel* aMarkerLab = new QLabel( tr( "CURVE_MARKER_TYPE_LAB" ), TopGroup ); - myMarkerCombo = new QComboBox( false, TopGroup ); - myMarkerCombo->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myMarkerCombo->setMinimumWidth( MIN_COMBO_WIDTH ); - myMarkerCombo->insertItem( tr( "NONE_MARKER_LBL" ) ); - myMarkerCombo->insertItem( tr( "CIRCLE_MARKER_LBL" ) ); - myMarkerCombo->insertItem( tr( "RECTANGLE_MARKER_LBL" ) ); - myMarkerCombo->insertItem( tr( "DIAMOND_MARKER_LBL" ) ); - myMarkerCombo->insertItem( tr( "DTRIANGLE_MARKER_LBL" ) ); - myMarkerCombo->insertItem( tr( "UTRIANGLE_MARKER_LBL" ) ); - myMarkerCombo->insertItem( tr( "LTRIANGLE_MARKER_LBL" ) ); - myMarkerCombo->insertItem( tr( "RTRIANGLE_MARKER_LBL" ) ); - myMarkerCombo->insertItem( tr( "CROSS_MARKER_LBL" ) ); - myMarkerCombo->insertItem( tr( "XCROSS_MARKER_LBL" ) ); - myMarkerCombo->setCurrentItem( 1 ); // CIRCLE by default - - QLabel* aColorLab = new QLabel( tr( "CURVE_COLOR_LAB" ), TopGroup ); - myColorBtn = new QToolButton( TopGroup ); - - TopGroupLayout->addWidget( aLineTypeLab, 0, 0 ); - TopGroupLayout->addMultiCellWidget( myLineCombo, 0, 0, 1, 2 ); - TopGroupLayout->addWidget( aLineWidthLab, 1, 0 ); - TopGroupLayout->addMultiCellWidget( myLineSpin, 1, 1, 1, 2 ); - TopGroupLayout->addWidget( aMarkerLab, 2, 0 ); - TopGroupLayout->addMultiCellWidget( myMarkerCombo, 2, 2, 1, 2 ); - TopGroupLayout->addWidget( aColorLab, 3, 0 ); - TopGroupLayout->addWidget( myColorBtn, 3, 1 ); - TopGroupLayout->setColStretch( 2, 5 ); - - QGroupBox* GroupButtons = new QGroupBox( this ); - GroupButtons->setColumnLayout( 0, Qt::Vertical ); - GroupButtons->layout()->setSpacing( 0 ); GroupButtons->layout()->setMargin( 0 ); - QHBoxLayout* GroupButtonsLayout = new QHBoxLayout( GroupButtons->layout() ); - GroupButtonsLayout->setAlignment( Qt::AlignTop ); - GroupButtonsLayout->setSpacing( SPACING_SIZE ); GroupButtonsLayout->setMargin( MARGIN_SIZE ); - - myOkBtn = new QPushButton( tr( "BUT_OK" ), GroupButtons ); - myOkBtn->setAutoDefault( true ); myOkBtn->setDefault( true ); - myCancelBtn = new QPushButton( tr( "BUT_CANCEL" ) , GroupButtons ); - myCancelBtn->setAutoDefault( true ); - - GroupButtonsLayout->addWidget( myOkBtn ); - GroupButtonsLayout->addStretch(); - GroupButtonsLayout->addWidget( myCancelBtn ); - - connect( myColorBtn, SIGNAL( clicked() ), this, SLOT( onColorChanged() ) ); - connect( myOkBtn, SIGNAL( clicked() ), this, SLOT( accept() ) ); - connect( myCancelBtn, SIGNAL( clicked() ), this, SLOT( reject() ) ); - setColor( QColor( 0, 0, 0 ) ); - - topLayout->addWidget( TopGroup, 0, 0 ); - topLayout->addWidget( GroupButtons, 1, 0 ); - - QAD_Tools::centerWidget( this, parent ); -} -/*! - Destructor -*/ -SALOMEGUI_SetupCurveDlg::~SALOMEGUI_SetupCurveDlg() -{ -} -/*! - Sets line style and width -*/ -void SALOMEGUI_SetupCurveDlg::setLine( const int line, const int width ) -{ - myLineCombo->setCurrentItem( line ); - myLineSpin->setValue( width ); -} -/*! - Gets line style -*/ -int SALOMEGUI_SetupCurveDlg::getLine() const -{ - return myLineCombo->currentItem(); -} -/*! - Gets line width -*/ -int SALOMEGUI_SetupCurveDlg::getLineWidth() const -{ - return myLineSpin->value(); -} -/*! - Sets marker style -*/ -void SALOMEGUI_SetupCurveDlg::setMarker( const int marker ) -{ - myMarkerCombo->setCurrentItem( marker ); -} -/*! - Gets marker style -*/ -int SALOMEGUI_SetupCurveDlg::getMarker() const -{ - return myMarkerCombo->currentItem(); -} -/*! - Sets color -*/ -void SALOMEGUI_SetupCurveDlg::setColor( const QColor& color ) -{ - QPalette pal = myColorBtn->palette(); - QColorGroup ca = pal.active(); - ca.setColor( QColorGroup::Button, color ); - QColorGroup ci = pal.inactive(); - ci.setColor( QColorGroup::Button, color ); - pal.setActive( ca ); - pal.setInactive( ci ); - myColorBtn->setPalette( pal ); -} -/*! - Gets color -*/ -QColor SALOMEGUI_SetupCurveDlg::getColor() const -{ - return myColorBtn->palette().active().button(); -} -/*! - button slot, invokes color selection dialog box -*/ -void SALOMEGUI_SetupCurveDlg::onColorChanged() -{ - QColor color = QColorDialog::getColor( getColor() ); - if ( color.isValid() ) { - setColor( color ); - } -} - - - - - diff --git a/src/SALOMEGUI/SALOMEGUI_SetupCurveDlg.h b/src/SALOMEGUI/SALOMEGUI_SetupCurveDlg.h deleted file mode 100644 index 876e6ecf7..000000000 --- a/src/SALOMEGUI/SALOMEGUI_SetupCurveDlg.h +++ /dev/null @@ -1,57 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : SALOMEGUI_SetupCurveDlg.h -// Author : Vadim SANDLER -// Module : SALOME -// $Header$ - -#ifndef SALOMEGUI_SetupCurveDlg_H -#define SALOMEGUI_SetupCurveDlg_H - -#include - -//================================================================================= -// class : SALOMEGUI_SetupCurveDlg -// purpose : Dialog box for setup Plot2d curve -//================================================================================= - -class QPushButton; -class QComboBox; -class QSpinBox; -class QToolButton; - -class SALOMEGUI_SetupCurveDlg : public QDialog -{ - Q_OBJECT - -public: - SALOMEGUI_SetupCurveDlg( QWidget* parent = 0 ); - ~SALOMEGUI_SetupCurveDlg(); - -public: - void setLine( const int line, const int width ); - int getLine() const; - int getLineWidth() const; - void setMarker( const int marker ); - int getMarker() const ; - void setColor( const QColor& color ); - QColor getColor() const; - -protected slots: - void onColorChanged(); - -private: - QPushButton* myOkBtn; - QPushButton* myCancelBtn; - QComboBox* myLineCombo; - QSpinBox* myLineSpin; - QComboBox* myMarkerCombo; - QToolButton* myColorBtn; -}; - -#endif // SALOMEGUI_SetupCurveDlg_H - diff --git a/src/SALOMEGUI/SALOMEGUI_StudyPropertiesDlg.cxx b/src/SALOMEGUI/SALOMEGUI_StudyPropertiesDlg.cxx deleted file mode 100644 index 4d9a73281..000000000 --- a/src/SALOMEGUI/SALOMEGUI_StudyPropertiesDlg.cxx +++ /dev/null @@ -1,291 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : SALOMEGUI_StudyPropertiesDlg.cxx -// Author : Sergey ANIKIN -// Module : SALOME -// $Header$ - -#include "SALOMEGUI_StudyPropertiesDlg.h" - -#include "QAD_Desktop.h" -#include "QAD_ListView.h" - -#include CORBA_SERVER_HEADER(SALOMEDS_Attributes) - -#include -#include -using namespace std; - -#define DEFAULT_MARGIN 11 -#define DEFAULT_SPACING 6 -#define SPACER_SIZE 5 -#define MIN_LIST_WIDTH 300 -#define MIN_LIST_HEIGHT 150 - -class SALOMEGUI_PropItem : public QAD_ListViewItem -{ -public: -// constructor - SALOMEGUI_PropItem(QAD_ListView* parent, - const QString theName, - const bool theEditable, - const int theUserType) : - QAD_ListViewItem(parent, theName, theEditable) - { - setUserType(theUserType); - } -// constructor - SALOMEGUI_PropItem(QAD_ListView* parent, - QAD_ListViewItem* after, - const QString theName, - const bool theEditable, - const int theUserType) : - QAD_ListViewItem(parent, after, theName, theEditable) - { - setUserType(theUserType); - } -// fills widget with initial values (list or single value) - void fillWidgetWithValues(QAD_EntityEdit* theWidget) - { - QStringList list; - switch(getUserType()) { - case SALOMEGUI_StudyPropertiesDlg::prpModeId: - { - list << QObject::tr("PRP_MODE_FROM_SCRATCH")<< QObject::tr("PRP_MODE_FROM_COPYFROM"); - theWidget->insertList(list); - break; - } - case SALOMEGUI_StudyPropertiesDlg::prpLockedId: - { - list << QObject::tr("PRP_NO") << QObject::tr("PRP_YES"); - theWidget->insertList(list, getValue() == QObject::tr("PRP_NO") ? 0 : 1); - break; - } - case SALOMEGUI_StudyPropertiesDlg::prpModificationsId: - { - QAD_Study* study = QAD_Application::getDesktop()->getActiveStudy(); - if (study) { - SALOMEDS::Study_var studyDoc = study->getStudyDocument(); - SALOMEDS::AttributeStudyProperties_var propAttr; - if (!studyDoc->_is_nil()) { - propAttr = studyDoc->GetProperties(); - if (!propAttr->_is_nil()) { - SALOMEDS::StringSeq_var aUsers; - SALOMEDS::LongSeq_var aMins, aHours, aDays, aMonths, aYears; - propAttr->GetModificationsList(aUsers, aMins, aHours, aDays, aMonths, aYears, false); - int aCnt = aUsers->length(); - for ( int i = 0; i < aCnt; i++ ) { - QString val; - val.sprintf("%2.2d/%2.2d/%2d %2.2d:%2.2d", - aDays [i], - aMonths[i], - aYears [i], - aHours [i], - aMins [i]); - val = val + " : " + QString(aUsers[i]); - list.prepend(val); - } - theWidget->setDuplicatesEnabled(true); - theWidget->insertList(list); - } - } - } - break; - } - default: - { - QAD_ListViewItem::fillWidgetWithValues(theWidget); - break; - } - } - } -// finishes editing of entity - virtual UpdateType finishEditing(QAD_EntityEdit* theWidget) { - if ( getUserType() == SALOMEGUI_StudyPropertiesDlg::prpModificationsId ) - return utCancel; - else - return QAD_ListViewItem::finishEditing(theWidget); - } -}; - -SALOMEGUI_StudyPropertiesDlg::SALOMEGUI_StudyPropertiesDlg(QWidget* parent) - : QDialog(parent, "", TRUE, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ), - myChanged( false ) -{ - setCaption(tr("TLT_STUDY_PROPERTIES")); - setSizeGripEnabled( true ); - - clearWFlags(Qt::WStyle_ContextHelp); - - QGridLayout* mainLayout = new QGridLayout(this); - mainLayout->setMargin(DEFAULT_MARGIN); - mainLayout->setSpacing(DEFAULT_SPACING); - - myPropList = new QAD_ListView(this); - myPropList->addColumn(""); - myPropList->addColumn(""); - myPropList->enableEditing(TRUE); - myPropList->setMinimumSize(MIN_LIST_WIDTH, MIN_LIST_HEIGHT); - mainLayout->addMultiCellWidget(myPropList, 0, 0, 0, 2); - - myOKBtn = new QPushButton(tr("BUT_OK"), this); - mainLayout->addWidget(myOKBtn, 1, 0); - - myCancelBtn = new QPushButton(tr("BUT_CANCEL"), this); - mainLayout->addWidget(myCancelBtn, 1, 2); - - QSpacerItem* spacer1 = new QSpacerItem(SPACER_SIZE, SPACER_SIZE, QSizePolicy::Expanding, QSizePolicy::Minimum); - mainLayout->addItem(spacer1, 1, 1); - - // Display study properties - QAD_Study* study = ((QAD_Desktop*)parent)->getActiveStudy(); - if (study) myStudyDoc = study->getStudyDocument(); - - initData(); - - connect(myOKBtn, SIGNAL(clicked()), this, SLOT(onOK())); - connect(myCancelBtn, SIGNAL(clicked()), this, SLOT(reject())); -} - -SALOMEGUI_StudyPropertiesDlg::~SALOMEGUI_StudyPropertiesDlg() -{ -} - -void SALOMEGUI_StudyPropertiesDlg::initData() -{ - bool hasData = !myStudyDoc->_is_nil(); - SALOMEDS::AttributeStudyProperties_var propAttr; - if (hasData) propAttr = myStudyDoc->GetProperties(); - hasData = hasData && !propAttr->_is_nil(); - - // Study author's name - SALOMEGUI_PropItem* item = new SALOMEGUI_PropItem(myPropList, tr("PRP_AUTHOR")+":", true, prpAuthorId); - if (hasData) item->setValue(propAttr->GetUserName()); - - // Date of creation - item = new SALOMEGUI_PropItem(myPropList, item, tr("PRP_DATE")+":", false, prpDateId); - if (hasData) { - CORBA::Long minutes, hours, day, month, year; - if (propAttr->GetCreationDate(minutes, hours, day, month, year)) { - QString strDate; - strDate.sprintf("%2.2d/%2.2d/%2d %2.2d:%2.2d", day, month, year, hours, minutes); - item->setValue(strDate); - } - } - - // Creation mode -// item = new SALOMEGUI_PropItem(myPropList, item, tr("PRP_MODE")+":", true, prpModeId); -// item->setEditingType(QAD_EntityEdit::etComboBox); -// if (hasData) item->setValue(propAttr->GetCreationMode()); - - // Locked or not - item = new SALOMEGUI_PropItem(myPropList, item, tr("PRP_LOCKED")+":", true, prpLockedId); - item->setEditingType(QAD_EntityEdit::etComboBox); - if (hasData) (propAttr->IsLocked()) ? item->setValue(tr("PRP_YES")) : item->setValue(tr("PRP_NO")); - - // Saved or not - item = new SALOMEGUI_PropItem(myPropList, item, tr("PRP_MODIFIED")+":", false, prpSavedId); - if (hasData) { - if (propAttr->IsModified()) - item->setValue(tr("PRP_YES")); - else - item->setValue(tr("PRP_NO")); - } - - // Modifications list - item = new SALOMEGUI_PropItem(myPropList, item, tr("PRP_MODIFICATIONS")+":", true, prpModificationsId); - item->setEditingType(QAD_EntityEdit::etComboBox); - if (hasData) { - SALOMEDS::StringSeq_var aUsers; - SALOMEDS::LongSeq_var aMins, aHours, aDays, aMonths, aYears; - propAttr->GetModificationsList(aUsers, aMins, aHours, aDays, aMonths, aYears, false); - int aLast = aUsers->length()-1; - if (aLast >= 0) { - QString val; - val.sprintf("%2.2d/%2.2d/%2d %2.2d:%2.2d", - aDays [aLast], - aMonths[aLast], - aYears [aLast], - aHours [aLast], - aMins [aLast]); - val = val + " : " + QString(aUsers[aUsers->length()-1]); - item->setValue(val); - } - } - - myOKBtn->setEnabled(hasData); -} - -bool SALOMEGUI_StudyPropertiesDlg::acceptData() -{ - return TRUE; -} - -void SALOMEGUI_StudyPropertiesDlg::onOK() -{ - myPropList->accept(); - - if (acceptData()) { - SALOMEDS::AttributeStudyProperties_var propAttr = myStudyDoc->GetProperties(); - myChanged = propChanged(); - if ( !propAttr->_is_nil() && myChanged ) { - QListViewItemIterator it( myPropList ); - // iterate through all items of the listview - for ( ; it.current(); ++it ) { - SALOMEGUI_PropItem* item = (SALOMEGUI_PropItem*)(it.current()); - switch (item->getUserType()) { - case prpAuthorId: - propAttr->SetUserName(item->getValue().stripWhiteSpace().latin1()); - break; - case prpModeId: - propAttr->SetCreationMode(item->getValue().stripWhiteSpace().latin1()); - break; - case prpLockedId: - propAttr->SetLocked(item->getValue().compare(tr("PRP_YES")) == 0); - break; - default: - break; - } - } - } - accept(); - } -} - -bool SALOMEGUI_StudyPropertiesDlg::propChanged() { - SALOMEDS::AttributeStudyProperties_var propAttr = myStudyDoc->GetProperties(); - if ( !propAttr->_is_nil() ) { - QListViewItemIterator it( myPropList ); - // iterate through all items of the listview - for ( ; it.current(); ++it ) { - SALOMEGUI_PropItem* item = (SALOMEGUI_PropItem*)(it.current()); - switch (item->getUserType()) { - case prpAuthorId: - if ( QString( propAttr->GetUserName() ) != item->getValue().stripWhiteSpace() ) { - return true; - } - break; - case prpModeId: - if ( QString( propAttr->GetCreationMode() ) != item->getValue().stripWhiteSpace() ) { - return true; - } - break; - case prpLockedId: - { - bool bLocked = item->getValue().compare( tr( "PRP_YES" ) ) == 0; - if ( propAttr->IsLocked() != bLocked ) { - return true; - } - break; - } - default: - break; - } - } - } - return false; -} diff --git a/src/SALOMEGUI/SALOMEGUI_StudyPropertiesDlg.h b/src/SALOMEGUI/SALOMEGUI_StudyPropertiesDlg.h deleted file mode 100644 index 6aa05338e..000000000 --- a/src/SALOMEGUI/SALOMEGUI_StudyPropertiesDlg.h +++ /dev/null @@ -1,62 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : SALOMEGUI_StudyPropertiesDlg.h -// Author : Sergey ANIKIN -// Module : SALOME -// $Header$ - -#ifndef SALOMEGUI_STUDY_PROPERTIES_DLG_H -#define SALOMEGUI_STUDY_PROPERTIES_DLG_H - -#include - -#include -#include CORBA_SERVER_HEADER(SALOMEDS) - -class QAD_ListView; -class QAD_ListViewItem; -class QPushButton; - -class SALOMEGUI_StudyPropertiesDlg : public QDialog -{ - Q_OBJECT - -public: - - enum { - prpAuthorId, - prpModeId, - prpDateId, - prpSavedId, - prpLockedId, - prpModificationsId, - prpLastId - }; - - SALOMEGUI_StudyPropertiesDlg( QWidget* parent = 0 ); - ~SALOMEGUI_StudyPropertiesDlg(); - - bool isChanged() { return myChanged; } - -public slots: - void onOK(); - -private: - void initData(); - bool acceptData(); - bool propChanged(); - -private: - QAD_ListView* myPropList; - QPushButton* myOKBtn; - QPushButton* myCancelBtn; - bool myChanged; - - SALOMEDS::Study_var myStudyDoc; -}; - -#endif // SALOMEGUI_STUDY_PROPERTIES_DLG_H diff --git a/src/SALOMEGUI/SALOMEGUI_Swig.cxx b/src/SALOMEGUI/SALOMEGUI_Swig.cxx deleted file mode 100644 index 0865d6b3c..000000000 --- a/src/SALOMEGUI/SALOMEGUI_Swig.cxx +++ /dev/null @@ -1,330 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOMEGUI_Swig.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "SALOMEGUI_Swig.hxx" - -#include "QAD_Application.h" -#include "QAD_Desktop.h" -#include "QAD_Study.h" -#include "QAD_RightFrame.h" -#include "QAD_StudyFrame.h" - -#include "SALOME_Event.hxx" - -#include "SALOME_Selection.h" -#include "SALOME_InteractiveObject.hxx" -#include "SALOME_ListIteratorOfListIO.hxx" - -#include "utilities.h" - -using namespace std; - -// asv : 3.12.04 : added checking for NULL GUI objects in almost all methods. -// In the scope of fixing bug PAL6869. -// (PR : modify comments) -// Instance of this class is created every time "import salome" line is typed -// - in IAPP embedded Python interpretor (SALOME_Session_Server executable), -// - in inline Python nodes in Supervisor (in SALOME_Container executable), -// - in stand-alone Python console outside any executable. -// SALOME GUI(desktop and other objects) is only available in SALOME_Session_Server - -namespace SALOME{ - QAD_ViewFrame* GetViewFrame( QAD_Study* theStudy ) { - if ( theStudy ) - if ( QAD_StudyFrame* aSF = theStudy->getActiveStudyFrame() ) - if ( QAD_RightFrame* aRF = aSF->getRightFrame() ) - return aRF->getViewFrame(); - return 0; - } - - Handle(SALOME_InteractiveObject) FindIObject( QAD_Study* theStudy, const char *theEntry ) - { - if ( QAD_ViewFrame* aVF = GetViewFrame( theStudy ) ) - return aVF->FindIObject( theEntry ); - return Handle(SALOME_InteractiveObject)(); // NULL Handle - } -} - - -/*! - Constructor -*/ -SALOMEGUI_Swig::SALOMEGUI_Swig() -{ - // MESSAGE("Constructeur"); -} - -/*! - Destructor -*/ -SALOMEGUI_Swig::~SALOMEGUI_Swig() -{ - // MESSAGE("Destructeur"); -} - -/*! - Check if GUI is available (if we are linked to IAPP) -*/ -bool SALOMEGUI_Swig::hasDesktop() -{ - if ( QAD_Desktop* aDT = QAD_Application::getDesktop() ) - return true; - else - return false; -} - -/*! - Gets active study or 0 if no study opened -*/ -QAD_Study* SALOMEGUI_Swig::getActiveStudy() -{ - if ( QAD_Desktop* aDT = QAD_Application::getDesktop() ) - if ( QAD_Application* anApp = aDT->getActiveApp() ) - return anApp->getActiveStudy(); - return 0; -} - -/*! - Call when updated object browser. -*/ -void SALOMEGUI_Swig::updateObjBrowser( bool updateSelection ) -{ - if ( QAD_Study* myActiveStudy = getActiveStudy() ) - ProcessVoidEvent( new TVoidMemFun1ArgEvent - ( myActiveStudy, &QAD_Study::updateObjBrowser,updateSelection) ); -} - -/*! - Returns active Study Id. -*/ -int SALOMEGUI_Swig::getActiveStudyId() -{ - if ( QAD_Study* myActiveStudy = getActiveStudy() ) - return myActiveStudy->getStudyId(); - return 0; -} - -/*! - Returns active Study Name. -*/ -const char *SALOMEGUI_Swig::getActiveStudyName() -{ - if ( QAD_Study* myActiveStudy = getActiveStudy() ) - return myActiveStudy->getTitle().latin1(); - return NULL; -} - -/*! - Returns the name of component. -*/ -const char* SALOMEGUI_Swig::getComponentName( const char* ComponentUserName ) -{ - if ( QAD_Desktop* aDT = QAD_Application::getDesktop() ) - return aDT->getComponentName( ComponentUserName ); - return NULL; -} -/*! - Returns the user name of component. -*/ -const char* SALOMEGUI_Swig::getComponentUserName( const char* ComponentName ) -{ - if ( QAD_Desktop* aDT = QAD_Application::getDesktop() ) - return aDT->getComponentUserName( ComponentName ); - return NULL; -} - -/*! - Returns the number of selected objects. -*/ -int SALOMEGUI_Swig::SelectedCount() -{ - if ( QAD_Study* myActiveStudy = getActiveStudy() ) { - SALOME_Selection* Sel = SALOME_Selection::Selection( myActiveStudy->getSelection() ); - return Sel->IObjectCount(); - } - return 0; -} - -/*! - Returns the selected object at index i. -*/ -const char* SALOMEGUI_Swig::getSelected( int i ) -{ - if ( QAD_Study* myActiveStudy = getActiveStudy() ) { - SALOME_Selection* Sel = SALOME_Selection::Selection( myActiveStudy->getSelection() ); - SALOME_ListIteratorOfListIO It( Sel->StoredIObjects() ); - int index = 0; - for( ;It.More();It.Next() ) { - Handle(SALOME_InteractiveObject) IObject = It.Value(); - if( i == index++ ){ - if ( IObject->hasEntry() ) - return IObject->getEntry(); - } - } - } - return ""; -} - -/*! - Add object with Entry into selection. -*/ -void SALOMEGUI_Swig::AddIObject( const char *theEntry ) -{ - if ( QAD_Study* myActiveStudy = getActiveStudy() ) { - SALOME_Selection* aSel = SALOME_Selection::Selection( myActiveStudy->getSelection() ); - if ( IsInCurrentView( theEntry ) ) { - Handle(SALOME_InteractiveObject) anIO = SALOME::FindIObject( myActiveStudy,theEntry ); - if ( anIO.IsNull() ) return; - ProcessEvent( new TMemFun2ArgEvent - ( aSel, &SALOME_Selection::AddIObject, anIO, true ) ); - } - } -} - - -/*! - Removes object with Entry into selection. -*/ -void SALOMEGUI_Swig::RemoveIObject( const char *theEntry ) -{ - if ( QAD_Study* myActiveStudy = getActiveStudy() ) { - SALOME_Selection* aSel = SALOME_Selection::Selection( myActiveStudy->getSelection() ); - if ( IsInCurrentView( theEntry ) ) { - Handle(SALOME_InteractiveObject) anIO = SALOME::FindIObject( myActiveStudy,theEntry ); - if ( anIO.IsNull() ) return; - ProcessEvent( new TMemFun2ArgEvent - ( aSel, &SALOME_Selection::RemoveIObject, anIO, true ) ); - } - } -} - - -/*! - Removes all objects into selection. -*/ -void SALOMEGUI_Swig::ClearIObjects() -{ - if ( QAD_Study* myActiveStudy = getActiveStudy() ) { - SALOME_Selection* aSel = SALOME_Selection::Selection( myActiveStudy->getSelection() ); - ProcessVoidEvent( new TVoidMemFunEvent - ( aSel, &SALOME_Selection::ClearIObjects ) ); - } -} - -/*! - Display -*/ -void SALOMEGUI_Swig::Display( const char *theEntry ) -{ - if ( QAD_Study* myActiveStudy = getActiveStudy() ) { - if ( IsInCurrentView( theEntry ) ) { - Handle(SALOME_InteractiveObject) anIO = SALOME::FindIObject( myActiveStudy, theEntry ); - if ( anIO.IsNull() ) return; - QAD_ViewFrame* aViewFrame = SALOME::GetViewFrame( myActiveStudy ); - ProcessVoidEvent( new TVoidMemFun2ArgEvent - ( aViewFrame, &QAD_ViewFrame::Display, anIO, true ) ); - } - } -} - -/*! - Display only -*/ -void SALOMEGUI_Swig::DisplayOnly( const char *theEntry ) -{ - if ( QAD_Study* myActiveStudy = getActiveStudy() ) { - if ( IsInCurrentView( theEntry ) ) { - Handle(SALOME_InteractiveObject) anIO = SALOME::FindIObject( myActiveStudy, theEntry ); - if ( anIO.IsNull() ) return; - QAD_ViewFrame* aViewFrame = SALOME::GetViewFrame( myActiveStudy ); - ProcessVoidEvent( new TVoidMemFun1ArgEvent - ( aViewFrame, &QAD_ViewFrame::DisplayOnly, anIO ) ); - } - } -} - -/*! - Erase -*/ -void SALOMEGUI_Swig::Erase( const char *theEntry ) -{ - if ( QAD_Study* myActiveStudy = getActiveStudy() ) { - if ( IsInCurrentView( theEntry ) ) { - Handle(SALOME_InteractiveObject) anIO = SALOME::FindIObject( myActiveStudy, theEntry ); - if ( anIO.IsNull() ) return; - QAD_ViewFrame* aViewFrame = SALOME::GetViewFrame( myActiveStudy ); - ProcessVoidEvent( new TVoidMemFun2ArgEvent - ( aViewFrame, &QAD_ViewFrame::Erase, anIO, true ) ); - } - } -} - -/*! - Display all -*/ -void SALOMEGUI_Swig::DisplayAll() -{ - if ( QAD_Study* myActiveStudy = getActiveStudy() ) { - QAD_ViewFrame* aViewFrame = SALOME::GetViewFrame( myActiveStudy ); - ProcessVoidEvent( new TVoidMemFunEvent - ( aViewFrame, &QAD_ViewFrame::DisplayAll ) ); - } -} - -/*! - Erase only -*/ -void SALOMEGUI_Swig::EraseAll() -{ - ClearIObjects(); - if ( QAD_Study* myActiveStudy = getActiveStudy() ) { - QAD_ViewFrame* aViewFrame = SALOME::GetViewFrame( myActiveStudy ); - ProcessVoidEvent ( new TVoidMemFunEvent - ( aViewFrame, &QAD_ViewFrame::EraseAll ) ); - } -} - -/*! - Checks if object is displayed in current viewer -*/ -bool SALOMEGUI_Swig::IsInCurrentView( const char *theEntry ) -{ - if ( QAD_Study* myActiveStudy = getActiveStudy() ) - return myActiveStudy->isInViewer( theEntry, myActiveStudy->getActiveStudyFrame()->entry() ); - return false; -} diff --git a/src/SALOMEGUI/SALOMEGUI_Swig.hxx b/src/SALOMEGUI/SALOMEGUI_Swig.hxx deleted file mode 100644 index 967c09377..000000000 --- a/src/SALOMEGUI/SALOMEGUI_Swig.hxx +++ /dev/null @@ -1,89 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOMEGUI_Swig.hxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef _SALOMEGUI_SWIG_HXX_ -#define _SALOMEGUI_SWIG_HXX_ - -//QT Include -#include - -#include - -#include "SALOME_InteractiveObject.hxx" - -class QAD_Study; -class QAD_ViewFrame; - -namespace SALOME{ - QAD_ViewFrame* GetViewFrame(QAD_Study* theStudy); - Handle(SALOME_InteractiveObject) FindIObject(QAD_Study* theStudy, const char *theEntry); -} - - -class SALOMEGUI_Swig -{ -public: - SALOMEGUI_Swig(); - ~SALOMEGUI_Swig(); - - bool hasDesktop(); - - void updateObjBrowser( bool updateSelection ); - QAD_Study* getActiveStudy(); - int getActiveStudyId(); - const char* getActiveStudyName(); - -/* selection */ - int SelectedCount(); - const char* getSelected(int i); - - void AddIObject(const char *Entry); - void RemoveIObject(const char *Entry); - void ClearIObjects(); - -/* display */ - void Display(const char *Entry); - void DisplayOnly(const char *Entry); - void Erase(const char *Entry); - void DisplayAll(); - void EraseAll(); - -/* check */ - bool IsInCurrentView(const char *Entry); - -/* component name */ - const char* getComponentName( const char* ComponentUserName ); - const char* getComponentUserName( const char* ComponentName ); - -protected: - int _studyId; - QString _name; -}; - - -#endif diff --git a/src/SALOMEGUI/SALOMEGUI_Swig.i b/src/SALOMEGUI/SALOMEGUI_Swig.i deleted file mode 100644 index 1910dad02..000000000 --- a/src/SALOMEGUI/SALOMEGUI_Swig.i +++ /dev/null @@ -1,87 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOMEGUI_Swig.i -// Author : Paul RASCLE, EDF -// Module : SALOME -// $Header$ - -%{ -#include "SALOMEGUI_Swig.hxx" -%} - -%include "pointer.i" - -/* %typemap(python,out) const char** */ -/* { */ -/* int len,i; */ -/* if ($source) */ -/* { */ -/* len=atoi($source[0]); */ -/* $target = PyList_New(len); */ -/* for (i=0; i -#include -#include -#include -#include -#include -#include -#include -#include "utilities.h" -using namespace std; - -#define MARGIN_SIZE 11 -#define SPACING_SIZE 6 -#define SPACER_SIZE 5 -#define MIN_TABLE_WIDTH 200 -#define MIN_TABLE_HEIGHT 200 - - -class SALOMEGUI_Table : public QTable { -public: - SALOMEGUI_Table( Orientation orient, QWidget* parent = 0, const char* name = 0 ) - : QTable( parent, name ), myValidator( 0 ), myOrientation( orient ) {} - SALOMEGUI_Table( Orientation orient, int numRows, int numCols, QWidget* parent = 0, const char* name = 0 ) - : QTable( numRows, numCols, parent, name ), myValidator( 0 ), myOrientation( orient ) {} - - void setValidator( QValidator* v = 0 ) { myValidator = v; } - bool isEditing() const { return QTable::isEditing(); } - -protected: - QWidget* createEditor ( int row, int col, bool initFromCell ) const - { - bool testUnits = ( myOrientation == Horizontal && col == 0 ) || ( myOrientation == Vertical && row == 0 ); - QWidget* wg = QTable::createEditor( row, col, initFromCell ); - if ( wg && wg->inherits("QLineEdit") && myValidator && !testUnits ) - (( QLineEdit*)wg)->setValidator( myValidator ); - return wg; - } - -protected: - QValidator* myValidator; - Orientation myOrientation; -}; - -/*! - Constructor -*/ -SALOMEGUI_TableDlg::SALOMEGUI_TableDlg( QWidget* parent, - SALOMEDS::SObject_var obj, - bool edit, - int which, - Orientation orient, - bool showColumnTitles ) - : QDialog( parent, "", false, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu | WDestructiveClose), - myIntTable( 0 ), myRealTable( 0 ) -{ - setCaption( edit ? tr( "EDIT_TABLE_TLT" ) : tr( "VIEW_TABLE_TLT" ) ); - setSizeGripEnabled( true ); - - myObject = SALOMEDS::SObject::_duplicate( obj ); - bool bHasIntTable = false; - bool bHasRealTable = false; - if ( !myObject->_is_nil() ) { - SALOMEDS::GenericAttribute_var anAttr; - bHasIntTable = myObject->FindAttribute( anAttr, "AttributeTableOfInteger"); - bHasRealTable = myObject->FindAttribute( anAttr, "AttributeTableOfReal"); - } - - QVBoxLayout* mainLayout = new QVBoxLayout( this ); - mainLayout->setMargin( MARGIN_SIZE ); - mainLayout->setSpacing( SPACING_SIZE ); - - bool bDoInt = which == ttInt || which == ttBoth || which == ttAuto && bHasIntTable; - bool bDoReal = which == ttReal || which == ttBoth || which == ttAuto && bHasRealTable; - - QWidget* top; - QVBoxLayout* tl; - if ( bDoInt && bDoReal ) { - top = new QTabWidget( this, "TabWidget" ); - ( ( QTabWidget* ) top) ->setMargin( MARGIN_SIZE ); - } - else { - top = new QWidget( this, "DumbWidget" ); - tl = new QVBoxLayout( top ); tl->setMargin( 0 ); tl->setSpacing( SPACING_SIZE ); - } - - if ( bDoInt ) { - myIntTable = new SALOMEGUI_TableWidget( top, "myIntTable", edit, orient, showColumnTitles ); - myIntTable->getTable()->setValidator( new QIntValidator( this ) ); - if ( bDoInt && bDoReal ) - ( ( QTabWidget* )top )->addTab( myIntTable, tr( "TABLE_OF_INTEGER_TLT" ) ); - else - tl->addWidget( myIntTable ); - } - if ( bDoReal ) { - myRealTable = new SALOMEGUI_TableWidget( top, "myRealTable", edit, orient, showColumnTitles ); - myRealTable->getTable()->setValidator( new QDoubleValidator( this ) ); - if ( bDoInt && bDoReal ) - ( ( QTabWidget* )top )->addTab( myRealTable, tr( "TABLE_OF_REAL_TLT" ) ); - else - tl->addWidget( myRealTable ); - } - if ( !bDoInt && !bDoReal ) { - QLabel *dumbLabel = new QLabel( tr( "ERR_TABLE_NOT_AVAILABLE" ), top, "DumbLabel" ); - dumbLabel->setAlignment( AlignCenter ); - tl->addWidget( dumbLabel ); - } - - QHBoxLayout* btnLayout = new QHBoxLayout; - btnLayout->setMargin( 0 ); btnLayout->setSpacing( SPACING_SIZE ); - - myOKBtn = new QPushButton( tr( "BUT_OK" ), this ); - if ( edit ) { - myCancelBtn = new QPushButton( tr( "BUT_CANCEL" ), this ); - btnLayout->addWidget( myOKBtn ); - btnLayout->addItem( new QSpacerItem( SPACER_SIZE, SPACER_SIZE, QSizePolicy::Expanding, QSizePolicy::Minimum ) ); - btnLayout->addWidget( myCancelBtn ); - connect( myOKBtn, SIGNAL( clicked() ), this, SLOT( onOK() ) ); - connect( myCancelBtn, SIGNAL( clicked() ), this, SLOT( reject() ) ); - } - else { - btnLayout->addItem( new QSpacerItem( SPACER_SIZE, SPACER_SIZE, QSizePolicy::Expanding, QSizePolicy::Minimum ) ); - btnLayout->addWidget( myOKBtn ); - btnLayout->addItem( new QSpacerItem( SPACER_SIZE, SPACER_SIZE, QSizePolicy::Expanding, QSizePolicy::Minimum ) ); - connect( myOKBtn, SIGNAL( clicked() ), this, SLOT( accept() ) ); - } - - mainLayout->addWidget( top ); - mainLayout->addLayout( btnLayout ); - - initDlg(); - resize( 500, 400 ); - QAD_Tools::centerWidget( this, parent ); -} - -/*! - Destructor -*/ -SALOMEGUI_TableDlg::~SALOMEGUI_TableDlg() -{ -} - -/*! - button slot, saves table(s) - Called only in create/edit mode ( parameter for constructor is true ) -*/ -void SALOMEGUI_TableDlg::onOK() -{ - myOKBtn->setFocus(); // accept possible changes - bool done = true; - - if ( !myObject->_is_nil() ) { - SALOMEDS::Study_var study = myObject->GetStudy(); - SALOMEDS::GenericAttribute_var anAttr; - SALOMEDS::AttributeTableOfInteger_var tblIntAttr; - SALOMEDS::AttributeTableOfReal_var tblRealAttr; - - if ( !study->_is_nil() ) { - SALOMEDS::StudyBuilder_var builder = study->NewBuilder(); - builder->NewCommand(); // start transaction !!!!!!!!!!!!!!!!!!!!!!!!!!!!! - try { - if ( myIntTable ) { - builder->RemoveAttribute( myObject, "AttributeTableOfInteger" ); - tblIntAttr = SALOMEDS::AttributeTableOfInteger::_narrow( - builder->FindOrCreateAttribute( myObject, "AttributeTableOfInteger" ) ); - - int i; - int nbRows = myIntTable->getNumRows(); - int nbCols = myIntTable->getNumCols(); - QString tlt = myIntTable->getTableTitle(); - QStringList rowTitles, colTitles, units; - myIntTable->getRowTitles( rowTitles ); - myIntTable->getColTitles( colTitles ); - myIntTable->getUnits( units ); - - if ( nbRows > 0) { - // data - int nRow = 0; - tblIntAttr->SetNbColumns( nbCols ); - for ( i = 0; i < nbRows; i++ ) { - QStringList data; - myIntTable->getRowData( i, data ); - bool bEmptyRow = true; - for ( int j = 0; j < data.count(); j++ ) { - if ( !data[ j ].isNull() ) { - tblIntAttr->PutValue( data[ j ].toInt(), nRow+1, j+1 ); - bEmptyRow = false; - } - } - if ( !bEmptyRow ) { // Skip rows with no data !!! - // set row title - tblIntAttr->SetRowTitle( nRow+1, rowTitles[ i ].isNull() ? QString( "" ) : QString( rowTitles[ i ] ) ); - // set row unit - tblIntAttr->SetRowUnit( nRow+1, units[ i ].isNull() ? QString( "" ) : QString( units[ i ] ) ); - nRow++; - } - } - if ( nRow > 0 ) { // Set columns only if table is not empty, otherwise exception is raised !!! - // column titles - for ( i = 0; i < colTitles.count(); i++ ) - tblIntAttr->SetColumnTitle( i+1, colTitles[ i ].isNull() ? QString( "" ) : QString( colTitles[ i ] ) ); - } - } - // title - tblIntAttr->SetTitle( myIntTable->getTableTitle().latin1() ); - } - if ( myRealTable ) { - builder->RemoveAttribute( myObject, "AttributeTableOfReal" ); - tblRealAttr = SALOMEDS::AttributeTableOfReal::_narrow( - builder->FindOrCreateAttribute( myObject, "AttributeTableOfReal" ) ); - - int i; - int nbRows = myRealTable->getNumRows(); - int nbCols = myRealTable->getNumCols(); - QString tlt = myRealTable->getTableTitle(); - QStringList rowTitles, colTitles, units; - myRealTable->getRowTitles( rowTitles ); - myRealTable->getColTitles( colTitles ); - myRealTable->getUnits( units ); - - if ( nbRows > 0) { - // data - int nRow = 0; - tblRealAttr->SetNbColumns( nbCols ); - for ( i = 0; i < nbRows; i++ ) { - QStringList data; - myRealTable->getRowData( i, data ); - bool bEmptyRow = true; - for ( int j = 0; j < data.count(); j++ ) { - if ( !data[ j ].isNull() ) { - tblRealAttr->PutValue( data[ j ].toDouble(), nRow+1, j+1 ); - bEmptyRow = false; - } - } - if ( !bEmptyRow ) { // Skip rows with no data !!! - // set row title - tblRealAttr->SetRowTitle( nRow+1, rowTitles[ i ].isNull() ? QString( "" ) : QString( rowTitles[ i ] ) ); - // set row unit - tblRealAttr->SetRowUnit( nRow+1, units[ i ].isNull() ? QString( "" ) : QString( units[ i ] ) ); - nRow++; - } - } - if ( nRow > 0 ) { // Set columns only if table is not empty, otherwise exception is raised !!! - // column titles - for ( i = 0; i < colTitles.count(); i++ ) - tblRealAttr->SetColumnTitle( i+1, colTitles[ i ].isNull() ? QString( "" ) : QString( colTitles[ i ] ) ); - } - } - // title - tblRealAttr->SetTitle( myRealTable->getTableTitle().latin1() ); - } - if ( myIntTable || myRealTable) - builder->CommitCommand(); // commit transaction !!!!!!!!!!!!!!!!!!!!!!!!!!! - else - builder->AbortCommand(); // abort transaction !!!!!!!!!!!!!!!!!!!!!!!!!!! - } - catch( ... ) { - MESSAGE("SALOMEGUI_TableDlg::onOK : Exception has been caught !!!"); - builder->AbortCommand(); // abort transaction !!!!!!!!!!!!!!!!!!!!!!!!!!! - done = false; - QAD_MessageBox::error1 ( this, tr("ERR_ERROR"), tr("ERR_APP_EXCEPTION"), tr ("BUT_OK") ); - } - } - } - if ( done ) - accept(); -} - -/*! - Populates table with data -*/ -void SALOMEGUI_TableDlg::initDlg() -{ - int i, j; - if ( !myObject->_is_nil() ) { - SALOMEDS::GenericAttribute_var anAttr; - SALOMEDS::AttributeTableOfInteger_var tblIntAttr; - SALOMEDS::AttributeTableOfReal_var tblRealAttr; - if ( myObject->FindAttribute( anAttr, "AttributeTableOfInteger") ) { - tblIntAttr = SALOMEDS::AttributeTableOfInteger::_narrow( anAttr ); - } - if ( myObject->FindAttribute( anAttr, "AttributeTableOfReal") ) { - tblRealAttr = SALOMEDS::AttributeTableOfReal::_narrow( anAttr ); - } - // Table of integer - if ( !tblIntAttr->_is_nil() && myIntTable ) { - try { - SALOMEGUI_Table* tbl = myIntTable->getTable(); - // title - myIntTable->setTableTitle( CORBA::string_dup( tblIntAttr->GetTitle() ) ); - // nb of rows & cols - int nbRows = tblIntAttr->GetNbRows() ; - int nbCols = tblIntAttr->GetNbColumns(); - myIntTable->setNumRows( nbRows ); - myIntTable->setNumCols( nbCols ); - // rows titles - QStringList strlist; - SALOMEDS::StringSeq_var rowTitles = tblIntAttr->GetRowTitles(); - for ( i = 0; i < nbRows; i++ ) { - if ( rowTitles->length() > 0 ) - strlist.append( CORBA::string_dup( rowTitles[i] ) ); - else - strlist.append( "" ); - } - myIntTable->setRowTitles( strlist ); - // columns titles - strlist.clear(); - SALOMEDS::StringSeq_var colTitles = tblIntAttr->GetColumnTitles(); - for ( i = 0; i < nbCols; i++ ) { - if ( colTitles->length() > 0 ) - strlist.append( CORBA::string_dup( colTitles[i] ) ); - else - strlist.append( "" ); - } - myIntTable->setColTitles( strlist ); - // units - strlist.clear(); - SALOMEDS::StringSeq_var rowUnits = tblIntAttr->GetRowUnits(); - if ( rowUnits->length() > 0 ) { - for ( i = 0; i < nbRows; i++ ) - strlist.append( CORBA::string_dup( rowUnits[i] ) ); - myIntTable->setUnits( strlist ); - } - // data - for ( i = 1; i <= nbRows; i++ ) { - strlist.clear(); - for ( j = 1; j <= nbCols; j++ ) { - if ( tblIntAttr->HasValue( i, j ) ) - strlist.append( QString::number( tblIntAttr->GetValue( i, j ) ) ); - else - strlist.append( QString::null ); - } - myIntTable->setRowData( i-1, strlist ); - } - myIntTable->adjustTable(); - } - catch( ... ) { - MESSAGE("SALOMEGUI_TableDlg::initDlg : Exception has been caught !!!"); - } - } - // Table of real - if ( !tblRealAttr->_is_nil() && myRealTable ) { - try { - SALOMEGUI_Table* tbl = myRealTable->getTable(); - // title - myRealTable->setTableTitle( CORBA::string_dup( tblRealAttr->GetTitle() ) ); - // nb of rows & cols - int nbRows = tblRealAttr->GetNbRows() ; - int nbCols = tblRealAttr->GetNbColumns(); - myRealTable->setNumRows( nbRows ); - myRealTable->setNumCols( nbCols ); - // rows titles - QStringList strlist; - SALOMEDS::StringSeq_var rowTitles = tblRealAttr->GetRowTitles(); - for ( i = 0; i < nbRows; i++ ) { - if ( rowTitles->length() > 0 ) - strlist.append( CORBA::string_dup( rowTitles[i] ) ); - else - strlist.append( "" ); - } - myRealTable->setRowTitles( strlist ); - // columns titles - strlist.clear(); - SALOMEDS::StringSeq_var colTitles = tblRealAttr->GetColumnTitles(); - for ( i = 0; i < nbCols; i++ ) { - if ( colTitles->length() > 0 ) - strlist.append( CORBA::string_dup( colTitles[i] ) ); - else - strlist.append( "" ); - } - myRealTable->setColTitles( strlist ); - // units - strlist.clear(); - SALOMEDS::StringSeq_var rowUnits = tblRealAttr->GetRowUnits(); - if ( rowUnits->length() > 0 ) { - for ( i = 0; i < nbRows; i++ ) - strlist.append( CORBA::string_dup( rowUnits[i] ) ); - myRealTable->setUnits( strlist ); - } - // data - for ( i = 1; i <= nbRows; i++ ) { - strlist.clear(); - for ( j = 1; j <= nbCols; j++ ) { - if ( tblRealAttr->HasValue( i, j ) ) - strlist.append( QString::number( tblRealAttr->GetValue( i, j ) ) ); - else - strlist.append( QString::null ); - } - myRealTable->setRowData( i-1, strlist ); - } - myRealTable->adjustTable(); - } - catch( ... ) { - MESSAGE("SALOMEGUI_TableDlg::initDlg : Exception has been caught !!!"); - } - } - } -} - -/*! - Constructor -*/ -SALOMEGUI_TableWidget::SALOMEGUI_TableWidget( QWidget* parent, - const char* name, - bool edit, - Orientation orient, - bool showColumnTitles ) - : QWidget( parent, name ), myOrientation( orient ) -{ - QGridLayout* mainLayout = new QGridLayout( this ); - mainLayout->setMargin( 0 ); - mainLayout->setSpacing( SPACING_SIZE ); - - myTitleEdit = new QLineEdit( this, "TitleEdit" ); - myTitleEdit->setAlignment( AlignCenter ); - myTitleEdit->setReadOnly( !edit ); - QFont fnt = myTitleEdit->font(); - fnt.setBold( true ); - myTitleEdit->setFont( fnt ); - - myTable = new SALOMEGUI_Table( orient, this, "Table" ); - myTable->setNumRows( 5 ); - myTable->setNumCols( 5 ); - myTable->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ) ); - myTable->setMinimumSize( MIN_TABLE_WIDTH, MIN_TABLE_HEIGHT ); - myTable->setSelectionMode( QTable::Single ); - myTable->setShowGrid( true ); - myTable->setColumnMovingEnabled( false ); - myTable->setRowMovingEnabled( false ); - myTable->setReadOnly( !edit ); - myTable->setDragEnabled( false ); - setUnitsTitle( tr( "UNITS_TLT" ) ); - - if ( !showColumnTitles ) { - if ( myOrientation == Horizontal ) { - myTable->horizontalHeader()->hide(); - myTable->setTopMargin( 0 ); - } - else { - myTable->verticalHeader()->hide(); - myTable->setLeftMargin( 0 ); - } - } - - mainLayout->addWidget( myTitleEdit, 0, 0 ); - mainLayout->addWidget( myTable, 1, 0 ); - - if ( edit ) { - myAddRowBtn = new QPushButton( tr( "ADD_ROW_BTN" ), this, "AddRowBtn" ); - myDelRowBtn = new QPushButton( tr( "REMOVE_ROW_BTN" ), this, "DelRowBtn" ); - myAddColBtn = new QPushButton( tr( "ADD_COLUMN_BTN" ), this, "AddColBtn" ); - myDelColBtn = new QPushButton( tr( "REMOVE_COLUMN_BTN" ), this, "DelColBtn" ); - myAdjustBtn = new QPushButton( tr( "ADJUST_CELLS_BTN" ), this, "AdjustBtn" ); - mySelectAllBtn = new QPushButton( tr( "SELECT_ALL_BTN" ), this, "SelectAllBtn" ); - myClearBtn = new QPushButton( tr( "CLEAR_BTN"), this, "ClearBtn" ); - QVBoxLayout* btnLayout = new QVBoxLayout; btnLayout->setMargin( 0 ); btnLayout->setSpacing( SPACING_SIZE ); - btnLayout->addWidget( myAddRowBtn ); - btnLayout->addWidget( myDelRowBtn ); - btnLayout->addWidget( myAddColBtn ); - btnLayout->addWidget( myDelColBtn ); - btnLayout->addStretch(); - btnLayout->addWidget( myAdjustBtn ); - btnLayout->addStretch(); - btnLayout->addWidget( mySelectAllBtn ); - btnLayout->addWidget( myClearBtn ); - mainLayout->addLayout( btnLayout, 1, 1 ); - connect( myTable, SIGNAL( selectionChanged() ), this, SLOT( updateButtonsState() ) ); - connect( myTable, SIGNAL( currentChanged( int, int) ), this, SLOT( updateButtonsState() ) ); - connect( myAddRowBtn, SIGNAL( clicked() ), this, SLOT( addRow() ) ); - connect( myAddColBtn, SIGNAL( clicked() ), this, SLOT( addCol() ) ); - connect( myDelRowBtn, SIGNAL( clicked() ), this, SLOT( delRow() ) ); - connect( myDelColBtn, SIGNAL( clicked() ), this, SLOT( delCol() ) ); - connect( myAdjustBtn, SIGNAL( clicked() ), this, SLOT( adjustTable() ) ); - connect( mySelectAllBtn, SIGNAL( clicked() ), this, SLOT( selectAll() ) ); - connect( myClearBtn, SIGNAL( clicked() ), this, SLOT( clearTable() ) ); - myTable->horizontalHeader()->installEventFilter( this ); - myTable->verticalHeader()->installEventFilter( this ); - myTable->installEventFilter( this ); - } - updateButtonsState(); -} -/*! - Destructor -*/ -SALOMEGUI_TableWidget::~SALOMEGUI_TableWidget() -{ -} -/*! - Sets table title -*/ -void SALOMEGUI_TableWidget::setTableTitle( const QString& title ) -{ - myTitleEdit->setText( title ); -} -/*! - Gets table title -*/ -QString SALOMEGUI_TableWidget::getTableTitle() -{ - return myTitleEdit->text(); -} -/*! - Sets total number of rows -*/ -void SALOMEGUI_TableWidget::setNumRows( const int num ) -{ - myOrientation == Horizontal ? myTable->setNumRows( num ) : myTable->setNumCols( num ); -} -/*! - Gets total number of rows -*/ -int SALOMEGUI_TableWidget::getNumRows() -{ - return myOrientation == Horizontal ? myTable->numRows() : myTable->numCols(); -} -/*! - Sets total number of columns -*/ -void SALOMEGUI_TableWidget::setNumCols( const int num ) -{ - // !!! first column contains units !!! - myOrientation == Horizontal ? myTable->setNumCols( num+1 ) : myTable->setNumRows( num+1 ); -// myOrientation == Horizontal ? myTable->setColumnReadOnly( 0, true ) : myTable->setRowReadOnly( 0, true ); -} -/*! - Gets total number of columns -*/ -int SALOMEGUI_TableWidget::getNumCols() -{ - // !!! first column contains units !!! - return myOrientation == Horizontal ? myTable->numCols()-1 : myTable->numRows()-1; -} -/*! - Sets rows titles -*/ -void SALOMEGUI_TableWidget::setRowTitles( QStringList& tlts ) -{ - for ( int i = 0; i < tlts.count(); i++ ) { - myOrientation == Horizontal ? - myTable->verticalHeader()->setLabel( i, tlts[i] ) : - myTable->horizontalHeader()->setLabel( i, tlts[i] ); - } -} -/*! - Gets rows titles -*/ -void SALOMEGUI_TableWidget::getRowTitles( QStringList& tlts ) -{ - tlts.clear(); - if ( myOrientation == Horizontal ) { - for ( int i = 0; i < myTable->numRows(); i++ ) { - tlts.append( myTable->verticalHeader()->label( i ) ); - } - } - else { - for ( int i = 0; i < myTable->numCols(); i++ ) { - tlts.append( myTable->horizontalHeader()->label( i ) ); - } - } -} -/*! - Sets columns titles -*/ -void SALOMEGUI_TableWidget::setColTitles( QStringList& tlts ) -{ - // !!! first column contains units !!! - for ( int i = 0; i < tlts.count(); i++ ) { - myOrientation == Horizontal ? - myTable->horizontalHeader()->setLabel( i+1, tlts[i].isNull() ? "" : tlts[i] ) : - myTable->verticalHeader()->setLabel( i+1, tlts[i].isNull() ? "" : tlts[i] ); - } - setUnitsTitle( tr( "UNITS_TLT" ) ); -} -/*! - Sets columns titles -*/ -void SALOMEGUI_TableWidget::getColTitles( QStringList& tlts ) -{ - // !!! first column contains units !!! - tlts.clear(); - if ( myOrientation == Horizontal ) { - for ( int i = 1; i < myTable->numCols(); i++ ) { - tlts.append( myTable->horizontalHeader()->label( i ) ); - } - } - else { - for ( int i = 1; i < myTable->numRows(); i++ ) { - tlts.append( myTable->verticalHeader()->label( i ) ); - } - } -} -/*! - Sets units title -*/ -void SALOMEGUI_TableWidget::setUnitsTitle( const QString& tlt ) { - // !!! first column contains units !!! - myOrientation == Horizontal ? myTable->horizontalHeader()->setLabel( 0, tlt.isNull() ? "" : tlt ) : myTable->verticalHeader()->setLabel( 0, tlt.isNull() ? "" : tlt ); -} -/*! - Sets units -*/ -void SALOMEGUI_TableWidget::setUnits( QStringList& units ) -{ - for ( int i = 0; i < units.count(); i++ ) { - myOrientation == Horizontal ? myTable->setText( i, 0, units[i].isNull() ? "" : units[i] ) : myTable->setText( 0, i, units[i].isNull() ? "" : units[i] ); - } -} -/*! - Gets units -*/ -void SALOMEGUI_TableWidget::getUnits( QStringList& units ) -{ - units.clear(); - if ( myOrientation == Horizontal ) { - for ( int i = 0; i < myTable->numRows(); i++ ) - units.append( myTable->text( i, 0 ).isNull() ? QString("") : myTable->text( i, 0 ) ); - } - else { - for ( int i = 0; i < myTable->numCols(); i++ ) - units.append( myTable->text( 0, i ).isNull() ? QString("") : myTable->text( 0, i ) ); - } -} -/*! - Sets row data -*/ -void SALOMEGUI_TableWidget::setRowData( int row, QStringList& data ) -{ - if ( row >= 0 && row < getNumRows() ) { - for ( int i = 0; i < data.count(); i++ ) { - if ( data[i].isNull() ) { - myOrientation == Horizontal ? myTable->clearCell( row, i+1 ) : - myTable->clearCell( i+1, row ); - } - else { - myOrientation == Horizontal ? myTable->setText( row, i+1, data[i] ) : - myTable->setText( i+1, row, data[i] ); - } - } - } -} -/*! - Gets row data -*/ -void SALOMEGUI_TableWidget::getRowData( int row, QStringList& data ) -{ - data.clear(); - if ( row >= 0 && row < getNumRows() ) { - if ( myOrientation == Horizontal ) { - for ( int i = 1; i < myTable->numCols(); i++ ) - data.append( myTable->text( row, i ) ); - } - else { - for ( int i = 1; i < myTable->numRows(); i++ ) - data.append( myTable->text( i, row ) ); - } - } -} -/*! - Adjusts table cell to see contents, button slot -*/ -void SALOMEGUI_TableWidget::adjustTable() -{ - int i; - for ( i = 0; i < myTable->numRows(); i++ ) - myTable->adjustRow( i ); - for ( i = 0; i < myTable->numCols(); i++ ) - myTable->adjustColumn( i ); -} -/*! - Called when selection changed in table -*/ -void SALOMEGUI_TableWidget::updateButtonsState() -{ - if ( myTable->isReadOnly() ) - return; - bool bDR = false; // - bool bDC = false; // - bool bSA = false; // button slot -*/ -void SALOMEGUI_TableWidget::selectAll() -{ - myTable->clearSelection(); - QTableSelection ts; - ts.init( 0, 0 ); ts.expandTo( myTable->numRows()-1, myTable->numCols()-1 ); - myTable->addSelection( ts ); - updateButtonsState(); -} -/*! - button slot -*/ -void SALOMEGUI_TableWidget::clearTable() -{ - int nbSel = myTable->numSelections(); - for ( int i = 0; i < nbSel; i++ ) { - QTableSelection ts = myTable->selection( i ); - for ( int j = ts.topRow(); j < ts.bottomRow()+1; j++) { - if ( myOrientation == Vertical && j == 0 ) { -// continue; // UNITS - } - for ( int k = ts.leftCol(); k < ts.rightCol()+1; k++) { - if ( myOrientation == Horizontal && k == 0 ) { -// continue; // UNITS - } - myTable->clearCell( j, k ); - } - } - } - if ( nbSel == 0 ) - myTable->clearCell( myTable->currentRow(), myTable->currentColumn() ); - myTable->clearSelection(); - updateButtonsState(); -} -/*! - Event filter - handles titles editing -*/ -bool SALOMEGUI_TableWidget::eventFilter( QObject* o, QEvent* e ) -{ - if ( e->type() == QEvent::MouseButtonDblClick) { - QMouseEvent* me = ( QMouseEvent* )e; - if ( me->button() == LeftButton && !myTable->isReadOnly() ) { - if ( o == myTable->horizontalHeader() ) { - for ( int i = 0; i < myTable->horizontalHeader()->count(); i++ ) { - QRect rect = myTable->horizontalHeader()->sectionRect( i ); - rect.addCoords( 1, 1, -1, -1 ); - if ( rect.contains( myTable->horizontalHeader()->mapFromGlobal( me->globalPos() ) ) ) { - if ( myOrientation == Vertical || i != 0 ) { - bool bOk; - QString tlt = QInputDialog::getText( tr( "SET_TITLE_TLT" ), - tr( "TITLE_LBL" ), - QLineEdit::Normal, - myTable->horizontalHeader()->label( i ), - &bOk, - this ); - if ( bOk && !tlt.isNull() ) - myTable->horizontalHeader()->setLabel( i, tlt ); - break; - } - } - } - } - if ( o == myTable->verticalHeader() ) { - for ( int i = 0; i < myTable->verticalHeader()->count(); i++ ) { - QRect rect = myTable->verticalHeader()->sectionRect( i ); - rect.addCoords( 1, 1, -1, -1 ); - if ( rect.contains( myTable->verticalHeader()->mapFromGlobal( me->globalPos() ) ) ) { - if ( myOrientation == Horizontal || i != 0 ) { - bool bOk; - QString tlt = QInputDialog::getText( tr( "SET_TITLE_TLT" ), - tr( "TITLE_LBL" ), - QLineEdit::Normal, - myTable->verticalHeader()->label( i ), - &bOk, - this ); - if ( bOk && !tlt.isNull() ) - myTable->verticalHeader()->setLabel( i, tlt ); - break; - } - } - } - } - } - } - else if ( e->type() == QEvent::KeyRelease && o == myTable ) { - QKeyEvent* ke = (QKeyEvent*)e; - if ( ke->key() == Key_Delete && !myTable->isEditing() ) { - clearTable(); - } - else if ( ke->key() == Key_Backspace && !myTable->isEditing() ) { - clearTable(); - int i = myTable->currentRow(); - int j = myTable->currentColumn() - 1; - if ( j < 0 ) { j = myTable->numCols()-1; i--; } - if ( i >= 0 && j >= 0 ) - myTable->setCurrentCell( i, j ); - } - } - return QWidget::eventFilter( o, e ); -} - - - diff --git a/src/SALOMEGUI/SALOMEGUI_TableDlg.h b/src/SALOMEGUI/SALOMEGUI_TableDlg.h deleted file mode 100644 index e195a12e0..000000000 --- a/src/SALOMEGUI/SALOMEGUI_TableDlg.h +++ /dev/null @@ -1,113 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : SALOMEGUI_TableDlg.h -// Author : Vadim SANDLER -// Module : SALOME -// $Header$ - -#ifndef SALOMEGUI_TABLE_DLG_H -#define SALOMEGUI_TABLE_DLG_H - -#include -#include -#include - -class SALOMEGUI_Table; -class SALOMEGUI_TableWidget; - -#include -#include CORBA_SERVER_HEADER(SALOMEDS) -#include CORBA_SERVER_HEADER(SALOMEDS_Attributes) - -class SALOMEGUI_TableDlg : public QDialog -{ - Q_OBJECT - -public: - - enum { ttNone, ttInt, ttReal, ttBoth, ttAuto }; - - SALOMEGUI_TableDlg( QWidget* parent, - SALOMEDS::SObject_var obj, - bool edit = false, - int which = ttAuto, - Orientation orient = Horizontal, - bool showColumnTitles = true ); - ~SALOMEGUI_TableDlg(); - -public slots: - void onOK(); - -private: - void initDlg(); - -private: - SALOMEGUI_TableWidget* myIntTable; - SALOMEGUI_TableWidget* myRealTable; - QPushButton* myOKBtn; - QPushButton* myCancelBtn; - - SALOMEDS::SObject_var myObject; -}; - -class SALOMEGUI_TableWidget : public QWidget -{ - Q_OBJECT -public: - SALOMEGUI_TableWidget( QWidget* parent = 0, - const char* name = 0, - bool edit = false, - Orientation orient = Horizontal, - bool showColumnTitles = true ); - ~SALOMEGUI_TableWidget(); - - void setTableTitle( const QString& title ); - QString getTableTitle(); - void setNumRows( const int num ); - int getNumRows(); - void setNumCols( const int num ); - int getNumCols(); - void setRowTitles( QStringList& tlts ); - void getRowTitles( QStringList& tlts ); - void setColTitles( QStringList& tlts ); - void getColTitles( QStringList& tlts ); - void setUnitsTitle( const QString& tlt ); - void setUnits( QStringList& units ); - void getUnits( QStringList& units ); - void setRowData( int row, QStringList& data ); - void getRowData( int row, QStringList& data ); - - SALOMEGUI_Table* getTable() { return myTable; } - QLineEdit* getTitleEdit() { return myTitleEdit; } - - bool eventFilter( QObject* o, QEvent* e); - -public slots: - void updateButtonsState(); - void addRow(); - void addCol(); - void delRow(); - void delCol(); - void adjustTable(); - void selectAll(); - void clearTable(); - -private: - QLineEdit* myTitleEdit; - SALOMEGUI_Table* myTable; - QPushButton* myAddRowBtn; - QPushButton* myAddColBtn; - QPushButton* myDelRowBtn; - QPushButton* myDelColBtn; - QPushButton* myAdjustBtn; - QPushButton* mySelectAllBtn; - QPushButton* myClearBtn; - Orientation myOrientation; -}; - -#endif // SALOMEGUI_TABLE_DLG_H - diff --git a/src/SALOMEGUI/SALOMEGUI_TrihedronSizeDlg.cxx b/src/SALOMEGUI/SALOMEGUI_TrihedronSizeDlg.cxx deleted file mode 100644 index 8f78226ce..000000000 --- a/src/SALOMEGUI/SALOMEGUI_TrihedronSizeDlg.cxx +++ /dev/null @@ -1,123 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOMEGUI_TrihedronSizeDlg.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "SALOMEGUI_TrihedronSizeDlg.h" - -#include -#include -#include -#include -#include -using namespace std; - -#define MARGIN_SIZE 11 -#define SPACING_SIZE 6 -#define MIN_SPIN_WIDTH 100 - -/* - * Constructs a modal SALOMEGUI_TrihedronSizeDlg which is a child of 'parent' - * - */ -SALOMEGUI_TrihedronSizeDlg::SALOMEGUI_TrihedronSizeDlg( QWidget* parent ) - : QDialog( parent, "SALOMEGUI_TrihedronSizeDlg", true, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ) -{ - setCaption( tr( "MEN_TRIHEDRON" ) ); - setSizeGripEnabled( true ); - - QGridLayout* topLayout = new QGridLayout( this ); - topLayout->setSpacing( SPACING_SIZE ); - topLayout->setMargin( MARGIN_SIZE ); - - QGroupBox* trihedronGrp = new QGroupBox( this, "trihedronGrp" ); - trihedronGrp->setColumnLayout( 0, Qt::Vertical ); - trihedronGrp->layout()->setSpacing( 0 ); - trihedronGrp->layout()->setMargin( 0 ); - QGridLayout* trihedronGrpLayout = new QGridLayout( trihedronGrp->layout() ); - trihedronGrpLayout->setAlignment( Qt::AlignTop ); - trihedronGrpLayout->setSpacing( SPACING_SIZE ); - trihedronGrpLayout->setMargin( MARGIN_SIZE ); - - QHBoxLayout* aBtnLayout = new QHBoxLayout; - aBtnLayout->setSpacing( SPACING_SIZE ); - aBtnLayout->setMargin( 0 ); - - QPushButton* buttonOk = new QPushButton( this, "buttonOk" ); - buttonOk->setText( tr( "BUT_OK" ) ); - buttonOk->setAutoDefault( TRUE ); - buttonOk->setDefault( TRUE ); - - QPushButton* buttonCancel = new QPushButton( this, "buttonCancel" ); - buttonCancel->setText( tr( "BUT_CANCEL" ) ); - buttonCancel->setAutoDefault( TRUE ); - - QLabel* TextLabel = new QLabel( trihedronGrp, "TextLabel" ); - TextLabel->setText( tr( "MEN_TRIHEDRON_SIZE" ) ); - - SpinBox = new QSpinBox( 1, 999999999, 1, trihedronGrp, "SpinBox" ); - SpinBox->setValue( 100 ); - SpinBox->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed)); - SpinBox->setMinimumWidth(MIN_SPIN_WIDTH); - - trihedronGrpLayout->addWidget(TextLabel, 0, 0); - trihedronGrpLayout->addWidget(SpinBox, 0, 1); - - aBtnLayout->addWidget( buttonOk ); - aBtnLayout->addItem( new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ) ); - aBtnLayout->addWidget( buttonCancel ); - - topLayout->addWidget( trihedronGrp, 0, 0 ); - topLayout->addLayout( aBtnLayout, 1, 0 ); - - // signals and slots connections - connect( buttonOk, SIGNAL( clicked() ), this, SLOT( accept() ) ); - connect( buttonCancel, SIGNAL( clicked() ), this, SLOT( reject() ) ); -} - -/* - * Destroys the object and frees any allocated resources - */ -SALOMEGUI_TrihedronSizeDlg::~SALOMEGUI_TrihedronSizeDlg() -{ - // no need to delete child widgets, Qt does it all for us -} - -/* - Sets start trihedron size -*/ -void SALOMEGUI_TrihedronSizeDlg::setTrihedronSize(const int size) -{ - SpinBox->setValue(size); -} - -/* - Gets trihedron size -*/ -int SALOMEGUI_TrihedronSizeDlg::getTrihedronSize() -{ - return SpinBox->value(); -} diff --git a/src/SALOMEGUI/SALOMEGUI_TrihedronSizeDlg.h b/src/SALOMEGUI/SALOMEGUI_TrihedronSizeDlg.h deleted file mode 100644 index cce230195..000000000 --- a/src/SALOMEGUI/SALOMEGUI_TrihedronSizeDlg.h +++ /dev/null @@ -1,51 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOMEGUI_TrihedronSizeDlg.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef SALOMEGUI_TRIHEDRON_SIZE_DLG_H -#define SALOMEGUI_TRIHEDRON_SIZE_DLG_H - -#include - -class QSpinBox; - -class SALOMEGUI_TrihedronSizeDlg : public QDialog -{ - Q_OBJECT - -public: - SALOMEGUI_TrihedronSizeDlg( QWidget* parent = 0 ); - ~SALOMEGUI_TrihedronSizeDlg(); - - void setTrihedronSize(const int size); - int getTrihedronSize(); - -protected: - QSpinBox* SpinBox; -}; - -#endif // SALOMEGUI_TRIHEDRON_SIZE_DLG_H diff --git a/src/SALOMEGUI/SALOMEGUI_ViewChoiceDlg.cxx b/src/SALOMEGUI/SALOMEGUI_ViewChoiceDlg.cxx deleted file mode 100644 index 9451c8777..000000000 --- a/src/SALOMEGUI/SALOMEGUI_ViewChoiceDlg.cxx +++ /dev/null @@ -1,133 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOMEGUI_ViewChoiceDlg.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "SALOMEGUI_ViewChoiceDlg.h" -#include "QAD_Config.h" -#include "QAD_StudyFrame.h" - -#include -#include -#include -#include -#include -#include -#include -#include -using namespace std; - -/* - * Constructs a SALOMEGUI_ViewChoiceDlg which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' - * - * The dialog will by default be modeless, unless you set 'modal' to - * TRUE to construct a modal dialog. - */ -SALOMEGUI_ViewChoiceDlg::SALOMEGUI_ViewChoiceDlg( QWidget* parent, const char* name, bool modal, WFlags fl ) - : QDialog( parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ) -{ - if ( !name ) - setName( "SALOMEGUI_ViewChoiceDlg" ); - setCaption( tr( "MEN_CHOICE" ) ); - setSizeGripEnabled( true ); - - QGridLayout* theBaseLayout = new QGridLayout( this, 2, 1, 11, 6); - - GroupBox1 = new QGroupBox(0, Qt::Vertical, tr("MEN_VIEW"), this); - theBaseLayout->addWidget(GroupBox1, 0, 0); - - QHBoxLayout* aBoxLayout = new QHBoxLayout(GroupBox1->layout()); - - QHBoxLayout* aInternalLayout = new QHBoxLayout(6); - - TextLabel1 = new QLabel(tr("MEN_VIEWER_TYPE"), GroupBox1); - aInternalLayout->addWidget(TextLabel1); - - ComboBox1 = new QComboBox( false, GroupBox1); - ComboBox1->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - ComboBox1->setMinimumWidth( 200 ); - // OCC Viewer - ComboBox1->insertItem(tr("MEN_VIEWER_OCC")); - myViewers.append(VIEW_OCC); - if ( QAD_CONFIG->getSetting( "Viewer:DefaultViewer").toInt() == VIEW_OCC ) - ComboBox1->setCurrentItem( ComboBox1->count()-1 ); - // VTK Viewer - ComboBox1->insertItem(tr("MEN_VIEWER_VTK")); - myViewers.append(VIEW_VTK); - if ( QAD_CONFIG->getSetting( "Viewer:DefaultViewer").toInt() == VIEW_VTK ) - ComboBox1->setCurrentItem( ComboBox1->count()-1 ); - // SUPERVISOR Viewer -// ComboBox1->insertItem(tr("MEN_VIEWER_GRAPH")); -// myViewers.append(VIEW_GRAPHSUPERV); -// if ( QAD_CONFIG->getSetting( "Viewer:DefaultViewer").toInt() == VIEW_GRAPHSUPERV ) -// ComboBox1->setCurrentItem( ComboBox1->count()-1 ); - // Plot2d Viewer - ComboBox1->insertItem(tr("MEN_VIEWER_PLOT2D")); - myViewers.append(VIEW_PLOT2D); - if ( QAD_CONFIG->getSetting( "Viewer:DefaultViewer").toInt() == VIEW_PLOT2D ) - ComboBox1->setCurrentItem( ComboBox1->count()-1 ); - TextLabel1->setBuddy(ComboBox1); - aInternalLayout->addWidget(ComboBox1); - - aBoxLayout->addLayout(aInternalLayout); - - QFrame* aButtonFrame = new QFrame( this ); - theBaseLayout->addWidget(aButtonFrame, 1, 0); - - QHBoxLayout* aButtLayout = new QHBoxLayout(aButtonFrame); - - buttonOk = new QPushButton(tr("BUT_OK"), aButtonFrame); - buttonOk->setAutoDefault(true); - buttonOk->setDefault(true); - aButtLayout->addWidget(buttonOk); - - QSpacerItem* aSpacer = new QSpacerItem( 20, 20, QSizePolicy::Expanding); - aButtLayout->addItem(aSpacer); - - buttonCancel = new QPushButton(tr( "BUT_CANCEL" ), aButtonFrame); - buttonCancel->setAutoDefault(true); - aButtLayout->addWidget(buttonCancel); - - connect( buttonOk, SIGNAL( clicked() ), this, SLOT( accept() ) ); - connect( buttonCancel, SIGNAL( clicked() ), this, SLOT( reject() ) ); -} - -/* - * Destroys the object and frees any allocated resources - */ -SALOMEGUI_ViewChoiceDlg::~SALOMEGUI_ViewChoiceDlg() -{ - // no need to delete child widgets, Qt does it all for us -} - -/*! - Gets user's choice -*/ -int SALOMEGUI_ViewChoiceDlg::getSelectedViewer() -{ - return myViewers[ ComboBox1->currentItem() ]; -} diff --git a/src/SALOMEGUI/SALOMEGUI_ViewChoiceDlg.h b/src/SALOMEGUI/SALOMEGUI_ViewChoiceDlg.h deleted file mode 100644 index 59b942ae4..000000000 --- a/src/SALOMEGUI/SALOMEGUI_ViewChoiceDlg.h +++ /dev/null @@ -1,61 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOMEGUI_ViewChoiceDlg.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef SALOMEGUI_VIEWCHOICEDLG_H -#define SALOMEGUI_VIEWCHOICEDLG_H - -#include -#include -#include -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QComboBox; -class QGroupBox; -class QLabel; -class QPushButton; - -class SALOMEGUI_ViewChoiceDlg : public QDialog -{ - Q_OBJECT - -public: - SALOMEGUI_ViewChoiceDlg( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); - ~SALOMEGUI_ViewChoiceDlg(); - - int getSelectedViewer(); - - QGroupBox* GroupBox1; - QLabel* TextLabel1; - QComboBox* ComboBox1; - QPushButton* buttonOk; - QPushButton* buttonCancel; - QValueList myViewers; -}; - -#endif // SALOMEGUI_VIEWCHOICEDLG_H diff --git a/src/SALOMEGUI/SALOMEGUI_icons.po b/src/SALOMEGUI/SALOMEGUI_icons.po deleted file mode 100644 index 04cad02b2..000000000 --- a/src/SALOMEGUI/SALOMEGUI_icons.po +++ /dev/null @@ -1,121 +0,0 @@ -# SALOME SALOMEGUI : implementation of desktop and GUI kernel -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : SALOMEGUI_icons.po -# Module : SALOME - -msgid "" -msgstr "" -"Project-Id-Version: example-Qt-message-extraction\n" -"POT-Creation-Date: 1999-02-23 15:38+0200\n" -"PO-Revision-Date: 1999-02-23 15:38+0200\n" -"Last-Translator: \n" -"Content-Type: text/plain; charset=iso-8859-1\n" - -msgid "SALOMEGUI_Application::ICON_APP_VIEW_BACK" -msgstr "view_back.png" - -msgid "SALOMEGUI_Application::ICON_APP_VIEW_BOTTOM" -msgstr "view_bottom.png" - -msgid "SALOMEGUI_Application::ICON_APP_VIEW_FITALL" -msgstr "view_fitall.png" - -msgid "SALOMEGUI_Application::ICON_APP_VIEW_FITAREA" -msgstr "view_fitarea.png" - -msgid "SALOMEGUI_Application::ICON_APP_VIEW_FRONT" -msgstr "view_front.png" - -msgid "SALOMEGUI_Application::ICON_APP_VIEW_GLOBALPAN" -msgstr "view_glpan.png" - -msgid "SALOMEGUI_Application::ICON_APP_VIEW_LEFT" -msgstr "view_left.png" - -msgid "SALOMEGUI_Application::ICON_APP_VIEW_PAN" -msgstr "view_pan.png" - -msgid "SALOMEGUI_Application::ICON_APP_VIEW_RESET" -msgstr "view_reset.png" - -msgid "SALOMEGUI_Application::ICON_APP_VIEW_RIGHT" -msgstr "view_right.png" - -msgid "SALOMEGUI_Application::ICON_APP_VIEW_ROTATE" -msgstr "view_rotate.png" - -msgid "SALOMEGUI_Application::ICON_APP_VIEW_TOP" -msgstr "view_top.png" - -msgid "SALOMEGUI_Application::ICON_APP_VIEW_ZOOM" -msgstr "view_zoom.png" - -msgid "SALOMEGUI_Application::ICON_APP_VIEW_TRIHEDRON" -msgstr "view_triedre.png" - -msgid "SALOMEGUI_Application::ICON_APP_VIEW_DUMP" -msgstr "view_camera_dump.png" - -msgid "ICON_PLOT2D_FIT_ALL" -msgstr "plot2d_fitall.png" - -msgid "ICON_PLOT2D_FIT_AREA" -msgstr "plot2d_fitarea.png" - -msgid "ICON_PLOT2D_ZOOM" -msgstr "plot2d_zoom.png" - -msgid "ICON_PLOT2D_PAN" -msgstr "plot2d_pan.png" - -msgid "ICON_PLOT2D_DUMP" -msgstr "plot2d_dump.png" - -msgid "ICON_PLOT2D_MODE_LINEAR_HOR" -msgstr "plot2d_linear.png" - -msgid "ICON_PLOT2D_MODE_LOGARITHMIC_HOR" -msgstr "plot2d_log.png" - -msgid "ICON_PLOT2D_MODE_LINEAR_VER" -msgstr "plot2d_linear_y.png" - -msgid "ICON_PLOT2D_MODE_LOGARITHMIC_VER" -msgstr "plot2d_log_y.png" - -msgid "ICON_PLOT2D_SHOW_LEGEND" -msgstr "plot2d_legend.png" - -msgid "ICON_PLOT2D_CURVES_POINTS" -msgstr "plot2d_points.png" - -msgid "ICON_PLOT2D_CURVES_LINES" -msgstr "plot2d_lines.png" - -msgid "ICON_PLOT2D_CURVES_SPLINES" -msgstr "plot2d_splines.png" - -msgid "ICON_PLOT2D_SETTINGS" -msgstr "plot2d_settings.png" - diff --git a/src/SALOMEGUI/SALOMEGUI_msg_en.po b/src/SALOMEGUI/SALOMEGUI_msg_en.po deleted file mode 100644 index e050c3f4b..000000000 --- a/src/SALOMEGUI/SALOMEGUI_msg_en.po +++ /dev/null @@ -1,737 +0,0 @@ -# SALOME SALOMEGUI : implementation of desktop and GUI kernel -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : SALOMEGUI_msg_en.po -# Module : SALOME - -msgid "" -msgstr "" -"Project-Id-Version: example-Qt-message-extraction\n" -"POT-Creation-Date: 1999-02-23 15:38+0200\n" -"PO-Revision-Date: 1999-02-23 15:38+0200\n" -"Last-Translator: \n" -"Content-Type: text/plain; charset=iso-8859-1\n" - -#--------------- -# BUTTONS -#--------------- - -msgid "BUT_OK" -msgstr "Ok" - -msgid "BUT_HELP" -msgstr "Help" - -msgid "BUT_CANCEL" -msgstr "Cancel" - -#--------------- -# ERROR -#--------------- - -#: SALOMEGUI.cxx:45 -msgid "QObject::ERR_APP_INITFAILED" -msgstr "Initialization failed" - -#: SALOMEGUI.cxx:44 -msgid "ERR_ERROR" -msgstr "Error" - -#: SALOMEGUI_Application.cxx:672 -msgid "ERR_APP_WRONG_VIEW_TYPE" -msgstr "Appropriate view must be created to display selected object(s)" - -#--------------- -# MENUS -#--------------- - -#: SALOMEGUI_TrihedronSizeDlg.cxx:77 -msgid "SALOMEGUI_TrihedronSizeDlg::MEN_TRIHEDRON_SIZE" -msgstr "Size (% of bounding box) :" - -#: SALOMEGUI_TrihedronSizeDlg.cxx:36 -msgid "SALOMEGUI_TrihedronSizeDlg::MEN_TRIHEDRON" -msgstr "Trihedron" - -#: SALOMEGUI_ExternalBrowserDlg.cxx:26 -msgid "SALOMEGUI_ExternalBrowserDlg::MEN_EXTERNAL_BROWSER" -msgstr "Choose external browser" - -#: SALOMEGUI_ExternalBrowserDlg.cxx:42 -msgid "SALOMEGUI_ExternalBrowserDlg::MEN_EXTERNAL_BROWSER_APP" -msgstr "Application:" - -#: SALOMEGUI_ExternalBrowserDlg.cxx:50 -msgid "SALOMEGUI_ExternalBrowserDlg::MEN_EXTERNAL_BROWSER_PARAMS" -msgstr "Parameters:" - -#: SALOMEGUI_ExternalBrowserDlg.cxx:58 -msgid "SALOMEGUI_ExternalBrowserDlg::MEN_EXTERNAL_BROWSER_BROWSE" -msgstr "&Browse" - -#: SALOMEGUI_ExternalBrowserDlg.cxx:95 -msgid "SALOMEGUI_ExternalBrowserDlg::MEN_EXTERNAL_BROWSER_CHOOSEAPP" -msgstr "Choose application" - -#: SALOMEGUI_ExternalBrowserDlg.cxx:126 -msgid "SALOMEGUI_ExternalBrowserDlg::MEN_EXTERNAL_BROWSER_NOTEXECUTABLE" -msgstr "The file is not executable!" - - - -#: SALOMEGUI_OpenWith.cxx:37 -msgid "SALOMEGUI_OpenWith::MEN_COMPONENT_CHOICE1" -msgstr "Always use this component to open this type of object" - -#: SALOMEGUI_OpenWith.cxx:65 -msgid "SALOMEGUI_OpenWith::MEN_COMPONENT_CHOICE2" -msgstr "Choose the component you want to use :" - -#: SALOMEGUI_OpenWith.cxx:33 -msgid "SALOMEGUI_OpenWith::MEN_COMPONENT_CHOICE3" -msgstr "Choose the component you want to use to open objects :" - -#: SALOMEGUI_LoadStudiesDlg.cxx:27 -msgid "SALOMEGUI_LoadStudiesDlg::MEN_STUDIES_CHOICE" -msgstr "Choose existing study." - -#: SALOMEGUI_Application.cxx:87 -msgid "SALOMEGUI_Application::MEN_APP_VIEW_MU4" -msgstr "Split View" - -#: SALOMEGUI_Application.cxx:135 -msgid "SALOMEGUI_Application::MEN_APP_VIEW_PAN" -msgstr "&Pan View\tCtrl+MB2" - -#: SALOMEGUI_Application.cxx:243 -msgid "SALOMEGUI_Application::MEN_APP_VIEW_RESET" -msgstr "R&eset View" - -#: SALOMEGUI_Application.cxx:231 -msgid "SALOMEGUI_Application::MEN_APP_VIEW_RIGHT" -msgstr "&Right View" - -#: SALOMEGUI_Application.cxx:147 -msgid "SALOMEGUI_Application::MEN_APP_VIEW_ROTATE" -msgstr "R&otate View\tCtrl+MB3" - -#: SALOMEGUI_Application.cxx:195 -msgid "SALOMEGUI_Application::MEN_APP_VIEW_TOP" -msgstr "&Top View" - -#: SALOMEGUI_Application.cxx:75 -msgid "SALOMEGUI_Application::MEN_APP_VIEW_TRIHEDRON" -msgstr "Shows - Hides Trihedron" - -#: SALOMEGUI_Application.cxx:123 -msgid "SALOMEGUI_Application::MEN_APP_VIEW_ZOOM" -msgstr "&Zoom View\tCtrl+MB1" - -msgid "SALOMEGUI_Application::MEN_APP_VIEW_FITALL" -msgstr "&Fit All" - -msgid "SALOMEGUI_Application::MEN_APP_VIEW_FITAREA" -msgstr "Fit &Area" - -msgid "SALOMEGUI_Application::MEN_APP_VIEW_FRONT" -msgstr "&Front View" - -msgid "SALOMEGUI_Application::MEN_APP_VIEW_GLOBALPAN" -msgstr "&Global Pan View" - -msgid "SALOMEGUI_Application::MEN_APP_VIEW_BACK" -msgstr "Bac&k View" - -msgid "SALOMEGUI_Application::MEN_APP_VIEW_BOTTOM" -msgstr "&Bottom View" - -msgid "SALOMEGUI_Application::MEN_APP_VIEW_LEFT" -msgstr "&Left View" - -#--------------- -# PRP -#--------------- - -#: SALOMEGUI_Application.cxx:185 -msgid "SALOMEGUI_Application::PRP_APP_VIEW_TRIHEDRON" -msgstr "Shows \ hides trihedron" - -#: SALOMEGUI_Application.cxx:185 -msgid "SALOMEGUI_Application::PRP_APP_VIEW_BACK" -msgstr "Shows back view of objects" - -#: SALOMEGUI_Application.cxx:209 -msgid "SALOMEGUI_Application::PRP_APP_VIEW_BOTTOM" -msgstr "Shows bottom view of objects" - -#: SALOMEGUI_Application.cxx:101 -msgid "SALOMEGUI_Application::PRP_APP_VIEW_FITALL" -msgstr "Fits all the objects in the view" - -#: SALOMEGUI_Application.cxx:113 -msgid "SALOMEGUI_Application::PRP_APP_VIEW_FITAREA" -msgstr "Fits the view within an area" - -#: SALOMEGUI_Application.cxx:173 -msgid "SALOMEGUI_Application::PRP_APP_VIEW_FRONT" -msgstr "Shows front view of objects" - -#: SALOMEGUI_Application.cxx:161 -msgid "SALOMEGUI_Application::PRP_APP_VIEW_GLOBALPAN" -msgstr "Defines a new center of the view" - -#: SALOMEGUI_Application.cxx:221 -msgid "SALOMEGUI_Application::PRP_APP_VIEW_LEFT" -msgstr "Shows left view of objects" - -#: SALOMEGUI_Application.cxx:89 -msgid "SALOMEGUI_Application::PRP_APP_VIEW_MU4" -msgstr "Splits View" - -#: SALOMEGUI_Application.cxx:137 -msgid "SALOMEGUI_Application::PRP_APP_VIEW_PAN" -msgstr "Moves objects in the view" - -#: SALOMEGUI_Application.cxx:245 -msgid "SALOMEGUI_Application::PRP_APP_VIEW_RESET" -msgstr "Resets the view" - -#: SALOMEGUI_Application.cxx:233 -msgid "SALOMEGUI_Application::PRP_APP_VIEW_RIGHT" -msgstr "Shows right view of objects" - -#: SALOMEGUI_Application.cxx:149 -msgid "SALOMEGUI_Application::PRP_APP_VIEW_ROTATE" -msgstr "Rotates objects in the view" - -#: SALOMEGUI_Application.cxx:197 -msgid "SALOMEGUI_Application::PRP_APP_VIEW_TOP" -msgstr "Shows top view of objects" - -#: SALOMEGUI_Application.cxx:125 -msgid "SALOMEGUI_Application::PRP_APP_VIEW_ZOOM" -msgstr "Zooms the active view" - -#: SALOMEGUI_Application.cxx:125 -msgid "SALOMEGUI_Application::PRP_APP_VIEW_DUMP" -msgstr "Saves the active view in the image file" - -#--------------- -# TOOL TIP -#--------------- - -#: SALOMEGUI_Application.cxx:181 -msgid "SALOMEGUI_Application::TOT_APP_VIEW_BACK" -msgstr "Back view" - -#: SALOMEGUI_Application.cxx:205 -msgid "SALOMEGUI_Application::TOT_APP_VIEW_BOTTOM" -msgstr "Bottom view" - -#: SALOMEGUI_Application.cxx:97 -msgid "SALOMEGUI_Application::TOT_APP_VIEW_FITALL" -msgstr "Fit all" - -#: SALOMEGUI_Application.cxx:109 -msgid "SALOMEGUI_Application::TOT_APP_VIEW_FITAREA" -msgstr "Fit within rectangle" - -#: SALOMEGUI_Application.cxx:169 -msgid "SALOMEGUI_Application::TOT_APP_VIEW_FRONT" -msgstr "Front view" - -#: SALOMEGUI_Application.cxx:157 -msgid "SALOMEGUI_Application::TOT_APP_VIEW_GLOBALPAN" -msgstr "Global panning" - -#: SALOMEGUI_Application.cxx:217 -msgid "SALOMEGUI_Application::TOT_APP_VIEW_LEFT" -msgstr "Left view" - -#: SALOMEGUI_Application.cxx:85 -msgid "SALOMEGUI_Application::TOT_APP_VIEW_MU4" -msgstr "Splits View" - -#: SALOMEGUI_Application.cxx:85 -msgid "SALOMEGUI_Application::TOT_APP_VIEW_TRIHEDRON" -msgstr "Shows \ hides trihedron" - -#: SALOMEGUI_Application.cxx:133 -msgid "SALOMEGUI_Application::TOT_APP_VIEW_PAN" -msgstr "Panning" - -#: SALOMEGUI_Application.cxx:241 -msgid "SALOMEGUI_Application::TOT_APP_VIEW_RESET" -msgstr "Reset" - -#: SALOMEGUI_Application.cxx:229 -msgid "SALOMEGUI_Application::TOT_APP_VIEW_RIGHT" -msgstr "Right view" - -#: SALOMEGUI_Application.cxx:145 -msgid "SALOMEGUI_Application::TOT_APP_VIEW_ROTATE" -msgstr "Rotate view" - -#: SALOMEGUI_Application.cxx:193 -msgid "SALOMEGUI_Application::TOT_APP_VIEW_TOP" -msgstr "Top view" - -#: SALOMEGUI_Application.cxx:121 -msgid "SALOMEGUI_Application::TOT_APP_VIEW_ZOOM" -msgstr "Zoom" - -#: SALOMEGUI_Application.cxx:121 -msgid "SALOMEGUI_Application::TOT_APP_VIEW_DUMP" -msgstr "Camera Dump" - ---------------- - -#: SALOMEGUI_ViewChoiceDlg.cxx:28 -msgid "SALOMEGUI_ViewChoiceDlg::MEN_CHOICE" -msgstr "Choice" - -#: SALOMEGUI_ViewChoiceDlg.cxx:38 -msgid "SALOMEGUI_ViewChoiceDlg::MEN_VIEW" -msgstr "View" - -#: SALOMEGUI_ViewChoiceDlg.cxx:59 -msgid "SALOMEGUI_ViewChoiceDlg::MEN_VIEWER_GRAPH" -msgstr "Graph Supervisor" - -#: SALOMEGUI_ViewChoiceDlg.cxx:57 -msgid "SALOMEGUI_ViewChoiceDlg::MEN_VIEWER_OCC" -msgstr "Open CASCADE Viewer" - -#: SALOMEGUI_ViewChoiceDlg.cxx:53 -msgid "SALOMEGUI_ViewChoiceDlg::MEN_VIEWER_TYPE" -msgstr "Type :" - -#: SALOMEGUI_ViewChoiceDlg.cxx:58 -msgid "SALOMEGUI_ViewChoiceDlg::MEN_VIEWER_VTK" -msgstr "VTK Viewer" - -msgid "SALOMEGUI_ViewChoiceDlg::MEN_VIEWER_PLOT2D" -msgstr "Plot2d Viewer" - -msgid "SALOMEGUI_OpenWith::OPEN_WITH_TLT" -msgstr "Open With" - -msgid "SALOMEGUI_StudyPropertiesDlg::PRP_AUTHOR" -msgstr "Author" - -msgid "SALOMEGUI_StudyPropertiesDlg::PRP_DATE" -msgstr "Created" - -msgid "SALOMEGUI_StudyPropertiesDlg::PRP_MODE" -msgstr "Creation mode" - -msgid "SALOMEGUI_StudyPropertiesDlg::PRP_MODIFIED" -msgstr "Modified" - -msgid "SALOMEGUI_StudyPropertiesDlg::PRP_LOCKED" -msgstr "Locked" - -msgid "SALOMEGUI_TableDlg::VIEW_TABLE_TLT" -msgstr "View Table" - -msgid "SALOMEGUI_TableDlg::EDIT_TABLE_TLT" -msgstr "Edit Table" - -msgid "SALOMEGUI_TableDlg::TABLE_OF_INTEGER_TLT" -msgstr "Table of integer" - -msgid "SALOMEGUI_TableDlg::TABLE_OF_REAL_TLT" -msgstr "Table of real" - -msgid "SALOMEGUI_TableDlg::ERR_TABLE_NOT_AVAILABLE" -msgstr "Table is not available" - -msgid "SALOMEGUI_TableWidget::UNITS_TLT" -msgstr "Units" - -msgid "SALOMEGUI_TableWidget::ADD_ROW_BTN" -msgstr "Add Row" - -msgid "SALOMEGUI_TableWidget::REMOVE_ROW_BTN" -msgstr "Remove Row(s)" - -msgid "SALOMEGUI_TableWidget::ADD_COLUMN_BTN" -msgstr "Add Column" - -msgid "SALOMEGUI_TableWidget::REMOVE_COLUMN_BTN" -msgstr "Remove Column(s)" - -msgid "SALOMEGUI_TableWidget::ADJUST_CELLS_BTN" -msgstr "Adjust Cells" - -msgid "SALOMEGUI_TableWidget::SELECT_ALL_BTN" -msgstr "Select All" - -msgid "SALOMEGUI_TableWidget::CLEAR_BTN" -msgstr "Clear" - -msgid "SALOMEGUI_TableWidget::SET_TITLE_TLT" -msgstr "Set title" - -msgid "SALOMEGUI_TableWidget::TITLE_LBL" -msgstr "Title:" - -msgid "SALOMEGUI_NameDlg::TLT_RENAME" -msgstr "Rename" - -msgid "SALOMEGUI_NameDlg::NAME_LBL" -msgstr "Name:" - -msgid "TLT_SETVALUE" -msgstr "Set Value" - -msgid "VALUE_LBL" -msgstr "Value:" - -msgid "TLT_SETUP_PLOT2D" -msgstr "Setup Plot 2d" - -msgid "AUTO_CHECK_LBL" -msgstr "Auto assign" - -msgid "NONE_LINE_LBL" -msgstr "None" - -msgid "SOLID_LINE_LBL" -msgstr "Solid" - -msgid "DASH_LINE_LBL" -msgstr "Dash" - -msgid "DOT_LINE_LBL" -msgstr "Dot" - -msgid "DASHDOT_LINE_LBL" -msgstr "DashDot" - -msgid "DAHSDOTDOT_LINE_LBL" -msgstr "DashDotDot" - -msgid "NONE_MARKER_LBL" -msgstr "None" - -msgid "CIRCLE_MARKER_LBL" -msgstr "Circle" - -msgid "RECTANGLE_MARKER_LBL" -msgstr "Rectangle" - -msgid "DIAMOND_MARKER_LBL" -msgstr "Diamond" - -msgid "DTRIANGLE_MARKER_LBL" -msgstr "Downward triangle" - -msgid "UTRIANGLE_MARKER_LBL" -msgstr "Upward triangle" - -msgid "LTRIANGLE_MARKER_LBL" -msgstr "Leftward triangle" - -msgid "RTRIANGLE_MARKER_LBL" -msgstr "Rightward triangle" - -msgid "CROSS_MARKER_LBL" -msgstr "Cross" - -msgid "XCROSS_MARKER_LBL" -msgstr "Diagonal cross" - -msgid "AXIS_LBL" -msgstr "Axis" - -msgid "DATA_LBL" -msgstr "Data" - -msgid "UNITS_LBL" -msgstr "Units" - -msgid "ATTRIBUTES_LBL" -msgstr "Attributes" - -msgid "QUE_WANT_SAME_UNITS" -msgstr "Do you want to choose all items with the same units for vertical axis?" - -msgid "PLOT_2D_TLT" -msgstr "Plot 2D" - -msgid "TLT_SETUP_PLOT2D_VIEW" -msgstr "Plot 2d View Settings" - -msgid "PLOT2D_ENABLE_MAIN_TITLE" -msgstr "Main title" - -msgid "PLOT2D_ENABLE_HOR_TITLE" -msgstr "Horizontal axis title" - -msgid "PLOT2D_ENABLE_VER_TITLE" -msgstr "Vertical axis title" - -msgid "PLOT2D_CURVE_TYPE_LBL" -msgstr "Curve type:" - -msgid "PLOT2D_CURVE_TYPE_POINTS" -msgstr "Points" - -msgid "PLOT2D_CURVE_TYPE_LINES" -msgstr "Lines" - -msgid "PLOT2D_CURVE_TYPE_SPLINE" -msgstr "Spline" - -msgid "PLOT2D_ENABLE_LEGEND" -msgstr "Show legend" - -msgid "PLOT2D_LEGEND_POSITION_LEFT" -msgstr "Left" - -msgid "PLOT2D_LEGEND_POSITION_RIGHT" -msgstr "Right" - -msgid "PLOT2D_LEGEND_POSITION_TOP" -msgstr "Top" - -msgid "PLOT2D_LEGEND_POSITION_BOTTOM" -msgstr "Bottom" - -msgid "PLOT2D_MARKER_SIZE_LBL" -msgstr "Marker size:" - -msgid "PLOT2D_BACKGROUND_COLOR_LBL" -msgstr "Background color:" - -msgid "PLOT2D_SCALE_TLT" -msgstr "Scale mode" - -msgid "PLOT2D_SCALE_MODE_HOR" -msgstr "Horizontal axis:" - -msgid "PLOT2D_SCALE_MODE_VER" -msgstr "Vertical axis:" - -msgid "PLOT2D_SCALE_MODE_LINEAR" -msgstr "Linear" - -msgid "PLOT2D_SCALE_MODE_LOGARITHMIC" -msgstr "Logarithmic" - -msgid "PLOT2D_GRID_TLT" -msgstr "Grid / Axes marks" - -msgid "PLOT2D_GRID_ENABLE_HOR_MAJOR" -msgstr "Horizontal major" - -msgid "PLOT2D_GRID_ENABLE_VER_MAJOR" -msgstr "Vertical major" - -msgid "PLOT2D_GRID_ENABLE_HOR_MINOR" -msgstr "Horizontal minor" - -msgid "PLOT2D_GRID_ENABLE_VER_MINOR" -msgstr "Vertical minor" - -msgid "PLOT2D_SET_AS_DEFAULT_CHECK" -msgstr "Save settings as default" - -msgid "TOT_PLOT2D_FIT_ALL" -msgstr "Fit All" -msgid "MEN_PLOT2D_FIT_ALL" -msgstr "&Fit All" -msgid "PRP_PLOT2D_FIT_ALL" -msgstr "Fits view to show all curves" -msgid "TOT_PLOT2D_FIT_AREA" -msgstr "Fit Area" -msgid "MEN_PLOT2D_FIT_AREA" -msgstr "Fit &Area" -msgid "PRP_PLOT2D_FIT_AREA" -msgstr "Fits the view within an area" -msgid "TOT_PLOT2D_ZOOM" -msgstr "Zoom" -msgid "MEN_PLOT2D_ZOOM" -msgstr "&Zoom view" -msgid "PRP_PLOT2D_ZOOM" -msgstr "Zooms the view" -msgid "TOT_PLOT2D_PAN" -msgstr "Panning" -msgid "MEN_PLOT2D_PAN" -msgstr "&Pan view" -msgid "PRP_PLOT2D_PAN" -msgstr "Moves curves in the view" -msgid "TOT_PLOT2D_DUMP" -msgstr "Camera Dump" -msgid "MEN_PLOT2D_DUMP" -msgstr "Camera &Dump" -msgid "PRP_PLOT2D_DUMP" -msgstr "Saves view contents in the image file" -msgid "SCALING_POPUP" -msgstr "Scaling" -msgid "TOT_PLOT2D_MODE_LINEAR_HOR" -msgstr "Horizontal axis: linear" -msgid "MEN_PLOT2D_MODE_LINEAR_HOR" -msgstr "Horizontal axis: linear" -msgid "PRP_PLOT2D_MODE_LINEAR_HOR" -msgstr "Switches view to linear scaling mode along horizontal axis" -msgid "TOT_PLOT2D_MODE_LOGARITHMIC_HOR" -msgstr "Horizontal axis: logarithmic" -msgid "MEN_PLOT2D_MODE_LOGARITHMIC_HOR" -msgstr "Horizontal axis: logarithmic" -msgid "PRP_PLOT2D_MODE_LOGARITHMIC_HOR" -msgstr "Switches view to logarithmic scaling mode along horizontal axis" -msgid "TOT_PLOT2D_MODE_LINEAR_VER" -msgstr "Vertical axis: linear" -msgid "MEN_PLOT2D_MODE_LINEAR_VER" -msgstr "Vertical axis: linear" -msgid "PRP_PLOT2D_MODE_LINEAR_VER" -msgstr "Switches view to linear scaling mode along vertical axis" -msgid "TOT_PLOT2D_MODE_LOGARITHMIC_VER" -msgstr "Vertical axis: logarithmic" -msgid "MEN_PLOT2D_MODE_LOGARITHMIC_VER" -msgstr "Vertical axis: logarithmic" -msgid "PRP_PLOT2D_MODE_LOGARITHMIC_VER" -msgstr "Switches view to logarithmic scaling mode along vertical axis" -msgid "TOT_PLOT2D_SHOW_LEGEND" -msgstr "Show Legend" -msgid "MEN_PLOT2D_SHOW_LEGEND" -msgstr "Show &Legend" -msgid "PRP_PLOT2D_SHOW_LEGEND" -msgstr "Enables/disables legend" -msgid "CURVE_TYPE_POPUP" -msgstr "Curve type" -msgid "TOT_PLOT2D_CURVES_POINTS" -msgstr "Draw points" -msgid "MEN_PLOT2D_CURVES_POINTS" -msgstr "Draw points" -msgid "PRP_PLOT2D_CURVES_POINTS" -msgstr "Switches view to points mode" -msgid "TOT_PLOT2D_CURVES_LINES" -msgstr "Draw lines" -msgid "MEN_PLOT2D_CURVES_LINES" -msgstr "Draw lines" -msgid "PRP_PLOT2D_CURVES_LINES" -msgstr "Switches view to lines mode" -msgid "TOT_PLOT2D_CURVES_SPLINES" -msgstr "Draw splines" -msgid "MEN_PLOT2D_CURVES_SPLINES" -msgstr "Draw splines" -msgid "PRP_PLOT2D_CURVES_SPLINES" -msgstr "Switches view to splines mode" -msgid "TOT_PLOT2D_SETTINGS" -msgstr "Settings" -msgid "MEN_PLOT2D_SETTINGS" -msgstr "&Settings" -msgid "PRP_PLOT2D_SETTINGS" -msgstr "Setups view properties" -msgid "TOT_PLOT2D_CHANGE_BACKGROUND" -msgstr "Change background" -msgid "MEN_PLOT2D_CHANGE_BACKGROUND" -msgstr "Change background..." -msgid "PRP_PLOT2D_CHANGE_BACKGROUND" -msgstr "Change background color" - -msgid "INF_COORDINATES" -msgstr "Coordinates: X : %1, Y : %2" - -msgid "SALOMEGUI_SetupCurveDlg::TLT_SETUP_CURVE" -msgstr "Setup Curve" -msgid "SALOMEGUI_SetupCurveDlg::CURVE_LINE_TYPE_LAB" -msgstr "Line type:" -msgid "SALOMEGUI_SetupCurveDlg::CURVE_LINE_WIDTH_LAB" -msgstr "Line width:" -msgid "SALOMEGUI_SetupCurveDlg::CURVE_MARKER_TYPE_LAB" -msgstr "Marker type:" -msgid "SALOMEGUI_SetupCurveDlg::CURVE_COLOR_LAB" -msgstr "Color:" -msgid "SALOMEGUI_CloseDlg::CAPTION" -msgstr "Close active study" - -msgid "SALOMEGUI_CloseDlg::SAVE_CLOSE" -msgstr "&Save&&Close" - -msgid "SALOMEGUI_CloseDlg::CLOSE" -msgstr "C&lose w/o saving" - -msgid "SALOMEGUI_CloseDlg::UNLOAD" -msgstr "&Unload" - -msgid "SALOMEGUI_CloseDlg::CANCEL" -msgstr "&Cancel" - -msgid "SALOMEGUI_CloseDlg::CLOSE_DESCRIPTION" -msgstr "Do you want to close or only unload the study ?" - -msgid "SALOMEGUI_ActivateComponentDlg::CAPTION" -msgstr "Activate module" - -msgid "SALOMEGUI_ActivateComponentDlg::NEW" -msgstr "&New" - -msgid "SALOMEGUI_ActivateComponentDlg::OPEN" -msgstr "&Open" - -msgid "SALOMEGUI_ActivateComponentDlg::LOAD" -msgstr "&Load" - -msgid "SALOMEGUI_ActivateComponentDlg::CANCEL" -msgstr "&Cancel" - -msgid "SALOMEGUI_ActivateComponentDlg::ActivateComponent_DESCRIPTION" -msgstr "Create, open or load study." - -msgid "SALOMEGUI_HELP_TITLE" -msgstr "SALOME Help" - -msgid "TOT_PLOT2D_FITDATA" -msgstr "Fit range" -msgid "MEN_PLOT2D_FITDATA" -msgstr "Fit &Range" -msgid "PRP_PLOT2D_FITDATA" -msgstr "Fits view to the given data range" - -msgid "FIT_DATA_TLT" -msgstr "Fit Data Range" - -msgid "Plot2d_FitDataDlg::FIT_ALL" -msgstr "Fit both" - -msgid "Plot2d_FitDataDlg::FIT_HORIZONTAL" -msgstr "Fit horizontally" - -msgid "Plot2d_FitDataDlg::FIT_VERTICAL" -msgstr "Fit vertically" - -msgid "Plot2d_FitDataDlg::HORIZONTAL_AXIS" -msgstr "Horizontal axis" - -msgid "Plot2d_FitDataDlg::VERTICAL_AXIS" -msgstr "Vertical axis" - -msgid "Plot2d_FitDataDlg::MIN_VALUE_LAB" -msgstr "Min:" - -msgid "Plot2d_FitDataDlg::MAX_VALUE_LAB" -msgstr "Max:" diff --git a/src/SALOMEGUI/SALOMEGUI_msg_fr.po b/src/SALOMEGUI/SALOMEGUI_msg_fr.po deleted file mode 100644 index 6ffd95262..000000000 --- a/src/SALOMEGUI/SALOMEGUI_msg_fr.po +++ /dev/null @@ -1,322 +0,0 @@ -# SALOME SALOMEGUI : implementation of desktop and GUI kernel -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : SALOMEGUI_msg_fr.po -# Module : SALOME - -msgid "" -msgstr "" -"Project-Id-Version: example-Qt-message-extraction\n" -"POT-Creation-Date: 1999-02-23 15:38+0200\n" -"PO-Revision-Date: 1999-02-23 15:38+0200\n" -"Last-Translator: \n" -"Content-Type: text/plain; charset=iso-8859-1\n" - -#--------------- -# BUTTONS -#--------------- - -msgid "BUT_OK" -msgstr "Ok" - -msgid "BUT_HELP" -msgstr "Aide" - -msgid "BUT_CANCEL" -msgstr "Annule" - -#--------------- -# ERROR -#--------------- - -#: SALOMEGUI.cxx:45 -msgid "QObject::ERR_APP_INITFAILED" -msgstr "Echec d'Initialisation" - -#: SALOMEGUI.cxx:44 -msgid "ERR_ERROR" -msgstr "Erreur" - -#: SALOMEGUI_Application.cxx:672 -msgid "ERR_APP_WRONG_VIEW_TYPE" -msgstr "La vue appropriée doit étre créée pour afficher l'objet choisi" - -#--------------- -# INFORMATIONS -#--------------- - -msgid "INF_VERSION" -msgstr "" - -msgid "INF_COPYRIGHT" -msgstr "" - -msgid "INF_LICENSE" -msgstr "" - - -#--------------- -# MENUS -#--------------- - -#: SALOMEGUI_TrihedronSizeDlg.cxx:77 -msgid "SALOMEGUI_TrihedronSizeDlg::MEN_TRIHEDRON_SIZE" -msgstr "Size (% of bounding box) :" - -#: SALOMEGUI_TrihedronSizeDlg.cxx:36 -msgid "SALOMEGUI_TrihedronSizeDlg::MEN_TRIHEDRON" -msgstr "Trihedron" - -#: SALOMEGUI_OpenWith.cxx:37 -msgid "SALOMEGUI_OpenWith::MEN_COMPONENT_CHOICE1" -msgstr "Always use this component to open this type of object" - -#: SALOMEGUI_OpenWith.cxx:65 -msgid "SALOMEGUI_OpenWith::MEN_COMPONENT_CHOICE2" -msgstr "Choose the component you want to use :" - -#: SALOMEGUI_OpenWith.cxx:33 -msgid "SALOMEGUI_OpenWith::MEN_COMPONENT_CHOICE3" -msgstr "Choose the component you want to use to open objects :" - -#: SALOMEGUI_LoadStudiesDlg.cxx:27 -msgid "SALOMEGUI_LoadStudiesDlg::MEN_STUDIES_CHOICE" -msgstr "Choose existing study." - -#: SALOMEGUI_Application.cxx:87 -msgid "SALOMEGUI_Application::MEN_APP_VIEW_MU4" -msgstr "Multiple Vue" - -#: SALOMEGUI_Application.cxx:135 -msgid "SALOMEGUI_Application::MEN_APP_VIEW_PAN" -msgstr "&Pan Vue\tCtrl+MB2" - -#: SALOMEGUI_Application.cxx:243 -msgid "SALOMEGUI_Application::MEN_APP_VIEW_RESET" -msgstr "R&estaure la Vue" - -#: SALOMEGUI_Application.cxx:231 -msgid "SALOMEGUI_Application::MEN_APP_VIEW_RIGHT" -msgstr "Vue D&roite" - -#: SALOMEGUI_Application.cxx:147 -msgid "SALOMEGUI_Application::MEN_APP_VIEW_ROTATE" -msgstr "R&otation Vue\tCtrl+MB3" - -#: SALOMEGUI_Application.cxx:195 -msgid "SALOMEGUI_Application::MEN_APP_VIEW_TOP" -msgstr "&Top Vue" - -#: SALOMEGUI_Application.cxx:75 -msgid "SALOMEGUI_Application::MEN_APP_VIEW_TRIHEDRON" -msgstr "Afficher - Masquer OXYZ" - -#: SALOMEGUI_Application.cxx:123 -msgid "SALOMEGUI_Application::MEN_APP_VIEW_ZOOM" -msgstr "&Zoom \tCtrl+MB1" - -msgid "SALOMEGUI_Application::MEN_APP_VIEW_FITALL" -msgstr "&Fit All" - -msgid "SALOMEGUI_Application::MEN_APP_VIEW_FITAREA" -msgstr "Fit &Area" - -msgid "SALOMEGUI_Application::MEN_APP_VIEW_FRONT" -msgstr "&Premier Plan" - -msgid "SALOMEGUI_Application::MEN_APP_VIEW_GLOBALPAN" -msgstr "&Global Pan Vue" - -msgid "SALOMEGUI_Application::MEN_APP_VIEW_BACK" -msgstr "Arrière plan" - -msgid "SALOMEGUI_Application::MEN_APP_VIEW_BOTTOM" -msgstr "&Vue du dessous" - -msgid "SALOMEGUI_Application::MEN_APP_VIEW_LEFT" -msgstr "&Vue gauche" - -#--------------- -# PRP -#--------------- - -#: SALOMEGUI_Application.cxx:185 -msgid "SALOMEGUI_Application::PRP_APP_VIEW_TRIHEDRON" -msgstr "Afficher \ masquer OXYZ" - -#: SALOMEGUI_Application.cxx:185 -msgid "SALOMEGUI_Application::PRP_APP_VIEW_BACK" -msgstr "Affiche la vue arrière des objets" - -#: SALOMEGUI_Application.cxx:209 -msgid "SALOMEGUI_Application::PRP_APP_VIEW_BOTTOM" -msgstr "Affiche la vue du dessous des objets" - -#: SALOMEGUI_Application.cxx:101 -msgid "SALOMEGUI_Application::PRP_APP_VIEW_FITALL" -msgstr "Fits all the objects in the view" - -#: SALOMEGUI_Application.cxx:113 -msgid "SALOMEGUI_Application::PRP_APP_VIEW_FITAREA" -msgstr "Fits the view within an area" - -#: SALOMEGUI_Application.cxx:173 -msgid "SALOMEGUI_Application::PRP_APP_VIEW_FRONT" -msgstr "Affiche la vue de face des objets" - -#: SALOMEGUI_Application.cxx:161 -msgid "SALOMEGUI_Application::PRP_APP_VIEW_GLOBALPAN" -msgstr "Définir le centre de la vue" - -#: SALOMEGUI_Application.cxx:221 -msgid "SALOMEGUI_Application::PRP_APP_VIEW_LEFT" -msgstr "Affiche la vue gauche des objets" - -#: SALOMEGUI_Application.cxx:89 -msgid "SALOMEGUI_Application::PRP_APP_VIEW_MU4" -msgstr "Fractionner la vue" - -#: SALOMEGUI_Application.cxx:137 -msgid "SALOMEGUI_Application::PRP_APP_VIEW_PAN" -msgstr "Déplacer les objets" - -#: SALOMEGUI_Application.cxx:245 -msgid "SALOMEGUI_Application::PRP_APP_VIEW_RESET" -msgstr "Restaure la vue" - -#: SALOMEGUI_Application.cxx:233 -msgid "SALOMEGUI_Application::PRP_APP_VIEW_RIGHT" -msgstr "Affiche la vue droite des objets" - -#: SALOMEGUI_Application.cxx:149 -msgid "SALOMEGUI_Application::PRP_APP_VIEW_ROTATE" -msgstr "Rotation des objets" - -#: SALOMEGUI_Application.cxx:197 -msgid "SALOMEGUI_Application::PRP_APP_VIEW_TOP" -msgstr "Affiche la vue supérieure des objets" - -#: SALOMEGUI_Application.cxx:125 -msgid "SALOMEGUI_Application::PRP_APP_VIEW_ZOOM" -msgstr "Zoom la vue active" - -#--------------- -# TOOL TIP -#--------------- - -#: SALOMEGUI_Application.cxx:181 -msgid "SALOMEGUI_Application::TOT_APP_VIEW_BACK" -msgstr "Arrière plan" - -#: SALOMEGUI_Application.cxx:205 -msgid "SALOMEGUI_Application::TOT_APP_VIEW_BOTTOM" -msgstr "Vue du dessous" - -#: SALOMEGUI_Application.cxx:97 -msgid "SALOMEGUI_Application::TOT_APP_VIEW_FITALL" -msgstr "Fit all" - -#: SALOMEGUI_Application.cxx:109 -msgid "SALOMEGUI_Application::TOT_APP_VIEW_FITAREA" -msgstr "Fit within rectangle" - -#: SALOMEGUI_Application.cxx:169 -msgid "SALOMEGUI_Application::TOT_APP_VIEW_FRONT" -msgstr "Premier plan" - -#: SALOMEGUI_Application.cxx:157 -msgid "SALOMEGUI_Application::TOT_APP_VIEW_GLOBALPAN" -msgstr "Global panning" - -#: SALOMEGUI_Application.cxx:217 -msgid "SALOMEGUI_Application::TOT_APP_VIEW_LEFT" -msgstr "Vue gauche" - -#: SALOMEGUI_Application.cxx:85 -msgid "SALOMEGUI_Application::TOT_APP_VIEW_MU4" -msgstr "Fractionner la vue" - -#: SALOMEGUI_Application.cxx:85 -msgid "SALOMEGUI_Application::TOT_APP_VIEW_TRIHEDRON" -msgstr "Afficher \ masquer trihedron" - -#: SALOMEGUI_Application.cxx:133 -msgid "SALOMEGUI_Application::TOT_APP_VIEW_PAN" -msgstr "Panning" - -#: SALOMEGUI_Application.cxx:241 -msgid "SALOMEGUI_Application::TOT_APP_VIEW_RESET" -msgstr "Restaure" - -#: SALOMEGUI_Application.cxx:229 -msgid "SALOMEGUI_Application::TOT_APP_VIEW_RIGHT" -msgstr "Vue droite" - -#: SALOMEGUI_Application.cxx:145 -msgid "SALOMEGUI_Application::TOT_APP_VIEW_ROTATE" -msgstr "Vue de la rotation" - -#: SALOMEGUI_Application.cxx:193 -msgid "SALOMEGUI_Application::TOT_APP_VIEW_TOP" -msgstr "Top view" - -#: SALOMEGUI_Application.cxx:121 -msgid "SALOMEGUI_Application::TOT_APP_VIEW_ZOOM" -msgstr "Zoom" - -#: SALOMEGUI_Application.cxx:121 -msgid "SALOMEGUI_Application::TOT_APP_VIEW_DUMP" -msgstr "Capture du Viewer" - ---------------- - -#: SALOMEGUI_ViewChoiceDlg.cxx:28 -msgid "SALOMEGUI_ViewChoiceDlg::MEN_CHOICE" -msgstr "Choix" - -#: SALOMEGUI_ViewChoiceDlg.cxx:38 -msgid "SALOMEGUI_ViewChoiceDlg::MEN_VIEW" -msgstr "Vue" - -#: SALOMEGUI_ViewChoiceDlg.cxx:59 -msgid "SALOMEGUI_ViewChoiceDlg::MEN_VIEWER_GRAPH" -msgstr "Graphe Supervision" - -#: SALOMEGUI_ViewChoiceDlg.cxx:57 -msgid "SALOMEGUI_ViewChoiceDlg::MEN_VIEWER_OCC" -msgstr "Open CASCADE Viewer" - -#: SALOMEGUI_ViewChoiceDlg.cxx:53 -msgid "SALOMEGUI_ViewChoiceDlg::MEN_VIEWER_TYPE" -msgstr "Type :" - -#: SALOMEGUI_ViewChoiceDlg.cxx:58 -msgid "SALOMEGUI_ViewChoiceDlg::MEN_VIEWER_VTK" -msgstr "VTK Viewer" - -#: SALOMEGUI_AboutDlg.cxx:42 -msgid "ABOUT_SALOME_TLT" -msgstr "About SALOME Professional" - -msgid "SALOMEGUI_OpenWith::OPEN_WITH_TLT" -msgstr "Open With" diff --git a/src/SALOMEGUI/SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger.hxx b/src/SALOMEGUI/SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger.hxx deleted file mode 100644 index 760c94eb3..000000000 --- a/src/SALOMEGUI/SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger.hxx +++ /dev/null @@ -1,116 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger.hxx -// Module : SALOME - -#ifndef _SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger_HeaderFile -#define _SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger_HeaderFile - -#ifndef _TCollection_BasicMapIterator_HeaderFile -#include -#endif -#ifndef _Handle_SALOME_InteractiveObject_HeaderFile -#include -#endif -#ifndef _Handle_SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_HeaderFile -#include -#endif -class Standard_NoSuchObject; -class SALOME_InteractiveObject; -class TColStd_IndexedMapOfInteger; -class TColStd_MapTransientHasher; -class SALOME_DataMapOfIOMapOfInteger; -class SALOME_DataMapNodeOfDataMapOfIOMapOfInteger; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger : public TCollection_BasicMapIterator { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } -// inline void operator delete(void *anAddress, size_t size) -// { -// if (anAddress) Standard::Free((Standard_Address&)anAddress,size); -// } - // Methods PUBLIC - // -Standard_EXPORT SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger(); -Standard_EXPORT SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger(const SALOME_DataMapOfIOMapOfInteger& aMap); -Standard_EXPORT void Initialize(const SALOME_DataMapOfIOMapOfInteger& aMap) ; -Standard_EXPORT const Handle_SALOME_InteractiveObject& Key() const; -Standard_EXPORT const TColStd_IndexedMapOfInteger& Value() const; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/SALOMEGUI/SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger_0.cxx b/src/SALOMEGUI/SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger_0.cxx deleted file mode 100644 index 8d0897844..000000000 --- a/src/SALOMEGUI/SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger_0.cxx +++ /dev/null @@ -1,65 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger_0.cxx -// Module : SALOME - -#include "SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger.hxx" - -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _SALOME_InteractiveObject_HeaderFile -#include "SALOME_InteractiveObject.hxx" -#endif -#ifndef _TColStd_IndexedMapOfInteger_HeaderFile -#include -#endif -#ifndef _TColStd_MapTransientHasher_HeaderFile -#include -#endif -#ifndef _SALOME_DataMapOfIOMapOfInteger_HeaderFile -#include "SALOME_DataMapOfIOMapOfInteger.hxx" -#endif -#ifndef _SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_HeaderFile -#include "SALOME_DataMapNodeOfDataMapOfIOMapOfInteger.hxx" -#endif -using namespace std; - - -#define TheKey Handle_SALOME_InteractiveObject -#define TheKey_hxx "SALOME_InteractiveObject.hxx" -#define TheItem TColStd_IndexedMapOfInteger -#define TheItem_hxx -#define Hasher TColStd_MapTransientHasher -#define Hasher_hxx -#define TCollection_DataMapNode SALOME_DataMapNodeOfDataMapOfIOMapOfInteger -#define TCollection_DataMapNode_hxx "SALOME_DataMapNodeOfDataMapOfIOMapOfInteger.hxx" -#define TCollection_DataMapIterator SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger -#define TCollection_DataMapIterator_hxx "SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger.hxx" -#define Handle_TCollection_DataMapNode Handle_SALOME_DataMapNodeOfDataMapOfIOMapOfInteger -#define TCollection_DataMapNode_Type_() SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_Type_() -#define TCollection_DataMap SALOME_DataMapOfIOMapOfInteger -#define TCollection_DataMap_hxx "SALOME_DataMapOfIOMapOfInteger.hxx" -#include - diff --git a/src/SALOMEGUI/SALOME_DataMapNodeOfDataMapOfIOMapOfInteger.hxx b/src/SALOMEGUI/SALOME_DataMapNodeOfDataMapOfIOMapOfInteger.hxx deleted file mode 100644 index cbfa39192..000000000 --- a/src/SALOMEGUI/SALOME_DataMapNodeOfDataMapOfIOMapOfInteger.hxx +++ /dev/null @@ -1,153 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_DataMapNodeOfDataMapOfIOMapOfInteger.hxx -// Module : SALOME - -#ifndef _SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_HeaderFile -#define _SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_HeaderFile -#include -#endif - -#ifndef _Handle_SALOME_InteractiveObject_HeaderFile -#include -#endif -#ifndef _TColStd_IndexedMapOfInteger_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -class SALOME_InteractiveObject; -class TColStd_IndexedMapOfInteger; -class TColStd_MapTransientHasher; -class SALOME_DataMapOfIOMapOfInteger; -class SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger; - - -class SALOME_DataMapNodeOfDataMapOfIOMapOfInteger : public TCollection_MapNode { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } -// inline void operator delete(void *anAddress, size_t size) -// { -// if (anAddress) Standard::Free((Standard_Address&)anAddress,size); -// } - // Methods PUBLIC - // -Standard_EXPORT inline SALOME_DataMapNodeOfDataMapOfIOMapOfInteger(const Handle(SALOME_InteractiveObject)& K,const TColStd_IndexedMapOfInteger& I,const TCollection_MapNodePtr& n); -Standard_EXPORT inline Handle_SALOME_InteractiveObject& Key() const; -Standard_EXPORT inline TColStd_IndexedMapOfInteger& Value() const; -Standard_EXPORT ~SALOME_DataMapNodeOfDataMapOfIOMapOfInteger(); - - - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -Handle_SALOME_InteractiveObject myKey; -TColStd_IndexedMapOfInteger myValue; - - -}; - -#define TheKey Handle_SALOME_InteractiveObject -#define TheKey_hxx "SALOME_InteractiveObject.hxx" -#define TheItem TColStd_IndexedMapOfInteger -#define TheItem_hxx -#define Hasher TColStd_MapTransientHasher -#define Hasher_hxx -#define TCollection_DataMapNode SALOME_DataMapNodeOfDataMapOfIOMapOfInteger -#define TCollection_DataMapNode_hxx "SALOME_DataMapNodeOfDataMapOfIOMapOfInteger.hxx" -#define TCollection_DataMapIterator SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger -#define TCollection_DataMapIterator_hxx "SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger.hxx" -#define Handle_TCollection_DataMapNode Handle_SALOME_DataMapNodeOfDataMapOfIOMapOfInteger -#define TCollection_DataMapNode_Type_() SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_Type_() -#define TCollection_DataMap SALOME_DataMapOfIOMapOfInteger -#define TCollection_DataMap_hxx "SALOME_DataMapOfIOMapOfInteger.hxx" - -#include - -#undef TheKey -#undef TheKey_hxx -#undef TheItem -#undef TheItem_hxx -#undef Hasher -#undef Hasher_hxx -#undef TCollection_DataMapNode -#undef TCollection_DataMapNode_hxx -#undef TCollection_DataMapIterator -#undef TCollection_DataMapIterator_hxx -#undef Handle_TCollection_DataMapNode -#undef TCollection_DataMapNode_Type_ -#undef TCollection_DataMap -#undef TCollection_DataMap_hxx - - -// other inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/SALOMEGUI/SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_0.cxx b/src/SALOMEGUI/SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_0.cxx deleted file mode 100644 index 4cab4c88e..000000000 --- a/src/SALOMEGUI/SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_0.cxx +++ /dev/null @@ -1,114 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_0.cxx -// Module : SALOME - -#include "SALOME_DataMapNodeOfDataMapOfIOMapOfInteger.hxx" - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _SALOME_InteractiveObject_HeaderFile -#include "SALOME_InteractiveObject.hxx" -#endif -#ifndef _TColStd_IndexedMapOfInteger_HeaderFile -#include -#endif -#ifndef _TColStd_MapTransientHasher_HeaderFile -#include -#endif -#ifndef _SALOME_DataMapOfIOMapOfInteger_HeaderFile -#include "SALOME_DataMapOfIOMapOfInteger.hxx" -#endif -#ifndef _SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger_HeaderFile -#include "SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger.hxx" -#endif -using namespace std; -SALOME_DataMapNodeOfDataMapOfIOMapOfInteger::~SALOME_DataMapNodeOfDataMapOfIOMapOfInteger() {} - - - -Standard_EXPORT Handle_Standard_Type& SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("SALOME_DataMapNodeOfDataMapOfIOMapOfInteger", - sizeof(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger) Handle(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger))) { - _anOtherObject = Handle(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger)((Handle(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& SALOME_DataMapNodeOfDataMapOfIOMapOfInteger::DynamicType() const -{ - return STANDARD_TYPE(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger) ; -} -Standard_Boolean SALOME_DataMapNodeOfDataMapOfIOMapOfInteger::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger) == AType || TCollection_MapNode::IsKind(AType)); -} -Handle_SALOME_DataMapNodeOfDataMapOfIOMapOfInteger::~Handle_SALOME_DataMapNodeOfDataMapOfIOMapOfInteger() {} -#define TheKey Handle_SALOME_InteractiveObject -#define TheKey_hxx "SALOME_InteractiveObject.hxx" -#define TheItem TColStd_IndexedMapOfInteger -#define TheItem_hxx -#define Hasher TColStd_MapTransientHasher -#define Hasher_hxx -#define TCollection_DataMapNode SALOME_DataMapNodeOfDataMapOfIOMapOfInteger -#define TCollection_DataMapNode_hxx "SALOME_DataMapNodeOfDataMapOfIOMapOfInteger.hxx" -#define TCollection_DataMapIterator SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger -#define TCollection_DataMapIterator_hxx "SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger.hxx" -#define Handle_TCollection_DataMapNode Handle_SALOME_DataMapNodeOfDataMapOfIOMapOfInteger -#define TCollection_DataMapNode_Type_() SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_Type_() -#define TCollection_DataMap SALOME_DataMapOfIOMapOfInteger -#define TCollection_DataMap_hxx "SALOME_DataMapOfIOMapOfInteger.hxx" -#include - diff --git a/src/SALOMEGUI/SALOME_DataMapOfIOMapOfInteger.hxx b/src/SALOMEGUI/SALOME_DataMapOfIOMapOfInteger.hxx deleted file mode 100644 index 0478b82a1..000000000 --- a/src/SALOMEGUI/SALOME_DataMapOfIOMapOfInteger.hxx +++ /dev/null @@ -1,148 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_DataMapOfIOMapOfInteger.hxx -// Module : SALOME - -#ifndef _SALOME_DataMapOfIOMapOfInteger_HeaderFile -#define _SALOME_DataMapOfIOMapOfInteger_HeaderFile - -#ifndef _TCollection_BasicMap_HeaderFile -#include -#endif -#ifndef _Handle_SALOME_InteractiveObject_HeaderFile -#include -#endif -#ifndef _Handle_SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_DomainError; -class Standard_NoSuchObject; -class SALOME_InteractiveObject; -class TColStd_IndexedMapOfInteger; -class TColStd_MapTransientHasher; -class SALOME_DataMapNodeOfDataMapOfIOMapOfInteger; -class SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class SALOME_DataMapOfIOMapOfInteger : public TCollection_BasicMap { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } -// inline void operator delete(void *anAddress, size_t size) -// { -// if (anAddress) Standard::Free((Standard_Address&)anAddress,size); -// } - // Methods PUBLIC - // -Standard_EXPORT SALOME_DataMapOfIOMapOfInteger(const Standard_Integer NbBuckets = 1); -Standard_EXPORT SALOME_DataMapOfIOMapOfInteger& Assign(const SALOME_DataMapOfIOMapOfInteger& Other) ; - SALOME_DataMapOfIOMapOfInteger& operator =(const SALOME_DataMapOfIOMapOfInteger& Other) -{ - return Assign(Other); -} - -Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; -Standard_EXPORT void Clear() ; -~SALOME_DataMapOfIOMapOfInteger() -{ - Clear(); -} - -Standard_EXPORT Standard_Boolean Bind(const Handle(SALOME_InteractiveObject)& K,const TColStd_IndexedMapOfInteger& I) ; -Standard_EXPORT Standard_Boolean IsBound(const Handle(SALOME_InteractiveObject)& K) const; -Standard_EXPORT Standard_Boolean UnBind(const Handle(SALOME_InteractiveObject)& K) ; -Standard_EXPORT const TColStd_IndexedMapOfInteger& Find(const Handle(SALOME_InteractiveObject)& K) const; - const TColStd_IndexedMapOfInteger& operator()(const Handle(SALOME_InteractiveObject)& K) const -{ - return Find(K); -} - -Standard_EXPORT TColStd_IndexedMapOfInteger& ChangeFind(const Handle(SALOME_InteractiveObject)& K) ; - TColStd_IndexedMapOfInteger& operator()(const Handle(SALOME_InteractiveObject)& K) -{ - return ChangeFind(K); -} - - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // -Standard_EXPORT SALOME_DataMapOfIOMapOfInteger(const SALOME_DataMapOfIOMapOfInteger& Other); - - - // Fields PRIVATE - // - - -}; - - - - - -// other inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/SALOMEGUI/SALOME_DataMapOfIOMapOfInteger_0.cxx b/src/SALOMEGUI/SALOME_DataMapOfIOMapOfInteger_0.cxx deleted file mode 100644 index 7ce912510..000000000 --- a/src/SALOMEGUI/SALOME_DataMapOfIOMapOfInteger_0.cxx +++ /dev/null @@ -1,68 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_DataMapOfIOMapOfInteger_0.cxx -// Module : SALOME - -#include "SALOME_DataMapOfIOMapOfInteger.hxx" - -#ifndef _Standard_DomainError_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _SALOME_InteractiveObject_HeaderFile -#include "SALOME_InteractiveObject.hxx" -#endif -#ifndef _TColStd_IndexedMapOfInteger_HeaderFile -#include -#endif -#ifndef _TColStd_MapTransientHasher_HeaderFile -#include -#endif -#ifndef _SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_HeaderFile -#include "SALOME_DataMapNodeOfDataMapOfIOMapOfInteger.hxx" -#endif -#ifndef _SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger_HeaderFile -#include "SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger.hxx" -#endif -using namespace std; - - -#define TheKey Handle_SALOME_InteractiveObject -#define TheKey_hxx "SALOME_InteractiveObject.hxx" -#define TheItem TColStd_IndexedMapOfInteger -#define TheItem_hxx -#define Hasher TColStd_MapTransientHasher -#define Hasher_hxx -#define TCollection_DataMapNode SALOME_DataMapNodeOfDataMapOfIOMapOfInteger -#define TCollection_DataMapNode_hxx "SALOME_DataMapNodeOfDataMapOfIOMapOfInteger.hxx" -#define TCollection_DataMapIterator SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger -#define TCollection_DataMapIterator_hxx "SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger.hxx" -#define Handle_TCollection_DataMapNode Handle_SALOME_DataMapNodeOfDataMapOfIOMapOfInteger -#define TCollection_DataMapNode_Type_() SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_Type_() -#define TCollection_DataMap SALOME_DataMapOfIOMapOfInteger -#define TCollection_DataMap_hxx "SALOME_DataMapOfIOMapOfInteger.hxx" -#include - diff --git a/src/SALOMEGUI/SALOME_Filter.cxx b/src/SALOMEGUI/SALOME_Filter.cxx deleted file mode 100644 index a6ca25e67..000000000 --- a/src/SALOMEGUI/SALOME_Filter.cxx +++ /dev/null @@ -1,31 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_Filter.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "SALOME_Filter.ixx" -using namespace std; - diff --git a/src/SALOMEGUI/SALOME_Filter.hxx b/src/SALOMEGUI/SALOME_Filter.hxx deleted file mode 100644 index 9c7ed2c6d..000000000 --- a/src/SALOMEGUI/SALOME_Filter.hxx +++ /dev/null @@ -1,111 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_Filter.hxx -// Module : SALOME - -#ifndef _SALOME_Filter_HeaderFile -#define _SALOME_Filter_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_SALOME_Filter_HeaderFile -#include -#endif - -#ifndef _MMgt_TShared_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -#ifndef _Handle_SALOME_InteractiveObject_HeaderFile -#include -#endif - -class SALOME_Filter : public MMgt_TShared { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } -// inline void operator delete(void *anAddress, size_t size) -// { -// if (anAddress) Standard::Free((Standard_Address&)anAddress,size); -// } - // Methods PUBLIC - // -Standard_EXPORT virtual Standard_Boolean IsOk(const Handle(SALOME_InteractiveObject)& anObj) const = 0; -Standard_EXPORT ~SALOME_Filter(); - - - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& SALOME_Filter_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/SALOMEGUI/SALOME_Filter.ixx b/src/SALOMEGUI/SALOME_Filter.ixx deleted file mode 100644 index 850317496..000000000 --- a/src/SALOMEGUI/SALOME_Filter.ixx +++ /dev/null @@ -1,81 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_Filter.ixx -// Module : SALOME - -#include "SALOME_Filter.jxx" - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -SALOME_Filter::~SALOME_Filter() {} - - - -Standard_EXPORT Handle_Standard_Type& SALOME_Filter_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(MMgt_TShared); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType2 = STANDARD_TYPE(Standard_Transient); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("SALOME_Filter", - sizeof(SALOME_Filter), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(SALOME_Filter) Handle(SALOME_Filter)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(SALOME_Filter) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(SALOME_Filter))) { - _anOtherObject = Handle(SALOME_Filter)((Handle(SALOME_Filter)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& SALOME_Filter::DynamicType() const -{ - return STANDARD_TYPE(SALOME_Filter) ; -} -Standard_Boolean SALOME_Filter::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(SALOME_Filter) == AType || MMgt_TShared::IsKind(AType)); -} -Handle_SALOME_Filter::~Handle_SALOME_Filter() {} - diff --git a/src/SALOMEGUI/SALOME_Filter.jxx b/src/SALOMEGUI/SALOME_Filter.jxx deleted file mode 100644 index 1928c441f..000000000 --- a/src/SALOMEGUI/SALOME_Filter.jxx +++ /dev/null @@ -1,29 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_Filter.jxx -// Module : SALOME - -#ifndef _SALOME_Filter_HeaderFile -#include "SALOME_Filter.hxx" -#endif diff --git a/src/SALOMEGUI/SALOME_ListIO.hxx b/src/SALOMEGUI/SALOME_ListIO.hxx deleted file mode 100644 index e028e243f..000000000 --- a/src/SALOMEGUI/SALOME_ListIO.hxx +++ /dev/null @@ -1,165 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_ListIO.hxx -// Module : SALOME - -#ifndef _SALOME_ListIO_HeaderFile -#define _SALOME_ListIO_HeaderFile - -#ifndef _Standard_Address_HeaderFile -#include -#endif -#ifndef _Handle_SALOME_InteractiveObject_HeaderFile -#include -#endif -#ifndef _Handle_SALOME_ListNodeOfListIO_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_NoSuchObject; -class SALOME_ListIteratorOfListIO; -class SALOME_InteractiveObject; -class SALOME_ListNodeOfListIO; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class SALOME_ListIO { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT SALOME_ListIO(); -Standard_EXPORT void Assign(const SALOME_ListIO& Other) ; - void operator=(const SALOME_ListIO& Other) -{ - Assign(Other); -} - -Standard_EXPORT Standard_Integer Extent() const; -Standard_EXPORT void Clear() ; -~SALOME_ListIO() -{ - Clear(); -} - -Standard_EXPORT Standard_Boolean IsEmpty() const; -Standard_EXPORT void Prepend(const Handle(SALOME_InteractiveObject)& I) ; -Standard_EXPORT void Prepend(SALOME_ListIO& Other) ; -Standard_EXPORT void Prepend(const Handle(SALOME_InteractiveObject)& I, SALOME_ListIteratorOfListIO& It) ; -Standard_EXPORT void Append(const Handle(SALOME_InteractiveObject)& I) ; -Standard_EXPORT void Append(SALOME_ListIO& Other) ; -Standard_EXPORT void Append(const Handle(SALOME_InteractiveObject)& I, SALOME_ListIteratorOfListIO& It) ; -Standard_EXPORT Handle_SALOME_InteractiveObject& First() const; -Standard_EXPORT Handle_SALOME_InteractiveObject& Last() const; -Standard_EXPORT void RemoveFirst() ; -Standard_EXPORT void Remove(SALOME_ListIteratorOfListIO& It) ; -Standard_EXPORT void InsertBefore(const Handle(SALOME_InteractiveObject)& I,SALOME_ListIteratorOfListIO& It) ; -Standard_EXPORT void InsertBefore(SALOME_ListIO& Other,SALOME_ListIteratorOfListIO& It) ; -Standard_EXPORT void InsertAfter(const Handle(SALOME_InteractiveObject)& I,SALOME_ListIteratorOfListIO& It) ; -Standard_EXPORT void InsertAfter(SALOME_ListIO& Other,SALOME_ListIteratorOfListIO& It) ; - - -friend class SALOME_ListIteratorOfListIO; - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // -Standard_EXPORT SALOME_ListIO(const SALOME_ListIO& Other); - - - // Fields PRIVATE - // -Standard_Address myFirst; -Standard_Address myLast; - - -}; - -#define Item Handle_SALOME_InteractiveObject -#define Item_hxx "SALOME_InteractiveObject.hxx" -#define TCollection_ListNode SALOME_ListNodeOfListIO -#define TCollection_ListNode_hxx "SALOME_ListNodeOfListIO.hxx" -#define TCollection_ListIterator SALOME_ListIteratorOfListIO -#define TCollection_ListIterator_hxx "SALOME_ListIteratorOfListIO.hxx" -#define Handle_TCollection_ListNode Handle_SALOME_ListNodeOfListIO -#define TCollection_ListNode_Type_() SALOME_ListNodeOfListIO_Type_() -#define TCollection_List SALOME_ListIO -#define TCollection_List_hxx "SALOME_ListIO.hxx" - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/SALOMEGUI/SALOME_ListIO_0.cxx b/src/SALOMEGUI/SALOME_ListIO_0.cxx deleted file mode 100644 index 14be3eee6..000000000 --- a/src/SALOMEGUI/SALOME_ListIO_0.cxx +++ /dev/null @@ -1,55 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_ListIO_0.cxx -// Module : SALOME - -#include "SALOME_ListIO.hxx" - -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _SALOME_ListIteratorOfListIO_HeaderFile -#include "SALOME_ListIteratorOfListIO.hxx" -#endif -#ifndef _SALOME_InteractiveObject_HeaderFile -#include "SALOME_InteractiveObject.hxx" -#endif -#ifndef _SALOME_ListNodeOfListIO_HeaderFile -#include "SALOME_ListNodeOfListIO.hxx" -#endif -using namespace std; - - -#define Item Handle_SALOME_InteractiveObject -#define Item_hxx "SALOME_InteractiveObject.hxx" -#define TCollection_ListNode SALOME_ListNodeOfListIO -#define TCollection_ListNode_hxx "SALOME_ListNodeOfListIO.hxx" -#define TCollection_ListIterator SALOME_ListIteratorOfListIO -#define TCollection_ListIterator_hxx "SALOME_ListIteratorOfListIO.hxx" -#define Handle_TCollection_ListNode Handle_SALOME_ListNodeOfListIO -#define TCollection_ListNode_Type_() SALOME_ListNodeOfListIO_Type_() -#define TCollection_List SALOME_ListIO -#define TCollection_List_hxx "SALOME_ListIO.hxx" -#include - diff --git a/src/SALOMEGUI/SALOME_ListIteratorOfListIO.hxx b/src/SALOMEGUI/SALOME_ListIteratorOfListIO.hxx deleted file mode 100644 index c479e6ca8..000000000 --- a/src/SALOMEGUI/SALOME_ListIteratorOfListIO.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_ListIteratorOfListIO.hxx -// Module : SALOME - -#ifndef _SALOME_ListIteratorOfListIO_HeaderFile -#define _SALOME_ListIteratorOfListIO_HeaderFile - -#ifndef _Standard_Address_HeaderFile -#include -#endif -#ifndef _Handle_SALOME_InteractiveObject_HeaderFile -#include -#endif -#ifndef _Handle_SALOME_ListNodeOfListIO_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_NoMoreObject; -class Standard_NoSuchObject; -class SALOME_ListIO; -class SALOME_InteractiveObject; -class SALOME_ListNodeOfListIO; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class SALOME_ListIteratorOfListIO { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT SALOME_ListIteratorOfListIO(); -Standard_EXPORT SALOME_ListIteratorOfListIO(const SALOME_ListIO& L); -Standard_EXPORT void Initialize(const SALOME_ListIO& L) ; -Standard_EXPORT Standard_Boolean More() const; -Standard_EXPORT void Next() ; -Standard_EXPORT Handle_SALOME_InteractiveObject& Value() const; - - -friend class SALOME_ListIO; - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -Standard_Address current; -Standard_Address previous; - - -}; - -#define Item Handle_SALOME_InteractiveObject -#define Item_hxx "SALOME_InteractiveObject.hxx" -#define TCollection_ListNode SALOME_ListNodeOfListIO -#define TCollection_ListNode_hxx "SALOME_ListNodeOfListIO.hxx" -#define TCollection_ListIterator SALOME_ListIteratorOfListIO -#define TCollection_ListIterator_hxx "SALOME_ListIteratorOfListIO.hxx" -#define Handle_TCollection_ListNode Handle_SALOME_ListNodeOfListIO -#define TCollection_ListNode_Type_() SALOME_ListNodeOfListIO_Type_() -#define TCollection_List SALOME_ListIO -#define TCollection_List_hxx "SALOME_ListIO.hxx" - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/SALOMEGUI/SALOME_ListIteratorOfListIO_0.cxx b/src/SALOMEGUI/SALOME_ListIteratorOfListIO_0.cxx deleted file mode 100644 index adb55ab72..000000000 --- a/src/SALOMEGUI/SALOME_ListIteratorOfListIO_0.cxx +++ /dev/null @@ -1,58 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_ListIteratorOfListIO_0.cxx -// Module : SALOME - -#include "SALOME_ListIteratorOfListIO.hxx" - -#ifndef _Standard_NoMoreObject_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _SALOME_ListIO_HeaderFile -#include "SALOME_ListIO.hxx" -#endif -#ifndef _SALOME_InteractiveObject_HeaderFile -#include "SALOME_InteractiveObject.hxx" -#endif -#ifndef _SALOME_ListNodeOfListIO_HeaderFile -#include "SALOME_ListNodeOfListIO.hxx" -#endif -using namespace std; - - -#define Item Handle_SALOME_InteractiveObject -#define Item_hxx "SALOME_InteractiveObject.hxx" -#define TCollection_ListNode SALOME_ListNodeOfListIO -#define TCollection_ListNode_hxx "SALOME_ListNodeOfListIO.hxx" -#define TCollection_ListIterator SALOME_ListIteratorOfListIO -#define TCollection_ListIterator_hxx "SALOME_ListIteratorOfListIO.hxx" -#define Handle_TCollection_ListNode Handle_SALOME_ListNodeOfListIO -#define TCollection_ListNode_Type_() SALOME_ListNodeOfListIO_Type_() -#define TCollection_List SALOME_ListIO -#define TCollection_List_hxx "SALOME_ListIO.hxx" -#include - diff --git a/src/SALOMEGUI/SALOME_ListIteratorOfListOfFilter.hxx b/src/SALOMEGUI/SALOME_ListIteratorOfListOfFilter.hxx deleted file mode 100644 index 21c9662a0..000000000 --- a/src/SALOMEGUI/SALOME_ListIteratorOfListOfFilter.hxx +++ /dev/null @@ -1,143 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_ListIteratorOfListOfFilter.hxx -// Module : SALOME - -#ifndef _SALOME_ListIteratorOfListOfFilter_HeaderFile -#define _SALOME_ListIteratorOfListOfFilter_HeaderFile - -#ifndef _Standard_Address_HeaderFile -#include -#endif -#ifndef _Handle_SALOME_Filter_HeaderFile -#include -#endif -#ifndef _Handle_SALOME_ListNodeOfListOfFilter_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_NoMoreObject; -class Standard_NoSuchObject; -class SALOME_ListOfFilter; -class SALOME_Filter; -class SALOME_ListNodeOfListOfFilter; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class SALOME_ListIteratorOfListOfFilter { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } -// inline void operator delete(void *anAddress, size_t size) -// { -// if (anAddress) Standard::Free((Standard_Address&)anAddress,size); -// } - // Methods PUBLIC - // -Standard_EXPORT SALOME_ListIteratorOfListOfFilter(); -Standard_EXPORT SALOME_ListIteratorOfListOfFilter(const SALOME_ListOfFilter& L); -Standard_EXPORT void Initialize(const SALOME_ListOfFilter& L) ; -Standard_EXPORT inline Standard_Boolean More() const; -Standard_EXPORT void Next() ; -Standard_EXPORT Handle_SALOME_Filter& Value() const; - - -friend class SALOME_ListOfFilter; - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -Standard_Address current; -Standard_Address previous; - - -}; - -#define Item Handle_SALOME_Filter -#define Item_hxx "SALOME_Filter.hxx" -#define TCollection_ListNode SALOME_ListNodeOfListOfFilter -#define TCollection_ListNode_hxx "SALOME_ListNodeOfListOfFilter.hxx" -#define TCollection_ListIterator SALOME_ListIteratorOfListOfFilter -#define TCollection_ListIterator_hxx "SALOME_ListIteratorOfListOfFilter.hxx" -#define Handle_TCollection_ListNode Handle_SALOME_ListNodeOfListOfFilter -#define TCollection_ListNode_Type_() SALOME_ListNodeOfListOfFilter_Type_() -#define TCollection_List SALOME_ListOfFilter -#define TCollection_List_hxx "SALOME_ListOfFilter.hxx" - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/SALOMEGUI/SALOME_ListIteratorOfListOfFilter_0.cxx b/src/SALOMEGUI/SALOME_ListIteratorOfListOfFilter_0.cxx deleted file mode 100644 index 57a0e587b..000000000 --- a/src/SALOMEGUI/SALOME_ListIteratorOfListOfFilter_0.cxx +++ /dev/null @@ -1,58 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_ListIteratorOfListOfFilter_0.cxx -// Module : SALOME - -#include "SALOME_ListIteratorOfListOfFilter.hxx" - -#ifndef _Standard_NoMoreObject_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _SALOME_ListOfFilter_HeaderFile -#include "SALOME_ListOfFilter.hxx" -#endif -#ifndef _SALOME_Filter_HeaderFile -#include "SALOME_Filter.hxx" -#endif -#ifndef _SALOME_ListNodeOfListOfFilter_HeaderFile -#include "SALOME_ListNodeOfListOfFilter.hxx" -#endif -using namespace std; - - -#define Item Handle_SALOME_Filter -#define Item_hxx "SALOME_Filter.hxx" -#define TCollection_ListNode SALOME_ListNodeOfListOfFilter -#define TCollection_ListNode_hxx "SALOME_ListNodeOfListOfFilter.hxx" -#define TCollection_ListIterator SALOME_ListIteratorOfListOfFilter -#define TCollection_ListIterator_hxx "SALOME_ListIteratorOfListOfFilter.hxx" -#define Handle_TCollection_ListNode Handle_SALOME_ListNodeOfListOfFilter -#define TCollection_ListNode_Type_() SALOME_ListNodeOfListOfFilter_Type_() -#define TCollection_List SALOME_ListOfFilter -#define TCollection_List_hxx "SALOME_ListOfFilter.hxx" -#include - diff --git a/src/SALOMEGUI/SALOME_ListNodeOfListIO.hxx b/src/SALOMEGUI/SALOME_ListNodeOfListIO.hxx deleted file mode 100644 index 9aed956f8..000000000 --- a/src/SALOMEGUI/SALOME_ListNodeOfListIO.hxx +++ /dev/null @@ -1,134 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_ListNodeOfListIO.hxx -// Module : SALOME - -#ifndef _SALOME_ListNodeOfListIO_HeaderFile -#define _SALOME_ListNodeOfListIO_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_SALOME_ListNodeOfListIO_HeaderFile -#include -#endif - -#ifndef _Handle_SALOME_InteractiveObject_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -class SALOME_InteractiveObject; -class SALOME_ListIO; -class SALOME_ListIteratorOfListIO; - - -class SALOME_ListNodeOfListIO : public TCollection_MapNode { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -SALOME_ListNodeOfListIO(const Handle(SALOME_InteractiveObject)& I,const TCollection_MapNodePtr& n); - Handle_SALOME_InteractiveObject& Value() const; -Standard_EXPORT ~SALOME_ListNodeOfListIO(); - - - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& SALOME_ListNodeOfListIO_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -Handle_SALOME_InteractiveObject myValue; - - -}; - -#define Item Handle_SALOME_InteractiveObject -#define Item_hxx "SALOME_InteractiveObject.hxx" -#define TCollection_ListNode SALOME_ListNodeOfListIO -#define TCollection_ListNode_hxx "SALOME_ListNodeOfListIO.hxx" -#define TCollection_ListIterator SALOME_ListIteratorOfListIO -#define TCollection_ListIterator_hxx "SALOME_ListIteratorOfListIO.hxx" -#define Handle_TCollection_ListNode Handle_SALOME_ListNodeOfListIO -#define TCollection_ListNode_Type_() SALOME_ListNodeOfListIO_Type_() -#define TCollection_List SALOME_ListIO -#define TCollection_List_hxx "SALOME_ListIO.hxx" - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/SALOMEGUI/SALOME_ListNodeOfListIO_0.cxx b/src/SALOMEGUI/SALOME_ListNodeOfListIO_0.cxx deleted file mode 100644 index 35f04d576..000000000 --- a/src/SALOMEGUI/SALOME_ListNodeOfListIO_0.cxx +++ /dev/null @@ -1,104 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_ListNodeOfListIO_0.cxx -// Module : SALOME - -#include "SALOME_ListNodeOfListIO.hxx" - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _SALOME_InteractiveObject_HeaderFile -#include "SALOME_InteractiveObject.hxx" -#endif -#ifndef _SALOME_ListIO_HeaderFile -#include "SALOME_ListIO.hxx" -#endif -#ifndef _SALOME_ListIteratorOfListIO_HeaderFile -#include "SALOME_ListIteratorOfListIO.hxx" -#endif -using namespace std; -SALOME_ListNodeOfListIO::~SALOME_ListNodeOfListIO() {} - - - -Standard_EXPORT Handle_Standard_Type& SALOME_ListNodeOfListIO_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("SALOME_ListNodeOfListIO", - sizeof(SALOME_ListNodeOfListIO), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(SALOME_ListNodeOfListIO) Handle(SALOME_ListNodeOfListIO)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(SALOME_ListNodeOfListIO) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(SALOME_ListNodeOfListIO))) { - _anOtherObject = Handle(SALOME_ListNodeOfListIO)((Handle(SALOME_ListNodeOfListIO)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& SALOME_ListNodeOfListIO::DynamicType() const -{ - return STANDARD_TYPE(SALOME_ListNodeOfListIO) ; -} -Standard_Boolean SALOME_ListNodeOfListIO::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(SALOME_ListNodeOfListIO) == AType || TCollection_MapNode::IsKind(AType)); -} -Handle_SALOME_ListNodeOfListIO::~Handle_SALOME_ListNodeOfListIO() {} -#define Item Handle_SALOME_InteractiveObject -#define Item_hxx "SALOME_InteractiveObject.hxx" -#define TCollection_ListNode SALOME_ListNodeOfListIO -#define TCollection_ListNode_hxx "SALOME_ListNodeOfListIO.hxx" -#define TCollection_ListIterator SALOME_ListIteratorOfListIO -#define TCollection_ListIterator_hxx "SALOME_ListIteratorOfListIO.hxx" -#define Handle_TCollection_ListNode Handle_SALOME_ListNodeOfListIO -#define TCollection_ListNode_Type_() SALOME_ListNodeOfListIO_Type_() -#define TCollection_List SALOME_ListIO -#define TCollection_List_hxx "SALOME_ListIO.hxx" -#include - diff --git a/src/SALOMEGUI/SALOME_ListNodeOfListOfFilter.hxx b/src/SALOMEGUI/SALOME_ListNodeOfListOfFilter.hxx deleted file mode 100644 index 1fab56749..000000000 --- a/src/SALOMEGUI/SALOME_ListNodeOfListOfFilter.hxx +++ /dev/null @@ -1,138 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_ListNodeOfListOfFilter.hxx -// Module : SALOME - -#ifndef _SALOME_ListNodeOfListOfFilter_HeaderFile -#define _SALOME_ListNodeOfListOfFilter_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_SALOME_ListNodeOfListOfFilter_HeaderFile -#include -#endif - -#ifndef _Handle_SALOME_Filter_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -class SALOME_Filter; -class SALOME_ListOfFilter; -class SALOME_ListIteratorOfListOfFilter; - - -class SALOME_ListNodeOfListOfFilter : public TCollection_MapNode { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } -// inline void operator delete(void *anAddress, size_t size) -// { -// if (anAddress) Standard::Free((Standard_Address&)anAddress,size); -// } - // Methods PUBLIC - // -Standard_EXPORT inline SALOME_ListNodeOfListOfFilter(const Handle(SALOME_Filter)& I,const TCollection_MapNodePtr& n); -Standard_EXPORT inline Handle_SALOME_Filter& Value() const; -Standard_EXPORT ~SALOME_ListNodeOfListOfFilter(); - - - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& SALOME_ListNodeOfListOfFilter_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -Handle_SALOME_Filter myValue; - - -}; - -#define Item Handle_SALOME_Filter -#define Item_hxx "SALOME_Filter.hxx" -#define TCollection_ListNode SALOME_ListNodeOfListOfFilter -#define TCollection_ListNode_hxx "SALOME_ListNodeOfListOfFilter.hxx" -#define TCollection_ListIterator SALOME_ListIteratorOfListOfFilter -#define TCollection_ListIterator_hxx "SALOME_ListIteratorOfListOfFilter.hxx" -#define Handle_TCollection_ListNode Handle_SALOME_ListNodeOfListOfFilter -#define TCollection_ListNode_Type_() SALOME_ListNodeOfListOfFilter_Type_() -#define TCollection_List SALOME_ListOfFilter -#define TCollection_List_hxx "SALOME_ListOfFilter.hxx" - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/SALOMEGUI/SALOME_ListNodeOfListOfFilter_0.cxx b/src/SALOMEGUI/SALOME_ListNodeOfListOfFilter_0.cxx deleted file mode 100644 index 23afd5801..000000000 --- a/src/SALOMEGUI/SALOME_ListNodeOfListOfFilter_0.cxx +++ /dev/null @@ -1,104 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_ListNodeOfListOfFilter_0.cxx -// Module : SALOME - -#include "SALOME_ListNodeOfListOfFilter.hxx" - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _SALOME_Filter_HeaderFile -#include "SALOME_Filter.hxx" -#endif -#ifndef _SALOME_ListOfFilter_HeaderFile -#include "SALOME_ListOfFilter.hxx" -#endif -#ifndef _SALOME_ListIteratorOfListOfFilter_HeaderFile -#include "SALOME_ListIteratorOfListOfFilter.hxx" -#endif -using namespace std; -SALOME_ListNodeOfListOfFilter::~SALOME_ListNodeOfListOfFilter() {} - - - -Standard_EXPORT Handle_Standard_Type& SALOME_ListNodeOfListOfFilter_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("SALOME_ListNodeOfListOfFilter", - sizeof(SALOME_ListNodeOfListOfFilter), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(SALOME_ListNodeOfListOfFilter) Handle(SALOME_ListNodeOfListOfFilter)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(SALOME_ListNodeOfListOfFilter) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(SALOME_ListNodeOfListOfFilter))) { - _anOtherObject = Handle(SALOME_ListNodeOfListOfFilter)((Handle(SALOME_ListNodeOfListOfFilter)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& SALOME_ListNodeOfListOfFilter::DynamicType() const -{ - return STANDARD_TYPE(SALOME_ListNodeOfListOfFilter) ; -} -Standard_Boolean SALOME_ListNodeOfListOfFilter::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(SALOME_ListNodeOfListOfFilter) == AType || TCollection_MapNode::IsKind(AType)); -} -Handle_SALOME_ListNodeOfListOfFilter::~Handle_SALOME_ListNodeOfListOfFilter() {} -#define Item Handle_SALOME_Filter -#define Item_hxx "SALOME_Filter.hxx" -#define TCollection_ListNode SALOME_ListNodeOfListOfFilter -#define TCollection_ListNode_hxx "SALOME_ListNodeOfListOfFilter.hxx" -#define TCollection_ListIterator SALOME_ListIteratorOfListOfFilter -#define TCollection_ListIterator_hxx "SALOME_ListIteratorOfListOfFilter.hxx" -#define Handle_TCollection_ListNode Handle_SALOME_ListNodeOfListOfFilter -#define TCollection_ListNode_Type_() SALOME_ListNodeOfListOfFilter_Type_() -#define TCollection_List SALOME_ListOfFilter -#define TCollection_List_hxx "SALOME_ListOfFilter.hxx" -#include - diff --git a/src/SALOMEGUI/SALOME_ListOfFilter.hxx b/src/SALOMEGUI/SALOME_ListOfFilter.hxx deleted file mode 100644 index 1024a2159..000000000 --- a/src/SALOMEGUI/SALOME_ListOfFilter.hxx +++ /dev/null @@ -1,169 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_ListOfFilter.hxx -// Module : SALOME - -#ifndef _SALOME_ListOfFilter_HeaderFile -#define _SALOME_ListOfFilter_HeaderFile - -#ifndef _Standard_Address_HeaderFile -#include -#endif -#ifndef _Handle_SALOME_Filter_HeaderFile -#include -#endif -#ifndef _Handle_SALOME_ListNodeOfListOfFilter_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_NoSuchObject; -class SALOME_ListIteratorOfListOfFilter; -class SALOME_Filter; -class SALOME_ListNodeOfListOfFilter; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -class SALOME_ListOfFilter { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } -// inline void operator delete(void *anAddress, size_t size) -// { -// if (anAddress) Standard::Free((Standard_Address&)anAddress,size); -// } - // Methods PUBLIC - // -Standard_EXPORT SALOME_ListOfFilter(); -Standard_EXPORT void Assign(const SALOME_ListOfFilter& Other) ; - void operator=(const SALOME_ListOfFilter& Other) -{ - Assign(Other); -} - -Standard_EXPORT Standard_Integer Extent() const; -Standard_EXPORT void Clear() ; -~SALOME_ListOfFilter() -{ - Clear(); -} - -Standard_EXPORT inline Standard_Boolean IsEmpty() const; -Standard_EXPORT void Prepend(const Handle(SALOME_Filter)& I) ; -Standard_EXPORT void Prepend(SALOME_ListOfFilter& Other) ; -Standard_EXPORT void Prepend(const Handle(SALOME_Filter)& I, SALOME_ListIteratorOfListOfFilter& It) ; -Standard_EXPORT void Append(const Handle(SALOME_Filter)& I) ; -Standard_EXPORT void Append(SALOME_ListOfFilter& Other) ; -Standard_EXPORT void Append(const Handle(SALOME_Filter)& I, SALOME_ListIteratorOfListOfFilter& It) ; -Standard_EXPORT Handle_SALOME_Filter& First() const; -Standard_EXPORT Handle_SALOME_Filter& Last() const; -Standard_EXPORT void RemoveFirst() ; -Standard_EXPORT void Remove(SALOME_ListIteratorOfListOfFilter& It) ; -Standard_EXPORT void InsertBefore(const Handle(SALOME_Filter)& I,SALOME_ListIteratorOfListOfFilter& It) ; -Standard_EXPORT void InsertBefore(SALOME_ListOfFilter& Other,SALOME_ListIteratorOfListOfFilter& It) ; -Standard_EXPORT void InsertAfter(const Handle(SALOME_Filter)& I,SALOME_ListIteratorOfListOfFilter& It) ; -Standard_EXPORT void InsertAfter(SALOME_ListOfFilter& Other,SALOME_ListIteratorOfListOfFilter& It) ; - - -friend class SALOME_ListIteratorOfListOfFilter; - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // -Standard_EXPORT SALOME_ListOfFilter(const SALOME_ListOfFilter& Other); - - - // Fields PRIVATE - // -Standard_Address myFirst; -Standard_Address myLast; - - -}; - -#define Item Handle_SALOME_Filter -#define Item_hxx "SALOME_Filter.hxx" -#define TCollection_ListNode SALOME_ListNodeOfListOfFilter -#define TCollection_ListNode_hxx "SALOME_ListNodeOfListOfFilter.hxx" -#define TCollection_ListIterator SALOME_ListIteratorOfListOfFilter -#define TCollection_ListIterator_hxx "SALOME_ListIteratorOfListOfFilter.hxx" -#define Handle_TCollection_ListNode Handle_SALOME_ListNodeOfListOfFilter -#define TCollection_ListNode_Type_() SALOME_ListNodeOfListOfFilter_Type_() -#define TCollection_List SALOME_ListOfFilter -#define TCollection_List_hxx "SALOME_ListOfFilter.hxx" - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/SALOMEGUI/SALOME_ListOfFilter_0.cxx b/src/SALOMEGUI/SALOME_ListOfFilter_0.cxx deleted file mode 100644 index 8b30df9f6..000000000 --- a/src/SALOMEGUI/SALOME_ListOfFilter_0.cxx +++ /dev/null @@ -1,55 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_ListOfFilter_0.cxx -// Module : SALOME - -#include "SALOME_ListOfFilter.hxx" - -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _SALOME_ListIteratorOfListOfFilter_HeaderFile -#include "SALOME_ListIteratorOfListOfFilter.hxx" -#endif -#ifndef _SALOME_Filter_HeaderFile -#include "SALOME_Filter.hxx" -#endif -#ifndef _SALOME_ListNodeOfListOfFilter_HeaderFile -#include "SALOME_ListNodeOfListOfFilter.hxx" -#endif -using namespace std; - - -#define Item Handle_SALOME_Filter -#define Item_hxx "SALOME_Filter.hxx" -#define TCollection_ListNode SALOME_ListNodeOfListOfFilter -#define TCollection_ListNode_hxx "SALOME_ListNodeOfListOfFilter.hxx" -#define TCollection_ListIterator SALOME_ListIteratorOfListOfFilter -#define TCollection_ListIterator_hxx "SALOME_ListIteratorOfListOfFilter.hxx" -#define Handle_TCollection_ListNode Handle_SALOME_ListNodeOfListOfFilter -#define TCollection_ListNode_Type_() SALOME_ListNodeOfListOfFilter_Type_() -#define TCollection_List SALOME_ListOfFilter -#define TCollection_List_hxx "SALOME_ListOfFilter.hxx" -#include - diff --git a/src/SALOMEGUI/SALOME_NumberFilter.cxx b/src/SALOMEGUI/SALOME_NumberFilter.cxx deleted file mode 100644 index cdc63948e..000000000 --- a/src/SALOMEGUI/SALOME_NumberFilter.cxx +++ /dev/null @@ -1,88 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_NumberFilter.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "SALOME_NumberFilter.ixx" -#include "SALOME_Selection.h" -#include "SALOME_InteractiveObject.hxx" - -#include "QAD_Application.h" -#include "QAD_Desktop.h" -#include "QAD_Study.h" -using namespace std; - -SALOME_NumberFilter::SALOME_NumberFilter(NumberFilter TheKind, Standard_Integer aValue): -myKind(TheKind), -myValue(aValue){} - -Standard_Boolean SALOME_NumberFilter::IsOk(const Handle(SALOME_InteractiveObject)& anObj) const -{ - bool result = false; - QAD_Study* myActiveStudy = QAD_Application::getDesktop()->getActiveStudy(); - SALOME_Selection* Sel = SALOME_Selection::Selection( myActiveStudy->getSelection() ); - int nbSel = Sel->IObjectCount(); - - switch ( myKind ) - { - case 0 : // INFERIOR - { - if ( (nbSel + 1 ) < myValue ) - result = true; - else - result = false; - break; - } - case 1 : // INFERIOR_OR_EQUAL - { - if ( (nbSel + 1 ) <= myValue ) - result = true; - else - result = false; - break; - } - case 2 : // SUPERIOR - { - result = true; - break; - } - case 3 : // SUPERIOR_OR_EQUAL - { - result = true; - break; - } - case 4 : // EQUAL - { - if ( (nbSel + 1 ) == myValue ) - result = true; - else - result = false; - break; - } - } - - return result; -} diff --git a/src/SALOMEGUI/SALOME_NumberFilter.hxx b/src/SALOMEGUI/SALOME_NumberFilter.hxx deleted file mode 100644 index 1f30f67e4..000000000 --- a/src/SALOMEGUI/SALOME_NumberFilter.hxx +++ /dev/null @@ -1,118 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_NumberFilter.hxx -// Module : SALOME - -#ifndef _SALOME_NumberFilter_HeaderFile -#define _SALOME_NumberFilter_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_SALOME_NumberFilter_HeaderFile -#include -#endif - -#ifndef _Standard_CString_HeaderFile -#include -#endif -#ifndef _SALOME_Filter_HeaderFile -#include "SALOME_Filter.hxx" -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -#ifndef _Handle_SALOME_InteractiveObject_HeaderFile -#include -#endif - -class SALOME_NumberFilter : public SALOME_Filter { - -public: - - enum NumberFilter { INFERIOR, INFERIOR_OR_EQUAL, SUPERIOR, SUPERIOR_OR_EQUAL, EQUAL }; - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } -// inline void operator delete(void *anAddress, size_t size) -// { -// if (anAddress) Standard::Free((Standard_Address&)anAddress,size); -// } - // Methods PUBLIC - // -Standard_EXPORT SALOME_NumberFilter(NumberFilter aGivenKind, Standard_Integer aValue); -Standard_EXPORT virtual Standard_Boolean IsOk(const Handle(SALOME_InteractiveObject)& anobj) const; -Standard_EXPORT ~SALOME_NumberFilter(); - - - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& SALOME_NumberFilter_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // -NumberFilter myKind; -Standard_Integer myValue; - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/SALOMEGUI/SALOME_NumberFilter.ixx b/src/SALOMEGUI/SALOME_NumberFilter.ixx deleted file mode 100644 index 4a3990e4d..000000000 --- a/src/SALOMEGUI/SALOME_NumberFilter.ixx +++ /dev/null @@ -1,83 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_NumberFilter.ixx -// Module : SALOME - -#include "SALOME_NumberFilter.jxx" - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -SALOME_NumberFilter::~SALOME_NumberFilter() {} - - - -Standard_EXPORT Handle_Standard_Type& SALOME_NumberFilter_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(SALOME_Filter); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(SALOME_Filter); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("SALOME_NumberFilter", - sizeof(SALOME_NumberFilter), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(SALOME_NumberFilter) Handle(SALOME_NumberFilter)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(SALOME_NumberFilter) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(SALOME_NumberFilter))) { - _anOtherObject = Handle(SALOME_NumberFilter)((Handle(SALOME_NumberFilter)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& SALOME_NumberFilter::DynamicType() const -{ - return STANDARD_TYPE(SALOME_NumberFilter) ; -} -Standard_Boolean SALOME_NumberFilter::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(SALOME_NumberFilter) == AType || SALOME_Filter::IsKind(AType)); -} -Handle_SALOME_NumberFilter::~Handle_SALOME_NumberFilter() {} - diff --git a/src/SALOMEGUI/SALOME_NumberFilter.jxx b/src/SALOMEGUI/SALOME_NumberFilter.jxx deleted file mode 100644 index 51893094a..000000000 --- a/src/SALOMEGUI/SALOME_NumberFilter.jxx +++ /dev/null @@ -1,29 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_NumberFilter.jxx -// Module : SALOME - -#ifndef _SALOME_NumberFilter_HeaderFile -#include "SALOME_NumberFilter.hxx" -#endif diff --git a/src/SALOMEGUI/SALOME_Selection.cxx b/src/SALOMEGUI/SALOME_Selection.cxx deleted file mode 100644 index 74a60fb5e..000000000 --- a/src/SALOMEGUI/SALOME_Selection.cxx +++ /dev/null @@ -1,546 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_Selection.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -/*! - \class SALOME_Selection SALOME_Selection.h - \brief Selection Mechanism of Interactive Object. -*/ - -#include "SALOME_Selection.h" -#include "SALOME_Filter.hxx" -#include "SALOME_InteractiveObject.hxx" -#include "SALOME_ListIteratorOfListIO.hxx" -#include "SALOME_ListIteratorOfListOfFilter.hxx" - -#include "QAD_Desktop.h" -#include "utilities.h" - -#include -#include - -#ifdef _DEBUG_ -static int MYDEBUG = 0; -#else -static int MYDEBUG = 0; -#endif - -using namespace std; - -static QList& SALOME_Sel_GetSelections() -{ - static QList Selections; - return Selections; -} - -//======================================================================= -// SELECTIONS MANAGEMENT -//======================================================================= - -/*! - Constructor -*/ -SALOME_Selection::SALOME_Selection(const QString& aName) : - myName(aName) -{ - myFilters.Clear(); - myIObjects.Clear(); - mySelectionMode = ActorSelection; /*4*/ - mySelActiveCompOnly = false; - - QAD_Desktop* aDesktop = QAD_Application::getDesktop(); - if (aDesktop) { - QAD_Application *anActiveApplication = aDesktop->getActiveApp(); - if (anActiveApplication) QAD_ASSERT(connect(this, SIGNAL(currentSelectionChanged()),anActiveApplication, SLOT(updateActions()))); - } -} - -/*! - Destructor -*/ -SALOME_Selection::~SALOME_Selection() -{ -} - -/*! - Create a Selection with name \a aName - \return TRUE if the Selection is created. Returns FALSE otherwise. -*/ -bool SALOME_Selection::CreateSelection(const QString& aName) -{ - SALOME_Selection* S = NULL; - if ( SALOME_Selection::FindSelection( aName ) ) - S = SALOME_Selection::Selection( aName ); - else { - S = new SALOME_Selection(aName); - SALOME_Sel_GetSelections().prepend(S); - } - return true; -} - - -/*! - Sets the current Selection with \a aName -*/ -SALOME_Selection* SALOME_Selection::Selection(const QString& aName) -{ - SALOME_Selection* Sel = NULL; - if(SALOME_Sel_GetSelections().isEmpty()) return Sel; - - for( Sel=SALOME_Sel_GetSelections().first(); Sel!=0; Sel=SALOME_Sel_GetSelections().next() ){ - if( Sel->myName.compare(aName) == 0 ) - return Sel; - } - - return Sel; -} - -/*! - Finds Selection with \a aName - \return TRUE if the Selection is found. Returns FALSE otherwise. -*/ -bool SALOME_Selection::FindSelection(const QString& aName) -{ - SALOME_Selection* Sel; - for( Sel=SALOME_Sel_GetSelections().first(); Sel!=0; Sel=SALOME_Sel_GetSelections().next() ){ - if( Sel->myName.compare(aName) == 0 ) - return true; - } - - return false; -} - -/*! - Removes Selection with \a aName - \return TRUE if the Selection is removed. Returns FALSE otherwise. -*/ -bool SALOME_Selection::RemoveSelection(const QString& aName) -{ - SALOME_Selection* Sel; - for( Sel=SALOME_Sel_GetSelections().first(); Sel!=0; Sel=SALOME_Sel_GetSelections().next() ){ - if( Sel->myName.compare(aName) == 0 ) - return SALOME_Sel_GetSelections().remove(Sel); - } - return false; -} - - - -//======================================================================= -// FILTERS MANAGEMENT -//======================================================================= - -/*! - Adds Filter -*/ -void SALOME_Selection::AddFilter(const Handle(SALOME_Filter)& aFilter, - bool updateSelection) -{ - if ( !FindFilter(aFilter) ) { - myFilters.Append( aFilter ); - - SALOME_ListIO removedIObjects; - - if ( updateSelection ) { - SALOME_ListIteratorOfListIO It(myIObjects); - for(;It.More();It.Next()){ - Handle(SALOME_InteractiveObject) Object = It.Value(); - if( !IsOk(Object) ) { - removedIObjects.Append( Object ); - // RemoveIObject( Object ); - } - } - - SALOME_ListIteratorOfListIO It1(removedIObjects); - for(;It1.More();It1.Next()){ - Handle(SALOME_InteractiveObject) Object = It1.Value(); - RemoveIObject( Object ); - } - } - } -} - -/*! - Removes Filter -*/ -bool SALOME_Selection::RemoveFilter(const Handle(SALOME_Filter)& aFilter) -{ - SALOME_ListIteratorOfListOfFilter It(myFilters); - for(;It.More();It.Next()){ - if (aFilter==It.Value()){ - myFilters.Remove(It); - return true; - } - } - return false; -} - -//! Clears All Filters -void SALOME_Selection::ClearFilters() -{ - myFilters.Clear(); -} - -//! Finds aFilter -bool SALOME_Selection::FindFilter(const Handle(SALOME_Filter)& aFilter) -{ - SALOME_ListIteratorOfListOfFilter It(myFilters); - for(;It.More();It.Next()) - if (aFilter==It.Value()) - return true; - return false; -} - -//! Returns the list of stored Filters -const SALOME_ListOfFilter& SALOME_Selection::StoredFilters() -{ - return myFilters; -} - - - -//======================================================================= -// INTERACTIVE OBJECTS MANAGEMENT -//======================================================================= - -void SALOME_Selection::Clear() -{ - myIObjects.Clear(); -} - -//! Clears all Interactive Objects -void SALOME_Selection::ClearIObjects() -{ - myIObjects.Clear(); - - QAD_Desktop* myDesktop = (QAD_Desktop*) QAD_Application::getDesktop(); - QAD_Study* myActiveStudy = myDesktop->getActiveStudy(); - myActiveStudy->unHighlightAll(); - - myMapIOSubIndex.Clear(); - - emit currentSelectionChanged(); -} - -//! Add an InteractiveObject -int SALOME_Selection::AddIObject(const Handle(SALOME_InteractiveObject)& anObject, bool update) -{ - QAD_Desktop* myDesktop = (QAD_Desktop*) QAD_Application::getDesktop(); - QAD_Study* myActiveStudy = myDesktop->getActiveStudy(); - - if ( !IsOk(anObject) ) { - if(MYDEBUG) INFOS ( "The Object not authorized by Filters" ) - myActiveStudy->highlight(anObject,false, update); - return -1; - } - - bool Found = false; - SALOME_ListIteratorOfListIO It(myIObjects); - for(;It.More();It.Next()) { - if (anObject->isSame(It.Value())) { - Found = true; - break; - } - } - - // Il n'est pas dedans, on le rajoute.... - if(Found==false) { - myIObjects.Append( anObject ); - myActiveStudy->highlight(anObject, true, update); - emit currentSelectionChanged(); - return 1; - } - return 0; -} - -//! Removes an InteractiveObject -int SALOME_Selection::RemoveIObject(const Handle(SALOME_InteractiveObject)& anObject, bool update) -{ - SALOME_ListIteratorOfListIO It(myIObjects); - for(;It.More();It.Next()) { - if (anObject->isSame(It.Value())) { - QAD_Desktop* myDesktop = (QAD_Desktop*) QAD_Application::getDesktop(); - QAD_Study* myActiveStudy = myDesktop->getActiveStudy(); - myActiveStudy->highlight(anObject, false, update); - - if ( myMapIOSubIndex.IsBound( anObject ) ) { - myMapIOSubIndex.UnBind( anObject ); - } - - myIObjects.Remove(It); - - emit currentSelectionChanged(); - return 1; - } - } - return 0; -} - -//! Returns the list of InteractiveObjects -const SALOME_ListIO& SALOME_Selection::StoredIObjects() -{ - return myIObjects; -} - -//! Returns the number of InteractiveObjects in the selection. -int SALOME_Selection::IObjectCount() -{ - return myIObjects.Extent(); -} - -//! Returns the first InteractiveObject in the selection. -Handle(SALOME_InteractiveObject) SALOME_Selection::firstIObject() -{ - return myIObjects.Extent() > 0 ? myIObjects.First() : Handle(SALOME_InteractiveObject)(); -} - -//! Returns the last InteractiveObject in the selection. -Handle(SALOME_InteractiveObject) SALOME_Selection::lastIObject() -{ - return myIObjects.Extent() > 0 ? myIObjects.Last() : Handle(SALOME_InteractiveObject)(); -} - -/*! - Returns TRUE if the InteractiveObject is authorized by Filters. Returns FALSE otherwise. -*/ -bool SALOME_Selection::IsOk(const Handle(SALOME_InteractiveObject)& anObj) -{ - SALOME_ListIteratorOfListOfFilter It(myFilters); - for(;It.More();It.Next()){ - Handle(SALOME_Filter) theFilter = It.Value(); - if ( !theFilter->IsOk(anObj) ) - return false; - } - return true; -} - -void SALOME_Selection::SetSelectionMode(Selection_Mode mode, bool activeCompOnly) -{ - mySelectionMode = mode; - mySelActiveCompOnly = activeCompOnly; -} - -Selection_Mode SALOME_Selection::SelectionMode() -{ - return mySelectionMode; -} - -bool SALOME_Selection::IsSelectActiveCompOnly() const -{ - return mySelActiveCompOnly; -} - -bool SALOME_Selection::HasIndex( const Handle(SALOME_InteractiveObject)& IObject ) -{ - return myMapIOSubIndex.IsBound(IObject); -} - -void SALOME_Selection::GetIndex( const Handle(SALOME_InteractiveObject)& IObject, TColStd_IndexedMapOfInteger& theIndex ) -{ - if ( myMapIOSubIndex.IsBound(IObject) ) { - theIndex = myMapIOSubIndex.Find(IObject); - } - else { - theIndex.Clear(); - } -} - - - -bool SALOME_Selection::IsIndexSelected(const Handle(SALOME_InteractiveObject)& IObject, int index) -{ - if ( !myMapIOSubIndex.IsBound( IObject ) ) { - return false; - } - TColStd_IndexedMapOfInteger& MapIndex = myMapIOSubIndex.ChangeFind( IObject ); - return MapIndex.Contains( index ); -} - -static bool removeIndex( TColStd_IndexedMapOfInteger& MapIndex, - const int Index) -{ - int i = MapIndex.FindIndex( Index ); // i==0 if Index is not in the MapIndex - if ( i ) { - // only the last key can be removed - int indexLast = MapIndex.FindKey( MapIndex.Extent() ); - if ( indexLast == Index ) - MapIndex.RemoveLast(); - else { - TColStd_IndexedMapOfInteger aNewMap; - aNewMap.ReSize( MapIndex.Extent() - 1 ); - for ( int j = 1; j <= MapIndex.Extent(); j++ ) { - int ind = MapIndex( j ); - if ( ind != Index ) - aNewMap.Add( ind ); - } - MapIndex = aNewMap; - } - } - return i; -} - - -bool SALOME_Selection::AddOrRemoveIndex( const Handle(SALOME_InteractiveObject)& IObject, - int index, - bool modeShift, - bool update) -{ - if(MYDEBUG) INFOS( " SALOME_Selection::AddOrRemoveIndex " << index << " - " << modeShift ); - QAD_Desktop* myDesktop = (QAD_Desktop*) QAD_Application::getDesktop(); - QAD_Study* myActiveStudy = myDesktop->getActiveStudy(); - - if ( !myMapIOSubIndex.IsBound( IObject ) ) { - TColStd_IndexedMapOfInteger Empty; - myMapIOSubIndex.Bind( IObject, Empty ); - } - TColStd_IndexedMapOfInteger& MapIndex = myMapIOSubIndex.ChangeFind( IObject ); - - bool anIsConatains = MapIndex.Contains( index ); - - if (anIsConatains) - removeIndex( MapIndex, index ); - - if (!modeShift) - MapIndex.Clear(); - - if(!anIsConatains) - MapIndex.Add( index ); - - if ( MapIndex.IsEmpty() ) { - myMapIOSubIndex.UnBind( IObject ); - RemoveIObject( IObject, update ); - } - - myActiveStudy->highlight( IObject, true, update ); - - emit currentSelectionChanged(); - return false; -} - -bool SALOME_Selection::AddOrRemoveIndex( const Handle(SALOME_InteractiveObject)& IObject, - const TColStd_MapOfInteger& theIndices, - bool modeShift, - bool update) -{ - QAD_Desktop* myDesktop = (QAD_Desktop*) QAD_Application::getDesktop(); - QAD_Study* myActiveStudy = myDesktop->getActiveStudy(); - - if ( !myMapIOSubIndex.IsBound( IObject ) ) { - TColStd_IndexedMapOfInteger Empty; - myMapIOSubIndex.Bind( IObject, Empty ); - } - TColStd_IndexedMapOfInteger& MapIndex = myMapIOSubIndex.ChangeFind( IObject ); - TColStd_MapIteratorOfMapOfInteger It; - It.Initialize(theIndices); - - if (!modeShift) - MapIndex.Clear(); - - for(;It.More();It.Next()) - MapIndex.Add(It.Key()); - - if ( MapIndex.IsEmpty() ) { - myMapIOSubIndex.UnBind( IObject ); - RemoveIObject( IObject, update ); - } - - myActiveStudy->highlight( IObject, true, update ); - - emit currentSelectionChanged(); - - return !MapIndex.IsEmpty(); -} - -bool SALOME_Selection::AddOrRemoveIndex( const Handle(SALOME_InteractiveObject)& IObject, - const TContainerOfId& theIndices, - bool modeShift, - bool update) -{ - QAD_Desktop* myDesktop = (QAD_Desktop*) QAD_Application::getDesktop(); - QAD_Study* myActiveStudy = myDesktop->getActiveStudy(); - - if ( !myMapIOSubIndex.IsBound( IObject ) ) { - TColStd_IndexedMapOfInteger Empty; - myMapIOSubIndex.Bind( IObject, Empty ); - } - TColStd_IndexedMapOfInteger& MapIndex = myMapIOSubIndex.ChangeFind( IObject ); - - if (!modeShift) - MapIndex.Clear(); - - TContainerOfId::const_iterator anIter = theIndices.begin(); - TContainerOfId::const_iterator anIterEnd = theIndices.end(); - for(; anIter != anIterEnd; anIter++) - MapIndex.Add(*anIter); - - if ( MapIndex.IsEmpty() ) { - myMapIOSubIndex.UnBind( IObject ); - RemoveIObject( IObject, update ); - } - - myActiveStudy->highlight( IObject, true, update ); - - emit currentSelectionChanged(); - - return !MapIndex.IsEmpty(); -} - -void SALOME_Selection::RemoveIndex( const Handle(SALOME_InteractiveObject)& IObject, int index ) -{ - if ( myMapIOSubIndex.IsBound( IObject ) ) { - TColStd_IndexedMapOfInteger& MapIndex = myMapIOSubIndex.ChangeFind( IObject ); - removeIndex( MapIndex, index ); - } -} - -void SALOME_Selection::ClearIndex() -{ - myMapIOSubIndex.Clear(); -} - - -//================================================================ -// Function : GEOMBase_Helper -// Purpose : Block signal currentSelectionChanged. Use this method to -// deactivate signal before big modification of selection. -// After this modification this signal must be activated and -// method SelectionChanged must be called to notify other oblects -// ( dialogs for example ) -//================================================================ -void SALOME_Selection::BlockSignals( const bool theState ) -{ - blockSignals( theState ); -} - -//================================================================ -// Function : SelectionChanged -// Purpose : Enit signal currentSelectionChanged() -//================================================================ -void SALOME_Selection::SelectionChanged() -{ - emit currentSelectionChanged(); -} diff --git a/src/SALOMEGUI/SALOME_Selection.h b/src/SALOMEGUI/SALOME_Selection.h deleted file mode 100644 index a2e413262..000000000 --- a/src/SALOMEGUI/SALOME_Selection.h +++ /dev/null @@ -1,128 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_Selection.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef SALOME_SELECTION_H -#define SALOME_SELECTION_H - -#include "SALOME_Filter.hxx" -#include "SALOME_ListIO.hxx" -#include "SALOME_ListOfFilter.hxx" -#include "SALOME_InteractiveObject.hxx" -#include "SALOME_DataMapOfIOMapOfInteger.hxx" - -// Qt Includes -#include -#include -#include - -// Open CASCADE Include -#include - -#include - -enum Selection_Mode { - NodeSelection, - CellSelection, - EdgeOfCellSelection, - EdgeSelection, - FaceSelection, - VolumeSelection, - ActorSelection }; - -class SALOME_Selection : public QObject -{ - Q_OBJECT - -public: - - SALOME_Selection(const QString& aName); - ~SALOME_Selection(); - - static bool CreateSelection(const QString& aName) ; - static SALOME_Selection* Selection (const QString& aName) ; - static bool RemoveSelection(const QString& aName) ; - static bool FindSelection (const QString& aName) ; - - void Clear () ; - - void ClearIObjects () ; - int AddIObject ( const Handle(SALOME_InteractiveObject)& anObject, bool update = true) ; - int RemoveIObject ( const Handle(SALOME_InteractiveObject)& anObject, bool update = true) ; - - const SALOME_ListIO& StoredIObjects() ; - int IObjectCount() ; - - Handle(SALOME_InteractiveObject) firstIObject() ; - Handle(SALOME_InteractiveObject) lastIObject() ; - - void AddFilter(const Handle(SALOME_Filter)& aFilter, - bool updateSelection = true ) ; - bool RemoveFilter(const Handle(SALOME_Filter)& aFilter) ; - void ClearFilters(); - const SALOME_ListOfFilter& StoredFilters(); - bool FindFilter(const Handle(SALOME_Filter)& aFilter); - - bool IsOk( const Handle(SALOME_InteractiveObject)& IObject ) ; - - - void SetSelectionMode(Selection_Mode mode, bool activeCompOnly = false); - Selection_Mode SelectionMode(); - bool IsSelectActiveCompOnly() const; - - bool HasIndex( const Handle(SALOME_InteractiveObject)& IObject ); - void GetIndex( const Handle(SALOME_InteractiveObject)& IObject, - TColStd_IndexedMapOfInteger& theIndex ); - - typedef std::set TContainerOfId; - - bool AddOrRemoveIndex( const Handle(SALOME_InteractiveObject)& IObject, int index, bool modeShift, bool update=true ); - bool AddOrRemoveIndex( const Handle(SALOME_InteractiveObject)& IObject, const TColStd_MapOfInteger& theIndices, bool modeShift, bool update=true ); - bool AddOrRemoveIndex( const Handle(SALOME_InteractiveObject)& IObject, const TContainerOfId& theIndices, bool modeShift, bool update=true ); - void RemoveIndex( const Handle(SALOME_InteractiveObject)& IObject, int index ); - bool IsIndexSelected(const Handle(SALOME_InteractiveObject)& IObject, int index); - void ClearIndex(); - - void BlockSignals( const bool ); - void SelectionChanged(); - -signals: - void currentSelectionChanged(); - -private: - QString myName; - SALOME_ListOfFilter myFilters; - SALOME_ListIO myIObjects; - - SALOME_DataMapOfIOMapOfInteger myMapIOSubIndex; - - Selection_Mode mySelectionMode; - bool mySelActiveCompOnly; -}; - -#endif - diff --git a/src/SALOMEGUI/SALOME_TypeFilter.cxx b/src/SALOMEGUI/SALOME_TypeFilter.cxx deleted file mode 100644 index 83f1d71ec..000000000 --- a/src/SALOMEGUI/SALOME_TypeFilter.cxx +++ /dev/null @@ -1,39 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_TypeFilter.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "SALOME_TypeFilter.ixx" -#include "SALOME_InteractiveObject.hxx" -using namespace std; - -SALOME_TypeFilter::SALOME_TypeFilter(const Standard_CString TheKind): -myKind(TheKind){} - -Standard_Boolean SALOME_TypeFilter::IsOk(const Handle(SALOME_InteractiveObject)& anObj) const -{ - return anObj->isComponentType( myKind ); -} diff --git a/src/SALOMEGUI/SALOME_TypeFilter.hxx b/src/SALOMEGUI/SALOME_TypeFilter.hxx deleted file mode 100644 index 3e0ea4bce..000000000 --- a/src/SALOMEGUI/SALOME_TypeFilter.hxx +++ /dev/null @@ -1,116 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_TypeFilter.hxx -// Module : SALOME - -#ifndef _SALOME_TypeFilter_HeaderFile -#define _SALOME_TypeFilter_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_SALOME_TypeFilter_HeaderFile -#include -#endif - -#ifndef _Standard_CString_HeaderFile -#include -#endif -#ifndef _SALOME_Filter_HeaderFile -#include "SALOME_Filter.hxx" -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -#ifndef _Handle_SALOME_InteractiveObject_HeaderFile -#include -#endif - -class SALOME_TypeFilter : public SALOME_Filter { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } -// inline void operator delete(void *anAddress, size_t size) -// { -// if (anAddress) Standard::Free((Standard_Address&)anAddress,size); -// } - // Methods PUBLIC - // -Standard_EXPORT SALOME_TypeFilter(const Standard_CString aGivenKind); -Standard_EXPORT virtual Standard_Boolean IsOk(const Handle(SALOME_InteractiveObject)& anobj) const; -Standard_EXPORT ~SALOME_TypeFilter(); - - - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& SALOME_TypeFilter_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // -Standard_CString myKind; - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/SALOMEGUI/SALOME_TypeFilter.ixx b/src/SALOMEGUI/SALOME_TypeFilter.ixx deleted file mode 100644 index d9e4152bf..000000000 --- a/src/SALOMEGUI/SALOME_TypeFilter.ixx +++ /dev/null @@ -1,83 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_TypeFilter.ixx -// Module : SALOME - -#include "SALOME_TypeFilter.jxx" - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -SALOME_TypeFilter::~SALOME_TypeFilter() {} - - - -Standard_EXPORT Handle_Standard_Type& SALOME_TypeFilter_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(SALOME_Filter); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(SALOME_Filter); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("SALOME_TypeFilter", - sizeof(SALOME_TypeFilter), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(SALOME_TypeFilter) Handle(SALOME_TypeFilter)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(SALOME_TypeFilter) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(SALOME_TypeFilter))) { - _anOtherObject = Handle(SALOME_TypeFilter)((Handle(SALOME_TypeFilter)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& SALOME_TypeFilter::DynamicType() const -{ - return STANDARD_TYPE(SALOME_TypeFilter) ; -} -Standard_Boolean SALOME_TypeFilter::IsKind(const Handle(Standard_Type)& AType) const -{ - return (STANDARD_TYPE(SALOME_TypeFilter) == AType || SALOME_Filter::IsKind(AType)); -} -Handle_SALOME_TypeFilter::~Handle_SALOME_TypeFilter() {} - diff --git a/src/SALOMEGUI/SALOME_TypeFilter.jxx b/src/SALOMEGUI/SALOME_TypeFilter.jxx deleted file mode 100644 index 8dcc1216b..000000000 --- a/src/SALOMEGUI/SALOME_TypeFilter.jxx +++ /dev/null @@ -1,29 +0,0 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_TypeFilter.jxx -// Module : SALOME - -#ifndef _SALOME_TypeFilter_HeaderFile -#include "SALOME_TypeFilter.hxx" -#endif diff --git a/src/SALOME_PY/Makefile.in b/src/SALOME_PY/Makefile.in deleted file mode 100644 index 9b8cf7e33..000000000 --- a/src/SALOME_PY/Makefile.in +++ /dev/null @@ -1,51 +0,0 @@ -# SALOME SALOME_PY : binding of VTK graphics and Python -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Author : Paul RASCLE, EDF -# Module : SALOME -# $Header$ - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -# Libraries targets - -LIB = libSalomePy.la -LIB_SRC = SalomePy.cxx - -LIB_CLIENT_IDL = SALOMEDS.idl \ - SALOMEDS_Attributes.idl \ - SALOME_ContainerManager.idl \ - SALOME_Exception.idl - -CPPFLAGS+=$(QT_INCLUDES) $(PYTHON_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) $(OCC_INCLUDES) -DHAVE_CONFIG_H -LDFLAGS+= $(PYTHON_LIBS) $(QT_MT_LIBS) $(VTK_LIBS) $(OGL_LIBS) -lSalomeGUI -lvtkCommonPython -lvtkGraphicsPython -lvtkImagingPython -lVTKViewer - - -@CONCLUDE@ diff --git a/src/SALOME_PY/SalomePy.cxx b/src/SALOME_PY/SalomePy.cxx deleted file mode 100644 index 3de3dac86..000000000 --- a/src/SALOME_PY/SalomePy.cxx +++ /dev/null @@ -1,133 +0,0 @@ -// SALOME SALOME_PY : binding of VTK graphics and Python -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SalomePy.cxx -// Author : Paul RASCLE, EDF -// Module : SALOME -// $Header$ - -#include -#include - -#include -#include -#include -#include - -#include "QAD_Application.h" -#include "QAD_Desktop.h" -#include "QAD_Study.h" -#include "QAD_RightFrame.h" - -#include "VTKViewer_ViewFrame.h" -#include "VTKViewer_RenderWindow.h" -#include "VTKViewer_RenderWindowInteractor.h" - -#include "utilities.h" - -using namespace std; - - -PyObject* GetPyClass(const char* theClassName){ - static PyObject *aVTKModule = NULL; - if(!aVTKModule){ - if (VTK_MAJOR_VERSION > 3) - aVTKModule = PyImport_ImportModule("libvtkRenderingPython"); - else - aVTKModule = PyImport_ImportModule("libVTKGraphicsPython"); - if(PyErr_Occurred()){ - PyErr_Print(); - return NULL; - } - } - PyObject* aVTKDict = PyModule_GetDict(aVTKModule); - char* aClassName = const_cast(theClassName); - PyObject* aPyClass = PyDict_GetItemString(aVTKDict,aClassName); - //Py_DECREF(aVTKModule); - return aPyClass; -} - - -VTKViewer_ViewFrame* GetVTKViewFrame(){ - QAD_Study* aStudy = QAD_Application::getDesktop()->getActiveStudy(); - QAD_StudyFrame* aStudyFrame = aStudy->getActiveStudyFrame(); - QAD_ViewFrame* aViewFrame = aStudyFrame->getRightFrame()->getViewFrame(); - return dynamic_cast(aViewFrame); -} - - -extern "C" PyObject *libSalomePy_getRenderer(PyObject *self, PyObject *args) -{ - if(VTKViewer_ViewFrame* aVTKViewFrame = GetVTKViewFrame()){ - PyObject* aPyClass = GetPyClass("vtkRenderer"); - vtkRenderer* aVTKObject = aVTKViewFrame->getRenderer(); - return PyVTKObject_New(aPyClass,aVTKObject); - } - return NULL; -} - - -extern "C" PyObject *libSalomePy_getRenderWindow(PyObject *self, PyObject *args) -{ - if(VTKViewer_ViewFrame* aVTKViewFrame = GetVTKViewFrame()){ - PyObject* aPyClass = GetPyClass("vtkRenderWindow"); - vtkRenderWindow* aVTKObject = aVTKViewFrame->getRW()->getRenderWindow(); - return PyVTKObject_New(aPyClass,aVTKObject); - } - return NULL; -} - - -extern "C" PyObject *libSalomePy_getRenderWindowInteractor(PyObject *self, PyObject *args) -{ - if(VTKViewer_ViewFrame* aVTKViewFrame = GetVTKViewFrame()){ - PyObject* aPyClass = GetPyClass("vtkRenderWindowInteractor"); - vtkRenderWindowInteractor* aVTKObject = aVTKViewFrame->getRWInteractor(); - return PyVTKObject_New(aPyClass,aVTKObject); - } - return NULL; -} - - -static PyMethodDef Module_Methods[] = - { - {"getRenderer",libSalomePy_getRenderer,METH_NOARGS}, - {"getRenderWindow",libSalomePy_getRenderWindow,METH_NOARGS}, - {"getRenderWindowInteractor",libSalomePy_getRenderWindow,METH_NOARGS}, - {NULL, NULL} - }; - - -extern "C" void initlibSalomePy() -{ - static char modulename[] = "libSalomePy"; - PyObject* aModule = Py_InitModule(modulename, Module_Methods); - PyObject* aDict = PyModule_GetDict(aModule); - if(PyErr_Occurred()){ - PyErr_Print(); - return; - } - PyObject* anObj = libSalomePy_getRenderer(NULL,NULL); - PyDict_SetItemString(aDict,"renderer",anObj); - Py_DECREF(anObj); -} diff --git a/src/SALOME_PYQT/Makefile.in b/src/SALOME_PYQT/Makefile.in deleted file mode 100644 index a72114d91..000000000 --- a/src/SALOME_PYQT/Makefile.in +++ /dev/null @@ -1,71 +0,0 @@ -# Copyright (C) 2003 CEA/DEN, EDF R&D -# -# -# -# File : Makefile.in -# Author : Nicolas REJNERI -# Module : SALOME -# $Header$ - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -# PyQt -# PYQT_SIPS defined in make_commence.in - -# SIP C++ Python -# SIP defined in make_commence.in -SIP_FLAGS = -t WS_X11 -t Qt_3_0_5 -s ".cc" -c $(CURDIR) -I $(PYQT_SIPS) - - -# SIP input file(s) - -SIP_FILES = SalomePyQt.sip - -# SIP-generated C++ source files (corresponding line should be added for each wrapped class -# contained by SalomePyQt module) - -SIP_SRC=$(CURDIR)/SalomePyQtcmodule.cc \ - $(CURDIR)/sipSalomePyQtSalomePyQt.cc \ - $(CURDIR)/sipSalomePyQtSALOME_Selection.cc - -ifeq ($(SIP_VERS),new2) -MOC_SRC = SalomePyQtcmodule_moc.cxx -MOC_H = SalomePyQtcmodule.h -else -MOC_SRC = sipSalomePyQtProxySalomePyQt_moc.cxx -MOC_H = sipSalomePyQtProxySalomePyQt.h -endif - -# Libraries targets - -LIB = libSalomePyQtcmodule.la - -LIB_SRC += SalomePyQt.cxx SALOME_PYQT_GUI.cxx $(SIP_SRC) $(MOC_SRC) -LIB_MOC = SALOME_PYQT_GUI.h - -#LIB_MOC += sipSalomePyQtProxySalomePyQt.h - -EXPORT_SHAREDPYSCRIPTS = SalomePyQt.py - -LIB_CLIENT_IDL = SALOME_Exception.idl SALOME_ContainerManager.idl - -CPPFLAGS+=$(QT_INCLUDES) $(PYTHON_INCLUDES) $(SIP_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) -LIBS+= $(PYTHON_LIBS) $(SIP_LIBS) $(PYQT_LIBS) $(VTK_LIBS) $(OGL_LIBS) -LDFLAGS+= -lSalomeGUI -lqtcmodule - - -# Custom build step: generate C++ wrapping according to $(SIP_FILES) - -$(SIP_SRC): $(SIP_FILES) - $(SIP) $(SIP_FLAGS) $< - -$(MOC_SRC): $(MOC_H) - $(MOC) $< -o $@ - -@CONCLUDE@ diff --git a/src/SALOME_PYQT/SALOME_PYQT_GUI.cxx b/src/SALOME_PYQT/SALOME_PYQT_GUI.cxx deleted file mode 100644 index 1ec297726..000000000 --- a/src/SALOME_PYQT/SALOME_PYQT_GUI.cxx +++ /dev/null @@ -1,393 +0,0 @@ -//============================================================================= -// File : SALOME_PYQT_GUI.cxx -// Created : mer jun 4 17:17:20 UTC 2003 -// Author : Paul RASCLE, EDF -// Project : SALOME -// Copyright : EDF 2003 -// $Header$ -//============================================================================= - -#include "SALOME_PYQT_GUI.h" - -#include "QAD_Desktop.h" - -#include "SALOME_Selection.h" -#include "SALOME_InteractiveObject.hxx" -#include "SALOMEGUI_QtCatchCorbaException.hxx" -#include "utilities.h" - -#include -#include -#include - -#include -#include - -using namespace std; - -static PyInterp_PyQt *interp = NULL; -static map mapInterp; - -//============================================================================= -/*! - * Calls module.setWorkSpace with PyQt QWorkspace object to use with - * interpreter. - */ -//============================================================================= - -void SALOME_PYQT_GUI::setWorkSpace() -{ - MESSAGE("setWorkSpace"); - PyLockWrapper aLock = interp->GetLockWrapper(); - - // Try to import qt module. If it's not possible don't go on - PyObjWrapper qtmodule(PyImport_ImportModule("qt")); - if(!qtmodule){ - PyErr_Print(); - return ; - } - - PyObjWrapper pyws(sipMapCppToSelf( QAD_Application::getDesktop()->getMainFrame(), - sipClass_QWorkspace)); - PyObjWrapper res(PyObject_CallMethod(_module,"setWorkSpace","O",pyws.get())); - SCRUTE(pyws->ob_refcnt); - if(!res){ - PyErr_Print(); - return ; - } -} - -//============================================================================= -/*! - * Import Python module (from _moduleName) - */ -//============================================================================= -void SALOME_PYQT_GUI::importModule() -{ - PyLockWrapper aLock = interp->GetLockWrapper(); - - PyObjWrapper amod = PyImport_ImportModule("salome"); - if(!amod){ - MESSAGE ( " Problem import salome... " ); - PyErr_Print(); - return; - } - - PyObjWrapper res(PyObject_CallMethod(amod,"salome_init","")); - if(!res){ - MESSAGE ( " Problem... " ); - PyErr_Print(); - return; - } - - _module=PyImport_ImportModule((char*)_moduleName.c_str()); - if(!_module){ - MESSAGE ( " Problem... " ); - PyErr_Print(); - return; - } -} - -//============================================================================= -/*! - * Initialises python interpreter (only one per study), imports python module - * from given module name, sets static reference to module, - * sets module workspace. - */ -//============================================================================= - -void SALOME_PYQT_GUI::initInterp(int StudyID) -{ - MESSAGE("SALOME_PYQT_GUI::initInterp"); - if(mapInterp.find(StudyID) != mapInterp.end()){ - MESSAGE ( "SALOME_PYQT_GUI::initInterp StudyID is found " << StudyID ); - interp = mapInterp[StudyID]; - return; - }else{ - MESSAGE ( "SALOME_PYQT_GUI::initInterp StudyID is not found " << StudyID ); - /* - * The creation of Python interpretor must be protected par a C++ Lock because of C threads - */ - ThreadLock aPyLock = GetPyThreadLock("SALOME_PYQT_GUI::initInterp"); - interp = new PyInterp_PyQt(); - interp->initialize(); - mapInterp[StudyID] = interp; - } - // imports Python GUI module and puts it in _module attribute - importModule(); - // calls _module.setWorkspace and passes the SIP object main workspace - setWorkSpace(); - -} - -//============================================================================= -/*! - * constructor : only calls SALOMEGUI constructor - */ -//============================================================================= -SALOME_PYQT_GUI::SALOME_PYQT_GUI( const QString& theName, QObject* theParent ) : - SALOMEGUI( theName, theParent ),_module(0) -{ - MESSAGE("SALOME_PYQT_GUI::SALOME_PYQT_GUI"); -} - -//============================================================================= -/*! - * destructor : do nothing - */ -//============================================================================= -SALOME_PYQT_GUI::~SALOME_PYQT_GUI() -{ -} - -//============================================================================= -/*! - * Calls python module.OnGUIEvent(theCommandID) - */ -//============================================================================= - -bool SALOME_PYQT_GUI::OnGUIEvent (int theCommandID, - QAD_Desktop* parent) -{ - MESSAGE("SALOME_PYQT_GUI::OnGUIEvent"); - ThreadLock aPyLock = GetPyThreadLock("SALOME_PYQT_GUI::OnGUIEvent"); - PyLockWrapper aLock = interp->GetLockWrapper(); - - PyObjWrapper res(PyObject_CallMethod(_module,"OnGUIEvent","i",theCommandID)); - if(!res){ - PyErr_Print(); - return false; - } - return true; -} - -//============================================================================= -/*! - * no call to python module.OnKeyPress() - */ -//============================================================================= - -bool SALOME_PYQT_GUI::OnKeyPress (QKeyEvent* pe, - QAD_Desktop* parent, - QAD_StudyFrame* studyFrame) -{ - MESSAGE("SALOME_PYQT_GUI::OnKeyPress"); - return true; -} - -//============================================================================= -/*! - * no call to python module.OnMousePress() - */ -//============================================================================= - -bool SALOME_PYQT_GUI::OnMousePress (QMouseEvent* pe , - QAD_Desktop* parent, - QAD_StudyFrame* studyFrame) -{ - MESSAGE("SALOME_PYQT_GUI::OnMousePress"); - return false; -} - -//============================================================================= -/*! - * no call to python module.OnMouseMove() - */ -//============================================================================= - -bool SALOME_PYQT_GUI::OnMouseMove (QMouseEvent* pe , - QAD_Desktop* parent, - QAD_StudyFrame* studyFrame) -{ - // Commented out to avoid multiple traces ... - // MESSAGE("SALOME_PYQT_GUI::OnMouseMove"); - return true; -} - -//============================================================================= -/*! - * Calls initInterp to initialise python interpreter (only one per study) and - * to import python module. Calls module.setSettings() - */ -//============================================================================= - -bool SALOME_PYQT_GUI::SetSettings (QAD_Desktop* parent, char* moduleName) -{ - MESSAGE("SALOME_PYQT_GUI::SetSettings"); - int StudyID = QAD_Application::getDesktop()->getActiveStudy()->getStudyId(); - SCRUTE ( StudyID ); - _moduleName = moduleName + string("GUI"); - SCRUTE(_moduleName); - - // initializes one Python interpreter by study and puts it in interp global variable - // imports Python GUI module and puts it in _module attribute - // calls _module.setWorkspace and passes the SIP object main workspace - initInterp(StudyID); - - PyLockWrapper aLock = interp->GetLockWrapper(); - - _module = PyImport_ImportModule((char*)_moduleName.c_str()); - if(!_module){ - PyErr_Print(); - return false; - } - - PyObjWrapper res(PyObject_CallMethod(_module,"setSettings","")); - if(!res){ - PyErr_Print(); - return false; - } - return true; -} - -//============================================================================= -/*! - * Calls module.customPopup with popup menu to custom, and string values of - * context, parent and selected object (strings defined by DefinePopup, which - * is called before). - */ -//============================================================================= - -bool SALOME_PYQT_GUI::CustomPopup ( QAD_Desktop* parent, - QPopupMenu* popup, - const QString & theContext, - const QString & theParent, - const QString & theObject ) -{ - MESSAGE("SALOME_PYQT_GUI::CustomPopup"); - - MESSAGE ( " theContext : " << theContext.latin1() ); - MESSAGE ( " theParent : " << theParent.latin1() ); - MESSAGE ( " theObject : " << theObject.latin1() ); - - PyLockWrapper aLock = interp->GetLockWrapper(); - - PyObjWrapper pypop(sipMapCppToSelf( popup, sipClass_QPopupMenu)); - - PyObjWrapper res(PyObject_CallMethod(_module,"customPopup", - "Osss",pypop.get(), - theContext.latin1(), - theObject.latin1(), - theParent.latin1())); - if(!res){ - PyErr_Print(); - return false; - } - return true; -} - - -//============================================================================= -/*! - * Calls module.definePopup to modify the strings that define context parent - * and selected object. Called before CustomPopup. - */ -//============================================================================= - -void SALOME_PYQT_GUI::DefinePopup( QString & theContext, - QString & theParent, - QString & theObject ) -{ - MESSAGE("SALOME_PYQT_GUI::DefinePopup"); - theContext = ""; - theObject = ""; - theParent = ""; - - PyLockWrapper aLock = interp->GetLockWrapper(); - - PyObjWrapper res(PyObject_CallMethod(_module,"definePopup","sss", - theContext.latin1(), - theObject.latin1(), - theParent.latin1())); - if(!res){ - PyErr_Print(); - return; - } - char *co, *ob, *pa; - if(!PyArg_ParseTuple(res, "sss", &co, &ob, &pa)) - { - // It's not a valid tuple. Do nothing. - return; - } - - MESSAGE ("parseOk "); - MESSAGE (" --- " << co << " " << ob << " " << pa); - - theContext = co; - theObject = ob; - theParent = pa; - - MESSAGE ( " theContext : " << theContext.latin1() ); - MESSAGE ( " theParent : " << theParent.latin1() ); - MESSAGE ( " theObject : " << theObject.latin1() ); -} - -//============================================================================= -/*! - * Initialize new interpreter (if not exists) with new study ID. - * Calls module.activeStudyChanged with new study ID. Called twice. - */ -//============================================================================= - -bool SALOME_PYQT_GUI::ActiveStudyChanged( QAD_Desktop* parent ) -{ - - int StudyID = parent->getActiveApp()->getActiveStudy()->getStudyId(); - MESSAGE("SALOME_PYQT_GUI::ActiveStudyChanged"<GetLockWrapper(); - - PyObjWrapper res(PyObject_CallMethod(_module,"activeStudyChanged","i", StudyID )); - if(!res){ - PyErr_Print(); - return false; - } - return true; -} - -//============================================================================= -/*! - * no call to python module.BuildPresentation() (not yet ???) - */ -//============================================================================= -void SALOME_PYQT_GUI::BuildPresentation( const Handle(SALOME_InteractiveObject)&, - QAD_ViewFrame* ) -{ -} - -//============================================================================= -/*! - * no call to python module.SupportedViewType() (not yet ???) - */ -//============================================================================= -void SALOME_PYQT_GUI::SupportedViewType(int* /*buffer*/, int /*bufferSize*/ ) -{ -} - -//============================================================================= -/*! - * no call to python module.Deactivate() (not yet ???) - */ -//============================================================================= -void SALOME_PYQT_GUI::Deactivate() -{ -} - - - - -//============================================================================= -/*! - * Component GUI Factory : returns a new GUI obj at each call - */ -//============================================================================= - -extern "C" -{ - Standard_EXPORT SALOMEGUI* GetComponentGUI() { - MESSAGE("SALOME_PYQT_GUI::GetComponentGUI"); - SALOMEGUI* aGUI = new SALOME_PYQT_GUI(""); - return aGUI; - } -} diff --git a/src/SALOME_PYQT/SALOME_PYQT_GUI.h b/src/SALOME_PYQT/SALOME_PYQT_GUI.h deleted file mode 100644 index eb1ca4861..000000000 --- a/src/SALOME_PYQT/SALOME_PYQT_GUI.h +++ /dev/null @@ -1,53 +0,0 @@ -//============================================================================= -// File : SALOME_PYQT_GUI.hxx -// Created : mer jun 4 17:17:20 UTC 2003 -// Author : Paul RASCLE, EDF -// Project : SALOME -// Copyright : EDF 2003 -// $Header$ -//============================================================================= - -#ifndef _SALOME_PYQT_GUI_HXX_ -#define _SALOME_PYQT_GUI_HXX_ - -#include "QAD_Desktop.h" -#include "PyInterp_PyQt.h" -#include "SALOMEGUI.h" - -class SALOME_PYQT_GUI: public SALOMEGUI -{ - Q_OBJECT; - -private: - // save the current Python module in the attribute _module - PyObjWrapper _module; - // save the current Python module name in the attribute _moduleName - string _moduleName; - -public: - - SALOME_PYQT_GUI( const QString& name = "", QObject* parent = 0 ); - virtual ~SALOME_PYQT_GUI(); - - virtual bool OnGUIEvent (int theCommandID, QAD_Desktop* parent); - virtual bool OnKeyPress (QKeyEvent* pe, QAD_Desktop* parent, QAD_StudyFrame* studyFrame); - virtual bool OnMousePress (QMouseEvent* pe, QAD_Desktop* parent, QAD_StudyFrame* studyFrame); - virtual bool OnMouseMove (QMouseEvent* pe, QAD_Desktop* parent, QAD_StudyFrame* studyFrame); - virtual bool SetSettings ( QAD_Desktop* parent, char* moduleName ); - virtual bool CustomPopup ( QAD_Desktop* parent, QPopupMenu* popup, const QString & theContext, - const QString & theParent, const QString & theObject ); - virtual void DefinePopup ( QString & theContext, QString & theParent, QString & theObject ); - virtual bool ActiveStudyChanged( QAD_Desktop* parent); - virtual void BuildPresentation ( const Handle(SALOME_InteractiveObject)& theIO, - QAD_ViewFrame* = 0 ); - virtual void SupportedViewType (int* buffer, int bufferSize); - virtual void Deactivate (); - void initInterp(int studyId); - void importModule(); - void setWorkSpace(); - -protected: - -}; - -#endif diff --git a/src/SALOME_PYQT/SalomePyQt.cxx b/src/SALOME_PYQT/SalomePyQt.cxx deleted file mode 100644 index 863616548..000000000 --- a/src/SALOME_PYQT/SalomePyQt.cxx +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : SalomePyQt.cxx -// Module : SALOME - -#include "SalomePyQt.hxx" - -#include -#include - -#include "QAD_Application.h" -#include "QAD_Desktop.h" -#include "QAD_Study.h" -#include "QAD_FileDlg.h" -#include "QAD_ViewFrame.h" -#include "QAD_RightFrame.h" -#include "QAD_Tools.h" - -#include "QAD_Config.h" -#include "QAD_Settings.h" - -using namespace std; - -QWidget* SalomePyQt::getDesktop() -{ - return (QWidget*)(QAD_Application::getDesktop()); -} - -QWorkspace* SalomePyQt::getMainFrame() -{ - return (QWorkspace*)(QAD_Application::getDesktop()->getMainFrame()); -} - -QMenuBar* SalomePyQt::getMainMenuBar() -{ - return (QMenuBar*)(QAD_Application::getDesktop()->getMainMenuBar()); -} - -int SalomePyQt::getStudyId() -{ - return QAD_Application::getDesktop()->getActiveApp()->getActiveStudy()->getStudyId(); -} - -SALOME_Selection* SalomePyQt::getSelection() -{ - return SALOME_Selection::Selection(QAD_Application::getDesktop()->getActiveApp()->getActiveStudy()->getSelection()); -} - -void SalomePyQt::putInfo( const QString& msg ) -{ - QAD_Application::getDesktop()->putInfo(msg); -} - -void SalomePyQt::putInfo( const QString& msg, int ms ) -{ - QAD_Application::getDesktop()->putInfo(msg, ms); -} - -void SalomePyQt::updateObjBrowser( int studyId, bool updateSelection) -{ - QList& studies = QAD_Application::getDesktop()->getActiveApp()->getStudies(); - for ( QAD_Study* study = studies.first(); study; study = studies.next() ) { - if ( study->getStudyId() == studyId ) { - study->updateObjBrowser( updateSelection ); - break; - } - } -} - -const QString& SalomePyQt::getActiveComponent() -{ - return QAD_Application::getDesktop()->getActiveComponent(); -} - -void SalomePyQt::addStringSetting(QString _name, QString _value, bool _autoValue) -{ - QAD_CONFIG->addSetting(_name, _value, _autoValue); -} - -void SalomePyQt::addIntSetting(QString _name, int _value, bool _autoValue) -{ - QAD_CONFIG->addSetting(_name, _value, _autoValue); -} - -void SalomePyQt::addDoubleSetting(QString _name, double _value, bool _autoValue) -{ - QAD_CONFIG->addSetting(_name, _value, _autoValue); -} - -bool SalomePyQt::removeSettings(QString name) -{ - return QAD_CONFIG->removeSettings( name ); -} - -QString SalomePyQt::getSetting(QString name) -{ - return QAD_CONFIG->getSetting(name); -} - -QString SalomePyQt::getFileName(QWidget* parent, - const QString& initial, - const QStringList& filters, - const QString& caption, - bool open) -{ - return QAD_FileDlg::getFileName(parent, initial, filters, caption, open); -} - -QStringList SalomePyQt::getOpenFileNames(QWidget* parent, - const QString& initial, - const QStringList& filters, - const QString& caption) -{ - return QAD_FileDlg::getOpenFileNames(parent, initial, filters, caption); -} - -QString SalomePyQt::getExistingDirectory(QWidget* parent, - const QString& initial, - const QString& caption) -{ - return QAD_FileDlg::getExistingDirectory(parent, initial, caption); -} - -void SalomePyQt::helpContext(const QString& source, const QString& context) { - //QAD_Application::getDesktop()->helpContext(source, context); -} - -bool SalomePyQt::dumpView(const QString& filename) -{ - QAD_Study* activeStudy = QAD_Application::getDesktop()->getActiveApp()->getActiveStudy(); - if ( !activeStudy ) - return false; - QAD_ViewFrame* activeViewFrame = activeStudy->getActiveStudyFrame()->getRightFrame()->getViewFrame(); - if ( !activeViewFrame ) - return false; - if ( !activeViewFrame->getViewWidget() ) - return false; - - qApp->processEvents(); - QPixmap px = QPixmap::grabWindow( activeViewFrame->getViewWidget()->winId() ); - if ( !filename.isNull() ) { - QString fmt = QAD_Tools::getFileExtensionFromPath( filename ).upper(); - if ( fmt.isEmpty() ) - fmt = QString( "PNG" ); // default format - if ( fmt == "JPG" ) - fmt = "JPEG"; - bool bOk = px.save( filename, fmt.latin1() ); - return bOk; - } - return false; -} - -QPopupMenu* SalomePyQt::getPopupMenu( const MenuName menu ) -{ - QMenuBar* mainMenu = QAD_Application::getDesktop()->getMainMenuBar(); - if ( mainMenu->findItem( menu ) ) { - return mainMenu->findItem( menu )->popup(); - } - return 0; -} diff --git a/src/SALOME_PYQT/SalomePyQt.hxx b/src/SALOME_PYQT/SalomePyQt.hxx deleted file mode 100644 index 91c369aff..000000000 --- a/src/SALOME_PYQT/SalomePyQt.hxx +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright (C) 2003 CEA/DEN, EDF R&D -// -// -// -// File : SalomePyQt.hxx -// Module : SALOME - -#ifndef _SALOME_PYQT_H -#define _SALOME_PYQT_H - -#include - -#include -#include -#include -#include - -enum MenuName { - File = 1, - View = 2, - Edit = 3, - Preferences = 4, - Tools = 5, - Window = 6, - Help = 7 -}; - -class SalomePyQt -{ -public: - static QWidget* getDesktop(); - static QWorkspace* getMainFrame(); - static QMenuBar* getMainMenuBar(); - static QPopupMenu* getPopupMenu( const MenuName menu ); - static SALOME_Selection* getSelection(); - static int getStudyId(); - static void putInfo( const QString& ); - static void putInfo( const QString&, int ); - - static const QString& getActiveComponent(); - - static void updateObjBrowser( int studyId, bool updateSelection); - - static void addStringSetting(QString _name, QString _value, bool _autoValue); - static void addIntSetting(QString _name, int _value, bool _autoValue); - static void addDoubleSetting(QString _name, double _value, bool _autoValue); - static bool removeSettings(QString name); - static QString getSetting(QString name); - - static QString getFileName(QWidget* parent, - const QString& initial, - const QStringList& filters, - const QString& caption, - bool open); - static QStringList getOpenFileNames(QWidget* parent, - const QString& initial, - const QStringList& filters, - const QString& caption); - static QString getExistingDirectory(QWidget* parent, - const QString& initial, - const QString& caption); - static void helpContext(const QString& source, const QString& context); - static bool dumpView(const QString& filename); -}; - -#endif diff --git a/src/SALOME_PYQT/SalomePyQt.sip b/src/SALOME_PYQT/SalomePyQt.sip deleted file mode 100644 index df84b3fc1..000000000 --- a/src/SALOME_PYQT/SalomePyQt.sip +++ /dev/null @@ -1,62 +0,0 @@ -%Module SalomePyQt - -%Import qtmod.sip - -class SALOME_Selection : QObject -{ -%HeaderCode -#include -%End - -public: - SALOME_Selection(const QString &); - void Clear(); - void ClearIObjects(); - -signals: - void currentSelectionChanged(); -}; - -enum MenuName { - File = 1, - View = 2, - Edit = 3, - Preferences = 4, - Tools = 5, - Window = 6, - Help = 7 -}; - -class SalomePyQt -{ -%HeaderCode -#include -%End - -public: - static QWidget* getDesktop(); - static QWorkspace* getMainFrame(); - static QMenuBar* getMainMenuBar(); - static QPopupMenu* getPopupMenu( const MenuName ); - static SALOME_Selection* getSelection(); - static int getStudyId(); - static void putInfo( const QString& ); - static void putInfo( const QString&, int ); - - static const QString& getActiveComponent(); - - static void updateObjBrowser( int, bool ); - - - static bool removeSettings(QString); - static QString getSetting(QString); - static void addStringSetting(QString, QString, bool); - static void addIntSetting(QString, int, bool); - static void addDoubleSetting(QString, double, bool); - - static QString getFileName(QWidget*, const QString&, const QStringList&, const QString&, bool); - static QStringList getOpenFileNames(QWidget*, const QString&, const QStringList&, const QString&); - static QString getExistingDirectory(QWidget*, const QString&, const QString&); - static void helpContext(const QString&, const QString&); - static bool dumpView(const QString&); -}; diff --git a/src/SALOME_SWIG/Makefile.in b/src/SALOME_SWIG/Makefile.in deleted file mode 100644 index a5dd3b7c9..000000000 --- a/src/SALOME_SWIG/Makefile.in +++ /dev/null @@ -1,54 +0,0 @@ -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Author : Paul RASCLE, EDF -# Module : SALOME -# $Header$ - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -# Libraries targets - -LIB = libSALOME_Swigcmodule.la -LIB_SRC = - -SWIG_DEF = libSALOME_Swig.i -#EXPORT_PYSCRIPTS = libSALOME_Swig.py Help.py PyInterp.py salome.py examplevtk1.py supervisionexample.py supervisiongeomexample.py salome_shared_modules.py batchmode_salome.py test_table.py test_big_table.py test_many_objects.py import_hook.py salome_test.py test_remove_ref.py - -EXPORT_PYSCRIPTS = libSALOME_Swig.py batchmode_salome.py - -#EXPORT_SHAREDPYSCRIPTS=kernel_shared_modules.py - -LIB_CLIENT_IDL = SALOMEDS.idl \ - SALOME_Exception.idl - -CPPFLAGS+=$(QT_INCLUDES) $(PYTHON_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) -DHAVE_CONFIG_H -LIBS+= $(PYTHON_LIBS) -LDFLAGS+= -lSalomeGUI - -@CONCLUDE@ diff --git a/src/SALOME_SWIG/batchmode_salome.py b/src/SALOME_SWIG/batchmode_salome.py deleted file mode 100644 index 87edd913b..000000000 --- a/src/SALOME_SWIG/batchmode_salome.py +++ /dev/null @@ -1,270 +0,0 @@ -# Copyright (C) 2003 CEA/DEN, EDF R&D -# -# -# -# File : batchmode_salome.py -# Module : SALOME - -import salome_shared_modules - -from omniORB import CORBA -from LifeCycleCORBA import * -import SALOMEDS -from SALOME_NamingServicePy import * - -#-------------------------------------------------------------------------- - -def ImportComponentGUI(ComponentName): - libName = "lib" + ComponentName + "_Swig" - command = "from " + libName + " import *" - exec ( command ) - constructor = ComponentName + "GUI_Swig()" - command = "gui = " + constructor - exec ( command ) - return gui - - #-------------------------------------------------------------------------- - -def SalomeGUIgetAllSelected(self): - selNumber = self.SelectedCount() - listSelected = [] - for i in range(selNumber): - listSelected.append(self.getSelected(i)) - return listSelected - #-------------------------------------------------------------------------- - -def generateName(prefix = None): - import whrandom; - int = whrandom.randint(1,1000); - if prefix is None: - return "Study" + str(int) - else : - return prefix + str(int) - -from libSALOME_Swig import * -###from SalomePyQt import * -class SalomeGUI(SALOMEGUI_Swig): - getAllSelected = SalomeGUIgetAllSelected - - def getDesktop(self) : -# return SalomePyQt.getDesktop() - return None - - def getSelection(self) : -# return SalomePyQt.getSelection() - return None - - #-------------------------------------------------------------------------- - -def IDToObject(id): - myObj = None - mySO = myStudy.FindObjectID(id); - if mySO is not None: - ok, anAttr = mySO.FindAttribute("AttributeIOR") - if ok: - AtIOR = anAttr._narrow(SALOMEDS.AttributeIOR) - if AtIOR.Value() != "": - myObj = orb.string_to_object(AtIOR.Value()) - return myObj - -def ObjectToSObject(obj): - mySO = None - if obj is not None: - ior = orb.object_to_string(obj) - if ior != "": - mySO = myStudy.FindObjectIOR(ior) - return mySO - -def ObjectToID(obj): - mySO = ObjectToSObject(obj) - if mySO: - return mySO.GetID() - return "" - -def IDToSObject(id): - mySO = myStudy.FindObjectID(id); - return mySO - - #-------------------------------------------------------------------------- - -def PersistentPresentation(theStudy, theSO, theWithID): - # put the sobject's content (with subchildren) to the string - aResult = "" - attrs = theSO.GetAllAttributes() - aLen = len(attrs) - anUncopied = 0 - for a in range(0,aLen): - attr = attrs[a] - if isinstance(attr,SALOMEDS._objref_AttributeTreeNode): - anUncopied += 1 - elif isinstance(attr,SALOMEDS._objref_AttributeTarget): - anUncopied += 1 - elif isinstance(attr,SALOMEDS._objref_AttributeReal) or \ - isinstance(attr,SALOMEDS._objref_AttributeInteger) or \ - isinstance(attr,SALOMEDS._objref_AttributeName) or \ - isinstance(attr,SALOMEDS._objref_AttributeComment) or \ - isinstance(attr,SALOMEDS._objref_AttributePersistentRef) or \ - isinstance(attr,SALOMEDS._objref_AttributeLocalID) or \ - isinstance(attr,SALOMEDS._objref_AttributeUserID): - aResult += " attribute value: " + str(attr.Value()) - elif isinstance(attr,SALOMEDS._objref_AttributeIOR): - aResult += " attribute: IOR" - elif isinstance(attr,SALOMEDS._objref_AttributeSequenceOfReal) or \ - isinstance(attr,SALOMEDS._objref_AttributeSequenceOfInteger): - aResult += " Sequence: " + str(attr.CorbaSequence()) - elif isinstance(attr,SALOMEDS._objref_AttributeDrawable): - aResult += " Drawable: " + str(attr.IsDrawable()) - elif isinstance(attr,SALOMEDS._objref_AttributeSelectable): - aResult += " Selectable: " + str(attr.IsSelectable()) - elif isinstance(attr,SALOMEDS._objref_AttributeExpandable): - aResult += " Expandable: " + str(attr.IsExpandable()) - elif isinstance(attr,SALOMEDS._objref_AttributeOpened): - aResult += " Opened: " + str(attr.IsOpened()) - elif isinstance(attr,SALOMEDS._objref_AttributeTextColor): - aResult += " TextColor: " + str(attr.TextColor()) - elif isinstance(attr,SALOMEDS._objref_AttributeTextHighlightColor): - aResult += " TextHighlightColor: " + str(attr.TextHighlightColor()) - elif isinstance(attr,SALOMEDS._objref_AttributePixMap): - aResult += " PixMap: " + str(attr.GetPixMap()) - elif isinstance(attr,SALOMEDS._objref_AttributeTableOfInteger) or \ - isinstance(attr,SALOMEDS._objref_AttributeTableOfReal): - aResult += " Table with title: " + attr.GetTitle() - elif isinstance(attr,SALOMEDS._objref_AttributePythonObject): - aResult += " PythonObject: " + attr.GetObject() - - if theWithID: - aResult = "sobject: " + theSO.GetID() + " nbattrs: " + str(aLen - anUncopied) + aResult + '\n' - else: - aResult = " nbattrs: " + str(aLen - anUncopied) + aResult + '\n' - anIter = theStudy.NewChildIterator(theSO) - while anIter.More(): - aResult += PersistentPresentation(theStudy, anIter.Value(), theWithID) - anIter.Next() - return aResult - - #-------------------------------------------------------------------------- - -def GetTree(theSO): - # returns the document list tree (as list) - aResult = [theSO.GetID()] - anIter = myStudy.NewChildIterator(theSO) - while anIter.More(): - aResult += GetTree(anIter.Value()) - anIter.Next() - return aResult - - #-------------------------------------------------------------------------- - -def CheckCopyPaste(theSO, theInfo ,theComponentPaste): - aRoot = theSO - while aRoot.GetID() != "0:": - aRoot = aRoot.GetFather() - aTree = GetTree(aRoot) - aStudyPersist = PersistentPresentation(myStudy, aRoot, 1) - - if not myStudyManager.CanCopy(theSO): - raise RuntimeError, " for "+theInfo+" returns false" - - if not myStudyManager.Copy(theSO): - raise RuntimeError, " for "+theInfo+" returns false" - - - if not myStudyManager.CanPaste(theSO): - raise RuntimeError, " for "+theInfo+" returns false" - - # check: before paste study is not changed check - if aStudyPersist != PersistentPresentation(myStudy, aRoot, 1): - raise RuntimeError, "Study is changed before Paste calling for "+theInfo - - aSObj = theSO - if theComponentPaste: - aSObj = theSO.GetFatherComponent() - theInfo = theInfo + "(paste for component)" - if myStudyManager.Paste(aSObj) == None: - raise RuntimeError, " for "+theInfo+" returns None object" - aNewTree = GetTree(aRoot) - aLen = len(aTree) - for a in range(0,aLen): - if aTree[a] != aNewTree[a]: - return myStudy.FindObjectID(aNewTree[a]) - - if aLen < len(aNewTree): - return myStudy.FindObjectID(aNewTree[aLen]) - - raise RuntimeError, "After Copy calling the tree is not changed" - - #-------------------------------------------------------------------------- -def FindFileInDataDir(filename): - import os - datadir = os.getenv("DATA_DIR") - if datadir is not None: - import string - dirs = string.split(datadir, ":") - for dir in dirs: - file = dir + "/" + filename - if os.path.exists(file): - return file; - datadir = os.getenv("KERNEL_ROOT_DIR") + "/examples/" - file = datadir + filename - if os.path.exists(file): - return file; - - return None - -#-------------------------------------------------------------------------- -# initialise the ORB -orb = None - -step = 0 -while step < 100 and orb is None: - orb = CORBA.ORB_init([''], CORBA.ORB_ID) - step = step + 1 - time.sleep(4) - -if orb is None: - print "Warning: ORB has not been initialized !!!" - -# create an LifeCycleCORBA instance -lcc = LifeCycleCORBA(orb) - -step = 0 -while step < 100 and lcc._catalog is None: - lcc = LifeCycleCORBA(orb) - step = step + 1 - time.sleep(4) - -if lcc._catalog is None: - print "Warning: LifeCycleCORBA object is incomplete !!!" - -#create a naming service instance -naming_service = SALOME_NamingServicePy_i(orb) - -# get Study Manager reference -obj = None - -step = 0 -while step < 100 and obj == None: - obj = naming_service.Resolve('myStudyManager') - step = step + 1 - time.sleep(4) - -myStudyManager = obj._narrow(SALOMEDS.StudyManager) - -if myStudyManager is None: - print "Warning: SALOMEDS.StudyManager has not been created !!!" - -# create new study -aListOfOpenStudies = myStudyManager.GetOpenStudies(); -myStudy = None; -if len(aListOfOpenStudies) == 0 : - myStudy = myStudyManager.NewStudy("Study1") -else: - myStudyName = aListOfOpenStudies[0] - myStudy = myStudyManager.GetStudyByName(myStudyName) - -myStudyName = myStudy._get_Name() - -myStudyId = myStudy._get_StudyId() -print myStudyId - - diff --git a/src/SALOME_SWIG/libSALOME_Swig.i b/src/SALOME_SWIG/libSALOME_Swig.i deleted file mode 100644 index 988ad4cbc..000000000 --- a/src/SALOME_SWIG/libSALOME_Swig.i +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : libSALOME_Swig.i -// Author : Paul RASCLE, EDF -// Module : SALOME -// $Header$ - -%module libSALOME_Swig - -//%include "SALOME_NamingService.i" -%include "SALOMEGUI_Swig.i" - diff --git a/src/SALOME_SWIG/supervisionexample.py.in b/src/SALOME_SWIG/supervisionexample.py.in deleted file mode 100644 index 56bdd9bf5..000000000 --- a/src/SALOME_SWIG/supervisionexample.py.in +++ /dev/null @@ -1,85 +0,0 @@ -#============================================================================== -# File : supervisionexample.py -# Created : 23 nov 2001 -# Author : Jean Rahuel -# Project : SALOME -# Copyright : CEA -#============================================================================== - -from SuperV import * - - - -# load this object with Nodes, Links and Datas stored in GraphEssai.xml -# (GraphEssai.xml was created with python in SuperVisionTest and GraphEssai.py) -myGraph = Graph("@ROOT_BUILDDIR@/share/salome/resources/GraphEssai.xml") - -#myGraph = Graph("/home/data/jr_HEAD/build/share/salome/resources/GraphEssai.xml") -# This DataFlow is "valid" : no loop, correct links between Nodes etc... - -print myGraph.IsValid() - -# Get Nodes -myGraph.PrintNodes() -Add,Sub,Mul,Div = myGraph.Nodes() - -# Load Datas -Addx = Add.Input("x",3.) -Addy = Add.Input("y",4.5) -Subx = Sub.Input("x",1.5) - -# Get Output Port -Addz = Add.Port('z') -Subz = Sub.Port('z') -Mulz = Mul.Port('z') -Divz = Div.Port('z') - -# This DataFlow is "executable" : all pending Ports are defined with Datas -print myGraph.IsExecutable() - -# Starts only execution of that DataFlow and gets control immediatly -print myGraph.Run() - -# That DataFlow is running ==> 0 (false) -print myGraph.IsDone() - -# Events of execution : -aStatus,aNode,anEvent,aState = myGraph.Event() -while aStatus : - print aNode.Thread(),aNode.SubGraph(),aNode.Name(),anEvent,aState - aStatus,aNode,anEvent,aState = myGraph.Event() -print myGraph.IsDone() - -# Wait for Completion (but it is already done after event loop ...) -print "Done : ",myGraph.DoneW() - -# Get result -print "Result : ",Divz.ToString() - -# Intermediate results : -print "Intermediate Result Add\z : ",Addz.ToString() -print "Intermediate Result Sub\z : ",Subz.ToString() -print "Intermediate Result Mul\z : ",Mulz.ToString() - -print " " -print "Type : print myGraph.IsDone()" -print " If execution is finished ==> 1 (true)" -print " " -print "Type : print Divz.ToString()" -print " You will get the result" -print " " -print "Type : myGraph.PrintPorts()" -print " to see input and output values of the graph" -print " " -print "Type : Add.PrintPorts()" -print "Type : Sub.PrintPorts()" -print "Type : Mul.PrintPorts()" -print "Type : Div.PrintPorts()" -print " to see input and output values of nodes" - -# Export will create newsupervisionexample.xml and the corresponding .py file -print myGraph.Export("@ROOT_BUILDDIR@/share/salome/resources/newsupervisionexample.xml") - -print " " -print "See file @ROOT_BUILDDIR@/share/salome/resources/newsupervisionexample.xml" -print "See file @ROOT_BUILDDIR@/share/salome/resources/newsupervisionexample.py" diff --git a/src/SALOME_SWIG/supervisiongeomexample.py.in b/src/SALOME_SWIG/supervisiongeomexample.py.in deleted file mode 100644 index 8c56bb1f2..000000000 --- a/src/SALOME_SWIG/supervisiongeomexample.py.in +++ /dev/null @@ -1,103 +0,0 @@ - -# Generated python file of Graph GraphGeom2Essai - -from SuperV import * - -import salome - -import geompy - - -geom = lcc.FindOrLoadComponent("FactoryServer", "Geometry") -geom.GetCurrentStudy(salome.myStudyId) - -myBuilder = salome.myStudy.NewBuilder() - -# Graph creation -GraphGeom2Essai = Graph( 'GraphGeom2Essai' ) -print GraphGeom2Essai.SetAuthor( '' ) -print GraphGeom2Essai.SetComment( '' ) -GraphGeom2Essai.Coords( 0 , 0 ) - -# Creation of Nodes -MakeSphere = GraphGeom2Essai.Node( 'Geometry' , 'Geometry' , 'MakeSphere' ) -print MakeSphere.SetAuthor( '' ) -print MakeSphere.SetContainer( 'FactoryServer' ) -print MakeSphere.SetComment( '' ) -MakeSphere.Coords( 26 , 13 ) -MakeCopy = GraphGeom2Essai.Node( 'Geometry' , 'Geometry' , 'MakeCopy' ) -print MakeCopy.SetAuthor( '' ) -print MakeCopy.SetContainer( 'FactoryServer' ) -print MakeCopy.SetComment( '' ) -MakeCopy.Coords( 219 , 12 ) -MakeTranslation = GraphGeom2Essai.Node( 'Geometry' , 'Geometry' , 'MakeTranslation' ) -print MakeTranslation.SetAuthor( '' ) -print MakeTranslation.SetContainer( 'FactoryServer' ) -print MakeTranslation.SetComment( '' ) -MakeTranslation.Coords( 219 , 159 ) -MakeFuse = GraphGeom2Essai.Node( 'Geometry' , 'Geometry' , 'MakeFuse' ) -print MakeFuse.SetAuthor( '' ) -print MakeFuse.SetContainer( 'FactoryServer' ) -print MakeFuse.SetComment( '' ) -MakeFuse.Coords( 465 , 106 ) - -# Creation of intermediate Output variables and of links -MakeSphereshape = MakeSphere.Port( 'shape' ) -MakeCopyshape1 = GraphGeom2Essai.Link( MakeSphereshape , MakeCopy.Port( 'shape1' ) ) -MakeTranslationshape1 = GraphGeom2Essai.Link( MakeSphereshape , MakeTranslation.Port( 'shape1' ) ) -MakeCopyshape = MakeCopy.Port( 'shape' ) -MakeFuseshape1 = GraphGeom2Essai.Link( MakeCopyshape , MakeFuse.Port( 'shape1' ) ) -MakeTranslationshape = MakeTranslation.Port( 'shape' ) -MakeFuseshape2 = GraphGeom2Essai.Link( MakeTranslationshape , MakeFuse.Port( 'shape2' ) ) - -# Creation of Input datas -MakeSpherex1 = MakeSphere.Input( 'x1' , 0) -MakeSpherey1 = MakeSphere.Input( 'y1' , 0) -MakeSpherez1 = MakeSphere.Input( 'z1' , 0) -MakeSphereradius = MakeSphere.Input( 'radius' , 50) -MakeTranslationx1 = MakeTranslation.Input( 'x1' , 80) -MakeTranslationy1 = MakeTranslation.Input( 'y1' , 0) -MakeTranslationz1 = MakeTranslation.Input( 'z1' , 0) - -# Missing Input datas : None - -# Creation of Output variables -MakeFuseshape = MakeFuse.Port( 'shape' ) - -# State of Ports of the Graph -GraphGeom2Essai.PrintPorts() - -# Start asynchronous run -print GraphGeom2Essai.Run() - -# Done ? -print GraphGeom2Essai.IsDone() - -# Events of execution : -aStatus,aNode,anEvent,aState = GraphGeom2Essai.Event() -while aStatus : - print aNode.Thread(),aNode.SubGraph(),aNode.Name(),anEvent,aState - aStatus,aNode,anEvent,aState = GraphGeom2Essai.Event() -print GraphGeom2Essai.IsDone() - -# Waiting end of execution : -print GraphGeom2Essai.DoneW() - -print " " -print "Type print GraphGeom2Essai.IsDone()" -print "1 <==> It's done" -print " " -print "Type print GraphGeom2Essai.DoneW()" -print "Wait until end of execution : 1(success)" -print " " -print "Type GraphGeom2Essai.PrintPorts()" -print " to see input and output values of the graph" -print " " -print "Type MakeSphere.PrintPorts()" -print "Type MakeCopy.PrintPorts()" -print "Type MakeTranslation.PrintPorts()" -print "Type MakeFuse.PrintPorts()" -print " to see input and output values of nodes" -print " " -print "Type print GraphGeom2Essai.Export('File-Name')" -print "You will get a .py and a .xml file of this graph" diff --git a/src/SALOME_SWIG_WITHOUTIHM/Help.py b/src/SALOME_SWIG_WITHOUTIHM/Help.py deleted file mode 100755 index 404ee4dfc..000000000 --- a/src/SALOME_SWIG_WITHOUTIHM/Help.py +++ /dev/null @@ -1,141 +0,0 @@ -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Help.py -# Author : Paul RASCLE, EDF -# Module : SALOME -# $Header$ - -class SalomeDoc: - def __init__(self, aDoc): - self.doc = aDoc - def __repr__(self): - print self.doc - return "---" - def salome(self): - doc_salome = ''' -MODULE : salome ---------------- -module salome gives access to Salome ressources: -variables: - - salome:orb : CORBA - salome.naming_service : instance of naming Service class - methods: - Resolve(name) : find a CORBA object (ior) by its pathname - Register(name) : register a CORBA object under a pathname - salome.lcc : instance of lifeCycleCORBA class - methods: - FindOrLoadComponent(server,name) : - obtain an Engine (CORBA object) - or launch the Engine if not found, - with a Server name and an Engine name - salome.sg - methods: - updateObjBrowser(bool): - getActiveStudyId(): - getActiveStudyName(): - - SelectedCount(): returns number of selected objects - getSelected(i): returns entry of selected object number i - getAllSelected(): returns list of entry of selected objects - AddIObject(Entry): select an existing Interactive object - RemoveIObject(Entry): remove object from selection - ClearIObjects(): clear selection - - Display(*Entry): - DisplayOnly(Entry): - Erase(Entry): - DisplayAll(): - EraseAll(): - - IDToObject(Entry): returns CORBA reference from entry - - salome.myStudyName : active Study Name - salome.myStudyId : active Study Id - salome.myStudy : the active Study itself (CORBA ior) - methods : defined in SALOMEDS.idl - -methods: - salome.DumpStudy(study) : Dump a study, given the ior ---- -''' - print doc_salome - - def geompy(self): - doc_geompy = ''' -MODULE : geompy ---------------- -module geompy provides an encapsulation of GEOM Engine methods -variables: - geompy.geom : a Geometry Engine, found or loaded - at first import of module geompy. - methods : defined in GEOM_Gen.idl - geompy.myBuilder : a study builder - geompy.father : GEOM root in current study (salome.myStudy) - -methods: - addToStudy(aShape, aName) : add the shape into the current study - --- all methods of GEOM_Gen.idl that returns a shape are encapsulated, - with the same interface : shapes are named with their ior -''' - print doc_geompy - - def supervision(self): - doc_supervision = ''' -MODULES : SALOME_SuperVisionEditor and SALOME_SuperVisionExecutor ------------------------------------------------------------------ -this modules provide access to Editor and Executor Engine methods - -See SUPERV.idl - -In order to run the example (supervisionexample.py) - - Type : from supervisionexample import * - supervisionexample.py contains comments - -A new python example avoids references to LifeCycleCORBA - avoids references to NamingService - avoids references to ModuleCatalog - avoids SuperVisionComponent creation - allows G.Input(...) instead of AddInput(G,...) - replaces Editor/Executor with Graph - allows Nodes, Ports and Links CORBA objects - shortens methods names - ... - - See /SuperVisionTest/resources/GraphExample.py - and GraphExample.xml ---- -''' - print doc_supervision - - - -help = SalomeDoc(''' -Availables modules: - salome : gives access to Salome ressources - geompy : encapsulation of GEOM Engine methods - supervision : gives access to SuperVision Engine -To obtain specific help on a module "truc", type: help.truc() -To run an example, type: import example3 -''') - diff --git a/src/SALOME_SWIG_WITHOUTIHM/Makefile.in b/src/SALOME_SWIG_WITHOUTIHM/Makefile.in deleted file mode 100755 index be103f272..000000000 --- a/src/SALOME_SWIG_WITHOUTIHM/Makefile.in +++ /dev/null @@ -1,52 +0,0 @@ -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Author : Paul RASCLE, EDF -# Module : SALOME -# $Header$ - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -# Libraries targets - -#LIB = libSALOME_Swigcmodule.la -LIB_SRC = - -#SWIG_DEF = libSALOME_Swig.i -EXPORT_PYSCRIPTS = Help.py PyInterp.py salome.py examplevtk1.py supervisionexample.py supervisiongeomexample.py salome_shared_modules.py batchmode_salome.py test_table.py test_big_table.py test_many_objects.py import_hook.py salome_test.py salome_kernel.py salome_study.py salome_iapp.py salome_ComponentGUI.py - -EXPORT_SHAREDPYSCRIPTS=kernel_shared_modules.py - -#LIB_CLIENT_IDL = SALOMEDS.idl \ - #SALOME_Exception.idl - -#CPPFLAGS+=$(QT_INCLUDES) $(PYTHON_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) -DHAVE_CONFIG_H -#LIBS+= $(PYTHON_LIBS) -#LDFLAGS+= -lSalomeGUI - -@CONCLUDE@ diff --git a/src/SALOME_SWIG_WITHOUTIHM/PyInterp.py b/src/SALOME_SWIG_WITHOUTIHM/PyInterp.py deleted file mode 100755 index 483101668..000000000 --- a/src/SALOME_SWIG_WITHOUTIHM/PyInterp.py +++ /dev/null @@ -1,101 +0,0 @@ -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : PyInterp.py -# Author : Paul RASCLE, EDF -# Module : SALOME -# $Header$ - -import sys -from omniORB import CORBA -from LifeCycleCORBA import * -from libSALOME_Swig import * -import SALOMEDS -from SALOME_NamingServicePy import * - - #-------------------------------------------------------------------------- - -def DumpComponent(Study, SO, offset): - it = Study.NewChildIterator(SO) - Builder = Study.NewBuilder() - while it.More(): - CSO = it.Value() - it.Next() - anAttr = Builder.FindOrCreateAttribute(CSO, "AttributeName") - AtName = anAttr._narrow(SALOMEDS.AttributeName) - t_name = AtName.Value() - if t_name[0] == 1: - ofs = 1 - a = "" - while ofs <= offset: - a = a + "--" - ofs = ofs +1 - print a + ">" + CSO.GetID() + " " + t_name[1] - t_RefSO = CSO.ReferencedObject() - if t_RefSO[0] == 1: - RefSO = t_RefSO[1] - ofs = 1 - a = "" - while ofs <= offset: - a = a + " " - ofs = ofs +1 - print a + ">" + RefSO.GetID() - DumpComponent(Study, CSO, offset+2) - - #-------------------------------------------------------------------------- - -def DumpStudy(Study): - itcomp = Study.NewComponentIterator() - while itcomp.More(): - SC = itcomp.Value() - itcomp.Next() - name = SC.ComponentDataType() - print "-> ComponentDataType is " + name - DumpComponent(Study, SC, 1) - - - #-------------------------------------------------------------------------- - -# initialise the ORB -orb = CORBA.ORB_init([''], CORBA.ORB_ID) - -# create an LifeCycleCORBA instance -lcc = LifeCycleCORBA(orb) - -# create an SALOMEGUI_Swig instance -sg = SALOMEGUI_Swig() - -#create an naming service instance -naming_service = SALOME_NamingServicePy_i(orb) - -# get active study name and id -myStudyName = sg.getActiveStudyName() -print myStudyName - -myStudyId = sg.getActiveStudyId() -print myStudyId - -# get Study Manager reference -obj = naming_service.Resolve('myStudyManager') -myStudyManager = obj._narrow(SALOMEDS.StudyManager) - -# get active study -myStudy = myStudyManager.GetStudyByName(myStudyName) diff --git a/src/SALOME_SWIG_WITHOUTIHM/batchmode_salome.py b/src/SALOME_SWIG_WITHOUTIHM/batchmode_salome.py deleted file mode 100755 index 389791622..000000000 --- a/src/SALOME_SWIG_WITHOUTIHM/batchmode_salome.py +++ /dev/null @@ -1,269 +0,0 @@ -# Copyright (C) 2003 CEA/DEN, EDF R&D -# -# -# -# File : batchmode_salome.py -# Module : SALOME - -import salome_shared_modules - -from omniORB import CORBA -from LifeCycleCORBA import * -import SALOMEDS -from SALOME_NamingServicePy import * - -#-------------------------------------------------------------------------- - -def ImportComponentGUI(ComponentName): - libName = "lib" + ComponentName + "_Swig" - command = "from " + libName + " import *" - exec ( command ) - constructor = ComponentName + "GUI_Swig()" - command = "gui = " + constructor - exec ( command ) - return gui - - #-------------------------------------------------------------------------- - -def SalomeGUIgetAllSelected(self): - selNumber = self.SelectedCount() - listSelected = [] - for i in range(selNumber): - listSelected.append(self.getSelected(i)) - return listSelected - #-------------------------------------------------------------------------- - -def generateName(prefix = None): - import whrandom; - int = whrandom.randint(1,1000); - if prefix is None: - return "Study" + str(int) - else : - return prefix + str(int) - -#WITHOUTIHMfrom libSALOME_Swig import * -###from SalomePyQt import * -#WITHOUTIHMclass SalomeGUI(SALOMEGUI_Swig): - #WITHOUTIHMgetAllSelected = SalomeGUIgetAllSelected - - #WITHOUTIHMdef getDesktop(self) : -# return SalomePyQt.getDesktop() - #WITHOUTIHMreturn None - - #WITHOUTIHMdef getSelection(self) : -# return SalomePyQt.getSelection() - #WITHOUTIHMreturn None - - #-------------------------------------------------------------------------- - -def IDToObject(id): - myObj = None - mySO = myStudy.FindObjectID(id); - if mySO is not None: - ok, anAttr = mySO.FindAttribute("AttributeIOR") - if ok: - AtIOR = anAttr._narrow(SALOMEDS.AttributeIOR) - if AtIOR.Value() != "": - myObj = orb.string_to_object(AtIOR.Value()) - return myObj - -def ObjectToSObject(obj): - mySO = None - if obj is not None: - ior = orb.object_to_string(obj) - if ior != "": - mySO = myStudy.FindObjectIOR(ior) - return mySO - -def ObjectToID(obj): - mySO = ObjectToSObject(obj) - if mySO: - return mySO.GetID() - return "" - -def IDToSObject(id): - mySO = myStudy.FindObjectID(id); - return mySO - - #-------------------------------------------------------------------------- - -def PersistentPresentation(theStudy, theSO, theWithID): - # put the sobject's content (with subchildren) to the string - aResult = "" - attrs = theSO.GetAllAttributes() - aLen = len(attrs) - anUncopied = 0 - for a in range(0,aLen): - attr = attrs[a] - if isinstance(attr,SALOMEDS._objref_AttributeTreeNode): - anUncopied += 1 - elif isinstance(attr,SALOMEDS._objref_AttributeTarget): - anUncopied += 1 - elif isinstance(attr,SALOMEDS._objref_AttributeReal) or \ - isinstance(attr,SALOMEDS._objref_AttributeInteger) or \ - isinstance(attr,SALOMEDS._objref_AttributeName) or \ - isinstance(attr,SALOMEDS._objref_AttributeComment) or \ - isinstance(attr,SALOMEDS._objref_AttributePersistentRef) or \ - isinstance(attr,SALOMEDS._objref_AttributeLocalID) or \ - isinstance(attr,SALOMEDS._objref_AttributeUserID): - aResult += " attribute value: " + str(attr.Value()) - elif isinstance(attr,SALOMEDS._objref_AttributeIOR): - aResult += " attribute: IOR" - elif isinstance(attr,SALOMEDS._objref_AttributeSequenceOfReal) or \ - isinstance(attr,SALOMEDS._objref_AttributeSequenceOfInteger): - aResult += " Sequence: " + str(attr.CorbaSequence()) - elif isinstance(attr,SALOMEDS._objref_AttributeDrawable): - aResult += " Drawable: " + str(attr.IsDrawable()) - elif isinstance(attr,SALOMEDS._objref_AttributeSelectable): - aResult += " Selectable: " + str(attr.IsSelectable()) - elif isinstance(attr,SALOMEDS._objref_AttributeExpandable): - aResult += " Expandable: " + str(attr.IsExpandable()) - elif isinstance(attr,SALOMEDS._objref_AttributeOpened): - aResult += " Opened: " + str(attr.IsOpened()) - elif isinstance(attr,SALOMEDS._objref_AttributeTextColor): - aResult += " TextColor: " + str(attr.TextColor()) - elif isinstance(attr,SALOMEDS._objref_AttributeTextHighlightColor): - aResult += " TextHighlightColor: " + str(attr.TextHighlightColor()) - elif isinstance(attr,SALOMEDS._objref_AttributePixMap): - aResult += " PixMap: " + str(attr.GetPixMap()) - elif isinstance(attr,SALOMEDS._objref_AttributeTableOfInteger) or \ - isinstance(attr,SALOMEDS._objref_AttributeTableOfReal): - aResult += " Table with title: " + attr.GetTitle() - elif isinstance(attr,SALOMEDS._objref_AttributePythonObject): - aResult += " PythonObject: " + attr.GetObject() - - if theWithID: - aResult = "sobject: " + theSO.GetID() + " nbattrs: " + str(aLen - anUncopied) + aResult + '\n' - else: - aResult = " nbattrs: " + str(aLen - anUncopied) + aResult + '\n' - anIter = theStudy.NewChildIterator(theSO) - while anIter.More(): - aResult += PersistentPresentation(theStudy, anIter.Value(), theWithID) - anIter.Next() - return aResult - - #-------------------------------------------------------------------------- - -def GetTree(theSO): - # returns the document list tree (as list) - aResult = [theSO.GetID()] - anIter = myStudy.NewChildIterator(theSO) - while anIter.More(): - aResult += GetTree(anIter.Value()) - anIter.Next() - return aResult - - #-------------------------------------------------------------------------- - -def CheckCopyPaste(theSO, theInfo ,theComponentPaste): - aRoot = theSO - while aRoot.GetID() != "0:": - aRoot = aRoot.GetFather() - aTree = GetTree(aRoot) - aStudyPersist = PersistentPresentation(myStudy, aRoot, 1) - - if not myStudyManager.CanCopy(theSO): - raise RuntimeError, " for "+theInfo+" returns false" - - if not myStudyManager.Copy(theSO): - raise RuntimeError, " for "+theInfo+" returns false" - - - if not myStudyManager.CanPaste(theSO): - raise RuntimeError, " for "+theInfo+" returns false" - - # check: before paste study is not changed check - if aStudyPersist != PersistentPresentation(myStudy, aRoot, 1): - raise RuntimeError, "Study is changed before Paste calling for "+theInfo - - aSObj = theSO - if theComponentPaste: - aSObj = theSO.GetFatherComponent() - theInfo = theInfo + "(paste for component)" - if myStudyManager.Paste(aSObj) == None: - raise RuntimeError, " for "+theInfo+" returns None object" - aNewTree = GetTree(aRoot) - aLen = len(aTree) - for a in range(0,aLen): - if aTree[a] != aNewTree[a]: - return myStudy.FindObjectID(aNewTree[a]) - - if aLen < len(aNewTree): - return myStudy.FindObjectID(aNewTree[aLen]) - - raise RuntimeError, "After Copy calling the tree is not changed" - - #-------------------------------------------------------------------------- -def FindFileInDataDir(filename): - import os - datadir = os.getenv("DATA_DIR") - if datadir is not None: - import string - dirs = string.split(datadir, ":") - for dir in dirs: - file = dir + "/" + filename - if os.path.exists(file): - return file; - datadir = os.getenv("KERNEL_ROOT_DIR") + "/examples/" - file = datadir + filename - if os.path.exists(file): - return file; - - return None - -#-------------------------------------------------------------------------- -# initialise the ORB -orb = None - -step = 0 -while step < 100 and orb is None: - orb = CORBA.ORB_init([''], CORBA.ORB_ID) - step = step + 1 - time.sleep(4) - -if orb is None: - print "Warning: ORB has not been initialized !!!" - -# create an LifeCycleCORBA instance -lcc = LifeCycleCORBA(orb) - -step = 0 -while step < 100 and lcc._catalog is None: - lcc = LifeCycleCORBA(orb) - step = step + 1 - time.sleep(4) - -if lcc._catalog is None: - print "Warning: LifeCycleCORBA object is incomplete !!!" - -#create a naming service instance -naming_service = SALOME_NamingServicePy_i(orb) - -# get Study Manager reference -obj = None - -step = 0 -while step < 100 and obj == None: - obj = naming_service.Resolve('myStudyManager') - step = step + 1 - time.sleep(4) - -myStudyManager = obj._narrow(SALOMEDS.StudyManager) - -if myStudyManager is None: - print "Warning: SALOMEDS.StudyManager has not been created !!!" - -# create new study -aListOfOpenStudies = myStudyManager.GetOpenStudies(); -myStudy = None; -if len(aListOfOpenStudies) == 0 : - myStudy = myStudyManager.NewStudy("Study1") -else: - myStudyName = aListOfOpenStudies[0] - myStudy = myStudyManager.GetStudyByName(myStudyName) - -myStudyName = myStudy._get_Name() - -myStudyId = myStudy._get_StudyId() -print myStudyId - diff --git a/src/SALOME_SWIG_WITHOUTIHM/examplevtk1.py b/src/SALOME_SWIG_WITHOUTIHM/examplevtk1.py deleted file mode 100755 index 58a49bec3..000000000 --- a/src/SALOME_SWIG_WITHOUTIHM/examplevtk1.py +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : examplevtk1.py -# Module : SALOME - -import libSalomePy -ren=libSalomePy.renderer -#iren=libSalomePy.interactor - -from libVTKCommonPython import * -from libVTKGraphicsPython import * -cone = vtkConeSource() -cone.SetResolution(8) -coneMapper = vtkPolyDataMapper() -coneMapper.SetInput(cone.GetOutput()) -coneActor = vtkActor() -coneActor.SetMapper(coneMapper) - -ren.AddActor(coneActor) -iren = vtkRenderWindowInteractor() - diff --git a/src/SALOME_SWIG_WITHOUTIHM/import_hook.py b/src/SALOME_SWIG_WITHOUTIHM/import_hook.py deleted file mode 100755 index 1e6613cd3..000000000 --- a/src/SALOME_SWIG_WITHOUTIHM/import_hook.py +++ /dev/null @@ -1,105 +0,0 @@ -""" -This module replaces the standard import mechanism with one -that filters some imports that can't be done more than once. - -This is related to the multi study feature that is implemented -by using the Python multi interpreter feature. -Some modules register objects or classes by calling modules -implemented in C. These operations can't be done multiple times. -So it's very important to control these imports. - -Examples: - - PyQt : import qt calls a C module to register classes - - OmniORB : import *_idl calls a C module to register CORBA interfaces - -Usage: - - First import the module : import import_hook. This module will - replace the original importer mechanism - - - Next register the module names or pattern names to filter out:: - import_hook.register_name("a") - import_hook.register_pattern(pattern) - - where pattern is a function with one parameter, the module name - to be imported, that returns true or false depending if this module is - to be filtered or not. - - - Then it's done - -IMPORTANT : Every subinterpretor has its own import_hook module. import_hook is not shared among subinterpretors. -The mechanism only works if shared_imported and pattern are shared between all subinterpretors. -This is done by calling init_shared_modules(). - -""" -import sys, imp, __builtin__ - -# Keep in shared_imported a copy of dictionnary modules -# that need to be imported only once in multi-study context -shared_imported={} - -# patterns contains functions that returns 1 or 0 depending if -# the module name (argument) must be filtered out or not -# These functions are added by calling register_pattern -patterns=[] - -original_import=__builtin__.__import__ - -def register_name(name): - if shared_imported.has_key(name):return - shared_imported[name]=None - -def register_pattern(pattern): - patterns.append(pattern) - -def is_shared(name): - if shared_imported.has_key(name):return 1 - for pattern in patterns: - if pattern(name) : return 1 - return 0 - -def get_shared_imported(name): - return shared_imported.get(name) -def set_shared_imported(name,module): - shared_imported[name]=module - #print "Module %s shared registered" % name - -def get_shared_imported_with_copy(name): - module_dict= shared_imported.get(name) - m=imp.new_module(name) - m.__dict__.update(module_dict) - return m -def set_shared_imported_with_copy(name,module): - shared_imported[name]=module.__dict__.copy() - #print "Module %s shared registered" % name - -def import_hook(name, globals=None, locals=None, fromlist=None): - module=get_shared_imported(name) - if module: - sys.modules[name]=module - return module - - module= original_import(name, globals, locals, fromlist) - - if is_shared(name): - set_shared_imported(name,module) - return module - -original_reload=__builtin__.reload - -def reload_hook(module): - if is_shared(module.__name__): - return module - return original_reload(module) - -__builtin__.__import__=import_hook -# Reload is not replaced -#__builtin__.reload=reload_hook - -def init_shared_modules(shared_module): - global shared_imported, patterns - shared_imported=shared_module.shared_imported - patterns= shared_module.patterns - shared_imported["salome_shared_modules"]=shared_module - import salome_shared_modules - for m in salome_shared_modules.list_modules: - m.init_shared_modules() diff --git a/src/SALOME_SWIG_WITHOUTIHM/kernel_shared_modules.py b/src/SALOME_SWIG_WITHOUTIHM/kernel_shared_modules.py deleted file mode 100755 index 291e27c26..000000000 --- a/src/SALOME_SWIG_WITHOUTIHM/kernel_shared_modules.py +++ /dev/null @@ -1,75 +0,0 @@ -""" - -""" -import glob,os,sys - -import import_hook -from import_hook import register_name -from import_hook import register_pattern - -register_name("qt") -register_pattern(lambda(x):x.endswith("_idl")) - -register_name("omniORB") -register_name("CosNaming") - -register_name("Engines") -register_name("SALOME") -register_name("SALOMEDS") -register_name("SALOME_ModuleCatalog") - -# BE CAREFUL -# Engines, SALOME, SALOMEDS must be imported in that order because : -# Engines imports SALOME_Component_idl -# SALOME imports SALOME_Session_idl and SALOME_Exception_idl which imports SALOME_Component_idl -# and SALOMEDS imports SALOMEDS_idl and SALOMEDS_Attributes_idl which imports SALOME_Exception_idl -# If SALOME is imported before Engines, that module would not be completely imported -import Engines -import SALOME -import SALOMEDS - -import SALOME_ModuleCatalog -from SALOME_utilities import MESSAGE -# -# We search all Python CORBA (omniorb) modules. -# A Python CORBA module has 2 associated Python packages -# These packages are named : and __POA -# -# Get the SALOMEPATH if set or else use KERNEL_ROOT_DIR that should be set. -salome_path=os.environ.get("SALOMEPATH",os.getenv("KERNEL_ROOT_DIR")) - -# Register all CORBA modules in the path and python modules in shared_modules -path=salome_path.split(":") -# -for rep in path: - rep_salome=os.path.join(rep,"lib","python"+sys.version[:3],"site-packages","salome") - # Find all the *__POA packages in the path - for elem in glob.glob(os.path.join(rep_salome,"*__POA")): - if os.path.isdir(elem): - # Found a directory (Python package) named *__POA - module__POA=os.path.basename(elem) - module=module__POA[:-5] - MESSAGE( "Register CORBA module: " + module + ". Directory: " + os.path.abspath(elem)[:-5] ) - register_name(module) - - # Now we import modules found in shared_modules directory - for elem in glob.glob(os.path.join(rep_salome,"shared_modules","*.py")): - module=os.path.basename(elem)[:-3] - MESSAGE( "Register Python module: " + module + ". Location: " + os.path.abspath(elem) ) - register_name(module) - -def init_shared_modules(): - """ - This function initializes shared modules that need to be - """ - # EDF-CCAR: - # Problem with omniORB : omniORB creates a C Python module named _omnipy - # this module has sub-modules : omni_func, ... - # _omnipy is quite a package but import with Python sub-interpreters does not seem to work - # To make it work we need to add those sub-modules in sys.modules - import sys - import _omnipy - sys.modules["_omnipy.omni_func"]=_omnipy.omni_func - sys.modules["_omnipy.poa_func"]=_omnipy.poa_func - sys.modules["_omnipy.poamanager_func"]=_omnipy.poamanager_func - sys.modules["_omnipy.orb_func"]=_omnipy.orb_func diff --git a/src/SALOME_SWIG_WITHOUTIHM/salome.py b/src/SALOME_SWIG_WITHOUTIHM/salome.py deleted file mode 100755 index e8d5d5bac..000000000 --- a/src/SALOME_SWIG_WITHOUTIHM/salome.py +++ /dev/null @@ -1,63 +0,0 @@ -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : salome.py -# Author : Paul RASCLE, EDF -# Module : SALOME -# $Header$ - -from salome_kernel import * -from salome_study import * -from salome_iapp import * - -salome_initial=1 -def salome_init(theStudyId=0): - """ - Performs only once SALOME general purpose intialisation for scripts. - optional argument : theStudyId - When in embedded interpreter inside IAPP, theStudyId is not used - When used without GUI (external interpreter) - 0 : create a new study (default). - n (>0) : try connection to study with Id = n, or create a new one - if study not found. - If study creation, its Id may be different from theStudyId ! - Provides: - orb reference to CORBA - lcc a LifeCycleCorba instance - naming_service a naming service instance - cm reference to the container manager - sg access to SALOME GUI (when linked with IAPP GUI) - myStudyManager the study manager - myStudyId active study identifier - myStudy active study itself (CORBA reference) - myStudyName active study name - """ - global salome_initial - global orb, lcc, naming_service, cm - global sg - global myStudyManager, myStudyId, myStudy, myStudyName - - if salome_initial: - salome_initial=0 - sg = salome_iapp_init() - orb, lcc, naming_service, cm = salome_kernel_init() - myStudyManager, myStudyId, myStudy, myStudyName =salome_study_init(theStudyId) - diff --git a/src/SALOME_SWIG_WITHOUTIHM/salome_ComponentGUI.py b/src/SALOME_SWIG_WITHOUTIHM/salome_ComponentGUI.py deleted file mode 100644 index 617c88218..000000000 --- a/src/SALOME_SWIG_WITHOUTIHM/salome_ComponentGUI.py +++ /dev/null @@ -1,56 +0,0 @@ -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : salome.py -# Author : Paul RASCLE, EDF -# Module : SALOME -# $Header$ - - -# to replace some function from _SWIG, outside GUI - -# --- From GeometryGUI_SWIG - - #-------------------------------------------------------------------------- - -def getIndexTopology(aSubId, aMainId): - return 0 - - #-------------------------------------------------------------------------- - -def getShapeTypeString(aSubId): - return "SubShape" - - #-------------------------------------------------------------------------- - -# --- From SMESHGUI_SWIG - - #-------------------------------------------------------------------------- - -def Init(studyId): - return - - #-------------------------------------------------------------------------- - -def SetName(objId, name): - return - - #-------------------------------------------------------------------------- diff --git a/src/SALOME_SWIG_WITHOUTIHM/salome_iapp.py b/src/SALOME_SWIG_WITHOUTIHM/salome_iapp.py deleted file mode 100644 index befa0d075..000000000 --- a/src/SALOME_SWIG_WITHOUTIHM/salome_iapp.py +++ /dev/null @@ -1,74 +0,0 @@ -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : salome_iapp.py -# Author : Paul RASCLE, EDF -# Module : SALOME -# $Header$ - -from libSALOME_Swig import * -import salome_ComponentGUI - - #-------------------------------------------------------------------------- - -IN_SALOME_GUI=0 - -def ImportComponentGUI(ComponentName): - if IN_SALOME_GUI: - libName = "lib" + ComponentName + "_Swig" - command = "from " + libName + " import *" - exec ( command ) - constructor = ComponentName + "_Swig()" - command = "gui = " + constructor - exec ( command ) - return gui - else: - print "Warning: ImportComponentGUI(",ComponentName,") outside GUI !" - print "calls to GUI methods may crash..." - return salome_ComponentGUI - - #-------------------------------------------------------------------------- - -def SalomeGUIgetAllSelected(self): - selNumber = self.SelectedCount() - listSelected = [] - for i in range(selNumber): - listSelected.append(self.getSelected(i)) - return listSelected - -class SalomeGUI(SALOMEGUI_Swig): - getAllSelected = SalomeGUIgetAllSelected - - #-------------------------------------------------------------------------- - -salome_iapp_initial = 1 - -def salome_iapp_init(): - global salome_iapp_initial - global sg,IN_SALOME_GUI - - if salome_iapp_initial: - salome_iapp_initial=0 - - # create a SALOMEGUI_Swig instance - sg = SalomeGUI() - IN_SALOME_GUI=sg.hasDesktop() - return sg diff --git a/src/SALOME_SWIG_WITHOUTIHM/salome_kernel.py b/src/SALOME_SWIG_WITHOUTIHM/salome_kernel.py deleted file mode 100644 index 40fe9e124..000000000 --- a/src/SALOME_SWIG_WITHOUTIHM/salome_kernel.py +++ /dev/null @@ -1,55 +0,0 @@ -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : salome_kernel.py -# Author : Paul RASCLE, EDF -# Module : SALOME -# $Header$ - -from omniORB import CORBA -from LifeCycleCORBA import * -from SALOME_NamingServicePy import * -from SALOME_utilities import * -import Engines - -salome_kernel_initial=1 - -def salome_kernel_init(): - global salome_kernel_initial - global orb, lcc, naming_service, cm - - if salome_kernel_initial: - salome_kernel_initial = 0 - - # initialise the ORB - orb = CORBA.ORB_init([''], CORBA.ORB_ID) - - # create a LifeCycleCORBA instance - lcc = LifeCycleCORBA(orb) - - #create a naming service instance - naming_service = SALOME_NamingServicePy_i(orb) - - # get Container Manager - obj = naming_service.Resolve('/ContainerManager') - cm = obj._narrow(Engines.ContainerManager) - - return orb, lcc, naming_service, cm diff --git a/src/SALOME_SWIG_WITHOUTIHM/salome_shared_modules.py b/src/SALOME_SWIG_WITHOUTIHM/salome_shared_modules.py deleted file mode 100755 index ebc0d1292..000000000 --- a/src/SALOME_SWIG_WITHOUTIHM/salome_shared_modules.py +++ /dev/null @@ -1,89 +0,0 @@ -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : salome_shared_modules.py -# Module : SALOME - -from SALOME_utilities import * - -""" -This module with help of import_hook and *_shared_modules -filters imports when using the embedded Python interpretor. - -Some imports can't be done more than once. -This is related to the multi study feature that is implemented -by using the Python multi interpreter feature. -Some modules register objects or classes by calling modules -implemented in C. These operations can't be done multiple times. -So it's very important to control these imports. - -Examples: - - PyQt : import qt calls a C module to register classes - - OmniORB : import *_idl calls a C module to register CORBA interfaces - -Usage: - - First : the module salome_shared_modules is imported by main Python interpretor. - It will keep a dictionnary and a list that are shared among all - the subinterpretors and imports import_hook module that replaces - the standard import mechanism par one that prevents more than one import - for some modules identified by name (call register_name) or by a - validator (call register_pattern). - - Calls to register_name and register_pattern are done in modules named *_shared_modules - that could be found in the path SALOMEPATH - -""" -import glob,os,sys - -import import_hook -# shared_imported, patterns, register_name, register_pattern -# will be shared by all Python sub interpretors -from import_hook import shared_imported -from import_hook import patterns -from import_hook import register_name -from import_hook import register_pattern - -register_name("salome_shared_modules") - -# Get the SALOMEPATH if set or else use KERNEL_ROOT_DIR that should be set. -salome_path=os.environ.get("SALOMEPATH",os.getenv("KERNEL_ROOT_DIR")) - -list_modules=[] - -# Import all *_shared_modules in the path and store them in list_modules -path=salome_path.split(":") -for rep in path: - # Import all *_shared_modules in rep - for f in glob.glob(os.path.join(rep,"lib","python"+sys.version[:3],"site-packages","salome","shared_modules","*_shared_modules.py")): - try: - m=__import__(os.path.splitext(os.path.basename(f))[0]) - list_modules.append(m) - except: - pass - -# -# If shared modules have been imported before installing import mechanism -# we add them to shared_imported -# -for name,module in sys.modules.items(): - if import_hook.is_shared(name) and shared_imported.get(name) is None: - #print "Module shared added to shared_imported: ",name - shared_imported[name]=module diff --git a/src/SALOME_SWIG_WITHOUTIHM/salome_study.py b/src/SALOME_SWIG_WITHOUTIHM/salome_study.py deleted file mode 100644 index f643e844b..000000000 --- a/src/SALOME_SWIG_WITHOUTIHM/salome_study.py +++ /dev/null @@ -1,323 +0,0 @@ -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : salome_study.py -# Author : Paul RASCLE, EDF -# Module : SALOME -# $Header$ - -import salome_kernel -import SALOMEDS -import salome_iapp - -#-------------------------------------------------------------------------- - -def DumpComponent(Study, SO, offset): - it = Study.NewChildIterator(SO) - Builder = Study.NewBuilder() - while it.More(): - CSO = it.Value() - it.Next() - anAttr = Builder.FindOrCreateAttribute(CSO, "AttributeName") - AtName = anAttr._narrow(SALOMEDS.AttributeName) - t_name = AtName.Value() - if t_name[0] == 1: - ofs = 1 - a = "" - while ofs <= offset: - a = a + "--" - ofs = ofs +1 - MESSAGE( a + ">" + str(CSO.GetID()) + " " + str(t_name[1]) ) - t_RefSO = CSO.ReferencedObject() - if t_RefSO[0] == 1: - RefSO = t_RefSO[1] - ofs = 1 - a = "" - while ofs <= offset: - a = a + " " - ofs = ofs +1 - MESSAGE( a + ">" + str(RefSO.GetID()) ) - DumpComponent(Study, CSO, offset+2) - - #-------------------------------------------------------------------------- - -def DumpStudy(Study): - itcomp = Study.NewComponentIterator() - while itcomp.More(): - SC = itcomp.Value() - itcomp.Next() - name = SC.ComponentDataType() - MESSAGE( "-> ComponentDataType is " + name ) - DumpComponent(Study, SC, 1) - - - #-------------------------------------------------------------------------- - -def IDToObject(id): - myObj = None - mySO = myStudy.FindObjectID(id); - if mySO is not None: - ok, anAttr = mySO.FindAttribute("AttributeIOR") - if ok: - AtIOR = anAttr._narrow(SALOMEDS.AttributeIOR) - if AtIOR.Value() != "": - myObj = orb.string_to_object(AtIOR.Value()) - return myObj - -def ObjectToSObject(obj): - mySO = None - if obj is not None: - ior = orb.object_to_string(obj) - if ior != "": - mySO = myStudy.FindObjectIOR(ior) - return mySO - -def ObjectToID(obj): - mySO = ObjectToSObject(obj) - if mySO: - return mySO.GetID() - return "" - -def IDToSObject(id): - mySO = myStudy.FindObjectID(id); - return mySO - - #-------------------------------------------------------------------------- - -def generateName(prefix = None): - import whrandom; - int = whrandom.randint(1,1000); - if prefix is None: - return "Study" + str(int) - else : - return prefix + str(int) - - #-------------------------------------------------------------------------- - -def PersistentPresentation(theStudy, theSO, theWithID): - # put the sobject's content (with subchildren) to the string - aResult = "" - attrs = theSO.GetAllAttributes() - aLen = len(attrs) - anUncopied = 0 - for a in range(0,aLen): - attr = attrs[a] - if isinstance(attr,SALOMEDS._objref_AttributeTreeNode): - anUncopied += 1 - elif isinstance(attr,SALOMEDS._objref_AttributeTarget): - anUncopied += 1 - elif isinstance(attr,SALOMEDS._objref_AttributeReal) or \ - isinstance(attr,SALOMEDS._objref_AttributeInteger) or \ - isinstance(attr,SALOMEDS._objref_AttributeName) or \ - isinstance(attr,SALOMEDS._objref_AttributeComment) or \ - isinstance(attr,SALOMEDS._objref_AttributePersistentRef) or \ - isinstance(attr,SALOMEDS._objref_AttributeLocalID) or \ - isinstance(attr,SALOMEDS._objref_AttributeUserID): - aResult += " attribute value: " + str(attr.Value()) - elif isinstance(attr,SALOMEDS._objref_AttributeIOR): - aResult += " attribute: IOR" - elif isinstance(attr,SALOMEDS._objref_AttributeSequenceOfReal) or \ - isinstance(attr,SALOMEDS._objref_AttributeSequenceOfInteger): - aResult += " Sequence: " + str(attr.CorbaSequence()) - elif isinstance(attr,SALOMEDS._objref_AttributeDrawable): - aResult += " Drawable: " + str(attr.IsDrawable()) - elif isinstance(attr,SALOMEDS._objref_AttributeSelectable): - aResult += " Selectable: " + str(attr.IsSelectable()) - elif isinstance(attr,SALOMEDS._objref_AttributeExpandable): - aResult += " Expandable: " + str(attr.IsExpandable()) - elif isinstance(attr,SALOMEDS._objref_AttributeOpened): - aResult += " Opened: " + str(attr.IsOpened()) - elif isinstance(attr,SALOMEDS._objref_AttributeTextColor): - aResult += " TextColor: " + str(attr.TextColor()) - elif isinstance(attr,SALOMEDS._objref_AttributeTextHighlightColor): - aResult += " TextHighlightColor: " + str(attr.TextHighlightColor()) - elif isinstance(attr,SALOMEDS._objref_AttributePixMap): - aResult += " PixMap: " + str(attr.GetPixMap()) - elif isinstance(attr,SALOMEDS._objref_AttributeTableOfInteger) or \ - isinstance(attr,SALOMEDS._objref_AttributeTableOfReal): - aResult += " Table with title: " + attr.GetTitle() - elif isinstance(attr,SALOMEDS._objref_AttributePythonObject): - aResult += " PythonObject: " + attr.GetObject() - - if theWithID: - aResult = "sobject: " + theSO.GetID() + " nbattrs: " + str(aLen - anUncopied) + aResult + '\n' - else: - aResult = " nbattrs: " + str(aLen - anUncopied) + aResult + '\n' - anIter = theStudy.NewChildIterator(theSO) - while anIter.More(): - aResult += PersistentPresentation(theStudy, anIter.Value(), theWithID) - anIter.Next() - return aResult - - #-------------------------------------------------------------------------- - -def GetTree(theSO): - # returns the document list tree (as list) - aResult = [theSO.GetID()] - anIter = myStudy.NewChildIterator(theSO) - while anIter.More(): - aResult += GetTree(anIter.Value()) - anIter.Next() - return aResult - - #-------------------------------------------------------------------------- - -def CheckCopyPaste(theSO, theInfo ,theComponentPaste): - aRoot = theSO - while aRoot.GetID() != "0:": - aRoot = aRoot.GetFather() - aTree = GetTree(aRoot) - aStudyPersist = PersistentPresentation(myStudy, aRoot, 1) - - if not myStudyManager.CanCopy(theSO): - raise RuntimeError, " for "+theInfo+" returns false" - - if not myStudyManager.Copy(theSO): - raise RuntimeError, " for "+theInfo+" returns false" - - - if not myStudyManager.CanPaste(theSO): - raise RuntimeError, " for "+theInfo+" returns false" - - # check: before paste study is not changed check - if aStudyPersist != PersistentPresentation(myStudy, aRoot, 1): - raise RuntimeError, "Study is changed before Paste calling for "+theInfo - - aSObj = theSO - if theComponentPaste: - aSObj = theSO.GetFatherComponent() - theInfo = theInfo + "(paste for component)" - if myStudyManager.Paste(aSObj) == None: - raise RuntimeError, " for "+theInfo+" returns None object" - aNewTree = GetTree(aRoot) - aLen = len(aTree) - for a in range(0,aLen): - if aTree[a] != aNewTree[a]: - return myStudy.FindObjectID(aNewTree[a]) - - if aLen < len(aNewTree): - return myStudy.FindObjectID(aNewTree[aLen]) - - raise RuntimeError, "After Copy calling the tree is not changed" - - #-------------------------------------------------------------------------- - -def FindFileInDataDir(filename): - import os - datadir = os.getenv("DATA_DIR") - if datadir is not None: - import string - dirs = string.split(datadir, ":") - for dir in dirs: - file = dir + "/" + filename - if os.path.exists(file): - return file; - datadir = os.getenv("KERNEL_ROOT_DIR") + "/examples/" - file = datadir + filename - if os.path.exists(file): - return file; - - return None - - #-------------------------------------------------------------------------- - -salome_study_ID = -1 - -def getActiveStudy(theStudyId=0): - global salome_study_ID - - print "getActiveStudy" - sg = salome_iapp.salome_iapp_init() - if salome_study_ID == -1: - if sg.hasDesktop(): - print "---in gui" - salome_study_ID = sg.getActiveStudyId() - else: - print "---outside gui" - if theStudyId: - aStudy=myStudyManager.GetStudyByID(theStudyId) - if aStudy: - print "connection to existing study ", theStudyId - salome_study_ID = theStudyId - if salome_study_ID == -1: - salome_study_ID = createNewStudy() - print"--- Study Id ", salome_study_ID - return salome_study_ID - - #-------------------------------------------------------------------------- - -def createNewStudy(): - print "createNewStudy" - i=1 - aStudyName = "noName" - nameAlreadyInUse = 1 - listOfOpenStudies = myStudyManager.GetOpenStudies() - print listOfOpenStudies - while nameAlreadyInUse: - aStudyName = "extStudy_%d"%i - if aStudyName not in listOfOpenStudies: - nameAlreadyInUse=0 - else: - i = i+1 - - theStudy = myStudyManager.NewStudy(aStudyName) - theStudyId = theStudy._get_StudyId() - print aStudyName, theStudyId - return theStudyId - - #-------------------------------------------------------------------------- - -salome_study_initial = 1 - -def salome_study_init(theStudyId=0): - """ - Performs only once study creation or connection. - optional argument : theStudyId - When in embedded interpreter inside IAPP, theStudyId is not used - When used without GUI (external interpreter) - 0 : create a new study (default). - n (>0) : try connection to study with Id = n, or create a new one - if study not found. - """ - - global salome_study_initial - global myStudyManager, myStudyId, myStudy, myStudyName - global orb, lcc, naming_service, cm - - if salome_study_initial: - salome_study_initial = 0 - - orb, lcc, naming_service, cm = salome_kernel.salome_kernel_init() - - # get Study Manager reference - print "looking for studyManager ..." - obj = naming_service.Resolve('myStudyManager') - myStudyManager = obj._narrow(SALOMEDS.StudyManager) - print "studyManager found" - - # get active study Id, ref and name - myStudyId = getActiveStudy(theStudyId) - print "myStudyId",myStudyId - myStudy = myStudyManager.GetStudyByID(myStudyId) - myStudyName = myStudy._get_Name() - - return myStudyManager, myStudyId, myStudy, myStudyName - diff --git a/src/SALOME_SWIG_WITHOUTIHM/salome_test.py b/src/SALOME_SWIG_WITHOUTIHM/salome_test.py deleted file mode 100755 index a1e63a6cc..000000000 --- a/src/SALOME_SWIG_WITHOUTIHM/salome_test.py +++ /dev/null @@ -1,486 +0,0 @@ -# SALOME SALOME_SWIG : binding of C++ implementation and Python -# -# Copyright (C) 2003 CEA/DEN, EDF R&D -# -# -# -# File : salome_test.py -# Module : SALOME - -print "Test the application loading GEOM, SMESH, VISU, MED, components and doing some" -print "operation within the components." - -import salome -from salome import sg -import SALOMEDS -import os - -import SALOME_ModuleCatalog - -print "======================================================================" -print " Get Catalog " -print "======================================================================" -obj = salome.naming_service.Resolve('Kernel/ModulCatalog') -catalog = obj._narrow(SALOME_ModuleCatalog.ModuleCatalog) - -print "======================================================================" -print " Create Study " -print "======================================================================" - -comp = catalog.GetComponent("GEOM") -if comp is None: - raise RuntimeError,"Component GEOM not found in Module Catalog." - -import geompy - -print "=================================" -print " create AttributeReal " -print "=================================" -A = geompy.myBuilder.FindOrCreateAttribute(geompy.father, "AttributeReal") -if A == None : - raise RuntimeError, "Can't create AttributeReal attribute" -A = A._narrow(SALOMEDS.AttributeReal) -A.SetValue(0.0001) -if A.Value() != 0.0001: - raise RuntimeError, "Error : wrong value of AttributeReal" - -print -print " =========== Test Geometry ==========================" -print - -print "===================================" -print " define a box" -print "===================================" - -box = geompy.MakeBox(0., 0., 0., 100., 200., 300.) -idbox = geompy.addToStudy(box,"box") - -print -print "============= Test SMESH =============================" -print - -import StdMeshers - -comp = catalog.GetComponent("SMESH") -if comp is None: - raise RuntimeError,"Component SMESH not found in Module Catalog." - -comp = catalog.GetComponent("MED") -if comp is None: - raise RuntimeError,"Component MED not found in Module Catalog." - -import SMESH - -geom = salome.lcc.FindOrLoadComponent("FactoryServer", "GEOM") -myBuilder = salome.myStudy.NewBuilder() - -smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH") -smeshgui = salome.ImportComponentGUI("SMESH") -smeshgui.Init(salome.myStudyId); - -ShapeTypeCompSolid = 1 -ShapeTypeSolid = 2 -ShapeTypeShell = 3 -ShapeTypeFace = 4 -ShapeTypeWire = 5 -ShapeTypeEdge = 6 -ShapeTypeVertex = 7 - -# ---- define a box - -box = geompy.MakeBox(0., 0., 0., 100., 200., 300.) -idbox = geompy.addToStudy(box,"box") - -# ---- add first face of box in study - -subShapeList=geompy.SubShapeAll(box,ShapeTypeFace) -face=subShapeList[0] -name = geompy.SubShapeName(face, box) -print name -idface=geompy.addToStudyInFather(box,face,name) - -# ---- add shell from box in study - -subShellList=geompy.SubShapeAll(box,ShapeTypeShell) -shell = subShellList[0] -name = geompy.SubShapeName(shell, box) -print name -idshell=geompy.addToStudyInFather(box,shell,name) - -# ---- add first edge of face in study - -edgeList = geompy.SubShapeAll(face,ShapeTypeEdge) -edge=edgeList[0]; -name = geompy.SubShapeName(edge, face) -print name -idedge=geompy.addToStudyInFather(face,edge,name) - - -# ---- SMESH - -# ---- create Hypothesis - -print "-------------------------- create Hypothesis" -print "-------------------------- LocalLength" -hypLen1 = smesh.CreateHypothesis( "LocalLength", "libStdMeshersEngine.so" ) -hypLen1.SetLength(100) -print hypLen1.GetName() -print hypLen1.GetId() -print hypLen1.GetLength() - -smeshgui.SetName(salome.ObjectToID(hypLen1), "Local_Length_100") - -print "-------------------------- NumberOfSegments" -hypNbSeg1= smesh.CreateHypothesis( "NumberOfSegments", "libStdMeshersEngine.so" ) -hypNbSeg1.SetNumberOfSegments(7) -print hypNbSeg1.GetName() -print hypNbSeg1.GetId() -print hypNbSeg1.GetNumberOfSegments() - -smeshgui.SetName(salome.ObjectToID(hypNbSeg1), "NumberOfSegments_7") - -print "-------------------------- MaxElementArea" -hypArea1 = smesh.CreateHypothesis( "MaxElementArea", "libStdMeshersEngine.so" ) -hypArea1.SetMaxElementArea(2500) -print hypArea1.GetName() -print hypArea1.GetId() -print hypArea1.GetMaxElementArea() - -smeshgui.SetName(salome.ObjectToID(hypArea1), "MaxElementArea_2500") - -print "-------------------------- MaxElementArea" -hypArea2 = smesh.CreateHypothesis( "MaxElementArea", "libStdMeshersEngine.so" ) -hypArea2.SetMaxElementArea(500) -print hypArea2.GetName() -print hypArea2.GetId() -print hypArea2.GetMaxElementArea() - -smeshgui.SetName(salome.ObjectToID(hypArea2), "MaxElementArea_500") - -print "-------------------------- Regular_1D" -algoReg = smesh.CreateHypothesis( "Regular_1D", "libStdMeshersEngine.so" ) -listHyp=algoReg.GetCompatibleHypothesis() -for hyp in listHyp: - print hyp -print algoReg.GetName() -print algoReg.GetId() - -smeshgui.SetName(salome.ObjectToID(algoReg), "Regular_1D" ) - -print "-------------------------- MEFISTO_2D" -algoMef = smesh.CreateHypothesis( "MEFISTO_2D", "libStdMeshersEngine.so" ) -listHyp=algoMef.GetCompatibleHypothesis() -for hyp in listHyp: - print hyp -print algoMef.GetName() -print algoMef.GetId() - -smeshgui.SetName(salome.ObjectToID(algoMef), "MEFISTO_2D" ) - -# ---- add hypothesis to box - -print "-------------------------- add hypothesis to box" -box=salome.IDToObject(idbox) -mesh = smesh.CreateMesh(box) - -smeshgui.SetName( salome.ObjectToID(mesh), "MeshBox" ); - -ret=mesh.AddHypothesis(box,algoReg) -print ret -ret=mesh.AddHypothesis(box,algoMef) -print ret - - -ret=mesh.AddHypothesis(box,hypNbSeg1) -print ret -ret=mesh.AddHypothesis(box,hypArea1) -print ret - - -# ---- add hypothesis to edge - -print "-------------------------- add hypothesis to edge" -edge=salome.IDToObject(idedge) -submesh=mesh.GetSubMesh(edge, "SubMeshEdge") - -ret=mesh.AddHypothesis(edge,algoReg) -print ret -ret=mesh.AddHypothesis(edge,hypLen1) -print ret - -print "-------------------------- add hypothesis to face" -face=salome.IDToObject(idface) -submesh = mesh.GetSubMesh(face, "SubMeshFace") - -ret=mesh.AddHypothesis(face,hypArea2) -print ret - -smesh.Compute(mesh, box) -sg.updateObjBrowser(1); - -print -print "============= Test Supervisor =============================" -print - -comp = catalog.GetComponent("SUPERV") -if comp is None: - raise RuntimeError,"Component SUPERV not found in Module Catalog." - -from SuperV import * -import SALOMEDS -myStudy = salome.myStudy -myBuilder = myStudy.NewBuilder() - -SuperVision = lcc.FindOrLoadComponent("SuperVisionContainer","SUPERV") -father = myStudy.FindComponent("SUPERV") -if father is None: - father = myBuilder.NewComponent("SUPERV") - A1 = myBuilder.FindOrCreateAttribute(father, "AttributeName"); - FName = A1._narrow(SALOMEDS.AttributeName) - FName.SetValue( salome.sg.getComponentUserName("SUPERV") ) - A2 = myBuilder.FindOrCreateAttribute(father, "AttributePixMap"); - aPixmap = A2._narrow(SALOMEDS.AttributePixMap); - aPixmap.SetPixMap( "ICON_OBJBROWSER_Supervision" ); - myBuilder.DefineComponentInstance(father,SuperVision) - -def addStudy(ior): - dataflow = SuperVision.getStreamGraph(ior) - name=dataflow.Name() - itr = myStudy.NewChildIterator(father) - while itr.More(): - item=itr.Value() - res,A=item.FindAttribute("AttributeName") - if res: - aName = A._narrow(SALOMEDS.AttributeName) - if aName.Value() == name : - print myBuilder.FindOrCreateAttribute(item, "AttributeIOR") - A = myBuilder.FindOrCreateAttribute(item, "AttributeIOR") - print "A = ", A - if A is not None : - #res,A = myBuilder.FindOrCreateAttribute(item, "AttributeIOR") - anIOR = A._narrow(SALOMEDS.AttributeIOR); - print "anIOR.SetValue(dataflow.getIOR())" - anIOR.SetValue(dataflow.getIOR()) - return - itr.Next() - obj = myBuilder.NewObject(father) - A=myBuilder.FindOrCreateAttribute(obj, "AttributeName") - aName=A._narrow(SALOMEDS.AttributeName) - aName.SetValue(name) - A=myBuilder.FindOrCreateAttribute(obj, "AttributeIOR") - anIOR = A._narrow(SALOMEDS.AttributeIOR) - anIOR.SetValue(dataflow.getIOR()) - -import os -dir= os.getenv("SUPERV_ROOT_DIR") -if dir == None: - raise RuntimeError, "SUPERV_ROOT_DIR is not defined" -xmlfile = dir +"/examples/GraphGeomEssai.xml" -print "Load dataflow from the file : " -print xmlfile -print - -myGraph = StreamGraph ( xmlfile ) - -# This DataFlow is "valid" : no loop, correct links between Nodes etc... -print "myGraph.IsValid() = ", myGraph.IsValid() - -# Get Nodes -myGraph.PrintNodes() - -# This DataFlow is "executable" : all pending Ports are defined with Datas -print myGraph.IsExecutable() - -# Starts only execution of that DataFlow and gets control immediatly -print myGraph.Run() - -# That DataFlow is running ==> 0 (false) -print myGraph.IsDone() - -# Events of execution : -aStatus,aNode,anEvent,aState = myGraph.Event() -while aStatus : - print aNode.Thread(),aNode.SubGraph(),aNode.Name(),anEvent,aState - aStatus,aNode,anEvent,aState = myGraph.Event() -print "myGraph.IsDone() = ",myGraph.IsDone() - -# Wait for Completion (but it is already done after event loop ...) -print "Done : ",myGraph.DoneW() - -print " " -#print "Type : print myGraph.IsDone()" -#print " If execution is finished ==> 1 (true)" -res=myGraph.IsDone() -if res != 1: - raise RuntimeError, "myGraph.Run() is not done" - -print " " -print "Type : myGraph.PrintPorts()" -print " to see input and output values of the graph" -myGraph.PrintPorts() - -# Export will create newsupervisionexample.xml and the corresponding .py file -tmpdir=os.getenv("TmpDir") -if tmpdir is None: - tmpdir="/tmp" -file = tmpdir + "/newsupervisionexample" -print "--------------\n"+file+"\n--------------\n" -myGraph.Export(file) - -ior = salome.orb.object_to_string(myGraph.G) -addStudy(ior) - -GraphName = myGraph.Name() -print "Befor save ", -#nodes = myGraph.Nodes() -nodes = myGraph.G.Nodes().FNodes -length_bs = len(nodes) -print "ListOfNodes length = ", length_bs -names=[] -for node in nodes: - names.append(node.Name()) -print names - -# Graph creation -GraphInLines = StreamGraph( 'GraphInLines' ) -GraphInLines.SetName( 'GraphInLines' ) -GraphInLines.SetAuthor( '' ) -GraphInLines.SetComment( '' ) -GraphInLines.Coords( 0 , 0 ) - -# Creation of InLine Nodes -PyAdd = [] -PyAdd.append( 'def Add(a,b) : ' ) -PyAdd.append( ' return a+b ' ) -PyAdd.append( '' ) -Add = GraphInLines.INode( 'Add' , PyAdd ) -Add.InPort( 'a' , 'long' ) -Add.InPort( 'b' , 'long' ) -Add.OutPort( 'f' , 'long' ) -Add.SetName( 'Add' ) -Add.SetAuthor( '' ) -Add.SetComment( 'Python function' ) -Add.Coords( 351 , 77 ) -PySub = [] -PySub.append( 'def Sub(a,b) : ' ) -PySub.append( ' return a-b ' ) -PySub.append( '' ) -Sub = GraphInLines.INode( 'Sub' , PySub ) -Sub.InPort( 'a' , 'long' ) -Sub.InPort( 'b' , 'long' ) -Sub.OutPort( 'f' , 'long' ) -Sub.SetName( 'Sub' ) -Sub.SetAuthor( '' ) -Sub.SetComment( 'Python function' ) -Sub.Coords( 86 , 333 ) -PyMul = [] -PyMul.append( 'def Mul(a,b) : ' ) -PyMul.append( ' return a*b ' ) -Mul = GraphInLines.INode( 'Mul' , PyMul ) -Mul.InPort( 'a' , 'long' ) -Mul.InPort( 'b' , 'long' ) -Mul.OutPort( 'Result' , 'long' ) -Mul.SetName( 'Mul' ) -Mul.SetAuthor( '' ) -Mul.SetComment( 'Python function' ) -Mul.Coords( 616 , 247 ) - -# Creation of intermediate Output variables and of Control Links -Addf = Add.Port( 'f' ) -Mula = GraphInLines.Link( Addf , Mul.Port( 'a' ) ) -Mula.AddCoord( 1 , 570 , 356 ) -Mula.AddCoord( 2 , 570 , 186 ) -Subf = Sub.Port( 'f' ) -Mulb = GraphInLines.Link( Subf , Mul.Port( 'b' ) ) -Mulb.AddCoord( 1 , 282 , 376 ) -Mulb.AddCoord( 2 , 282 , 442 ) -Addb = GraphInLines.Link( Subf , Add.Port( 'b' ) ) -Addb.AddCoord( 1 , 283 , 209 ) -Addb.AddCoord( 2 , 283 , 374 ) -Addb.AddCoord( 3 , 283 , 442 ) - -# Creation of Input datas -Adda = Add.Input( 'a' , 1) -Suba = Sub.Input( 'a' , 3) -Subb = Sub.Input( 'b' , 4) - -# Creation of Output variables -MulResult = Mul.Port( 'Result' ) - -GraphInLines.Run() - -GraphInLines.DoneW() - -GraphInLines.PrintPorts() - -sg.updateObjBrowser(1); - -print -print "============= Test VISU and MED =============================" -print - -comp = catalog.GetComponent("VISU") -if comp is None: - raise RuntimeError,"Component VISU not found in Module Catalog." - -import sys -import SALOMEDS -import SALOME -import SALOME_MED -import VISU - -import visu_gui - -medFileName = "pointe.med" -medFile = os.getenv('KERNEL_ROOT_DIR') + '/examples/' + medFileName -print "Load ", medFile - -studyCurrent = salome.myStudyName - -med_comp = salome.lcc.FindOrLoadComponent("FactoryServer", "MED") -myVisu = salome.lcc.FindOrLoadComponent("FactoryServer", "VISU") - -try: - if os.access(medFile, os.R_OK) : - if not os.access(medFile, os.W_OK) : - import random - medFileNew = "/tmp/" + str(random.randint(0,1000000)) + "_" + medFileName - print " -- Copy " + medFile + " to " + medFileNew - os.system("cp "+ medFile + " " + medFileNew) - medFile = medFileNew - os.system("chmod 755 " + medFile) - - if os.access(medFile, os.W_OK) : - med_comp.readStructFileWithFieldType(medFile,studyCurrent) - med_obj = visu_gui.visu.getMedObjectFromStudy() - print "med_obj - ", med_obj - - myField1 = visu_gui.visu.getFieldObjectFromStudy(2,1) - aMeshName = "maa1" - anEntity = VISU.NODE - aTimeStampId = -1 - - myResult1 = myVisu.ImportMedField(myField1) - aMesh1 = myVisu.MeshOnEntity(myResult1, aMeshName, anEntity); - - aScalarMap1= myVisu.ScalarMapOnField(myResult1, aMeshName, anEntity, myField1.getName(), aTimeStampId) - - myResult2 = myVisu.ImportFile(medFile); - aMesh2 = myVisu.MeshOnEntity(myResult2, aMeshName, anEntity); - - aTimeStampId = 3 - aScalarMap2= myVisu.ScalarMapOnField(myResult2, aMeshName, anEntity, myField1.getName(), aTimeStampId) - - sg.updateObjBrowser(0) - else : print "We have no permission to rewrite medFile, so readStructFileWithFieldType can't open this file"; - else : print "We have no permission to read medFile, it will not be opened"; - -except: - if sys.exc_type == SALOME.SALOME_Exception : - print "There is no permission to read " + medFile - else : - print sys.exc_type - print sys.exc_value - print sys.exc_traceback - -sg.updateObjBrowser(1); diff --git a/src/SALOME_SWIG_WITHOUTIHM/supervisionexample.py.in b/src/SALOME_SWIG_WITHOUTIHM/supervisionexample.py.in deleted file mode 100755 index 0e209a0f1..000000000 --- a/src/SALOME_SWIG_WITHOUTIHM/supervisionexample.py.in +++ /dev/null @@ -1,86 +0,0 @@ -#============================================================================== -# File : supervisionexample.py -# Created : 23 nov 2001 -# Author : Jean Rahuel -# Project : SALOME -# Copyright : CEA -#============================================================================== - -from SuperV import * - - - -# load this object with Nodes, Links and Datas stored in GraphEssai.xml -# (GraphEssai.xml was created with python in SuperVisionTest and GraphEssai.py) -myGraph = Graph("@ROOT_BUILDDIR@/share/salome/resources/GraphEssai.xml") - -#myGraph = Graph("/home/data/jr_HEAD/build/share/salome/resources/GraphEssai.xml") -# This DataFlow is "valid" : no loop, correct links between Nodes etc... - -print myGraph.IsValid() - -# Get Nodes -myGraph.PrintNodes() -Add,Sub,Mul,Div = myGraph.Nodes() - -# Load Datas -Addx = Add.Input("x",3.) -Addy = Add.Input("y",4.5) -Subx = Sub.Input("x",1.5) - -# Get Output Port -Addz = Add.Port('z') -Subz = Sub.Port('z') -Mulz = Mul.Port('z') -Divz = Div.Port('z') - -# This DataFlow is "executable" : all pending Ports are defined with Datas -print myGraph.IsExecutable() - -# Starts only execution of that DataFlow and gets control immediatly -print myGraph.Run() - -# That DataFlow is running ==> 0 (false) -print myGraph.IsDone() - -# Events of execution : -aStatus,aNode,anEvent,aState = myGraph.Event() -while aStatus : - print aNode.Thread(),aNode.SubGraph(),aNode.Name(),anEvent,aState - aStatus,aNode,anEvent,aState = myGraph.Event() -print myGraph.IsDone() - -# Wait for Completion (but it is already done after event loop ...) -print "Done : ",myGraph.DoneW() - -# Get result -print "Result : ",Divz.ToString() - -# Intermediate results : -print "Intermediate Result Add\z : ",Addz.ToString() -print "Intermediate Result Sub\z : ",Subz.ToString() -print "Intermediate Result Mul\z : ",Mulz.ToString() - -print " " -print "Type : print myGraph.IsDone()" -print " If execution is finished ==> 1 (true)" -print " " -print "Type : print Divz.ToString()" -print " You will get the result" -print " " -print "Type : myGraph.PrintPorts()" -print " to see input and output values of the graph" -print " " -print "Type : Add.PrintPorts()" -print "Type : Sub.PrintPorts()" -print "Type : Mul.PrintPorts()" -print "Type : Div.PrintPorts()" -print " to see input and output values of nodes" - -# Export will create newsupervisionexample.xml and the corresponding .py file -print myGraph.Export("@ROOT_BUILDDIR@/share/salome/resources/newsupervisionexample.xml") - -print " " -print "See file @ROOT_BUILDDIR@/share/salome/resources/newsupervisionexample.xml" -print "See file @ROOT_BUILDDIR@/share/salome/resources/newsupervisionexample.py" - diff --git a/src/SALOME_SWIG_WITHOUTIHM/supervisiongeomexample.py.in b/src/SALOME_SWIG_WITHOUTIHM/supervisiongeomexample.py.in deleted file mode 100755 index fb29bf09f..000000000 --- a/src/SALOME_SWIG_WITHOUTIHM/supervisiongeomexample.py.in +++ /dev/null @@ -1,102 +0,0 @@ -# Generated python file of Graph GraphGeom2Essai - -from SuperV import * - -import salome - -import geompy - - -geom = lcc.FindOrLoadComponent("FactoryServer", "Geometry") -geom.GetCurrentStudy(salome.myStudyId) - -myBuilder = salome.myStudy.NewBuilder() - -# Graph creation -GraphGeom2Essai = Graph( 'GraphGeom2Essai' ) -print GraphGeom2Essai.SetAuthor( '' ) -print GraphGeom2Essai.SetComment( '' ) -GraphGeom2Essai.Coords( 0 , 0 ) - -# Creation of Nodes -MakeSphere = GraphGeom2Essai.Node( 'Geometry' , 'Geometry' , 'MakeSphere' ) -print MakeSphere.SetAuthor( '' ) -print MakeSphere.SetContainer( 'FactoryServer' ) -print MakeSphere.SetComment( '' ) -MakeSphere.Coords( 26 , 13 ) -MakeCopy = GraphGeom2Essai.Node( 'Geometry' , 'Geometry' , 'MakeCopy' ) -print MakeCopy.SetAuthor( '' ) -print MakeCopy.SetContainer( 'FactoryServer' ) -print MakeCopy.SetComment( '' ) -MakeCopy.Coords( 219 , 12 ) -MakeTranslation = GraphGeom2Essai.Node( 'Geometry' , 'Geometry' , 'MakeTranslation' ) -print MakeTranslation.SetAuthor( '' ) -print MakeTranslation.SetContainer( 'FactoryServer' ) -print MakeTranslation.SetComment( '' ) -MakeTranslation.Coords( 219 , 159 ) -MakeFuse = GraphGeom2Essai.Node( 'Geometry' , 'Geometry' , 'MakeFuse' ) -print MakeFuse.SetAuthor( '' ) -print MakeFuse.SetContainer( 'FactoryServer' ) -print MakeFuse.SetComment( '' ) -MakeFuse.Coords( 465 , 106 ) - -# Creation of intermediate Output variables and of links -MakeSphereshape = MakeSphere.Port( 'shape' ) -MakeCopyshape1 = GraphGeom2Essai.Link( MakeSphereshape , MakeCopy.Port( 'shape1' ) ) -MakeTranslationshape1 = GraphGeom2Essai.Link( MakeSphereshape , MakeTranslation.Port( 'shape1' ) ) -MakeCopyshape = MakeCopy.Port( 'shape' ) -MakeFuseshape1 = GraphGeom2Essai.Link( MakeCopyshape , MakeFuse.Port( 'shape1' ) ) -MakeTranslationshape = MakeTranslation.Port( 'shape' ) -MakeFuseshape2 = GraphGeom2Essai.Link( MakeTranslationshape , MakeFuse.Port( 'shape2' ) ) - -# Creation of Input datas -MakeSpherex1 = MakeSphere.Input( 'x1' , 0) -MakeSpherey1 = MakeSphere.Input( 'y1' , 0) -MakeSpherez1 = MakeSphere.Input( 'z1' , 0) -MakeSphereradius = MakeSphere.Input( 'radius' , 50) -MakeTranslationx1 = MakeTranslation.Input( 'x1' , 80) -MakeTranslationy1 = MakeTranslation.Input( 'y1' , 0) -MakeTranslationz1 = MakeTranslation.Input( 'z1' , 0) - -# Missing Input datas : None - -# Creation of Output variables -MakeFuseshape = MakeFuse.Port( 'shape' ) - -# State of Ports of the Graph -GraphGeom2Essai.PrintPorts() - -# Start asynchronous run -print GraphGeom2Essai.Run() - -# Done ? -print GraphGeom2Essai.IsDone() - -# Events of execution : -aStatus,aNode,anEvent,aState = GraphGeom2Essai.Event() -while aStatus : - print aNode.Thread(),aNode.SubGraph(),aNode.Name(),anEvent,aState - aStatus,aNode,anEvent,aState = GraphGeom2Essai.Event() -print GraphGeom2Essai.IsDone() - -# Waiting end of execution : -print GraphGeom2Essai.DoneW() - -print " " -print "Type print GraphGeom2Essai.IsDone()" -print "1 <==> It's done" -print " " -print "Type print GraphGeom2Essai.DoneW()" -print "Wait until end of execution : 1(success)" -print " " -print "Type GraphGeom2Essai.PrintPorts()" -print " to see input and output values of the graph" -print " " -print "Type MakeSphere.PrintPorts()" -print "Type MakeCopy.PrintPorts()" -print "Type MakeTranslation.PrintPorts()" -print "Type MakeFuse.PrintPorts()" -print " to see input and output values of nodes" -print " " -print "Type print GraphGeom2Essai.Export('File-Name')" -print "You will get a .py and a .xml file of this graph" diff --git a/src/SALOME_SWIG_WITHOUTIHM/test_big_table.py b/src/SALOME_SWIG_WITHOUTIHM/test_big_table.py deleted file mode 100755 index 689567e2c..000000000 --- a/src/SALOME_SWIG_WITHOUTIHM/test_big_table.py +++ /dev/null @@ -1,54 +0,0 @@ -# Copyright (C) 2003 CEA/DEN, EDF R&D -# -# -# -# File : test_big_table.py -# Author : Vadim SANDLER -# Module : SALOME -# $Header$ - -import salome -import math -import SALOMEDS - -# >>> Getting study builder ================================================== -myStudy = salome.myStudy -myBuilder = myStudy.NewBuilder() - -# >>> Creating virtual component ============================================= -myComponent = myStudy.FindComponent("VirtualComponent") -if not myComponent: - myComponent = myBuilder.NewComponent("VirtualComponent") - aName = myBuilder.FindOrCreateAttribute(myComponent, "AttributeName") - aName.SetValue("VirtualComponent") - -# >>> Creating object with Table of real[ 200 * 20 ] ======================== -myTRealObject = myBuilder.NewObject(myComponent) -AName = myBuilder.FindOrCreateAttribute(myTRealObject, "AttributeName") -AName.SetValue("Table Of Real") -ARealTable = myBuilder.FindOrCreateAttribute(myTRealObject, "AttributeTableOfReal") -myHorNb = 10 -myVerNb = 200 - -k={} -for j in range(0,myHorNb): - k[j] = j*10+1 -ARealTable.AddRow(k.values()) -ARealTable.SetRowTitle(1, "Frequency") -ARealTable.SetRowUnit(1, "Hz") - -for i in range(1,myVerNb+1): - for j in range(0,myHorNb): - if j % 2 == 1: - k[j] = math.log10(j*30*math.pi/180) * 20 + i * 15 + j*5 - else: - k[j] = math.sin(j*30*math.pi/180) * 20 + i * 15 + j*5 - ARealTable.AddRow(k.values()) - ARealTable.SetRowTitle(i+1, "Power " + str(i)) - ARealTable.SetRowUnit(i+1, "Wt") -ARealTable.SetTitle("Very useful data") - -# >>> Updating Object Browser ================================================ -salome.sg.updateObjBrowser(1) - -# ============================================================================ diff --git a/src/SALOME_SWIG_WITHOUTIHM/test_many_objects.py b/src/SALOME_SWIG_WITHOUTIHM/test_many_objects.py deleted file mode 100755 index aa1f4f5e9..000000000 --- a/src/SALOME_SWIG_WITHOUTIHM/test_many_objects.py +++ /dev/null @@ -1,73 +0,0 @@ -# Copyright (C) 2003 CEA/DEN, EDF R&D -# -# -# -# File : visu_many_objects.py -# Author : Vadim SANDLER -# Module : SALOME -# $Header$ - -import salome -import SALOMEDS - -# >>> Getting study builder ================================================== -myStudy = salome.myStudy -myBuilder = myStudy.NewBuilder() - -# >>> Creating virtual component ============================================= -myComponent = myBuilder.NewComponent("VIRTUAL") -AName = myBuilder.FindOrCreateAttribute(myComponent, "AttributeName") -AName.SetValue("Virtual") -ACmt = myBuilder.FindOrCreateAttribute(myComponent, "AttributeComment") -ACmt.SetValue("Virtual") - -# >>> Creating objects ======================================================= -# TO CHANGE TOTAL NUMBER OF OBJECTS, SET PROPER , , -# IF YOU DON'T WANT TO ADD REFERENCES, SET = 0 -myNb1 = 20 -myNb2 = 5 -myNb3 = 3 -myAddRef = 1 - -if myAddRef == 1: - myContainer = myBuilder.NewObject(myComponent) - AName = myBuilder.FindOrCreateAttribute(myContainer, "AttributeName") - AName.SetValue("References") - ACmt = myBuilder.FindOrCreateAttribute(myContainer, "AttributeComment") - ACmt.SetValue("Container for objects") - -for i in range(0,myNb1): - myObject1 = myBuilder.NewObject(myComponent) - AName = myBuilder.FindOrCreateAttribute(myObject1, "AttributeName") - AName.SetValue("Object "+str(i)) - ACmt = myBuilder.FindOrCreateAttribute(myObject1, "AttributeComment") - ACmt.SetValue("Virtual object "+str(i)) - if myAddRef == 1: - myRefObject = myBuilder.NewObject(myContainer) - myBuilder.Addreference(myRefObject,myObject1); - - for j in range(0,myNb2): - myObject2 = myBuilder.NewObject(myObject1) - AName = myBuilder.FindOrCreateAttribute(myObject2, "AttributeName") - AName.SetValue("Object "+str(i)+"-"+str(j)) - ACmt = myBuilder.FindOrCreateAttribute(myObject2, "AttributeComment") - ACmt.SetValue("Virtual object "+str(i)+"-"+str(j)) - if myAddRef == 1: - myRefObject = myBuilder.NewObject(myContainer) - myBuilder.Addreference(myRefObject,myObject2); - - for k in range(0,myNb3): - myObject3 = myBuilder.NewObject(myObject2) - AName = myBuilder.FindOrCreateAttribute(myObject3, "AttributeName") - AName.SetValue("Object "+str(i)+"-"+str(j)+"-"+str(k)) - ACmt = myBuilder.FindOrCreateAttribute(myObject3, "AttributeComment") - ACmt.SetValue("Virtual object "+str(i)+"-"+str(j)+"-"+str(k)) - if myAddRef == 1: - myRefObject = myBuilder.NewObject(myContainer) - myBuilder.Addreference(myRefObject,myObject3); - -# >>> Updating Object Browser ================================================ -salome.sg.updateObjBrowser(1) - -# ============================================================================ - diff --git a/src/SALOME_SWIG_WITHOUTIHM/test_remove_ref.py b/src/SALOME_SWIG_WITHOUTIHM/test_remove_ref.py deleted file mode 100644 index 47fbada64..000000000 --- a/src/SALOME_SWIG_WITHOUTIHM/test_remove_ref.py +++ /dev/null @@ -1,48 +0,0 @@ -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : test_remove_ref.py -# Module : SALOMEDS - -from salome import * - -myBuilder = myStudy.NewBuilder() - - -obj1 = myStudy.FindObjectID("0:1") -if obj1 is None: print "Is null obj1 " -else: print obj1.GetID() - -obj2 = myBuilder.NewObject(obj1) -print "Obj2 ID = "+obj2.GetID() - -myBuilder.Addreference(obj1, obj2) - -(f, obj3) = obj1.ReferencedObject() - -print "Ref obj ID = "+obj3.GetID() - - -myBuilder.RemoveReference(obj1) - -(f, obj4) = obj1.ReferencedObject() - -print "Ref is found ", f diff --git a/src/SALOME_SWIG_WITHOUTIHM/test_table.py b/src/SALOME_SWIG_WITHOUTIHM/test_table.py deleted file mode 100755 index 2b7204ec1..000000000 --- a/src/SALOME_SWIG_WITHOUTIHM/test_table.py +++ /dev/null @@ -1,99 +0,0 @@ -# Copyright (C) 2003 CEA/DEN, EDF R&D -# -# -# -# File : test_table.py -# Author : Vadim SANDLER -# Module : SALOME -# $Header$ - -import salome -import math -import SALOMEDS - -# >>> Getting study builder ================================================== -myStudy = salome.myStudy -myBuilder = myStudy.NewBuilder() - -# >>> Creating virtual component ============================================= -myComponent = myStudy.FindComponent("VirtualComponent") -if not myComponent: - myComponent = myBuilder.NewComponent("VirtualComponent") - aName = myBuilder.FindOrCreateAttribute(myComponent, "AttributeName") - aName.SetValue("VirtualComponent") - -# >>> Creating object with Table of integer ================================== -myTIntObject = myBuilder.NewObject(myComponent) -AName = myBuilder.FindOrCreateAttribute(myTIntObject, "AttributeName") -AName.SetValue("Table Of Integer") -AIntTable = myBuilder.FindOrCreateAttribute(myTIntObject, "AttributeTableOfInteger") - -a=[1,2,3,4,5,6,7,8,9,10] -AIntTable.AddRow(a) -a=[110,120,130,140,150,160,170,180,190,200] -AIntTable.AddRow(a) -a=[-1,272,0,0,-642,10000,13,578,-578,99] -AIntTable.AddRow(a) -AIntTable.SetTitle("TEST table of integer") -AIntTable.SetRowTitle(1,"FR") -AIntTable.SetRowUnit(1,"m/h") -AIntTable.SetRowTitle(2,"SR") -AIntTable.SetRowUnit(2,"s") -AIntTable.SetRowTitle(3,"TR") -AIntTable.SetRowUnit(3,"$") -c=["C1","C2","C3","C4","C5","C6","C7","C8","C9","C10"] -AIntTable.SetColumnTitles(c) - -# >>> Creating object with Table of real ===================================== -myTRealObject = myBuilder.NewObject(myComponent) -AName = myBuilder.FindOrCreateAttribute(myTRealObject, "AttributeName") -AName.SetValue("Table Of Real") -ARealTable = myBuilder.FindOrCreateAttribute(myTRealObject, "AttributeTableOfReal") - -k={} -l={} -for j in range(0,20): - k[j] = j*10+1 - l[j] = "C"+str(j+1) -ARealTable.AddRow(k.values()) -ARealTable.SetRowTitle(1, "Row 0") -ARealTable.SetRowUnit(1, "Hz") -ARealTable.SetColumnTitles(l.values()) -for i in range(1,11): - for j in range(1,21): - if j % 2 == 1: - k[j] = math.log10(j*30*math.pi/180) * 20 + i * 15 + j*5 - else: - k[j] = math.sin(j*30*math.pi/180) * 20 + i * 15 + j*5 - ARealTable.AddRow(k.values()) - ARealTable.SetRowTitle(i+1, "Row " + str(i)) - ARealTable.SetRowUnit(i+1, "Wt") -ARealTable.SetTitle("TEST table of real") - -# >>> Creating object with integer attribute ================================= -myIntObject = myBuilder.NewObject(myComponent) -AName = myBuilder.FindOrCreateAttribute(myIntObject, "AttributeName") -AName.SetValue("Integer") -AInt = myBuilder.FindOrCreateAttribute(myIntObject, "AttributeInteger") -AInt.SetValue(123) - -# >>> Creating object with real attribute ==================================== -myRealObject = myBuilder.NewObject(myComponent) -AName = myBuilder.FindOrCreateAttribute(myRealObject, "AttributeName") -AName.SetValue("Real") -AReal = myBuilder.FindOrCreateAttribute(myRealObject, "AttributeReal") -AReal.SetValue(-56.9634) - -# >>> Creating object with comment attribute ================================= -myCmtObject = myBuilder.NewObject(myComponent) -AName = myBuilder.FindOrCreateAttribute(myCmtObject, "AttributeName") -AName.SetValue("Comment") -ACmt = myBuilder.FindOrCreateAttribute(myCmtObject, "AttributeComment") -ACmt.SetValue("Just a comment") - -# >>> Updating Object Browser ================================================ -salome.sg.updateObjBrowser(1) - -# ============================================================================ - - diff --git a/src/SALOME_SWIG_WITHOUTIHM/testattr.py b/src/SALOME_SWIG_WITHOUTIHM/testattr.py deleted file mode 100755 index ce3816891..000000000 --- a/src/SALOME_SWIG_WITHOUTIHM/testattr.py +++ /dev/null @@ -1,109 +0,0 @@ -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : testattr.py -# Module : SALOME - -import SALOMEDS -#import SALOMEDS_Attributes_idl -import geompy -import salome -# =============================================================== - -# creating new object =========================================== -obj = geompy.myBuilder.NewObject(geompy.father) - -# adding Name attribute ========================================= -A1 = geompy.myBuilder.FindOrCreateAttribute(obj,"AttributeName") -name = A1._narrow(SALOMEDS.AttributeName) -name.SetValue("First Object") - -# adding Comment attribute ====================================== -A2 = geompy.myBuilder.FindOrCreateAttribute(obj,"AttributeComment") -comment = A2._narrow(SALOMEDS.AttributeComment) -comment.SetValue("This is Comment attribute") - -# adding IOR attribute ========================================== -#A3 = geompy.myBuilder.FindOrCreateAttribute(obj,"AttributeIOR") -# ... - -# adding integer attribute ====================================== -A4 = geompy.myBuilder.FindOrCreateAttribute(obj,"AttributeInteger") -integer = A4._narrow(SALOMEDS.AttributeInteger) -integer.SetValue(12) - -# adding real attribute ========================================= -A5 = geompy.myBuilder.FindOrCreateAttribute(obj,"AttributeReal") -real = A5._narrow(SALOMEDS.AttributeReal) -real.SetValue(0.25) - -# adding sequence of integer attribute ========================== -A6 = geompy.myBuilder.FindOrCreateAttribute(obj,"AttributeSequenceOfInteger") -intseq = A6._narrow(SALOMEDS.AttributeSequenceOfInteger) -intseq.Add(1) -intseq.Add(2) -intseq.Add(3) - - -# adding sequence of real attribute ============================= -A7 = geompy.myBuilder.FindOrCreateAttribute(obj,"AttributeSequenceOfReal") -realseq = A7._narrow(SALOMEDS.AttributeSequenceOfReal) -realseq.Add(0.001) -realseq.Add(0.002) -realseq.Add(0.003) - -# adding PersistentRef attribute ================================ -#A8 = geompy.myBuilder.FindOrCreateAttribute(obj,"AttributePersistentRef") -# ... - -# adding Drawable attribute ===================================== -A9 = geompy.myBuilder.FindOrCreateAttribute(obj,"AttributeDrawable") -drawable = A9._narrow(SALOMEDS.AttributeDrawable) -drawable.SetDrawable(1) - -# adding Selectable attribute =================================== -#A10 = geompy.myBuilder.FindOrCreateAttribute(obj,"AttributeSelectable") -# ... - -# adding Expandable attribute =================================== -#A11 = geompy.myBuilder.FindOrCreateAttribute(obj,"AttributeExpandable") -# ... - -# adding Opened attribute ======================================= -#A12 = geompy.myBuilder.FindOrCreateAttribute(obj,"AttributeOpened") -# ... - -# adding TextColor attribute ==================================== -A13 = geompy.myBuilder.FindOrCreateAttribute(obj,"AttributeTextColor") -textcolor = A13._narrow(SALOMEDS.AttributeTextColor) - -# ... - -# adding TextHighlightColor of real attribute =================== -#A14 = geompy.myBuilder.FindOrCreateAttribute(obj,"AttributeTextHighlightColor") -# ... - -# adding PixMap of real attribute =============================== -#A15 = geompy.myBuilder.FindOrCreateAttribute(obj,"AttributePixMap") -# ... - -# opening OCAF Browser ========================================== -# result = salome.myStudy.OCAFBrowser() diff --git a/src/SUPERVGraph/Makefile.in b/src/SUPERVGraph/Makefile.in deleted file mode 100644 index b108204d7..000000000 --- a/src/SUPERVGraph/Makefile.in +++ /dev/null @@ -1,33 +0,0 @@ -# source path -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -EXPORT_HEADERS = \ - SUPERVGraph_ViewFrame.h - -# Libraries targets - -LIB = libSUPERVGraph.la -LIB_SRC = SUPERVGraph.cxx \ - SUPERVGraph_ViewFrame.cxx - -LIB_MOC = SUPERVGraph_moc.cxx \ - SUPERVGraph_ViewFrame_moc.cxx - -LIB_CLIENT_IDL = SALOMEDS.idl \ - SALOME_ModuleCatalog.idl \ - SALOME_Component.idl \ - SALOME_ContainerManager.idl \ - SALOME_Exception.idl - - -CPPFLAGS+=$(QT_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) -LDFLAGS+=$(QT_MT_LIBS) -L$(top_builddir)/lib -lSalomeGUI - - -@CONCLUDE@ diff --git a/src/SUPERVGraph/SUPERVGraph.cxx b/src/SUPERVGraph/SUPERVGraph.cxx deleted file mode 100644 index 70524b061..000000000 --- a/src/SUPERVGraph/SUPERVGraph.cxx +++ /dev/null @@ -1,44 +0,0 @@ -// SALOME SUPERVGraph : build Supervisor viewer into desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SUPERVGraph.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "SUPERVGraph.h" -#include "SUPERVGraph_ViewFrame.h" -using namespace std; - -QAD_ViewFrame* SUPERVGraph::createView(QAD_RightFrame* parent) -{ - return new SUPERVGraph_ViewFrame( parent, "vtkView" ); -} - -extern "C" -{ - QAD_ViewFrame* createView(QAD_RightFrame* parent) - { - return SUPERVGraph::createView(parent); - } -} diff --git a/src/SUPERVGraph/SUPERVGraph.h b/src/SUPERVGraph/SUPERVGraph.h deleted file mode 100644 index 929fc291d..000000000 --- a/src/SUPERVGraph/SUPERVGraph.h +++ /dev/null @@ -1,45 +0,0 @@ -// SALOME SUPERVGraph : build Supervisor viewer into desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SUPERVGraph.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef SUPERVGraph_HeaderFile -#define SUPERVGraph_HeaderFile - -#include "QAD_RightFrame.h" -#include "QAD_ViewFrame.h" - -class SUPERVGraph : public QObject -{ - Q_OBJECT - -public : - - Standard_EXPORT static QAD_ViewFrame* createView ( QAD_RightFrame* parent); - -}; - -#endif diff --git a/src/SUPERVGraph/SUPERVGraph_Graph.cxx b/src/SUPERVGraph/SUPERVGraph_Graph.cxx deleted file mode 100644 index 9d0c6baab..000000000 --- a/src/SUPERVGraph/SUPERVGraph_Graph.cxx +++ /dev/null @@ -1,304 +0,0 @@ -// SALOME SUPERVGraph : build Supervisor viewer into desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SUPERVGraph_Graph.cxx -// Author : Francis KLOSS -// Module : SALOME - -#include "SUPERVGraph_Graph.h" - -#include "QAD_Settings.h" -#include "QAD_Config.h" - -#include -#include -using namespace std; - - -SUPERVGraph_Graph::SUPERVGraph_Graph(QWidget* parent) : - QScrollView(parent), - where(QPoint(0, 0)) -{ - installEventFilter(viewport()); - // viewport()->setBackgroundColor(QColor(165, 255, 176)); - - connect(this, SIGNAL(contentsMoving(int, int)), this, SLOT(Draw(int, int))); - - popup = new QPopupMenu(viewport()); - // if (main->isModify()) { - // pan = popup->insertItem("Add Node", main, SLOT(addNode())); - // pap = popup->insertItem("Add Point", this, SLOT(addPoint())); - // pdl = popup->insertItem("Delete Link", this, SLOT(deleteLink())); - // pif = popup->insertItem("Insert File", main, SLOT(insertFile())); - // pci = popup->insertItem("Change Informations", this, SLOT(changeInformation())); - // popup->insertSeparator(); - // }; - // popup->insertItem("Add in Study", main, SLOT(addStudy())); - // popup->insertItem("Show Informations", this, SLOT(showInformation())); - // popup->insertSeparator(); - // popup->insertItem("Copy (Read Only)", main, SLOT(copyReading())); - // popup->insertItem("Copy (Modifiying)", main, SLOT(copyModifying())); -} - -void SUPERVGraph_Graph::sync() { - // bool editing = main->getDataflow()->IsEditing(); - // if (main->isModify()) { - // popup->setItemEnabled(pci, editing); - // popup->setItemEnabled(pan, editing); - // popup->setItemEnabled(pap, editing); - // popup->setItemEnabled(pdl, editing); - // popup->setItemEnabled(pif, editing); - // }; - - // SUPERVGraph_Node* ihmNode; - // QObjectList* ihmList = queryList("SUPERVGraph_Node"); - // SUPERV_Nodes nodes = main->getDataflow()->Nodes(); - // int n = nodes->length(); - - // for (int i=0; iName(), "SUPERVGraph_Node"); - // if (ihmNode == NULL) { - // ihmNode = new SUPERVGraph_Node(viewport(), main, nodes[i]); - // addChild(ihmNode, nodes[i]->X(), nodes[i]->Y()); - // } else { - // moveChild(ihmNode, nodes[i]->X(), nodes[i]->Y()); - // ihmList->removeRef(ihmNode); - // }; - // ihmNode->sync(); - // }; - - // QObjectListIt i(*ihmList); - // while ((ihmNode=(SUPERVGraph_Node*)i.current()) != 0) { - // ++i; - // ihmNode->close(); - // }; - // delete ihmList; - - // SUPERVGraph_PortIn* pi; - // ihmList = queryList("SUPERVGraph_PortIn"); - // i = *ihmList; - // while ((pi=(SUPERVGraph_PortIn*)i.current()) != 0) { - // ++i; - // pi->sync(true); - // }; - // delete ihmList; - - // SUPERVGraph_PortOut* po; - // ihmList = queryList("SUPERVGraph_PortOut"); - // i = *ihmList; - // while ((po=(SUPERVGraph_PortOut*)i.current()) != 0) { - // ++i; - // po->sync(); - // }; - // delete ihmList; - - // Draw(0, 0); -} - -SUPERVGraph_Graph::~SUPERVGraph_Graph() { -} - -bool SUPERVGraph_Graph::eventFilter(QObject* object, QEvent* event) { - if ((event->type() == QEvent::Move ) || - (event->type() == QEvent::Paint) || - (event->type() == QEvent::Resize) ) { - Draw(0, 0); - }; - return(QScrollView::eventFilter(object, event)); -} - -void SUPERVGraph_Graph::Draw(int x, int y) { - QPainter p(viewport()); - p.eraseRect(viewport()->rect()); - p.setPen(QPen(Qt::black, 2)); - - // SUPERVGraph_Point* c; - // SUPERVGraph_Point* n; - // QObjectList* points = queryList("SUPERVGraph_Point"); - // QObjectListIt i(*points); - // while ((c=(SUPERVGraph_Point*)i.current()) != 0) { - // ++i; - // n=c->getNext(); - // if (n!=c) { - // p.drawLine(contentsToViewport(QPoint(c->getX()+POINT_SIZE_HALF, c->getY()+POINT_SIZE_HALF)), - // contentsToViewport(QPoint(n->getX()+POINT_SIZE_HALF, n->getY()+POINT_SIZE_HALF)) ); - // }; - // }; - // delete points; -} - -void SUPERVGraph_Graph::contentsMousePressEvent(QMouseEvent* e) { - where = viewportToContents(viewport()->mapFromGlobal(e->globalPos())); - // main->showPopup(popup, e); -} - -void SUPERVGraph_Graph::contentsMouseReleaseEvent(QMouseEvent* e) { - // main->sketchPoint(NULL); - - if ( e->button() == Qt::RightButton ) { - QPopupMenu* popup = createPopup(); - if ( popup ) { - popup->exec( QCursor::pos() ); - destroyPopup(); - } - return; - } - -} - -void SUPERVGraph_Graph::contentsMouseMoveEvent(QMouseEvent* e) { - // main->sketchMove(); -} - -float SUPERVGraph_Graph::distance(int xp, int yp, int xl, int yl, int xn, int yn) { - float r, s; - float a, b, c, d; - - float px = (float)(xp); - float py = (float)(yp); - float lx = (float)(xl); - float ly = (float)(yl); - float nx = (float)(xn); - float ny = (float)(yn); - - r = px - lx; - r = r * r; - s = py - ly; - s = s * s; - a = r + s; - - r = px - nx; - r = r * r; - s = py - ny; - s = s * s; - b = r + s; - - r = nx - lx; - r = r * r; - s = ny - ly; - s = s * s; - c = r + s; - - if (c<0.001) { - return(a); - } else { - r = a + c - b; - r = r * r; - d = r / ( 4 * c); - return(a - d); - }; -} - -QPoint SUPERVGraph_Graph::getPoint() { - return(where); -} - -// SUPERVGraph_Point* SUPERVGraph_Graph::findPoint(int x, int y) { -// float m; -// float d = SCROLL_MAX; -// SUPERVGraph_Point* t = NULL; -// SUPERVGraph_Point* c; -// SUPERVGraph_Point* n; -// QObjectList* points = queryList("SUPERVGraph_Point"); -// QObjectListIt i(*points); - -// while ((c=(SUPERVGraph_Point*)i.current()) != 0) { -// ++i; -// n=c->getNext(); -// if (n != c) { -// m = distance(x, y, c->getX(), c->getY(), n->getX(), n->getY()); -// if (m < d) { -// d = m; -// t = c; -// }; -// }; -// }; -// delete points; -// return(t); -// } - -void SUPERVGraph_Graph::addPoint() { - // int x = where.x(); - // int y = where.y(); - // SUPERVGraph_Point* p = findPoint(x, y); - // if (p == NULL) { - // QMessageBox::warning(0, "Supervision Error", "No Link to Add a Point"); - // } else { - // p->addPoint(x, y, true); - // }; -} - -void SUPERVGraph_Graph::deleteLink() { - // SUPERVGraph_Point* p = findPoint(where.x(), where.y()); - // if (p == NULL) { - // QMessageBox::warning(0, "Supervision Error", "No Link to Delete"); - // } else { - // SUPERV_Link l = p->getLink(); - // if (l == NULL) { - // QMessageBox::warning(0, "Supervision Error", "No Link to Delete"); - // } else { - // l->Destroy(); - // main->sync(); - // }; - // }; -} - -void SUPERVGraph_Graph::showInformation() { - // if (Supervision.information(Engines::Node::_narrow(main->getDataflow()), false)) { - // main->sync(); - // }; -} - -void SUPERVGraph_Graph::changeInformation() { - // if (Supervision.information(Engines::Node::_narrow(main->getDataflow()), true)) { - // main->sync(); - // }; -} - -/*! - Creates the popup -*/ -void SUPERVGraph_Graph::onCreatePopup() -{ - if ( myPopup ) { -// if (myPopup->count()<1) { - if ( myPopup->count() > 0 ) - myIDs.append ( myPopup->insertSeparator() ); - int id; - myIDs.append ( id = myPopup->insertItem (tr ("MEN_VP3D_CHANGEBGR")) ); - QAD_ASSERT ( myPopup->connectItem ( id, this, SLOT(onChangeBackgroundColor())) ); -// } - } -} - -void SUPERVGraph_Graph::onChangeBackgroundColor() -{ - QColor previousColor = viewport()->backgroundColor(); - QColor selColor = QColorDialog::getColor ( previousColor, NULL ); - if ( selColor.isValid() ) - viewport()->setBackgroundColor( selColor ); - - QAD_CONFIG->addSetting( "SUPERVGraph:BackgroundColorRed", selColor.red() ); - QAD_CONFIG->addSetting( "SUPERVGraph:BackgroundColorGreen", selColor.green() ); - QAD_CONFIG->addSetting( "SUPERVGraph:BackgroundColorBlue", selColor.blue() ); -} diff --git a/src/SUPERVGraph/SUPERVGraph_Graph.h b/src/SUPERVGraph/SUPERVGraph_Graph.h deleted file mode 100644 index ccea5c69a..000000000 --- a/src/SUPERVGraph/SUPERVGraph_Graph.h +++ /dev/null @@ -1,84 +0,0 @@ -// SALOME SUPERVGraph : build Supervisor viewer into desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SUPERVGraph_Graph.h -// Author : Francis KLOSS -// Module : SALOME - -#ifndef SUPERVGraph_Graph_HXX -#define SUPERVGraph_Graph_HXX - -#include "QAD.h" -#include "QAD_Popup.h" - -#include -#include - -class QAD_EXPORT SUPERVGraph_Graph: public QScrollView, public QAD_PopupClientServer -{ - Q_OBJECT - -public: - SUPERVGraph_Graph(QWidget* parent); - ~SUPERVGraph_Graph(); - - /* popup management */ - void onCreatePopup(); - - void sync(); - void contentsMousePressEvent(QMouseEvent* e); - void contentsMouseReleaseEvent(QMouseEvent* e); - void contentsMouseMoveEvent(QMouseEvent* e); - - QPoint getPoint(); - -public slots: - void Draw(int x, int y); - -private slots: - void addPoint(); - void deleteLink(); - void showInformation(); - void changeInformation(); - -protected slots: - void onChangeBackgroundColor(); - -protected: - bool eventFilter(QObject* object, QEvent* event); - -private: -// SUPERVGraph_Point* findPoint(int x, int y); - float distance(int xp, int yp, int xl, int yl, int xn, int yn); - -// SUPERVGraph_Main* main; - QPoint where; - QPopupMenu* popup; - int pci; - int pan; - int pap; - int pdl; - int pif; -}; - -#endif diff --git a/src/SUPERVGraph/SUPERVGraph_ViewFrame.cxx b/src/SUPERVGraph/SUPERVGraph_ViewFrame.cxx deleted file mode 100644 index 7e125178a..000000000 --- a/src/SUPERVGraph/SUPERVGraph_ViewFrame.cxx +++ /dev/null @@ -1,310 +0,0 @@ -// SALOME SUPERVGraph : build Supervisor viewer into desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SUPERVGraph_ViewFrame.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "SUPERVGraph_ViewFrame.h" - -#include "QAD_Settings.h" -#include "QAD_Config.h" -#include "QAD_Application.h" -#include "QAD_Desktop.h" -#include "SALOME_Selection.h" - -#include "utilities.h" - -//QT Include -#include -#include -using namespace std; - -SUPERVGraph_View::SUPERVGraph_View(QWidget* theParent): QWidget(theParent){ - init(theParent); -} -SUPERVGraph_View::SUPERVGraph_View(SUPERVGraph_View* theParent): QWidget(theParent){ - setPopupServer(theParent->getPopupServer()); - init(theParent); -} -void SUPERVGraph_View::init(QWidget* theParent){ - if ( theParent->inherits( "QMainWindow" ) ) { - ( ( QMainWindow* )theParent )->setCentralWidget( this ); - } - else { - QBoxLayout* layout = new QVBoxLayout( theParent ); - layout->addWidget( this ); - } - -} -void SUPERVGraph_View::onCreatePopup(){ - /* - if ( myPopup ) { - QAD_Desktop* Desktop = (QAD_Desktop*) QAD_Application::getDesktop(); - QAD_Study* ActiveStudy = Desktop->getActiveStudy(); - SALOME_Selection* Sel = SALOME_Selection::Selection( ActiveStudy->getSelection() ); - - QString theContext; - QString theParent("Viewer"); - QString theObject; - - Desktop->definePopup( theContext, theParent, theObject ); - Desktop->createPopup( myPopup, theContext, theParent, theObject); - Desktop->customPopup( myPopup, theContext, theParent, theObject ); - if (Sel->IObjectCount() == 0 && myPopup->count()<1) { - int id; - myIDs.append ( id = myPopup->insertItem (tr ("MEN_VP3D_CHANGEBGR")) ); - QAD_ASSERT ( myPopup->connectItem ( id, this, SLOT(onChangeBackgroundColor())) ); - } - } - */ - } -/*! - Constructor -*/ -SUPERVGraph_ViewFrame::SUPERVGraph_ViewFrame(QWidget* parent, const char* name) - : QAD_ViewFrame(parent, name) -{ - myView = 0; - //myView = new SUPERVGraph_View(this); - // Set BackgroundColor - /* - int R = QAD_CONFIG->getSetting("SUPERVGraph:BackgroundColorRed").toInt(); - int G = QAD_CONFIG->getSetting("SUPERVGraph:BackgroundColorGreen").toInt(); - int B = QAD_CONFIG->getSetting("SUPERVGraph:BackgroundColorBlue").toInt(); - setBackgroundColor(QColor(R,G,B));*/ -} -SUPERVGraph_ViewFrame::~SUPERVGraph_ViewFrame(){} - -/*! - Returns widget containing 3D-Viewer -*/ -SUPERVGraph_View* SUPERVGraph_ViewFrame::getViewWidget(){ - return myView; -} - - -void SUPERVGraph_ViewFrame::setViewWidget(SUPERVGraph_View* theView) { - myView = theView; - if (myApp) { - myView->setPopupServer(myApp); - } -} - - -/*! - Display/hide Trihedron -*/ -void SUPERVGraph_ViewFrame::onViewTrihedron() -{ - MESSAGE ( "SUPERVGraph_ViewFrame::onViewTrihedron" ) -} - -/*! - Provides top projection of the active view -*/ -void SUPERVGraph_ViewFrame::onViewTop() -{ - MESSAGE ( "SUPERVGraph_ViewFrame::onViewTop" ) -} - -/*! - Provides bottom projection of the active view -*/ -void SUPERVGraph_ViewFrame::onViewBottom() -{ - MESSAGE ( "SUPERVGraph_ViewFrame::onViewBottom" ) -} - -/*! - Provides left projection of the active view -*/ -void SUPERVGraph_ViewFrame::onViewLeft() -{ - MESSAGE ( "SUPERVGraph_ViewFrame::onViewLeft" ) -} - -/*! - Provides right projection of the active view -*/ -void SUPERVGraph_ViewFrame::onViewRight() -{ - MESSAGE ( "SUPERVGraph_ViewFrame::onViewRight" ) -} - -/*! - Provides back projection of the active view -*/ -void SUPERVGraph_ViewFrame::onViewBack() -{ - MESSAGE ( "SUPERVGraph_ViewFrame::onViewBack" ) -} - -/*! - Provides front projection of the active view -*/ -void SUPERVGraph_ViewFrame::onViewFront() -{ - MESSAGE ( "SUPERVGraph_ViewFrame::onViewFront" ) -} - -/*! - Reset the active view -*/ -void SUPERVGraph_ViewFrame::onViewReset() -{ - MESSAGE ( "SUPERVGraph_ViewFrame::onViewReset" ) - if (myView) - myView->ResetView(); -} - -/*! - Rotates the active view -*/ -void SUPERVGraph_ViewFrame::onViewRotate() -{ - MESSAGE ( "SUPERVGraph_ViewFrame::onViewRotate" ) -} - -/*! - Sets a new center of the active view -*/ -void SUPERVGraph_ViewFrame::onViewGlobalPan() -{ - MESSAGE ( "SUPERVGraph_ViewFrame::onViewGlobalPan" ) -} - -/*! - Zooms the active view -*/ -void SUPERVGraph_ViewFrame::onViewZoom() -{ - MESSAGE ( "SUPERVGraph_ViewFrame::onViewZoom" ) -} - -/*! - Moves the active view -*/ -void SUPERVGraph_ViewFrame::onViewPan() -{ - MESSAGE ( "SUPERVGraph_ViewFrame::onViewPan" ) - if (myView != NULL) - myView->ActivatePanning(); -} - -/*! - Fits all obejcts within a rectangular area of the active view -*/ -void SUPERVGraph_ViewFrame::onViewFitArea() -{ - MESSAGE ( "SUPERVGraph_ViewFrame::onViewFitArea" ) -} - -/*! - Fits all objects in the active view -*/ -void SUPERVGraph_ViewFrame::onViewFitAll() -{ - MESSAGE ( "SUPERVGraph_ViewFrame::onViewFitAll" ) -} - -/*! - Set background of the viewport -*/ -void SUPERVGraph_ViewFrame::setBackgroundColor( const QColor& color) -{ - if (myView) - myView->setPaletteBackgroundColor(color); -} - -/*! - Returns background of the viewport -*/ -QColor SUPERVGraph_ViewFrame::backgroundColor() const -{ - if (myView) - return myView->paletteBackgroundColor(); - return QMainWindow::backgroundColor(); -} - - -void SUPERVGraph_ViewFrame::SetSelectionMode( Selection_Mode mode ) -{ - MESSAGE ( "SUPERVGraph_ViewFrame::SetSelectionMode" ) -} - -void SUPERVGraph_ViewFrame::onAdjustTrihedron( ) -{ - MESSAGE ( "SUPERVGraph_ViewFrame::onAdjustTrihedron" ) -} - -void SUPERVGraph_ViewFrame::rename( const Handle(SALOME_InteractiveObject)& IObject, - QString newName ) -{ - MESSAGE ( "SUPERVGraph_ViewFrame::rename" ) -} - -void SUPERVGraph_ViewFrame::unHighlightAll() -{ - MESSAGE ( "SUPERVGraph_ViewFrame::unHighlightAll" ) -} - -void SUPERVGraph_ViewFrame::highlight( const Handle(SALOME_InteractiveObject)& IObject, - bool highlight, bool immediatly ) -{ - MESSAGE ( "SUPERVGraph_ViewFrame::highlight" ) -} - -bool SUPERVGraph_ViewFrame::isInViewer( const Handle(SALOME_InteractiveObject)& IObject ) -{ - MESSAGE ( "SUPERVGraph_ViewFrame::isInViewer" ) - return false; -} - -bool SUPERVGraph_ViewFrame::isVisible( const Handle(SALOME_InteractiveObject)& IObject ) -{ - MESSAGE ( "SUPERVGraph_ViewFrame::isVisible" ) - return false; -} - -void SUPERVGraph_ViewFrame::setPopupServer( QAD_Application* App ) -{ - myApp = App; - if (myView) { - myView->setPopupServer(myApp); - } -} - -void SUPERVGraph_ViewFrame::undo(SALOMEDS::Study_var aStudy, - const char* StudyFrameEntry) -{ - MESSAGE ( "SUPERVGraph_ViewFrame::undo" ) -} - -void SUPERVGraph_ViewFrame::redo(SALOMEDS::Study_var aStudy, - const char* StudyFrameEntry) -{ - MESSAGE ( "SUPERVGraph_ViewFrame::redo" ) -} - diff --git a/src/SUPERVGraph/SUPERVGraph_ViewFrame.h b/src/SUPERVGraph/SUPERVGraph_ViewFrame.h deleted file mode 100644 index 05edf9581..000000000 --- a/src/SUPERVGraph/SUPERVGraph_ViewFrame.h +++ /dev/null @@ -1,120 +0,0 @@ -// SALOME SUPERVGraph : build Supervisor viewer into desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SUPERVGraph_ViewFrame.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef SUPERVGraph_ViewFrame_H -#define SUPERVGraph_ViewFrame_H - -#include "QAD.h" -#include "QAD_ViewFrame.h" -#include "QAD_Application.h" - -#include "SALOME_InteractiveObject.hxx" -#include "SALOME_Selection.h" - -class QAD_EXPORT SUPERVGraph_View: public QWidget, public QAD_PopupClientServer{ - Q_OBJECT; - public: - SUPERVGraph_View(QWidget* theParent); - SUPERVGraph_View(SUPERVGraph_View* theParent); - - virtual void ActivatePanning() = 0; - virtual void ResetView() = 0; - protected: - void init(QWidget* theParent); - void onCreatePopup(); -}; - -class QAD_EXPORT SUPERVGraph_ViewFrame : public QAD_ViewFrame { - Q_OBJECT - - public: - SUPERVGraph_ViewFrame(QWidget* parent, const char* name=0 ); - ~SUPERVGraph_ViewFrame(); - - ViewType getTypeView() const{ return VIEW_GRAPHSUPERV;}; - SUPERVGraph_View* getViewWidget(); - void setViewWidget(SUPERVGraph_View* theView); - - void setBackgroundColor( const QColor& ); - QColor backgroundColor() const; - - void SetSelectionMode( Selection_Mode mode ); - - void onAdjustTrihedron( ); - - /* popup management */ - void setPopupServer( QAD_Application* ); - - /* interactive object management */ - void highlight( const Handle(SALOME_InteractiveObject)& IObject, - bool highlight, bool immediatly = true ); - void unHighlightAll(); - void rename( const Handle(SALOME_InteractiveObject)& IObject, - QString newName ); - bool isInViewer( const Handle(SALOME_InteractiveObject)& IObject ); - bool isVisible( const Handle(SALOME_InteractiveObject)& IObject ); - - /* undo/redo management */ - void undo(SALOMEDS::Study_var aStudy, - const char* StudyFrameEntry); - void redo(SALOMEDS::Study_var aStudy, - const char* StudyFrameEntry); - - - /* selection */ - Handle(SALOME_InteractiveObject) FindIObject(const char* Entry) { Handle(SALOME_InteractiveObject) o; return o; }; - - /* display */ - void Display(const Handle(SALOME_InteractiveObject)& IObject, bool immediatly = true){}; - void DisplayOnly(const Handle(SALOME_InteractiveObject)& IObject){}; - void Erase(const Handle(SALOME_InteractiveObject)& IObject, bool immediatly = true){}; - void DisplayAll(){}; - void EraseAll(){}; - void Repaint() {}; - - public slots: - void onViewPan(); - void onViewZoom(); - void onViewFitAll(); - void onViewFitArea(); - void onViewGlobalPan(); - void onViewRotate(); - void onViewReset(); - void onViewFront(); - void onViewBack(); - void onViewRight(); - void onViewLeft(); - void onViewBottom(); - void onViewTop(); - void onViewTrihedron(); - - private: - SUPERVGraph_View* myView; - QAD_Application* myApp; -}; -#endif diff --git a/src/Session/Makefile.in b/src/Session/Makefile.in deleted file mode 100644 index 499b7705f..000000000 --- a/src/Session/Makefile.in +++ /dev/null @@ -1,60 +0,0 @@ -# SALOME Session : implementation of Session.idl -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Author : Paul RASCLE, EDF -# Module : SALOME -# $Header$ - -# source path -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -EXPORT_HEADERS= SALOME_Session_i.hxx - -# Libraries targets -LIB = libSalomeSession.la -LIB_SRC=\ - SALOME_Session_i.cxx \ - Session_ServerThread.cxx \ - Session_ServerLauncher.cxx \ - SALOME_Session_SignalsHandler.cxx - -# Executables targets -BIN = SALOME_Session_Server -BIN_SRC = -BIN_SERVER_IDL = SALOME_Session.idl -BIN_CLIENT_IDL = SALOMEDS.idl SALOMEDS_Attributes.idl SALOME_Component.idl SALOME_ContainerManager.idl SALOME_Registry.idl SALOME_ModuleCatalog.idl SALOME_Exception.idl - -CPPFLAGS+=$(QT_MT_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) $(HDF5_INCLUDES) -CXXFLAGS+=$(OCC_CXXFLAGS) -LDFLAGS+=$(QT_MT_LIBS) $(HDF5_LIBS) -lSalomeHDFPersist -lSalomeNS -lSalomeGUI -lSalomeObject -lSalomeLifeCycleCORBA -lqsplitterP -lOpUtil -lPlot2d -lSalomeVTKFilter -lSALOMELocalTrace -lSalomeContainer -lRegistry -lSalomeNotification -lSalomeDS -lTOOLSDS -lSalomeGenericObj -lSalomeCatalog -lEvent -lSalomePrs $(CAS_LDPATH) -lTKBO -lCASCatch -lSalomeResourcesManager -LDFLAGSFORBIN= $(LDFLAGS) -lSALOMETraceCollector - -@CONCLUDE@ - diff --git a/src/Session/SALOME_Session_QThread.cxx b/src/Session/SALOME_Session_QThread.cxx deleted file mode 100644 index 9b1e5d95f..000000000 --- a/src/Session/SALOME_Session_QThread.cxx +++ /dev/null @@ -1,181 +0,0 @@ -// SALOME Session : implementation of Session.idl -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_Session_QThread.cxx -// Author : Paul RASCLE, EDF -// Module : SALOME -// $Header$ - -#include -#include - -#include "utilities.h" -#include "SALOME_Session_QThread.hxx" -#include "SALOME_NamingService.hxx" -#include "SALOMEGUI_Application.h" -#include "QAD.h" -#include "QAD_MessageBox.h" -#include "QAD_Application.h" -#include "QAD_Settings.h" -#include "QAD_Config.h" -#include "QAD_Tools.h" -// only to use findFile method : perhaps put it in QAD_Tools ??? -#include "QAD_ResourceMgr.h" -#include - -#include "Utils_CatchSignals.h" -#include "Utils_CorbaException.hxx" -#include -#include CORBA_SERVER_HEADER(SALOMEDS) -using namespace std; - -//============================================================================= -/*! SALOME_Session_QThread - * constructor - */ -//============================================================================= - -SALOME_Session_QThread::SALOME_Session_QThread(int argc, char ** argv) : QThread() -{ - _qappl = 0 ; - _mw = 0 ; - _argc = argc ; - _argv = argv ; - _NS = 0 ; -} - - -//============================================================================= -/*! run - * Creates one QApplication for the all the session life. - * Executes the Qt main window of the GUI on a separate thread - */ -//============================================================================= -void SALOME_Session_QThread::run() -{ - if (_qappl == 0) - { - _qappl = new QApplication(_argc, _argv ); - MESSAGE("creation QApplication"); - } - - QAD_ASSERT ( QObject::connect(_qappl, SIGNAL(lastWindowClosed()), _qappl, SLOT(quit()) ) ); - _mw = new SALOMEGUI_Application ( "MDTV-Standard", "HDF", "hdf" ); - MESSAGE("creation SALOMEGUI_Application"); - - if ( !SALOMEGUI_Application::addToDesktop ( _mw, _NS ) ) - { - QAD_MessageBox::error1 ( 0, - QObject::tr("ERR_ERROR"), - QObject::tr("ERR_APP_INITFAILED"), - QObject::tr("BUT_OK") ); - } - else - { - - QFileInfo prgInfo(_argv[0]); - QDir prgDir(prgInfo.dirPath(true)); - QAD_CONFIG->setPrgDir(prgDir); // CWD is program directory - QAD_CONFIG->createConfigFile(false); // Create config file ~/.tr(MEN_APPNAME)/tr(MEN_APPNAME).conf if there's none - QAD_CONFIG->readConfigFile(); // Read config file - - _qappl->setPalette( QAD_Application::getPalette() ); - - Utils_CatchSignals aCatch; - aCatch.Activate(); - - /* Run 'SALOMEGUI' application */ - QAD_Application::run(); - - // T2.12 - catch exceptions thrown on attempts to modified a locked study - while (1) { - try { - MESSAGE("run(): starting the main event loop"); - _ret = _qappl->exec(); - break; - } - catch (SALOME::SALOME_Exception& e) { - INFOS("run(): SALOME::SALOME_Exception is caught"); - QApplication::restoreOverrideCursor(); - QAD_MessageBox::error1 ( (QWidget*)QAD_Application::getDesktop(), - QObject::tr("ERR_ERROR"), - QObject::tr("ERR_APP_EXCEPTION")+ QObject::tr(" SALOME::SALOME_Exception is caught") , - QObject::tr("BUT_OK") ); - - } - catch(SALOMEDS::StudyBuilder::LockProtection&) { - INFOS("run(): An attempt to modify a locked study has not been handled by QAD_Operation"); - QApplication::restoreOverrideCursor(); - QAD_MessageBox::warn1 ( (QWidget*)QAD_Application::getDesktop(), - QObject::tr("WRN_WARNING"), - QObject::tr("WRN_STUDY_LOCKED"), - QObject::tr("BUT_OK") ); - } - catch (const CORBA::Exception& e) { - CORBA::Any tmp; - tmp<<= e; - CORBA::TypeCode_var tc = tmp.type(); - const char *p = tc->name(); - INFOS ("run(): CORBA exception of the kind : "<getConfigDir().absPath() + "/" + QObject::tr("MEN_APPNAME") + ".conf"; - MESSAGE (confMsg); - QAD_CONFIG->createConfigFile(true); - } -} - -//============================================================================= -/*! setNamingService - * gives the naming service interface - */ -//============================================================================= -void SALOME_Session_QThread::setNamingService(SALOME_NamingService *ns) -{ - _NS = ns; -} diff --git a/src/Session/SALOME_Session_QThread.hxx b/src/Session/SALOME_Session_QThread.hxx deleted file mode 100644 index 9e9941bd7..000000000 --- a/src/Session/SALOME_Session_QThread.hxx +++ /dev/null @@ -1,62 +0,0 @@ -// SALOME Session : implementation of Session.idl -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_Session_QThread.hxx -// Author : Paul RASCLE, EDF -// Module : SALOME -// $Header$ - -#ifndef _SALOME_SESSION_QTHREAD_HXX_ -#define _SALOME_SESSION_QTHREAD_HXX_ - -#include -class QApplication; - -class SALOMEGUI_Application; -class SALOME_NamingService; - - -//! Qt thread class for the GUI -class SALOME_Session_QThread: public QThread -{ - -public: - SALOME_Session_QThread(int argc, char ** argv) ; - - //! launch the Qt main window of the GUI on a separate thread - virtual void run() ; - - //! set the naming service - void setNamingService(SALOME_NamingService *ns); - -protected: - int _argc ; - char ** _argv; - int _ret ; - SALOME_NamingService *_NS; - QApplication *_qappl ; - - SALOMEGUI_Application* _mw ; -} ; - -#endif diff --git a/src/Session/SALOME_Session_Server.cxx b/src/Session/SALOME_Session_Server.cxx deleted file mode 100644 index a1106986d..000000000 --- a/src/Session/SALOME_Session_Server.cxx +++ /dev/null @@ -1,275 +0,0 @@ -// SALOME Session : implementation of Session.idl -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_Session_Server.cxx -// Author : Paul RASCLE, EDF -// Module : SALOME -// $Header$ - -#include "Utils_ORB_INIT.hxx" -#include "Utils_SINGLETON.hxx" -#include "SALOME_NamingService.hxx" -#include -#include - -#include -#include -#include -#include - -#include "SALOMEGUI_Application.h" -#include "QAD.h" -#include "QAD_MessageBox.h" -#include "QAD_Application.h" -#include "QAD_Settings.h" -#include "QAD_Config.h" -#include "QAD_Tools.h" -#include "QAD_ResourceMgr.h" -#include "Utils_SALOME_Exception.hxx" -#include "Utils_CorbaException.hxx" -#include "SALOMEGUI_QtCatchCorbaException.hxx" -#include "SALOME_Event.hxx" - -#include -#include CORBA_SERVER_HEADER(SALOME_Session) -#include CORBA_SERVER_HEADER(SALOMEDS) - -#include "utilities.h" -#include "SALOMETraceCollector.hxx" - -#include "SALOME_Session_i.hxx" - -#include "Session_ServerLauncher.hxx" -using namespace std; - -extern "C" int HandleSignals(QApplication *theQApplication); - -/*! - read arguments, define list of server to launch with their arguments. - * - wait for naming service - * - create and run a thread for launch of all servers - * - */ - -//! CORBA server for SALOME Session -/*! - * SALOME_Session Server launches a SALOME session servant. - * The servant registers to the Naming Service. - * See SALOME_Session.idl for interface specification. - * - * Main services offered by the servant are: - * - launch GUI - * - stop Session (must be idle) - * - get session state - */ - -using namespace std; - -#ifdef _DEBUG_ -static int MYDEBUG = 0; -#else -static int MYDEBUG = 0; -#endif - -void MessageOutput( QtMsgType type, const char *msg ) -{ - switch ( type ) { - case QtDebugMsg: - MESSAGE( "Debug: " << msg ); - break; - case QtWarningMsg: - MESSAGE( "Warning: " << msg ); - break; - case QtFatalMsg: - MESSAGE( "Fatal: " << msg ); - break; - } -} - -int main(int argc, char **argv) -{ - SALOME_Event::GetSessionThread(); - ORB_INIT &init = *SINGLETON_::Instance() ; - int orbArgc = 1; - CORBA::ORB_var &orb = init( orbArgc , argv ) ; - SALOMETraceCollector *myThreadTrace = SALOMETraceCollector::instance(orb); - qInstallMsgHandler( MessageOutput ); - try - { - CORBA::Object_var obj = orb->resolve_initial_references("RootPOA"); - PortableServer::POA_var poa = PortableServer::POA::_narrow(obj); - - PortableServer::POAManager_var pman = poa->the_POAManager() ; - pman->activate() ; - INFOS("pman->activate()"); - - SALOME_NamingService *_NS = new SALOME_NamingService(orb); - - // CORBA Servant Launcher - QMutex _GUIMutex ; - QWaitCondition _ServerLaunch; - _GUIMutex.lock(); // to block Launch server thread until wait(mutex) - - Session_ServerLauncher* myServerLauncher - = new Session_ServerLauncher(argc, argv, orb, poa, &_GUIMutex, &_ServerLaunch); - myServerLauncher->start(); - - QApplication *_qappl = 0; - - // Allow multiple activation/deactivation of GUI - while ( 1 ) { - MESSAGE("waiting wakeAll()"); - _ServerLaunch.wait(&_GUIMutex); // to be reseased by Launch server thread when ready: - // atomic operation lock - unlock on mutex - // unlock mutex: serverThread runs, calls _ServerLaunch->wakeAll() - // this thread wakes up, and lock mutex - - INFOS("Session activated, Launch IAPP..."); - - int qappArgc = 1; - if ( !_qappl ) - _qappl = new QApplication(qappArgc, argv ); - - INFOS("creation QApplication"); - _GUIMutex.unlock(); - - QAD_ASSERT ( QObject::connect(_qappl, SIGNAL(lastWindowClosed()), _qappl, SLOT(quit()) ) ); - SALOMEGUI_Application* _mw = new SALOMEGUI_Application ( "MDTV-Standard", "HDF", "hdf" ); - INFOS("creation SALOMEGUI_Application"); - - SCRUTE(_NS); - if ( !SALOMEGUI_Application::addToDesktop ( _mw, _NS ) ) { - QAD_MessageBox::error1 ( 0, - QObject::tr("ERR_ERROR"), - QObject::tr("ERR_APP_INITFAILED"), - QObject::tr("BUT_OK") ); - } - else { - QFileInfo prgInfo(argv[0]); - QDir prgDir(prgInfo.dirPath(true)); - QAD_CONFIG->setPrgDir(prgDir); // CWD is program directory - QAD_CONFIG->createConfigFile(false); // Create config file - // ~/.tr(MEN_APPNAME)/tr(MEN_APPNAME).conf if there's none - QAD_CONFIG->readConfigFile(); // Read config file - - _qappl->setPalette( QAD_Application::getPalette() ); - - /* Run 'SALOMEGUI' application */ - QAD_Application::run(); - - // T2.12 - catch exceptions thrown on attempts to modified a locked study - while (1) { - try - { - MESSAGE("run(): starting the main event loop"); - int _ret = HandleSignals(_qappl); - break; - } - catch (SALOME::SALOME_Exception& e) - { - QtCatchCorbaException(e); - } - catch(SALOMEDS::StudyBuilder::LockProtection&) - { - INFOS("run(): An attempt to modify a locked study has not been handled by QAD_Operation"); - QApplication::restoreOverrideCursor(); - QAD_MessageBox::warn1 ( (QWidget*)QAD_Application::getDesktop(), - QObject::tr("WRN_WARNING"), - QObject::tr("WRN_STUDY_LOCKED"), - QObject::tr("BUT_OK") ); - } - catch (const CORBA::Exception& e) - { - CORBA::Any tmp; - tmp<<= e; - CORBA::TypeCode_var tc = tmp.type(); - const char *p = tc->name(); - INFOS ("run(): CORBA exception of the kind : "<getConfigDir().absPath() + "/" + QObject::tr("MEN_APPNAME") + ".conf"; - MESSAGE (confMsg); - QAD_CONFIG->createConfigFile(true); - } - - // Prepare _GUIMutex for a new GUI activation - _GUIMutex.lock(); - } - - //orb->shutdown(0); - myServerLauncher->KillAll(); - } - catch (SALOME_Exception& e) - { - INFOS("run(): SALOME::SALOME_Exception is caught: "<name(); - INFOS ("run(): CORBA exception of the kind : "< -#include - -#include "CASCatch_SignalsHandler.h" // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC -using namespace std; - - -extern "C" int HandleSignals(QApplication *theQApplication) -{ - CASCatch_SignalsHandler aSignalsHandler; - int aRet = -1; - try { - aRet = theQApplication->exec(); - }catch(Standard_Failure){ - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - throw std::runtime_error(aFail->GetMessageString()); - } - return aRet; -} diff --git a/src/Session/SALOME_Session_i.cxx b/src/Session/SALOME_Session_i.cxx deleted file mode 100644 index 7e6c34c86..000000000 --- a/src/Session/SALOME_Session_i.cxx +++ /dev/null @@ -1,208 +0,0 @@ -// SALOME Session : implementation of Session.idl -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_Session_i.cxx -// Author : Paul RASCLE, EDF -// Module : SALOME -// $Header$ - -#include "utilities.h" - -#include "SALOME_Session_i.hxx" -#include "SALOME_NamingService.hxx" -#include "SALOME_Event.hxx" - -#include "QAD_Application.h" -#include "QAD_Desktop.h" -#include - -// Open CASCADE Includes -#include -#include -#include -using namespace std; - -//============================================================================= -/*! SALOME_Session_i - * constructor - */ -//============================================================================= - -SALOME_Session_i::SALOME_Session_i(int argc, - char ** argv, - CORBA::ORB_ptr orb, - PortableServer::POA_ptr poa, - QMutex* GUIMutex, - QWaitCondition* GUILauncher) -{ - _argc = argc ; - _argv = argv ; - _isGUI = FALSE ; - _runningStudies= 0 ; - _orb = CORBA::ORB::_duplicate(orb) ; - _poa = PortableServer::POA::_duplicate(poa) ; - _GUIMutex = GUIMutex; - _GUILauncher = GUILauncher; - //MESSAGE("constructor end"); -} - -//============================================================================= -/*! GetVisuComponent - * returns Visu component - */ -//============================================================================= - -Engines::Component_ptr SALOME_Session_i::GetVisuComponent() -{ - //MESSAGE("SALOME_Session_i::GetVisuGen"); - typedef Engines::Component_ptr TGetImpl(CORBA::ORB_ptr, - PortableServer::POA_ptr, - SALOME_NamingService*,QMutex*); - OSD_SharedLibrary aSharedLibrary("libVISUEngineImpl.so"); - if(aSharedLibrary.DlOpen(OSD_RTLD_LAZY)) - if(OSD_Function anOSDFun = aSharedLibrary.DlSymb("GetImpl")) - return ((TGetImpl (*)) anOSDFun)(_orb,_poa,_NS,_GUIMutex); - return Engines::Component::_nil(); -} - -//============================================================================= -/*! ~SALOME_Session_i - * destructor - */ -//============================================================================= - -SALOME_Session_i::~SALOME_Session_i() -{ - //MESSAGE("destructor end"); -} - -//============================================================================= -/*! NSregister - * tries to find the Corba Naming Service and to register the session, - * gives naming service interface to _IAPPThread - */ -//============================================================================= - -void SALOME_Session_i::NSregister() -{ - SALOME::Session_ptr pSession = SALOME::Session::_narrow(_this()); - try - { - _NS = new SALOME_NamingService(_orb); - _NS->Register(pSession, "/Kernel/Session"); - } - catch (ServiceUnreachable&) - { - INFOS("Caught exception: Naming Service Unreachable"); - exit(1) ; - } - catch (...) - { - INFOS("Caught unknown exception from Naming Service"); - } - //MESSAGE("Session registered in Naming Service"); -} - -//============================================================================= -/*! GetInterface - * Launches the GUI if there is none. - * The Corba method is oneway (corba client does'nt wait for GUI completion) - */ -//============================================================================= - -void SALOME_Session_i::GetInterface() -{ - if( !QAD_Application::getDesktop() ) { - _GUILauncher->wakeAll(); - MESSAGE("SALOME_Session_i::GetInterface() called, starting GUI...") - } -} - -//============================================================================= -/*! StopSession - * Kills the session if there are no active studies nore GUI - */ -//============================================================================= -class CloseEvent : public SALOME_Event -{ -public: - virtual void Execute() { - if ( QAD_Application::getDesktop() ) - QAD_Application::getDesktop()->closeDesktop( true ); - } -}; - -void SALOME_Session_i::StopSession() -{ - ProcessVoidEvent( new CloseEvent() ); -} - -//============================================================================= -/*! StatSession - * Send a SALOME::StatSession structure (see idl) to the client - * (number of running studies and presence of GUI) - */ -//============================================================================= - -class QtLock -{ -public: - QtLock() { if ( qApp ) qApp->lock(); } - ~QtLock() { if ( qApp ) qApp->unlock(); } -}; - - -SALOME::StatSession SALOME_Session_i::GetStatSession() -{ - // update Session state - _GUIMutex->lock(); - - _runningStudies = 0; - { - QtLock lock; - _isGUI = QAD_Application::getDesktop(); - if ( _isGUI && QAD_Application::getDesktop()->getActiveApp() ) - _runningStudies = QAD_Application::getDesktop()->getActiveApp()->getStudies().count(); - } - - _GUIMutex->unlock(); - - // getting stat info - SALOME::StatSession_var myStats = new SALOME::StatSession ; - if (_runningStudies) - myStats->state = SALOME::running ; - else - myStats->state = SALOME::asleep ; - myStats->runningStudies = _runningStudies ; - myStats->activeGUI = _isGUI ; - return myStats._retn() ; -} - -CORBA::Long SALOME_Session_i::GetActiveStudyId() -{ - long aStudyId=-1; - if( QAD_Application::getDesktop() && QAD_Application::getDesktop()->getActiveStudy()) { - aStudyId = QAD_Application::getDesktop()->getActiveStudy()->getStudyId(); - } - return aStudyId; -} diff --git a/src/Session/SALOME_Session_i.hxx b/src/Session/SALOME_Session_i.hxx deleted file mode 100644 index b6820e5af..000000000 --- a/src/Session/SALOME_Session_i.hxx +++ /dev/null @@ -1,87 +0,0 @@ -// SALOME Session : implementation of Session.idl -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_Session_i.hxx -// Author : Paul RASCLE, EDF -// Module : SALOME -// $Header$ - -#ifndef _SALOME_SESSION_I_HXX_ -#define _SALOME_SESSION_I_HXX_ - -#include - -#include -#include CORBA_SERVER_HEADER(SALOME_Component) -#include CORBA_SERVER_HEADER(SALOME_Session) -class SALOME_NamingService; -class SALOME_Session_QThread; - -class SALOME_Session_i: public virtual POA_SALOME::Session, - public virtual PortableServer::RefCountServantBase -{ -public: - SALOME_Session_i(int argc, - char ** argv, - CORBA::ORB_ptr orb, - PortableServer::POA_ptr poa, - QMutex* GUIMutex, - QWaitCondition* GUILauncher); - ~SALOME_Session_i(); - - //! Launch Graphical User Interface - void GetInterface(); - - //! Return VISU component - Engines::Component_ptr GetVisuComponent(); - - //! Stop the Session (must be idle): kill servant & server - void StopSession(); - - //! Get session state - SALOME::StatSession GetStatSession(); - - //! Register the servant to Naming Service - void NSregister(); - - CORBA::Long GetActiveStudyId(); - - void ping(){}; - -protected: - - //! Naming service interface - SALOME_NamingService *_NS; - - int _argc ; - char **_argv; - CORBA::Boolean _isGUI ; - QMutex* _GUIMutex ; - QWaitCondition* _GUILauncher; - int _runningStudies ; - CORBA::ORB_var _orb; - PortableServer::POA_var _poa; -}; - -#endif - diff --git a/src/Session/Session_ServerLauncher.cxx b/src/Session/Session_ServerLauncher.cxx deleted file mode 100644 index 6b9f4b92e..000000000 --- a/src/Session/Session_ServerLauncher.cxx +++ /dev/null @@ -1,242 +0,0 @@ -// SALOME Session : implementation of Session_ServerLauncher.cxx -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Session_ServerLauncher.xx -// Author : Paul RASCLE, EDF -// Module : SALOME -// $Header$ - -#include "Session_ServerLauncher.hxx" - -#include "Utils_SALOME_Exception.hxx" -#include "utilities.h" -using namespace std; - -//============================================================================= -/*! - * default constructor not for use - */ -//============================================================================= - -Session_ServerLauncher::Session_ServerLauncher() -{ - ASSERT(0); // must not be called -} - -//============================================================================= -/*! - * constructor - */ -//============================================================================= - -Session_ServerLauncher::Session_ServerLauncher(int argc, - char ** argv, - CORBA::ORB_ptr orb, - PortableServer::POA_ptr poa, - QMutex *GUIMutex, - QWaitCondition *ServerLaunch) -{ - _argc = argc; - _argv = argv; - _orb = CORBA::ORB::_duplicate(orb); - _root_poa = PortableServer::POA::_duplicate(poa); - _GUIMutex = GUIMutex; - _ServerLaunch = ServerLaunch; -} - -//============================================================================= -/*! - * destructor - */ -//============================================================================= - -Session_ServerLauncher::~Session_ServerLauncher() -{ -} - -//============================================================================= -/*! - * Check args and activate servers - */ -//============================================================================= - -void Session_ServerLauncher::run() -{ - //MESSAGE("Session_ServerLauncher::run"); - _GUIMutex->lock(); // lock released by calling thread when ready: wait(mutex) - //MESSAGE("Server Launcher thread free to go..."); - _GUIMutex->unlock(); - - CheckArgs(); - ActivateAll(); - - _orb->run(); // this thread wait, during omniORB process events -} - -//============================================================================= -/*! - * controls and dispatchs arguments given with command - */ -//============================================================================= - -void Session_ServerLauncher::CheckArgs() -{ - int argState = 0; - ServArg aServArg(0,0,0); - _argCopy.reserve(_argc); - for (int iarg=0; iarg <_argc; iarg++) - { - SCRUTE(iarg); - SCRUTE(_argv[iarg]); - _argCopy.push_back(_argv[iarg]); - switch (argState) - { - case 0: // looking for "--with" - { - if (strcmp(_argv[iarg],"--with")==0) - argState = 1; - break; - } - case 1: // looking for server type - { - for (int i=0; iInit(); - - list::iterator itServ; - for (itServ = _argServToLaunch.begin(); itServ !=_argServToLaunch.end(); itServ++) - { - int argc = 2 + (*itServ)._lastArg - (*itServ)._firstArg; - char** argv = new char*[argc+1]; - argv[argc]=0; // for Engines_Container_i constructor... - int servType = (*itServ)._servType; - argv[0]=strdup(Session_ServerThread::_serverTypes[servType]); - if (argc>1) - { - for (int i=0; iInit(); - } - - // Always launch Session Server - - int argc=1; - argv = new char*[argc]; - argv[0] = "Session"; - Session_SessionThread* aServerThread - = new Session_SessionThread(argc, argv, _orb,_root_poa,_GUIMutex,_ServerLaunch); - _serverThreads.push_front(aServerThread); - - aServerThread->Init(); -} - -//============================================================================= -/*! - * Destruction des classes serveur dans l'ordre inverse de creation - */ -//============================================================================= - -void Session_ServerLauncher::KillAll() -{ - MESSAGE("Session_ServerLauncher::KillAll()"); - list::reverse_iterator itServ; - for (itServ = _serverThreads.rbegin(); itServ !=_serverThreads.rend(); itServ++) - { - delete (*itServ); - } -} diff --git a/src/Session/Session_ServerLauncher.hxx b/src/Session/Session_ServerLauncher.hxx deleted file mode 100644 index e5c112322..000000000 --- a/src/Session/Session_ServerLauncher.hxx +++ /dev/null @@ -1,86 +0,0 @@ -// SALOME Session : implementation of Session_ServerLauncher.hxx -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Session_ServerLauncher.hxx -// Author : Paul RASCLE, EDF -// Module : SALOME -// $Header$ - -#ifndef _SESSION_SERVERLAUNCHER_HXX_ -#define _SESSION_SERVERLAUNCHER_HXX_ - -#include "Session_ServerThread.hxx" - -#include -#include -#include -#include -#include -#include - - -class ServArg - { - public: - int _servType; - int _firstArg; - int _lastArg; - inline ServArg(int servType=0, int firstArg=0, int lastArg=0); -}; - -inline ServArg::ServArg(int servType, int firstArg, int lastArg): - _servType(servType),_firstArg(firstArg),_lastArg(lastArg) -{} - -class Session_ServerLauncher: public QThread -{ -public: - Session_ServerLauncher(); - Session_ServerLauncher(int argc, - char ** argv, - CORBA::ORB_ptr orb, - PortableServer::POA_ptr poa, - QMutex *GUIMutex, - QWaitCondition *ServerLaunch); - virtual ~Session_ServerLauncher(); - void run(); - void KillAll(); - -protected: - void CheckArgs(); - void ActivateAll(); - -private: - int _argc; - char ** _argv; - CORBA::ORB_var _orb; - PortableServer::POA_var _root_poa; - QMutex* _GUIMutex; - QWaitCondition *_ServerLaunch; - std::list _argServToLaunch; - std::vector _argCopy; - std::list _serverThreads; -}; - -#endif - diff --git a/src/Session/Session_ServerThread.cxx b/src/Session/Session_ServerThread.cxx deleted file mode 100644 index eef032494..000000000 --- a/src/Session/Session_ServerThread.cxx +++ /dev/null @@ -1,514 +0,0 @@ -// SALOME Session : implementation of Session_ServerThread.cxx -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Session_ServerThread.cxx -// Author : Paul RASCLE, EDF -// Module : SALOME -// $Header$ - -// #include -// #include CORBA_SERVER_HEADER(SALOME_Session) -// #include CORBA_SERVER_HEADER(SALOMEDS) - -#include "Session_ServerThread.hxx" - -#include "SALOME_Container_i.hxx" -#include "SALOME_ContainerManager.hxx" -#include "SALOMEDS_StudyManager_i.hxx" -#include "SALOME_ModuleCatalog_impl.hxx" -#include "RegistryService.hxx" -#include "SALOME_Session_i.hxx" - -#include "Utils_ORB_INIT.hxx" -#include "Utils_SINGLETON.hxx" -#include "Utils_SALOME_Exception.hxx" -#include "OpUtil.hxx" -#include "NamingService_WaitForServerReadiness.hxx" -#include "utilities.h" - -#include -#include - -using namespace std; - -const int Session_ServerThread::NB_SRV_TYP = 6; -const char* Session_ServerThread::_serverTypes[NB_SRV_TYP] = {"Container", - "ModuleCatalog", - "Registry", - "SALOMEDS", - "Session", - "ContainerManager"}; - -//============================================================================= -/*! - * default constructor not for use - */ -//============================================================================= - -Session_ServerThread::Session_ServerThread() -{ - ASSERT(0); // must not be called -} - -//============================================================================= -/*! - * constructor - */ -//============================================================================= - -Session_ServerThread::Session_ServerThread(int argc, - char ** argv, - CORBA::ORB_ptr orb, - PortableServer::POA_ptr poa, - QMutex *GUIMutex) -{ - //MESSAGE("Session_ServerThread Constructor " << argv[0]); - _argc = argc; - _argv = argv; - _orb = CORBA::ORB::_duplicate(orb); - _root_poa = PortableServer::POA::_duplicate(poa); - _GUIMutex = GUIMutex; - _servType =-1; - _NS = new SALOME_NamingService(_orb); // one instance per server to limit - // multi thread coherence problems -} - -//============================================================================= -/*! - * destructor - */ -//============================================================================= - -Session_ServerThread::~Session_ServerThread() -{ - //MESSAGE("~Session_ServerThread "<< _argv[0]); -} - -//============================================================================= -/*! - * run the thread : activate one servant, the servant type is given by - * argument _argv[0] - */ -//============================================================================= - -void Session_ServerThread::Init() -{ - MESSAGE("Session_ServerThread::Init "<< _argv[0]); - - for (int i=0; i<_argc; i++) SCRUTE(_argv[i]); - for (int i=0; iactivate_object (Catalogue_i); - - CORBA::Object_ptr myCata = Catalogue_i->_this(); - _NS->Register(myCata ,"/Kernel/ModulCatalog"); - } - catch(CORBA::SystemException&) - { - INFOS( "Caught CORBA::SystemException." ); - } - catch(CORBA::Exception&) - { - INFOS( "Caught CORBA::Exception." ); - } - catch(omniORB::fatalException& fe) - { - INFOS( "Caught omniORB::fatalException:" ); - INFOS( " file: " << fe.file() ); - INFOS( " line: " << fe.line() ); - INFOS( " mesg: " << fe.errmsg() ); - } - catch(...) - { - INFOS( "Caught unknown exception." ); - } -} - -//============================================================================= -/*! - * - */ -//============================================================================= - -void Session_ServerThread::ActivateSALOMEDS(int argc, - char ** argv) -{ - try - { - INFOS("SALOMEDS thread started"); - // We allocate the objects on the heap. Since these are reference - // counted objects, they will be deleted by the POA when they are no - // longer needed. - - SALOMEDS_StudyManager_i * myStudyManager_i - = new SALOMEDS_StudyManager_i(_orb,_root_poa); - - // Activate the objects. This tells the POA that the objects are - // ready to accept requests. - - PortableServer::ObjectId_var myStudyManager_iid - = _root_poa->activate_object(myStudyManager_i); - myStudyManager_i->register_name("/myStudyManager"); - } - catch(CORBA::SystemException&) - { - INFOS( "Caught CORBA::SystemException." ); - } - catch(CORBA::Exception&) - { - INFOS( "Caught CORBA::Exception." ); - } - catch(omniORB::fatalException& fe) - { - INFOS( "Caught omniORB::fatalException:" ); - INFOS( " file: " << fe.file() ); - INFOS( " line: " << fe.line() ); - INFOS( " mesg: " << fe.errmsg() ); - } - catch(...) - { - INFOS( "Caught unknown exception." ); - } -} - -//============================================================================= -/*! - * - */ -//============================================================================= - -void Session_ServerThread::ActivateRegistry(int argc, - char ** argv) -{ - INFOS("Registry thread started"); - SCRUTE(argc); - if( argc<3 ) - { - INFOS("you must provide the Salome session name when you call SALOME_Registry_Server"); - throw CommException("you must provide the Salome session name when you call SALOME_Registry_Server"); - } - const char *ptrSessionName=0; - - int k=0 ; - for ( k=1 ; k0); - const char *registryName = "Registry"; - Registry::Components_var varComponents; - try - { - RegistryService *ptrRegistry = SINGLETON_::Instance(); - ptrRegistry->SessionName( ptrSessionName ); - varComponents = ptrRegistry->_this(); - // The RegistryService must not already exist. - - try - { - CORBA::Object_var pipo = _NS->Resolve( registryName ); - if (CORBA::is_nil(pipo) ) throw ServiceUnreachable(); - INFOS("RegistryService servant already existing" ); - ASSERT(0); - } - catch( const ServiceUnreachable &ex ) - { - } - catch( const CORBA::Exception &exx ) - { - } - string absoluteName = string("/") + registryName; - _NS->Register( varComponents , absoluteName.c_str() ); - MESSAGE("On attend les requetes des clients"); - } - catch( const SALOME_Exception &ex ) - { - INFOS( "Communication Error : " << ex.what() ); - ASSERT(0); - } -} - -//============================================================================= -/*! - * - */ -//============================================================================= - -void Session_ServerThread::ActivateContainerManager(int argc, - char ** argv) -{ - try - { - PortableServer::POA_var root_poa=PortableServer::POA::_the_root_poa(); - cout << "ActivateContainerManager ......!!!! " << endl; - SALOME_ContainerManager * myContainer - = new SALOME_ContainerManager(_orb); - } - catch(CORBA::SystemException&) - { - INFOS("Caught CORBA::SystemException."); - } - catch(PortableServer::POA::WrongPolicy&) - { - INFOS("Caught CORBA::WrongPolicyException."); - } - catch(PortableServer::POA::ServantAlreadyActive&) - { - INFOS("Caught CORBA::ServantAlreadyActiveException"); - } - catch(CORBA::Exception&) - { - INFOS("Caught CORBA::Exception."); - } - catch(...) - { - INFOS("Caught unknown exception."); - } -} - -//============================================================================= -/*! - * - */ -//============================================================================= - -void Session_ServerThread::ActivateContainer(int argc, - char ** argv) -{ - try - { - INFOS("Container thread started"); - - // get or create the child POA - - PortableServer::POA_var factory_poa; - try - { - factory_poa = _root_poa->find_POA("factory_poa",0); - // 0 = no activation (already done if exists) - } - catch (PortableServer::POA::AdapterNonExistent&) - { - INFOS("factory_poa does not exists, create..."); - // define policy objects - PortableServer::ImplicitActivationPolicy_var implicitActivation = - _root_poa->create_implicit_activation_policy( - PortableServer::NO_IMPLICIT_ACTIVATION); - // default = NO_IMPLICIT_ACTIVATION - PortableServer::ThreadPolicy_var threadPolicy = - _root_poa->create_thread_policy(PortableServer::ORB_CTRL_MODEL); - // default = ORB_CTRL_MODEL, other choice SINGLE_THREAD_MODEL - - // create policy list - CORBA::PolicyList policyList; - policyList.length(2); - policyList[0] = PortableServer::ImplicitActivationPolicy:: - _duplicate(implicitActivation); - policyList[1] = PortableServer::ThreadPolicy:: - _duplicate(threadPolicy); - - PortableServer::POAManager_var nil_mgr - = PortableServer::POAManager::_nil(); - factory_poa = _root_poa->create_POA("factory_poa", - nil_mgr, - policyList); - //with nil_mgr instead of pman, - //a new POA manager is created with the new POA - - // destroy policy objects - implicitActivation->destroy(); - threadPolicy->destroy(); - - // obtain the factory poa manager - PortableServer::POAManager_var pmanfac = factory_poa->the_POAManager(); - pmanfac->activate(); - MESSAGE("pmanfac->activate()"); - } - - char *containerName = ""; - if (argc >1) - { - containerName = argv[1]; - } - - Engines_Container_i * myContainer - = new Engines_Container_i(_orb, factory_poa, containerName , argc , argv , true , false); - } - catch(CORBA::SystemException&) - { - INFOS("Caught CORBA::SystemException."); - } - catch(PortableServer::POA::WrongPolicy&) - { - INFOS("Caught CORBA::WrongPolicyException."); - } - catch(PortableServer::POA::ServantAlreadyActive&) - { - INFOS("Caught CORBA::ServantAlreadyActiveException"); - } - catch(CORBA::Exception&) - { - INFOS("Caught CORBA::Exception."); - } - catch(...) - { - INFOS("Caught unknown exception."); - } -} - -//============================================================================= -/*! - * - */ -//============================================================================= - -void Session_ServerThread::ActivateSession(int argc, - char ** argv) -{ - MESSAGE("Session_ServerThread::ActivateSession() not implemented!"); -} - -Session_SessionThread::Session_SessionThread(int argc, - char** argv, - CORBA::ORB_ptr orb, - PortableServer::POA_ptr poa, - QMutex* GUIMutex, - QWaitCondition* GUILauncher) -: Session_ServerThread(argc, argv, orb, poa, GUIMutex), - _GUILauncher( GUILauncher ) -{ -} - -Session_SessionThread::~Session_SessionThread() -{ -} - -void Session_SessionThread::ActivateSession(int argc, - char ** argv) -{ - try - { - INFOS("Session thread started"); - SALOME_Session_i * mySALOME_Session - = new SALOME_Session_i(argc, argv, _orb, _root_poa, _GUIMutex, _GUILauncher) ; - PortableServer::ObjectId_var mySALOME_Sessionid - = _root_poa->activate_object(mySALOME_Session); - INFOS("poa->activate_object(mySALOME_Session)"); - - CORBA::Object_var obj = mySALOME_Session->_this(); - CORBA::String_var sior(_orb->object_to_string(obj)); - - mySALOME_Session->NSregister(); - } - catch (CORBA::SystemException&) - { - INFOS("Caught CORBA::SystemException."); - } - catch (CORBA::Exception&) - { - INFOS("Caught CORBA::Exception."); - } - catch (...) - { - INFOS("Caught unknown exception."); - } -} diff --git a/src/Session/Session_ServerThread.hxx b/src/Session/Session_ServerThread.hxx deleted file mode 100644 index 9293cd4d2..000000000 --- a/src/Session/Session_ServerThread.hxx +++ /dev/null @@ -1,96 +0,0 @@ -// SALOME Session : implementation of Session_ServerThread.hxx -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : Session_ServerThread.hxx -// Author : Paul RASCLE, EDF -// Module : SALOME -// $Header$ - -#ifndef _SESSION_SERVERTHREAD_HXX_ -#define _SESSION_SERVERTHREAD_HXX_ - -#include - -#include "SALOME_NamingService.hxx" -#include - - -class Session_ServerThread -{ -public: - static const int NB_SRV_TYP; - static const char* _serverTypes[]; - - Session_ServerThread(); - Session_ServerThread(int argc, - char ** argv, - CORBA::ORB_ptr orb, - PortableServer::POA_ptr poa, - QMutex *GUIMutex); - virtual ~Session_ServerThread(); - void Init(); -protected: - void ActivateModuleCatalog(int argc, - char ** argv); - void ActivateSALOMEDS(int argc, - char ** argv); - void ActivateRegistry(int argc, - char ** argv); - void ActivateContainer(int argc, - char ** argv); - void ActivateContainerManager(int argc, - char ** argv); - virtual void ActivateSession(int argc, - char ** argv); - -protected: - int _argc; - char ** _argv; - int _servType; - CORBA::ORB_var _orb; - PortableServer::POA_var _root_poa; - QMutex* _GUIMutex; - SALOME_NamingService *_NS; -}; - -class Session_SessionThread : public Session_ServerThread -{ -public: - Session_SessionThread() {} - Session_SessionThread(int argc, - char** argv, - CORBA::ORB_ptr orb, - PortableServer::POA_ptr poa, - QMutex* GUIMutex, - QWaitCondition* GUILauncher); - virtual ~Session_SessionThread(); - -protected: - virtual void ActivateSession(int argc, - char ** argv); -private: - QWaitCondition* _GUILauncher; -}; - -#endif - diff --git a/src/Session/runSession b/src/Session/runSession deleted file mode 100644 index cbb98a2da..000000000 --- a/src/Session/runSession +++ /dev/null @@ -1,27 +0,0 @@ -export SALOME_HOME_DIR=`pwd` -export ORB_HOME_DIR=${HOME}/public/omni - -# OCAF -export CSF_PluginDefaults=${SALOME_HOME_DIR}/../resources -export CSF_ResourcesDefaults=${SALOME_HOME_DIR}/../resources - -export CSF_SALOMEGUIResources=${SALOME_HOME_DIR}/../SALOME/resources -export CSF_SALOMEGUILanguage=en -export CSF_QADResources=${SALOME_HOME_DIR}/../SALOME/resources -export CSF_QADLanguage=en - -export CSF_CatalogueResources=${SALOME_HOME_DIR}/../resources - -export CSF_GeometryResources=${SALOME_HOME_DIR}/../GEOM/resources - -export CSF_MeshResources=${SALOME_HOME_DIR}/../MESH/resources - -export CSF_PATHComponents=${SALOME_HOME_DIR}/../lib - -export LD_LIBRARY_PATH=${SALOME_HOME_DIR}/../lib/:${LD_LIBRARY_PATH} - -runNS.sh -geom& -mesh& -SALOME_Session_Server - diff --git a/src/TOOLSGUI/Makefile.in b/src/TOOLSGUI/Makefile.in deleted file mode 100644 index d41cb3724..000000000 --- a/src/TOOLSGUI/Makefile.in +++ /dev/null @@ -1,65 +0,0 @@ -# SALOME TOOLSGUI : implementation of desktop "Tools" optioins -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Author : Marc Tajchman (CEA) -# Module : SALOME -# $Header$ - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -# header files -EXPORT_HEADERS = ToolsGUI.h - -# .po files to transform in .qm -PO_FILES = \ - ToolsGUI_icons.po \ - ToolsGUI_msg_en.po - -# Libraries targets -LIB = libToolsGUI.la - -LIB_SRC = ToolsGUI.cxx \ - ToolsGUI_CatalogGeneratorDlg.cxx - -LIB_MOC = ToolsGUI_CatalogGeneratorDlg_moc.cxx - -LIB_CLIENT_IDL = SALOMEDS.idl SALOMEDS_Attributes.idl \ - SALOME_Component.idl SALOME_ContainerManager.idl SALOME_Exception.idl - -# additionnal information to compil and link file - -CPPFLAGS += $(QT_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) -CXXFLAGS += $(OCC_CXXFLAGS) - -LDFLAGS += -lSalomeGUI - - -@CONCLUDE@ - diff --git a/src/TOOLSGUI/ToolsGUI.cxx b/src/TOOLSGUI/ToolsGUI.cxx deleted file mode 100644 index eb0b26b85..000000000 --- a/src/TOOLSGUI/ToolsGUI.cxx +++ /dev/null @@ -1,143 +0,0 @@ -// SALOME TOOLSGUI : implementation of desktop "Tools" optioins -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : ToolsGUI.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "ToolsGUI.h" -#include "ToolsGUI_CatalogGeneratorDlg.h" - -#include "utilities.h" - -#include - -#include CORBA_SERVER_HEADER(SALOMEDS_Attributes) - -using namespace std; - -//============================================================================ -// function : runCommand -// purpose : Run command -//============================================================================ -int ToolsGUI::runCommand(string & arg) -{ - int res; - res = system( arg.c_str() ); - - if ( res == -1 ) - MESSAGE( "fork failed (system command result = 0x" << hex << res << ")" << dec ) - else - if ( res == 217 ) - MESSAGE( "shell exec failed (system command result = 0x" << hex << res << ")" << dec ) - return res; -} - -//============================================================================ -// function : OnGUIEvent -// purpose : Process events -//============================================================================ -bool ToolsGUI::OnGUIEvent( int theCommandID, QAD_Desktop* parent ) -{ - switch ( theCommandID ) - { - case 5102 : - { - ToolsGUI_CatalogGeneratorDlg* aDlg = new ToolsGUI_CatalogGeneratorDlg( parent ); - aDlg->exec(); - delete aDlg; - break; - } - - default: - MESSAGE ( " No command associated with this id = " << theCommandID ) - break; - } - return true; -} - -extern "C" -{ - bool OnGUIEvent( int theCommandID, QAD_Desktop* parent ) - { - return ToolsGUI::OnGUIEvent(theCommandID, parent); - } -} - -//======================================================================= -// name : GetVisibility -// Purpose : Verify whether object is visible or not -//======================================================================= -bool ToolsGUI::GetVisibility( SALOMEDS::Study_var theStudy, - SALOMEDS::SObject_var theObj, - void* theId ) -{ - SALOMEDS::GenericAttribute_var anAttr; - if ( !theObj->_is_nil() && theObj->FindAttribute( anAttr, "AttributeGraphic" ) ) - { - SALOMEDS::AttributeGraphic_var aGraphic = - SALOMEDS::AttributeGraphic::_narrow( anAttr ); - return aGraphic->GetVisibility( (unsigned long)theId ); - } - - return false; -} - -//======================================================================= -// name : SetVisibility -// Purpose : Set flag visibility of object -//======================================================================= -bool ToolsGUI::SetVisibility( SALOMEDS::Study_var theStudy, - const char* theEntry, - const bool theValue, - void* theId ) -{ - SALOMEDS::SObject_var anObj = theStudy->FindObjectID( theEntry ); - - if ( !anObj->_is_nil() ) - { - SALOMEDS::GenericAttribute_var aGAttr; - if ( anObj->FindAttribute( aGAttr, "AttributeGraphic" ) ) - { - SALOMEDS::AttributeGraphic_var anAttr = SALOMEDS::AttributeGraphic::_narrow( aGAttr ); - anAttr->SetVisibility( (unsigned long)theId, theValue ); - } - else if ( theValue ) - { - SALOMEDS::StudyBuilder_var aBuilder = theStudy->NewBuilder(); - SALOMEDS::AttributeGraphic_var anAttr = SALOMEDS::AttributeGraphic::_narrow( - aBuilder->FindOrCreateAttribute( anObj, "AttributeGraphic" ) ); - anAttr->SetVisibility( (unsigned long)theId, theValue ); - } - return true; - } - - return false; -} - - - - - - diff --git a/src/TOOLSGUI/ToolsGUI.h b/src/TOOLSGUI/ToolsGUI.h deleted file mode 100644 index bd4022f22..000000000 --- a/src/TOOLSGUI/ToolsGUI.h +++ /dev/null @@ -1,58 +0,0 @@ -// SALOME TOOLSGUI : implementation of desktop "Tools" optioins -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : ToolsGUI.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef ToolsGUI_HeaderFile -#define ToolsGUI_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif - -#include "QAD_Desktop.h" - -#include -#include CORBA_SERVER_HEADER(SALOMEDS) - -class Standard_EXPORT ToolsGUI -{ - -public : - - static int runCommand( string& ); - static bool OnGUIEvent( int theCommandID, QAD_Desktop* parent ); - - static bool GetVisibility( SALOMEDS::Study_var theStudy, - SALOMEDS::SObject_var theObj, - void* theId ); - static bool SetVisibility( SALOMEDS::Study_var theStudy, - const char* theEntry, - const bool theValue, - void* theId ); -}; - -#endif diff --git a/src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.cxx b/src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.cxx deleted file mode 100644 index 43b673a8e..000000000 --- a/src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.cxx +++ /dev/null @@ -1,430 +0,0 @@ -// SALOME TOOLSGUI : implementation of desktop "Tools" optioins -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : ToolsGUI_CatalogGeneratorDlg.cxx -// Author : Nicolas REJNERI -// Modified : Marc TAJCHMAN -// Module : SALOME -// $Header$ - -#include "ToolsGUI_CatalogGeneratorDlg.h" - -#include "QAD_Application.h" -#include "QAD_Desktop.h" -#include "QAD_FileDlg.h" -#include "QAD_MessageBox.h" -#include "QAD_Tools.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include "utilities.h" - -using namespace std; - -#define SPACING_SIZE 6 -#define MARGIN_SIZE 11 -#define MIN_EDIT_SIZE 250 - -//================================================================================= -// class : ToolsGUI_CatalogGeneratorDlg() -// purpose : Constructor -//================================================================================= -ToolsGUI_CatalogGeneratorDlg::ToolsGUI_CatalogGeneratorDlg( QWidget* parent, const char* name ) - : QDialog( parent, name, TRUE, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ) -{ - if ( !name ) - setName( "ToolsGUI_CatalogGeneratorDlg" ); - resize( 322, 120 ); - setCaption( tr( "TOOLS_CATALOG_GENERATOR" ) ); - setSizeGripEnabled( TRUE ); - - QGridLayout* aTopLayout = new QGridLayout(this); - aTopLayout->setMargin(MARGIN_SIZE); - aTopLayout->setSpacing(SPACING_SIZE); - - QGroupBox* filesGrp = new QGroupBox( tr( "TOOLS_FILES") , this, "filesGrp" ); - filesGrp->setColumnLayout( 0, Qt::Vertical ); - filesGrp->layout()->setSpacing( 0 ); - filesGrp->layout()->setMargin( 0 ); - QGridLayout* filesGrpLayout = new QGridLayout( filesGrp->layout() ); - filesGrpLayout->setAlignment( Qt::AlignTop ); - filesGrpLayout->setSpacing( SPACING_SIZE ); - filesGrpLayout->setMargin( MARGIN_SIZE ); - - myIdlEdit = new QLineEdit( filesGrp, "myIdlEdit" ); - myIdlEdit->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myIdlEdit->setMinimumSize( MIN_EDIT_SIZE, 0 ); - myXmlEdit = new QLineEdit( filesGrp, "myXmlEdit" ); - myXmlEdit->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myXmlEdit->setMinimumSize( MIN_EDIT_SIZE, 0 ); - - myBrowseIdlBtn = new QPushButton( tr( "TOOLS_BUT_BROWSE" ), filesGrp, "myBrowseIdlBtn" ); - myBrowseXmlBtn = new QPushButton( tr( "TOOLS_BUT_BROWSE" ), filesGrp, "myBrowseXmlBtn" ); -// QFontMetrics fm(myBrowseIdlBtn->font()); -// myBrowseIdlBtn->setFixedWidth(fm.width(myBrowseIdlBtn->text()) + 10); -// myBrowseXmlBtn->setFixedWidth(fm.width(myBrowseXmlBtn->text()) + 10); - - filesGrpLayout->addWidget( new QLabel( tr( "TOOLS_IDL_FILE" ), filesGrp ), 0, 0); - filesGrpLayout->addWidget( myIdlEdit, 0, 1 ); - filesGrpLayout->addWidget( myBrowseIdlBtn, 0, 2 ); - filesGrpLayout->addWidget( new QLabel( tr( "TOOLS_XML_FILE" ), filesGrp ), 1, 0); - filesGrpLayout->addWidget( myXmlEdit, 1, 1 ); - filesGrpLayout->addWidget( myBrowseXmlBtn, 1, 2 ); - - QGroupBox* supplGrp = new QGroupBox(tr( "TOOLS_SUPPLEMENT" ) , this, "SupplGrp" ); - supplGrp->setColumnLayout( 0, Qt::Vertical ); - supplGrp->layout()->setSpacing( 0 ); - supplGrp->layout()->setMargin( 0 ); - QGridLayout* supplGrpLayout = new QGridLayout( supplGrp->layout() ); - supplGrpLayout->setAlignment( Qt::AlignTop ); - supplGrpLayout->setSpacing( SPACING_SIZE ); - supplGrpLayout->setMargin( MARGIN_SIZE ); - - QSize myMinimumSize(int(MIN_EDIT_SIZE*0.3), 0); - - myAuthorEdit = new QLineEdit( supplGrp , "myAuthorEdit" ); - myAuthorEdit->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myAuthorEdit->setMinimumSize( myMinimumSize ); - - OSD_Process aProcess; - myAuthorEdit->setText(aProcess.UserName().ToCString()); - - myVersionEdit = new QLineEdit(supplGrp , "myVersion" ); - myVersionEdit->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myVersionEdit->setMinimumSize( myMinimumSize ); - QStringList aList = QStringList::split(QRegExp("\\s+"),tr( "INF_VERSION" )); - myVersionEdit->setText(aList.last()); - - myPngEdit = new QLineEdit(supplGrp , "myCompIcon" ); - myPngEdit->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myPngEdit->setMinimumSize( MIN_EDIT_SIZE, 0 ); - - myBrowsePngBtn = new QPushButton( tr( "TOOLS_BUT_BROWSE" ), supplGrp, "myBrowsePngBtn" ); - - myCompName = new QLineEdit(supplGrp , "myCompName"); - myCompName->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myCompName->setMinimumSize( myMinimumSize ); - - myCompUserName = new QLineEdit(supplGrp , "myCompUserName"); - myCompUserName->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myCompUserName->setMinimumSize( MIN_EDIT_SIZE*0.3, 0 ); - - myCompType = new QLineEdit(supplGrp , "myCompType"); - myCompType->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myCompType->setMinimumSize( myMinimumSize ); - myCompType->setText("OTHER"); - - myCompMultiStd = new QLineEdit(supplGrp , "myCompMultiStd"); - myCompMultiStd->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myCompMultiStd->setMinimumSize( myMinimumSize ); - myCompMultiStd->setText("1"); - QIntValidator *ivalidator = new QIntValidator(myVersionEdit); - myCompMultiStd->setValidator(ivalidator); - - supplGrpLayout->addWidget( new QLabel( tr( "TOOLS_AUTHOR" ), supplGrp ), 0, 0); - supplGrpLayout->addWidget( myAuthorEdit, 0, 1 ); - supplGrpLayout->addWidget( new QLabel( tr( "TOOLS_COMP_NAME" ), supplGrp ), 0, 2); - supplGrpLayout->addWidget(myCompName,0,3); - supplGrpLayout->addWidget( new QLabel( tr( "TOOLS_COMP_USERNAME" ), supplGrp ), 0, 4); - supplGrpLayout->addWidget(myCompUserName,0,5); - supplGrpLayout->addWidget( new QLabel( tr( "TOOLS_VERSION" ), supplGrp ), 1, 0); - supplGrpLayout->addWidget( myVersionEdit, 1, 1); - supplGrpLayout->addWidget( new QLabel( tr( "TOOLS_COMP_MULTISTD" ), supplGrp ), 1, 2); - supplGrpLayout->addWidget(myCompMultiStd,1,3); - supplGrpLayout->addWidget( new QLabel( tr( "TOOLS_COMP_TYPE" ), supplGrp ), 1, 4); - supplGrpLayout->addWidget(myCompType,1,5); - supplGrpLayout->addWidget( new QLabel( tr( "TOOLS_PNG_FILE" ), supplGrp ), 2, 0); - supplGrpLayout->addMultiCellWidget( myPngEdit, 2,2,1,4 ); - supplGrpLayout->addWidget( myBrowsePngBtn, 2, 5 ); - - - QHBoxLayout* aBtnLayout = new QHBoxLayout; - aBtnLayout->setSpacing( SPACING_SIZE ); - aBtnLayout->setMargin( 0 ); - - myApplyBtn = new QPushButton( tr( "TOOLS_BUT_APPLY" ), this, "myApplyBtn" ); - myApplyBtn->setAutoDefault( true ); - myApplyBtn->setDefault( true ); - myCloseBtn = new QPushButton( tr( "TOOLS_BUT_CLOSE" ), this, "myCloseBtn" ); - myCloseBtn->setAutoDefault( true ); - - aBtnLayout->addWidget( myApplyBtn ); - aBtnLayout->addItem( new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ) ); - aBtnLayout->addWidget( myCloseBtn ); - - aTopLayout->addWidget( filesGrp, 0, 0 ); - aTopLayout->addWidget( supplGrp, 1, 0 ); - aTopLayout->addLayout( aBtnLayout, 2, 0 ); - - /* signals and slots connections */ - connect( myApplyBtn, SIGNAL( clicked() ), this, SLOT( onApply() ) ); - connect( myCloseBtn, SIGNAL( clicked() ), this, SLOT( reject() ) ); - connect( myBrowseIdlBtn, SIGNAL( clicked() ), this, SLOT( onBrowseBtnClicked() ) ); - connect( myBrowseXmlBtn, SIGNAL( clicked() ), this, SLOT( onBrowseBtnClicked() ) ); - connect( myBrowsePngBtn, SIGNAL( clicked() ), this, SLOT( onBrowseBtnClicked() ) ); - connect( myIdlEdit, SIGNAL( textChanged( const QString& ) ), this, SLOT( updateButtonState() ) ); - connect( myXmlEdit, SIGNAL( textChanged( const QString& ) ), this, SLOT( updateButtonState() ) ); - - updateButtonState(); -} - -//================================================================================= -// function : ~ToolsGUI_CatalogGeneratorDlg() -// purpose : destructor -//================================================================================= -ToolsGUI_CatalogGeneratorDlg::~ToolsGUI_CatalogGeneratorDlg() -{ -} - -//================================================================================= -// function : getIdlFile() -// purpose : gets IDL file name entered -//================================================================================= -QString ToolsGUI_CatalogGeneratorDlg::getIdlFile() -{ - return myIdlEdit->text().stripWhiteSpace(); -} - -//================================================================================= -// function : getXmlFile() -// purpose : gets XML file name entered -//================================================================================= -QString ToolsGUI_CatalogGeneratorDlg::getXmlFile() -{ - return myXmlEdit->text().stripWhiteSpace(); -} - -//================================================================================= -// function : getPngFile() -// purpose : gets PNG file name entered -//================================================================================= -QString ToolsGUI_CatalogGeneratorDlg::getPngFile() -{ - return myPngEdit->text().stripWhiteSpace(); -} - -//================================================================================= -// function : getAuthor() -// purpose : gets author -//================================================================================= -QString ToolsGUI_CatalogGeneratorDlg::getAuthor() -{ - return myAuthorEdit->text().stripWhiteSpace(); -} - -//================================================================================= -// function : getVersion() -// purpose : gets version number -//================================================================================= -QString ToolsGUI_CatalogGeneratorDlg::getVersion() -{ - return myVersionEdit->text().stripWhiteSpace(); -} - -//================================================================================= -// function : getCompName() -// purpose : gets name of the component -//================================================================================= -QString ToolsGUI_CatalogGeneratorDlg::getCompName() -{ - return myCompName->text().stripWhiteSpace(); -} - -//================================================================================= -// function : getCompUserName() -// purpose : gets username of the component -//================================================================================= -QString ToolsGUI_CatalogGeneratorDlg::getCompUserName() -{ - return myCompUserName->text().stripWhiteSpace(); -} - -//================================================================================= -// function : getCompType() -// purpose : gets type of the component -//================================================================================= -QString ToolsGUI_CatalogGeneratorDlg::getCompMultiStd() -{ - return myCompMultiStd->text().stripWhiteSpace(); -} -//================================================================================= -// function : getComptype() -// purpose : gets type of the component -//================================================================================= -QString ToolsGUI_CatalogGeneratorDlg::getCompType() -{ - return myCompType->text().stripWhiteSpace(); -} - -//================================================================================= -// function : getIdlPath() -// purpose : gets IDL path of modules -//================================================================================= -QString ToolsGUI_CatalogGeneratorDlg::getIdlPath() -{ - SALOME_ModuleCatalog::ModuleCatalog_var aCatalog = - SALOME_ModuleCatalog::ModuleCatalog::_narrow( QAD_Application::getDesktop()->getCatalogue()); - - SALOME_ModuleCatalog::ListOfIAPP_Affich_var list_composants = - aCatalog->GetComponentIconeList(); - - QString IDLpath = ""; - - for (unsigned int ind = 0; ind < list_composants->length();ind++) { - QString modulename = CORBA::string_dup(list_composants[ind].modulename) ; - - QCString dir; - if (dir = getenv( modulename + "_ROOT_DIR")) { - IDLpath = IDLpath + "-I" + QAD_Tools::addSlash( QAD_Tools::addSlash(dir) + - QAD_Tools::addSlash("idl") + - QAD_Tools::addSlash("salome")) + " "; - } - } - - // MESSAGE ( " IDLpath = " << IDLpath); - - return IDLpath; -} - -//================================================================================= -// function : onBrowseBtnClicked() -// purpose : <...> (Browse) buttons slot -//================================================================================= -void ToolsGUI_CatalogGeneratorDlg::onBrowseBtnClicked() -{ - QPushButton* send = (QPushButton*)sender(); - - if ( send == myBrowseIdlBtn ) { - QString file = myIdlEdit->text().stripWhiteSpace(); - file = QAD_FileDlg::getFileName(QAD_Application::getDesktop(), - file, - tr("TOOLS_MEN_IMPORT_IDL"), - tr("TOOLS_MEN_IMPORT"), - true); - if ( !file.isEmpty() ) { - myIdlEdit->setText(file); - } - } - else if ( send == myBrowseXmlBtn ) { - QString file = QAD_FileDlg::getFileName(QAD_Application::getDesktop(), - myXmlEdit->text().stripWhiteSpace(), - tr("TOOLS_MEN_EXPORT_XML"), - tr("TOOLS_MEN_EXPORT"), - false); - if ( !file.isEmpty() ) { - myXmlEdit->setText(file); - } - } else if ( send == myBrowsePngBtn ) { - QString file = QAD_FileDlg::getFileName(QAD_Application::getDesktop(), - myXmlEdit->text().stripWhiteSpace(), - tr("TOOLS_MEN_IMPORT_PNG"), - tr("TOOLS_MEN_IMPORT"), - true); - if ( !file.isEmpty() ) { - myPngEdit->setText(file); - - } - } - updateButtonState(); -} - -//================================================================================= -// function : updateButtonState() -// purpose : Updates button's state -//================================================================================= -void ToolsGUI_CatalogGeneratorDlg::updateButtonState() -{ - myApplyBtn->setEnabled( !myIdlEdit->text().stripWhiteSpace().isEmpty() && - !myXmlEdit->text().stripWhiteSpace().isEmpty() ); -} - -//================================================================================= -// function : onApply() -// purpose : button slot, performs IDL->XML conversion -//================================================================================= -void ToolsGUI_CatalogGeneratorDlg::onApply() -{ - QString IDLpath = getIdlPath(); - QString XmlFile = getXmlFile(); - QString IdlFile = getIdlFile(); - QString Author = getAuthor(); - QString Version = getVersion(); - QString PngFile = getPngFile(); - QString CompName = getCompName(); //gets component name - QString CompUserName = getCompUserName(); //gets component username - QString CompType = getCompType(); //gets component type - QString CompMultiStd = getCompMultiStd(); - - if ( !XmlFile.isEmpty() && !IdlFile.isEmpty() ) { - if ( !QFile::exists( IdlFile ) ) { - QAD_MessageBox::error1( this, - tr("TOOLS_ERR_ERROR"), - tr("TOOLS_ERR_FILE_NOT_EXIST").arg(IdlFile), - tr ("TOOLS_BUT_OK") ); - } - else { - QString command = ""; - if ( getenv("KERNEL_ROOT_DIR") ) - command = QString( getenv( "KERNEL_ROOT_DIR" ) ) + "/bin/salome/runIDLparser -K " + IDLpath + " -Wbcatalog=" + XmlFile; - else { - QAD_MessageBox::error1( this, - tr("TOOLS_ERR_ERROR"), - tr("KERNEL_ROOT_DIR variable is not defined"), - tr("TOOLS_BUT_OK") ); - } - - if (!Author.isEmpty()) command += ",author=" + Author; - if (!Version.isEmpty()) command += ",version=" + Version; - if (!PngFile.isEmpty()) { - OSD_Path aPath((Standard_CString)PngFile.latin1()); - TCollection_AsciiString aFile = aPath.Name() + aPath.Extension(); - command += QString(",icon=") + QString(aFile.ToCString()); - } - if (!CompName.isEmpty()) command += ",name=" + CompName; - if (!CompUserName.isEmpty()) command += ",username=" + CompUserName; - if (!CompType.isEmpty()) command += ",type=" + CompType; - if (!CompMultiStd.isEmpty()) command += ",multistudy=" + CompMultiStd; - command += " " + IdlFile; - MESSAGE( "shell command is : " << command ); - int res; - res = system( ( char* )( command.latin1() ) ); - if ( res == -1 ) { - MESSAGE( "work failed (system command result = " << res ); - } else if (res == 217) { - MESSAGE( "shell exec failed (system command result = " << res ); - } - } - } -} diff --git a/src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.h b/src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.h deleted file mode 100644 index 9d474ac67..000000000 --- a/src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.h +++ /dev/null @@ -1,83 +0,0 @@ -// SALOME TOOLSGUI : implementation of desktop "Tools" optioins -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : ToolsGUI_CatalogGeneratorDlg.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef DIALOGBOX_TOOLSGUI_CATALOGGENERATORDLG_H -#define DIALOGBOX_TOOLSGUI_CATALOGGENERATORDLG_H - -#include - -class QLineEdit; -class QPushButton; - -//================================================================================= -// class : ToolsGUI_CatalogGeneratorDlg -// purpose : -//================================================================================= -class ToolsGUI_CatalogGeneratorDlg : public QDialog -{ - Q_OBJECT - -public: - ToolsGUI_CatalogGeneratorDlg( QWidget* parent = 0, const char* name = 0 ); - ~ToolsGUI_CatalogGeneratorDlg(); - - QString getIdlPath(); - QString getIdlFile(); - QString getXmlFile(); - QString getPngFile(); - QString getAuthor(); - QString getVersion(); - QString getCompName(); - QString getCompUserName(); - QString getCompType(); - QString getCompMultiStd(); - -protected slots: - void onBrowseBtnClicked(); - void updateButtonState(); - void onApply(); - -private: - QLineEdit* myIdlEdit; - QLineEdit* myXmlEdit; - QLineEdit* myPngEdit; - QLineEdit* myVersionEdit; - QLineEdit* myAuthorEdit; - QLineEdit* myCompName; - QLineEdit* myCompUserName; - QLineEdit* myCompType; - QLineEdit* myCompMultiStd; - QPushButton* myBrowseIdlBtn; - QPushButton* myBrowseXmlBtn; - QPushButton* myBrowsePngBtn; - - QPushButton* myApplyBtn; - QPushButton* myCloseBtn; -}; - -#endif // DIALOGBOX_TOOLSGUI_CATALOGGENERATORDLG_H diff --git a/src/TOOLSGUI/ToolsGUI_icons.po b/src/TOOLSGUI/ToolsGUI_icons.po deleted file mode 100644 index 9f0314326..000000000 --- a/src/TOOLSGUI/ToolsGUI_icons.po +++ /dev/null @@ -1,41 +0,0 @@ -# SALOME TOOLSGUI : implementation of desktop "Tools" optioins -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : ToolsGUI_icons.po -# Module : SALOME - -msgid "" -msgstr "" -"Project-Id-Version: SALOME VERSION 0.4\n" -"POT-Creation-Date: 2002-04-25 10:04:12 PM CEST\n" -"PO-Revision-Date: YYYY-MM-DD\n" -"Last-Translator: Nicolas REJNERI\n" -"Content-Type: text/plain; charset=iso-8859-1\n" - -# -#============================================================================== -# - -#: ToolsGUI_CatalogGeneratorDlg.cxx:50 -msgid "ToolsGUI_CatalogGeneratorDlg::ICON_SELECT" -msgstr "select1.png" diff --git a/src/TOOLSGUI/ToolsGUI_msg_en.po b/src/TOOLSGUI/ToolsGUI_msg_en.po deleted file mode 100644 index 09ad7be89..000000000 --- a/src/TOOLSGUI/ToolsGUI_msg_en.po +++ /dev/null @@ -1,130 +0,0 @@ -# SALOME TOOLSGUI : implementation of desktop "Tools" optioins -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : ToolsGUI_msg_en.po -# Module : SALOME - -msgid "" -msgstr "" -"Project-Id-Version: SALOME VERSION 0.4\n" -"POT-Creation-Date: 2002-04-25 10:04:12 PM CEST\n" -"PO-Revision-Date: YYYY-MM-DD\n" -"Last-Translator: Nicolas REJNERI\n" -"Content-Type: text/plain; charset=iso-8859-1\n" - -# -#============================================================================== -# - -#: ToolsGUI_CatalogGeneratorDlg.cxx:58 -msgid "ToolsGUI_CatalogGeneratorDlg::TOOLS_FILES" -msgstr "Files" - -#: ToolsGUI_CatalogGeneratorDlg.cxx:58 -msgid "ToolsGUI_CatalogGeneratorDlg::TOOLS_SUPPLEMENT" -msgstr "Component supplementary data" - -#: ToolsGUI_CatalogGeneratorDlg.cxx:150 -msgid "ToolsGUI_CatalogGeneratorDlg::TOOLS_MEN_EXPORT" -msgstr "Export" - -msgid "ToolsGUI_CatalogGeneratorDlg::TOOLS_MEN_IMPORT" -msgstr "Import" - -#: ToolsGUI_CatalogGeneratorDlg.cxx:47 -msgid "ToolsGUI_CatalogGeneratorDlg::TOOLS_CATALOG_GENERATOR" -msgstr "Catalog generator" - -#: ToolsGUI_CatalogGeneratorDlg.cxx:82 -msgid "ToolsGUI_CatalogGeneratorDlg::TOOLS_IDL_FILE" -msgstr "IDL : " - -#: ToolsGUI_CatalogGeneratorDlg.cxx:88 -msgid "ToolsGUI_CatalogGeneratorDlg::TOOLS_XML_FILE" -msgstr "XML : " - -#: ToolsGUI_CatalogGeneratorDlg.cxx:88 -msgid "ToolsGUI_CatalogGeneratorDlg::TOOLS_PNG_FILE" -msgstr "Icon : " - -msgid "ToolsGUI_CatalogGeneratorDlg::TOOLS_AUTHOR" -msgstr "Author : " - -msgid "ToolsGUI_CatalogGeneratorDlg::TOOLS_VERSION" -msgstr "Version : " - -msgid "ToolsGUI_CatalogGeneratorDlg::TOOLS_COMP_NAME" -msgstr "Name : " - -msgid "ToolsGUI_CatalogGeneratorDlg::TOOLS_COMP_USERNAME" -msgstr "UserName : " - -msgid "ToolsGUI_CatalogGeneratorDlg::TOOLS_COMP_TYPE" -msgstr "Type : " - -msgid "ToolsGUI_CatalogGeneratorDlg::TOOLS_COMP_MULTISTD" -msgstr "Multistudy : " - -#: ToolsGUI_CatalogGeneratorDlg.cxx:153 -msgid "ToolsGUI_CatalogGeneratorDlg::TOOLS_MEN_EXPORT_XML" -msgstr "XML Files ( *.xml )" - -#: ToolsGUI_CatalogGeneratorDlg.cxx:154 -msgid "ToolsGUI_CatalogGeneratorDlg::TOOLS_MEN_IMPORT_IDL" -msgstr "IDL Files ( *.idl )" - -#: ToolsGUI_CatalogGeneratorDlg.cxx:154 -msgid "ToolsGUI_CatalogGeneratorDlg::TOOLS_MEN_IMPORT_PNG" -msgstr "PNG Files ( *.png )" - -# -#============================================================================== -# - -#: ToolsGUI_CatalogGeneratorDlg.cxx:107 -msgid "TOOLS_BUT_CLOSE" -msgstr "&Close" - -#: ToolsGUI_CatalogGeneratorDlg.cxx:113 -msgid "TOOLS_BUT_OK" -msgstr "&Ok" - -msgid "TOOLS_BUT_BROWSE" -msgstr "Browse..." - -msgid "TOOLS_BUT_APPLY" -msgstr "&Apply" - -# -#============================================================================== -# - -#: ToolsGUI_CatalogGeneratorDlg.cxx:53 -msgid "TOOLS_WRN_WARNING" -msgstr "Warning" - -msgid "TOOLS_ERR_ERROR" -msgstr "Error" - -msgid "TOOLS_ERR_FILE_NOT_EXIST" -msgstr "%1\nFile doesn't exist" diff --git a/src/VTKFilter/Makefile.in b/src/VTKFilter/Makefile.in deleted file mode 100644 index e8297f1f8..000000000 --- a/src/VTKFilter/Makefile.in +++ /dev/null @@ -1,60 +0,0 @@ -# VISU OBJECT : interactive object for VISU entities implementation -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Module : VISU - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl - - -@COMMENCE@ - -EXPORT_HEADERS = SALOME_Transform.h \ - SALOME_TransformFilter.h \ - SALOME_PassThroughFilter.h \ - SALOME_ShrinkFilter.h \ - SALOME_GeometryFilter.h \ - SALOME_ExtractUnstructuredGrid.h - -# Libraries targets - -LIB = libSalomeVTKFilter.la -LIB_SRC = SALOME_Transform.cxx \ - SALOME_TransformFilter.cxx \ - SALOME_PassThroughFilter.cxx \ - SALOME_ShrinkFilter.cxx \ - SALOME_GeometryFilter.cxx \ - SALOME_ExtractUnstructuredGrid.cxx - -# Executables targets - -BIN = -BIN_SRC = - -CPPFLAGS+= $(VTK_INCLUDES) -LDFLAGS+= $(VTK_LIBS) -lOpUtil - -@CONCLUDE@ diff --git a/src/VTKFilter/SALOME_ExtractUnstructuredGrid.cxx b/src/VTKFilter/SALOME_ExtractUnstructuredGrid.cxx deleted file mode 100644 index 2cc4930bc..000000000 --- a/src/VTKFilter/SALOME_ExtractUnstructuredGrid.cxx +++ /dev/null @@ -1,348 +0,0 @@ -// VISU CONVERTOR : -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// File: VISU_ExtractUnstructuredGrid.cxx -// Author: Alexey PETROV -// Module : VISU - - -#include "SALOME_ExtractUnstructuredGrid.h" -#include "utilities.h" - -#include -#include -#include -#include -#include -#include -#include - -using namespace std; - -#ifdef _DEBUG_ -static int MYDEBUG = 0; -#else -static int MYDEBUG = 0; -#endif - -#if defined __GNUC__ - #if __GNUC__ == 2 - #define __GNUC_2__ - #endif -#endif - -vtkStandardNewMacro(SALOME_ExtractUnstructuredGrid); - - -SALOME_ExtractUnstructuredGrid::SALOME_ExtractUnstructuredGrid(): - myExtractionMode(eCells), myChangeMode(ePassAll) -{} - - -SALOME_ExtractUnstructuredGrid::~SALOME_ExtractUnstructuredGrid(){} - - -void SALOME_ExtractUnstructuredGrid::RegisterCell(vtkIdType theCellId){ - if(0 && MYDEBUG) MESSAGE("RegisterCell - theCellId = "<GetNumberOfCells() = "<GetNumberOfCells()); - MESSAGE("Execute - myCellTypes.size() = "<GetNumberOfCells() = "<GetNumberOfCells()); - if(myStoreMapping){ - MESSAGE("Execute - myOut2InId.size() = "< -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -using namespace std; - -#ifdef _DEBUG_ -static int MYDEBUG = 0; -static int MYDEBUGWITHFILES = 0; -#else -static int MYDEBUG = 0; -static int MYDEBUGWITHFILES = 0; -#endif - -#if defined __GNUC__ - #if __GNUC__ == 2 - #define __GNUC_2__ - #endif -#endif - -vtkCxxRevisionMacro(SALOME_GeometryFilter, "$Revision$"); -vtkStandardNewMacro(SALOME_GeometryFilter); - - -SALOME_GeometryFilter::SALOME_GeometryFilter(): - myShowInside(0), - myStoreMapping(0) -{} - - -SALOME_GeometryFilter::~SALOME_GeometryFilter() -{} - - -void SALOME_GeometryFilter::Execute() -{ - vtkDataSet *input= this->GetInput(); - vtkIdType numCells=input->GetNumberOfCells(); - - if (numCells == 0) - { - return; - } - - if (input->GetDataObjectType() == VTK_UNSTRUCTURED_GRID){ - this->UnstructuredGridExecute(); - return; - }else - vtkGeometryFilter::Execute(); -} - - -void SALOME_GeometryFilter::SetStoreMapping(int theStoreMapping){ - myStoreMapping = theStoreMapping; - this->Modified(); -} - - -vtkIdType SALOME_GeometryFilter::GetElemObjId(int theVtkID){ - if(myVTK2ObjIds.empty() || theVtkID > myVTK2ObjIds.size()) return -1; -#if defined __GNUC_2__ - return myVTK2ObjIds[theVtkID]; -#else - return myVTK2ObjIds.at(theVtkID); -#endif -} - - -void SALOME_GeometryFilter::UnstructuredGridExecute() -{ - vtkUnstructuredGrid *input= (vtkUnstructuredGrid *)this->GetInput(); - vtkCellArray *Connectivity = input->GetCells(); - if (Connectivity == NULL) {return;} - vtkIdType cellId; - int i; - int allVisible; - vtkIdType npts = 0; - vtkIdType *pts = 0; - vtkPoints *p = input->GetPoints(); - vtkIdType numCells=input->GetNumberOfCells(); - vtkPointData *pd = input->GetPointData(); - vtkCellData *cd = input->GetCellData(); - vtkPolyData *output = this->GetOutput(); - vtkPointData *outputPD = output->GetPointData(); - - vtkCellData *outputCD = output->GetCellData(); - vtkCellArray *Verts, *Lines, *Polys, *Strips; - vtkIdList *cellIds, *faceIds; - char *cellVis; - vtkIdType newCellId; - int faceId, *faceVerts, numFacePts; - float *x; - int PixelConvert[4], aNewPts[VTK_CELL_SIZE]; - // ghost cell stuff - unsigned char updateLevel = (unsigned char)(output->GetUpdateGhostLevel()); - unsigned char *cellGhostLevels = 0; - - PixelConvert[0] = 0; - PixelConvert[1] = 1; - PixelConvert[2] = 3; - PixelConvert[3] = 2; - - vtkDebugMacro(<<"Executing geometry filter for unstructured grid input"); - - vtkDataArray* temp = 0; - if (cd) - { - temp = cd->GetArray("vtkGhostLevels"); - } - if ( (!temp) || (temp->GetDataType() != VTK_UNSIGNED_CHAR) - || (temp->GetNumberOfComponents() != 1)) - { - vtkDebugMacro("No appropriate ghost levels field available."); - } - else - { - cellGhostLevels = ((vtkUnsignedCharArray*)temp)->GetPointer(0); - } - - // Check input - if ( Connectivity == NULL ) - { - vtkDebugMacro(<<"Nothing to extract"); - return; - } - - // Determine nature of what we have to do - cellIds = vtkIdList::New(); - faceIds = vtkIdList::New(); - if ( (!this->CellClipping) && (!this->PointClipping) && - (!this->ExtentClipping) ) - { - allVisible = 1; - cellVis = NULL; - } - else - { - allVisible = 0; - cellVis = new char[numCells]; - } - - // Just pass points through, never merge - output->SetPoints(input->GetPoints()); - outputPD->PassData(pd); - - outputCD->CopyAllocate(cd,numCells,numCells/2); - - output->Allocate(numCells/4+1,numCells); - //Verts = vtkCellArray::New(); - //Verts->Allocate(numCells/4+1,numCells); - //Lines = vtkCellArray::New(); - //Lines->Allocate(numCells/4+1,numCells); - //Polys = vtkCellArray::New(); - //Polys->Allocate(numCells/4+1,numCells); - //Strips = vtkCellArray::New(); - //Strips->Allocate(numCells/4+1,numCells); - - // Loop over the cells determining what's visible - if (!allVisible) - { - for (cellId=0, Connectivity->InitTraversal(); - Connectivity->GetNextCell(npts,pts); - cellId++) - { - cellVis[cellId] = 1; - if ( this->CellClipping && cellId < this->CellMinimum || - cellId > this->CellMaximum ) - { - cellVis[cellId] = 0; - } - else - { - for (i=0; i < npts; i++) - { - x = p->GetPoint(pts[i]); - if ( (this->PointClipping && (pts[i] < this->PointMinimum || - pts[i] > this->PointMaximum) ) || - (this->ExtentClipping && - (x[0] < this->Extent[0] || x[0] > this->Extent[1] || - x[1] < this->Extent[2] || x[1] > this->Extent[3] || - x[2] < this->Extent[4] || x[2] > this->Extent[5] )) ) - { - cellVis[cellId] = 0; - break; - }//point/extent clipping - }//for each point - }//if point clipping needs checking - }//for all cells - }//if not all visible - - // Loop over all cells now that visibility is known - // (Have to compute visibility first for 3D cell boundarys) - int progressInterval = numCells/20 + 1; - if(myStoreMapping){ - myVTK2ObjIds.clear(); - myVTK2ObjIds.reserve(numCells); - } - for (cellId=0, Connectivity->InitTraversal(); - Connectivity->GetNextCell(npts,pts); - cellId++) - { - //Progress and abort method support - if ( !(cellId % progressInterval) ) - { - vtkDebugMacro(<<"Process cell #" << cellId); - this->UpdateProgress ((float)cellId/numCells); - } - - // Handle ghost cells here. Another option was used cellVis array. - if (cellGhostLevels && cellGhostLevels[cellId] > updateLevel) - { // Do not create surfaces in outer ghost cells. - continue; - } - - if (allVisible || cellVis[cellId]) //now if visible extract geometry - { - //special code for nonlinear cells - rarely occurs, so right now it - //is slow. - vtkIdType aCellType = input->GetCellType(cellId); - switch (aCellType) - { - case VTK_EMPTY_CELL: - break; - - case VTK_VERTEX: - case VTK_POLY_VERTEX: - newCellId = output->InsertNextCell(aCellType,npts,pts); - if(myStoreMapping){ - myVTK2ObjIds.push_back(cellId); //apo - } - outputCD->CopyData(cd,cellId,newCellId); - break; - - case VTK_LINE: - case VTK_POLY_LINE: - newCellId = output->InsertNextCell(VTK_LINE,npts,pts); - if(myStoreMapping){ - myVTK2ObjIds.push_back(cellId); //apo - } - outputCD->CopyData(cd,cellId,newCellId); - break; - - case VTK_TRIANGLE: - case VTK_QUAD: - case VTK_POLYGON: - newCellId = output->InsertNextCell(aCellType,npts,pts); - if(myStoreMapping){ - myVTK2ObjIds.push_back(cellId); //apo - } - outputCD->CopyData(cd,cellId,newCellId); - break; - - case VTK_TRIANGLE_STRIP: - newCellId = output->InsertNextCell(aCellType,npts,pts); - if(myStoreMapping){ - myVTK2ObjIds.push_back(cellId); //apo - } - outputCD->CopyData(cd,cellId,newCellId); - break; - - case VTK_PIXEL: - newCellId = output->InsertNextCell(aCellType,npts,pts); - if(myStoreMapping){ - myVTK2ObjIds.push_back(cellId); //apo - } - outputCD->CopyData(cd,cellId,newCellId); - break; - - case VTK_TETRA: { - for (faceId = 0; faceId < 4; faceId++) - { - faceIds->Reset(); - faceVerts = vtkTetra::GetFaceArray(faceId); - faceIds->InsertNextId(pts[faceVerts[0]]); - faceIds->InsertNextId(pts[faceVerts[1]]); - faceIds->InsertNextId(pts[faceVerts[2]]); - numFacePts = 3; - aCellType = VTK_TRIANGLE; - input->GetCellNeighbors(cellId, faceIds, cellIds); - if ( cellIds->GetNumberOfIds() <= 0 || myShowInside == 1 || - (!allVisible && !cellVis[cellIds->GetId(0)]) ) - { - for ( i=0; i < numFacePts; i++) - { - aNewPts[i] = pts[faceVerts[i]]; - } - newCellId = output->InsertNextCell(aCellType,numFacePts,aNewPts); - if(myStoreMapping){ - myVTK2ObjIds.push_back(cellId); //apo - } - outputCD->CopyData(cd,cellId,newCellId); - } - } - break; - } - case VTK_VOXEL: { - for (faceId = 0; faceId < 6; faceId++) - { - faceIds->Reset(); - faceVerts = vtkVoxel::GetFaceArray(faceId); - faceIds->InsertNextId(pts[faceVerts[0]]); - faceIds->InsertNextId(pts[faceVerts[1]]); - faceIds->InsertNextId(pts[faceVerts[2]]); - faceIds->InsertNextId(pts[faceVerts[3]]); - numFacePts = 4; - aCellType = VTK_QUAD; - input->GetCellNeighbors(cellId, faceIds, cellIds); - if ( cellIds->GetNumberOfIds() <= 0 || myShowInside == 1 || - (!allVisible && !cellVis[cellIds->GetId(0)]) ) - { - for ( i=0; i < numFacePts; i++) - { - aNewPts[i] = pts[faceVerts[PixelConvert[i]]]; - } - newCellId = output->InsertNextCell(aCellType,numFacePts,aNewPts); - if(myStoreMapping){ - myVTK2ObjIds.push_back(cellId); //apo - } - outputCD->CopyData(cd,cellId,newCellId); - } - } - break; - } - case VTK_HEXAHEDRON: { - for (faceId = 0; faceId < 6; faceId++) - { - faceIds->Reset(); - faceVerts = vtkHexahedron::GetFaceArray(faceId); - faceIds->InsertNextId(pts[faceVerts[0]]); - faceIds->InsertNextId(pts[faceVerts[1]]); - faceIds->InsertNextId(pts[faceVerts[2]]); - faceIds->InsertNextId(pts[faceVerts[3]]); - numFacePts = 4; - aCellType = VTK_QUAD; - input->GetCellNeighbors(cellId, faceIds, cellIds); - if ( cellIds->GetNumberOfIds() <= 0 || myShowInside == 1 || - (!allVisible && !cellVis[cellIds->GetId(0)]) ) - { - for ( i=0; i < numFacePts; i++) - { - aNewPts[i] = pts[faceVerts[i]]; - } - newCellId = output->InsertNextCell(aCellType,numFacePts,aNewPts); - if(myStoreMapping){ - myVTK2ObjIds.push_back(cellId); //apo - } - outputCD->CopyData(cd,cellId,newCellId); - } - } - break; - } - case VTK_WEDGE: { - for (faceId = 0; faceId < 5; faceId++) - { - faceIds->Reset(); - faceVerts = vtkWedge::GetFaceArray(faceId); - faceIds->InsertNextId(pts[faceVerts[0]]); - faceIds->InsertNextId(pts[faceVerts[1]]); - faceIds->InsertNextId(pts[faceVerts[2]]); - numFacePts = 3; - aCellType = VTK_TRIANGLE; - if (faceVerts[3] >= 0) - { - faceIds->InsertNextId(pts[faceVerts[3]]); - numFacePts = 4; - aCellType = VTK_QUAD; - } - input->GetCellNeighbors(cellId, faceIds, cellIds); - if ( cellIds->GetNumberOfIds() <= 0 || myShowInside == 1 || - (!allVisible && !cellVis[cellIds->GetId(0)]) ) - { - for ( i=0; i < numFacePts; i++) - { - aNewPts[i] = pts[faceVerts[i]]; - } - newCellId = output->InsertNextCell(aCellType,numFacePts,aNewPts); - if(myStoreMapping){ - myVTK2ObjIds.push_back(cellId); //apo - } - outputCD->CopyData(cd,cellId,newCellId); - } - } - break; - } - case VTK_PYRAMID: { - for (faceId = 0; faceId < 5; faceId++) - { - faceIds->Reset(); - faceVerts = vtkPyramid::GetFaceArray(faceId); - faceIds->InsertNextId(pts[faceVerts[0]]); - faceIds->InsertNextId(pts[faceVerts[1]]); - faceIds->InsertNextId(pts[faceVerts[2]]); - numFacePts = 3; - aCellType = VTK_TRIANGLE; - if (faceVerts[3] >= 0) - { - faceIds->InsertNextId(pts[faceVerts[3]]); - numFacePts = 4; - aCellType = VTK_QUAD; - } - input->GetCellNeighbors(cellId, faceIds, cellIds); - if ( cellIds->GetNumberOfIds() <= 0 || myShowInside == 1 || - (!allVisible && !cellVis[cellIds->GetId(0)]) ) - { - for ( i=0; i < numFacePts; i++) - { - aNewPts[i] = pts[faceVerts[i]]; - } - newCellId = output->InsertNextCell(aCellType,numFacePts,aNewPts); - if(myStoreMapping){ - myVTK2ObjIds.push_back(cellId); //apo - } - outputCD->CopyData(cd,cellId,newCellId); - } - } - break; - } - //Quadratic cells - case VTK_QUADRATIC_EDGE: - case VTK_QUADRATIC_TRIANGLE: - case VTK_QUADRATIC_QUAD: - case VTK_QUADRATIC_TETRA: - case VTK_QUADRATIC_HEXAHEDRON: - - break; //done with quadratic cells - - } //switch - } //if visible - } //for all cells - - if(MYDEBUG && myStoreMapping){ - for(int i = 0, iEnd = myVTK2ObjIds.size(); i < iEnd; i++){ - cout<SetVerts(Verts); - //Verts->Delete(); - //output->SetLines(Lines); - //Lines->Delete(); - //output->SetPolys(Polys); - //Polys->Delete(); - //output->SetStrips(Strips); - //Strips->Delete(); - - output->Squeeze(); - - vtkDebugMacro(<<"Extracted " << input->GetNumberOfPoints() << " points," - << output->GetNumberOfCells() << " cells."); - - cellIds->Delete(); - faceIds->Delete(); - if ( cellVis ) - { - delete [] cellVis; - } -} - - -void SALOME_GeometryFilter::SetInside(int theShowInside){ - if(myShowInside == theShowInside) return; - myShowInside = theShowInside; - this->Modified(); -} -int SALOME_GeometryFilter::GetInside(){ - return myShowInside; -} diff --git a/src/VTKFilter/SALOME_GeometryFilter.h b/src/VTKFilter/SALOME_GeometryFilter.h deleted file mode 100644 index 1969aedfe..000000000 --- a/src/VTKFilter/SALOME_GeometryFilter.h +++ /dev/null @@ -1,65 +0,0 @@ -// SALOME OBJECT : kernel of SALOME component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_GeometryFilter.h -// Author : Michael ZORIN -// Module : SALOME -// $Header$ - - -#ifndef __SALOME_GeometryFilter_h -#define __SALOME_GeometryFilter_h - -#include -#include - -class SALOME_GeometryFilter : public vtkGeometryFilter -{ -public: - static SALOME_GeometryFilter *New(); - vtkTypeRevisionMacro(SALOME_GeometryFilter, vtkGeometryFilter); - void SetInside(int theShowInside); - int GetInside(); - - void SetStoreMapping(int theStoreMapping); - int GetStoreMapping(){ return myStoreMapping;} - - virtual vtkIdType GetNodeObjId(int theVtkID) { return theVtkID;} - virtual vtkIdType GetElemObjId(int theVtkID); - -protected: - SALOME_GeometryFilter(); - ~SALOME_GeometryFilter(); - - void Execute(); - void UnstructuredGridExecute(); - -private: - int myShowInside; - - int myStoreMapping; - typedef std::vector TVectorId; - TVectorId myVTK2ObjIds; -}; - -#endif diff --git a/src/VTKFilter/SALOME_PassThroughFilter.cxx b/src/VTKFilter/SALOME_PassThroughFilter.cxx deleted file mode 100644 index daaf36ab9..000000000 --- a/src/VTKFilter/SALOME_PassThroughFilter.cxx +++ /dev/null @@ -1,58 +0,0 @@ -// SALOME FILTER : interactive object for VISU entities implementation -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_PassThroughFilter.cxx -// Author : Laurent CORNABE with help of Nicolas REJNERI -// Module : SALOME - - -#include "SALOME_PassThroughFilter.h" - -#include -#include -#include -#include -using namespace std; - -vtkCxxRevisionMacro(SALOME_PassThroughFilter, "$Revision$"); -vtkStandardNewMacro(SALOME_PassThroughFilter); - -void SALOME_PassThroughFilter::Execute() -{ - vtkDataSet *input = static_cast(this->GetInput()); - vtkDataSet *output = static_cast(this->GetOutput()); - - // This has to be here because it initialized all field datas. - output->CopyStructure( input ); - - // Pass all. (data object's field data is passed by the - // superclass after this method) - output->GetPointData()->PassData( input->GetPointData() ); - output->GetCellData()->PassData( input->GetCellData() ); - -} - -void SALOME_PassThroughFilter::PrintSelf(ostream& os, vtkIndent indent) -{ - this->Superclass::PrintSelf(os,indent); -} diff --git a/src/VTKFilter/SALOME_PassThroughFilter.h b/src/VTKFilter/SALOME_PassThroughFilter.h deleted file mode 100644 index bc625a8d3..000000000 --- a/src/VTKFilter/SALOME_PassThroughFilter.h +++ /dev/null @@ -1,57 +0,0 @@ -// SALOME FILTER : interactive object for VISU entities implementation -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_PassThroughFilter.h -// Author : Laurent CORNABE with help of Nicolas REJNERI -// Module : SALOME - - -#ifndef SALOME_PassThroughFilter_HeaderFile -#define SALOME_PassThroughFilter_HeaderFile - -#include - -class SALOME_PassThroughFilter : public vtkDataSetToDataSetFilter -{ -public: - vtkTypeRevisionMacro(SALOME_PassThroughFilter,vtkDataSetToDataSetFilter); - void PrintSelf(ostream& os, vtkIndent indent); - - // Description: - // Create a new SALOME_PassThroughFilter. - static SALOME_PassThroughFilter *New(); - - -protected: - - SALOME_PassThroughFilter() {}; - virtual ~SALOME_PassThroughFilter() {}; - - void Execute(); - -private: - SALOME_PassThroughFilter(const SALOME_PassThroughFilter&); // Not implemented. - void operator=(const SALOME_PassThroughFilter&); // Not implemented. -}; - -#endif diff --git a/src/VTKFilter/SALOME_ShrinkFilter.cxx b/src/VTKFilter/SALOME_ShrinkFilter.cxx deleted file mode 100644 index 7d9d8b18b..000000000 --- a/src/VTKFilter/SALOME_ShrinkFilter.cxx +++ /dev/null @@ -1,177 +0,0 @@ -// SALOME OBJECT : kernel of SALOME component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_GeometryFilter.cxx -// Author : Michael ZORIN -// Module : SALOME -// $Header$ - -#include "SALOME_ShrinkFilter.h" - -#include -#include -#include -#include -#include -#include -using namespace std; - -#ifdef _DEBUG_ -static int MYDEBUG = 0; -static int MYDEBUGWITHFILES = 0; -#else -static int MYDEBUG = 0; -static int MYDEBUGWITHFILES = 0; -#endif - -vtkCxxRevisionMacro(SALOME_ShrinkFilter, "$Revision$"); -vtkStandardNewMacro(SALOME_ShrinkFilter); - - -SALOME_ShrinkFilter::SALOME_ShrinkFilter(): - myStoreMapping(0) -{} - - -SALOME_ShrinkFilter::~SALOME_ShrinkFilter() -{} - - -void SALOME_ShrinkFilter::Execute() -{ - vtkPoints *newPts; - int i, j, numIds, abort=0; - vtkIdType cellId, numCells, numPts; - vtkIdType oldId, newId; - float center[3], *p, pt[3]; - vtkPointData *pd, *outPD;; - vtkIdList *ptIds, *newPtIds; - vtkDataSet *input= this->GetInput(); - vtkUnstructuredGrid *output = this->GetOutput(); - vtkIdType tenth; - float decimal; - - vtkDebugMacro(<<"Shrinking cells"); - - numCells=input->GetNumberOfCells(); - numPts = input->GetNumberOfPoints(); - if (numCells < 1 || numPts < 1) - { - vtkErrorMacro(<<"No data to shrink!"); - return; - } - - ptIds = vtkIdList::New(); - ptIds->Allocate(VTK_CELL_SIZE); - newPtIds = vtkIdList::New(); - newPtIds->Allocate(VTK_CELL_SIZE); - - output->Allocate(numCells); - newPts = vtkPoints::New(); - newPts->Allocate(numPts*8,numPts); - pd = input->GetPointData(); - outPD = output->GetPointData(); - outPD->CopyAllocate(pd,numPts*8,numPts); - - // Traverse all cells, obtaining node coordinates. Compute "center" of cell, - // then create new vertices shrunk towards center. - // - tenth = numCells/10 + 1; - decimal = 0.0; - if(myStoreMapping){ - myVTK2ObjIds.clear(); - myVTK2ObjIds.reserve(numCells); - } - - for (cellId=0; cellId < numCells && !abort; cellId++) - { - input->GetCellPoints(cellId, ptIds); - numIds = ptIds->GetNumberOfIds(); - - //abort/progress methods - if (cellId % tenth == 0) - { - decimal += 0.1; - this->UpdateProgress (decimal); - abort = this->GetAbortExecute(); - } - - // get the center of the cell - center[0] = center[1] = center[2] = 0.0; - for (i=0; i < numIds; i++) - { - p = input->GetPoint(ptIds->GetId(i)); - for (j=0; j < 3; j++) - { - center[j] += p[j]; - } - } - for (j=0; j<3; j++) - { - center[j] /= numIds; - } - - // Create new points and cells - newPtIds->Reset(); - for (i=0; i < numIds; i++) - { - p = input->GetPoint(ptIds->GetId(i)); - for (j=0; j < 3; j++) - { - pt[j] = center[j] + this->ShrinkFactor*(p[j] - center[j]); - } - - oldId = ptIds->GetId(i); - newId = newPts->InsertNextPoint(pt); - if(myStoreMapping) - myVTK2ObjIds.push_back(oldId); - newPtIds->InsertId(i,newId); - - outPD->CopyData(pd, oldId, newId); - } - output->InsertNextCell(input->GetCellType(cellId), newPtIds); - }//for all cells - - // Update ourselves and release memory - // - output->GetCellData()->PassData(input->GetCellData()); - - output->SetPoints(newPts); - output->Squeeze(); - - ptIds->Delete(); - newPtIds->Delete(); - newPts->Delete(); -} - - -void SALOME_ShrinkFilter::SetStoreMapping(int theStoreMapping){ - myStoreMapping = theStoreMapping; - this->Modified(); -} - - -vtkIdType SALOME_ShrinkFilter::GetNodeObjId(int theVtkID){ - if(myVTK2ObjIds.empty() || theVtkID > myVTK2ObjIds.size()) return -1; - return myVTK2ObjIds[theVtkID]; -} diff --git a/src/VTKFilter/SALOME_ShrinkFilter.h b/src/VTKFilter/SALOME_ShrinkFilter.h deleted file mode 100644 index 837b93978..000000000 --- a/src/VTKFilter/SALOME_ShrinkFilter.h +++ /dev/null @@ -1,61 +0,0 @@ -// SALOME OBJECT : kernel of SALOME component -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_GeometryFilter.h -// Author : Michael ZORIN -// Module : SALOME -// $Header$ - - -#ifndef __SALOME_ShrinkFilter_h -#define __SALOME_ShrinkFilter_h - -#include -#include - -class SALOME_ShrinkFilter : public vtkShrinkFilter -{ -public: - static SALOME_ShrinkFilter *New(); - vtkTypeRevisionMacro(SALOME_ShrinkFilter, vtkShrinkFilter); - - void SetStoreMapping(int theStoreMapping); - int GetStoreMapping(){ return myStoreMapping;} - - virtual vtkIdType GetNodeObjId(int theVtkID); - virtual vtkIdType GetElemObjId(int theVtkID) { return theVtkID;} - -protected: - SALOME_ShrinkFilter(); - ~SALOME_ShrinkFilter(); - - void Execute(); - void UnstructuredGridExecute(); - -private: - int myStoreMapping; - typedef std::vector TVectorId; - TVectorId myVTK2ObjIds; -}; - -#endif diff --git a/src/VTKFilter/SALOME_Transform.cxx b/src/VTKFilter/SALOME_Transform.cxx deleted file mode 100644 index 7700215d1..000000000 --- a/src/VTKFilter/SALOME_Transform.cxx +++ /dev/null @@ -1,49 +0,0 @@ -// SALOME FILTER : interactive object for VISU entities implementation -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_Transform.cxx -// Author : Laurent CORNABE with help of Nicolas REJNERI -// Module : SALOME - - -#include "SALOME_Transform.h" - -#include -#include - -using namespace std; - -vtkStandardNewMacro(SALOME_Transform); - -void SALOME_Transform::SetScale(float theScaleX, float theScaleY, float theScaleZ){ - double aMatrix[16] = {theScaleX,0,0,0, - 0,theScaleY,0,0, - 0,0,theScaleZ,0, - 0,0,0,1.0000000}; - vtkTransform::SetMatrix(aMatrix); -} - -int SALOME_Transform::IsIdentity(){ - float* aScale = GetScale(); - return (aScale[0] == 1.0 && aScale[1] == 1.0 && aScale[2] == 1.0); -} diff --git a/src/VTKFilter/SALOME_Transform.h b/src/VTKFilter/SALOME_Transform.h deleted file mode 100644 index fe9231a13..000000000 --- a/src/VTKFilter/SALOME_Transform.h +++ /dev/null @@ -1,49 +0,0 @@ -// SALOME FILTER : interactive object for VISU entities implementation -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_Transform.h -// Author : Laurent CORNABE with help of Nicolas REJNERI -// Module : SALOME - - -#ifndef SALOME_Transform_HeaderFile -#define SALOME_Transform_HeaderFile - -#include - -class VTK_EXPORT SALOME_Transform : public vtkTransform{ - public: - static SALOME_Transform *New(); - vtkTypeMacro(SALOME_Transform,vtkTransform); - - void SetScale(float theScaleX, float theScaleY, float theScaleZ); - int IsIdentity(); - -protected: - SALOME_Transform() {} - ~SALOME_Transform() {} - SALOME_Transform(const SALOME_Transform&) {} - void operator=(const SALOME_Transform&) {} -}; - -#endif diff --git a/src/VTKFilter/SALOME_TransformFilter.cxx b/src/VTKFilter/SALOME_TransformFilter.cxx deleted file mode 100644 index a7b1b2bc5..000000000 --- a/src/VTKFilter/SALOME_TransformFilter.cxx +++ /dev/null @@ -1,70 +0,0 @@ -// SALOME FILTER : interactive object for VISU entities implementation -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_TransformFilter.h -// Author : Laurent CORNABE with help of Nicolas REJNERI -// Module : SALOME - - -#include "SALOME_TransformFilter.h" -#include "SALOME_Transform.h" - -#include -#include -#include -#include -#include - -using namespace std; - -vtkStandardNewMacro(SALOME_TransformFilter); - -void SALOME_TransformFilter::Execute(){ - vtkPoints *inPts; - vtkPoints *newPts; - int numPts, numCells; - vtkPointSet *input = this->GetInput(); - vtkPointSet *output = this->GetOutput(); - vtkPointData *pd=input->GetPointData(), *outPD=output->GetPointData(); - vtkCellData *cd=input->GetCellData(), *outCD=output->GetCellData(); - output->CopyStructure( input ); - if(Transform){ - bool anIsIdentity = true; - if(SALOME_Transform* aTransform = dynamic_cast(Transform)) - anIsIdentity = aTransform->IsIdentity(); - inPts = input->GetPoints(); - if(!anIsIdentity && inPts){ - numPts = inPts->GetNumberOfPoints(); - numCells = input->GetNumberOfCells(); - newPts = vtkPoints::New(); - newPts->Allocate(numPts); - this->UpdateProgress(.2); - this->Transform->TransformPoints(inPts,newPts); - this->UpdateProgress(.8); - output->SetPoints(newPts); - newPts->Delete(); - } - } - outPD->PassData(pd); - outCD->PassData(cd); -} diff --git a/src/VTKFilter/SALOME_TransformFilter.h b/src/VTKFilter/SALOME_TransformFilter.h deleted file mode 100644 index 709498498..000000000 --- a/src/VTKFilter/SALOME_TransformFilter.h +++ /dev/null @@ -1,47 +0,0 @@ -// SALOME FILTER : interactive object for VISU entities implementation -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : SALOME_TransformFilter.h -// Author : Laurent CORNABE with help of Nicolas REJNERI -// Module : SALOME - - -#ifndef SALOME_TransformFilter_HeaderFile -#define SALOME_TransformFilter_HeaderFile - -#include - -class VTK_EXPORT SALOME_TransformFilter : public vtkTransformFilter{ - public: - static SALOME_TransformFilter *New(); - vtkTypeMacro(SALOME_TransformFilter,vtkTransformFilter); - -protected: - SALOME_TransformFilter() {} - ~SALOME_TransformFilter() {} - SALOME_TransformFilter(const SALOME_TransformFilter&) {} - void operator=(const SALOME_TransformFilter&) {} - void Execute(); -}; - -#endif diff --git a/src/VTKViewer/Makefile.in b/src/VTKViewer/Makefile.in deleted file mode 100644 index f5e06c1ed..000000000 --- a/src/VTKViewer/Makefile.in +++ /dev/null @@ -1,81 +0,0 @@ -# SALOME VTKViewer : build VTK viewer into Salome desktop -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Makefile.in -# Author : Marc Tajchman (CEA) -# Module : SALOME -# $Header$ - -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:$(top_builddir)/inc:$(top_builddir)/idl - - -@COMMENCE@ - -# header files -EXPORT_HEADERS= VTKViewer_RenderWindow.h \ - VTKViewer_ViewFrame.h \ - VTKViewer_RenderWindowInteractor.h \ - VTKViewer_InteractorStyleSALOME.h \ - VTKViewer_Filter.h \ - VTKViewer_Prs.h \ - VTKViewer_Trihedron.h \ - VTKViewer_VectorText.h - -# Libraries targets -LIB = libVTKViewer.la -LIB_SRC= VTKViewer.cxx \ - VTKViewer_ViewFrame.cxx \ - VTKViewer_RenderWindow.cxx \ - VTKViewer_RenderWindowInteractor.cxx \ - VTKViewer_InteractorStyleSALOME.cxx \ - VTKViewer_Trihedron.cxx \ - VTKViewer_VectorText.cxx \ - VTKViewer_RectPicker.cxx \ - VTKViewer_CellRectPicker.cxx \ - VTKViewer_Utilities.cxx \ - VTKViewer_Filter.cxx \ - VTKViewer_Actor.cxx \ - VTKViewer_Prs.cxx - -LIB_MOC = \ - VTKViewer.h \ - VTKViewer_ViewFrame.h \ - VTKViewer_RenderWindowInteractor.h \ - VTKViewer_RenderWindow.h - -LIB_CLIENT_IDL = SALOMEDS.idl \ - SALOME_ModuleCatalog.idl \ - SALOME_Component.idl \ - SALOME_ContainerManager.idl \ - SALOME_Exception.idl - -CPPFLAGS+=$(QT_INCLUDES) $(OGL_INCLUDES) $(VTK_INCLUDES) $(OCC_INCLUDES) - -LDFLAGS+=$(VTK_LIBS) $(OGL_LIBS) $(QT_MT_LIBS) -lSalomePrs -lSalomeGUI -lToolsGUI - -@CONCLUDE@ - - diff --git a/src/VTKViewer/VTKViewer.cxx b/src/VTKViewer/VTKViewer.cxx deleted file mode 100644 index a0c60854e..000000000 --- a/src/VTKViewer/VTKViewer.cxx +++ /dev/null @@ -1,44 +0,0 @@ -// SALOME VTKViewer : build VTK viewer into Salome desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : VTKViewer.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "VTKViewer.h" -#include "VTKViewer_ViewFrame.h" -using namespace std; - -QAD_ViewFrame* VTKViewer::createView(QAD_RightFrame* parent) -{ - return new VTKViewer_ViewFrame( parent, "vtkView" ); -} - -extern "C" -{ - QAD_ViewFrame* createView(QAD_RightFrame* parent) - { - return VTKViewer::createView(parent); - } -} diff --git a/src/VTKViewer/VTKViewer.h b/src/VTKViewer/VTKViewer.h deleted file mode 100644 index 122851f0f..000000000 --- a/src/VTKViewer/VTKViewer.h +++ /dev/null @@ -1,45 +0,0 @@ -// SALOME VTKViewer : build VTK viewer into Salome desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : VTKViewer.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef VTKViewer_HeaderFile -#define VTKViewer_HeaderFile - -#include "QAD_RightFrame.h" -#include "QAD_ViewFrame.h" - -class VTKViewer : public QObject -{ - Q_OBJECT - -public : - - Standard_EXPORT static QAD_ViewFrame* createView ( QAD_RightFrame* parent); - -}; - -#endif diff --git a/src/VTKViewer/VTKViewer_Actor.cxx b/src/VTKViewer/VTKViewer_Actor.cxx deleted file mode 100644 index eb8cd140f..000000000 --- a/src/VTKViewer/VTKViewer_Actor.cxx +++ /dev/null @@ -1,233 +0,0 @@ -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org - -#include "VTKViewer_Actor.h" - -#include "SALOME_PassThroughFilter.h" - -// VTK Includes -#include -#include -#include -#include - -#include -#include -#include - -#include "utilities.h" - -using namespace std; - -#ifdef _DEBUG_ -static int MYDEBUG = 0; -#else -static int MYDEBUG = 0; -#endif - - -static void CopyPoints(vtkUnstructuredGrid* theGrid, vtkDataSet *theSourceDataSet){ - vtkPoints *aPoints = vtkPoints::New(); - vtkIdType iEnd = theSourceDataSet->GetNumberOfPoints(); - aPoints->SetNumberOfPoints(iEnd); - for(vtkIdType i = 0; i < iEnd; i++){ - aPoints->SetPoint(i,theSourceDataSet->GetPoint(i)); - } - theGrid->SetPoints(aPoints); - aPoints->Delete(); -} - - -//======================================================================= - -vtkStandardNewMacro(VTKViewer_Actor); - -VTKViewer_Actor::VTKViewer_Actor() -{ - myRenderer = NULL; - myIsInfinite = true; - - Visibility = Pickable = false; - - myUnstructuredGrid = vtkUnstructuredGrid::New(); - myUnstructuredGrid->Allocate(); - - myIsShrunk = false; - myIsShrinkable = true; - myShrinkFilter = vtkShrinkFilter::New(); - - myMapper = vtkDataSetMapper::New(); - - myMapper->SetInput(myUnstructuredGrid); - Superclass::InitPipeLine(myMapper); - - SetResolveCoincidentTopology(false); -} - - -void VTKViewer_Actor::SetShrinkFactor(float theValue){ - myShrinkFilter->SetShrinkFactor(theValue); - Modified(); -} - - -void VTKViewer_Actor::SetShrink() -{ - if ( !myIsShrinkable ) return; - if ( vtkDataSet* aDataSet = myPassFilter[0]->GetOutput() ) - { - myShrinkFilter->SetInput( aDataSet ); - myPassFilter[1]->SetInput( myShrinkFilter->GetOutput() ); - myIsShrunk = true; - } -} - -void VTKViewer_Actor::UnShrink() -{ - if ( !myIsShrunk ) return; - if ( vtkDataSet* aDataSet = myPassFilter[0]->GetOutput() ) - { - myPassFilter[1]->SetInput( aDataSet ); - myPassFilter[1]->Modified(); - myIsShrunk = false; - Modified(); - } -} - - -//---------------------------------------------------------------------------- -VTKViewer_Actor::~VTKViewer_Actor() -{ - if(MYDEBUG) INFOS("VTKViewer_Actor::~VTKViewer_Actor()"); - - myMapper->RemoveAllInputs(); - myMapper->Delete(); - - myShrinkFilter->UnRegisterAllOutputs(); - myShrinkFilter->Delete(); - - myUnstructuredGrid->Delete(); -} - - -//---------------------------------------------------------------------------- -void VTKViewer_Actor::MapCells(SALOME_Actor* theMapActor, - const TColStd_IndexedMapOfInteger& theMapIndex) -{ - myUnstructuredGrid->Reset(); - - vtkDataSet *aSourceDataSet = theMapActor->GetInput(); - CopyPoints(myUnstructuredGrid,aSourceDataSet); - - int aNbOfParts = theMapIndex.Extent(); - for(int ind = 1; ind <= aNbOfParts; ind++){ - int aPartId = theMapIndex( ind ); - vtkCell* aCell = theMapActor->GetElemCell(aPartId); - myUnstructuredGrid->InsertNextCell(aCell->GetCellType(),aCell->GetPointIds()); - //for (int i = 0, iEnd = aCell->GetNumberOfEdges(); i < iEnd; i++){ - // vtkCell* anEdgeCell = aCell->GetEdge(i); - // myUnstructuredGrid->InsertNextCell(VTK_LINE,anEdgeCell->GetPointIds()); - //} - } - - UnShrink(); - if(theMapActor->IsShrunk()){ - SetShrinkFactor(theMapActor->GetShrinkFactor()); - SetShrink(); - } -} - - -//---------------------------------------------------------------------------- -void VTKViewer_Actor::MapPoints(SALOME_Actor* theMapActor, - const TColStd_IndexedMapOfInteger& theMapIndex) -{ - myUnstructuredGrid->Reset(); - if(int aNbOfParts = theMapIndex.Extent()){ - vtkPoints *aPoints = vtkPoints::New(); - aPoints->SetNumberOfPoints(aNbOfParts); - for(int i = 0; i < aNbOfParts; i++){ - int aPartId = theMapIndex( i+1 ); - float* aCoord = theMapActor->GetNodeCoord(aPartId); - aPoints->SetPoint(i,aCoord); - myUnstructuredGrid->InsertNextCell(VTK_VERTEX,1,&i); - } - myUnstructuredGrid->SetPoints(aPoints); - aPoints->Delete(); - } - - UnShrink(); -} - - -//---------------------------------------------------------------------------- -void VTKViewer_Actor::MapEdge(SALOME_Actor* theMapActor, - const TColStd_IndexedMapOfInteger& theMapIndex) -{ - myUnstructuredGrid->Reset(); - - vtkDataSet *aSourceDataSet = theMapActor->GetInput(); - CopyPoints(myUnstructuredGrid,aSourceDataSet); - - int iEnd = theMapIndex.Extent(); - int aCellId = -1, aCellCounter = 0; - for(int i = 1; i <= iEnd; i++){ - int anId = theMapIndex( i ); - if(anId > 0) { - aCellCounter++; - aCellId = anId; - } - } - - if(aCellCounter == 1){ - vtkCell* aCell = theMapActor->GetElemCell(aCellId); - if(aCell->GetCellType() <= VTK_LINE){ - myUnstructuredGrid->InsertNextCell(aCell->GetCellType(),aCell->GetPointIds()); - }else{ - int aNbOfParts = aCell->GetNumberOfEdges(); - for(int i = 1; i <= iEnd; i++){ - int aPartId = theMapIndex(i); - if( aPartId < 0){ - aPartId = -aPartId-1; - if(0 > aPartId || aPartId >= aNbOfParts) break; - vtkCell* anEdgeCell = aCell->GetEdge(aPartId); - myUnstructuredGrid->InsertNextCell(VTK_LINE,anEdgeCell->GetPointIds()); - } - } - } - }else{ - int aNbOfParts = aSourceDataSet->GetNumberOfCells(); - for(int i = 1; i <= iEnd; i++){ - int aPartId = theMapIndex( i ); - if(aPartId > 0){ - if(aPartId >= aNbOfParts) break; - vtkCell* aCell = aSourceDataSet->GetCell(aPartId); - myUnstructuredGrid->InsertNextCell(aCell->GetCellType(),aCell->GetPointIds()); - } - } - } - - UnShrink(); - if(theMapActor->IsShrunk()){ - SetShrinkFactor(theMapActor->GetShrinkFactor()); - SetShrink(); - } -} - -//---------------------------------------------------------------------------- diff --git a/src/VTKViewer/VTKViewer_Actor.h b/src/VTKViewer/VTKViewer_Actor.h deleted file mode 100644 index a708aa63e..000000000 --- a/src/VTKViewer/VTKViewer_Actor.h +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org - -#ifndef VTKVIEWER_ACTOR_H -#define VTKVIEWER_ACTOR_H - -#include - -class vtkRenderer; -class vtkShrinkFilter; -class vtkDataSetMapper; -class vtkUnstructuredGrid; - -#include "SALOME_Actor.h" - -class VTKViewer_Actor : public SALOME_Actor { - public: - vtkTypeMacro(VTKViewer_Actor,SALOME_Actor); - static VTKViewer_Actor* New(); - virtual ~VTKViewer_Actor(); - - void SetShrinkFactor(float value); - virtual void SetShrink(); - virtual void UnShrink(); - - void MapCells(SALOME_Actor* theMapActor, - const TColStd_IndexedMapOfInteger& theMapIndex); - - void MapPoints(SALOME_Actor* theMapActor, - const TColStd_IndexedMapOfInteger& theMapIndex); - - void MapEdge(SALOME_Actor* theMapActor, - const TColStd_IndexedMapOfInteger& theMapIndex); - - protected: - vtkUnstructuredGrid* myUnstructuredGrid; - vtkDataSetMapper* myMapper; - - vtkRenderer* myRenderer; - - vtkShrinkFilter* myShrinkFilter; - bool myIsShrinkable; - bool myIsShrunk; - - VTKViewer_Actor(); -}; - -#endif diff --git a/src/VTKViewer/VTKViewer_Algorithm.h b/src/VTKViewer/VTKViewer_Algorithm.h deleted file mode 100644 index cd38a862d..000000000 --- a/src/VTKViewer/VTKViewer_Algorithm.h +++ /dev/null @@ -1,83 +0,0 @@ -// SALOME VTKViewer : build VTK viewer into Salome desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : VTKViewer_ViewFrame.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef VTKViewer_Algorithm_H -#define VTKViewer_Algorithm_H - -class vtkActor; -class vtkActorCollection; - -namespace SALOME{ - namespace VTK{ - - template - TFunction ForEach(vtkActorCollection *theCollection, TFunction theFun) - { - if(theCollection){ - theCollection->InitTraversal(); - while(vtkActor *anAct = theCollection->GetNextActor()) - if(TActor *anActor = dynamic_cast(anAct)) - theFun(anActor); - } - return theFun; - } - - - template - TFunction ForEachIf(vtkActorCollection *theCollection, - TPredicate thePredicate, - TFunction theFun) - { - if(theCollection){ - theCollection->InitTraversal(); - while(vtkActor *anAct = theCollection->GetNextActor()) - if(TActor *anActor = dynamic_cast(anAct)) - if(thePredicate(anActor)) - theFun(anActor); - } - return theFun; - } - - - template - TActor* Find(vtkActorCollection *theCollection, TPredicate thePredicate) - { - if(theCollection){ - theCollection->InitTraversal(); - while(vtkActor *anAct = theCollection->GetNextActor()) - if(TActor *anActor = dynamic_cast(anAct)) - if(thePredicate(anActor)) - return anActor; - } - return NULL; - } - - } -} - -#endif diff --git a/src/VTKViewer/VTKViewer_CellRectPicker.cxx b/src/VTKViewer/VTKViewer_CellRectPicker.cxx deleted file mode 100644 index b2506538b..000000000 --- a/src/VTKViewer/VTKViewer_CellRectPicker.cxx +++ /dev/null @@ -1,433 +0,0 @@ -// SALOME VTKViewer : build VTK viewer into Salome desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : VTKViewer_CellRectPicker.cxx -// Author : Natalia KOPNOVA -// Module : SALOME - -#include - -#include "vtkGenericCell.h" -#include "vtkAssemblyNode.h" -#include "vtkAssemblyPath.h" -#include "vtkObjectFactory.h" -#include "vtkImageData.h" -#include "vtkMapper.h" -#include "vtkVolumeMapper.h" -#include "vtkMath.h" -#include "vtkLine.h" -#include "vtkQuad.h" -#include "vtkPoints.h" -#include "vtkPlane.h" -#include "vtkActor.h" - -using namespace std; - -//---------------------------------------------------------------------------- -vtkStandardNewMacro(VTKViewer_CellRectPicker); -//---------------------------------------------------------------------------- - -VTKViewer_CellRectPicker::VTKViewer_CellRectPicker() -{ - this->Cell = vtkGenericCell::New(); - this->Quad1 = vtkQuad::New(); - this->Quad2 = vtkQuad::New(); -} - -VTKViewer_CellRectPicker::~VTKViewer_CellRectPicker() -{ - this->Cell->Delete(); - this->Quad1->Delete(); - this->Quad2->Delete(); -} - -void VTKViewer_CellRectPicker::Initialize() -{ - ActorData.clear(); - this->VTKViewer_RectPicker::Initialize(); -} - -//---------------------------------------------------------------------------- -float VTKViewer_CellRectPicker::IntersectWithHex(float p1[4][4], float p2[4][4], float tol, - vtkAssemblyPath *path, vtkProp3D *prop3D, - vtkAbstractMapper3D *m) -{ - vtkDataSet *input; - vtkMapper *mapper; - vtkVolumeMapper *volumeMapper; - - // Get the underlying dataset - if ( (mapper=vtkMapper::SafeDownCast(m)) != NULL ) { - input = mapper->GetInput(); - } - else if ( (volumeMapper=vtkVolumeMapper::SafeDownCast(m)) != NULL ) { - input = volumeMapper->GetInput(); - } - else { - return VTK_LARGE_FLOAT; - } - - vtkIdType numCells; - if ( (numCells = input->GetNumberOfCells()) < 1 ) { - return 2.0; - } - - int i, k, subId; - float bounds[6], center[3], cp1[3], cp2[3]; - float pcoord[3], weight[4], dist; - float t1[2], t2[2], x[3], t; - - for (k = 0; k < 4; k++) { - this->Quad1->PointIds->SetId(k, k); - this->Quad1->Points->SetPoint(k, p1[k]); - this->Quad2->PointIds->SetId(k, k); - this->Quad2->Points->SetPoint(k, p2[k]); - } - - /* - cout << "---> Selection area:" << endl; - for (k = 0; k < 4; k++) - cout << "\t(" << p1[k][0] << ", " << p1[k][1] << ", " << p1[k][2] << ")"; - cout << endl; - for (k = 0; k < 4; k++) - cout << "\t(" << p2[k][0] << ", " << p2[k][1] << ", " << p2[k][2] << ")"; - cout << endl; - */ - - vtkIdType cellId; - VTKViewer_CellData cellData; - VTKViewer_CellDataSet dataList; - - char inside; int n; float *point; - float tMin = VTK_LARGE_FLOAT, xMin[3]; - for (cellId = 0; cellId < numCells; cellId++) { - input->GetCell(cellId, this->Cell); - - this->Cell->GetBounds(bounds); - for (i = 0; i < 3; i++) - center[i] = (bounds[2*i]+bounds[2*i+1])/2; - - /* - if (!VTKViewer_RectPicker::PointInside(center, p1, p2, 0.01)) - continue; - */ - - inside = 1; - n = this->Cell->Points->GetNumberOfPoints(); - //cout << "---> Info cell " << cellId << " (" << n << "): " << endl; - for (k = 0; k < n; k++) { - point = this->Cell->Points->GetPoint(k); - //cout << " P (" << point[0] << ", " << point[1] << ", " << point[2] << ")"; - if (!VTKViewer_RectPicker::PointInside(point, p1, p2)) { - inside = 0; break; - } - } - //cout << endl; - if (!inside) continue; - - //cout << "---> Inside cell " << cellId << endl; - - this->Quad1->EvaluatePosition(center, 0, subId, pcoord, dist, weight); - t1[0] = pcoord[0]; t1[1] = pcoord[1]; - this->Quad2->EvaluatePosition(center, 0, subId, pcoord, dist, weight); - t2[0] = pcoord[0]; t2[1] = pcoord[1]; - - pcoord[0] = (t1[0]+t2[0])/2; pcoord[1] = (t1[1]+t2[1])/2; pcoord[2] = 0; - - this->Quad1->EvaluateLocation(subId, pcoord, cp1, weight); - this->Quad2->EvaluateLocation(subId, pcoord, cp2, weight); - - if (this->Cell->IntersectWithLine(cp1, cp2, tol, t, x, pcoord, subId)) { - cellData.cellId = cellId; - cellData.subId = subId; - cellData.depth = t; - for (i = 0; i < 3; i++) { - cellData.p1[i] = cp1[i]; - cellData.p2[i] = cp2[i]; - } - /* - cout << "---> Include cell " << cellId << ", depth = " << t << endl; - cout << " P1 = (" << cp1[0] << ", " << cp1[1] << ", " << cp1[2] << ")" << endl; - cout << " P2 = (" << cp2[0] << ", " << cp2[1] << ", " << cp2[2] << ")" << endl; - */ - IncludeCell(input, cellData, dataList); - if (t < tMin) { - tMin = t; - for (i = 0; i < 3; i++) - xMin[i] = x[i]; - } - } - } - - if (!dataList.empty()) { - // compare against other actors - IncludeActor(prop3D, input, dataList); - if (tMin < this->GlobalTMin) { - this->MarkPicked(path, prop3D, m, tMin, xMin); - } - } - - return tMin; -} - - -//---------------------------------------------------------------------------- -void VTKViewer_CellRectPicker::IncludeCell(vtkDataSet* input, - VTKViewer_CellData cellData, - VTKViewer_CellDataSet& dataList) -{ - vtkGenericCell* cell1 = vtkGenericCell::New(); - vtkGenericCell* cell2 = vtkGenericCell::New(); - vtkCell* sub1 = 0; - vtkCell* sub2 = 0; - - input->GetCell(cellData.cellId, cell1); - if (cell1->GetNumberOfFaces() > 0) - sub1 = cell1->GetFace(cellData.subId); - - int i, result; - float p1[3], p2[3], dir[3]; - char add = 1; - - VTKViewer_CellData curData; - VTKViewer_CellDataSet::iterator it; - for (it = dataList.begin(); it != dataList.end();) { - curData = *it; - for (i = 0; i < 3; i++) { - p1[i] = (cellData.p1[i]+curData.p1[i])/2; - p2[i] = (cellData.p2[i]+curData.p2[i])/2; - dir[i] = p2[i] - p1[i]; - } - - input->GetCell(curData.cellId, cell2); - sub2 = 0; - if (cell2->GetNumberOfFaces() > 0) - sub2 = cell2->GetFace(curData.subId); - - if (sub1) { - if (sub2) - result = IntersectCells(sub1, cellData.depth, - sub2, curData.depth, dir); - else - result = IntersectCells(sub1, cellData.depth, - cell2, curData.depth, dir); - } - else { - if (sub2) - result = IntersectCells(cell1, cellData.depth, - sub2, curData.depth, dir); - else - result = IntersectCells(cell1, cellData.depth, - cell2, curData.depth, dir); - } - /* - cout << " Direction = (" << dir[0] << ", " << dir[1] << ", " << dir[2] << ")"; - cout << " depth = " << cellData.depth << ", " << curData.depth << ", " << result << endl; - */ - if (result > 0) { - if (result == 1) { - it = dataList.erase(it); - continue; - } - else { - add = 0; - break; - } - } - ++it; - } - if (add) { - //cout << " add " << endl; - dataList.push_back(cellData); - } - - cell1->Delete(); - cell2->Delete(); -} - -//---------------------------------------------------------------------------- -void VTKViewer_CellRectPicker::IncludeActor(vtkProp3D* prop, - vtkDataSet* input, - VTKViewer_CellDataSet& dataList) -{ - vtkGenericCell* cell1 = vtkGenericCell::New(); - vtkGenericCell* cell2 = vtkGenericCell::New(); - - int i, result; - float p1[3], p2[3], dir[3]; - char removed; - - VTKViewer_CellDataSet actorData; - VTKViewer_CellData curData, cellData; - VTKViewer_CellDataSet::iterator it1, it2; - VTKViewer_ActorDataMap::iterator it; - - for (it1 = dataList.begin(); it1 != dataList.end();) { - cellData = *it1; - input->GetCell(cellData.cellId, cell1); - removed = 0; - - for (it = ActorData.begin(); it != ActorData.end(); ++it) { - vtkActor* actor = (*it).first; - actorData = (*it).second; - - for (it2 = actorData.begin(); it2 != actorData.end();) { - curData = *it2; - for (i = 0; i < 3; i++) { - p1[i] = (cellData.p1[i]+curData.p1[i])/2; - p2[i] = (cellData.p2[i]+curData.p2[i])/2; - dir[i] = p2[i] - p1[i]; - } - - actor->GetMapper()->GetInput()->GetCell(curData.cellId, cell2); - result = IntersectCells(cell1, cellData.depth, - cell2, curData.depth, dir); - if (result > 0) { - if (result == 1) { - it2 = actorData.erase(it2); - continue; - } - else { - removed = 1; - it1 = dataList.erase(it1); - break; - } - break; - } - ++it2; - } - if (removed) break; - } // by actors - if (!removed) ++it1; - } - - if (!dataList.empty()) { - vtkActor* actor; - if ((actor = vtkActor::SafeDownCast(prop)) != NULL) - ActorData[actor] = dataList; - } - - cell1->Delete(); - cell2->Delete(); -} - -int VTKViewer_CellRectPicker::IntersectCells(vtkCell* c1, float d1, vtkCell* c2, float d2, float dir[3]) -{ - int i, k; - float *orig, cp[3], bounds[6]; - vtkCell* cell = 0; - vtkCell* tcell = 0; - - // define the central point and cell for projection - if (fabs(d1-d2) < 1.e-7) return 0; - - if (d1 < d2) { - orig = c1->Points->GetPoint(0); - cell = c1; - tcell = c2; - c2->GetBounds(bounds); - for (i = 0; i < 3; i++) - cp[i] = (bounds[2*i] + bounds[2*i+1])/2; - } - else if (d1 > d2) { - orig = c2->Points->GetPoint(0); - cell = c2; - tcell = c1; - c1->GetBounds(bounds); - for (i = 0; i < 3; i++) - cp[i] = (bounds[2*i] + bounds[2*i+1])/2; - } - - float proj[3]; - vtkPlane::GeneralizedProjectPoint(cp, orig, dir, proj); - - float *p, pp[3]; - vtkPoints* aPoints = vtkPoints::New(); - for (k = 0; k < cell->Points->GetNumberOfPoints(); k++) { - p = cell->Points->GetPoint(k); - vtkPlane::GeneralizedProjectPoint(p, orig, dir, pp); - aPoints->InsertNextPoint(pp[0], pp[1], pp[2]); - } - - int result = 0; - if (PointInside(proj, aPoints)) { - result = (d1Points->GetNumberOfPoints(); k++) { - p = tcell->Points->GetPoint(k); - vtkPlane::GeneralizedProjectPoint(p, orig, dir, pp); - if (PointInside(pp, aPoints)) { - result = 1; break; - } - } - if (result && d2Delete(); - return result; -} - -char VTKViewer_CellRectPicker::PointInside(float point[3], vtkPoints* list) -{ - int i, k, l, n; - float x[3], *a1, *a2, v[3], p[3], q[3]; - - n = list->GetNumberOfPoints(); - if (n < 3) return 0; - - for (k = 0; k < n; k++) { - l = k+1; if (l == n) l = 0; - a1 = list->GetPoint(k); - a2 = list->GetPoint(l); - - // compute vectors - for (i = 0; i < 3; i++) { - x[i] = point[i] - a1[i]; - v[i] = a2[i]-a1[i]; - } - - // check if point coincides with vertex - if (x[0]*x[0] + x[1]*x[1] + x[2]*x[2] < 1.e-7) return 0; - - // compute normal - vtkMath::Cross(x, v, p); - - // check if point lays on edge - if (p[0]*p[0] + p[1]*p[1] + p[2]*p[2] < 1.e-7) return 0; - - // check if normals are in the same direction - if (k > 0) { - if (vtkMath::Dot(p, q) < 0.0) return 0; - } - - // remember normal direction - for (i = 0; i < 3; i++) { - q[i] = p[i]; - } - } - - return 1; -} diff --git a/src/VTKViewer/VTKViewer_CellRectPicker.h b/src/VTKViewer/VTKViewer_CellRectPicker.h deleted file mode 100644 index 76b0b8c40..000000000 --- a/src/VTKViewer/VTKViewer_CellRectPicker.h +++ /dev/null @@ -1,94 +0,0 @@ -// SALOME VTKViewer : build VTK viewer into Salome desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : VTKViewer_CellRectPicker.h -// Author : Natalia KOPNOVA -// Module : SALOME - -#ifndef __VTKViewer_CellRectPicker_h -#define __VTKViewer_CellRectPicker_h - -#include "VTKViewer_RectPicker.h" -#include -#include - -typedef struct { - vtkIdType cellId; - int subId; - float depth; - float p1[3]; - float p2[3]; -} VTKViewer_CellData; - -typedef std::vector VTKViewer_CellDataSet; -typedef std::map VTKViewer_ActorDataMap; - -class vtkCell; -class vtkGenericCell; -class vtkQuad; - -class VTK_EXPORT VTKViewer_CellRectPicker : public VTKViewer_RectPicker -{ -public: - static VTKViewer_CellRectPicker *New(); - vtkTypeMacro(VTKViewer_CellRectPicker,VTKViewer_RectPicker); - - // Description: - // Get the id of the picked cells. - // (Notes: use GetActors() to get picked actors list) - VTKViewer_CellDataSet GetCellData(vtkActor* actor) - { return this->ActorData[actor]; } - - // Description: - // The method returns a non-zero value if the cells intersect each other - // in the direction dir[3]. Returned value is 1 if the first cell is top of - // the second one according to direction and 2 if the second cell is top. - static int IntersectCells(vtkCell* c1, float d1, vtkCell* c2, float d2, float dir[3]); - - // Description: - // The method returns a non-zero value if the point is inlide point data set - static char PointInside(float point[3], vtkPoints* list); - -protected: - VTKViewer_CellRectPicker(); - ~VTKViewer_CellRectPicker(); - - VTKViewer_ActorDataMap ActorData; - - virtual float IntersectWithHex(float p1[4][4], float p2[4][4], float tol, - vtkAssemblyPath *path, vtkProp3D *p, - vtkAbstractMapper3D *m); - void Initialize(); - - void IncludeCell(vtkDataSet* input, VTKViewer_CellData cellData, VTKViewer_CellDataSet& dalaList); - void IncludeActor(vtkProp3D* prop, vtkDataSet* input, VTKViewer_CellDataSet& dataList); - -private: - vtkGenericCell *Cell; - vtkQuad* Quad1; - vtkQuad* Quad2; -}; - -#endif - - diff --git a/src/VTKViewer/VTKViewer_Filter.cxx b/src/VTKViewer/VTKViewer_Filter.cxx deleted file mode 100755 index c0c5f7d81..000000000 --- a/src/VTKViewer/VTKViewer_Filter.cxx +++ /dev/null @@ -1,58 +0,0 @@ -// VTKViewer_Filter : Filter for VTK viewer -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : VTKViewer_Filter.cxx -// Author : Sergey LITONIN -// Module : SALOME - -#include "VTKViewer_Filter.h" -using namespace std; - -IMPLEMENT_STANDARD_HANDLE(VTKViewer_Filter, MMgt_TShared) -IMPLEMENT_STANDARD_RTTIEXT(VTKViewer_Filter, MMgt_TShared) - -/* - Class : VTKViewer_Filter - Description : Base class of filters of for VTK viewer. Method IsValid - should be redefined in derived classes -*/ - -VTKViewer_Filter::VTKViewer_Filter() -{ - myActor = 0; -} - -VTKViewer_Filter::~VTKViewer_Filter() -{ -} - -bool VTKViewer_Filter::IsValid( SALOME_Actor* theActor, const int theCellId ) -{ - SetActor( theActor ); - return IsValid( theCellId ); -} - -void VTKViewer_Filter::SetActor( SALOME_Actor* theActor ) -{ - myActor = theActor; -} diff --git a/src/VTKViewer/VTKViewer_Filter.h b/src/VTKViewer/VTKViewer_Filter.h deleted file mode 100755 index f667356b8..000000000 --- a/src/VTKViewer/VTKViewer_Filter.h +++ /dev/null @@ -1,66 +0,0 @@ -// SMESHGUI_Filter : Filter for VTK viewer -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : VTKViewer_Filter.h -// Author : Sergey LITONIN -// Module : SALOME - -#ifndef VTKViewer_Filter_HeaderFile -#define VTKViewer_Filter_HeaderFile - -#include -#include - -class SALOME_Actor; - -DEFINE_STANDARD_HANDLE(VTKViewer_Filter, MMgt_TShared) - -/* - Class : VTKViewer_Filter - Description : Base class of filters of for VTK viewer. Method IsValid - should be redefined in derived classes -*/ - -class VTKViewer_Filter : public MMgt_TShared -{ - -public: - VTKViewer_Filter(); - virtual ~VTKViewer_Filter(); - - bool IsValid( SALOME_Actor*, const int theId ); - virtual bool IsValid( const int theId ) const = 0; - virtual int GetId() const = 0; - virtual bool IsNodeFilter() const = 0; - - virtual void SetActor( SALOME_Actor* ); - -protected: - - SALOME_Actor* myActor; - -public: - DEFINE_STANDARD_RTTI(VTKViewer_Filter) -}; - -#endif diff --git a/src/VTKViewer/VTKViewer_Functor.h b/src/VTKViewer/VTKViewer_Functor.h deleted file mode 100644 index 825f855cb..000000000 --- a/src/VTKViewer/VTKViewer_Functor.h +++ /dev/null @@ -1,98 +0,0 @@ -// SALOME VTKViewer : build VTK viewer into Salome desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : VTKViewer_ViewFrame.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef VTKViewer_Functor_H -#define VTKViewer_Functor_H - -#include - -#include -#include "SALOME_InteractiveObject.hxx" - -namespace SALOME{ - namespace VTK{ - - - template struct TIsSameEntry - { - std::string myEntry; - TIsSameEntry(const char* theEntry): myEntry(theEntry){} - bool operator()(TActor* theActor){ - if(theActor->hasIO()){ - Handle(SALOME_InteractiveObject) anIO = theActor->getIO(); - if(anIO->hasEntry()) - return myEntry == anIO->getEntry(); - } - return false; - } - }; - - - template struct TIsSameIObject - { - Handle(SALOME_InteractiveObject) myIObject; - TIsSameIObject(const Handle(SALOME_InteractiveObject)& theIObject): - myIObject(theIObject) - {} - bool operator()(TActor* theActor){ - if(theActor->hasIO()){ - Handle(SALOME_InteractiveObject) anIO = theActor->getIO(); - return myIObject->isSame(anIO); - } - return false; - } - }; - - - template struct TSetFunction - { - typedef void (TActor::* TAction)(TArg); - TAction myAction; - TStoreArg myArg; - TSetFunction(TAction theAction, TArg theArg): - myAction(theAction), myArg(theArg) - {} - void operator()(TActor* theActor){ - (theActor->*myAction)(myArg); - } - }; - - - template struct TSetVisibility: TSetFunction - { - TSetVisibility(TArg theArg): - TSetFunction(&TActor::SetVisibility,theArg) - {} - }; - - - } -} - - -#endif diff --git a/src/VTKViewer/VTKViewer_InteractorStyleSALOME.cxx b/src/VTKViewer/VTKViewer_InteractorStyleSALOME.cxx deleted file mode 100644 index 0fd4d7c52..000000000 --- a/src/VTKViewer/VTKViewer_InteractorStyleSALOME.cxx +++ /dev/null @@ -1,1514 +0,0 @@ -// SALOME VTKViewer : build VTK viewer into Salome desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : VTKViewer_InteractorStyleSALOME.cxx -// Author : Christophe ATTANASIO -// Module : SALOME -// $Header$ - -#include "VTKViewer_InteractorStyleSALOME.h" - -#include "VTKViewer_RenderWindowInteractor.h" -#include "VTKViewer_RenderWindow.h" -#include "VTKViewer_ViewFrame.h" - -#include "VTKViewer_Utilities.h" -#include "VTKViewer_Trihedron.h" -#include "VTKViewer_RectPicker.h" -#include "VTKViewer_CellRectPicker.h" - -#include "QAD_Config.h" -#include "QAD_Application.h" -#include "QAD_Desktop.h" - -#include "SALOME_Actor.h" -#include "VTKViewer_Actor.h" -#include "SALOME_Selection.h" -#include "SALOME_ListIteratorOfListIO.hxx" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -//VRV: porting on Qt 3.0.5 -#if QT_VERSION >= 0x030005 -#include -#endif -//VRV: porting on Qt 3.0.5 -#include - -#include "utilities.h" - -using namespace std; - - -#ifdef _DEBUG_ -static int MYDEBUG = 0; -#else -static int MYDEBUG = 0; -#endif - - -static bool IsStored(Handle(SALOME_InteractiveObject)& theIO, - const SALOME_ListIO& theListIO) -{ - if (!theListIO.IsEmpty()){ - SALOME_ListIteratorOfListIO anIter(theListIO); - for(; anIter.More(); anIter.Next()) { - Handle(SALOME_InteractiveObject) anIO = anIter.Value(); - if(theIO->isSame(anIO)) { - theIO = anIO; //Added by SRN, fix SAL1307 - return true; - } - } - } - return false; -} - - -static bool IsSelected(Handle(SALOME_InteractiveObject)& theIO, - SALOME_Selection* theSel) -{ - return IsStored(theIO,theSel->StoredIObjects()); -} - - -static int GetEdgeId(vtkPicker *thePicker, SALOME_Actor *theActor, int theObjId){ - int anEdgeId = -1; - if (vtkCell* aPickedCell = theActor->GetElemCell(theObjId)) { - float aPickPosition[3]; - thePicker->GetPickPosition(aPickPosition); - float aMinDist = 1000000.0, aDist = 0; - for (int i = 0, iEnd = aPickedCell->GetNumberOfEdges(); i < iEnd; i++){ - if(vtkLine* aLine = vtkLine::SafeDownCast(aPickedCell->GetEdge(i))){ - int subId; float pcoords[3], closestPoint[3], weights[3]; - aLine->EvaluatePosition(aPickPosition,closestPoint,subId,pcoords,aDist,weights); - if (aDist < aMinDist) { - aMinDist = aDist; - anEdgeId = i; - } - } - } - } - return anEdgeId; -} - - -static bool CheckDimensionId(Selection_Mode theMode, SALOME_Actor *theActor, vtkIdType theObjId){ - switch(theMode){ - case CellSelection: - return true; - case EdgeSelection: - return ( theActor->GetObjDimension( theObjId ) == 1 ); - case FaceSelection: - return ( theActor->GetObjDimension( theObjId ) == 2 ); - case VolumeSelection: - return ( theActor->GetObjDimension( theObjId ) == 3 ); - }; - return false; -} - - -//---------------------------------------------------------------------------- -vtkStandardNewMacro(VTKViewer_InteractorStyleSALOME); -//---------------------------------------------------------------------------- - -VTKViewer_InteractorStyleSALOME::VTKViewer_InteractorStyleSALOME() -{ - m_Trihedron = 0; - this->MotionFactor = 10.0; - this->State = VTK_INTERACTOR_STYLE_CAMERA_NONE; - this->RadianToDegree = 180.0 / vtkMath::Pi(); - this->ForcedState = VTK_INTERACTOR_STYLE_CAMERA_NONE; - loadCursors(); - - myPreSelectionActor = VTKViewer_Actor::New(); - myPreSelectionActor->GetProperty()->SetColor(0,1,1); - myPreSelectionActor->GetProperty()->SetLineWidth(5); - myPreSelectionActor->GetProperty()->SetPointSize(5); - - OnSelectionModeChanged(); -} - -//---------------------------------------------------------------------------- -VTKViewer_InteractorStyleSALOME::~VTKViewer_InteractorStyleSALOME() -{ - if(MYDEBUG) INFOS("VTKViewer_InteractorStyleSALOME::~VTKViewer_InteractorStyleSALOME()"); - m_ViewFrame->RemoveActor(myPreSelectionActor); -} - -//---------------------------------------------------------------------------- -void VTKViewer_InteractorStyleSALOME::setPreselectionProp(const double& theRed, const double& theGreen, - const double& theBlue, const int& theWidth) -{ - if ( myPreSelectionActor->GetProperty() == 0 ) - return; - myPreSelectionActor->GetProperty()->SetColor(theRed, theGreen, theBlue); - myPreSelectionActor->GetProperty()->SetLineWidth(theWidth); - myPreSelectionActor->GetProperty()->SetPointSize(theWidth); -} - -//---------------------------------------------------------------------------- -void VTKViewer_InteractorStyleSALOME::SetInteractor(vtkRenderWindowInteractor *theInteractor){ - m_Interactor = dynamic_cast(theInteractor); - Superclass::SetInteractor(theInteractor); -} - -//---------------------------------------------------------------------------- -void VTKViewer_InteractorStyleSALOME::setViewFrame(VTKViewer_ViewFrame* theViewFrame){ - m_ViewFrame = theViewFrame; - m_ViewFrame->AddActor(myPreSelectionActor); - myPreSelectionActor->Delete(); -} - -//---------------------------------------------------------------------------- -void VTKViewer_InteractorStyleSALOME::setGUIWindow(QWidget* theWindow){ - myGUIWindow = theWindow; -} - -//---------------------------------------------------------------------------- -void VTKViewer_InteractorStyleSALOME::setTriedron(VTKViewer_Trihedron* theTrihedron){ - m_Trihedron = theTrihedron; -} - -//---------------------------------------------------------------------------- -void VTKViewer_InteractorStyleSALOME::RotateXY(int dx, int dy) -{ - double rxf; - double ryf; - vtkCamera *cam; - - if (this->CurrentRenderer == NULL) - { - return; - } - - int *size = this->CurrentRenderer->GetRenderWindow()->GetSize(); - this->DeltaElevation = -20.0 / size[1]; - this->DeltaAzimuth = -20.0 / size[0]; - - rxf = (double)dx * this->DeltaAzimuth * this->MotionFactor; - ryf = (double)dy * this->DeltaElevation * this->MotionFactor; - - cam = this->CurrentRenderer->GetActiveCamera(); - cam->Azimuth(rxf); - cam->Elevation(ryf); - cam->OrthogonalizeViewUp(); - ::ResetCameraClippingRange(this->CurrentRenderer); - //this->Interactor->Render(); - myGUIWindow->update(); -} - -//---------------------------------------------------------------------------- -void VTKViewer_InteractorStyleSALOME::PanXY(int x, int y, int oldX, int oldY) -{ - TranslateView(x, y, oldX, oldY); - //this->Interactor->Render(); - myGUIWindow->update(); -} - - -//---------------------------------------------------------------------------- -void VTKViewer_InteractorStyleSALOME::DollyXY(int dx, int dy) -{ - if (this->CurrentRenderer == NULL) return; - - double dxf = this->MotionFactor * (double)(dx) / (double)(this->CurrentRenderer->GetCenter()[1]); - double dyf = this->MotionFactor * (double)(dy) / (double)(this->CurrentRenderer->GetCenter()[1]); - - double zoomFactor = pow((double)1.1, dxf + dyf); - - vtkCamera *aCam = this->CurrentRenderer->GetActiveCamera(); - if (aCam->GetParallelProjection()) - aCam->SetParallelScale(aCam->GetParallelScale()/zoomFactor); - else{ - aCam->Dolly(zoomFactor); - ::ResetCameraClippingRange(this->CurrentRenderer); - } - - //this->Interactor->Render(); - myGUIWindow->update(); -} - -//---------------------------------------------------------------------------- -void VTKViewer_InteractorStyleSALOME::SpinXY(int x, int y, int oldX, int oldY) -{ - vtkCamera *cam; - - if (this->CurrentRenderer == NULL) - { - return; - } - - double newAngle = atan2((double)(y - this->CurrentRenderer->GetCenter()[1]), - (double)(x - this->CurrentRenderer->GetCenter()[0])); - double oldAngle = atan2((double)(oldY -this->CurrentRenderer->GetCenter()[1]), - (double)(oldX - this->CurrentRenderer->GetCenter()[0])); - - newAngle *= this->RadianToDegree; - oldAngle *= this->RadianToDegree; - - cam = this->CurrentRenderer->GetActiveCamera(); - cam->Roll(newAngle - oldAngle); - cam->OrthogonalizeViewUp(); - - //this->Interactor->Render(); - myGUIWindow->update(); -} - - -//---------------------------------------------------------------------------- -void VTKViewer_InteractorStyleSALOME::OnMouseMove(int vtkNotUsed(ctrl), - int shift, - int x, int y) -{ - myShiftState = shift; - if (State != VTK_INTERACTOR_STYLE_CAMERA_NONE) - onOperation(QPoint(x, y)); - else if (ForcedState == VTK_INTERACTOR_STYLE_CAMERA_NONE) - onCursorMove(QPoint(x, y)); -} - - -//---------------------------------------------------------------------------- -void VTKViewer_InteractorStyleSALOME::OnLeftButtonDown(int ctrl, int shift, - int x, int y) -{ - if (this->HasObserver(vtkCommand::LeftButtonPressEvent)) { - this->InvokeEvent(vtkCommand::LeftButtonPressEvent,NULL); - return; - } - this->FindPokedRenderer(x, y); - if (this->CurrentRenderer == NULL) { - return; - } - myShiftState = shift; - // finishing current viewer operation - if (State != VTK_INTERACTOR_STYLE_CAMERA_NONE) { - onFinishOperation(); - startOperation(VTK_INTERACTOR_STYLE_CAMERA_NONE); - } - myOtherPoint = myPoint = QPoint(x, y); - if (ForcedState != VTK_INTERACTOR_STYLE_CAMERA_NONE) { - startOperation(ForcedState); - } else { - if (ctrl) - startOperation(VTK_INTERACTOR_STYLE_CAMERA_ZOOM); - else - startOperation(VTK_INTERACTOR_STYLE_CAMERA_SELECT); - } - return; -} - - -//---------------------------------------------------------------------------- -void VTKViewer_InteractorStyleSALOME::OnLeftButtonUp(int vtkNotUsed(ctrl), - int shift, - int vtkNotUsed(x), - int vtkNotUsed(y)) -{ - myShiftState = shift; - // finishing current viewer operation - if (State != VTK_INTERACTOR_STYLE_CAMERA_NONE) { - onFinishOperation(); - startOperation(VTK_INTERACTOR_STYLE_CAMERA_NONE); - } -} - - -//---------------------------------------------------------------------------- -void VTKViewer_InteractorStyleSALOME::OnMiddleButtonDown(int ctrl, - int shift, - int x, int y) -{ - if (this->HasObserver(vtkCommand::MiddleButtonPressEvent)) - { - this->InvokeEvent(vtkCommand::MiddleButtonPressEvent,NULL); - return; - } - this->FindPokedRenderer(x, y); - if (this->CurrentRenderer == NULL) - { - return; - } - myShiftState = shift; - // finishing current viewer operation - if (State != VTK_INTERACTOR_STYLE_CAMERA_NONE) { - onFinishOperation(); - startOperation(VTK_INTERACTOR_STYLE_CAMERA_NONE); - } - myOtherPoint = myPoint = QPoint(x, y); - if (ForcedState != VTK_INTERACTOR_STYLE_CAMERA_NONE) { - startOperation(ForcedState); - } - else { - if (ctrl) - startOperation(VTK_INTERACTOR_STYLE_CAMERA_PAN); - } -} - - -//---------------------------------------------------------------------------- -void VTKViewer_InteractorStyleSALOME::OnMiddleButtonUp(int vtkNotUsed(ctrl), - int shift, - int vtkNotUsed(x), - int vtkNotUsed(y)) -{ - myShiftState = shift; - // finishing current viewer operation - if (State != VTK_INTERACTOR_STYLE_CAMERA_NONE) { - onFinishOperation(); - startOperation(VTK_INTERACTOR_STYLE_CAMERA_NONE); - } -} - - -//---------------------------------------------------------------------------- -void VTKViewer_InteractorStyleSALOME::OnRightButtonDown(int ctrl, - int shift, - int x, int y) -{ - if (this->HasObserver(vtkCommand::RightButtonPressEvent)) - { - this->InvokeEvent(vtkCommand::RightButtonPressEvent,NULL); - return; - } - this->FindPokedRenderer(x, y); - if (this->CurrentRenderer == NULL) - { - return; - } - myShiftState = shift; - // finishing current viewer operation - if (State != VTK_INTERACTOR_STYLE_CAMERA_NONE) { - onFinishOperation(); - startOperation(VTK_INTERACTOR_STYLE_CAMERA_NONE); - } - myOtherPoint = myPoint = QPoint(x, y); - if (ForcedState != VTK_INTERACTOR_STYLE_CAMERA_NONE) { - startOperation(ForcedState); - } - else { - if (ctrl) - startOperation(VTK_INTERACTOR_STYLE_CAMERA_ROTATE); - } -} - -//---------------------------------------------------------------------------- -void VTKViewer_InteractorStyleSALOME::OnRightButtonUp(int vtkNotUsed(ctrl), - int shift, - int vtkNotUsed(x), - int vtkNotUsed(y)) -{ - myShiftState = shift; - // finishing current viewer operation - if (State != VTK_INTERACTOR_STYLE_CAMERA_NONE) { - onFinishOperation(); - startOperation(VTK_INTERACTOR_STYLE_CAMERA_NONE); - } -} - -//---------------------------------------------------------------------------- -/* XPM */ -const char* imageZoomCursor[] = { -"32 32 3 1", -". c None", -"a c #000000", -"# c #ffffff", -"................................", -"................................", -".#######........................", -"..aaaaaaa.......................", -"................................", -".............#####..............", -"...........##.aaaa##............", -"..........#.aa.....a#...........", -".........#.a.........#..........", -".........#a..........#a.........", -"........#.a...........#.........", -"........#a............#a........", -"........#a............#a........", -"........#a............#a........", -"........#a............#a........", -".........#...........#.a........", -".........#a..........#a.........", -".........##.........#.a.........", -"........#####.....##.a..........", -".......###aaa#####.aa...........", -"......###aa...aaaaa.......#.....", -".....###aa................#a....", -"....###aa.................#a....", -"...###aa...............#######..", -"....#aa.................aa#aaaa.", -".....a....................#a....", -"..........................#a....", -"...........................a....", -"................................", -"................................", -"................................", -"................................"}; - -const char* imageRotateCursor[] = { -"32 32 3 1", -". c None", -"a c #000000", -"# c #ffffff", -"................................", -"................................", -"................................", -"................................", -"........#.......................", -".......#.a......................", -"......#######...................", -".......#aaaaa#####..............", -"........#..##.a#aa##........##..", -".........a#.aa..#..a#.....##.aa.", -".........#.a.....#...#..##.aa...", -".........#a.......#..###.aa.....", -"........#.a.......#a..#aa.......", -"........#a.........#..#a........", -"........#a.........#a.#a........", -"........#a.........#a.#a........", -"........#a.........#a.#a........", -".........#.........#a#.a........", -"........##a........#a#a.........", -"......##.a#.......#.#.a.........", -"....##.aa..##.....##.a..........", -"..##.aa.....a#####.aa...........", -"...aa.........aaa#a.............", -"................#.a.............", -"...............#.a..............", -"..............#.a...............", -"...............a................", -"................................", -"................................", -"................................", -"................................", -"................................"}; - - -//---------------------------------------------------------------------------- -// loads cursors for viewer operations - zoom, pan, etc... -void VTKViewer_InteractorStyleSALOME::loadCursors() -{ - myDefCursor = QCursor(ArrowCursor); - myHandCursor = QCursor(PointingHandCursor); - myPanCursor = QCursor(SizeAllCursor); - myZoomCursor = QCursor(QPixmap(imageZoomCursor)); - myRotateCursor = QCursor(QPixmap(imageRotateCursor)); - mySpinCursor = QCursor(QPixmap(imageRotateCursor)); // temporarly !!!!!! - myGlobalPanCursor = QCursor(CrossCursor); - myCursorState = false; -} - - -//---------------------------------------------------------------------------- -// event filter - controls mouse and keyboard events during viewer operations -bool VTKViewer_InteractorStyleSALOME::eventFilter(QObject* object, QEvent* event) -{ - if (!myGUIWindow) return false; - if ( (event->type() == QEvent::MouseButtonPress || event->type() == QEvent::KeyPress) && object != myGUIWindow) - { - qApp->removeEventFilter(this); - startOperation(VTK_INTERACTOR_STYLE_CAMERA_NONE); - } - return QObject::eventFilter(object, event); -} - - -//---------------------------------------------------------------------------- -// starts Zoom operation (e.g. through menu command) -void VTKViewer_InteractorStyleSALOME::startZoom() -{ - if (State != VTK_INTERACTOR_STYLE_CAMERA_NONE) - { - onFinishOperation(); - startOperation(VTK_INTERACTOR_STYLE_CAMERA_NONE); - } - setCursor(VTK_INTERACTOR_STYLE_CAMERA_ZOOM); - ForcedState = VTK_INTERACTOR_STYLE_CAMERA_ZOOM; - qApp->installEventFilter(this); -} - - -//---------------------------------------------------------------------------- -// starts Pan operation (e.g. through menu command) -void VTKViewer_InteractorStyleSALOME::startPan() -{ - if (State != VTK_INTERACTOR_STYLE_CAMERA_NONE) - { - onFinishOperation(); - startOperation(VTK_INTERACTOR_STYLE_CAMERA_NONE); - } - setCursor(VTK_INTERACTOR_STYLE_CAMERA_PAN); - ForcedState = VTK_INTERACTOR_STYLE_CAMERA_PAN; - qApp->installEventFilter(this); -} - -//---------------------------------------------------------------------------- -// starts Rotate operation (e.g. through menu command) -void VTKViewer_InteractorStyleSALOME::startRotate() -{ - if (State != VTK_INTERACTOR_STYLE_CAMERA_NONE) - { - onFinishOperation(); - startOperation(VTK_INTERACTOR_STYLE_CAMERA_NONE); - } - setCursor(VTK_INTERACTOR_STYLE_CAMERA_ROTATE); - ForcedState = VTK_INTERACTOR_STYLE_CAMERA_ROTATE; - qApp->installEventFilter(this); -} - - -//---------------------------------------------------------------------------- -// starts Spin operation (e.g. through menu command) -void VTKViewer_InteractorStyleSALOME::startSpin() -{ - if (State != VTK_INTERACTOR_STYLE_CAMERA_NONE) - { - onFinishOperation(); - startOperation(VTK_INTERACTOR_STYLE_CAMERA_NONE); - } - setCursor(VTK_INTERACTOR_STYLE_CAMERA_SPIN); - ForcedState = VTK_INTERACTOR_STYLE_CAMERA_SPIN; - qApp->installEventFilter(this); -} - - - -//---------------------------------------------------------------------------- -// starts Fit Area operation (e.g. through menu command) -void VTKViewer_InteractorStyleSALOME::startFitArea() -{ - if (State != VTK_INTERACTOR_STYLE_CAMERA_NONE) - { - onFinishOperation(); - startOperation(VTK_INTERACTOR_STYLE_CAMERA_NONE); - } - setCursor(VTK_INTERACTOR_STYLE_CAMERA_FIT); - ForcedState = VTK_INTERACTOR_STYLE_CAMERA_FIT; - qApp->installEventFilter(this); -} - - -//---------------------------------------------------------------------------- -void VTKViewer_InteractorStyleSALOME::ViewFitAll() { - int aTriedronWasVisible = false; - if(m_Trihedron){ - aTriedronWasVisible = m_Trihedron->GetVisibility() == VTKViewer_Trihedron::eOn; - if(aTriedronWasVisible) m_Trihedron->VisibilityOff(); - } - - if(m_Trihedron->GetVisibleActorCount(CurrentRenderer)){ - m_Trihedron->VisibilityOff(); - ::ResetCamera(CurrentRenderer); - }else{ - m_Trihedron->SetVisibility(VTKViewer_Trihedron::eOnlyLineOn); - ::ResetCamera(CurrentRenderer,true); - } - if(aTriedronWasVisible) m_Trihedron->VisibilityOn(); - else m_Trihedron->VisibilityOff(); - ::ResetCameraClippingRange(CurrentRenderer); -} - - -//---------------------------------------------------------------------------- -// starts Global Panning operation (e.g. through menu command) -void VTKViewer_InteractorStyleSALOME::startGlobalPan() -{ - if (State != VTK_INTERACTOR_STYLE_CAMERA_NONE) - { - onFinishOperation(); - startOperation(VTK_INTERACTOR_STYLE_CAMERA_NONE); - } - setCursor(VTK_INTERACTOR_STYLE_CAMERA_GLOBAL_PAN); - ForcedState = VTK_INTERACTOR_STYLE_CAMERA_GLOBAL_PAN; - - // store current zoom scale - vtkCamera *cam = this->CurrentRenderer->GetActiveCamera(); - myScale = cam->GetParallelScale(); - - ViewFitAll(); - - if (myGUIWindow) myGUIWindow->update(); - - qApp->installEventFilter(this); -} - - -//---------------------------------------------------------------------------- -// returns TRUE if needs redrawing -bool VTKViewer_InteractorStyleSALOME::needsRedrawing() -{ - return State == VTK_INTERACTOR_STYLE_CAMERA_ZOOM || - State == VTK_INTERACTOR_STYLE_CAMERA_PAN || - State == VTK_INTERACTOR_STYLE_CAMERA_ROTATE || - State == VTK_INTERACTOR_STYLE_CAMERA_SPIN || - State == VTK_INTERACTOR_STYLE_CAMERA_NONE; -} - - -//---------------------------------------------------------------------------- -// fits viewer contents to rect -void VTKViewer_InteractorStyleSALOME::fitRect(const int left, - const int top, - const int right, - const int bottom) -{ - if (this->CurrentRenderer == NULL) return; - - // move camera - int x = (left + right)/2; - int y = (top + bottom)/2; - int *aSize = this->CurrentRenderer->GetRenderWindow()->GetSize(); - int oldX = aSize[0]/2; - int oldY = aSize[1]/2; - TranslateView(oldX, oldY, x, y); - - // zoom camera - double dxf = (double)(aSize[0]) / (double)(abs(right - left)); - double dyf = (double)(aSize[1]) / (double)(abs(bottom - top)); - double zoomFactor = (dxf + dyf)/2 ; - - vtkCamera *aCam = this->CurrentRenderer->GetActiveCamera(); - if(aCam->GetParallelProjection()) - aCam->SetParallelScale(aCam->GetParallelScale()/zoomFactor); - else{ - aCam->Dolly(zoomFactor); - ::ResetCameraClippingRange(this->CurrentRenderer); - } - - myGUIWindow->update(); -} - - -//---------------------------------------------------------------------------- -// starts viewer operation (!internal usage!) -void VTKViewer_InteractorStyleSALOME::startOperation(int operation) -{ - switch(operation) - { - case VTK_INTERACTOR_STYLE_CAMERA_GLOBAL_PAN: - case VTK_INTERACTOR_STYLE_CAMERA_ZOOM: - case VTK_INTERACTOR_STYLE_CAMERA_PAN: - case VTK_INTERACTOR_STYLE_CAMERA_ROTATE: - case VTK_INTERACTOR_STYLE_CAMERA_SPIN: - case VTK_INTERACTOR_STYLE_CAMERA_FIT: - case VTK_INTERACTOR_STYLE_CAMERA_SELECT: - if (State != VTK_INTERACTOR_STYLE_CAMERA_NONE) - startOperation(VTK_INTERACTOR_STYLE_CAMERA_NONE); - State = operation; - if (State != VTK_INTERACTOR_STYLE_CAMERA_SELECT) - setCursor(operation); - onStartOperation(); - break; - case VTK_INTERACTOR_STYLE_CAMERA_NONE: - default: - setCursor(VTK_INTERACTOR_STYLE_CAMERA_NONE); - State = ForcedState = VTK_INTERACTOR_STYLE_CAMERA_NONE; - break; - } -} - - -//---------------------------------------------------------------------------- -// sets proper cursor for window when viewer operation is activated -void VTKViewer_InteractorStyleSALOME::setCursor(const int operation) -{ - if (!myGUIWindow) return; - switch (operation) - { - case VTK_INTERACTOR_STYLE_CAMERA_ZOOM: - myGUIWindow->setCursor(myZoomCursor); - myCursorState = true; - break; - case VTK_INTERACTOR_STYLE_CAMERA_PAN: - myGUIWindow->setCursor(myPanCursor); - myCursorState = true; - break; - case VTK_INTERACTOR_STYLE_CAMERA_ROTATE: - myGUIWindow->setCursor(myRotateCursor); - myCursorState = true; - break; - case VTK_INTERACTOR_STYLE_CAMERA_SPIN: - myGUIWindow->setCursor(mySpinCursor); - myCursorState = true; - break; - case VTK_INTERACTOR_STYLE_CAMERA_GLOBAL_PAN: - myGUIWindow->setCursor(myGlobalPanCursor); - myCursorState = true; - break; - case VTK_INTERACTOR_STYLE_CAMERA_FIT: - case VTK_INTERACTOR_STYLE_CAMERA_SELECT: - myGUIWindow->setCursor(myHandCursor); - myCursorState = true; - break; - case VTK_INTERACTOR_STYLE_CAMERA_NONE: - default: - myGUIWindow->setCursor(myDefCursor); - myCursorState = false; - break; - } -} - - -//---------------------------------------------------------------------------- -// called when viewer operation started (!put necessary initialization here!) -void VTKViewer_InteractorStyleSALOME::onStartOperation() -{ - if (!myGUIWindow) return; - // VSV: LOD actor activisation - // this->Interactor->GetRenderWindow()->SetDesiredUpdateRate(this->Interactor->GetDesiredUpdateRate()); - switch (State) { - case VTK_INTERACTOR_STYLE_CAMERA_SELECT: - case VTK_INTERACTOR_STYLE_CAMERA_FIT: - { - QPainter p(myGUIWindow); - p.setPen(Qt::lightGray); - p.setRasterOp(Qt::XorROP); - p.drawRect(QRect(myPoint, myOtherPoint)); - break; - } - case VTK_INTERACTOR_STYLE_CAMERA_ZOOM: - case VTK_INTERACTOR_STYLE_CAMERA_PAN: - case VTK_INTERACTOR_STYLE_CAMERA_ROTATE: - case VTK_INTERACTOR_STYLE_CAMERA_GLOBAL_PAN: - case VTK_INTERACTOR_STYLE_CAMERA_SPIN: - break; - } -} - - -//---------------------------------------------------------------------------- -// called when viewer operation finished (!put necessary post-processing here!) -void VTKViewer_InteractorStyleSALOME::onFinishOperation() -{ - if (!myGUIWindow) return; - - - QAD_Study* aActiveStudy = QAD_Application::getDesktop()->getActiveStudy(); - SALOME_Selection* aSel = SALOME_Selection::Selection( aActiveStudy->getSelection() ); - - // VSV: LOD actor activisation - // rwi->GetRenderWindow()->SetDesiredUpdateRate(rwi->GetStillUpdateRate()); - - Selection_Mode aSelectionMode = aSel->SelectionMode(); - bool aSelActiveCompOnly = aSel->IsSelectActiveCompOnly(); - - switch (State) { - case VTK_INTERACTOR_STYLE_CAMERA_SELECT: - case VTK_INTERACTOR_STYLE_CAMERA_FIT: - { - QPainter p(myGUIWindow); - p.setPen(Qt::lightGray); - p.setRasterOp(Qt::XorROP); - QRect rect(myPoint, myOtherPoint); - p.drawRect(rect); - rect = rect.normalize(); - if (State == VTK_INTERACTOR_STYLE_CAMERA_FIT) { - // making fit rect opeation - int w, h; - m_Interactor->GetSize(w, h); - int x1, y1, x2, y2; - x1 = rect.left(); - y1 = h - rect.top() - 1; - x2 = rect.right(); - y2 = h - rect.bottom() - 1; - fitRect(x1, y1, x2, y2); - } - else { - if (myPoint == myOtherPoint) { - // process point selection - int w, h, x, y; - m_Interactor->GetSize(w, h); - x = myPoint.x(); - y = h - myPoint.y() - 1; - - this->FindPokedRenderer(x, y); - m_Interactor->StartPickCallback(); - - vtkPicker* aPicker = vtkPicker::SafeDownCast(m_Interactor->GetPicker()); - aPicker->Pick(x, y, 0.0, this->CurrentRenderer); - - SALOME_Actor* SActor = SALOME_Actor::SafeDownCast(aPicker->GetActor()); - - if (vtkCellPicker* picker = vtkCellPicker::SafeDownCast(aPicker)) { - int aVtkId = picker->GetCellId(); - if ( aVtkId >= 0 && SActor && SActor->hasIO() && IsValid( SActor, aVtkId ) ) { - int anObjId = SActor->GetElemObjId(aVtkId); - if(anObjId >= 0){ - Handle(SALOME_InteractiveObject) IO = SActor->getIO(); - if(aSelectionMode != EdgeOfCellSelection) { - if(CheckDimensionId(aSelectionMode,SActor,anObjId)){ - if(MYDEBUG) INFOS(" CellId : "<AddOrRemoveIndex( IO, anObjId, myShiftState, false ); - } else { - if (!myShiftState) { - this->HighlightProp( NULL ); - aSel->ClearIObjects(); - } - aSel->AddOrRemoveIndex( IO, anObjId, myShiftState, false ); - aSel->AddIObject( IO, false ); - } - } - }else{ - if (!myShiftState) { - this->HighlightProp( NULL ); - aSel->ClearIObjects(); - } - int anEdgeId = GetEdgeId(picker,SActor,anObjId); - if (anEdgeId >= 0) { - if(MYDEBUG) INFOS(" CellId : "<AddOrRemoveIndex( IO, anObjId, true, false); - aSel->AddOrRemoveIndex( IO, -anEdgeId-1, true, true ); - aSel->AddIObject( IO, false ); - } - } - } - } else { - this->HighlightProp( NULL ); - aSel->ClearIObjects(); - } - } else if ( vtkPointPicker* picker = vtkPointPicker::SafeDownCast(aPicker) ) { - int aVtkId = picker->GetPointId(); - if ( aVtkId >= 0 && IsValid( SActor, aVtkId, true ) ) { - if ( SActor && SActor->hasIO() ) { - int anObjId = SActor->GetNodeObjId(aVtkId); - if(anObjId >= 0){ - Handle(SALOME_InteractiveObject) IO = SActor->getIO(); - if(IsSelected(IO,aSel)) { - // This IO is already in the selection - aSel->AddOrRemoveIndex( IO, anObjId, myShiftState, false ); - } else { - if(!myShiftState) { - this->HighlightProp( NULL ); - aSel->ClearIObjects(); - } - if(MYDEBUG) INFOS(" PointId : "<AddOrRemoveIndex( IO, anObjId, myShiftState, false ); - aSel->AddIObject( IO, false ); - } - } - } - } else { - this->HighlightProp( NULL ); - aSel->ClearIObjects(); - } - } else { - if ( SActor && SActor->hasIO() ) { - this->PropPicked++; - Handle(SALOME_InteractiveObject) IO = SActor->getIO(); - if(IsSelected(IO,aSel)) { - // This IO is already in the selection - if(myShiftState) { - aSel->RemoveIObject(IO); - } - } - else { - if(!myShiftState) { - this->HighlightProp( NULL ); - aSel->ClearIObjects(); - } - aSel->AddIObject( IO, false ); - } - }else{ - // No selection clear all - this->PropPicked = 0; - this->HighlightProp( NULL ); - aSel->ClearIObjects(); - } - } - m_Interactor->EndPickCallback(); - } else { - //processing rectangle selection - QString aComponentDataType = QAD_Application::getDesktop()->getComponentDataType(); - if(aSelActiveCompOnly && aComponentDataType.isEmpty()) return; - m_Interactor->StartPickCallback(); - - if (!myShiftState) { - this->PropPicked = 0; - this->HighlightProp( NULL ); - aSel->ClearIObjects(); - } - - // Compute bounds - // vtkCamera *cam = this->CurrentRenderer->GetActiveCamera(); - QRect rect(myPoint, myOtherPoint); - rect = rect.normalize(); - int w, h; - m_Interactor->GetSize(w, h); - int x1, y1, x2, y2; - x1 = rect.left(); - y1 = h - rect.top() - 1; - x2 = rect.right(); - y2 = h - rect.bottom() - 1; - - switch (aSelectionMode) { - case NodeSelection: { - if ( vtkPointPicker* aPointPicker = vtkPointPicker::SafeDownCast(m_Interactor->GetPicker()) ) { - vtkActorCollection* aListActors = this->CurrentRenderer->GetActors(); - aListActors->InitTraversal(); - while (vtkActor* aActor = aListActors->GetNextActor()) { - if (!aActor->GetVisibility()) - continue; - if(SALOME_Actor* SActor = SALOME_Actor::SafeDownCast(aActor)) { - if (SActor->hasIO()) { - Handle(SALOME_InteractiveObject) IO = SActor->getIO(); - if (IO.IsNull()) - continue; - if (aSelActiveCompOnly && aComponentDataType != IO->getComponentDataType()) - continue; - if (vtkDataSet* aDataSet = SActor->GetInput()) { - SALOME_Selection::TContainerOfId anIndices; - for(int i = 0; i < aDataSet->GetNumberOfPoints(); i++) { - float aPoint[3]; - aDataSet->GetPoint(i,aPoint); - if (IsInRect(aPoint,x1,y1,x2,y2)){ - float aDisp[3]; - ComputeWorldToDisplay(aPoint[0],aPoint[1],aPoint[2],aDisp); - if(aPointPicker->Pick(aDisp[0],aDisp[1],0.0,CurrentRenderer)){ - if(vtkActorCollection *anActorCollection = aPointPicker->GetActors()){ - if(anActorCollection->IsItemPresent(SActor)){ - float aPickedPoint[3]; - aPointPicker->GetMapperPosition(aPickedPoint); - vtkIdType aVtkId = aDataSet->FindPoint(aPickedPoint); - if ( aVtkId >= 0 && IsValid( SActor, aVtkId, true ) ){ - int anObjId = SActor->GetNodeObjId(aVtkId); - anIndices.insert(anObjId); - } - } - } - } - } - } - if (!anIndices.empty()) { - aSel->AddOrRemoveIndex(IO, anIndices, true, false); - aSel->AddIObject(IO, false); - anIndices.clear(); - }else{ - aSel->RemoveIObject(IO, false); - } - } - } - } - } - } - break; - } - case CellSelection: - case EdgeOfCellSelection: - case EdgeSelection: - case FaceSelection: - case VolumeSelection: - { - vtkSmartPointer picker = VTKViewer_CellRectPicker::New(); - picker->SetTolerance(0.001); - picker->Pick(x1, y1, 0.0, x2, y2, 0.0, this->CurrentRenderer); - - vtkActorCollection* aListActors = picker->GetActors(); - aListActors->InitTraversal(); - while(vtkActor* aActor = aListActors->GetNextActor()) { - if (SALOME_Actor* aSActor = SALOME_Actor::SafeDownCast(aActor)) { - if (aSActor->hasIO()) { - Handle(SALOME_InteractiveObject) aIO = aSActor->getIO(); - if (aSelActiveCompOnly && aComponentDataType != aIO->getComponentDataType()) - continue; - VTKViewer_CellDataSet cellList = picker->GetCellData(aActor); - if ( !cellList.empty() ) { - if(MYDEBUG) INFOS ( " NAME Actor : " << aSActor->getName() ); - SALOME_Selection::TContainerOfId anIndexes; - VTKViewer_CellDataSet::iterator it; - for ( it = cellList.begin(); it != cellList.end(); ++it ) { - int aCellId = (*it).cellId; - - if ( !IsValid( aSActor, aCellId ) ) - continue; - - int anObjId = aSActor->GetElemObjId(aCellId); - if (anObjId != -1){ - if ( CheckDimensionId(aSelectionMode,aSActor,anObjId) ) { - anIndexes.insert(anObjId); - } - } - } - aSel->AddOrRemoveIndex(aIO, anIndexes, true, false); - aSel->AddIObject(aIO, false); - } - } - } - } - } - break; - case ActorSelection: // objects selection - { - vtkSmartPointer picker = VTKViewer_RectPicker::New(); - picker->SetTolerance(0.001); - picker->Pick(x1, y1, 0.0, x2, y2, 0.0, this->CurrentRenderer); - - vtkActorCollection* aListActors = picker->GetActors(); - SALOME_ListIO aListIO; - aListActors->InitTraversal(); - while(vtkActor* aActor = aListActors->GetNextActor()) { - if (SALOME_Actor* aSActor = SALOME_Actor::SafeDownCast(aActor)) { - if (aSActor->hasIO()) { - Handle(SALOME_InteractiveObject) aIO = aSActor->getIO(); - if (!IsStored(aIO,aListIO)) - aListIO.Append(aIO); - } - } - } - if (!aListIO.IsEmpty()) { - SALOME_ListIteratorOfListIO It(aListIO); - for(;It.More();It.Next()) { - Handle(SALOME_InteractiveObject) IOS = It.Value(); - this->PropPicked++; - aSel->AddIObject( IOS, false ); - } - } - } // end case 4 - } //end switch - m_Interactor->EndPickCallback(); - } - aActiveStudy->update3dViewers(); - } - } - break; - case VTK_INTERACTOR_STYLE_CAMERA_ZOOM: - case VTK_INTERACTOR_STYLE_CAMERA_PAN: - case VTK_INTERACTOR_STYLE_CAMERA_ROTATE: - case VTK_INTERACTOR_STYLE_CAMERA_SPIN: - break; - case VTK_INTERACTOR_STYLE_CAMERA_GLOBAL_PAN: - { - int w, h, x, y; - m_Interactor->GetSize(w, h); - x = myPoint.x(); - y = h - myPoint.y() - 1; - Place(x, y); - } - break; - } - if (myGUIWindow) myGUIWindow->update(); - -} - -// called during viewer operation when user moves mouse (!put necessary processing here!) -void VTKViewer_InteractorStyleSALOME::onOperation(QPoint mousePos) -{ - if (!myGUIWindow) return; - int w, h; - GetInteractor()->GetSize(w, h); - switch (State) { - case VTK_INTERACTOR_STYLE_CAMERA_PAN: - { - // processing panning - //this->FindPokedCamera(mousePos.x(), mousePos.y()); - this->PanXY(mousePos.x(), myPoint.y(), myPoint.x(), mousePos.y()); - myPoint = mousePos; - break; - } - case VTK_INTERACTOR_STYLE_CAMERA_ZOOM: - { - // processing zooming - //this->FindPokedCamera(mousePos.x(), mousePos.y()); - this->DollyXY(mousePos.x() - myPoint.x(), mousePos.y() - myPoint.y()); - myPoint = mousePos; - break; - } - case VTK_INTERACTOR_STYLE_CAMERA_ROTATE: - { - // processing rotation - //this->FindPokedCamera(mousePos.x(), mousePos.y()); - this->RotateXY(mousePos.x() - myPoint.x(), myPoint.y() - mousePos.y()); - myPoint = mousePos; - break; - } - case VTK_INTERACTOR_STYLE_CAMERA_SPIN: - { - // processing spinning - //this->FindPokedCamera(mousePos.x(), mousePos.y()); - this->SpinXY(mousePos.x(), mousePos.y(), myPoint.x(), myPoint.y()); - myPoint = mousePos; - break; - } - case VTK_INTERACTOR_STYLE_CAMERA_GLOBAL_PAN: - { - break; - } - case VTK_INTERACTOR_STYLE_CAMERA_SELECT: - { - if (!myCursorState) - setCursor(VTK_INTERACTOR_STYLE_CAMERA_SELECT); - } - case VTK_INTERACTOR_STYLE_CAMERA_FIT: - { - QPainter p(myGUIWindow); - p.setPen(Qt::lightGray); - p.setRasterOp(Qt::XorROP); - p.drawRect(QRect(myPoint, myOtherPoint)); - myOtherPoint = mousePos; - p.drawRect(QRect(myPoint, myOtherPoint)); - break; - } - } - this->LastPos[0] = mousePos.x(); - this->LastPos[1] = h - mousePos.y() - 1; -} - -// called when selection mode changed (!put necessary initialization here!) -void VTKViewer_InteractorStyleSALOME::OnSelectionModeChanged() -{ - - myPreSelectionActor->SetVisibility(false); - myElemId = myEdgeId = myNodeId = -1; - mySelectedActor = NULL; -} - -// called when user moves mouse inside viewer window and there is no active viewer operation -// (!put necessary processing here!) -void VTKViewer_InteractorStyleSALOME::onCursorMove(QPoint mousePos) { - // processing highlighting - QAD_Study* anActiveStudy = QAD_Application::getDesktop()->getActiveStudy(); - SALOME_Selection* Sel = SALOME_Selection::Selection( anActiveStudy->getSelection() ); - Selection_Mode aSelectionMode = Sel->SelectionMode(); - - int w, h, x, y; - m_Interactor->GetSize(w, h); - x = mousePos.x(); y = h - mousePos.y() - 1; - - this->FindPokedRenderer(x,y); - m_Interactor->StartPickCallback(); - myPreSelectionActor->SetVisibility(false); - - vtkPicker* aPicker = vtkPicker::SafeDownCast(m_Interactor->GetPicker()); - aPicker->Pick(x, y, 0.0, this->CurrentRenderer); - - SALOME_Actor* SActor = SALOME_Actor::SafeDownCast(aPicker->GetActor()); - - if (vtkCellPicker* picker = vtkCellPicker::SafeDownCast(aPicker)) { - int aVtkId = picker->GetCellId(); - if ( aVtkId >= 0 ) { - int anObjId = SActor->GetElemObjId(aVtkId); - if ( SActor && SActor->hasIO() && IsValid( SActor, aVtkId ) ) { - bool anIsSameObjId = (mySelectedActor == SActor && myElemId == anObjId); - bool aResult = anIsSameObjId; - if(!anIsSameObjId) { - if(aSelectionMode != EdgeOfCellSelection) { - aResult = CheckDimensionId(aSelectionMode,SActor,anObjId); - if(aResult){ - mySelectedActor = SActor; - myElemId = anObjId; - if(MYDEBUG) INFOS(" CellId : "<setCellData(anObjId,SActor,myPreSelectionActor); - } - } - } - if(aSelectionMode == EdgeOfCellSelection){ - int anEdgeId = GetEdgeId(picker,SActor,anObjId); - bool anIsSameEdgeId = (myEdgeId != anEdgeId) && anIsSameObjId; - aResult = anIsSameEdgeId; - if(!anIsSameEdgeId) { - aResult = (anEdgeId >= 0); - if (aResult) { - mySelectedActor = SActor; - myEdgeId = anEdgeId; - myElemId = anObjId; - if(MYDEBUG) INFOS(" CellId : "<setEdgeData(anObjId,SActor,-anEdgeId-1,myPreSelectionActor); - } - } - } - if(aResult) { - myPreSelectionActor->GetProperty()->SetRepresentationToSurface(); - myPreSelectionActor->SetVisibility(true); - } - } - } - } - else if (vtkPointPicker* picker = vtkPointPicker::SafeDownCast(aPicker)) { - int aVtkId = picker->GetPointId(); - if ( aVtkId >= 0 && IsValid( SActor, aVtkId, true ) ) { - if ( SActor && SActor->hasIO() ) { - int anObjId = SActor->GetNodeObjId(aVtkId); - bool anIsSameObjId = (mySelectedActor == SActor && myNodeId == anObjId); - if(!anIsSameObjId) { - mySelectedActor = SActor; - myNodeId = anObjId; - if(MYDEBUG) INFOS(" PointId : "<setPointData(anObjId,SActor,myPreSelectionActor); - } - myPreSelectionActor->GetProperty()->SetRepresentationToSurface(); - myPreSelectionActor->SetVisibility(true); - } - } - } - else if ( vtkPicker::SafeDownCast(aPicker) ) { - if ( SActor ) { - if ( myPreViewActor != SActor ) { - if ( myPreViewActor != NULL ) { - myPreViewActor->SetPreSelected( false ); - } - myPreViewActor = SActor; - - if ( SActor->hasIO() ) { - Handle( SALOME_InteractiveObject) IO = SActor->getIO(); - if ( !IsSelected(IO,Sel) ) { - // Find All actors with same IO - vtkActorCollection* theActors = this->CurrentRenderer->GetActors(); - theActors->InitTraversal(); - while( vtkActor *ac = theActors->GetNextActor() ) { - if ( SALOME_Actor* anActor = SALOME_Actor::SafeDownCast( ac ) ) { - if ( anActor->hasIO() ) { - Handle(SALOME_InteractiveObject) IOS = anActor->getIO(); - if(IO->isSame(IOS)) { - anActor->SetPreSelected( true ); - } - } - } - } - //if(MYDEBUG) INFOS ( " NAME PREVIEW " << SActor->getName() ); - } - } - } - } else { - myPreViewActor = NULL; - vtkActorCollection* theActors = this->CurrentRenderer->GetActors(); - theActors->InitTraversal(); - while( vtkActor *ac = theActors->GetNextActor() ) { - if ( SALOME_Actor* anActor = SALOME_Actor::SafeDownCast( ac ) ) { - anActor->SetPreSelected( false ); - } - } - } - } - m_Interactor->EndPickCallback(); - //m_Interactor->Render(); - myGUIWindow->update(); - - this->LastPos[0] = x; - this->LastPos[1] = y; -} - -// called on finsh GlobalPan operation -void VTKViewer_InteractorStyleSALOME::Place(const int theX, const int theY) -{ - if (this->CurrentRenderer == NULL) { - return; - } - - //translate view - int *aSize = this->CurrentRenderer->GetRenderWindow()->GetSize(); - int centerX = aSize[0]/2; - int centerY = aSize[1]/2; - - TranslateView(centerX, centerY, theX, theY); - - // restore zoom scale - vtkCamera *cam = this->CurrentRenderer->GetActiveCamera(); - cam->SetParallelScale(myScale); - ::ResetCameraClippingRange(this->CurrentRenderer); - - if (myGUIWindow) myGUIWindow->update(); - -} - - - -// Translates view from Point to Point -void VTKViewer_InteractorStyleSALOME::TranslateView(int toX, int toY, int fromX, int fromY) -{ - vtkCamera *cam = this->CurrentRenderer->GetActiveCamera(); - double viewFocus[4], focalDepth, viewPoint[3]; - float newPickPoint[4], oldPickPoint[4], motionVector[3]; - cam->GetFocalPoint(viewFocus); - - this->ComputeWorldToDisplay(viewFocus[0], viewFocus[1], - viewFocus[2], viewFocus); - focalDepth = viewFocus[2]; - - this->ComputeDisplayToWorld(double(toX), double(toY), - focalDepth, newPickPoint); - this->ComputeDisplayToWorld(double(fromX),double(fromY), - focalDepth, oldPickPoint); - - // camera motion is reversed - motionVector[0] = oldPickPoint[0] - newPickPoint[0]; - motionVector[1] = oldPickPoint[1] - newPickPoint[1]; - motionVector[2] = oldPickPoint[2] - newPickPoint[2]; - - cam->GetFocalPoint(viewFocus); - cam->GetPosition(viewPoint); - cam->SetFocalPoint(motionVector[0] + viewFocus[0], - motionVector[1] + viewFocus[1], - motionVector[2] + viewFocus[2]); - cam->SetPosition(motionVector[0] + viewPoint[0], - motionVector[1] + viewPoint[1], - motionVector[2] + viewPoint[2]); -} - - -/// Checks: is the given Actor within display coordinates? -bool VTKViewer_InteractorStyleSALOME::IsInRect(vtkActor* theActor, - const int left, const int top, - const int right, const int bottom) -{ - float* aBounds = theActor->GetBounds(); - float aMin[3], aMax[3]; - ComputeWorldToDisplay(aBounds[0], aBounds[2], aBounds[4], aMin); - ComputeWorldToDisplay(aBounds[1], aBounds[3], aBounds[5], aMax); - if (aMin[0] > aMax[0]) { - float aBuf = aMin[0]; - aMin[0] = aMax[0]; - aMax[0] = aBuf; - } - if (aMin[1] > aMax[1]) { - float aBuf = aMin[1]; - aMin[1] = aMax[1]; - aMax[1] = aBuf; - } - - return ((aMin[0]>left) && (aMax[0]bottom) && (aMax[1]GetBounds(); - float aMin[3], aMax[3]; - ComputeWorldToDisplay(aBounds[0], aBounds[2], aBounds[4], aMin); - ComputeWorldToDisplay(aBounds[1], aBounds[3], aBounds[5], aMax); - if (aMin[0] > aMax[0]) { - float aBuf = aMin[0]; - aMin[0] = aMax[0]; - aMax[0] = aBuf; - } - if (aMin[1] > aMax[1]) { - float aBuf = aMin[1]; - aMin[1] = aMax[1]; - aMax[1] = aBuf; - } - - return ((aMin[0]>left) && (aMax[0]bottom) && (aMax[1]left) && (aPnt[0]bottom) && (aPnt[1]GetId() ] = theFilter; -} - -bool VTKViewer_InteractorStyleSALOME::IsFilterPresent( const int theId ) -{ - return myFilters.find( theId ) != myFilters.end(); -} - -void VTKViewer_InteractorStyleSALOME::RemoveFilter( const int theId ) -{ - if ( IsFilterPresent( theId ) ) - myFilters.erase( theId ); -} - - -bool VTKViewer_InteractorStyleSALOME::IsValid( SALOME_Actor* theActor, - const int theId, - const bool theIsNode ) -{ - std::map::const_iterator anIter; - for ( anIter = myFilters.begin(); anIter != myFilters.end(); ++anIter ) - { - const Handle(VTKViewer_Filter)& aFilter = anIter->second; - if ( theIsNode == aFilter->IsNodeFilter() && - !aFilter->IsValid( theActor, theId ) ) - return false; - } - return true; -} - -Handle(VTKViewer_Filter) VTKViewer_InteractorStyleSALOME::GetFilter( const int theId ) -{ - return IsFilterPresent( theId ) ? myFilters[ theId ] : Handle(VTKViewer_Filter)(); -} - -void VTKViewer_InteractorStyleSALOME::IncrementalPan( const int incrX, const int incrY ) -{ - this->PanXY( incrX, incrY, 0, 0 ); -} - -void VTKViewer_InteractorStyleSALOME::IncrementalZoom( const int incr ) -{ - this->DollyXY( incr, incr ); -} - -void VTKViewer_InteractorStyleSALOME::IncrementalRotate( const int incrX, const int incrY ) -{ - this->RotateXY( incrX, -incrY ); -} - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/VTKViewer/VTKViewer_InteractorStyleSALOME.h b/src/VTKViewer/VTKViewer_InteractorStyleSALOME.h deleted file mode 100644 index 2952537a3..000000000 --- a/src/VTKViewer/VTKViewer_InteractorStyleSALOME.h +++ /dev/null @@ -1,183 +0,0 @@ -// SALOME VTKViewer : build VTK viewer into Salome desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : VTKViewer_InteractorStyleSALOME.h -// Author : Christophe ATTANASIO -// Module : SALOME -// $Header$ - -#ifndef __VTKViewer_InteractorStyleSALOME_h -#define __VTKViewer_InteractorStyleSALOME_h - -#include - -class vtkCell; -class vtkRenderWindowInteractor; - -#include -#include - -#include "VTKViewer_Filter.h" - -class SALOME_Actor; -class VTKViewer_Actor; -class VTKViewer_Trihedron; -class VTKViewer_ViewFrame; -class VTKViewer_RenderWindowInteractor; - -#define VTK_INTERACTOR_STYLE_CAMERA_NONE 0 -#define VTK_INTERACTOR_STYLE_CAMERA_ROTATE 1 -#define VTK_INTERACTOR_STYLE_CAMERA_PAN 2 -#define VTK_INTERACTOR_STYLE_CAMERA_ZOOM 3 -#define VTK_INTERACTOR_STYLE_CAMERA_SPIN 4 -#define VTK_INTERACTOR_STYLE_CAMERA_FIT 5 -#define VTK_INTERACTOR_STYLE_CAMERA_SELECT 6 -#define VTK_INTERACTOR_STYLE_CAMERA_GLOBAL_PAN 7 - -class VTKViewer_InteractorStyleSALOME : public QObject, public vtkInteractorStyle -{ - public: - // Description: - // This class must be supplied with a vtkRenderWindowInteractor wrapper or - // parent. This class should not normally be instantiated by application - // programmers. - static VTKViewer_InteractorStyleSALOME *New(); - vtkTypeMacro(VTKViewer_InteractorStyleSALOME, vtkInteractorStyle); - - virtual void SetInteractor(vtkRenderWindowInteractor *theInteractor); - void setViewFrame(VTKViewer_ViewFrame* theViewFrame); - void setGUIWindow(QWidget* theWindow); - - void setTriedron(VTKViewer_Trihedron* theTrihedron); - void setPreselectionProp(const double& theRed = 0, const double& theGreen = 1, - const double& theBlue = 1, const int& theWidth = 5); - - // Generic event bindings must be overridden in subclasses - void OnMouseMove (int ctrl, int shift, int x, int y); - void OnLeftButtonDown(int ctrl, int shift, int x, int y); - void OnLeftButtonUp (int ctrl, int shift, int x, int y); - void OnMiddleButtonDown(int ctrl, int shift, int x, int y); - void OnMiddleButtonUp (int ctrl, int shift, int x, int y); - void OnRightButtonDown(int ctrl, int shift, int x, int y); - void OnRightButtonUp (int ctrl, int shift, int x, int y); - - void OnSelectionModeChanged(); - - void ViewFitAll(); - - void SetFilter( const Handle(VTKViewer_Filter)& ); - Handle(VTKViewer_Filter) GetFilter( const int ); - bool IsFilterPresent( const int ); - void RemoveFilter( const int ); - bool IsValid( SALOME_Actor* theActor, - const int theId, - const bool theIsNode = false ); - - void IncrementalPan ( const int incrX, const int incrY ); - void IncrementalZoom ( const int incr ); - void IncrementalRotate( const int incrX, const int incrY ); - - protected: - VTKViewer_InteractorStyleSALOME(); - ~VTKViewer_InteractorStyleSALOME(); - VTKViewer_InteractorStyleSALOME(const VTKViewer_InteractorStyleSALOME&) {}; - void operator=(const VTKViewer_InteractorStyleSALOME&) {}; - - void RotateXY(int dx, int dy); - void PanXY(int x, int y, int oldX, int oldY); - void DollyXY(int dx, int dy); - void SpinXY(int dx, int dy, int oldX, int oldY); - void fitRect(const int left, const int top, const int right, const int bottom); - void Place(const int theX, const int theY); - void TranslateView(int toX, int toY, int fromX, int fromY); - bool IsInRect(vtkActor* theActor, - const int left, const int top, - const int right, const int bottom); - bool IsInRect(vtkCell* theCell, - const int left, const int top, - const int right, const int bottom); - bool IsInRect(float* thePoint, - const int left, const int top, - const int right, const int bottom); - - int State; - float MotionFactor; - float RadianToDegree; // constant: for conv from deg to rad - double myScale; - - SALOME_Actor* myPreViewActor; - - VTKViewer_Actor* myPreSelectionActor; - SALOME_Actor* mySelectedActor; - int myElemId; - int myEdgeId; - int myNodeId; - - public: - bool eventFilter(QObject* object, QEvent* event); - void startZoom(); - void startPan(); - void startGlobalPan(); - void startRotate(); - void startFitArea(); - void startSpin(); - bool needsRedrawing(); - - protected: - void loadCursors(); - void startOperation(int operation); - void onStartOperation(); - void onFinishOperation(); - void onOperation(QPoint mousePos); - void onCursorMove(QPoint mousePos); - void setCursor(const int operation); - - - protected: - QCursor myDefCursor; - QCursor myPanCursor; - QCursor myZoomCursor; - QCursor myRotateCursor; - QCursor mySpinCursor; - QCursor myHandCursor; - QCursor myGlobalPanCursor; - QPoint myPoint; - QPoint myOtherPoint; - bool myCursorState; - bool myShiftState; - int ForcedState; - - VTKViewer_RenderWindowInteractor* m_Interactor; - VTKViewer_ViewFrame* m_ViewFrame; - VTKViewer_Trihedron* m_Trihedron; - QWidget* myGUIWindow; - - std::map myFilters; - - // members from old version - double DeltaElevation; - double DeltaAzimuth; - int LastPos[2]; -}; - -#endif diff --git a/src/VTKViewer/VTKViewer_Prs.cxx b/src/VTKViewer/VTKViewer_Prs.cxx deleted file mode 100644 index dec6b008a..000000000 --- a/src/VTKViewer/VTKViewer_Prs.cxx +++ /dev/null @@ -1,98 +0,0 @@ -// SALOME VTKViewer : build VTK viewer into Salome desktop -// -// Copyright (C) 2004 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org or email : webmaster.salome@opencascade.org -// -// -// -// File : VTKViewer_Prs.cxx -// Author : Sergey ANIKIN -// Module : SALOME -// $Header$ - -#include "VTKViewer_Prs.h" -using namespace std; - -//========================================================== -/*! - * VTKViewer_Prs::VTKViewer_Prs - * Default constructor - */ -//========================================================== -VTKViewer_Prs::VTKViewer_Prs() : myObjects( 0 ) -{ -} - -//========================================================== -/*! - * VTKViewer_Prs::VTKViewer_Prs - * tandard constructora - */ -//========================================================== -VTKViewer_Prs::VTKViewer_Prs( const vtkActor* obj ) -{ - AddObject( obj ); -} - -//========================================================== -/*! - * VTKViewer_Prs::~VTKViewer_Prs - * Destructor - */ -//========================================================== -VTKViewer_Prs:: ~VTKViewer_Prs() -{ - if ( myObjects ) myObjects->Delete(); -} - -//========================================================== -/*! - * VTKViewer_Prs::GetObjects - * Get actors list - */ -//========================================================== -vtkActorCollection* VTKViewer_Prs::GetObjects() const -{ - return myObjects; -} - -//========================================================== -/*! - * VTKViewer_Prs::AddObject - * Add actor - */ -//========================================================== -void VTKViewer_Prs::AddObject( const vtkActor* obj ) -{ - if ( !myObjects) - myObjects = vtkActorCollection::New(); - myObjects->AddItem( (vtkActor*)obj ); -} - -//========================================================== -/*! - * VTKViewer_Prs::IsNull - * Return 0 if list of the actors is empty - * [ Reimplemented from SALOME_Prs ] - */ -//========================================================== -bool VTKViewer_Prs::IsNull() const -{ - return !myObjects || myObjects->GetNumberOfItems() <= 0; -} diff --git a/src/VTKViewer/VTKViewer_Prs.h b/src/VTKViewer/VTKViewer_Prs.h deleted file mode 100644 index 6e61c0abe..000000000 --- a/src/VTKViewer/VTKViewer_Prs.h +++ /dev/null @@ -1,58 +0,0 @@ -// SALOME VTKViewer : build VTK viewer into Salome desktop -// -// Copyright (C) 2004 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org or email : webmaster.salome@opencascade.org -// -// -// -// File : VTKViewer_Prs.h -// Author : Sergey ANIKIN -// Module : SALOME -// $Header$ - -#ifndef VTKVIEWER_PRS_H -#define VTKVIEWER_PRS_H - -#include "SALOME_Prs.h" - -#include - -class VTKViewer_Prs : public SALOME_VTKPrs -{ -public: - VTKViewer_Prs(); - // Default constructor - VTKViewer_Prs( const vtkActor* obj ); - // Standard constructor - ~VTKViewer_Prs(); - // Destructor - - vtkActorCollection* GetObjects() const; - // Get actors list - void AddObject( const vtkActor* obj ); - // Add actor - - bool IsNull() const; - // Reimplemented from SALOME_Prs - -private: - vtkActorCollection* myObjects; // list of actors -}; - -#endif diff --git a/src/VTKViewer/VTKViewer_RectPicker.cxx b/src/VTKViewer/VTKViewer_RectPicker.cxx deleted file mode 100644 index 6453097c0..000000000 --- a/src/VTKViewer/VTKViewer_RectPicker.cxx +++ /dev/null @@ -1,881 +0,0 @@ -// SALOME VTKViewer : build VTK viewer into Salome desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : VTKViewer_RectPicker.cxx -// Author : Natalia KOPNOVA -// Module : SALOME - -#include - -#include "vtkActor.h" -#include "vtkAssemblyNode.h" -#include "vtkAssemblyPath.h" -#include "vtkCamera.h" -#include "vtkCommand.h" -#include "vtkImageData.h" -#include "vtkLODProp3D.h" -#include "vtkMapper.h" -#include "vtkMath.h" -#include "vtkObjectFactory.h" -#include "vtkPoints.h" -#include "vtkProp3DCollection.h" -#include "vtkProperty.h" -#include "vtkRenderWindow.h" -#include "vtkRenderer.h" -#include "vtkTransform.h" -#include "vtkVertex.h" -#include "vtkVolume.h" -#include "vtkVolumeMapper.h" - -using namespace std; - -//---------------------------------------------------------------------------- -vtkStandardNewMacro(VTKViewer_RectPicker); -//---------------------------------------------------------------------------- - -VTKViewer_RectPicker::VTKViewer_RectPicker() -{ -} - -//---------------------------------------------------------------------------- -int VTKViewer_RectPicker::Pick(float selectionX1, float selectionY1, float selectionZ1, - float selectionX2, float selectionY2, float selectionZ2, - vtkRenderer *renderer) -{ - int k, i; - vtkProp *prop; - vtkCamera *camera; - vtkAbstractMapper3D *mapper = NULL; - float p1World[4][4], p2World[4][4], p1Mapper[4][4], p2Mapper[4][4]; - float c1[3], c2[3]; - int picked=0; - int *winSize; - float x, y, t, p; - float *viewport; - float cameraPos[4], cameraFP[4]; - float *displayCoords, *worldCoords; - float pickPosition[4][3]; - double *clipRange; - float ray[4][3], rayLength[4]; - int pickable; - int LODId; - float windowLowerLeft[4], windowUpperRight[4]; - float bounds[6], tol; - float tF, tB; - float hitPosition[3]; - float cameraDOP[3]; - - // Initialize picking process - this->Initialize(); - this->Renderer = renderer; - - /* Selection point is not defined for the rectangle - this->SelectionPoint[0] = - this->SelectionPoint[1] = - this->SelectionPoint[2] = - */ - - // Invoke start pick method if defined - this->InvokeEvent(vtkCommand::StartPickEvent,NULL); - - if ( renderer == NULL ) - { - vtkErrorMacro(<<"Must specify renderer!"); - return 0; - } - - // Get camera focal point and position. Convert to display (screen) - // coordinates. We need a depth value for z-buffer. - // - camera = renderer->GetActiveCamera(); - camera->GetPosition((float *)cameraPos); cameraPos[3] = 1.0; - camera->GetFocalPoint((float *)cameraFP); cameraFP[3] = 1.0; - - renderer->SetWorldPoint(cameraFP); - renderer->WorldToDisplay(); - displayCoords = renderer->GetDisplayPoint(); - selectionZ1 = selectionZ2 = displayCoords[2]; - - // Convert the selection rectangle into world coordinates. - // - renderer->SetDisplayPoint(selectionX1, selectionY1, selectionZ1); - renderer->DisplayToWorld(); - worldCoords = renderer->GetWorldPoint(); - if ( worldCoords[3] == 0.0 ) - { - vtkErrorMacro(<<"Bad homogeneous coordinates"); - return 0; - } - for (i=0; i < 3; i++) - { - pickPosition[0][i] = worldCoords[i] / worldCoords[3]; - } - - renderer->SetDisplayPoint(selectionX1, selectionY2, (selectionZ1+selectionZ2)/2); - renderer->DisplayToWorld(); - worldCoords = renderer->GetWorldPoint(); - if ( worldCoords[3] == 0.0 ) - { - vtkErrorMacro(<<"Bad homogeneous coordinates"); - return 0; - } - for (i=0; i < 3; i++) - { - pickPosition[1][i] = worldCoords[i] / worldCoords[3]; - } - - renderer->SetDisplayPoint(selectionX2, selectionY2, selectionZ2); - renderer->DisplayToWorld(); - worldCoords = renderer->GetWorldPoint(); - if ( worldCoords[3] == 0.0 ) - { - vtkErrorMacro(<<"Bad homogeneous coordinates"); - return 0; - } - for (i=0; i < 3; i++) - { - pickPosition[2][i] = worldCoords[i] / worldCoords[3]; - } - - renderer->SetDisplayPoint(selectionX2, selectionY1, (selectionZ1+selectionZ2)/2); - renderer->DisplayToWorld(); - worldCoords = renderer->GetWorldPoint(); - if ( worldCoords[3] == 0.0 ) - { - vtkErrorMacro(<<"Bad homogeneous coordinates"); - return 0; - } - for (i=0; i < 3; i++) - { - pickPosition[3][i] = worldCoords[i] / worldCoords[3]; - } - - // Compute the ray endpoints. The ray is along the line running from - // the camera position to the selection point, starting where this line - // intersects the front clipping plane, and terminating where this - // line intersects the back clipping plane. - for (k=0; k < 4; k++) { - for (i=0; i<3; i++) - { - ray[k][i] = pickPosition[k][i] - cameraPos[i]; - } - } - for (i=0; i<3; i++) - { - cameraDOP[i] = cameraFP[i] - cameraPos[i]; - } - - vtkMath::Normalize(cameraDOP); - - for (k=0; k < 4; k++) { - if (( rayLength[k] = vtkMath::Dot(cameraDOP,ray[k])) == 0.0 ) - { - vtkWarningMacro("Cannot process points"); - return 0; - } - } - - clipRange = camera->GetClippingRange(); - - if ( camera->GetParallelProjection() ) - { - for (k=0; k < 4; k++) { - tF = clipRange[0] - rayLength[k]; - tB = clipRange[1] - rayLength[k]; - for (i=0; i<3; i++) - { - p1World[k][i] = pickPosition[k][i] + tF*cameraDOP[i]; - p2World[k][i] = pickPosition[k][i] + tB*cameraDOP[i]; - } - p1World[k][3] = p2World[k][3] = 1.0; - } - } - else - { - for (k=0; k < 4; k++) { - tF = clipRange[0] / rayLength[k]; - tB = clipRange[1] / rayLength[k]; - for (i=0; i<3; i++) - { - p1World[k][i] = cameraPos[i] + tF*ray[k][i]; - p2World[k][i] = cameraPos[i] + tB*ray[k][i]; - } - p1World[k][3] = p2World[k][3] = 1.0; - } - } - - // Compute the center points of ray rectangle - for (i=0; i<3; i++) { - c1[i] = c2[i] = 0; - for (k=0; k<4; k++) { - c1[i] += p1World[k][i]; - c2[i] += p2World[k][i]; - } - c1[i] = c1[i]/4; - c2[i] = c2[i]/4; - } - - // Compute the tolerance in world coordinates. Do this by - // determining the world coordinates of the diagonal points of the - // window, computing the width of the window in world coordinates, and - // multiplying by the tolerance. - // - viewport = renderer->GetViewport(); - winSize = renderer->GetRenderWindow()->GetSize(); - x = winSize[0] * viewport[0]; - y = winSize[1] * viewport[1]; - renderer->SetDisplayPoint(x, y, selectionZ1); - renderer->DisplayToWorld(); - renderer->GetWorldPoint(windowLowerLeft); - - x = winSize[0] * viewport[2]; - y = winSize[1] * viewport[3]; - renderer->SetDisplayPoint(x, y, selectionZ2); - renderer->DisplayToWorld(); - renderer->GetWorldPoint(windowUpperRight); - - for (tol=0.0,i=0; i<3; i++) - { - tol += (windowUpperRight[i] - windowLowerLeft[i]) * - (windowUpperRight[i] - windowLowerLeft[i]); - } - - tol = sqrt (tol) * this->Tolerance; - - // Loop over all props. Transform ray (defined from position of - // camera to selection point) into coordinates of mapper (not - // transformed to actors coordinates! Reduces overall computation!!!). - // Note that only vtkProp3D's can be picked by vtkPicker. - // - vtkPropCollection *props; - vtkProp *propCandidate; - if ( this->PickFromList ) - { - props = this->GetPickList(); - } - else - { - props = renderer->GetProps(); - } - - vtkActor *actor; - vtkLODProp3D *prop3D; - vtkVolume *volume; - vtkAssemblyPath *path; - vtkProperty *tempProperty; - this->Transform->PostMultiply(); - for ( props->InitTraversal(); (prop=props->GetNextProp()); ) - { - for ( prop->InitPathTraversal(); (path=prop->GetNextPath()); ) - { - pickable = 0; - actor = NULL; - propCandidate = path->GetLastNode()->GetProp(); - if ( propCandidate->GetPickable() && propCandidate->GetVisibility() ) - { - pickable = 1; - if ( (actor=vtkActor::SafeDownCast(propCandidate)) != NULL ) - { - mapper = actor->GetMapper(); - if ( actor->GetProperty()->GetOpacity() <= 0.0 ) - { - pickable = 0; - } - } - else if ( (prop3D=vtkLODProp3D::SafeDownCast(propCandidate)) != NULL ) - { - LODId = prop3D->GetPickLODID(); - mapper = prop3D->GetLODMapper(LODId); - - // if the mapper is a vtkMapper (as opposed to a vtkVolumeMapper), - // then check the transparency to see if the object is pickable - if ( vtkMapper::SafeDownCast(mapper) != NULL) - { - prop3D->GetLODProperty(LODId, &tempProperty); - if ( tempProperty->GetOpacity() <= 0.0 ) - { - pickable = 0; - } - } - } - else if ( (volume=vtkVolume::SafeDownCast(propCandidate)) != NULL ) - { - mapper = volume->GetMapper(); - } - else - { - pickable = 0; //only vtkProp3D's (actors and volumes) can be picked - } - } - // If actor can be picked, get its composite matrix, invert it, and - // use the inverted matrix to transform the ray points into mapper - // coordinates. - if ( pickable && mapper != NULL ) - { - vtkMatrix4x4 *LastMatrix = path->GetLastNode()->GetMatrix(); - if (LastMatrix == NULL) - { - vtkErrorMacro (<< "Pick: Null matrix."); - return 0; - } - this->Transform->SetMatrix(LastMatrix); - this->Transform->Push(); - this->Transform->Inverse(); - - for (k=0; k < 4; k++) { - this->Transform->TransformPoint(p1World[k],p1Mapper[k]); - this->Transform->TransformPoint(p2World[k],p2Mapper[k]); - - for (i=0; i<3; i++) - { - ray[k][i] = p2Mapper[k][i] - p1Mapper[k][i]; - } - } - - this->Transform->Pop(); - - // Have the ray endpoints in mapper space, now need to compare this - // with the mapper bounds to see whether intersection is possible. - // - // Get the bounding box of the modeller. Note that the tolerance is - // added to the bounding box to make sure things on the edge of the - // bounding box are picked correctly. - mapper->GetBounds(bounds); - bounds[0] -= tol; bounds[1] += tol; - bounds[2] -= tol; bounds[3] += tol; - bounds[4] -= tol; bounds[5] += tol; - if ( HitBBox(bounds, p1Mapper, ray) ) { - t = this->IntersectWithHex(p1Mapper, p2Mapper, tol, path, - (vtkProp3D *)propCandidate, mapper); - if ( t >= 0.0 && t <= 1.0 /*t < VTK_LARGE_FLOAT*/ ) { - picked = 1; - this->Prop3Ds->AddItem((vtkProp3D *)prop); - this->PickedPositions->InsertNextPoint - ((1.0 - t)*c1[0] + t*c2[0], - (1.0 - t)*c1[1] + t*c2[1], - (1.0 - t)*c1[2] + t*c2[2]); - - // backwards compatibility: also add to this->Actors - if (actor) { - this->Actors->AddItem(actor); - } - } - } - - }//if visible and pickable not transparent and has mapper - }//for all parts - }//for all actors - - // Invoke end pick method if defined - this->InvokeEvent(vtkCommand::EndPickEvent,NULL); - - return picked; -} - -#define SIDE_LEFT 0 -#define SIDE_RIGHT 1 -#define SIDE_MIDDLE 2 - -float GetParameterValue(float start, float end, float point) -{ - if (start == end) return -VTK_LARGE_FLOAT; - return (point-start)/(end-start); -} - -void GetPointCoord(const float start[3], const float end[3], float t, float point[3]) -{ - int i; - for (i = 0; i < 3; i++) { - point[i] = start[i] + t*(end[i]-start[i]); - } -} - -char GetIntersectionPoint(const float start[3], const float end[3], - const int& index, const float p, float point[3]) -{ - float t = GetParameterValue(start[index], end[index], p); - char result = 0; - if (t >= 0.0 && t <= 1.0) { - result = 1; - GetPointCoord(start, end, t, point); - } - return result; -} - -//---------------------------------------------------------------------------- -char VTKViewer_RectPicker::HitBBox (float bounds[6], float origin[4][4], float dir[4][3]) -{ - int i, j, k, n; - float endray[4][3]; - - for (k = 0; k < 4; k++) { - for (i = 0; i < 3; i++) { - endray[k][i] = origin[k][i] + dir[k][i]; - } - } - - // Compute hex bounding box, center point and center direction - float hbounds[6], center[3], ray[3]; - for (i = 0; i < 3; i++) { - hbounds[2*i] = hbounds[2*i+1] = origin[0][i]; - center[i] = ray[i] = 0; - for (k = 0; k < 4; k++) { - center[i] += origin[k][i]; - ray[i] += endray[k][i]; - if (origin[k][i] < hbounds[2*i]) { - hbounds[2*i] = origin[k][i]; - } - else if (origin[k][i] > hbounds[2*i+1]) - hbounds[2*i+1] = origin[k][i]; - if (endray[k][i] < hbounds[2*i]) - hbounds[2*i] = endray[k][i]; - else if (endray[k][i] > hbounds[2*i+1]) - hbounds[2*i+1] = endray[k][i]; - } - center[i] = center[i]/4; - ray[i] = ray[i]/4; - ray[i] = ray[i] - center[i]; - } - - // Check for intersection between bouning boxes - for (i = 0; i < 3; i++) { - if (bounds[2*i+1] < hbounds[2*i] || bounds[2*i] > hbounds[2*i+1]) - return 0; - } - - // Check if one of the origin point lays inside bbox - char inside; - for (k = 0; k < 4; k++) { - inside = 1; - for (i = 0; i < 3; i++) { - if (origin[k][i] < bounds[2*i] || origin[k][i] > bounds[2*i+1]) { - inside = 0; - break; - } - } - if (inside) return 1; - } - - // Find the closest coord plane for the center point - char side[3]; - float coordPlane[3]; - inside = 1; - for (i = 0; i < 3; i++) { - if (center[i] < bounds[2*i]) { - inside = 0; - coordPlane[i] = bounds[2*i]; - side[i] = SIDE_LEFT; - } - else if (center[i] > bounds[2*i+1]) { - inside = 0; - coordPlane[i] = bounds[2*i+1]; - side[i] = SIDE_RIGHT; - } - else { - coordPlane[i] = (ray[i]<0.0) ? bounds[2*i] : bounds[2*i+1]; - side[i] = SIDE_MIDDLE; - } - } - if (inside) return 1; - - // Calculate parametric distances to the planes and find the max - float maxT[3]; - int whichPlane = 0; - char defined = 0; - for (i = 0; i < 3; i++) { - if (side[i] != SIDE_MIDDLE && ray[i] != 0.0) { - maxT[i] = (coordPlane[i]-center[i])/ray[i]; - defined = 1; - } - else - maxT[i] = -1.0; - } - for (i = 0; i < 3; i++) { - if (maxT[whichPlane] < maxT[i]) - whichPlane = i; - } - - // Check for intersection along the center ray - float coord; - if (maxT[whichPlane] <= 1.0 && maxT[whichPlane] >= 0.0) { - inside = 1; - for (i = 0; i < 3; i++) { - if (i != whichPlane) { - coord = center[i] + maxT[whichPlane]*ray[i]; - if (coord < bounds[2*i] || coord > bounds[2*i+1]) - inside = 0; - } - } - if (inside) return 1; - } - - // Define the intersection plane - if (!defined) { - for (i = 0; i < 3; i++) { - if (ray[i] != 0.0) { - maxT[i] = (coordPlane[i]-center[i])/ray[i]; - } - else - maxT[i] = VTK_LARGE_FLOAT; - } - for (i = 0; i < 3; i++) { - if (maxT[whichPlane] > maxT[i]) - whichPlane = i; - } - } - - // Compute the intersection between hex and coord plane - float t[4]; - for (k = 0; k < 4; k++) { - if (dir[k][whichPlane] != 0.0) { - t[k] = (coordPlane[whichPlane]-origin[k][whichPlane])/dir[k][whichPlane]; - } - else { - t[k] = VTK_LARGE_FLOAT; - } - } - - vtkPoints* aPoints = vtkPoints::New(); - float p[3], q[3], t1; - for (k = 0; k < 4; k++) { - n = (k+1)%4; // next point - if (t[k] > 1.0) { - if (t[n] < 1.0) { - // find intersection point - t1 = GetParameterValue(endray[k][whichPlane], endray[n][whichPlane], coordPlane[whichPlane]); - if (t1 > 0.0 && t1 < 1.0) { - GetPointCoord(endray[k], endray[n], t1, p); - aPoints->InsertNextPoint(p[0], p[1], p[2]); - } - } - if (t[n] < 0.0) { - // find second intersection point - t1 = GetParameterValue(origin[k][whichPlane], origin[n][whichPlane], coordPlane[whichPlane]); - if (t1 > 0.0 && t1 < 1.0) { - GetPointCoord(origin[k], origin[n], t1, p); - aPoints->InsertNextPoint(p[0], p[1], p[2]); - } - } - } - else if (t[k] < 0.0) { - if (t[n] > 0.0) { - // find intersection point - t1 = GetParameterValue(origin[k][whichPlane], origin[n][whichPlane], coordPlane[whichPlane]); - if (t1 > 0.0 && t1 < 1.0) { - GetPointCoord(origin[k], origin[n], t1, p); - aPoints->InsertNextPoint(p[0], p[1], p[2]); - } - } - } - else { - // find intersection point - GetPointCoord(origin[k], endray[k], t[k], p); - aPoints->InsertNextPoint(p[0], p[1], p[2]); - - if (t[n] < 0.0) { - // find second intersection point - t1 = GetParameterValue(origin[k][whichPlane], origin[n][whichPlane], coordPlane[whichPlane]); - if (t1 > 0.0 && t1 < 1.0) { - GetPointCoord(origin[k], origin[n], t1, p); - aPoints->InsertNextPoint(p[0], p[1], p[2]); - } - } - else if (t[n] > 1.0) { - // find second intersection point - t1 = GetParameterValue(endray[k][whichPlane], endray[n][whichPlane], coordPlane[whichPlane]); - if (t1 > 0.0 && t1 < 1.0) { - GetPointCoord(endray[k], endray[n], t1, p); - aPoints->InsertNextPoint(p[0], p[1], p[2]); - } - } - } - } - n = aPoints->GetNumberOfPoints(); - if (n == 0) { - aPoints->Delete(); - return 0; - } - - if (n == 1) { - aPoints->GetPoint(0, p); - inside = 1; - for (i = 0; i < 3; i++) { - if (i != whichPlane) { - if (p[i] < bounds[2*i] || p[i] > bounds[2*i+1]) { - inside = 0; break; - } - } - } - aPoints->Delete(); - return inside; - } - - // Analize intersection - int nearPlane, boundPlane = -1; - float boundCoord, boundMin, boundMax; - char intersect = 0; - for (k = 0; k < n; k++) { - aPoints->GetPoint(k, p); - j = k+1; if (j == n) j = 0; - aPoints->GetPoint(j, q); - inside = 1; - nearPlane = 0; - // if the point is inside bbox - for (i = 0; i < 3; i++) { - if (i != whichPlane) { - if (p[i] < bounds[2*i]) { - side[i] = SIDE_LEFT; - maxT[i] = GetParameterValue(p[i], q[i], bounds[2*i]); - inside = 0; - } - else if (p[i] > bounds[2*i+1]) { - side[i] = SIDE_RIGHT; - maxT[i] = GetParameterValue(p[i], q[i], bounds[2*i+1]); - inside = 0; - } - else { - side[i] = SIDE_MIDDLE; - maxT[i] = -1.0; - } - } - else maxT[i] = -1.0; - if (maxT[i] > maxT[nearPlane]) nearPlane = i; - } - if (inside) break; - // if segment intersects bbox - if (maxT[nearPlane] >= 0.0 && maxT[nearPlane] <= 1.0) { - for (i = 0; i < 3; i++) { - if (i != whichPlane && i != nearPlane) { - coord = p[i] + maxT[nearPlane]*(q[i]-p[i]); - if (coord >= bounds[2*i] && coord <= bounds[2*i+1]) { - intersect = 1; break; - } - } - } - // intersect with boundPlane - if (boundPlane == -1) { - boundCoord = p[nearPlane] + maxT[nearPlane]*(q[nearPlane]-p[nearPlane]); - boundPlane = nearPlane; - for (i = 0; i < 3; i++) { - if (i != whichPlane && i != boundPlane) { - coord = p[i] + maxT[nearPlane]*(q[i]-p[i]); - boundMin = boundMax = coord; - } - } - } - else { - t1 = GetParameterValue(p[boundPlane], q[boundPlane], boundCoord); - if (t1 >= 0.0 && t1 <= 1.0) { - for (i = 0; i < 3; i++) { - if (i != whichPlane && i != boundPlane) { - coord = p[i] + t1*(q[i]-p[i]); - if (coord < boundMin) boundMin = coord; - if (coord > boundMax) boundMax = coord; - } - } - } - } - } - if (intersect) break; - } - aPoints->Delete(); - if (inside || intersect) { - return 1; - } - - inside = 1; - for (i = 0; i < 3; i++) { - if (i != whichPlane && i != boundPlane) { - if (boundMin > bounds[2*i+1] || boundMax < bounds[2*i]) - inside = 0; - } - } - - return inside; -} - -//---------------------------------------------------------------------------- -char VTKViewer_RectPicker::PointInside (float p[3], float p1[4][4], float p2[4][4], float tol) -{ - int i, j, k; - float t, coord[3]; - - // Fix one coordinate (x, for example) and - // compute intersection with coordinate plane - vtkPoints* aPoints = vtkPoints::New(); - int mode = 0; - for (k = 0; k < 4; k++) { - j = k+1; if (j == 4) j = 0; - switch (mode) { - case 0: - if (GetIntersectionPoint(p1[k], p1[j], 0, p[0], coord)) { - aPoints->InsertNextPoint(coord[0], coord[1], coord[2]); - mode = 0; - } - if (GetIntersectionPoint(p1[k], p2[k], 0, p[0], coord)) { - aPoints->InsertNextPoint(coord[0], coord[1], coord[2]); - mode = 1; - } - if (GetIntersectionPoint(p2[k], p2[j], 0, p[0], coord)) { - aPoints->InsertNextPoint(coord[0], coord[1], coord[2]); - mode = 2; - } - /* - if ((p1[k][0]-p[0])*(p2[k][0]-p[0]) <= 0) { - t = GetParameterValue(p1[k][0], p2[k][0], p[0]); - if (t >= 0.0 && t <= 1.0) { - GetPointCoord(p1[k], p2[k], t, coord); - aPoints->InsertNextPoint(coord[0], coord[1], coord[2]); - } - } - */ - break; - case 1: - if (GetIntersectionPoint(p1[k], p2[k], 0, p[0], coord)) { - aPoints->InsertNextPoint(coord[0], coord[1], coord[2]); - mode = 1; - } - if (GetIntersectionPoint(p2[k], p2[j], 0, p[0], coord)) { - aPoints->InsertNextPoint(coord[0], coord[1], coord[2]); - mode = 2; - } - if (GetIntersectionPoint(p1[k], p1[j], 0, p[0], coord)) { - aPoints->InsertNextPoint(coord[0], coord[1], coord[2]); - mode = 0; - } - /* - if ((p1[k][0]-p[0])*(p1[j][0]-p[0]) <= 0) { - t = GetParameterValue(p1[k][0], p1[j][0], p[0]); - if (t > 0.0 && t < 1.0) { - GetPointCoord(p1[k], p1[j], t, coord); - aPoints->InsertNextPoint(coord[0], coord[1], coord[2]); - } - } - */ - break; - case 2: - if (GetIntersectionPoint(p2[k], p2[j], 0, p[0], coord)) { - aPoints->InsertNextPoint(coord[0], coord[1], coord[2]); - mode = 2; - } - if (GetIntersectionPoint(p1[k], p2[k], 0, p[0], coord)) { - aPoints->InsertNextPoint(coord[0], coord[1], coord[2]); - mode = 1; - } - if (GetIntersectionPoint(p1[k], p1[j], 0, p[0], coord)) { - aPoints->InsertNextPoint(coord[0], coord[1], coord[2]); - mode = 0; - } - /* - if ((p2[k][0]-p[0])*(p2[j][0]-p[0]) <= 0) { - t = GetParameterValue(p2[k][0], p2[j][0], p[0]); - if (t > 0.0 && t < 1.0) { - GetPointCoord(p2[k], p2[j], t, coord); - aPoints->InsertNextPoint(coord[0], coord[1], coord[2]); - } - } - */ - break; - } - } - int n = aPoints->GetNumberOfPoints(); - //cout << "---> Points in X projection " << n << endl; - if (n == 0) { - aPoints->Delete(); - return 0; - } - - // Fix the second coord and define bounds - float zMin = VTK_LARGE_FLOAT, zMax = -VTK_LARGE_FLOAT, z, ncoord[3]; - char inside = 0; - for (k = 0; k < n; k++) { - aPoints->GetPoint(k, coord); - //cout << " P" << k << " (" << coord[0] << ", " << coord[1] << ", " << coord[2] << ")"; - j = k+1; if (j == n) j = 0; - if (j == k) { - if (p[1] == coord[1] && p[2] == coord[2]) { - inside = 1; - } - break; - } - aPoints->GetPoint(j, ncoord); - t = GetParameterValue(coord[1], ncoord[1], p[1]); - if (t >= 0.0 && t <= 1) { - z = coord[2] + t*(ncoord[2]-coord[2]); - if (z < zMin) zMin = z; - if (z > zMax) zMax = z; - } - } - //cout << endl << " Zmin = " << zMin << ", Zmax = " << zMax << endl; - if (!inside) { - if (p[2] <= (zMax+tol) && p[2] >= (zMin-tol)) - inside = 1; - } - - aPoints->Delete(); - return inside; -} - -//---------------------------------------------------------------------------- -float VTKViewer_RectPicker::IntersectWithHex(float p1[4][4], float p2[4][4], float tol, - vtkAssemblyPath *path, vtkProp3D *prop3D, - vtkAbstractMapper3D *mapper) -{ - int i, k; - float *center, p0[3], ray[3], rayFactor, t; - - // Get the data from the modeler - // - center = mapper->GetCenter(); - - if (!PointInside(center, p1, p2)) { - return 2.0; - } - - // Determine appropriate info - // - for (i = 0; i < 3; i++) { - p0[i] = ray[i] = 0; - for (k = 0; k < 4; k++) { - p0[i] += p1[k][i]; - ray[i] += p2[k][i]; - } - p0[i] = p0[i]/4; - ray[i] = ray[i]/4; - ray[i] = ray[i] - p0[i]; - } - if (( rayFactor = vtkMath::Dot(ray,ray)) == 0.0 ) { - vtkErrorMacro("Cannot process points"); - return 2.0; - } - - // Project the center point onto the ray and determine its parametric value - // - t = (ray[0]*(center[0]-p0[0]) + ray[1]*(center[1]-p0[1]) - + ray[2]*(center[2]-p0[2])) / rayFactor; - - if ( t >= 0.0 && t <= 1.0 && t < this->GlobalTMin ) { - this->MarkPicked(path, prop3D, mapper, t, center); - } - return t; -} diff --git a/src/VTKViewer/VTKViewer_RectPicker.h b/src/VTKViewer/VTKViewer_RectPicker.h deleted file mode 100644 index 44b7e0705..000000000 --- a/src/VTKViewer/VTKViewer_RectPicker.h +++ /dev/null @@ -1,84 +0,0 @@ -// SALOME VTKViewer : build VTK viewer into Salome desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : VTKViewer_RectPicker.h -// Author : Natalia KOPNOVA -// Module : SALOME - -#ifndef __VTKViewer_RectPicker_h -#define __VTKViewer_RectPicker_h - -#include - -class VTK_EXPORT VTKViewer_RectPicker : public vtkPicker -{ -public: - static VTKViewer_RectPicker *New(); - vtkTypeMacro(VTKViewer_RectPicker,vtkPicker); - - // Description: - // Perform pick operation with selection rectangle provided. Normally the - // first two values for the selection top-left and right-bottom points are - // x-y pixel coordinate, and the third value is =0. - // Return non-zero if something was successfully picked. - virtual int Pick(float selectionX1, float selectionY1, float selectionZ1, - float selectionX2, float selectionY2, float selectionZ2, - vtkRenderer *renderer); - - // Description: - // Perform pick operation with selection rectangle provided. Normally the first - // two values for the selection top-left and right-bottom points are x-y pixel - // coordinate, and the third value is =0. - // Return non-zero if something was successfully picked. - int Pick(float selectionPt1[3], float selectionPt2[3], vtkRenderer *ren) - {return this->Pick(selectionPt1[0], selectionPt1[1], selectionPt1[2], - selectionPt2[0], selectionPt2[1], selectionPt2[2], - ren);}; - - // Description: - // Bounding box intersection with hexahedron. The method returns a non-zero value - // if the bounding box is hit. Origin[4][4] starts the ray from corner points, - // dir[4][3] is the vector components of the ray in the x-y-z directions. - // (Notes: the intersection ray dir[4][3] is NOT normalized.) - static char HitBBox(float bounds[6], float origin[4][4], float dir[4][3]); - - // Description: - // Position of point relative to hexahedron. The method returns a non-zero value - // if the point is inside. p1[4][4] is the corner points of top face, - // p2[4][4] is the corner points of bottom face. - static char PointInside(float point[3], float p1[4][4], float p2[4][4], float tol=0); - -protected: - VTKViewer_RectPicker(); - ~VTKViewer_RectPicker() {}; - - virtual float IntersectWithHex(float p1[4][4], float p2[4][4], float tol, - vtkAssemblyPath *path, vtkProp3D *p, - vtkAbstractMapper3D *m); - -private: -}; - -#endif - - diff --git a/src/VTKViewer/VTKViewer_RenderWindow.cxx b/src/VTKViewer/VTKViewer_RenderWindow.cxx deleted file mode 100644 index 08dbc0eda..000000000 --- a/src/VTKViewer/VTKViewer_RenderWindow.cxx +++ /dev/null @@ -1,203 +0,0 @@ -// SALOME VTKViewer : build VTK viewer into Salome desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : VTKViewer_RenderWindow.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "VTKViewer_RenderWindow.h" -#include "utilities.h" -#include "QAD_Settings.h" -#include "QAD_Config.h" -#include "QAD_Desktop.h" -#include "QAD_Study.h" -#include "QAD_Tools.h" -#include "SALOME_Selection.h" - -#include - -#include -#include -#include - -#include -#include -#include -#include - -//#include -//#include -//#include - -#if QT_VERSION > 300 -#include -#endif -using namespace std; - -VTKViewer_RenderWindow::VTKViewer_RenderWindow(QWidget *parent, const char *name) : - QWidget(parent, name, - Qt::WStyle_NoBorder | Qt::WDestructiveClose | - Qt::WResizeNoErase | Qt::WRepaintNoErase) -{ - myRW = vtkRenderWindow::New(); - MESSAGE(QString("RenderWindow is ") + QString(myRW->GetClassName())); - myRW->SetDisplayId((void*)x11Display()); - myRW->SetWindowId((void*)winId()); - myRW->DoubleBufferOn(); - setMouseTracking(true); -} - -VTKViewer_RenderWindow::~VTKViewer_RenderWindow() { - myRW->Delete(); //BUG SAL2954, Commented by SRN, to avoid problems when using rlogin - // Uncommented because of bug SAL3913 -} - -void VTKViewer_RenderWindow::paintEvent(QPaintEvent* theEvent) { - myRW->Render(); -} - -void VTKViewer_RenderWindow::resizeEvent(QResizeEvent* theEvent) { - int aWidth = myRW->GetSize()[0], aHeight = myRW->GetSize()[1]; - if(vtkRenderWindowInteractor* aRWI = myRW->GetInteractor()) - aRWI->UpdateSize(width(), height()); - if(aWidth != width() || aHeight != height()){ - vtkRendererCollection * aRenderers = myRW->GetRenderers(); - aRenderers->InitTraversal(); - double aCoeff = 1.0; - if(vtkRenderer *aRenderer = aRenderers->GetNextItem()){ - vtkCamera *aCamera = aRenderer->GetActiveCamera(); - double aScale = aCamera->GetParallelScale(); - if((aWidth - width())*(aHeight - height()) > 0) - aCoeff = sqrt(double(aWidth)/double(width())*double(height())/double(aHeight)); - else - aCoeff = double(aWidth)/double(width()); - aCamera->SetParallelScale(aScale*aCoeff); - } - } -} - - -void VTKViewer_RenderWindow::mouseMoveEvent( QMouseEvent *event ) { - emit MouseMove(event) ; -} - -void VTKViewer_RenderWindow::mousePressEvent( QMouseEvent *event ) { - emit ButtonPressed(event) ; - switch(event->button()) { - case LeftButton: - emit LeftButtonPressed(event) ; - break ; - case MidButton: - emit MiddleButtonPressed(event) ; - break ; - case RightButton: - if ( event->state() == Qt::ControlButton ) { - emit RightButtonPressed(event) ; - } else { - QPopupMenu* popup = createPopup(); - if ( popup ) { - QAD_Tools::checkPopup( popup ); - if ( popup->count()>0 ) { - popup->exec( QCursor::pos() ); - } - destroyPopup(); - } - } - break; - default: - break ; - } -} - - -void VTKViewer_RenderWindow::mouseReleaseEvent( QMouseEvent *event ) { - emit ButtonReleased(event) ; - switch(event->button()) { - case LeftButton: - emit LeftButtonReleased(event) ; - break ; - case MidButton: - emit MiddleButtonReleased(event) ; - break ; - case RightButton: - emit RightButtonReleased(event) ; - break; - default: - break ; - } -} - -void VTKViewer_RenderWindow::keyPressEvent (QKeyEvent * event) { - emit KeyPressed(event) ; -} - -/*! - Creates the popup -*/ -void VTKViewer_RenderWindow::onCreatePopup() -{ - if ( myPopup ) { - QAD_Desktop* Desktop = (QAD_Desktop*) QAD_Application::getDesktop(); - QAD_Study* myActiveStudy = Desktop->getActiveStudy(); - SALOME_Selection* Sel = SALOME_Selection::Selection( myActiveStudy->getSelection() ); - - QString theContext; - QString theParent("Viewer"); - QString theObject; - - Desktop->definePopup( theContext, theParent, theObject ); - Desktop->createPopup( myPopup, theContext, theParent, theObject); - Desktop->customPopup( myPopup, theContext, theParent, theObject ); - -// if (Sel->IObjectCount() == 0 && myPopup->count()<1) { - if ( myPopup->count() > 0 ) - myIDs.append ( myPopup->insertSeparator() ); - int id; - myIDs.append ( id = myPopup->insertItem (tr ("MEN_VP3D_CHANGEBGR")) ); - QAD_ASSERT ( myPopup->connectItem ( id, this, SLOT(onChangeBackgroundColor())) ); -// } - } -} - - -void VTKViewer_RenderWindow::onChangeBackgroundColor() -{ - float red, green, blue; - float backint[3]; - - vtkRendererCollection * theRenderers = myRW->GetRenderers(); - theRenderers->InitTraversal(); - vtkRenderer * theRenderer = theRenderers->GetNextItem(); - theRenderer->GetBackground(backint); - - QColor selColor = QColorDialog::getColor ( QColor(int(backint[0]*255), int(backint[1]*255), int(backint[2]*255)), NULL ); - if ( selColor.isValid() ) { - theRenderer->SetBackground( selColor.red()/255., selColor.green()/255., selColor.blue()/255. ); - /* VSR : PAL5420 --------------------------------------------------- - QAD_CONFIG->addSetting( "VTKViewer:BackgroundColorRed", selColor.red() ); - QAD_CONFIG->addSetting( "VTKViewer:BackgroundColorGreen", selColor.green() ); - QAD_CONFIG->addSetting( "VTKViewer:BackgroundColorBlue", selColor.blue() ); - VSR : PAL5420 --------------------------------------------------- */ - } -} diff --git a/src/VTKViewer/VTKViewer_RenderWindow.h b/src/VTKViewer/VTKViewer_RenderWindow.h deleted file mode 100644 index 34fd61ff0..000000000 --- a/src/VTKViewer/VTKViewer_RenderWindow.h +++ /dev/null @@ -1,85 +0,0 @@ -// SALOME VTKViewer : build VTK viewer into Salome desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : VTKViewer_RenderWindow.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef VTKViewer_RenderWindow_h -#define VTKViewer_RenderWindow_h - -#include -#include -//#include -#include - -#include "QAD_Popup.h" - -class VTK_EXPORT VTKViewer_RenderWindow : -public QWidget, /*virtual public vtkRenderWindow, */ - public QAD_PopupClientServer -{ - Q_OBJECT - public: - /* popup management */ - void onCreatePopup(); - - const char *GetClassName() {return "VTKViewer_RenderWindow";}; - - protected slots: - void onChangeBackgroundColor(); - - public: - VTKViewer_RenderWindow(QWidget *parent, const char *name); - ~VTKViewer_RenderWindow() ; - - virtual void mouseMoveEvent( QMouseEvent * ) ; - virtual void mousePressEvent( QMouseEvent * ) ; - virtual void mouseReleaseEvent( QMouseEvent * ) ; - virtual void keyPressEvent( QKeyEvent * ) ; - - vtkRenderWindow* getRenderWindow() { return myRW; } - - protected: - virtual void paintEvent (QPaintEvent* theEvent); - virtual void resizeEvent (QResizeEvent* theEvent); - - - signals: - void MouseMove(const QMouseEvent *event) ; - void LeftButtonPressed(const QMouseEvent *event) ; - void LeftButtonReleased(const QMouseEvent *event) ; - void MiddleButtonPressed(const QMouseEvent *event) ; - void MiddleButtonReleased(const QMouseEvent *event) ; - void RightButtonPressed(const QMouseEvent *event) ; - void RightButtonReleased(const QMouseEvent *event) ; - void ButtonPressed(const QMouseEvent *event) ; - void ButtonReleased(const QMouseEvent *event) ; - void KeyPressed(QKeyEvent *event) ; - - protected: - vtkRenderWindow* myRW; -}; - -#endif diff --git a/src/VTKViewer/VTKViewer_RenderWindowInteractor.cxx b/src/VTKViewer/VTKViewer_RenderWindowInteractor.cxx deleted file mode 100644 index d8d86e86c..000000000 --- a/src/VTKViewer/VTKViewer_RenderWindowInteractor.cxx +++ /dev/null @@ -1,962 +0,0 @@ -// SALOME VTKViewer : build VTK viewer into Salome desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : VTKViewer_RenderWindowInteractor.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "VTKViewer_RenderWindowInteractor.h" - -#include "VTKViewer_InteractorStyleSALOME.h" -#include "VTKViewer_RenderWindow.h" -#include "VTKViewer_ViewFrame.h" - -#include "VTKViewer_Algorithm.h" -#include "VTKViewer_Functor.h" - -#include "QAD_Application.h" -#include "QAD_Desktop.h" - -#include "VTKViewer_Actor.h" - -#include -#include -#include -#include - -// VTK Includes -#include -#include -#include -#include -#include - -// QT Includes -#include - -#include - -#include "utilities.h" - -using namespace std; - -#ifdef _DEBUG_ -static int MYDEBUG = 0; -#else -static int MYDEBUG = 0; -#endif - - -VTKViewer_RenderWindowInteractor* VTKViewer_RenderWindowInteractor::New() { - vtkObject *ret = vtkObjectFactory::CreateInstance("VTKViewer_RenderWindowInteractor") ; - if( ret ) { - return dynamic_cast(ret) ; - } - return new VTKViewer_RenderWindowInteractor; -} - -VTKViewer_RenderWindowInteractor::VTKViewer_RenderWindowInteractor() { - this->Enabled = 0 ; - this->mTimer = new QTimer( this ) ; - myDisplayMode = 0; - myGUIWindow = 0; - - myBasicPicker = vtkPicker::New(); - myCellPicker = vtkCellPicker::New(); - myPointPicker = vtkPointPicker::New(); - - myCellActor = VTKViewer_Actor::New(); - myCellActor->PickableOff(); - myCellActor->GetProperty()->SetColor(1,1,0); - myCellActor->GetProperty()->SetLineWidth(5); - myCellActor->GetProperty()->SetRepresentationToSurface(); - - myEdgeActor = VTKViewer_Actor::New(); - myEdgeActor->PickableOff(); - myEdgeActor->GetProperty()->SetColor(1,0,0); - myEdgeActor->GetProperty()->SetLineWidth(5); - myEdgeActor->GetProperty()->SetRepresentationToWireframe(); - - myPointActor = VTKViewer_Actor::New(); - myPointActor->PickableOff(); - myPointActor->GetProperty()->SetColor(1,1,0); - myPointActor->GetProperty()->SetPointSize(5); - myPointActor->GetProperty()->SetRepresentationToPoints(); - - connect(mTimer, SIGNAL(timeout()), this, SLOT(TimerFunc())) ; -} - - -VTKViewer_RenderWindowInteractor::~VTKViewer_RenderWindowInteractor() { - if(MYDEBUG) INFOS("VTKViewer_RenderWindowInteractor::~VTKViewer_RenderWindowInteractor()"); - - delete mTimer ; - - myViewFrame->RemoveActor(myCellActor); - myViewFrame->RemoveActor(myEdgeActor); - myViewFrame->RemoveActor(myPointActor); - - myCellActor->Delete(); - myEdgeActor->Delete(); - myPointActor->Delete(); - - myBasicPicker->Delete(); - myCellPicker->Delete(); - myPointPicker->Delete(); -} - -void VTKViewer_RenderWindowInteractor::PrintSelf(ostream& os, vtkIndent indent) { - vtkRenderWindowInteractor::PrintSelf(os, indent) ; - // - // :NOTE: Fri Apr 21 21:51:05 2000 Pagey - // QGL specific stuff goes here. One should add output - // lines here if any protected members are added to - // the class. - // -} - -// -// We never allow the VTKViewer_RenderWindowInteractor to control -// the event loop. The application always has the control. -// -void VTKViewer_RenderWindowInteractor::Initialize() { - // - // We cannot do much unless there is a render window - // associated with this interactor. - // - if( ! RenderWindow ) { - vtkErrorMacro(<< "VTKViewer_RenderWindowInteractor::Initialize(): No render window attached!") ; - return ; - } - - // - // We cannot hand a render window which is not a VTKViewer_RenderWindow. - // One way to force this is to use dynamic_cast and hope that - // it works. If the dynamic_cast does not work, we flag an error - // and get the hell out. - // - vtkRenderWindow *my_render_win = dynamic_cast(RenderWindow) ; - if( !my_render_win ) { - vtkErrorMacro(<< "VTKViewer_RenderWindowInteractor::Initialize() can only handle VTKViewer_RenderWindow.") ; - return ; - } - - // - // If the render window has zero size, then set it to a default - // value of 300x300. - // - int* aSize = my_render_win->GetSize(); - this->Size[0] = ((aSize[0] > 0) ? aSize[0] : 300); - this->Size[1] = ((aSize[1] > 0) ? aSize[1] : 300); - - this->SetPicker(myBasicPicker); - - SetSelectionTolerance(); - - // - // Enable the interactor. - // - this->Enable() ; - - // - // Start the rendering of the window. - // - my_render_win->Start() ; - - // - // The interactor has been initialized. - // - this->Initialized = 1 ; - - return ; -} - - -//---------------------------------------------------------------------------- -void VTKViewer_RenderWindowInteractor::setGUIWindow(QWidget* theWindow){ - myGUIWindow = theWindow; -} - -//---------------------------------------------------------------------------- -void VTKViewer_RenderWindowInteractor::setViewFrame(VTKViewer_ViewFrame* theViewFrame){ - myViewFrame = theViewFrame; - - myViewFrame->InsertActor(myCellActor); - myViewFrame->InsertActor(myEdgeActor); - myViewFrame->InsertActor(myPointActor); -} - -//---------------------------------------------------------------------------- -void VTKViewer_RenderWindowInteractor::MoveInternalActors() -{ - myViewFrame->MoveActor(myCellActor); - myViewFrame->MoveActor(myEdgeActor); - myViewFrame->MoveActor(myPointActor); -} - -//---------------------------------------------------------------------------- -void VTKViewer_RenderWindowInteractor::SetInteractorStyle(vtkInteractorObserver *theInteractor){ - myInteractorStyle = dynamic_cast(theInteractor); - vtkRenderWindowInteractor::SetInteractorStyle(theInteractor); -} - - -void VTKViewer_RenderWindowInteractor::SetSelectionMode(Selection_Mode theMode) -{ - myCellActor->SetVisibility(false); - myEdgeActor->SetVisibility(false); - myPointActor->SetVisibility(false); - - switch(theMode){ - case ActorSelection: - this->SetPicker(myBasicPicker); - break; - case NodeSelection: - this->SetPicker(myPointPicker); - break; - case CellSelection: - case EdgeSelection: - case FaceSelection: - case VolumeSelection: - case EdgeOfCellSelection: - this->SetPicker(myCellPicker); - break; - } - - myInteractorStyle->OnSelectionModeChanged(); -} - -void VTKViewer_RenderWindowInteractor::SetSelectionProp(const double& theRed, const double& theGreen, - const double& theBlue, const int& theWidth) -{ - myCellActor->GetProperty()->SetColor(theRed, theGreen, theBlue); - myCellActor->GetProperty()->SetLineWidth(theWidth); - - myPointActor->GetProperty()->SetColor(theRed, theGreen, theBlue); - myPointActor->GetProperty()->SetPointSize(theWidth); -} - -void VTKViewer_RenderWindowInteractor::SetSelectionTolerance(const double& theTolNodes, const double& theTolItems) -{ - myTolNodes = theTolNodes; - myTolItems = theTolItems; - - myBasicPicker->SetTolerance(myTolItems); - myCellPicker->SetTolerance(myTolItems); - myPointPicker->SetTolerance(myTolNodes); - -} - -void VTKViewer_RenderWindowInteractor::Enable() { - // - // Do not need to do anything if already enabled. - // - if( this->Enabled ) { - return ; - } - - // - // Attach slots to every useful signal of the render window. - // - this->ConnectSlots() ; - - this->Enabled = 1 ; - this->Modified() ; -} - -void VTKViewer_RenderWindowInteractor::Disable() { - if( ! this->Enabled ) { - return ; - } - - this->DisconnectSlots() ; - this->Enabled = 0 ; - this->Modified() ; -} - -// ================================== -void VTKViewer_RenderWindowInteractor::Start() { - // - // We do not allow this interactor to control the - // event loop. Only the QtApplication objects are - // allowed to do that. - // - vtkErrorMacro(<<"VTKViewer_RenderWindowInteractor::Start() not allowed to start event loop.") ; - return ; -} - -void VTKViewer_RenderWindowInteractor::UpdateSize(int w, int h) { - // if the size changed send this on to the RenderWindow - if ((w != this->Size[0])||(h != this->Size[1])) { - this->Size[0] = w; - this->Size[1] = h; - this->RenderWindow->SetSize(w,h); - } -} - -int VTKViewer_RenderWindowInteractor::CreateTimer(int vtkNotUsed(timertype)) { - // - // Start a one-shot timer for 10ms. - // - mTimer->start(10, TRUE) ; - return 1 ; -} - -int VTKViewer_RenderWindowInteractor::DestroyTimer(void) { - // - // :TRICKY: Tue May 2 00:17:32 2000 Pagey - // - // QTimer will automatically expire after 10ms. So - // we do not need to do anything here. In fact, we - // should not even Stop() the QTimer here because doing - // this will skip some of the processing that the TimerFunc() - // does and will result in undesirable effects. For - // example, this will result in vtkLODActor to leave - // the models in low-res mode after the mouse stops - // moving. - // - return 1 ; -} - -void VTKViewer_RenderWindowInteractor::TimerFunc() { - if( ! this->Enabled ) { - return ; - } - - ((vtkInteractorStyle*)this->InteractorStyle)->OnTimer() ; - emit RenderWindowModified() ; -} - -void VTKViewer_RenderWindowInteractor::ConnectSlots() { - ProcessSlotConnections(true) ; -} - -void VTKViewer_RenderWindowInteractor::DisconnectSlots() { - ProcessSlotConnections(false) ; -} - -void VTKViewer_RenderWindowInteractor::ProcessSlotConnections(bool conn) { - // - // We cannot do much unless there is a render window - // associated with this interactor. - // - if( ! myGUIWindow ) { - vtkErrorMacro(<< "VTKViewer_RenderWindowInteractor::Initialize(): No render window attached!") ; - return ; - } - - - bool (*slot_func) ( const QObject * sender, - const char * signal, - const QObject * receiver, - const char * member ) ; - if( conn ) { - slot_func = &QObject::connect ; - } else { - slot_func = &QObject::disconnect ; - } - // - // We cannot hand a render window which is not a VTKViewer_RenderWindow. - // One way to force this is to use dynamic_cast and hope that - // it works. If the dynamic_cast does not work, we flag an error - // and get the hell out. - // - if( ! myGUIWindow ) { - vtkErrorMacro(<< "VTKViewer_RenderWindowInteractor::Initialize() can only handle VTKViewer_RenderWindow.") ; - return ; - } - - slot_func ( myGUIWindow, SIGNAL(ButtonPressed(const QMouseEvent *)), - this, SLOT(ButtonPressed(const QMouseEvent *)) ) ; - slot_func( myGUIWindow, SIGNAL(ButtonReleased(const QMouseEvent *)), - this, SLOT(ButtonReleased(const QMouseEvent *)) ) ; - - - slot_func( myGUIWindow, SIGNAL(LeftButtonPressed(const QMouseEvent *)), - this, SLOT(LeftButtonPressed(const QMouseEvent *)) ) ; - slot_func( myGUIWindow, SIGNAL(LeftButtonReleased(const QMouseEvent *)), - this, SLOT(LeftButtonReleased(const QMouseEvent *)) ) ; - - slot_func( myGUIWindow, SIGNAL(MiddleButtonPressed(const QMouseEvent *)), - this, SLOT(MiddleButtonPressed(const QMouseEvent *)) ) ; - slot_func( myGUIWindow, SIGNAL(MiddleButtonReleased(const QMouseEvent *)), - this, SLOT(MiddleButtonReleased(const QMouseEvent *)) ) ; - - slot_func( myGUIWindow, SIGNAL(RightButtonPressed(const QMouseEvent *)), - this, SLOT(RightButtonPressed(const QMouseEvent *)) ) ; - slot_func( myGUIWindow, SIGNAL(RightButtonReleased(const QMouseEvent *)), - this, SLOT(RightButtonReleased(const QMouseEvent *)) ) ; - - slot_func( myGUIWindow, SIGNAL(MouseMove(const QMouseEvent *)), - this, SLOT(MouseMove(const QMouseEvent *)) ) ; - - slot_func( myGUIWindow, SIGNAL(KeyPressed(QKeyEvent *)), - this, SLOT(KeyPressed(QKeyEvent *)) ) ; - - slot_func( this, SIGNAL(RenderWindowModified()), - myGUIWindow, SLOT(update()) ) ; - -} - -void VTKViewer_RenderWindowInteractor::MouseMove(const QMouseEvent *event) { - if( ! this->Enabled ) { - return ; - } - myInteractorStyle->OnMouseMove(0, 0, event->x(), event->y()/*this->Size[1] - event->y() - 1*/) ; - if (myInteractorStyle->needsRedrawing() ) - emit RenderWindowModified() ; -} - -void VTKViewer_RenderWindowInteractor::LeftButtonPressed(const QMouseEvent *event) { - if( ! this->Enabled ) { - return ; - } - myInteractorStyle->OnLeftButtonDown((event->state() & ControlButton), - (event->state() & ShiftButton), - event->x(), event->y()); -} - -void VTKViewer_RenderWindowInteractor::LeftButtonReleased(const QMouseEvent *event) { - if( ! this->Enabled ) { - return ; - } - myInteractorStyle->OnLeftButtonUp( (event->state() & ControlButton), - (event->state() & ShiftButton), - event->x(), event->y() ) ; -} - -void VTKViewer_RenderWindowInteractor::MiddleButtonPressed(const QMouseEvent *event) { - if( ! this->Enabled ) { - return ; - } - myInteractorStyle->OnMiddleButtonDown((event->state() & ControlButton), - (event->state() & ShiftButton), - event->x(), event->y() ) ; -} - -void VTKViewer_RenderWindowInteractor::MiddleButtonReleased(const QMouseEvent *event) { - if( ! this->Enabled ) { - return ; - } - myInteractorStyle->OnMiddleButtonUp( (event->state() & ControlButton), - (event->state() & ShiftButton), - event->x(), event->y() ) ; -} - -void VTKViewer_RenderWindowInteractor::RightButtonPressed(const QMouseEvent *event) { - if( ! this->Enabled ) { - return ; - } - myInteractorStyle->OnRightButtonDown( (event->state() & ControlButton), - (event->state() & ShiftButton), - event->x(), event->y() ) ; -} - -void VTKViewer_RenderWindowInteractor::RightButtonReleased(const QMouseEvent *event) { - if( ! this->Enabled ) { - return ; - } - myInteractorStyle->OnRightButtonUp( (event->state() & ControlButton), - (event->state() & ShiftButton), - event->x(), event->y() ) ; -} - -void VTKViewer_RenderWindowInteractor::ButtonPressed(const QMouseEvent *event) { - return ; -} - -void VTKViewer_RenderWindowInteractor::ButtonReleased(const QMouseEvent *event) { - return ; -} - - -int VTKViewer_RenderWindowInteractor::GetDisplayMode() { - return myDisplayMode; -} - -void VTKViewer_RenderWindowInteractor::SetDisplayMode(int theMode) { - if(theMode == 0) - ChangeRepresentationToWireframe(); - else - ChangeRepresentationToSurface(); - myDisplayMode = theMode; -} - - -void VTKViewer_RenderWindowInteractor::SetDisplayMode(const Handle(SALOME_InteractiveObject)& theIObject, int theMode){ - using namespace SALOME::VTK; - ForEachIf(GetRenderer()->GetActors(), - TIsSameIObject(theIObject), - TSetFunction - (&SALOME_Actor::setDisplayMode,theMode)); -} - - -void VTKViewer_RenderWindowInteractor::ChangeRepresentationToWireframe() -{ - ChangeRepresentationToWireframe(GetRenderer()->GetActors()); -} - -void VTKViewer_RenderWindowInteractor::ChangeRepresentationToSurface() -{ - ChangeRepresentationToSurface(GetRenderer()->GetActors()); -} - - -void VTKViewer_RenderWindowInteractor::ChangeRepresentationToWireframe(vtkActorCollection* theCollection) -{ - using namespace SALOME::VTK; - ForEach(theCollection, - TSetFunction - (&SALOME_Actor::setDisplayMode,0)); - emit RenderWindowModified(); -} - -void VTKViewer_RenderWindowInteractor::ChangeRepresentationToSurface(vtkActorCollection* theCollection) -{ - using namespace SALOME::VTK; - ForEach(theCollection, - TSetFunction - (&SALOME_Actor::setDisplayMode,1)); - emit RenderWindowModified(); -} - - -vtkRenderer* VTKViewer_RenderWindowInteractor::GetRenderer() -{ - vtkRendererCollection * theRenderers = this->RenderWindow->GetRenderers(); - theRenderers->InitTraversal(); - return theRenderers->GetNextItem(); -} - - -struct TErase{ - SALOME::VTK::TSetFunction mySetFunction; - TErase(): - mySetFunction(&vtkActor::SetVisibility,false) - {} - void operator()(SALOME_Actor* theActor){ - theActor->SetVisibility(false); - // Erase dependent actors - vtkActorCollection* aCollection = vtkActorCollection::New(); - theActor->GetChildActors(aCollection); - SALOME::VTK::ForEach(aCollection,mySetFunction); - aCollection->Delete(); - } -}; - -void VTKViewer_RenderWindowInteractor::EraseAll() -{ - using namespace SALOME::VTK; - ForEach(GetRenderer()->GetActors(), - TErase()); - - emit RenderWindowModified() ; -} - -void VTKViewer_RenderWindowInteractor::DisplayAll() -{ - vtkActorCollection* aCollection = GetRenderer()->GetActors(); - using namespace SALOME::VTK; - ForEach(aCollection,TSetVisibility(true)); - - emit RenderWindowModified() ; -} - - -void VTKViewer_RenderWindowInteractor::Erase(SALOME_Actor* theActor, bool update) -{ - TErase()(theActor); - - if(update) - emit RenderWindowModified(); -} - - -void VTKViewer_RenderWindowInteractor::Erase(const Handle(SALOME_InteractiveObject)& theIObject, bool update) -{ - using namespace SALOME::VTK; - ForEachIf(GetRenderer()->GetActors(), - TIsSameIObject(theIObject), - TErase()); - - if(update) - emit RenderWindowModified(); -} - - -struct TRemoveAction{ - vtkRenderer* myRen; - TRemoveAction(vtkRenderer* theRen): myRen(theRen){} - void operator()(SALOME_Actor* theActor){ - myRen->RemoveActor(theActor); - } -}; - -void VTKViewer_RenderWindowInteractor::Remove(const Handle(SALOME_InteractiveObject)& theIObject, bool update) -{ - vtkRenderer* aRen = GetRenderer(); - - using namespace SALOME::VTK; - ForEachIf(aRen->GetActors(), - TIsSameIObject(theIObject), - TRemoveAction(aRen)); - - -} - -void VTKViewer_RenderWindowInteractor::Remove( SALOME_Actor* SActor, bool updateViewer ) -{ - if ( SActor != 0 ) - { - GetRenderer()->RemoveProp( SActor ); - if ( updateViewer ) - emit RenderWindowModified(); - } -} - -void VTKViewer_RenderWindowInteractor::RemoveAll( const bool updateViewer ) -{ - vtkRenderer* aRenderer = GetRenderer(); - vtkActorCollection* anActors = aRenderer->GetActors(); - if ( anActors ) - { - anActors->InitTraversal(); - while ( vtkActor *anAct = anActors->GetNextActor() ) - { - if ( anAct->IsA( "SALOME_Actor" ) ) - { - SALOME_Actor* aSAct = (SALOME_Actor*)anAct; - if ( aSAct->hasIO() && aSAct->getIO()->hasEntry() ) - aRenderer->RemoveActor( anAct ); - } - } - - if ( updateViewer ) - emit RenderWindowModified(); - } -} - - -float VTKViewer_RenderWindowInteractor::GetTransparency(const Handle(SALOME_InteractiveObject)& theIObject) -{ - using namespace SALOME::VTK; - SALOME_Actor* anActor = - Find(GetRenderer()->GetActors(), - TIsSameIObject(theIObject)); - if(anActor) - return 1.0 - anActor->GetOpacity(); - return -1.0; -} - - -void VTKViewer_RenderWindowInteractor::SetTransparency(const Handle(SALOME_InteractiveObject)& theIObject, float theTrans) -{ - float anOpacity = 1.0 - theTrans; - using namespace SALOME::VTK; - ForEachIf(GetRenderer()->GetActors(), - TIsSameIObject(theIObject), - TSetFunction - (&SALOME_Actor::SetOpacity,anOpacity)); -} - - -void VTKViewer_RenderWindowInteractor::Display(SALOME_Actor* theActor, bool update) -{ - GetRenderer()->AddActor(theActor); - theActor->SetVisibility(true); - - if(update) - emit RenderWindowModified(); -} - - -void VTKViewer_RenderWindowInteractor::Display(const Handle(SALOME_InteractiveObject)& theIObject, bool update) -{ - using namespace SALOME::VTK; - ForEachIf(GetRenderer()->GetActors(), - TIsSameIObject(theIObject), - TSetVisibility(true)); - - if(update) - emit RenderWindowModified() ; -} - - -void VTKViewer_RenderWindowInteractor::KeyPressed(QKeyEvent *event){} - - -struct THighlightAction{ - bool myIsHighlight; - VTKViewer_InteractorStyleSALOME* myInteractorStyle; - THighlightAction(VTKViewer_InteractorStyleSALOME* theInteractorStyle, - bool theIsHighlight): - myInteractorStyle(theInteractorStyle), - myIsHighlight(theIsHighlight) - {} - void operator()(SALOME_Actor* theActor){ - if(theActor->GetMapper()){ - if(theActor->hasHighlight()) - theActor->highlight(myIsHighlight); - else{ - if(theActor->GetVisibility() && myIsHighlight) - myInteractorStyle->HighlightProp(theActor); - else if(!myIsHighlight) - myInteractorStyle->HighlightProp(NULL); - } - } - } -}; - -bool VTKViewer_RenderWindowInteractor::highlight( const Handle(SALOME_InteractiveObject)& theIObject, - bool hilight, - bool update) -{ - using namespace SALOME::VTK; - ForEachIf(GetRenderer()->GetActors(), - TIsSameIObject(theIObject), - THighlightAction(myInteractorStyle,hilight)); - - if(update) - emit RenderWindowModified(); - - return false; -} - - -struct TUpdateAction{ - void operator()(vtkActor* theActor){ - theActor->ApplyProperties(); - } -}; - -void VTKViewer_RenderWindowInteractor::Update() { - vtkRenderer* aRen = GetRenderer(); - - using namespace SALOME::VTK; - ForEach(aRen->GetActors(),TUpdateAction()); - - aRen->ResetCamera(); - - emit RenderWindowModified(); -} - - -void VTKViewer_RenderWindowInteractor::unHighlightSubSelection(){ - myPointActor->SetVisibility(false); - myEdgeActor->SetVisibility(false); - myCellActor->SetVisibility(false); -} - - -struct TUnHighlightAllAction{ - void operator()(SALOME_Actor* theActor){ - if(theActor->hasIO()){ - if(theActor->hasHighlight()) - theActor->highlight(false); - } - } -}; - -bool VTKViewer_RenderWindowInteractor::unHighlightAll(){ - unHighlightSubSelection(); - - using namespace SALOME::VTK; - ForEach(GetRenderer()->GetActors(), - TUnHighlightAllAction()); - - emit RenderWindowModified() ; - return false; -} - -//----------------- -// Color methods -//----------------- - -void VTKViewer_RenderWindowInteractor::SetColor(const Handle(SALOME_InteractiveObject)& theIObject,QColor theColor) -{ - float aColor[3] = {theColor.red()/255., theColor.green()/255., theColor.blue()/255.}; - using namespace SALOME::VTK; - ForEachIf(GetRenderer()->GetActors(), - TIsSameIObject(theIObject), - TSetFunction - (&SALOME_Actor::SetColor,aColor)); -} - - -QColor VTKViewer_RenderWindowInteractor::GetColor(const Handle(SALOME_InteractiveObject)& theIObject) -{ - using namespace SALOME::VTK; - SALOME_Actor* anActor = - Find(GetRenderer()->GetActors(), - TIsSameIObject(theIObject)); - if(anActor){ - float r,g,b; - anActor->GetColor(r,g,b); - return QColor(int(r*255),int(g*255),int(b*255)); - } - return QColor(0,0,0); -} - - -bool VTKViewer_RenderWindowInteractor::isInViewer(const Handle(SALOME_InteractiveObject)& theIObject) -{ - using namespace SALOME::VTK; - SALOME_Actor* anActor = - Find(GetRenderer()->GetActors(), - TIsSameIObject(theIObject)); - return anActor != NULL; -} - - -bool VTKViewer_RenderWindowInteractor::isVisible(const Handle(SALOME_InteractiveObject)& theIObject) -{ - using namespace SALOME::VTK; - SALOME_Actor* anActor = - Find(GetRenderer()->GetActors(), - TIsSameIObject(theIObject)); - return anActor != NULL && anActor->GetVisibility(); -} - - -void VTKViewer_RenderWindowInteractor::rename(const Handle(SALOME_InteractiveObject)& theIObject, QString theName) -{ - using namespace SALOME::VTK; - ForEachIf(GetRenderer()->GetActors(), - TIsSameIObject(theIObject), - TSetFunction - (&SALOME_Actor::setName,theName.latin1())); -} - - -//---------------------------------------------------------------------------- -bool VTKViewer_RenderWindowInteractor::highlight(const TColStd_IndexedMapOfInteger& theMapIndex, - SALOME_Actor* theMapActor, VTKViewer_Actor* theActor, - TUpdateActor theFun, bool hilight, bool update) -{ - if(theMapIndex.Extent() == 0) return false; - - if (hilight) { - setActorData(theMapIndex,theMapActor,theActor,theFun); - theActor->SetVisibility(true); - } - else { - theActor->SetVisibility(false); - } - - if(update){ - this->RenderWindow->Render(); - emit RenderWindowModified() ; - } - - return false; -} - -void VTKViewer_RenderWindowInteractor::setActorData(const TColStd_IndexedMapOfInteger& theMapIndex, - SALOME_Actor* theMapActor, - VTKViewer_Actor *theActor, - TUpdateActor theFun) -{ - (*theFun)(theMapIndex,theMapActor,theActor); -} - - -//---------------------------------------------------------------------------- -static void CellsUpdateActor(const TColStd_IndexedMapOfInteger& theMapIndex, - SALOME_Actor* theMapActor, - VTKViewer_Actor* theActor) -{ - theActor->MapCells(theMapActor,theMapIndex); -} - -bool VTKViewer_RenderWindowInteractor::highlightCell(const TColStd_IndexedMapOfInteger& theMapIndex, - SALOME_Actor* theMapActor, - bool hilight, - bool update) -{ - return highlight(theMapIndex,theMapActor,myCellActor,&CellsUpdateActor,hilight,update); -} - -void VTKViewer_RenderWindowInteractor::setCellData(const int& theIndex, - SALOME_Actor* theMapActor, - VTKViewer_Actor* theActor) -{ - TColStd_IndexedMapOfInteger MapIndex; - MapIndex.Add(theIndex); - theActor->MapCells(theMapActor,MapIndex); -} - - -//---------------------------------------------------------------------------- -static void PointsUpdateActor(const TColStd_IndexedMapOfInteger& theMapIndex, - SALOME_Actor* theMapActor, - VTKViewer_Actor* theActor) -{ - theActor->MapPoints(theMapActor,theMapIndex); -} - -bool VTKViewer_RenderWindowInteractor::highlightPoint(const TColStd_IndexedMapOfInteger& theMapIndex, - SALOME_Actor* theMapActor, - bool hilight, - bool update) -{ - return highlight(theMapIndex,theMapActor,myPointActor,&PointsUpdateActor,hilight,update); -} - -void VTKViewer_RenderWindowInteractor::setPointData(const int& theIndex, - SALOME_Actor* theMapActor, - VTKViewer_Actor* theActor) -{ - TColStd_IndexedMapOfInteger MapIndex; - MapIndex.Add(theIndex); - theActor->MapPoints(theMapActor,MapIndex); -} - - -//---------------------------------------------------------------------------- -static void EdgesUpdateActor(const TColStd_IndexedMapOfInteger& theMapIndex, - SALOME_Actor* theMapActor, - VTKViewer_Actor* theActor) -{ - theActor->MapEdge(theMapActor,theMapIndex); -} - -bool VTKViewer_RenderWindowInteractor::highlightEdge(const TColStd_IndexedMapOfInteger& theMapIndex, - SALOME_Actor* theMapActor, - bool hilight, - bool update) -{ - return highlight(theMapIndex,theMapActor,myEdgeActor,&EdgesUpdateActor,hilight,update); -} - -void VTKViewer_RenderWindowInteractor::setEdgeData(const int& theCellIndex, - SALOME_Actor* theMapActor, - const int& theEdgeIndex, - VTKViewer_Actor* theActor ) -{ - TColStd_IndexedMapOfInteger MapIndex; - MapIndex.Add(theCellIndex); - MapIndex.Add(theEdgeIndex); - theActor->MapEdge(theMapActor,MapIndex); -} diff --git a/src/VTKViewer/VTKViewer_RenderWindowInteractor.h b/src/VTKViewer/VTKViewer_RenderWindowInteractor.h deleted file mode 100644 index 99ef01e82..000000000 --- a/src/VTKViewer/VTKViewer_RenderWindowInteractor.h +++ /dev/null @@ -1,291 +0,0 @@ -// SALOME VTKViewer : build VTK viewer into Salome desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : VTKViewer_RenderWindowInteractor.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef VTKViewer_RenderWindowInteractor_h -#define VTKViewer_RenderWindowInteractor_h - -//=========================================================== -// now we define the C++ class - -#include "SALOME_InteractiveObject.hxx" -#include "SALOME_Selection.h" - -// QT Includes -#include -#include - -// VTK Includes -#include -#include - -// Open CASCADE Includes -#include -#include - -class vtkPicker; -class vtkCellPicker; -class vtkPointPicker; -class vtkActorCollection; - -class SALOME_Actor; -class VTKViewer_Actor; -class VTKViewer_ViewFrame; -class VTKViewer_RenderWindow; -class VTKViewer_InteractorStyleSALOME; - -// ------------------------------------------------------------ -// :TRICKY: Fri Apr 21 22:19:27 2000 Pagey -// The Signal/Slot mechanism used by Qt requires that QObject -// appear as the first class when using multiple inheritance. -// Hence the order of the two classes QObject and vtkRenderWindowInteractor -// matters here. Be careful not to change it by accident. -// ------------------------------------------------------------ -class VTK_EXPORT VTKViewer_RenderWindowInteractor : - public QObject, public vtkRenderWindowInteractor -{ - Q_OBJECT ; - friend class VTKViewer_ViewFrame; -public: - - static VTKViewer_RenderWindowInteractor *New() ; - - vtkTypeMacro(VTKViewer_RenderWindowInteractor,vtkRenderWindowInteractor); - - void PrintSelf(ostream& os, vtkIndent indent); - - // Description: - // Initializes the event handlers without an XtAppContext. This is - // good for when you don`t have a user interface, but you still - // want to have mouse interaction. - virtual void Initialize(); - - virtual void SetInteractorStyle(vtkInteractorObserver *); - VTKViewer_InteractorStyleSALOME* GetInteractorStyleSALOME(){ - return myInteractorStyle; - } - - // Description: - // This will start up the X event loop and never return. If you - // call this method it will loop processing X events until the - // application is exited. - virtual void Start(); - - // Description: - // Enable/Disable interactions. By default interactors are enabled when - // initialized. Initialize() must be called prior to enabling/disabling - // interaction. These methods are used when a window/widget is being - // shared by multiple renderers and interactors. This allows a "modal" - // display where one interactor is active when its data is to be displayed - // and all other interactors associated with the widget are disabled - // when their data is not displayed. - virtual void Enable(); - virtual void Disable(); - - // Description: - // Event loop notification member for Window size change - virtual void UpdateSize(int x,int y); - - // Description: - // Timer methods must be overridden by platform dependent subclasses. - // flag is passed to indicate if this is first timer set or an update - // as Win32 uses repeating timers, whereas X uses One shot more timer - // if flag==VTKXI_TIMER_FIRST Win32 and X should createtimer - // otherwise Win32 should exit and X should perform AddTimeOut() - virtual int CreateTimer(int ) ; - virtual int DestroyTimer() ; - - // Description: - // This function is called on 'q','e' keypress if exitmethod is not - // specified and should be overidden by platform dependent subclasses - // to provide a termination procedure if one is required. - virtual void TerminateApp(void) { /* empty */ } - - // Description: - // These methods correspond to the the Exit, User and Pick - // callbacks. They allow for the Style to invoke them. - //virtual void ExitCallback(); - //virtual void UserCallback(); - //virtual void StartPickCallback(); - //virtual void EndPickCallback(); - - /* Selection Management */ - bool highlightCell(const TColStd_IndexedMapOfInteger& MapIndex, - SALOME_Actor* theMapActor, - bool hilight, - bool update = true ); - bool highlightEdge(const TColStd_IndexedMapOfInteger& MapIndex, - SALOME_Actor* theMapActor, - bool hilight, - bool update = true ); - bool highlightPoint(const TColStd_IndexedMapOfInteger& MapIndex, - SALOME_Actor* theMapActor, - bool hilight, - bool update = true ); - - bool highlight(const Handle(SALOME_InteractiveObject)& IObject, bool hiligth, bool immediatly = true ); - void unHighlightSubSelection(); - bool unHighlightAll(); - - bool isInViewer( const Handle(SALOME_InteractiveObject)& IObject); - bool isVisible( const Handle(SALOME_InteractiveObject)& IObject); - void rename(const Handle(SALOME_InteractiveObject)& IObject, QString newName); - - void SetSelectionMode(Selection_Mode mode); - void SetSelectionProp(const double& theRed = 1, const double& theGreen = 1, - const double& theBlue = 0, const int& theWidth = 5); - void SetSelectionTolerance(const double& theTolNodes = 0.025, const double& theTolCell = 0.001); - - // Displaymode management - int GetDisplayMode(); - void SetDisplayMode(int); - - // Switch representation wireframe/shading - void SetDisplayMode(const Handle(SALOME_InteractiveObject)& IObject, int theMode); - - // Change all actors to wireframe or surface - void ChangeRepresentationToWireframe(); - void ChangeRepresentationToSurface(); - - // Change to wireframe or surface a list of vtkactor - void ChangeRepresentationToWireframe(vtkActorCollection* ListofActors); - void ChangeRepresentationToSurface(vtkActorCollection* ListofActors); - - // Erase Display functions - void EraseAll(); - void DisplayAll(); - void RemoveAll( const bool immediatly ); - void Erase(const Handle(SALOME_InteractiveObject)& IObject, bool immediatly=true); - void Remove(const Handle(SALOME_InteractiveObject)& IObject, bool immediatly=true); - void Display(const Handle(SALOME_InteractiveObject)& IObject, bool immediatly=true); - - void Display( SALOME_Actor* SActor, bool immediatly = true ); - void Erase( SALOME_Actor* SActor, bool immediatly = true ); - void Remove( SALOME_Actor* SActor, bool updateViewer = true ); - - // Transparency - void SetTransparency(const Handle(SALOME_InteractiveObject)& IObject,float trans); - float GetTransparency(const Handle(SALOME_InteractiveObject)& IObject); - - // Color - void SetColor(const Handle(SALOME_InteractiveObject)& IObject,QColor thecolor); - QColor GetColor(const Handle(SALOME_InteractiveObject)& IObject); - - void Update(); - - vtkRenderer* GetRenderer(); - - void setGUIWindow(QWidget* theWindow); - - void setViewFrame(VTKViewer_ViewFrame* ViewFrame); - - void setCellData(const int& theIndex, - SALOME_Actor* theMapActor, - VTKViewer_Actor* theActor); - void setEdgeData(const int& theCellIndex, - SALOME_Actor* theMapActor, - const int& theEdgeIndex, - VTKViewer_Actor* theActor ); //NB - void setPointData(const int& theIndex, - SALOME_Actor* theMapActor, - VTKViewer_Actor* theActor); - - typedef void (*TUpdateActor)(const TColStd_IndexedMapOfInteger& theMapIndex, - SALOME_Actor* theMapActor, - VTKViewer_Actor* theActor); - protected: - - VTKViewer_RenderWindowInteractor(); - ~VTKViewer_RenderWindowInteractor(); - - VTKViewer_InteractorStyleSALOME* myInteractorStyle; - - bool highlight(const TColStd_IndexedMapOfInteger& theMapIndex, - SALOME_Actor* theMapActor, VTKViewer_Actor* theActor, - TUpdateActor theFun, bool hilight, bool update); - void setActorData(const TColStd_IndexedMapOfInteger& theMapIndex, - SALOME_Actor* theMapActor, - VTKViewer_Actor *theActor, - TUpdateActor theFun); - - // Timer used during various mouse events to figure - // out mouse movements. - QTimer *mTimer ; - - int myDisplayMode; - - //NRI: Selection mode - VTKViewer_Actor* myPointActor; - VTKViewer_Actor* myEdgeActor; - VTKViewer_Actor* myCellActor; - void MoveInternalActors(); - - vtkPicker* myBasicPicker; - vtkCellPicker* myCellPicker; - vtkPointPicker* myPointPicker; - - // User for switching to stereo mode. - int PositionBeforeStereo[2]; - - // Connect/disconnect all slots which allow events on the - // render window to be passed to the interactor. - void ConnectSlots() ; - void DisconnectSlots() ; - void ProcessSlotConnections(bool conn) ; - - public slots: - void MouseMove(const QMouseEvent *event) ; - void LeftButtonPressed(const QMouseEvent *event) ; - void LeftButtonReleased(const QMouseEvent *event) ; - void MiddleButtonPressed(const QMouseEvent *event) ; - void MiddleButtonReleased(const QMouseEvent *event) ; - void RightButtonPressed(const QMouseEvent *event) ; - void RightButtonReleased(const QMouseEvent *event) ; - void ButtonPressed(const QMouseEvent *event) ; - void ButtonReleased(const QMouseEvent *event) ; - void KeyPressed(QKeyEvent *event) ; - - private slots: - // Not all of these slots are needed in VTK_MAJOR_VERSION=3, - // but moc does not understand "#if VTK_MAJOR_VERSION". Hence, - // we have to include all of these for the time being. Once, - // this bug in MOC is fixed, we can separate these. - void TimerFunc() ; - - signals: - void RenderWindowModified() ; - - private: - VTKViewer_ViewFrame* myViewFrame; - QWidget* myGUIWindow; - double myTolNodes; - double myTolItems; -}; - -#endif - - diff --git a/src/VTKViewer/VTKViewer_Trihedron.cxx b/src/VTKViewer/VTKViewer_Trihedron.cxx deleted file mode 100644 index 17b56a422..000000000 --- a/src/VTKViewer/VTKViewer_Trihedron.cxx +++ /dev/null @@ -1,362 +0,0 @@ -// SALOME VTKViewer : -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : VTKViewer_Trihedron.cxx -// Author : Alexey PETROV -// Module : SALOME -// $Header: - -#include "VTKViewer_Trihedron.h" -#include "utilities.h" -#include "SALOME_Actor.h" - -// VTK Includes -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include "VTKViewer_VectorText.h" - -using namespace std; - -//============================================================================== - -vtkStandardNewMacro(VTKViewer_UnScaledActor); - -VTKViewer_UnScaledActor::VTKViewer_UnScaledActor(){} - -void VTKViewer_UnScaledActor::Render(vtkRenderer *theRenderer){ - if(theRenderer){ - float P[2][3] = {{-1.0, -1.0, 0.0},{+1.0, +1.0, 0.0}}; - theRenderer->ViewToWorld(P[0][0],P[0][1],P[0][2]); - theRenderer->ViewToWorld(P[1][0],P[1][1],P[1][2]); - float aWorldDiag = sqrt((P[1][0]-P[0][0])*(P[1][0]-P[0][0])+ - (P[1][1]-P[0][1])*(P[1][1]-P[0][1])+ - (P[1][2]-P[0][2])*(P[1][2]-P[0][2])); - int* aSize = theRenderer->GetRenderWindow()->GetSize(); - float aWinDiag = sqrt(float(aSize[0]*aSize[0]+aSize[1]*aSize[1])); - vtkDataSet* aDataSet = GetMapper()->GetInput(); - float aLength = aDataSet->GetLength(); - float aPrecision = 1.0E-3; - float anOldScale = GetScale()[0]; - float aScale = mySize*aWorldDiag/aWinDiag/aLength*sqrt(float(aSize[0])/float(aSize[1])); - if(fabs(aScale - anOldScale)/aScale > aPrecision){ - SetScale(aScale); - } - } - vtkFollower::Render(theRenderer); -} - -void VTKViewer_UnScaledActor::SetSize(int theSize){ - mySize = theSize; -} - -//============================================================================== - -vtkStandardNewMacro(VTKViewer_LineActor); - -vtkCxxSetObjectMacro(VTKViewer_LineActor,LabelActor,VTKViewer_UnScaledActor); -vtkCxxSetObjectMacro(VTKViewer_LineActor,ArrowActor,VTKViewer_UnScaledActor); - -void VTKViewer_LineActor::Render(vtkRenderer *theRenderer){ - if(LabelActor && LabelActor->GetVisibility()){ - LabelActor->Modified(); - LabelActor->Render(theRenderer); - } - if(ArrowActor && ArrowActor->GetVisibility()){ - ArrowActor->Modified(); - ArrowActor->Render(theRenderer); - } - vtkFollower::Render(theRenderer); -} - -//============================================================================== -// The base class for concreate Axis -// Its only duty is to give correct initialization and destruction -// of its pipe-lines - -VTKViewer_Axis::VTKViewer_Axis(){ - - // Initialize the Line pipe-line representation - myLineSource = vtkLineSource::New(); - myLineSource->SetPoint1( 0, 0, 0 ); - - myMapper[0] = vtkPolyDataMapper::New(); - myMapper[0]->SetInput(myLineSource->GetOutput()); - - myLineActor = VTKViewer_LineActor::New(); - myLineActor->SetMapper(myMapper[0]); - myLineActor->PickableOff(); - - // Initialize the Arrow pipe-line representation - myConeSource = vtkConeSource::New(); - myConeSource->SetResolution(2); - myConeSource->SetAngle(10); - - myMapper[1] = vtkPolyDataMapper::New(); - myMapper[1]->SetInput(myConeSource->GetOutput()); - - myArrowActor = VTKViewer_UnScaledActor::New(); - myArrowActor->SetMapper(myMapper[1]); - static int aArrowActorSize = 24; - myArrowActor->SetSize(aArrowActorSize); - myArrowActor->PickableOff(); - - myLineActor->SetArrowActor(myArrowActor); - - // Initialize the Label pipe-line representation - myVectorText = VTKViewer_VectorText::New(); - - myMapper[2] = vtkPolyDataMapper::New(); - myMapper[2]->SetInput(myVectorText->GetOutput()); - - myLabelActor = VTKViewer_UnScaledActor::New(); - myLabelActor->SetMapper(myMapper[2]); - static int aLabelActorSize = 12; - myLabelActor->SetSize(aLabelActorSize); - myLabelActor->PickableOff(); - //myLabelActor->DebugOn(); - - myLineActor->SetLabelActor(myLabelActor); - - // Initialise visibility param. - myVisibility = VTKViewer_Trihedron::eOn; -} - -VTKViewer_Axis::~VTKViewer_Axis(){ - // Destroy of the Label pipe-line representation - myLabelActor->Delete(); - - myMapper[2]->RemoveAllInputs(); - myMapper[2]->Delete(); - - myVectorText->Delete(); - - // Destroy of the Arrow pipe-line representation - myArrowActor->Delete(); - - myMapper[1]->RemoveAllInputs(); - myMapper[1]->Delete(); - - myConeSource->Delete(); - - // Destroy of the Arrow pipe-line representation - myLineActor->Delete(); - - myMapper[0]->RemoveAllInputs(); - myMapper[0]->Delete(); - - myLineSource->Delete(); -} - -void VTKViewer_Axis::SetVisibility(VTKViewer_Trihedron::TVisibility theVis){ - switch(theVis){ - case VTKViewer_Trihedron::eOff: - case VTKViewer_Trihedron::eOn: - myLabelActor->SetVisibility(theVis); - myArrowActor->SetVisibility(theVis); - myLineActor->SetVisibility(theVis); - break; - case VTKViewer_Trihedron::eOnlyLineOn: - myLabelActor->VisibilityOff(); - myArrowActor->VisibilityOff(); - myLineActor->VisibilityOn(); - break; - default: - return; - } - myVisibility = theVis; -} - -void VTKViewer_Axis::SetSize(float theSize){ - float aPosition[3] = {myDir[0]*theSize, myDir[1]*theSize, myDir[2]*theSize}; - myLineSource->SetPoint2(aPosition); - - myArrowActor->SetPosition(0.0,0.0,0.0); - myArrowActor->AddPosition(aPosition); - myArrowActor->SetOrientation(myRot); - - myLabelActor->SetPosition(0.0,0.0,0.0); - myLabelActor->AddPosition(aPosition); -} - -void VTKViewer_Axis::AddToRender( vtkRenderer* theRenderer ) -{ - //Order of the calls are important - theRenderer->AddActor( myLineActor ); - theRenderer->AddActor( myLabelActor ); - theRenderer->AddActor( myArrowActor ); -} - -void VTKViewer_Axis::SetCamera( vtkCamera* theCamera ) -{ - myLabelActor->SetCamera(theCamera); -} - -void VTKViewer_Axis::SetProperty( vtkProperty* theProperty ) -{ - myLabelActor->SetProperty(theProperty); - myArrowActor->SetProperty(theProperty); - myLineActor->SetProperty(theProperty); - } - -//============================================================================== -class VTKViewer_XAxis : public VTKViewer_Axis{ -protected: - VTKViewer_XAxis(); - VTKViewer_XAxis(const VTKViewer_XAxis&); -public: - vtkTypeMacro(VTKViewer_XAxis,VTKViewer_Axis); - static VTKViewer_XAxis *New(); -}; - -vtkStandardNewMacro(VTKViewer_XAxis); - -VTKViewer_XAxis::VTKViewer_XAxis(){ - myDir[0] = 1.0; myDir[1] = 0.0; myDir[2] = 0.0; - myRot[0] = 0.0; myRot[1] = 0.0; myRot[2] = 0.0; - myVectorText->SetText("X"); - vtkProperty* aProperty = vtkProperty::New(); - aProperty->SetColor(1.0,0.0,0.0); - SetProperty(aProperty); - aProperty->Delete(); -} - -//============================================================================== -class VTKViewer_YAxis : public VTKViewer_Axis{ -protected: - VTKViewer_YAxis(); - VTKViewer_YAxis(const VTKViewer_YAxis&); -public: - vtkTypeMacro(VTKViewer_YAxis,VTKViewer_Axis); - static VTKViewer_YAxis *New(); -}; - -vtkStandardNewMacro(VTKViewer_YAxis); - -VTKViewer_YAxis::VTKViewer_YAxis(){ - myDir[0] = 0.0; myDir[1] = 1.0; myDir[2] = 0.0; - myRot[0] = 0.0; myRot[1] = 0.0; myRot[2] = 90.; - myVectorText->SetText("Y"); - vtkProperty* aProperty = vtkProperty::New(); - aProperty->SetColor(0.0,1.0,0.0); - SetProperty(aProperty); - aProperty->Delete(); -} - -//============================================================================== -class VTKViewer_ZAxis : public VTKViewer_Axis{ -protected: - VTKViewer_ZAxis(); - VTKViewer_ZAxis(const VTKViewer_ZAxis&); -public: - vtkTypeMacro(VTKViewer_ZAxis,VTKViewer_Axis); - static VTKViewer_ZAxis *New(); -}; - -vtkStandardNewMacro(VTKViewer_ZAxis); - -VTKViewer_ZAxis::VTKViewer_ZAxis(){ - myDir[0] = 0.0; myDir[1] = 0.0; myDir[2] = 1.0; - myRot[0] = 0.0; myRot[1] = -90; myRot[2] = 0.0; - myVectorText->SetText("Z"); - vtkProperty* aProperty = vtkProperty::New(); - aProperty->SetColor(0.0,0.0,1.0); - SetProperty(aProperty); - aProperty->Delete(); -} - -//============================================================================== - -vtkStandardNewMacro(VTKViewer_Trihedron); - -VTKViewer_Trihedron::VTKViewer_Trihedron(){ - myPresent = vtkActorCollection::New(); - myAxis[0] = VTKViewer_XAxis::New(); - myAxis[1] = VTKViewer_YAxis::New(); - myAxis[2] = VTKViewer_ZAxis::New(); - static float aSize = 100; - SetSize(aSize); -} - -VTKViewer_Trihedron::~VTKViewer_Trihedron(){ - myPresent->RemoveAllItems(); - myPresent->Delete(); - for(int i = 0; i < 3; i++) - myAxis[i]->Delete(); -} - -void VTKViewer_Trihedron::SetSize(float theSize){ - mySize = theSize; - for(int i = 0; i < 3; i++) - myAxis[i]->SetSize(theSize); -} - -void VTKViewer_Trihedron::SetVisibility(TVisibility theVis){ - for(int i = 0; i < 3; i++) - myAxis[i]->SetVisibility(theVis); -} - -VTKViewer_Trihedron::TVisibility VTKViewer_Trihedron::GetVisibility(){ - return myAxis[0]->GetVisibility(); -} - -void VTKViewer_Trihedron::AddToRender(vtkRenderer* theRenderer){ - vtkCamera* aCamera = theRenderer->GetActiveCamera(); - for(int i = 0; i < 3; i++){ - myAxis[i]->AddToRender(theRenderer); - myAxis[i]->SetCamera(aCamera); - } -} - -void VTKViewer_Trihedron::RemoveFromRender(vtkRenderer* theRenderer){ - myPresent->InitTraversal(); - while(vtkActor* anActor = myPresent->GetNextActor()) - theRenderer->RemoveActor(anActor); -} - -int VTKViewer_Trihedron::GetVisibleActorCount(vtkRenderer* theRenderer){ - //TVisibility aVis = GetVisibility(); - //SetVisibility(eOff); - vtkActorCollection* aCollection = theRenderer->GetActors(); - aCollection->InitTraversal(); - int aCount = 0; - while(vtkActor* prop = aCollection->GetNextActor()) - if( prop->GetVisibility()) - if(SALOME_Actor* anActor = SALOME_Actor::SafeDownCast(prop)) - if(!anActor->IsInfinitive()) - aCount++; - //int aCount = theRenderer->VisibleActorCount(); - //SetVisibility(aVis); - return aCount; -} diff --git a/src/VTKViewer/VTKViewer_Trihedron.h b/src/VTKViewer/VTKViewer_Trihedron.h deleted file mode 100644 index 169e47345..000000000 --- a/src/VTKViewer/VTKViewer_Trihedron.h +++ /dev/null @@ -1,160 +0,0 @@ -// SALOME VTKViewer : -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : VTKViewer_Trihedron.h -// Author : Alexey PETROV -// Module : SALOME -// $Header: - -#ifndef VTKViewer_Trihedron_H -#define VTKViewer_Trihedron_H - -#include -#include - -class vtkActorCollection; -class VTKViewer_Axis; -class vtkRenderer; -class vtkPolyDataMapper; -class vtkLineSource; -class vtkConeSource; -class VTKViewer_VectorText; -class vtkCamera; -class vtkProperty; - -//============================================================================== - -class VTKViewer_UnScaledActor: public vtkFollower{ - VTKViewer_UnScaledActor(const VTKViewer_UnScaledActor&); - -public: - vtkTypeMacro(VTKViewer_UnScaledActor,vtkFollower); - static VTKViewer_UnScaledActor *New(); - - virtual void SetSize(int theSize); - virtual void Render(vtkRenderer *theRenderer); - -protected: - VTKViewer_UnScaledActor(); - ~VTKViewer_UnScaledActor(){} - int mySize; -}; - -//============================================================================== - -class VTKViewer_LineActor: public vtkFollower{ - VTKViewer_LineActor(const VTKViewer_LineActor&); - -public: - vtkTypeMacro(VTKViewer_LineActor,vtkFollower); - static VTKViewer_LineActor *New(); - - void SetLabelActor(VTKViewer_UnScaledActor* theLabelActor); - void SetArrowActor(VTKViewer_UnScaledActor* theLabelActor); - virtual void Render(vtkRenderer *theRenderer); - -protected: - VTKViewer_LineActor(){ - LabelActor = NULL; - ArrowActor = NULL; - } - ~VTKViewer_LineActor(){ - SetLabelActor(NULL); - SetArrowActor(NULL); - } - - VTKViewer_UnScaledActor* LabelActor; - VTKViewer_UnScaledActor* ArrowActor; -}; - -//================================================ - -class VTKViewer_Trihedron : public vtkObject{ - protected: - VTKViewer_Trihedron(); - VTKViewer_Trihedron(const VTKViewer_Trihedron&); - virtual ~VTKViewer_Trihedron(); - public: - vtkTypeMacro(VTKViewer_Trihedron,vtkObject); - static VTKViewer_Trihedron *New(); - - virtual void SetSize(float theSize); - virtual float GetSize() { return mySize;} - - enum TVisibility{eOff, eOn, eOnlyLineOn}; - virtual void SetVisibility(TVisibility theVis); - virtual void VisibilityOff() { SetVisibility(eOff);} - virtual void VisibilityOn() { SetVisibility(eOn);} - virtual TVisibility GetVisibility(); - - virtual void AddToRender(vtkRenderer* theRenderer); - virtual void RemoveFromRender(vtkRenderer* theRenderer); - - virtual int GetVisibleActorCount(vtkRenderer* theRenderer); - -protected: - vtkActorCollection* myPresent; - VTKViewer_Axis* myAxis[3]; - float mySize; -}; - -//============================================================================== -// The base class for concreate Axis -// Its only duty is to give correct initialization and destruction -// of its pipe-lines -class VTKViewer_Axis : public vtkObject{ -protected: - VTKViewer_Axis(); - VTKViewer_Axis(const VTKViewer_Axis&); - virtual ~VTKViewer_Axis(); - public: - vtkTypeMacro(VTKViewer_Axis,vtkObject); - - virtual void AddToRender(vtkRenderer* theRenderer); - - virtual void SetVisibility(VTKViewer_Trihedron::TVisibility theVis); - virtual VTKViewer_Trihedron::TVisibility GetVisibility() { return myVisibility; } - - virtual void SetCamera(vtkCamera* theCamera); - virtual void SetProperty(vtkProperty* theProperty); - virtual void SetSize(float theSize); - - virtual VTKViewer_UnScaledActor* GetLabel(){ return myLabelActor; } - virtual VTKViewer_UnScaledActor* GetArrow(){ return myArrowActor; } - -protected: - VTKViewer_Trihedron::TVisibility myVisibility; - float myDir[3], myRot[3]; - - VTKViewer_LineActor *myLineActor; - //vtkActor *myLineActor; - VTKViewer_UnScaledActor *myArrowActor; - VTKViewer_UnScaledActor *myLabelActor; - - vtkPolyDataMapper *myMapper[3]; - vtkLineSource *myLineSource; - vtkConeSource *myConeSource; - VTKViewer_VectorText* myVectorText; -}; - -#endif diff --git a/src/VTKViewer/VTKViewer_Utilities.cxx b/src/VTKViewer/VTKViewer_Utilities.cxx deleted file mode 100644 index b8b61997f..000000000 --- a/src/VTKViewer/VTKViewer_Utilities.cxx +++ /dev/null @@ -1,195 +0,0 @@ -// SALOME VTKViewer : -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : VTKViewer_Utilities.cxx -// Author : Alexey PETROV -// Module : SALOME -// $Header: - -#include "VTKViewer_Utilities.h" -#include "utilities.h" -#include "SALOME_Actor.h" - -// VTK Includes -#include -#include -#include -#include - -using namespace std; - -//see vtkRenderer::ResetCamera(float bounds[6]) method -void ResetCamera(vtkRenderer* theRenderer, int theUsingZeroFocalPoint){ - if(!theRenderer) return; - float bounds[6]; - int aCount = ComputeVisiblePropBounds(theRenderer,bounds); - if(theUsingZeroFocalPoint || aCount){ - float aLength = bounds[1]-bounds[0]; - aLength = max((bounds[3]-bounds[2]),aLength); - aLength = max((bounds[5]-bounds[4]),aLength); - - double vn[3]; - if ( theRenderer->GetActiveCamera() != NULL ) - theRenderer->GetActiveCamera()->GetViewPlaneNormal(vn); - else{ - MESSAGE("Trying to reset non-existant camera"); - return; - } - - float center[3] = {0.0, 0.0, 0.0}; - if(!theUsingZeroFocalPoint){ - center[0] = (bounds[0] + bounds[1])/2.0; - center[1] = (bounds[2] + bounds[3])/2.0; - center[2] = (bounds[4] + bounds[5])/2.0; - } - theRenderer->GetActiveCamera()->SetFocalPoint(center[0],center[1],center[2]); - - float width = sqrt((bounds[1]-bounds[0])*(bounds[1]-bounds[0]) + - (bounds[3]-bounds[2])*(bounds[3]-bounds[2]) + - (bounds[5]-bounds[4])*(bounds[5]-bounds[4])); - - double ang = theRenderer->GetActiveCamera()->GetViewAngle(); - float distance = 2.0*width/tan(ang*vtkMath::Pi()/360.0); - - // check view-up vector against view plane normal - double *vup = theRenderer->GetActiveCamera()->GetViewUp(); - if ( fabs(vtkMath::Dot(vup,vn)) > 0.999 ){ - MESSAGE("Resetting view-up since view plane normal is parallel"); - theRenderer->GetActiveCamera()->SetViewUp(-vup[2], vup[0], vup[1]); - } - - // update the camera - theRenderer->GetActiveCamera()->SetPosition(center[0]+distance*vn[0], - center[1]+distance*vn[1], - center[2]+distance*vn[2]); - // find size of the window - int* winsize = theRenderer->GetSize(); - if(winsize[0] < winsize[1]) width *= float(winsize[1])/float(winsize[0]); - - if(theUsingZeroFocalPoint) width *= sqrt(2.0); - - theRenderer->GetActiveCamera()->SetParallelScale(width/2.0); - } - //workaround on VTK - //theRenderer->ResetCameraClippingRange(bounds); - ResetCameraClippingRange(theRenderer); -} - - -// Compute the bounds of the visible props -int ComputeVisiblePropBounds(vtkRenderer* theRenderer, float theBounds[6]){ - vtkProp *prop; - float *bounds; - int aCount=0; - - theBounds[0] = theBounds[2] = theBounds[4] = VTK_LARGE_FLOAT; - theBounds[1] = theBounds[3] = theBounds[5] = -VTK_LARGE_FLOAT; - - // loop through all props - vtkActorCollection* aCollection = theRenderer->GetActors(); - aCollection->InitTraversal(); - while (vtkActor* prop = aCollection->GetNextActor()) { - // if it's invisible, or has no geometry, we can skip the rest - if ( prop->GetVisibility() ) - { - if(SALOME_Actor* anActor = SALOME_Actor::SafeDownCast(prop)) - if(anActor->IsInfinitive()) continue; - bounds = prop->GetBounds(); - // make sure we haven't got bogus bounds - if ( bounds != NULL && - bounds[0] > -VTK_LARGE_FLOAT && bounds[1] < VTK_LARGE_FLOAT && - bounds[2] > -VTK_LARGE_FLOAT && bounds[3] < VTK_LARGE_FLOAT && - bounds[4] > -VTK_LARGE_FLOAT && bounds[5] < VTK_LARGE_FLOAT ) - { - aCount++; - - if (bounds[0] < theBounds[0]) - { - theBounds[0] = bounds[0]; - } - if (bounds[1] > theBounds[1]) - { - theBounds[1] = bounds[1]; - } - if (bounds[2] < theBounds[2]) - { - theBounds[2] = bounds[2]; - } - if (bounds[3] > theBounds[3]) - { - theBounds[3] = bounds[3]; - } - if (bounds[4] < theBounds[4]) - { - theBounds[4] = bounds[4]; - } - if (bounds[5] > theBounds[5]) - { - theBounds[5] = bounds[5]; - } - }//not bogus - } - } - return aCount; -} - - -//see vtkRenderer::ResetCameraClippingRange(float bounds[6]) method -void ResetCameraClippingRange(vtkRenderer* theRenderer){ - if(!theRenderer || !theRenderer->VisibleActorCount()) return; - - vtkCamera* anActiveCamera = theRenderer->GetActiveCamera(); - if( anActiveCamera == NULL ){ - MESSAGE("Trying to reset clipping range of non-existant camera"); - return; - } - - // Find the plane equation for the camera view plane - double vn[3]; - anActiveCamera->GetViewPlaneNormal(vn); - double position[3]; - anActiveCamera->GetPosition(position); - - float bounds[6]; - theRenderer->ComputeVisiblePropBounds(bounds); - - double center[3]; - center[0] = (bounds[0] + bounds[1])/2.0; - center[1] = (bounds[2] + bounds[3])/2.0; - center[2] = (bounds[4] + bounds[5])/2.0; - - double width = sqrt((bounds[1]-bounds[0])*(bounds[1]-bounds[0]) + - (bounds[3]-bounds[2])*(bounds[3]-bounds[2]) + - (bounds[5]-bounds[4])*(bounds[5]-bounds[4])); - - double distance = sqrt((position[0]-center[0])*(position[0]-center[0]) + - (position[1]-center[1])*(position[1]-center[1]) + - (position[2]-center[2])*(position[2]-center[2])); - - float range[2] = {distance - width/2.0, distance + width/2.0}; - - // Do not let the range behind the camera throw off the calculation. - if (range[0] < 0.0) range[0] = 0.0; - - anActiveCamera->SetClippingRange( range ); -} diff --git a/src/VTKViewer/VTKViewer_Utilities.h b/src/VTKViewer/VTKViewer_Utilities.h deleted file mode 100644 index e297ce737..000000000 --- a/src/VTKViewer/VTKViewer_Utilities.h +++ /dev/null @@ -1,39 +0,0 @@ -// SALOME VTKViewer : -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : VTKViewer_Utilities.h -// Author : Alexey PETROV -// Module : SALOME -// $Header: - -#ifndef VTKViewer_Utilities_H -#define VTKViewer_Utilities_H - -class vtkRenderer; - -extern void ResetCamera(vtkRenderer* theRenderer, int theUsingZeroFocalPoint = false); -extern int ComputeVisiblePropBounds(vtkRenderer* theRenderer, float theBounds[6]); -extern void ResetCameraClippingRange(vtkRenderer* theRenderer); -extern float EPS_BNDBOX; - -#endif diff --git a/src/VTKViewer/VTKViewer_VectorText.cxx b/src/VTKViewer/VTKViewer_VectorText.cxx deleted file mode 100644 index d0ee379d6..000000000 --- a/src/VTKViewer/VTKViewer_VectorText.cxx +++ /dev/null @@ -1,1748 +0,0 @@ -/*========================================================================= - - Program: Visualization Toolkit - Module: $RCSfile$ - Language: C++ - Date: $Date$ - Version: $Revision$ - - Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen - All rights reserved. - See Copyright.txt or http://www.kitware.com/Copyright.htm for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notice for more information. - -=========================================================================*/ -// VTKViewer_VectorText.cxx is a copy of vtkVectorText.cxx file. -// Purpose of copying: to remove linking to libHybrid.so VTK library - -#include "VTKViewer_VectorText.h" - -#include "vtkCellArray.h" -#include "vtkObjectFactory.h" -#include "vtkPoints.h" -#include "vtkPolyData.h" -using namespace std; - -vtkCxxRevisionMacro(VTKViewer_VectorText, "$Revision$"); -vtkStandardNewMacro(VTKViewer_VectorText); - -char *VTK_VECTOR_TEXT_33 = (char *) "11 0.438482 " -"0.28000 -0.07186 0.43164 -0.07143 0.27689 0.07714 0.43472 0.07714 0.32000 0.20134 " -"0.40000 0.20243 0.31429 0.20550 0.27277 0.76857 0.43848 0.76857 0.27693 1.02571 " -"0.43429 1.02615 7 2 1 3 2 0 1 7 6 5 6 4 5 8 " -"7 5 7 8 9 10 9 8 " -; - -char *VTK_VECTOR_TEXT_34 = (char *) "21 0.615625 " -"0.25714 0.63563 0.32571 0.63563 0.50286 0.63642 0.25143 0.63946 0.33143 0.63840 " -"0.33462 0.64286 0.49673 0.64286 0.57714 0.63757 0.58093 0.64286 0.21335 0.84286 " -"0.36680 0.84286 0.46177 0.84286 0.61522 0.84286 0.21295 1.02000 0.46134 1.02000 " -"0.61563 1.02000 0.36571 1.02307 0.46550 1.02571 0.21714 1.02615 0.36000 1.02723 " -"0.61143 1.02615 17 3 5 9 7 6 2 4 5 1 6 8 12 0 1 5 6 " -"12 11 3 0 5 7 8 6 11 12 14 13 9 10 10 9 5 15 14 12 19 " -"18 10 18 13 10 17 14 20 14 15 20 16 19 10 " -; - -char *VTK_VECTOR_TEXT_35 = (char *) "43 0.974539 " -"0.22286 -0.09100 0.32571 -0.09236 0.56832 -0.08857 0.67429 -0.09201 0.28193 0.22000 " -"0.39470 0.22000 0.63009 0.22000 0.15385 0.23143 0.27429 0.22723 0.40571 0.22723 " -"0.62286 0.22723 0.74857 0.22680 0.97454 0.23143 0.15385 0.33429 0.97454 0.33429 " -"0.30344 0.34000 0.65201 0.34000 0.77084 0.34000 0.42286 0.34010 0.42034 0.34571 " -"0.36041 0.60286 0.70748 0.60286 0.82034 0.60286 0.47429 0.60626 0.15385 0.61429 " -"0.35429 0.61009 0.70286 0.60951 0.82857 0.61009 0.97454 0.61429 0.15385 0.71714 " -"0.37714 0.72134 0.50286 0.72191 0.72571 0.72134 0.85143 0.72156 0.97143 0.72025 " -"0.38605 0.72857 0.49823 0.72857 0.73335 0.72857 0.84613 0.72857 0.45143 1.04160 " -"0.55735 1.04286 0.80000 1.04243 0.90521 1.04286 43 6 2 3 5 0 1 0 5 4 18 " -"9 10 11 6 3 4 9 8 13 8 15 17 6 11 9 4 5 13 7 8 17 " -"12 14 8 9 15 15 19 20 16 6 17 12 17 11 18 10 16 10 6 16 21 " -"16 17 18 19 9 15 9 19 20 30 25 23 20 19 34 33 28 29 24 25 29 " -"25 30 27 21 22 33 21 27 20 23 30 22 21 17 33 27 28 31 26 32 35 " -"30 23 32 38 37 31 35 23 21 32 26 26 31 23 32 21 38 41 37 38 36 " -"35 31 38 21 33 40 39 36 42 41 38 39 35 36 " -; - -char *VTK_VECTOR_TEXT_36 = (char *) "73 0.921518 " -"0.52571 -0.22882 0.59429 -0.22991 0.52000 -0.09942 0.60571 -0.09385 0.40571 -0.07057 " -"0.72730 -0.06571 0.33143 -0.03465 0.80571 -0.01813 0.51429 0.01891 0.52152 0.02571 " -"0.60571 0.02014 0.84571 0.02168 0.25669 0.04286 0.66857 0.03800 0.44571 0.04535 " -"0.70984 0.06571 0.74535 0.10571 0.74857 0.11079 0.74902 0.11143 0.37057 0.12857 " -"0.90538 0.12857 0.20823 0.15143 0.35748 0.16286 0.77395 0.16857 0.35429 0.17310 " -"0.35177 0.18000 0.78134 0.21429 0.92152 0.21429 0.19580 0.22571 0.33480 0.25429 " -"0.77395 0.29429 0.91177 0.32286 0.76000 0.32921 0.72571 0.36972 0.89355 0.37429 " -"0.64690 0.40857 0.65143 0.40706 0.64000 0.41109 0.60571 0.41986 0.52109 0.43714 " -"0.85714 0.43270 0.38857 0.49216 0.79429 0.48902 0.72571 0.52437 0.30454 0.54571 " -"0.60260 0.56286 0.52043 0.58571 0.26286 0.59570 0.46857 0.59800 0.39429 0.65095 " -"0.22857 0.67295 0.36823 0.70000 0.75429 0.77624 0.21907 0.78571 0.35891 0.78571 " -"0.89184 0.79714 0.37714 0.85001 0.72571 0.86144 0.87470 0.86571 0.24571 0.89016 " -"0.68571 0.90956 0.44000 0.92036 0.60571 0.94469 0.83179 0.94571 0.28000 0.94629 " -"0.51429 0.94891 0.34286 1.00607 0.75429 1.01579 0.38286 1.02784 0.52043 1.06571 " -"0.60260 1.06571 0.52260 1.12286 0.60043 1.12286 75 3 8 2 2 8 4 19 12 6 13 11 15 9 8 10 3 2 1 8 " -"3 10 5 13 10 15 11 16 7 13 5 4 14 6 2 0 1 5 10 3 12 " -"22 21 14 4 8 13 7 11 11 18 16 20 23 18 18 17 16 20 18 11 19 " -"6 14 28 21 29 26 23 20 12 19 22 25 22 24 21 22 25 21 25 29 26 " -"27 30 27 26 20 31 32 30 31 30 27 40 33 32 37 43 38 34 32 31 38 " -"39 9 40 32 34 38 9 10 43 33 42 37 36 43 39 38 43 42 33 40 35 " -"36 37 33 43 36 39 45 46 48 41 39 45 39 43 41 48 44 47 51 50 46 " -"62 65 48 39 46 44 49 47 49 44 48 54 53 50 51 47 49 53 56 59 53 " -"54 56 66 64 56 55 58 52 58 57 52 54 50 51 59 56 64 67 60 63 60 " -"57 63 66 61 68 61 66 56 68 65 69 65 62 69 62 46 45 63 57 58 62 " -"60 67 68 61 65 71 70 72 70 62 67 62 70 69 71 69 70 " -; - -char *VTK_VECTOR_TEXT_37 = (char *) "81 1.409911 " -"0.46713 -0.11143 0.57143 -0.11215 1.19429 -0.11252 1.10286 -0.10252 1.26444 -0.09429 " -"1.05143 -0.07759 1.31429 -0.06384 1.14857 -0.01538 1.18857 -0.01807 0.98857 -0.01364 " -"1.22286 -0.00771 1.36784 -0.00286 1.11302 0.00286 1.26436 0.03143 1.07787 0.04857 " -"0.95748 0.05429 1.39681 0.06571 1.28680 0.09429 1.05866 0.14000 1.40991 0.14571 " -"0.94134 0.15143 0.94134 0.21429 1.29295 0.21429 1.06134 0.23714 1.40723 0.23714 " -"0.95748 0.30000 1.39387 0.30000 1.07787 0.30571 1.27429 0.30371 1.09561 0.33429 " -"1.23429 0.35465 1.36616 0.36286 1.13143 0.36327 1.16571 0.37277 1.20571 0.36899 " -"1.00045 0.38571 1.32000 0.41543 1.06857 0.44498 1.24571 0.45681 0.48000 0.46420 " -"1.15429 0.46723 0.38857 0.47462 0.55016 0.48286 0.60000 0.51330 0.30286 0.52704 " -"0.43429 0.56177 0.47429 0.55907 0.26857 0.57284 0.50857 0.56943 0.65355 0.57429 " -"0.39873 0.58000 0.55007 0.60857 0.24530 0.62571 0.36359 0.62571 0.68252 0.64286 " -"0.56680 0.64857 0.23050 0.69429 0.34437 0.71714 0.57866 0.72286 0.69563 0.72286 " -"0.22705 0.79143 0.34705 0.81429 0.69295 0.81429 0.56891 0.85429 0.67959 0.87714 " -"0.24530 0.88286 0.36359 0.88286 0.38132 0.91143 0.54286 0.90975 0.52000 0.93179 " -"0.65465 0.93429 0.41714 0.94041 0.47429 0.94950 0.29143 0.96914 0.60571 0.99258 " -"0.32000 0.99868 0.38286 1.03395 0.53714 1.03184 1.06857 1.04249 1.17287 1.04286 " -"0.48000 1.04395 79 0 1 78 10 4 6 2 8 3 9 14 15 4 " -"10 8 3 7 5 7 3 8 10 6 13 12 5 7 5 12 9 4 8 2 13 " -"16 17 17 19 22 14 9 12 15 18 20 11 13 6 13 11 16 17 16 19 18 " -"15 14 21 20 18 21 23 25 22 26 28 23 21 18 24 22 19 25 27 35 35 " -"29 37 22 24 26 28 31 30 27 25 23 31 28 26 27 29 35 36 30 31 38 " -"34 30 38 33 34 37 32 40 32 33 40 38 30 36 32 37 29 40 33 38 42 " -"46 39 47 53 52 48 43 51 39 46 41 41 50 44 56 57 60 45 41 46 42 " -"48 46 48 42 43 50 41 45 53 47 44 51 49 55 54 55 49 53 44 50 49 " -"51 43 55 54 58 59 58 54 57 56 52 57 52 53 60 61 65 58 62 63 57 " -"61 60 62 64 63 65 66 73 66 65 61 73 66 75 58 59 62 63 64 68 70 " -"69 68 67 75 66 70 68 64 76 71 72 75 67 76 74 69 70 71 76 67 69 " -"77 72 72 77 80 77 69 74 76 72 80 79 78 1 " -; - -char *VTK_VECTOR_TEXT_38 = (char *) "76 1.126291 " -"0.58857 -0.08966 1.03429 -0.09235 0.48000 -0.08395 0.66286 -0.07673 0.40000 -0.05914 " -"0.72000 -0.05641 0.98286 -0.05473 0.35429 -0.03393 0.78857 -0.01678 1.12629 0.00857 " -"0.29143 0.02168 0.52571 0.02991 0.57714 0.02764 0.62286 0.03756 0.46857 0.04645 " -"0.87429 0.05495 0.69714 0.07393 0.42132 0.08286 1.04571 0.07868 0.24486 0.08857 " -"0.75011 0.11714 0.22327 0.14000 0.37927 0.14571 0.78349 0.16286 0.96893 0.16286 " -"0.96571 0.16717 0.96457 0.16857 0.95937 0.18000 0.35580 0.22571 0.20991 0.25429 " -"0.36319 0.28857 0.86286 0.29600 1.02437 0.31143 0.22645 0.32857 0.40418 0.36286 " -"0.40571 0.36454 0.41330 0.37429 1.05421 0.40857 0.28418 0.42571 0.92000 0.44119 " -"0.53714 0.46770 0.37143 0.50250 0.66758 0.54000 0.46406 0.55714 0.78704 0.62571 " -"0.59429 0.63146 0.37714 0.68444 0.69296 0.70000 0.85355 0.71714 0.35681 0.73429 " -"0.50200 0.75143 0.49756 0.76286 0.49502 0.76857 0.72891 0.76857 0.86966 0.76857 " -"0.34748 0.82000 0.73295 0.82000 0.48764 0.82571 0.87236 0.83143 0.49714 0.86089 " -"0.35849 0.87143 0.71429 0.87650 0.52000 0.89555 0.69714 0.89846 0.37964 0.91714 " -"0.84657 0.91714 0.55429 0.92073 0.65714 0.92498 0.60000 0.93277 0.81868 0.95714 " -"0.42857 0.97582 0.76571 1.00436 0.51429 1.02723 0.72000 1.02723 0.59429 1.04437 " -"0.64571 1.04395 78 7 17 10 3 13 0 " -"2 14 4 6 18 15 17 7 4 9 18 " -"6 9 6 1 8 16 5 0 12 2 " -"17 4 14 2 11 14 12 0 13 13 5 " -"16 15 24 20 16 8 20 13 3 5 " -"2 12 11 10 17 19 21 28 29 15 20 " -"8 20 24 23 40 23 31 24 25 26 " -"19 22 21 31 23 27 22 19 17 18 24 " -"15 28 21 22 29 30 33 31 32 39 " -"23 24 26 30 29 28 23 26 27 33 30 " -"38 32 31 27 38 36 41 38 34 36 " -"34 38 30 36 34 35 39 32 37 42 40 " -"31 40 41 36 42 44 47 45 43 40 " -"40 43 41 50 46 43 50 49 46 45 40 " -"42 48 53 47 45 42 47 49 52 55 " -"53 48 56 50 43 45 57 60 55 52 50 " -"51 49 50 52 48 47 44 54 56 48 " -"56 65 61 60 59 64 59 60 57 65 56 " -"58 52 57 55 64 59 70 58 56 54 " -"59 62 70 68 74 72 65 69 61 70 66 " -"72 63 71 67 63 61 69 70 62 66 " -"67 73 68 71 63 69 73 67 71 68 72 " -"66 74 68 75 75 68 73 " -; - -char *VTK_VECTOR_TEXT_39 = (char *) "10 0.364197 " -"0.25143 0.63563 0.24571 0.63946 0.32571 0.63757 0.32950 0.64286 0.21034 0.83714 " -"0.36379 0.83714 0.20991 1.02000 0.36420 1.02000 0.21408 1.02571 0.36000 1.02615 8 1 0 3 " -"2 3 0 1 3 4 7 6 4 5 4 " -"3 7 4 5 8 6 9 6 7 9 " -; - -char *VTK_VECTOR_TEXT_40 = (char *) "19 0.595731 " -"0.50857 -0.39522 0.59429 -0.39447 0.44000 -0.30784 0.51787 -0.24857 0.32530 -0.09429 " -"0.43748 -0.05429 0.26899 0.06571 0.38134 0.20286 0.23580 0.27714 0.37605 0.38000 " -"0.23848 0.41429 0.39320 0.53429 0.27177 0.59714 0.43748 0.71143 0.47216 0.80286 " -"0.36086 0.82000 0.45714 0.97936 0.59573 1.04286 0.50857 1.04395 17 2 3 4 0 3 2 3 " -"0 1 6 4 5 3 5 4 6 7 8 7 6 5 9 10 8 9 8 7 10 " -"11 12 10 9 11 12 13 15 12 11 13 14 15 13 16 15 14 17 18 16 17 " -"16 14 " -; - -char *VTK_VECTOR_TEXT_41 = (char *) "19 0.598482 " -"0.24000 -0.39447 0.33143 -0.39258 0.40616 -0.28857 0.31641 -0.24857 0.48784 -0.14000 " -"0.39681 -0.05429 0.55538 0.03143 0.45295 0.20286 0.59580 0.23714 0.59848 0.37429 " -"0.45823 0.38000 0.44723 0.49429 0.56252 0.59714 0.41714 0.64134 0.47343 0.82000 " -"0.34857 0.83301 0.37714 0.97936 0.23855 1.04286 0.32571 1.04395 17 0 1 3 2 3 1 3 " -"4 5 3 2 4 5 6 7 6 5 4 7 8 10 8 9 10 11 10 9 8 " -"7 6 11 12 13 13 14 15 12 11 9 14 13 12 15 16 17 16 15 14 16 " -"18 17 " -; - -char *VTK_VECTOR_TEXT_42 = (char *) "34 0.685300 " -"0.33143 0.58250 0.33714 0.58223 0.53714 0.58250 0.54286 0.58194 0.36213 0.61429 " -"0.25587 0.63714 0.25266 0.64286 0.62655 0.64286 0.25393 0.64857 0.43429 0.73293 " -"0.44000 0.73049 0.36715 0.78000 0.50714 0.78000 0.35429 0.78613 0.63429 0.80816 " -"0.19309 0.82571 0.68389 0.82571 0.19177 0.83143 0.68530 0.83143 0.38857 0.86213 " -"0.39523 0.86571 0.48000 0.86242 0.47660 0.86571 0.34657 0.88286 0.58857 0.90823 " -"0.22286 0.92522 0.22857 0.92848 0.64571 0.92816 0.65143 0.92675 0.49295 1.02000 " -"0.38134 1.03714 0.38550 1.04286 0.49143 1.04021 0.48571 1.04437 32 2 12 10 8 4 11 " -"8 5 4 8 6 5 4 0 1 2 3 " -"12 0 4 5 12 9 10 9 11 4 " -"19 11 21 14 24 12 26 25 17 16 18 " -"14 13 23 15 19 21 20 11 19 13 " -"33 31 30 24 21 12 12 21 9 21 11 " -"9 26 17 23 12 3 7 27 24 18 " -"13 19 23 23 17 15 20 21 22 18 24 " -"14 28 27 18 33 30 20 29 20 22 " -"29 33 20 32 33 29 " -; - -char *VTK_VECTOR_TEXT_43 = (char *) "20 0.952768 " -"0.52836 0.10571 0.64878 0.10571 0.52420 0.11143 0.65295 0.11143 0.52420 0.39714 " -"0.65295 0.39714 0.22857 0.40546 0.52000 0.40329 0.66286 0.40437 0.95168 0.40857 " -"0.22437 0.52286 0.95277 0.52286 0.22857 0.52900 0.52311 0.53429 0.65403 0.53429 " -"0.94857 0.52900 0.52528 0.82571 0.65186 0.82571 0.53143 0.82991 0.64571 0.82991 18 1 2 0 1 3 2 " -"4 2 3 5 4 3 12 6 7 14 4 " -"8 9 15 8 8 4 5 9 11 15 " -"12 7 13 6 12 10 7 4 13 14 8 " -"15 17 19 18 14 13 4 17 18 16 " -"17 16 13 17 13 14 " -; - -char *VTK_VECTOR_TEXT_44 = (char *) "23 0.432768 " -"0.30286 -0.28607 0.30857 -0.28726 0.33714 -0.27355 0.36571 -0.25275 0.27329 -0.23714 " -"0.38670 -0.23143 0.30286 -0.21582 0.39914 -0.21429 0.32115 -0.19714 0.41355 -0.18571 " -"0.33800 -0.16857 0.42327 -0.15714 0.34605 -0.14571 0.43277 -0.10000 0.35580 -0.08286 " -"0.35472 -0.07714 0.28571 -0.07295 0.34857 -0.07295 0.28000 -0.06878 0.27957 0.07714 " -"0.43168 0.07714 0.28571 0.08134 0.42857 0.08025 21 0 6 4 0 " -"1 2 0 2 6 3 6 2 8 5 10 5 7 10 6 5 8 5 6 3 10 " -"7 12 9 12 7 12 13 14 11 12 9 12 11 13 18 17 19 17 21 19 15 " -"14 13 15 13 17 21 17 22 17 20 22 18 16 17 20 17 13 " -; - -char *VTK_VECTOR_TEXT_45 = (char *) "8 0.606146 " -"0.19118 0.26000 0.19429 0.25689 0.60000 0.25580 0.60615 0.26000 0.19118 0.38571 " -"0.60615 0.38571 0.19429 0.38882 0.60000 0.38991 6 6 1 2 6 0 " -"1 6 2 7 6 4 0 7 2 3 " -"5 7 3 " -; - -char *VTK_VECTOR_TEXT_46 = (char *) "13 0.432768 " -"0.28571 -0.07295 0.42286 -0.07295 0.42857 -0.07186 0.27848 -0.06571 0.28000 -0.06878 " -"0.43277 -0.06571 0.27848 0.07143 0.43277 0.07143 0.27957 0.07714 0.43168 0.07714 " -"0.28571 0.08134 0.42286 0.08134 0.42857 0.08025 11 0 " -"3 4 3 0 1 8 6 10 5 1 2 3 1 5 6 3 5 6 7 11 6 " -"5 7 10 6 11 9 12 11 9 11 7 " -; - -char *VTK_VECTOR_TEXT_47 = (char *) "5 0.562348 " -"0.14389 -0.08857 0.14857 -0.09256 0.25004 -0.08857 0.56235 1.04286 0.46286 1.04358 3 2 0 1 4 0 2 3 " -"4 2 " -; - -char *VTK_VECTOR_TEXT_48 = (char *) "53 0.926804 " -"0.53714 -0.09009 0.59429 -0.09009 0.66857 -0.07673 0.43429 -0.06723 0.73143 -0.05070 " -"0.34286 -0.00972 0.80571 0.01025 0.54857 0.02152 0.61714 0.02891 0.30241 0.03714 " -"0.65714 0.04645 0.46857 0.05007 0.42473 0.08857 0.70286 0.08454 0.26645 0.10000 " -"0.86943 0.11143 0.39955 0.12286 0.73800 0.13429 0.23748 0.18000 0.37034 0.19714 " -"0.76252 0.20286 0.91236 0.26000 0.21866 0.26571 0.35621 0.26571 0.77823 0.28857 " -"0.34437 0.40286 0.92680 0.40286 0.20420 0.40857 0.78705 0.54000 0.20723 0.58000 " -"0.92420 0.58571 0.35277 0.64286 0.22177 0.69429 0.76571 0.72437 0.89966 0.74000 " -"0.37756 0.76286 0.74498 0.79143 0.26073 0.82571 0.85927 0.84857 0.42473 0.85429 " -"0.70439 0.85429 0.46286 0.88902 0.66286 0.89007 0.30241 0.90000 0.51009 0.91143 " -"0.58286 0.91823 0.80725 0.92857 0.77714 0.95829 0.38350 0.98000 0.71429 0.99927 " -"0.46286 1.01681 0.65714 1.01959 0.53714 1.02991 53 2 8 1 0 7 3 5 16 9 2 10 8 0 " -"1 8 7 0 8 12 16 5 11 3 7 3 12 5 15 20 17 11 12 3 13 " -"6 17 6 13 4 9 16 14 10 4 13 14 19 18 4 10 2 15 17 6 19 " -"14 16 21 24 20 23 18 19 22 25 27 24 26 28 23 22 18 21 20 15 26 " -"24 21 22 23 25 29 27 25 29 31 32 28 30 33 31 29 25 30 28 26 32 " -"35 37 46 40 36 30 34 33 32 31 35 43 39 48 43 37 35 38 36 33 38 " -"33 34 42 40 49 48 41 50 39 43 35 47 40 46 46 36 38 41 44 50 45 " -"52 44 42 51 45 41 48 39 49 40 47 50 44 52 52 45 51 42 49 51 " -; - -char *VTK_VECTOR_TEXT_49 = (char *) "11 0.708571 " -"0.58286 -0.07186 0.70857 -0.07186 0.30857 0.62908 0.31429 0.62657 0.38286 0.65641 " -"0.30785 0.75143 0.57714 0.77731 0.47429 0.85616 0.56384 0.94000 0.62857 1.02915 " -"0.70857 1.02882 9 6 0 1 2 4 5 7 5 4 2 3 4 6 " -"8 7 6 7 4 10 8 6 10 6 1 10 9 8 " -; - -char *VTK_VECTOR_TEXT_50 = (char *) "43 0.914286 " -"0.18857 -0.06878 0.91429 -0.06878 0.18748 -0.04286 0.19849 0.00857 0.91429 0.05164 " -"0.38142 0.06000 0.22943 0.07714 0.46286 0.15868 0.30286 0.17832 0.38286 0.25813 " -"0.58413 0.43143 0.78286 0.44454 0.67543 0.52286 0.85355 0.53429 0.72045 0.58000 " -"0.89756 0.62571 0.75470 0.64286 0.35168 0.70000 0.91236 0.70000 0.77295 0.71143 " -"0.21403 0.71714 0.77295 0.74571 0.22605 0.79143 0.37143 0.79804 0.90244 0.80857 " -"0.75429 0.81228 0.38902 0.83143 0.24359 0.84286 0.73143 0.84689 0.42454 0.87143 " -"0.86607 0.88857 0.68000 0.89070 0.28000 0.90629 0.49143 0.90823 0.58857 0.91866 " -"0.82857 0.93555 0.31597 0.94571 0.37714 0.98784 0.76000 0.98657 0.44571 1.01470 " -"0.69143 1.01470 0.53714 1.02991 0.62857 1.02723 41 3 2 0 3 5 6 1 5 0 5 " -"3 0 1 4 5 6 5 8 7 8 5 9 8 7 9 7 10 11 10 7 10 " -"11 12 12 11 14 16 15 18 16 18 19 13 14 11 14 13 16 21 24 25 15 " -"16 13 21 19 18 23 27 22 17 23 22 24 21 18 27 23 32 17 22 20 31 " -"42 34 30 28 25 26 32 23 40 31 38 35 28 30 36 32 26 29 36 26 34 " -"41 33 33 37 29 36 29 37 33 39 37 30 25 24 28 38 31 38 28 35 39 " -"33 41 31 40 42 41 34 42 " -; - -char *VTK_VECTOR_TEXT_51 = (char *) "68 0.927232 " -"0.52571 -0.09009 0.63429 -0.08395 0.45143 -0.07756 0.37143 -0.04498 0.74286 -0.04771 " -"0.30857 0.00132 0.81714 0.00439 0.54286 0.02152 0.60000 0.02420 0.64661 0.03714 " -"0.27429 0.03952 0.46857 0.04073 0.42857 0.06759 0.70857 0.07561 0.88213 0.08286 " -"0.23429 0.10772 0.38812 0.11714 0.74535 0.11714 0.91109 0.14571 0.77823 0.19143 " -"0.20764 0.20857 0.92723 0.22571 0.34286 0.23215 0.78437 0.27143 0.92723 0.27714 " -"0.75429 0.36430 0.89927 0.38571 0.72571 0.40132 0.86857 0.43270 0.67429 0.43927 " -"0.48000 0.45284 0.48571 0.44966 0.54857 0.46152 0.60000 0.46109 0.83429 0.46686 " -"0.72693 0.52286 0.49034 0.55714 0.49714 0.56395 0.78857 0.56473 0.58286 0.57109 " -"0.82857 0.60921 0.67429 0.61616 0.70400 0.64857 0.85294 0.65429 0.72680 0.70571 " -"0.87009 0.72286 0.35429 0.72298 0.22175 0.74571 0.72991 0.76286 0.72151 0.80286 " -"0.86244 0.80857 0.38857 0.82064 0.69143 0.85832 0.84571 0.85587 0.26241 0.87143 " -"0.43429 0.87829 0.64571 0.89641 0.48571 0.90723 0.29330 0.91714 0.60571 0.91252 " -"0.53143 0.91823 0.80384 0.92286 0.36000 0.97750 0.73143 0.98213 0.44571 1.01681 " -"0.65714 1.01470 0.52000 1.02991 0.60000 1.02723 66 3 11 " -"5 9 8 1 1 8 0 4 9 1 " -"9 4 13 7 0 8 6 13 4 17 13 " -"6 2 11 3 2 0 7 5 16 10 " -"12 5 11 10 16 15 11 2 7 16 5 " -"12 17 14 19 14 17 6 20 15 22 " -"19 18 23 22 15 16 14 18 19 21 23 " -"18 23 26 25 23 21 24 26 28 25 " -"30 32 36 25 34 27 35 32 33 35 29 " -"27 25 28 34 29 35 33 26 23 24 " -"37 36 32 39 32 35 35 27 34 37 32 " -"39 30 31 32 39 35 41 38 41 35 " -"38 42 41 40 42 38 42 40 44 40 43 " -"44 44 43 48 45 48 43 47 46 54 " -"49 48 50 50 48 45 49 53 52 63 52 " -"61 53 49 50 46 51 54 58 54 51 " -"58 55 62 62 55 64 66 57 60 61 52 " -"53 55 58 51 59 67 60 52 63 56 " -"56 65 59 55 57 64 64 57 66 65 56 " -"63 67 66 60 67 59 65 " -; - -char *VTK_VECTOR_TEXT_52 = (char *) "18 0.920000 " -"0.64571 -0.07295 0.64000 -0.06878 0.77143 -0.06878 0.77403 0.18571 0.16265 0.19143 " -"0.63429 0.18882 0.92000 0.19408 0.15891 0.31143 0.91735 0.31143 0.29653 0.31714 " -"0.63740 0.31714 0.77714 0.31403 0.16571 0.32228 0.16616 0.32286 0.63429 0.79380 " -"0.77186 1.02000 0.66857 1.02282 0.76571 1.02420 18 2 1 0 1 3 5 1 2 " -"3 3 10 5 9 4 5 4 9 7 " -"6 11 3 8 11 6 7 9 13 15 16 " -"14 9 5 10 7 13 12 13 14 16 " -"11 10 3 14 13 9 14 10 11 15 17 " -"16 15 14 11 " -; - -char *VTK_VECTOR_TEXT_53 = (char *) "54 0.932946 " -"0.52571 -0.09009 0.61714 -0.08665 0.44571 -0.07673 0.73143 -0.05179 0.35429 -0.03759 " -"0.78914 -0.01429 0.30286 0.00241 0.53714 0.02152 0.62857 0.03184 0.84115 0.03714 " -"0.46857 0.03927 0.66286 0.04645 0.26286 0.04921 0.42286 0.06759 0.71429 0.08439 " -"0.88045 0.09429 0.23343 0.10000 0.38812 0.10571 0.74535 0.12286 0.35748 0.16857 " -"0.77294 0.18000 0.91681 0.18000 0.20420 0.20857 0.34286 0.22376 0.78705 0.23714 " -"0.93295 0.27143 0.79009 0.31714 0.93252 0.33429 0.77714 0.38420 0.91681 0.42000 " -"0.34857 0.43034 0.75641 0.43143 0.23088 0.44857 0.72000 0.47868 0.40000 0.48400 " -"0.68000 0.50784 0.86902 0.51714 0.46857 0.52437 0.53143 0.53848 0.57714 0.53848 " -"0.58857 0.53621 0.60000 0.53580 0.82286 0.56972 0.38494 0.59714 0.77714 0.60535 " -"0.48571 0.64244 0.69714 0.64327 0.56571 0.65848 0.61714 0.65848 0.43891 0.87714 " -"0.44571 0.88395 0.88043 0.88857 0.88043 1.00857 0.33714 1.01182 52 7 1 " -"8 7 0 1 7 2 0 2 10 4 " -"6 13 12 3 8 1 3 11 8 10 2 " -"7 4 13 6 11 3 14 19 16 12 " -"3 5 14 9 14 5 10 13 4 22 19 " -"23 18 15 20 17 12 13 15 14 9 " -"14 15 18 19 12 17 25 26 24 20 21 " -"24 21 20 15 22 16 19 25 24 21 " -"26 25 27 29 28 26 29 26 27 43 37 " -"45 36 31 29 34 32 30 31 36 33 " -"31 28 29 32 34 43 48 47 41 45 38 " -"47 42 33 36 41 39 40 38 39 47 " -"37 38 45 47 39 41 44 33 42 43 34 " -"37 46 33 44 35 46 41 33 46 35 " -"46 48 41 32 43 53 43 49 53 49 50 " -"53 53 50 52 50 51 52 " -; - -char *VTK_VECTOR_TEXT_54 = (char *) "70 0.927232 " -"0.55429 -0.09009 0.66857 -0.08034 0.43429 -0.06213 0.75429 -0.04607 0.34857 -0.00972 " -"0.81143 -0.00439 0.59429 0.02152 0.51339 0.03143 0.85188 0.04286 0.67429 0.04645 " -"0.46286 0.05579 0.27384 0.07714 0.41714 0.09597 0.73143 0.09597 0.89355 0.11714 " -"0.38771 0.14000 0.91177 0.16857 0.77294 0.17429 0.22816 0.18571 0.36530 0.19714 " -"0.78705 0.24857 0.92680 0.25429 0.35320 0.26000 0.78665 0.30571 0.20420 0.31143 " -"0.35320 0.31143 0.92723 0.31714 0.36657 0.37429 0.77395 0.37429 0.75429 0.41841 " -"0.39179 0.42571 0.89756 0.44286 0.72000 0.46418 0.43429 0.47258 0.19891 0.50571 " -"0.33714 0.50495 0.48000 0.50213 0.66857 0.50086 0.86241 0.50571 0.55429 0.52134 " -"0.61143 0.51866 0.80403 0.56857 0.42286 0.58821 0.74286 0.60943 0.34134 0.63143 " -"0.50857 0.62823 0.68000 0.63252 0.57714 0.64134 0.21563 0.66000 0.77714 0.74697 " -"0.37502 0.75714 0.90966 0.76286 0.25673 0.80286 0.41901 0.83143 0.73143 0.85191 " -"0.45143 0.86686 0.87343 0.87714 0.30036 0.88286 0.68000 0.89514 0.50286 0.90086 " -"0.51429 0.90530 0.52000 0.90784 0.60571 0.91866 0.83846 0.92857 0.35429 0.94384 " -"0.40571 0.98150 0.76000 0.99229 0.49143 1.01748 0.68571 1.02041 0.56571 1.02991 70 " -"2 10 4 6 1 9 3 5 13 0 7 " -"2 3 9 1 1 6 0 9 3 13 " -"7 0 6 10 2 7 20 26 23 4 12 " -"11 13 8 17 4 10 12 11 19 18 " -"17 21 20 15 11 12 11 15 19 16 17 " -"14 18 22 24 8 14 17 8 13 5 " -"24 35 34 22 18 19 20 21 26 28 23 " -"26 21 17 16 24 27 35 24 22 25 " -"28 31 29 31 28 26 24 25 27 32 41 " -"37 30 35 27 34 44 48 35 33 42 " -"43 37 41 46 39 40 32 29 38 38 29 " -"31 33 35 30 33 36 42 42 36 45 " -"45 39 47 36 39 45 37 46 40 41 32 " -"38 46 37 43 47 39 46 44 34 35 " -"48 50 52 48 44 50 49 56 54 57 53 " -"64 57 52 50 54 66 58 51 56 49 " -"62 69 61 53 57 50 61 59 60 59 65 " -"55 65 64 55 58 68 62 55 64 53 " -"66 54 63 63 54 56 65 59 67 69 62 " -"68 67 59 61 69 67 61 68 58 66 " -; - -char *VTK_VECTOR_TEXT_55 = (char *) "17 0.923788 " -"0.37143 -0.07186 0.50286 -0.07186 0.36723 -0.06571 0.37335 0.02000 0.52991 0.11143 " -"0.40379 0.18571 0.59787 0.35143 0.47387 0.41429 0.66857 0.51873 0.53355 0.55143 " -"0.63384 0.72857 0.80893 0.76286 0.74359 0.88286 0.21714 0.88546 0.92379 0.91143 " -"0.21403 1.00857 0.92311 1.00857 15 3 0 1 2 0 3 3 4 5 4 3 1 6 7 5 6 5 4 9 " -"7 6 10 9 8 8 9 6 10 11 12 11 10 8 15 13 12 12 14 16 15 " -"12 16 11 14 12 " -; - -char *VTK_VECTOR_TEXT_56 = (char *) "83 0.926804 " -"0.53143 -0.08966 0.62857 -0.08665 0.45143 -0.07605 0.73714 -0.05641 0.38857 -0.05343 " -"0.34286 -0.02616 0.79429 -0.02250 0.28571 0.02445 0.58857 0.02152 0.50857 0.02823 " -"0.85258 0.03143 0.66937 0.04286 0.45143 0.05070 0.71429 0.07296 0.41143 0.07868 " -"0.24000 0.09016 0.89927 0.10571 0.37669 0.12286 0.76613 0.14000 0.21462 0.15714 " -"0.35849 0.16286 0.92109 0.17429 0.78705 0.22000 0.34437 0.22571 0.20420 0.27143 " -"0.92680 0.27143 0.78437 0.28286 0.34748 0.28857 0.77143 0.32947 0.91470 0.33429 " -"0.21714 0.34118 0.37502 0.36286 0.73296 0.39143 0.89057 0.39143 0.24359 0.40286 " -"0.41883 0.41429 0.69143 0.42722 0.27275 0.44286 0.85714 0.43841 0.46286 0.44371 " -"0.50286 0.45748 0.63429 0.45470 0.58286 0.46420 0.80507 0.48286 0.33143 0.49007 " -"0.40456 0.52286 0.72693 0.52286 0.32000 0.57616 0.54857 0.57580 0.62286 0.58319 " -"0.82082 0.58571 0.49714 0.58657 0.66286 0.60073 0.28527 0.61429 0.44571 0.61582 " -"0.70439 0.63714 0.85759 0.63714 0.25756 0.67143 0.72657 0.67143 0.39849 0.68286 " -"0.87470 0.68286 0.74134 0.72857 0.38705 0.73429 0.88109 0.76857 0.24764 0.77429 " -"0.73395 0.79714 0.39470 0.80286 0.87177 0.82000 0.71641 0.83714 0.27216 0.86571 " -"0.44000 0.87296 0.84486 0.88286 0.66286 0.89179 0.48000 0.90086 0.61714 0.91184 " -"0.54286 0.91823 0.31846 0.93429 0.80571 0.93555 0.38286 0.98616 0.72000 0.99800 " -"0.43429 1.01008 0.53143 1.02991 0.61714 1.02723 85 0 " -"9 2 12 4 2 1 8 0 6 11 3 5 14 7 9 0 8 8 1 11 4 " -"12 5 13 11 6 1 3 11 12 2 9 5 12 14 13 10 18 7 17 15 10 " -"13 6 15 20 19 7 14 17 18 16 22 16 18 10 20 15 17 19 23 24 16 " -"21 22 22 25 26 23 19 20 24 27 30 25 22 21 27 24 23 31 34 30 31 " -"37 34 29 28 26 31 30 27 29 26 25 33 28 29 28 33 32 36 32 43 37 " -"31 44 40 45 39 44 39 45 43 32 38 35 44 31 42 48 40 44 35 39 41 " -"46 42 36 46 41 32 33 38 48 42 49 46 36 43 48 45 40 42 46 49 51 " -"45 48 49 46 52 47 54 53 52 46 55 53 59 57 45 54 47 45 51 54 50 " -"55 46 59 53 54 50 58 55 58 50 61 57 62 64 61 63 65 56 61 50 57 " -"59 62 60 61 56 64 66 69 63 67 65 64 62 66 63 61 60 71 68 65 76 " -"69 66 72 68 77 71 65 67 76 70 78 70 76 66 74 82 75 80 78 70 79 " -"72 77 74 72 79 80 73 75 80 75 81 68 71 77 73 80 70 82 81 75 82 " -"74 79 " -; - -char *VTK_VECTOR_TEXT_57 = (char *) "72 0.927232 " -"0.50286 -0.09009 0.56000 -0.09009 0.42857 -0.07673 0.64571 -0.07395 0.36000 -0.04771 " -"0.74286 -0.02616 0.28759 0.01429 0.51429 0.02152 0.57143 0.02420 0.80115 0.02571 " -"0.47429 0.02891 0.42857 0.05007 0.64000 0.04943 0.24930 0.07714 0.39314 0.08286 " -"0.85229 0.10000 0.70902 0.11143 0.37057 0.12286 0.22177 0.17429 0.34857 0.18947 " -"0.75109 0.19714 0.89395 0.20286 0.75429 0.20739 0.75681 0.21429 0.90966 0.27143 " -"0.50286 0.30152 0.42857 0.31605 0.61714 0.31462 0.37714 0.33787 0.70286 0.35759 " -"0.78705 0.37429 0.32000 0.37846 0.58286 0.42152 0.50286 0.42891 0.63429 0.43184 " -"0.78286 0.43630 0.92723 0.43714 0.26286 0.44350 0.45143 0.45107 0.68571 0.45750 " -"0.41587 0.47714 0.23787 0.48857 0.74498 0.52286 0.36359 0.55143 0.21522 0.55714 " -"0.92680 0.56286 0.76571 0.57009 0.34437 0.63143 0.77823 0.63714 0.20462 0.69429 " -"0.77866 0.69429 0.91236 0.70000 0.35429 0.74118 0.76571 0.76404 0.21756 0.77429 " -"0.38286 0.80921 0.87343 0.82571 0.40759 0.84286 0.72571 0.84118 0.24527 0.84857 " -"0.69143 0.87527 0.84000 0.88221 0.47429 0.89641 0.28571 0.90975 0.63429 0.90784 " -"0.54857 0.91866 0.33143 0.95527 0.76000 0.96331 0.39629 0.99714 0.68571 1.00437 " -"0.49714 1.02723 0.57714 1.02991 72 3 8 1 2 11 4 0 7 2 " -"8 3 12 4 14 6 0 1 8 6 17 " -"13 10 2 7 7 0 8 5 12 3 " -"12 5 16 2 10 11 4 11 14 5 9 " -"16 18 13 19 16 15 20 15 23 20 " -"6 14 17 13 17 19 21 23 15 22 20 " -"23 23 24 30 16 9 15 23 21 24 " -"25 32 26 27 32 25 38 28 26 43 41 " -"37 34 29 39 33 26 32 29 34 27 " -"30 36 35 34 32 27 36 30 24 28 38 " -"31 31 38 37 35 39 29 38 26 33 " -"39 35 42 42 35 36 40 37 38 44 41 " -"43 42 36 46 44 47 49 43 37 40 " -"48 46 45 36 45 46 51 50 48 52 54 " -"49 47 44 43 50 51 53 51 48 45 " -"59 54 52 59 55 63 52 49 47 53 61 " -"58 56 53 51 55 59 52 53 56 61 " -"66 63 57 55 57 63 62 68 57 58 67 " -"60 67 58 61 68 66 57 60 69 64 " -"68 62 70 60 67 69 64 71 65 65 70 " -"62 70 65 71 64 69 71 " -; - -char *VTK_VECTOR_TEXT_58 = (char *) "14 0.432768 " -"0.28571 -0.07295 0.42857 -0.07186 0.28000 -0.06878 0.43277 -0.06571 0.27957 0.07714 " -"0.28571 0.08134 0.42857 0.08025 0.27957 0.57429 0.28571 0.57009 0.43168 0.57429 " -"0.27848 0.71714 0.43277 0.71714 0.28265 0.72286 0.42857 0.72329 10 " -"2 5 4 2 0 5 0 3 5 6 5 " -"3 0 1 3 7 8 10 10 11 13 " -"9 10 8 12 10 13 11 10 9 " -; - -char *VTK_VECTOR_TEXT_59 = (char *) "18 0.432768 " -"0.30857 -0.28726 0.36571 -0.25275 0.27323 -0.23714 0.39543 -0.22000 0.32384 -0.19143 " -"0.33756 -0.16857 0.42327 -0.15714 0.43277 -0.10000 0.35472 -0.07714 0.28571 -0.07295 " -"0.34857 -0.07295 0.28000 -0.06878 0.27957 0.07714 0.43168 0.07714 0.27957 0.57429 " -"0.43168 0.57429 0.28265 0.72286 0.42857 0.72329 14 2 1 4 5 4 3 0 1 " -"2 5 6 8 3 4 1 6 5 3 " -"6 7 8 11 10 12 12 10 13 8 7 " -"10 11 9 10 13 10 7 17 16 15 " -"15 16 14 " -; - -char *VTK_VECTOR_TEXT_60 = (char *) "11 0.952690 " -"0.94857 0.09939 0.95269 0.10571 0.95236 0.22571 0.22894 0.40857 0.38919 0.46571 " -"0.38919 0.47143 0.22748 0.52857 0.23192 0.53429 0.95098 0.70571 0.95216 0.83143 " -"0.94857 0.83523 9 4 0 2 5 7 6 4 3 0 0 1 2 7 " -"8 10 4 5 3 5 6 3 8 9 10 7 5 8 " -; - -char *VTK_VECTOR_TEXT_61 = (char *) "12 0.952768 " -"0.22857 0.23975 0.94857 0.23975 0.22437 0.35714 0.95277 0.35714 0.22857 0.36329 " -"0.94857 0.36329 0.22857 0.57385 0.94857 0.57385 0.22437 0.58000 0.95277 0.58000 " -"0.22857 0.69740 0.94857 0.69740 8 0 4 " -"2 0 1 5 4 0 5 3 5 1 " -"11 7 9 10 6 7 10 7 11 8 6 " -"10 " -; - -char *VTK_VECTOR_TEXT_62 = (char *) "11 0.952360 " -"0.23429 0.09914 0.22857 0.10169 0.22748 0.22571 0.23192 0.23143 0.95116 0.40857 " -"0.79073 0.46571 0.79073 0.47143 0.95236 0.52857 0.22897 0.70571 0.22857 0.83287 " -"0.23429 0.83563 9 1 0 2 3 2 0 3 0 5 4 7 5 4 " -"5 0 6 5 7 6 10 8 8 10 9 10 6 7 " -; - -char *VTK_VECTOR_TEXT_63 = (char *) "45 0.918074 " -"0.47429 -0.07186 0.62021 -0.07143 0.47118 0.07714 0.62329 0.07714 0.49979 0.19714 " -"0.62021 0.19714 0.49563 0.20286 0.49563 0.27714 0.63681 0.31714 0.50816 0.34571 " -"0.65714 0.36350 0.53669 0.41429 0.70857 0.42384 0.57868 0.47143 0.82857 0.53597 " -"0.86902 0.58571 0.73258 0.62000 0.90437 0.65429 0.76086 0.66000 0.77522 0.70000 " -"0.91580 0.70000 0.34857 0.71338 0.21034 0.73429 0.77866 0.75143 0.91807 0.76857 " -"0.22605 0.80857 0.76571 0.80375 0.38286 0.82144 0.73714 0.85191 0.25098 0.87143 " -"0.89143 0.86730 0.43597 0.88857 0.86812 0.90571 0.67429 0.90616 0.48571 0.91800 " -"0.62857 0.92538 0.29296 0.93429 0.54857 0.93277 0.81143 0.96670 0.35429 0.98821 " -"0.76571 0.99800 0.44571 1.02891 0.69714 1.02680 0.53143 1.04395 0.60000 1.04437 41 2 1 3 2 0 1 7 6 4 7 4 5 8 9 7 11 10 13 8 " -"7 5 8 10 11 9 8 11 13 12 16 12 13 10 14 16 12 14 15 16 16 " -"15 18 17 18 15 17 23 19 17 19 18 20 23 17 29 27 36 26 32 28 21 " -"25 22 26 23 24 27 29 25 24 23 20 36 31 39 28 40 33 30 26 24 35 " -"44 37 31 36 27 27 25 21 31 34 41 42 33 40 28 38 40 39 31 41 38 " -"28 32 26 30 32 42 35 33 41 34 43 43 37 44 34 37 43 44 35 42 " -; - -char *VTK_VECTOR_TEXT_64 = (char *) "114 1.632597 " -"0.92571 -0.39563 1.16571 -0.38109 0.74857 -0.37236 0.65143 -0.34613 1.33143 -0.33070 " -"0.54286 -0.29914 0.86286 -0.27866 1.06286 -0.28134 1.45650 -0.26000 0.73714 -0.25387 " -"1.21143 -0.25387 0.43429 -0.22384 0.62286 -0.21216 1.32144 -0.20857 1.55582 -0.17429 " -"0.53714 -0.16099 0.52571 -0.15258 0.53143 -0.15669 0.33714 -0.11650 1.45143 -0.11561 " -"0.46286 -0.09260 0.80000 -0.07295 1.20571 -0.07252 1.09714 -0.06891 0.71429 -0.06252 " -"1.49714 -0.06187 1.63260 -0.06000 0.29629 -0.04857 1.29714 -0.04498 0.90857 -0.03629 " -"1.03384 -0.02571 0.62857 -0.01582 0.40486 -0.00857 0.59429 0.01873 1.41143 0.03296 " -"0.82857 0.03907 0.77714 0.04327 1.01143 0.04414 1.20000 0.05050 1.16989 0.06571 " -"1.25143 0.06086 0.90857 0.06821 0.72000 0.07561 0.54771 0.09429 1.15580 0.09429 " -"0.24420 0.10000 0.35748 0.11143 0.96000 0.10725 0.68527 0.11714 1.33841 0.11714 " -"1.51579 0.15714 0.66177 0.17429 1.41355 0.20286 1.03514 0.20857 0.65295 0.23143 " -"0.22437 0.23714 0.51277 0.23714 0.33563 0.24857 1.45355 0.27714 1.07177 0.31143 " -"1.58478 0.31143 0.65966 0.32857 1.48319 0.36857 0.53184 0.39714 0.23277 0.40286 " -"0.34478 0.40857 1.60420 0.42571 1.08420 0.44286 0.71514 0.48857 0.25184 0.49429 " -"1.49295 0.49429 0.57229 0.50000 1.60109 0.52857 1.05714 0.54144 0.75846 0.55143 " -"0.38645 0.55714 1.47681 0.58571 1.01143 0.59527 0.81714 0.60331 1.58605 0.60857 " -"1.12878 0.61429 0.65714 0.62418 0.86286 0.62319 0.96571 0.62151 0.92571 0.62991 " -"0.42857 0.64350 1.44571 0.66730 0.32359 0.67714 1.06048 0.68286 0.74857 0.69641 " -"1.15429 0.71588 1.28235 0.71714 1.00571 0.71800 0.82857 0.73109 0.92000 0.74152 " -"1.52657 0.75143 0.51275 0.75714 0.37669 0.76286 1.38286 0.76132 0.59493 0.82571 " -"1.30857 0.82821 1.45561 0.84857 0.47429 0.87296 0.73143 0.89681 1.18286 0.89580 " -"1.08571 0.92395 1.37143 0.92400 0.92000 0.93580 0.58286 0.95188 1.30857 0.96371 " -"0.71429 1.00899 1.18286 1.01470 0.92000 1.04437 1.01143 1.04395 114 0 6 2 1 7 0 6 0 7 " -"7 1 10 2 9 3 3 12 5 9 2 " -"6 10 4 13 4 10 1 15 5 12 " -"5 15 11 13 8 19 12 3 9 8 13 " -"4 11 20 18 11 15 16 17 16 15 " -"14 19 8 26 25 14 20 11 16 22 38 " -"23 25 19 14 23 39 30 30 39 37 " -"27 46 45 18 32 27 32 18 20 21 36 " -"24 35 29 41 24 42 31 29 35 21 " -"22 28 40 38 22 40 34 49 40 33 31 " -"48 36 21 35 37 47 41 33 48 43 " -"43 51 56 44 37 39 34 40 28 47 37 " -"53 50 52 34 38 39 23 52 49 34 " -"37 44 53 27 32 46 42 24 36 48 31 " -"42 37 41 29 45 57 55 53 44 59 " -"51 54 56 52 50 58 58 60 62 43 48 " -"51 45 46 57 56 61 63 64 55 57 " -"91 80 44 60 58 50 62 66 70 56 54 " -"61 44 80 67 59 44 67 71 63 61 " -"64 65 69 67 80 73 65 64 57 66 62 " -"60 68 71 61 71 68 81 69 75 87 " -"72 70 66 74 81 68 77 73 80 70 79 " -"76 75 69 65 83 77 88 87 85 97 " -"81 74 89 89 78 93 86 76 79 70 72 " -"79 74 78 89 88 77 80 75 85 87 " -"82 84 94 91 90 80 86 95 98 78 82 " -"93 92 83 88 93 82 94 84 83 92 " -"94 84 92 97 96 102 95 86 79 102 99 " -"108 95 101 98 96 97 85 96 99 102 " -"98 101 100 103 108 99 100 109 104 106 100 " -"101 108 103 110 105 113 107 100 106 109 " -"104 111 105 107 112 110 111 104 109 113 105 " -"111 112 107 113 107 110 103 " -; - -char *VTK_VECTOR_TEXT_65 = (char *) "13 1.155731 " -"0.14455 -0.07143 1.00000 -0.07252 1.15573 -0.07143 0.29143 -0.07103 0.40981 0.25429 " -"0.86857 0.25754 0.45714 0.37713 0.82478 0.38000 0.45462 0.38571 0.58538 0.73429 " -"0.63429 0.90068 0.56000 1.02454 0.71429 1.02644 13 5 " -"1 2 0 8 11 6 4 5 12 10 7 0 3 4 0 4 8 6 5 7 6 " -"8 4 7 5 2 8 9 11 9 10 11 12 7 2 11 10 12 " -; - -char *VTK_VECTOR_TEXT_66 = (char *) "48 1.081090 " -"0.25714 -0.07186 0.78286 -0.06723 0.86857 -0.04899 0.93714 -0.02045 1.00725 0.03714 " -"0.39957 0.06000 0.73143 0.05621 0.80571 0.06891 1.04213 0.08857 0.87555 0.10571 " -"1.06437 0.14000 0.91070 0.15143 1.08109 0.22000 0.93295 0.22571 0.93252 0.26571 " -"1.07177 0.32286 0.90857 0.34064 1.04616 0.38571 0.86857 0.38686 0.79429 0.42252 " -"0.39957 0.43143 1.01296 0.43143 0.69714 0.43563 0.97143 0.46686 0.88197 0.51143 " -"0.40571 0.56437 0.72000 0.56705 0.39848 0.57429 0.96956 0.58571 0.80571 0.58930 " -"0.84686 0.62000 0.99641 0.62571 0.86943 0.65429 1.02437 0.70571 0.88420 0.71143 " -"1.02665 0.76857 0.87429 0.79232 1.01673 0.82000 0.84000 0.84984 0.77714 0.88538 " -"0.98607 0.88857 0.39957 0.89429 0.71429 0.89580 0.93143 0.95296 0.85714 0.99756 " -"0.80000 1.01470 0.25714 1.02615 0.70857 1.02680 50 1 6 0 2 7 1 " -"0 20 46 7 2 9 1 7 6 20 27 " -"46 9 4 11 4 9 3 2 3 9 " -"11 10 13 8 11 4 10 11 8 12 13 " -"10 14 17 16 14 15 17 16 21 18 " -"14 13 12 15 14 12 23 18 21 5 0 " -"6 19 26 22 18 24 19 16 17 21 " -"24 18 23 26 19 29 19 24 29 25 22 " -"26 22 25 20 30 29 24 32 28 31 " -"28 32 30 32 31 34 0 5 20 34 35 " -"36 33 34 31 28 30 24 36 40 38 " -"38 44 39 35 37 36 34 33 35 25 27 " -"20 27 41 46 40 36 37 43 38 40 " -"39 45 42 42 47 41 38 43 44 45 39 " -"44 47 46 41 47 42 45 " -; - -char *VTK_VECTOR_TEXT_67 = (char *) "56 1.186046 " -"0.69143 -0.08966 0.80000 -0.08705 0.60000 -0.07823 0.50857 -0.05070 0.93143 -0.05216 " -"0.45714 -0.02486 1.00000 -0.01473 0.39597 0.02000 0.69714 0.03563 0.74857 0.03563 " -"0.62286 0.04899 0.82286 0.04899 1.08000 0.05597 0.57143 0.06784 0.88000 0.07229 " -"0.32571 0.10064 0.93143 0.10759 0.49143 0.11901 1.13800 0.14000 0.45600 0.15714 " -"0.28930 0.16286 0.99641 0.18571 0.41502 0.22571 1.18605 0.27714 0.24319 0.28857 " -"1.04571 0.31105 0.38244 0.32857 0.22748 0.36286 0.36723 0.44286 0.21866 0.52857 " -"0.36991 0.55714 0.22705 0.60857 1.02857 0.69469 0.40657 0.71143 1.16694 0.72857 " -"0.26286 0.74089 0.44187 0.78000 1.13927 0.80857 0.97143 0.80914 0.48000 0.82725 " -"0.31750 0.84286 0.93714 0.85011 0.53143 0.86784 0.89143 0.88331 1.07582 0.90571 " -"0.64000 0.91252 0.64571 0.91335 0.65714 0.91563 0.38286 0.91868 0.78857 0.91823 " -"1.00571 0.96902 0.50286 0.99756 0.93143 1.01070 0.58286 1.02680 0.70286 1.04705 " -"0.80000 1.04437 54 " -"1 9 0 0 8 2 14 6 16 4 14 " -"11 24 20 22 7 17 15 2 10 3 " -"8 10 2 9 1 11 0 9 8 4 11 " -"1 3 13 5 12 16 6 10 13 3 " -"5 13 7 7 13 17 22 20 15 16 12 " -"21 14 4 6 19 15 17 23 25 18 " -"22 15 19 25 21 18 18 21 12 27 28 " -"29 27 24 26 26 24 22 28 27 26 " -"29 30 31 30 29 28 33 35 31 35 33 " -"40 33 31 30 34 37 32 48 42 51 " -"36 40 33 40 36 48 38 44 41 44 38 " -"37 32 37 38 48 39 42 36 39 48 " -"54 53 47 45 51 42 49 43 52 50 41 " -"44 47 45 46 41 50 43 45 53 51 " -"49 54 47 53 45 47 49 55 54 55 49 " -"52 52 43 50 " -; - -char *VTK_VECTOR_TEXT_68 = (char *) "34 1.167232 " -"0.26286 -0.07186 0.70286 -0.07252 0.80000 -0.06109 0.89714 -0.03355 0.99555 0.02571 " -"0.40528 0.06000 0.72571 0.05891 1.03582 0.06571 0.79547 0.07143 0.88000 0.10893 " -"1.08150 0.12857 0.92115 0.14571 0.96657 0.21429 1.13966 0.26571 0.99470 0.28857 " -"1.16420 0.39714 1.01823 0.43714 1.16723 0.52857 1.01823 0.53429 1.15277 0.64286 " -"1.00000 0.65848 0.97714 0.72375 1.11216 0.77429 0.94286 0.78057 0.87429 0.84902 " -"1.06607 0.85429 0.81714 0.87865 0.40528 0.89429 0.69143 0.89807 0.97714 0.94616 " -"0.90857 0.98657 0.81143 1.01580 0.26286 1.02615 0.70286 1.02680 34 2 6 1 5 0 1 " -"8 3 9 3 8 2 0 27 32 6 2 " -"8 5 1 6 4 7 11 4 9 3 " -"9 4 11 11 10 12 11 7 10 13 14 " -"12 14 15 16 13 12 10 16 17 18 " -"14 13 15 18 19 20 17 16 15 18 17 " -"19 22 21 20 21 22 23 29 24 23 " -"22 20 19 26 24 30 0 5 27 25 23 " -"22 29 23 25 30 24 29 26 31 28 " -"31 26 30 33 32 27 28 33 27 33 28 " -"31 " -; - -char *VTK_VECTOR_TEXT_69 = (char *) "15 1.080000 " -"0.26857 -0.07186 1.08000 -0.06878 1.08000 0.05164 0.41100 0.06000 0.41100 0.42571 " -"1.01143 0.43100 1.01563 0.55143 0.41714 0.55866 1.01143 0.55757 0.40991 0.56857 " -"0.41100 0.89429 1.05143 0.89957 1.05563 1.02000 0.26857 1.02615 1.05143 1.02615 13 0 4 13 1 3 0 1 2 3 0 " -"3 4 7 5 8 5 7 4 6 8 5 4 9 13 7 9 4 9 10 13 11 " -"14 10 14 13 10 12 14 11 " -; - -char *VTK_VECTOR_TEXT_70 = (char *) "12 1.005714 " -"0.26857 -0.07186 0.40571 -0.07186 0.40991 0.42000 0.41714 0.42723 0.92615 0.43143 " -"0.92615 0.55143 0.41714 0.55563 0.40991 0.56286 0.41100 0.89429 1.00571 0.90265 " -"1.00571 1.02307 0.26857 1.02615 10 0 2 " -"11 2 7 11 2 0 1 6 4 5 " -"4 6 3 3 6 2 7 2 6 7 8 " -"11 11 8 10 8 9 10 " -; - -char *VTK_VECTOR_TEXT_71 = (char *) "60 1.234286 " -"0.82286 -0.08966 0.65714 -0.07866 0.93143 -0.07335 0.56571 -0.05387 1.05143 -0.03355 " -"0.48000 -0.01514 1.12000 0.00073 0.74286 0.03866 0.83429 0.04177 0.38857 0.05044 " -"0.65143 0.05470 0.92571 0.06319 1.23260 0.07714 0.34857 0.09302 0.54286 0.10150 " -"1.03429 0.11229 0.50286 0.13044 1.09252 0.15714 0.44421 0.19714 0.27429 0.21629 " -"0.24252 0.31143 0.39320 0.31143 0.77714 0.36243 1.09143 0.35773 0.22748 0.39714 " -"0.37605 0.40286 0.77295 0.48286 0.77714 0.48900 1.23429 0.48900 0.22437 0.51143 " -"0.37295 0.51714 0.23320 0.59143 0.39748 0.65429 1.09143 0.68617 1.08571 0.69099 " -"0.42073 0.71714 1.21977 0.72286 0.27387 0.73429 1.06286 0.75301 0.30645 0.80286 " -"0.47616 0.80286 1.02286 0.82127 1.18498 0.82571 0.54286 0.86150 0.34857 0.86629 " -"0.94286 0.88371 1.14857 0.88793 0.61143 0.89580 0.86286 0.91184 0.40168 0.92286 " -"0.70857 0.91866 0.80000 0.92134 1.09714 0.94384 0.45714 0.96436 0.53714 1.00498 " -"1.00000 1.00371 0.93714 1.02613 0.62857 1.03252 0.73714 1.04705 0.84571 1.04395 58 0 7 1 14 5 3 5 14 " -"9 2 8 0 1 10 3 0 8 7 " -"8 2 11 18 13 9 17 6 12 10 1 " -"7 4 11 2 13 18 19 23 17 12 " -"15 6 17 4 6 15 16 9 14 11 4 " -"15 14 3 10 19 21 20 18 9 16 " -"30 31 29 23 27 22 25 24 20 22 27 " -"26 21 19 18 25 20 21 23 28 27 " -"28 23 12 29 24 25 30 29 25 31 32 " -"37 38 33 36 37 32 39 32 31 30 " -"35 39 32 34 33 38 39 40 44 38 46 " -"41 38 42 46 40 39 35 44 40 49 " -"53 43 54 43 49 40 42 38 36 43 47 " -"54 52 41 46 41 52 45 43 53 49 " -"54 47 57 50 57 47 45 56 48 55 45 " -"52 48 59 51 57 50 58 50 51 58 " -"56 45 55 58 51 59 59 48 56 " -; - -char *VTK_VECTOR_TEXT_72 = (char *) "16 1.125714 " -"0.26857 -0.07186 0.40571 -0.07186 0.98857 -0.07295 0.98286 -0.06878 1.12571 -0.06878 " -"0.40991 0.43714 0.41714 0.44437 0.97714 0.44329 0.41714 0.57277 0.97714 0.57385 " -"0.40991 0.58000 0.98550 1.02571 1.12571 1.02307 0.26857 1.02615 0.40571 1.02615 " -"1.12000 1.02723 14 4 9 7 0 5 13 5 10 13 " -"5 0 1 8 7 9 9 4 11 10 5 " -"8 6 8 5 4 3 2 7 8 6 " -"14 13 10 12 15 11 3 4 7 4 12 " -"11 " -; - -char *VTK_VECTOR_TEXT_73 = (char *) "4 0.428571 " -"0.42592 -0.07143 0.28571 -0.06878 0.28836 1.02571 0.42857 1.02307 2 1 3 2 3 1 0 " -; - -char *VTK_VECTOR_TEXT_74 = (char *) "27 0.790089 " -"0.45143 -0.09009 0.50857 -0.09009 0.37714 -0.07756 0.58404 -0.07714 0.33143 -0.06086 " -"0.64000 -0.05641 0.26489 -0.01429 0.71429 -0.00117 0.46286 0.03866 0.53714 0.04706 " -"0.74902 0.04857 0.41714 0.04899 0.57772 0.06571 0.21143 0.06772 0.37016 0.07714 " -"0.34498 0.11143 0.77252 0.11143 0.62371 0.11714 0.18705 0.16286 0.32462 0.17429 " -"0.64420 0.22571 0.79009 0.23143 0.18546 0.23714 0.31472 0.25429 0.64836 1.02571 " -"0.78857 1.02307 0.78286 1.02723 25 10 " -"12 7 4 2 11 0 1 8 3 8 1 11 2 8 0 8 2 8 3 9 9 " -"3 12 4 14 6 7 12 5 3 5 12 6 15 13 12 10 17 14 4 11 13 " -"19 18 6 14 15 22 19 23 17 16 20 13 15 19 16 17 10 22 18 19 21 " -"20 16 20 21 24 25 26 24 21 25 24 " -; - -char *VTK_VECTOR_TEXT_75 = (char *) "17 1.155019 " -"0.25714 -0.07186 0.39429 -0.07186 1.15502 -0.07143 0.97143 -0.07140 0.89527 0.28857 " -"0.89143 0.29371 0.89098 0.29429 0.39848 0.30000 0.57714 0.47913 0.40000 0.49126 " -"0.68956 0.56857 0.68571 0.57371 0.68527 0.57429 1.13216 1.02571 0.25714 1.02615 " -"0.39429 1.02615 0.94857 1.02680 15 0 9 14 0 7 9 3 10 8 3 6 10 9 8 16 4 5 6 7 " -"0 1 3 4 6 16 8 12 10 11 12 4 3 2 8 10 12 9 7 8 13 " -"16 12 15 14 9 " -; - -char *VTK_VECTOR_TEXT_76 = (char *) "7 0.941339 " -"0.25714 -0.07186 0.93714 -0.07186 0.94134 0.04857 0.39957 0.06000 0.93714 0.05472 " -"0.25714 1.02615 0.39429 1.02615 5 3 0 1 0 3 5 2 4 1 3 1 4 6 5 3 " -; - -char *VTK_VECTOR_TEXT_77 = (char *) "19 1.302857 " -"0.39164 -0.07143 0.71429 -0.07186 1.17143 -0.07295 0.25714 -0.06878 0.84000 -0.06947 " -"1.16571 -0.06878 1.30286 -0.06878 0.78286 0.09751 0.78857 0.09751 1.16000 0.83018 " -"0.40000 0.84467 0.52151 0.88286 0.52000 0.88739 0.51748 0.89429 0.47580 1.02000 " -"0.25979 1.02571 1.11429 1.02285 1.30286 1.02307 0.46857 1.02680 17 3 10 15 5 6 9 6 " -"5 2 1 11 10 4 8 1 1 7 11 9 16 8 1 8 7 9 8 4 10 " -"18 15 13 11 12 10 3 0 10 13 18 16 9 17 10 11 13 13 14 18 6 " -"17 9 " -; - -char *VTK_VECTOR_TEXT_78 = (char *) "14 1.125714 " -"0.26286 -0.07186 0.39429 -0.07186 0.98286 -0.07295 1.12571 -0.06878 0.98286 0.17231 " -"0.72045 0.31143 0.71678 0.31714 0.72000 0.31207 0.40000 0.78092 0.99122 1.02571 " -"1.12571 1.02307 0.26286 1.02615 0.40571 1.02644 1.12000 1.02723 12 " -"0 8 11 8 0 1 4 3 9 3 4 " -"2 4 5 2 6 7 5 12 6 4 " -"4 6 5 6 12 8 10 13 9 8 12 " -"11 3 10 9 " -; - -char *VTK_VECTOR_TEXT_79 = (char *) "63 1.267054 " -"0.70286 -0.08966 0.77714 -0.08966 0.61143 -0.07605 0.89714 -0.06823 0.97143 -0.04073 " -"0.49143 -0.03229 1.05650 0.00857 0.42286 0.01107 0.70857 0.03605 0.77143 0.03605 " -"0.63429 0.04899 0.84571 0.04899 1.12725 0.07143 0.35044 0.07714 0.92716 0.08286 " -"0.54857 0.08535 0.49143 0.12704 1.17465 0.13429 1.01296 0.15143 0.28571 0.17016 " -"0.43955 0.18571 1.21184 0.20286 0.40784 0.23714 1.08086 0.26000 1.24613 0.30000 " -"0.23109 0.31143 1.10665 0.34571 0.36764 0.36857 0.21295 0.43143 1.11848 0.43714 " -"1.26705 0.43714 0.36193 0.51143 1.11848 0.51714 0.21563 0.54571 0.36991 0.59143 " -"1.25522 0.61429 1.09966 0.63714 0.23236 0.64857 1.23681 0.68857 1.07070 0.71714 " -"0.41143 0.73016 0.26645 0.75143 1.20486 0.76857 0.45561 0.79714 1.02286 0.79270 " -"0.98857 0.82956 0.31429 0.83650 1.16045 0.84286 0.53143 0.86150 0.92000 0.87800 " -"0.35582 0.88857 0.63429 0.90764 0.85143 0.90613 1.10286 0.90956 0.71429 0.92134 " -"0.79429 0.91866 0.43493 0.95714 1.04000 0.95964 0.52000 1.00498 0.96000 1.00327 " -"0.89714 1.02613 0.63429 1.03866 0.77714 1.04705 63 0 8 2 1 9 0 8 10 2 2 10 5 9 1 11 5 " -"16 7 11 3 14 3 11 1 3 4 14 6 14 4 7 16 13 10 15 5 0 " -"9 8 16 5 15 14 6 18 13 20 19 12 18 6 18 17 23 17 21 23 20 " -"22 19 18 12 17 23 21 26 25 19 22 13 16 20 25 27 28 27 25 22 21 " -"24 26 30 29 26 32 35 36 30 26 24 33 34 37 32 29 30 28 31 33 31 " -"28 27 34 33 31 36 38 39 35 32 30 41 37 34 38 42 39 41 40 46 35 " -"38 36 39 47 44 40 43 46 53 45 44 46 43 50 45 57 49 40 41 34 56 " -"50 43 49 59 52 48 56 43 57 45 53 53 44 47 56 48 58 39 42 47 58 " -"51 61 59 49 57 51 58 48 55 52 60 62 54 55 59 60 52 61 54 62 54 " -"61 51 62 55 60 " -; - -char *VTK_VECTOR_TEXT_80 = (char *) "31 1.098661 " -"0.26286 -0.07186 0.40000 -0.07186 0.40420 0.36857 0.41143 0.37580 0.73714 0.37621 " -"0.88571 0.40034 0.98343 0.44857 0.41143 0.50420 0.72571 0.50420 0.40420 0.51143 " -"1.04045 0.51143 0.82947 0.52286 0.88571 0.55296 0.91678 0.58571 1.08252 0.59714 " -"0.93966 0.63143 1.09866 0.68286 0.94966 0.72857 0.93355 0.79143 1.08530 0.80857 " -"0.90857 0.83270 0.86857 0.86893 1.05927 0.87143 0.40528 0.89429 0.82286 0.88899 " -"0.74857 0.89807 1.02439 0.92286 0.96000 0.97641 0.89143 1.00538 0.26286 1.02615 " -"0.74286 1.02680 31 0 9 29 0 2 9 2 7 9 7 3 8 12 11 5 5 11 4 4 " -"8 3 3 7 2 2 0 1 11 8 4 13 12 6 10 13 6 6 12 5 14 " -"15 10 15 14 17 13 10 15 16 17 14 17 19 18 19 17 16 18 19 20 20 " -"27 21 22 20 19 9 23 29 30 25 24 25 30 23 27 20 26 20 22 26 28 " -"24 21 28 21 27 30 29 23 30 24 28 " -; - -char *VTK_VECTOR_TEXT_81 = (char *) "66 1.276398 " -"1.23429 -0.15444 1.13714 -0.11188 0.76571 -0.09009 0.64571 -0.08437 0.84000 -0.08034 " -"0.58286 -0.07034 1.27640 -0.06000 0.93143 -0.05470 0.46857 -0.02322 1.00000 -0.02293 " -"0.38857 0.03330 0.76000 0.03563 0.68000 0.03866 0.83547 0.04857 1.09814 0.04857 " -"0.61714 0.05177 0.87591 0.06571 0.55429 0.07800 0.80000 0.10784 0.49143 0.12132 " -"0.30857 0.12350 0.74115 0.12857 0.98286 0.13189 1.17355 0.14571 0.42857 0.19207 " -"0.86857 0.19927 0.26286 0.20486 1.05355 0.22000 0.77714 0.23134 0.39277 0.26000 " -"1.23177 0.27714 0.23387 0.28286 1.08823 0.30571 0.36420 0.36286 0.20991 0.40286 " -"0.35580 0.43714 1.25866 0.43714 1.11009 0.44286 0.20723 0.51714 1.25252 0.58000 " -"0.36420 0.59714 1.09823 0.60857 0.23470 0.67714 0.38857 0.68947 1.21184 0.73429 " -"1.05143 0.73841 0.42902 0.76857 0.28821 0.80286 1.00571 0.80413 1.17188 0.81429 " -"0.96000 0.84670 0.51429 0.85473 0.34473 0.88286 1.12000 0.88413 0.57714 0.89070 " -"0.88571 0.89070 0.64571 0.91252 0.76571 0.92093 0.42857 0.95759 1.03429 0.95864 " -"0.50286 0.99927 0.96571 0.99800 0.60000 1.03252 0.86857 1.03184 0.69714 1.04705 " -"0.77143 1.04665 66 0 6 1 " -"13 7 16 14 9 1 9 16 7 3 15 " -"5 16 9 14 11 4 13 11 2 4 " -"7 13 4 12 3 11 2 11 3 15 3 " -"12 5 17 8 8 19 10 10 19 20 " -"14 1 6 5 15 17 20 29 26 19 8 " -"17 21 18 28 22 16 14 16 25 18 " -"22 14 27 24 20 19 16 22 25 26 29 " -"31 18 25 28 14 23 27 27 30 32 " -"30 27 23 31 33 34 20 24 29 37 32 " -"30 33 31 29 34 33 38 36 37 30 " -"35 38 33 37 39 41 38 40 42 37 36 " -"39 41 44 45 40 38 35 42 43 47 " -"44 41 39 46 47 43 43 42 40 47 46 " -"52 45 49 48 59 50 48 52 51 58 " -"53 48 49 61 50 59 50 61 55 58 51 " -"60 51 52 46 49 45 44 59 48 53 " -"57 64 56 60 54 62 55 63 57 51 54 " -"60 54 56 62 62 56 64 63 55 61 " -"63 65 57 57 65 64 " -; - -char *VTK_VECTOR_TEXT_82 = (char *) "46 1.225355 " -"0.26857 -0.07186 0.40571 -0.07186 1.05143 -0.07215 1.22359 -0.07143 1.22535 -0.06571 " -"1.17465 0.01429 1.17143 0.01936 1.17098 0.02000 0.84571 0.24343 1.00571 0.27650 " -"0.76571 0.34698 0.91832 0.37429 0.73143 0.37678 0.40991 0.40857 0.68000 0.40437 " -"0.41714 0.41580 0.62286 0.41538 0.84226 0.42571 0.92571 0.44706 0.99429 0.47502 " -"1.07582 0.54000 0.41714 0.54420 0.40991 0.55143 0.80000 0.54764 0.88000 0.56538 " -"1.11641 0.60286 0.94286 0.60439 0.96784 0.63714 1.13823 0.67714 0.98966 0.69429 " -"0.99277 0.74571 1.14134 0.75143 0.97143 0.81493 1.12823 0.82000 0.93143 0.86115 " -"1.10498 0.87714 0.89143 0.88498 0.40991 0.90000 0.41714 0.90723 0.78857 0.90723 " -"1.07011 0.92857 1.01714 0.97579 0.97143 0.99865 0.87429 1.02109 0.26857 1.02615 " -"0.80571 1.02723 46 2 9 8 3 5 2 0 37 " -"44 5 7 2 5 6 7 3 4 5 " -"2 7 9 18 23 17 11 8 9 8 11 " -"10 0 22 37 11 17 10 21 16 23 " -"21 15 16 23 10 17 19 24 18 23 18 " -"24 23 12 10 15 21 13 0 21 22 " -"16 14 23 23 14 12 20 26 19 26 20 " -"27 24 19 26 27 25 29 28 30 29 " -"31 30 28 25 27 20 30 33 32 28 29 " -"25 33 30 31 32 40 34 35 32 33 " -"0 1 13 0 13 21 41 34 40 43 36 " -"42 38 39 45 32 35 40 42 34 41 " -"34 42 36 36 43 39 44 38 45 43 45 " -"39 37 38 44 " -; - -char *VTK_VECTOR_TEXT_83 = (char *) "69 1.081090 " -"0.71429 -0.08966 0.53714 -0.07866 0.82286 -0.07101 0.46286 -0.05959 0.38857 -0.02616 " -"0.94286 -0.01678 0.33714 0.01044 0.64000 0.03866 0.73143 0.04177 1.00571 0.03883 " -"0.56000 0.05177 0.28527 0.06571 0.50857 0.06930 0.83587 0.07143 1.04086 0.08857 " -"0.88127 0.10000 0.43429 0.11330 0.24486 0.13429 0.92613 0.15714 1.07177 0.16286 " -"0.38771 0.16857 0.94134 0.21429 0.36319 0.22571 0.21563 0.23714 1.08109 0.26571 " -"0.21403 0.27714 0.93294 0.27714 0.34857 0.28916 0.91011 0.31714 1.06816 0.32857 " -"0.84000 0.36943 1.04486 0.38000 0.76571 0.39673 0.98286 0.45241 0.53143 0.45748 " -"0.42857 0.49343 0.92571 0.49070 0.37143 0.52535 0.82857 0.53109 0.31044 0.58000 " -"0.53143 0.60899 0.43429 0.65616 0.26244 0.67143 0.39891 0.71143 0.90857 0.71084 " -"0.25295 0.72286 1.04615 0.72286 0.39320 0.76857 0.40359 0.80857 1.03109 0.81429 " -"0.26327 0.82000 0.87429 0.81493 0.45143 0.86956 0.82286 0.87258 0.28930 0.88286 " -"0.98812 0.90000 0.50857 0.90041 0.76571 0.90151 0.57714 0.91563 0.67429 0.91866 " -"0.95443 0.94000 0.35429 0.96099 0.89143 0.98784 0.40000 0.99188 0.83429 1.01470 " -"0.50286 1.03184 0.74857 1.03823 0.57143 1.04437 0.67429 1.04705 67 2 " -"8 0 0 7 1 6 4 16 6 16 11 0 8 7 7 10 1 8 2 13 5 " -"15 13 1 10 3 10 12 3 9 15 5 4 3 12 15 14 18 5 13 2 14 " -"15 9 16 4 12 21 24 26 18 19 21 11 20 17 20 11 16 17 22 23 19 " -"18 14 22 17 20 25 23 27 23 22 27 24 21 19 26 31 28 28 33 30 24 " -"29 26 30 38 32 26 29 31 34 32 38 33 28 31 34 40 35 33 36 30 39 " -"43 42 38 30 36 41 37 35 40 34 38 37 41 39 41 35 40 50 48 54 39 " -"41 43 44 46 49 45 42 43 45 47 50 48 50 47 60 51 55 47 45 43 51 " -"60 53 54 48 61 44 49 51 55 51 49 48 52 61 56 63 52 57 66 59 61 " -"52 63 63 56 65 62 53 60 53 64 57 53 62 64 59 66 58 65 58 67 58 " -"65 56 66 57 64 67 58 68 68 58 66 " -; - -char *VTK_VECTOR_TEXT_84 = (char *) "8 1.045714 " -"0.54286 -0.07186 0.68000 -0.07186 0.53757 0.89429 0.68528 0.89429 0.17714 0.90265 " -"1.04571 0.90265 0.17979 1.02571 1.04571 1.02307 6 0 3 2 3 0 " -"1 6 4 2 6 3 7 6 2 3 " -"3 5 7 " -; - -char *VTK_VECTOR_TEXT_85 = (char *) "32 1.126804 " -"0.65714 -0.09009 0.77143 -0.08705 0.53143 -0.07034 0.85714 -0.07101 0.47429 -0.05070 " -"0.94286 -0.03629 0.38286 0.00704 1.02286 0.02445 0.65714 0.04437 0.78857 0.05320 " -"0.33669 0.06000 0.58286 0.05748 0.84000 0.06823 0.52000 0.08535 1.07070 0.08857 " -"0.89714 0.10154 0.46857 0.13025 1.09966 0.15714 0.29143 0.15866 0.94899 0.17429 " -"0.43177 0.19714 0.27320 0.24286 0.97252 0.26000 1.12680 0.33429 0.26437 0.34000 " -"0.40991 0.34000 0.98134 0.34571 0.98550 1.02571 1.12571 1.02307 0.26857 1.02615 " -"0.40571 1.02615 1.12000 1.02723 30 3 9 1 10 20 18 8 0 " -"1 0 11 2 7 15 5 0 8 11 " -"8 1 9 9 3 12 13 4 2 5 12 " -"3 15 7 19 16 10 6 12 5 15 " -"4 13 6 13 2 11 21 18 20 13 16 " -"6 19 17 22 17 19 14 7 14 19 " -"10 16 20 25 24 21 23 26 22 23 22 " -"17 25 21 20 24 25 29 30 29 25 " -"28 31 27 26 23 27 23 28 27 " -; - -char *VTK_VECTOR_TEXT_86 = (char *) "8 1.148571 " -"0.57714 -0.07025 0.72571 -0.06947 0.64571 0.06079 0.65143 0.06062 0.15429 1.02560 " -"0.30286 1.02531 1.00571 1.02531 1.14857 1.02560 6 0 2 4 3 2 " -"0 3 7 6 1 3 0 3 1 7 " -"2 5 4 " -; - -char *VTK_VECTOR_TEXT_87 = (char *) "14 1.568063 " -"0.45143 -0.07186 0.60000 -0.07017 1.13143 -0.06912 1.27429 -0.06912 0.52571 0.09707 " -"1.20000 0.09787 1.13673 0.38000 0.86857 0.88103 0.16571 1.02562 0.78286 1.02446 " -"1.42857 1.02446 1.56806 1.02571 0.30857 1.02615 0.95429 1.02615 12 " -"2 6 7 6 2 5 1 4 0 7 9 " -"4 11 10 5 3 5 2 8 0 4 " -"13 7 6 9 7 13 7 4 1 11 5 " -"3 12 8 4 " -; - -char *VTK_VECTOR_TEXT_88 = (char *) "14 1.141168 " -"0.15194 -0.07143 1.14117 -0.07143 0.32000 -0.07106 0.97143 -0.07140 0.65143 0.37795 " -"0.74607 0.49429 0.56517 0.50000 0.74286 0.49909 0.74219 0.50000 0.65714 0.61727 " -"0.20016 1.02571 0.96000 1.02568 1.11260 1.02571 0.36571 1.02644 12 " -"0 2 6 3 5 4 5 6 4 5 8 " -"6 5 3 1 5 7 8 4 6 2 " -"9 6 8 12 11 8 6 13 10 13 6 " -"9 11 9 8 " -; - -char *VTK_VECTOR_TEXT_89 = (char *) "12 1.145205 " -"0.71164 -0.07143 0.57143 -0.06878 0.56891 0.39143 0.71787 0.39714 0.65143 0.51441 " -"0.43179 0.85429 0.42857 0.85936 0.42812 0.86000 0.15284 1.02571 0.32000 1.02535 " -"0.98286 1.02464 1.14521 1.02571 10 3 2 " -"1 3 1 0 4 2 3 2 9 8 " -"11 10 4 5 2 4 5 6 7 2 7 " -"9 2 5 7 11 4 3 " -; - -char *VTK_VECTOR_TEXT_90 = (char *) "11 1.040000 " -"0.17714 -0.07186 1.04000 -0.06878 1.04000 0.05164 0.17395 0.06000 0.34602 0.06000 " -"0.84777 0.89429 0.24000 0.89957 1.02395 0.90000 0.23580 1.02000 1.02286 1.02307 " -"0.24000 1.02615 9 0 4 3 1 4 0 1 2 4 3 4 5 5 " -"7 9 4 7 5 5 10 6 10 5 9 6 10 8 " -; - -char *VTK_VECTOR_TEXT_91 = (char *) "8 0.541339 " -"0.24528 -0.37429 0.54025 -0.37429 0.54025 -0.27143 0.38227 -0.26571 0.38286 0.91454 " -"0.54134 0.92286 0.24836 1.02571 0.53714 1.02615 6 0 4 6 3 1 " -"2 1 3 0 0 3 4 5 7 4 " -"6 4 7 " -; - -char *VTK_VECTOR_TEXT_92 = (char *) "5 0.564685 " -"0.46286 -0.09182 0.56000 -0.09256 0.56469 -0.08857 0.14713 1.04286 0.24571 1.04358 3 0 4 3 0 2 4 0 " -"1 2 " -; - -char *VTK_VECTOR_TEXT_93 = (char *) "9 0.465968 " -"0.17100 -0.37429 0.46597 -0.37429 0.17100 -0.27143 0.32571 -0.26723 0.33295 -0.26000 " -"0.33143 0.91201 0.17143 0.91979 0.16991 1.02000 0.46286 1.02615 7 2 0 3 1 " -"3 0 1 4 3 5 4 1 7 6 8 5 8 6 8 5 1 " -; - -char *VTK_VECTOR_TEXT_94 = (char *) "11 0.817005 " -"0.18389 0.44857 0.18857 0.44458 0.32000 0.44686 0.68571 0.44746 0.81143 0.44445 " -"0.81700 0.44857 0.49714 0.88224 0.50286 0.88224 0.44571 1.04090 0.55429 1.04168 " -"0.45143 1.04437 9 0 2 6 0 6 8 7 3 5 4 5 3 2 " -"0 1 10 7 9 10 8 6 10 6 7 9 7 5 " -; - -char *VTK_VECTOR_TEXT_95 = (char *) "4 1.011860 " -"0.11957 -0.37429 1.01186 -0.37429 0.11957 -0.28857 1.01186 -0.28857 2 2 1 3 2 0 1 " -; - -char *VTK_VECTOR_TEXT_96 = (char *) "11 0.486571 " -"0.38857 0.82420 0.48000 0.82420 0.48403 0.82571 0.37714 0.82989 0.38286 0.82575 " -"0.48657 0.83143 0.21296 1.02571 0.38771 1.02571 0.21412 1.03143 0.38286 1.03106 " -"0.37714 1.03295 9 5 1 2 0 3 4 3 10 6 0 1 5 7 " -"3 0 8 6 10 7 0 5 3 7 10 10 7 9 " -; - -char *VTK_VECTOR_TEXT_97 = (char *) "70 0.929303 " -"0.44000 -0.09009 0.50286 -0.08966 0.36571 -0.07756 0.57143 -0.07907 0.92716 -0.07143 " -"0.79429 -0.07106 0.92930 -0.06571 0.62857 -0.06151 0.30857 -0.05514 0.27429 -0.03258 " -"0.68000 -0.03629 0.90748 -0.00857 0.48000 0.01580 0.53143 0.01621 0.42768 0.02571 " -"0.76571 0.02129 0.22073 0.03143 0.61804 0.03714 0.89866 0.03714 0.37130 0.06000 " -"0.20613 0.06571 0.68000 0.07330 0.34538 0.10000 0.71429 0.10809 0.19580 0.11714 " -"0.89295 0.13429 0.33907 0.15714 0.74538 0.16857 0.20319 0.19714 0.36000 0.20914 " -"0.75580 0.22000 0.40000 0.24371 0.22812 0.25429 0.44571 0.26041 0.66286 0.29891 " -"0.28000 0.31258 0.75848 0.31714 0.75429 0.32399 0.33714 0.34657 0.38857 0.36538 " -"0.68571 0.41320 0.75772 0.43714 0.35289 0.48286 0.22093 0.50000 0.22857 0.49470 " -"0.89252 0.50571 0.75580 0.51143 0.22857 0.53547 0.37800 0.54571 0.74286 0.55301 " -"0.88680 0.56286 0.71429 0.58893 0.41714 0.59330 0.42228 0.59714 0.25800 0.60286 " -"0.42286 0.59759 0.65143 0.61959 0.48000 0.62193 0.86498 0.62571 0.53143 0.62950 " -"0.59429 0.62950 0.28187 0.63714 0.84571 0.65486 0.33714 0.68436 0.80571 0.69007 " -"0.37915 0.70571 0.72571 0.72538 0.45714 0.72966 0.54286 0.74152 0.62286 0.74152 70 " -"3 13 1 5 4 15 4 11 15 19 8 " -"2 13 3 7 13 0 1 14 0 12 " -"20 22 24 0 14 2 12 0 13 13 7 " -"17 11 4 6 19 2 14 17 10 21 " -"7 10 17 11 18 15 16 22 20 8 19 " -"9 15 23 21 15 21 10 23 25 27 " -"9 19 16 19 22 16 23 15 25 24 26 " -"28 27 25 30 25 15 18 30 25 36 " -"32 28 26 26 24 22 29 32 26 39 38 " -"31 38 35 29 32 29 35 31 38 29 " -"39 34 40 33 39 31 39 33 34 36 41 " -"37 40 37 41 37 40 34 41 36 25 " -"41 45 46 43 44 47 47 48 54 48 47 " -"44 50 49 46 41 25 45 50 46 45 " -"42 48 44 49 64 51 52 53 55 52 65 " -"63 65 52 55 52 61 48 52 63 61 " -"58 49 50 49 58 62 69 60 56 49 62 " -"64 54 48 61 57 67 65 57 65 55 " -"51 66 56 69 59 60 66 51 64 68 67 " -"57 59 69 57 69 68 57 69 56 66 " -; - -char *VTK_VECTOR_TEXT_98 = (char *) "49 0.932518 " -"0.61143 -0.09009 0.50286 -0.07823 0.36000 -0.07186 0.24000 -0.06878 0.72000 -0.06213 " -"0.45714 -0.05914 0.77143 -0.03188 0.36571 0.01806 0.59429 0.02193 0.83543 0.02571 " -"0.52000 0.02823 0.66857 0.04645 0.46857 0.05179 0.42704 0.08857 0.72956 0.10000 " -"0.88784 0.10571 0.39216 0.14000 0.75641 0.14000 0.91470 0.18000 0.37462 0.19143 " -"0.78665 0.23714 0.36152 0.28857 0.93252 0.29429 0.79236 0.36857 0.93252 0.37429 " -"0.36420 0.38000 0.77294 0.47714 0.39216 0.50000 0.90899 0.50000 0.42473 0.55143 " -"0.73143 0.55546 0.88657 0.55714 0.45883 0.58571 0.67429 0.60498 0.50857 0.61641 " -"0.63429 0.62252 0.56571 0.62991 0.37714 0.64118 0.83429 0.63841 0.37315 0.64857 " -"0.80571 0.66686 0.74286 0.70784 0.46857 0.71355 0.68571 0.72899 0.56571 0.74109 " -"0.61714 0.74152 0.24265 1.02571 0.37143 1.02307 0.36571 1.02723 49 3 25 46 5 1 10 5 12 7 8 0 4 11 6 14 11 " -"4 6 0 8 1 2 7 3 8 4 11 10 1 8 21 3 19 12 13 7 12 " -"5 10 14 9 17 9 14 6 17 15 20 16 7 13 15 18 20 15 17 9 3 " -"7 19 22 20 18 20 22 23 28 26 23 22 24 23 25 3 21 30 43 33 39 " -"46 25 28 23 24 27 39 25 26 31 30 7 16 19 31 26 28 37 32 42 39 " -"27 37 40 30 38 29 37 27 38 30 31 35 33 43 32 34 42 35 45 36 37 " -"29 32 42 34 36 45 35 43 43 30 41 41 30 40 36 45 44 42 36 44 47 " -"48 46 39 47 46 " -; - -char *VTK_VECTOR_TEXT_99 = (char *) "58 0.894057 " -"0.53143 -0.08966 0.59429 -0.08966 0.45714 -0.07673 0.68000 -0.07294 0.72571 -0.05343 " -"0.37714 -0.04331 0.33714 -0.01543 0.78857 -0.01011 0.58286 0.02152 0.29143 0.03016 " -"0.49625 0.03143 0.62857 0.03034 0.83107 0.03714 0.45714 0.04943 0.69270 0.06571 " -"0.26241 0.07143 0.85714 0.07873 0.40457 0.09429 0.72722 0.10571 0.37629 0.14000 " -"0.74437 0.14000 0.22899 0.14571 0.37184 0.15143 0.36930 0.15714 0.88571 0.15295 " -"0.89406 0.19714 0.76571 0.21540 0.21034 0.22571 0.34705 0.25429 0.20420 0.36286 " -"0.34478 0.36857 0.21673 0.45429 0.36252 0.47143 0.75429 0.47269 0.88058 0.48857 " -"0.88319 0.49429 0.38371 0.52286 0.23849 0.52857 0.72000 0.55200 0.86437 0.55714 " -"0.43025 0.58000 0.69714 0.58127 0.28527 0.61429 0.47429 0.60943 0.48571 0.61387 " -"0.83473 0.61429 0.49143 0.61641 0.63429 0.62041 0.54857 0.62950 0.58857 0.62991 " -"0.81296 0.64286 0.32168 0.65429 0.35429 0.67964 0.76571 0.68535 0.44571 0.72327 " -"0.67429 0.72816 0.53714 0.74109 0.60000 0.74109 56 2 13 5 0 8 2 11 4 14 " -"1 8 0 3 11 1 15 23 21 2 10 " -"13 11 8 1 11 3 4 7 14 4 " -"10 2 8 14 7 18 17 6 13 6 5 " -"13 17 15 9 18 12 20 7 12 18 " -"17 9 6 16 20 12 24 20 16 19 15 " -"17 15 19 23 23 19 22 27 28 29 " -"26 20 24 26 24 25 21 28 27 28 21 " -"23 29 30 31 28 30 29 31 32 37 " -"39 38 33 34 39 33 32 31 30 37 32 " -"36 55 49 47 37 36 42 51 42 36 " -"34 35 39 45 41 38 52 40 43 46 43 " -"44 50 41 45 56 49 57 40 51 36 " -"51 40 52 45 38 39 52 43 54 47 41 " -"53 54 46 48 56 48 49 53 41 50 " -"54 48 56 54 43 46 57 49 55 55 47 " -"53 " -; - -char *VTK_VECTOR_TEXT_100 = (char *) "48 0.885714 " -"0.51429 -0.09009 0.56571 -0.08966 0.62857 -0.07673 0.76571 -0.07186 0.88571 -0.06878 " -"0.41143 -0.06486 0.67429 -0.05641 0.36000 -0.03669 0.30286 0.01025 0.76000 0.01806 " -"0.53714 0.02152 0.49714 0.02891 0.60571 0.02891 0.68127 0.07143 0.41714 0.07561 " -"0.23787 0.10571 0.71579 0.11143 0.38241 0.11714 0.74135 0.16286 0.21395 0.16857 " -"0.74286 0.16739 0.74538 0.17429 0.34605 0.20286 0.76420 0.27714 0.19277 0.28857 " -"0.33295 0.28857 0.19277 0.36286 0.76152 0.38571 0.33563 0.39714 0.73355 0.50000 " -"0.22135 0.51143 0.36784 0.51714 0.69714 0.55841 0.42286 0.58686 0.26857 0.60793 " -"0.63429 0.60943 0.48571 0.62151 0.56571 0.62950 0.74857 0.64048 0.75269 0.64857 " -"0.30857 0.65582 0.65714 0.71355 0.40571 0.71756 0.50286 0.74109 0.55429 0.74152 " -"0.75693 1.02571 0.88571 1.02307 0.88000 1.02723 48 0 11 5 12 6 13 " -"1 2 12 7 14 8 10 0 1 14 7 " -"5 10 1 12 6 12 2 0 10 11 " -"8 17 15 9 16 13 14 5 11 4 9 " -"3 6 9 13 9 4 18 16 9 18 " -"15 22 19 17 8 14 22 15 17 20 18 " -"21 21 18 4 19 25 24 21 4 23 " -"25 19 22 26 24 25 26 28 30 39 27 " -"4 26 25 28 39 38 29 29 38 32 " -"27 39 29 30 31 34 32 38 35 31 30 " -"28 40 34 31 36 42 33 23 4 27 " -"35 41 37 33 40 31 40 33 42 41 35 " -"38 42 36 43 37 43 36 44 37 41 " -"37 44 43 46 47 45 39 4 45 4 46 " -"45 " -; - -char *VTK_VECTOR_TEXT_101 = (char *) "65 0.934539 " -"0.54857 -0.09009 0.61143 -0.09009 0.45714 -0.07462 0.71429 -0.07101 0.40571 -0.05641 " -"0.77714 -0.04331 0.33714 -0.01543 0.82857 -0.00670 0.29714 0.02154 0.56000 0.02152 " -"0.60571 0.02193 0.49714 0.03563 0.68159 0.04286 0.88150 0.05429 0.45714 0.05514 " -"0.26286 0.06636 0.72000 0.06759 0.40457 0.10000 0.91216 0.11143 0.77229 0.13429 " -"0.37057 0.15143 0.22034 0.15714 0.36613 0.16286 0.92834 0.16286 0.36359 0.16857 " -"0.91429 0.16966 0.79429 0.18111 0.35177 0.20286 0.20462 0.22571 0.33866 0.28286 " -"0.34286 0.28900 0.93454 0.29429 0.19848 0.35714 0.93295 0.39714 0.34857 0.40134 " -"0.78857 0.40134 0.34134 0.40857 0.79580 0.40857 0.20462 0.41429 0.35429 0.47261 " -"0.22327 0.49429 0.91429 0.48975 0.77143 0.50661 0.38857 0.54057 0.74857 0.54629 " -"0.40725 0.56286 0.25714 0.57001 0.71429 0.58154 0.87070 0.58571 0.45143 0.59759 " -"0.68000 0.60498 0.29296 0.62000 0.49143 0.61681 0.63429 0.62252 0.54857 0.62950 " -"0.59429 0.62991 0.33311 0.66000 0.81143 0.65543 0.77143 0.68607 0.41143 0.70930 " -"0.72000 0.71355 0.45714 0.72605 0.66857 0.73050 0.54286 0.74152 0.60000 0.74152 65 0 9 11 10 " -"1 3 10 3 12 5 12 3 17 8 6 10 0 1 0 11 2 4 14 6 0 " -"10 9 7 16 5 5 16 12 14 2 11 16 7 19 14 4 2 15 8 17 26 " -"18 25 17 6 14 15 27 21 7 13 19 23 25 18 20 15 17 26 19 18 18 " -"19 13 24 20 22 15 20 24 15 24 27 21 27 28 28 29 32 33 37 35 29 " -"28 27 32 29 38 35 34 30 40 39 46 33 35 30 31 33 30 36 38 29 36 " -"29 34 37 41 42 40 38 36 30 34 29 39 40 36 41 37 33 46 43 51 51 " -"49 56 42 48 44 48 42 41 44 48 47 49 51 45 43 46 39 56 49 59 50 " -"62 53 57 47 48 64 55 53 45 51 43 55 63 54 58 47 57 62 50 60 59 " -"52 61 59 49 52 47 60 50 61 54 63 60 47 58 61 52 54 64 53 62 55 " -"64 63 " -; - -char *VTK_VECTOR_TEXT_102 = (char *) "24 0.617143 " -"0.28000 -0.07186 0.40571 -0.07186 0.27472 0.61429 0.41100 0.61429 0.16571 0.61957 " -"0.56000 0.61957 0.56420 0.71714 0.16571 0.72329 0.27472 0.72857 0.41100 0.72857 " -"0.56000 0.72329 0.41034 0.83143 0.27580 0.86000 0.43429 0.89555 0.28613 0.91714 " -"0.46286 0.91294 0.50286 0.92134 0.60000 0.91830 0.31107 0.96857 0.34286 1.00099 " -"0.38857 1.02784 0.61714 1.03086 0.46286 1.04395 0.52571 1.04437 22 0 3 2 " -"3 0 1 4 8 7 9 3 5 2 3 " -"8 5 6 10 4 2 8 9 8 3 " -"8 11 12 11 8 9 12 11 14 9 5 " -"10 13 19 18 13 18 14 13 14 11 " -"23 15 16 15 23 22 21 23 17 15 20 " -"13 19 13 20 20 15 22 23 16 17 " -; - -char *VTK_VECTOR_TEXT_103 = (char *) "71 0.892518 " -"0.46857 -0.39295 0.56571 -0.39563 0.66286 -0.37959 0.35429 -0.36200 0.74286 -0.34616 " -"0.28571 -0.31868 0.80368 -0.30000 0.50857 -0.28437 0.62286 -0.27395 0.44571 -0.27101 " -"0.23387 -0.24286 0.84657 -0.24286 0.69200 -0.23714 0.38171 -0.23143 0.72150 -0.20286 " -"0.87177 -0.18000 0.34916 -0.15714 0.74899 -0.14000 0.22286 -0.13957 0.50857 -0.07295 " -"0.56000 -0.07295 0.43429 -0.05959 0.65143 -0.05070 0.37143 -0.03355 0.69714 -0.02527 " -"0.89252 -0.00857 0.74857 0.01873 0.75042 0.02000 0.75756 0.02000 0.75429 0.02333 " -"0.29143 0.03381 0.53143 0.03866 0.57143 0.03907 0.47429 0.05216 0.64000 0.05787 " -"0.41714 0.08704 0.68000 0.08439 0.23216 0.12857 0.38036 0.12857 0.72784 0.14000 " -"0.35277 0.18571 0.20530 0.20857 0.75538 0.20857 0.19320 0.28286 0.33295 0.29429 " -"0.76991 0.35714 0.19277 0.37429 0.33563 0.40857 0.75109 0.47143 0.35109 0.47714 " -"0.21143 0.47832 0.72784 0.52286 0.23787 0.55143 0.39044 0.55143 0.69868 0.56286 " -"0.66286 0.59393 0.27107 0.60857 0.45143 0.60498 0.48571 0.62041 0.56571 0.62991 " -"0.57714 0.62764 0.58286 0.62723 0.76571 0.63477 0.32000 0.66384 0.68571 0.70213 " -"0.39429 0.71229 0.77408 0.72286 0.88878 0.72286 0.62857 0.72816 0.46857 0.73580 " -"0.56000 0.74152 71 1 7 0 8 4 12 2 8 1 0 " -"9 3 7 1 8 5 13 10 9 0 7 13 5 3 8 2 4 6 14 12 6 " -"12 4 11 15 17 11 14 6 13 3 9 14 11 17 10 16 18 16 10 13 17 " -"25 28 23 21 33 22 32 20 32 19 20 35 23 33 19 31 21 23 35 30 31 " -"19 32 32 22 34 26 29 36 17 15 25 33 21 31 26 36 24 24 34 22 26 " -"27 29 36 34 24 36 29 39 30 38 37 39 28 25 39 29 28 37 40 41 38 " -"40 37 30 35 38 39 25 42 44 46 43 44 43 41 44 41 40 42 25 45 67 " -"51 48 46 47 50 67 48 45 47 46 44 50 49 52 49 50 47 67 62 51 62 " -"54 51 56 52 49 54 62 55 55 64 61 60 61 59 53 56 49 56 53 63 63 " -"57 65 65 58 69 65 57 58 70 59 61 59 69 58 64 55 62 67 45 25 67 " -"66 62 63 53 57 68 70 61 59 70 69 64 68 61 " -; - -char *VTK_VECTOR_TEXT_104 = (char *) "27 0.889502 " -"0.24571 -0.07186 0.37143 -0.07186 0.76000 -0.07186 0.88571 -0.07186 0.37605 0.40286 " -"0.37756 0.40857 0.75538 0.46000 0.88950 0.47714 0.38899 0.48286 0.74538 0.51714 " -"0.88152 0.54571 0.42439 0.55143 0.72000 0.56914 0.47429 0.59355 0.68000 0.60331 " -"0.85996 0.61429 0.53143 0.61748 0.61143 0.62379 0.37714 0.63983 0.81714 0.67296 " -"0.45714 0.70045 0.77714 0.70213 0.50857 0.72437 0.68571 0.73538 0.58857 0.74152 " -"0.24571 1.02615 0.37143 1.02615 25 0 " -"4 25 4 18 25 6 2 3 9 6 7 7 6 3 18 8 11 18 11 13 9 " -"15 12 12 19 14 10 9 7 18 13 20 8 4 5 15 9 10 4 0 1 18 " -"4 8 17 24 16 19 21 14 14 23 17 20 16 22 16 20 13 19 12 15 17 " -"23 24 23 14 21 24 22 16 18 26 25 " -; - -char *VTK_VECTOR_TEXT_105 = (char *) "8 0.377143 " -"0.25143 -0.07186 0.37714 -0.07186 0.25143 0.72329 0.37714 0.72329 0.25143 0.87403 " -"0.37714 0.87403 0.25143 1.02615 0.37714 1.02615 4 3 2 0 3 0 " -"1 4 5 6 7 6 5 " -; - -char *VTK_VECTOR_TEXT_106 = (char *) "18 0.375625 " -"0.14857 -0.39563 0.22286 -0.39252 0.07383 -0.38000 0.26857 -0.37914 0.31429 -0.34989 " -"0.34036 -0.31714 0.18857 -0.27462 0.10286 -0.26950 0.36109 -0.26571 0.22331 -0.24857 " -"0.37563 -0.16857 0.24152 -0.16286 0.24571 0.72329 0.37143 0.72329 0.24571 0.87403 " -"0.37143 0.87403 0.24571 1.02615 0.37143 1.02615 14 1 6 0 3 6 1 4 6 " -"3 9 10 11 7 0 6 7 2 0 " -"9 5 8 5 9 4 6 4 9 9 8 " -"10 11 10 12 13 12 10 14 15 16 " -"17 16 15 " -; - -char *VTK_VECTOR_TEXT_107 = (char *) "15 0.897876 " -"0.37450 -0.07143 0.89788 -0.07143 0.24571 -0.06878 0.73714 -0.07035 0.38004 0.24286 " -"0.68421 0.25429 0.68045 0.26000 0.68000 0.26064 0.46857 0.32924 0.38286 0.40888 " -"0.57152 0.42571 0.69714 0.72283 0.86359 0.72286 0.24836 1.02571 0.37714 1.02307 13 2 9 13 4 2 0 5 8 3 5 " -"3 1 5 6 7 9 14 13 11 9 10 5 7 8 7 10 8 8 9 4 12 " -"11 10 9 8 10 2 4 9 " -; - -char *VTK_VECTOR_TEXT_108 = (char *) "4 0.371429 " -"0.36878 -0.07143 0.24000 -0.06878 0.24265 1.02571 0.37143 1.02307 2 1 3 2 3 1 0 " -; - -char *VTK_VECTOR_TEXT_109 = (char *) "45 1.318074 " -"0.24571 -0.07186 0.37143 -0.07186 0.72000 -0.07295 1.18857 -0.07186 1.31429 -0.07186 " -"0.71429 -0.06878 0.84571 -0.06878 0.37866 0.37429 0.84723 0.40286 0.85335 0.46000 " -"0.39109 0.48286 0.71277 0.48286 1.18437 0.48286 1.31807 0.52286 0.87787 0.53429 " -"0.41143 0.53493 1.17395 0.54000 0.43582 0.56857 0.68784 0.56857 1.14857 0.58403 " -"0.93143 0.59188 0.66286 0.59829 0.82857 0.60801 0.51009 0.61429 0.36571 0.61924 " -"0.63429 0.61470 1.09714 0.61580 1.29355 0.62000 0.56000 0.62420 1.00571 0.62152 " -"1.06286 0.62379 0.41311 0.67143 0.78857 0.66975 1.25561 0.67714 0.90857 0.68902 " -"0.74286 0.70784 1.20571 0.71355 0.35735 0.72286 0.24571 0.72329 0.50286 0.72498 " -"0.99429 0.73109 1.16000 0.73109 0.67429 0.73470 0.57714 0.74109 1.05143 0.74152 43 6 5 2 0 7 38 8 11 5 7 0 1 8 5 6 12 3 4 12 " -"13 16 9 11 8 15 17 24 11 22 18 22 20 34 11 9 22 14 22 9 13 " -"12 4 24 17 31 7 10 38 10 15 24 16 27 19 32 21 18 24 37 38 20 " -"22 14 10 24 38 27 16 13 31 23 39 26 41 30 30 40 29 32 18 22 41 " -"19 36 34 29 40 19 41 26 36 19 33 23 31 17 35 21 32 29 34 20 39 " -"28 43 33 19 27 43 28 42 25 42 28 28 39 23 42 25 21 42 21 35 44 " -"30 41 30 44 40 " -; - -char *VTK_VECTOR_TEXT_110 = (char *) "38 0.889911 " -"0.24571 -0.07186 0.37143 -0.07186 0.75429 -0.07186 0.88571 -0.07186 0.24152 -0.06571 " -"0.37563 -0.06571 0.75009 -0.06571 0.88991 -0.06571 0.37605 0.40286 0.37866 0.41429 " -"0.38134 0.44857 0.74665 0.48286 0.88950 0.48286 0.39849 0.51143 0.73229 0.54000 " -"0.88420 0.54000 0.43011 0.56286 0.46286 0.58893 0.69714 0.58725 0.87008 0.59143 " -"0.51580 0.61429 0.65143 0.61343 0.36571 0.62031 0.56571 0.62420 0.60571 0.62379 " -"0.61714 0.62152 0.62286 0.62109 0.83955 0.64857 0.40725 0.66571 0.79429 0.69179 " -"0.45714 0.70213 0.24152 0.71714 0.75429 0.71355 0.35735 0.72286 0.24571 0.72329 " -"0.52571 0.73050 0.68571 0.73538 0.58857 0.74152 36 1 4 0 " -"3 6 2 1 5 4 3 7 6 6 12 " -"11 11 15 14 6 7 12 22 16 28 " -"10 8 9 13 22 10 10 22 8 8 4 " -"5 15 11 12 8 22 4 14 15 19 " -"14 19 18 25 26 24 16 22 13 16 17 " -"28 30 28 17 27 18 19 32 23 24 " -"29 18 27 30 20 35 18 32 21 31 4 " -"22 20 30 17 32 26 21 32 24 26 " -"32 18 29 34 31 33 33 31 22 35 23 " -"37 23 35 20 36 23 32 37 23 36 " -; - -char *VTK_VECTOR_TEXT_111 = (char *) "65 0.938661 " -"0.53143 -0.08966 0.59429 -0.09009 0.69143 -0.07101 0.41143 -0.06213 0.76571 -0.03759 " -"0.34857 -0.02821 0.81714 -0.00099 0.29143 0.02154 0.54286 0.02193 0.60571 0.02420 " -"0.50857 0.02823 0.64571 0.03563 0.86331 0.04857 0.45143 0.05216 0.25714 0.06636 " -"0.70857 0.07330 0.89229 0.09429 0.40000 0.09597 0.22771 0.12286 0.38036 0.12286 " -"0.37714 0.12793 0.37669 0.12857 0.75473 0.12857 0.76657 0.15143 0.77101 0.16286 " -"0.77355 0.16857 0.92319 0.18000 0.20764 0.18571 0.34816 0.19714 0.78605 0.20857 " -"0.33563 0.26000 0.19320 0.28286 0.93823 0.28857 0.79848 0.29429 0.33295 0.36286 " -"0.93866 0.37429 0.19580 0.39714 0.79538 0.39714 0.35277 0.47143 0.92319 0.47143 " -"0.21184 0.48286 0.77143 0.48947 0.23216 0.54000 0.38742 0.54000 0.89927 0.54000 " -"0.74286 0.54057 0.71429 0.57275 0.42286 0.57813 0.87678 0.58000 0.27429 0.60984 " -"0.48571 0.61580 0.64571 0.61580 0.54286 0.62950 0.58857 0.62950 0.60000 0.62723 " -"0.60571 0.62680 0.83225 0.63714 0.31025 0.64857 0.34857 0.67864 0.75429 0.69641 " -"0.40000 0.70784 0.45143 0.72605 0.68571 0.72538 0.53714 0.74152 0.60000 0.74109 65 11 4 15 8 " -"0 1 17 7 5 11 2 4 2 9 1 8 1 9 0 8 10 0 10 3 2 " -"11 9 3 13 5 10 13 3 6 12 22 6 15 4 15 6 22 18 28 27 17 " -"5 13 14 19 18 16 23 22 19 7 17 7 19 14 18 19 21 24 23 25 25 " -"23 16 19 20 21 16 22 12 26 29 25 27 30 31 26 25 16 28 18 21 29 " -"26 33 30 27 28 31 34 36 33 32 35 26 32 33 34 31 30 33 35 37 40 " -"36 34 37 39 41 40 38 42 39 37 35 47 57 43 38 40 34 43 49 42 46 " -"45 56 39 44 41 41 48 45 43 57 49 41 44 48 43 42 38 57 47 58 54 " -"55 53 56 45 48 50 60 47 64 63 53 64 55 62 53 63 52 59 62 51 61 " -"60 50 64 53 55 51 62 55 52 61 50 59 46 56 61 52 63 46 59 51 58 " -"47 60 " -; - -char *VTK_VECTOR_TEXT_112 = (char *) "49 0.935625 " -"0.24571 -0.37740 0.37454 -0.37429 0.56000 -0.08966 0.66857 -0.07966 0.47429 -0.06657 " -"0.75429 -0.04331 0.37584 -0.00286 0.80571 -0.00704 0.38286 0.00159 0.59429 0.02152 " -"0.52000 0.02891 0.63429 0.02992 0.85964 0.05429 0.45143 0.06725 0.70857 0.07330 " -"0.39787 0.13429 0.39514 0.14000 0.39216 0.14571 0.76213 0.14571 0.90538 0.14571 " -"0.37462 0.19714 0.78327 0.20857 0.92680 0.22571 0.36379 0.27143 0.36152 0.28286 " -"0.79580 0.29429 0.93563 0.30000 0.36379 0.36857 0.79580 0.36857 0.92680 0.43714 " -"0.78286 0.45547 0.38286 0.47232 0.75429 0.52921 0.41714 0.54057 0.88571 0.56444 " -"0.44571 0.57582 0.69143 0.59964 0.51429 0.62213 0.65143 0.62213 0.36571 0.63051 " -"0.56571 0.63563 0.82704 0.64857 0.45714 0.70784 0.74857 0.70657 0.24571 0.72329 " -"0.36000 0.72329 0.51429 0.73177 0.69143 0.72899 0.62286 0.74152 49 0 1 6 0 24 44 3 9 2 2 10 4 3 11 9 4 " -"13 8 10 2 9 11 5 14 11 3 5 7 14 5 4 10 13 14 12 18 14 " -"7 12 0 20 24 15 8 13 8 15 6 19 18 12 18 19 21 21 22 25 24 " -"27 44 17 15 16 22 21 19 28 25 26 22 26 25 6 15 17 29 30 28 23 " -"24 20 20 6 17 29 28 26 30 34 32 27 31 44 0 6 20 31 39 44 32 " -"41 36 41 32 34 31 33 39 42 37 46 39 35 42 34 30 29 39 33 35 38 " -"47 40 35 37 42 47 38 43 40 46 37 43 36 41 39 45 44 46 40 48 48 " -"40 47 38 36 43 " -; - -char *VTK_VECTOR_TEXT_113 = (char *) "52 0.885714 " -"0.76000 -0.37740 0.88571 -0.37740 0.56571 -0.09009 0.45143 -0.07673 0.65143 -0.06784 " -"0.36000 -0.03188 0.70857 -0.03465 0.75580 -0.00286 0.74857 0.00454 0.29714 0.02418 " -"0.54286 0.02152 0.57714 0.02193 0.58857 0.02420 0.59429 0.02462 0.47429 0.03927 " -"0.64571 0.04371 0.43302 0.06571 0.70670 0.09429 0.23914 0.11143 0.38607 0.11714 " -"0.38286 0.12221 0.38241 0.12286 0.75008 0.17429 0.21101 0.19143 0.34748 0.20857 " -"0.76723 0.25429 0.19848 0.26000 0.76723 0.27143 0.33605 0.28286 0.76991 0.28857 " -"0.19580 0.37429 0.33866 0.40286 0.75429 0.45277 0.21101 0.47143 0.35429 0.47832 " -"0.73143 0.51301 0.39846 0.56286 0.69296 0.56857 0.25669 0.58571 0.45143 0.60902 " -"0.61714 0.62213 0.49143 0.62723 0.76571 0.62602 0.29330 0.63714 0.56571 0.63522 " -"0.72403 0.67143 0.36571 0.69641 0.66286 0.71355 0.77408 0.72286 0.88571 0.72329 " -"0.44571 0.72966 0.56000 0.74152 52 29 27 25 " -"49 42 32 22 7 25 3 13 11 2 13 " -"3 4 13 2 6 15 4 11 13 12 " -"3 14 5 13 4 15 10 3 11 15 6 " -"8 14 3 10 15 8 17 24 23 18 " -"5 16 9 17 8 22 14 16 5 9 19 " -"18 19 20 21 18 19 21 42 35 32 " -"7 22 8 16 19 9 49 48 42 7 0 " -"1 24 18 21 23 24 26 26 28 30 " -"28 26 24 30 31 33 34 33 31 31 30 " -"28 33 34 38 49 29 25 36 43 38 " -"49 25 7 35 42 37 37 45 40 45 37 " -"42 29 49 32 45 47 40 39 43 36 " -"46 39 50 40 47 44 43 39 46 36 38 " -"34 41 44 51 41 50 39 49 7 1 " -"50 41 51 51 44 47 " -; - -char *VTK_VECTOR_TEXT_114 = (char *) "24 0.667686 " -"0.24571 -0.07186 0.37143 -0.07186 0.24152 -0.06571 0.37563 -0.06571 0.37563 0.38000 " -"0.39748 0.50000 0.41964 0.54571 0.44740 0.57429 0.61714 0.57787 0.62286 0.57880 " -"0.48000 0.59294 0.57714 0.59395 0.51429 0.60134 0.36571 0.61385 0.41868 0.68857 " -"0.66769 0.69429 0.66542 0.70000 0.24152 0.71714 0.35735 0.72286 0.24571 0.72329 " -"0.46286 0.72436 0.60000 0.73109 0.51429 0.74109 0.55429 0.74109 22 1 2 0 " -"1 3 2 4 2 3 5 6 13 5 13 " -"17 21 11 15 2 4 17 4 5 17 " -"6 7 13 18 17 13 7 10 14 13 7 " -"14 14 12 20 11 21 12 9 15 11 " -"12 14 10 19 17 18 20 12 22 8 9 " -"11 21 15 16 22 12 23 23 12 21 " -; - -char *VTK_VECTOR_TEXT_115 = (char *) "63 0.849502 " -"0.56000 -0.09009 0.46286 -0.08705 0.65143 -0.07395 0.37143 -0.06723 0.70444 -0.05429 " -"0.33143 -0.04943 0.76057 -0.02000 0.28571 -0.01813 0.79582 0.01429 0.50286 0.02152 " -"0.55429 0.02152 0.56571 0.02379 0.57714 0.02420 0.24571 0.02636 0.64000 0.04200 " -"0.41714 0.04371 0.22200 0.06571 0.38286 0.06725 0.68384 0.07714 0.83580 0.08286 " -"0.69927 0.10000 0.34200 0.12286 0.84950 0.14000 0.71009 0.15714 0.19109 0.16286 " -"0.19370 0.16857 0.32000 0.18615 0.69864 0.19143 0.84723 0.20286 0.65714 0.22784 " -"0.83641 0.24286 0.80956 0.28857 0.34286 0.32371 0.75429 0.33641 0.30286 0.34421 " -"0.69143 0.36327 0.25714 0.38445 0.22645 0.43714 0.41143 0.44538 0.37587 0.46571 " -"0.35885 0.48286 0.21295 0.49429 0.69143 0.50460 0.34478 0.51714 0.81977 0.52286 " -"0.67514 0.55143 0.35216 0.56286 0.22034 0.56857 0.64000 0.59465 0.38286 0.59829 " -"0.79429 0.61016 0.24000 0.61573 0.42857 0.62041 0.58286 0.62252 0.48571 0.62991 " -"0.74689 0.67143 0.28571 0.67258 0.70286 0.70045 0.33714 0.70613 0.38857 0.72538 " -"0.61714 0.73050 0.47429 0.74109 0.54286 0.74109 61 2 12 0 10 1 12 12 2 14 14 4 6 7 17 13 0 " -"12 1 4 14 2 11 10 12 15 3 1 3 15 5 9 1 10 14 6 18 15 " -"1 9 17 5 15 6 8 18 5 17 7 21 16 13 16 21 24 18 8 20 23 " -"28 27 21 13 17 19 22 23 26 25 21 21 25 24 20 19 23 19 20 8 28 " -"23 22 27 33 29 28 30 27 31 27 30 27 31 33 29 38 32 35 29 33 29 " -"35 38 34 38 36 32 38 34 36 40 37 39 36 38 41 43 47 43 41 37 36 " -"39 40 50 45 42 43 37 40 47 46 51 46 47 43 53 60 54 45 57 48 52 " -"58 49 45 55 57 51 49 56 49 51 46 50 42 44 48 57 53 56 49 58 55 " -"45 50 52 59 58 59 52 61 52 54 61 60 53 57 61 54 62 62 54 60 " -; - -char *VTK_VECTOR_TEXT_116 = (char *) "24 0.551972 " -"0.42286 -0.08395 0.48000 -0.08437 0.55197 -0.07143 0.33714 -0.05914 0.29901 -0.02571 " -"0.28041 0.00857 0.44571 0.04816 0.44453 0.04857 0.53714 0.04344 0.44000 0.05008 " -"0.41057 0.07714 0.26748 0.10000 0.40152 0.11714 0.26597 0.61429 0.40260 0.61429 " -"0.17143 0.61957 0.53450 0.62000 0.53866 0.71714 0.53450 0.72286 0.17143 0.72329 " -"0.26597 0.72857 0.40260 0.72857 0.26748 0.91714 0.40000 0.99545 22 10 5 4 " -"6 7 9 10 4 3 10 3 9 8 6 " -"1 6 9 1 5 10 11 8 1 2 " -"0 9 3 11 12 13 0 1 9 10 12 " -"11 17 18 16 14 13 12 21 14 16 " -"18 21 16 22 20 23 20 13 14 15 20 " -"19 15 13 20 20 14 21 23 20 21 " -; - -char *VTK_VECTOR_TEXT_117 = (char *) "38 0.884197 " -"0.48571 -0.09009 0.53714 -0.09009 0.41714 -0.07673 0.77143 -0.07295 0.88000 -0.07186 " -"0.63518 -0.06571 0.76571 -0.06878 0.88420 -0.06571 0.34857 -0.04771 0.70857 -0.01846 " -"0.29901 -0.00857 0.27429 0.02730 0.52000 0.02723 0.56000 0.02764 0.47339 0.03714 " -"0.76000 0.03684 0.61714 0.04135 0.43943 0.05429 0.65143 0.05787 0.41330 0.07714 " -"0.25143 0.08437 0.69143 0.08704 0.39343 0.10571 0.38899 0.11714 0.71473 0.11714 " -"0.38645 0.12286 0.73294 0.15714 0.23848 0.17429 0.37563 0.17429 0.75009 0.26000 " -"0.23848 0.71714 0.37295 0.71714 0.75009 0.71714 0.88420 0.71714 0.24265 0.72286 " -"0.36878 0.72286 0.75429 0.72329 0.88000 0.72329 36 6 3 15 " -"3 7 15 3 4 7 8 17 10 2 14 " -"17 2 17 8 5 13 1 19 11 10 " -"9 16 5 12 1 13 0 12 2 12 0 " -"1 9 18 16 13 5 16 14 2 12 " -"11 22 20 21 18 9 15 21 9 21 15 " -"24 20 28 27 11 19 22 24 7 26 " -"19 10 17 24 15 7 25 22 23 20 22 " -"25 20 25 28 26 7 29 31 30 27 " -"33 29 7 34 31 35 34 30 31 31 27 " -"28 36 33 37 32 29 33 36 32 33 " -; - -char *VTK_VECTOR_TEXT_118 = (char *) "12 0.884203 " -"0.45714 -0.06947 0.58857 -0.07103 0.52000 0.09808 0.52571 0.09808 0.47580 0.23714 " -"0.16151 0.71714 0.88420 0.71714 0.16427 0.72286 0.30286 0.71951 0.74857 0.72090 " -"0.88145 0.72286 0.29714 0.72395 10 4 0 " -"2 0 4 5 3 2 0 1 3 0 " -"3 6 9 8 11 5 9 6 10 7 5 " -"11 8 5 4 3 1 6 " -; - -char *VTK_VECTOR_TEXT_119 = (char *) "14 1.231638 " -"0.39429 -0.07215 0.52571 -0.07215 0.97714 -0.07252 0.84571 -0.06947 0.45714 0.10650 " -"0.46286 0.10650 0.92000 0.12073 0.69143 0.52785 0.15122 0.72286 0.28571 0.72090 " -"0.62857 0.72243 0.76193 0.72286 1.23164 0.72286 1.10857 0.72329 12 " -"2 6 3 0 4 8 3 6 7 5 0 " -"1 12 13 6 5 4 0 7 10 5 " -"11 10 7 7 5 1 11 7 6 4 9 " -"8 12 6 2 " -; - -char *VTK_VECTOR_TEXT_120 = (char *) "17 0.882498 " -"0.15697 -0.07143 0.88073 -0.07143 0.15473 -0.06571 0.31429 -0.07035 0.72571 -0.07140 " -"0.88250 -0.06571 0.52000 0.22529 0.52571 0.22529 0.60332 0.33429 0.43534 0.34000 " -"0.51429 0.45005 0.17188 0.71714 0.86812 0.71714 0.17412 0.72286 0.86588 0.72286 " -"0.32571 0.72395 0.71429 0.72395 15 1 5 4 2 6 9 8 6 7 3 2 0 4 8 7 6 2 3 4 " -"5 8 8 10 6 10 9 6 15 11 9 16 10 8 15 9 10 12 16 8 13 " -"11 15 16 12 14 " -; - -char *VTK_VECTOR_TEXT_121 = (char *) "16 0.888063 " -"0.34286 -0.39563 0.24000 -0.38043 0.41714 -0.37641 0.45714 -0.34956 0.50436 -0.29429 " -"0.32000 -0.26680 0.22286 -0.25766 0.36652 -0.25429 0.54371 -0.22000 0.41293 -0.21429 " -"0.46848 -0.07714 0.53714 0.09292 0.16998 0.72286 0.30857 0.71999 0.76000 0.72246 " -"0.88806 0.72286 14 2 7 0 0 5 1 5 0 7 " -"6 1 5 3 7 2 7 3 9 3 4 " -"9 9 8 10 9 4 8 10 11 12 " -"11 15 14 11 8 15 11 10 8 11 13 " -"12 " -; - -char *VTK_VECTOR_TEXT_122 = (char *) "17 0.872768 " -"0.17714 -0.07295 0.86857 -0.07186 0.17143 -0.06878 0.87277 -0.06571 0.17146 0.03714 " -"0.34212 0.03714 0.87277 0.03714 0.34132 0.04286 0.44000 0.04327 0.86857 0.04329 " -"0.20571 0.61689 0.67062 0.62000 0.84991 0.64286 0.20152 0.71714 0.84991 0.71714 " -"0.20571 0.72329 0.84571 0.72329 15 2 0 4 0 1 9 0 5 4 1 3 9 5 0 8 5 7 4 0 " -"9 8 3 6 9 12 14 11 11 14 16 11 16 10 12 11 7 11 4 7 10 " -"15 13 15 10 16 " -; - -char *VTK_VECTOR_TEXT_123 = (char *) "39 0.611429 " -"0.61143 -0.39454 0.46857 -0.38420 0.40000 -0.34154 0.61143 -0.27975 0.35748 -0.27143 " -"0.52000 -0.26992 0.47787 -0.23143 0.46748 -0.19143 0.34134 -0.18000 0.46395 0.04286 " -"0.33563 0.05429 0.45184 0.14571 0.32109 0.16286 0.29143 0.21832 0.42286 0.22716 " -"0.25143 0.24943 0.18857 0.26528 0.39429 0.26698 0.31413 0.32286 0.18857 0.38615 " -"0.25143 0.40073 0.41188 0.40286 0.29143 0.42775 0.43514 0.44286 0.32823 0.49429 " -"0.45866 0.52286 0.34134 0.60286 0.46705 0.80857 0.34478 0.84857 0.47748 0.87143 " -"0.35748 0.91143 0.50286 0.90821 0.50793 0.91143 0.50857 0.91188 0.61143 0.92814 " -"0.40571 0.99511 0.46857 1.03294 0.53143 1.04437 0.61143 1.04329 37 0 3 5 6 2 5 2 6 4 0 5 1 2 " -"1 5 4 7 8 7 4 6 8 9 10 10 11 12 9 8 7 11 10 9 12 " -"17 13 12 14 17 14 12 11 18 15 13 16 15 20 18 13 17 16 20 19 15 " -"18 20 21 22 18 22 21 24 22 20 18 24 25 26 23 24 21 25 24 23 26 " -"27 28 27 26 25 28 29 30 29 28 27 30 29 35 31 32 33 36 31 33 31 " -"36 29 36 33 37 34 38 37 35 29 36 34 37 33 " -; - -char *VTK_VECTOR_TEXT_124 = (char *) "4 0.388571 " -"0.28571 -0.39454 0.38857 -0.39563 0.28571 1.04329 0.38857 1.04437 2 3 2 0 3 0 1 " -; - -char *VTK_VECTOR_TEXT_125 = (char *) "35 0.606299 " -"0.17714 -0.39454 0.31429 -0.38613 0.39429 -0.33832 0.17714 -0.27975 0.27429 -0.26784 " -"0.43681 -0.26000 0.31070 -0.23714 0.44950 -0.19714 0.32723 -0.15714 0.45295 0.04857 " -"0.33295 0.11714 0.46857 0.16404 0.35387 0.19714 0.51429 0.23258 0.56000 0.25681 " -"0.39429 0.26403 0.60630 0.26571 0.47702 0.32857 0.41714 0.36742 0.60571 0.38615 " -"0.54857 0.39927 0.50171 0.43143 0.36086 0.43714 0.46748 0.50000 0.32991 0.56857 " -"0.45252 0.78571 0.32723 0.80286 0.31748 0.87143 0.29143 0.90893 0.43470 0.91714 " -"0.17714 0.92814 0.41629 0.95714 0.36571 1.01107 0.32000 1.03294 0.17714 1.04329 33 4 3 0 2 4 1 6 7 8 1 4 0 2 6 4 5 " -"6 2 6 5 7 8 9 10 9 8 7 10 11 12 15 13 17 11 10 9 12 " -"11 15 13 14 17 13 15 11 20 17 14 20 14 16 19 20 16 21 17 20 17 " -"21 18 22 23 24 22 18 21 23 22 21 25 26 24 25 24 23 29 27 26 29 " -"26 25 27 31 28 31 27 29 32 28 31 28 33 30 33 34 30 33 28 32 " -; - -char *VTK_VECTOR_TEXT_126 = (char *) "25 0.971429 " -"0.73714 0.34462 0.20759 0.35143 0.21143 0.34662 0.81143 0.34723 0.66857 0.35756 " -"0.86857 0.36135 0.25143 0.38115 0.90857 0.38086 0.52000 0.41580 0.32571 0.42723 " -"0.97140 0.43143 0.37143 0.43866 0.42286 0.44093 0.79429 0.49009 0.21028 0.50000 " -"0.72571 0.49681 0.86286 0.50930 0.25714 0.54115 0.92571 0.54759 0.32571 0.57470 " -"0.50286 0.57621 0.96571 0.58154 0.97143 0.58073 0.38857 0.58680 0.44000 0.58723 23 1 17 14 8 4 15 13 5 7 6 1 2 5 " -"13 3 1 6 17 3 13 0 16 10 18 15 4 0 13 7 16 15 0 13 8 " -"20 12 12 20 11 9 17 6 10 16 7 17 9 19 22 21 18 11 20 24 11 " -"19 9 20 8 15 11 24 23 22 18 10 11 23 19 " -; - - -// Construct object with no string set and backing enabled. -VTKViewer_VectorText::VTKViewer_VectorText() -{ - this->Text = NULL; - - this->Letters[33] = VTK_VECTOR_TEXT_33; - this->Letters[34] = VTK_VECTOR_TEXT_34; - this->Letters[35] = VTK_VECTOR_TEXT_35; - this->Letters[36] = VTK_VECTOR_TEXT_36; - this->Letters[37] = VTK_VECTOR_TEXT_37; - this->Letters[38] = VTK_VECTOR_TEXT_38; - this->Letters[39] = VTK_VECTOR_TEXT_39; - this->Letters[40] = VTK_VECTOR_TEXT_40; - this->Letters[41] = VTK_VECTOR_TEXT_41; - this->Letters[42] = VTK_VECTOR_TEXT_42; - this->Letters[43] = VTK_VECTOR_TEXT_43; - this->Letters[44] = VTK_VECTOR_TEXT_44; - this->Letters[45] = VTK_VECTOR_TEXT_45; - this->Letters[46] = VTK_VECTOR_TEXT_46; - this->Letters[47] = VTK_VECTOR_TEXT_47; - this->Letters[48] = VTK_VECTOR_TEXT_48; - this->Letters[49] = VTK_VECTOR_TEXT_49; - this->Letters[50] = VTK_VECTOR_TEXT_50; - this->Letters[51] = VTK_VECTOR_TEXT_51; - this->Letters[52] = VTK_VECTOR_TEXT_52; - this->Letters[53] = VTK_VECTOR_TEXT_53; - this->Letters[54] = VTK_VECTOR_TEXT_54; - this->Letters[55] = VTK_VECTOR_TEXT_55; - this->Letters[56] = VTK_VECTOR_TEXT_56; - this->Letters[57] = VTK_VECTOR_TEXT_57; - this->Letters[58] = VTK_VECTOR_TEXT_58; - this->Letters[59] = VTK_VECTOR_TEXT_59; - this->Letters[60] = VTK_VECTOR_TEXT_60; - this->Letters[61] = VTK_VECTOR_TEXT_61; - this->Letters[62] = VTK_VECTOR_TEXT_62; - this->Letters[63] = VTK_VECTOR_TEXT_63; - this->Letters[64] = VTK_VECTOR_TEXT_64; - this->Letters[65] = VTK_VECTOR_TEXT_65; - this->Letters[66] = VTK_VECTOR_TEXT_66; - this->Letters[67] = VTK_VECTOR_TEXT_67; - this->Letters[68] = VTK_VECTOR_TEXT_68; - this->Letters[69] = VTK_VECTOR_TEXT_69; - this->Letters[70] = VTK_VECTOR_TEXT_70; - this->Letters[71] = VTK_VECTOR_TEXT_71; - this->Letters[72] = VTK_VECTOR_TEXT_72; - this->Letters[73] = VTK_VECTOR_TEXT_73; - this->Letters[74] = VTK_VECTOR_TEXT_74; - this->Letters[75] = VTK_VECTOR_TEXT_75; - this->Letters[76] = VTK_VECTOR_TEXT_76; - this->Letters[77] = VTK_VECTOR_TEXT_77; - this->Letters[78] = VTK_VECTOR_TEXT_78; - this->Letters[79] = VTK_VECTOR_TEXT_79; - this->Letters[80] = VTK_VECTOR_TEXT_80; - this->Letters[81] = VTK_VECTOR_TEXT_81; - this->Letters[82] = VTK_VECTOR_TEXT_82; - this->Letters[83] = VTK_VECTOR_TEXT_83; - this->Letters[84] = VTK_VECTOR_TEXT_84; - this->Letters[85] = VTK_VECTOR_TEXT_85; - this->Letters[86] = VTK_VECTOR_TEXT_86; - this->Letters[87] = VTK_VECTOR_TEXT_87; - this->Letters[88] = VTK_VECTOR_TEXT_88; - this->Letters[89] = VTK_VECTOR_TEXT_89; - this->Letters[90] = VTK_VECTOR_TEXT_90; - this->Letters[91] = VTK_VECTOR_TEXT_91; - this->Letters[92] = VTK_VECTOR_TEXT_92; - this->Letters[93] = VTK_VECTOR_TEXT_93; - this->Letters[94] = VTK_VECTOR_TEXT_94; - this->Letters[95] = VTK_VECTOR_TEXT_95; - this->Letters[96] = VTK_VECTOR_TEXT_96; - this->Letters[97] = VTK_VECTOR_TEXT_97; - this->Letters[98] = VTK_VECTOR_TEXT_98; - this->Letters[99] = VTK_VECTOR_TEXT_99; - this->Letters[100] = VTK_VECTOR_TEXT_100; - this->Letters[101] = VTK_VECTOR_TEXT_101; - this->Letters[102] = VTK_VECTOR_TEXT_102; - this->Letters[103] = VTK_VECTOR_TEXT_103; - this->Letters[104] = VTK_VECTOR_TEXT_104; - this->Letters[105] = VTK_VECTOR_TEXT_105; - this->Letters[106] = VTK_VECTOR_TEXT_106; - this->Letters[107] = VTK_VECTOR_TEXT_107; - this->Letters[108] = VTK_VECTOR_TEXT_108; - this->Letters[109] = VTK_VECTOR_TEXT_109; - this->Letters[110] = VTK_VECTOR_TEXT_110; - this->Letters[111] = VTK_VECTOR_TEXT_111; - this->Letters[112] = VTK_VECTOR_TEXT_112; - this->Letters[113] = VTK_VECTOR_TEXT_113; - this->Letters[114] = VTK_VECTOR_TEXT_114; - this->Letters[115] = VTK_VECTOR_TEXT_115; - this->Letters[116] = VTK_VECTOR_TEXT_116; - this->Letters[117] = VTK_VECTOR_TEXT_117; - this->Letters[118] = VTK_VECTOR_TEXT_118; - this->Letters[119] = VTK_VECTOR_TEXT_119; - this->Letters[120] = VTK_VECTOR_TEXT_120; - this->Letters[121] = VTK_VECTOR_TEXT_121; - this->Letters[122] = VTK_VECTOR_TEXT_122; - this->Letters[123] = VTK_VECTOR_TEXT_123; - this->Letters[124] = VTK_VECTOR_TEXT_124; - this->Letters[125] = VTK_VECTOR_TEXT_125; - this->Letters[126] = VTK_VECTOR_TEXT_126; - -} - -void VTKViewer_VectorText::Execute() -{ - vtkPolyData *output = this->GetOutput(); - vtkPoints *newPoints; - vtkCellArray *newPolys; - int ptOffset = 0; - int aPoint, i; - int pos = 0; - float xpos = 0; - float ypos = 0; - int ptCount, triCount; - char *aLetter; - float width; - float ftmp[3]; - - if (this->Text == NULL) - { - vtkErrorMacro (<< "Text is not set!"); - return; - } - - // Set things up; allocate memory - newPoints = vtkPoints::New(); - newPolys = vtkCellArray::New(); - ftmp[2] = 0.0; - - // Create Text - while (this->Text[pos]) - { - switch (this->Text[pos]) - { - case 32: - xpos += 0.4; - break; - - case 10: - ypos -= 1.4; - xpos = 0; - break; - - default: - // if we have a valid character - if ((this->Text[pos] > 32)&&(this->Text[pos] < 127)) - { - // add the result to our output - aLetter = this->Letters[this->Text[pos]]; - ptCount = strtol(aLetter,&aLetter,10); - width = strtod(aLetter,&aLetter); - for (i = 0; i < ptCount; i++) - { - ftmp[0] = strtod(aLetter,&aLetter); - ftmp[1] = strtod(aLetter,&aLetter); - ftmp[0] += xpos; - ftmp[1] += ypos; - newPoints->InsertNextPoint(ftmp); - } - triCount = strtol(aLetter,&aLetter,10); - for (i = 0; i < triCount; i++) - { - newPolys->InsertNextCell(3); - aPoint = strtol(aLetter,&aLetter,10); - newPolys->InsertCellPoint(aPoint + ptOffset); - aPoint = strtol(aLetter,&aLetter,10); - newPolys->InsertCellPoint(aPoint + ptOffset); - aPoint = strtol(aLetter,&aLetter,10); - newPolys->InsertCellPoint(aPoint + ptOffset); - } - ptOffset += ptCount; - xpos += width; - } - break; - } - pos++; - } - - // - // Update ourselves and release memory - // - output->SetPoints(newPoints); - newPoints->Delete(); - - output->SetPolys(newPolys); - newPolys->Delete(); -} - -void VTKViewer_VectorText::PrintSelf(ostream& os, vtkIndent indent) -{ - this->Superclass::PrintSelf(os,indent); - - os << indent << "Text: " << (this->Text ? this->Text : "(none)") << "\n"; -} - -VTKViewer_VectorText::~VTKViewer_VectorText() -{ - if (this->Text) - { - delete [] this->Text; - } -} diff --git a/src/VTKViewer/VTKViewer_VectorText.h b/src/VTKViewer/VTKViewer_VectorText.h deleted file mode 100644 index 660257a35..000000000 --- a/src/VTKViewer/VTKViewer_VectorText.h +++ /dev/null @@ -1,67 +0,0 @@ -/*========================================================================= - - Program: Visualization Toolkit - Module: $RCSfile$ - Language: C++ - Date: $Date$ - Version: $Revision$ - - Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen - All rights reserved. - See Copyright.txt or http://www.kitware.com/Copyright.htm for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notice for more information. - -=========================================================================*/ -// .NAME vtkVectorText - create polygonal text -// .SECTION Description - -// vtkVectorText generates vtkPolyData from an input text string. Besides the -// ASCII alphanumeric characters a-z, A-Z, 0-9, vtkVectorText also supports -// ASCII punctuation marks. (The supported ASCII character set are the codes -// (33-126) inclusive.) The only control character supported is the line feed -// character "\n", which advances to a new line. -// -// To use thie class, you normally couple it with a vtkPolyDataMapper and a -// vtkActor. In this case you would use the vtkActor's transformation methods -// to position, orient, and scale the text. You may also wish to use a -// vtkFollower to orient the text so that it always faces the camera. - -// .SECTION See Also -// vtkTextMapper vtkCaptionActor2D - -// VTKViewer_VectorText.h is a copy of vtkVectorText.h file. -// Purpose of copying: to remove linking to libHybrid.so VTK library - -#ifndef __VTKViewer_VectorText_h -#define __VTKViewer_VectorText_h - -#include "vtkPolyDataSource.h" - -class VTKViewer_VectorText : public vtkPolyDataSource -{ -public: - static VTKViewer_VectorText *New(); - vtkTypeRevisionMacro(VTKViewer_VectorText,vtkPolyDataSource); - void PrintSelf(ostream& os, vtkIndent indent); - - // Description: - // Set/Get the text to be drawn. - vtkSetStringMacro(Text); - vtkGetStringMacro(Text); - -protected: - VTKViewer_VectorText(); - ~VTKViewer_VectorText(); - - void Execute(); - char *Text; - char *Letters[127]; - -}; - -#endif - - diff --git a/src/VTKViewer/VTKViewer_ViewFrame.cxx b/src/VTKViewer/VTKViewer_ViewFrame.cxx deleted file mode 100644 index 067cc6aee..000000000 --- a/src/VTKViewer/VTKViewer_ViewFrame.cxx +++ /dev/null @@ -1,948 +0,0 @@ -// SALOME VTKViewer : build VTK viewer into Salome desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : VTKViewer_ViewFrame.cxx -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#include "VTKViewer_ViewFrame.h" -#include "VTKViewer_Utilities.h" -#include "VTKViewer_Trihedron.h" -#include "VTKViewer_RenderWindow.h" -#include "VTKViewer_RenderWindowInteractor.h" -#include "VTKViewer_InteractorStyleSALOME.h" -#include "VTKViewer_Algorithm.h" -#include "VTKViewer_Functor.h" -#include "VTKViewer_Prs.h" - -#include "SALOME_Actor.h" -#include "SALOME_Transform.h" -#include "SALOME_TransformFilter.h" -#include "SALOME_GeometryFilter.h" -#include "SALOMEGUI.h" - -#include "QAD_Settings.h" -#include "QAD_Config.h" -#include "QAD_Application.h" -#include "QAD_Desktop.h" -#include "SALOME_Selection.h" -#include "SALOME_InteractiveObject.hxx" -#include "ToolsGUI.h" -#include "SALOMEDS_Tool.hxx" - -#include "utilities.h" - -//QT Include -#include -#include -#include -#include - -// VTK Includes -#include -#include -#include -#include -#include - -#include - -using namespace std; - -/*! - Constructor -*/ -VTKViewer_ViewFrame::VTKViewer_ViewFrame(QWidget* parent, const char* name) - : QAD_ViewFrame(parent, name) -{ - m_ViewUp[0] = 0; m_ViewUp[1] = 0; m_ViewUp[2] = -1; - m_ViewNormal[0] = 0; m_ViewNormal[1] = 0; m_ViewNormal[2] = 1; - m_Triedron = VTKViewer_Trihedron::New(); - m_Transform = SALOME_Transform::New(); - //m_Renderer = VTKViewer_Renderer::New() ; - m_Renderer = vtkRenderer::New() ; - - m_Triedron->AddToRender(m_Renderer); - InitialSetup(); -} - -void VTKViewer_ViewFrame::InitialSetup() { - m_RW = new VTKViewer_RenderWindow(this, "RenderWindow"); - m_RW->getRenderWindow()->AddRenderer(m_Renderer); - - m_Renderer->GetActiveCamera()->ParallelProjectionOn(); - m_Renderer->LightFollowCameraOn(); - m_Renderer->TwoSidedLightingOn(); - - // Set BackgroundColor - QString BgrColorRed = QAD_CONFIG->getSetting("VTKViewer:BackgroundColorRed"); - QString BgrColorGreen = QAD_CONFIG->getSetting("VTKViewer:BackgroundColorGreen"); - QString BgrColorBlue = QAD_CONFIG->getSetting("VTKViewer:BackgroundColorBlue"); - - if( !BgrColorRed.isEmpty() && !BgrColorGreen.isEmpty() && !BgrColorBlue.isEmpty() ) - m_Renderer->SetBackground( BgrColorRed.toInt()/255., BgrColorGreen.toInt()/255., BgrColorBlue.toInt()/255. ); - else - m_Renderer->SetBackground( 0, 0, 0 ); - - // Create an interactor. - m_RWInteractor = VTKViewer_RenderWindowInteractor::New(); - m_RWInteractor->SetRenderWindow(m_RW->getRenderWindow()); - - VTKViewer_InteractorStyleSALOME* RWS = VTKViewer_InteractorStyleSALOME::New(); - m_RWInteractor->SetInteractorStyle(RWS); - RWS->Delete(); - - m_RWInteractor->setGUIWindow(m_RW); - RWS->setGUIWindow(m_RW); - - m_RWInteractor->Initialize(); - m_RWInteractor->setViewFrame(this); - RWS->setTriedron(m_Triedron); - RWS->setViewFrame(this); - //SRN: additional initialization, to init CurrentRenderer of vtkInteractorStyle - RWS->FindPokedRenderer(0, 0); - - setCentralWidget( m_RW ); - onViewReset(); -} - -VTKViewer_ViewFrame::~VTKViewer_ViewFrame() { - // In order to ensure that the interactor unregisters - // this RenderWindow, we assign a NULL RenderWindow to - // it before deleting it. - m_RWInteractor->SetRenderWindow(NULL) ; - m_RWInteractor->Delete() ; - - m_Transform->Delete() ; - //m_RW->Delete() ; - m_Renderer->RemoveAllProps(); - // NRI : BugID 1137: m_Renderer->Delete() ; - m_Triedron->Delete(); - INFOS("VTKViewer_ViewFrame::~VTKViewer_ViewFrame()"); -} - -/*! - Returns widget containing 3D-Viewer -*/ -QWidget* VTKViewer_ViewFrame::getViewWidget(){ - return m_RW; -} - -bool VTKViewer_ViewFrame::isTrihedronDisplayed(){ - return m_Triedron->GetVisibility() == VTKViewer_Trihedron::eOn; -} - -bool VTKViewer_ViewFrame::ComputeTrihedronSize( double& theNewSize, double& theSize ) -{ - // calculating diagonal of visible props of the renderer - float bnd[ 6 ]; - m_Triedron->VisibilityOff(); - if ( ::ComputeVisiblePropBounds( m_Renderer, bnd ) == 0 ) - { - bnd[ 1 ] = bnd[ 3 ] = bnd[ 5 ] = 100; - bnd[ 0 ] = bnd[ 2 ] = bnd[ 100 ] = 0; - } - m_Triedron->VisibilityOn(); - float aLength = 0; - static bool CalcByDiag = false; - if ( CalcByDiag ) - { - aLength = sqrt( ( bnd[1]-bnd[0])*(bnd[1]-bnd[0] )+ - ( bnd[3]-bnd[2])*(bnd[3]-bnd[2] )+ - ( bnd[5]-bnd[4])*(bnd[5]-bnd[4] ) ); - } - else - { - aLength = bnd[ 1 ]-bnd[ 0 ]; - aLength = max( ( bnd[ 3 ] - bnd[ 2 ] ),aLength ); - aLength = max( ( bnd[ 5 ] - bnd[ 4 ] ),aLength ); - } - - static float aSizeInPercents = 105; - QString aSetting = QAD_CONFIG->getSetting( "Viewer:TrihedronSize" ); - if ( !aSetting.isEmpty() ) - aSizeInPercents = aSetting.toFloat(); - - static float EPS_SIZE = 5.0E-3; - theSize = m_Triedron->GetSize(); - theNewSize = aLength * aSizeInPercents / 100.0; - - // if the new trihedron size have sufficient difference, then apply the value - return fabs( theNewSize - theSize) > theSize * EPS_SIZE || - fabs( theNewSize-theSize ) > theNewSize * EPS_SIZE; -} - -double VTKViewer_ViewFrame::GetTrihedronSize() const -{ - return m_Triedron->GetSize(); -} - -void VTKViewer_ViewFrame::AdjustTrihedrons( const bool forcedUpdate ) -{ - if ( !isTrihedronDisplayed() && !forcedUpdate ) - return; - - int aVisibleNum = m_Triedron->GetVisibleActorCount( m_Renderer ); - if ( aVisibleNum || forcedUpdate ) - { - // if the new trihedron size have sufficient difference, then apply the value - double aNewSize = 100, anOldSize; - if ( ComputeTrihedronSize( aNewSize, anOldSize ) || forcedUpdate ) - { - m_Triedron->SetSize( aNewSize ); - // itearte throuh displayed objects and set size if necessary - - vtkActorCollection* anActors = getRenderer()->GetActors(); - anActors->InitTraversal(); - while( vtkActor* anActor = anActors->GetNextActor() ) - { - if( SALOME_Actor* aSActor = SALOME_Actor::SafeDownCast( anActor ) ) - { - if ( aSActor->IsResizable() ) - aSActor->SetSize( 0.5 * aNewSize ); - } - } - } - } - - ::ResetCameraClippingRange(m_Renderer); -} - -void VTKViewer_ViewFrame::onAdjustTrihedron() -{ - AdjustTrihedrons( false ); -} - -/*! - Display/hide Trihedron -*/ -void VTKViewer_ViewFrame::onViewTrihedron(){ - if(!m_Triedron) return; - if(isTrihedronDisplayed()) - m_Triedron->VisibilityOff(); - else{ - m_Triedron->VisibilityOn(); - } - Repaint(); -} - -/*! - Provides top projection of the active view -*/ -void VTKViewer_ViewFrame::onViewTop(){ - vtkCamera* camera = m_Renderer->GetActiveCamera(); - camera->SetPosition(0,0,1); - camera->SetViewUp(0,1,0); - camera->SetFocalPoint(0,0,0); - onViewFitAll(); -} - -/*! - Provides bottom projection of the active view -*/ -void VTKViewer_ViewFrame::onViewBottom(){ - vtkCamera* camera = m_Renderer->GetActiveCamera(); - camera->SetPosition(0,0,-1); - camera->SetViewUp(0,1,0); - camera->SetFocalPoint(0,0,0); - onViewFitAll(); -} - -/*! - Provides left projection of the active view -*/ -void VTKViewer_ViewFrame::onViewLeft(){ - vtkCamera* camera = m_Renderer->GetActiveCamera(); - camera->SetPosition(0,-1,0); - camera->SetViewUp(0,0,1); - camera->SetFocalPoint(0,0,0); - onViewFitAll(); -} - -/*! - Provides right projection of the active view -*/ -void VTKViewer_ViewFrame::onViewRight(){ - vtkCamera* camera = m_Renderer->GetActiveCamera(); - camera->SetPosition(0,1,0); - camera->SetViewUp(0,0,1); - camera->SetFocalPoint(0,0,0); - onViewFitAll(); -} - -/*! - Provides back projection of the active view -*/ -void VTKViewer_ViewFrame::onViewBack(){ - vtkCamera* camera = m_Renderer->GetActiveCamera(); - camera->SetPosition(-1,0,0); - camera->SetViewUp(0,0,1); - camera->SetFocalPoint(0,0,0); - onViewFitAll(); -} - -/*! - Provides front projection of the active view -*/ -void VTKViewer_ViewFrame::onViewFront(){ - vtkCamera* camera = m_Renderer->GetActiveCamera(); - camera->SetPosition(1,0,0); - camera->SetViewUp(0,0,1); - camera->SetFocalPoint(0,0,0); - onViewFitAll(); -} - -/*! - Fits all objects in the active view -*/ -void VTKViewer_ViewFrame::onViewFitAll(){ - m_RWInteractor->GetInteractorStyleSALOME()->ViewFitAll(); - Repaint(); -} - -/*! - Reset the active view -*/ -void VTKViewer_ViewFrame::onViewReset(){ - int aTriedronIsVisible = isTrihedronDisplayed(); - m_Triedron->SetVisibility(VTKViewer_Trihedron::eOnlyLineOn); - ::ResetCamera(m_Renderer,true); - vtkCamera* aCamera = m_Renderer->GetActiveCamera(); - aCamera->SetPosition(1,-1,1); - aCamera->SetViewUp(0,0,1); - ::ResetCamera(m_Renderer,true); - if(aTriedronIsVisible) m_Triedron->VisibilityOn(); - else m_Triedron->VisibilityOff(); - static float aCoeff = 3.0; - aCamera->SetParallelScale(aCoeff*aCamera->GetParallelScale()); - Repaint(); -} - -/*! - Rotates the active view -*/ -void VTKViewer_ViewFrame::onViewRotate(){ - m_RWInteractor->GetInteractorStyleSALOME()->startRotate(); -} - -/*! - Sets a new center of the active view -*/ -void VTKViewer_ViewFrame::onViewGlobalPan(){ - if(m_Triedron->GetVisibleActorCount(m_Renderer)) - m_RWInteractor->GetInteractorStyleSALOME()->startGlobalPan(); -} - -/*! - Zooms the active view -*/ -void VTKViewer_ViewFrame::onViewZoom(){ - m_RWInteractor->GetInteractorStyleSALOME()->startZoom(); -} - -/*! - Moves the active view -*/ -void VTKViewer_ViewFrame::onViewPan(){ - m_RWInteractor->GetInteractorStyleSALOME()->startPan(); -} - -/*! - Fits all obejcts within a rectangular area of the active view -*/ -void VTKViewer_ViewFrame::onViewFitArea(){ - m_RWInteractor->GetInteractorStyleSALOME()->startFitArea(); -} - -/*! - Set background of the viewport -*/ -void VTKViewer_ViewFrame::setBackgroundColor( const QColor& color) -{ - if ( m_Renderer ) - m_Renderer->SetBackground( color.red()/255., color.green()/255., color.blue()/255. ); -} - -/*! - Returns background of the viewport -*/ -QColor VTKViewer_ViewFrame::backgroundColor() const -{ - float backint[3]; - if ( m_Renderer ) { - m_Renderer->GetBackground(backint); - return QColorDialog::getColor ( QColor(int(backint[0]*255), int(backint[1]*255), int(backint[2]*255)), NULL ); - } - return QMainWindow::backgroundColor(); -} - - -void VTKViewer_ViewFrame::SetSelectionMode( Selection_Mode mode ) -{ - m_RWInteractor->SetSelectionMode( mode ); -} - -void VTKViewer_ViewFrame::rename( const Handle(SALOME_InteractiveObject)& IObject, QString newName ) -{ - m_RWInteractor->rename(IObject, newName); -} - -void VTKViewer_ViewFrame::unHighlightAll() -{ - m_RWInteractor->unHighlightAll(); -} - -void VTKViewer_ViewFrame::highlight( const Handle(SALOME_InteractiveObject)& IObject, - bool highlight, - bool update ) -{ - QAD_Study* ActiveStudy = QAD_Application::getDesktop()->getActiveStudy(); - SALOME_Selection* Sel = SALOME_Selection::Selection( ActiveStudy->getSelection() ); - m_RWInteractor->highlight(IObject, highlight, update); - - if(Sel->HasIndex(IObject) && IObject->hasEntry()){ - TColStd_IndexedMapOfInteger MapIndex; - Sel->GetIndex(IObject,MapIndex); - using namespace SALOME::VTK; - const char* anEntry = IObject->getEntry(); - vtkActorCollection* aCollection = getRenderer()->GetActors(); - if(SALOME_Actor* anActor = Find(aCollection,TIsSameEntry(anEntry))){ - switch (Sel->SelectionMode()) { - case NodeSelection: - m_RWInteractor->highlightPoint(MapIndex,anActor,highlight,update); - break; - case EdgeOfCellSelection: - m_RWInteractor->highlightEdge(MapIndex,anActor,highlight,update); - break; - case CellSelection: - case EdgeSelection: - case FaceSelection: - case VolumeSelection: - m_RWInteractor->highlightCell(MapIndex,anActor,highlight,update); - break; - } - } - }else{ - m_RWInteractor->unHighlightSubSelection(); - } -} - -bool VTKViewer_ViewFrame::isInViewer( const Handle(SALOME_InteractiveObject)& IObject ) -{ - return m_RWInteractor->isInViewer( IObject ); -} - -bool VTKViewer_ViewFrame::isVisible( const Handle(SALOME_InteractiveObject)& IObject ) -{ - return m_RWInteractor->isVisible( IObject ); -} - -void VTKViewer_ViewFrame::setPopupServer( QAD_Application* App ) -{ - m_RW->setPopupServer( App ); -} - -/* selection */ -Handle(SALOME_InteractiveObject) VTKViewer_ViewFrame::FindIObject(const char* theEntry) -{ - using namespace SALOME::VTK; - SALOME_Actor* anActor = - Find(getRenderer()->GetActors(), - TIsSameEntry(theEntry)); - if(anActor) - return anActor->getIO(); - - return Handle(SALOME_InteractiveObject)(); -} - -/* display */ -void VTKViewer_ViewFrame::Display(const Handle(SALOME_InteractiveObject)& theIObject, bool update) -{ - QAD_Study* aQADStudy = QAD_Application::getDesktop()->getActiveStudy(); - SALOME_Selection* aSel = SALOME_Selection::Selection( aQADStudy->getSelection() ); - SALOMEDS::Study_var aStudy = aQADStudy->getStudyDocument(); - - m_RWInteractor->Display(theIObject,false); - ToolsGUI::SetVisibility( aStudy, theIObject->getEntry(), true, this ); - aSel->AddIObject(theIObject,false); - - if(update) - Repaint(); -} - - -struct TDisplayAction{ - SALOME_Selection* mySel; - Handle(SALOME_InteractiveObject) myIO; - TDisplayAction(SALOME_Selection* theSel, - Handle(SALOME_InteractiveObject) theIO): - mySel(theSel), myIO(theIO) - {} - void operator()(SALOME_Actor* theActor){ - theActor->SetVisibility(true); - mySel->AddIObject(myIO,false); - } -}; - -void VTKViewer_ViewFrame::DisplayOnly(const Handle(SALOME_InteractiveObject)& theIObject) -{ - QAD_Study* aStudy = QAD_Application::getDesktop()->getActiveStudy(); - SALOME_Selection* aSel = SALOME_Selection::Selection(aStudy->getSelection()); - - aSel->ClearIObjects(); - //m_RWInteractor->EraseAll(); - EraseAll(); - - using namespace SALOME::VTK; - ForEachIf(getRenderer()->GetActors(), - TIsSameIObject(theIObject), - TDisplayAction(aSel,theIObject)); - - ToolsGUI::SetVisibility( - aStudy->getStudyDocument(), theIObject->getEntry(), true, this ); - - Repaint(); -} - - -struct TEraseAction: TDisplayAction{ - VTKViewer_RenderWindowInteractor* myRWInteractor; - TEraseAction(SALOME_Selection* theSel, - Handle(SALOME_InteractiveObject) theIO, - VTKViewer_RenderWindowInteractor* theRWInteractor): - TDisplayAction(theSel,theIO), - myRWInteractor(theRWInteractor) - {} - void operator()(SALOME_Actor* theActor){ - myRWInteractor->Erase(myIO,false); - mySel->RemoveIObject(myIO,false); - } -}; - -void VTKViewer_ViewFrame::Erase(const Handle(SALOME_InteractiveObject)& theIObject, bool update) -{ - QAD_Study* aStudy = QAD_Application::getDesktop()->getActiveStudy(); - SALOME_Selection* aSel = SALOME_Selection::Selection(aStudy->getSelection()); - - using namespace SALOME::VTK; - ForEachIf(getRenderer()->GetActors(), - TIsSameIObject(theIObject), - TEraseAction(aSel,theIObject,m_RWInteractor)); - - ToolsGUI::SetVisibility( - aStudy->getStudyDocument(), theIObject->getEntry(), false, this ); - - if(update) - Repaint(); -} - - -void VTKViewer_ViewFrame::DisplayAll() -{ - m_RWInteractor->DisplayAll(); - - // update flag of visibility - QAD_Study* aQADStudy = QAD_Application::getDesktop()->getActiveStudy(); - SALOMEDS::Study_var aStudy = aQADStudy->getStudyDocument(); - QAD_Desktop* aDesktop = QAD_Application::getDesktop(); - const QString& aCompName = aDesktop->getComponentDataType(); - SALOMEDS::SObject_var aComponent = - SALOMEDS::SObject::_narrow( aStudy->FindComponent ( aCompName.latin1() ) ); - - std::list aList; - SALOMEDS_Tool::GetAllChildren( aStudy, aComponent, aList ); - - std::list::iterator anIter = aList.begin(); - for ( ; anIter != aList.end(); ++anIter ) - ToolsGUI::SetVisibility( aStudy, (*anIter)->GetID(), true, this ); -} - - -void VTKViewer_ViewFrame::EraseAll() -{ - m_RWInteractor->EraseAll(); - - // update flag of visibility - QAD_Study* aQADStudy = QAD_Application::getDesktop()->getActiveStudy(); - SALOMEDS::Study_var aStudy = aQADStudy->getStudyDocument(); - QAD_Desktop* aDesktop = QAD_Application::getDesktop(); - const QString& aCompName = aDesktop->getComponentDataType(); - SALOMEDS::SObject_var aComponent = - SALOMEDS::SObject::_narrow( aStudy->FindComponent ( aCompName.latin1() ) ); - - std::list aList; - SALOMEDS_Tool::GetAllChildren( aStudy, aComponent, aList ); - - std::list::iterator anIter = aList.begin(); - for ( ; anIter != aList.end(); ++anIter ) - ToolsGUI::SetVisibility( aStudy, (*anIter)->GetID(), false, this ); -} - - -void VTKViewer_ViewFrame::Repaint(bool theUpdateTrihedron) -{ - if (theUpdateTrihedron) onAdjustTrihedron(); - m_RW->update(); -} - -void VTKViewer_ViewFrame::GetScale(double theScale[3]){ - m_Transform->GetScale(theScale); -} - -void VTKViewer_ViewFrame::SetScale(double theScale[3]){ - m_Transform->SetScale(theScale[0], theScale[1], theScale[2]); - m_RWInteractor->Render(); - Repaint(); -} - -void VTKViewer_ViewFrame::InsertActor( SALOME_Actor* theActor, bool theMoveInternalActors ){ - theActor->AddToRender(m_Renderer); - theActor->SetTransform(m_Transform); - if(theMoveInternalActors) - m_RWInteractor->MoveInternalActors(); -} - -void VTKViewer_ViewFrame::AddActor( SALOME_Actor* theActor, bool theUpdate /*=false*/ ){ - InsertActor(theActor); - if(theUpdate) - Repaint(); -} - -void VTKViewer_ViewFrame::RemoveActor( SALOME_Actor* theActor, bool theUpdate /*=false*/ ){ - theActor->RemoveFromRender(m_Renderer); - if(theUpdate) - Repaint(); -} - -void VTKViewer_ViewFrame::MoveActor(SALOME_Actor* theActor) -{ - RemoveActor(theActor); - InsertActor(theActor,true); -} - -//========================================================== -/*! - * VTKViewer_ViewFrame::Display - * Display presentation - */ -//========================================================== -void VTKViewer_ViewFrame::Display( const SALOME_VTKPrs* prs ) -{ - // try do downcast object - const VTKViewer_Prs* aVTKPrs = dynamic_cast( prs ); - if ( !aVTKPrs || aVTKPrs->IsNull() ) - return; - - vtkActorCollection* actors = aVTKPrs->GetObjects(); - if ( !actors ) - return; - - actors->InitTraversal(); - vtkActor* actor; - while( ( actor = actors->GetNextActor() ) ) - { - SALOME_Actor* salomeActor = SALOME_Actor::SafeDownCast( actor ); - if ( salomeActor ) - { - // just display the object - m_RWInteractor->Display( salomeActor, false ); - - // Set visibility flag - Handle(SALOME_InteractiveObject) anObj = salomeActor->getIO(); - if ( !anObj.IsNull() && anObj->hasEntry() ) - { - SALOMEDS::Study_var aStudy = - QAD_Application::getDesktop()->getActiveStudy()->getStudyDocument(); - ToolsGUI::SetVisibility( aStudy, anObj->getEntry(), true, this ); - } - - if ( salomeActor->IsSetCamera() ) - salomeActor->SetCamera( getRenderer()->GetActiveCamera() ); - } - } -} - -//========================================================== -/*! - * VTKViewer_ViewFrame::Erase - * Erase presentation - */ -//========================================================== -void VTKViewer_ViewFrame::Erase( const SALOME_VTKPrs* prs, const bool forced ) -{ - // try do downcast object - const VTKViewer_Prs* aVTKPrs = dynamic_cast( prs ); - if ( !aVTKPrs || aVTKPrs->IsNull() ) - return; - - vtkActorCollection* actors = aVTKPrs->GetObjects(); - if ( !actors ) - return; - - SALOMEDS::Study_var aStudy = - QAD_Application::getDesktop()->getActiveStudy()->getStudyDocument(); - - actors->InitTraversal(); - vtkActor* actor; - while( ( actor = actors->GetNextActor() ) ) { - SALOME_Actor* salomeActor = SALOME_Actor::SafeDownCast( actor ); - if ( salomeActor ) { - // just erase the object - if ( forced ) - m_RWInteractor->Remove( salomeActor, false ); - else - m_RWInteractor->Erase( salomeActor, forced ); - - // Set visibility flag if necessary - if ( !forced ) - { - Handle(SALOME_InteractiveObject) anObj = salomeActor->getIO(); - if ( !anObj.IsNull() && anObj->hasEntry() ) - ToolsGUI::SetVisibility( aStudy, anObj->getEntry(), true, this ); - } - } - } -} - -//========================================================== -/*! - * VTKViewer_ViewFrame::CreatePrs - * Create presentation by entry - */ -//========================================================== -SALOME_Prs* VTKViewer_ViewFrame::CreatePrs( const char* entry ) -{ - VTKViewer_Prs* prs = new VTKViewer_Prs(); - if ( entry ) { - vtkActorCollection* theActors = m_Renderer->GetActors(); - theActors->InitTraversal(); - vtkActor* ac; - while( ( ac = theActors->GetNextActor() ) ) { - SALOME_Actor* anActor = SALOME_Actor::SafeDownCast( ac ); - if ( anActor && anActor->hasIO() && !strcmp( anActor->getIO()->getEntry(), entry ) ) { - prs->AddObject( ac ); - } - } - } - return prs; -} - -//========================================================== -/*! - * VTKViewer_ViewFrame::BeforeDisplay - * Axiluary method called before displaying of objects - */ -//========================================================== -void VTKViewer_ViewFrame::BeforeDisplay( SALOME_Displayer* d ) -{ - d->BeforeDisplay( this, SALOME_VTKViewType() ); -} - -//========================================================== -/*! - * VTKViewer_ViewFrame::AfterDisplay - * Axiluary method called after displaying of objects - */ -//========================================================== -void VTKViewer_ViewFrame::AfterDisplay( SALOME_Displayer* d ) -{ - d->AfterDisplay( this, SALOME_VTKViewType() ); -} - -//========================================================== -/*! - * VTKViewer_ViewFrame::undo - * Redisplay all objects in viewer - */ -//========================================================== -void VTKViewer_ViewFrame::undo( QAD_Study* theQADStudy, const char* /*StudyFrameEntry*/ ) -{ - redisplayAll( theQADStudy, true ); -} - -//========================================================== -/*! - * VTKViewer_ViewFrame::redo - * Redisplay all objects in viewer - */ -//========================================================== -void VTKViewer_ViewFrame::redo( QAD_Study* theQADStudy, const char* /*StudyFrameEntry*/ ) -{ - redisplayAll( theQADStudy, true ); -} - -//========================================================== -/*! - * VTKViewer_ViewFrame::redisplayAll - * Redisplay all objects in viewer - */ -//========================================================== -void VTKViewer_ViewFrame::redisplayAll( QAD_Study* theQADStudy, const bool theToUpdate ) -{ - SALOMEDS::Study_var aStudy = theQADStudy->getStudyDocument(); - SALOME_Selection* aSel = SALOME_Selection::Selection( theQADStudy->getSelection() ); - QAD_Desktop* aDesktop = QAD_Application::getDesktop(); - SALOMEGUI* aGUI = aDesktop->getActiveGUI(); - const QString& aCompName = aDesktop->getComponentDataType(); - SALOMEDS::SObject_var aComponent = - SALOMEDS::SObject::_narrow( aStudy->FindComponent ( aCompName.latin1() ) ); - - if ( aComponent->_is_nil() ) - return; - - bool isTrhDisplayed = isTrihedronDisplayed(); - - m_RWInteractor->RemoveAll( false ); - //m_RWInteractor->EraseAll(); - - aSel->ClearIObjects(); - - if ( isTrhDisplayed ) - m_Triedron->AddToRender( m_Renderer ); - - std::list aList; - SALOMEDS_Tool::GetAllChildren( aStudy, aComponent, aList ); - - std::list::iterator anIter = aList.begin(); - for ( ; anIter != aList.end(); ++anIter ) - { - SALOMEDS::SObject_var anObj = (*anIter); - if ( ToolsGUI::GetVisibility( aStudy, anObj, this ) ) - { - Handle(SALOME_InteractiveObject) anIObj = new SALOME_InteractiveObject(); - anIObj->setEntry( anObj->GetID() ); - aGUI->BuildPresentation( anIObj, this ); - } - - } - - if ( theToUpdate ) - Repaint(); -} - -#define INCREMENT_FOR_OP 10 - -//======================================================================= -// name : onPanLeft -// Purpose : Performs incremental panning to the left -//======================================================================= -void VTKViewer_ViewFrame::onPanLeft() -{ - m_RWInteractor->GetInteractorStyleSALOME()->IncrementalPan( -INCREMENT_FOR_OP, 0 ); -} - -//======================================================================= -// name : onPanRight -// Purpose : Performs incremental panning to the right -//======================================================================= -void VTKViewer_ViewFrame::onPanRight() -{ - m_RWInteractor->GetInteractorStyleSALOME()->IncrementalPan( INCREMENT_FOR_OP, 0 ); -} - -//======================================================================= -// name : onPanUp -// Purpose : Performs incremental panning to the top -//======================================================================= -void VTKViewer_ViewFrame::onPanUp() -{ - m_RWInteractor->GetInteractorStyleSALOME()->IncrementalPan( 0, INCREMENT_FOR_OP ); -} - -//======================================================================= -// name : onPanDown -// Purpose : Performs incremental panning to the bottom -//======================================================================= -void VTKViewer_ViewFrame::onPanDown() -{ - m_RWInteractor->GetInteractorStyleSALOME()->IncrementalPan( 0, -INCREMENT_FOR_OP ); -} - -//======================================================================= -// name : onZoomIn -// Purpose : Performs incremental zooming in -//======================================================================= -void VTKViewer_ViewFrame::onZoomIn() -{ - m_RWInteractor->GetInteractorStyleSALOME()->IncrementalZoom( INCREMENT_FOR_OP ); -} - -//======================================================================= -// name : onZoomOut -// Purpose : Performs incremental zooming out -//======================================================================= -void VTKViewer_ViewFrame::onZoomOut() -{ - m_RWInteractor->GetInteractorStyleSALOME()->IncrementalZoom( -INCREMENT_FOR_OP ); -} - -//======================================================================= -// name : onRotateLeft -// Purpose : Performs incremental rotating to the left -//======================================================================= -void VTKViewer_ViewFrame::onRotateLeft() -{ - m_RWInteractor->GetInteractorStyleSALOME()->IncrementalRotate( -INCREMENT_FOR_OP, 0 ); -} - -//======================================================================= -// name : onRotateRight -// Purpose : Performs incremental rotating to the right -//======================================================================= -void VTKViewer_ViewFrame::onRotateRight() -{ - m_RWInteractor->GetInteractorStyleSALOME()->IncrementalRotate( INCREMENT_FOR_OP, 0 ); -} - -//======================================================================= -// name : onRotateUp -// Purpose : Performs incremental rotating to the top -//======================================================================= -void VTKViewer_ViewFrame::onRotateUp() -{ - m_RWInteractor->GetInteractorStyleSALOME()->IncrementalRotate( 0, -INCREMENT_FOR_OP ); -} - -//======================================================================= -// name : onRotateDown -// Purpose : Performs incremental rotating to the bottom -//======================================================================= -void VTKViewer_ViewFrame::onRotateDown() -{ - m_RWInteractor->GetInteractorStyleSALOME()->IncrementalRotate( 0, INCREMENT_FOR_OP ); -} - - - - - - - - - - - - - - diff --git a/src/VTKViewer/VTKViewer_ViewFrame.h b/src/VTKViewer/VTKViewer_ViewFrame.h deleted file mode 100644 index cef0aaa5f..000000000 --- a/src/VTKViewer/VTKViewer_ViewFrame.h +++ /dev/null @@ -1,160 +0,0 @@ -// SALOME VTKViewer : build VTK viewer into Salome desktop -// -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// File : VTKViewer_ViewFrame.h -// Author : Nicolas REJNERI -// Module : SALOME -// $Header$ - -#ifndef VTKViewer_ViewFrame_H -#define VTKViewer_ViewFrame_H - -#include "QAD.h" -#include "QAD_ViewFrame.h" - -class vtkRenderer; - -class SALOME_Actor; -class SALOME_Transform; - -class VTKViewer_Trihedron; -class VTKViewer_RenderWindow; -class VTKViewer_RenderWindowInteractor; - - -class QAD_EXPORT VTKViewer_ViewFrame : public QAD_ViewFrame -{ - Q_OBJECT; - -public: - VTKViewer_ViewFrame(QWidget* parent, const char* name=0 ); - ~VTKViewer_ViewFrame(); - - ViewType getTypeView() const{ return VIEW_VTK;}; - QWidget* getViewWidget(); - vtkRenderer* getRenderer() {return m_Renderer;} - - VTKViewer_RenderWindow* getRW() {return m_RW;} - VTKViewer_RenderWindowInteractor* getRWInteractor() {return m_RWInteractor;} - - bool isTrihedronDisplayed(); - - void setBackgroundColor( const QColor& ); - QColor backgroundColor() const; - - void SetSelectionMode( Selection_Mode mode ); - - /* popup management */ - void setPopupServer( QAD_Application* ); - - /* interactive object management */ - void highlight( const Handle(SALOME_InteractiveObject)& IObject, - bool highlight, bool immediatly = true ); - void unHighlightAll(); - void rename( const Handle(SALOME_InteractiveObject)& IObject, - QString newName ); - bool isInViewer( const Handle(SALOME_InteractiveObject)& IObject ); - bool isVisible( const Handle(SALOME_InteractiveObject)& IObject ); - - /* selection */ - Handle(SALOME_InteractiveObject) FindIObject(const char* Entry); - - /* display */ - void Display( const Handle(SALOME_InteractiveObject)& IObject, - bool immediatly = true ); - void DisplayOnly( const Handle(SALOME_InteractiveObject)& IObject ); - void Erase( const Handle(SALOME_InteractiveObject)& IObject, - bool immediatly = true ); - void DisplayAll(); - void EraseAll(); - void Repaint( bool theUpdateTrihedron ); - void Repaint() { Repaint(true); } - - virtual void undo( QAD_Study* aStudy, const char* StudyFrameEntry ); - virtual void redo( QAD_Study* aStudy, const char* StudyFrameEntry ); - - /* Reimplemented from SALOME_View */ - void Display( const SALOME_VTKPrs* ); - void Erase( const SALOME_VTKPrs*, const bool = false ); - SALOME_Prs* CreatePrs( const char* entry = 0 ); - virtual void BeforeDisplay( SALOME_Displayer* d ); - virtual void AfterDisplay ( SALOME_Displayer* d ); - - //apply existing transformation on adding SALOME_Actor - void SetScale( double theScale[3] ); - void GetScale( double theScale[3] ); - void AddActor( SALOME_Actor*, bool update = false ); - void RemoveActor(SALOME_Actor*, bool update = false); - - void AdjustTrihedrons( const bool forced ); - bool ComputeTrihedronSize( double& theNewSize, - double& theOldSize ); - double GetTrihedronSize() const; - -public slots: - void onViewPan(); - void onViewZoom(); - void onViewFitAll(); - void onViewFitArea(); - void onViewGlobalPan(); - void onViewRotate(); - void onViewReset(); - void onViewFront(); - void onViewBack(); - void onViewRight(); - void onViewLeft(); - void onViewBottom(); - void onViewTop(); - void onViewTrihedron(); - void onAdjustTrihedron(); - - void onPanLeft(); - void onPanRight(); - void onPanUp(); - void onPanDown(); - void onZoomIn(); - void onZoomOut(); - void onRotateLeft(); - void onRotateRight(); - void onRotateUp(); - void onRotateDown(); - -private: - void InitialSetup(); - void redisplayAll( QAD_Study*, const bool = true ); - void InsertActor( SALOME_Actor* theActor, - bool theMoveInternalActors = false ); - void MoveActor( SALOME_Actor* theActor ); - -private: - double m_ViewUp[ 3 ]; - double m_ViewNormal[ 3 ]; - vtkRenderer* m_Renderer; - VTKViewer_RenderWindow* m_RW; - VTKViewer_RenderWindowInteractor* m_RWInteractor; - VTKViewer_Trihedron* m_Triedron; - SALOME_Transform* m_Transform; - - friend class VTKViewer_RenderWindowInteractor; -}; -#endif