From 5da79f6fa4199edafd942535f65668865bc71d67 Mon Sep 17 00:00:00 2001 From: vsr Date: Mon, 30 Jul 2007 15:31:13 +0000 Subject: [PATCH] *** empty log message *** --- src/LightApp/LightApp.h | 34 ++- src/LightApp/LightApp_Application.cxx | 215 +++++++-------- src/LightApp/LightApp_Application.h | 6 +- src/LightApp/LightApp_Browser.cxx | 117 ++++++++ ...ghtApp_RootObject.h => LightApp_Browser.h} | 50 ++-- src/LightApp/LightApp_DataModel.cxx | 10 +- src/LightApp/LightApp_DataObject.cxx | 259 ++++++++++++++---- src/LightApp/LightApp_DataObject.h | 51 ++-- src/LightApp/LightApp_Module.cxx | 22 +- src/LightApp/LightApp_Study.cxx | 1 - src/LightApp/LightApp_WidgetContainer.cxx | 199 ++++++++++---- src/LightApp/LightApp_WidgetContainer.h | 44 +-- src/LightApp/Makefile.am | 8 +- src/LightApp/resources/LightApp_msg_en.ts | 4 + src/LightApp/resources/icon_about.png | Bin 79549 -> 29481 bytes 15 files changed, 684 insertions(+), 336 deletions(-) create mode 100644 src/LightApp/LightApp_Browser.cxx rename src/LightApp/{LightApp_RootObject.h => LightApp_Browser.h} (50%) diff --git a/src/LightApp/LightApp.h b/src/LightApp/LightApp.h index 3282621bd..9bbeb7763 100644 --- a/src/LightApp/LightApp.h +++ b/src/LightApp/LightApp.h @@ -16,31 +16,29 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// File: LightApp.h -// Created: June, 2005 -// Author: OCC team +// File : LightApp.h +// Author : OCC team +// +#ifndef LIGHTAPP_H +#define LIGHTAPP_H -// The following ifdef block is the standard way of creating macros which make exporting -// from a DLL simpler. All files within this DLL are compiled with the LightApp_EXPORTS -// symbol defined on the command line. this symbol should not be defined on any project -// that uses this DLL. This way any other project whose source files include this file see -// LightApp_API functions as being imported from a DLL, wheras this DLL sees symbols -// defined with this macro as being exported. #ifdef WIN32 - -#ifdef LIGHTAPP_EXPORTS -#define LIGHTAPP_EXPORT __declspec(dllexport) +# ifdef LIGHTAPP_EXPORTS +# define LIGHTAPP_EXPORT __declspec(dllexport) +# else +# define LIGHTAPP_EXPORT __declspec(dllimport) +# endif #else -#define LIGHTAPP_EXPORT __declspec(dllimport) -#endif +# define LIGHTAPP_EXPORT +#endif // WIN32 +#if defined WNT #pragma warning ( disable:4251 ) #pragma warning ( disable:4786 ) #pragma warning ( disable:4503 ) - -#else -#define LIGHTAPP_EXPORT -#endif //WIN32 +#endif #define APP_VERSION "0.1" + +#endif // LIGHTAPP_H diff --git a/src/LightApp/LightApp_Application.cxx b/src/LightApp/LightApp_Application.cxx index 92a7c2325..08fd32ca8 100644 --- a/src/LightApp/LightApp_Application.cxx +++ b/src/LightApp/LightApp_Application.cxx @@ -36,12 +36,10 @@ #include "LightApp_ModuleDlg.h" #include "LightApp_AboutDlg.h" #include "LightApp_ModuleAction.h" - +#include "LightApp_Browser.h" // temporary commented //#include "LightApp_OBFilter.h" - #include "LightApp_EventFilter.h" - #include "LightApp_OBSelector.h" #include "LightApp_SelectionMgr.h" #include "LightApp_DataObject.h" @@ -64,12 +62,9 @@ #include #include #include -#include +#include #include -// temporary commented -//#include -//#include #ifndef DISABLE_GLVIEWER #include @@ -138,8 +133,7 @@ #include #include #include - -using namespace Qt; +#include #define FIRST_HELP_ID 1000000 @@ -224,39 +218,39 @@ LightApp_Application::LightApp_Application() myAccel = SUIT_Accel::getAccel(); #ifndef DISABLE_OCCVIEWER - myAccel->setActionKey( SUIT_Accel::PanLeft, CTRL+Key_Left, OCCViewer_Viewer::Type() ); - myAccel->setActionKey( SUIT_Accel::PanRight, CTRL+Key_Right, OCCViewer_Viewer::Type() ); - myAccel->setActionKey( SUIT_Accel::PanUp, CTRL+Key_Up, OCCViewer_Viewer::Type() ); - myAccel->setActionKey( SUIT_Accel::PanDown, CTRL+Key_Down, OCCViewer_Viewer::Type() ); - myAccel->setActionKey( SUIT_Accel::ZoomIn, CTRL+Key_Plus, OCCViewer_Viewer::Type() ); - myAccel->setActionKey( SUIT_Accel::ZoomOut, CTRL+Key_Minus, OCCViewer_Viewer::Type() ); - myAccel->setActionKey( SUIT_Accel::ZoomFit, CTRL+Key_Asterisk, OCCViewer_Viewer::Type() ); - myAccel->setActionKey( SUIT_Accel::RotateLeft, ALT+Key_Left, OCCViewer_Viewer::Type() ); - myAccel->setActionKey( SUIT_Accel::RotateRight, ALT+Key_Right, OCCViewer_Viewer::Type() ); - myAccel->setActionKey( SUIT_Accel::RotateUp, ALT+Key_Up, OCCViewer_Viewer::Type() ); - myAccel->setActionKey( SUIT_Accel::RotateDown, ALT+Key_Down, OCCViewer_Viewer::Type() ); + myAccel->setActionKey( SUIT_Accel::PanLeft, Qt::CTRL+Qt::Key_Left, OCCViewer_Viewer::Type() ); + myAccel->setActionKey( SUIT_Accel::PanRight, Qt::CTRL+Qt::Key_Right, OCCViewer_Viewer::Type() ); + myAccel->setActionKey( SUIT_Accel::PanUp, Qt::CTRL+Qt::Key_Up, OCCViewer_Viewer::Type() ); + myAccel->setActionKey( SUIT_Accel::PanDown, Qt::CTRL+Qt::Key_Down, OCCViewer_Viewer::Type() ); + myAccel->setActionKey( SUIT_Accel::ZoomIn, Qt::CTRL+Qt::Key_Plus, OCCViewer_Viewer::Type() ); + myAccel->setActionKey( SUIT_Accel::ZoomOut, Qt::CTRL+Qt::Key_Minus, OCCViewer_Viewer::Type() ); + myAccel->setActionKey( SUIT_Accel::ZoomFit, Qt::CTRL+Qt::Key_Asterisk, OCCViewer_Viewer::Type() ); + myAccel->setActionKey( SUIT_Accel::RotateLeft, Qt::ALT+Qt::Key_Left, OCCViewer_Viewer::Type() ); + myAccel->setActionKey( SUIT_Accel::RotateRight, Qt::ALT+Qt::Key_Right, OCCViewer_Viewer::Type() ); + myAccel->setActionKey( SUIT_Accel::RotateUp, Qt::ALT+Qt::Key_Up, OCCViewer_Viewer::Type() ); + myAccel->setActionKey( SUIT_Accel::RotateDown, Qt::ALT+Qt::Key_Down, OCCViewer_Viewer::Type() ); #endif #ifndef DISABLE_VTKVIEWER - myAccel->setActionKey( SUIT_Accel::PanLeft, CTRL+Key_Left, VTKViewer_Viewer::Type() ); - myAccel->setActionKey( SUIT_Accel::PanRight, CTRL+Key_Right, VTKViewer_Viewer::Type() ); - myAccel->setActionKey( SUIT_Accel::PanUp, CTRL+Key_Up, VTKViewer_Viewer::Type() ); - myAccel->setActionKey( SUIT_Accel::PanDown, CTRL+Key_Down, VTKViewer_Viewer::Type() ); - myAccel->setActionKey( SUIT_Accel::ZoomIn, CTRL+Key_Plus, VTKViewer_Viewer::Type() ); - myAccel->setActionKey( SUIT_Accel::ZoomOut, CTRL+Key_Minus, VTKViewer_Viewer::Type() ); - myAccel->setActionKey( SUIT_Accel::ZoomFit, CTRL+Key_Asterisk, VTKViewer_Viewer::Type() ); - myAccel->setActionKey( SUIT_Accel::RotateLeft, ALT+Key_Left, VTKViewer_Viewer::Type() ); - myAccel->setActionKey( SUIT_Accel::RotateRight, ALT+Key_Right, VTKViewer_Viewer::Type() ); - myAccel->setActionKey( SUIT_Accel::RotateUp, ALT+Key_Up, VTKViewer_Viewer::Type() ); - myAccel->setActionKey( SUIT_Accel::RotateDown, ALT+Key_Down, VTKViewer_Viewer::Type() ); + myAccel->setActionKey( SUIT_Accel::PanLeft, Qt::CTRL+Qt::Key_Left, VTKViewer_Viewer::Type() ); + myAccel->setActionKey( SUIT_Accel::PanRight, Qt::CTRL+Qt::Key_Right, VTKViewer_Viewer::Type() ); + myAccel->setActionKey( SUIT_Accel::PanUp, Qt::CTRL+Qt::Key_Up, VTKViewer_Viewer::Type() ); + myAccel->setActionKey( SUIT_Accel::PanDown, Qt::CTRL+Qt::Key_Down, VTKViewer_Viewer::Type() ); + myAccel->setActionKey( SUIT_Accel::ZoomIn, Qt::CTRL+Qt::Key_Plus, VTKViewer_Viewer::Type() ); + myAccel->setActionKey( SUIT_Accel::ZoomOut, Qt::CTRL+Qt::Key_Minus, VTKViewer_Viewer::Type() ); + myAccel->setActionKey( SUIT_Accel::ZoomFit, Qt::CTRL+Qt::Key_Asterisk, VTKViewer_Viewer::Type() ); + myAccel->setActionKey( SUIT_Accel::RotateLeft, Qt::ALT+Qt::Key_Left, VTKViewer_Viewer::Type() ); + myAccel->setActionKey( SUIT_Accel::RotateRight, Qt::ALT+Qt::Key_Right, VTKViewer_Viewer::Type() ); + myAccel->setActionKey( SUIT_Accel::RotateUp, Qt::ALT+Qt::Key_Up, VTKViewer_Viewer::Type() ); + myAccel->setActionKey( SUIT_Accel::RotateDown, Qt::ALT+Qt::Key_Down, VTKViewer_Viewer::Type() ); #endif #ifndef DISABLE_PLOT2DVIEWER - myAccel->setActionKey( SUIT_Accel::PanLeft, CTRL+Key_Left, Plot2d_Viewer::Type() ); - myAccel->setActionKey( SUIT_Accel::PanRight, CTRL+Key_Right, Plot2d_Viewer::Type() ); - myAccel->setActionKey( SUIT_Accel::PanUp, CTRL+Key_Up, Plot2d_Viewer::Type() ); - myAccel->setActionKey( SUIT_Accel::PanDown, CTRL+Key_Down, Plot2d_Viewer::Type() ); - myAccel->setActionKey( SUIT_Accel::ZoomIn, CTRL+Key_Plus, Plot2d_Viewer::Type() ); - myAccel->setActionKey( SUIT_Accel::ZoomOut, CTRL+Key_Minus, Plot2d_Viewer::Type() ); - myAccel->setActionKey( SUIT_Accel::ZoomFit, CTRL+Key_Asterisk, Plot2d_Viewer::Type() ); + myAccel->setActionKey( SUIT_Accel::PanLeft, Qt::CTRL+Qt::Key_Left, Plot2d_Viewer::Type() ); + myAccel->setActionKey( SUIT_Accel::PanRight, Qt::CTRL+Qt::Key_Right, Plot2d_Viewer::Type() ); + myAccel->setActionKey( SUIT_Accel::PanUp, Qt::CTRL+Qt::Key_Up, Plot2d_Viewer::Type() ); + myAccel->setActionKey( SUIT_Accel::PanDown, Qt::CTRL+Qt::Key_Down, Plot2d_Viewer::Type() ); + myAccel->setActionKey( SUIT_Accel::ZoomIn, Qt::CTRL+Qt::Key_Plus, Plot2d_Viewer::Type() ); + myAccel->setActionKey( SUIT_Accel::ZoomOut, Qt::CTRL+Qt::Key_Minus, Plot2d_Viewer::Type() ); + myAccel->setActionKey( SUIT_Accel::ZoomFit, Qt::CTRL+Qt::Key_Asterisk, Plot2d_Viewer::Type() ); #endif connect( mySelMgr, SIGNAL( selectionChanged() ), this, SLOT( onSelection() ) ); @@ -440,7 +434,7 @@ void LightApp_Application::createActions() //! Preferences createAction( PreferencesId, tr( "TOT_DESK_PREFERENCES" ), QIcon(), tr( "MEN_DESK_PREFERENCES" ), tr( "PRP_DESK_PREFERENCES" ), - CTRL+Key_F, desk, false, this, SLOT( onPreferences() ) ); + Qt::CTRL+Qt::Key_F, desk, false, this, SLOT( onPreferences() ) ); //! Help for modules int helpMenu = createMenu( tr( "MEN_DESK_HELP" ), -1, -1, 1000 ); @@ -577,24 +571,24 @@ void LightApp_Application::createActions() #ifndef DISABLE_GLVIEWER - createActionForViewer( NewGLViewId, newWinMenu, QString::number( 0 ), ALT+Key_G ); + createActionForViewer( NewGLViewId, newWinMenu, QString::number( 0 ), Qt::ALT+Qt::Key_G ); #endif #ifndef DISABLE_PLOT2DVIEWER - createActionForViewer( NewPlot2dId, newWinMenu, QString::number( 1 ), ALT+Key_P ); + createActionForViewer( NewPlot2dId, newWinMenu, QString::number( 1 ), Qt::ALT+Qt::Key_P ); #endif #ifndef DISABLE_OCCVIEWER - createActionForViewer( NewOCCViewId, newWinMenu, QString::number( 2 ), ALT+Key_O ); + createActionForViewer( NewOCCViewId, newWinMenu, QString::number( 2 ), Qt::ALT+Qt::Key_O ); #endif #ifndef DISABLE_VTKVIEWER - createActionForViewer( NewVTKViewId, newWinMenu, QString::number( 3 ), ALT+Key_K ); + createActionForViewer( NewVTKViewId, newWinMenu, QString::number( 3 ), Qt::ALT+Qt::Key_K ); #endif #ifndef DISABLE_QXGRAPHVIEWER - createActionForViewer( NewQxGraphViewId, newWinMenu, QString::number( 4 ), ALT+Key_C ); + createActionForViewer( NewQxGraphViewId, newWinMenu, QString::number( 4 ), Qt::ALT+Qt::Key_C ); #endif createAction( RenameId, tr( "TOT_RENAME" ), QIcon(), tr( "MEN_DESK_RENAME" ), tr( "PRP_RENAME" ), - SHIFT+Key_R, desk, false, this, SLOT( onRenameWindow() ) ); + Qt::SHIFT+Qt::Key_R, desk, false, this, SLOT( onRenameWindow() ) ); createMenu( RenameId, windowMenu, -1 ); int fileMenu = createMenu( tr( "MEN_DESK_FILE" ), -1 ); @@ -809,9 +803,8 @@ bool LightApp_Application::onOpenDoc( const QString& aName ) */ void LightApp_Application::onHelpAbout() { - LightApp_AboutDlg* dlg = new LightApp_AboutDlg( applicationName(), applicationVersion(), desktop() ); - dlg->exec(); - delete dlg; + LightApp_AboutDlg dlg( applicationName(), applicationVersion(), desktop() ); + dlg.exec(); } /*! @@ -1041,15 +1034,14 @@ QWidget* LightApp_Application::window( const int flag, const int studyId ) const { QWidget* wid = 0; - int sId = studyId; - if ( sId < 0 ) - { + int sId = studyId; + if ( sId < 0 ) { if ( !activeStudy() ) return 0; else sId = activeStudy()->id(); } - + if ( myWindows.contains( flag ) ) wid = myWindows[flag]->widget( sId ); @@ -1089,7 +1081,7 @@ void LightApp_Application::addWindow( QWidget* wid, const int flag, const int st myWindows.insert( flag, newWC ); if ( winMap.contains( flag ) ) { //desktop()->removeDockWidget( myWindows[flag] ); - desktop()->addDockWidget( (DockWidgetArea)winMap[flag], myWindows[flag] ); + desktop()->addDockWidget( (Qt::DockWidgetArea)winMap[flag], myWindows[flag] ); } //myWindows[flag]->setResizeEnabled( true ); @@ -1117,7 +1109,7 @@ void LightApp_Application::addWindow( QWidget* wid, const int flag, const int st f = wid->font(); myWindows[flag]->insert( sId, wid ); - wid->setFont(f); + wid->setFont( f ); setWindowShown( flag, !myWindows[flag]->isEmpty() ); } @@ -1145,7 +1137,6 @@ void LightApp_Application::removeWindow( const int flag, const int studyId ) bool anIsEmpty = !myWindows[flag]->isEmpty(); QWidget* wid = myWindows[flag]->widget( sId ); myWindows[flag]->remove( sId ); - delete wid; //setWindowShown( flag, !myWindows[flag]->isEmpty() ); setWindowShown( flag, anIsEmpty ); @@ -1206,26 +1197,17 @@ void LightApp_Application::setWindowShown( const int type, const bool on ) /*! \return Object Browser */ -// temporary commented -/*OB_Browser* LightApp_Application::objectBrowser() +LightApp_Browser* LightApp_Application::objectBrowser() { - OB_Browser* ob = 0; - QWidget* wid = window( WT_ObjectBrowser ); - if ( wid && wid->inherits( "OB_Browser" ) ) - ob = (OB_Browser*)wid; - return ob; -}*/ + return qobject_cast( window( WT_ObjectBrowser ) ); +} /*! \return Log Window */ LogWindow* LightApp_Application::logWindow() { - LogWindow* lw = 0; - QWidget* wid = getWindow( WT_LogWindow ); - if ( wid->inherits( "LogWindow" ) ) - lw = (LogWindow*)wid; - return lw; + return qobject_cast( window( WT_LogWindow ) ); } #ifndef DISABLE_PYCONSOLE @@ -1234,11 +1216,7 @@ LogWindow* LightApp_Application::logWindow() */ PyConsole_Console* LightApp_Application::pythonConsole() { - PyConsole_Console* console = 0; - QWidget* wid = getWindow( WT_PyConsole ); - if ( wid->inherits( "PyConsole_Console" ) ) - console = (PyConsole_Console*)wid; - return console; + return qobject_cast( window( WT_PyConsole ) ); } #endif @@ -1251,10 +1229,9 @@ void LightApp_Application::updateObjectBrowser( const bool updateModels ) // update existing data models if ( updateModels ) { - // temporary commented - /*const bool isAutoUpdate = objectBrowser() ? objectBrowser()->isAutoUpdate() : true; - if( objectBrowser() ) - objectBrowser()->setAutoUpdate( false );*/ + const bool isAutoUpdate = objectBrowser() ? objectBrowser()->autoUpdate() : true; + if ( objectBrowser() ) + objectBrowser()->setAutoUpdate( false ); LightApp_Study* study = dynamic_cast(activeStudy()); if ( study ) { @@ -1268,16 +1245,14 @@ void LightApp_Application::updateObjectBrowser( const bool updateModels ) } } - // temporary commented - /*if( objectBrowser() ) - objectBrowser()->setAutoUpdate( isAutoUpdate );*/ + if( objectBrowser() ) + objectBrowser()->setAutoUpdate( isAutoUpdate ); } - // temporary commented - /*if ( objectBrowser() ) - { + + if ( objectBrowser() ) { objectBrowser()->updateGeometry(); objectBrowser()->updateTree( 0, false ); - }*/ + } } /*! @@ -1440,16 +1415,16 @@ void LightApp_Application::onStudyCreated( SUIT_Study* theStudy ) aRoot = theStudy->root(); //aRoot->setName( tr( "DATA_MODELS" ) ); } + getWindow( WT_ObjectBrowser ); - // temporary commented - /*if ( objectBrowser() != 0 ) - objectBrowser()->setRootObject( aRoot );*/ + + if ( objectBrowser() ) + objectBrowser()->setRoot( aRoot ); activateModule( defaultModule() ); - // temporary commented - /*if ( objectBrowser() ) - objectBrowser()->openLevels();*/ + if ( objectBrowser() ) + objectBrowser()->openLevels(); activateWindows(); } @@ -1466,16 +1441,16 @@ void LightApp_Application::onStudyOpened( SUIT_Study* theStudy ) aRoot = theStudy->root(); //aRoot->dump(); } + getWindow( WT_ObjectBrowser ); - // temporary commented - /*if ( objectBrowser() ) - objectBrowser()->setRootObject( aRoot );*/ + + if ( objectBrowser() ) + objectBrowser()->setRoot( aRoot ); activateModule( defaultModule() ); - // temporary commented - /*if ( objectBrowser() ) - objectBrowser()->openLevels();*/ + if ( objectBrowser() ) + objectBrowser()->openLevels(); activateWindows(); @@ -1640,18 +1615,20 @@ QWidget* LightApp_Application::createWindow( const int flag ) QWidget* wid = 0; if ( flag == WT_ObjectBrowser ) { - // temporary commented - /*OB_Browser* ob = new OB_Browser( desktop() ); + LightApp_Browser* ob = new LightApp_Browser( new LightApp_DataObject(), desktop() ); + ob->treeView()->setSortMenuEnabled( true ); ob->setAutoUpdate( true ); //ob->setAutoOpenLevel( 1 ); // commented by ASV as a fix to bug IPAL10107 - ob->setCaption( tr( "OBJECT_BROWSER" ) ); + ob->setWindowTitle( tr( "OBJECT_BROWSER" ) ); + // temporary commented + /* OB_ListView* ob_list = dynamic_cast( const_cast( ob->listView() ) ); if( ob_list ) ob_list->setColumnMaxWidth( 0, desktop()->width()/4 ); ob->setFilter( new LightApp_OBFilter( selectionMgr() ) ); - ob->setNameTitle( tr( "OBJ_BROWSER_NAME" ) ); + */ // Create OBSelector new LightApp_OBSelector( ob, mySelMgr ); @@ -1659,7 +1636,6 @@ QWidget* LightApp_Application::createWindow( const int flag ) wid = ob; ob->connectPopupRequest( this, SLOT( onConnectPopupRequest( SUIT_PopupClient*, QContextMenuEvent* ) ) ); - */ } #ifndef DISABLE_PYCONSOLE else if ( flag == WT_PyConsole ) @@ -1800,7 +1776,7 @@ void LightApp_Application::createPreferences( LightApp_Preferences* pref ) pref->addPreference( tr( "PREF_MULTI_FILE" ), studyGroup, LightApp_Preferences::Bool, "Study", "multi_file" ); pref->addPreference( tr( "PREF_ASCII_FILE" ), studyGroup, LightApp_Preferences::Bool, "Study", "ascii_file" ); - pref->addPreference( tr( "PREF_STORE_POS" ), studyGroup, LightApp_Preferences::Bool, "Study", "store_positions" ); + pref->addPreference( tr( "PREF_STORE_POS" ), studyGroup, LightApp_Preferences::Bool, "Study", "store_positions" ); int extgroup = pref->addPreference( tr( "PREF_GROUP_EXT_BROWSER" ), genTab ); //pref->setItemProperty( "columns", 1, extgroup ); @@ -2025,7 +2001,7 @@ void LightApp_Application::preferencesChanged( const QString& sec, const QString if( param=="auto_size" || param=="auto_size_first" ) { // temporary commented - /*OB_Browser* ob = objectBrowser(); + /*LightApp_Browser* ob = objectBrowser(); if( !ob ) return; @@ -2206,12 +2182,12 @@ void LightApp_Application::updateWindows() if ( !myWindows.contains( it.key() ) ) continue; - DockWidgetArea dock = desktop()->dockWidgetArea( myWindows[it.key()] ); - if ( dock != NoDockWidgetArea + Qt::DockWidgetArea dock = desktop()->dockWidgetArea( myWindows[it.key()] ); + if ( dock != Qt::NoDockWidgetArea && - dock != (DockWidgetArea)it.value() ) { + dock != (Qt::DockWidgetArea)it.value() ) { //desktop()->removeDockWidget( myWindows[it.key()] ); - desktop()->addDockWidget( (DockWidgetArea)it.value(), myWindows[it.key()] ); + desktop()->addDockWidget( (Qt::DockWidgetArea)it.value(), myWindows[it.key()] ); } } @@ -2324,13 +2300,11 @@ void LightApp_Application::contextMenuPopup( const QString& type, QMenu* thePopu { CAM_Application::contextMenuPopup( type, thePopup, title ); - // temporary commented - /*OB_Browser* ob = objectBrowser(); - if ( !ob || type != ob->popupClientType() ) - return;*/ - - thePopup->addSeparator(); - thePopup->addAction( tr( "MEN_REFRESH" ), this, SLOT( onRefresh() ) ); + LightApp_Browser* ob = objectBrowser(); + if ( ob && type == ob->popupClientType() ) { + thePopup->addSeparator(); + thePopup->addAction( tr( "MEN_REFRESH" ), this, SLOT( onRefresh() ) ); + } } /*! @@ -2339,9 +2313,9 @@ void LightApp_Application::contextMenuPopup( const QString& type, QMenu* thePopu void LightApp_Application::createEmptyStudy() { CAM_Application::createEmptyStudy(); - // temporary commented - /*if ( objectBrowser() ) - objectBrowser()->updateTree();*/ + + if ( objectBrowser() ) + objectBrowser()->updateTree(); } /*! @@ -2351,9 +2325,10 @@ void LightApp_Application::createEmptyStudy() bool LightApp_Application::activateModule( CAM_Module* mod ) { bool res = CAM_Application::activateModule( mod ); - // temporary commented - /*if ( objectBrowser() ) - objectBrowser()->updateTree();*/ + + if ( objectBrowser() ) + objectBrowser()->updateTree(); + return res; } diff --git a/src/LightApp/LightApp_Application.h b/src/LightApp/LightApp_Application.h index 3db912538..a4b0462fe 100644 --- a/src/LightApp/LightApp_Application.h +++ b/src/LightApp/LightApp_Application.h @@ -32,11 +32,10 @@ #include class LogWindow; -//class OB_Browser; +class LightApp_Browser; #ifndef DISABLE_PYCONSOLE class PyConsole_Console; #endif -//class STD_Application; class LightApp_WidgetContainer; class LightApp_Preferences; class LightApp_SelectionMgr; @@ -48,7 +47,6 @@ class CAM_Module; class QString; class QWidget; class QStringList; -//class QPixmap; #ifdef WIN32 #pragma warning( disable:4251 ) @@ -114,7 +112,7 @@ public: LightApp_SelectionMgr* selectionMgr() const; LogWindow* logWindow(); - //OB_Browser* objectBrowser(); + LightApp_Browser* objectBrowser(); #ifndef DISABLE_PYCONSOLE PyConsole_Console* pythonConsole(); #endif diff --git a/src/LightApp/LightApp_Browser.cxx b/src/LightApp/LightApp_Browser.cxx new file mode 100644 index 000000000..3617f3182 --- /dev/null +++ b/src/LightApp/LightApp_Browser.cxx @@ -0,0 +1,117 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// 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.com +// +// File : LightApp_Browser.cxx +// Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com) +// + +#include "LightApp_Browser.h" +#include +#include +#include + +/*! + \class LightApp_Browser + \brief Object browser customization. +*/ + +/*! + \brief Constructor. + \param parent parent widget +*/ +LightApp_Browser::LightApp_Browser( QWidget* parent ) +: OB_Browser( parent ) +{ + setModel( new SUIT_ProxyModel( this ) ); +} + +/*! + \brief Constructor. + \param root root data object + \param parent parent widget +*/ +LightApp_Browser::LightApp_Browser( SUIT_DataObject* root, QWidget* parent ) +: OB_Browser( parent ) +{ + setModel( new SUIT_ProxyModel( root, this ) ); + connect( treeView(), SIGNAL( sortingEnabled(bool ) ), + model(), SLOT( setSortingEnabled( bool ) ) ); +} + +/*! + \brief Get root object. + \return root object +*/ +SUIT_DataObject* LightApp_Browser::root() const +{ + SUIT_ProxyModel* m = qobject_cast( model() ); + return m ? m->root() : 0; +} + +/*! + \brief Set root object. + \param r new root object +*/ +void LightApp_Browser::setRoot( SUIT_DataObject* r ) +{ + SUIT_ProxyModel* m = qobject_cast( model() ); + if ( m ) + m->setRoot( r ); +} + +/*! + \brief Get 'auto-update tree' flag value. + \return 'auto-update tree' flag value + \sa setAutoUpdate(), updateTree() +*/ +bool LightApp_Browser::autoUpdate() const +{ + SUIT_ProxyModel* m = qobject_cast( model() ); + return m ? m->autoUpdate() : false; +} + +/*! + \brief Set 'auto-update tree' flag value. + + If this flag is set to \c true (by default), the object browser is updated + automatically when data tree is changed. + + \param on 'auto-update tree' flag value + \sa autoUpdate(), updateTree() +*/ +void LightApp_Browser::setAutoUpdate( const bool on ) +{ + SUIT_ProxyModel* m = qobject_cast( model() ); + if ( m ) + m->setAutoUpdate( on ); +} + +/*! + \brief Update object browser starting from the object \obj; + open all branches automatically if \a autoOpen is \c true. + \param obj starting object for updating + \param autoOpen if \c true automatically open branches +*/ +void LightApp_Browser::updateTree( SUIT_DataObject* obj, const bool autoOpen ) +{ + SUIT_ProxyModel* m = qobject_cast( model() ); + if ( m ) { + m->updateTree( obj ); + openLevels(); + } +} diff --git a/src/LightApp/LightApp_RootObject.h b/src/LightApp/LightApp_Browser.h similarity index 50% rename from src/LightApp/LightApp_RootObject.h rename to src/LightApp/LightApp_Browser.h index 1c1543a46..3378fd4ac 100644 --- a/src/LightApp/LightApp_RootObject.h +++ b/src/LightApp/LightApp_Browser.h @@ -16,36 +16,34 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -#ifndef LIGHTAPP_ROOTOBJECT_H -#define LIGHTAPP_ROOTOBJECT_H +// File : LightApp_Browser.h +// Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com) +// + +#ifndef LIGHTAPP_BROWSER_H +#define LIGHTAPP_BROWSER_H #include "LightApp.h" -#include "SUIT_DataObject.h" - -class LightApp_Study; - -/*! - LightApp_RootObject - class to be instanciated by only one object - - root object of LightApp data object tree. This object is not shown - in object browser (invisible), so it has no re-definition of name(), icon(), - etc. methods. The goal of this class is to provide a unified access - to LightApp_Study object from LightApp_DataObject instances. -*/ -class LIGHTAPP_EXPORT LightApp_RootObject : public SUIT_DataObject +#include + +class SUIT_DataObject; + +class LIGHTAPP_EXPORT LightApp_Browser : public OB_Browser { + Q_OBJECT + public: - LightApp_RootObject( LightApp_Study* study ) - : myStudy( study ) - {} - - virtual ~LightApp_RootObject() {} - - void setStudy( LightApp_Study* study ) { myStudy = study; } - LightApp_Study* study() const { return myStudy; } - -private: - LightApp_Study* myStudy; + LightApp_Browser( QWidget* = 0 ); + LightApp_Browser( SUIT_DataObject*, QWidget* = 0 ); + + SUIT_DataObject* root() const; + void setRoot( SUIT_DataObject* ); + + bool autoUpdate() const; + void setAutoUpdate( const bool ); + + void updateTree( SUIT_DataObject* = 0, const bool = true ); }; -#endif +#endif // LIGHTAPP_BROWSER_H diff --git a/src/LightApp/LightApp_DataModel.cxx b/src/LightApp/LightApp_DataModel.cxx index 7b14e8786..b83c84abe 100644 --- a/src/LightApp/LightApp_DataModel.cxx +++ b/src/LightApp/LightApp_DataModel.cxx @@ -23,13 +23,10 @@ #include "LightApp_DataModel.h" #include "LightApp_Study.h" -#include "LightApp_RootObject.h" #include "LightApp_DataObject.h" #include "LightApp_Module.h" #include "LightApp_Application.h" - -// temporary commented -//#include +#include "LightApp_Browser.h" #include @@ -97,9 +94,8 @@ void LightApp_DataModel::build() void LightApp_DataModel::updateWidgets() { LightApp_Application* app = dynamic_cast( module()->application() ); - // temporary commented - /*if( app ) - app->objectBrowser()->updateTree( 0, false );*/ + if ( app ) + app->objectBrowser()->updateTree( 0, false ); } /*! diff --git a/src/LightApp/LightApp_DataObject.cxx b/src/LightApp/LightApp_DataObject.cxx index 378cf63b7..692dca449 100644 --- a/src/LightApp/LightApp_DataObject.cxx +++ b/src/LightApp/LightApp_DataObject.cxx @@ -16,20 +16,24 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -#include "LightApp_DataObject.h" +// File : LightApp_DataObject.cxx +// Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com) +// +#include "LightApp_DataObject.h" #include "LightApp_Study.h" -#include "LightApp_RootObject.h" - -#include "CAM_DataModel.h" -#include "CAM_Module.h" +#include +#include #include /*! - Class: LightApp_DataObject::Key - Level: Internal + \class LightApp_DataObject::Key + \brief Represents unique data object key for the LightApp_DataObject + class instances. + \internal */ + class LightApp_DataObject::Key : public SUIT_DataObjectKey { public: @@ -43,73 +47,157 @@ private: QString myEntry; }; -/*!Constructor. Initialize by \a entry.*/ +/*! + \brief Constructor. + \internal + \param entry data object entry +*/ LightApp_DataObject::Key::Key( const QString& entry ) : SUIT_DataObjectKey(), myEntry( entry ) { } -/*!Destructor. Do nothing.*/ +/*! + \brief Destructor. + \internal +*/ LightApp_DataObject::Key::~Key() { } -/*!Checks: Is current key less than \a other.*/ +/*! + \brief Compares this key with the another one. + \internal + \param other another data object key + \return \c true if this key is less than \a other. +*/ bool LightApp_DataObject::Key::isLess( const SUIT_DataObjectKey* other ) const { Key* that = (Key*)other; return myEntry < that->myEntry; } -/*!Checks: Is current key equal with \a other.*/ +/*! + \brief Compares this key with the another one. + \internal + \param other another data object key + \return \c true if this key is equal to the \a other. +*/ bool LightApp_DataObject::Key::isEqual( const SUIT_DataObjectKey* other ) const { Key* that = (Key*)other; return myEntry == that->myEntry; } -/*!Constructor. Initialize by \a parent*/ +/*! + \class LightApp_DataObject + \brief Base data object class to build the data model for all the SALOME modules. +*/ + +/*! + \brief Constructor. + \param parent parent data object +*/ LightApp_DataObject::LightApp_DataObject( SUIT_DataObject* parent ) -: CAM_DataObject( parent ), myCompObject( 0 ), myCompDataType( "" ) +: CAM_DataObject( parent ), + myCompObject( 0 ), + myCompDataType( "" ) { } -/*!Destructor. Do nothing.*/ +/*! + \brief Destructor. +*/ LightApp_DataObject::~LightApp_DataObject() { } -/*!Gets object ID. - *\retval QString - */ +/*! + \brief Get the number of the columns provided by the data tree. + \return number of the columns +*/ +int LightApp_DataObject::columnCount() const +{ + // add "Entry" column + return CAM_DataObject::columnCount() + 1; +} + +/*! + \brief Get column title. + \param index column index + \return title of the specified column +*/ +QString LightApp_DataObject::columnTitle( const int index ) const +{ + // add "Entry" column + return index == EntryIdx ? QObject::tr( "ENTRY_COLUMN" ) + : CAM_DataObject::columnTitle( index ); +} + +/*! + \brief Check if the column should appear in the tree view header popup menu + (to show/hide the column). + \param index column index + \return \c true if the column can be shown/hidden +*/ +bool LightApp_DataObject::appropriate( const int index ) const +{ + // add "Entry" column + return index == EntryIdx ? true : CAM_DataObject::appropriate( index ); +} + +/*! + \brief Get object string identifier. + + This method should be reimplemented in the subclasses. + Default implementation returns null string. + + \return object ID +*/ QString LightApp_DataObject::entry() const { - return QString::null; + return QString(); } -/*!Create and return new key object.*/ +/*! + \brief Get the data object unique key. + \return data object key +*/ SUIT_DataObjectKey* LightApp_DataObject::key() const { QString str = entry(); return new Key( str ); } -/*!Gets component object. - *\retval SUIT_DataObject. - */ +/*! + \brief Get object text data for the specified column. + + Column with \a index = 0 (NameIdx) is supposed to be used + to get the object name. + Column with \a index = 1 (EntryIdx) is supposed to be used + to get the object entry. + + \param index column index + \return object text data +*/ +QString LightApp_DataObject::text( const int index ) const +{ + // add "Entry" column + return index == EntryIdx ? entry() : CAM_DataObject::text( index ); +} + +/*! + \brief Get the component object. + \return component data object +*/ SUIT_DataObject* LightApp_DataObject::componentObject() const { if ( !myCompObject ) { - SUIT_DataObject* compObj = 0; // for root object - - if ( parent() && parent() == root() ) - compObj = (SUIT_DataObject*)this; // for component-level objects - else - { - compObj = parent(); // for lower level objects - while ( compObj && compObj->parent() != root() ) - compObj = compObj->parent(); + SUIT_DataObject* compObj = (SUIT_DataObject*)this; + + while ( compObj && compObj->parent() && compObj->parent() != root() ) { + compObj = compObj->parent(); } LightApp_DataObject* that = (LightApp_DataObject*)this; that->myCompObject = compObj; @@ -117,11 +205,14 @@ SUIT_DataObject* LightApp_DataObject::componentObject() const return myCompObject; } -/*!Get component type.*/ +/*! + \brief Get component type. + \return component type +*/ QString LightApp_DataObject::componentDataType() const { if ( myCompDataType.isEmpty() ) { - SUIT_DataObject* aCompObj = componentObject(); + SUIT_DataObject* aCompObj = componentObject(); LightApp_ModuleObject* anObj = dynamic_cast( aCompObj ); if ( anObj ) { CAM_DataModel* aModel = anObj->dataModel(); @@ -134,45 +225,113 @@ QString LightApp_DataObject::componentDataType() const return myCompDataType; } +/*! + \class LightApp_ModuleObject + \brief Used for optimized access to the data model from the data objects. + \sa CAM_ModuleObject class +*/ - -/*!Constructor.Initialize by \a parent.*/ +/*! + \brief Constructor. + \param parent parent data object +*/ LightApp_ModuleObject::LightApp_ModuleObject( SUIT_DataObject* parent ) -: CAM_RootObject( parent ), - CAM_DataObject( parent ) +: CAM_DataObject( parent ), + LightApp_DataObject( parent ), + CAM_ModuleObject( parent ) { } -/*!Constructor.Initialize by \a module and parent.*/ +/*! + \brief Constructor. + \param dm data model + \param parent parent data object +*/ LightApp_ModuleObject::LightApp_ModuleObject( CAM_DataModel* dm, SUIT_DataObject* parent ) -: CAM_RootObject( dm, parent ), - CAM_DataObject( parent ) +: CAM_DataObject( parent ), + LightApp_DataObject( parent ), + CAM_ModuleObject( dm, parent ) { } -/*!Destructor. Do nothing.*/ +/* + \brief Destructor. +*/ LightApp_ModuleObject::~LightApp_ModuleObject() { } -/*!Returns module name */ +/*! + \brief Get module name. + \return module name +*/ QString LightApp_ModuleObject::name() const { - return CAM_RootObject::name(); + return CAM_ModuleObject::name(); } -/*!Insert new child object to the children list at specified position - *\add component in Study for this module object if it necessary*/ -void LightApp_ModuleObject::insertChild( SUIT_DataObject* theObj, int thePosition ) +/*! + \brief Insert new child object to the children list at specified position. + + Adds component in the study for this module object if it is not done yet. + + \param obj object to be inserted + \param pos position at which data object should be inserted +*/ +void LightApp_ModuleObject::insertChild( SUIT_DataObject* obj, int pos ) { - CAM_RootObject::insertChild(theObj, thePosition); + LightApp_DataObject::insertChild( obj, pos ); CAM_DataModel* aModel = dataModel(); - LightApp_RootObject* aRoot = dynamic_cast(parent()); + LightApp_RootObject* aRoot = dynamic_cast( parent() ); + + if ( aRoot ) + aRoot->study()->addComponent( aModel ); +} + +/*! + \class LightApp_RootObject + \brief Root data object for the light (without CORBA) SALOME application. + + This class is to be instanciated by only one object - the root object + of the LightApp data object tree. This object is not shown in the object browser. + The goal of this class is to provide a unified access to LightApp_Study + object from LightApp_DataObject instances. +*/ - if (aRoot) - aRoot->study()->addComponent(aModel); +/* + \brief Constructor. + \param study study +*/ +LightApp_RootObject::LightApp_RootObject( LightApp_Study* study ) +: CAM_DataObject( 0 ), + LightApp_DataObject( 0 ), + myStudy( study ) +{ +} +/* + \brief Destructor. +*/ +LightApp_RootObject::~LightApp_RootObject() +{ +} +/* + \brief Set study. + \param study pointer to the study +*/ +void LightApp_RootObject::setStudy( LightApp_Study* study ) +{ + myStudy = study; } + +/* + \brief Get study + \return pointer to the study +*/ +LightApp_Study* LightApp_RootObject::study() const +{ + return myStudy; +} diff --git a/src/LightApp/LightApp_DataObject.h b/src/LightApp/LightApp_DataObject.h index ec2469b0b..da41a7d07 100644 --- a/src/LightApp/LightApp_DataObject.h +++ b/src/LightApp/LightApp_DataObject.h @@ -16,34 +16,42 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File : LightApp_DataObject.h +// Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com) +// + #ifndef LIGHTAPP_DATAOBJECT_H #define LIGHTAPP_DATAOBJECT_H #include "LightApp.h" - -#include "CAM_DataObject.h" -#include "CAM_RootObject.h" +#include class CAM_DataModel; - class LightApp_Study; -/*!Description : Data Object has empty entry so it's children must redefine metod entry() and return some unique string*/ -// to do : decomment virtual inheritance class LIGHTAPP_EXPORT LightApp_DataObject : public virtual CAM_DataObject { class Key; public: - enum { CT_Value, CT_Entry, CT_IOR, CT_RefEntry }; + //! Column index + enum { + EntryIdx = NameIdx + 1 //!< entry column + }; public: LightApp_DataObject( SUIT_DataObject* = 0 ); virtual ~LightApp_DataObject(); + virtual int columnCount() const; + virtual QString columnTitle( const int = NameIdx ) const; + virtual bool appropriate( const int = NameIdx ) const; + virtual SUIT_DataObjectKey* key() const; virtual QString entry() const; + virtual QString text( const int = NameIdx ) const; + virtual SUIT_DataObject* componentObject() const; virtual QString componentDataType() const; @@ -52,22 +60,31 @@ protected: SUIT_DataObject* myCompObject; }; -/*! - * LightApp_ModuleObject - class for optimized access to DataModel from - * CAM_RootObject.h. - * In modules which will be redefine LightApp_DataObject, LightApp_ModuleObject must be children from rederined DataObject for having necessary properties and children from LightApp_ModuleObject. - */ - -class LIGHTAPP_EXPORT LightApp_ModuleObject : public CAM_RootObject +class LIGHTAPP_EXPORT LightApp_ModuleObject +: public virtual LightApp_DataObject, public CAM_ModuleObject { public: LightApp_ModuleObject( SUIT_DataObject* = 0 ); - LightApp_ModuleObject ( CAM_DataModel*, SUIT_DataObject* = 0 ); + LightApp_ModuleObject( CAM_DataModel*, SUIT_DataObject* = 0 ); virtual ~LightApp_ModuleObject(); virtual QString name() const; - virtual void insertChild( SUIT_DataObject*, int thePosition ); + virtual void insertChild( SUIT_DataObject*, int ); +}; + +class LIGHTAPP_EXPORT LightApp_RootObject : public virtual LightApp_DataObject +{ +public: + LightApp_RootObject( LightApp_Study* ); + + virtual ~LightApp_RootObject(); + + void setStudy( LightApp_Study* ); + LightApp_Study* study() const; + +private: + LightApp_Study* myStudy; }; -#endif +#endif // LIGHTAPP_DATAOBJECT_H diff --git a/src/LightApp/LightApp_Module.cxx b/src/LightApp/LightApp_Module.cxx index a83523f91..d67881b80 100644 --- a/src/LightApp/LightApp_Module.cxx +++ b/src/LightApp/LightApp_Module.cxx @@ -35,6 +35,7 @@ #include "LightApp_SwitchOp.h" #include "LightApp_UpdateFlags.h" #include "LightApp_ShowHideOp.h" +#include "LightApp_Browser.h" #include #include @@ -75,9 +76,6 @@ #endif #endif -// temporary commented -//#include - #include #include @@ -139,9 +137,8 @@ void LightApp_Module::contextMenuPopup( const QString& client, QMenu* menu, QStr void LightApp_Module::updateObjBrowser( bool theIsUpdateDataModel, SUIT_DataObject* theDataObject ) { - // temporary commented - /*bool upd = getApp()->objectBrowser()->isAutoUpdate(); - getApp()->objectBrowser()->setAutoUpdate( false );*/ + bool upd = getApp()->objectBrowser()->autoUpdate(); + getApp()->objectBrowser()->setAutoUpdate( false ); if( theIsUpdateDataModel ){ if( CAM_DataModel* aDataModel = dataModel() ){ @@ -156,9 +153,9 @@ void LightApp_Module::updateObjBrowser( bool theIsUpdateDataModel, } } } - // temporary commented - /*getApp()->objectBrowser()->setAutoUpdate( upd ); - getApp()->objectBrowser()->updateTree( 0, false );*/ + + getApp()->objectBrowser()->setAutoUpdate( upd ); + getApp()->objectBrowser()->updateTree( 0, false ); } /*!NOT IMPLEMENTED*/ @@ -242,9 +239,10 @@ void LightApp_Module::update( const int theFlags ) if( LightApp_DataModel* aModel = dynamic_cast( aDataModel ) ) aModel->update( 0, dynamic_cast( getApp()->activeStudy() ) ); } - // temporary commented - /*if ( theFlags & UF_ObjBrowser ) - getApp()->objectBrowser()->updateTree( 0 );*/ + + if ( theFlags & UF_ObjBrowser ) + getApp()->objectBrowser()->updateTree( 0 ); + if ( theFlags & UF_Controls ) updateControls(); if ( theFlags & UF_Viewer ) diff --git a/src/LightApp/LightApp_Study.cxx b/src/LightApp/LightApp_Study.cxx index 6c3ae1bad..900f142e8 100644 --- a/src/LightApp/LightApp_Study.cxx +++ b/src/LightApp/LightApp_Study.cxx @@ -23,7 +23,6 @@ #include "LightApp_Application.h" #include "LightApp_DataModel.h" #include "LightApp_DataObject.h" -#include "LightApp_RootObject.h" #include "LightApp_HDFDriver.h" #include "SUIT_ResourceMgr.h" diff --git a/src/LightApp/LightApp_WidgetContainer.cxx b/src/LightApp/LightApp_WidgetContainer.cxx index c7ac53a2e..a824dcefe 100644 --- a/src/LightApp/LightApp_WidgetContainer.cxx +++ b/src/LightApp/LightApp_WidgetContainer.cxx @@ -16,137 +16,202 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File : LightApp_WidgetContainer.cxx +// Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com) +// + #include "LightApp_WidgetContainer.h" -#include #include /*! - Constructor. + \class LightApp_WidgetContainer + \brief Class which implements widget container. + + This class allows to put all the child widgets in the stack widget. + Only one widget is visible at the moment. + + Each widget can be referred by unique number identifier passed as parameter + to the insert() method. Removing of the widgets from the container is done + via remove() method. + + To raise the widget to the top (to make it visiable) use activate() method. + Current widget can be retrieved with active() method. +*/ + +/*! + \brief Constructor. + \param type widget container type + \param parent parent widget */ LightApp_WidgetContainer::LightApp_WidgetContainer( const int type, QWidget* parent ) - : QDockWidget( /*QDockWindow::InDock,*/ parent ), - myType( type ) +: QDockWidget( parent ), + myType( type ) { - setObjectName(QString("WC_%1").arg(type)); + setObjectName( QString( "WC_%1" ).arg( type ) ); setWidget( myStack = new QStackedWidget( this ) ); myStack->show(); } /*! - Destructor. + \brief Destructor. */ LightApp_WidgetContainer::~LightApp_WidgetContainer() { } /*! - Checks: is widget container is empty? + \brief Get the type of the widget container. + \return widget container type (passed as parameter to the constructor) */ -bool LightApp_WidgetContainer::isEmpty() const +int LightApp_WidgetContainer::type() const { - const QList lst = myStack->children(); - if ( lst.isEmpty() ) - return true; - - bool res = true; - QListIterator it( lst ); - while ( it.hasNext() && res ) - { - QObject* anItem = it.next(); - if ( anItem->isWidgetType() && myStack->indexOf( (QWidget*)anItem ) != -1 ) - res = false; - } - return res; + return myType; } /*! - Gets type of widget container. + \brief Insert widget \a wid with identifier \a id to the container. + + If there is already a widget with the specified identifier it is removed. + + \param id widget ID + \param wid widget being inserted + \return widget identifier or -1 on error */ -int LightApp_WidgetContainer::type() const +int LightApp_WidgetContainer::insert( const int id, QWidget* wid ) { - return myType; + if ( id == -1 || !wid ) + return -1; + + if ( widget( id ) == wid ) + return -1; + + remove( id ); + + myStack->addWidget( wid ); + if ( !myStack->currentWidget() ) + activate( wid ); + + myMap.insert( id, wid ); + + connect( wid, SIGNAL( destroyed( QObject* ) ), this, SLOT( onDestroyed( QObject* ) ) ); + + return id; } /*! - Checks: is container contains widget with id \a id. + \brief Remove widget with the specified identifier from the container. + \param id widget ID + \param del if \c true (default) destroy the child widget */ -bool LightApp_WidgetContainer::contains( const int id ) const +void LightApp_WidgetContainer::remove( const int id, const bool del ) { - return myStack->widget( id ) != 0; + if ( myMap.contains( id ) ) + remove( myMap[ id ], del ); } /*! - * Insert widget(\a wid with id \a id) to container.And return id of widget in stack. - *\warning remove widget with id = \a id , if it was in container. - */ -int LightApp_WidgetContainer::insert( const int id, QWidget* wid ) + \brief Remove specified widget from the container. + \param wid widget being removed + \param del if \c true (default) destroy the child widget +*/ +void LightApp_WidgetContainer::remove( QWidget* wid, const bool del ) { - if ( id == -1 || !wid ) - return -1; + if ( !wid ) + return; - if ( contains( id ) ) - remove( id ); + myStack->removeWidget( wid ); + QMutableMapIterator it( myMap ); + while ( it.hasNext() ) { + it.next(); + if ( it.value() == wid ) { + it.remove(); + break; + } + } - int stackId = myStack->insertWidget( id, wid ); - if ( !myStack->currentWidget() ) - myStack->setCurrentWidget( wid ); + disconnect( wid, SIGNAL( destroyed( QObject* ) ), this, SLOT( onDestroyed( QObject* ) ) ); - setWindowTitle( myStack->currentWidget() ? myStack->currentWidget()->windowTitle() : QString::null ); + if ( del ) + delete wid; - return stackId; + setWindowTitle( myStack->currentWidget() ? myStack->currentWidget()->windowTitle() : QString() ); } /*! - Remove widget(\a wid) from stack. + \brief Check if the container contains a widget with the + specified identifier. + \param id widget ID + \return \c true if container contains a widget */ -void LightApp_WidgetContainer::remove( const int id ) +bool LightApp_WidgetContainer::contains( const int id ) const { - remove( myStack->widget( id ) ); - - setWindowTitle( myStack->currentWidget() ? myStack->currentWidget()->windowTitle() : QString::null ); + return myMap.contains( id ); } /*! - Remove widget(\a wid) from stack. + \brief Check if the container contains specified widget. + \param widget widget being checked + \return \c true if container contains a widget */ -void LightApp_WidgetContainer::remove( QWidget* wid ) +bool LightApp_WidgetContainer::contains( QWidget* wid ) const { - myStack->removeWidget( wid ); + bool found = false; + QMapIterator it( myMap ); + while ( it.hasNext() && !found ) { + it.next(); + if ( it.value() == wid ) + found = true; + } + return found; +} - setWindowTitle( myStack->currentWidget() ? myStack->currentWidget()->windowTitle() : QString::null ); +/*! + \brief Check if the widget container is empty. + \return \c true if widget container does not have child widgets +*/ +bool LightApp_WidgetContainer::isEmpty() const +{ + return myMap.count() > 0; } /*! - Raise widget with id = \a id. + \brief Bring the widget with the specified identifier to the top + of the container. + \param id widget ID */ void LightApp_WidgetContainer::activate( const int id ) { - myStack->setCurrentIndex( id ); - - setWindowTitle( myStack->currentWidget() ? myStack->currentWidget()->windowTitle() : QString::null ); + if ( myMap.contains( id ) ) + activate( myMap[ id ] ); } /*! - Raise widget (\a wid). + \brief Bring the specified widget to the top of the container. + \param wid widget to be activated */ void LightApp_WidgetContainer::activate( QWidget* wid ) { - myStack->setCurrentWidget( wid ); + if ( !wid || !contains( wid ) ) + return; - setWindowTitle( myStack->currentWidget() ? myStack->currentWidget()->windowTitle() : QString::null ); + myStack->setCurrentWidget( wid ); + setWindowTitle( wid ? wid->windowTitle() : QString() ); } /*! - Gets widget from container list(stack) by id = \a id. + \brief Get widget with the specified identifier. + \param id widget ID + \return widget pointer or 0 if \a id is invalid */ QWidget* LightApp_WidgetContainer::widget( const int id ) const { - return myStack->widget( id ); + return myMap.contains( id ) ? myMap[ id ] : 0; } /*! - Gets visible widget. + \brief Get currently visible widget. + \return current widget or 0 if there is no any */ QWidget* LightApp_WidgetContainer::active() const { @@ -166,3 +231,19 @@ void LightApp_WidgetContainer::setVisible ( bool visible ) QDockWidget::setVisible( visible ); emit( visibilityChanged( visible ) ); } + +/*! + \brief Called when the child widget is destroyed. + \param wid widget being destroyed +*/ +void LightApp_WidgetContainer::onDestroyed( QObject* wid ) +{ + QMutableMapIterator it( myMap ); + while ( it.hasNext() ) { + it.next(); + if ( it.value() == wid ) { + it.remove(); + break; + } + } +} diff --git a/src/LightApp/LightApp_WidgetContainer.h b/src/LightApp/LightApp_WidgetContainer.h index 23aa342a0..10208f090 100644 --- a/src/LightApp/LightApp_WidgetContainer.h +++ b/src/LightApp/LightApp_WidgetContainer.h @@ -16,19 +16,21 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File : LightApp_WidgetContainer.h +// Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com) +// + #ifndef LIGHTAPP_WIDGETCONTAINER_H #define LIGHTAPP_WIDGETCONTAINER_H #include "LightApp.h" #include +#include class QWidget; class QStackedWidget; -/*! - Class which privade widget container. -*/ class LIGHTAPP_EXPORT LightApp_WidgetContainer : public QDockWidget { Q_OBJECT @@ -37,30 +39,34 @@ public: LightApp_WidgetContainer( const int, QWidget* = 0 ); virtual ~LightApp_WidgetContainer(); - bool isEmpty() const; + int type() const; - int type() const; + int insert( const int, QWidget* ); + void remove( const int, const bool = true ); + void remove( QWidget*, const bool = true ); + bool contains( const int ) const; + bool contains( QWidget* ) const; + bool isEmpty() const; - int insert( const int, QWidget* ); - void remove( QWidget* ); - void remove( const int ); - bool contains( const int ) const; + void activate( const int ); + void activate( QWidget* ); - void activate( QWidget* ); - void activate( const int ); - - QWidget* active() const; - QWidget* widget( const int ) const; + QWidget* widget( const int ) const; + QWidget* active() const; public slots: - virtual void setVisible ( bool ); + virtual void setVisible( bool ); signals: - void visibilityChanged ( bool ); + void visibilityChanged( bool ); + +private slots: + void onDestroyed( QObject* ); private: - int myType; - QStackedWidget* myStack; + int myType; + QStackedWidget* myStack; + QMap myMap; }; -#endif +#endif // LIGHTAPP_WIDGETCONTAINER_H diff --git a/src/LightApp/Makefile.am b/src/LightApp/Makefile.am index 12e38da06..ce506cd96 100755 --- a/src/LightApp/Makefile.am +++ b/src/LightApp/Makefile.am @@ -29,6 +29,7 @@ salomeinclude_HEADERS= \ LightApp.h \ LightApp_AboutDlg.h \ LightApp_Application.h \ + LightApp_Browser.h \ LightApp_DataModel.h \ LightApp_DataObject.h \ LightApp_DataOwner.h \ @@ -51,7 +52,6 @@ salomeinclude_HEADERS= \ LightApp_SwitchOp.h \ LightApp_Preferences.h \ LightApp_PreferencesDlg.h \ - LightApp_RootObject.h \ LightApp_UpdateFlags.h \ LightApp_WidgetContainer.h @@ -72,6 +72,7 @@ endif dist_libLightApp_la_SOURCES= \ LightApp_AboutDlg.cxx \ LightApp_Application.cxx \ + LightApp_Browser.cxx \ LightApp_DataModel.cxx \ LightApp_DataObject.cxx \ LightApp_DataOwner.cxx \ @@ -113,6 +114,7 @@ endif MOC_FILES= \ LightApp_AboutDlg_moc.cxx \ LightApp_Application_moc.cxx \ + LightApp_Browser_moc.cxx \ LightApp_DataModel_moc.cxx \ LightApp_Dialog_moc.cxx \ LightApp_OBSelector_moc.cxx \ @@ -218,8 +220,8 @@ endif libLightApp_la_LIBADD= ../SUIT/libsuit.la ../STD/libstd.la ../CAM/libCAM.la \ ../LogWindow/libLogWindow.la $(CAS_KERNEL) \ - ../Prs/libSalomePrs.la $(HDF5_LIBS) $(KERNEL_LDFLAGS) -lSalomeHDFPersist -#../ObjBrowser/libObjBrowser.la + ../Prs/libSalomePrs.la ../ObjBrowser/libObjBrowser.la \ + $(HDF5_LIBS) $(KERNEL_LDFLAGS) -lSalomeHDFPersist if ENABLE_SALOMEOBJECT libLightApp_la_LIBADD+= ../OBJECT/libSalomeObject.la diff --git a/src/LightApp/resources/LightApp_msg_en.ts b/src/LightApp/resources/LightApp_msg_en.ts index 50a399391..d43659692 100644 --- a/src/LightApp/resources/LightApp_msg_en.ts +++ b/src/LightApp/resources/LightApp_msg_en.ts @@ -26,6 +26,10 @@ CEA/DEN, CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITASABOUT_VERSION Version %1 + + ENTRY_COLUMN + Entry + LightApp_Application diff --git a/src/LightApp/resources/icon_about.png b/src/LightApp/resources/icon_about.png index 6817eb4073d11a0fe69b69d01bc06f5a8895f208..ff65d363ec2bbf1930e69543d1a2e1ed1b8f9784 100755 GIT binary patch literal 29481 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

=99`oTMIniEX(Ka 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

pRy+VCUxMW)5^{eKYF%!!`Y&>!SJ6 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%0DS#9ZQXCT|^fQ~y@q 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

UuoQUw4417IO=PY6_dtkoV20JST@ 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 g5I0101Bbx>4}vrTu`<^{EdT%j07*qoM6N<$f-