From: nds Date: Wed, 14 Sep 2005 06:51:17 +0000 (+0000) Subject: Using LightApp library X-Git-Tag: ForTest_3_1_0a2~3 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=182f1dd13deaa22a44f96cb7066c7c5c9534573d;hp=72785a59584c0f52de6926c1463947b19a659736;p=samples%2Flight.git Using LightApp library --- diff --git a/src/LIGHTGUI/LIGHTGUI.cxx b/src/LIGHTGUI/LIGHTGUI.cxx index 39cdf5a..f182850 100644 --- a/src/LIGHTGUI/LIGHTGUI.cxx +++ b/src/LIGHTGUI/LIGHTGUI.cxx @@ -29,22 +29,27 @@ using namespace std; #include "LIGHTGUI_Selection.h" #include "LIGHTGUI_DataModel.h" -#include "LIGHTGUI_OBSelector.h" -#include "LIGHTGUI_DataOwner.h" +#include "LightApp_DataOwner.h" #include -#include -#include +#include +#include +#include "LightApp_Selection.h" #include #include +#include +#include +#include +#include + //================================================================================= // function : LIGHTGUI() // purpose : Constructor : sets the default name for the module //================================================================================= LIGHTGUI::LIGHTGUI() - : SalomeApp_Module( "LIGHTGUI" ) + : LightApp_Module( "LIGHTGUI" ) { } @@ -54,7 +59,7 @@ LIGHTGUI::LIGHTGUI() //================================================================================= void LIGHTGUI::initialize ( CAM_Application* app ) { - SalomeApp_Module::initialize( app ); + LightApp_Module::initialize( app ); QWidget* parent = application()->desktop(); @@ -62,6 +67,8 @@ void LIGHTGUI::initialize ( CAM_Application* app ) tr( "STB_LOAD_FILE" ), 0, parent, false, this, SLOT( onLoadFile() ) ); createAction( lgSaveFile, tr( "TOP_SAVE_FILE" ), QIconSet(), tr( "MEN_SAVE_FILE" ), tr( "STB_SAVE_FILE" ), 0, parent, false, this, SLOT( onSaveFile() ) ); + createAction( lgDisplayLine, tr( "TOP_DISPLAY_LINE" ), QIconSet(), tr( "MEN_DISPLAY_LINE" ), + tr( "STB_DISPLAY_LINE" ), 0, parent, false, this, SLOT( onDisplayLine() ) ); createAction( lgEditLine, tr( "TOP_EDIT_LINE" ), QIconSet(), tr( "MEN_EDIT_LINE" ), tr( "STB_EDIT_LINE" ), 0, parent, false, this, SLOT( onEditLine() ) ); createAction( lgAddLine, tr( "TOP_ADD_LINE" ), QIconSet(), tr( "MEN_ADD_LINE" ), @@ -77,6 +84,7 @@ void LIGHTGUI::initialize ( CAM_Application* app ) createMenu( lgSaveFile, aFileMnu, 10 ); int aLightMnu = createMenu( tr( "MEN_LIGHT" ), -1, -1, 50 ); + createMenu( lgDisplayLine, aLightMnu, 10 ); createMenu( lgEditLine, aLightMnu, 10 ); createMenu( lgAddLine, aLightMnu, 10 ); createMenu( separator(), aLightMnu, -1, 10 ); @@ -87,6 +95,9 @@ void LIGHTGUI::initialize ( CAM_Application* app ) int parentId = -1; QString rule = "client='ObjectBrowser' and selcount=1 and type='TextLine'"; + popupMgr()->insert ( action( lgDisplayLine ), parentId, 0 ); + popupMgr()->setRule( action( lgDisplayLine ), rule, true ); + popupMgr()->insert ( action( lgEditLine ), parentId, 0 ); popupMgr()->setRule( action( lgEditLine ), rule, true ); @@ -105,10 +116,12 @@ void LIGHTGUI::initialize ( CAM_Application* app ) // function : contextMenuPopup() // purpose : defines context popup menu //================================================================================= -void LIGHTGUI::contextMenuPopup ( const QString& client, QPopupMenu* menu, QString& ) +void LIGHTGUI::contextMenuPopup ( const QString& client, QPopupMenu* menu, QString& str) { - LIGHTGUI_Selection sel ( client, getApp()->selectionMgr() ); - popupMgr()->updatePopup( menu, &sel ); + LIGHTGUI_Selection* sel = new LIGHTGUI_Selection(); + sel->init( client, getApp()->selectionMgr() ); + popupMgr()->updatePopup( menu, sel ); + delete sel; } //================================================================================= @@ -117,18 +130,8 @@ void LIGHTGUI::contextMenuPopup ( const QString& client, QPopupMenu* menu, QStri //================================================================================= void LIGHTGUI::windows ( QMap& aMap ) const { - aMap.insert( SalomeApp_Application::WT_ObjectBrowser, Qt::DockLeft ); - aMap.insert( SalomeApp_Application::WT_PyConsole, Qt::DockBottom ); -} - -//================================================================================= -// function : engineIOR() -// purpose : Returns empty string. It means that this module -// should use default engine for its persistence. -//================================================================================= -QString LIGHTGUI::engineIOR() const -{ - return QString( "" ); + aMap.insert( LightApp_Application::WT_ObjectBrowser, Qt::DockLeft ); + aMap.insert( LightApp_Application::WT_PyConsole, Qt::DockBottom ); } //================================================================================= @@ -149,17 +152,19 @@ int LIGHTGUI::selectedLine() int aPosition = 0; // bad value // Look for selected lines - SalomeApp_Application* app = getApp(); - SalomeApp_SelectionMgr* mgr = app ? app->selectionMgr() : NULL; + LightApp_Application* app = getApp(); + LightApp_SelectionMgr* mgr = app ? app->selectionMgr() : NULL; if ( mgr ) { SUIT_DataOwnerPtrList anOwnersList; mgr->selected( anOwnersList ); // Get index of the single selected line if ( anOwnersList.size() == 1 ) { - const LIGHTGUI_DataOwner* owner = - dynamic_cast( anOwnersList[0].get() ); - aPosition = owner->lineNb(); + const LightApp_DataOwner* owner = + dynamic_cast( anOwnersList[0].get() ); + QString anEntry = owner->entry(); + int anIndex = anEntry.find("_"); + aPosition = (anEntry.mid(anIndex+1, anEntry.length() - anIndex)).toInt();//lineNb(); } } return aPosition; @@ -171,36 +176,11 @@ int LIGHTGUI::selectedLine() //================================================================================= bool LIGHTGUI::activateModule ( SUIT_Study* study ) { - bool isDone = SalomeApp_Module::activateModule( study ); + bool isDone = LightApp_Module::activateModule( study ); if ( !isDone ) return false; setMenuShown( true ); - // enable own ObjectBrowser selector an disable another ones - bool isOwnSelector = false; - QPtrList lst; - getApp()->selectionMgr()->selectors( lst ); - for ( QPtrListIterator it( lst ); it.current(); ++it ) { - if ( it.current()->type() == "ObjectBrowser" ) { - LIGHTGUI_OBSelector* anOwnSelector = dynamic_cast( it.current() ); - // restore own selector - if ( anOwnSelector ) { - // enable own - anOwnSelector->setEnabled( true ); - isOwnSelector = true; - } - else { - // disable other - it.current()->setEnabled( false ); - } - } - } - - // create own selector, if it was not found in selection manager - if ( !isOwnSelector ) { - new LIGHTGUI_OBSelector ( getApp()->objectBrowser(), getApp()->selectionMgr() ); - } - return isDone; } @@ -213,24 +193,7 @@ bool LIGHTGUI::deactivateModule ( SUIT_Study* study ) // hide menus setMenuShown( false ); - // disable own ObjectBrowser selector an enable another ones - QPtrList lst; - getApp()->selectionMgr()->selectors( lst ); - for ( QPtrListIterator it( lst ); it.current(); ++it ) { - if ( it.current()->type() == "ObjectBrowser" ) { - LIGHTGUI_OBSelector* anOwnSelector = dynamic_cast( it.current() ); - if ( anOwnSelector ) { - // disable own selector - anOwnSelector->setEnabled( false ); - } - else { - // enable other - it.current()->setEnabled( true ); - } - } - } - - return SalomeApp_Module::deactivateModule( study ); + return LightApp_Module::deactivateModule( study ); } //================================================================================= @@ -287,6 +250,35 @@ void LIGHTGUI::onSaveFile() } } } +//================================================================================= +// function : onDisplayLine() +// purpose : "Display Line" action slot +//================================================================================= +void LIGHTGUI::onDisplayLine() +{ + OCCViewer_ViewManager* aMgr = (OCCViewer_ViewManager*)getApp()->getViewManager("OCCViewer", true); + SOCC_Viewer* aViewer = (SOCC_Viewer*)aMgr->getViewModel(); + if ( !aViewer ) + return; + + LIGHTGUI_DataModel* dm = dynamic_cast( dataModel() ); + if ( !dm ) return; + int aPosition = selectedLine(); + QString aLine = dm->getLineText( aPosition ); + double aX = 0, aY = 0, aZ = 0; + QString aStrId = QString("LIGHTGUI_%1").arg(aPosition); + + Handle(LIGHTGUI_TextPrs) aPrs = new LIGHTGUI_TextPrs( aLine, gp_Pnt( aX, aY, aZ ) ); + aPrs->SetOwner(new SALOME_InteractiveObject( aStrId, "" ) ); + SOCC_Prs* prs = dynamic_cast( aViewer->CreatePrs() ); // aStringID is an "entry" + if ( prs ) { + aViewer->EraseAll(); + prs->AddObject( aPrs ); + aViewer->Display( prs ); + aViewer->Repaint(); + getApp()->updateObjectBrowser(); + } +} //================================================================================= // function : onEditLine() diff --git a/src/LIGHTGUI/LIGHTGUI.h b/src/LIGHTGUI/LIGHTGUI.h index 1fbbea1..b27d4fb 100644 --- a/src/LIGHTGUI/LIGHTGUI.h +++ b/src/LIGHTGUI/LIGHTGUI.h @@ -26,12 +26,12 @@ #ifndef LIGHTGUI_H #define LIGHTGUI_H -#include +#include -class LIGHTGUI: public SalomeApp_Module +class LIGHTGUI: public LightApp_Module { Q_OBJECT - enum { lgLoadFile = 931, lgSaveFile, lgEditLine, lgAddLine, lgDelLine, lgClear }; + enum { lgLoadFile = 931, lgSaveFile, lgDisplayLine, lgEditLine, lgAddLine, lgDelLine, lgClear }; public: LIGHTGUI(); @@ -40,8 +40,6 @@ public: virtual void contextMenuPopup ( const QString&, QPopupMenu*, QString& ); virtual void windows ( QMap& ) const; - virtual QString engineIOR() const; - protected: virtual CAM_DataModel* createDataModel(); int selectedLine(); @@ -53,10 +51,14 @@ public slots: private slots: void onLoadFile(); void onSaveFile(); + void onDisplayLine(); void onEditLine(); void onAddLine (); void onDelLine (); void onClear (); + +private: + int anIndex; }; #endif // LIGHTGUI_H diff --git a/src/LIGHTGUI/LIGHTGUI_DataModel.cxx b/src/LIGHTGUI/LIGHTGUI_DataModel.cxx index 675fcbe..8090dca 100644 --- a/src/LIGHTGUI/LIGHTGUI_DataModel.cxx +++ b/src/LIGHTGUI/LIGHTGUI_DataModel.cxx @@ -26,19 +26,24 @@ #include "LIGHTGUI_DataModel.h" #include "LIGHTGUI_DataObject.h" -#include +#include #include #include +#include +#include #include #include +#include +#include + //================================================================================= // function : LIGHTGUI_DataModel() // purpose : constructor //================================================================================= LIGHTGUI_DataModel::LIGHTGUI_DataModel ( CAM_Module* theModule ) - : SalomeApp_DataModel( theModule ), + : LightApp_DataModel( theModule ), myFileName( "" ), myStudyURL( "" ) { @@ -58,14 +63,14 @@ LIGHTGUI_DataModel::~LIGHTGUI_DataModel() //================================================================================= bool LIGHTGUI_DataModel::open ( const QString& theURL, CAM_Study* study ) { - SalomeApp_Study* aDoc = dynamic_cast( study ); + LightApp_Study* aDoc = dynamic_cast( study ); if ( !aDoc ) return false; - SalomeApp_DataModel::open( theURL, study ); + LightApp_DataModel::open( theURL, aDoc ); - // Get list of files, created for this module by SalomeApp_Engine_i::Load(). - std::vector aListOfFiles = GetListOfFiles(); + // Get list of files, created for this module by LightApp_Engine_i::Load(). + std::vector aListOfFiles = aDoc->GetListOfFiles(); // The first list item contains path to a temporary // directory, where the persistent files was placed @@ -73,18 +78,18 @@ bool LIGHTGUI_DataModel::open ( const QString& theURL, CAM_Study* study ) QString aTmpDir ( aListOfFiles[0] ); // This module operates with a single persistent file - if ( aListOfFiles.size() == 2 ) { - myStudyURL = theURL; - QString aFileName ( aListOfFiles[1] ); - QString aFullPath = SUIT_Tools::addSlash( aTmpDir ) + aFileName; + if ( aListOfFiles.size() == 2 ) { + myStudyURL = theURL; + QString aFileName ( aListOfFiles[1] ); + QString aFullPath = SUIT_Tools::addSlash( aTmpDir ) + aFileName; - loadFile( aFullPath, study ); - } + loadFile( aFullPath, aDoc ); + } // Remove the files and temporary directory, created - // for this module by SalomeApp_Engine_i::Load() + // for this module by LightApp_Engine_i::Load() bool isMultiFile = false; // TODO: decide, how to access this parameter - RemoveTemporaryFiles( isMultiFile ); + aDoc->RemoveTemporaryFiles( isMultiFile ); } return true; @@ -99,7 +104,11 @@ bool LIGHTGUI_DataModel::save() // 1. Save data to temporary files bool isMultiFile = false; // TODO: decide, how to access this parameter - QString aTmpDir ( SalomeApp_DataModel::GetTmpDir( myStudyURL.latin1(), isMultiFile ) ); + LightApp_DataModel::save(); + + LightApp_Study* study = dynamic_cast( module()->application()->activeStudy() ); + + QString aTmpDir = study->GetTmpDir( myStudyURL.latin1(), isMultiFile ); QString aFileName = SUIT_Tools::file( myStudyURL, false ) + "_LIGHTGUI.txt"; QString aFullPath = aTmpDir + aFileName; dumpFile( aFullPath ); @@ -108,7 +117,7 @@ bool LIGHTGUI_DataModel::save() std::vector aListOfFiles ( 2 ); aListOfFiles[0] = aTmpDir.latin1(); aListOfFiles[1] = aFileName.latin1(); - SetListOfFiles( aListOfFiles ); + study->SetListOfFiles( aListOfFiles ); return true; } @@ -129,6 +138,7 @@ bool LIGHTGUI_DataModel::saveAs ( const QString& theURL, CAM_Study* ) //================================================================================= bool LIGHTGUI_DataModel::close() { + LightApp_DataModel::close(); return true; } @@ -164,10 +174,10 @@ bool LIGHTGUI_DataModel::isSaved() const // function : update() // purpose : updates data model //================================================================================= -void LIGHTGUI_DataModel::update ( SalomeApp_DataObject*, SalomeApp_Study* ) +void LIGHTGUI_DataModel::update ( LightApp_DataObject*, LightApp_Study* ) { // Nothing to do here: we always keep the data tree in the up-to-date state - // The only goal of this method is to hide default behavior from SalomApp_DataModel + // The only goal of this method is to hide default behavior from LightApp_DataModel return; } @@ -394,9 +404,10 @@ void LIGHTGUI_DataModel::buildTree ( SUIT_DataObject* studyRoot, const QStringLi { if ( !studyRoot ) return; - + LIGHTGUI_ModuleObject* modelRoot = new LIGHTGUI_ModuleObject( this, studyRoot ); - CAM_DataObject* aParaObject, aLineObject; + LIGHTGUI_DataObject* aParaObject; + LIGHTGUI_DataObject* aLineObject; aParaObject = new LIGHTGUI_DataObject ( "", modelRoot ); @@ -405,7 +416,7 @@ void LIGHTGUI_DataModel::buildTree ( SUIT_DataObject* studyRoot, const QStringLi for ( ; it1 != it2; ++it1 ) { if ( (*it1).stripWhiteSpace().isEmpty() ) { aParaObject = new LIGHTGUI_DataObject ( *it1, modelRoot ); - } + } else { aLineObject = new LIGHTGUI_DataObject ( *it1, aParaObject ); } diff --git a/src/LIGHTGUI/LIGHTGUI_DataModel.h b/src/LIGHTGUI/LIGHTGUI_DataModel.h index 4cf4c57..40d94ba 100644 --- a/src/LIGHTGUI/LIGHTGUI_DataModel.h +++ b/src/LIGHTGUI/LIGHTGUI_DataModel.h @@ -30,13 +30,14 @@ #pragma once #endif // _MSC_VER > 1000 -#include +#include class CAM_Module; -class SalomeApp_Study; +class LightApp_Study; +class LightApp_DataObject; class LIGHTGUI_DataObject; -class LIGHTGUI_DataModel : public SalomeApp_DataModel +class LIGHTGUI_DataModel : public LightApp_DataModel { Q_OBJECT @@ -53,7 +54,7 @@ public: virtual bool isModified () const; virtual bool isSaved () const; - virtual void update ( SalomeApp_DataObject* = 0, SalomeApp_Study* = 0 ); + virtual void update ( LightApp_DataObject* = 0, LightApp_Study* = 0 ); bool loadFile ( const QString&, CAM_Study* study = 0 ); bool dumpFile ( const QString& = QString::null ); diff --git a/src/LIGHTGUI/LIGHTGUI_DataObject.cxx b/src/LIGHTGUI/LIGHTGUI_DataObject.cxx index 457cbc9..434ae5c 100644 --- a/src/LIGHTGUI/LIGHTGUI_DataObject.cxx +++ b/src/LIGHTGUI/LIGHTGUI_DataObject.cxx @@ -37,7 +37,8 @@ // purpose : default constructor //================================================================================= LIGHTGUI_DataObject::LIGHTGUI_DataObject ( SUIT_DataObject* parent ) - : CAM_DataObject( parent ) +: LightApp_DataObject( parent ), + CAM_DataObject( parent ) { } @@ -46,8 +47,9 @@ LIGHTGUI_DataObject::LIGHTGUI_DataObject ( SUIT_DataObject* parent ) // purpose : constructor //================================================================================= LIGHTGUI_DataObject::LIGHTGUI_DataObject ( const QString& line_text, SUIT_DataObject* parent ) - : CAM_DataObject( parent ), - myLineTxt( line_text ) +: LightApp_DataObject( parent ), + myLineTxt( line_text ), + CAM_DataObject( parent) { } @@ -59,6 +61,15 @@ LIGHTGUI_DataObject::~LIGHTGUI_DataObject() { } +/*!Gets object ID. + *\retval QString + */ +QString LIGHTGUI_DataObject::entry() const +{ + QString aStr = QString("LIGHTGUI_%1").arg(lineNb()); + return aStr; +} + //================================================================================= // function : name() // purpose : gets an name of the object @@ -142,9 +153,9 @@ int LIGHTGUI_DataObject::lineNb() const // purpose : one more constructor //================================================================================= LIGHTGUI_ModuleObject::LIGHTGUI_ModuleObject ( CAM_DataModel* dm, SUIT_DataObject* parent ) - : LIGHTGUI_DataObject( parent ), - CAM_RootObject( dm, parent ), - CAM_DataObject( parent ) +: LIGHTGUI_DataObject( parent ), + CAM_RootObject( dm, parent ), + CAM_DataObject( parent ) { } diff --git a/src/LIGHTGUI/LIGHTGUI_DataObject.h b/src/LIGHTGUI/LIGHTGUI_DataObject.h index 0a942e4..04f5493 100644 --- a/src/LIGHTGUI/LIGHTGUI_DataObject.h +++ b/src/LIGHTGUI/LIGHTGUI_DataObject.h @@ -26,21 +26,23 @@ #ifndef LIGHTGUI_DATAOBJECT_H #define LIGHTGUI_DATAOBJECT_H -#include -#include +#include +#include #include /*! * LIGHTGUI_DataObject - LIGHT module's data object class */ -class LIGHTGUI_DataObject : public virtual CAM_DataObject +class LIGHTGUI_DataObject : public virtual LightApp_DataObject { public: LIGHTGUI_DataObject ( SUIT_DataObject* = 0 ); LIGHTGUI_DataObject ( const QString&, SUIT_DataObject* = 0 ); virtual ~LIGHTGUI_DataObject(); + virtual QString entry() const; + QString name() const; QPixmap icon() const; QString toolTip() const; @@ -57,8 +59,8 @@ private: * LIGHTGUI_ModuleObject - LIGHT module's root data object class */ -class LIGHTGUI_ModuleObject : public LIGHTGUI_DataObject, - public CAM_RootObject +class LIGHTGUI_ModuleObject : public LIGHTGUI_DataObject, + public CAM_RootObject { public: LIGHTGUI_ModuleObject ( CAM_DataModel*, SUIT_DataObject* = 0 ); diff --git a/src/LIGHTGUI/LIGHTGUI_DataOwner.cxx b/src/LIGHTGUI/LIGHTGUI_DataOwner.cxx deleted file mode 100644 index a3df0e7..0000000 --- a/src/LIGHTGUI/LIGHTGUI_DataOwner.cxx +++ /dev/null @@ -1,64 +0,0 @@ -// LIGHT : sample (no-corba-engine) SALOME module -// -// 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 -// -// Author : Julia DOROVSKIKH -// Date : 01/01/2005 -// $Header$ - -#include "LIGHTGUI_DataOwner.h" - -//================================================================================= -// function : LIGHTGUI_DataOwner() -// purpose : constructor -//================================================================================= -LIGHTGUI_DataOwner::LIGHTGUI_DataOwner ( const int theLineNb ) - : myLineNb( theLineNb ) -{ -} - -//================================================================================= -// function : ~LIGHTGUI_DataOwner() -// purpose : destructor -//================================================================================= -LIGHTGUI_DataOwner::~LIGHTGUI_DataOwner() -{ -} - -//================================================================================= -// function : isEqual() -// purpose : compares two owners -//================================================================================= -bool LIGHTGUI_DataOwner::isEqual ( const SUIT_DataOwner& obj ) const -{ - const LIGHTGUI_DataOwner* other = - dynamic_cast( &obj ); - - return other && lineNb() == other->lineNb(); -} - -//================================================================================= -// function : lineNb() -// purpose : returns owner id -//================================================================================= -int LIGHTGUI_DataOwner::lineNb() const -{ - return myLineNb; -} diff --git a/src/LIGHTGUI/LIGHTGUI_DataOwner.h b/src/LIGHTGUI/LIGHTGUI_DataOwner.h deleted file mode 100644 index e8b3c3b..0000000 --- a/src/LIGHTGUI/LIGHTGUI_DataOwner.h +++ /dev/null @@ -1,44 +0,0 @@ -// LIGHT : sample (no-corba-engine) SALOME module -// -// 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 -// -// Author : Julia DOROVSKIKH -// Date : 01/01/2005 -// $Header$ - -#ifndef LIGHTGUI_DATAOWNER_H -#define LIGHTGUI_DATAOWNER_H - -#include - -class LIGHTGUI_DataOwner : public SUIT_DataOwner -{ -public: - LIGHTGUI_DataOwner ( const int ); - virtual ~LIGHTGUI_DataOwner (); - - virtual bool isEqual ( const SUIT_DataOwner& ) const; - int lineNb () const; - -private: - int myLineNb; -}; - -#endif // LIGHTGUI_DATAOWNER_H diff --git a/src/LIGHTGUI/LIGHTGUI_OBSelector.cxx b/src/LIGHTGUI/LIGHTGUI_OBSelector.cxx deleted file mode 100644 index e1e3e11..0000000 --- a/src/LIGHTGUI/LIGHTGUI_OBSelector.cxx +++ /dev/null @@ -1,125 +0,0 @@ -// LIGHT : sample (no-corba-engine) SALOME module -// -// 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 -// -// Author : Julia DOROVSKIKH -// Date : 01/01/2005 -// $Header$ - -#include "LIGHTGUI_OBSelector.h" -#include "LIGHTGUI_DataOwner.h" -#include "LIGHTGUI_DataObject.h" - -#include - -#include - -//================================================================================= -// function : LIGHTGUI_OBSelector() -// purpose : constructor -//================================================================================= -LIGHTGUI_OBSelector::LIGHTGUI_OBSelector ( OB_Browser* ob, SUIT_SelectionMgr* mgr ) - : SUIT_Selector( mgr, ob ), - myBrowser( ob ) -{ - if ( myBrowser ) { - connect( myBrowser, SIGNAL( selectionChanged() ), this, SLOT( onSelectionChanged() ) ); - } -} - -//================================================================================= -// function : ~LIGHTGUI_OBSelector() -// purpose : destructor -//================================================================================= -LIGHTGUI_OBSelector::~LIGHTGUI_OBSelector() -{ -} - -//================================================================================= -// function : browser() -// purpose : gets object browser -//================================================================================= -OB_Browser* LIGHTGUI_OBSelector::browser() const -{ - return myBrowser; -} - -//================================================================================= -// function : getSelection() -// purpose : gets selection -//================================================================================= -void LIGHTGUI_OBSelector::getSelection ( SUIT_DataOwnerPtrList& aList ) const -{ - if ( !myBrowser ) - return; - - DataObjectList objlist; - myBrowser->getSelected( objlist ); - for ( DataObjectListIterator it ( objlist ); it.current(); ++it ) - { - LIGHTGUI_DataObject* obj = dynamic_cast( it.current() ); - if ( obj ) - aList.append( SUIT_DataOwnerPtr( new LIGHTGUI_DataOwner( obj->lineNb() ) ) ); - } -} - -//================================================================================= -// function : setSelection() -// purpose : sets selection -//================================================================================= -void LIGHTGUI_OBSelector::setSelection ( const SUIT_DataOwnerPtrList& aList ) -{ - if ( !myBrowser ) - return; - - // Fill map of all data objects - QMap aMap; - - SUIT_DataObjectIterator objit ( myBrowser->getRootObject(), - SUIT_DataObjectIterator::DepthLeft ); - for ( ; objit.current(); ++objit ) - { - LIGHTGUI_DataObject* obj = dynamic_cast( objit.current() ); - if ( obj ) - aMap.insert( obj->lineNb(), obj ); - } - - // Fill list with all selected data objects - DataObjectList objList; - SUIT_DataOwnerPtrList::const_iterator ownit = aList.begin(); - for ( ; ownit != aList.end(); ++ownit ) - { - const LIGHTGUI_DataOwner* owner = - dynamic_cast( (*ownit).get() ); - if ( owner && aMap.contains( owner->lineNb() ) ) - objList.append( aMap[owner->lineNb()] ); - } - - myBrowser->setSelected( objList ); -} - -//================================================================================= -// function : onSelectionChanged() -// purpose : called when selection is changed in the Object Browser -//================================================================================= -void LIGHTGUI_OBSelector::onSelectionChanged() -{ - selectionChanged(); -} diff --git a/src/LIGHTGUI/LIGHTGUI_OBSelector.h b/src/LIGHTGUI/LIGHTGUI_OBSelector.h deleted file mode 100644 index 1a0687a..0000000 --- a/src/LIGHTGUI/LIGHTGUI_OBSelector.h +++ /dev/null @@ -1,56 +0,0 @@ -// LIGHT : sample (no-corba-engine) SALOME module -// -// 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 -// -// Author : Julia DOROVSKIKH -// Date : 01/01/2005 -// $Header$ - -#ifndef LIGHTGUI_OBSELECTOR_H -#define LIGHTGUI_OBSELECTOR_H - -#include - -class OB_Browser; - -class LIGHTGUI_OBSelector : public SUIT_Selector -{ - Q_OBJECT - -public: - LIGHTGUI_OBSelector ( OB_Browser*, SUIT_SelectionMgr* ); - virtual ~LIGHTGUI_OBSelector (); - - OB_Browser* browser () const; - - virtual QString type () const { return "ObjectBrowser"; } - -private slots: - void onSelectionChanged (); - -protected: - virtual void getSelection ( SUIT_DataOwnerPtrList& ) const; - virtual void setSelection ( const SUIT_DataOwnerPtrList& ); - -private: - OB_Browser* myBrowser; -}; - -#endif // LIGHTGUI_OBSELECTOR_H diff --git a/src/LIGHTGUI/LIGHTGUI_Selection.cxx b/src/LIGHTGUI/LIGHTGUI_Selection.cxx index 82db12c..ccc8a74 100644 --- a/src/LIGHTGUI/LIGHTGUI_Selection.cxx +++ b/src/LIGHTGUI/LIGHTGUI_Selection.cxx @@ -24,19 +24,33 @@ // $Header$ #include "LIGHTGUI_Selection.h" -#include "LIGHTGUI_DataOwner.h" +#include "LightApp_DataOwner.h" -#include +#include //================================================================================= // function : LIGHTGUI_Selection() // purpose : constructor //================================================================================= -LIGHTGUI_Selection::LIGHTGUI_Selection ( const QString& client, - SalomeApp_SelectionMgr* mgr ) +LIGHTGUI_Selection::LIGHTGUI_Selection () +: LightApp_Selection() { - myPopupClient = client; +} + +//================================================================================= +// function : ~LIGHTGUI_Selection() +// purpose : destructor +//================================================================================= +LIGHTGUI_Selection::~LIGHTGUI_Selection() +{ +} +//================================================================================= +// function : init() +// purpose : initialization +//================================================================================= +void LIGHTGUI_Selection::init( const QString& client, LightApp_SelectionMgr* mgr) +{ if ( mgr ) { SUIT_DataOwnerPtrList sel; mgr->selected( sel); @@ -44,21 +58,17 @@ LIGHTGUI_Selection::LIGHTGUI_Selection ( const QString& client, aLast = sel.end(); for ( ; anIt != aLast; anIt++ ) { SUIT_DataOwner* owner = (SUIT_DataOwner*)( (*anIt).get() ); - LIGHTGUI_DataOwner* sowner = dynamic_cast( owner ); - if ( sowner && sowner->lineNb() > 0 ) + LightApp_DataOwner* sowner = dynamic_cast( owner ); + QString anEntry = sowner->entry(); + int anIndex = anEntry.find("_"); + int aPosition = (anEntry.mid(anIndex+1, anEntry.length() - anIndex)).toInt();//lineNb(); + if ( sowner && aPosition > 0 ) myTypes.append( "TextLine" ); else myTypes.append( "Unknown" ); } } -} - -//================================================================================= -// function : ~LIGHTGUI_Selection() -// purpose : destructor -//================================================================================= -LIGHTGUI_Selection::~LIGHTGUI_Selection() -{ + LightApp_Selection::init(client, mgr); } //================================================================================= diff --git a/src/LIGHTGUI/LIGHTGUI_Selection.h b/src/LIGHTGUI/LIGHTGUI_Selection.h index f28cd78..2ce070b 100644 --- a/src/LIGHTGUI/LIGHTGUI_Selection.h +++ b/src/LIGHTGUI/LIGHTGUI_Selection.h @@ -27,20 +27,21 @@ #define LIGHTGUI_SELECTION_H #include +#include -class SalomeApp_SelectionMgr; +class LightApp_SelectionMgr; -class LIGHTGUI_Selection : public QtxPopupMgr::Selection +class LIGHTGUI_Selection : public LightApp_Selection { public: - LIGHTGUI_Selection ( const QString&, SalomeApp_SelectionMgr* ); + LIGHTGUI_Selection (); virtual ~LIGHTGUI_Selection (); + virtual void init( const QString&, LightApp_SelectionMgr* ); virtual int count () const; virtual QtxValue param ( const int, const QString& ) const; private: - QString myPopupClient; QStringList myTypes; }; diff --git a/src/LIGHTGUI/LIGHT_msg_en.po b/src/LIGHTGUI/LIGHT_msg_en.po index f99176a..3ea89c2 100644 --- a/src/LIGHTGUI/LIGHT_msg_en.po +++ b/src/LIGHTGUI/LIGHT_msg_en.po @@ -53,6 +53,14 @@ msgstr "Save text file" msgid "STB_SAVE_FILE" msgstr "Save text file" +msgid "TOP_DISPLAY_LINE" +msgstr "Display line" + +msgid "MEN_DISPLAY_LINE" +msgstr "Display selected line" + +msgid "STB_DISPLAY_LINE" +msgstr "Display selected line" msgid "TOP_EDIT_LINE" msgstr "Edit line" diff --git a/src/LIGHTGUI/Makefile.in b/src/LIGHTGUI/Makefile.in index 8383322..e3e127a 100644 --- a/src/LIGHTGUI/Makefile.in +++ b/src/LIGHTGUI/Makefile.in @@ -46,27 +46,21 @@ LIB_SRC = \ LIGHTGUI.cxx \ LIGHTGUI_Selection.cxx \ LIGHTGUI_DataObject.cxx \ - LIGHTGUI_DataOwner.cxx \ LIGHTGUI_DataModel.cxx \ - LIGHTGUI_OBSelector.cxx + LIGHTGUI_TextPrs.cxx LIB_CLIENT_IDL = SALOME_Component.idl # MOC pre-processing LIB_MOC = \ LIGHTGUI.h \ LIGHTGUI_DataModel.h \ - LIGHTGUI_OBSelector.h # additionnal compilation flags -CPPFLAGS += \ - $(QT_INCLUDES) $(VTK_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) -I${BOOSTDIR} \ - -I${KERNEL_ROOT_DIR}/include/salome \ +CPPFLAGS +=$(PYTHON_INCLUDES) $(QT_INCLUDES) $(VTK_INCLUDES) $(OCC_INCLUDES) -I${BOOSTDIR} \ -I${GUI_ROOT_DIR}/include/salome # additionnal linkage flags -LDFLAGS += \ - -lSalomeApp \ - -L${KERNEL_ROOT_DIR}/lib/salome \ - -L${GUI_ROOT_DIR}/lib/salome +LDFLAGS +=$(PYTHON_LIBS) $(QT_MT_LIBS)\ + -lLightApp -L${GUI_ROOT_DIR}/lib/salome @CONCLUDE@