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

#include <DlgExportStoryboard.h>

+ Inheritance diagram for DlgExportStoryboard:

Public Member Functions

int columns () const
 
 DlgExportStoryboard (ExportFormat format, QSharedPointer< StoryboardModel > model)
 
ExportLayout exportLayout () const
 
int fontSize () const
 
ExportFormat format () const
 
bool layoutSpecifiedBySvgFile () const
 
QString layoutSvgFile () const
 
QPageLayout::Orientation pageOrientation () const
 
QPageSize pageSize () const
 
int rows () const
 
QString saveFileName () const
 
void setUsableMaximums (QPageSize pPageSize, QPageLayout::Orientation pOrientation, ExportLayout pLayout)
 
 ~DlgExportStoryboard () override
 
- 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
 

Private Slots

void slotExportClicked ()
 
void slotLayoutChanged (int state)
 
void slotPageSettingsChanged (int)
 

Private Attributes

QString m_exportFileName
 
ExportFormat m_format
 
QSharedPointer< StoryboardModelm_model
 
WdgExportStoryboardm_page {0}
 

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 ()
 
- 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 ()
 
- 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 49 of file DlgExportStoryboard.h.

Constructor & Destructor Documentation

◆ DlgExportStoryboard()

DlgExportStoryboard::DlgExportStoryboard ( ExportFormat format,
QSharedPointer< StoryboardModel > model )

Definition at line 17 of file DlgExportStoryboard.cpp.

18 : KoDialog()
20 , m_model(model)
21{
22 m_page = new WdgExportStoryboard(this);
23
25 ? i18nc("Export storyboard dialog caption", "Export Storyboard as PDF")
26 : i18nc("Export storyboard dialog caption", "Export Storyboard as SVG"));
27
29 setButtonText(Apply, i18n("Export"));
31
32 connect(this, SIGNAL(applyClicked()), this, SLOT(slotExportClicked()));
33 connect(m_page->boardLayoutComboBox, SIGNAL(activated(int)), this, SLOT(slotLayoutChanged(int)));
34 connect(m_page->pageSizeComboBox, SIGNAL(activated(int)), this, SLOT(slotPageSettingsChanged(int)));
35 connect(m_page->pageOrientationComboBox, SIGNAL(activated(int)), this, SLOT(slotPageSettingsChanged(int)));
36 connect(m_page->rowsSpinBox, SIGNAL(valueChanged(int)), this, SLOT(slotPageSettingsChanged(int)));
37 connect(m_page->columnsSpinBox, SIGNAL(valueChanged(int)), this, SLOT(slotPageSettingsChanged(int)));
38
39 KisConfig cfg(true);
40 m_page->boardLayoutComboBox->setCurrentIndex(cfg.readEntry<int>("storyboard/layoutType", ExportLayout::ROWS));
41 m_page->pageOrientationComboBox->setCurrentIndex(cfg.readEntry<int>("storyboard/pageOrientation", 0));
42 m_page->rowsSpinBox->setValue(cfg.readEntry<int>("storyboard/rows", 3));
43 m_page->columnsSpinBox->setValue(cfg.readEntry<int>("storyboard/columns", 3));
44 m_page->fontSizeSpinBox->setValue(cfg.readEntry<int>("storyboard/fontSize", 15));
45 m_page->svgTemplatePathFileRequester->setFileName(cfg.readEntry<QString>("storyboard/svgLayoutFileName", ""));
46 m_page->exportPathFileRequester->setFileName(cfg.readEntry<QString>("storyboard/exportFilePath"));
47
49 QStringList mimeTypes;
50 mimeTypes << "application/pdf";
51 m_page->exportPathFileRequester->setMimeTypeFilters(mimeTypes);
52 m_page->exportPathFileRequester->setMode(KoFileDialog::SaveFile);
53 }
54 else {
55 m_page->exportPathFileRequester->setMode(KoFileDialog::OpenDirectory);
56 }
57
58 QStringList mimeTypes;
59 mimeTypes << "image/svg+xml";
60 m_page->svgTemplatePathFileRequester->setMimeTypeFilters(mimeTypes);
61 m_page->svgTemplatePathFileRequester->setMode(KoFileDialog::OpenFile);
62
64 slotLayoutChanged(m_page->boardLayoutComboBox->currentIndex());
66}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
ExportLayout exportLayout() const
QSharedPointer< StoryboardModel > m_model
QPageLayout::Orientation pageOrientation() const
void setUsableMaximums(QPageSize pPageSize, QPageLayout::Orientation pOrientation, ExportLayout pLayout)
WdgExportStoryboard * m_page
QPageSize pageSize() const
void slotLayoutChanged(int state)
ExportFormat format() const
void applyClicked()
void setMainWidget(QWidget *widget)
Definition KoDialog.cpp:354
void setButtonText(ButtonCode id, const QString &text)
Definition KoDialog.cpp:648
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
@ Apply
Show Apply button.
Definition KoDialog.h:128
@ 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

References KoDialog::Apply, KoDialog::applyClicked(), KoDialog::Cancel, connect(), exportLayout(), format(), m_page, KoFileDialog::OpenDirectory, KoFileDialog::OpenFile, pageOrientation(), pageSize(), PDF, KisConfig::readEntry(), ROWS, KoFileDialog::SaveFile, KoDialog::setButtons(), KoDialog::setButtonText(), KoDialog::setCaption(), KoDialog::setDefaultButton(), KoDialog::setMainWidget(), setUsableMaximums(), slotExportClicked(), slotLayoutChanged(), and slotPageSettingsChanged().

◆ ~DlgExportStoryboard()

DlgExportStoryboard::~DlgExportStoryboard ( )
override

Definition at line 68 of file DlgExportStoryboard.cpp.

69{
70}

Member Function Documentation

◆ columns()

int DlgExportStoryboard::columns ( ) const

Definition at line 84 of file DlgExportStoryboard.cpp.

85{
86 const int layoutIndex = m_page->boardLayoutComboBox->currentIndex();
87 if (layoutIndex == ExportLayout::ROWS || layoutIndex == ExportLayout::SVG_TEMPLATE) {
88 return 1;
89 }
90 else {
91 return qMax(m_page->columnsSpinBox->value(), 1);
92 }
93}
@ SVG_TEMPLATE

References m_page, ROWS, and SVG_TEMPLATE.

◆ exportLayout()

ExportLayout DlgExportStoryboard::exportLayout ( ) const

Definition at line 143 of file DlgExportStoryboard.cpp.

144{
145 return static_cast<ExportLayout>(m_page->boardLayoutComboBox->currentIndex());
146}

References m_page.

◆ fontSize()

int DlgExportStoryboard::fontSize ( ) const

Definition at line 148 of file DlgExportStoryboard.cpp.

149{
150 return m_page->fontSizeSpinBox->value();
151}

References m_page.

◆ format()

ExportFormat DlgExportStoryboard::format ( ) const

Definition at line 138 of file DlgExportStoryboard.cpp.

139{
140 return m_format;
141}

References m_format.

◆ layoutSpecifiedBySvgFile()

bool DlgExportStoryboard::layoutSpecifiedBySvgFile ( ) const

Definition at line 122 of file DlgExportStoryboard.cpp.

123{
124 const int layoutIndex = m_page->boardLayoutComboBox->currentIndex();
125 return layoutIndex == ExportLayout::SVG_TEMPLATE;
126}

References m_page, and SVG_TEMPLATE.

◆ layoutSvgFile()

QString DlgExportStoryboard::layoutSvgFile ( ) const

Definition at line 128 of file DlgExportStoryboard.cpp.

129{
130 return m_page->svgTemplatePathFileRequester->fileName();
131}

References m_page.

◆ pageOrientation()

QPageLayout::Orientation DlgExportStoryboard::pageOrientation ( ) const

Definition at line 117 of file DlgExportStoryboard.cpp.

118{
119 return (QPageLayout::Orientation)m_page->pageOrientationComboBox->currentIndex();
120}

References m_page.

◆ pageSize()

QPageSize DlgExportStoryboard::pageSize ( ) const

Definition at line 95 of file DlgExportStoryboard.cpp.

96{
97 int index = m_page->pageSizeComboBox->currentIndex();
98 switch (index) {
99 case 0:
100 return QPageSize(QPageSize::PageSizeId::A0);
101 case 1:
102 return QPageSize(QPageSize::PageSizeId::A1);
103 case 2:
104 return QPageSize(QPageSize::PageSizeId::A2);
105 case 3:
106 return QPageSize(QPageSize::PageSizeId::A3);
107 case 4:
108 return QPageSize(QPageSize::PageSizeId::A4);
109 case 5:
110 return QPageSize(QPageSize::PageSizeId::A5);
111 case 6:
112 default:
113 return QPageSize(QPageSize::PageSizeId::Letter);
114 }
115}

References m_page.

◆ rows()

int DlgExportStoryboard::rows ( ) const

Definition at line 73 of file DlgExportStoryboard.cpp.

74{
75 const int layoutIndex = m_page->boardLayoutComboBox->currentIndex();
76 if (layoutIndex == ExportLayout::COLUMNS || layoutIndex == ExportLayout::SVG_TEMPLATE) {
77 return 1;
78 }
79 else {
80 return qMax(m_page->rowsSpinBox->value(), 1);
81 }
82}

References COLUMNS, m_page, and SVG_TEMPLATE.

◆ saveFileName()

QString DlgExportStoryboard::saveFileName ( ) const

Definition at line 133 of file DlgExportStoryboard.cpp.

134{
135 return m_page->exportPathFileRequester->fileName();
136}

References m_page.

◆ setUsableMaximums()

void DlgExportStoryboard::setUsableMaximums ( QPageSize pPageSize,
QPageLayout::Orientation pOrientation,
ExportLayout pLayout )

Definition at line 153 of file DlgExportStoryboard.cpp.

154{
155 if (pLayout == ExportLayout::SVG_TEMPLATE) { // Bypass estimates -- We can't really make any educated guess here!
156 m_page->fontSizeSpinBox->setMaximum(50);
157 } else {
158 const QSize pointSize = pPageSize.sizePoints();
159 const QSize orientedPointSize = pOrientation == QPageLayout::Landscape ? QSize(pointSize.height(), pointSize.width()) : pointSize;
160 const QSize sizeInPointsPerBoard = QSize(orientedPointSize.width() / columns(), orientedPointSize.height() / rows());
161
162 const int commentCount = m_model ? qMax(m_model->totalCommentCount(), 1) : 1;
163 const bool stacked = sizeInPointsPerBoard.width() < sizeInPointsPerBoard.height();
164 const QSize sizeInPointsPerComment = stacked ? QSize(sizeInPointsPerBoard.width(), sizeInPointsPerBoard.height() / commentCount)
165 : QSize(sizeInPointsPerBoard.width() / commentCount, sizeInPointsPerBoard.height());
166 const QSize usableMaximumFontSize = sizeInPointsPerComment / 12;
167 m_page->fontSizeSpinBox->setMaximum(qMin(usableMaximumFontSize.width(), usableMaximumFontSize.height()));
168 }
169}

References columns(), m_model, m_page, rows(), and SVG_TEMPLATE.

◆ slotExportClicked

void DlgExportStoryboard::slotExportClicked ( )
privateslot

Definition at line 171 of file DlgExportStoryboard.cpp.

172{
173 if (m_page->exportPathFileRequester->fileName().isEmpty()) {
175 QMessageBox::warning(this, i18nc("@title:window", "Krita"), i18n("Please enter a file name to export to."));
176 }
177 else {
178 QMessageBox::warning(this, i18nc("@title:window", "Krita"), i18n("Please enter a directory to export to."));
179 }
180 return;
181 }
182
184
185 QDir dir(m_page->exportPathFileRequester->fileName());
186 if (!dir.exists()) {
187 QMessageBox::warning(this, i18nc("@title:window", "Krita"), i18n("Please enter an existing directory."));
188 return;
189 }
190
191 QFileInfo info("[0-9]*.svg");
192 QStringList filesList = dir.entryList({ info.fileName() });
193
194 if (!filesList.isEmpty()) {
195 QMessageBox::StandardButton result =
196 QMessageBox::warning(0,
197 i18n("Existing files with similar naming scheme"),
198 i18n("Files with the same naming "
199 "scheme exist in the destination "
200 "directory. They might be "
201 "deleted, continue?\n\n"
202 "Directory: %1\n"
203 "Files: %2",
204 dir.absolutePath(), filesList.at(0) + "..."),
205 QMessageBox::Yes | QMessageBox::No,
206 QMessageBox::No);
207 if (result == QMessageBox::No) {
208 return;
209 }
210 }
211 }
212
213 if (layoutSpecifiedBySvgFile() && m_page->svgTemplatePathFileRequester->fileName().isEmpty()) {
214 QMessageBox::warning(this, i18nc("@title:window", "Krita"), i18n("Please choose svg file to specify the layout for exporting."));
215 return;
216 }
217 QFileInfo fi(m_page->svgTemplatePathFileRequester->fileName());
218 if (layoutSpecifiedBySvgFile() && !fi.exists()) {
219 QMessageBox::warning(this, i18nc("@title:window", "Krita"), i18n("The SVG file to specify layout doesn't exist. Please choose an existing SVG file."));
220 return;
221 }
222
223 KisConfig cfg(false);
224 cfg.writeEntry("storyboard/layoutType", m_page->boardLayoutComboBox->currentIndex());
225 cfg.writeEntry("storyboard/pageOrientation", m_page->pageOrientationComboBox->currentIndex());
226 cfg.writeEntry("storyboard/rows", m_page->rowsSpinBox->value());
227 cfg.writeEntry("storyboard/columns", m_page->columnsSpinBox->value());
228 cfg.writeEntry("storyboard/svgLayoutFileName", m_page->svgTemplatePathFileRequester->fileName());
229 cfg.writeEntry("storyboard/exportFilePath", m_page->exportPathFileRequester->fileName());
230 cfg.writeEntry("storyboard/fontSize", m_page->fontSizeSpinBox->value());
231
232 accept();
233}
bool layoutSpecifiedBySvgFile() const

References layoutSpecifiedBySvgFile(), m_format, m_page, PDF, SVG, and KisConfig::writeEntry().

◆ slotLayoutChanged

void DlgExportStoryboard::slotLayoutChanged ( int state)
privateslot

Definition at line 235 of file DlgExportStoryboard.cpp.

236{
237 switch (state) {
239 m_page->rowsLabel->hide();
240 m_page->rowsSpinBox->hide();
241 m_page->svgTemplatePathFileRequester->hide();
242 m_page->svgTemplatePathLabel->hide();
243
244 m_page->columnsSpinBox->show();
245 m_page->columnsLabel->show();
246 break;
248 m_page->columnsLabel->hide();
249 m_page->columnsSpinBox->hide();
250 m_page->svgTemplatePathFileRequester->hide();
251 m_page->svgTemplatePathLabel->hide();
252
253 m_page->rowsSpinBox->show();
254 m_page->rowsLabel->show();
255 break;
257 m_page->svgTemplatePathFileRequester->hide();
258 m_page->svgTemplatePathLabel->hide();
259
260 m_page->columnsLabel->show();
261 m_page->columnsSpinBox->show();
262 m_page->rowsSpinBox->show();
263 m_page->rowsLabel->show();
264 break;
266 m_page->columnsLabel->hide();
267 m_page->columnsSpinBox->hide();
268 m_page->rowsSpinBox->hide();
269 m_page->rowsLabel->hide();
270
271 m_page->svgTemplatePathFileRequester->show();
272 m_page->svgTemplatePathLabel->show();
273 break;
274 }
275}

References COLUMNS, GRID, m_page, ROWS, and SVG_TEMPLATE.

◆ slotPageSettingsChanged

void DlgExportStoryboard::slotPageSettingsChanged ( int )
privateslot

Member Data Documentation

◆ m_exportFileName

QString DlgExportStoryboard::m_exportFileName
private

Definition at line 74 of file DlgExportStoryboard.h.

◆ m_format

ExportFormat DlgExportStoryboard::m_format
private

Definition at line 75 of file DlgExportStoryboard.h.

◆ m_model

QSharedPointer<StoryboardModel> DlgExportStoryboard::m_model
private

Definition at line 76 of file DlgExportStoryboard.h.

◆ m_page

WdgExportStoryboard* DlgExportStoryboard::m_page {0}
private

Definition at line 73 of file DlgExportStoryboard.h.

73{0};

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