]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Issue #23: Indicating of active document by color
authorvsv <vitaly.smetannikov@opencascade.com>
Thu, 15 May 2014 14:48:25 +0000 (18:48 +0400)
committervsv <vitaly.smetannikov@opencascade.com>
Thu, 15 May 2014 14:48:25 +0000 (18:48 +0400)
src/XGUI/XGUI_DataTreeModel.h
src/XGUI/XGUI_DocumentDataModel.cpp
src/XGUI/XGUI_ObjectsBrowser.cpp
src/XGUI/XGUI_PartDataModel.cpp

index b7313a922a5a53f99aaef4a79cd9cc359e49af5b..be711129293bb2f8bb55932384b19ce906f0c7d4 100644 (file)
@@ -7,6 +7,7 @@
 
 #include <ModelAPI_Document.h>
 #include <QAbstractItemModel>
+#include <QColor>
 
 /**\class XGUI_FeaturesModel
  * \ingroup GUI
@@ -16,7 +17,7 @@ class XGUI_EXPORT XGUI_FeaturesModel : public QAbstractItemModel
 {
 public:
   XGUI_FeaturesModel(const boost::shared_ptr<ModelAPI_Document>& theDocument, QObject* theParent):
-      QAbstractItemModel(theParent), myDocument(theDocument) {}
+      QAbstractItemModel(theParent), myDocument(theDocument), myItemsColor(Qt::black) {}
 
   //! Returns Feature object by the given Model index.
   //! Returns 0 if the given index is not index of a feature
@@ -28,8 +29,13 @@ public:
   //! Returns index corresponded to the group
   virtual QModelIndex findGroup(const std::string& theGroup) const = 0;
 
+  void setItemsColor(const QColor& theColor) { myItemsColor = theColor; }
+
+  QColor itemsColor() const { return myItemsColor; }
+
 protected:
   boost::shared_ptr<ModelAPI_Document> myDocument;
+  QColor myItemsColor;
 };
 
 
index b5cc13697ae3ba1c64abefdf35c639625663f62b..7962105ca1f2221b7b8e33474741e29ae6259ed6 100644 (file)
 
 #include <QIcon>
 #include <QString>
+#include <QBrush>
 
 
+#define ACTIVE_COLOR QColor(0,72,140)
+#define PASSIVE_COLOR Qt::black
+
 XGUI_DocumentDataModel::XGUI_DocumentDataModel(QObject* theParent)
   : QAbstractItemModel(theParent), myActivePart(0)
 {
@@ -30,6 +34,7 @@ XGUI_DocumentDataModel::XGUI_DocumentDataModel(QObject* theParent)
 
   // Create a top part of data tree model
   myModel = new XGUI_TopDataModel(myDocument, this);
+  myModel->setItemsColor(ACTIVE_COLOR);
 }
 
 
@@ -154,6 +159,11 @@ QVariant XGUI_DocumentDataModel::data(const QModelIndex& theIndex, int theRole)
       return QIcon(":pictures/constr_folder.png");
     case Qt::ToolTipRole:
       return tr("Parts folder");
+    case Qt::ForegroundRole:
+      if (myActivePart)
+        return QBrush(PASSIVE_COLOR);
+      else
+        return QBrush(ACTIVE_COLOR);
     default:
       return QVariant();
     }
@@ -174,6 +184,11 @@ QVariant XGUI_DocumentDataModel::data(const QModelIndex& theIndex, int theRole)
         return QIcon(XGUI_Workshop::featureIcon(aFeature->getKind()));
       case Qt::ToolTipRole:
         return tr("Feature object");
+      case Qt::ForegroundRole:
+        if (myActivePart)
+          return QBrush(PASSIVE_COLOR);
+        else
+          return QBrush(ACTIVE_COLOR);
       default:
         return QVariant();
       }
@@ -213,10 +228,10 @@ int XGUI_DocumentDataModel::rowCount(const QModelIndex& theParent) const
   if (!isSubModel(aModel)) 
     return 0;
 
-  if (isPartSubModel(aModel)) {
+  /*if (isPartSubModel(aModel)) {
     if (aModel != myActivePart)
       return 0;
-  }
+  }*/
   return aModel->rowCount(*aParent);
 }
 
@@ -415,10 +430,14 @@ bool XGUI_DocumentDataModel::activatedIndex(const QModelIndex& theIndex)
   if (isPartSubModel(aModel)) {
     // if this is root node (Part item index)
     if (!aIndex->parent().isValid()) {
-      beginResetModel();
+      if (myActivePart) myActivePart->setItemsColor(PASSIVE_COLOR);
       myActivePart = (myActivePart == aModel)? 0 : (XGUI_PartModel*)aModel;
-      endResetModel();
-      return true;
+      if (myActivePart) {
+        myActivePart->setItemsColor(ACTIVE_COLOR);
+        myModel->setItemsColor(PASSIVE_COLOR);
+      } else 
+         myModel->setItemsColor(ACTIVE_COLOR);
+     return true;
     }
   }
   return false;
index 15539c3e64ddfc0158ddff749d17a6d9559cc035..21530908eadd40b545986b574b114e2f6d780ade 100644 (file)
@@ -39,8 +39,6 @@ void XGUI_ObjectsBrowser::mouseDoubleClickEvent(QMouseEvent* theEvent)
   bool isChanged = myDocModel->activatedIndex(aIndex);
   QTreeView::mouseDoubleClickEvent(theEvent);
   if (isChanged) {
-    setExpanded(aIndex.parent(), true);
-    setExpanded(aIndex, myDocModel->hasChildren(aIndex));
     emit activePartChanged(myDocModel->activePart());
   }
 }
index 44b74b3207eeb7af3b1b69ac16b41011d7e11e1c..fc55498462b07b665eaf7d84d542130e5fb6e702 100644 (file)
@@ -8,6 +8,7 @@
 #include <ModelAPI_AttributeDocRef.h>
 
 #include <QIcon>
+#include <QBrush>
 
 XGUI_TopDataModel::XGUI_TopDataModel(const boost::shared_ptr<ModelAPI_Document>& theDocument, QObject* theParent)
   : XGUI_FeaturesModel(theDocument, theParent)
@@ -63,6 +64,9 @@ QVariant XGUI_TopDataModel::data(const QModelIndex& theIndex, int theRole) const
   case Qt::ToolTipRole:
     // return Tooltip
     break;
+  case Qt::ForegroundRole:
+    return QBrush(myItemsColor);
+    break;
   }
   return QVariant();
 }
@@ -248,6 +252,9 @@ QVariant XGUI_PartDataModel::data(const QModelIndex& theIndex, int theRole) cons
   case Qt::ToolTipRole:
     // return Tooltip
     break;
+  case Qt::ForegroundRole:
+    return QBrush(myItemsColor);
+    break;
   }
   return QVariant();
 }