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 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
#include <QApplication>
#include <QTranslator>
#include <QLibraryInfo>
#include <QCommandLineParser>
#include <openssl/engine.h>
#include "mainwindow.h"
#include "ObjectConsole.h"
#include "version.h"
// Engine gost initialization
int init_gost(){
static ENGINE *e = NULL;
ENGINE_load_builtin_engines();
ENGINE_register_all_complete();
e = ENGINE_by_id("gost");
if (!e){
// Can't find engine
return 0;
}
if (!ENGINE_init(e)){
// Engine initialization failed!
ENGINE_free(e);
return 0;
}
ENGINE_free(e);
if (!ENGINE_set_default(e, ENGINE_METHOD_ALL)) {
// Initialized but not usable
return 0;
}
return 1;
}
int main(int argc, char *argv[]){
#ifdef Q_OS_LINUX
bool useGUI = getenv("DISPLAY") != NULL;
#else
bool useGUI = true;
#endif
QTranslator translator;
QTranslator qtTranslator;
QString locale = QLocale::system().name();
qtTranslator.load("qt_"+locale,QLibraryInfo::location(QLibraryInfo::TranslationsPath));
if (translator.load(QString("qcalcfilehash_") + locale)==false){
if (translator.load(QString("langs/qcalcfilehash_") + locale)==false){
translator.load(QString("/usr/share/qcalcfilehash/langs/qcalcfilehash_") + locale);
}
}
int gostSupport = init_gost();
bool showProgress=false;
bool showlistOption=false;
bool isForceGui=false;
QStringList listPositionalArguments;
QString compareHash="";
{
QCoreApplication app(argc, argv);
QCoreApplication::setApplicationName("QCalcFileHash");
QCoreApplication::setApplicationVersion(VERSION);
QCoreApplication::setOrganizationDomain("dansoft.ru");
app.installTranslator(&qtTranslator);
app.installTranslator(&translator);
QCommandLineParser parser;
parser.setApplicationDescription("Calculator hash (SHA1, SHA-224, SHA-256, SHA-384, SHA-512, MD5, CRC32, CRC8)");
parser.addHelpOption();
parser.addVersionOption();
parser.addPositionalArgument("filename", QCoreApplication::tr("Source file to hash"));
parser.addPositionalArgument("hash", QCoreApplication::tr("Hash algorithm"));
QCommandLineOption CompareHash(QStringList() << "compare",
QCoreApplication::tr("hash comparison"),
QCoreApplication::tr("hash"));
parser.addOption(CompareHash);
QCommandLineOption showProgressOption("p", QCoreApplication::tr("Show progress"));
parser.addOption(showProgressOption);
QCommandLineOption listOption(QStringList() << "l" << "list", QCoreApplication::tr("Show list all hash algorithm"));
parser.addOption(listOption);
QCommandLineOption forceGui(QStringList() << "gui", QCoreApplication::tr("Open in gui"));
parser.addOption(forceGui);
parser.process(app);
listPositionalArguments = parser.positionalArguments();
showProgress = parser.isSet(showProgressOption);
showlistOption = parser.isSet(listOption);
compareHash = parser.value(CompareHash);
isForceGui = parser.isSet(forceGui);
}
if (listPositionalArguments.size()!=0 or showlistOption!=false){
useGUI=false;
}
if (isForceGui) useGUI=true;
if (useGUI){
QApplication app(argc, argv);
app.installTranslator(&qtTranslator);
app.installTranslator(&translator);
MainWindow form(nullptr,gostSupport);
if (listPositionalArguments.size()>=1) form.setFilename(listPositionalArguments.at(0));
if (listPositionalArguments.size()>=2) form.setHash(listPositionalArguments.at(1));
form.show();
form.startCalc();
return app.exec();
}else{
QCoreApplication app(argc, argv);
app.installTranslator(&qtTranslator);
app.installTranslator(&translator);
ObjectConsole form(nullptr,gostSupport);
form.calcHash(listPositionalArguments,showProgress,showlistOption,compareHash);
return app.exec();
}
}
|