00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef OST_GUI_PANEL_BAR_PANEL_BAR
00020 #define OST_GUI_PANEL_BAR_PANEL_BAR
00021
00022 #include <QStackedLayout>
00023 #include <QWidget>
00024 #include <QString>
00025 #include <QAction>
00026 #include <QActionGroup>
00027
00028 #include <ost/gui/module_config.hh>
00029 #include <ost/gui/widget_pool.hh>
00030 #include <ost/gui/widget.hh>
00031 #include <ost/gui/thin_splitter.hh>
00032
00033 #include "button_box.hh"
00034
00035
00036 namespace ost { namespace gui {
00037
00038 class PanelWidgetContainer;
00039
00040 struct WidgetState
00041 {
00042 WidgetState(Widget * w,bool v=true, QString n=""):
00043 widget(w), visible(v), name(n)
00044 { }
00045 Widget* widget;
00046 bool visible;
00047 QString name;
00048 };
00049
00053 class DLLEXPORT_OST_GUI PanelBar : public Widget {
00054 Q_OBJECT
00055 public:
00056 PanelBar(QWidget* parent);
00057
00058 virtual bool Save(const QString& prefix);
00059 virtual bool Restore(const QString& prefix);
00060
00065 virtual void AddWidget(Widget* widget, bool hidden);
00066
00067
00068
00069
00070 void AddViewMode(PanelWidgetContainer * pwc);
00074 QMenu* GetViewModeMenu();
00075
00080 int GetIndex(Widget* widget);
00081
00084 void DragEnter();
00087 void EndDrag();
00088
00092 QAction* GetShowAction();
00093
00094 public slots:
00100 void InsertWidget(Widget * widget, int index, bool is_hidden=false);
00103 void ToggleViewMode();
00104
00106 void ToggleHide();
00107
00111 void RemoveWidget(Widget* widget);
00112
00113 private slots:
00114 void ChangeViewMode(QAction* action);
00115 void ToggleVisibility(Widget*);
00116 void ShowActionTrigger();
00117 void SetViewMode(int index);
00118 private:
00119 void UpdateShow();
00120
00121 QStackedLayout* layout_;
00122 QActionGroup* view_modes_;
00123 QMenu* view_mode_menu_;
00124 PanelWidgetContainer* current_view_mode_;
00125 QList<WidgetState> widget_states_;
00126 Widget* drop_box_;
00127 QAction* show_action_;
00128 };
00129
00130 }}
00131
00132 #endif