mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2024-12-26 09:20:35 +05:00
0022311: EDF 2687 GEOM: Management of Publish Objects
This commit is contained in:
parent
d99f7ea71c
commit
46044070d6
@ -26,10 +26,13 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
#include "GEOMToolsGUI_PublishDlg.h"
|
#include "GEOMToolsGUI_PublishDlg.h"
|
||||||
|
#include "GEOM_Displayer.h"
|
||||||
|
#include "GeometryGUI.h"
|
||||||
|
|
||||||
//SALOME GUI includes
|
//SALOME GUI includes
|
||||||
#include <SUIT_Session.h>
|
#include <SUIT_Session.h>
|
||||||
#include <SUIT_DataObject.h>
|
#include <SUIT_DataObject.h>
|
||||||
|
#include <SUIT_ResourceMgr.h>
|
||||||
|
|
||||||
#include <CAM_DataModel.h>
|
#include <CAM_DataModel.h>
|
||||||
|
|
||||||
@ -41,6 +44,7 @@
|
|||||||
|
|
||||||
|
|
||||||
//QT includes
|
//QT includes
|
||||||
|
#include <QHeaderView>
|
||||||
#include <QGridLayout>
|
#include <QGridLayout>
|
||||||
#include <QTreeWidget>
|
#include <QTreeWidget>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
@ -48,6 +52,8 @@
|
|||||||
#define DEFAULT_MARGIN 11
|
#define DEFAULT_MARGIN 11
|
||||||
#define DEFAULT_SPACING 6
|
#define DEFAULT_SPACING 6
|
||||||
|
|
||||||
|
#define VISIBILITY_COLUMN_WIDTH 25
|
||||||
|
|
||||||
GEOMToolsGUI_PublishDlg::GEOMToolsGUI_PublishDlg(QWidget* parent):
|
GEOMToolsGUI_PublishDlg::GEOMToolsGUI_PublishDlg(QWidget* parent):
|
||||||
QDialog(parent, Qt::WindowTitleHint | Qt::WindowSystemMenuHint)
|
QDialog(parent, Qt::WindowTitleHint | Qt::WindowSystemMenuHint)
|
||||||
{
|
{
|
||||||
@ -62,13 +68,21 @@ GEOMToolsGUI_PublishDlg::GEOMToolsGUI_PublishDlg(QWidget* parent):
|
|||||||
//myTreeWidget->setRootIsDecorated(false);
|
//myTreeWidget->setRootIsDecorated(false);
|
||||||
//myTreeWidget->setUniformRowHeights(true);
|
//myTreeWidget->setUniformRowHeights(true);
|
||||||
myTreeWidget->setAllColumnsShowFocus(true);
|
myTreeWidget->setAllColumnsShowFocus(true);
|
||||||
myTreeWidget->setColumnCount(2);
|
myTreeWidget->setColumnCount(3);
|
||||||
|
|
||||||
QStringList columnNames;
|
QStringList columnNames;
|
||||||
columnNames.append(tr("OBJECT_NAME"));
|
columnNames.append(tr("OBJECT_NAME"));
|
||||||
columnNames.append(tr("OBJECT_ENTRY"));
|
columnNames.append(tr("OBJECT_ENTRY"));
|
||||||
|
columnNames.append("");
|
||||||
QTreeWidgetItem * headerItem = new QTreeWidgetItem(columnNames);
|
QTreeWidgetItem * headerItem = new QTreeWidgetItem(columnNames);
|
||||||
|
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
|
||||||
|
headerItem->setIcon( 2, QIcon( resMgr->loadPixmap( "SUIT", tr( "ICON_DATAOBJ_VISIBLE" ) ) ) );
|
||||||
myTreeWidget->setHeaderItem ( headerItem );
|
myTreeWidget->setHeaderItem ( headerItem );
|
||||||
|
myTreeWidget->header()->setClickable( true );
|
||||||
|
myTreeWidget->header()->setSortIndicatorShown( true );
|
||||||
|
myTreeWidget->header()->moveSection( 2, 0 );
|
||||||
|
myTreeWidget->setSortingEnabled( true );
|
||||||
|
myTreeWidget->setColumnWidth( 2, VISIBILITY_COLUMN_WIDTH );
|
||||||
|
|
||||||
//Select All button
|
//Select All button
|
||||||
QPushButton* selectAllButton = new QPushButton( tr("SELECT_ALL"),this );
|
QPushButton* selectAllButton = new QPushButton( tr("SELECT_ALL"),this );
|
||||||
@ -99,6 +113,8 @@ GEOMToolsGUI_PublishDlg::GEOMToolsGUI_PublishDlg(QWidget* parent):
|
|||||||
gridLayout->addWidget(closeButton, 3, 3, 1, 1);
|
gridLayout->addWidget(closeButton, 3, 3, 1, 1);
|
||||||
|
|
||||||
//Connect signals and slots
|
//Connect signals and slots
|
||||||
|
connect( myTreeWidget, SIGNAL(itemClicked(QTreeWidgetItem*, int)), this, SLOT(onItemClicked(QTreeWidgetItem*, int)) );
|
||||||
|
|
||||||
connect( selectAllButton, SIGNAL(clicked()), this, SLOT(clickOnSelectAll()) );
|
connect( selectAllButton, SIGNAL(clicked()), this, SLOT(clickOnSelectAll()) );
|
||||||
connect( unselectAllButton, SIGNAL(clicked()), this, SLOT(clickOnUnSelectAll()) );
|
connect( unselectAllButton, SIGNAL(clicked()), this, SLOT(clickOnUnSelectAll()) );
|
||||||
|
|
||||||
@ -115,6 +131,31 @@ GEOMToolsGUI_PublishDlg::GEOMToolsGUI_PublishDlg(QWidget* parent):
|
|||||||
//=================================================================================
|
//=================================================================================
|
||||||
GEOMToolsGUI_PublishDlg::~GEOMToolsGUI_PublishDlg()
|
GEOMToolsGUI_PublishDlg::~GEOMToolsGUI_PublishDlg()
|
||||||
{
|
{
|
||||||
|
SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
|
||||||
|
if ( app ) {
|
||||||
|
SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( app->activeStudy() );
|
||||||
|
if ( appStudy ) {
|
||||||
|
_PTR(Study) aStudy = appStudy->studyDS();
|
||||||
|
if ( aStudy ) {
|
||||||
|
GEOM_Displayer displayer ( appStudy );
|
||||||
|
QTreeWidgetItemIterator it( myTreeWidget );
|
||||||
|
while ( *it ) {
|
||||||
|
QString entry = myEntryToItem.key( *it );
|
||||||
|
_PTR(SObject) SO ( aStudy->FindObjectID( qPrintable( entry ) ) );
|
||||||
|
if ( SO ) {
|
||||||
|
GEOM::GEOM_Object_var aGeomObject = GEOM::GEOM_Object::_narrow( GeometryGUI::ClientSObjectToObject( SO ) );
|
||||||
|
if ( CORBA::is_nil( aGeomObject ) ) continue;
|
||||||
|
if ( displayer.IsDisplayed( aGeomObject->GetStudyEntry() ) ) {
|
||||||
|
Handle(SALOME_InteractiveObject) io = new SALOME_InteractiveObject( aGeomObject->GetStudyEntry(), "GEOM", "" );
|
||||||
|
displayer.Erase( io );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
++it;
|
||||||
|
}
|
||||||
|
displayer.UpdateViewer();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
@ -161,7 +202,7 @@ void GEOMToolsGUI_PublishDlg::initData() {
|
|||||||
//=================================================================================
|
//=================================================================================
|
||||||
QTreeWidgetItem* GEOMToolsGUI_PublishDlg::createItem(QTreeWidgetItem* theParent, Pair theAttributes, bool isCheckable) {
|
QTreeWidgetItem* GEOMToolsGUI_PublishDlg::createItem(QTreeWidgetItem* theParent, Pair theAttributes, bool isCheckable) {
|
||||||
QStringList aList;
|
QStringList aList;
|
||||||
aList<<theAttributes.second<<theAttributes.first;
|
aList<<theAttributes.second<<theAttributes.first<<"";
|
||||||
QTreeWidgetItem* anItem = new QTreeWidgetItem(aList);
|
QTreeWidgetItem* anItem = new QTreeWidgetItem(aList);
|
||||||
|
|
||||||
if(isCheckable)
|
if(isCheckable)
|
||||||
@ -176,7 +217,8 @@ QTreeWidgetItem* GEOMToolsGUI_PublishDlg::createItem(QTreeWidgetItem* theParent,
|
|||||||
myTreeWidget->addTopLevelItem(anItem);
|
myTreeWidget->addTopLevelItem(anItem);
|
||||||
|
|
||||||
myEntryToItem.insert(theAttributes.first, anItem);
|
myEntryToItem.insert(theAttributes.first, anItem);
|
||||||
|
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
|
||||||
|
anItem->setIcon( 2, QIcon( resMgr->loadPixmap( "SUIT", tr( "ICON_DATAOBJ_INVISIBLE" ) ) ) );
|
||||||
anItem->setExpanded(true);
|
anItem->setExpanded(true);
|
||||||
return anItem;
|
return anItem;
|
||||||
}
|
}
|
||||||
@ -387,3 +429,36 @@ void GEOMToolsGUI_PublishDlg::getTails(QTreeWidgetItem* theItem, QList<QTreeWidg
|
|||||||
if(theItem->data(0,Qt::UserRole).toBool())
|
if(theItem->data(0,Qt::UserRole).toBool())
|
||||||
theList.push_back(theItem);
|
theList.push_back(theItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : onItemClicked()
|
||||||
|
// purpose : Called then treeItem clicked
|
||||||
|
//=================================================================================
|
||||||
|
void GEOMToolsGUI_PublishDlg::onItemClicked(QTreeWidgetItem* theItem, int theColumn) {
|
||||||
|
if ( theColumn == 2 ) {
|
||||||
|
SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
|
||||||
|
if ( !app ) return;
|
||||||
|
SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( app->activeStudy() );
|
||||||
|
if ( !appStudy ) return;
|
||||||
|
_PTR(Study) aStudy = appStudy->studyDS();
|
||||||
|
if ( !aStudy ) return;
|
||||||
|
QString entry = myEntryToItem.key( theItem );
|
||||||
|
_PTR(SObject) SO ( aStudy->FindObjectID( qPrintable( entry ) ) );
|
||||||
|
if ( !SO ) return;
|
||||||
|
GEOM::GEOM_Object_var aGeomObject = GEOM::GEOM_Object::_narrow( GeometryGUI::ClientSObjectToObject( SO ) );
|
||||||
|
if ( CORBA::is_nil( aGeomObject ) ) return;
|
||||||
|
GEOM_Displayer displayer ( appStudy );
|
||||||
|
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
|
||||||
|
Handle(SALOME_InteractiveObject) io = new SALOME_InteractiveObject( aGeomObject->GetStudyEntry(), "GEOM", "" );
|
||||||
|
if ( displayer.IsDisplayed( aGeomObject->GetStudyEntry() ) ) {
|
||||||
|
theItem->setIcon( 2, QIcon( resMgr->loadPixmap( "SUIT", tr( "ICON_DATAOBJ_INVISIBLE" ) ) ) );
|
||||||
|
displayer.Erase( io );
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
theItem->setIcon( 2, QIcon( resMgr->loadPixmap( "SUIT", tr( "ICON_DATAOBJ_VISIBLE" ) ) ) );
|
||||||
|
displayer.Display( io );
|
||||||
|
}
|
||||||
|
displayer.UpdateViewer();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -70,6 +70,7 @@ protected slots:
|
|||||||
void clickOnApply();
|
void clickOnApply();
|
||||||
void clickOnSelectAll();
|
void clickOnSelectAll();
|
||||||
void clickOnUnSelectAll();
|
void clickOnUnSelectAll();
|
||||||
|
void onItemClicked(QTreeWidgetItem*, int);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QTreeWidget* myTreeWidget;
|
QTreeWidget* myTreeWidget;
|
||||||
|
Loading…
Reference in New Issue
Block a user