summaryrefslogtreecommitdiffstats
path: root/Source/QtDialog
diff options
context:
space:
mode:
authorClinton Stimpson <clinton@elemtech.com>2007-11-10 16:36:09 (GMT)
committerClinton Stimpson <clinton@elemtech.com>2007-11-10 16:36:09 (GMT)
commit5a539b731bbc5ee4afb01a34976988a394ee42b4 (patch)
tree9071c0f8d9075a8dfd4f4cc1370d79da2cf0b086 /Source/QtDialog
parent34c882a9f8b45350ba8d56d79a94e1602694ef8f (diff)
downloadCMake-5a539b731bbc5ee4afb01a34976988a394ee42b4.zip
CMake-5a539b731bbc5ee4afb01a34976988a394ee42b4.tar.gz
CMake-5a539b731bbc5ee4afb01a34976988a394ee42b4.tar.bz2
ENH: Re-arrange UI a bit.
BUG: Properly update when values that changed since the last configure.
Diffstat (limited to 'Source/QtDialog')
-rw-r--r--Source/QtDialog/CMakeSetup.qrc1
-rw-r--r--Source/QtDialog/CMakeSetupDialog.cxx40
-rw-r--r--Source/QtDialog/CMakeSetupDialog.h2
-rw-r--r--Source/QtDialog/CMakeSetupDialog.ui330
-rw-r--r--Source/QtDialog/Delete16.pngbin0 -> 731 bytes
-rw-r--r--Source/QtDialog/QCMakeCacheView.cxx99
-rw-r--r--Source/QtDialog/QCMakeCacheView.h1
7 files changed, 227 insertions, 246 deletions
diff --git a/Source/QtDialog/CMakeSetup.qrc b/Source/QtDialog/CMakeSetup.qrc
index 88d6340..a4031d3 100644
--- a/Source/QtDialog/CMakeSetup.qrc
+++ b/Source/QtDialog/CMakeSetup.qrc
@@ -1,5 +1,6 @@
<RCC>
<qresource prefix="/Icons" >
<file>CMakeSetup.png</file>
+ <file>Delete16.png</file>
</qresource>
</RCC>
diff --git a/Source/QtDialog/CMakeSetupDialog.cxx b/Source/QtDialog/CMakeSetupDialog.cxx
index 62f3c37..b3a093a 100644
--- a/Source/QtDialog/CMakeSetupDialog.cxx
+++ b/Source/QtDialog/CMakeSetupDialog.cxx
@@ -83,6 +83,8 @@ CMakeSetupDialog::CMakeSetupDialog()
this->ProgressBar->reset();
this->InterruptButton->setIcon(
this->style()->standardPixmap(QStyle::SP_DialogCancelButton));
+ this->InterruptButton->setEnabled(false);
+ this->RemoveEntry->setEnabled(false);
QMenu* FileMenu = this->menuBar()->addMenu(tr("&File"));
this->ReloadCacheAction = FileMenu->addAction(tr("&Reload Cache"));
@@ -190,13 +192,15 @@ void CMakeSetupDialog::initialize()
this, SLOT(updateGeneratorLabel(QString)));
this->updateGeneratorLabel(QString());
- QObject::connect(this->DeleteCacheButton, SIGNAL(clicked(bool)),
- this, SLOT(doDeleteCache()));
-
QObject::connect(this->CacheValues->cacheModel(),
SIGNAL(dataChanged(QModelIndex,QModelIndex)),
this, SLOT(setCacheModified()));
-
+
+ QObject::connect(this->CacheValues->selectionModel(),
+ SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
+ this, SLOT(selectionChanged()));
+ QObject::connect(this->RemoveEntry, SIGNAL(clicked(bool)),
+ this, SLOT(removeSelectedCacheEntries()));
// get the saved binary directories
QStringList buildPaths = this->loadBuildPaths();
@@ -457,9 +461,9 @@ void CMakeSetupDialog::setEnabledState(bool enabled)
this->ConfigureButton->setEnabled(enabled);
this->ReloadCacheAction->setEnabled(enabled);
this->DeleteCacheAction->setEnabled(enabled);
- this->DeleteCacheButton->setEnabled(enabled);
this->ExitAction->setEnabled(enabled);
this->ConfigureAction->setEnabled(enabled);
+ this->RemoveEntry->setEnabled(false); // let selection re-enable it
// generate button/action are handled separately
}
@@ -671,4 +675,30 @@ void CMakeSetupDialog::setCacheModified()
this->setGenerateEnabled(false);
}
+void CMakeSetupDialog::removeSelectedCacheEntries()
+{
+ QModelIndexList idxs = this->CacheValues->selectionModel()->selectedRows();
+ QList<QPersistentModelIndex> pidxs;
+ foreach(QModelIndex i, idxs)
+ {
+ pidxs.append(i);
+ }
+ foreach(QPersistentModelIndex pi, pidxs)
+ {
+ this->CacheValues->model()->removeRow(pi.row());
+ }
+}
+
+void CMakeSetupDialog::selectionChanged()
+{
+ QModelIndexList idxs = this->CacheValues->selectionModel()->selectedRows();
+ if(idxs.count() && !this->InterruptButton->isEnabled())
+ {
+ this->RemoveEntry->setEnabled(true);
+ }
+ else
+ {
+ this->RemoveEntry->setEnabled(false);
+ }
+}
diff --git a/Source/QtDialog/CMakeSetupDialog.h b/Source/QtDialog/CMakeSetupDialog.h
index 8f3c1b3..cf298f3 100644
--- a/Source/QtDialog/CMakeSetupDialog.h
+++ b/Source/QtDialog/CMakeSetupDialog.h
@@ -68,6 +68,8 @@ protected slots:
void onBinaryDirectoryChanged(const QString& dir);
void onSourceDirectoryChanged(const QString& dir);
void setCacheModified();
+ void removeSelectedCacheEntries();
+ void selectionChanged();
protected:
void closeEvent(QCloseEvent*);
diff --git a/Source/QtDialog/CMakeSetupDialog.ui b/Source/QtDialog/CMakeSetupDialog.ui
index ade3cbf..ca95ffe 100644
--- a/Source/QtDialog/CMakeSetupDialog.ui
+++ b/Source/QtDialog/CMakeSetupDialog.ui
@@ -5,8 +5,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>705</width>
- <height>495</height>
+ <width>707</width>
+ <height>582</height>
</rect>
</property>
<layout class="QGridLayout" >
@@ -59,93 +59,186 @@
</layout>
</item>
<item row="1" column="0" >
- <layout class="QHBoxLayout" >
- <item>
- <widget class="QCheckBox" name="Advanced" >
- <property name="text" >
- <string>Show Advanced</string>
- </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" >
- <sizepolicy vsizetype="Preferred" hsizetype="Minimum" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text" >
- <string>Search:</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLineEdit" name="Search" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </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>61</width>
- <height>23</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="QLabel" name="Generator" >
- <property name="text" >
- <string>Current Generator:</string>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item row="2" column="0" >
<widget class="QSplitter" name="Splitter" >
<property name="orientation" >
<enum>Qt::Vertical</enum>
</property>
- <widget class="QCMakeCacheView" name="CacheValues" >
- <property name="alternatingRowColors" >
- <bool>true</bool>
- </property>
- <property name="selectionMode" >
- <enum>QAbstractItemView::ExtendedSelection</enum>
+ <widget class="QFrame" name="frame" >
+ <property name="frameShape" >
+ <enum>QFrame::NoFrame</enum>
</property>
- <property name="selectionBehavior" >
- <enum>QAbstractItemView::SelectRows</enum>
+ <property name="frameShadow" >
+ <enum>QFrame::Raised</enum>
</property>
+ <layout class="QGridLayout" >
+ <property name="leftMargin" >
+ <number>0</number>
+ </property>
+ <property name="topMargin" >
+ <number>0</number>
+ </property>
+ <property name="rightMargin" >
+ <number>0</number>
+ </property>
+ <property name="bottomMargin" >
+ <number>0</number>
+ </property>
+ <item row="0" column="0" colspan="6" >
+ <layout class="QHBoxLayout" >
+ <item>
+ <widget class="QLabel" name="label_4" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Preferred" hsizetype="Minimum" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>Search:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="Search" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="Advanced" >
+ <property name="text" >
+ <string>Show Advanced Entries</string>
+ </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>61</width>
+ <height>23</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QToolButton" name="RemoveEntry" >
+ <property name="toolTip" >
+ <string>Remove Selected Entries</string>
+ </property>
+ <property name="text" >
+ <string/>
+ </property>
+ <property name="icon" >
+ <iconset resource="CMakeSetup.qrc" >:/Icons/Delete16.png</iconset>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item row="1" column="0" colspan="6" >
+ <widget class="QCMakeCacheView" name="CacheValues" >
+ <property name="alternatingRowColors" >
+ <bool>true</bool>
+ </property>
+ <property name="selectionMode" >
+ <enum>QAbstractItemView::ExtendedSelection</enum>
+ </property>
+ <property name="selectionBehavior" >
+ <enum>QAbstractItemView::SelectRows</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0" >
+ <widget class="QPushButton" name="ConfigureButton" >
+ <property name="text" >
+ <string>Configure</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1" >
+ <widget class="QPushButton" name="GenerateButton" >
+ <property name="text" >
+ <string>Generate</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="2" >
+ <widget class="QLabel" name="Generator" >
+ <property name="text" >
+ <string>Current Generator:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="3" >
+ <spacer>
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType" >
+ <enum>QSizePolicy::Expanding</enum>
+ </property>
+ <property name="sizeHint" >
+ <size>
+ <width>121</width>
+ <height>27</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="3" column="5" >
+ <widget class="QProgressBar" name="ProgressBar" >
+ <property name="minimum" >
+ <number>0</number>
+ </property>
+ <property name="maximum" >
+ <number>100</number>
+ </property>
+ <property name="value" >
+ <number>0</number>
+ </property>
+ <property name="textVisible" >
+ <bool>false</bool>
+ </property>
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="textDirection" >
+ <enum>QProgressBar::BottomToTop</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="4" >
+ <widget class="QToolButton" name="InterruptButton" >
+ <property name="text" >
+ <string>...</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0" colspan="6" >
+ <widget class="QLabel" name="label_3" >
+ <property name="text" >
+ <string>Press Configure to update and display new values in red, then press Generate to generate selected build files.</string>
+ </property>
+ <property name="alignment" >
+ <set>Qt::AlignCenter</set>
+ </property>
+ <property name="wordWrap" >
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
</widget>
<widget class="QTextEdit" name="Output" >
<property name="lineWrapMode" >
@@ -157,77 +250,6 @@
</widget>
</widget>
</item>
- <item row="4" column="0" >
- <layout class="QHBoxLayout" >
- <item>
- <widget class="QPushButton" name="ConfigureButton" >
- <property name="text" >
- <string>Configure</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="GenerateButton" >
- <property name="text" >
- <string>Generate</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="DeleteCacheButton" >
- <property name="text" >
- <string>Delete Cache</string>
- </property>
- </widget>
- </item>
- <item>
- <spacer>
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" >
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="QToolButton" name="InterruptButton" >
- <property name="enabled" >
- <bool>false</bool>
- </property>
- <property name="text" >
- <string>...</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QProgressBar" name="ProgressBar" >
- <property name="value" >
- <number>0</number>
- </property>
- <property name="textVisible" >
- <bool>true</bool>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item row="3" column="0" >
- <widget class="QLabel" name="label_3" >
- <property name="text" >
- <string>Right click on a cache value for additional options (delete, ignore, and help).&lt;br>Press Configure to update and display new values in red, then press Generate to generate selected build files.</string>
- </property>
- <property name="alignment" >
- <set>Qt::AlignCenter</set>
- </property>
- <property name="wordWrap" >
- <bool>true</bool>
- </property>
- </widget>
- </item>
</layout>
</widget>
<customwidgets>
diff --git a/Source/QtDialog/Delete16.png b/Source/QtDialog/Delete16.png
new file mode 100644
index 0000000..16989fee
--- /dev/null
+++ b/Source/QtDialog/Delete16.png
Binary files differ
diff --git a/Source/QtDialog/QCMakeCacheView.cxx b/Source/QtDialog/QCMakeCacheView.cxx
index 4bb160e..b1dbf6f 100644
--- a/Source/QtDialog/QCMakeCacheView.cxx
+++ b/Source/QtDialog/QCMakeCacheView.cxx
@@ -26,9 +26,6 @@
#include <QStyle>
#include <QKeyEvent>
#include <QMenu>
-#include <QDialog>
-#include <QLabel>
-#include <QDialogButtonBox>
#include <QDirModel>
#include <QCompleter>
@@ -79,82 +76,7 @@ QCMakeCacheModel* QCMakeCacheView::cacheModel() const
{
return this->CacheModel;
}
-
-void QCMakeCacheView::contextMenuEvent(QContextMenuEvent* /*e*/)
-{
- QList<QModelIndex> idxs = this->selectionModel()->selectedRows();
-
- if(idxs.count())
- {
- QMenu* menu = new QMenu(this);
- QAction* deleteAction = NULL;
- QAction* ignoreAction = NULL;
- if(this->cacheModel()->editEnabled())
- {
- QString t = idxs.count() > 1 ? tr("Delete Cache Entries") :
- tr("Delete Cache Entry");
- deleteAction = menu->addAction(t);
- t = idxs.count() > 1 ? tr("Ignore Cache Entries") :
- tr("Ignore Cache Entry");
- ignoreAction = menu->addAction(t);
- }
- QAction* helpAction = menu->addAction(tr("Help For Cache Entry"));
- QAction* which = menu->exec(QCursor::pos());
- if(!which)
- {
- return;
- }
-
- if(which == helpAction)
- {
- QModelIndex idx = this->selectionModel()->currentIndex();
- idx = this->SearchFilter->mapToSource(idx);
- idx = this->AdvancedFilter->mapToSource(idx);
- idx = this->cacheModel()->index(idx.row(), 0);
- QString msg = this->cacheModel()->data(idx, Qt::DisplayRole).toString() +
- "\n\n" +
- this->cacheModel()->data(idx, QCMakeCacheModel::HelpRole).toString();
- QDialog dialog;
- dialog.setWindowTitle(tr("CMakeSetup Help"));
- QVBoxLayout* l = new QVBoxLayout(&dialog);
- QLabel* lab = new QLabel(&dialog);
- l->addWidget(lab);
- lab->setText(msg);
- lab->setWordWrap(true);
- QDialogButtonBox* btns = new QDialogButtonBox(QDialogButtonBox::Ok,
- Qt::Horizontal, &dialog);
- QObject::connect(btns, SIGNAL(accepted()), &dialog, SLOT(accept()));
- l->addWidget(btns);
- dialog.exec();
- }
- else
- {
- QList<QPersistentModelIndex> pidxs;
- foreach(QModelIndex i, idxs)
- {
- i = this->SearchFilter->mapToSource(i);
- i = this->AdvancedFilter->mapToSource(i);
- pidxs.append(i);
- }
- if(which == deleteAction)
- {
- foreach(QPersistentModelIndex j, pidxs)
- {
- this->cacheModel()->removeRows(j.row(), 1);
- }
- }
- else if(which == ignoreAction)
- {
- foreach(QPersistentModelIndex j, pidxs)
- {
- j = this->cacheModel()->index(j.row(), 1);
- this->cacheModel()->setData(j, "IGNORE", Qt::DisplayRole);
- }
- }
- }
- }
-}
-
+
QModelIndex QCMakeCacheView::moveCursor(CursorAction act,
Qt::KeyboardModifiers mod)
{
@@ -228,17 +150,19 @@ void QCMakeCacheModel::clear()
void QCMakeCacheModel::setProperties(const QCMakeCachePropertyList& props)
{
QSet<QCMakeCacheProperty> newProps = props.toSet();
+ QSet<QCMakeCacheProperty> newProps2 = props.toSet();
QSet<QCMakeCacheProperty> oldProps = this->Properties.toSet();
oldProps.intersect(newProps);
newProps.subtract(oldProps);
+ newProps2.subtract(newProps);
this->NewCount = newProps.count();
this->Properties.clear();
this->Properties = newProps.toList();
qSort(this->Properties);
- QCMakeCachePropertyList tmp = oldProps.toList();
+ QCMakeCachePropertyList tmp = newProps2.toList();
qSort(tmp);
this->Properties += tmp;
@@ -384,17 +308,20 @@ QModelIndex QCMakeCacheModel::buddy ( const QModelIndex& idx ) const
return idx;
}
-bool QCMakeCacheModel::removeRows(int row, int, const QModelIndex&)
+bool QCMakeCacheModel::removeRows(int row, int num, const QModelIndex&)
{
- if(row < 0 || row >= this->Properties.count())
+ if(row < 0 || row+num > this->Properties.count())
{
return false;
}
- this->beginRemoveRows(QModelIndex(), row, row);
- this->Properties.removeAt(row);
- if(this->NewCount >= row+1)
+ this->beginRemoveRows(QModelIndex(), row, row+num-1);
+ for(int i=0; i<num; i++)
{
- this->NewCount--;
+ this->Properties.removeAt(row);
+ if(this->NewCount >= row+1)
+ {
+ this->NewCount--;
+ }
}
this->endRemoveRows();
return true;
diff --git a/Source/QtDialog/QCMakeCacheView.h b/Source/QtDialog/QCMakeCacheView.h
index 15c06d4..a6ddbf2 100644
--- a/Source/QtDialog/QCMakeCacheView.h
+++ b/Source/QtDialog/QCMakeCacheView.h
@@ -45,7 +45,6 @@ public slots:
void setSearchFilter(const QString&);
protected:
- void contextMenuEvent(QContextMenuEvent* e);
QModelIndex moveCursor(CursorAction, Qt::KeyboardModifiers);
void showEvent(QShowEvent* e);
bool Init;