diff options
author | Sergey Zolotarev <sryze@yandex.com> | 2014-01-13 10:28:16 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2014-01-16 14:23:36 (GMT) |
commit | cfec180d66a7210606c5274e6ba3bb86a1e197a7 (patch) | |
tree | ed13abe0f993ac2b9e204da65d5e7c1e892e9e24 /Source/QtDialog/AddCacheEntry.cxx | |
parent | 9f6b633f37bebecc989cc8fc026da999148038f9 (diff) | |
download | CMake-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.cxx | 38 |
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; + } + } + } +} |