SMTK  @SMTK_VERSION@
Simulation Modeling Tool Kit
qtDiagramScene.h
1 //=========================================================================
2 // Copyright (c) Kitware, Inc.
3 // All rights reserved.
4 // See LICENSE.txt for details.
5 //
6 // This software is distributed WITHOUT ANY WARRANTY; without even
7 // the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
8 // PURPOSE. See the above copyright notice for more information.
9 //=========================================================================
10 #ifndef smtk_extension_qtDiagramScene_h
11 #define smtk_extension_qtDiagramScene_h
12 
13 #include "smtk/extension/qt/Exports.h"
14 #include "smtk/extension/qt/qtBaseView.h"
15 
16 #include "smtk/string/Token.h"
17 
18 #include "smtk/common/TypeContainer.h"
19 
20 #include "smtk/PublicPointerDefs.h"
21 
22 #include <QGraphicsScene>
23 
24 #include <unordered_set>
25 
26 class QAbstractItemModel;
27 class QItemSelection;
28 class QTreeView;
29 
30 namespace smtk
31 {
32 namespace extension
33 {
34 
35 class qtBaseArc;
36 class qtDiagram;
37 class qtBaseNode;
38 class qtDiagramViewConfiguration;
39 
45 class SMTKQTEXT_EXPORT qtDiagramScene : public QGraphicsScene
46 {
47  Q_OBJECT
48 
49 public:
50  using Superclass = QGraphicsScene;
51 
53  ~qtDiagramScene() override;
54 
56  void setConfiguration(qtDiagramViewConfiguration* config) { m_config = config; }
57  qtDiagramViewConfiguration* configuration() const { return m_config; }
58 
60  qtDiagram* diagram() { return m_diagram; }
61 
62  std::unordered_set<qtBaseNode*> nodesOfSelection() const;
63 
64 public Q_SLOTS:
68  bool computeLayout(
69  const std::unordered_set<qtBaseNode*>& nodes,
70  const std::unordered_set<qtBaseArc*>& arcs);
71 
80  virtual void alignHorizontal(const std::unordered_set<qtBaseNode*>& nodeSet, int alignment);
81  virtual void alignVertical(const std::unordered_set<qtBaseNode*>& nodeSet, int alignment);
82 
88  virtual void distributeHorizontal(
89  const std::unordered_set<qtBaseNode*>& nodeSet,
90  smtk::string::Token distribution);
91  virtual void distributeVertical(
92  const std::unordered_set<qtBaseNode*>& nodeSet,
93  smtk::string::Token distribution);
94 
95 protected:
98  static QPointF snapToGrid(const qreal& x, const qreal& y, const qreal& resolution = 1.0);
99 
101  void drawBackground(QPainter* painter, const QRectF& rect) override;
102 
103  qtDiagramViewConfiguration* m_config{ nullptr };
104  qtDiagram* m_diagram{ nullptr };
105 };
106 
107 } // namespace extension
108 } // namespace smtk
109 #endif // smtk_extension_qtDiagramScene_h
smtk
The main namespace for the Simulation Modeling Tool Kit (SMTK).
Definition: doc.h:33
PublicPointerDefs.h
smtk::extension::qtDiagramScene::setConfiguration
void setConfiguration(qtDiagramViewConfiguration *config)
Set/get the view configuration object passed to us from the parent widget.
Definition: qtDiagramScene.h:56
smtk::extension::qtDiagramViewConfiguration
An object to hold view configuration settings.
Definition: qtDiagramViewConfiguration.h:39
smtk::extension::qtDiagramScene::diagram
qtDiagram * diagram()
Return the parent diagram.
Definition: qtDiagramScene.h:60
smtk::extension::qtDiagramScene
A QGraphicsScene that holds QGraphicsItems for diagrams.
Definition: qtDiagramScene.h:45
smtk::extension::qtDiagram
A widget that displays diagrams of SMTK resources.
Definition: qtDiagram.h:72
smtk::string::Token
A string token identified by an integer.
Definition: Token.h:29