diff --git a/plugins/extensions/imagesplit/dlg_imagesplit.h b/plugins/extensions/imagesplit/dlg_imagesplit.h --- a/plugins/extensions/imagesplit/dlg_imagesplit.h +++ b/plugins/extensions/imagesplit/dlg_imagesplit.h @@ -42,6 +42,7 @@ DlgImagesplit(KisViewManager* view, const QString &suffix, QStringList listMimeType, int defaultMimeIndex); ~DlgImagesplit() override; bool autoSave(); + bool sortHorizontal(); int horizontalLines(); int verticalLines(); int cmbIndex; diff --git a/plugins/extensions/imagesplit/dlg_imagesplit.cpp b/plugins/extensions/imagesplit/dlg_imagesplit.cpp --- a/plugins/extensions/imagesplit/dlg_imagesplit.cpp +++ b/plugins/extensions/imagesplit/dlg_imagesplit.cpp @@ -31,7 +31,6 @@ DlgImagesplit::DlgImagesplit(KisViewManager* view, const QString &suffix, QStringList listMimeFilter, int defaultMimeIndex) : KoDialog(view->mainWindow()) { - m_page = new WdgImagesplit(this); setCaption(i18n("Image Split")); @@ -84,6 +83,14 @@ return false; } +bool DlgImagesplit::sortHorizontal() +{ + if (m_page->chkHorizontal->isChecked()) + return true; + else + return false; +} + int DlgImagesplit::horizontalLines() { return m_page->intHorizontalSplitLines->value(); diff --git a/plugins/extensions/imagesplit/imagesplit.cpp b/plugins/extensions/imagesplit/imagesplit.cpp --- a/plugins/extensions/imagesplit/imagesplit.cpp +++ b/plugins/extensions/imagesplit/imagesplit.cpp @@ -102,13 +102,14 @@ // Getting all mime types and converting them into names which are displayed at combo box QStringList listMimeFilter = KisImportExportManager::supportedMimeTypes(KisImportExportManager::Export); QString defaultMime = QString::fromLatin1(viewManager()->document()->mimeType()); + if (defaultMime.isEmpty()) defaultMime = QString::fromLatin1(viewManager()->document()->nativeFormatMimeType()); int defaultMimeIndex = 0; listMimeFilter.sort(); QStringList filteredMimeTypes; QStringList listFileType; int i = 0; - Q_FOREACH (const QString & mimeType, listMimeFilter) { + Q_FOREACH (const QString &mimeType, listMimeFilter) { listFileType.append(KisMimeDatabase::descriptionForMimeType(mimeType)); filteredMimeTypes.append(mimeType); if (mimeType == defaultMime) { @@ -137,6 +138,12 @@ bool stop = false; + + QString mimeType; + QString filepath; + QString homepath; + QString suffix; + if (dlgImagesplit->autoSave()) { KoFileDialog dialog(viewManager()->mainWindow(), KoFileDialog::OpenDirectory, "OpenDocument"); dialog.setCaption(i18n("Save Image on Split")); @@ -149,59 +156,73 @@ if (directory.isEmpty()) return; - for (int i = 0, k = 1; i < (numVerticalLines + 1); i++) { - for (int j = 0; j < (numHorizontalLines + 1); j++, k++) { - QString mimeTypeSelected = listMimeFilter.at(dlgImagesplit->cmbIndex); - QString homepath = directory.toLocalFile(); - QString suffix = KisMimeDatabase::suffixesForMimeType(mimeTypeSelected).first(); - qDebug() << "suffix" << suffix; - if (suffix.startsWith("*.")) { - suffix = suffix.remove(0, 1); - } - qDebug() << "\tsuffix" << suffix; - if (!suffix.startsWith(".")) { - suffix = suffix.prepend('.'); - } - qDebug() << "\tsuffix" << suffix; - QString fileName = dlgImagesplit->suffix() + '_' + QString::number(k) + suffix; - QString url = homepath + '/' + fileName; - if (!saveAsImage(QRect((i * img_width), (j * img_height), img_width, img_height), listMimeFilter.at(dlgImagesplit->cmbIndex), url)) { - stop = true; - break; - } - } - if (stop) { - break; - } + + mimeType = listMimeFilter.at(dlgImagesplit->cmbIndex); + homepath = directory.toLocalFile(); + suffix = KisMimeDatabase::suffixesForMimeType(mimeType).first(); + if (suffix.startsWith("*.")) { + suffix = suffix.remove(0, 1); + } + if (!suffix.startsWith(".")) { + suffix = suffix.prepend('.'); } + } + + int outerLoop; + int innerLoop; + + if (dlgImagesplit->sortHorizontal()) { + outerLoop = numHorizontalLines + 1; + innerLoop = numVerticalLines + 1; } else { + outerLoop = numVerticalLines + 1; + innerLoop = numHorizontalLines + 1; + } + + + for (int i = 0, k = 1; i < outerLoop; i++) { + for (int j = 0; j < innerLoop; j++, k++) { + int row; + int column; + if (dlgImagesplit->sortHorizontal()) { + row = i; + column = j; + } + else { + row = j; + column = i; + } - for (int i = 0; i < (numVerticalLines + 1); i++) { - for (int j = 0; j < (numHorizontalLines + 1); j++) { + if (dlgImagesplit->autoSave()) { + QString fileName = dlgImagesplit->suffix() + '_' + QString::number(k) + suffix; + filepath = homepath + '/' + fileName; + mimeType = listMimeFilter.at(dlgImagesplit->cmbIndex); + } + else { KoFileDialog dialog(viewManager()->mainWindow(), KoFileDialog::SaveFile, "OpenDocument"); dialog.setCaption(i18n("Save Image on Split")); dialog.setDefaultDir(QStandardPaths::writableLocation(QStandardPaths::PicturesLocation)); dialog.setMimeTypeFilters(listMimeFilter, defaultMime); QUrl url = QUrl::fromUserInput(dialog.filename()); + filepath = url.toLocalFile(); - QString mimefilter = KisMimeDatabase::mimeTypeForFile(url.toLocalFile(), false); + mimeType = KisMimeDatabase::mimeTypeForFile(url.toLocalFile(), false); if (url.isEmpty()) return; - if (!saveAsImage(QRect((i * img_width), (j * img_height), img_width, img_height), mimefilter, url.toLocalFile())) { - stop = true; - break; - } + } - if (stop) { + if (!saveAsImage(QRect((column * img_width), (row * img_height), img_width, img_height), mimeType, filepath)) { + stop = true; break; } } - + if (stop) { + break; + } } - } delete dlgImagesplit; } diff --git a/plugins/extensions/imagesplit/wdg_imagesplit.cpp b/plugins/extensions/imagesplit/wdg_imagesplit.cpp --- a/plugins/extensions/imagesplit/wdg_imagesplit.cpp +++ b/plugins/extensions/imagesplit/wdg_imagesplit.cpp @@ -38,6 +38,7 @@ intHorizontalSplitLines->setValue(cfg.horizontalSplitLines()); intVerticalSplitLines->setValue(cfg.verticalSplitLines()); + chkHorizontal->setChecked(true); chkAutoSave->setChecked(true); } diff --git a/plugins/extensions/imagesplit/wdg_imagesplit.ui b/plugins/extensions/imagesplit/wdg_imagesplit.ui --- a/plugins/extensions/imagesplit/wdg_imagesplit.ui +++ b/plugins/extensions/imagesplit/wdg_imagesplit.ui @@ -6,47 +6,96 @@ 0 0 - 236 - 194 + 202 + 316 Image Size - - - - - - - - - Horizontal Lines - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - Vertical Lines - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - + + + + + - + + + + + + + Sort Direction: + + + + + + + 10 + + + + Hori&zontal + + + + + + + + 10 + + + + &Vertical + + + + + + + + + + Prefix + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + true + + + + + + + + + + File Type + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + @@ -58,58 +107,41 @@ - - - - - - Prefix - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - true - - - - - - - - - - File Type - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - + + + + Horizontal Lines + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + - - - Qt::Vertical + + + Vertical Lines - - - 20 - 38 - + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - + + + + + Qt::Vertical + + + + 20 + 2 + + + +