X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_ObjectsBrowser.cpp;h=4268115fde4477d1bbe52412c4d440a4ca291c04;hb=4fcd5da2d972334e887716499b0ea75d9d6c51c2;hp=45d287465f3e87b761670c99239021ce63ea29ae;hpb=96ff1d1fb2acb842cee193f15492de81060a1d58;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_ObjectsBrowser.cpp b/src/XGUI/XGUI_ObjectsBrowser.cpp index 45d287465..4268115fd 100644 --- a/src/XGUI/XGUI_ObjectsBrowser.cpp +++ b/src/XGUI/XGUI_ObjectsBrowser.cpp @@ -3,7 +3,7 @@ #include "XGUI_Tools.h" #include -#include +#include #include #include @@ -15,10 +15,8 @@ #include #include - - XGUI_DataTree::XGUI_DataTree(QWidget* theParent) - : QTreeView(theParent) + : QTreeView(theParent) { setHeaderHidden(true); setModel(new XGUI_DocumentDataModel(this)); @@ -26,7 +24,7 @@ XGUI_DataTree::XGUI_DataTree(QWidget* theParent) setSelectionBehavior(QAbstractItemView::SelectRows); setSelectionMode(QAbstractItemView::ExtendedSelection); - connect(selectionModel(), SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)), + connect(selectionModel(), SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)), this, SLOT(onSelectionChanged(const QItemSelection&, const QItemSelection&))); } @@ -34,14 +32,13 @@ XGUI_DataTree::~XGUI_DataTree() { } -XGUI_DocumentDataModel* XGUI_DataTree::dataModel() const -{ - return static_cast(model()); +XGUI_DocumentDataModel* XGUI_DataTree::dataModel() const +{ + return static_cast(model()); } - -void XGUI_DataTree::onSelectionChanged(const QItemSelection& theSelected, - const QItemSelection& theDeselected) +void XGUI_DataTree::onSelectionChanged(const QItemSelection& theSelected, + const QItemSelection& theDeselected) { mySelectedData.clear(); QModelIndexList aIndexes = selectionModel()->selectedIndexes(); @@ -60,18 +57,12 @@ void XGUI_DataTree::mouseDoubleClickEvent(QMouseEvent* theEvent) if (theEvent->button() == Qt::LeftButton) { QModelIndex aIndex = currentIndex(); XGUI_DocumentDataModel* aModel = dataModel(); - - if ((aModel->activePartIndex() != aIndex) && aModel->activePartIndex().isValid()) { - setExpanded(aModel->activePartIndex(), false); + ObjectPtr aObject = aModel->object(aIndex); + ResultPartPtr aPart = boost::dynamic_pointer_cast(aObject); + if (aPart) { + aPart->activate(); } - bool isChanged = aModel->activatedIndex(aIndex); - QTreeView::mouseDoubleClickEvent(theEvent); - if (isChanged) { - if (aModel->activePartIndex().isValid()) - setExpanded(aIndex, true); - emit activePartChanged(aModel->activePart()); - } - } else + } else QTreeView::mouseDoubleClickEvent(theEvent); } @@ -86,10 +77,10 @@ void XGUI_DataTree::commitData(QWidget* theEditor) if (aEditor) { QString aRes = aEditor->text(); ObjectPtr aFeature = mySelectedData.first(); - PluginManagerPtr aMgr = ModelAPI_PluginManager::get(); - aMgr->rootDocument()->startOperation(); + SessionPtr aMgr = ModelAPI_Session::get(); + aMgr->startOperation(); aFeature->data()->setName(qPrintable(aRes)); - aMgr->rootDocument()->finishOperation(); + aMgr->finishOperation(); } } @@ -97,7 +88,7 @@ void XGUI_DataTree::commitData(QWidget* theEditor) //******************************************************************** //******************************************************************** XGUI_ObjectsBrowser::XGUI_ObjectsBrowser(QWidget* theParent) - : QWidget(theParent) + : QWidget(theParent) { QVBoxLayout* aLayout = new QVBoxLayout(this); aLayout->setContentsMargins(0, 0, 0, 0); @@ -122,8 +113,8 @@ XGUI_ObjectsBrowser::XGUI_ObjectsBrowser(QWidget* theParent) aLabelLay->addWidget(aLbl); - PluginManagerPtr aMgr = ModelAPI_PluginManager::get(); - DocumentPtr aDoc = aMgr->rootDocument(); + SessionPtr aMgr = ModelAPI_Session::get(); + DocumentPtr aDoc = aMgr->moduleDocument(); // TODO: Find a name of the root document myActiveDocLbl = new QLineEdit(tr("Part set"), aLabelWgt); @@ -135,7 +126,7 @@ XGUI_ObjectsBrowser::XGUI_ObjectsBrowser(QWidget* theParent) myActiveDocLbl->installEventFilter(this); aLabelLay->addWidget(myActiveDocLbl); - aLabelLay->setStretch(1,1); + aLabelLay->setStretch(1, 1); myTreeView = new XGUI_DataTree(this); aLayout->addWidget(myTreeView); @@ -146,14 +137,16 @@ XGUI_ObjectsBrowser::XGUI_ObjectsBrowser(QWidget* theParent) aLabelWgt->setFrameShadow(myTreeView->frameShadow()); connect(myTreeView, SIGNAL(selectionChanged()), this, SLOT(onSelectionChanged())); - connect(myTreeView, SIGNAL(activePartChanged(ObjectPtr)), this, SLOT(onActivePartChanged(ObjectPtr))); - connect(myTreeView, SIGNAL(activePartChanged(ObjectPtr)), this, SIGNAL(activePartChanged(ObjectPtr))); - - connect(myActiveDocLbl, SIGNAL(customContextMenuRequested(const QPoint&)), - this, SLOT(onLabelContextMenuRequested(const QPoint&))); - connect(myTreeView, SIGNAL(contextMenuRequested(QContextMenuEvent*)), - this, SLOT(onContextMenuRequested(QContextMenuEvent*))); - + connect(myTreeView, SIGNAL(activePartChanged(ObjectPtr)), this, + SLOT(onActivePartChanged(ObjectPtr))); + connect(myTreeView, SIGNAL(activePartChanged(ObjectPtr)), this, + SIGNAL(activePartChanged(ObjectPtr))); + + connect(myActiveDocLbl, SIGNAL(customContextMenuRequested(const QPoint&)), this, + SLOT(onLabelContextMenuRequested(const QPoint&))); + connect(myTreeView, SIGNAL(contextMenuRequested(QContextMenuEvent*)), this, + SLOT(onContextMenuRequested(QContextMenuEvent*))); + onActivePartChanged(ObjectPtr()); // Create internal actions @@ -174,7 +167,7 @@ void XGUI_ObjectsBrowser::onActivePartChanged(ObjectPtr thePart) QPalette aPalet = myActiveDocLbl->palette(); if (thePart) { aPalet.setColor(QPalette::Text, Qt::black); - } else { + } else { aPalet.setColor(QPalette::Text, QColor(0, 72, 140)); } myActiveDocLbl->setPalette(aPalet); @@ -204,13 +197,14 @@ bool XGUI_ObjectsBrowser::eventFilter(QObject* obj, QEvent* theEvent) } else if (theEvent->type() == QEvent::KeyRelease) { QKeyEvent* aEvent = (QKeyEvent*) theEvent; switch (aEvent->key()) { - case Qt::Key_Return: // Accept current input - closeDocNameEditing(true); - break; - case Qt::Key_Escape: // Cancel the input - closeDocNameEditing(false); - break; - } + case Qt::Key_Return: + case Qt::Key_Enter: // Accept current input + closeDocNameEditing(true); + break; + case Qt::Key_Escape: // Cancel the input + closeDocNameEditing(false); + break; + } } } } @@ -226,8 +220,8 @@ void XGUI_ObjectsBrowser::closeDocNameEditing(bool toSave) myActiveDocLbl->setReadOnly(true); if (toSave) { // TODO: Save the name of root document - PluginManagerPtr aMgr = ModelAPI_PluginManager::get(); - DocumentPtr aDoc = aMgr->rootDocument(); + SessionPtr aMgr = ModelAPI_Session::get(); + DocumentPtr aDoc = aMgr->moduleDocument(); } else { myActiveDocLbl->setText(myActiveDocLbl->property("OldText").toString()); } @@ -263,11 +257,12 @@ void XGUI_ObjectsBrowser::activatePart(const ResultPartPtr& thePart) } //*************************************************** -void XGUI_ObjectsBrowser::onContextMenuRequested(QContextMenuEvent* theEvent) +void XGUI_ObjectsBrowser::onContextMenuRequested(QContextMenuEvent* theEvent) { myObjectsList = myTreeView->selectedObjects(); - bool toEnable = myObjectsList.size() > 0; - foreach(QAction* aCmd, actions()) { + bool toEnable = myObjectsList.size() == 1; + foreach(QAction* aCmd, actions()) + { aCmd->setEnabled(toEnable); } emit contextMenuRequested(theEvent); @@ -278,12 +273,13 @@ void XGUI_ObjectsBrowser::onLabelContextMenuRequested(const QPoint& thePnt) { myObjectsList.clear(); //Empty feature pointer means that selected root document - myObjectsList.append(ObjectPtr()); + myObjectsList.append(ObjectPtr()); - foreach(QAction* aCmd, actions()) { + foreach(QAction* aCmd, actions()) + { aCmd->setEnabled(true); } - QContextMenuEvent aEvent( QContextMenuEvent::Mouse, thePnt, myActiveDocLbl->mapToGlobal(thePnt) ); + QContextMenuEvent aEvent(QContextMenuEvent::Mouse, thePnt, myActiveDocLbl->mapToGlobal(thePnt)); emit contextMenuRequested(&aEvent); } @@ -292,10 +288,11 @@ void XGUI_ObjectsBrowser::onEditItem() { if (myObjectsList.size() > 0) { ObjectPtr aFeature = myObjectsList.first(); - if (aFeature) { // Selection happens in TreeView + if (aFeature) { // Selection happens in TreeView // Find index which corresponds the feature QModelIndex aIndex; - foreach(QModelIndex aIdx, selectedIndexes()) { + foreach(QModelIndex aIdx, selectedIndexes()) + { ObjectPtr aFea = dataModel()->object(aIdx); if (dataModel()->object(aIdx)->isSame(aFeature)) { aIndex = aIdx; @@ -306,7 +303,7 @@ void XGUI_ObjectsBrowser::onEditItem() myTreeView->setCurrentIndex(aIndex); myTreeView->edit(aIndex); } - } else { //Selection happens in Upper label + } else { //Selection happens in Upper label myActiveDocLbl->setReadOnly(false); myActiveDocLbl->setFocus(); myActiveDocLbl->selectAll(); @@ -337,10 +334,17 @@ void XGUI_ObjectsBrowser::setObjectsSelected(const QList& theObjects) QItemSelectionModel* aSelectModel = myTreeView->selectionModel(); aSelectModel->clear(); - foreach(ObjectPtr aFeature, theObjects) { + foreach(ObjectPtr aFeature, theObjects) + { QModelIndex aIndex = myDocModel->objectIndex(aFeature); if (aIndex.isValid()) { aSelectModel->select(aIndex, QItemSelectionModel::Select); } } } + +//*************************************************** +void XGUI_ObjectsBrowser::processEvent(const boost::shared_ptr& theMessage) +{ + myDocModel->processEvent(theMessage); +}