Restructure src folder. Add asset folder. Automatically pack files from asset folder...
[fltk_mvc_template.git] / _template / src / main.cxx
1 ///////////////////////////////////////////////////////////////////////////
2 // Workfile: main.cxx
3 // Author: Daniel Giritzer <daniel@giritzer.eu>
4 // Date:
5 // Description: Hauptprogramm initialisiert und instanziert alle Klassen.
6 // Remarks:
7 ///////////////////////////////////////////////////////////////////////////
8 #include <cstdlib>
9 #include <iostream>
10 #include "View.h"
11 #include "Controller.h"
12 #include "Model.h"
13 #include "FSHelper.h"
14 #include <FL/fl_ask.H>
15
16 /////////////////////////////////////////////////
17 /// \brief Hauptprogramm, Initialisiere Model,
18 ///        View und Controller.
19 /////////////////////////////////////////////////
20 int main()
21 {
22     try
23     {
24         FSHelper FShelp;
25         std::string curDir = FShelp.getCurrentWorkingDir();
26         std::string confDir = FShelp.addDirLastSlash(curDir) + "etc";
27
28         try
29         {
30             // Benutze eigenen Loader
31             FShelp.setLinuxDynLoader(FShelp.addDirLastSlash(curDir) + "lib/ld-linux.so.2");
32         }
33         catch(std::string& e)
34         {
35             // Benutze Loader des Linux Betriebsystems
36             FShelp.removeLinuxDynLoader();
37         }
38
39         std::shared_ptr<Model> myModel {std::make_shared<Model>()};
40         Controller::SPtr myController {std::make_shared<Controller>(myModel)};
41
42         View myView(myController, myModel);
43         myView.show();
44
45         return Fl::run();
46     }
47
48     // ----------- Exception Handling ------------
49     catch(std::string& e)
50     {
51         std::cerr << e << std::endl;
52         fl_alert(e.c_str()); //Textbox mit fehlermeldung
53         return EXIT_FAILURE;
54     }
55     catch (std::bad_alloc const& e)
56     {
57         // Spezielle Ausnahme: Speicherallokierung misslungen
58         std::cerr << "Exeption Caught: Bad memory allocation ( " << e.what() << " )" << std::endl;
59         return EXIT_FAILURE;
60     }
61     catch (...)
62     {
63         std::cerr << "Unhandled exeption caught!" << std::endl;
64         return EXIT_FAILURE;
65     }
66
67 }