diff --git a/modules/gui/src/panels/tabbed_panel_bar.cc b/modules/gui/src/panels/tabbed_panel_bar.cc index fdac9bccd934355b4d59f618e485c02e376a8480..2b3c62b11e9353bdc9dcf571e69e7e48cf018125 100644 --- a/modules/gui/src/panels/tabbed_panel_bar.cc +++ b/modules/gui/src/panels/tabbed_panel_bar.cc @@ -18,6 +18,9 @@ //------------------------------------------------------------------------------ #include <QSettings> +#include <QDir> + +#include <iostream> #include <ost/gui/widget_registry.hh> @@ -31,11 +34,19 @@ TabbedPanelBar::TabbedPanelBar(PanelBar* parent): layout_ = new QHBoxLayout(this); layout_->setMargin(0); layout_->setSpacing(0); - tabWidget_ = new QTabWidget(this); + tab_widget_ = new QTabWidget(this); #if QT_VERSION>=0x40503 - tabWidget_->setDocumentMode(true); + tab_widget_->setDocumentMode(true); #endif - layout_->addWidget(tabWidget_); + layout_->addWidget(tab_widget_); + + toolbar_ = new QToolBar(this); + toolbar_->setFloatable(false); + toolbar_->setContentsMargins(0, 0, 0, 0); + toolbar_->setToolButtonStyle(Qt::ToolButtonIconOnly); + toolbar_->setIconSize(QSize(16,16)); + tab_widget_->setCornerWidget(toolbar_, Qt::TopRightCorner); + connect(tab_widget_,SIGNAL(currentChanged(int)),this,SLOT(CurrentChanged(int))); } bool TabbedPanelBar::Save(const QString& prefix) @@ -50,16 +61,16 @@ bool TabbedPanelBar::Restore(const QString& prefix) void TabbedPanelBar::WidgetMoved(Widget* widget, int index){ QString class_name = widget->metaObject()->className(); - if(tabWidget_->indexOf(widget)>=0){ - tabWidget_->removeTab(tabWidget_->indexOf(widget)); + if(tab_widget_->indexOf(widget)>=0){ + tab_widget_->removeTab(tab_widget_->indexOf(widget)); } - tabWidget_->insertTab(index,widget,WidgetRegistry::Instance()->GetFullName(class_name)); + tab_widget_->insertTab(index,widget,WidgetRegistry::Instance()->GetFullName(class_name)); } void TabbedPanelBar::ShowWidget(Widget* widget, int pos, bool show){ - if(tabWidget_->indexOf(widget)>=0){ + if(tab_widget_->indexOf(widget)>=0){ if(!show){ - tabWidget_->removeTab(tabWidget_->indexOf(widget)); + tab_widget_->removeTab(tab_widget_->indexOf(widget)); } } else{ @@ -73,10 +84,23 @@ QString TabbedPanelBar::GetName(){ return "Tabbed Mode"; } +void TabbedPanelBar::CurrentChanged(int index){ + if(Widget* widget = qobject_cast<Widget*>(tab_widget_->currentWidget())){ + ActionList actions = widget->GetActions(); + toolbar_->clear(); + if(!actions.isEmpty()){ + for(int i = 0;i<actions.size();i++){ + toolbar_->addAction(actions[i]); + } + } + } +} + + TabbedPanelBar::~TabbedPanelBar(){ //Do not destroy widgets - for(int i=0; i< tabWidget_->count();i++){ - tabWidget_->widget(i)->setParent(NULL); + for(int i=0; i< tab_widget_->count();i++){ + tab_widget_->widget(i)->setParent(NULL); } } diff --git a/modules/gui/src/panels/tabbed_panel_bar.hh b/modules/gui/src/panels/tabbed_panel_bar.hh index 0579c4b6e937d87e990504b53eab7e165270256b..dd889bb02d1f068456be408b0dc67161ceb87c4e 100644 --- a/modules/gui/src/panels/tabbed_panel_bar.hh +++ b/modules/gui/src/panels/tabbed_panel_bar.hh @@ -24,6 +24,7 @@ #include <QString> #include <QAction> #include <QTabWidget> +#include <QToolBar> #include <ost/gui/module_config.hh> #include <ost/gui/widget_pool.hh> @@ -46,10 +47,16 @@ public: void WidgetMoved(Widget* widget, int position); QString GetName(); + private: virtual void ShowWidget(Widget* widget, int pos, bool show); QHBoxLayout* layout_; - QTabWidget* tabWidget_; + QTabWidget* tab_widget_; + QToolBar* toolbar_; + +private slots: + void CurrentChanged(int index); + }; }}