sky: render - use new FOV astrodb clipping.
[nova.git] / src / main.c
blobb0ed91e6931890afdd522f3d4ca248aaed987f4a
1 /*
2 * Copyright (C) 2008 Liam Girdwood
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
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
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330,
17 * Boston, MA 02111-1307, USA.
20 #ifdef HAVE_CONFIG_H
21 # include <config.h>
22 #endif
24 #include <gtk/gtk.h>
26 #include "db/db.h"
27 #include "sky/sky.h"
28 #include "sky/legend.h"
30 static GtkItemFactoryEntry menu_items[] = {
31 { "/_File", NULL, NULL, 0, "<Branch>" },
32 { "/File/_New", "<control>N", NULL, 0, "<StockItem>", GTK_STOCK_NEW },
33 { "/File/_Open", "<control>O", NULL, 0, "<StockItem>", GTK_STOCK_OPEN },
34 { "/File/_Save", "<control>S", NULL, 0, "<StockItem>", GTK_STOCK_SAVE },
35 { "/File/Save _As", NULL, NULL, 0, "<Item>" },
36 { "/File/sep1", NULL, NULL, 0, "<Separator>" },
37 { "/File/_Quit", "<CTRL>Q", gtk_main_quit, 0, "<StockItem>", GTK_STOCK_QUIT },
38 { "/_Help", NULL, NULL, 0, "<LastBranch>" },
39 { "/_Help/About", NULL, NULL, 0, "<Item>" },
42 static gint nmenu_items = sizeof (menu_items) / sizeof (menu_items[0]);
44 static GtkWidget *get_menubar_menu(GtkWidget *window)
46 GtkItemFactory *item_factory;
47 GtkAccelGroup *accel_group;
49 accel_group = gtk_accel_group_new();
50 item_factory = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>",
51 accel_group);
53 gtk_item_factory_create_items(item_factory, nmenu_items, menu_items, NULL);
54 gtk_window_add_accel_group(GTK_WINDOW (window), accel_group);
56 return gtk_item_factory_get_widget(item_factory, "<main>");
59 int main (int argc, char **argv)
61 GtkWidget *window;
62 GtkWidget *gtk_sky;
63 GtkWidget *gtk_legend;
64 GtkWidget *vbox;
65 GtkWidget *menubar;
66 int err;
68 #ifdef ENABLE_NLS
69 bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
70 bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
71 textdomain (GETTEXT_PACKAGE);
72 #endif
74 gtk_init (&argc, &argv);
76 err = db_init();
77 if (err < 0)
78 g_critical("db_init: failed %d\n", err);
80 window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
81 gtk_window_set_title(GTK_WINDOW(window), "Nova");
82 g_signal_connect (window, "destroy",
83 G_CALLBACK (gtk_main_quit), NULL);
85 gtk_sky = virtual_sky_new();
86 gtk_widget_set_usize(gtk_sky, 800, 600);
88 gtk_legend = legend_new();
89 gtk_widget_set_usize(gtk_legend, -1, 50);
91 menubar = get_menubar_menu (window);
93 vbox = gtk_vbox_new(FALSE, 0);
94 gtk_container_add(GTK_CONTAINER(window), vbox);
95 gtk_box_pack_start (GTK_BOX (vbox), menubar, FALSE, TRUE, 0);
96 gtk_box_pack_start(GTK_BOX(vbox),
97 gtk_sky,
98 TRUE, TRUE, 0);
99 gtk_box_pack_start(GTK_BOX(vbox),
100 gtk_legend,
101 FALSE, FALSE, 0);
103 gtk_widget_show_all(window);
104 sky_connect_signals(gtk_sky);
105 sky_set_legend(gtk_sky, gtk_legend);
107 gtk_main ();
109 db_release();
110 return 0;