1 /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
4 * Copyright (C) Philip en Marijn 2008 <>
6 * main.c is free software copyrighted by Philip en Marijn.
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
16 * 3. Neither the name ``Philip en Marijn'' nor the name of any other
17 * contributor may be used to endorse or promote products derived
18 * from this software without specific prior written permission.
20 * main.c IS PROVIDED BY Philip en Marijn ``AS IS'' AND ANY EXPRESS
21 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
22 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 * ARE DISCLAIMED. IN NO EVENT SHALL Philip en Marijn OR ANY OTHER CONTRIBUTORS
24 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
27 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
30 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 #include <sys/types.h>
42 #include "callbacks.h"
48 * Standard gettext macros.
53 # define _(String) dgettext (PACKAGE, String)
55 # define N_(String) gettext_noop (String)
57 # define N_(String) (String)
60 # define textdomain(String) (String)
61 # define gettext(String) (String)
62 # define dgettext(Domain,Message) (Message)
63 # define dcgettext(Domain,Message,Type) (Message)
64 # define bindtextdomain(Domain,Directory) (Domain)
65 # define _(String) (String)
66 # define N_(String) (String)
69 #include "callbacks.h"
71 /* The global builder object to be used to request handles to widgets */
72 GtkBuilder *builder = NULL;
79 if( (window = GTK_WIDGET(gtk_builder_get_object(builder, "gargoyle-gtk"))) == NULL ) {
80 error_dialog(NULL, NULL, "Error while getting main window object");
84 gtk_builder_connect_signals(builder, NULL);
92 * Is called to create a new thread in which glk_main() runs.
95 glk_enter(gpointer data)
103 main(int argc, char *argv[])
105 GError *error = NULL;
110 bindtextdomain(GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
111 bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
112 textdomain(GETTEXT_PACKAGE);
115 if( !g_thread_supported() )
121 gtk_init(&argc, &argv);
123 builder = gtk_builder_new();
124 if( !gtk_builder_add_from_file(builder, "gargoyle-gtk.ui", &error) ) {
125 error_dialog(NULL, error, "Error while building interface: ");
129 window = create_window();
130 gtk_widget_show(window);
134 /* In een aparte thread of proces */
135 if( (glk_thread = g_thread_create(glk_enter, NULL, TRUE, &error)) == NULL ) {
136 error_dialog(NULL, error, "Error while creating glk thread: ");
137 g_object_unref( G_OBJECT(builder) );
145 event_throw(EVENT_TYPE_QUIT, NULL, 0, 0);
146 g_thread_join(glk_thread);
148 g_object_unref( G_OBJECT(builder) );