PathChooser migration for Qt version config page

This commit is contained in:
goro
2008-12-19 15:32:21 +01:00
parent 02c23836dd
commit cb7bb2eefe
5 changed files with 62 additions and 90 deletions

View File

@@ -167,13 +167,15 @@ void PathChooser::slotBrowse()
; ;
} }
// TODO make cross-platform // Delete trailing slashes unless it is "/"|"\\", only
// Delete trailing slashes unless it is "/", only
if (!newPath.isEmpty()) { if (!newPath.isEmpty()) {
newPath = QDir::toNativeSeparators(newPath);
if (newPath.size() > 1 && newPath.endsWith(QDir::separator())) if (newPath.size() > 1 && newPath.endsWith(QDir::separator()))
newPath.truncate(newPath.size() - 1); newPath.truncate(newPath.size() - 1);
setPath(newPath); setPath(newPath);
} }
emit browsingFinished();
} }
bool PathChooser::isValid() const bool PathChooser::isValid() const

View File

@@ -91,6 +91,7 @@ private:
signals: signals:
void validChanged(); void validChanged();
void changed(); void changed();
void browsingFinished();
void returnPressed(); void returnPressed();
public slots: public slots:

View File

@@ -368,6 +368,10 @@ QtDirWidget::QtDirWidget(QWidget *parent, QList<QtVersion *> versions, int defau
, m_specifyPathString(tr("<specify a path>")) , m_specifyPathString(tr("<specify a path>"))
{ {
m_ui.setupUi(this); m_ui.setupUi(this);
m_ui.qtPath->setExpectedKind(Core::Utils::PathChooser::Directory);
m_ui.qtPath->setPromptDialogTitle(tr("Select QTDIR"));
m_ui.mingwPath->setExpectedKind(Core::Utils::PathChooser::Directory);
m_ui.qtPath->setPromptDialogTitle(tr("Select MinGW Directory"));
m_ui.addButton->setIcon(QIcon(Core::Constants::ICON_PLUS)); m_ui.addButton->setIcon(QIcon(Core::Constants::ICON_PLUS));
m_ui.delButton->setIcon(QIcon(Core::Constants::ICON_MINUS)); m_ui.delButton->setIcon(QIcon(Core::Constants::ICON_MINUS));
@@ -385,19 +389,22 @@ QtDirWidget::QtDirWidget(QWidget *parent, QList<QtVersion *> versions, int defau
connect(m_ui.nameEdit, SIGNAL(textEdited(const QString &)), connect(m_ui.nameEdit, SIGNAL(textEdited(const QString &)),
this, SLOT(updateCurrentQtName())); this, SLOT(updateCurrentQtName()));
connect(m_ui.pathEdit, SIGNAL(textEdited(const QString &)),
connect(m_ui.qtPath, SIGNAL(changed()),
this, SLOT(updateCurrentQtPath())); this, SLOT(updateCurrentQtPath()));
connect(m_ui.mingwLineEdit, SIGNAL(textEdited(const QString &)), connect(m_ui.mingwPath, SIGNAL(changed()),
this, SLOT(updateCurrentMingwDirectory())); this, SLOT(updateCurrentMingwDirectory()));
connect(m_ui.addButton, SIGNAL(clicked()), connect(m_ui.addButton, SIGNAL(clicked()),
this, SLOT(addQtDir())); this, SLOT(addQtDir()));
connect(m_ui.delButton, SIGNAL(clicked()), connect(m_ui.delButton, SIGNAL(clicked()),
this, SLOT(removeQtDir())); this, SLOT(removeQtDir()));
connect(m_ui.browseButton, SIGNAL(clicked()),
this, SLOT(browse())); connect(m_ui.qtPath, SIGNAL(browsingFinished()),
connect(m_ui.mingwBrowseButton, SIGNAL(clicked()), this, SLOT(onQtBrowsed()));
this, SLOT(mingwBrowse())); connect(m_ui.mingwPath, SIGNAL(browsingFinished()),
this, SLOT(onMingwBrowsed()));
connect(m_ui.qtdirList, SIGNAL(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)), connect(m_ui.qtdirList, SIGNAL(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)),
this, SLOT(versionChanged(QTreeWidgetItem *, QTreeWidgetItem *))); this, SLOT(versionChanged(QTreeWidgetItem *, QTreeWidgetItem *)));
@@ -421,11 +428,11 @@ void QtDirWidget::addQtDir()
item->setText(1, newVersion->path()); item->setText(1, newVersion->path());
item->setData(0, Qt::UserRole, newVersion->uniqueId()); item->setData(0, Qt::UserRole, newVersion->uniqueId());
m_ui.nameEdit->setText(newVersion->name());
m_ui.pathEdit->setText(newVersion->path());
m_ui.defaultCombo->addItem(newVersion->name());
m_ui.qtdirList->setCurrentItem(item); m_ui.qtdirList->setCurrentItem(item);
m_ui.nameEdit->setText(newVersion->name());
m_ui.qtPath->setPath(newVersion->path());
m_ui.defaultCombo->addItem(newVersion->name());
m_ui.nameEdit->setFocus(); m_ui.nameEdit->setFocus();
m_ui.nameEdit->selectAll(); m_ui.nameEdit->selectAll();
} }
@@ -459,10 +466,14 @@ void QtDirWidget::updateState()
&& m_versions.at(m_ui.qtdirList->indexOfTopLevelItem(m_ui.qtdirList->currentItem()))->isSystemVersion()); && m_versions.at(m_ui.qtdirList->indexOfTopLevelItem(m_ui.qtdirList->currentItem()))->isSystemVersion());
m_ui.delButton->setEnabled(enabled && !isSystemVersion); m_ui.delButton->setEnabled(enabled && !isSystemVersion);
m_ui.nameEdit->setEnabled(enabled && !isSystemVersion); m_ui.nameEdit->setEnabled(enabled && !isSystemVersion);
m_ui.pathEdit->setEnabled(enabled && !isSystemVersion); m_ui.qtPath->setEnabled(enabled && !isSystemVersion);
m_ui.browseButton->setEnabled(enabled && !isSystemVersion); m_ui.mingwPath->setEnabled(enabled);
m_ui.mingwBrowseButton->setEnabled(enabled); }
m_ui.mingwLineEdit->setEnabled(enabled);
void QtDirWidget::makeMingwVisible(bool visible)
{
m_ui.mingwLabel->setVisible(visible);
m_ui.mingwPath->setVisible(visible);
} }
void QtDirWidget::showEnvironmentPage(QTreeWidgetItem *item) void QtDirWidget::showEnvironmentPage(QTreeWidgetItem *item)
@@ -475,16 +486,12 @@ void QtDirWidget::showEnvironmentPage(QTreeWidgetItem *item)
if (t == QtVersion::MinGW) { if (t == QtVersion::MinGW) {
m_ui.msvcComboBox->setVisible(false); m_ui.msvcComboBox->setVisible(false);
m_ui.msvcLabel->setVisible(false); m_ui.msvcLabel->setVisible(false);
m_ui.mingwLineEdit->setVisible(true); makeMingwVisible(true);
m_ui.mingwLabel->setVisible(true); m_ui.mingwPath->setPath(m_versions.at(index)->mingwDirectory());
m_ui.mingwBrowseButton->setVisible(true);
m_ui.mingwLineEdit->setText(m_versions.at(index)->mingwDirectory());
} else if (t == QtVersion::MSVC || t == QtVersion::WINCE){ } else if (t == QtVersion::MSVC || t == QtVersion::WINCE){
m_ui.msvcComboBox->setVisible(false); m_ui.msvcComboBox->setVisible(false);
m_ui.msvcLabel->setVisible(true); m_ui.msvcLabel->setVisible(true);
m_ui.mingwLineEdit->setVisible(false); makeMingwVisible(false);
m_ui.mingwLabel->setVisible(false);
m_ui.mingwBrowseButton->setVisible(false);
QList<MSVCEnvironment> msvcenvironments = MSVCEnvironment::availableVersions(); QList<MSVCEnvironment> msvcenvironments = MSVCEnvironment::availableVersions();
if (msvcenvironments.count() == 0) { if (msvcenvironments.count() == 0) {
m_ui.msvcLabel->setText(tr("No Visual Studio Installation found")); m_ui.msvcLabel->setText(tr("No Visual Studio Installation found"));
@@ -506,9 +513,7 @@ void QtDirWidget::showEnvironmentPage(QTreeWidgetItem *item)
} else if (t == QtVersion::INVALID) { } else if (t == QtVersion::INVALID) {
m_ui.msvcComboBox->setVisible(false); m_ui.msvcComboBox->setVisible(false);
m_ui.msvcLabel->setVisible(false); m_ui.msvcLabel->setVisible(false);
m_ui.mingwLineEdit->setVisible(false); makeMingwVisible(false);
m_ui.mingwLabel->setVisible(false);
m_ui.mingwBrowseButton->setVisible(false);
if (!m_versions.at(index)->isInstalled()) if (!m_versions.at(index)->isInstalled())
m_ui.errorLabel->setText(tr("The Qt Version is not installed. Run make install") m_ui.errorLabel->setText(tr("The Qt Version is not installed. Run make install")
.arg(m_versions.at(index)->path())); .arg(m_versions.at(index)->path()));
@@ -517,9 +522,7 @@ void QtDirWidget::showEnvironmentPage(QTreeWidgetItem *item)
} else { //QtVersion::Other } else { //QtVersion::Other
m_ui.msvcComboBox->setVisible(false); m_ui.msvcComboBox->setVisible(false);
m_ui.msvcLabel->setVisible(false); m_ui.msvcLabel->setVisible(false);
m_ui.mingwLineEdit->setVisible(false); makeMingwVisible(false);
m_ui.mingwLabel->setVisible(false);
m_ui.mingwBrowseButton->setVisible(false);
m_ui.errorLabel->setText("Found Qt version " m_ui.errorLabel->setText("Found Qt version "
+ m_versions.at(index)->qtVersionString() + m_versions.at(index)->qtVersionString()
+ " using mkspec " + " using mkspec "
@@ -528,9 +531,7 @@ void QtDirWidget::showEnvironmentPage(QTreeWidgetItem *item)
} else { } else {
m_ui.msvcComboBox->setVisible(false); m_ui.msvcComboBox->setVisible(false);
m_ui.msvcLabel->setVisible(false); m_ui.msvcLabel->setVisible(false);
m_ui.mingwLineEdit->setVisible(false); makeMingwVisible(false);
m_ui.mingwLabel->setVisible(false);
m_ui.mingwBrowseButton->setVisible(false);
} }
} }
@@ -541,24 +542,21 @@ void QtDirWidget::versionChanged(QTreeWidgetItem *item, QTreeWidgetItem *old)
} }
if (item) { if (item) {
m_ui.nameEdit->setText(item->text(0)); m_ui.nameEdit->setText(item->text(0));
m_ui.pathEdit->setText(item->text(1)); m_ui.qtPath->setPath(item->text(1));
} else { } else {
m_ui.nameEdit->clear(); m_ui.nameEdit->clear();
m_ui.pathEdit->clear(); m_ui.qtPath->setPath(""); // clear()
} }
showEnvironmentPage(item); showEnvironmentPage(item);
updateState(); updateState();
} }
void QtDirWidget::browse() void QtDirWidget::onQtBrowsed()
{ {
QString dir = QFileDialog::getExistingDirectory(this, tr("Select QTDIR")); const QString dir = m_ui.qtPath->path();
if (dir.isEmpty()) if (dir.isEmpty())
return; return;
dir = QDir::toNativeSeparators(dir);
m_ui.pathEdit->setText(dir);
updateCurrentQtPath(); updateCurrentQtPath();
if (m_ui.nameEdit->text().isEmpty() || m_ui.nameEdit->text() == m_specifyNameString) { if (m_ui.nameEdit->text().isEmpty() || m_ui.nameEdit->text() == m_specifyNameString) {
QStringList dirSegments = dir.split(QDir::separator(), QString::SkipEmptyParts); QStringList dirSegments = dir.split(QDir::separator(), QString::SkipEmptyParts);
@@ -569,14 +567,12 @@ void QtDirWidget::browse()
updateState(); updateState();
} }
void QtDirWidget::mingwBrowse() void QtDirWidget::onMingwBrowsed()
{ {
QString dir = QFileDialog::getExistingDirectory(this, tr("Select MinGW Directory")); const QString dir = m_ui.mingwPath->path();
if (dir.isEmpty()) if (dir.isEmpty())
return; return;
dir = QDir::toNativeSeparators(dir);
m_ui.mingwLineEdit->setText(dir);
updateCurrentMingwDirectory(); updateCurrentMingwDirectory();
updateState(); updateState();
} }
@@ -647,7 +643,7 @@ void QtDirWidget::updateCurrentQtPath()
QTreeWidgetItem *currentItem = m_ui.qtdirList->currentItem(); QTreeWidgetItem *currentItem = m_ui.qtdirList->currentItem();
Q_ASSERT(currentItem); Q_ASSERT(currentItem);
int currentItemIndex = m_ui.qtdirList->indexOfTopLevelItem(currentItem); int currentItemIndex = m_ui.qtdirList->indexOfTopLevelItem(currentItem);
m_versions[currentItemIndex]->setPath(m_ui.pathEdit->text()); m_versions[currentItemIndex]->setPath(m_ui.qtPath->path());
currentItem->setText(1, m_versions[currentItemIndex]->path()); currentItem->setText(1, m_versions[currentItemIndex]->path());
showEnvironmentPage(currentItem); showEnvironmentPage(currentItem);
@@ -658,7 +654,7 @@ void QtDirWidget::updateCurrentMingwDirectory()
QTreeWidgetItem *currentItem = m_ui.qtdirList->currentItem(); QTreeWidgetItem *currentItem = m_ui.qtdirList->currentItem();
Q_ASSERT(currentItem); Q_ASSERT(currentItem);
int currentItemIndex = m_ui.qtdirList->indexOfTopLevelItem(currentItem); int currentItemIndex = m_ui.qtdirList->indexOfTopLevelItem(currentItem);
m_versions[currentItemIndex]->setMingwDirectory(m_ui.mingwLineEdit->text()); m_versions[currentItemIndex]->setMingwDirectory(m_ui.mingwPath->path());
} }
void QtDirWidget::msvcVersionChanged() void QtDirWidget::msvcVersionChanged()

View File

@@ -149,8 +149,9 @@ private slots:
void addQtDir(); void addQtDir();
void removeQtDir(); void removeQtDir();
void updateState(); void updateState();
void browse(); void makeMingwVisible(bool visible);
void mingwBrowse(); void onQtBrowsed();
void onMingwBrowsed();
void defaultChanged(int index); void defaultChanged(int index);
void updateCurrentQtName(); void updateCurrentQtName();
void updateCurrentQtPath(); void updateCurrentQtPath();

View File

@@ -109,16 +109,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="1">
<widget class="QLineEdit" name="pathEdit"/>
</item>
<item row="2" column="2">
<widget class="QToolButton" name="browseButton">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item row="3" column="0"> <item row="3" column="0">
<widget class="QLabel" name="mingwLabel"> <widget class="QLabel" name="mingwLabel">
<property name="text"> <property name="text">
@@ -126,16 +116,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="1">
<widget class="QLineEdit" name="mingwLineEdit"/>
</item>
<item row="3" column="2">
<widget class="QToolButton" name="mingwBrowseButton">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item row="4" column="0" colspan="3"> <item row="4" column="0" colspan="3">
<widget class="QLabel" name="msvcLabel"> <widget class="QLabel" name="msvcLabel">
<property name="text"> <property name="text">
@@ -153,6 +133,12 @@
<item row="5" column="1" colspan="2"> <item row="5" column="1" colspan="2">
<widget class="QComboBox" name="msvcComboBox"/> <widget class="QComboBox" name="msvcComboBox"/>
</item> </item>
<item row="2" column="1" colspan="2">
<widget class="Core::Utils::PathChooser" name="qtPath" native="true"/>
</item>
<item row="3" column="1" colspan="2">
<widget class="Core::Utils::PathChooser" name="mingwPath" native="true"/>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>
@@ -179,34 +165,20 @@
</item> </item>
</layout> </layout>
</widget> </widget>
<customwidgets>
<customwidget>
<class>Core::Utils::PathChooser</class>
<extends>QWidget</extends>
<header location="global">utils/pathchooser.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<tabstops> <tabstops>
<tabstop>qtdirList</tabstop> <tabstop>qtdirList</tabstop>
<tabstop>delButton</tabstop> <tabstop>delButton</tabstop>
<tabstop>nameEdit</tabstop> <tabstop>nameEdit</tabstop>
<tabstop>pathEdit</tabstop>
<tabstop>defaultCombo</tabstop> <tabstop>defaultCombo</tabstop>
<tabstop>browseButton</tabstop>
</tabstops> </tabstops>
<resources> <resources/>
<include location="../../libs/cplusplus/cplusplus.qrc"/>
<include location="../../libs/extensionsystem/pluginview.qrc"/>
<include location="../bookmarks/bookmarks.qrc"/>
<include location="../coreplugin/core.qrc"/>
<include location="../coreplugin/fancyactionbar.qrc"/>
<include location="../cppeditor/cppeditor.qrc"/>
<include location="../cpptools/cpptools.qrc"/>
<include location="../designer/designer.qrc"/>
<include location="../find/find.qrc"/>
<include location="../gdbdebugger/gdbdebugger.qrc"/>
<include location="../help/help.qrc"/>
<include location="../perforce/perforce.qrc"/>
<include location="../projectexplorer/projectexplorer.qrc"/>
<include location="../../../shared/proparser/proparser.qrc"/>
<include location="qt4projectmanager.qrc"/>
<include location="wizards/wizards.qrc"/>
<include location="../quickopen/quickopen.qrc"/>
<include location="../resourceeditor/resourceeditor.qrc"/>
<include location="../texteditor/texteditor.qrc"/>
</resources>
<connections/> <connections/>
</ui> </ui>