BUG: Fix behavior of CMakeSetupDialog::set{Binary|Source}Directory
so they work right when called externally. Disable the generate button when one hits configure again. ENH: Some UI tweaks for spacing. Allow viewing cache values while configure/generate (but not edit).
This commit is contained in:
parent
696a016444
commit
31d4280bf3
|
@ -162,10 +162,9 @@ void CMakeSetupDialog::initialize()
|
|||
this, SLOT(doBinaryBrowse()));
|
||||
|
||||
QObject::connect(this->BinaryDirectory, SIGNAL(editTextChanged(QString)),
|
||||
this, SLOT(setBinaryDirectory(QString)));
|
||||
this, SLOT(onBinaryDirectoryChanged(QString)));
|
||||
QObject::connect(this->SourceDirectory, SIGNAL(textChanged(QString)),
|
||||
this->CMakeThread->cmakeInstance(),
|
||||
SLOT(setSourceDirectory(QString)));
|
||||
this, SLOT(onSourceDirectoryChanged(QString)));
|
||||
|
||||
QObject::connect(this->CMakeThread->cmakeInstance(),
|
||||
SIGNAL(sourceDirChanged(QString)),
|
||||
|
@ -207,7 +206,20 @@ void CMakeSetupDialog::initialize()
|
|||
|
||||
// get the saved binary directories
|
||||
QStringList buildPaths = this->loadBuildPaths();
|
||||
this->BinaryDirectory->blockSignals(true);
|
||||
this->BinaryDirectory->addItems(buildPaths);
|
||||
this->BinaryDirectory->blockSignals(false);
|
||||
|
||||
if(!this->SourceDirectory->text().isEmpty() ||
|
||||
!this->BinaryDirectory->lineEdit()->text().isEmpty())
|
||||
{
|
||||
this->onSourceDirectoryChanged(this->SourceDirectory->text());
|
||||
this->onBinaryDirectoryChanged(this->BinaryDirectory->lineEdit()->text());
|
||||
}
|
||||
else
|
||||
{
|
||||
this->onBinaryDirectoryChanged(this->BinaryDirectory->lineEdit()->text());
|
||||
}
|
||||
}
|
||||
|
||||
CMakeSetupDialog::~CMakeSetupDialog()
|
||||
|
@ -251,9 +263,11 @@ void CMakeSetupDialog::doConfigure()
|
|||
|
||||
// remember path
|
||||
this->addBinaryPath(dir.absolutePath());
|
||||
|
||||
|
||||
this->InterruptButton->setEnabled(true);
|
||||
this->setEnabledState(false);
|
||||
this->setGenerateEnabled(false);
|
||||
|
||||
this->Output->clear();
|
||||
QMetaObject::invokeMethod(this->CMakeThread->cmakeInstance(),
|
||||
"setProperties", Qt::QueuedConnection,
|
||||
|
@ -405,10 +419,20 @@ void CMakeSetupDialog::doBinaryBrowse()
|
|||
}
|
||||
|
||||
void CMakeSetupDialog::setBinaryDirectory(const QString& dir)
|
||||
{
|
||||
this->BinaryDirectory->setEditText(dir);
|
||||
}
|
||||
|
||||
void CMakeSetupDialog::onSourceDirectoryChanged(const QString& dir)
|
||||
{
|
||||
QMetaObject::invokeMethod(this->CMakeThread->cmakeInstance(),
|
||||
"setSourceDirectory", Qt::QueuedConnection, Q_ARG(QString, dir));
|
||||
}
|
||||
|
||||
void CMakeSetupDialog::onBinaryDirectoryChanged(const QString& dir)
|
||||
{
|
||||
this->CacheValues->cacheModel()->clear();
|
||||
this->Output->clear();
|
||||
this->BinaryDirectory->setEditText(dir);
|
||||
QMetaObject::invokeMethod(this->CMakeThread->cmakeInstance(),
|
||||
"setBinaryDirectory", Qt::QueuedConnection, Q_ARG(QString, dir));
|
||||
}
|
||||
|
@ -441,7 +465,7 @@ void CMakeSetupDialog::error(const QString& title, const QString& message,
|
|||
void CMakeSetupDialog::setEnabledState(bool enabled)
|
||||
{
|
||||
// disable parts of the GUI during configure/generate
|
||||
this->CacheValues->setEnabled(enabled);
|
||||
this->CacheValues->cacheModel()->setEditEnabled(enabled);
|
||||
this->SourceDirectory->setEnabled(enabled);
|
||||
this->BrowseSourceDirectoryButton->setEnabled(enabled);
|
||||
this->BinaryDirectory->setEnabled(enabled);
|
||||
|
|
|
@ -66,6 +66,8 @@ protected slots:
|
|||
void addBinaryPath(const QString&);
|
||||
QStringList loadBuildPaths();
|
||||
void saveBuildPaths(const QStringList&);
|
||||
void onBinaryDirectoryChanged(const QString& dir);
|
||||
void onSourceDirectoryChanged(const QString& dir);
|
||||
|
||||
protected:
|
||||
void closeEvent(QCloseEvent*);
|
||||
|
|
|
@ -67,6 +67,22 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer>
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType" >
|
||||
<enum>QSizePolicy::Minimum</enum>
|
||||
</property>
|
||||
<property name="sizeHint" >
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_4" >
|
||||
<property name="sizePolicy" >
|
||||
|
|
|
@ -124,7 +124,8 @@ void QCMakeCacheView::setSearchFilter(const QString& s)
|
|||
}
|
||||
|
||||
QCMakeCacheModel::QCMakeCacheModel(QObject* p)
|
||||
: QAbstractTableModel(p), NewCount(0), ModifiedValues(false)
|
||||
: QAbstractTableModel(p),
|
||||
NewCount(0), ModifiedValues(false), EditEnabled(true)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -173,6 +174,16 @@ QCMakeCachePropertyList QCMakeCacheModel::properties() const
|
|||
return this->Properties;
|
||||
}
|
||||
|
||||
void QCMakeCacheModel::setEditEnabled(bool e)
|
||||
{
|
||||
this->EditEnabled = e;
|
||||
}
|
||||
|
||||
bool QCMakeCacheModel::editEnabled() const
|
||||
{
|
||||
return this->EditEnabled;
|
||||
}
|
||||
|
||||
int QCMakeCacheModel::columnCount (const QModelIndex& /*p*/ ) const
|
||||
{
|
||||
return 2;
|
||||
|
@ -250,7 +261,7 @@ Qt::ItemFlags QCMakeCacheModel::flags (const QModelIndex& idx) const
|
|||
{
|
||||
Qt::ItemFlags f = Qt::ItemIsEnabled | Qt::ItemIsSelectable;
|
||||
// all column 1's are editable
|
||||
if(idx.column() == 1)
|
||||
if(idx.column() == 1 && this->EditEnabled)
|
||||
{
|
||||
f |= Qt::ItemIsEditable;
|
||||
// booleans are editable in place
|
||||
|
|
|
@ -65,6 +65,7 @@ public:
|
|||
public slots:
|
||||
void setProperties(const QCMakeCachePropertyList& props);
|
||||
void clear();
|
||||
void setEditEnabled(bool);
|
||||
|
||||
public:
|
||||
// satisfy [pure] virtuals
|
||||
|
@ -80,11 +81,15 @@ public:
|
|||
bool modifiedValues() const;
|
||||
// get the properties
|
||||
QCMakeCachePropertyList properties() const;
|
||||
|
||||
// editing enabled
|
||||
bool editEnabled() const;
|
||||
|
||||
protected:
|
||||
QCMakeCachePropertyList Properties;
|
||||
int NewCount;
|
||||
bool ModifiedValues;
|
||||
bool EditEnabled;
|
||||
};
|
||||
|
||||
/// Qt delegate class for interaction (or other customization)
|
||||
|
|
Loading…
Reference in New Issue