Hello community, here is the log from the commit of package boomaga for openSUSE:Factory checked in at 2018-04-06 17:47:46 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/boomaga (Old) and /work/SRC/openSUSE:Factory/.boomaga.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "boomaga" Fri Apr 6 17:47:46 2018 rev:6 rq:593835 version:1.2.0 Changes: -------- --- /work/SRC/openSUSE:Factory/boomaga/boomaga.changes 2018-01-09 14:52:59.788355549 +0100 +++ /work/SRC/openSUSE:Factory/.boomaga.new/boomaga.changes 2018-04-06 17:47:59.802849885 +0200 @@ -1,0 +2,11 @@ +Thu Apr 5 13:28:14 UTC 2018 - [email protected] + +- Update to 1.2.0. + * Fix: The program shows empty page if page contents is a link to + the array. + * Fix In some cases, the program chose an incorrect value of the + DISPLAY variable. + * Fix: More accurate handling of comments in the file. + * Updated translations. + +------------------------------------------------------------------- Old: ---- boomaga-1.1.0.tar.gz New: ---- boomaga-1.2.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ boomaga.spec ++++++ --- /var/tmp/diff_new_pack.NMVZLd/_old 2018-04-06 17:48:00.702817355 +0200 +++ /var/tmp/diff_new_pack.NMVZLd/_new 2018-04-06 17:48:00.702817355 +0200 @@ -17,12 +17,12 @@ Name: boomaga -Version: 1.1.0 +Version: 1.2.0 Release: 0 Summary: Virtual Printer for Viewing a Document before Printing -License: GPL-2.0 and LGPL-2.1+ +License: GPL-2.0-only AND LGPL-2.1-or-later Group: Productivity/Publishing/Other -Url: http://boomaga.github.io/ +URL: http://boomaga.github.io/ Source0: https://github.com/Boomaga/%{name}/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz BuildRequires: cmake # SLE12 needs special BuildRequires. ++++++ boomaga-1.1.0.tar.gz -> boomaga-1.2.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boomaga-1.1.0/CMakeLists.txt new/boomaga-1.2.0/CMakeLists.txt --- old/boomaga-1.1.0/CMakeLists.txt 2017-12-19 15:00:32.000000000 +0100 +++ new/boomaga-1.2.0/CMakeLists.txt 2018-02-14 12:39:53.000000000 +0100 @@ -29,7 +29,7 @@ project(boomaga) set(MAJOR_VERSION 1) -set(MINOR_VERSION 1) +set(MINOR_VERSION 2) set(PATCH_VERSION 0) set(FULL_VERSION ${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boomaga-1.1.0/cups/envinfo.cpp new/boomaga-1.2.0/cups/envinfo.cpp --- old/boomaga-1.1.0/cups/envinfo.cpp 2017-12-19 15:00:32.000000000 +0100 +++ new/boomaga-1.2.0/cups/envinfo.cpp 2018-02-14 12:39:53.000000000 +0100 @@ -45,7 +45,7 @@ "lxsession" << \ "Xfce4-session" -#define ENV_VARS \ +#define READ_ENV_VARS \ "DISPLAY" << \ "DBUS_SESSION_BUS_ADDRESS" << \ "XDG_CACHE_HOME" << \ @@ -54,6 +54,13 @@ "GTK_RC_FILES" << \ "GTK2_RC_FILES" +#define WRITE_ENV_VARS \ + "XDG_CACHE_HOME" << \ + "KDE_FULL_SESSION" << \ + "QT_PLUGIN_PATH" << \ + "GTK_RC_FILES" << \ + "GTK2_RC_FILES" + #ifdef Q_OS_FREEBSD /************************************************ @@ -172,7 +179,7 @@ setEnv("BOOMAGA_PROC_FILE", file.fileName()); QStringList extEnv; - extEnv << ENV_VARS; + extEnv << READ_ENV_VARS; foreach (QString name, extEnv) { @@ -267,12 +274,14 @@ if (!file.open(QFile::WriteOnly | QFile::Truncate)) return false; - QHashIterator<QString, QString> it(mData); - while (it.hasNext()) + QStringList extEnv; + extEnv << WRITE_ENV_VARS; + + foreach (QString name, extEnv) { - it.next(); - file.write(QString("%1=%2\n").arg(it.key(), it.value()).toLocal8Bit()); + file.write(QString("%1=%2\n").arg(name, mData.value(name, "")).toLocal8Bit()); } + file.close(); return true; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boomaga-1.1.0/gui/pdfmerger/pdfprocessor.cpp new/boomaga-1.2.0/gui/pdfmerger/pdfprocessor.cpp --- old/boomaga-1.1.0/gui/pdfmerger/pdfprocessor.cpp 2017-12-19 15:00:32.000000000 +0100 +++ new/boomaga-1.2.0/gui/pdfmerger/pdfprocessor.cpp 2018-02-14 12:39:53.000000000 +0100 @@ -265,14 +265,24 @@ if (pageDict.contains("LastModified")) dict.insert("LastModified", pageDict.value("LastModified")); if (pageDict.contains("StructParents")) dict.insert("StructParents", pageDict.value("StructParents")); - const PDF::Value &v = pageDict.value("Contents"); + PDF::Value v = pageDict.value("Contents"); + PDF::Object content; bool ok; // Page content is Link ..................... - const PDF::Link &link = v.asLink(&ok); - if (ok) + while (v.isLink()) + { + const PDF::Link &link = v.asLink(&ok); + if (!ok) + throw QString("Page %1 %2 has incorrect content type.").arg(page.objNum()).arg(page.genNum()); + + content = mReader.getObject(link); + v = content.value(); + } + + // Page content is Dict (stream) ............ + if (v.isDict()) { - const PDF::Object &content = mReader.getObject(link); xObj.setStream(content.stream()); if (content.dict().contains("Filter")) dict.insert("Filter", content.dict().value("Filter")); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boomaga-1.1.0/gui/pdfparser/pdfobject.cpp new/boomaga-1.2.0/gui/pdfparser/pdfobject.cpp --- old/boomaga-1.1.0/gui/pdfparser/pdfobject.cpp 2017-12-19 15:00:32.000000000 +0100 +++ new/boomaga-1.2.0/gui/pdfparser/pdfobject.cpp 2018-02-14 12:39:53.000000000 +0100 @@ -221,7 +221,9 @@ Object::Object(ObjNum objNum, GenNum genNum, const Value &value): mObjNum(objNum), mGenNum(genNum), - mValue(value) + mValue(value), + mPos(0), + mLen(0) { } @@ -233,7 +235,9 @@ mObjNum( other.mObjNum), mGenNum( other.mGenNum), mValue( other.mValue), - mStream( other.mStream) + mStream( other.mStream), + mPos( other.mPos), + mLen( other.mLen) { } @@ -247,6 +251,8 @@ mGenNum = other.mGenNum; mValue = other.mValue; mStream = other.mStream; + mPos = other.mPos; + mLen = other.mLen; return *this; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boomaga-1.1.0/gui/pdfparser/pdfobject.h new/boomaga-1.2.0/gui/pdfparser/pdfobject.h --- old/boomaga-1.1.0/gui/pdfparser/pdfobject.h 2017-12-19 15:00:32.000000000 +0100 +++ new/boomaga-1.2.0/gui/pdfparser/pdfobject.h 2018-02-14 12:39:53.000000000 +0100 @@ -72,6 +72,11 @@ /// identify a specialized subcategory of the general type. QString subType() const; + bool isValid() const { return !mValue.isUndefined(); } + + quint64 pos() const { return mPos; } + quint64 len() const { return mLen; } + private: QByteArray streamFlateDecode(const QByteArray &source) const; @@ -79,6 +84,8 @@ PDF::GenNum mGenNum; Value mValue; QByteArray mStream; + quint64 mPos; + quint64 mLen; }; } // namespace PDF diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boomaga-1.1.0/gui/pdfparser/pdfreader.cpp new/boomaga-1.2.0/gui/pdfparser/pdfreader.cpp --- old/boomaga-1.1.0/gui/pdfparser/pdfreader.cpp 2017-12-19 15:00:32.000000000 +0100 +++ new/boomaga-1.2.0/gui/pdfparser/pdfreader.cpp 2018-02-14 12:39:53.000000000 +0100 @@ -59,6 +59,7 @@ bool compareStr(quint64 pos, const char *str) const; bool compareWord(quint64 pos, const char *str) const; quint64 skipSpace(quint64 pos) const; + quint64 skipComment(quint64 pos) const; qint64 skipCRLF(quint64 pos) const; qint64 indexOf(const char *str, quint64 from) const; qint64 indexOfBack(const char *str, quint64 from) const; @@ -259,8 +260,28 @@ ************************************************/ quint64 ReaderData::skipSpace(quint64 pos) const { - while (pos < mSize && isspace(mData[pos])) - pos++; + while (pos < mSize) + { + while (pos < mSize && isspace(mData[pos])) + pos++; + + if (mData[pos] != '%') + return pos; + + pos = skipComment(pos); + } + + return pos; +} + + +/************************************************ + * + ************************************************/ +quint64 ReaderData::skipComment(quint64 pos) const +{ + while (pos < mSize && mData[pos] != '\n' && mData[pos] != '\r') + ++pos; return pos; } @@ -889,8 +910,7 @@ ************************************************/ Reader::~Reader() { - if (mFile && mData) - mFile->unmap(const_cast<uchar*>(reinterpret_cast<const uchar*>(mData))); + close(); delete mFile; } @@ -954,6 +974,10 @@ pos += strlen("endstream"); } + pos = data.skipSpace(pos); + pos += strlen("endobj"); + res->mPos = start; + res->mLen = pos - start; return pos; } @@ -1147,6 +1171,15 @@ /************************************************ * ************************************************/ +Object Reader::getObject(const XRefEntry &xrefEntry) const +{ + return getObject(xrefEntry.objNum(), xrefEntry.genNum()); +} + + +/************************************************ + * + ************************************************/ const Value Reader::find(const QString &path) const { QStringList objects = path.split('/', QString::SkipEmptyParts); @@ -1178,6 +1211,15 @@ /************************************************ * ************************************************/ +QByteArray Reader::rawData(quint64 pos, quint64 len) const +{ + return QByteArray::fromRawData(mData + pos, len); +} + + +/************************************************ + * + ************************************************/ void Reader::open(const QString &fileName, quint64 startPos, quint64 endPos) { mFile = new QFile(fileName); @@ -1215,8 +1257,22 @@ /************************************************ * ************************************************/ +void Reader::close() +{ + if (mFile && mData) + mFile->unmap(const_cast<uchar*>(reinterpret_cast<const uchar*>(mData))); + mData = nullptr; + mSize = 0; +} + + +/************************************************ + * + ************************************************/ void Reader::load() { + mXRefTable.clear(); + mTrailerDict.clear(); ReaderData data(mData, mSize, mTextCodec); // Check header ................................... diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boomaga-1.1.0/gui/pdfparser/pdfreader.h new/boomaga-1.2.0/gui/pdfparser/pdfreader.h --- old/boomaga-1.1.0/gui/pdfparser/pdfreader.h 2017-12-19 15:00:32.000000000 +0100 +++ new/boomaga-1.2.0/gui/pdfparser/pdfreader.h 2018-02-14 12:39:53.000000000 +0100 @@ -72,31 +72,41 @@ /// Constructs a Reader object. Reader(); - ///Destroys the object and frees its resources. + ///Destroys the object and frees its resources, closing it if necessary. virtual ~Reader(); /// Reads PDF document from the existing file, starting at position startPos until endPos. /// If endPos is 0 (the default), Reader reads all bytes starting at position startPos /// until the end of the file. If the fileName has no path or a relative path, the path /// used will be the application's current directory path at the time of the open() call. - void open(const QString &fileName, quint64 startPos, quint64 endPos); + void open(const QString &fileName, quint64 startPos = 0, quint64 endPos = 0); /// Reads PDF document from first size bytes of the data. /// The bytes are not copied. The Reader will contain the data pointer. The caller /// guarantees that data will not be deleted or modified as long as this Reader exist. void open(const char * const data, quint64 size); - const XRefTable &xRefTable() { return mXRefTable; } + /// Closes this reader for reading. + void close(); + + const XRefTable &xRefTable() const { return mXRefTable; } const Dict &trailerDict() const { return mTrailerDict; } Dict trailerDict() { return mTrailerDict; } Object getObject(const Link &link) const; Object getObject(uint objNum, quint16 genNum) const; + Object getObject(const XRefEntry &xrefEntry) const; const Value find(const QString &path) const; quint32 pageCount(); + /// Constructs a QByteArray that uses len bytes from the data, + /// starting at position pos. The bytes are not copied. + /// The caller guarantees that reader will not be closed as long + /// as this QByteArray and any copies of it exist. + QByteArray rawData(quint64 pos, quint64 len) const; + protected: void load(); Value readValue(quint64 *pos) const; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boomaga-1.1.0/gui/pdfparser/pdfvalue.cpp new/boomaga-1.2.0/gui/pdfparser/pdfvalue.cpp --- old/boomaga-1.1.0/gui/pdfparser/pdfvalue.cpp 2017-12-19 15:00:32.000000000 +0100 +++ new/boomaga-1.2.0/gui/pdfparser/pdfvalue.cpp 2018-02-14 12:39:53.000000000 +0100 @@ -477,6 +477,15 @@ /************************************************ * ************************************************/ +void PDF::Dict::clear() +{ + values().clear(); +} + + +/************************************************ + * + ************************************************/ QMap<QString, Value> Dict::values() { assert(mType == Type::Dict); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boomaga-1.1.0/gui/pdfparser/pdfvalue.h new/boomaga-1.2.0/gui/pdfparser/pdfvalue.h --- old/boomaga-1.1.0/gui/pdfparser/pdfvalue.h 2017-12-19 15:00:32.000000000 +0100 +++ new/boomaga-1.2.0/gui/pdfparser/pdfvalue.h 2018-02-14 12:39:53.000000000 +0100 @@ -294,6 +294,9 @@ { }; + /// Removes all items from the dictionary. + void clear(); + /// Returns the value associated with the key key. /// If the dictionary contains no item with key key, the function returns defaultValue. /// If no defaultValue is specified, the function returns a Value with type Undefined. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boomaga-1.1.0/gui/translations/boomaga_uk_UA.desktop new/boomaga-1.2.0/gui/translations/boomaga_uk_UA.desktop --- old/boomaga-1.1.0/gui/translations/boomaga_uk_UA.desktop 1970-01-01 01:00:00.000000000 +0100 +++ new/boomaga-1.2.0/gui/translations/boomaga_uk_UA.desktop 2018-02-14 12:39:53.000000000 +0100 @@ -0,0 +1,20 @@ +[Desktop Entry] +Exec=boomaga %U +Icon=boomaga +Terminal=false +Type=Application +StartupNotify=true +Categories=Qt;Office; +MimeType=application/x-boomaga-boo; + +Name=Boomaga +GenericName=Virtual printer +Comment=Virtual printer for viewing and editing a document before printing. + + + +# Translations +Comment[uk_UA]=Віртуальний принтер, який дає змогу переглянути і відредагувати документ перед друком. +GenericName[uk_UA]=Віртуальний принтер +Name[uk_UA]=Boomaga +Icon[uk_UA]=boomaga diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boomaga-1.1.0/gui/translations/boomaga_uk_UA.ts new/boomaga-1.2.0/gui/translations/boomaga_uk_UA.ts --- old/boomaga-1.1.0/gui/translations/boomaga_uk_UA.ts 1970-01-01 01:00:00.000000000 +0100 +++ new/boomaga-1.2.0/gui/translations/boomaga_uk_UA.ts 2018-02-14 12:39:53.000000000 +0100 @@ -0,0 +1,737 @@ +<?xml version="1.0" ?><!DOCTYPE TS><TS language="uk_UA" version="2.1"> +<context> + <name>AboutDialog</name> + <message> + <source> About Boomaga</source> + <translation>Про програму</translation> + </message> + <message> + <source>About</source> + <translation>Про</translation> + </message> + <message> + <source>Authors</source> + <translation>Автори</translation> + </message> + <message> + <source>Thanks</source> + <translation>Подяки</translation> + </message> + <message> + <source>Translations</source> + <translation>Переклади</translation> + </message> + <message> + <source>Version: %1</source> + <translation>Версія: %1</translation> + </message> + <message> + <source>Boomaga provides a virtual printer for CUPS. This can be used for print preview or for print booklets.</source> + <translation>Boomaga надає віртуальний притрер для CUPS, який може бути використаний для попереднього перегляду або друку книг. </translation> + </message> + <message> + <source>Copyright: %1-%2 %3</source> + <translation>Авторські права: %1-%2-%3</translation> + </message> + <message> + <source>Homepage: %1</source> + <translation>Домашня сторінка: %1</translation> + </message> + <message> + <source>License: %1</source> + <translation>Ліцензія: %1</translation> + </message> + <message> + <source>If you are interested in working with our development team, <a %1>join us</a>.</source> + <translation>Хочете працювати з нашою командою розробників - <a %1>приєднуйтесь</a>.</translation> + </message> + <message> + <source>Special thanks to:</source> + <translation>Окрема подяка: </translation> + </message> + <message> + <source>If you want to help translate, we will be glad to see you in our translation team on <a %1>Transifex server</a>.</source> + <translation> Якщо ви хочете допомогти з перекладом, ми будемо раді бачити вас в нашій команді перекладачів на сервері <a %1>Transifex</a>.</translation> + </message> + <message> + <source>Boomaga is developed by the <a %1>Boomaga Team and contributors</a> on GitHub.</source> + <translation>Boomaga розробляється <a %1>Командою розробників Boomaga та сторонніми учасниками</a> на GitHub.</translation> + </message> +</context> +<context> + <name>ConfigDialog</name> + <message> + <source>Preferences</source> + <translation>Налаштування</translation> + </message> + <message> + <source>Divide your long booklets into smaller sub-booklets for printing.</source> + <translation>Розділяти під час друку велику книгу на невеликі зошити.</translation> + </message> + <message> + <source>Print as sub-booklets</source> + <translation>Друкувати з розбивкою на зошити</translation> + </message> + <message> + <source>Maximum number of sheets in your sub-booklet.</source> + <translation>Максимальна кількість листів у зошиті.</translation> + </message> + <message> + <source>Sheets per sub-booklet:</source> + <translation>Листів у зошиті:</translation> + </message> + <message> + <source>Autosave your jobs every time you print.</source> + <translation>Автоматично зберігати завдання після друку.</translation> + </message> + <message> + <source>AutoSave the recent sessions</source> + <translation>Автоматично зберігати сесії</translation> + </message> + <message> + <source>Allow negative page margins:</source> + <translation>Дозволяти від'ємні поля</translation> + </message> + <message> + <source>Select directory for saved jobs.</source> + <translation>Виберіть директорію для збереження завдань.</translation> + </message> + <message> + <source>Directory for saved sessions:</source> + <translation>Директорія для збережених сесій:</translation> + </message> +</context> +<context> + <name>ExportToPdf</name> + <message> + <source>Print to PDF</source> + <translation>Друк у PDF</translation> + </message> + <message> + <source>File name</source> + <translation>Вихідний файл</translation> + </message> + <message> + <source>Output file:</source> + <translation>Назва:</translation> + </message> + <message> + <source>...</source> + <translation>...</translation> + </message> + <message> + <source>Meta info</source> + <translation>Метадані</translation> + </message> + <message> + <source>Author:</source> + <translation>Автор:</translation> + </message> + <message> + <source> The name of the person who created the document.</source> + <translation>Ім'я особи, що створила цей документ.</translation> + </message> + <message> + <source>Title:</source> + <translation>Заголовок:</translation> + </message> + <message> + <source>Subject:</source> + <translation>Тема:</translation> + </message> + <message> + <source> The subject of the document.</source> + <translation>Тема документа.</translation> + </message> + <message> + <source> Keywords associated with the document.</source> + <translation>Ключові слова, пов'язані зі змістом документа</translation> + </message> + <message> + <source>Keywords:</source> + <translation>Ключові слова:</translation> + </message> + <message> + <source>PDF files (*.pdf);;All files (*.*)</source> + <translation>PDF-файли (*.pdf);;Усі файли (*.*)</translation> + </message> + <message> + <source>Overwrite file?</source> + <translation>Перезаписати файл?</translation> + </message> + <message> + <source>A file named "%1" already exists. +Are you sure you want to overwrite it?</source> + <translation>Файл з іменем "%1" вже існує. +Ви впевпевні, що хочете переписати його?</translation> + </message> + <message> + <source> The document's title.</source> + <translation>Заголовок документа.</translation> + </message> +</context> +<context> + <name>JobListView</name> + <message> + <source>%1 pages</source> + <translation>%1 сторінок</translation> + </message> +</context> +<context> + <name>MainWindow</name> + <message> + <source>&File</source> + <translation>&Файл</translation> + </message> + <message> + <source>&Preferences</source> + <translation>&Налаштування</translation> + </message> + <message> + <source>Help</source> + <translation>Допомога</translation> + </message> + <message> + <source>Layout</source> + <translation>Розташування</translation> + </message> + <message> + <source>1 up</source> + <translation>1 сторінка на аркуш</translation> + </message> + <message> + <source>2 up</source> + <translation>2 сторінки на аркуш</translation> + </message> + <message> + <source>Booklet</source> + <translation>Книгою</translation> + </message> + <message> + <source>Print on both sides of a sheet.</source> + <comment>MainForm::Double-sided checkbox tooltip</comment> + <translation>Двосторонній друк</translation> + </message> + <message> + <source>Double-sided</source> + <comment>MainForm::Double-sided checkbox</comment> + <translation>Двосторонній</translation> + </message> + <message> + <source>Jobs</source> + <translation>Завдання</translation> + </message> + <message> + <source>Printer</source> + <translation>Принтер</translation> + </message> + <message> + <source>Configure...</source> + <translation>Налаштувати...</translation> + </message> + <message> + <source>Toolbar</source> + <translation>Панель інструментів</translation> + </message> + <message> + <source>&Print</source> + <translation>&Друк</translation> + </message> + <message> + <source>E&xit</source> + <translation>Ви&хід</translation> + </message> + <message> + <source>Print and Close</source> + <translation>Друк і вихід</translation> + </message> + <message> + <source>Ctrl+P</source> + <translation>Ctrl+P</translation> + </message> + <message> + <source>Next sheet</source> + <translation>Наступний</translation> + </message> + <message> + <source>Previous sheet</source> + <translation>Попередній</translation> + </message> + <message> + <source>About Boomaga</source> + <translation>Про програму</translation> + </message> + <message> + <source>Boomaga</source> + <translation>Boomaga</translation> + </message> + <message> + <source>%v of %m</source> + <comment>Format for QProgressBar (http://qt-project.org/doc/qt-4.8/qprogressbar.html#format-prop)</comment> + <translation>%v з %m</translation> + </message> + <message> + <source>Print the all pages on %1.</source> + <translation>Друкуються усі сторінки на %1</translation> + </message> + <message> + <source>Print the odd pages on %1.<p>When finished, turn the pages, insert them into the printer<br>and click the Continue button.</source> + <translation>Друкуються непарні сторінки на %1.<p>Після закінчення перегорніть стос паперу, вставте його в принтер<br> і натисніть кнопку "Продовжити".</translation> + </message> + <message> + <source>Print the even pages on %1.</source> + <translation>Друкуються парні сторінки на %1.</translation> + </message> + <message> + <source>Continue</source> + <translation>Продовжити</translation> + </message> + <message> + <source>%1 pages</source> + <comment>Status bar</comment> + <translation>%1 сторінок</translation> + </message> + <message> + <source>%1 page</source> + <comment>Status bar</comment> + <translation>%1 сторінка</translation> + </message> + <message> + <source>%1 sheets</source> + <comment>Status bar</comment> + <translation>%1 аркуш.</translation> + </message> + <message> + <source>%1 sheet</source> + <comment>Status bar</comment> + <translation>%1 аркуш</translation> + </message> + <message> + <source>Sheet %1 of %2</source> + <comment>Status bar</comment> + <translation>Акруш %1 з %2</translation> + </message> + <message> + <source>Insert blank page after this page</source> + <translation>Вставити порожню сторінку після цієї</translation> + </message> + <message> + <source>Delete this page</source> + <translation>Видалити цю сторінку</translation> + </message> + <message> + <source>Undo delete</source> + <translation>Відмінити видалення</translation> + </message> + <message> + <source>Insert blank page before this page</source> + <translation>Вставити порошню сторінку перед цією</translation> + </message> + <message> + <source>Save</source> + <translation>Зберегти</translation> + </message> + <message> + <source>Save project</source> + <translation>Зберегти проект</translation> + </message> + <message> + <source>Ctrl+S</source> + <translation>Ctrl+S</translation> + </message> + <message> + <source>Save as...</source> + <translation>Зберегти як...</translation> + </message> + <message> + <source>Save project under a new name</source> + <translation>Зберегти проект з новою назвою</translation> + </message> + <message> + <source>Ctrl+Shift+S</source> + <translation>Ctrl+Shift+S</translation> + </message> + <message> + <source>Open...</source> + <translation>Відкрити...</translation> + </message> + <message> + <source>Open an existing project</source> + <translation>Відкрити існуючий проект</translation> + </message> + <message> + <source>Ctrl+O</source> + <translation>Ctrl+O</translation> + </message> + <message> + <source>Page %1</source> + <comment>'Undo deletion' menu item</comment> + <translation>Сторінка %1</translation> + </message> + <message> + <source>Boomaga files (*.boo);;All files (*.*)</source> + <translation>Файли Boomaga(*.boo);;Усі файли (*.*)</translation> + </message> + <message> + <source>Project saved successfully.</source> + <translation>Проект збережено.</translation> + </message> + <message> + <source>All supported files (*.pdf *.boo);;Boomaga files (*.boo);;PDF files (*.pdf);;All files (*.*)</source> + <translation>Усі підтримувані файли (*.pdf *.boo);;Проект Boomaga (*.boo);;Документ PDF (*.pdf);;Усі файли (*.*)</translation> + </message> + <message> + <source>4 up horizontal</source> + <translation>4 стор. на аркуші горизонтально</translation> + </message> + <message> + <source>4 up vertical</source> + <translation>4 стор. на аркуші вертикально</translation> + </message> + <message> + <source>8 up horizontal</source> + <translation>8 стор. на аркуші горизонтально</translation> + </message> + <message> + <source>8 up vertical</source> + <translation>8 стор. на аркуші вертикально</translation> + </message> + <message> + <source>Start new booklet from this page</source> + <translation>Почати новий зошит з цієї сторінки</translation> + </message> + <message> + <source>Don't start new booklet from this page</source> + <translation>Не починати новий зошит з цієї сторінки</translation> + </message> + <message> + <source>Rotate page to the left</source> + <translation>Повернути сторінку проти годинникової стрілки</translation> + </message> + <message> + <source>Rotate page to the right</source> + <translation>Повернути сторінку за годинниковою стрілкою</translation> + </message> + <message> + <source>Rename job</source> + <translation>Перейменувати завдання</translation> + </message> + <message> + <source>Rotate job to the left</source> + <translation>Повернути завдання проти годинникової стрілки</translation> + </message> + <message> + <source>Rotate job to the right</source> + <translation>Повернути завдання за годинниковою стрілкою</translation> + </message> + <message> + <source>Job title:</source> + <translation>Назва завдання:</translation> + </message> + <message> + <source>Export the project to PDF</source> + <translation>Експортувати проект у PDF</translation> + </message> + <message> + <source>Ctrl+E</source> + <translation>Ctrl+E</translation> + </message> + <message> + <source>Clone job...</source> + <translation>Клонувати завдання...</translation> + </message> + <message> + <source>Clone job</source> + <translation>Клонування завдання</translation> + </message> + <message> + <source>Number of copies:</source> + <translation>Кількість копій</translation> + </message> + <message> + <source>Print with options...</source> + <translation>Друк з заданням налаштувань...</translation> + </message> + <message> + <source>Select number of copies before printing.</source> + <translation>Вибір кількості копій до друку.</translation> + </message> + <message> + <source>Ctrl+Shift+P</source> + <translation>Ctrl+Shift+P</translation> + </message> + <message> + <source>Sub-booklets</source> + <translation>Зошити</translation> + </message> + <message> + <source>Undo delete page</source> + <translation>Відмінити видалення сторінок</translation> + </message> + <message> + <source>Page %1 of %2</source> + <comment>Status bar</comment> + <translation>Стор. %1 з %2</translation> + </message> + <message> + <source>Recent files</source> + <translation>Останні файли</translation> + </message> + <message> + <source>&Edit page</source> + <translation>Редагування &сторінки</translation> + </message> + <message> + <source>Edit &job</source> + <translation>Редагування &завдання</translation> + </message> + <message> + <source>&Export to PDF...</source> + <translation>&Експорт у PDF...</translation> + </message> + <message> + <source>Delete pages until the end of the job</source> + <translation>Видалити сторінки до кінця завдання.</translation> + </message> + <message> + <source>Delete current job</source> + <translation>Видалити поточне завдання</translation> + </message> + <message> + <source>Auto saving</source> + <translation>Авто збереження</translation> + </message> + <message> + <source>I can't create directory "%1"</source> + <translation>Не вдалося створити директорію %1</translation> + </message> + <message> + <source>%1 %2: Page %3</source> + <comment>'Undo deletion' menu item, (%1 - is a job number, %2 - is a job title, %3 - is a page number in this job</comment> + <translation>%1 %2: сторінка %3</translation> + </message> +</context> +<context> + <name>PdfMerger</name> + <message> + <source>I can't write file "%1"</source> + <translation>Не вдалося записати файл: "%1"</translation> + </message> +</context> +<context> + <name>PrintDialog</name> + <message> + <source>Print document</source> + <translation>Друк документа</translation> + </message> + <message> + <source>Number of copies:</source> + <translation>Кількість копій:</translation> + </message> + <message> + <source>Collate copies:</source> + <translation>Розібрати за копіями:</translation> + </message> +</context> +<context> + <name>PrinterSettings</name> + <message> + <source>Margins (mm)</source> + <translation>Поля (мм)</translation> + </message> + <message> + <source>Right:</source> + <translation>Праве:</translation> + </message> + <message> + <source>Bottom:</source> + <translation>Нижнє:</translation> + </message> + <message> + <source>Internal:</source> + <translation>Внутрішнє:</translation> + </message> + <message> + <source>Left:</source> + <translation>Ліве:</translation> + </message> + <message> + <source>Top:</source> + <translation>Верхнє:</translation> + </message> + <message> + <source>Draw border</source> + <translation>Друкувати рамку</translation> + </message> + <message> + <source>Print in reverse order</source> + <translation>Друкувати в зворотньому порядку</translation> + </message> + <message> + <source>Printer has duplexer</source> + <translation>Дуплексний принтер</translation> + </message> + <message> + <source>Manual with reverse (suitable for most printers)</source> + <translation>Вручну зі зміною порядку (більшість принтерів)</translation> + </message> + <message> + <source>Manual without reverse</source> + <translation>Вручну без зміни порядку</translation> + </message> + <message> + <source>Preferences of "%1"</source> + <translation>Налаштування %1</translation> + </message> + <message> + <source>Profiles</source> + <translation>Профілі</translation> + </message> + <message> + <source>+</source> + <translation>+</translation> + </message> + <message> + <source>-</source> + <translation>-</translation> + </message> + <message> + <source>Reset to default</source> + <translation>Скинути</translation> + </message> + <message> + <source>Profile %1</source> + <comment>Defaul name for created printer profile in the Printer Settings diaog</comment> + <translation>Профіль: %1</translation> + </message> + <message> + <source>Color mode:</source> + <translation>Режим кольору:</translation> + </message> + <message> + <source>Default</source> + <translation>За замовчуванням</translation> + </message> + <message> + <source>Force grayscale</source> + <translation>Чорно-білий друк</translation> + </message> + <message> + <source>Force color</source> + <translation>Кольоровий друк</translation> + </message> + <message> + <source>Settings</source> + <translation>Налаштування</translation> + </message> + <message> + <source>Print on both sides</source> + <translation>Двосторонній друк</translation> + </message> + <message> + <source>Flip on short edge</source> + <translation>Оправа по короткій стороні</translation> + </message> + <message> + <source>Flip on long edge</source> + <translation>Оправа по довгій стороні</translation> + </message> +</context> +<context> + <name>Project</name> + <message> + <source>Boomaga</source> + <comment>Error message title</comment> + <translation>Boomaga</translation> + </message> + <message> + <source>I can't write to file '%1'</source> + <translation>Не вдалос записати файл: "%1"</translation> + </message> + <message> + <source>I can't open file "%1" (No such file or directory)</source> + <translation>Не вдалося відкрити файл: "%1" (Немає такого файлу)</translation> + </message> + <message> + <source>I can't open file "%1" (Access denied)</source> + <translation>Не вдалося відкрити файл: "%1" (Немає прав доступу)</translation> + </message> + <message> + <source>I can't open file "%1"</source> + <translation>Не вдалося відкрити файл: "%1"</translation> + </message> + <message> + <source>I can't read file "%1" either because it's not a supported file type, or because the file has been damaged.</source> + <translation>Не вдалося прочитати файл: "%1", файл зіпсовано або файли такого типу не підтримуються.</translation> + </message> +</context> +<context> + <name>ProjectFile</name> + <message> + <source>I can't open file "%1"</source> + <translation>Не вдалося відкрити файл: "%1"</translation> + </message> + <message> + <source>I can't write to file '%1'</source> + <translation>Не вдалося записати файл: "%1"</translation> + </message> +</context> +<context> + <name>QObject</name> + <message> + <source>I can't read from file '%1'</source> + <translation>Не вдалося прочитати файл: "%1"</translation> + </message> + <message> + <source>I can't write to file '%1'</source> + <translation>Не вдалося записати файл: "%1"</translation> + </message> + <message> + <source>Untitled</source> + <translation>Без назви</translation> + </message> + <message> + <source>Default</source> + <comment>Printer profile default name</comment> + <translation>За замовчуванням</translation> + </message> +</context> +<context> + <name>Settings</name> + <message> + <source>~/Untitled.pdf</source> + <translation>~/Без_назви.pdf</translation> + </message> +</context> +<context> + <name>SubBookletView</name> + <message> + <source>Sub-booklet %1</source> + <translation>Зошит %1</translation> + </message> + <message> + <source>%1 pages</source> + <translation>%1 сторінок</translation> + </message> +</context> +<context> + <name>TmpPdfFile</name> + <message> + <source>I can't create temporary file "%1"</source> + <translation>Не вдалося створити тимчасовий файл: "%1"</translation> + </message> + <message> + <source>Something is wrong. I can't find boomagamerger program. +Please reinstall me.</source> + <translation>Невдача знову спіткала українських спортсменів... Не вдалося знати програму boomagameter. Спробуйте перевстановити мене.</translation> + </message> + <message> + <source>I can't read file '%1'</source> + <translation>Не вдалося прочитати файл: "%1"</translation> + </message> + <message> + <source>I can't write to file '%1'</source> + <translation>Не вдалося записати файл: "%1"</translation> + </message> +</context> +</TS> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boomaga-1.1.0/gui/translations/translatorsinfo/translators_uk_UA.info new/boomaga-1.2.0/gui/translations/translatorsinfo/translators_uk_UA.info --- old/boomaga-1.1.0/gui/translations/translatorsinfo/translators_uk_UA.info 1970-01-01 01:00:00.000000000 +0100 +++ new/boomaga-1.2.0/gui/translations/translatorsinfo/translators_uk_UA.info 2018-02-14 12:39:53.000000000 +0100 @@ -0,0 +1,42 @@ +_help = -- + + +translator_1_nameEnglish = Mykhailo Lytvyn +translator_1_nameNative = Михайло Литвин +translator_1_contact = lytvyn.at + +translator_2_nameEnglish = +translator_2_nameNative = +translator_2_contact = -- + +translator_3_nameEnglish = -- +translator_3_nameNative = -- +translator_3_contact = -- + +translator_4_nameEnglish = -- +translator_4_nameNative = -- +translator_4_contact = -- + +translator_5_nameEnglish = -- +translator_5_nameNative = -- +translator_5_contact = -- + +translator_6_nameEnglish = -- +translator_6_nameNative = -- +translator_6_contact = -- + +translator_7_nameEnglish = -- +translator_7_nameNative = -- +translator_7_contact = -- + +translator_8_nameEnglish = -- +translator_8_nameNative = -- +translator_8_contact = -- + +translator_9_nameEnglish = -- +translator_9_nameNative = -- +translator_9_contact = -- + +translator_10_nameEnglish = -- +translator_10_nameNative = -- +translator_10_contact = -- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boomaga-1.1.0/scripts/testBackend.sh new/boomaga-1.2.0/scripts/testBackend.sh --- old/boomaga-1.1.0/scripts/testBackend.sh 1970-01-01 01:00:00.000000000 +0100 +++ new/boomaga-1.2.0/scripts/testBackend.sh 2018-02-14 12:39:53.000000000 +0100 @@ -0,0 +1,45 @@ +#!/bin/sh + +FILE=$1 + +if [ "$FILE" = "" ]; then + echo "Missing file operand" + echo "" + echo "Usage: testBackend.sh PDF_FILE" + exit 1 +fi + +FILE=$(readlink -e "${FILE}") + + +boomagabackend="" + +dir=$(pwd) +while [[ "$dir" != "/" ]]; do + if [ -d "${dir}/.git" ]; then + boomagabackend=$(find "$dir" -name "boomagabackend") + break + fi + + dir=$(dirname $dir) + sleep 1 +done + + +if [ "$boomagabackend" == "" ]; then + boomagabackend=$(find "/usr/local/lib" "/usr/lib" -name "boomagabackend" 2>/dev/null) +fi + +if [ "$boomagabackend" == "" ]; then + "echo boomagabackend not found" +fi + + +echo "################" +echo "# program - $boomagabackend" +echo "# file - $FILE" +echo "#" + + +# <jobId> <title> <count> <options> <user> +cat "${FILE}" | $boomagabackend 123 "title" 1 "" $USER \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boomaga-1.1.0/scripts/testDBUS.sh new/boomaga-1.2.0/scripts/testDBUS.sh --- old/boomaga-1.1.0/scripts/testDBUS.sh 1970-01-01 01:00:00.000000000 +0100 +++ new/boomaga-1.2.0/scripts/testDBUS.sh 2018-02-14 12:39:53.000000000 +0100 @@ -0,0 +1,32 @@ +#!/bin/sh + +FILE=$1 + +if [ "$FILE" = "" ]; then + echo "Missing file operand" + echo "" + echo "Usage: testDBUS.sh PDF_FILE" + exit 1 +fi + +FILE=$(readlink -e "${FILE}") + +########################### +# D-Bus arguments +# +# string file +# string title +# bool autoRemove +# string options +# uint count +dbus-send \ + --session \ + --type=method_call \ + --print-reply \ + --dest=org.boomaga /boomaga org.boomaga.add \ + string:"${FILE}" \ + string:'title' \ + boolean:false \ + string:'options' \ + uint32:1 +
