Changeset View
Changeset View
Standalone View
Standalone View
plugins/extensions/imagesplit/imagesplit.cpp
Show First 20 Lines • Show All 96 Lines • ▼ Show 20 Line(s) | |||||
97 | { | 97 | { | ||
98 | // Taking the title - url from caption function and removing file extension | 98 | // Taking the title - url from caption function and removing file extension | ||
99 | QStringList strList = ((viewManager()->document())->caption()).split('.'); | 99 | QStringList strList = ((viewManager()->document())->caption()).split('.'); | ||
100 | QString suffix = strList.at(0); | 100 | QString suffix = strList.at(0); | ||
101 | 101 | | |||
102 | // Getting all mime types and converting them into names which are displayed at combo box | 102 | // Getting all mime types and converting them into names which are displayed at combo box | ||
103 | QStringList listMimeFilter = KisImportExportManager::supportedMimeTypes(KisImportExportManager::Export); | 103 | QStringList listMimeFilter = KisImportExportManager::supportedMimeTypes(KisImportExportManager::Export); | ||
104 | QString defaultMime = QString::fromLatin1(viewManager()->document()->mimeType()); | 104 | QString defaultMime = QString::fromLatin1(viewManager()->document()->mimeType()); | ||
105 | if (defaultMime.isEmpty()) defaultMime = QString::fromLatin1(viewManager()->document()->nativeFormatMimeType()); | ||||
105 | int defaultMimeIndex = 0; | 106 | int defaultMimeIndex = 0; | ||
106 | 107 | | |||
107 | listMimeFilter.sort(); | 108 | listMimeFilter.sort(); | ||
108 | QStringList filteredMimeTypes; | 109 | QStringList filteredMimeTypes; | ||
109 | QStringList listFileType; | 110 | QStringList listFileType; | ||
110 | int i = 0; | 111 | int i = 0; | ||
111 | Q_FOREACH (const QString & mimeType, listMimeFilter) { | 112 | Q_FOREACH (const QString &mimeType, listMimeFilter) { | ||
112 | listFileType.append(KisMimeDatabase::descriptionForMimeType(mimeType)); | 113 | listFileType.append(KisMimeDatabase::descriptionForMimeType(mimeType)); | ||
113 | filteredMimeTypes.append(mimeType); | 114 | filteredMimeTypes.append(mimeType); | ||
114 | if (mimeType == defaultMime) { | 115 | if (mimeType == defaultMime) { | ||
115 | defaultMimeIndex = i; | 116 | defaultMimeIndex = i; | ||
116 | } | 117 | } | ||
117 | i++; | 118 | i++; | ||
118 | } | 119 | } | ||
119 | 120 | | |||
Show All 12 Lines | 131 | if (dlgImagesplit->exec() == QDialog::Accepted) { | |||
132 | int numHorizontalLines = dlgImagesplit->horizontalLines(); | 133 | int numHorizontalLines = dlgImagesplit->horizontalLines(); | ||
133 | int numVerticalLines = dlgImagesplit->verticalLines(); | 134 | int numVerticalLines = dlgImagesplit->verticalLines(); | ||
134 | 135 | | |||
135 | int img_width = image->width() / (numVerticalLines + 1); | 136 | int img_width = image->width() / (numVerticalLines + 1); | ||
136 | int img_height = image->height() / (numHorizontalLines + 1); | 137 | int img_height = image->height() / (numHorizontalLines + 1); | ||
137 | 138 | | |||
138 | 139 | | |||
139 | bool stop = false; | 140 | bool stop = false; | ||
141 | | ||||
142 | QString mimeType; | ||||
143 | QString filepath; | ||||
144 | QString homepath; | ||||
145 | QString suffix; | ||||
146 | | ||||
140 | if (dlgImagesplit->autoSave()) { | 147 | if (dlgImagesplit->autoSave()) { | ||
141 | KoFileDialog dialog(viewManager()->mainWindow(), KoFileDialog::OpenDirectory, "OpenDocument"); | 148 | KoFileDialog dialog(viewManager()->mainWindow(), KoFileDialog::OpenDirectory, "OpenDocument"); | ||
142 | dialog.setCaption(i18n("Save Image on Split")); | 149 | dialog.setCaption(i18n("Save Image on Split")); | ||
143 | dialog.setDefaultDir(QStandardPaths::writableLocation(QStandardPaths::PicturesLocation)); | 150 | dialog.setDefaultDir(QStandardPaths::writableLocation(QStandardPaths::PicturesLocation)); | ||
144 | QStringList mimeFilter = viewManager()->document()->importExportManager()->supportedMimeTypes(KisImportExportManager::Export); | 151 | QStringList mimeFilter = viewManager()->document()->importExportManager()->supportedMimeTypes(KisImportExportManager::Export); | ||
145 | QString defaultMime = QString::fromLatin1(viewManager()->document()->mimeType()); | 152 | QString defaultMime = QString::fromLatin1(viewManager()->document()->mimeType()); | ||
146 | dialog.setMimeTypeFilters(mimeFilter, defaultMime); | 153 | dialog.setMimeTypeFilters(mimeFilter, defaultMime); | ||
147 | 154 | | |||
148 | QUrl directory = QUrl::fromUserInput(dialog.filename()); | 155 | QUrl directory = QUrl::fromUserInput(dialog.filename()); | ||
149 | 156 | | |||
150 | if (directory.isEmpty()) | 157 | if (directory.isEmpty()) | ||
151 | return; | 158 | return; | ||
152 | for (int i = 0, k = 1; i < (numVerticalLines + 1); i++) { | 159 | | ||
153 | for (int j = 0; j < (numHorizontalLines + 1); j++, k++) { | 160 | mimeType = listMimeFilter.at(dlgImagesplit->cmbIndex); | ||
154 | QString mimeTypeSelected = listMimeFilter.at(dlgImagesplit->cmbIndex); | 161 | homepath = directory.toLocalFile(); | ||
155 | QString homepath = directory.toLocalFile(); | 162 | suffix = KisMimeDatabase::suffixesForMimeType(mimeType).first(); | ||
156 | QString suffix = KisMimeDatabase::suffixesForMimeType(mimeTypeSelected).first(); | | |||
157 | qDebug() << "suffix" << suffix; | | |||
158 | if (suffix.startsWith("*.")) { | 163 | if (suffix.startsWith("*.")) { | ||
159 | suffix = suffix.remove(0, 1); | 164 | suffix = suffix.remove(0, 1); | ||
160 | } | 165 | } | ||
161 | qDebug() << "\tsuffix" << suffix; | | |||
162 | if (!suffix.startsWith(".")) { | 166 | if (!suffix.startsWith(".")) { | ||
163 | suffix = suffix.prepend('.'); | 167 | suffix = suffix.prepend('.'); | ||
164 | } | 168 | } | ||
165 | qDebug() << "\tsuffix" << suffix; | | |||
166 | QString fileName = dlgImagesplit->suffix() + '_' + QString::number(k) + suffix; | | |||
167 | QString url = homepath + '/' + fileName; | | |||
168 | if (!saveAsImage(QRect((i * img_width), (j * img_height), img_width, img_height), listMimeFilter.at(dlgImagesplit->cmbIndex), url)) { | | |||
169 | stop = true; | | |||
170 | break; | | |||
171 | } | | |||
172 | } | 169 | } | ||
173 | if (stop) { | 170 | | ||
174 | break; | 171 | int outerLoop; | ||
172 | int innerLoop; | ||||
173 | | ||||
174 | if (dlgImagesplit->sortHorizontal()) { | ||||
175 | outerLoop = numHorizontalLines + 1; | ||||
176 | innerLoop = numVerticalLines + 1; | ||||
175 | } | 177 | } | ||
178 | else { | ||||
179 | outerLoop = numVerticalLines + 1; | ||||
180 | innerLoop = numHorizontalLines + 1; | ||||
176 | } | 181 | } | ||
182 | | ||||
183 | | ||||
184 | for (int i = 0, k = 1; i < outerLoop; i++) { | ||||
185 | for (int j = 0; j < innerLoop; j++, k++) { | ||||
186 | int row; | ||||
187 | int column; | ||||
188 | if (dlgImagesplit->sortHorizontal()) { | ||||
189 | row = i; | ||||
190 | column = j; | ||||
177 | } | 191 | } | ||
178 | else { | 192 | else { | ||
193 | row = j; | ||||
194 | column = i; | ||||
195 | } | ||||
179 | 196 | | |||
180 | for (int i = 0; i < (numVerticalLines + 1); i++) { | 197 | if (dlgImagesplit->autoSave()) { | ||
181 | for (int j = 0; j < (numHorizontalLines + 1); j++) { | 198 | QString fileName = dlgImagesplit->suffix() + '_' + QString::number(k) + suffix; | ||
199 | filepath = homepath + '/' + fileName; | ||||
200 | mimeType = listMimeFilter.at(dlgImagesplit->cmbIndex); | ||||
201 | } | ||||
202 | else { | ||||
182 | KoFileDialog dialog(viewManager()->mainWindow(), KoFileDialog::SaveFile, "OpenDocument"); | 203 | KoFileDialog dialog(viewManager()->mainWindow(), KoFileDialog::SaveFile, "OpenDocument"); | ||
183 | dialog.setCaption(i18n("Save Image on Split")); | 204 | dialog.setCaption(i18n("Save Image on Split")); | ||
184 | dialog.setDefaultDir(QStandardPaths::writableLocation(QStandardPaths::PicturesLocation)); | 205 | dialog.setDefaultDir(QStandardPaths::writableLocation(QStandardPaths::PicturesLocation)); | ||
185 | dialog.setMimeTypeFilters(listMimeFilter, defaultMime); | 206 | dialog.setMimeTypeFilters(listMimeFilter, defaultMime); | ||
186 | 207 | | |||
187 | QUrl url = QUrl::fromUserInput(dialog.filename()); | 208 | QUrl url = QUrl::fromUserInput(dialog.filename()); | ||
209 | filepath = url.toLocalFile(); | ||||
188 | 210 | | |||
189 | QString mimefilter = KisMimeDatabase::mimeTypeForFile(url.toLocalFile(), false); | 211 | mimeType = KisMimeDatabase::mimeTypeForFile(url.toLocalFile(), false); | ||
190 | 212 | | |||
191 | if (url.isEmpty()) | 213 | if (url.isEmpty()) | ||
192 | return; | 214 | return; | ||
193 | if (!saveAsImage(QRect((i * img_width), (j * img_height), img_width, img_height), mimefilter, url.toLocalFile())) { | 215 | | ||
216 | } | ||||
217 | if (!saveAsImage(QRect((column * img_width), (row * img_height), img_width, img_height), mimeType, filepath)) { | ||||
194 | stop = true; | 218 | stop = true; | ||
195 | break; | 219 | break; | ||
196 | } | 220 | } | ||
197 | } | 221 | } | ||
198 | if (stop) { | 222 | if (stop) { | ||
199 | break; | 223 | break; | ||
200 | } | 224 | } | ||
201 | } | 225 | } | ||
202 | | ||||
203 | } | | |||
204 | | ||||
205 | } | 226 | } | ||
206 | delete dlgImagesplit; | 227 | delete dlgImagesplit; | ||
207 | } | 228 | } | ||
208 | 229 | | |||
209 | #include "imagesplit.moc" | 230 | #include "imagesplit.moc" |