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 connect(m_page->gridRowsSpinBox, SIGNAL(valueChanged(int)), this, SLOT(slotPageSettingsChanged(int)));
39 connect(m_page->gridColumnsSpinBox, SIGNAL(valueChanged(int)), this, SLOT(slotPageSettingsChanged(int)));
40
41 KisConfig cfg(true);
42 m_page->boardLayoutComboBox->setCurrentIndex(cfg.readEntry<int>("storyboard/layoutType", ExportLayout::ROWS));
43 m_page->pageOrientationComboBox->setCurrentIndex(cfg.readEntry<int>("storyboard/pageOrientation", 0));
44 m_page->rowsSpinBox->setValue(cfg.readEntry<int>("storyboard/rows", 3));
45 m_page->columnsSpinBox->setValue(cfg.readEntry<int>("storyboard/columns", 3));
46 m_page->fontSizeSpinBox->setValue(cfg.readEntry<int>("storyboard/fontSize", 15));
47 m_page->svgTemplatePathFileRequester->setFileName(cfg.readEntry<QString>("storyboard/svgLayoutFileName", ""));
48 m_page->exportPathFileRequester->setFileName(cfg.readEntry<QString>("storyboard/exportFilePath"));
49 m_page->gridRowsSpinBox->setValue(cfg.readEntry<int>("storyboard/rows", 3));
50 m_page->gridColumnsSpinBox->setValue(cfg.readEntry<int>("storyboard/columns", 3));
51
53 QStringList mimeTypes;
54 mimeTypes << "application/pdf";
55 m_page->exportPathFileRequester->setMimeTypeFilters(mimeTypes);
56 m_page->exportPathFileRequester->setMode(KoFileDialog::SaveFile);
57 }
58 else {
59 m_page->exportPathFileRequester->setMode(KoFileDialog::OpenDirectory);
60 }
61
62 QStringList mimeTypes;
63 mimeTypes << "image/svg+xml";
64 m_page->svgTemplatePathFileRequester->setMimeTypeFilters(mimeTypes);
65 m_page->svgTemplatePathFileRequester->setMode(KoFileDialog::OpenFile);
66
68 slotLayoutChanged(m_page->boardLayoutComboBox->currentIndex());
70}
ExportLayout exportLayout() const
QSharedPointer< StoryboardModel > m_model
QPageLayout::Orientation pageOrientation() const
void setUsableMaximums(QPageSize pPageSize, QPageLayout::Orientation pOrientation, ExportLayout pLayout)
WdgExportStoryboard * m_page
void slotLayoutChanged(int state)
ExportFormat format() const
void applyClicked()
void setMainWidget(QWidget *widget)
Definition KoDialog.cpp:345
void setButtonText(ButtonCode id, const QString &text)
Definition KoDialog.cpp:639
virtual void setCaption(const QString &caption)
Definition KoDialog.cpp:489
void setButtons(ButtonCodes buttonMask)
Definition KoDialog.cpp:195
void setDefaultButton(ButtonCode id)
Definition KoDialog.cpp:293
@ 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, 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 72 of file DlgExportStoryboard.cpp.

73{
74}

Member Function Documentation

◆ columns()

int DlgExportStoryboard::columns ( ) const

Definition at line 91 of file DlgExportStoryboard.cpp.

92{
93 const int layoutIndex = m_page->boardLayoutComboBox->currentIndex();
94 if (layoutIndex == ExportLayout::ROWS || layoutIndex == ExportLayout::SVG_TEMPLATE) {
95 return 1;
96 }
97 else if (layoutIndex == ExportLayout::GRID) {
98 return qMax(m_page->gridColumnsSpinBox->value(), 1);
99 }
100 else {
101 return qMax(m_page->columnsSpinBox->value(), 1);
102 }
103}
@ SVG_TEMPLATE

References GRID, m_page, ROWS, and SVG_TEMPLATE.

◆ exportLayout()

ExportLayout DlgExportStoryboard::exportLayout ( ) const

Definition at line 153 of file DlgExportStoryboard.cpp.

154{
155 return static_cast<ExportLayout>(m_page->boardLayoutComboBox->currentIndex());
156}

References m_page.

◆ fontSize()

int DlgExportStoryboard::fontSize ( ) const

Definition at line 158 of file DlgExportStoryboard.cpp.

159{
160 return m_page->fontSizeSpinBox->value();
161}

References m_page.

◆ format()

ExportFormat DlgExportStoryboard::format ( ) const

Definition at line 148 of file DlgExportStoryboard.cpp.

149{
150 return m_format;
151}

References m_format.

◆ layoutSpecifiedBySvgFile()

bool DlgExportStoryboard::layoutSpecifiedBySvgFile ( ) const

Definition at line 132 of file DlgExportStoryboard.cpp.

133{
134 const int layoutIndex = m_page->boardLayoutComboBox->currentIndex();
135 return layoutIndex == ExportLayout::SVG_TEMPLATE;
136}

References m_page, and SVG_TEMPLATE.

◆ layoutSvgFile()

QString DlgExportStoryboard::layoutSvgFile ( ) const

Definition at line 138 of file DlgExportStoryboard.cpp.

139{
140 return m_page->svgTemplatePathFileRequester->fileName();
141}

References m_page.

◆ pageOrientation()

QPageLayout::Orientation DlgExportStoryboard::pageOrientation ( ) const

Definition at line 127 of file DlgExportStoryboard.cpp.

128{
129 return (QPageLayout::Orientation)m_page->pageOrientationComboBox->currentIndex();
130}

References m_page.

◆ pageSize()

QPageSize DlgExportStoryboard::pageSize ( ) const

Definition at line 105 of file DlgExportStoryboard.cpp.

106{
107 int index = m_page->pageSizeComboBox->currentIndex();
108 switch (index) {
109 case 0:
110 return QPageSize(QPageSize::PageSizeId::A0);
111 case 1:
112 return QPageSize(QPageSize::PageSizeId::A1);
113 case 2:
114 return QPageSize(QPageSize::PageSizeId::A2);
115 case 3:
116 return QPageSize(QPageSize::PageSizeId::A3);
117 case 4:
118 return QPageSize(QPageSize::PageSizeId::A4);
119 case 5:
120 return QPageSize(QPageSize::PageSizeId::A5);
121 case 6:
122 default:
123 return QPageSize(QPageSize::PageSizeId::Letter);
124 }
125}

References m_page.

◆ rows()

int DlgExportStoryboard::rows ( ) const

Definition at line 77 of file DlgExportStoryboard.cpp.

78{
79 const int layoutIndex = m_page->boardLayoutComboBox->currentIndex();
80 if (layoutIndex == ExportLayout::COLUMNS || layoutIndex == ExportLayout::SVG_TEMPLATE) {
81 return 1;
82 }
83 else if (layoutIndex == ExportLayout::GRID) {
84 return qMax(m_page->gridRowsSpinBox->value(), 1);
85 }
86 else {
87 return qMax(m_page->rowsSpinBox->value(), 1);
88 }
89}

References COLUMNS, GRID, m_page, and SVG_TEMPLATE.

◆ saveFileName()

QString DlgExportStoryboard::saveFileName ( ) const

Definition at line 143 of file DlgExportStoryboard.cpp.

144{
145 return m_page->exportPathFileRequester->fileName();
146}

References m_page.

◆ setUsableMaximums()

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

Definition at line 163 of file DlgExportStoryboard.cpp.

164{
165 if (pLayout == ExportLayout::SVG_TEMPLATE) { // Bypass estimates -- We can't really make any educated guess here!
166 m_page->fontSizeSpinBox->setMaximum(50);
167 } else {
168 const QSize pointSize = pPageSize.sizePoints();
169 const QSize orientedPointSize = pOrientation == QPageLayout::Landscape ? QSize(pointSize.height(), pointSize.width()) : pointSize;
170 const QSize sizeInPointsPerBoard = QSize(orientedPointSize.width() / columns(), orientedPointSize.height() / rows());
171
172 const int commentCount = m_model ? qMax(m_model->totalCommentCount(), 1) : 1;
173 const bool stacked = sizeInPointsPerBoard.width() < sizeInPointsPerBoard.height();
174 const QSize sizeInPointsPerComment = stacked ? QSize(sizeInPointsPerBoard.width(), sizeInPointsPerBoard.height() / commentCount)
175 : QSize(sizeInPointsPerBoard.width() / commentCount, sizeInPointsPerBoard.height());
176 const QSize usableMaximumFontSize = sizeInPointsPerComment / 12;
177 m_page->fontSizeSpinBox->setMaximum(qMin(usableMaximumFontSize.width(), usableMaximumFontSize.height()));
178 }
179}

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

◆ slotExportClicked

void DlgExportStoryboard::slotExportClicked ( )
privateslot

Definition at line 181 of file DlgExportStoryboard.cpp.

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

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

◆ slotLayoutChanged

void DlgExportStoryboard::slotLayoutChanged ( int state)
privateslot

Definition at line 250 of file DlgExportStoryboard.cpp.

251{
252 m_page->rowsLabel->hide();
253 m_page->rowsSpinBox->hide();
254 m_page->columnsLabel->hide();
255 m_page->columnsSpinBox->hide();
256 m_page->gridLabel->hide();
257 m_page->gridRowsSpinBox->hide();
258 m_page->gridColumnsSpinBox->hide();
259 m_page->rowsColumnsXLabel->hide();
260 m_page->svgTemplatePathLabel->hide();
261 m_page->svgTemplatePathFileRequester->hide();
262
263 switch (state) {
265 m_page->columnsLabel->show();
266 m_page->columnsSpinBox->show();
267 break;
269 m_page->rowsLabel->show();
270 m_page->rowsSpinBox->show();
271 break;
273 m_page->gridLabel->show();
274 m_page->gridRowsSpinBox->show();
275 m_page->rowsColumnsXLabel->show();
276 m_page->gridColumnsSpinBox->show();
277 break;
279 m_page->svgTemplatePathLabel->show();
280 m_page->svgTemplatePathFileRequester->show();
281 break;
282 }
283}

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: