]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Crate control Publish_To_Study
authorvsv <vsv@opencascade.com>
Mon, 19 Aug 2019 16:31:40 +0000 (19:31 +0300)
committervsv <vsv@opencascade.com>
Mon, 19 Aug 2019 16:31:40 +0000 (19:31 +0300)
src/ConnectorPlugin/ConnectorPlugin_PublishToStudy.py
src/ModuleBase/ModuleBase_IWorkshop.h
src/ModuleBase/ModuleBase_WidgetTreeDataSelect.cpp
src/ModuleBase/ModuleBase_WidgetTreeDataSelect.h
src/XGUI/XGUI_ModuleConnector.cpp
src/XGUI/XGUI_ModuleConnector.h

index fe050bd208fb4b38cf2a2d3ea2f4fd27eba683f2..a96a474097f83034c6867072454a1d0653f77ce6 100644 (file)
@@ -57,6 +57,13 @@ class PublishToStudyFeature(ModelAPI.ModelAPI_Feature):
     def initAttributes(self):
         self.data().addAttribute(self.TREE_ID(), ModelAPI.ModelAPI_AttributeRefList_typeId())
 
+    def isMacro(self):
+        """
+        Override Feature.isMacro().
+        Rectangle feature is macro: removes itself on the creation transaction finish.
+        """
+        return True
+
     ## Exports all shapes and groups into the GEOM module.
     def execute(self):
         pass
index 56ca626301444da926d7014608a8bb3b5c1d50f6..470bada759b0177743faaa54562526e3ba54035e 100644 (file)
@@ -39,6 +39,7 @@ class ModuleBase_Operation;
 class ModuleBase_ISelectionActivate;
 class ModuleBase_ViewerPrs;
 class QMainWindow;
+class ModuleBase_ITreeNode;
 
 /**
  * \ingroup GUI
@@ -152,6 +153,9 @@ Q_OBJECT
   //! \param theAIS the object which has to be activated
   virtual void applyCurrentSelectionModes(const AISObjectPtr& theAIS) = 0;
 
+  //! Returns pointer on data structure used in Object browser
+  virtual ModuleBase_ITreeNode* dataTreeRoot() const = 0;
+
 signals:
   /// Signal selection changed.
   void selectionChanged();
index 7539f1aa6ab4fea8f31b6fdb714a8e164e865f6e..82659c1dcfe728030369b94b4afb76288532f464 100644 (file)
 
 
 #include <ModuleBase_WidgetTreeDataSelect.h>
+#include <ModuleBase_IWorkshop.h>
+#include <ModuleBase_ITreeNode.h>
 
 #include <QVBoxLayout>
 #include <QTreeView>
 
+#include <cassert>
+
+
+
+QVariant ModuleBase_CheckDataModel::data(const QModelIndex& theIndex, int theRole) const
+{
+  if (theIndex.isValid()) {
+    ModuleBase_ITreeNode* aNode = (ModuleBase_ITreeNode*)theIndex.internalPointer();
+    return aNode->data(1, theRole);
+  }
+  return QVariant();
+}
+
+QModelIndex ModuleBase_CheckDataModel::index(int theRow, int theCol,
+  const QModelIndex& theParent) const
+{
+  ModuleBase_ITreeNode* aParentNode = (theParent.isValid()) ?
+    (ModuleBase_ITreeNode*)theParent.internalPointer() : myRoot;
+  ModuleBase_ITreeNode* aSubNode = aParentNode->subNode(theRow);
+  assert(aSubNode);
+  return createIndex(theRow, theCol, aSubNode);
+}
+
+QModelIndex ModuleBase_CheckDataModel::parent(const QModelIndex& theIndex) const
+{
+  if (theIndex.isValid()) {
+    ModuleBase_ITreeNode* aNode = (ModuleBase_ITreeNode*)theIndex.internalPointer();
+    ModuleBase_ITreeNode* aParent = aNode->parent();
+    if (aParent == myRoot) {
+      return QModelIndex();
+    }
+    else {
+      int aRow = aParent->parent()->nodeRow(aNode);
+      return createIndex(aRow, 0, aNode);
+    }
+  }
+  return QModelIndex();
+}
+
+int ModuleBase_CheckDataModel::rowCount(const QModelIndex& theParent) const
+{
+  ModuleBase_ITreeNode* aParentNode = (theParent.isValid()) ?
+    (ModuleBase_ITreeNode*)theParent.internalPointer() : myRoot;
+  return aParentNode->childrenCount();
+}
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
 ModuleBase_WidgetTreeDataSelect::ModuleBase_WidgetTreeDataSelect(QWidget* theParent,
   ModuleBase_IWorkshop* theWorkshop,
   const Config_WidgetAPI* theData)
@@ -31,6 +81,9 @@ ModuleBase_WidgetTreeDataSelect::ModuleBase_WidgetTreeDataSelect(QWidget* thePar
   QVBoxLayout* aLayout = new QVBoxLayout(this);
 
   myTreeView = new QTreeView(this);
+  myTreeView->setModel(new ModuleBase_CheckDataModel(this, myWorkshop->dataTreeRoot()));
+  myTreeView->setHeaderHidden(true);
+  myTreeView->setColumnWidth(0, 200);
   aLayout->addWidget(myTreeView);
 }
 
index 8f4c8c342e804d302a4b988f71667ff20fb0aa1f..c96cbac58dc3da01fa56a36226c6075a84c9a882 100644 (file)
@@ -22,6 +22,7 @@
 
 #include <ModuleBase.h>
 #include <ModuleBase_ModelWidget.h>
+#include <QAbstractItemModel>
 
 class QTreeView;
 
@@ -60,4 +61,31 @@ private:
   QTreeView* myTreeView;
 };
 
-#endif
\ No newline at end of file
+
+class ModuleBase_ITreeNode;
+
+class ModuleBase_CheckDataModel : public QAbstractItemModel
+{
+  Q_OBJECT
+public:
+  /// Constructor
+  /// \param theParent a parent object
+  ModuleBase_CheckDataModel(QObject* theParent, ModuleBase_ITreeNode* theRoot) :
+    QAbstractItemModel(theParent), myRoot(theRoot) {}
+
+  virtual int columnCount(const QModelIndex& theParent = QModelIndex()) const { return 1; }
+
+  virtual QVariant data(const QModelIndex& theIndex, int theRole = Qt::DisplayRole) const;
+
+  virtual QModelIndex index(int theRow, int theCol,
+    const QModelIndex& theParent = QModelIndex()) const;
+
+  virtual QModelIndex parent(const QModelIndex& theIndex) const;
+
+  virtual int rowCount(const QModelIndex& theParent = QModelIndex()) const;
+
+private:
+  ModuleBase_ITreeNode* myRoot;
+};
+
+#endif
index 61bc814f47c7db8fdfb36ce8cc1bc2104faf7868..adf178e842c7c7a7e04a53ce24b4f11cdb79e1bf 100644 (file)
@@ -29,6 +29,7 @@
 #include "XGUI_ActionsMgr.h"
 #include "XGUI_ErrorMgr.h"
 #include "XGUI_ObjectsBrowser.h"
+#include "XGUI_DataModel.h"
 
 #include <ModuleBase_IModule.h>
 #include <ModuleBase_ViewerPrs.h>
@@ -232,4 +233,9 @@ void XGUI_ModuleConnector::applyCurrentSelectionModes(const AISObjectPtr& theAIS
 {
   Handle(AIS_InteractiveObject) anIO = theAIS->impl<Handle(AIS_InteractiveObject)>();
   myWorkshop->selectionActivate()->activate(anIO, false);
-}
\ No newline at end of file
+}
+
+ModuleBase_ITreeNode* XGUI_ModuleConnector::dataTreeRoot() const
+{
+  return myWorkshop->objectBrowser()->dataModel()->root();
+}
index 41415fdf39be9daf4c70fd9d6eed77cd5c516dfb..74f7ccd9c4fd8617da5713825bc1ea0c6dc3602e 100644 (file)
@@ -136,6 +136,9 @@ Q_OBJECT
   //! \param theAIS the object which has to be activated
   virtual void applyCurrentSelectionModes(const AISObjectPtr& theAIS);
 
+  //! Returns pointer on data structure used in Object browser
+  virtual ModuleBase_ITreeNode* dataTreeRoot() const;
+
 private:
   QObjectPtrList activeObjects(const QObjectPtrList& theObjList) const;