X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_ObjectsBrowser.cpp;h=7eb50de3409ce79f2c8a48199da60345c0a26c93;hb=1cef78af4c4328ecf99a3ced86bda38e6e82e15c;hp=992ed73ac1ce044dfe52d37f5d5152b3493b7aa4;hpb=28344a52b5954b3f7444691ca36301a6d1dd77b2;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_ObjectsBrowser.cpp b/src/XGUI/XGUI_ObjectsBrowser.cpp index 992ed73ac..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 @@ -21,6 +21,13 @@ #include #include +#ifdef WIN32 +#ifdef HAVE_SALOME +#include +#endif +#endif + + /// Width of second column (minimum acceptable = 27) #define SECOND_COL_WIDTH 30 @@ -61,8 +68,15 @@ private: XGUI_DataTree::XGUI_DataTree(QWidget* theParent) : QTreeView(theParent) { +#ifdef WIN32 +#ifdef HAVE_SALOME + setStyle(new QWindowsStyle()); +#else myStyle = new XGUI_TreeViewStyle(); setStyle(myStyle); +#endif +#endif + setHeaderHidden(true); setEditTriggers(QAbstractItemView::NoEditTriggers); setSelectionBehavior(QAbstractItemView::SelectRows); @@ -126,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) @@ -168,9 +183,11 @@ 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)); } } +#if (!defined HAVE_SALOME) && (defined WIN32) void XGUI_DataTree::drawRow(QPainter* thePainter, const QStyleOptionViewItem& theOptions, const QModelIndex& theIndex) const @@ -200,13 +217,14 @@ void XGUI_TreeViewStyle::drawPrimitive(PrimitiveElement theElement, } QWindowsVistaStyle::drawPrimitive(theElement, theOption, thePainter, theWidget); } +#endif //******************************************************************** //******************************************************************** //******************************************************************** XGUI_ActiveDocLbl::XGUI_ActiveDocLbl(const QString& theText, QWidget* theParent ) - : QLineEdit(theText, theParent), + : QLabel(theText, theParent), myPreSelectionStyle(""), myNeutralStyle(""), mySelectionStyle(""), @@ -217,25 +235,35 @@ 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 + " }"; - mySelectionStyle = "QLineEdit {background-color: "; - mySelectionStyle += "qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 " + aHighlight.lighter(170).name(); - mySelectionStyle += ", stop:1 " + aHighlight.lighter().name() + ");"; - mySelectionStyle += "border: 1px solid lightblue; border-radius: 2px }"; + +#if (!defined HAVE_SALOME) && (defined WIN32) + 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 = "QLabel {background-color: " + aHighlight.name(); + mySelectionStyle += "; color : " + aHighlightText.name() + "}"; +#endif myTreeView->viewport()->installEventFilter(this); } +#if (!defined HAVE_SALOME) && (defined WIN32) bool XGUI_ActiveDocLbl::event(QEvent* theEvent) { switch (theEvent->type()) { @@ -248,8 +276,9 @@ bool XGUI_ActiveDocLbl::event(QEvent* theEvent) setStyleSheet(myNeutralStyle); break; } - return QLineEdit::event(theEvent); + return QLabel::event(theEvent); } +#endif bool XGUI_ActiveDocLbl::eventFilter(QObject* theObj, QEvent* theEvent) { @@ -257,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; @@ -269,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; } @@ -312,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); @@ -415,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(); }