summaryrefslogtreecommitdiffstats
path: root/Source/QtDialog/AddCacheEntry.cxx
diff options
context:
space:
mode:
authorClinton Stimpson <clinton@elemtech.com>2007-11-13 04:54:49 (GMT)
committerClinton Stimpson <clinton@elemtech.com>2007-11-13 04:54:49 (GMT)
commita81896eaedc17f11e3fb412a296309abd9e34b63 (patch)
tree8e1204cfa77852920fa730dec0e97a3b09926818 /Source/QtDialog/AddCacheEntry.cxx
parent45a8e26fe159e6c0847addb3dbc126a852779f5a (diff)
downloadCMake-a81896eaedc17f11e3fb412a296309abd9e34b63.zip
CMake-a81896eaedc17f11e3fb412a296309abd9e34b63.tar.gz
CMake-a81896eaedc17f11e3fb412a296309abd9e34b63.tar.bz2
ENH: Add ability to add cache entries (even before first configure).
Diffstat (limited to 'Source/QtDialog/AddCacheEntry.cxx')
-rw-r--r--Source/QtDialog/AddCacheEntry.cxx71
1 files changed, 71 insertions, 0 deletions
diff --git a/Source/QtDialog/AddCacheEntry.cxx b/Source/QtDialog/AddCacheEntry.cxx
new file mode 100644
index 0000000..46cc6ab
--- /dev/null
+++ b/Source/QtDialog/AddCacheEntry.cxx
@@ -0,0 +1,71 @@
+
+#include "AddCacheEntry.h"
+#include <QMetaProperty>
+
+static const int NumTypes = 4;
+static const QString TypeStrings[NumTypes] =
+ { "BOOL", "PATH", "FILEPATH", "STRING" };
+static const QCMakeCacheProperty::PropertyType Types[NumTypes] =
+ { QCMakeCacheProperty::BOOL, QCMakeCacheProperty::PATH,
+ QCMakeCacheProperty::FILEPATH, QCMakeCacheProperty::STRING};
+
+AddCacheEntry::AddCacheEntry(QWidget* p)
+ : QWidget(p)
+{
+ this->setupUi(this);
+ for(int i=0; i<NumTypes; i++)
+ {
+ this->Type->addItem(TypeStrings[i]);
+ }
+ QWidget* cb = new QCheckBox();
+ QWidget* path = new QCMakeCachePathEditor();
+ QWidget* filepath = new QCMakeCacheFilePathEditor();
+ QWidget* string = new QLineEdit();
+ this->StackedWidget->addWidget(cb);
+ this->StackedWidget->addWidget(path);
+ this->StackedWidget->addWidget(filepath);
+ this->StackedWidget->addWidget(string);
+ this->setTabOrder(this->Name, this->Type);
+ this->setTabOrder(this->Type, cb);
+ this->setTabOrder(cb, path);
+ this->setTabOrder(path, filepath);
+ this->setTabOrder(filepath, string);
+ this->setTabOrder(string, this->Description);
+}
+
+QString AddCacheEntry::name() const
+{
+ return this->Name->text();
+}
+
+QVariant AddCacheEntry::value() const
+{
+ QWidget* w = this->StackedWidget->currentWidget();
+ if(qobject_cast<QLineEdit*>(w))
+ {
+ return static_cast<QLineEdit*>(w)->text();
+ }
+ else if(qobject_cast<QCheckBox*>(w))
+ {
+ return static_cast<QCheckBox*>(w)->isChecked();
+ }
+ printf("didn't get anything %s\n", w->metaObject()->className());
+ return QVariant();
+}
+
+QString AddCacheEntry::description() const
+{
+ return this->Description->text();
+}
+
+QCMakeCacheProperty::PropertyType AddCacheEntry::type() const
+{
+ int idx = this->Type->currentIndex();
+ if(idx >= 0 && idx < NumTypes)
+ {
+ return Types[idx];
+ }
+ return QCMakeCacheProperty::BOOL;
+}
+
+