aboutsummaryrefslogtreecommitdiff
path: root/main.cpp
blob: 168bb9855aedc586860a67b38c1416f3f5510b42 (plain)
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
#include <QQmlContext>
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QCommandLineParser>
#include <QSettings>

#include "symedit.h"

int main(int argc, char *argv[])
{
	QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
	QCoreApplication::setOrganizationName("Syrja");
	QCoreApplication::setOrganizationDomain("syrja.org");
	QCoreApplication::setApplicationName("SymEdit");
	QCoreApplication::setApplicationVersion("1.0");
	QSettings::setDefaultFormat(QSettings::IniFormat);

	QGuiApplication app(argc, argv);

	// register enumerations
	qmlRegisterUncreatableMetaObject(Operation::staticMetaObject,
		"Org.Syrja.Symbol.Operation", 1, 0, "Operation", "Error: only enums" );

	QCommandLineParser parser;
	parser.process(app);

	QString symbol;
	const QStringList arguments = parser.positionalArguments();
	if ( arguments.size() )
		symbol = arguments.at(0);

	// register manager
	SymEditManager manager(symbol);
	QQmlApplicationEngine engine;
	engine.rootContext()->setContextProperty("manager", &manager);

	engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
	if ( engine.rootObjects().isEmpty() )
		return -1;

	int result = app.exec();

	manager.SaveSettings();

	return result;
}