Convert GtkBox and GtkScale to GTK 3 version
authorAndy Spencer <andy753421@gmail.com>
Mon, 21 Jan 2013 05:05:07 +0000 (05:05 +0000)
committerAndy Spencer <andy753421@gmail.com>
Mon, 21 Jan 2013 05:05:07 +0000 (05:05 +0000)
Also add a wrapper to keep the GTK 2 version compiling.

src/compat.h [new file with mode: 0644]
src/plugins/alert.c
src/plugins/gps-plugin.c
src/plugins/level2.c
src/plugins/radar.c

diff --git a/src/compat.h b/src/compat.h
new file mode 100644 (file)
index 0000000..3d530f6
--- /dev/null
@@ -0,0 +1,17 @@
+#include <gtk/gtk.h>
+
+#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
index 73ad75b..7808f61 100644 (file)
@@ -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[] = {"<b>Warnings</b>", "<b>Watches</b>",
                           "<b>Advisories</b>", "<b>Other</b>"};
        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);
index ee68310..b3feefe 100644 (file)
@@ -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)
index d5566e1..f4d94fa 100644 (file)
@@ -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);
index 1edf425..2c40b9e 100644 (file)
@@ -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);