src/main.cc

branch
projects
changeset 935
8d98ee0dc917
parent 930
ab77deb851fa
parent 934
be8128aff739
child 936
aee883858c90
equal deleted inserted replaced
930:ab77deb851fa 935:8d98ee0dc917
1 /*
2 * LDForge: LDraw parts authoring CAD
3 * Copyright (C) 2013 - 2015 Teemu Piippo
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18
19 #include <QApplication>
20 #include <QMessageBox>
21 #include <QAbstractButton>
22 #include <QFile>
23 #include <QTextStream>
24 #include <QDir>
25 #include "mainWindow.h"
26 #include "ldDocument.h"
27 #include "miscallenous.h"
28 #include "configuration.h"
29 #include "colors.h"
30 #include "basics.h"
31 #include "primitives.h"
32 #include "glRenderer.h"
33 #include "configDialog.h"
34 #include "dialogs.h"
35 #include "crashCatcher.h"
36
37 MainWindow* g_win = null;
38 static QString g_versionString, g_fullVersionString;
39 static bool g_IsExiting (false);
40
41 const Vertex Origin (0.0f, 0.0f, 0.0f);
42 const Matrix IdentityMatrix ({1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f});
43
44 CFGENTRY (Bool, FirstStart, true)
45
46 // =============================================================================
47 //
48 int main (int argc, char* argv[])
49 {
50 QApplication app (argc, argv);
51 app.setOrganizationName (APPNAME);
52 app.setApplicationName (APPNAME);
53 InitCrashCatcher();
54 Config::Initialize();
55
56 // Load or create the configuration
57 if (not Config::Load())
58 {
59 print ("Creating configuration file...\n");
60
61 if (Config::Save())
62 print ("Configuration file successfully created.\n");
63 else
64 Critical ("Failed to create configuration file!\n");
65 }
66
67 LDPaths::initPaths();
68 InitColors();
69 LoadPrimitives();
70 MainWindow* win = new MainWindow;
71 newFile();
72 win->show();
73
74 // If this is the first start, get the user to configuration. Especially point
75 // them to the profile tab, it's the most important form to fill in.
76 if (cfg::FirstStart)
77 {
78 (new ConfigDialog (ConfigDialog::ProfileTab))->exec();
79 cfg::FirstStart = false;
80 Config::Save();
81 }
82
83 // Process the command line
84 for (int arg = 1; arg < argc; ++arg)
85 OpenMainModel (QString::fromLocal8Bit (argv[arg]));
86
87 int result = app.exec();
88 g_IsExiting = true;
89 return result;
90 }
91
92 bool IsExiting()
93 {
94 return g_IsExiting;
95 }
96
97 void Exit()
98 {
99 g_IsExiting = true;
100 exit (EXIT_SUCCESS);
101 }

mercurial