X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_DataBrowser.cxx;h=9092fa875276826f1224faaa45e515cdef6fce52;hb=298c1759f9b1d4a7dc316742b7a13008eb4234e1;hp=d5460b64f0bb1abc31f70d1c963182732c19b45c;hpb=315830b12591d44366f952e440338e856595f848;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_DataBrowser.cxx b/src/HYDROGUI/HYDROGUI_DataBrowser.cxx index d5460b64..9092fa87 100644 --- a/src/HYDROGUI/HYDROGUI_DataBrowser.cxx +++ b/src/HYDROGUI/HYDROGUI_DataBrowser.cxx @@ -1,12 +1,8 @@ -// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// +// Copyright (C) 2014-2015 EDF-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. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -42,6 +38,8 @@ #include #include +#include +#include class SUIT_DataBrowser; class LightApp_DataObject; @@ -190,7 +188,10 @@ void HYDROGUI_OBSelector::fillEntries( QMap& entr } -HYDROGUI_DataBrowser::HYDROGUI_DataBrowser( HYDROGUI_Module* theModule, SUIT_DataObject* theRoot, QWidget* theParent ) +HYDROGUI_DataBrowser::HYDROGUI_DataBrowser( HYDROGUI_Module* theModule, + SUIT_DataObject* theRoot, + QWidget* theParent, + bool theLandCover/* = false*/) : SUIT_DataBrowser( theRoot, theParent ), myModule( theModule ) { SUIT_ResourceMgr* resMgr = theModule->getApp()->resourceMgr(); @@ -213,7 +214,11 @@ HYDROGUI_DataBrowser::HYDROGUI_DataBrowser( HYDROGUI_Module* theModule, SUIT_Dat QString EntryCol = QObject::tr( "ENTRY_COLUMN" ); QString RefObjCol = tr( "REF_OBJECT_COLUMN" ); - QString AltitudeCol = tr( "ALTITUDE_COLUMN" ); + QString AltitudeCol; + if ( theLandCover ) + AltitudeCol = tr( "LAND_COVER_COLUMN" ); + else + AltitudeCol = tr( "ALTITUDE_COLUMN" ); SUIT_AbstractModel* treeModel = dynamic_cast( model() ); //RKV: treeModel->setSearcher( theModule->getApp() ); @@ -277,7 +282,7 @@ HYDROGUI_DataBrowser::HYDROGUI_DataBrowser( HYDROGUI_Module* theModule, SUIT_Dat treeView()->setColumnWidth(SUIT_DataObject::VisibilityId, VISIBILITY_COLUMN_WIDTH); treeView()->hideColumn( SUIT_DataObject::VisibilityId ); treeView()->hideColumn( LightApp_DataObject::EntryId ); - //RKV: connectPopupRequest( theModule->getApp(), SLOT( onConnectPopupRequest( SUIT_PopupClient*, QContextMenuEvent* ) ) ); + connectPopupRequest( theModule->getApp(), SLOT( onConnectPopupRequest( SUIT_PopupClient*, QContextMenuEvent* ) ) ); } HYDROGUI_DataBrowser::~HYDROGUI_DataBrowser() @@ -294,3 +299,63 @@ SUIT_DataObject* HYDROGUI_DataBrowser::findObject( const QString& theEntry ) con } return NULL; } + +/*! + \brief Switch read only mode for the Object Browser. + \param theIsReadOnly if true - read only mode will be turned on +*/ +void HYDROGUI_DataBrowser::setReadOnly( const bool theIsReadOnly ) +{ + //TODO: to be reimplemented + + // Enable/disable edit triggers + foreach ( QTreeView* aView, findChildren() ) { + aView->setDragEnabled ( !theIsReadOnly ); + aView->setEditTriggers ( theIsReadOnly ? + QAbstractItemView::NoEditTriggers : + QAbstractItemView::DoubleClicked ); + } + + // Enable/disable rename shortcut + QList aShortcuts = findChildren(); + QShortcut* aShortcut; + foreach( aShortcut, aShortcuts ) { + if ( aShortcut->key() == QKeySequence( shortcutKey( RenameShortcut ) ) ) { + aShortcut->setEnabled( !theIsReadOnly ); + } + } +} + +void HYDROGUI_DataBrowser::createPopupMenu( QMenu* theMenu ) +{ + theMenu->clear(); + DataObjectList aSelection = getSelected(); + bool isOnlyZones = aSelection.size() > 0; + foreach( SUIT_DataObject* anObj, aSelection ) + { + HYDROGUI_DataObject* aHydroObj = dynamic_cast( anObj ); + if( aHydroObj ) + { + Handle(HYDROData_Entity) aModelObj = aHydroObj->modelObject(); + if( !aModelObj.IsNull() ) + { + isOnlyZones = aModelObj->GetKind()==KIND_ZONE; + if( !isOnlyZones ) + break; + } + else + { + isOnlyZones = false; + break; + } + } + else + { + isOnlyZones = false; + break; + } + } + + if( isOnlyZones ) + theMenu->addAction( tr( "ZONE_TO_NEW_REGION" ), this, SIGNAL( newRegion() ) ); +}