forked from qt-creator/qt-creator
Readd editing of paths
The path can only be changed to a version that is of the same type. That should prevent a few interesting problems Change-Id: Ib9ddf4cfbeea7ac408ff7d177726005b90cf0205 Reviewed-on: http://codereview.qt.nokia.com/244 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com>
This commit is contained in:
@@ -70,6 +70,8 @@ private:
|
|||||||
bool checkVersionString(const QString &version) const;
|
bool checkVersionString(const QString &version) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
namespace Internal { class QtOptionsPageWidget; }
|
||||||
|
|
||||||
class QTSUPPORT_EXPORT QtConfigWidget : public QWidget
|
class QTSUPPORT_EXPORT QtConfigWidget : public QWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@@ -83,6 +85,7 @@ class QTSUPPORT_EXPORT BaseQtVersion
|
|||||||
{
|
{
|
||||||
friend class QtVersionFactory;
|
friend class QtVersionFactory;
|
||||||
friend class QtVersionManager;
|
friend class QtVersionManager;
|
||||||
|
friend class QtSupport::Internal::QtOptionsPageWidget;
|
||||||
public:
|
public:
|
||||||
virtual ~BaseQtVersion();
|
virtual ~BaseQtVersion();
|
||||||
|
|
||||||
@@ -219,6 +222,7 @@ private:
|
|||||||
QString findQtBinary(const QStringList &possibleName) const;
|
QString findQtBinary(const QStringList &possibleName) const;
|
||||||
void updateMkspec() const;
|
void updateMkspec() const;
|
||||||
void setId(int id); // used by the qtversionmanager for legacy restore
|
void setId(int id); // used by the qtversionmanager for legacy restore
|
||||||
|
// and by the qtoptionspage to replace qt versions
|
||||||
QString m_displayName;
|
QString m_displayName;
|
||||||
int m_id;
|
int m_id;
|
||||||
bool m_isAutodetected;
|
bool m_isAutodetected;
|
||||||
|
@@ -174,6 +174,9 @@ QtOptionsPageWidget::QtOptionsPageWidget(QWidget *parent, QList<BaseQtVersion *>
|
|||||||
connect(m_versionUi->nameEdit, SIGNAL(textEdited(const QString &)),
|
connect(m_versionUi->nameEdit, SIGNAL(textEdited(const QString &)),
|
||||||
this, SLOT(updateCurrentQtName()));
|
this, SLOT(updateCurrentQtName()));
|
||||||
|
|
||||||
|
connect(m_versionUi->editPathPushButton, SIGNAL(clicked()),
|
||||||
|
this, SLOT(editPath()));
|
||||||
|
|
||||||
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()),
|
||||||
@@ -434,16 +437,21 @@ QtOptionsPageWidget::~QtOptionsPageWidget()
|
|||||||
qDeleteAll(m_versions);
|
qDeleteAll(m_versions);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QtOptionsPageWidget::addQtDir()
|
static QString filterForQmakeFileDialog()
|
||||||
{
|
{
|
||||||
QString filter("qmake (");
|
QString filter("qmake (");
|
||||||
foreach (const QString &s, Utils::BuildableHelperLibrary::possibleQMakeCommands()) {
|
foreach (const QString &s, Utils::BuildableHelperLibrary::possibleQMakeCommands()) {
|
||||||
filter += s + " ";
|
filter += s + " ";
|
||||||
}
|
}
|
||||||
filter += ")";
|
filter += ")";
|
||||||
|
return filter;
|
||||||
|
}
|
||||||
|
|
||||||
|
void QtOptionsPageWidget::addQtDir()
|
||||||
|
{
|
||||||
QString qtVersion = QFileDialog::getOpenFileName(this,
|
QString qtVersion = QFileDialog::getOpenFileName(this,
|
||||||
tr("Select a qmake executable"), QString(), filter);
|
tr("Select a qmake executable"),
|
||||||
|
QString(), filterForQmakeFileDialog());
|
||||||
if (qtVersion.isNull())
|
if (qtVersion.isNull())
|
||||||
return;
|
return;
|
||||||
if (QtVersionManager::instance()->qtVersionForQMakeBinary(qtVersion)) {
|
if (QtVersionManager::instance()->qtVersionForQMakeBinary(qtVersion)) {
|
||||||
@@ -481,6 +489,39 @@ void QtOptionsPageWidget::removeQtDir()
|
|||||||
updateCleanUpButton();
|
updateCleanUpButton();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QtOptionsPageWidget::editPath()
|
||||||
|
{
|
||||||
|
// TODO Here be dragons
|
||||||
|
QString qtVersion = QFileDialog::getOpenFileName(this,
|
||||||
|
tr("Select a qmake executable"),
|
||||||
|
QString(), filterForQmakeFileDialog());
|
||||||
|
if (qtVersion.isNull())
|
||||||
|
return;
|
||||||
|
BaseQtVersion *version = QtVersionFactory::createQtVersionFromQMakePath(qtVersion);
|
||||||
|
BaseQtVersion *current = currentVersion();
|
||||||
|
// Same type? then replace!
|
||||||
|
if (current->type() != version->type()) {
|
||||||
|
// not the same type, error out
|
||||||
|
QMessageBox::critical(this, tr("Qt versions incompatible"),
|
||||||
|
tr("The qt version selected must be for the same target."),
|
||||||
|
QMessageBox::Ok);
|
||||||
|
delete version;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// same type, replace
|
||||||
|
version->setId(current->uniqueId());
|
||||||
|
m_versions.replace(m_versions.indexOf(current), version);
|
||||||
|
delete current;
|
||||||
|
|
||||||
|
// Update ui
|
||||||
|
userChangedCurrentVersion();
|
||||||
|
QTreeWidgetItem *item = m_ui->qtdirList->currentItem();
|
||||||
|
item->setText(0, version->displayName());
|
||||||
|
item->setText(1, QDir::toNativeSeparators(version->qmakeCommand()));
|
||||||
|
item->setData(0, VersionIdRole, version->uniqueId());
|
||||||
|
item->setIcon(0, version->isValid()? m_validVersionIcon : m_invalidVersionIcon);
|
||||||
|
}
|
||||||
|
|
||||||
void QtOptionsPageWidget::updateDebuggingHelperUi()
|
void QtOptionsPageWidget::updateDebuggingHelperUi()
|
||||||
{
|
{
|
||||||
BaseQtVersion *version = currentVersion();
|
BaseQtVersion *version = currentVersion();
|
||||||
@@ -748,6 +789,7 @@ void QtOptionsPageWidget::updateWidgets()
|
|||||||
const bool isAutodetected = enabled && version->isAutodetected();
|
const bool isAutodetected = enabled && version->isAutodetected();
|
||||||
m_ui->delButton->setEnabled(enabled && !isAutodetected);
|
m_ui->delButton->setEnabled(enabled && !isAutodetected);
|
||||||
m_versionUi->nameEdit->setEnabled(enabled && !isAutodetected);
|
m_versionUi->nameEdit->setEnabled(enabled && !isAutodetected);
|
||||||
|
m_versionUi->editPathPushButton->setEnabled(enabled && !isAutodetected);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QtOptionsPageWidget::updateCurrentQtName()
|
void QtOptionsPageWidget::updateCurrentQtName()
|
||||||
|
@@ -96,6 +96,7 @@ private slots:
|
|||||||
void versionChanged(QTreeWidgetItem *item, QTreeWidgetItem *old);
|
void versionChanged(QTreeWidgetItem *item, QTreeWidgetItem *old);
|
||||||
void addQtDir();
|
void addQtDir();
|
||||||
void removeQtDir();
|
void removeQtDir();
|
||||||
|
void editPath();
|
||||||
void updateCleanUpButton();
|
void updateCleanUpButton();
|
||||||
void updateCurrentQtName();
|
void updateCurrentQtName();
|
||||||
void buildDebuggingHelper(DebuggingHelperBuildTask::Tools tools
|
void buildDebuggingHelper(DebuggingHelperBuildTask::Tools tools
|
||||||
|
@@ -6,8 +6,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>222</width>
|
<width>392</width>
|
||||||
<height>70</height>
|
<height>87</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QFormLayout" name="formLayout">
|
<layout class="QFormLayout" name="formLayout">
|
||||||
@@ -29,16 +29,33 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="1">
|
<item row="1" column="1">
|
||||||
<widget class="QLabel" name="qmakePath">
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
<property name="text">
|
<item>
|
||||||
<string/>
|
<widget class="QLabel" name="qmakePath">
|
||||||
</property>
|
<property name="sizePolicy">
|
||||||
<property name="textInteractionFlags">
|
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||||
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
<horstretch>0</horstretch>
|
||||||
</property>
|
<verstretch>0</verstretch>
|
||||||
</widget>
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="editPathPushButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Edit</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="0" colspan="2">
|
<item row="2" column="0">
|
||||||
<widget class="QLabel" name="errorLabel">
|
<widget class="QLabel" name="errorLabel">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
|
Reference in New Issue
Block a user