/[svn]/gigedit/trunk/src/gigedit/gigedit.cpp
ViewVC logotype

Annotation of /gigedit/trunk/src/gigedit/gigedit.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1396 - (hide annotations) (download)
Wed Oct 10 15:48:54 2007 UTC (16 years, 5 months ago) by schoenebeck
File size: 4789 byte(s)
* gettext is now an optional dependency
* added Dev-C++ project files for Windows

1 schoenebeck 1225 /*
2     * Copyright (C) 2007 Andreas Persson
3     *
4     * This program is free software; you can redistribute it and/or
5     * modify it under the terms of the GNU General Public License as
6     * published by the Free Software Foundation; either version 2, or (at
7     * your option) any later version.
8     *
9     * This program is distributed in the hope that it will be useful, but
10     * WITHOUT ANY WARRANTY; without even the implied warranty of
11     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12     * General Public License for more details.
13     *
14     * You should have received a copy of the GNU General Public License
15     * along with program; see the file COPYING. If not, write to the Free
16     * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
17     * 02110-1301 USA.
18     */
19    
20     #include "gigedit.h"
21    
22     #include <gtkmm/main.h>
23     #include "mainwindow.h"
24    
25 schoenebeck 1396 #include "global.h"
26 schoenebeck 1225
27     // the app has to work from a DLL as well, so we hard code argv
28     int argc = 1;
29     const char* argv_c[] = { "gigedit" };
30     char** argv = const_cast<char**>(argv_c);
31 schoenebeck 1333 //FIXME: Gtk only allows to instantiate one Gtk::Main object per process, so this might crash other Gtk applications, i.e. launched as plugins by LinuxSampler
32     Gtk::Main kit(argc, argv);
33 schoenebeck 1225
34     static void __init_app() {
35 schoenebeck 1333 static bool process_initialized = false;
36     if (!process_initialized) {
37     std::cout << "Initializing 3rd party services needed by gigedit.\n"
38     << std::flush;
39     setlocale(LC_ALL, "");
40 schoenebeck 1396
41     #if HAVE_GETTEXT
42 schoenebeck 1333 bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR);
43     bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
44     textdomain(GETTEXT_PACKAGE);
45 schoenebeck 1396 #endif // HAVE_GETTEXT
46    
47 schoenebeck 1333 // make sure thread_init() is called once and ONLY once per process
48     if (!Glib::thread_supported()) Glib::thread_init();
49    
50     process_initialized = true;
51     }
52 schoenebeck 1225 }
53    
54 schoenebeck 1322 static void __connect_signals(GigEdit* gigedit, MainWindow* mainwindow) {
55     // the signals of the "GigEdit" class are actually just proxies, that
56     // is they simply forward the signals of the internal classes to the
57     // outer world
58     mainwindow->signal_file_structure_to_be_changed().connect(
59     gigedit->signal_file_structure_to_be_changed().make_slot()
60     );
61     mainwindow->signal_file_structure_changed().connect(
62     gigedit->signal_file_structure_changed().make_slot()
63     );
64     mainwindow->signal_samples_to_be_removed().connect(
65     gigedit->signal_samples_to_be_removed().make_slot()
66     );
67     mainwindow->signal_samples_removed().connect(
68     gigedit->signal_samples_removed().make_slot()
69     );
70     mainwindow->signal_region_to_be_changed().connect(
71     gigedit->signal_region_to_be_changed().make_slot()
72     );
73     mainwindow->signal_region_changed().connect(
74     gigedit->signal_region_changed().make_slot()
75     );
76     mainwindow->signal_dimreg_to_be_changed().connect(
77     gigedit->signal_dimreg_to_be_changed().make_slot()
78     );
79     mainwindow->signal_dimreg_changed().connect(
80     gigedit->signal_dimreg_changed().make_slot()
81     );
82     mainwindow->signal_sample_ref_changed().connect(
83     gigedit->signal_sample_ref_changed().make_slot()
84     );
85     }
86    
87 schoenebeck 1225 int GigEdit::run() {
88     __init_app();
89     MainWindow window;
90 schoenebeck 1322 __connect_signals(this, &window);
91 schoenebeck 1225 kit.run(window);
92     return 0;
93     }
94    
95     int GigEdit::run(const char* pFileName) {
96     __init_app();
97     MainWindow window;
98 schoenebeck 1322 __connect_signals(this, &window);
99 schoenebeck 1225 if (pFileName) window.load_file(pFileName);
100     kit.run(window);
101     return 0;
102     }
103    
104     int GigEdit::run(gig::Instrument* pInstrument) {
105     __init_app();
106     MainWindow window;
107 schoenebeck 1322 __connect_signals(this, &window);
108 schoenebeck 1225 if (pInstrument) window.load_instrument(pInstrument);
109     kit.run(window);
110     return 0;
111     }
112 schoenebeck 1322
113 schoenebeck 1339 sigc::signal<void, gig::File*>& GigEdit::signal_file_structure_to_be_changed() {
114 schoenebeck 1322 return file_structure_to_be_changed_signal;
115     }
116    
117 schoenebeck 1339 sigc::signal<void, gig::File*>& GigEdit::signal_file_structure_changed() {
118 schoenebeck 1322 return file_structure_changed_signal;
119     }
120    
121 schoenebeck 1339 sigc::signal<void, std::list<gig::Sample*> >& GigEdit::signal_samples_to_be_removed() {
122 schoenebeck 1322 return samples_to_be_removed_signal;
123     }
124    
125 schoenebeck 1339 sigc::signal<void>& GigEdit::signal_samples_removed() {
126 schoenebeck 1322 return samples_removed_signal;
127     }
128    
129 schoenebeck 1339 sigc::signal<void, gig::Region*>& GigEdit::signal_region_to_be_changed() {
130 schoenebeck 1322 return region_to_be_changed_signal;
131     }
132    
133 schoenebeck 1339 sigc::signal<void, gig::Region*>& GigEdit::signal_region_changed() {
134 schoenebeck 1322 return region_changed_signal;
135     }
136    
137 schoenebeck 1339 sigc::signal<void, gig::DimensionRegion*>& GigEdit::signal_dimreg_to_be_changed() {
138 schoenebeck 1322 return dimreg_to_be_changed_signal;
139     }
140    
141 schoenebeck 1339 sigc::signal<void, gig::DimensionRegion*>& GigEdit::signal_dimreg_changed() {
142 schoenebeck 1322 return dimreg_changed_signal;
143     }
144    
145 schoenebeck 1339 sigc::signal<void, gig::Sample*/*old*/, gig::Sample*/*new*/>& GigEdit::signal_sample_ref_changed() {
146 schoenebeck 1322 return sample_ref_changed_signal;
147     }

  ViewVC Help
Powered by ViewVC