source: synfigstudio/trunk/fuentes/src/gui/main.cpp @ 481

Last change on this file since 481 was 481, checked in by jrpelegrina, 4 years ago

First release to xenial

File size: 3.7 KB
Line 
1/* === S Y N F I G ========================================================= */
2/*!     \file gtkmm/main.cpp
3**      \brief Synfig Studio Entrypoint
4**
5**      $Id$
6**
7**      \legal
8**      Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
9**      Copyright (c) 2007, 2008 Chris Moore
10**
11**      This package is free software; you can redistribute it and/or
12**      modify it under the terms of the GNU General Public License as
13**      published by the Free Software Foundation; either version 2 of
14**      the License, or (at your option) any later version.
15**
16**      This package is distributed in the hope that it will be useful,
17**      but WITHOUT ANY WARRANTY; without even the implied warranty of
18**      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19**      General Public License for more details.
20**      \endlegal
21*/
22/* ========================================================================= */
23
24/* === H E A D E R S ======================================================= */
25
26#ifdef USING_PCH
27#       include "pch.h"
28#else
29#ifdef HAVE_CONFIG_H
30#       include <config.h>
31#endif
32
33#include "app.h"
34#include <iostream>
35#include "ipc.h"
36#include <stdexcept>
37
38#include "general.h"
39
40#ifdef WIN32
41#include <glibmm/convert.h>
42#include "main_win32.h"
43#endif
44
45#endif
46
47/* === U S I N G =========================================================== */
48
49using namespace std;
50using namespace etl;
51using namespace synfig;
52using namespace studio;
53
54/* === M A C R O S ========================================================= */
55
56/* === G L O B A L S ======================================================= */
57
58/* === P R O C E D U R E S ================================================= */
59
60/* === M E T H O D S ======================================================= */
61
62/* === E N T R Y P O I N T ================================================= */
63
64int main(int argc, char **argv)
65{
66       
67#ifdef WIN32
68        if (consoleOptionEnabled(argc, argv))
69        {
70                redirectIOToConsole();
71        }
72#endif
73
74        String binary_path = synfig::get_binary_path(String(argv[0]));
75       
76#ifdef ENABLE_NLS
77        String locale_dir;
78        locale_dir = etl::dirname(etl::dirname(binary_path))+ETL_DIRECTORY_SEPARATOR+"share"+ETL_DIRECTORY_SEPARATOR+"locale";
79#ifdef WIN32
80        locale_dir = Glib::locale_from_utf8(locale_dir);
81#endif
82       
83        setlocale(LC_ALL, "");
84        bindtextdomain(GETTEXT_PACKAGE,  locale_dir.c_str() );
85        bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
86        textdomain(GETTEXT_PACKAGE);
87#endif
88
89        {
90                SmartFILE file(IPC::make_connection());
91                if(file)
92                {
93                        cout << endl;
94                        cout << "   " << _("synfig studio is already running") << endl << endl;
95                        cout << "   " << _("the existing process will be used") << endl << endl;;
96
97                        // Hey, another copy of us is open!
98                        // don't bother opening us, just go ahead and
99                        // tell the other copy to load it all up
100                        if (argc>1)
101                                fprintf(file.get(),"F\n");
102
103                        while(--argc)
104                                if((argv)[argc] && (argv)[argc][0]!='-')
105                                        fprintf(file.get(),"O %s\n",etl::absolute_path((argv)[argc]).c_str());
106
107                        fprintf(file.get(),"F\n");
108
109                        return 0;
110                }
111        }
112
113        cout << endl;
114        cout << "   " << _("synfig studio -- starting up application...") << endl << endl;
115
116        try
117        {
118                studio::App app(etl::dirname(binary_path), &argc, &argv);
119
120                app.run();
121        }
122        catch(int ret)
123        {
124                std::cerr<<"Application shutdown with errors ("<<ret<<')'<<std::endl;
125                return ret;
126        }
127        catch(string str)
128        {
129                std::cerr<<"Uncaught Exception:string: "<<str.c_str()<<std::endl;
130                throw;
131        }
132        catch(std::exception x)
133        {
134                std::cerr<<"Standard Exception: "<<x.what()<<std::endl;
135                throw;
136        }
137        catch(Glib::Exception& x)
138        {
139                std::cerr<<"GLib Exception: "<<x.what()<<std::endl;
140                throw;
141        }
142        catch(...)
143        {
144                std::cerr<<"Uncaught Exception"<<std::endl;
145                throw;
146        }
147
148        std::cerr<<"Application appears to have terminated successfully"<<std::endl;
149
150        return 0;
151}
Note: See TracBrowser for help on using the repository browser.