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

#include <KisTemplateCreateDia.h>

+ Inheritance diagram for KisTemplateCreateDia:

Static Public Member Functions

static void createTemplate (const QString &templatesResourcePath, const char *suffix, KisDocument *document, QWidget *parent=0)
 
- Static Public Member Functions inherited from KoDialog
static int groupSpacingHint ()
 
static QString makeStandardCaption (const QString &userCaption, QWidget *window=0, CaptionFlags flags=HIGCompliantCaption)
 
static int marginHint ()
 
static void resizeLayout (QLayout *lay, int margin, int spacing)
 
static void resizeLayout (QWidget *widget, int margin, int spacing)
 
static int spacingHint ()
 

Private Slots

void slotAddGroup ()
 
void slotCustom ()
 
void slotDefault ()
 
void slotNameChanged (const QString &name)
 
void slotOk ()
 
void slotRemove ()
 
void slotSelect ()
 
void slotSelectionChanged ()
 

Private Member Functions

void fillGroupTree ()
 
 KisTemplateCreateDia (const QString &templatesResourcePath, const QString &filePath, const QPixmap &thumbnail, QWidget *parent=0)
 
void updatePixmap ()
 
 ~KisTemplateCreateDia () override
 

Private Attributes

KisTemplateCreateDiaPrivate *const d
 

Additional Inherited Members

- Public Types inherited from KoDialog
enum  ButtonCode {
  None = 0x00000000 , Help = 0x00000001 , Default = 0x00000002 , Ok = 0x00000004 ,
  Apply = 0x00000008 , Try = 0x00000010 , Cancel = 0x00000020 , Close = 0x00000040 ,
  No = 0x00000080 , Yes = 0x00000100 , Reset = 0x00000200 , Details = 0x00000400 ,
  User1 = 0x00001000 , User2 = 0x00002000 , User3 = 0x00004000 , NoDefault = 0x00008000
}
 
enum  ButtonPopupMode { InstantPopup = 0 , DelayedPopup = 1 }
 
enum  CaptionFlag { NoCaptionFlags = 0 , AppNameCaption = 1 , ModifiedCaption = 2 , HIGCompliantCaption = AppNameCaption }
 
- Public Slots inherited from KoDialog
void delayedDestruct ()
 
void enableButton (ButtonCode id, bool state)
 
void enableButtonApply (bool state)
 
void enableButtonCancel (bool state)
 
void enableButtonOk (bool state)
 
void enableLinkedHelp (bool state)
 
bool isDetailsWidgetVisible () const
 
virtual void setCaption (const QString &caption)
 
virtual void setCaption (const QString &caption, bool modified)
 
void setDetailsWidget (QWidget *detailsWidget)
 
void setDetailsWidgetVisible (bool visible)
 
void setHelp (const QString &anchor, const QString &appname=QString())
 
void setHelpLinkText (const QString &text)
 
virtual void setPlainCaption (const QString &caption)
 
- Signals inherited from KoDialog
void aboutToShowDetails ()
 
void applyClicked ()
 
void buttonClicked (KoDialog::ButtonCode button)
 
void cancelClicked ()
 
void closeClicked ()
 
void defaultClicked ()
 
void finished ()
 
void helpClicked ()
 
void hidden ()
 
void layoutHintChanged ()
 
void noClicked ()
 
void okClicked ()
 
void resetClicked ()
 
void tryClicked ()
 
void user1Clicked ()
 
void user2Clicked ()
 
void user3Clicked ()
 
void yesClicked ()
 
- Public Member Functions inherited from KoDialog
QPushButton * button (ButtonCode id) const
 
QIcon buttonIcon (ButtonCode id) const
 
QString buttonText (ButtonCode id) const
 
QString buttonToolTip (ButtonCode id) const
 
QString buttonWhatsThis (ButtonCode id) const
 
ButtonCode defaultButton () const
 
QString helpLinkText () const
 
void incrementInitialSize (const QSize &size)
 
bool isButtonEnabled (ButtonCode id) const
 
 KoDialog (QWidget *parent=0, Qt::WindowFlags f=Qt::WindowFlags())
 
QWidget * mainWidget ()
 
QSize minimumSizeHint () const override
 
void setButtonFocus (ButtonCode id)
 
void setButtonGuiItem (ButtonCode id, const KGuiItem &item)
 
void setButtonIcon (ButtonCode id, const QIcon &icon)
 
void setButtons (ButtonCodes buttonMask)
 
void setButtonsOrientation (Qt::Orientation orientation)
 
void setButtonText (ButtonCode id, const QString &text)
 
void setButtonToolTip (ButtonCode id, const QString &text)
 
void setButtonWhatsThis (ButtonCode id, const QString &text)
 
void setDefaultButton (ButtonCode id)
 
void setEscapeButton (ButtonCode id)
 
void setInitialSize (const QSize &size)
 
void setMainWidget (QWidget *widget)
 
void showButton (ButtonCode id, bool state)
 
void showButtonSeparator (bool state)
 
QSize sizeHint () const override
 
 ~KoDialog () override
 
- Protected Slots inherited from KoDialog
virtual void slotButtonClicked (int button)
 
- Protected Member Functions inherited from KoDialog
void closeEvent (QCloseEvent *e) override
 
void hideEvent (QHideEvent *) override
 
void keyPressEvent (QKeyEvent *) override
 
void showEvent (QShowEvent *e) override
 

Detailed Description

Definition at line 26 of file KisTemplateCreateDia.h.

Constructor & Destructor Documentation

◆ KisTemplateCreateDia()

KisTemplateCreateDia::KisTemplateCreateDia ( const QString & templatesResourcePath,
const QString & filePath,
const QPixmap & thumbnail,
QWidget * parent = 0 )
private

Definition at line 80 of file KisTemplateCreateDia.cpp.

82 : KoDialog(parent)
83 , d(new KisTemplateCreateDiaPrivate(templatesResourcePath, filePath, thumbnail))
84{
87 setCaption( i18n( "Create Template" ) );
88 setModal( true );
89 setObjectName( "template create dia" );
90
91 QWidget *mainwidget = mainWidget();
92 QHBoxLayout *mbox=new QHBoxLayout( mainwidget );
93 QVBoxLayout* leftbox = new QVBoxLayout();
94 mbox->addLayout( leftbox );
95
96 QLabel *label=new QLabel(i18nc("Template name", "Name:"), mainwidget);
97 QHBoxLayout *namefield=new QHBoxLayout();
98 leftbox->addLayout( namefield );
99 namefield->addWidget(label);
100 d->m_name=new QLineEdit(mainwidget);
101 d->m_name->setFocus();
102 connect(d->m_name, SIGNAL(textChanged(QString)),
103 this, SLOT(slotNameChanged(QString)));
104 namefield->addWidget(d->m_name);
105
106 label=new QLabel(i18nc("Group as in Template Group", "Group:"), mainwidget);
107 leftbox->addWidget(label);
108 d->m_groups = new QTreeWidget(mainwidget);
109 leftbox->addWidget(d->m_groups);
110 d->m_groups->setColumnCount(1);
111 d->m_groups->setHeaderHidden(true);
112 d->m_groups->setRootIsDecorated(true);
113 d->m_groups->setSortingEnabled(true);
114
116 d->m_groups->sortItems(0, Qt::AscendingOrder);
117
118 QHBoxLayout *bbox=new QHBoxLayout();
119 leftbox->addLayout( bbox );
120 d->m_add=new QPushButton(i18nc("Group as in Template Group", "&Add Group..."), mainwidget);
121 connect(d->m_add, SIGNAL(clicked()), this, SLOT(slotAddGroup()));
122 bbox->addWidget(d->m_add);
123 d->m_remove=new QPushButton(i18n("&Remove"), mainwidget);
124 connect(d->m_remove, SIGNAL(clicked()), this, SLOT(slotRemove()));
125 bbox->addWidget(d->m_remove);
126
127 QVBoxLayout *rightbox=new QVBoxLayout();
128 mbox->addLayout( rightbox );
129 QGroupBox *pixbox = new QGroupBox(i18n("Picture"), mainwidget);
130 rightbox->addWidget(pixbox);
131 QVBoxLayout *pixlayout=new QVBoxLayout(pixbox );
132 d->m_default=new QRadioButton(i18n("&Preview"), pixbox);
133 d->m_default->setChecked(true);
134 connect(d->m_default, SIGNAL(clicked()), this, SLOT(slotDefault()));
135 pixlayout->addWidget(d->m_default);
136 QHBoxLayout *custombox=new QHBoxLayout();
137 d->m_custom=new QRadioButton(i18n("Custom:"), pixbox);
138 d->m_custom->setChecked(false);
139 connect(d->m_custom, SIGNAL(clicked()), this, SLOT(slotCustom()));
140 custombox->addWidget(d->m_custom);
141 d->m_select=new QPushButton(i18n("&Select..."), pixbox);
142 connect(d->m_select, SIGNAL(clicked()), this, SLOT(slotSelect()));
143 custombox->addWidget(d->m_select);
144 custombox->addStretch(1);
145 pixlayout->addLayout(custombox);
146 d->m_preview=new QLabel(pixbox); // setPixmap() -> auto resize?
147 pixlayout->addWidget(d->m_preview, 0, Qt::AlignCenter);
148 pixlayout->addStretch(1);
149
150 d->m_defaultTemplate = new QCheckBox( i18n("Use the new template as default"), mainwidget );
151 d->m_defaultTemplate->setChecked( true );
152 d->m_defaultTemplate->setVisible( false );
153 d->m_defaultTemplate->setToolTip(i18n("Use the new template every time Krita starts"));
154 rightbox->addWidget( d->m_defaultTemplate );
155
156 enableButtonOk(false);
157 d->m_changed=false;
158 updatePixmap();
159
160 connect(d->m_groups, SIGNAL(itemSelectionChanged()), this, SLOT(slotSelectionChanged()));
161
162 d->m_remove->setEnabled(d->m_groups->currentItem());
163 connect(this, SIGNAL(okClicked()), this, SLOT(slotOk()));
164}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
KisTemplateCreateDiaPrivate *const d
void slotNameChanged(const QString &name)
QWidget * mainWidget()
Definition KoDialog.cpp:368
void enableButtonOk(bool state)
Definition KoDialog.cpp:615
virtual void setCaption(const QString &caption)
Definition KoDialog.cpp:498
void setButtons(ButtonCodes buttonMask)
Definition KoDialog.cpp:195
void setDefaultButton(ButtonCode id)
Definition KoDialog.cpp:302
@ Ok
Show Ok button. (this button accept()s the dialog; result set to QDialog::Accepted)
Definition KoDialog.h:127
@ Cancel
Show Cancel-button. (this button reject()s the dialog; result set to QDialog::Rejected)
Definition KoDialog.h:130
KoDialog(QWidget *parent=0, Qt::WindowFlags f=Qt::WindowFlags())
Definition KoDialog.cpp:176
void okClicked()

References KoDialog::Cancel, connect(), d, KoDialog::enableButtonOk(), fillGroupTree(), KisTemplateCreateDiaPrivate::m_add, KisTemplateCreateDiaPrivate::m_changed, KisTemplateCreateDiaPrivate::m_custom, KisTemplateCreateDiaPrivate::m_default, KisTemplateCreateDiaPrivate::m_defaultTemplate, KisTemplateCreateDiaPrivate::m_groups, KisTemplateCreateDiaPrivate::m_name, KisTemplateCreateDiaPrivate::m_preview, KisTemplateCreateDiaPrivate::m_remove, KisTemplateCreateDiaPrivate::m_select, KoDialog::mainWidget(), KoDialog::Ok, KoDialog::okClicked(), KoDialog::setButtons(), KoDialog::setCaption(), KoDialog::setDefaultButton(), slotAddGroup(), slotCustom(), slotDefault(), slotNameChanged(), slotOk(), slotRemove(), slotSelect(), slotSelectionChanged(), and updatePixmap().

◆ ~KisTemplateCreateDia()

KisTemplateCreateDia::~KisTemplateCreateDia ( )
overrideprivate

Definition at line 166 of file KisTemplateCreateDia.cpp.

166 {
167 delete d;
168}

References d.

Member Function Documentation

◆ createTemplate()

void KisTemplateCreateDia::createTemplate ( const QString & templatesResourcePath,
const char * suffix,
KisDocument * document,
QWidget * parent = 0 )
static

Definition at line 183 of file KisTemplateCreateDia.cpp.

186{
187 Q_UNUSED(suffix);
188 QString fileName;
189 {
190 QTemporaryFile tempFile;
191 if (!tempFile.open()) {
192 qWarning("Creation of temporary file to store template failed.");
193 return;
194 }
195 fileName = tempFile.fileName();
196 }
197
198 bool retval = document->exportDocumentSync(fileName, KisDocument::nativeFormatMimeType());
199 if (!retval) {
200 qWarning("Could not save template");
201 return;
202 }
203 const QPixmap thumbnail = document->generatePreview(QSize(thumbnailExtent, thumbnailExtent));
204 KisTemplateCreateDia *dia = new KisTemplateCreateDia(templatesResourcePath, fileName, thumbnail, parent);
205 dia->exec();
206 delete dia;
207
208 QDir d;
209 d.remove(fileName);
210}
static const int thumbnailExtent
static QByteArray nativeFormatMimeType()
KisTemplateCreateDia(const QString &templatesResourcePath, const QString &filePath, const QPixmap &thumbnail, QWidget *parent=0)

References d, KisTemplateCreateDia(), KisDocument::nativeFormatMimeType(), and thumbnailExtent.

◆ fillGroupTree()

void KisTemplateCreateDia::fillGroupTree ( )
private

Definition at line 503 of file KisTemplateCreateDia.cpp.

503 {
504
505 Q_FOREACH (KisTemplateGroup *group, d->m_tree.groups()) {
506 if (group->isHidden())
507 continue;
508 QTreeWidgetItem *groupItem=new QTreeWidgetItem(d->m_groups, QStringList() << group->name());
509
510 Q_FOREACH (KisTemplate *t, group->templates()) {
511 if (t->isHidden())
512 continue;
513 (void)new QTreeWidgetItem(groupItem, QStringList() << t->name());
514 }
515 }
516}
QList< QString > QStringList
QString name() const
QList< KisTemplate * > templates() const
bool isHidden() const
If all children are hidden, we are hidden too.
QList< KisTemplateGroup * > groups() const
QString name() const
Definition KisTemplate.h:28
bool isHidden() const
Definition KisTemplate.h:45
typedef void(QOPENGLF_APIENTRYP PFNGLINVALIDATEBUFFERDATAPROC)(GLuint buffer)

References d, KisTemplateTree::groups(), KisTemplate::isHidden(), KisTemplateGroup::isHidden(), KisTemplateCreateDiaPrivate::m_groups, KisTemplateCreateDiaPrivate::m_tree, KisTemplate::name(), KisTemplateGroup::name(), KisTemplateGroup::templates(), and void().

◆ slotAddGroup

void KisTemplateCreateDia::slotAddGroup ( )
privateslot

Definition at line 405 of file KisTemplateCreateDia.cpp.

405 {
406
407 const QString name = QInputDialog::getText(this, i18nc("Group as in Template Group", "Add Group"), i18nc("Group as in Template Group", "Enter group name:"));
408 KisTemplateGroup *group = d->m_tree.find(name);
409 if (group && !group->isHidden()) {
410 QMessageBox::information( this, i18n("This name has already been used."), i18nc("Group as in Template Group", "Add Group") );
411 return;
412 }
414 dir+=name;
415 KisTemplateGroup *newGroup=new KisTemplateGroup(name, dir, 0, true);
416 d->m_tree.add(newGroup);
417 QTreeWidgetItem *item = new QTreeWidgetItem(d->m_groups, QStringList() << name);
418 d->m_groups->setCurrentItem(item);
419 d->m_groups->sortItems(0, Qt::AscendingOrder);
420 d->m_name->setFocus();
421 enableButtonOk(true);
422 d->m_changed=true;
423}
QString templatesResourcePath() const
bool add(KisTemplateGroup *g)
KisTemplateGroup * find(const QString &name) const
static QString saveLocation(const QString &type, const QString &suffix=QString(), bool create=true)
const char * name(StandardAction id)

References KisTemplateTree::add(), d, KoDialog::enableButtonOk(), KisTemplateTree::find(), KisTemplateGroup::isHidden(), KisTemplateCreateDiaPrivate::m_changed, KisTemplateCreateDiaPrivate::m_groups, KisTemplateCreateDiaPrivate::m_name, KisTemplateCreateDiaPrivate::m_tree, KoResourcePaths::saveLocation(), and KisTemplateTree::templatesResourcePath().

◆ slotCustom

void KisTemplateCreateDia::slotCustom ( )
privateslot

Definition at line 361 of file KisTemplateCreateDia.cpp.

361 {
362
363 d->m_default->setChecked(false);
364 d->m_custom->setChecked(true);
365 if (d->m_customFile.isEmpty())
366 slotSelect();
367 else
368 updatePixmap();
369}

References d, KisTemplateCreateDiaPrivate::m_custom, KisTemplateCreateDiaPrivate::m_customFile, KisTemplateCreateDiaPrivate::m_default, slotSelect(), and updatePixmap().

◆ slotDefault

void KisTemplateCreateDia::slotDefault ( )
privateslot

Definition at line 354 of file KisTemplateCreateDia.cpp.

354 {
355
356 d->m_default->setChecked(true);
357 d->m_custom->setChecked(false);
358 updatePixmap();
359}

References d, KisTemplateCreateDiaPrivate::m_custom, KisTemplateCreateDiaPrivate::m_default, and updatePixmap().

◆ slotNameChanged

void KisTemplateCreateDia::slotNameChanged ( const QString & name)
privateslot

Definition at line 397 of file KisTemplateCreateDia.cpp.

397 {
398
399 if ( ( name.trimmed().isEmpty() || !d->m_groups->topLevelItem(0) ) && !d->m_changed )
400 enableButtonOk(false);
401 else
402 enableButtonOk(true);
403}

References d, KoDialog::enableButtonOk(), KisTemplateCreateDiaPrivate::m_changed, and KisTemplateCreateDiaPrivate::m_groups.

◆ slotOk

void KisTemplateCreateDia::slotOk ( )
privateslot

Definition at line 221 of file KisTemplateCreateDia.cpp.

221 {
222
223 // get the current item, if there is one...
224 QTreeWidgetItem *item = d->m_groups->currentItem();
225 if (!item)
226 item = d->m_groups->topLevelItem(0);
227 if (!item) { // safe :)
230 return;
231 }
232 // is it a group or a template? anyway - get the group :)
233 if (item->parent() != 0)
234 item=item->parent();
235 if (!item) { // *very* safe :P
238 return;
239 }
240
241 KisTemplateGroup *group=d->m_tree.find(item->text(0));
242 if (!group) { // even safer
245 return;
246 }
247
248 if (d->m_name->text().isEmpty()) {
251 return;
252 }
253
254 // copy the tmp file and the picture the app provides
256 dir += group->name();
257 QString templateDir = dir+"/.source/";
258 QString iconDir = dir+"/.icon/";
259
260 QString file = KisTemplates::trimmed(d->m_name->text());
261 QString tmpIcon = ".icon/"+file;
262 tmpIcon += ".png";
263 QString icon=iconDir+file;
264 icon += ".png";
265
266 QString ext = ".kra";
267
268 QString dest = templateDir + file + ext;
269 if (QFile::exists(dest)) {
270 do {
271 file = file.prepend( '_' );
272 dest = templateDir + file + ext;
273 tmpIcon=".icon/" + file + ".png";
274 icon=iconDir + file + ".png";
275 }
276 while (QFile(dest).exists());
277 }
278 bool ignore = false;
279 KisTemplate *t = new KisTemplate(d->m_name->text(), QString(), ".source/"+ file + ext, tmpIcon, "", "", false, true);
280 if (!group->add(t)) {
281 KisTemplate *existingTemplate=group->find(d->m_name->text());
282 if (existingTemplate && !existingTemplate->isHidden()) {
283 if (QMessageBox::warning(this,
284 i18nc("@title:window", "Krita"),
285 i18n("Do you really want to overwrite the existing '%1' template?", existingTemplate->name()),
286 QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes) == QMessageBox::Yes) {
287 group->add(t, true);
288 }
289 else {
290 delete t;
291 return;
292 }
293 }
294 else {
295 ignore = true;
296 }
297 }
298
299 QDir path;
300 if (!path.mkpath(templateDir) || !path.mkpath(iconDir)) {
303 return;
304 }
305
306 QString orig;
307 orig = d->m_filePath;
308 // don't overwrite the hidden template file with a new non-hidden one
309 if (!ignore) {
310 if (!QFile::copy(d->m_filePath, dest)) {
311 qWarning() << "Could not copy" << d->m_filePath << "to" << dest;
312 }
313
314 // save the picture as icon
315 if (d->m_default->isChecked() && !d->m_thumbnail.isNull()) {
317 } else if (!d->m_customPixmap.isNull()) {
319 } else {
320 warnUI << "Could not save the preview picture!";
321 }
322 }
323
324 // if there's a .directory file, we copy this one, too
325 bool ready=false;
326 QStringList tmp=group->dirs();
327 for(QStringList::ConstIterator it=tmp.constBegin(); it!=tmp.constEnd() && !ready; ++it) {
328 if ((*it).contains(dir)==0) {
329 orig = (*it) + ".directory";
330 // Check if we can read the file
331 if (QFile(orig).exists()) {
332 dest = dir + "/.directory";
333 // We copy the file with overwrite
334 if (!QFile(orig).copy(dest)) {
335 warnKrita << "Failed to copy from" << orig << "to" << dest;
336 }
337 ready = true;
338 }
339 }
340 }
341
343
344 if ( d->m_defaultTemplate->isChecked() )
345 {
346
347 KConfigGroup grp( KSharedConfig::openConfig(), "TemplateChooserDialog");
348 grp.writeEntry( "LastReturnType", "Template" );
349 grp.writePathEntry( "FullTemplateName", dir + '/' + t->file() );
350 grp.writePathEntry( "AlwaysUseTemplate", dir + '/' + t->file() );
351 }
352}
static void saveAsQuadraticPng(const QPixmap &pixmap, const QString &fileName)
KisTemplate * find(const QString &name) const
QStringList dirs() const
bool add(KisTemplate *t, bool force=false, bool touch=true)
QString file() const
Definition KisTemplate.h:34
virtual void slotButtonClicked(int button)
Definition KoDialog.cpp:820
#define warnKrita
Definition kis_debug.h:87
#define warnUI
Definition kis_debug.h:94
QString trimmed(const QString &string)

References KisTemplateGroup::add(), KoDialog::Cancel, d, KisTemplateGroup::dirs(), KisTemplate::file(), KisTemplateGroup::find(), KisTemplateTree::find(), KisTemplate::isHidden(), KisTemplateCreateDiaPrivate::m_customPixmap, KisTemplateCreateDiaPrivate::m_default, KisTemplateCreateDiaPrivate::m_defaultTemplate, KisTemplateCreateDiaPrivate::m_filePath, KisTemplateCreateDiaPrivate::m_groups, KisTemplateCreateDiaPrivate::m_name, KisTemplateCreateDiaPrivate::m_thumbnail, KisTemplateCreateDiaPrivate::m_tree, KisTemplate::name(), KisTemplateGroup::name(), saveAsQuadraticPng(), KoResourcePaths::saveLocation(), KoDialog::slotButtonClicked(), KisTemplateTree::templatesResourcePath(), KisTemplates::trimmed(), warnKrita, warnUI, and KisTemplateTree::writeTemplateTree().

◆ slotRemove

void KisTemplateCreateDia::slotRemove ( )
privateslot

Definition at line 425 of file KisTemplateCreateDia.cpp.

425 {
426
427 QTreeWidgetItem *item = d->m_groups->currentItem();
428 if (!item)
429 return;
430
431 QString what;
432 QString removed;
433 if (item->parent() == 0) {
434 what = i18nc("Group as in Template Group", "Do you really want to remove that group?");
435 removed = i18nc("@title:window", "Remove Group");
436 } else {
437 what = i18n("Do you really want to remove that template?");
438 removed = i18nc("@title:window", "Remove Template");
439 }
440
441 if (QMessageBox::warning(this,
442 removed,
443 what,
444 QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes) == QMessageBox:: No) {
445 d->m_name->setFocus();
446 return;
447 }
448
449 if (item->parent() == 0) {
450 KisTemplateGroup *group=d->m_tree.find(item->text(0));
451 if (group)
452 group->setHidden(true);
453 }
454 else {
455 bool done=false;
457 QList<KisTemplateGroup*>::const_iterator it = groups.constBegin();
458 for(; it != groups.constEnd() && !done; ++it) {
459 KisTemplate *t = (*it)->find(item->text(0));
460
461 if (t) {
462 t->setHidden(true);
463 done=true;
464 }
465 }
466 }
467 delete item;
468 item=0;
469 d->m_name->setFocus();
470 d->m_changed=true;
472}
void setHidden(bool hidden=true) const
if we should hide, we hide all the children
void setHidden(bool hidden=true)
Definition KisTemplate.h:48

References d, KisTemplateTree::find(), KisTemplateTree::groups(), KisTemplateCreateDiaPrivate::m_changed, KisTemplateCreateDiaPrivate::m_groups, KisTemplateCreateDiaPrivate::m_name, KisTemplateCreateDiaPrivate::m_tree, KisTemplate::setHidden(), KisTemplateGroup::setHidden(), and KisTemplateTree::writeTemplateTree().

◆ slotSelect

void KisTemplateCreateDia::slotSelect ( )
privateslot

Definition at line 371 of file KisTemplateCreateDia.cpp.

371 {
372
373 d->m_default->setChecked(false);
374 d->m_custom->setChecked(true);
375
376 KoFileDialog dlg(this, KoFileDialog::OpenFile, "TemplateImages");
377 dlg.setDefaultDir(QStandardPaths::writableLocation(QStandardPaths::PicturesLocation));
378 dlg.setImageFilters();
379 dlg.setCaption(i18n("Select an image"));
380 QString fn = dlg.filename();
381 if (fn.isEmpty()) {
382 if (d->m_customFile.isEmpty()) {
383 d->m_default->setChecked(true);
384 d->m_custom->setChecked(false);
385 }
386 return;
387 }
388 QImage image(fn);
389 if (image.isNull()) {
390 QMessageBox::warning(this, i18nc("@title:window", "Krita"), i18n("%1 is not a valid image file!", fn));
391 }
392 d->m_customFile = fn;
393 d->m_customPixmap = QPixmap();
394 updatePixmap();
395}

References d, KoFileDialog::filename(), KisTemplateCreateDiaPrivate::m_custom, KisTemplateCreateDiaPrivate::m_customFile, KisTemplateCreateDiaPrivate::m_customPixmap, KisTemplateCreateDiaPrivate::m_default, KoFileDialog::OpenFile, KoFileDialog::setCaption(), KoFileDialog::setDefaultDir(), KoFileDialog::setImageFilters(), and updatePixmap().

◆ slotSelectionChanged

void KisTemplateCreateDia::slotSelectionChanged ( )
privateslot

Definition at line 170 of file KisTemplateCreateDia.cpp.

171{
172 const QTreeWidgetItem* item = d->m_groups->currentItem();
173 d->m_remove->setEnabled( item );
174 if ( ! item )
175 return;
176
177 if ( item->parent() != 0 )
178 {
179 d->m_name->setText( item->text( 0 ) );
180 }
181}

References d, KisTemplateCreateDiaPrivate::m_groups, KisTemplateCreateDiaPrivate::m_name, and KisTemplateCreateDiaPrivate::m_remove.

◆ updatePixmap()

void KisTemplateCreateDia::updatePixmap ( )
private

Definition at line 474 of file KisTemplateCreateDia.cpp.

474 {
475
476 if (d->m_default->isChecked() && !d->m_thumbnail.isNull()) {
477 d->m_preview->setPixmap(d->m_thumbnail);
478 }
479 else if (d->m_custom->isChecked() && !d->m_customFile.isEmpty()) {
480
481 if (d->m_customPixmap.isNull()) {
482 dbgUI <<"Trying to load picture" << d->m_customFile;
483 // use the code in KisTemplate to load the image... hacky, I know :)
484 KisTemplate t("foo", "bar", QString(), d->m_customFile);
485 d->m_customPixmap = t.loadPicture();
486 }
487 else {
488 warnUI << "Trying to load picture";
489 }
490
491 if (!d->m_customPixmap.isNull()) {
492 d->m_preview->setPixmap(d->m_customPixmap);
493 }
494 else {
495 d->m_preview->setText(i18n("Could not load picture."));
496 }
497 }
498 else {
499 d->m_preview->setText(i18n("No picture available."));
500 }
501}
#define dbgUI
Definition kis_debug.h:52

References d, dbgUI, KisTemplate::loadPicture(), KisTemplateCreateDiaPrivate::m_custom, KisTemplateCreateDiaPrivate::m_customFile, KisTemplateCreateDiaPrivate::m_customPixmap, KisTemplateCreateDiaPrivate::m_default, KisTemplateCreateDiaPrivate::m_preview, KisTemplateCreateDiaPrivate::m_thumbnail, and warnUI.

Member Data Documentation

◆ d

KisTemplateCreateDiaPrivate* const KisTemplateCreateDia::d
private

Definition at line 55 of file KisTemplateCreateDia.h.


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