Skip to content
This repository has been archived by the owner on Oct 4, 2023. It is now read-only.

Commit

Permalink
Use QCommandLineParser; add target directory option
Browse files Browse the repository at this point in the history
When doing repeated work (or testing) into a particular output directory
it's nice to be able to specify it on the command line.
  • Loading branch information
ec1oud authored and sandsmark committed May 21, 2020
1 parent b46b048 commit e2a0b97
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 26 deletions.
8 changes: 5 additions & 3 deletions Phototonic.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3298,9 +3298,11 @@ void Phototonic::createSubDirectory() {
fileSystemTree->expand(selectedDirs[0]);
}

void Phototonic::setSaveDirectory() {
Settings::saveDirectory = QFileDialog::getExistingDirectory(this, tr("Directory to save images into:"),
QString(), QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
void Phototonic::setSaveDirectory(QString path) {
Settings::saveDirectory = path.isEmpty() ?
QFileDialog::getExistingDirectory(this, tr("Directory to save images into:"),
QString(), QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks) :
path;
}

QString Phototonic::getSelectedPath() {
Expand Down
4 changes: 2 additions & 2 deletions Phototonic.h
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,8 @@ public slots:

void hideViewer();

void setSaveDirectory(QString path = QString());

private slots:

void about();
Expand Down Expand Up @@ -114,8 +116,6 @@ private slots:

void createSubDirectory();

void setSaveDirectory();

void checkDirState(const QModelIndex &, int, int);

void goSelectedDir(const QModelIndex &currDir);
Expand Down
49 changes: 28 additions & 21 deletions main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,29 +18,35 @@

#include "Phototonic.h"
#include <QApplication>

static void showHelp() {
qInfo() << VERSION << "image viewer.";
qInfo() << "Usage: phototonic [OPTION] [FILE... | DIRECTORY]";
qInfo() << " -h, --help\t\t\tshow this help and exit";
qInfo() << " -l, --lang=LANGUAGE\t\tstart with a specific translation";
}
#include <QCommandLineParser>

int main(int argc, char *argv[]) {
QApplication QApp(argc, argv);
QStringList arguments = QCoreApplication::arguments();
QLocale locale = QLocale::system();
int argumentsStartAt = 1;

if (arguments.size() == 2) {
if (arguments.at(1).startsWith("-")) {
showHelp();
return -1;
}
} else if (arguments.size() >= 3 && (arguments.at(1) == "-l" || arguments.at(1) == "--lang")) {
locale = QLocale(arguments.at(2));
argumentsStartAt = 3;
}
QCoreApplication::setApplicationVersion(VERSION);

QCommandLineParser parser;
parser.setApplicationDescription(VERSION " image viewer.");
parser.addHelpOption();
parser.addVersionOption();
parser.addPositionalArgument(QCoreApplication::translate("main", "files or directory"),
QCoreApplication::translate("main", "files or directory to open"),
QCoreApplication::translate("main", "[FILE...] | [DIRECTORY]"));

QCommandLineOption langOption(QStringList() << "l" << "lang",
QCoreApplication::translate("main", "start with a specific translation"),
QCoreApplication::translate("main", "language"));
parser.addOption(langOption);

QCommandLineOption targetDirectoryOption(QStringList() << "o" << "output-directory",
QCoreApplication::translate("main", "Copy all modified images into <directory>."),
QCoreApplication::translate("main", "directory"));
parser.addOption(targetDirectoryOption);

parser.process(QApp);

if (parser.isSet(langOption))
locale = QLocale(parser.value(langOption));

QTranslator qTranslator;
qTranslator.load(locale, "qt", "_", QLibraryInfo::location(QLibraryInfo::TranslationsPath));
Expand All @@ -50,8 +56,9 @@ int main(int argc, char *argv[]) {
qTranslatorPhototonic.load(locale, "phototonic", "_", ":/translations");
QApp.installTranslator(&qTranslatorPhototonic);

Phototonic phototonic(arguments, argumentsStartAt);
Phototonic phototonic(parser.positionalArguments(), 0);
if (parser.isSet(targetDirectoryOption))
phototonic.setSaveDirectory(parser.value(targetDirectoryOption));
phototonic.show();
return QApp.exec();
}

0 comments on commit e2a0b97

Please sign in to comment.