diff --git a/libs/ui/forms/wdgfilterselector.ui b/libs/ui/forms/wdgfilterselector.ui --- a/libs/ui/forms/wdgfilterselector.ui +++ b/libs/ui/forms/wdgfilterselector.ui @@ -125,6 +125,16 @@ + + + + Get the XML for the current filter configuration. + + + XML + + + diff --git a/libs/ui/widgets/kis_filter_selector_widget.h b/libs/ui/widgets/kis_filter_selector_widget.h --- a/libs/ui/widgets/kis_filter_selector_widget.h +++ b/libs/ui/widgets/kis_filter_selector_widget.h @@ -37,7 +37,7 @@ class QShowEvent; /** - * XXX + * Widget for selecting the filter. This shows the widget if there is any. */ class KisFilterSelectorWidget : public QWidget { @@ -59,6 +59,7 @@ void setFilterIndex(const QModelIndex&); void editConfigurations(); void update(); + void showXMLdialog(); Q_SIGNALS: void configurationChanged(); void sigFilterGalleryToggled(bool visible); diff --git a/libs/ui/widgets/kis_filter_selector_widget.cc b/libs/ui/widgets/kis_filter_selector_widget.cc --- a/libs/ui/widgets/kis_filter_selector_widget.cc +++ b/libs/ui/widgets/kis_filter_selector_widget.cc @@ -27,6 +27,10 @@ #include #include #include +#include +#include +#include +#include #include "ui_wdgfilterselector.h" @@ -97,6 +101,7 @@ connect(d->uiFilterSelector.comboBoxPresets, SIGNAL(activated(int)), SLOT(slotBookmarkedFilterConfigurationSelected(int))); connect(d->uiFilterSelector.pushButtonEditPressets, SIGNAL(pressed()), SLOT(editConfigurations())); + connect(d->uiFilterSelector.btnXML, SIGNAL(clicked()), this, SLOT(showXMLdialog())); } KisFilterSelectorWidget::~KisFilterSelectorWidget() @@ -152,6 +157,32 @@ emit sigSizeChanged(); } +void KisFilterSelectorWidget::showXMLdialog() +{ + if (currentFilter()->showConfigurationWidget()) { + QDialog *xmlDialog = new QDialog(); + xmlDialog->setMinimumWidth(500); + xmlDialog->setWindowTitle(i18n("Filter configuration XML")); + QVBoxLayout *xmllayout = new QVBoxLayout(xmlDialog); + QPlainTextEdit *text = new QPlainTextEdit(xmlDialog); + KisFilterConfigurationSP config = configuration(); + text->setPlainText(config->toXML()); + xmllayout->addWidget(text); + QDialogButtonBox *buttons = new QDialogButtonBox(QDialogButtonBox::Ok|QDialogButtonBox::Cancel, xmlDialog); + connect(buttons, SIGNAL(accepted()), xmlDialog, SLOT(accept())); + connect(buttons, SIGNAL(rejected()), xmlDialog, SLOT(reject())); + xmllayout->addWidget(buttons); + if (xmlDialog->exec()==QDialog::Accepted) { + QDomDocument doc; + doc.setContent(text->toPlainText()); + config->fromXML(doc.documentElement()); + if (config) { + d->currentFilterConfigurationWidget->setConfiguration(config); + } + } + } +} + bool KisFilterSelectorWidget::isFilterGalleryVisible() const { return d->showFilterGallery; @@ -183,6 +214,7 @@ if (!widget) { // No widget, so display a label instead d->uiFilterSelector.comboBoxPresets->setEnabled(false); d->uiFilterSelector.pushButtonEditPressets->setEnabled(false); + d->uiFilterSelector.btnXML->setEnabled(false); d->currentFilterConfigurationWidget = 0; d->currentCentralWidget = new QLabel(i18n("No configuration options"), @@ -192,6 +224,7 @@ } else { d->uiFilterSelector.comboBoxPresets->setEnabled(true); d->uiFilterSelector.pushButtonEditPressets->setEnabled(true); + d->uiFilterSelector.btnXML->setEnabled(true); d->currentFilterConfigurationWidget = widget; d->currentCentralWidget = widget;