[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-kimageshop
Subject: [krita] libs/ui: [Feature] Allow access to the filter configuration xml.
From: Wolthera_van_Hövell_tot_Westerflier <null () kde ! org>
Date: 2017-10-12 12:40:05
Message-ID: E1e2cmT-0001B6-CF () code ! kde ! org
[Download RAW message or body]
Git commit 6feb19595179c5e6fe4ce6f90bd81409254e0fa4 by Wolthera van Hövell tot \
Westerflier. Committed on 12/10/2017 at 12:39.
Pushed by woltherav into branch 'master'.
[Feature] Allow access to the filter configuration xml.
This feature allows users to get the XML of the filterconfiguration directly, and \
thus allows them to edit the values directly, or more importantly, copy paste filters \
via text based media for working with teams, or just for sharing their favourite \
filter configurations.
So this will allow...
1. Users sharing filters in a team production.
2. Users sharing favourite filters as we store bookmarked filters in the kritarc, and \
thus everytime the configuration is reset, filter configs are lost. 3. Help users \
with determining how to make python InfoObjects for filters.
CCMAIL:Kimageshop@kde.org
Differential Revision: https://phabricator.kde.org/D8248
M +10 -0 libs/ui/forms/wdgfilterselector.ui
M +33 -0 libs/ui/widgets/kis_filter_selector_widget.cc
M +2 -1 libs/ui/widgets/kis_filter_selector_widget.h
https://commits.kde.org/krita/6feb19595179c5e6fe4ce6f90bd81409254e0fa4
diff --git a/libs/ui/forms/wdgfilterselector.ui b/libs/ui/forms/wdgfilterselector.ui
index 168a927592e..ac4ecdf3f9c 100644
--- a/libs/ui/forms/wdgfilterselector.ui
+++ b/libs/ui/forms/wdgfilterselector.ui
@@ -125,6 +125,16 @@
</property>
</widget>
</item>
+ <item>
+ <widget class="QPushButton" name="btnXML">
+ <property name="toolTip">
+ <string>Get the XML for the current filter configuration.</string>
+ </property>
+ <property name="text">
+ <string>XML</string>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
</item>
diff --git a/libs/ui/widgets/kis_filter_selector_widget.cc \
b/libs/ui/widgets/kis_filter_selector_widget.cc index 31450a5a365..a19408446f7 100644
--- a/libs/ui/widgets/kis_filter_selector_widget.cc
+++ b/libs/ui/widgets/kis_filter_selector_widget.cc
@@ -27,6 +27,10 @@
#include <QPushButton>
#include <QScrollArea>
#include <QLayout>
+#include <QDialogButtonBox>
+#include <QPlainTextEdit>
+#include <QDomDocument>
+#include <QDomElement>
#include "ui_wdgfilterselector.h"
@@ -97,6 +101,7 @@ KisFilterSelectorWidget::KisFilterSelectorWidget(QWidget* parent)
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 @@ void KisFilterSelectorWidget::showFilterGallery(bool visible)
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 @@ void KisFilterSelectorWidget::setFilter(KisFilterSP f)
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 @@ void KisFilterSelectorWidget::setFilter(KisFilterSP f)
} else {
d->uiFilterSelector.comboBoxPresets->setEnabled(true);
d->uiFilterSelector.pushButtonEditPressets->setEnabled(true);
+ d->uiFilterSelector.btnXML->setEnabled(true);
d->currentFilterConfigurationWidget = widget;
d->currentCentralWidget = widget;
diff --git a/libs/ui/widgets/kis_filter_selector_widget.h \
b/libs/ui/widgets/kis_filter_selector_widget.h index a7ee794106e..f9340bcce1f 100644
--- a/libs/ui/widgets/kis_filter_selector_widget.h
+++ b/libs/ui/widgets/kis_filter_selector_widget.h
@@ -37,7 +37,7 @@ class QHideEvent;
class QShowEvent;
/**
- * XXX
+ * Widget for selecting the filter. This shows the widget if there is any.
*/
class KisFilterSelectorWidget : public QWidget
{
@@ -59,6 +59,7 @@ protected Q_SLOTS:
void setFilterIndex(const QModelIndex&);
void editConfigurations();
void update();
+ void showXMLdialog();
Q_SIGNALS:
void configurationChanged();
void sigFilterGalleryToggled(bool visible);
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic