X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_ObjectsBrowser.cpp;h=7eb50de3409ce79f2c8a48199da60345c0a26c93;hb=1cef78af4c4328ecf99a3ced86bda38e6e82e15c;hp=3dccaf732679a81b3b00dcd5e219d0201bb2bb86;hpb=bd62deaf71938a91ed4062526b4c6c868cadda6a;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_ObjectsBrowser.cpp b/src/XGUI/XGUI_ObjectsBrowser.cpp index 3dccaf732..7eb50de34 100644 --- a/src/XGUI/XGUI_ObjectsBrowser.cpp +++ b/src/XGUI/XGUI_ObjectsBrowser.cpp @@ -13,7 +13,7 @@ #include #include -#include +#include #include #include #include @@ -140,6 +140,7 @@ void XGUI_DataTree::resizeEvent(QResizeEvent* theEvent) setColumnWidth(0, aSize.width() - SECOND_COL_WIDTH); setColumnWidth(1, SECOND_COL_WIDTH); } + QTreeView::resizeEvent(theEvent); } void XGUI_DataTree::onDoubleClick(const QModelIndex& theIndex) @@ -182,6 +183,7 @@ void XGUI_DataTree::onDoubleClick(const QModelIndex& theIndex) int aSize = aModel->rowCount(aParent); for (int i = 0; i < aSize; i++) { update(aModel->index(i, 0, aParent)); + update(aModel->index(i, 1, aParent)); } } @@ -222,7 +224,7 @@ void XGUI_TreeViewStyle::drawPrimitive(PrimitiveElement theElement, //******************************************************************** //******************************************************************** XGUI_ActiveDocLbl::XGUI_ActiveDocLbl(const QString& theText, QWidget* theParent ) - : QLineEdit(theText, theParent), + : QLabel(theText, theParent), myPreSelectionStyle(""), myNeutralStyle(""), mySelectionStyle(""), @@ -233,25 +235,27 @@ XGUI_ActiveDocLbl::XGUI_ActiveDocLbl(const QString& theText, QWidget* theParent void XGUI_ActiveDocLbl::setTreeView(QTreeView* theView) { myTreeView = theView; + setFont(myTreeView->font()); + QPalette aPalet = myTreeView->palette(); QColor aHighlight = aPalet.highlight().color(); QColor aHighlightText = aPalet.highlightedText().color(); - myPreSelectionStyle = "QLineEdit {background-color: "; + myPreSelectionStyle = "QLabel {background-color: "; myPreSelectionStyle += "qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 white, stop:1 " + aHighlight.lighter(170).name() + ");"; myPreSelectionStyle += "border: 1px solid lightblue; border-radius: 2px }"; QString aName = aPalet.color(QPalette::Base).name(); - myNeutralStyle = "QLineEdit { border: 1px solid " + aName + " }"; + myNeutralStyle = "QLabel { border: 1px solid " + aName + " }"; #if (!defined HAVE_SALOME) && (defined WIN32) - mySelectionStyle = "QLineEdit {background-color: "; + mySelectionStyle = "QLabel {background-color: "; mySelectionStyle += "qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 rgb(236, 245, 255)"; mySelectionStyle += ", stop:1 rgb(208, 229, 255));"; mySelectionStyle += "border: 1px solid rgb(132, 172, 221); border-radius: 2px }"; #else - mySelectionStyle = "QLineEdit {background-color: " + aHighlight.name(); + mySelectionStyle = "QLabel {background-color: " + aHighlight.name(); mySelectionStyle += "; color : " + aHighlightText.name() + "}"; #endif @@ -272,7 +276,7 @@ bool XGUI_ActiveDocLbl::event(QEvent* theEvent) setStyleSheet(myNeutralStyle); break; } - return QLineEdit::event(theEvent); + return QLabel::event(theEvent); } #endif @@ -282,7 +286,7 @@ bool XGUI_ActiveDocLbl::eventFilter(QObject* theObj, QEvent* theEvent) if (theEvent->type() == QEvent::MouseButtonRelease) unselect(); } - return QLineEdit::eventFilter(theObj, theEvent); + return QLabel::eventFilter(theObj, theEvent); } static bool MYClearing = false; @@ -294,7 +298,7 @@ void XGUI_ActiveDocLbl::mouseReleaseEvent( QMouseEvent* e) // We can not block signals because on // clear selection the View state will not be updated myTreeView->clearSelection(); - QLineEdit::mouseReleaseEvent(e); + QLabel::mouseReleaseEvent(e); MYClearing = false; } @@ -337,8 +341,8 @@ XGUI_ObjectsBrowser::XGUI_ObjectsBrowser(QWidget* theParent) DocumentPtr aDoc = aMgr->moduleDocument(); myActiveDocLbl = new XGUI_ActiveDocLbl(tr("Part set"), aLabelWgt); - myActiveDocLbl->setReadOnly(true); - myActiveDocLbl->setFrame(false); +// myActiveDocLbl->setReadOnly(true); +// myActiveDocLbl->setFrame(false); myActiveDocLbl->setContextMenuPolicy(Qt::CustomContextMenu); aLabelLay->addWidget(myActiveDocLbl); @@ -440,10 +444,33 @@ void XGUI_ObjectsBrowser::onEditItem() } } +//*************************************************** +QModelIndexList XGUI_ObjectsBrowser::expandedItems(const QModelIndex& theParent) const +{ + QModelIndexList aIndexes; + QModelIndex aIndex; + for (int i = 0; i < myDocModel->rowCount(); i++) { + aIndex = myDocModel->index(i, 0, theParent); + if (myDocModel->hasChildren(aIndex)) { + if (myTreeView->isExpanded(aIndex)) { + aIndexes.append(aIndex); + QModelIndexList aSubIndexes = expandedItems(aIndex); + if (!aSubIndexes.isEmpty()) + aIndexes.append(aSubIndexes); + } + } + } + return aIndexes; +} + //*************************************************** void XGUI_ObjectsBrowser::rebuildDataTree() { + QModelIndexList aIndexList = expandedItems(); myDocModel->rebuildDataTree(); + foreach(QModelIndex aIndex, aIndexList) { + myTreeView->setExpanded(aIndex, true); + } update(); }