[Xfce4-commits] <xfce4-weather-plugin:master> Make dialog GUI code more readable.

Harald Judt noreply at xfce.org
Tue Nov 27 16:46:07 CET 2012


Updating branch refs/heads/master
         to a830d1570a5edfe35e928347e6e8d561c02cfbdf (commit)
       from 001542871a446d8b7f526668ad4f80575309503b (commit)

commit a830d1570a5edfe35e928347e6e8d561c02cfbdf
Author: Harald Judt <h.judt at gmx.at>
Date:   Thu Nov 22 16:48:54 2012 +0100

    Make dialog GUI code more readable.
    
    Hide widget creation and configuration behind macros.
    Also clean up the dialog design and fix some minor mistakes.

 panel-plugin/weather-config.c |  346 ++++++++++++++---------------------------
 1 files changed, 117 insertions(+), 229 deletions(-)

diff --git a/panel-plugin/weather-config.c b/panel-plugin/weather-config.c
index 2457fc9..64067c7 100644
--- a/panel-plugin/weather-config.c
+++ b/panel-plugin/weather-config.c
@@ -36,6 +36,44 @@
 #define BORDER 4
 #define LOC_NAME_MAX_LEN 50
 
+#define ADD_PAGE(homogenous)                                        \
+    palign = gtk_alignment_new(0.5, 0.5, 1, 1);                     \
+    gtk_container_set_border_width(GTK_CONTAINER(palign), BORDER);  \
+    page = gtk_vbox_new(homogenous, BORDER);                        \
+    gtk_container_add(GTK_CONTAINER(palign), page);
+
+#define ADD_LABEL(text, sg)                                         \
+    label = gtk_label_new_with_mnemonic(text);                      \
+    gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);                \
+    if (G_LIKELY(sg))                                               \
+        gtk_size_group_add_widget(sg, label);                       \
+    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, BORDER);
+
+#define ADD_SPIN(spin, min, max, step, val, digits, sg)                 \
+    spin = gtk_spin_button_new_with_range(min, max, step);              \
+    gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), val);              \
+    gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), digits);          \
+    if (G_LIKELY(sg))                                                   \
+        gtk_size_group_add_widget(sg, spin);                            \
+    gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(spin));  \
+    gtk_box_pack_start(GTK_BOX(hbox), spin, FALSE, FALSE, 0);
+
+#define ADD_COMBO(combo)                                                \
+    combo = gtk_combo_box_new_text();                                   \
+    gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(combo)); \
+    gtk_box_pack_start(GTK_BOX(hbox), combo, TRUE, TRUE, 0);
+
+#define ADD_COMBO_VALUE(combo, text)                        \
+    gtk_combo_box_append_text(GTK_COMBO_BOX(combo), text);
+
+#define ADD_LABEL_EDIT_BUTTON(button, text, icon, cb_func)          \
+    button = gtk_button_new_with_mnemonic(text);                    \
+    image = gtk_image_new_from_stock(icon, GTK_ICON_SIZE_BUTTON);   \
+    gtk_button_set_image(GTK_BUTTON(button), image);                \
+    gtk_size_group_add_widget(sg_button, button);                   \
+    g_signal_connect(G_OBJECT(button), "clicked",                   \
+                     G_CALLBACK(cb_func), dialog);                  \
+
 
 static const labeloption labeloptions[OPTIONS_N] = {
     /*
@@ -472,19 +510,13 @@ create_location_page(xfceweather_dialog *dialog)
     GtkWidget *button_loc_change;
     GtkSizeGroup *sg_label, *sg_spin;
 
-    palign = gtk_alignment_new(0.5, 0.5, 1, 1);
-    gtk_container_set_border_width(GTK_CONTAINER(palign), BORDER);
-    page = gtk_vbox_new(FALSE, BORDER);
-    gtk_container_add(GTK_CONTAINER(palign), page);
+    ADD_PAGE(FALSE);
     sg_label = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
     sg_spin = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
 
     /* location name */
     hbox = gtk_hbox_new(FALSE, BORDER);
-    label = gtk_label_new_with_mnemonic(_("Location _name:"));
-    gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
-    gtk_size_group_add_widget(sg_label, label);
-    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, BORDER);
+    ADD_LABEL(_("Location _name:"), sg_label);
     dialog->text_loc_name = gtk_entry_new();
     gtk_entry_set_max_length(GTK_ENTRY(dialog->text_loc_name),
                              LOC_NAME_MAX_LEN);
@@ -503,16 +535,8 @@ create_location_page(xfceweather_dialog *dialog)
     /* latitude */
     vbox = gtk_vbox_new(FALSE, BORDER);
     hbox = gtk_hbox_new(FALSE, BORDER);
-    label = gtk_label_new_with_mnemonic(_("Latitud_e:"));
-    gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
-    gtk_size_group_add_widget(sg_label, label);
-    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, BORDER);
-    dialog->spin_lat = gtk_spin_button_new_with_range(-90, 90, 1);
-    gtk_spin_button_set_digits(GTK_SPIN_BUTTON(dialog->spin_lat), 6);
-    gtk_label_set_mnemonic_widget(GTK_LABEL(label),
-                                  GTK_WIDGET(dialog->spin_lat));
-    gtk_size_group_add_widget(sg_spin, dialog->spin_lat);
-    gtk_box_pack_start(GTK_BOX(hbox), dialog->spin_lat, FALSE, FALSE, 0);
+    ADD_LABEL(_("Latitud_e:"), sg_label);
+    ADD_SPIN(dialog->spin_lat, -90, 90, 1, 0, 6, sg_spin);
     label = gtk_label_new("°");
     gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
     gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
@@ -520,17 +544,8 @@ create_location_page(xfceweather_dialog *dialog)
 
     /* longitude */
     hbox = gtk_hbox_new(FALSE, BORDER);
-    label = gtk_label_new_with_mnemonic(_("L_ongitude:"));
-    gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
-    gtk_size_group_add_widget(sg_label, label);
-    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, BORDER);
-    dialog->spin_lon = gtk_spin_button_new_with_range(-180, 180, 1);
-    gtk_spin_button_set_digits(GTK_SPIN_BUTTON(dialog->spin_lon), 6);
-    gtk_spin_button_set_value(GTK_SPIN_BUTTON(dialog->spin_lon), 0);
-    gtk_label_set_mnemonic_widget(GTK_LABEL(label),
-                                  GTK_WIDGET(dialog->spin_lon));
-    gtk_size_group_add_widget(sg_spin, dialog->spin_lon);
-    gtk_box_pack_start(GTK_BOX(hbox), dialog->spin_lon, FALSE, FALSE, 0);
+    ADD_LABEL(_("L_ongitude:"), sg_label);
+    ADD_SPIN(dialog->spin_lon, -180, 180, 1, 0, 6, sg_spin);
     label = gtk_label_new("°");
     gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
     gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
@@ -538,33 +553,17 @@ create_location_page(xfceweather_dialog *dialog)
 
     /* altitude */
     hbox = gtk_hbox_new(FALSE, BORDER);
-    label = gtk_label_new_with_mnemonic(_("_Altitude:"));
-    gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
-    gtk_size_group_add_widget(sg_label, label);
-    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, BORDER);
-    dialog->spin_alt = gtk_spin_button_new_with_range(-420, 10000, 1);
-    gtk_spin_button_set_value(GTK_SPIN_BUTTON(dialog->spin_alt), 0);
-    gtk_size_group_add_widget(sg_spin, dialog->spin_alt);
-    gtk_label_set_mnemonic_widget(GTK_LABEL(label),
-                                  GTK_WIDGET(dialog->spin_alt));
+    ADD_LABEL(_("_Altitude:"), sg_label);
+    ADD_SPIN(dialog->spin_alt, -420, 10000, 1, 0, 0, sg_spin);
     dialog->label_alt_unit = gtk_label_new(_("meters"));
     gtk_misc_set_alignment(GTK_MISC(dialog->label_alt_unit), 0, 0.5);
-    gtk_box_pack_start(GTK_BOX(hbox), dialog->spin_alt, FALSE, FALSE, 0);
     gtk_box_pack_start(GTK_BOX(hbox), dialog->label_alt_unit, FALSE, FALSE, 0);
     gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, BORDER);
 
     /* timezone */
     hbox = gtk_hbox_new(FALSE, BORDER);
-    label = gtk_label_new_with_mnemonic(_("_Timezone:"));
-    gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
-    gtk_size_group_add_widget(sg_label, label);
-    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, BORDER);
-    dialog->spin_timezone = gtk_spin_button_new_with_range(-24, 24, 1);
-    gtk_spin_button_set_value(GTK_SPIN_BUTTON(dialog->spin_timezone), 0);
-    gtk_size_group_add_widget(sg_spin, dialog->spin_timezone);
-    gtk_label_set_mnemonic_widget(GTK_LABEL(label),
-                                  GTK_WIDGET(dialog->spin_timezone));
-    gtk_box_pack_start(GTK_BOX(hbox), dialog->spin_timezone, FALSE, FALSE, 0);
+    ADD_LABEL(_("_Timezone:"), sg_label);
+    ADD_SPIN(dialog->spin_timezone, -24, 24, 1, 0, 0, sg_spin);
     gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, BORDER);
 
     /* instructions for correction of altitude and timezone */
@@ -602,116 +601,68 @@ static GtkWidget *
 create_units_page(xfceweather_dialog *dialog)
 {
     GtkWidget *palign, *page, *hbox, *vbox, *label;
-    GtkSizeGroup *sg_label, *sg_combo;
-
-    palign = gtk_alignment_new(0.5, 0.5, 1, 1);
-    gtk_container_set_border_width(GTK_CONTAINER(palign), BORDER);
-    page = gtk_vbox_new(FALSE, BORDER);
-    gtk_container_add(GTK_CONTAINER(palign), page);
+    GtkSizeGroup *sg_label;
 
+    ADD_PAGE(FALSE);
     sg_label = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
-    sg_combo = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
     vbox = gtk_vbox_new(FALSE, BORDER);
 
     /* temperature */
     hbox = gtk_hbox_new(FALSE, BORDER);
-    label = gtk_label_new_with_mnemonic(_("_Temperature:"));
-    gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
-    gtk_size_group_add_widget(sg_label, label);
-    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, BORDER/2);
-    dialog->combo_unit_temperature = gtk_combo_box_new_text();
-    gtk_size_group_add_widget(sg_combo, dialog->combo_unit_temperature);
-    gtk_combo_box_append_text(GTK_COMBO_BOX(dialog->combo_unit_temperature),
-                              _("Celcius"));
-    gtk_combo_box_append_text(GTK_COMBO_BOX(dialog->combo_unit_temperature),
-                              _("Fahrenheit"));
-    gtk_label_set_mnemonic_widget(GTK_LABEL(label),
-                                  GTK_WIDGET(dialog->combo_unit_temperature));
-    gtk_box_pack_start(GTK_BOX(hbox), dialog->combo_unit_temperature,
-                       TRUE, TRUE, BORDER/2);
-    gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, BORDER/2);
+    ADD_LABEL(_("_Temperature:"), sg_label);
+    ADD_COMBO(dialog->combo_unit_temperature);
+    ADD_COMBO_VALUE(dialog->combo_unit_temperature, _("Celcius"));
+    ADD_COMBO_VALUE(dialog->combo_unit_temperature, _("Fahrenheit"));
+    gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, BORDER);
 
     /* atmospheric pressure */
     hbox = gtk_hbox_new(FALSE, BORDER);
-    label = gtk_label_new_with_mnemonic(_("Atmospheric _pressure:"));
-    gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
-    gtk_size_group_add_widget(sg_label, label);
-    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, BORDER/2);
-    dialog->combo_unit_pressure = gtk_combo_box_new_text();
-    gtk_size_group_add_widget(sg_combo, dialog->combo_unit_pressure);
-    gtk_combo_box_append_text(GTK_COMBO_BOX(dialog->combo_unit_pressure),
-                              _("Hectopascals (hPa)"));
-    gtk_combo_box_append_text(GTK_COMBO_BOX(dialog->combo_unit_pressure),
-                              _("Inches of mercury (inHg)"));
-    gtk_combo_box_append_text(GTK_COMBO_BOX(dialog->combo_unit_pressure),
-                              _("Pound-force per square inch (psi)"));
-    gtk_combo_box_append_text(GTK_COMBO_BOX(dialog->combo_unit_pressure),
-                              _("Torr (mmHg)"));
-    gtk_label_set_mnemonic_widget(GTK_LABEL(label),
-                                  GTK_WIDGET(dialog->combo_unit_pressure));
-    gtk_box_pack_start(GTK_BOX(hbox), dialog->combo_unit_pressure,
-                       TRUE, TRUE, BORDER/2);
-    gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, BORDER/2);
+    ADD_LABEL(_("Atmospheric _pressure:"), sg_label);
+    ADD_COMBO(dialog->combo_unit_pressure);
+    ADD_COMBO_VALUE(dialog->combo_unit_pressure,
+                    _("Hectopascals (hPa)"));
+    ADD_COMBO_VALUE(dialog->combo_unit_pressure,
+                    _("Inches of mercury (inHg)"));
+    ADD_COMBO_VALUE(dialog->combo_unit_pressure,
+                    _("Pound-force per square inch (psi)"));
+    ADD_COMBO_VALUE(dialog->combo_unit_pressure,
+                    _("Torr (mmHg)"));
+    gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, BORDER);
 
     /* wind speed */
     hbox = gtk_hbox_new(FALSE, BORDER);
-    label = gtk_label_new_with_mnemonic(_("_Wind speed:"));
-    gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
-    gtk_size_group_add_widget(sg_label, label);
-    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, BORDER/2);
-    dialog->combo_unit_windspeed = gtk_combo_box_new_text();
-    gtk_size_group_add_widget(sg_combo, dialog->combo_unit_windspeed);
-    gtk_combo_box_append_text(GTK_COMBO_BOX(dialog->combo_unit_windspeed),
-                              _("Kilometers per hour (km/h)"));
-    gtk_combo_box_append_text(GTK_COMBO_BOX(dialog->combo_unit_windspeed),
-                              _("Miles per hour (mph)"));
-    gtk_combo_box_append_text(GTK_COMBO_BOX(dialog->combo_unit_windspeed),
-                              _("Meters per second (m/s)"));
-    gtk_label_set_mnemonic_widget(GTK_LABEL(label),
-                                  GTK_WIDGET(dialog->combo_unit_windspeed));
-    gtk_box_pack_start(GTK_BOX(hbox), dialog->combo_unit_windspeed,
-                       TRUE, TRUE, BORDER/2);
-    gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, BORDER/2);
+    ADD_LABEL(_("_Wind speed:"), sg_label);
+    ADD_COMBO(dialog->combo_unit_windspeed);
+    ADD_COMBO_VALUE(dialog->combo_unit_windspeed,
+                    _("Kilometers per hour (km/h)"));
+    ADD_COMBO_VALUE(dialog->combo_unit_windspeed,
+                    _("Miles per hour (mph)"));
+    ADD_COMBO_VALUE(dialog->combo_unit_windspeed,
+                    _("Meters per second (m/s)"));
+    gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, BORDER);
 
     /* precipitations */
     hbox = gtk_hbox_new(FALSE, BORDER);
-    label = gtk_label_new_with_mnemonic(_("Prec_ipitations:"));
-    gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
-    gtk_size_group_add_widget(sg_label, label);
-    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, BORDER/2);
-    dialog->combo_unit_precipitations = gtk_combo_box_new_text();
-    gtk_size_group_add_widget(sg_combo, dialog->combo_unit_precipitations);
-    gtk_combo_box_append_text(GTK_COMBO_BOX(dialog->combo_unit_precipitations),
-                              _("Millimeters (mm)"));
-    gtk_combo_box_append_text(GTK_COMBO_BOX(dialog->combo_unit_precipitations),
-                              _("Inches (in)"));
-    gtk_label_set_mnemonic_widget(GTK_LABEL(label),
-                                  GTK_WIDGET(dialog->combo_unit_precipitations));
-    gtk_box_pack_start(GTK_BOX(hbox), dialog->combo_unit_precipitations,
-                       TRUE, TRUE, BORDER/2);
-    gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, BORDER/2);
+    ADD_LABEL(_("Prec_ipitations:"), sg_label);
+    ADD_COMBO(dialog->combo_unit_precipitations);
+    ADD_COMBO_VALUE(dialog->combo_unit_precipitations,
+                    _("Millimeters (mm)"));
+    ADD_COMBO_VALUE(dialog->combo_unit_precipitations,
+                    _("Inches (in)"));
+    gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, BORDER);
 
     /* altitude */
     hbox = gtk_hbox_new(FALSE, BORDER);
-    label = gtk_label_new_with_mnemonic(_("Altitu_de:"));
-    gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
-    gtk_size_group_add_widget(sg_label, label);
-    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, BORDER/2);
-    dialog->combo_unit_altitude = gtk_combo_box_new_text();
-    gtk_size_group_add_widget(sg_combo, dialog->combo_unit_altitude);
-    gtk_combo_box_append_text(GTK_COMBO_BOX(dialog->combo_unit_altitude),
-                              _("Meters (m)"));
-    gtk_combo_box_append_text(GTK_COMBO_BOX(dialog->combo_unit_altitude),
-                              _("Feet (ft)"));
-    gtk_label_set_mnemonic_widget(GTK_LABEL(label),
-                                  GTK_WIDGET(dialog->combo_unit_altitude));
-    gtk_box_pack_start(GTK_BOX(hbox), dialog->combo_unit_altitude,
-                       TRUE, TRUE, BORDER/2);
-    gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, BORDER/2);
+    ADD_LABEL(_("Altitu_de:"), sg_label);
+    ADD_COMBO(dialog->combo_unit_altitude);
+    ADD_COMBO_VALUE(dialog->combo_unit_altitude,
+                    _("Meters (m)"));
+    ADD_COMBO_VALUE(dialog->combo_unit_altitude,
+                    _("Feet (ft)"));
+    gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, BORDER);
 
     gtk_box_pack_start(GTK_BOX(page), vbox, FALSE, FALSE, 0);
     g_object_unref(G_OBJECT(sg_label));
-    g_object_unref(G_OBJECT(sg_combo));
     return palign;
 }
 
@@ -722,80 +673,41 @@ create_appearance_page(xfceweather_dialog *dialog)
     GtkWidget *palign, *page, *hbox, *vbox, *label;
     GtkSizeGroup *sg;
 
-    palign = gtk_alignment_new(0.5, 0.5, 1, 1);
-    gtk_container_set_border_width(GTK_CONTAINER(palign), BORDER);
-    page = gtk_vbox_new(TRUE, BORDER);
-    gtk_container_add(GTK_CONTAINER(palign), page);
+    ADD_PAGE(TRUE);
     sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
 
     /* icon theme */
     vbox = gtk_vbox_new(FALSE, BORDER);
     hbox = gtk_hbox_new(FALSE, BORDER);
-    label = gtk_label_new_with_mnemonic(_("_Icon theme:"));
-    gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
-    gtk_size_group_add_widget(sg, label);
-    dialog->combo_icon_theme = gtk_combo_box_new_text();
-    gtk_combo_box_append_text(GTK_COMBO_BOX(dialog->combo_icon_theme),
-                              "Liquid");
-    gtk_label_set_mnemonic_widget(GTK_LABEL(label),
-                                  GTK_WIDGET(dialog->combo_icon_theme));
-    hbox = gtk_hbox_new(FALSE, BORDER);
-    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
-    gtk_box_pack_start(GTK_BOX(hbox), dialog->combo_icon_theme,
-                       TRUE, TRUE, 0);
+    ADD_LABEL(_("_Icon theme:"), sg);
+    ADD_COMBO(dialog->combo_icon_theme);
+    ADD_COMBO_VALUE(dialog->combo_icon_theme, "Liquid");
     gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
 
     /* tooltip style */
     hbox = gtk_hbox_new(FALSE, BORDER);
-    label = gtk_label_new_with_mnemonic(_("_Tooltip style:"));
-    gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
-    gtk_size_group_add_widget(sg, label);
-    dialog->combo_tooltip_style = gtk_combo_box_new_text();
-    gtk_combo_box_append_text(GTK_COMBO_BOX(dialog->combo_tooltip_style),
-                              _("Verbose"));
-    gtk_combo_box_append_text(GTK_COMBO_BOX(dialog->combo_tooltip_style),
-                              _("Simple"));
-    gtk_label_set_mnemonic_widget(GTK_LABEL(label),
-                                  GTK_WIDGET(dialog->combo_tooltip_style));
-    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
-    gtk_box_pack_start(GTK_BOX(hbox), dialog->combo_tooltip_style,
-                       TRUE, TRUE, 0);
+    ADD_LABEL(_("_Tooltip style:"), sg);
+    ADD_COMBO(dialog->combo_tooltip_style);
+    ADD_COMBO_VALUE(dialog->combo_tooltip_style, _("Simple"));
+    ADD_COMBO_VALUE(dialog->combo_tooltip_style, _("Verbose"));
     gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
     gtk_box_pack_start(GTK_BOX(page), vbox, FALSE, FALSE, 0);
 
     /* forecast layout */
     vbox = gtk_vbox_new(FALSE, BORDER);
     hbox = gtk_hbox_new(FALSE, BORDER);
-    label = gtk_label_new_with_mnemonic(_("_Forecast layout:"));
-    gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
-    gtk_size_group_add_widget(sg, label);
-    dialog->combo_forecast_layout = gtk_combo_box_new_text();
-    gtk_combo_box_append_text(GTK_COMBO_BOX(dialog->combo_forecast_layout),
-                              _("Horizontal"));
-    gtk_combo_box_append_text(GTK_COMBO_BOX(dialog->combo_forecast_layout),
-                              _("Vertical"));
-    gtk_label_set_mnemonic_widget(GTK_LABEL(label),
-                                  GTK_WIDGET(dialog->combo_forecast_layout));
-    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
-    gtk_box_pack_start(GTK_BOX(hbox), dialog->combo_forecast_layout,
-                       TRUE, TRUE, 0);
+    ADD_LABEL(_("_Forecast layout:"), sg);
+    ADD_COMBO(dialog->combo_forecast_layout);
+    ADD_COMBO_VALUE(dialog->combo_forecast_layout, _("Horizontal"));
+    ADD_COMBO_VALUE(dialog->combo_forecast_layout, _("Vertical"));
     gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
 
     /* number of days shown in forecast */
     hbox = gtk_hbox_new(FALSE, BORDER);
-    label = gtk_label_new_with_mnemonic(_("Number of forecast _days:"));
-    gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
-    gtk_size_group_add_widget(sg, label);
-    dialog->spin_forecast_days =
-        gtk_spin_button_new_with_range(1, MAX_FORECAST_DAYS, 1);
-    gtk_spin_button_set_value(GTK_SPIN_BUTTON(dialog->spin_forecast_days),
-                              (dialog->wd->forecast_days)
-                              ? dialog->wd->forecast_days : 5);
-    gtk_label_set_mnemonic_widget(GTK_LABEL(label),
-                                  GTK_WIDGET(dialog->spin_forecast_days));
-    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
-    gtk_box_pack_start(GTK_BOX(hbox),
-                       dialog->spin_forecast_days, FALSE, FALSE, 0);
+    ADD_LABEL(_("_Number of forecast _days:"), sg);
+    ADD_SPIN(dialog->spin_forecast_days, 1, MAX_FORECAST_DAYS, 1,
+             (dialog->wd->forecast_days ? dialog->wd->forecast_days : 5),
+             0, NULL);
     gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
     gtk_box_pack_start(GTK_BOX(page), vbox, FALSE, FALSE, 0);
 
@@ -831,10 +743,7 @@ create_scrollbox_page(xfceweather_dialog *dialog)
     guint i;
     gint n;
 
-    palign = gtk_alignment_new(0.5, 0, 1, 1);
-    gtk_container_set_border_width(GTK_CONTAINER(palign), BORDER);
-    page = gtk_vbox_new(FALSE, BORDER);
-    gtk_container_add(GTK_CONTAINER(palign), page);
+    ADD_PAGE(FALSE);
     sg_misc = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
 
     /* show scrollbox */
@@ -848,17 +757,12 @@ create_scrollbox_page(xfceweather_dialog *dialog)
     label = gtk_label_new_with_mnemonic(_("L_ines:"));
     gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
     gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0);
-    dialog->spin_scrollbox_lines = gtk_spin_button_new_with_range(1, 6, 1);
-    gtk_label_set_mnemonic_widget(GTK_LABEL(label),
-                                  GTK_WIDGET(dialog->spin_scrollbox_lines));
-    gtk_size_group_add_widget(sg_misc, dialog->spin_scrollbox_lines);
-    gtk_box_pack_start(GTK_BOX(hbox), dialog->spin_scrollbox_lines,
-                       FALSE, FALSE, 0);
+    ADD_SPIN(dialog->spin_scrollbox_lines, 1, 6, 1, 1, 0, sg_misc);
     gtk_box_pack_start(GTK_BOX(page), hbox, FALSE, FALSE, 0);
 
     /* font and color */
     hbox = gtk_hbox_new(FALSE, BORDER);
-    label = gtk_label_new(_("Font and Color:"));
+    label = gtk_label_new(_("Font and color:"));
     gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
     gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
     dialog->button_scrollbox_font =
@@ -880,6 +784,7 @@ create_scrollbox_page(xfceweather_dialog *dialog)
     hbox = gtk_hbox_new(FALSE, BORDER);
     sg_button = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
     dialog->options_datatypes = make_label();
+    gtk_box_pack_start(GTK_BOX(hbox), dialog->options_datatypes, TRUE, TRUE, 0);
     dialog->model_datatypes = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_INT);
     dialog->list_datatypes =
         gtk_tree_view_new_with_model(GTK_TREE_MODEL(dialog->model_datatypes));
@@ -891,15 +796,10 @@ create_scrollbox_page(xfceweather_dialog *dialog)
     gtk_widget_set_size_request(dialog->options_datatypes, 300, -1);
 
     /* button "add" */
-    button_add = gtk_button_new_with_mnemonic(_("_Add"));
-    image = gtk_image_new_from_stock(GTK_STOCK_ADD, GTK_ICON_SIZE_BUTTON);
-    gtk_button_set_image(GTK_BUTTON(button_add), image);
-    gtk_size_group_add_widget(sg_button, button_add);
-    gtk_box_pack_start(GTK_BOX(hbox), dialog->options_datatypes, TRUE, TRUE, 0);
+    ADD_LABEL_EDIT_BUTTON(button_add, _("_Add"),
+                          GTK_STOCK_ADD, cb_addoption);
     gtk_box_pack_start(GTK_BOX(hbox), button_add, FALSE, FALSE, 0);
     gtk_box_pack_start(GTK_BOX(page), hbox, FALSE, FALSE, 0);
-    g_signal_connect(G_OBJECT(button_add), "clicked",
-                     G_CALLBACK(cb_addoption), dialog);
 
     /* labels to display */
     hbox = gtk_hbox_new(FALSE, BORDER);
@@ -911,31 +811,19 @@ create_scrollbox_page(xfceweather_dialog *dialog)
 
     /* button "remove" */
     table = gtk_table_new(4, 1, TRUE);
-    button_del = gtk_button_new_with_mnemonic(_("_Remove"));
-    image = gtk_image_new_from_stock(GTK_STOCK_REMOVE, GTK_ICON_SIZE_BUTTON);
-    gtk_button_set_image(GTK_BUTTON(button_del), image);
-    gtk_size_group_add_widget(sg_button, button_del);
+    ADD_LABEL_EDIT_BUTTON(button_del, _("_Remove"),
+                          GTK_STOCK_REMOVE, cb_deloption);
     gtk_table_attach_defaults(GTK_TABLE(table), button_del, 0, 1, 0, 1);
-    g_signal_connect(G_OBJECT(button_del), "clicked",
-                     G_CALLBACK(cb_deloption), dialog);
 
     /* button "move up" */
-    button_up = gtk_button_new_with_mnemonic(_("Move _Up"));
-    image = gtk_image_new_from_stock(GTK_STOCK_GO_UP, GTK_ICON_SIZE_BUTTON);
-    gtk_button_set_image(GTK_BUTTON(button_up), image);
-    gtk_size_group_add_widget(sg_button, button_up);
+    ADD_LABEL_EDIT_BUTTON(button_up, _("Move _up"),
+                          GTK_STOCK_GO_UP, cb_upoption);
     gtk_table_attach_defaults(GTK_TABLE(table), button_up, 0, 1, 2, 3);
-    g_signal_connect(G_OBJECT(button_up), "clicked",
-                     G_CALLBACK(cb_upoption), dialog);
 
     /* button "move down" */
-    button_down = gtk_button_new_with_mnemonic(_("Move _Down"));
-    image = gtk_image_new_from_stock(GTK_STOCK_GO_DOWN, GTK_ICON_SIZE_BUTTON);
-    gtk_button_set_image(GTK_BUTTON(button_down), image);
-    gtk_size_group_add_widget(sg_button, button_down);
+    ADD_LABEL_EDIT_BUTTON(button_down, _("Move _down"),
+                          GTK_STOCK_GO_DOWN, cb_downoption);
     gtk_table_attach_defaults(GTK_TABLE(table), button_down, 0, 1, 3, 4);
-    g_signal_connect(G_OBJECT(button_down), "clicked",
-                     G_CALLBACK(cb_downoption), dialog);
 
     gtk_box_pack_start(GTK_BOX(hbox), table, FALSE, FALSE, 0);
     gtk_box_pack_start(GTK_BOX(page), hbox, FALSE, FALSE, 0);


More information about the Xfce4-commits mailing list