-// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2014-2021 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();
-
-private:
- DependencyTree_View* myView;
-};
+typedef std::map<std::string,DependencyTree_Object*> EntryObjectMap;
+typedef std::map<std::pair<DependencyTree_Object*,DependencyTree_Object*>,DependencyTree_Arrow*> ArrowsInfo;
-class DependencyTree_View: public GraphicsView_ViewPort
+class DEPENDENCYTREE_EXPORT DependencyTree_View: public GraphicsView_ViewPort
{
Q_OBJECT
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();
+
+ int checkMaxLevelsNumber();
- 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 );
+ void getNewTreeModel( bool = true, bool = true );
- int checkMaxLevelsNumber();
- int myLevelsNumber;
- int myMaxDownwardLevelsNumber;
- int myMaxUpwardLevelsNumber;
+ 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& );
- QCheckBox* myNodesMovable;
- QSpinBox* myHierarchyDepth;
- QCheckBox* myDisplayAscendants;
- QCheckBox* myDisplayDescendants;
+ GEOMUtils::TreeModel myTreeModel;
- std::string myData;
+ 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;
};