From: Andy Spencer Date: Mon, 21 Jan 2013 05:05:07 +0000 (+0000) Subject: Convert GtkBox and GtkScale to GTK 3 version X-Git-Url: http://pileus.org/git/?p=aweather;a=commitdiff_plain;h=9e734911e96ae83b0f41afa5073d5313bc197d96 Convert GtkBox and GtkScale to GTK 3 version Also add a wrapper to keep the GTK 2 version compiling. --- diff --git a/src/compat.h b/src/compat.h new file mode 100644 index 0000000..3d530f6 --- /dev/null +++ b/src/compat.h @@ -0,0 +1,17 @@ +#include + +#if ! GTK_CHECK_VERSION(3,0,0) +static inline GtkWidget *gtk_box_new(GtkOrientation orientation, gint spacing) +{ + return orientation == GTK_ORIENTATION_HORIZONTAL + ? gtk_hbox_new(0, spacing) + : gtk_vbox_new(0, spacing); +} +static inline GtkWidget *gtk_scale_new_with_range(GtkOrientation orientation, + gdouble min, gdouble max, gdouble step) +{ + return orientation == GTK_ORIENTATION_HORIZONTAL + ? gtk_hscale_new_with_range(min, max, step) + : gtk_vscale_new_with_range(min, max, step); +} +#endif diff --git a/src/plugins/alert.c b/src/plugins/alert.c index 73ad75b..7808f61 100644 --- a/src/plugins/alert.c +++ b/src/plugins/alert.c @@ -24,6 +24,8 @@ #include "alert.h" #include "alert-info.h" +#include "compat.h" + #define MSG_INDEX "http://alerts.weather.gov/cap/us.php?x=0" #define CONFIG_HEIGHT 3 @@ -477,7 +479,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 +799,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 +821,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); diff --git a/src/plugins/gps-plugin.c b/src/plugins/gps-plugin.c index ee68310..b3feefe 100644 --- a/src/plugins/gps-plugin.c +++ b/src/plugins/gps-plugin.c @@ -40,6 +40,8 @@ #include "level2.h" #include "../aweather-location.h" +#include "compat.h" + /* interval to update map with new gps data in seconds. */ #define GPS_UPDATE_INTERVAL (2) @@ -695,7 +697,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 +784,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 +798,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 +807,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), @@ -921,7 +923,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) diff --git a/src/plugins/level2.c b/src/plugins/level2.c index d5566e1..f4d94fa 100644 --- a/src/plugins/level2.c +++ b/src/plugins/level2.c @@ -23,6 +23,8 @@ #include "level2.h" +#include "compat.h" + #define ISO_MIN 30 #define ISO_MAX 80 @@ -459,7 +461,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 +492,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 1edf425..2c40b9e 100644 --- a/src/plugins/radar.c +++ b/src/plugins/radar.c @@ -30,6 +30,8 @@ #include "level2.h" #include "../aweather-location.h" +#include "compat.h" + static void aweather_bin_set_child(GtkBin *bin, GtkWidget *new) { GtkWidget *old = gtk_bin_get_child(bin); @@ -123,9 +125,10 @@ 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); aweather_bin_set_child(GTK_BIN(site->config), box);