+/// A tabbed set of GuiWorkAreas.
+class TabWorkArea : public QTabWidget
+{
+ Q_OBJECT
+public:
+ TabWorkArea(QWidget * parent = 0);
+
+ ///
+ void setFullScreen(bool full_screen);
+ void showBar(bool show);
+ void closeAll();
+ bool setCurrentWorkArea(GuiWorkArea *);
+ GuiWorkArea * addWorkArea(Buffer & buffer, GuiView & view);
+ bool removeWorkArea(GuiWorkArea *);
+ GuiWorkArea * currentWorkArea();
+ GuiWorkArea * workArea(Buffer & buffer);
+
+Q_SIGNALS:
+ ///
+ void currentWorkAreaChanged(GuiWorkArea *);
+ ///
+ void lastWorkAreaRemoved();
+
+public Q_SLOTS:
+ /// close current buffer, or the one given by \c clicked_tab_
+ void closeCurrentBuffer();
+ /// hide current tab, or the one given by \c clicked_tab_
+ void hideCurrentTab();
+ /// close the tab given by \c index
+ void closeTab(int index);
+ ///
+ void updateTabTexts();
+
+private Q_SLOTS:
+ ///
+ void on_currentTabChanged(int index);
+ ///
+ void showContextMenu(const QPoint & pos);
+ ///
+ void moveTab(int fromIndex, int toIndex);
+ ///
+ void mouseDoubleClickEvent(QMouseEvent * event);
+
+private: