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
00023 #include <ost/gui/module_config.hh>
00024 #include <ost/gui/widget_pool.hh>
00025 #include <ost/gui/widget.hh>
00026 #include <ost/gui/thin_splitter.hh>
00027
00028 #include "button_box.hh"
00029
00030
00031 #include <QStackedLayout>
00032 #include <QWidget>
00033 #include <QString>
00034 #include <QAction>
00035 #include <QActionGroup>
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 virtual ~PanelBar();
00058
00059 virtual bool Save(const QString& prefix);
00060 virtual bool Restore(const QString& prefix);
00061
00066 virtual void AddWidget(Widget* widget, bool hidden);
00067
00068
00069
00070
00071 void AddViewMode(PanelWidgetContainer * pwc);
00075 QMenu* GetViewModeMenu();
00076
00081 int GetIndex(Widget* widget);
00082
00085 void DragEnter();
00088 void EndDrag();
00089
00093 QAction* GetShowAction();
00094
00095 public slots:
00101 void InsertWidget(Widget * widget, int index, bool is_hidden=false);
00104 void ToggleViewMode();
00105
00107 void ToggleHide();
00108
00112 void RemoveWidget(Widget* widget);
00113
00114 private slots:
00115 void ChangeViewMode(QAction* action);
00116 void ToggleVisibility(Widget*);
00117 void ShowActionTrigger();
00118 void SetViewMode(int index);
00119 private:
00120 void UpdateShow();
00121
00122 QStackedLayout* layout_;
00123 QActionGroup* view_modes_;
00124 QMenu* view_mode_menu_;
00125 PanelWidgetContainer* current_view_mode_;
00126 QList<WidgetState> widget_states_;
00127 Widget* drop_box_;
00128 QAction* show_action_;
00129 };
00130
00131 }}
00132
00133 #endif