1 /****************************************************************************
2 * Familia Lignum - Genealogical program *
3 * Copyright (C) 2011-2012 Rafał Długołęcki <rafal@dlugolecki.net.pl> *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation; version 2 of the License. *
9 * This program is distributed in the hope that it will be useful, *
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
12 * GNU General Public License for more details. *
14 * You should have received a copy of the GNU General Public License along *
15 * with this program; if not, write to the Free Software Foundation, Inc., *
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *
18 ****************************************************************************/
25 #include <gtk/gtkgl.h>
29 #include "../config.h"
32 #include "commandline.h"
33 #include "storage/storage.h"
34 #include "gedcom/familia_gedcom.h"
36 extern GtkDrawingArea * drawing_area;
38 const char * get_guidatafile()
40 if (g_file_test (DATADIR "/gui.glade", G_FILE_TEST_EXISTS)) {
41 return DATADIR "/gui.glade";
43 return "data/gui.glade";
46 int main(int argc, char** argv) {
47 GtkBuilder *builder = NULL;
48 GtkWidget *window = NULL;
49 GdkGLConfig *glconfig = NULL;
50 struct familia_storage * storage = NULL;
52 storage = familia_storage_new();
53 familia_storage_set_current(storage);
56 familia_gedcom_init();
58 gtk_init(&argc, &argv);
60 if(!commandline_parse(&argc, &argv)) {
64 /* Initialize OpenGL */
65 gtk_gl_init(&argc, &argv);
67 setlocale(LC_ALL, "");
68 bindtextdomain(PACKAGE_TARNAME, LOCALEDIR);
69 textdomain(PACKAGE_TARNAME);
71 g_set_prgname(PACKAGE_NAME);
73 GdkGLConfigMode gl_mode = GDK_GL_MODE_RGB | GDK_GL_MODE_DEPTH |
76 /* Try double-buffered visual */
77 glconfig = gdk_gl_config_new_by_mode (gl_mode);
78 if (glconfig == NULL) {
79 debug("OpenGL mode is not supported. Exiting...");
83 builder = gtk_builder_new();
85 gtk_builder_add_from_file(builder, get_guidatafile(), NULL);
86 gtk_builder_connect_signals(builder, NULL);
88 window = GTK_WIDGET(gtk_builder_get_object(builder, "main-window"));
89 drawing_area = GTK_WIDGET(gtk_builder_get_object(builder, "drawing-area"));
91 gtk_window_set_title(GTK_WINDOW(window), g_get_application_name());
93 /* Set OpenGL-capability to the widget. */
94 gtk_widget_set_gl_capability (drawing_area, glconfig, NULL, TRUE, GDK_GL_RGBA_TYPE);
96 gtk_widget_show(window);
100 if (familia_storage_get_current()) {
101 storage = familia_storage_get_current();
102 familia_storage_free(storage);