ENH: Show cache variable name in title of file dialogs.

This commit is contained in:
Clinton Stimpson 2008-02-07 17:58:57 -05:00
parent 410d7b0f36
commit dcd29a14b0
2 changed files with 38 additions and 15 deletions

View File

@ -393,6 +393,8 @@ QCMakeCacheModelDelegate::QCMakeCacheModelDelegate(QObject* p)
QWidget* QCMakeCacheModelDelegate::createEditor(QWidget* p,
const QStyleOptionViewItem&, const QModelIndex& idx) const
{
const QAbstractItemModel* model = idx.model();
QModelIndex var = model->index(idx.row(), 0);
QVariant type = idx.data(QCMakeCacheModel::TypeRole);
if(type == QCMakeCacheProperty::BOOL)
{
@ -400,11 +402,13 @@ QWidget* QCMakeCacheModelDelegate::createEditor(QWidget* p,
}
else if(type == QCMakeCacheProperty::PATH)
{
return new QCMakeCachePathEditor(p);
return new QCMakeCachePathEditor(p,
var.data(Qt::DisplayRole).toString());
}
else if(type == QCMakeCacheProperty::FILEPATH)
{
return new QCMakeCacheFilePathEditor(p);
return new QCMakeCacheFilePathEditor(p,
var.data(Qt::DisplayRole).toString());
}
return new QLineEdit(p);
@ -453,8 +457,8 @@ bool QCMakeCacheModelDelegate::editorEvent(QEvent* e, QAbstractItemModel* model,
return model->setData(index, state, Qt::CheckStateRole);
}
QCMakeCacheFileEditor::QCMakeCacheFileEditor(QWidget* p)
: QLineEdit(p)
QCMakeCacheFileEditor::QCMakeCacheFileEditor(QWidget* p, const QString& var)
: QLineEdit(p), Variable(var)
{
// this *is* instead of has a line edit so QAbstractItemView
// doesn't get confused with what the editor really is
@ -466,8 +470,8 @@ QCMakeCacheFileEditor::QCMakeCacheFileEditor(QWidget* p)
this, SLOT(chooseFile()));
}
QCMakeCacheFilePathEditor::QCMakeCacheFilePathEditor(QWidget* p)
: QCMakeCacheFileEditor(p)
QCMakeCacheFilePathEditor::QCMakeCacheFilePathEditor(QWidget* p, const QString& var)
: QCMakeCacheFileEditor(p, var)
{
QCompleter* comp = new QCompleter(this);
QDirModel* model = new QDirModel(comp);
@ -475,8 +479,8 @@ QCMakeCacheFilePathEditor::QCMakeCacheFilePathEditor(QWidget* p)
this->setCompleter(comp);
}
QCMakeCachePathEditor::QCMakeCachePathEditor(QWidget* p)
: QCMakeCacheFileEditor(p)
QCMakeCachePathEditor::QCMakeCachePathEditor(QWidget* p, const QString& var)
: QCMakeCacheFileEditor(p, var)
{
QCompleter* comp = new QCompleter(this);
QDirModel* model = new QDirModel(comp);
@ -499,8 +503,17 @@ void QCMakeCacheFilePathEditor::chooseFile()
// choose a file and set it
QString path;
QFileInfo info(this->text());
path = QFileDialog::getOpenFileName(this, tr("Select File"),
info.absolutePath());
QString title;
if(this->Variable.isEmpty())
{
title = tr("Select File");
}
else
{
title = tr("Select File for %1");
title = title.arg(this->Variable);
}
path = QFileDialog::getOpenFileName(this, title, info.absolutePath());
if(!path.isEmpty())
{
@ -512,8 +525,17 @@ void QCMakeCachePathEditor::chooseFile()
{
// choose a file and set it
QString path;
path = QFileDialog::getExistingDirectory(this, tr("Select Path"),
this->text());
QString title;
if(this->Variable.isEmpty())
{
title = tr("Select Path");
}
else
{
title = tr("Select Path for %1");
title = title.arg(this->Variable);
}
path = QFileDialog::getExistingDirectory(this, title, this->text());
if(!path.isEmpty())
{
this->setText(path);

View File

@ -114,19 +114,20 @@ class QCMakeCacheFileEditor : public QLineEdit
{
Q_OBJECT
public:
QCMakeCacheFileEditor(QWidget* p);
QCMakeCacheFileEditor(QWidget* p, const QString& var);
protected slots:
virtual void chooseFile() = 0;
protected:
void resizeEvent(QResizeEvent* e);
QToolButton* ToolButton;
QString Variable;
};
class QCMakeCachePathEditor : public QCMakeCacheFileEditor
{
Q_OBJECT
public:
QCMakeCachePathEditor(QWidget* p = NULL);
QCMakeCachePathEditor(QWidget* p = NULL, const QString& var = QString());
void chooseFile();
};
@ -134,7 +135,7 @@ class QCMakeCacheFilePathEditor : public QCMakeCacheFileEditor
{
Q_OBJECT
public:
QCMakeCacheFilePathEditor(QWidget* p = NULL);
QCMakeCacheFilePathEditor(QWidget* p = NULL, const QString& var = QString());
void chooseFile();
};