Krita Source Code Documentation
Loading...
Searching...
No Matches
KisWdgGenerator Class Reference

#include <kis_wdg_generator.h>

+ Inheritance diagram for KisWdgGenerator:

Classes

struct  Private
 

Public Slots

void showFilterGallery (bool)
 

Signals

void previewConfiguration ()
 

Public Member Functions

KisFilterConfigurationSP configuration ()
 
void initialize (KisViewManager *view)
 
 KisWdgGenerator (QWidget *parent)
 
 KisWdgGenerator (QWidget *parent, KisPaintDeviceSP dev)
 
void setConfiguration (const KisFilterConfigurationSP config)
 
 ~KisWdgGenerator () override
 

Private Slots

void slotGeneratorActivated (int)
 

Private Attributes

Private *const d {nullptr}
 

Detailed Description

A widget that allows users to select a generator and create a config object for it.

XXX: make use of bookmarked configuration things, like in the filter widget.

Definition at line 23 of file kis_wdg_generator.h.

Constructor & Destructor Documentation

◆ KisWdgGenerator() [1/2]

KisWdgGenerator::KisWdgGenerator ( QWidget * parent)

Definition at line 56 of file kis_wdg_generator.cpp.

57 : QWidget(parent)
58 , d(new Private())
59{
61}
Private *const d
static KoColorSpaceRegistry * instance()

References KoColorSpaceRegistry::instance().

◆ KisWdgGenerator() [2/2]

KisWdgGenerator::KisWdgGenerator ( QWidget * parent,
KisPaintDeviceSP dev )

◆ ~KisWdgGenerator()

KisWdgGenerator::~KisWdgGenerator ( )
override

Definition at line 63 of file kis_wdg_generator.cpp.

64{
65 delete d;
66}

References d.

Member Function Documentation

◆ configuration()

KisFilterConfigurationSP KisWdgGenerator::configuration ( )

Definition at line 115 of file kis_wdg_generator.cpp.

116{
117 KisConfigWidget * wdg = dynamic_cast<KisConfigWidget*>(d->centralWidget);
118 if (wdg) {
119 KisFilterConfigurationSP config = dynamic_cast<KisFilterConfiguration*>(wdg->configuration().data());
120 if (config) {
121 return config;
122 }
123 } else {
125 }
126 return nullptr;
127}
virtual KisPropertiesConfigurationSP configuration() const =0
static KisResourcesInterfaceSP instance()
virtual KisFilterConfigurationSP defaultConfiguration(KisResourcesInterfaceSP resourcesInterface) const

References KisWdgGenerator::Private::centralWidget, KisConfigWidget::configuration(), KisWdgGenerator::Private::currentGenerator, d, KisSharedPtr< T >::data(), KisBaseProcessor::defaultConfiguration(), and KisGlobalResourcesInterface::instance().

◆ initialize()

void KisWdgGenerator::initialize ( KisViewManager * view)

Definition at line 68 of file kis_wdg_generator.cpp.

69{
70 d->view = view;
71 d->uiWdgGenerators.setupUi(this);
72 d->widgetLayout = new QGridLayout(d->uiWdgGenerators.centralWidgetHolder);
73 d->widgetLayout->setContentsMargins(0, 0, 0, 0);
74 d->widgetLayout->setHorizontalSpacing(0);
76 generatorNames.sort();
77
78 Q_FOREACH (const QString &generatorName, generatorNames) {
79
80 KisGeneratorSP generator = KisGeneratorRegistry::instance()->get(generatorName);
81 // The item is automatically added to the lstGenerators listwidget
82 new KisGeneratorItem(generator,
83 d->uiWdgGenerators.lstGenerators,
84 QListWidgetItem::UserType + 1);
85
86 }
87 connect(d->uiWdgGenerators.lstGenerators, SIGNAL(currentRowChanged(int)),
88 this, SLOT(slotGeneratorActivated(int)));
89
90 if (d->uiWdgGenerators.lstGenerators->count() > 0) {
91 d->uiWdgGenerators.lstGenerators->setCurrentRow(0);
92 }
93}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
static KisGeneratorRegistry * instance()
void slotGeneratorActivated(int)
T get(const QString &id) const
QList< QString > keys() const

References connect(), d, KoGenericRegistry< T >::get(), KisGeneratorRegistry::instance(), KoGenericRegistry< T >::keys(), slotGeneratorActivated(), KisWdgGenerator::Private::uiWdgGenerators, KisWdgGenerator::Private::view, and KisWdgGenerator::Private::widgetLayout.

◆ previewConfiguration

void KisWdgGenerator::previewConfiguration ( )
signal

◆ setConfiguration()

void KisWdgGenerator::setConfiguration ( const KisFilterConfigurationSP config)

Definition at line 97 of file kis_wdg_generator.cpp.

98{
99 for (int i = 0; i < d->uiWdgGenerators.lstGenerators->count(); ++i) {
100 KisGeneratorItem * item = static_cast<KisGeneratorItem*>(d->uiWdgGenerators.lstGenerators->item(i));
101 if (item->generator->id() == config->name()) {
102 // match!
104 d->uiWdgGenerators.lstGenerators->setCurrentRow(i);
105 KisConfigWidget * wdg = dynamic_cast<KisConfigWidget*>(d->centralWidget);
106 if (wdg) {
107 wdg->setConfiguration(config);
108 }
109
110 return;
111 }
112 }
113}
virtual void setConfiguration(const KisPropertiesConfigurationSP config)=0
KisGeneratorSP generator

References KisWdgGenerator::Private::centralWidget, d, KisGeneratorItem::generator, KisBaseProcessor::id, KisConfigWidget::setConfiguration(), slotGeneratorActivated(), and KisWdgGenerator::Private::uiWdgGenerators.

◆ showFilterGallery

void KisWdgGenerator::showFilterGallery ( bool visible)
slot

Definition at line 175 of file kis_wdg_generator.cpp.

176{
177 d->uiWdgGenerators.lstGenerators->setVisible(visible);
178}

References d, and KisWdgGenerator::Private::uiWdgGenerators.

◆ slotGeneratorActivated

void KisWdgGenerator::slotGeneratorActivated ( int row)
privateslot

Definition at line 130 of file kis_wdg_generator.cpp.

131{
132 // Store the old settings
133 KisConfigWidget *wdg = dynamic_cast<KisConfigWidget*>(d->centralWidget);
134 if (wdg) {
136 for (int i = 0; i < d->uiWdgGenerators.lstGenerators->count(); ++i) {
137 KisGeneratorItem * item = static_cast<KisGeneratorItem*>(d->uiWdgGenerators.lstGenerators->item(i));
138 if (item->generator->id() == static_cast<KisFilterConfiguration*>(config.data())->name()) {
139 item->currentConfiguration = wdg->configuration();
140 }
141 }
142 }
143
144 // Retrieve the new configuration
145 KisGeneratorItem *item = dynamic_cast<KisGeneratorItem*>(d->uiWdgGenerators.lstGenerators->item(row));
146
147 if (!item) {
148 d->centralWidget = new QLabel(i18n("No configuration options."), d->uiWdgGenerators.centralWidgetHolder);
149 }
150 else {
151
153
154 delete d->centralWidget;
155
156 KisConfigWidget* widget =
157 d->currentGenerator->createConfigurationWidget(d->uiWdgGenerators.centralWidgetHolder, d->dev, true);
158
159 if (!widget) { // No widget, so display a label instead
160 d->centralWidget = new QLabel(i18n("No configuration options."),
161 d->uiWdgGenerators.centralWidgetHolder);
162 } else {
163 d->centralWidget = widget;
164
165 connect( widget, SIGNAL(sigConfigurationUpdated()), this, SIGNAL(previewConfiguration()));
166
167 widget->setView(d->view);
169 }
170 }
171 d->widgetLayout->addWidget(d->centralWidget, 0 , 0);
172 d->uiWdgGenerators.centralWidgetHolder->setMinimumSize(d->centralWidget->minimumSize());
173}
virtual void setView(KisViewManager *view)
KisPropertiesConfigurationSP currentConfiguration
void previewConfiguration()
const char * name(StandardAction id)
virtual KisConfigWidget * createConfigurationWidget(QWidget *parent, const KisPaintDeviceSP dev, bool useForMasks) const

References KisWdgGenerator::Private::centralWidget, KisConfigWidget::configuration(), connect(), KisBaseProcessor::createConfigurationWidget(), KisGeneratorItem::currentConfiguration, KisWdgGenerator::Private::currentGenerator, d, KisSharedPtr< T >::data(), KisWdgGenerator::Private::dev, KisGeneratorItem::generator, KisBaseProcessor::id, previewConfiguration(), KisConfigWidget::setConfiguration(), KisConfigWidget::setView(), KisWdgGenerator::Private::uiWdgGenerators, KisWdgGenerator::Private::view, and KisWdgGenerator::Private::widgetLayout.

Member Data Documentation

◆ d

Private* const KisWdgGenerator::d {nullptr}
private

Definition at line 54 of file kis_wdg_generator.h.

54{nullptr};

The documentation for this class was generated from the following files: