summaryrefslogtreecommitdiff
path: root/src/plugins/vcsbase/vcsbaseeditorparameterwidget.cpp
diff options
context:
space:
mode:
authorcerf <delorme.hugues@gmail.com>2011-05-31 08:31:26 +0000
committerTobias Hunger <tobias.hunger@nokia.com>2011-05-31 10:45:04 +0200
commit31ac8bd293cb51311b4bac1456ce8fec9b55ec51 (patch)
tree92a3c8aa96208b5f5ca3f01003aac22c303a5e1a /src/plugins/vcsbase/vcsbaseeditorparameterwidget.cpp
parent05c0c2f4d80f05717e19560d280b95fe187d59af (diff)
downloadqt-creator-31ac8bd293cb51311b4bac1456ce8fec9b55ec51.tar.gz
vcsbase: support of combo boxes in EditorParameterWidget
VCSBaseEditorParameterWidget supports "choice-based" options through mapping of QComboBox. Change-Id: I46e1205e1b6f56b16782d9f0d81ec6f1d4961f1a Merge-request: 331 Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com> Reviewed-on: http://codereview.qt.nokia.com/255 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Diffstat (limited to 'src/plugins/vcsbase/vcsbaseeditorparameterwidget.cpp')
-rw-r--r--src/plugins/vcsbase/vcsbaseeditorparameterwidget.cpp71
1 files changed, 67 insertions, 4 deletions
diff --git a/src/plugins/vcsbase/vcsbaseeditorparameterwidget.cpp b/src/plugins/vcsbase/vcsbaseeditorparameterwidget.cpp
index 3acf13fedc..22004e94cb 100644
--- a/src/plugins/vcsbase/vcsbaseeditorparameterwidget.cpp
+++ b/src/plugins/vcsbase/vcsbaseeditorparameterwidget.cpp
@@ -32,6 +32,7 @@
#include "vcsbaseeditorparameterwidget.h"
+#include <QtGui/QComboBox>
#include <QtGui/QToolButton>
#include <QtGui/QHBoxLayout>
@@ -39,14 +40,27 @@
namespace VCSBase {
+VCSBaseEditorParameterWidget::ComboBoxItem::ComboBoxItem()
+{
+}
+
+VCSBaseEditorParameterWidget::ComboBoxItem::ComboBoxItem(const QString &text,
+ const QVariant &val) :
+ displayText(text),
+ value(val)
+{
+}
+
class VCSBaseEditorParameterWidgetPrivate
{
public:
- VCSBaseEditorParameterWidgetPrivate() : m_layout(0) {}
+ VCSBaseEditorParameterWidgetPrivate() :
+ m_layout(0), m_comboBoxOptionTemplate(QLatin1String("%1=%2")) {}
QStringList m_baseArguments;
QHBoxLayout *m_layout;
QList<VCSBaseEditorParameterWidget::OptionMapping> m_optionMappings;
+ QStringList m_comboBoxOptionTemplate;
};
/*!
@@ -116,6 +130,42 @@ QToolButton *VCSBaseEditorParameterWidget::addIgnoreBlankLinesButton(const QStri
return addToggleButton(option, msgIgnoreBlankLinesLabel(), msgIgnoreBlankLinesToolTip());
}
+QComboBox *VCSBaseEditorParameterWidget::addComboBox(const QString &option,
+ const QList<ComboBoxItem> &items)
+{
+ QComboBox *cb = new QComboBox;
+ foreach (const ComboBoxItem &item, items)
+ cb->addItem(item.displayText, item.value);
+ connect(cb, SIGNAL(currentIndexChanged(int)), this, SIGNAL(argumentsChanged()));
+ d->m_layout->addWidget(cb);
+ d->m_optionMappings.append(OptionMapping(option, cb));
+ return cb;
+}
+
+/*!
+ \brief This property holds the format (template) of assignable command line
+ options (like --file=<file> for example)
+
+ The option's name and its actual value are specified with place markers
+ within the template :
+ \li %{option} for the option
+ \li %{value} for the actual value
+
+ \code
+ QStringList("%{option}=%{value}"); // eg --file=a.out
+ QStringList() << "%{option}" << "%{value}"; // eg --file a.out (two distinct arguments)
+ \endcode
+*/
+QStringList VCSBaseEditorParameterWidget::comboBoxOptionTemplate() const
+{
+ return d->m_comboBoxOptionTemplate;
+}
+
+void VCSBaseEditorParameterWidget::setComboBoxOptionTemplate(const QStringList &optTemplate) const
+{
+ d->m_comboBoxOptionTemplate = optTemplate;
+}
+
QString VCSBaseEditorParameterWidget::msgIgnoreWhiteSpaceLabel()
{
return tr("Ignore whitespace");
@@ -162,11 +212,24 @@ const QList<VCSBaseEditorParameterWidget::OptionMapping> &VCSBaseEditorParameter
QStringList VCSBaseEditorParameterWidget::argumentsForOption(const OptionMapping &mapping) const
{
- QStringList args;
const QToolButton *tb = qobject_cast<const QToolButton *>(mapping.widget);
if (tb != 0 && tb->isChecked())
- args += mapping.optionName;
- return args;
+ return QStringList(mapping.optionName);
+
+ const QComboBox *cb = qobject_cast<const QComboBox *>(mapping.widget);
+ if (cb != 0) {
+ const QString value = cb->itemData(cb->currentIndex()).toString();
+ QStringList args;
+ foreach (const QString &t, d->m_comboBoxOptionTemplate) {
+ QString a = t;
+ a.replace(QLatin1String("%{option}"), mapping.optionName);
+ a.replace(QLatin1String("%{value}"), value);
+ args += a;
+ }
+ return args;
+ }
+
+ return QStringList();
}
} // namespace VCSBase