21#include <QDialogButtonBox>
26#include "moc_qgspanelwidgetstack.cpp"
28using namespace Qt::StringLiterals;
38 mMenuButton->setStyleSheet( u
"QToolButton::menu-indicator { image: none; }"_s );
53 mStackedWidget->insertWidget( 0, panel );
54 mStackedWidget->setCurrentIndex( 0 );
60 return qobject_cast<QgsPanelWidget *>( mStackedWidget->widget( 0 ) );
68 QWidget *widget = mStackedWidget->widget( 0 );
71 mStackedWidget->removeWidget( widget );
72 return qobject_cast<QgsPanelWidget *>( widget );
82 for (
int i = mStackedWidget->count() - 1; i >= 0; i-- )
84 if (
QgsPanelWidget *panelWidget = qobject_cast<QgsPanelWidget *>( mStackedWidget->widget( i ) ) )
86 mStackedWidget->removeWidget( panelWidget );
87 if ( panelWidget->autoDelete() )
89 panelWidget->deleteLater();
92 else if ( QWidget *widget = mStackedWidget->widget( i ) )
94 mStackedWidget->removeWidget( widget );
95 widget->deleteLater();
102 this->updateBreadcrumb();
107 return qobject_cast<QgsPanelWidget *>( mStackedWidget->currentWidget() );
112 if (
const QgsPanelWidget *widget = qobject_cast<const QgsPanelWidget *>( mStackedWidget->currentWidget() ) )
114 if ( widget->applySizeConstraintsToStack() )
115 return widget->sizeHint();
117 return QWidget::sizeHint();
122 if (
const QgsPanelWidget *widget = qobject_cast<const QgsPanelWidget *>( mStackedWidget->currentWidget() ) )
124 if ( widget->applySizeConstraintsToStack() )
125 return widget->minimumSizeHint();
128 return QWidget::minimumSizeHint();
134 if ( mStackedWidget->currentIndex() <= 0 )
144 setUpdatesEnabled(
false );
145 mStackedWidget->setUpdatesEnabled(
false );
147 for (
int i = mStackedWidget->count() - 1; i > 0; --i )
149 if (
QgsPanelWidget *panelWidget = qobject_cast<QgsPanelWidget *>( mStackedWidget->widget( i ) ) )
151 panelWidget->acceptPanel();
154 setUpdatesEnabled(
true );
155 mStackedWidget->setUpdatesEnabled(
true );
165 const int index = mStackedWidget->addWidget( panel );
166 mStackedWidget->setCurrentIndex( index );
177 mStackedWidget->setCurrentIndex( mStackedWidget->currentIndex() - 1 );
178 mStackedWidget->removeWidget( panel );
181 panel->deleteLater();
184 if ( mStackedWidget->currentIndex() == 0 )
194 this->updateBreadcrumb();
199 if ( e->button() == Qt::BackButton )
207 if ( e->key() == Qt::Key_Escape )
213void QgsPanelWidgetStack::updateBreadcrumb()
216 const auto constMTitles = mTitles;
217 for (
const QString &title : constMTitles )
219 breadcrumb += u
" %1 >"_s.arg( title );
222 breadcrumb.chop( 1 );
223 mTitleText->setText( breadcrumb );
226void QgsPanelWidgetStack::updateMenuButton()
230 mMenuButton->setVisible(
true );
231 mMenuButton->setToolTip(
currentPanel()->menuButtonTooltip() );
232 mMenuButton->setMenu( menu );
236 mMenuButton->setVisible(
false );