From 4e91029b1ad381255729318659675d3256f57a43 Mon Sep 17 00:00:00 2001 From: Andy Spencer Date: Thu, 20 Dec 2012 09:18:17 +0000 Subject: [PATCH] Gtk 3 Port --- src/aweather-gui.c | 10 +++++----- src/main.c | 15 ++++++++------- src/plugins/alert.c | 11 +++++------ src/plugins/gps-plugin.c | 28 ++++++++++++++++------------ src/plugins/level2.c | 5 +++-- src/plugins/radar.c | 21 +++++++++++---------- 6 files changed, 48 insertions(+), 42 deletions(-) diff --git a/src/aweather-gui.c b/src/aweather-gui.c index 6d5c96e..b0cc5d5 100644 --- a/src/aweather-gui.c +++ b/src/aweather-gui.c @@ -80,14 +80,14 @@ G_MODULE_EXPORT gboolean on_gui_key_press(GtkWidget *widget, GdkEventKey *event, event->keyval, event->state); GObject *action = aweather_gui_get_object(self, "fullscreen"); gboolean full = gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(action)); - if (event->keyval == GDK_q) + if (event->keyval == GDK_KEY_q) gtk_widget_destroy(GTK_WIDGET(self)); - else if (event->keyval == GDK_F11 || - (event->keyval == GDK_Escape && full)) + else if (event->keyval == GDK_KEY_F11 || + (event->keyval == GDK_KEY_Escape && full)) gtk_action_activate(GTK_ACTION(action)); - else if (event->keyval == GDK_r && event->state & GDK_CONTROL_MASK) + else if (event->keyval == GDK_KEY_r && event->state & GDK_CONTROL_MASK) grits_viewer_refresh(self->viewer); - else if (event->keyval == GDK_Tab || event->keyval == GDK_ISO_Left_Tab) { + else if (event->keyval == GDK_KEY_Tab || event->keyval == GDK_KEY_ISO_Left_Tab) { GtkNotebook *tabs = GTK_NOTEBOOK(aweather_gui_get_widget(self, "main_tabs")); gint num_tabs = gtk_notebook_get_n_pages(tabs); gint cur_tab = gtk_notebook_get_current_page(tabs); diff --git a/src/main.c b/src/main.c index e127201..2cb6e36 100644 --- a/src/main.c +++ b/src/main.c @@ -144,7 +144,7 @@ int main(int argc, char *argv[]) /* Init */ GError *error = NULL; - gdk_threads_init(); + //gdk_threads_init(); if (!gtk_init_with_args(&argc, &argv, "aweather", entries, NULL, &error)) { g_print("%s\n", error->message); g_error_free(error); @@ -152,16 +152,17 @@ int main(int argc, char *argv[]) } /* Use external handler for link buttons */ - gtk_link_button_set_uri_hook((GtkLinkButtonUriFunc)xdg_open, NULL, NULL); - gtk_about_dialog_set_url_hook((GtkAboutDialogActivateLinkFunc)xdg_open, NULL, NULL); - gtk_about_dialog_set_email_hook((GtkAboutDialogActivateLinkFunc)xdg_open, NULL, NULL); + //gtk_link_button_set_uri_hook((GtkLinkButtonUriFunc)xdg_open, NULL, NULL); + //gtk_about_dialog_set_url_hook((GtkAboutDialogActivateLinkFunc)xdg_open, NULL, NULL); + //gtk_about_dialog_set_email_hook((GtkAboutDialogActivateLinkFunc)xdg_open, NULL, NULL); + (void)xdg_open; /* Setup debug level for aweather_gui_new */ g_log_set_handler(NULL, G_LOG_LEVEL_MASK, log_func, NULL); log_levels = int2log(opt_debug >= 0 ? opt_debug : debug); /* Set up AWeather */ - gdk_threads_enter(); + //gdk_threads_enter(); /* Pre-load some types for gtkbuilder */ GRITS_TYPE_OPENGL; AWEATHER_TYPE_GUI; @@ -200,7 +201,7 @@ int main(int argc, char *argv[]) set_toggle_action(gui, "fullscreen", fullscreen); // Resest widget hiding setup_mac(gui); // done after show_all gtk_main(); - gdk_threads_leave(); - gdk_display_close(gdk_display_get_default()); + //gdk_threads_leave(); + //gdk_display_close(gdk_display_get_default()); return 0; } diff --git a/src/plugins/alert.c b/src/plugins/alert.c index e828219..4150d36 100644 --- a/src/plugins/alert.c +++ b/src/plugins/alert.c @@ -477,7 +477,7 @@ static GtkWidget *_make_msg_details(AlertMsg *msg) g_free(alert_str); GtkWidget *align = gtk_alignment_new(0, 0, 1, 1); - GtkWidget *box = gtk_vbox_new(FALSE, 10); + GtkWidget *box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 10); gtk_alignment_set_padding(GTK_ALIGNMENT(align), 10, 10, 10, 10); gtk_container_add(GTK_CONTAINER(align), box); gtk_box_pack_start(GTK_BOX(box), title, FALSE, FALSE, 0); @@ -797,10 +797,10 @@ static void _on_update(GritsPluginAlert *alert) /* Init helpers */ static GtkWidget *_make_config(GritsPluginAlert *alert) { - GtkWidget *config = gtk_vbox_new(FALSE, 0); + GtkWidget *config = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); /* Setup tools area */ - GtkWidget *tools = gtk_hbox_new(FALSE, 10); + GtkWidget *tools = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 10); GtkWidget *updated = gtk_label_new(" Loading..."); GtkWidget *storm_based = gtk_toggle_button_new_with_label("Storm based"); GtkWidget *county_based = gtk_toggle_button_new_with_label("County based"); @@ -819,7 +819,7 @@ static GtkWidget *_make_config(GritsPluginAlert *alert) gchar *labels[] = {"Warnings", "Watches", "Advisories", "Other"}; gchar *keys[] = {"warning", "watch", "advisory", "other"}; - GtkWidget *alerts = gtk_hbox_new(FALSE, 10); + GtkWidget *alerts = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 10); for (int i = 0; i < G_N_ELEMENTS(labels); i++) { GtkWidget *frame = gtk_frame_new(labels[i]); GtkWidget *table = gtk_table_new(1, 1, TRUE); @@ -848,11 +848,10 @@ static gboolean _clear_details(GtkWidget *dialog) return TRUE; } -static gboolean _set_details_uri(GtkWidget *notebook, GtkNotebookPage *_, +static gboolean _set_details_uri(GtkWidget *notebook, GtkWidget *page, guint num, GtkWidget *button) { g_debug("_set_details_uri"); - GtkWidget *page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), num); AlertMsg *msg = g_object_get_data(G_OBJECT(page), "msg"); gtk_link_button_set_uri(GTK_LINK_BUTTON(button), msg->link); return FALSE; diff --git a/src/plugins/gps-plugin.c b/src/plugins/gps-plugin.c index c2ef65e..d229bd2 100644 --- a/src/plugins/gps-plugin.c +++ b/src/plugins/gps-plugin.c @@ -695,7 +695,7 @@ static void gps_init_control_frame(GritsPluginGps *gps, GtkWidget *gbox) gtk_label_set_use_markup(GTK_LABEL(label), TRUE); gtk_frame_set_shadow_type(GTK_FRAME(gps_control_frame), GTK_SHADOW_NONE); - GtkWidget *cbox = gtk_vbox_new(FALSE, 2); + GtkWidget *cbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 2); gtk_container_add(GTK_CONTAINER(gps_control_frame), cbox); gtk_box_pack_start(GTK_BOX(gbox), gps_control_frame, FALSE, FALSE, 0); @@ -782,7 +782,7 @@ static void gps_init_track_log_frame(GritsPluginGps *gps, GtkWidget *gbox) GtkWidget *label = gtk_frame_get_label_widget(GTK_FRAME(gps_log_frame)); gtk_label_set_use_markup(GTK_LABEL(label), TRUE); gtk_frame_set_shadow_type(GTK_FRAME(gps_log_frame), GTK_SHADOW_NONE); - GtkWidget *lbox = gtk_vbox_new(FALSE, 2); + GtkWidget *lbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 2); gtk_container_add(GTK_CONTAINER(gps_log_frame), lbox); gtk_box_pack_start(GTK_BOX(gbox), gps_log_frame, FALSE, FALSE, 0); @@ -796,7 +796,7 @@ static void gps_init_track_log_frame(GritsPluginGps *gps, GtkWidget *gbox) FALSE, FALSE, 0); /* Set up filename entry box */ - GtkWidget *fbox = gtk_hbox_new(FALSE, 2); + GtkWidget *fbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 2); GtkWidget *filename_label = gtk_label_new("Filename:"); gtk_box_pack_start(GTK_BOX(fbox), filename_label, FALSE, FALSE, 0); gps->ui.gps_log_filename_entry = gtk_entry_new(); @@ -805,11 +805,11 @@ static void gps_init_track_log_frame(GritsPluginGps *gps, GtkWidget *gbox) gtk_box_pack_start(GTK_BOX(lbox), fbox, FALSE, FALSE, 0); /* set up gps log interval slider */ - GtkWidget *ubox = gtk_hbox_new(FALSE, 4); + GtkWidget *ubox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 4); GtkWidget *interval_label = gtk_label_new("Update Interval:"); gtk_box_pack_start(GTK_BOX(ubox), interval_label, FALSE, FALSE, 0); gps->ui.gps_log_interval_slider = - gtk_hscale_new_with_range(1.0, 600.0, 30.0); + gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL, 1.0, 600.0, 30.0); gtk_range_set_value(GTK_RANGE(gps->ui.gps_log_interval_slider), GPS_LOG_DEFAULT_UPDATE_INTERVAL); g_signal_connect(G_OBJECT(gps->ui.gps_log_interval_slider), @@ -819,9 +819,9 @@ static void gps_init_track_log_frame(GritsPluginGps *gps, GtkWidget *gbox) gtk_range_set_increments( GTK_RANGE(gps->ui.gps_log_interval_slider), 10.0 /* step */, 30.0 /* page up/down */); - gtk_range_set_update_policy( - GTK_RANGE(gps->ui.gps_log_interval_slider), - GTK_UPDATE_DELAYED); + //gtk_range_set_update_policy( + // GTK_RANGE(gps->ui.gps_log_interval_slider), + // GTK_UPDATE_DELAYED); gtk_box_pack_start(GTK_BOX(ubox), gps->ui.gps_log_interval_slider, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(lbox), ubox, FALSE, FALSE, 0); @@ -832,7 +832,7 @@ static void gps_init_track_log_frame(GritsPluginGps *gps, GtkWidget *gbox) * GPSD interfaces * *******************/ -static void process_gps(gpointer data, gint source, GdkInputCondition condition) +static gboolean process_gps(GIOChannel *source, GIOCondition condition, gpointer data) { struct gps_data_t *gps_data = (struct gps_data_t *)data; @@ -850,6 +850,7 @@ static void process_gps(gpointer data, gint source, GdkInputCondition condition) } else { g_warning("GritsPluginGps: process_gps - gps_data == NULL."); } + return TRUE; } static gint initialize_gpsd(char *server, gchar *port, struct gps_data_t *gps_data) @@ -866,7 +867,10 @@ static gint initialize_gpsd(char *server, gchar *port, struct gps_data_t *gps_da (void)gps_stream(gps_data, WATCH_ENABLE|WATCH_JSON, NULL); g_debug("GritsPluginGps: initialize_gpsd - gpsd fd %u.", gps_data->gps_fd); - return gdk_input_add(gps_data->gps_fd, GDK_INPUT_READ, process_gps, gps_data); + GIOChannel *channel = g_io_channel_unix_new(gps_data->gps_fd); + gint input_tag = g_io_add_watch(channel, G_IO_IN, process_gps, gps_data); + g_io_channel_unref(channel); + return input_tag; } @@ -917,7 +921,7 @@ static void grits_plugin_gps_init(GritsPluginGps *gps) { g_debug("GritsPluginGps: gps_init"); - gps->config = gtk_hbox_new(FALSE, 15); + gps->config = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 15); } static void grits_plugin_gps_dispose(GObject *gobject) @@ -935,7 +939,7 @@ static void grits_plugin_gps_dispose(GObject *gobject) gps->ui.gps_log_timeout_id = 0; } if (gps->input_tag) { - gdk_input_remove(gps->input_tag); + g_source_remove(gps->input_tag); gps->input_tag = 0; } if (gps->viewer) { diff --git a/src/plugins/level2.c b/src/plugins/level2.c index d5566e1..2c42664 100644 --- a/src/plugins/level2.c +++ b/src/plugins/level2.c @@ -459,7 +459,8 @@ GtkWidget *aweather_level2_get_config(AWeatherLevel2 *level2) cols-1,cols, 0,1, GTK_FILL,GTK_FILL, 0,0); } - elev_box = gtk_hbox_new(TRUE, 0); + elev_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); + gtk_box_set_homogeneous(GTK_BOX(elev_box), TRUE); gtk_table_attach(GTK_TABLE(table), elev_box, cols-1,cols, rows-1,rows, GTK_FILL,GTK_FILL, 0,0); } @@ -489,7 +490,7 @@ GtkWidget *aweather_level2_get_config(AWeatherLevel2 *level2) gtk_misc_set_alignment(GTK_MISC(row_label), 1, 0.5); gtk_table_attach(GTK_TABLE(table), row_label, 0,1, rows,rows+1, GTK_FILL,GTK_FILL, 5,0); - GtkWidget *scale = gtk_hscale_new_with_range(ISO_MIN, ISO_MAX, 0.5); + GtkWidget *scale = gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL, ISO_MIN, ISO_MAX, 0.5); gtk_widget_set_size_request(scale, -1, 26); gtk_scale_set_value_pos(GTK_SCALE(scale), GTK_POS_LEFT); gtk_range_set_inverted(GTK_RANGE(scale), TRUE); diff --git a/src/plugins/radar.c b/src/plugins/radar.c index 8e5abfc..0cee302 100644 --- a/src/plugins/radar.c +++ b/src/plugins/radar.c @@ -30,7 +30,7 @@ #include "level2.h" #include "../aweather-location.h" -static void _gtk_bin_set_child(GtkBin *bin, GtkWidget *new) +static void aweather_bin_set_child(GtkBin *bin, GtkWidget *new) { GtkWidget *old = gtk_bin_get_child(bin); if (old) @@ -123,15 +123,16 @@ gboolean _site_update_end(gpointer _site) g_warning("RadarSite: update_end - %s", site->message); const char *fmt = "http://forecast.weather.gov/product.php?site=NWS&product=FTM&format=TXT&issuedby=%s"; char *uri = g_strdup_printf(fmt, site->city->code+1); - GtkWidget *box = gtk_vbox_new(TRUE, 0); + GtkWidget *box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); GtkWidget *msg = gtk_label_new(site->message); GtkWidget *btn = gtk_link_button_new_with_label(uri, "View Radar Status"); + gtk_box_set_homogeneous(GTK_BOX(box), TRUE); gtk_box_pack_start(GTK_BOX(box), msg, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(box), btn, TRUE, TRUE, 0); - _gtk_bin_set_child(GTK_BIN(site->config), box); + aweather_bin_set_child(GTK_BIN(site->config), box); g_free(uri); } else { - _gtk_bin_set_child(GTK_BIN(site->config), + aweather_bin_set_child(GTK_BIN(site->config), aweather_level2_get_config(site->level2)); } site->status = STATUS_LOADED; @@ -211,7 +212,7 @@ void _site_update(RadarSite *site) /* Add a progress bar */ GtkWidget *progress = gtk_progress_bar_new(); gtk_progress_bar_set_text(GTK_PROGRESS_BAR(progress), "Loading..."); - _gtk_bin_set_child(GTK_BIN(site->config), progress); + aweather_bin_set_child(GTK_BIN(site->config), progress); /* Remove old volume */ g_debug("RadarSite: update - remove - %s", site->city->code); @@ -450,7 +451,7 @@ gboolean _conus_update_end(gpointer _conus) /* Check error status */ if (conus->message) { g_warning("Conus: update_end - %s", conus->message); - _gtk_bin_set_child(GTK_BIN(conus->config), gtk_label_new(conus->message)); + aweather_bin_set_child(GTK_BIN(conus->config), gtk_label_new(conus->message)); goto out; } @@ -459,7 +460,7 @@ gboolean _conus_update_end(gpointer _conus) GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file(conus->path, &error); if (!pixbuf || error) { g_warning("Conus: update_end - error loading pixbuf: %s", conus->path); - _gtk_bin_set_child(GTK_BIN(conus->config), gtk_label_new("Error loading pixbuf")); + aweather_bin_set_child(GTK_BIN(conus->config), gtk_label_new("Error loading pixbuf")); g_remove(conus->path); goto out; } @@ -483,7 +484,7 @@ gboolean _conus_update_end(gpointer _conus) /* Update GUI */ gchar *label = g_path_get_basename(conus->path); - _gtk_bin_set_child(GTK_BIN(conus->config), gtk_label_new(label)); + aweather_bin_set_child(GTK_BIN(conus->config), gtk_label_new(label)); grits_viewer_queue_draw(conus->viewer); g_free(label); @@ -558,7 +559,7 @@ void _conus_update(RadarConus *conus) /* Add a progress bar */ GtkWidget *progress = gtk_progress_bar_new(); gtk_progress_bar_set_text(GTK_PROGRESS_BAR(progress), "Loading..."); - _gtk_bin_set_child(GTK_BIN(conus->config), progress); + aweather_bin_set_child(GTK_BIN(conus->config), progress); g_thread_new("conus-update-thread", _conus_update_thread, conus); } @@ -680,7 +681,7 @@ out: } static void _update_hidden(GtkNotebook *notebook, - GtkNotebookPage *page, guint page_num, gpointer viewer) + GtkWidget *page, guint page_num, gpointer viewer) { g_debug("GritsPluginRadar: _update_hidden - 0..%d = %d", gtk_notebook_get_n_pages(notebook), page_num); -- 2.43.2