1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
|
/*
Copyright © 2008-13 Qtrac Ltd. All rights reserved.
This program or module is free software: you can redistribute it
and/or modify it under the terms of the GNU General Public License
as published by the Free Software Foundation, either version 2 of
the License, or (at your option) any later version. This program is
distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
*/
#include "mainwindow.hpp"
#include <QApplication>
#include <QIcon>
#include <QLibraryInfo>
#include <QLocale>
#include <QSettings>
#include <QTextCodec>
#include <QTextStream>
#include <QTranslator>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
#ifdef Q_WS_MAC
app.setCursorFlashTime(0);
#endif
app.setOrganizationName("Qtrac Ltd.");
app.setOrganizationDomain("qtrac.eu");
app.setApplicationName("DiffPDF");
app.setWindowIcon(QIcon(":/icon.png"));
QTextStream out(stdout);
QStringList args = app.arguments().mid(1);
QSettings settings;
InitialComparisonMode comparisonMode = static_cast<
InitialComparisonMode>(settings.value("InitialComparisonMode",
CompareWords).toInt());
const QString LanguageOption = "--language=";
QString filename1;
QString filename2;
QString language = QLocale::system().name();
bool optionsOK = true;
Debug debug = DebugOff;
foreach (const QString arg, args) {
if (optionsOK && (arg == "--appearance" || arg == "-a"))
comparisonMode = CompareAppearance;
else if (optionsOK && (arg == "--characters" || arg == "-c"))
comparisonMode = CompareCharacters;
else if (optionsOK && (arg == "--words" || arg == "-w"))
comparisonMode = CompareWords;
else if (optionsOK && arg.startsWith(LanguageOption))
language = arg.mid(LanguageOption.length());
else if (optionsOK && (arg == "--help" || arg == "-h")) {
out << "usage: diffpdf [options] [file1.pdf [file2.pdf]]\n\n"
"A GUI program that compares two PDF files and shows "
"their differences.\n"
"\nThe files are optional and are normally set "
"through the user interface.\n\n"
"options:\n"
"--help -h show this usage text and terminate "
"(run the program without this option and press F1 for "
"online help)\n"
"--appearance -a set the initial comparison mode to "
"Appearance\n"
"--characters -c set the initial comparison mode to "
"Characters\n"
"--words -w set the initial comparison mode to "
"Words\n"
"--language=xx set the program to use the given "
"translation language, e.g., en for English, cz for "
"Czech; English will be used if there is no translation "
"available\n"
"--debug=2 write the text fed to the sequence "
"matcher into temporary files (e.g., /tmp/page1.txt "
"etc.)\n"
"--debug=3 as --debug=3 but also includes "
"coordinates in y, x order\n"
"\nRun the program without the --help option and click "
"About to see copyright and license details\n"
;
return 0;
}
else if (optionsOK && (arg == "--debug" || arg == "--debug=1" ||
arg == "--debug1"))
; // basic debug mode currently does nothing (did show zones)
else if (optionsOK && (arg == "--debug=2" || arg == "--debug2"))
debug = DebugShowTexts;
else if (optionsOK && (arg == "--debug=3" || arg == "--debug3"))
debug = DebugShowTextsAndYX;
else if (optionsOK && arg == "--")
optionsOK = false;
else if (filename1.isEmpty())
filename1 = arg;
else if (filename2.isEmpty())
filename2 = arg;
else
out << "unrecognized argument '" << arg << "'\n";
}
QTranslator qtTranslator;
qtTranslator.load("qt_" + language,
QLibraryInfo::location(QLibraryInfo::TranslationsPath));
app.installTranslator(&qtTranslator);
QTranslator appTranslator;
appTranslator.load("diffpdf_" + language, ":/");
app.installTranslator(&appTranslator);
MainWindow window(debug, comparisonMode, filename1, filename2,
language.left(2)); // We want de not de_DE etc.
window.show();
return app.exec();
}
|