[doc_tool] Moved executing of external programms from Model to FSHelper
[hsd_doku_tool.git] / src / main.cxx
1 ///////////////////////////////////////////////////////////////////////////
2 // Workfile: main.cxx
3 // Author: Daniel Giritzer <daniel@giritzer.eu>
4 // Date: 25.03.2018
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             FShelp.setLinuxDynLoader(FShelp.addDirLastSlash(curDir) + "lib/ld-linux.so.2");
31         }
32         catch(std::string& e)
33         {
34             // Benutze loader des Linux betriebsystems
35             FShelp.removeLinuxDynLoader();
36         }
37
38         std::shared_ptr<Model> myModel {std::make_shared<Model>(confDir, FShelp, "Log.txt")};
39         Controller::SPtr myController {std::make_shared<Controller>(myModel)};
40
41         Fl::lock(); // Threading unterst├╝tzung
42         View myView(myController, myModel);
43         myView.show();
44
45
46         return Fl::run();
47     }
48
49     // ----------- Exception Handling ------------
50     catch(std::string& e)
51     {
52         std::cerr << e << std::endl;
53         fl_alert(e.c_str()); //Textbox mit fehlermeldung
54         return EXIT_FAILURE;
55     }
56     catch (std::bad_alloc const& e)
57     {
58         // Spezielle Ausnahme: Speicherallokierung misslungen
59         std::cerr << "Exeption Caught: Bad memory allocation ( " << e.what() << " )" << std::endl;
60         return EXIT_FAILURE;
61     }
62     catch (...)
63     {
64         std::cerr << "Unhandled exeption caught!" << std::endl;
65         return EXIT_FAILURE;
66     }
67
68 }