Salome HOME
Copyright update 2022
[modules/geom.git] / src / DependencyTree / DependencyTree_View.h
index 19c5d0b23a1fef91082979012471135d595378db..b8489359f656830143c6ffffa399e4329fd870cc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2014  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2014-2022  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 #ifndef DEPENDENCYTREE_VIEW_H
 #define DEPENDENCYTREE_VIEW_H
 
+// GEOM includes
+#include <GEOMUtils.hxx>
+#include <GeometryGUI.h>
+
+// GUI includes
 #include <GraphicsView_ViewPort.h>
 #include <GraphicsView_ViewFrame.h>
 
-#include <GEOMUtils.hxx>
+#include <SalomeApp_Application.h>
 
-#include <QWidgetAction>
+// QT includes
 #include <QPushButton>
 #include <QSpinBox>
 #include <QCheckBox>
-#include <QProgressBar>
-#include <QThread>
+
+#include "DependencyTree.h"
 
 class DependencyTree_Object;
 class DependencyTree_Arrow;
 class DependencyTree_View;
 
-class DependencyTree_ComputeDlg_QThread : public QThread
-{
-  Q_OBJECT
-
-public:
-
-  DependencyTree_ComputeDlg_QThread( DependencyTree_View* );
-  bool result();
-  void cancel();
-
-  DependencyTree_View*   getView() { return myView; };
-
-protected:
-  void run();
+typedef std::map<std::string,DependencyTree_Object*> EntryObjectMap;
+typedef std::map<std::pair<DependencyTree_Object*,DependencyTree_Object*>,DependencyTree_Arrow*> ArrowsInfo;
 
-private:
-  DependencyTree_View* myView;
-};
-
-class DependencyTree_View: public GraphicsView_ViewPort
+class DEPENDENCYTREE_EXPORT DependencyTree_View: public GraphicsView_ViewPort
 {
   Q_OBJECT
 
@@ -64,93 +53,85 @@ public:
   DependencyTree_View( QWidget* = 0 );
   ~DependencyTree_View();
 
-  void setHierarchyType( const int );
-  void setNodesMovable( const bool );
-  void setPrefBackgroundColor( const QColor& );
-  void setNodeColor( const QColor& );
-  void setMainNodeColor( const QColor& );
-  void setSelectNodeColor( const QColor& );
-  void setArrowColor( const QColor& );
-  void setHighlightArrowColor( const QColor& );
-  void setSelectArrowColor( const QColor& );
+  void                    init( GraphicsView_ViewFrame* );
+  void                    updateModel( bool = true, bool = true );
 
-  virtual int select( const QRectF&, bool );
+  void                    mouseMoveEvent(QMouseEvent* event);
+  void                    wheelEvent( QWheelEvent* event );
 
-//  typedef QList<QString> NodeLinks;
-//  typedef QMap<QString, NodeLinks> LevelInfo;
-//  typedef QList<LevelInfo> LevelsList;
-//  typedef QMap<QString,QPair<LevelsList,LevelsList> > TreeModel;
+  QString                 getViewName() const;
 
-  GEOMUtils::TreeModel myTreeModel;
-  std::map<std::string,DependencyTree_Object*> myTreeMap;
-  std::map<std::pair<DependencyTree_Object*,DependencyTree_Object*>,DependencyTree_Arrow*> Arrows;
+  DependencyTree_Object*  getObjectByEntry( const std::string& );
 
-  std::map<std::string,int> myLevelMap;
+public slots:
 
-  std::map< int, std::vector<std::string> > myLevelsObject;
-  int myCurrentLevel;
+  void                    onRebuildModel();
 
-  void init( GraphicsView_ViewFrame* );
+protected:
 
-  void onRedrawTree();
+  void                    resizeEvent( QResizeEvent *event );
 
-  void setIsCompute( bool theIsCompute );
-  bool getIsCompute() { return myIsCompute; };
 private slots:
-  void onUpdateTree();
-  void updateView();
-  void onMoveNodes( bool );
-  void onHierarchyType();
 
-protected:
-  void timerEvent(QTimerEvent *timer);
-  void closeEvent(QCloseEvent *event);
-
-private slots:
-  void onCancel();
+  void                    onUpdateModel();
+  void                    onMoveNodes( bool );
+  void                    onHierarchyType();
+  void                    onPreferenceChanged( const QString&, const QString& );
+  void                    onRenameObject( const QString& theEntry );
 
 private:
-//  void parseData( QString& data );
 
-  void parseTree();
-  void parseTreeWard(const GEOMUtils::LevelsList);
-  void parseTreeWardArrow(const GEOMUtils::LevelsList);
+  void                    parseTree();
+  void                    parseTreeWard( const GEOMUtils::LevelsList& );
+  void                    parseTreeWardArrow( const GEOMUtils::LevelsList& );
+
+  void                    addNode( const std::string& );
+  void                    addArrow( DependencyTree_Object*, DependencyTree_Object* );
+
+  void                    drawTree();
+  void                    drawWard( const GEOMUtils::LevelsList&, std::map< std::string, int >&,
+                                    std::map< int, std::vector< std::string > >&, int, const int );
+  void                    drawWardArrows( const GEOMUtils::LevelsList& );
+
+  void                    updateView();
+  void                    clearView( bool );
+
+  void                    fitWindow();
 
-  void addNode( const std::string& entry );
-  void addArrow( DependencyTree_Object *startItem, DependencyTree_Object *endItem );
-  void findArrow( DependencyTree_Object *startItem, DependencyTree_Object *endItem );
-//  GEOMUtils::LevelsList parseWard( const QString& data, int& cursor );
-  void drawTree();
-  void drawWard( GEOMUtils::LevelsList ward, const int levelStep );
-  void drawArrows();
-  void drawWardArrows( GEOMUtils::LevelsList );
+  int                     checkMaxLevelsNumber();
 
-  int checkMaxLevelsNumber();
-  int myLevelsNumber;
-  int myMaxDownwardLevelsNumber;
-  int myMaxUpwardLevelsNumber;
+  void                    getNewTreeModel( bool = true, bool = true );
 
-  QCheckBox* myNodesMovable;
-  QSpinBox* myHierarchyDepth;
-  QCheckBox* myDisplayAscendants;
-  QCheckBox* myDisplayDescendants;
+  void                    setHierarchyType( const int );
+  void                    setNodesMovable( const bool );
+  void                    setPrefBackgroundColor( const QColor& );
+  void                    setNodeColor( const QColor& );
+  void                    setMainNodeColor( const QColor& );
+  void                    setUnpublishNodeColor( const QColor& );
+  void                    setSelectNodeColor( const QColor& );
+  void                    setArrowColor( const QColor& );
+  void                    setHighlightArrowColor( const QColor& );
+  void                    setSelectArrowColor( const QColor& );
 
-  std::string myData;
+  GEOMUtils::TreeModel    myTreeModel;
 
-  int myTimer;
+  EntryObjectMap          myTreeMap;
+  ArrowsInfo              myArrows;
 
-  bool myIsUpdate;
+  int                     myLevelsNumber;
+  int                     myMaxDownwardLevelsNumber;
+  int                     myMaxUpwardLevelsNumber;
 
-  GraphicsView_ViewFrame* myViewFrame;
+  QCheckBox*              myNodesMovable;
+  QSpinBox*               myHierarchyDepth;
+  QCheckBox*              myDisplayAscendants;
+  QCheckBox*              myDisplayDescendants;
+  QPushButton*            updateButton;
 
-  bool myIsCompute;
-  DependencyTree_ComputeDlg_QThread* qthread;
-  QPushButton *               cancelButton;
-  QProgressBar*               progressBar;
-  QWidgetAction*  cancelAction;
-  QWidgetAction*  progressAction;
+  LightApp_SelectionMgr*  mySelectionMgr;
+  GEOM::string_array_var  myMainEntries;
 
-  //SALOMEDS::Study_var myStudy;
+  bool                    myIsUpdate;
 
 };