void PdfExportJob::run() { XOJ_CHECK_TYPE(PdfExportJob); SynchronizedProgressListener pglistener(this->control); Document* doc = control->getDocument(); doc->lock(); PdfExport pdf(doc, &pglistener); doc->unlock(); if (!pdf.createPdf(this->filename)) { this->errorMsg = String::format(_("Create pdf failed: %s"), pdf.getLastError().c_str()); if (control->getWindow()) { callAfterRun(); } else { g_error("%s", this->errorMsg.c_str()); } } }
void AutosaveJob::run() { XOJ_CHECK_TYPE(AutosaveJob); SaveHandler handler; control->getUndoRedoHandler()->documentAutosaved(); Document * doc = control->getDocument(); doc->lock(); handler.prepareSave(doc); String filename = doc->getFilename(); doc->unlock(); // TODO: incrementel autosave if (filename.isEmpty()) { filename = Util::getAutosaveFilename(); } else { if (filename.length() > 5 && filename.substring(-4) == ".xoj") { filename = filename.substring(0, -4); } filename += ".autosave.xoj"; } control->renameLastAutosaveFile(); GzOutputStream * out = new GzOutputStream(filename); handler.saveTo(out, filename); delete out; this->error = handler.getErrorMessage(); if (!this->error.isEmpty()) { callAfterRun(); } else { control->deleteLastAutosaveFile(filename); } }