b0d01c306b
Up to 100 completion strings for the names of added variables are saved in the settings, so it will remember the variables you are usually adding. It also ensures that CMAKE_INSTALL_PREFIX is always there, since this is maybe the one which is set most often. Alex
84 lines
2.4 KiB
C++
84 lines
2.4 KiB
C++
/*============================================================================
|
|
CMake - Cross Platform Makefile Generator
|
|
Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
|
|
|
|
Distributed under the OSI-approved BSD License (the "License");
|
|
see accompanying file Copyright.txt for details.
|
|
|
|
This software is distributed WITHOUT ANY WARRANTY; without even the
|
|
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
See the License for more information.
|
|
============================================================================*/
|
|
|
|
#include "AddCacheEntry.h"
|
|
#include <QMetaProperty>
|
|
#include <QCompleter>
|
|
|
|
static const int NumTypes = 4;
|
|
static const QString 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)
|
|
{
|
|
this->setupUi(this);
|
|
for(int i=0; i<NumTypes; i++)
|
|
{
|
|
this->Type->addItem(TypeStrings[i]);
|
|
}
|
|
QWidget* cb = new QCheckBox();
|
|
QWidget* path = new QCMakePathEditor();
|
|
QWidget* filepath = new QCMakeFilePathEditor();
|
|
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);
|
|
this->Name->setCompleter(new QCompleter(completions, this));
|
|
}
|
|
|
|
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();
|
|
}
|
|
return QVariant();
|
|
}
|
|
|
|
QString AddCacheEntry::description() const
|
|
{
|
|
return this->Description->text();
|
|
}
|
|
|
|
QCMakeProperty::PropertyType AddCacheEntry::type() const
|
|
{
|
|
int idx = this->Type->currentIndex();
|
|
if(idx >= 0 && idx < NumTypes)
|
|
{
|
|
return Types[idx];
|
|
}
|
|
return QCMakeProperty::BOOL;
|
|
}
|
|
|
|
|