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);
122 void focusedPanelSynchronized();
123 void addPanelRequest(
tlp::Graph *g =
nullptr);
124 void importGraphRequest();
128 void viewNeedsDraw();
129 void switchWorkspaceMode(QWidget *page);
130 void panelDestroyed(QObject *);
131 void updatePageCountLabel();
132 void updateAvailableModes();
134 void uncheckExposeButton();
135 QWidget *suitableMode(QWidget *oldMode);
136 WorkspacePanel *panelForScene(QObject *obj);
137 void swapPanelsRequested(WorkspacePanel *panel);
138 void updateStartupMode();
139 void changeFocusedPanelSynchronization(
bool);
142 void dragEnterEvent(QDragEnterEvent *event)
override;
143 void dropEvent(QDropEvent *event)
override;
145 bool handleDragEnterEvent(QEvent *e,
const QMimeData *mimedata);
146 bool handleDropEvent(
const QMimeData *mimedata);
148 bool eventFilter(QObject *, QEvent *)
override;
150 QWidget *currentModeWidget()
const;
151 std::vector<PlaceHolderWidget *> currentModeSlots()
const;
152 unsigned int currentSlotsCount()
const;
154 void setFocusedPanel(WorkspacePanel *panel);
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.