diff --git a/src/control/jobs/BaseExportJob.cpp b/src/control/jobs/BaseExportJob.cpp index b937cc6e..b459b109 100644 --- a/src/control/jobs/BaseExportJob.cpp +++ b/src/control/jobs/BaseExportJob.cpp @@ -35,6 +35,14 @@ void BaseExportJob::addFileFilterToDialog(string name, string pattern) gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter); } +string BaseExportJob::getFilterName() +{ + XOJ_CHECK_TYPE(BaseExportJob); + + GtkFileFilter* filter = gtk_file_chooser_get_filter(GTK_FILE_CHOOSER(dialog)); + return gtk_file_filter_get_name(filter); +} + void BaseExportJob::prepareSavePath(path& path) { XOJ_CHECK_TYPE(BaseExportJob); diff --git a/src/control/jobs/BaseExportJob.h b/src/control/jobs/BaseExportJob.h index b5a8be31..42f45956 100644 --- a/src/control/jobs/BaseExportJob.h +++ b/src/control/jobs/BaseExportJob.h @@ -34,6 +34,7 @@ public: public: virtual bool showFilechooser(); + string getFilterName(); protected: void initDialog(); diff --git a/src/control/jobs/PdfExportJob.cpp b/src/control/jobs/PdfExportJob.cpp index a92fb944..39d13fa4 100644 --- a/src/control/jobs/PdfExportJob.cpp +++ b/src/control/jobs/PdfExportJob.cpp @@ -4,6 +4,7 @@ #include "pdf/base/XojPdfExportFactory.h" #include +#include PdfExportJob::PdfExportJob(Control* control) @@ -22,6 +23,7 @@ void PdfExportJob::addFilterToDialog() XOJ_CHECK_TYPE(PdfExportJob); addFileFilterToDialog(_C("PDF files"), "*.pdf"); + addFileFilterToDialog(_C("PDF Without paper style"), "*.pdf"); } void PdfExportJob::prepareSavePath(path& path) @@ -58,14 +60,52 @@ bool PdfExportJob::isUriValid(string& uri) return false; } + + std::cout<<"PdfExportJob::isUriValid\n"; + string filterName = BaseExportJob::getFilterName(); + std::cout<<"FilterName: "<getPageCount(); + + if (action == ACTION_RESET) + { + /** apply "plain" paper style to all pages before export */ + for (int i=0; igetPage(i)->getBackgroundType(); + doc->getPage(i)->setBackgroundType(PageType("plain")); + } + } + + if (action == ACTION_RESTORE) + { + /** restore each page to its original style */ + for (int i=0; igetPage(i)->setBackgroundType(pt[i]); + } + } + +} + void PdfExportJob::run() { XOJ_CHECK_TYPE(PdfExportJob); Document* doc = control->getDocument(); + + size_t count = doc->getPageCount(); + PageType pt[count]; + + resetBackgroundType(doc, pt, ACTION_RESET); + doc->lock(); XojPdfExport* pdfe = XojPdfExportFactory::createExport(doc, control); doc->unlock(); @@ -83,5 +123,7 @@ void PdfExportJob::run() } delete pdfe; + + resetBackgroundType(doc, pt, ACTION_RESTORE); } diff --git a/src/control/jobs/PdfExportJob.h b/src/control/jobs/PdfExportJob.h index ca3bfc05..ffc1fe23 100644 --- a/src/control/jobs/PdfExportJob.h +++ b/src/control/jobs/PdfExportJob.h @@ -13,6 +13,15 @@ #include "BaseExportJob.h" +class Document; +class PageType; + +enum ResetActionType +{ + ACTION_RESET = 0, + ACTION_RESTORE = 1 +}; + class PdfExportJob : public BaseExportJob { public: @@ -28,6 +37,7 @@ protected: virtual void addFilterToDialog(); virtual void prepareSavePath(path& path); virtual bool isUriValid(string& uri); + void resetBackgroundType(Document* doc, PageType* pt, ResetActionType action); private: XOJ_TYPE_ATTRIB;