// ======================================================= void CInterfaceNewt::msgBoxCancel(const char *szTitle, const char *szText, ...) { va_list args; if (!getBatchMode()) { va_start(args, szText); newtWinMessagev((char *) szTitle, i18n("Cancel"), (char *) szText, args); va_end(args); } }
KisImportExportFilter::ConversionStatus KisCSVExport::convert(const QByteArray& from, const QByteArray& to) { dbgFile << "CSV export! From:" << from << ", To:" << to << ""; if (from != "application/x-krita") return KisImportExportFilter::NotImplemented; KisDocument* input = inputDocument(); QString filename = outputFile(); if (!input) return KisImportExportFilter::NoDocumentCreated; if (!checkHomogenity(input->image()->rootLayer())) { if (!getBatchMode()) { QMessageBox::critical(0, i18nc("@title:window", "CSV Export Error"), i18n("Unable to save to the CSV format.\n" "The CSV format not supports layer groups or masked layers.")); } return KisImportExportFilter::InvalidFormat; } if (filename.isEmpty()) return KisImportExportFilter::FileNotFound; CSVSaver kpc(input, getBatchMode()); KisImageBuilder_Result res; if ((res = kpc.buildAnimation(filename)) == KisImageBuilder_RESULT_OK) { dbgFile <<"success !"; return KisImportExportFilter::OK; } dbgFile <<" Result =" << res; if (res == KisImageBuilder_RESULT_CANCEL) return KisImportExportFilter::ProgressCancelled; return KisImportExportFilter::InternalError; }
// ======================================================= int CInterfaceNewt::msgBoxYesNo(const char *szTitle, const char *szText, ...) { char szBuf[4096]; va_list args; int nRes; va_start(args, szText); vsnprintf(szBuf, sizeof(szBuf), szText, args); va_end(args); if (!getBatchMode()) { nRes = newtWinChoice((char *) szTitle, i18n("Yes"), i18n("No"), szBuf); return ((nRes == 1) ? MSGBOX_YES : MSGBOX_NO); } else { showDebug(1, "Error: %s\n", szBuf); return MSGBOX_NO; } }
// ======================================================= int CInterfaceNewt::msgBoxContinueCancel(const char *szTitle, const char *szText, ...) { char szBuf[4096]; va_list args; int nRes; va_start(args, szText); vsnprintf(szBuf, sizeof(szBuf), szText, args); va_end(args); if (!getBatchMode()) { nRes = newtWinChoice((char *) szTitle, i18n("Continue"), i18n("Cancel"), szBuf); return ((nRes == 1) ? MSGBOX_CONTINUE : MSGBOX_CANCEL); } else { showDebug(1, "Error: %s\n", szBuf); return MSGBOX_CANCEL; } }
KisImportExportFilter::ConversionStatus KisVideoExport::convert(const QByteArray& from, const QByteArray& to) { Q_UNUSED(to); if (from != "application/x-krita") return KisImportExportFilter::NotImplemented; KisDocument* input = inputDocument(); QString filename = outputFile(); if (!input) return KisImportExportFilter::NoDocumentCreated; if (filename.isEmpty()) return KisImportExportFilter::FileNotFound; bool askForOptions = false; const QFileInfo fileInfo(filename); const QString suffix = fileInfo.suffix().toLower(); VideoExportOptionsDialog::CodecIndex codecIndex = VideoExportOptionsDialog::CODEC_H264; if (suffix == "mkv" || suffix == "mp4") { codecIndex = VideoExportOptionsDialog::CODEC_H264; askForOptions = true; } else if (suffix == "ogv") { codecIndex = VideoExportOptionsDialog::CODEC_THEORA; askForOptions = true; } QStringList additionalOptionsList; askForOptions &= !qApp->applicationName().toLower().contains("test") & !getBatchMode(); if (askForOptions) { KisCursorOverrideHijacker badGuy; VideoExportOptionsDialog dlg; dlg.setCodec(codecIndex); if (dlg.exec() == QDialog::Accepted) { additionalOptionsList = dlg.customUserOptions(); } else { return KisImportExportFilter::UserCancelled; } } VideoSaver kpc(input, getBatchMode()); if (!kpc.hasFFMpeg()) { const QString warningMessage = i18n("Couldn not find \'ffmpeg\' binary. Saving to video formats is impossible."); if (askForOptions) { QMessageBox::critical(KisPart::instance()->currentMainwindow(), i18n("Video Export Error"), warningMessage); } else { qWarning() << "WARNING:" << warningMessage; } return KisImportExportFilter::UsageError; } KisImageBuilder_Result res = kpc.encode(filename, additionalOptionsList); if (res == KisImageBuilder_RESULT_OK) { return KisImportExportFilter::OK; } else if (res == KisImageBuilder_RESULT_CANCEL) { return KisImportExportFilter::ProgressCancelled; } return KisImportExportFilter::InternalError; }
KisImportExportFilter::ConversionStatus KisHeightMapExport::convert(const QByteArray& from, const QByteArray& to) { dbgFile << "HeightMap export! From:" << from << ", To:" << to; if (from != "application/x-krita") return KisImportExportFilter::NotImplemented; KisDocument *inputDoc = inputDocument(); QString filename = outputFile(); if (!inputDoc) return KisImportExportFilter::NoDocumentCreated; if (filename.isEmpty()) return KisImportExportFilter::FileNotFound; KisImageWSP image = inputDoc->image(); Q_CHECK_PTR(image); if (inputDoc->image()->width() != inputDoc->image()->height()) { inputDoc->setErrorMessage(i18n("Cannot export this image to a heightmap: it is not square")); return KisImportExportFilter::WrongFormat; } if (inputDoc->image()->colorSpace()->colorModelId() != GrayAColorModelID) { inputDoc->setErrorMessage(i18n("Cannot export this image to a heightmap: it is not grayscale")); return KisImportExportFilter::WrongFormat; } KoDialog* kdb = new KoDialog(0); kdb->setWindowTitle(i18n("HeightMap Export Options")); kdb->setButtons(KoDialog::Ok | KoDialog::Cancel); Ui::WdgOptionsHeightMap optionsHeightMap; QWidget* wdg = new QWidget(kdb); optionsHeightMap.setupUi(wdg); kdb->setMainWidget(wdg); QApplication::restoreOverrideCursor(); QString filterConfig = KisConfig().exportConfiguration("HeightMap"); KisPropertiesConfiguration cfg; cfg.fromXML(filterConfig); optionsHeightMap.intSize->setValue(image->width()); int endianness = cfg.getInt("endianness", 0); QDataStream::ByteOrder bo = QDataStream::LittleEndian; optionsHeightMap.radioPC->setChecked(true); if (endianness == 0) { bo = QDataStream::BigEndian; optionsHeightMap.radioMac->setChecked(true); } if (!getBatchMode()) { if (kdb->exec() == QDialog::Rejected) { return KisImportExportFilter::UserCancelled; } } if (optionsHeightMap.radioMac->isChecked()) { cfg.setProperty("endianness", 0); bo = QDataStream::BigEndian; } else { cfg.setProperty("endianness", 1); bo = QDataStream::LittleEndian; } KisConfig().setExportConfiguration("HeightMap", cfg); bool downscale = false; if (to == "image/x-r8" && image->colorSpace()->colorDepthId() == Integer16BitsColorDepthID) { downscale = (QMessageBox::question(0, i18nc("@title:window", "Downscale Image"), i18n("You specified the .r8 extension for a 16 bit/channel image. Do you want to save as 8 bit? Your image data will not be changed."), QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes); } // the image must be locked at the higher levels KIS_SAFE_ASSERT_RECOVER_NOOP(image->locked()); KisPaintDeviceSP pd = new KisPaintDevice(*image->projection()); QFile f(filename); f.open(QIODevice::WriteOnly); QDataStream s(&f); s.setByteOrder(bo); KisRandomConstAccessorSP it = pd->createRandomConstAccessorNG(0, 0); bool r16 = ((image->colorSpace()->colorDepthId() == Integer16BitsColorDepthID) && !downscale); for (int i = 0; i < image->height(); ++i) { for (int j = 0; j < image->width(); ++j) { it->moveTo(i, j); if (r16) { s << KoGrayU16Traits::gray(const_cast<quint8*>(it->rawDataConst())); } else { s << KoGrayU8Traits::gray(const_cast<quint8*>(it->rawDataConst())); } } } f.close(); return KisImportExportFilter::OK; }