From f684cde9d5e67a4d79cbe8b3b8c2ae038ee04bc1 Mon Sep 17 00:00:00 2001 From: Liam Girdwood Date: Sat, 12 Jul 2008 21:33:42 +0100 Subject: [PATCH] ui: callbacks - added callbacks --- src/Makefile.am | 2 +- src/main.c | 133 ++++++++++++++++++++++++------- src/sky/sky.c | 23 ++++++ src/sky/sky.h | 2 + src/ui/Makefile.am | 12 ++- src/ui/{glade.h => catalog.c} | 24 ++++-- src/ui/date-time.c | 181 ++++++++++++++++++++++++++++++++++++++++++ src/ui/deep_sky.c | 62 +++++++++++++++ src/ui/glade.c | 30 ++++--- src/ui/glade.h | 2 + src/ui/markers.c | 120 ++++++++++++++++++++++++++++ src/ui/observer.c | 146 ++++++++++++++++++++++++++++++++++ src/ui/solar_system.c | 150 ++++++++++++++++++++++++++++++++++ 13 files changed, 836 insertions(+), 51 deletions(-) copy src/ui/{glade.h => catalog.c} (65%) create mode 100644 src/ui/date-time.c create mode 100644 src/ui/deep_sky.c create mode 100644 src/ui/markers.c create mode 100644 src/ui/observer.c create mode 100644 src/ui/solar_system.c diff --git a/src/Makefile.am b/src/Makefile.am index 3f92760..16637ef 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -8,4 +8,4 @@ nova_SOURCES = \ AM_CFLAGS = $(NOVA_CFLAGS) -Wall -Idb -Iobjects -Isky -Iui nova_LDADD = sky/libsky.a db/libdb.a objects/libobjects.a ui/libui.a $(NOVA_LIBS) - +nova_LDFLAGS = --export-dynamic -rdynamic diff --git a/src/main.c b/src/main.c index bfe1928..c4b7d3c 100644 --- a/src/main.c +++ b/src/main.c @@ -40,33 +40,107 @@ static gboolean menu_help_clicked_event(GtkWidget *widget, return TRUE; } -static GtkItemFactoryEntry menu_items[] = { - { "/_File", NULL, NULL, 0, "" }, - { "/File/_New", "N", NULL, 0, "", GTK_STOCK_NEW }, - { "/File/_Open", "O", NULL, 0, "", GTK_STOCK_OPEN }, - { "/File/_Save", "S", NULL, 0, "", GTK_STOCK_SAVE }, - { "/File/Save _As", NULL, NULL, 0, "" }, - { "/File/sep1", NULL, NULL, 0, "" }, - { "/File/_Quit", "Q", gtk_main_quit, 0, "", GTK_STOCK_QUIT }, - { "/_Help", NULL, NULL, 0, "" }, - { "/_Help/About", NULL, G_CALLBACK(menu_help_clicked_event), 0, "" }, -}; +static GtkWidget *create_file_menu(GtkWidget *gtk_sky) +{ + GtkWidget *file_menu; + GtkWidget *open_item; + GtkWidget *save_item; + GtkWidget *quit_item; + + file_menu = gtk_menu_new (); + + /* Create the menu items */ + open_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_OPEN, NULL); + save_item = gtk_menu_item_new_with_label ("Save"); + quit_item = gtk_menu_item_new_with_label ("Quit"); + + /* Add them to the menu */ + gtk_menu_shell_append (GTK_MENU_SHELL (file_menu), open_item); + gtk_menu_shell_append (GTK_MENU_SHELL (file_menu), save_item); + gtk_menu_shell_append (GTK_MENU_SHELL (file_menu), quit_item); + + /* Attach the callback functions to the activate signal */ + g_signal_connect_swapped (G_OBJECT (open_item), "activate", + G_CALLBACK (menu_help_clicked_event), + (gpointer) gtk_sky); + g_signal_connect_swapped (G_OBJECT (save_item), "activate", + G_CALLBACK (menu_help_clicked_event), + (gpointer) gtk_sky); + + /* We can attach the Quit menu item to our exit function */ + g_signal_connect_swapped (G_OBJECT (quit_item), "activate", + G_CALLBACK (gtk_main_quit), + (gpointer) "file.quit"); + + return file_menu; +} -static gint nmenu_items = sizeof (menu_items) / sizeof (menu_items[0]); +static GtkWidget *create_view_menu(GtkWidget *gtk_sky) +{ + GtkWidget *view_menu; + GtkWidget *markers_item; + + view_menu = gtk_menu_new (); -static GtkWidget *get_menubar_menu(GtkWidget *window) + /* Create the menu items */ + markers_item = gtk_menu_item_new_with_label ("Markers..."); + + /* Add them to the menu */ + gtk_menu_shell_append (GTK_MENU_SHELL (view_menu), markers_item); + + /* Attach the callback functions to the activate signal */ + g_signal_connect (G_OBJECT (markers_item), "activate", + G_CALLBACK(on_sky_markers_activate), + (gpointer) gtk_sky); + return view_menu; +} + +static GtkWidget *create_help_menu(GtkWidget *gtk_sky) { - GtkItemFactory *item_factory; - GtkAccelGroup *accel_group; + GtkWidget *help_menu; + GtkWidget *about_item; + + help_menu = gtk_menu_new (); - accel_group = gtk_accel_group_new(); - item_factory = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "
", - accel_group); - - gtk_item_factory_create_items(item_factory, nmenu_items, menu_items, NULL); - gtk_window_add_accel_group(GTK_WINDOW (window), accel_group); + /* Create the menu items */ + about_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_ABOUT, NULL); - return gtk_item_factory_get_widget(item_factory, "
"); + /* Add them to the menu */ + gtk_menu_shell_append (GTK_MENU_SHELL (help_menu), about_item); + + /* Attach the callback functions to the activate signal */ + g_signal_connect_swapped (G_OBJECT (about_item), "activate", + G_CALLBACK(on_sky_markers_activate), + (gpointer) gtk_sky); + return help_menu; +} + +static GtkWidget *create_menubar(GtkWidget *gtk_sky) +{ + GtkWidget *menu_bar; + GtkWidget *file_item; + GtkWidget *view_item; + GtkWidget *help_item; + + menu_bar = gtk_menu_bar_new (); + file_item = gtk_menu_item_new_with_label ("File"); + view_item = gtk_menu_item_new_with_label ("View"); + help_item = gtk_menu_item_new_with_label ("Help"); + + gtk_menu_item_set_submenu (GTK_MENU_ITEM (file_item), + create_file_menu(gtk_sky)); + gtk_menu_bar_append (GTK_MENU_BAR (menu_bar), file_item); + + gtk_menu_item_set_submenu (GTK_MENU_ITEM (view_item), + create_view_menu(gtk_sky)); + gtk_menu_bar_append (GTK_MENU_BAR (menu_bar), view_item); + + gtk_menu_item_set_submenu (GTK_MENU_ITEM (help_item), + create_help_menu(gtk_sky)); + gtk_menu_bar_append (GTK_MENU_BAR (menu_bar), help_item); + gtk_menu_item_right_justify(GTK_MENU_ITEM(help_item)); + + return menu_bar; } static gboolean tool_button_clicked_event(GtkWidget *widget, @@ -76,7 +150,7 @@ static gboolean tool_button_clicked_event(GtkWidget *widget, return TRUE; } -static GtkWidget *create_toolbar(void) +static GtkWidget *create_toolbar(GtkWidget *gtk_sky) { GtkWidget *toolbar; GtkToolItem *item; @@ -87,7 +161,7 @@ static GtkWidget *create_toolbar(void) item = gtk_toggle_tool_button_new_from_stock(GTK_STOCK_CONVERT); gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, 0); g_signal_connect(item, "clicked", - G_CALLBACK(tool_button_clicked_event), NULL); + G_CALLBACK(tool_button_clicked_event), gtk_sky); return toolbar; } @@ -117,13 +191,14 @@ int main (int argc, char **argv) } err = db_init(); - if (err < 0) + if (err < 0) { g_critical("db_init: failed %d\n", err); + return err; + } window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window), "Nova"); - g_signal_connect (window, "destroy", - G_CALLBACK (gtk_main_quit), NULL); + g_signal_connect (window, "destroy", G_CALLBACK(gtk_main_quit), NULL); gtk_sky = virtual_sky_new(); gtk_widget_set_usize(gtk_sky, nova_ui_config.ui_width, @@ -132,8 +207,8 @@ int main (int argc, char **argv) gtk_legend = legend_new(); gtk_widget_set_usize(gtk_legend, -1, 20); - menubar = get_menubar_menu (window); - toolbar = create_toolbar(); + menubar = create_menubar(gtk_sky); + toolbar = create_toolbar(gtk_sky); vbox = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(window), vbox); diff --git a/src/sky/sky.c b/src/sky/sky.c index 7dd8000..af79c42 100644 --- a/src/sky/sky.c +++ b/src/sky/sky.c @@ -35,6 +35,7 @@ #include "constellation.h" #include "grid.h" #include "solar_system.h" +#include "glade.h" #define NOVA_SKY_GET_PRIVATE(obj) \ (G_TYPE_INSTANCE_GET_PRIVATE ((obj), NOVA_TYPE_SKY, Sky)) @@ -260,6 +261,28 @@ static gboolean sky_motion_notify_event(GtkWidget *widget, return TRUE; } +void on_sky_markers_activate(GtkMenuItem *menuitem, gpointer user_data) +{ + GtkWidget *dlg, *sky_widget = (GtkWidget *)user_data; + Sky *sky = NOVA_SKY_GET_PRIVATE(sky_widget); + gint result = 0; + + dlg = ui_get_dialog("SkyMarkersDialog"); + if (dlg == NULL) + return; + + ui_markers_dlg_init(dlg, &sky->marker_settings); + + do { + result = gtk_dialog_run(GTK_DIALOG(dlg)); + if (result == GTK_RESPONSE_OK || result == GTK_RESPONSE_APPLY) + gtk_widget_queue_draw(sky_widget); + } while (result == GTK_RESPONSE_APPLY || result == GTK_RESPONSE_HELP); + + //app_bar_sync(GTK_WIDGET(menuitem)); + gtk_widget_destroy(dlg); +} + static int render_stars(gpointer data, gpointer udata) { Sky *sky = udata; diff --git a/src/sky/sky.h b/src/sky/sky.h index 619c509..86b8992 100644 --- a/src/sky/sky.h +++ b/src/sky/sky.h @@ -58,6 +58,8 @@ GtkWidget *virtual_sky_new(void); void sky_connect_signals(GtkWidget *gtk_sky); void sky_set_legend(GtkWidget *sky_widget, GtkWidget *legend_widget); +void on_sky_markers_activate(GtkMenuItem *menuitem, gpointer user_data); + typedef struct _Sky { /* observer/observatory info */ diff --git a/src/ui/Makefile.am b/src/ui/Makefile.am index e2b4cee..c6cd71f 100644 --- a/src/ui/Makefile.am +++ b/src/ui/Makefile.am @@ -2,8 +2,12 @@ noinst_LIBRARIES = libui.a libui_a_SOURCES = \ glade.c \ - gconf.c + gconf.c \ + date-time.c \ + catalog.c \ + deep_sky.c \ + markers.c \ + observer.c \ + solar_system.c -#noinst_HEADERS = - -AM_CFLAGS = $(NOVA_CFLAGS) -Wall -I../db -I../objects -I../sky \ No newline at end of file +AM_CFLAGS = $(NOVA_CFLAGS) -Wall -I../db -I../objects -I../sky diff --git a/src/ui/glade.h b/src/ui/catalog.c similarity index 65% copy from src/ui/glade.h copy to src/ui/catalog.c index 80c84ea..f2b7b7c 100644 --- a/src/ui/glade.h +++ b/src/ui/catalog.c @@ -16,14 +16,24 @@ * Foundation, Inc., 59 Temple Place, Suite 330, * Boston, MA 02111-1307, USA. */ + +#include -#ifndef GLADE_H_ -#define GLADE_H_ +const gchar catalog_name[] = "SkyCatalogDialog"; -#include -gint ui_init(void); -GtkWidget* ui_get_dialog(gchar* name); -void ui_put_dialog(gchar* name); +void +on_skycatalog_dialog_show (GtkWidget *widget, + gpointer user_data) +{ + +} + + +void +on_skycatalog_dialog_destroy (GtkObject *object, + gpointer user_data) +{ + //nova_release_dialog("SkyCatalogDialog"); +} -#endif /*GCONF_H_*/ diff --git a/src/ui/date-time.c b/src/ui/date-time.c new file mode 100644 index 0000000..66ff04f --- /dev/null +++ b/src/ui/date-time.c @@ -0,0 +1,181 @@ +/* + * Copyright (C) 2008 Liam Girdwood + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include + +const gchar date_time_name[] = "DateTimeDialog"; + +void +on_sys_date_radiobutton_toggled (GtkToggleButton *togglebutton, + gpointer user_data) +{ + +} + + +void +on_another_date_radiobutton_toggled (GtkToggleButton *togglebutton, + gpointer user_data) +{ + +} + + +void +on_day_spinbutton_changed (GtkEditable *editable, + gpointer user_data) +{ + +} + + +void +on_month_spinbutton_changed (GtkEditable *editable, + gpointer user_data) +{ + +} + + +void +on_year_spinbutton_changed (GtkEditable *editable, + gpointer user_data) +{ + +} + + +void +on_hour_spinbutton_changed (GtkEditable *editable, + gpointer user_data) +{ + +} + + +void +on_minute_spinbutton_changed (GtkEditable *editable, + gpointer user_data) +{ +printf("crap\n"); +} + + +void +on_second_spinbutton_changed (GtkEditable *editable, + gpointer user_data) +{ + +} + + +void +on_julian_radiobutton_toggled (GtkToggleButton *togglebutton, + gpointer user_data) +{ + +} + + +void +on_julian_spinbutton_changed (GtkEditable *editable, + gpointer user_data) +{ + +} + + +void +on_sys_zone_radiobutton_toggled (GtkToggleButton *togglebutton, + gpointer user_data) +{ + +} + + +void +on_another_zone_radiobutton_toggled (GtkToggleButton *togglebutton, + gpointer user_data) +{ + +} + + +void +on_zone_combo_entry_changed (GtkEditable *editable, + gpointer user_data) +{ + +} + + +void +on_epoch_spinbutton_changed (GtkEditable *editable, + gpointer user_data) +{ + +} + + +void +on_date_helpbutton_clicked (GtkButton *button, + gpointer user_data) +{ + +} + + +void +on_date_cancelbutton_clicked (GtkButton *button, + gpointer user_data) +{ + +} + + +void +on_date_applybutton_clicked (GtkButton *button, + gpointer user_data) +{ + +} + + +void +on_date_okbutton_clicked (GtkButton *button, + gpointer user_data) +{ + +} + + +void +on_datetime_dialog_destroy (GtkObject *object, + gpointer user_data) +{ + +} + +void +on_datetime_dialog_show (GtkWidget *widget, + gpointer user_data) +{ + +} + diff --git a/src/ui/deep_sky.c b/src/ui/deep_sky.c new file mode 100644 index 0000000..cd5b22e --- /dev/null +++ b/src/ui/deep_sky.c @@ -0,0 +1,62 @@ +/* + * Copyright (C) 2008 Liam Girdwood + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include + +const gchar deep_sky_name[] = "SkyDeepDialog"; + + +void +on_skydeep_dialog_destroy (GtkObject *object, + gpointer user_data) +{ + //nova_release_dialog("SkyDeepDialog"); +} + + +void +on_deep_helpbutton_clicked (GtkButton *button, + gpointer user_data) +{ + +} + + +void +on_deep_cancelbutton_clicked (GtkButton *button, + gpointer user_data) +{ + +} + + +void +on_deep_applybutton_clicked (GtkButton *button, + gpointer user_data) +{ + +} + + +void +on_deep_okbutton_clicked (GtkButton *button, + gpointer user_data) +{ + +} diff --git a/src/ui/glade.c b/src/ui/glade.c index 560b8ed..353a3d0 100644 --- a/src/ui/glade.c +++ b/src/ui/glade.c @@ -32,20 +32,30 @@ struct ui_glade { gchar *glade_file; - gchar *name; + const gchar *name; GtkWidget *widget; GladeXML *xml; }; +/* needed for linking and glade signal connection */ +extern const gchar date_time_name[]; +extern const gchar catalog_name[]; +extern const gchar deep_sky_name[]; +extern const gchar markers_name[]; +extern const gchar observer_name[]; +extern const gchar solar_system_name[]; + +static struct ui_glade splash[] = { + {"/splash.glade", "Splash", NULL, NULL}, +}; + static struct ui_glade ui[] = { -/* {"/splash.glade", "Splash", NULL, NULL},*/ - {"/date-time-dlg.glade", "DateTimeDialog", NULL, NULL}, - {"/observer-dlg.glade", "ObserverDialog", NULL, NULL}, - {"/sky-catalog-dlg.glade", "SkyCatalogDialog", NULL, NULL}, - {"/sky-deep-dlg.glade", "SkyDeepDialog", NULL, NULL}, - {"/sky-near-dlg.glade", "SkyNearDialog", NULL, NULL}, - {"/sky-markers-dlg.glade", "SkyMarkersDialog", NULL, NULL}, - {"/sky-proj-dlg.glade", "SkyProjectionDialog", NULL, NULL}, + {"/date-time-dlg.glade", date_time_name, NULL, NULL}, + {"/observer-dlg.glade", observer_name, NULL, NULL}, + {"/sky-catalog-dlg.glade", catalog_name, NULL, NULL}, + {"/sky-deep-dlg.glade", deep_sky_name, NULL, NULL}, + {"/sky-near-dlg.glade", solar_system_name, NULL, NULL}, + {"/sky-markers-dlg.glade", markers_name, NULL, NULL}, }; #define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0])) @@ -90,7 +100,7 @@ GtkWidget* ui_get_dialog(gchar* name) { gint i; - if (!ui_init()) { + if (ui_init()) { g_critical("%s: can't load glade UI files", __func__); return NULL; } diff --git a/src/ui/glade.h b/src/ui/glade.h index 80c84ea..099004e 100644 --- a/src/ui/glade.h +++ b/src/ui/glade.h @@ -26,4 +26,6 @@ gint ui_init(void); GtkWidget* ui_get_dialog(gchar* name); void ui_put_dialog(gchar* name); +void ui_markers_dlg_init(GtkWidget* widget, struct sky_marker_flags *markers); + #endif /*GCONF_H_*/ diff --git a/src/ui/markers.c b/src/ui/markers.c new file mode 100644 index 0000000..6ea7c35 --- /dev/null +++ b/src/ui/markers.c @@ -0,0 +1,120 @@ +/* + * Copyright (C) 2008 Liam Girdwood + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include +#include +#include "settings.h" +#include "glade.h" + +const gchar markers_name[] = "SkyMarkersDialog"; + +static GtkWidget* dlg_widget; +struct sky_marker_flags *markers; /* need a better way */ + +static void markers_sync(void) +{ + GladeXML* xml = glade_get_widget_tree(dlg_widget); + GtkRadioButton* radio; + GtkCheckButton* check; + + check = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "grid_display_checkbutton")); + markers->show_grid = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); + + check = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "grid_labels_checkbutton")); + markers->show_grid_labels = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); + + check = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "const_figure_checkbutton")); + markers->show_const_figures = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); + + check = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "const_bound_checkbutton")); + markers->show_const_bounds = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); + + check = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "const_name_checkbutton")); + markers->show_const_names = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); + + check = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "const_greek_checkbutton")); + markers->show_const_greek = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); +} + +void +on_skymarkers_dialog_destroy (GtkObject *object, + gpointer user_data) +{ + ui_put_dialog(markers_name); +} + +void +on_mark_helpbutton_clicked (GtkButton *button, + gpointer user_data) +{ + +} + + +void +on_mark_cancelbutton_clicked (GtkButton *button, + gpointer user_data) +{ + gtk_dialog_response(GTK_DIALOG(dlg_widget), GTK_RESPONSE_CANCEL); +} + + +void +on_mark_applybutton_clicked (GtkButton *button, + gpointer user_data) +{ + markers_sync(); +} + + +void +on_mark_okbutton_clicked (GtkButton *button, + gpointer user_data) +{ + markers_sync(); + gtk_dialog_response(GTK_DIALOG(dlg_widget), GTK_RESPONSE_OK); +} + + +void ui_markers_dlg_init(GtkWidget* widget, struct sky_marker_flags *markers_) +{ + GladeXML* xml = glade_get_widget_tree(widget); + GtkCheckButton* check; + + dlg_widget = widget; + markers = markers_; + + check = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "grid_display_checkbutton")); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), markers->show_grid); + + check = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "grid_labels_checkbutton")); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), markers->show_grid_labels); + + check = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "const_figure_checkbutton")); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), markers->show_const_figures); + + check = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "const_bound_checkbutton")); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), markers->show_const_bounds); + + check = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "const_name_checkbutton")); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), markers->show_const_names); + + check = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "const_greek_checkbutton")); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), markers->show_const_greek); +} diff --git a/src/ui/observer.c b/src/ui/observer.c new file mode 100644 index 0000000..59ac7dc --- /dev/null +++ b/src/ui/observer.c @@ -0,0 +1,146 @@ +/* + * Copyright (C) 2008 Liam Girdwood + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include +#include +#include + +const gchar observer_name[] = "ObserverDialog"; + +static GtkWidget* dlg_widget; +static struct observer* observer; + +static void obs_sync(void) +{ +#if 0 + GladeXML* xml = glade_get_widget_tree(dlg_widget); + GtkEntry* location; + GtkSpinButton* spin; + struct lnh_lnlat_posn hposn; + + location = GTK_ENTRY(glade_xml_get_widget(xml, "location_entry")); + observer->location = strdup(gtk_entry_get_text(location)); + + spin = GTK_SPIN_BUTTON(glade_xml_get_widget(xml, "lat_deg_spinbutton")); + hposn.lat.degrees = gtk_spin_button_get_value(spin); + if(gtk_spin_button_get_value(spin) < 0) + hposn.lat.neg = 1; + + spin = GTK_SPIN_BUTTON(glade_xml_get_widget(xml, "lat_min_spinbutton")); + hposn.lat.minutes = gtk_spin_button_get_value(spin); + + spin = GTK_SPIN_BUTTON(glade_xml_get_widget(xml, "lat_sec_spinbutton")); + hposn.lat.seconds = gtk_spin_button_get_value(spin); + + spin = GTK_SPIN_BUTTON(glade_xml_get_widget(xml, "long_deg_spinbutton")); + hposn.lng.degrees = gtk_spin_button_get_value(spin); + + spin = GTK_SPIN_BUTTON(glade_xml_get_widget(xml, "long_min_spinbutton")); + hposn.lng.minutes = gtk_spin_button_get_value(spin); + + spin = GTK_SPIN_BUTTON(glade_xml_get_widget(xml, "long_sec_spinbutton")); + hposn.lng.seconds = gtk_spin_button_get_value(spin); + + spin = GTK_SPIN_BUTTON(glade_xml_get_widget(xml, "elevation_spinbutton")); + observer->elevation = gtk_spin_button_get_value(spin); + + ln_hlnlat_to_lnlat(&hposn, &observer->posn); +#endif +} + + +void +on_observer_dialog_destroy (GtkObject *object, + gpointer user_data) +{ + //nova_release_dialog("struct observerDialog"); +} + +void +on_obs_helpbutton_clicked (GtkButton *button, + gpointer user_data) +{ +} + + +void +on_obs_cancelbutton_clicked (GtkButton *button, + gpointer user_data) +{ + gtk_dialog_response(GTK_DIALOG(dlg_widget), GTK_RESPONSE_CANCEL); +} + + +void +on_obs_applybutton_clicked (GtkButton *button, + gpointer user_data) +{ + obs_sync(); +} + + +void +on_obs_okbutton_clicked (GtkButton *button, + gpointer user_data) +{ + obs_sync(); + gtk_dialog_response(GTK_DIALOG(dlg_widget), GTK_RESPONSE_OK); +} + +void gui_obs_dlg_init(GtkWidget* widget, struct observer* obs) +{ +#if 0 + GladeXML* xml = glade_get_widget_tree(widget); + GtkEntry* location; + GtkSpinButton* spin; + struct lnh_lnlat_posn hposn; + gdouble angle; + + dlg_widget = widget; + observer = obs; + ln_lnlat_to_hlnlat(&observer->posn, &hposn); + + location = GTK_ENTRY(glade_xml_get_widget(xml, "location_entry")); + gtk_entry_set_text(location, observer->location); + + spin = GTK_SPIN_BUTTON(glade_xml_get_widget(xml, "lat_deg_spinbutton")); + angle = hposn.lat.degrees; + if (hposn.lat.neg) + angle *= -1.0; + gtk_spin_button_set_value(spin, angle); + + spin = GTK_SPIN_BUTTON(glade_xml_get_widget(xml, "lat_min_spinbutton")); + gtk_spin_button_set_value(spin, hposn.lat.minutes); + + spin = GTK_SPIN_BUTTON(glade_xml_get_widget(xml, "lat_sec_spinbutton")); + gtk_spin_button_set_value(spin, hposn.lat.seconds); + + spin = GTK_SPIN_BUTTON(glade_xml_get_widget(xml, "long_deg_spinbutton")); + gtk_spin_button_set_value(spin, hposn.lng.degrees); + + spin = GTK_SPIN_BUTTON(glade_xml_get_widget(xml, "long_min_spinbutton")); + gtk_spin_button_set_value(spin, hposn.lng.minutes); + + spin = GTK_SPIN_BUTTON(glade_xml_get_widget(xml, "long_sec_spinbutton")); + gtk_spin_button_set_value(spin, hposn.lng.seconds); + + spin = GTK_SPIN_BUTTON(glade_xml_get_widget(xml, "elevation_spinbutton")); + gtk_spin_button_set_value(spin, observer->elevation); +#endif +} diff --git a/src/ui/solar_system.c b/src/ui/solar_system.c new file mode 100644 index 0000000..a6ddec5 --- /dev/null +++ b/src/ui/solar_system.c @@ -0,0 +1,150 @@ +/* + * Copyright (C) 2008 Liam Girdwood + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include +#include + +const gchar solar_system_name[] = "SkyNearDialog"; + +static GtkWidget* dlg_widget; +static struct near_sky* near; + +static void near_sync() +{ +#if 0 + GladeXML* xml = glade_get_widget_tree(dlg_widget); + GtkCheckButton* check; + + check = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "sun_display_checkbutton")); + near->solar.show_object = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); + + check = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "sun_outline_checkbutton")); + near->solar.show_outline = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); + + check = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "sun_label_checkbutton")); + near->solar.show_label = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); + + check = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "moon_display_checkbutton")); + near->lunar.show_object = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); + + check = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "moon_outline_checkbutton")); + near->lunar.show_outline = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); + + check = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "moon_phase_checkbutton")); + near->lunar.show_phase = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); + + check = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "moon_label_checkbutton")); + near->lunar.show_label = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); + + check = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "planet_display_checkbutton")); + near->planets.show_object = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); + + check = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "planet_outline_checkbutton")); + near->planets.show_outline = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); + + check = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "planet_phase_checkbutton")); + near->planets.show_phase = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); + + check = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "planet_label_checkbutton")); + near->planets.show_label = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); +#endif +} + +void +on_near_helpbutton_clicked (GtkButton *button, + gpointer user_data) +{ + +} + + +void +on_near_cancelbutton_clicked (GtkButton *button, + gpointer user_data) +{ + gtk_dialog_response(GTK_DIALOG(dlg_widget), GTK_RESPONSE_CANCEL); +} + + +void +on_near_applybutton_clicked (GtkButton *button, + gpointer user_data) +{ + near_sync(); +} + + +void +on_near_okbutton_clicked (GtkButton *button, + gpointer user_data) +{ + near_sync(); + gtk_dialog_response(GTK_DIALOG(dlg_widget), GTK_RESPONSE_CANCEL); +} + +void +on_skynear_dialog_destroy (GtkObject *object, + gpointer user_data) +{ + //nova_release_dialog("SkyNearDialog"); +} + +void gui_near_dlg_init(GtkWidget* widget, struct solar_system_flags *flags) +{ +#if 0 + GladeXML* xml = glade_get_widget_tree(widget); + GtkCheckButton* check; + + dlg_widget = widget; + near = sky_near; + + check = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "sun_display_checkbutton")); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), near->solar.show_object); + + check = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "sun_outline_checkbutton")); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), near->solar.show_outline); + + check = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "sun_label_checkbutton")); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), near->solar.show_label); + + check = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "moon_display_checkbutton")); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), near->lunar.show_object); + + check = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "moon_outline_checkbutton")); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), near->lunar.show_outline); + + check = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "moon_phase_checkbutton")); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), near->lunar.show_phase); + + check = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "moon_label_checkbutton")); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), near->lunar.show_label); + + check = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "planet_display_checkbutton")); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), near->planets.show_object); + + check = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "planet_outline_checkbutton")); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), near->planets.show_outline); + + check = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "planet_phase_checkbutton")); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), near->planets.show_phase); + + check = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "planet_label_checkbutton")); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), near->planets.show_label); +#endif +} -- 2.11.4.GIT