[Cmake-commits] CMake branch, next, updated. v2.8.12.1-7140-g2bdbca2

Brad King brad.king at kitware.com
Thu Jan 16 09:23:48 EST 2014


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  2bdbca28b437227ddb139f82402b12834fe2c00a (commit)
       via  cfec180d66a7210606c5274e6ba3bb86a1e197a7 (commit)
      from  e0fb31ecded9ac36caae69509ee36976b5d6131d (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2bdbca28b437227ddb139f82402b12834fe2c00a
commit 2bdbca28b437227ddb139f82402b12834fe2c00a
Merge: e0fb31e cfec180
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Thu Jan 16 09:23:47 2014 -0500
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Thu Jan 16 09:23:47 2014 -0500

    Merge topic 'var-type-autofill' into next
    
    cfec180d cmake-gui: Remember variable type in Add Entry


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=cfec180d66a7210606c5274e6ba3bb86a1e197a7
commit cfec180d66a7210606c5274e6ba3bb86a1e197a7
Author:     Sergey Zolotarev <sryze at yandex.com>
AuthorDate: Mon Jan 13 17:28:16 2014 +0700
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Thu Jan 16 09:23:36 2014 -0500

    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.

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;
+          }
+      }
+    }
+}
diff --git a/Source/QtDialog/AddCacheEntry.h b/Source/QtDialog/AddCacheEntry.h
index e219d4e..38c3a74 100644
--- a/Source/QtDialog/AddCacheEntry.h
+++ b/Source/QtDialog/AddCacheEntry.h
@@ -24,12 +24,21 @@ class AddCacheEntry : public QWidget, public Ui::AddCacheEntry
 {
   Q_OBJECT
 public:
-  AddCacheEntry(QWidget* p, const QStringList& completions);
+  AddCacheEntry(QWidget* p, const QStringList& varNames,
+                            const QStringList& varTypes);
 
   QString name() const;
   QVariant value() const;
   QString description() const;
   QCMakeProperty::PropertyType type() const;
+  QString typeString() const;
+
+private slots:
+  void onCompletionActivated(const QString &text);
+
+private:
+  const QStringList& VarNames;
+  const QStringList& VarTypes;
 };
 
 #endif
diff --git a/Source/QtDialog/CMakeSetupDialog.cxx b/Source/QtDialog/CMakeSetupDialog.cxx
index 1903c02..f62afd6 100644
--- a/Source/QtDialog/CMakeSetupDialog.cxx
+++ b/Source/QtDialog/CMakeSetupDialog.cxx
@@ -70,8 +70,10 @@ CMakeSetupDialog::CMakeSetupDialog()
   restoreGeometry(settings.value("geometry").toByteArray());
   restoreState(settings.value("windowState").toByteArray());
 
-  this->AddVariableCompletions = settings.value("AddVariableCompletionEntries",
+  this->AddVariableNames = settings.value("AddVariableNames",
                            QStringList("CMAKE_INSTALL_PREFIX")).toStringList();
+  this->AddVariableTypes = settings.value("AddVariableTypes",
+                                           QStringList("PATH")).toStringList();
 
   QWidget* cont = new QWidget(this);
   this->setupUi(cont);
@@ -1049,7 +1051,8 @@ void CMakeSetupDialog::addCacheEntry()
   dialog.resize(400, 200);
   dialog.setWindowTitle(tr("Add Cache Entry"));
   QVBoxLayout* l = new QVBoxLayout(&dialog);
-  AddCacheEntry* w = new AddCacheEntry(&dialog, this->AddVariableCompletions);
+  AddCacheEntry* w = new AddCacheEntry(&dialog, this->AddVariableNames,
+                                                this->AddVariableTypes);
   QDialogButtonBox* btns = new QDialogButtonBox(
       QDialogButtonBox::Ok | QDialogButtonBox::Cancel,
       Qt::Horizontal, &dialog);
@@ -1064,23 +1067,26 @@ void CMakeSetupDialog::addCacheEntry()
     m->insertProperty(w->type(), w->name(), w->description(), w->value(), false);
 
     // only add variable names to the completion which are new
-    if (!this->AddVariableCompletions.contains(w->name()))
+    if (!this->AddVariableNames.contains(w->name()))
       {
-      this->AddVariableCompletions << w->name();
+      this->AddVariableNames << w->name();
+      this->AddVariableTypes << w->typeString();
       // limit to at most 100 completion items
-      if (this->AddVariableCompletions.size() > 100)
+      if (this->AddVariableNames.size() > 100)
         {
-        this->AddVariableCompletions.removeFirst();
+        this->AddVariableNames.removeFirst();
+        this->AddVariableTypes.removeFirst();
         }
       // make sure CMAKE_INSTALL_PREFIX is always there
-      if (!this->AddVariableCompletions.contains("CMAKE_INSTALL_PREFIX"))
+      if (!this->AddVariableNames.contains("CMAKE_INSTALL_PREFIX"))
         {
-        this->AddVariableCompletions << QString("CMAKE_INSTALL_PREFIX");
+        this->AddVariableNames << "CMAKE_INSTALL_PREFIX";
+        this->AddVariableTypes << "PATH";
         }
       QSettings settings;
       settings.beginGroup("Settings/StartPath");
-      settings.setValue("AddVariableCompletionEntries",
-                        this->AddVariableCompletions);
+      settings.setValue("AddVariableNames", this->AddVariableNames);
+      settings.setValue("AddVariableTypes", this->AddVariableTypes);
       }
     }
 }
diff --git a/Source/QtDialog/CMakeSetupDialog.h b/Source/QtDialog/CMakeSetupDialog.h
index 963c7d1..1b26c64 100644
--- a/Source/QtDialog/CMakeSetupDialog.h
+++ b/Source/QtDialog/CMakeSetupDialog.h
@@ -110,7 +110,8 @@ protected:
   QTextCharFormat ErrorFormat;
   QTextCharFormat MessageFormat;
 
-  QStringList AddVariableCompletions;
+  QStringList AddVariableNames;
+  QStringList AddVariableTypes;
   QStringList FindHistory;
 
   QEventLoop LocalLoop;

-----------------------------------------------------------------------

Summary of changes:


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list