From 269fe7f182ebbe954679e5a94fee4b93b819d126 Mon Sep 17 00:00:00 2001 From: dt Date: Thu, 16 Jul 2009 15:33:19 +0200 Subject: [PATCH] New build and run settings ui. Not finished 100% --- .../buildsettingspropertiespage.cpp | 330 ++++++------------ .../buildsettingspropertiespage.h | 33 +- .../buildsettingspropertiespage.ui | 184 ---------- src/plugins/projectexplorer/buildstepspage.ui | 9 + .../projectexplorer/dependenciespanel.cpp | 11 +- .../projectexplorer/dependenciespanel.ui | 44 --- .../editorsettingspropertiespage.ui | 39 +-- .../projectexplorer/projectexplorer.pro | 4 +- src/plugins/projectexplorer/projectwindow.cpp | 100 +++--- src/plugins/projectexplorer/projectwindow.h | 30 +- .../runsettingspropertiespage.cpp | 2 + .../runsettingspropertiespage.ui | 121 +++---- src/plugins/qt4projectmanager/makestep.cpp | 2 - src/plugins/qt4projectmanager/makestep.ui | 78 ++--- src/plugins/qt4projectmanager/qmakestep.cpp | 15 +- src/plugins/qt4projectmanager/qmakestep.ui | 159 +++------ .../qt4projectmanager/qt4runconfiguration.cpp | 4 +- 17 files changed, 390 insertions(+), 775 deletions(-) delete mode 100644 src/plugins/projectexplorer/buildsettingspropertiespage.ui delete mode 100644 src/plugins/projectexplorer/dependenciespanel.ui diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp index cc8311357df..980b7ba4ec2 100644 --- a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp +++ b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp @@ -36,11 +36,10 @@ #include #include -#include #include #include #include -#include +#include using namespace ProjectExplorer; using namespace ProjectExplorer::Internal; @@ -84,6 +83,48 @@ QWidget *BuildSettingsPanel::widget() return m_widget; } +/// +// BuildSettingsSubWidgets +/// + +BuildSettingsSubWidgets::~BuildSettingsSubWidgets() +{ + clear(); +} + +void BuildSettingsSubWidgets::addWidget(const QString &name, QWidget *widget) +{ + QLabel *label = new QLabel(this); + label->setText(name); + QFont f = label->font(); + f.setBold(true); + f.setPointSizeF(f.pointSizeF() *1.2); + label->setFont(f); + + layout()->addWidget(label); + layout()->addWidget(widget); + + m_labels.append(label); + m_widgets.append(widget); +} + +void BuildSettingsSubWidgets::clear() +{ + qDeleteAll(m_widgets); + qDeleteAll(m_labels); +} + +QList BuildSettingsSubWidgets::widgets() const +{ + return m_widgets; +} + +BuildSettingsSubWidgets::BuildSettingsSubWidgets(QWidget *parent) + : QGroupBox(parent) +{ + new QVBoxLayout(this); +} + /// /// BuildSettingsWidget /// @@ -95,62 +136,60 @@ BuildSettingsWidget::~BuildSettingsWidget() BuildSettingsWidget::BuildSettingsWidget(Project *project) : m_project(project) { - m_ui.setupUi(this); - m_ui.splitter->setStretchFactor(1,10); - m_ui.buildSettingsList->setContextMenuPolicy(Qt::CustomContextMenu); + QVBoxLayout *vbox = new QVBoxLayout(this); + QHBoxLayout *hbox = new QHBoxLayout(); + hbox->addWidget(new QLabel(tr("Build Configuration:"), this)); + m_buildConfigurationComboBox = new QComboBox(this); + hbox->addWidget(m_buildConfigurationComboBox); - m_ui.addButton->setIcon(QIcon(Core::Constants::ICON_PLUS)); - m_ui.addButton->setText(""); - m_ui.removeButton->setIcon(QIcon(Core::Constants::ICON_MINUS)); - m_ui.removeButton->setText(""); + m_addButton = new QPushButton(this); + m_addButton->setText("Add"); + m_addButton->setIcon(QIcon(Core::Constants::ICON_PLUS)); + m_addButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); + hbox->addWidget(m_addButton); + + m_removeButton = new QPushButton(this); + m_removeButton->setText("Remove"); + m_removeButton->setIcon(QIcon(Core::Constants::ICON_MINUS)); + m_removeButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); + hbox->addWidget(m_removeButton); + hbox->addSpacerItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Fixed)); + vbox->addLayout(hbox); + + m_subWidgets = new BuildSettingsSubWidgets(this); + vbox->addWidget(m_subWidgets); QMenu *addButtonMenu = new QMenu(this); addButtonMenu->addAction(tr("Create &New"), this, SLOT(createConfiguration())); addButtonMenu->addAction(tr("&Clone Selected"), this, SLOT(cloneConfiguration())); - m_ui.addButton->setMenu(addButtonMenu); + m_addButton->setMenu(addButtonMenu); + connect(m_buildConfigurationComboBox, SIGNAL(currentIndexChanged(int)), + this, SLOT(currentIndexChanged(int))); - connect(m_ui.buildSettingsList, SIGNAL(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)), - this, SLOT(updateSettingsWidget(QTreeWidgetItem *, QTreeWidgetItem *))); - connect(m_ui.buildSettingsList, SIGNAL(customContextMenuRequested (const QPoint &) ), - this, SLOT(showContextMenu(const QPoint &))); - connect(m_ui.buildSettingsList, SIGNAL(itemChanged(QTreeWidgetItem*,int) ), - this, SLOT(itemChanged(QTreeWidgetItem*)), Qt::QueuedConnection); + // TODO currentIndexChanged + // needs to change active configuration + // and set widgets - connect(m_ui.removeButton, SIGNAL(clicked()), + connect(m_removeButton, SIGNAL(clicked()), this, SLOT(deleteConfiguration())); connect(m_project, SIGNAL(activeBuildConfigurationChanged()), - this, SLOT(updateBuildSettings())); + this, SLOT(activeBuildConfigurationChanged())); connect(m_project, SIGNAL(buildConfigurationDisplayNameChanged(const QString &)), this, SLOT(buildConfigurationDisplayNameChanged(const QString &))); - - // remove dummy designer widget - while (QWidget *widget = m_ui.buildSettingsWidgets->currentWidget()) { - m_ui.buildSettingsWidgets->removeWidget(widget); - delete widget; - } - updateBuildSettings(); } void BuildSettingsWidget::buildConfigurationDisplayNameChanged(const QString &buildConfiguration) { - QTreeWidgetItem *rootItem = m_ui.buildSettingsList->invisibleRootItem(); - for (int i = 0; i < rootItem->childCount(); ++i) { - QTreeWidgetItem *child = rootItem->child(i); - if (child->data(0, Qt::UserRole).toString() == buildConfiguration) { - child->setText(0, m_project->displayNameFor(buildConfiguration)); - if (m_ui.buildSettingsList->currentItem() == child) { - QWidget *widget = m_itemToWidget.value(child); - if (BuildStepConfigWidget *buildStepWidget = qobject_cast(widget)) { - QString title; - title = buildStepWidget->displayName(); - m_ui.titleLabel->setText(tr("%1 - %2").arg(m_project->displayNameFor(buildConfiguration)).arg(title)); - } - } + + for (int i=0; icount(); ++i) { + if (m_buildConfigurationComboBox->itemData(i).toString() == buildConfiguration) { + m_buildConfigurationComboBox->setItemText(i, m_project->displayNameFor(buildConfiguration)); + break; } } } @@ -158,182 +197,66 @@ void BuildSettingsWidget::buildConfigurationDisplayNameChanged(const QString &bu void BuildSettingsWidget::updateBuildSettings() { - QTreeWidgetItem *rootItem = m_ui.buildSettingsList->invisibleRootItem(); - // update buttons - m_ui.removeButton->setEnabled(m_project->buildConfigurations().size() > 1); - - // Save current selection - QString lastCurrentItem; - if (m_ui.buildSettingsList->currentItem()) - lastCurrentItem = m_ui.buildSettingsList->currentItem()->text(0); - - m_itemToWidget.clear(); + // TODO save position, entry from combbox // Delete old tree items - while (rootItem->childCount()) { - QTreeWidgetItem *configPageItem = rootItem->child(0); - rootItem->removeChild(configPageItem); - delete configPageItem; // does that delete also subitems? - } + m_buildConfigurationComboBox->blockSignals(true); // TODO ... + m_buildConfigurationComboBox->clear(); + m_subWidgets->clear(); - // Delete old pages - while (m_ui.buildSettingsWidgets->count()) { - QWidget *w = m_ui.buildSettingsWidgets->widget(0); - m_ui.buildSettingsWidgets->removeWidget(w); - delete w; - } + // update buttons + m_removeButton->setEnabled(m_project->buildConfigurations().size() > 1); // Add pages - QWidget *dummyWidget = new QWidget(this); - QWidget *buildStepsWidget = new BuildStepsPage(m_project); - QWidget *cleanStepsWidget = new BuildStepsPage(m_project, true); BuildStepConfigWidget *generalConfigWidget = m_project->createConfigWidget(); - QList subConfigWidgets = m_project->subConfigWidgets(); + m_subWidgets->addWidget(generalConfigWidget->displayName(), generalConfigWidget); - m_ui.buildSettingsWidgets->addWidget(dummyWidget); - m_ui.buildSettingsWidgets->addWidget(buildStepsWidget); - m_ui.buildSettingsWidgets->addWidget(cleanStepsWidget); - m_ui.buildSettingsWidgets->addWidget(generalConfigWidget); + m_subWidgets->addWidget(tr("Build Steps"), new BuildStepsPage(m_project)); + m_subWidgets->addWidget(tr("Clean Steps"), new BuildStepsPage(m_project, true)); + + QList subConfigWidgets = m_project->subConfigWidgets(); foreach (BuildStepConfigWidget *subConfigWidget, subConfigWidgets) - m_ui.buildSettingsWidgets->addWidget(subConfigWidget); + m_subWidgets->addWidget(subConfigWidget->displayName(), subConfigWidget); // Add tree items - QTreeWidgetItem *activeConfigurationItem = 0; QString activeBuildConfiguration = m_project->activeBuildConfiguration(); foreach (const QString &buildConfiguration, m_project->buildConfigurations()) { - QString displayName = m_project->displayNameFor(buildConfiguration); - QTreeWidgetItem *buildConfigItem = new QTreeWidgetItem(); - m_itemToWidget.insert(buildConfigItem, generalConfigWidget); - buildConfigItem->setText(0, displayName); - buildConfigItem->setData(0, Qt::UserRole, buildConfiguration); - buildConfigItem->setCheckState(0, Qt::Unchecked); - if (activeBuildConfiguration == buildConfiguration) { - QFont font = buildConfigItem->font(0); - font.setBold(true); - buildConfigItem->setFont(0, font); - buildConfigItem->setCheckState(0, Qt::Checked); - - activeConfigurationItem = buildConfigItem; - } - rootItem->addChild(buildConfigItem); - - QTreeWidgetItem *generalItem = new QTreeWidgetItem(); - m_itemToWidget.insert(generalItem, generalConfigWidget); - generalItem->setText(0, tr("General")); - buildConfigItem->addChild(generalItem); - - foreach (BuildStepConfigWidget *subConfigWidget, subConfigWidgets) { - QTreeWidgetItem *subConfigItem = new QTreeWidgetItem(); - m_itemToWidget.insert(subConfigItem, subConfigWidget); - subConfigItem->setText(0, subConfigWidget->displayName()); - buildConfigItem->addChild(subConfigItem); - } - - QTreeWidgetItem *buildStepsItem = new QTreeWidgetItem(); - m_itemToWidget.insert(buildStepsItem, buildStepsWidget); - buildStepsItem->setText(0, tr("Build Steps")); - buildConfigItem->addChild(buildStepsItem); - - QTreeWidgetItem *cleanStepsItem = new QTreeWidgetItem(); - m_itemToWidget.insert(cleanStepsItem, cleanStepsWidget); - cleanStepsItem->setText(0, tr("Clean Steps")); - buildConfigItem->addChild(cleanStepsItem); + m_buildConfigurationComboBox->addItem(m_project->displayNameFor(buildConfiguration), buildConfiguration); + if (buildConfiguration == activeBuildConfiguration) + m_buildConfigurationComboBox->setCurrentIndex(m_buildConfigurationComboBox->count() - 1); } - m_ui.buildSettingsList->expandAll(); + // TODO ... + m_buildConfigurationComboBox->blockSignals(false); - // Restore selection - if (!lastCurrentItem.isEmpty()) { - for (int i = rootItem->childCount() - 1; i >= 0; --i) { - if (rootItem->child(i)->text(0) == lastCurrentItem) { - m_ui.buildSettingsList->setCurrentItem(rootItem->child(i)); - break; - } - } - } - - if (!m_ui.buildSettingsList->currentItem()) { - if (activeConfigurationItem) - m_ui.buildSettingsList->setCurrentItem(activeConfigurationItem); - else - m_ui.buildSettingsList->setCurrentItem(m_ui.buildSettingsList->invisibleRootItem()->child(0)); - } + // TODO Restore position, entry from combbox + // TODO? select entry from combobox ? + activeBuildConfigurationChanged(); } -/* switch from one tree item / build step to another */ -void BuildSettingsWidget::updateSettingsWidget(QTreeWidgetItem *newItem, QTreeWidgetItem *oldItem) +void BuildSettingsWidget::currentIndexChanged(int index) { - if (oldItem == newItem) - return; + QString buildConfiguration = m_buildConfigurationComboBox->itemData(index).toString(); + m_project->setActiveBuildConfiguration(buildConfiguration); +} - if (!newItem) { - QWidget *dummyWidget = m_ui.buildSettingsWidgets->widget(0); - m_ui.buildSettingsWidgets->setCurrentWidget(dummyWidget); - m_ui.titleLabel->clear(); - return; - } - - if (QWidget *widget = m_itemToWidget.value(newItem)) { - QString buildConfiguration; - { - QTreeWidgetItem *configurationItem = newItem; - while (configurationItem && configurationItem->parent()) - configurationItem = configurationItem->parent(); - if (configurationItem) - buildConfiguration = configurationItem->data(0, Qt::UserRole).toString(); +void BuildSettingsWidget::activeBuildConfigurationChanged() +{ + const QString &activeBuildConfiguration = m_project->activeBuildConfiguration(); + for (int i = 0; i < m_buildConfigurationComboBox->count(); ++i) { + if (m_buildConfigurationComboBox->itemData(i).toString() == activeBuildConfiguration) { + m_buildConfigurationComboBox->setCurrentIndex(i); + break; } - - QString title; + } + foreach (QWidget *widget, m_subWidgets->widgets()) { if (BuildStepConfigWidget *buildStepWidget = qobject_cast(widget)) { - title = buildStepWidget->displayName(); - buildStepWidget->init(buildConfiguration); - } - - m_ui.titleLabel->setText(tr("%1 - %2").arg(m_project->displayNameFor(buildConfiguration)).arg(title)); - m_ui.buildSettingsWidgets->setCurrentWidget(widget); - } -} - - -void BuildSettingsWidget::showContextMenu(const QPoint &point) -{ - if (QTreeWidgetItem *item = m_ui.buildSettingsList->itemAt(point)) { - if (!item->parent()) { - const QString buildConfiguration = item->data(0, Qt::UserRole).toString(); - - QMenu menu; - QAction *setAsActiveAction = new QAction(tr("Set as Active"), &menu); - QAction *cloneAction = new QAction(tr("Clone"), &menu); - QAction *deleteAction = new QAction(tr("Delete"), &menu); - - if (m_project->activeBuildConfiguration() == buildConfiguration) - setAsActiveAction->setEnabled(false); - if (m_project->buildConfigurations().size() < 2) - deleteAction->setEnabled(false); - - menu.addActions(QList() << setAsActiveAction << cloneAction << deleteAction); - QPoint globalPoint = m_ui.buildSettingsList->mapToGlobal(point); - QAction *action = menu.exec(globalPoint); - if (action == setAsActiveAction) { - setActiveConfiguration(buildConfiguration); - } else if (action == cloneAction) { - cloneConfiguration(buildConfiguration); - } else if (action == deleteAction) { - deleteConfiguration(buildConfiguration); - } - - updateBuildSettings(); + buildStepWidget->init(activeBuildConfiguration); } } } -void BuildSettingsWidget::setActiveConfiguration() -{ - const QString configuration = m_ui.buildSettingsList->currentItem()->data(0, Qt::UserRole).toString(); - setActiveConfiguration(configuration); -} - void BuildSettingsWidget::createConfiguration() { bool ok; @@ -373,40 +296,16 @@ void BuildSettingsWidget::createConfiguration() void BuildSettingsWidget::cloneConfiguration() { - QTreeWidgetItem *configItem = m_ui.buildSettingsList->currentItem(); - while (configItem->parent()) - configItem = configItem->parent(); - const QString configuration = configItem->data(0, Qt::UserRole).toString(); + const QString configuration = m_buildConfigurationComboBox->itemData(m_buildConfigurationComboBox->currentIndex()).toString(); cloneConfiguration(configuration); } void BuildSettingsWidget::deleteConfiguration() { - QTreeWidgetItem *configItem = m_ui.buildSettingsList->currentItem(); - while (configItem->parent()) - configItem = configItem->parent(); - const QString configuration = configItem->data(0, Qt::UserRole).toString(); + const QString configuration = m_buildConfigurationComboBox->itemData(m_buildConfigurationComboBox->currentIndex()).toString(); deleteConfiguration(configuration); } -void BuildSettingsWidget::itemChanged(QTreeWidgetItem *item) -{ - // do not allow unchecking - if (item->checkState(0) == Qt::Unchecked) - item->setCheckState(0, Qt::Checked); - else { - setActiveConfiguration(item->data(0, Qt::UserRole).toString()); - } -} - -void BuildSettingsWidget::setActiveConfiguration(const QString &configuration) -{ - if (configuration.isEmpty()) - return; - - m_project->setActiveBuildConfiguration(configuration); -} - void BuildSettingsWidget::cloneConfiguration(const QString &sourceConfiguration) { if (sourceConfiguration.isEmpty()) @@ -440,9 +339,10 @@ void BuildSettingsWidget::cloneConfiguration(const QString &sourceConfiguration) m_project->copyBuildConfiguration(sourceConfiguration, newBuildConfiguration); m_project->setDisplayNameFor(newBuildConfiguration, newDisplayName); - m_project->setActiveBuildConfiguration(newBuildConfiguration); updateBuildSettings(); + + m_project->setActiveBuildConfiguration(newBuildConfiguration); } void BuildSettingsWidget::deleteConfiguration(const QString &deleteConfiguration) diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.h b/src/plugins/projectexplorer/buildsettingspropertiespage.h index 378ddcbe24e..9fe45659bad 100644 --- a/src/plugins/projectexplorer/buildsettingspropertiespage.h +++ b/src/plugins/projectexplorer/buildsettingspropertiespage.h @@ -31,7 +31,12 @@ #define BUILDSETTINGSPROPERTIESPAGE_H #include "iprojectproperties.h" -#include "ui_buildsettingspropertiespage.h" + +#include +#include +#include +#include +#include namespace ProjectExplorer { @@ -39,6 +44,20 @@ class IBuildStepFactory; namespace Internal { +class BuildSettingsSubWidgets : public QGroupBox +{ + Q_OBJECT +public: + BuildSettingsSubWidgets(QWidget *parent); + ~BuildSettingsSubWidgets(); + void clear(); + void addWidget(const QString &name, QWidget *widget); + QList widgets() const; +private: + QList m_widgets; + QList m_labels; +}; + class BuildSettingsPanelFactory : public IPanelFactory { public: @@ -73,24 +92,24 @@ public: private slots: void buildConfigurationDisplayNameChanged(const QString &buildConfiguration); void updateBuildSettings(); - void updateSettingsWidget(QTreeWidgetItem *newItem, QTreeWidgetItem *oldItem); - void showContextMenu(const QPoint & pos); + void currentIndexChanged(int index); + void activeBuildConfigurationChanged(); - void setActiveConfiguration(); void createConfiguration(); void cloneConfiguration(); void deleteConfiguration(); - void itemChanged(QTreeWidgetItem *item); private: void setActiveConfiguration(const QString &configuration); void cloneConfiguration(const QString &toClone); void deleteConfiguration(const QString &toDelete); - Ui::BuildSettingsPropertiesPage m_ui; Project *m_project; - QHash m_itemToWidget; + QPushButton *m_addButton; + QPushButton *m_removeButton; + QComboBox *m_buildConfigurationComboBox; + BuildSettingsSubWidgets *m_subWidgets; }; } // namespace Internal diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.ui b/src/plugins/projectexplorer/buildsettingspropertiespage.ui deleted file mode 100644 index 3fabbcea90e..00000000000 --- a/src/plugins/projectexplorer/buildsettingspropertiespage.ui +++ /dev/null @@ -1,184 +0,0 @@ - - - ProjectExplorer::Internal::BuildSettingsPropertiesPage - - - - 0 - 0 - 799 - 525 - - - - - - - Qt::Horizontal - - - - - - - - 0 - 0 - - - - - 16777215 - 800 - - - - false - - - true - - - false - - - true - - - false - - - false - - - - Configurations - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - + - - - - - - - - - - - - - - - - - Qt::Vertical - - - - 20 - 0 - - - - - - - - - - - - - - - 0 - 0 - - - - - 16 - 50 - false - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - 10 - 0 - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/plugins/projectexplorer/buildstepspage.ui b/src/plugins/projectexplorer/buildstepspage.ui index fed7abeeeea..52a667f6b88 100644 --- a/src/plugins/projectexplorer/buildstepspage.ui +++ b/src/plugins/projectexplorer/buildstepspage.ui @@ -45,11 +45,20 @@ + + -1 + Qt::Horizontal + + + 0 + 0 + + diff --git a/src/plugins/projectexplorer/dependenciespanel.cpp b/src/plugins/projectexplorer/dependenciespanel.cpp index 54665ae91bc..a472e0e8287 100644 --- a/src/plugins/projectexplorer/dependenciespanel.cpp +++ b/src/plugins/projectexplorer/dependenciespanel.cpp @@ -148,7 +148,6 @@ public: QWidget *parent = 0); private: - Ui::DependenciesWidget m_ui; SessionManager *m_session; DependenciesModel *m_model; }; @@ -160,9 +159,13 @@ DependenciesWidget::DependenciesWidget(SessionManager *session, , m_session(session) , m_model(new DependenciesModel(session, project, this)) { - m_ui.setupUi(this); - m_ui.dependenciesView->setModel(m_model); - m_ui.dependenciesView->setHeaderHidden(true); + QHBoxLayout *layout = new QHBoxLayout(this); + QTreeView *treeView = new QTreeView(this); + treeView->setModel(m_model); + treeView->setHeaderHidden(true); + treeView->setMinimumHeight(250); + layout->addWidget(treeView); + layout->addSpacerItem(new QSpacerItem(0, 0 , QSizePolicy::Expanding, QSizePolicy::Fixed)); } // diff --git a/src/plugins/projectexplorer/dependenciespanel.ui b/src/plugins/projectexplorer/dependenciespanel.ui deleted file mode 100644 index 83fc95b1a3b..00000000000 --- a/src/plugins/projectexplorer/dependenciespanel.ui +++ /dev/null @@ -1,44 +0,0 @@ - - - ProjectExplorer::Internal::DependenciesWidget - - - - 0 - 0 - 502 - 375 - - - - Project Dependencies - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Project Dependencies: - - - - - - - - diff --git a/src/plugins/projectexplorer/editorsettingspropertiespage.ui b/src/plugins/projectexplorer/editorsettingspropertiespage.ui index 640134cfcfb..3ac801e2242 100644 --- a/src/plugins/projectexplorer/editorsettingspropertiespage.ui +++ b/src/plugins/projectexplorer/editorsettingspropertiespage.ui @@ -2,15 +2,10 @@ ProjectExplorer::Internal::EditorSettingsPropertiesPage - - - 0 - 0 - 400 - 300 - - - + + + QFormLayout::ExpandingFieldsGrow + @@ -21,32 +16,6 @@ - - - - Qt::Horizontal - - - - 232 - 20 - - - - - - - - Qt::Vertical - - - - 20 - 249 - - - - diff --git a/src/plugins/projectexplorer/projectexplorer.pro b/src/plugins/projectexplorer/projectexplorer.pro index a246d2d52e3..ffb0b081efc 100644 --- a/src/plugins/projectexplorer/projectexplorer.pro +++ b/src/plugins/projectexplorer/projectexplorer.pro @@ -112,9 +112,7 @@ SOURCES += projectexplorer.cpp \ debugginghelper.cpp \ abstractmakestep.cpp \ projectexplorersettingspage.cpp -FORMS += dependenciespanel.ui \ - buildsettingspropertiespage.ui \ - processstep.ui \ +FORMS += processstep.ui \ editorsettingspropertiespage.ui \ runsettingspropertiespage.ui \ sessiondialog.ui \ diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp index 56b7b233b4b..4d5cf076a92 100644 --- a/src/plugins/projectexplorer/projectwindow.cpp +++ b/src/plugins/projectexplorer/projectwindow.cpp @@ -50,6 +50,7 @@ #include #include #include +#include using namespace ProjectExplorer; using namespace ProjectExplorer::Internal; @@ -58,6 +59,48 @@ namespace { bool debug = false; } +PanelsWidget::PanelsWidget(QWidget *parent) + : QScrollArea(parent) +{ + m_widget = new QWidget; + m_layout = new QVBoxLayout(m_widget); + + setWidgetResizable(true); + setFrameStyle(QFrame::NoFrame); + setWidget(m_widget); + +} + +PanelsWidget::~PanelsWidget() +{ + clear(); +} + +void PanelsWidget::addWidget(const QString &name, QWidget *widget) +{ + Panel p; + p.nameLabel = new QLabel(this); + p.nameLabel->setText(name); + QFont f = p.nameLabel->font(); + f.setBold(true); + f.setPointSizeF(f.pointSizeF() * 1.4); + p.nameLabel->setFont(f); + p.panelWidget = widget; + m_panels.append(p); + + m_layout->addWidget(p.nameLabel); + m_layout->addWidget(p.panelWidget); +} + +void PanelsWidget::clear() +{ + foreach(Panel p, m_panels) { + delete p.nameLabel; + delete p.panelWidget; + } + m_panels.clear(); +} + ProjectWindow::ProjectWindow(QWidget *parent) : QWidget(parent), m_currentItemChanged(false) { @@ -84,23 +127,7 @@ ProjectWindow::ProjectWindow(QWidget *parent) connect(m_treeWidget, SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem *)), this, SLOT(handleCurrentItemChanged(QTreeWidgetItem*))); - QWidget *panelsWidget = new QWidget; - m_panelsTabWidget = new QTabWidget; - m_panelsTabWidget->setDocumentMode(true); - QVBoxLayout *panelsLayout = new QVBoxLayout(panelsWidget); - - QWidget *marginWidget = new QWidget; - QVBoxLayout *marginLayout = new QVBoxLayout(marginWidget); - marginLayout->setContentsMargins(0, panelsLayout->margin(), 0, 0); - marginLayout->addWidget(m_panelsTabWidget); - - QScrollArea *scrollArea = new QScrollArea; - scrollArea->setWidgetResizable(true); - scrollArea->setFrameStyle(QFrame::NoFrame); - scrollArea->setWidget(marginWidget); - panelsLayout->setSpacing(0); - panelsLayout->setMargin(0); - panelsLayout->addWidget(scrollArea); + m_panelsWidget = new PanelsWidget(this); QWidget *dummy = new QWidget; QVBoxLayout *dummyLayout = new QVBoxLayout(dummy); @@ -112,9 +139,7 @@ ProjectWindow::ProjectWindow(QWidget *parent) QSplitter *splitter = new Core::MiniSplitter; splitter->setOrientation(Qt::Vertical); splitter->addWidget(dummy); - splitter->addWidget(panelsWidget); - - + splitter->addWidget(m_panelsWidget); // make sure that the tree treewidget has same size policy as qtabwidget m_treeWidget->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred)); @@ -146,20 +171,22 @@ void ProjectWindow::restoreStatus() m_treeWidget->setCurrentItem(m_treeWidget->topLevelItem(0), 0, QItemSelectionModel::SelectCurrent | QItemSelectionModel::Rows); } - const QVariant lastPanel = m_session->value(QLatin1String("ProjectWindow/Panel")); - if (lastPanel.isValid()) { - const int index = lastPanel.toInt(); - if (index < m_panelsTabWidget->count()) - m_panelsTabWidget->setCurrentIndex(index); - } - - if ((m_panelsTabWidget->currentIndex() == -1) && m_panelsTabWidget->count()) - m_panelsTabWidget->setCurrentIndex(0); + // TODO +// const QVariant lastPanel = m_session->value(QLatin1String("ProjectWindow/Panel")); +// if (lastPanel.isValid()) { +// const int index = lastPanel.toInt(); +// if (index < m_panelsTabWidget->count()) +// m_panelsTabWidget->setCurrentIndex(index); +// } +// +// if ((m_panelsTabWidget->currentIndex() == -1) && m_panelsTabWidget->count()) +// m_panelsTabWidget->setCurrentIndex(0); } void ProjectWindow::saveStatus() { - m_session->setValue(QLatin1String("ProjectWindow/Panel"), m_panelsTabWidget->currentIndex()); + // TODO +// m_session->setValue(QLatin1String("ProjectWindow/Panel"), m_panelsTabWidget->currentIndex()); } void ProjectWindow::showProperties(ProjectExplorer::Project *project, const QModelIndex & /* subIndex */) @@ -168,14 +195,7 @@ void ProjectWindow::showProperties(ProjectExplorer::Project *project, const QMod qDebug() << "ProjectWindow - showProperties called"; // Remove the tabs from the tab widget first - while (m_panelsTabWidget->count() > 0) - m_panelsTabWidget->removeTab(0); - - while (m_panels.count()) { - PropertiesPanel *panel = m_panels.at(0); - m_panels.removeOne(panel); - delete panel; - } + m_panelsWidget->clear(); if (project) { QList pages = @@ -185,9 +205,7 @@ void ProjectWindow::showProperties(ProjectExplorer::Project *project, const QMod PropertiesPanel *panel = panelFactory->createPanel(project); if (debug) qDebug() << "ProjectWindow - setting up project properties tab " << panel->name(); - - m_panels.append(panel); - m_panelsTabWidget->addTab(panel->widget(), panel->name()); + m_panelsWidget->addWidget(panel->name(), panel->widget()); } } } diff --git a/src/plugins/projectexplorer/projectwindow.h b/src/plugins/projectexplorer/projectwindow.h index 341c6b7f7e1..bae2b8b78b6 100644 --- a/src/plugins/projectexplorer/projectwindow.h +++ b/src/plugins/projectexplorer/projectwindow.h @@ -31,8 +31,11 @@ #define PROJECTWINDOW_H #include +#include QT_BEGIN_NAMESPACE +class QLabel; +class QVBoxLayout; class QModelIndex; class QTabWidget; class QTreeWidget; @@ -48,6 +51,29 @@ class SessionManager; namespace Internal { +class PanelsWidget : public QScrollArea +{ + Q_OBJECT +public: + PanelsWidget(QWidget *parent); + ~PanelsWidget(); + // Adds a widget + void addWidget(const QString &name, QWidget *widget); + + // Removes all widgets and deletes them + void clear(); +private: + + struct Panel + { + QLabel *nameLabel; + QWidget *panelWidget; + }; + QWidget *m_widget; + QVBoxLayout *m_layout; + QList m_panels; +}; + class ProjectWindow : public QWidget { Q_OBJECT @@ -74,9 +100,7 @@ private: ProjectExplorerPlugin *m_projectExplorer; QTreeWidget* m_treeWidget; - QTabWidget *m_panelsTabWidget; - - QList m_panels; + PanelsWidget *m_panelsWidget; Project *findProject(const QString &path) const; bool m_currentItemChanged; diff --git a/src/plugins/projectexplorer/runsettingspropertiespage.cpp b/src/plugins/projectexplorer/runsettingspropertiespage.cpp index d0c0b3702c5..3166e7da8de 100644 --- a/src/plugins/projectexplorer/runsettingspropertiespage.cpp +++ b/src/plugins/projectexplorer/runsettingspropertiespage.cpp @@ -181,7 +181,9 @@ RunSettingsWidget::RunSettingsWidget(Project *project) m_addMenu = new QMenu(m_ui->addToolButton); m_ui->addToolButton->setIcon(QIcon(Core::Constants::ICON_PLUS)); m_ui->addToolButton->setMenu(m_addMenu); + m_ui->addToolButton->setText(tr("Add")); m_ui->removeToolButton->setIcon(QIcon(Core::Constants::ICON_MINUS)); + m_ui->removeToolButton->setText(tr("Remove")); m_ui->runConfigurationCombo->setModel(m_runConfigurationsModel); m_ui->activeRunConfigurationCombo->setModel(m_enabledRunConfigurationsModel); diff --git a/src/plugins/projectexplorer/runsettingspropertiespage.ui b/src/plugins/projectexplorer/runsettingspropertiespage.ui index c83a5a7709c..2daaa3cfae3 100644 --- a/src/plugins/projectexplorer/runsettingspropertiespage.ui +++ b/src/plugins/projectexplorer/runsettingspropertiespage.ui @@ -6,70 +6,24 @@ 0 0 - 551 + 621 300 - + - - - - - - 0 - 0 - - - - Run &configuration: - - - runConfigurationCombo - - - - - - - - 500 - 16777215 - - - - QComboBox::AdjustToContents - - - 15 - - - - - - - + - - - QToolButton::InstantPopup - - - - - - - - - - - - + + + QFormLayout::ExpandingFieldsGrow + + Active run configuration: - + @@ -85,25 +39,62 @@ - - - - Qt::Horizontal + + + + + 0 + 0 + - - - 40 - 20 - + + Edit run configuration: - + + runConfigurationCombo + + + + + + + + + + 500 + 16777215 + + + + QComboBox::AdjustToContents + + + 15 + + + + + + + + + + + + + + + - + + + + - Settings + diff --git a/src/plugins/qt4projectmanager/makestep.cpp b/src/plugins/qt4projectmanager/makestep.cpp index 2b3d7aadd44..37501d873a8 100644 --- a/src/plugins/qt4projectmanager/makestep.cpp +++ b/src/plugins/qt4projectmanager/makestep.cpp @@ -185,8 +185,6 @@ void MakeStepConfigWidget::init(const QString &buildConfiguration) m_makeStep->setValue(buildConfiguration, "makeargs", QStringList() << "clean"); } - m_ui.stackedWidget->setCurrentIndex(1); - m_ui.makeLabel->setText(tr("Override %1:").arg(pro->makeCommand(buildConfiguration))); const QString &makeCmd = m_makeStep->value(buildConfiguration, "makeCmd").toString(); diff --git a/src/plugins/qt4projectmanager/makestep.ui b/src/plugins/qt4projectmanager/makestep.ui index 1a7189300be..f2007e7e398 100644 --- a/src/plugins/qt4projectmanager/makestep.ui +++ b/src/plugins/qt4projectmanager/makestep.ui @@ -6,71 +6,33 @@ 0 0 - 428 - 384 + 235 + 64 - - - 0 - - - - - 1 + + + + + Override %1: - - - - QFormLayout::ExpandingFieldsGrow - - - - - - - - - Override %1: - - - - - - - - - - Make arguments: - - - - - - - - - - Qt::Vertical - - - - 20 - 255 - - - - - - + + + + + + + Make arguments: + + + + + + - - makeLineEdit - makeArgumentsLineEdit - diff --git a/src/plugins/qt4projectmanager/qmakestep.cpp b/src/plugins/qt4projectmanager/qmakestep.cpp index 8ce0cef56a8..c9e315d21d0 100644 --- a/src/plugins/qt4projectmanager/qmakestep.cpp +++ b/src/plugins/qt4projectmanager/qmakestep.cpp @@ -256,16 +256,11 @@ QString QMakeStepConfigWidget::displayName() const void QMakeStepConfigWidget::init(const QString &buildConfiguration) { m_buildConfiguration = buildConfiguration; - if (buildConfiguration.isEmpty()){ - m_ui.stackedWidget->setCurrentWidget(m_ui.page_2); - } else { - m_ui.stackedWidget->setCurrentWidget(m_ui.page_1); - QString qmakeArgs = ProjectExplorer::Environment::joinArgumentList(m_step->value(buildConfiguration, "qmakeArgs").toStringList()); - m_ui.qmakeAdditonalArgumentsLineEdit->setText(qmakeArgs); - m_ui.qmakeArgumentsEdit->setPlainText(ProjectExplorer::Environment::joinArgumentList(m_step->arguments(buildConfiguration))); - bool debug = QtVersion::QmakeBuildConfig(m_step->value(buildConfiguration, "buildConfiguration").toInt()) & QtVersion::DebugBuild; - m_ui.buildConfigurationComboBox->setCurrentIndex(debug? 0 : 1); - } + QString qmakeArgs = ProjectExplorer::Environment::joinArgumentList(m_step->value(buildConfiguration, "qmakeArgs").toStringList()); + m_ui.qmakeAdditonalArgumentsLineEdit->setText(qmakeArgs); + m_ui.qmakeArgumentsEdit->setPlainText(ProjectExplorer::Environment::joinArgumentList(m_step->arguments(buildConfiguration))); + bool debug = QtVersion::QmakeBuildConfig(m_step->value(buildConfiguration, "buildConfiguration").toInt()) & QtVersion::DebugBuild; + m_ui.buildConfigurationComboBox->setCurrentIndex(debug? 0 : 1); } //// diff --git a/src/plugins/qt4projectmanager/qmakestep.ui b/src/plugins/qt4projectmanager/qmakestep.ui index a28baf6448f..abb882d7164 100644 --- a/src/plugins/qt4projectmanager/qmakestep.ui +++ b/src/plugins/qt4projectmanager/qmakestep.ui @@ -6,111 +6,66 @@ 0 0 - 414 - 442 + 436 + 187 - - - 0 - - - - - 0 + + + + + QMake Build Configuration: + + + + + + + + debug + + + + + release + + + + + + + + Additional arguments: + + + + + + + + + + Effective qmake call: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + + + false + + + + 16777215 + 120 + + + + Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - QMake Build Configuration: - - - - - - - - - - debug - - - - - release - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Additional arguments: - - - - - - - - - - Effective qmake call: - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - - - - - false - - - - 16777215 - 120 - - - - Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - Qt::Vertical - - - - 393 - 179 - - - - - - - diff --git a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp index 953f90a9ab9..9096a58c5c5 100644 --- a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp @@ -142,12 +142,12 @@ Qt4RunConfigurationWidget::Qt4RunConfigurationWidget(Qt4RunConfiguration *qt4Run boxlayout->addWidget(resetButton); toplayout->addRow(tr("Working Directory:"), boxlayout); - QLabel *argumentsLabel = new QLabel(tr("&Arguments:")); + QLabel *argumentsLabel = new QLabel(tr("Arguments:")); m_argumentsLineEdit = new QLineEdit(ProjectExplorer::Environment::joinArgumentList(qt4RunConfiguration->commandLineArguments())); argumentsLabel->setBuddy(m_argumentsLineEdit); toplayout->addRow(argumentsLabel, m_argumentsLineEdit); - m_useTerminalCheck = new QCheckBox(tr("Run in &Terminal")); + m_useTerminalCheck = new QCheckBox(tr("Run in Terminal")); m_useTerminalCheck->setChecked(m_qt4RunConfiguration->runMode() == ProjectExplorer::ApplicationRunConfiguration::Console); toplayout->addRow(QString(), m_useTerminalCheck);