summaryrefslogtreecommitdiffstats
path: root/Source/QtDialog/AddCacheEntry.cxx
diff options
context:
space:
mode:
authorSergey Zolotarev <sryze@yandex.com>2014-01-13 10:28:16 (GMT)
committerBrad King <brad.king@kitware.com>2014-01-16 14:23:36 (GMT)
commitcfec180d66a7210606c5274e6ba3bb86a1e197a7 (patch)
treeed13abe0f993ac2b9e204da65d5e7c1e892e9e24 /Source/QtDialog/AddCacheEntry.cxx
parent9f6b633f37bebecc989cc8fc026da999148038f9 (diff)
downloadCMake-cfec180d66a7210606c5274e6ba3bb86a1e197a7.zip
CMake-cfec180d66a7210606c5274e6ba3bb86a1e197a7.tar.gz
CMake-cfec180d66a7210606c5274e6ba3bb86a1e197a7.tar.bz2
cmake-gui: Remember variable type in Add Entry
Store variable types together with their names in the variable completion list so that the type is automatically recovered when you select a variable. Keep variable names and types in separate lists. This removes the :TYPE string from completion list and the Name field and makes variable search easier. The variable names and types are now kept in two different settings - AddVariableNames and AddVariableTypes. Drop the old AddVariableCompletionEntries setting.
Diffstat (limited to 'Source/QtDialog/AddCacheEntry.cxx')
-rw-r--r--Source/QtDialog/AddCacheEntry.cxx38
1 files changed, 34 insertions, 4 deletions
diff --git a/Source/QtDialog/AddCacheEntry.cxx b/Source/QtDialog/AddCacheEntry.cxx
index e7fedc5..3881045 100644
--- a/Source/QtDialog/AddCacheEntry.cxx
+++ b/Source/QtDialog/AddCacheEntry.cxx
@@ -15,14 +15,16 @@
#include <QCompleter>
static const int NumTypes = 4;
+static const int DefaultTypeIndex = 0;
static const QByteArray TypeStrings[NumTypes] =
{ "BOOL", "PATH", "FILEPATH", "STRING" };
static const QCMakeProperty::PropertyType Types[NumTypes] =
{ QCMakeProperty::BOOL, QCMakeProperty::PATH,
QCMakeProperty::FILEPATH, QCMakeProperty::STRING};
-AddCacheEntry::AddCacheEntry(QWidget* p, const QStringList& completions)
- : QWidget(p)
+AddCacheEntry::AddCacheEntry(QWidget* p, const QStringList& varNames,
+ const QStringList& varTypes)
+ : QWidget(p), VarNames(varNames), VarTypes(varTypes)
{
this->setupUi(this);
for(int i=0; i<NumTypes; i++)
@@ -43,7 +45,10 @@ AddCacheEntry::AddCacheEntry(QWidget* p, const QStringList& completions)
this->setTabOrder(path, filepath);
this->setTabOrder(filepath, string);
this->setTabOrder(string, this->Description);
- this->Name->setCompleter(new QCompleter(completions, this));
+ QCompleter *completer = new QCompleter(this->VarNames, this);
+ this->Name->setCompleter(completer);
+ connect(completer, SIGNAL(activated(const QString&)),
+ this, SLOT(onCompletionActivated(const QString&)));
}
QString AddCacheEntry::name() const
@@ -77,7 +82,32 @@ QCMakeProperty::PropertyType AddCacheEntry::type() const
{
return Types[idx];
}
- return QCMakeProperty::BOOL;
+ return Types[DefaultTypeIndex];
}
+QString AddCacheEntry::typeString() const
+{
+ int idx = this->Type->currentIndex();
+ if(idx >= 0 && idx < NumTypes)
+ {
+ return TypeStrings[idx];
+ }
+ return TypeStrings[DefaultTypeIndex];
+}
+void AddCacheEntry::onCompletionActivated(const QString &text)
+{
+ int idx = this->VarNames.indexOf(text);
+ if (idx != -1)
+ {
+ QString vartype = this->VarTypes[idx];
+ for (int i = 0; i < NumTypes; i++)
+ {
+ if (TypeStrings[i] == vartype)
+ {
+ this->Type->setCurrentIndex(i);
+ break;
+ }
+ }
+ }
+}