예제 #1
0
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());
        }
    }
}
예제 #2
0
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);
	}
}