27 #include <tulip/tulipconf.h>
28 #include <tulip/Graph.h>
30 class PlaceHolderWidget;
36 class QAbstractButton;
44 class GraphHierarchiesModel;
47 class TLP_QT_SCOPE Workspace :
public QWidget {
51 std::vector<WorkspacePanel *> _panels;
52 unsigned int _currentPanelIndex;
53 QWidget *_oldWorkspaceMode;
54 WorkspacePanel *_focusedPanel;
55 bool _focusedPanelHighlighting;
57 QMap<QWidget *, std::vector<PlaceHolderWidget *>> _modeToSlots;
58 QMap<QWidget *, QWidget *> _modeSwitches;
59 GraphHierarchiesModel *_model;
60 QAbstractButton *_exposeButton;
62 QString panelTitle(WorkspacePanel *)
const;
64 bool _autoCenterViews;
67 explicit Workspace(QWidget *parent =
nullptr);
68 ~Workspace()
override;
71 inline bool empty()
const {
72 return _panels.empty();
74 std::vector<tlp::View *> panels()
const;
78 void switchToStartupMode();
79 void switchToSingleMode();
80 void setSingleModeSwitch(QWidget *);
81 void switchToSplitMode();
82 void setSplitModeSwitch(QWidget *);
83 void switchToSplitHorizontalMode();
84 void setSplitHorizontalModeSwitch(QWidget *);
85 void switchToSplit3Mode();
86 void setSplit3ModeSwitch(QWidget *);
87 void switchToSplit32Mode();
88 void setSplit32ModeSwitch(QWidget *);
89 void switchToSplit33Mode();
90 void setSplit33ModeSwitch(QWidget *);
91 void switchToGridMode();
92 void setGridModeSwitch(QWidget *);
93 void switchToSixMode();
94 void setSixModeSwitch(QWidget *);
98 void setExposeModeSwitch(QAbstractButton *);
100 void showExposeMode();
101 void hideExposeMode();
104 void setModel(tlp::GraphHierarchiesModel *);
105 tlp::GraphHierarchiesModel *graphModel()
const;
107 void writeProject(tlp::TulipProject *, QMap<tlp::Graph *, QString>,
tlp::PluginProgress *);
110 void setPageCountLabel(QLabel *l);
112 void redrawPanels(
bool center =
false);
114 void setAutoCenterPanelsOnDraw(
bool);
116 void setFocusedPanelHighlighting(
bool);
120 void setFocusedPanel(WorkspacePanel *panel);
124 void focusedPanelSynchronized();
125 void addPanelRequest(
tlp::Graph *g =
nullptr);
126 void importGraphRequest();
130 void viewNeedsDraw();
131 void switchWorkspaceMode(QWidget *page);
132 void panelDestroyed(QObject *);
133 void updatePageCountLabel();
134 void updateAvailableModes();
136 void uncheckExposeButton();
137 QWidget *suitableMode(QWidget *oldMode);
138 WorkspacePanel *panelForScene(QObject *obj);
139 void swapPanelsRequested(WorkspacePanel *panel);
140 void updateStartupMode();
141 void changeFocusedPanelSynchronization(
bool);
144 void dragEnterEvent(QDragEnterEvent *event)
override;
145 void dropEvent(QDropEvent *event)
override;
147 bool handleDragEnterEvent(QEvent *e,
const QMimeData *mimedata);
148 bool handleDropEvent(
const QMimeData *mimedata);
150 bool eventFilter(QObject *, QEvent *)
override;
152 QWidget *currentModeWidget()
const;
153 std::vector<PlaceHolderWidget *> currentModeSlots()
const;
154 unsigned int currentSlotsCount()
const;
PluginProcess subclasses are meant to notify about the progress state of some process (typically a pl...
View plugins provide a way to dynamically add to a Tulip plateform various ways to visualize a graph.