25 ? i18nc(
"Export storyboard dialog caption",
"Export Storyboard as PDF")
26 : i18nc(
"Export storyboard dialog caption",
"Export Storyboard as SVG"));
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"));
50 mimeTypes <<
"application/pdf";
51 m_page->exportPathFileRequester->setMimeTypeFilters(mimeTypes);
59 mimeTypes <<
"image/svg+xml";
60 m_page->svgTemplatePathFileRequester->setMimeTypeFilters(mimeTypes);
75 const int layoutIndex =
m_page->boardLayoutComboBox->currentIndex();
80 return qMax(
m_page->rowsSpinBox->value(), 1);
86 const int layoutIndex =
m_page->boardLayoutComboBox->currentIndex();
91 return qMax(
m_page->columnsSpinBox->value(), 1);
97 int index =
m_page->pageSizeComboBox->currentIndex();
100 return QPageSize(QPageSize::PageSizeId::A0);
102 return QPageSize(QPageSize::PageSizeId::A1);
104 return QPageSize(QPageSize::PageSizeId::A2);
106 return QPageSize(QPageSize::PageSizeId::A3);
108 return QPageSize(QPageSize::PageSizeId::A4);
110 return QPageSize(QPageSize::PageSizeId::A5);
113 return QPageSize(QPageSize::PageSizeId::Letter);
119 return (QPageLayout::Orientation)
m_page->pageOrientationComboBox->currentIndex();
124 const int layoutIndex =
m_page->boardLayoutComboBox->currentIndex();
130 return m_page->svgTemplatePathFileRequester->fileName();
135 return m_page->exportPathFileRequester->fileName();
150 return m_page->fontSizeSpinBox->value();
156 m_page->fontSizeSpinBox->setMaximum(50);
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());
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()));
173 if (
m_page->exportPathFileRequester->fileName().isEmpty()) {
175 QMessageBox::warning(
this, i18nc(
"@title:window",
"Krita"), i18n(
"Please enter a file name to export to."));
178 QMessageBox::warning(
this, i18nc(
"@title:window",
"Krita"), i18n(
"Please enter a directory to export to."));
185 QDir dir(
m_page->exportPathFileRequester->fileName());
187 QMessageBox::warning(
this, i18nc(
"@title:window",
"Krita"), i18n(
"Please enter an existing directory."));
191 QFileInfo info(
"[0-9]*.svg");
192 QStringList filesList = dir.entryList({ info.fileName() });
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"
204 dir.absolutePath(), filesList.at(0) +
"..."),
205 QMessageBox::Yes | QMessageBox::No,
207 if (result == QMessageBox::No) {
214 QMessageBox::warning(
this, i18nc(
"@title:window",
"Krita"), i18n(
"Please choose svg file to specify the layout for exporting."));
217 QFileInfo fi(
m_page->svgTemplatePathFileRequester->fileName());
219 QMessageBox::warning(
this, i18nc(
"@title:window",
"Krita"), i18n(
"The SVG file to specify layout doesn't exist. Please choose an existing SVG file."));
224 cfg.
writeEntry(
"storyboard/layoutType",
m_page->boardLayoutComboBox->currentIndex());
225 cfg.
writeEntry(
"storyboard/pageOrientation",
m_page->pageOrientationComboBox->currentIndex());
228 cfg.
writeEntry(
"storyboard/svgLayoutFileName",
m_page->svgTemplatePathFileRequester->fileName());
229 cfg.
writeEntry(
"storyboard/exportFilePath",
m_page->exportPathFileRequester->fileName());
239 m_page->rowsLabel->hide();
240 m_page->rowsSpinBox->hide();
241 m_page->svgTemplatePathFileRequester->hide();
242 m_page->svgTemplatePathLabel->hide();
244 m_page->columnsSpinBox->show();
245 m_page->columnsLabel->show();
248 m_page->columnsLabel->hide();
249 m_page->columnsSpinBox->hide();
250 m_page->svgTemplatePathFileRequester->hide();
251 m_page->svgTemplatePathLabel->hide();
253 m_page->rowsSpinBox->show();
254 m_page->rowsLabel->show();
257 m_page->svgTemplatePathFileRequester->hide();
258 m_page->svgTemplatePathLabel->hide();
260 m_page->columnsLabel->show();
261 m_page->columnsSpinBox->show();
262 m_page->rowsSpinBox->show();
263 m_page->rowsLabel->show();
266 m_page->columnsLabel->hide();
267 m_page->columnsSpinBox->hide();
268 m_page->rowsSpinBox->hide();
269 m_page->rowsLabel->hide();
271 m_page->svgTemplatePathFileRequester->show();
272 m_page->svgTemplatePathLabel->show();
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
ExportLayout exportLayout() const
DlgExportStoryboard(ExportFormat format, QSharedPointer< StoryboardModel > model)
QSharedPointer< StoryboardModel > m_model
QPageLayout::Orientation pageOrientation() const
QString layoutSvgFile() const
void setUsableMaximums(QPageSize pPageSize, QPageLayout::Orientation pOrientation, ExportLayout pLayout)
bool layoutSpecifiedBySvgFile() const
WdgExportStoryboard * m_page
~DlgExportStoryboard() override
QString saveFileName() const
QPageSize pageSize() const
void slotLayoutChanged(int state)
void slotPageSettingsChanged(int)
ExportFormat format() const
void writeEntry(const QString &name, const T &value)
T readEntry(const QString &name, const T &defaultValue=T())
A dialog base class with standard buttons and predefined layouts.
void setMainWidget(QWidget *widget)
void setButtonText(ButtonCode id, const QString &text)
virtual void setCaption(const QString &caption)
void setButtons(ButtonCodes buttonMask)
void setDefaultButton(ButtonCode id)
@ Apply
Show Apply button.
@ Cancel
Show Cancel-button. (this button reject()s the dialog; result set to QDialog::Rejected)