diff --git a/src/plugins/debugger/debuggerkitconfigwidget.cpp b/src/plugins/debugger/debuggerkitconfigwidget.cpp index 6060e470937b9c3f900dfd5653090515fec4e14f..1c69314fa80b4567061f90bdf7feef00b1059710 100644 --- a/src/plugins/debugger/debuggerkitconfigwidget.cpp +++ b/src/plugins/debugger/debuggerkitconfigwidget.cpp @@ -100,6 +100,13 @@ DebuggerKitConfigWidget::DebuggerKitConfigWidget(ProjectExplorer::Kit *k, connect(m_comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(refreshLabel())); } +void DebuggerKitConfigWidget::addToLayout(QGridLayout *layout, int row) +{ + addLabel(layout, row); + layout->addWidget(this, row, WidgetColumn, 3 , 1); + addButtonWidget(layout, row + 2); +} + QString DebuggerKitConfigWidget::displayName() const { return tr("Debugger:"); diff --git a/src/plugins/debugger/debuggerkitconfigwidget.h b/src/plugins/debugger/debuggerkitconfigwidget.h index a54ee648b8c987d89029f3d2722c5056167ababe..4884ff7bd766232db33ba77967a55ce8244b7a4d 100644 --- a/src/plugins/debugger/debuggerkitconfigwidget.h +++ b/src/plugins/debugger/debuggerkitconfigwidget.h @@ -69,6 +69,7 @@ public: void discard(); bool isDirty() const; QWidget *buttonWidget() const; + void addToLayout(QGridLayout *layout, int row); DebuggerEngineType engineType() const; void setEngineType(DebuggerEngineType et); diff --git a/src/plugins/projectexplorer/kitconfigwidget.h b/src/plugins/projectexplorer/kitconfigwidget.h index d48033dbc810b2de8bdd14a588b12b48b25df966..e8e141c86713bf06922c6f2147e44c9b47a6fa53 100644 --- a/src/plugins/projectexplorer/kitconfigwidget.h +++ b/src/plugins/projectexplorer/kitconfigwidget.h @@ -35,6 +35,8 @@ #include <QWidget> +QT_FORWARD_DECLARE_CLASS(QGridLayout) + namespace ProjectExplorer { // -------------------------------------------------------------------------- @@ -46,6 +48,12 @@ class PROJECTEXPLORER_EXPORT KitConfigWidget : public QWidget Q_OBJECT public: + enum LayoutColumns { + LabelColumn, + WidgetColumn, + ButtonColumn + }; + KitConfigWidget(QWidget *parent = 0) : QWidget(parent) { } @@ -57,8 +65,15 @@ public: virtual bool isDirty() const = 0; virtual QWidget *buttonWidget() const { return 0; } + + virtual void addToLayout(QGridLayout *layout, int row); + signals: void dirty(); + +protected: + void addLabel(QGridLayout *layout, int row); + void addButtonWidget(QGridLayout *layout, int row); }; } // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp b/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp index 452127be9626b63315ef42e0ae3937faccebc17a..66dd2845b3aeca9034930301891a6676ca3f3835 100644 --- a/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp +++ b/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp @@ -44,6 +44,32 @@ #include <QStyle> namespace ProjectExplorer { + +void KitConfigWidget::addToLayout(QGridLayout *layout, int row) +{ + addLabel(layout, row); + layout->addWidget(this, row, WidgetColumn); + addButtonWidget(layout, row); +} + +void KitConfigWidget::addLabel(QGridLayout *layout, int row) +{ + static const Qt::Alignment alignment + = static_cast<Qt::Alignment>(style()->styleHint(QStyle::SH_FormLayoutLabelAlignment)); + QLabel *label = new QLabel(displayName()); + label->setToolTip(toolTip()); + layout->addWidget(label, row, LabelColumn, alignment); +} + +void KitConfigWidget::addButtonWidget(QGridLayout *layout, int row) +{ + if (QWidget *button = buttonWidget()) { + if (button->toolTip().isEmpty()) + button->setToolTip(toolTip()); + layout->addWidget(button, row, ButtonColumn); + } +} + namespace Internal { KitManagerConfigWidget::KitManagerConfigWidget(Kit *k, QWidget *parent) : @@ -122,19 +148,7 @@ void KitManagerConfigWidget::addConfigWidget(ProjectExplorer::KitConfigWidget *w Q_ASSERT(!m_widgets.contains(widget)); connect(widget, SIGNAL(dirty()), this, SIGNAL(dirty())); - int row = m_layout->rowCount(); - QLabel *label = new QLabel(widget->displayName()); - label->setToolTip(widget->toolTip()); - m_layout->addWidget(label, row, 0, - Qt::Alignment(style()->styleHint(QStyle::SH_FormLayoutLabelAlignment))); - m_layout->addWidget(widget, row, 1); - QWidget *buttonWidget = widget->buttonWidget(); - if (buttonWidget) { - if (buttonWidget->toolTip().isEmpty()) - buttonWidget->setToolTip(widget->toolTip()); - m_layout->addWidget(widget->buttonWidget(), row, 2); - } - + widget->addToLayout(m_layout, m_layout->rowCount()); m_widgets.append(widget); }