[Xfce4-commits] <xfce4-weather-plugin:master> Config dialog: Setup signals after all notebook pages have been created.
Harald Judt
noreply at xfce.org
Tue Nov 27 16:46:48 CET 2012
Updating branch refs/heads/master
to fbf102d7da372a835b222644fb3f270536804374 (commit)
from c16119a6c0f91e5736f935a58cf14cb5b42a7740 (commit)
commit fbf102d7da372a835b222644fb3f270536804374
Author: Harald Judt <h.judt at gmx.at>
Date: Tue Nov 27 16:23:38 2012 +0100
Config dialog: Setup signals after all notebook pages have been created.
There are some widgets that interact with others and cause unnecessary
updates (mainly of the scrollbox) when the config dialog opens. So move
that signal handling code out of the notebook pages creation code and
do it at the end of all that stuff.
panel-plugin/weather-config.c | 119 +++++++++++++++++++++++------------------
1 files changed, 66 insertions(+), 53 deletions(-)
diff --git a/panel-plugin/weather-config.c b/panel-plugin/weather-config.c
index ddaf3df..790794a 100644
--- a/panel-plugin/weather-config.c
+++ b/panel-plugin/weather-config.c
@@ -75,7 +75,7 @@
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); \
+ G_CALLBACK(cb_func), dialog);
static const labeloption labeloptions[OPTIONS_N] = {
@@ -485,8 +485,6 @@ create_location_page(xfceweather_dialog *dialog)
dialog->wd->location_name);
else
gtk_entry_set_text(GTK_ENTRY(dialog->text_loc_name), _("Unset"));
- g_signal_connect(GTK_EDITABLE(dialog->text_loc_name), "changed",
- G_CALLBACK(text_loc_name_changed), dialog);
/* latitude */
vbox = gtk_vbox_new(FALSE, BORDER);
@@ -498,8 +496,6 @@ create_location_page(xfceweather_dialog *dialog)
gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, BORDER);
- g_signal_connect(GTK_SPIN_BUTTON(dialog->spin_lat), "value-changed",
- G_CALLBACK(spin_lat_value_changed), dialog);
/* longitude */
hbox = gtk_hbox_new(FALSE, BORDER);
@@ -510,8 +506,6 @@ create_location_page(xfceweather_dialog *dialog)
gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, BORDER);
- g_signal_connect(GTK_SPIN_BUTTON(dialog->spin_lon), "value-changed",
- G_CALLBACK(spin_lon_value_changed), dialog);
/* altitude */
hbox = gtk_hbox_new(FALSE, BORDER);
@@ -521,8 +515,6 @@ create_location_page(xfceweather_dialog *dialog)
gtk_misc_set_alignment(GTK_MISC(dialog->label_alt_unit), 0, 0.5);
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);
- g_signal_connect(GTK_SPIN_BUTTON(dialog->spin_alt), "value-changed",
- G_CALLBACK(spin_alt_value_changed), dialog);
/* timezone */
hbox = gtk_hbox_new(FALSE, BORDER);
@@ -530,8 +522,6 @@ create_location_page(xfceweather_dialog *dialog)
ADD_SPIN(dialog->spin_timezone, -24, 24, 1,
dialog->wd->timezone, 0, sg_spin);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, BORDER);
- g_signal_connect(GTK_SPIN_BUTTON(dialog->spin_timezone), "value-changed",
- G_CALLBACK(spin_timezone_value_changed), dialog);
/* instructions for correction of altitude and timezone */
hbox = gtk_hbox_new(FALSE, BORDER);
@@ -629,8 +619,6 @@ create_units_page(xfceweather_dialog *dialog)
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);
- g_signal_connect(dialog->combo_unit_temperature, "changed",
- G_CALLBACK(combo_unit_temperature_changed), dialog);
/* atmospheric pressure */
hbox = gtk_hbox_new(FALSE, BORDER);
@@ -645,8 +633,6 @@ create_units_page(xfceweather_dialog *dialog)
ADD_COMBO_VALUE(dialog->combo_unit_pressure,
_("Torr (mmHg)"));
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, BORDER);
- g_signal_connect(dialog->combo_unit_pressure, "changed",
- G_CALLBACK(combo_unit_pressure_changed), dialog);
/* wind speed */
hbox = gtk_hbox_new(FALSE, BORDER);
@@ -659,8 +645,6 @@ create_units_page(xfceweather_dialog *dialog)
ADD_COMBO_VALUE(dialog->combo_unit_windspeed,
_("Meters per second (m/s)"));
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, BORDER);
- g_signal_connect(dialog->combo_unit_windspeed, "changed",
- G_CALLBACK(combo_unit_windspeed_changed), dialog);
/* precipitations */
hbox = gtk_hbox_new(FALSE, BORDER);
@@ -671,8 +655,6 @@ create_units_page(xfceweather_dialog *dialog)
ADD_COMBO_VALUE(dialog->combo_unit_precipitations,
_("Inches (in)"));
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, BORDER);
- g_signal_connect(dialog->combo_unit_precipitations, "changed",
- G_CALLBACK(combo_unit_precipitations_changed), dialog);
/* altitude */
hbox = gtk_hbox_new(FALSE, BORDER);
@@ -683,8 +665,6 @@ create_units_page(xfceweather_dialog *dialog)
ADD_COMBO_VALUE(dialog->combo_unit_altitude,
_("Feet (ft)"));
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, BORDER);
- g_signal_connect(dialog->combo_unit_altitude, "changed",
- G_CALLBACK(combo_unit_altitude_changed), dialog);
/* initialize widgets with current data */
if (dialog->wd)
@@ -783,8 +763,6 @@ create_appearance_page(xfceweather_dialog *dialog)
!strcmp(theme->dir, dialog->wd->icon_theme->dir))
SET_COMBO_VALUE(dialog->combo_icon_theme, i);
}
- g_signal_connect(dialog->combo_icon_theme, "changed",
- G_CALLBACK(combo_icon_theme_changed), dialog);
/* tooltip style */
hbox = gtk_hbox_new(FALSE, BORDER);
@@ -795,8 +773,6 @@ create_appearance_page(xfceweather_dialog *dialog)
SET_COMBO_VALUE(dialog->combo_tooltip_style, dialog->wd->tooltip_style);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(page), vbox, FALSE, FALSE, 0);
- g_signal_connect(dialog->combo_tooltip_style, "changed",
- G_CALLBACK(combo_tooltip_style_changed), dialog);
/* forecast layout */
vbox = gtk_vbox_new(FALSE, BORDER);
@@ -808,8 +784,6 @@ create_appearance_page(xfceweather_dialog *dialog)
SET_COMBO_VALUE(dialog->combo_forecast_layout,
dialog->wd->forecast_layout);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
- g_signal_connect(dialog->combo_forecast_layout, "changed",
- G_CALLBACK(combo_forecast_layout_changed), dialog);
/* number of days shown in forecast */
hbox = gtk_hbox_new(FALSE, BORDER);
@@ -819,9 +793,6 @@ create_appearance_page(xfceweather_dialog *dialog)
0, NULL);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(page), vbox, FALSE, FALSE, 0);
- g_signal_connect(GTK_SPIN_BUTTON(dialog->spin_forecast_days),
- "value-changed",
- G_CALLBACK(spin_forecast_days_value_changed), dialog);
/* round temperature */
vbox = gtk_vbox_new(FALSE, BORDER);
@@ -831,8 +802,6 @@ create_appearance_page(xfceweather_dialog *dialog)
FALSE, FALSE, 0);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->check_round_values),
dialog->wd->round);
- g_signal_connect(dialog->check_round_values, "toggled",
- G_CALLBACK(check_round_values_toggled), dialog);
/* interpolate data */
dialog->check_interpolate_data =
@@ -1148,8 +1117,6 @@ create_scrollbox_page(xfceweather_dialog *dialog)
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON
(dialog->check_scrollbox_show),
dialog->wd->show_scrollbox);
- g_signal_connect(dialog->check_scrollbox_show, "toggled",
- G_CALLBACK(check_scrollbox_show_toggled), dialog);
/* values to show at once (multiple lines) */
label = gtk_label_new_with_mnemonic(_("L_ines:"));
@@ -1158,10 +1125,6 @@ create_scrollbox_page(xfceweather_dialog *dialog)
ADD_SPIN(dialog->spin_scrollbox_lines, 1, MAX_SCROLLBOX_LINES, 1,
dialog->wd->scrollbox_lines, 0, sg_misc);
gtk_box_pack_start(GTK_BOX(page), hbox, FALSE, FALSE, 0);
- g_signal_connect(GTK_SPIN_BUTTON(dialog->spin_scrollbox_lines),
- "value-changed",
- G_CALLBACK(spin_scrollbox_lines_value_changed),
- dialog);
/* font and color */
hbox = gtk_hbox_new(FALSE, BORDER);
@@ -1175,25 +1138,12 @@ create_scrollbox_page(xfceweather_dialog *dialog)
if (dialog->wd->scrollbox_font)
gtk_button_set_label(GTK_BUTTON(dialog->button_scrollbox_font),
dialog->wd->scrollbox_font);
- g_signal_connect(G_OBJECT(dialog->button_scrollbox_font),
- "button_press_event",
- G_CALLBACK(button_scrollbox_font_pressed),
- dialog);
- g_signal_connect(dialog->button_scrollbox_font, "clicked",
- G_CALLBACK(button_scrollbox_font_clicked), dialog);
dialog->button_scrollbox_color =
gtk_color_button_new_with_color(&(dialog->wd->scrollbox_color));
gtk_size_group_add_widget(sg_misc, dialog->button_scrollbox_color);
gtk_box_pack_start(GTK_BOX(hbox), dialog->button_scrollbox_color,
FALSE, FALSE, 0 );
gtk_box_pack_start(GTK_BOX(page), hbox, FALSE, FALSE, 0);
- g_signal_connect(G_OBJECT(dialog->button_scrollbox_color),
- "button-press-event",
- G_CALLBACK(button_scrollbox_color_pressed),
- dialog);
- g_signal_connect(dialog->button_scrollbox_color, "color-set",
- G_CALLBACK(button_scrollbox_color_set), dialog);
-
/* labels and buttons */
hbox = gtk_hbox_new(FALSE, BORDER);
@@ -1259,8 +1209,6 @@ create_scrollbox_page(xfceweather_dialog *dialog)
dialog->wd->scrollbox_animate);
gtk_box_pack_start(GTK_BOX(page), dialog->check_scrollbox_animate,
FALSE, FALSE, 0);
- g_signal_connect(dialog->check_scrollbox_animate, "toggled",
- G_CALLBACK(check_scrollbox_animate_toggled), dialog);
g_object_unref(G_OBJECT(sg_misc));
g_object_unref(G_OBJECT(sg_button));
@@ -1268,6 +1216,70 @@ create_scrollbox_page(xfceweather_dialog *dialog)
}
+void
+setup_notebook_signals(xfceweather_dialog *dialog)
+{
+ /* location page */
+ g_signal_connect(GTK_EDITABLE(dialog->text_loc_name), "changed",
+ G_CALLBACK(text_loc_name_changed), dialog);
+ g_signal_connect(GTK_SPIN_BUTTON(dialog->spin_lat), "value-changed",
+ G_CALLBACK(spin_lat_value_changed), dialog);
+ g_signal_connect(GTK_SPIN_BUTTON(dialog->spin_lon), "value-changed",
+ G_CALLBACK(spin_lon_value_changed), dialog);
+ g_signal_connect(GTK_SPIN_BUTTON(dialog->spin_alt), "value-changed",
+ G_CALLBACK(spin_alt_value_changed), dialog);
+ g_signal_connect(GTK_SPIN_BUTTON(dialog->spin_timezone), "value-changed",
+ G_CALLBACK(spin_timezone_value_changed), dialog);
+
+ /* units page */
+ g_signal_connect(dialog->combo_unit_temperature, "changed",
+ G_CALLBACK(combo_unit_temperature_changed), dialog);
+ g_signal_connect(dialog->combo_unit_pressure, "changed",
+ G_CALLBACK(combo_unit_pressure_changed), dialog);
+ g_signal_connect(dialog->combo_unit_windspeed, "changed",
+ G_CALLBACK(combo_unit_windspeed_changed), dialog);
+ g_signal_connect(dialog->combo_unit_precipitations, "changed",
+ G_CALLBACK(combo_unit_precipitations_changed), dialog);
+ g_signal_connect(dialog->combo_unit_altitude, "changed",
+ G_CALLBACK(combo_unit_altitude_changed), dialog);
+
+ /* appearance page */
+ g_signal_connect(dialog->combo_icon_theme, "changed",
+ G_CALLBACK(combo_icon_theme_changed), dialog);
+ g_signal_connect(dialog->combo_tooltip_style, "changed",
+ G_CALLBACK(combo_tooltip_style_changed), dialog);
+ g_signal_connect(dialog->combo_forecast_layout, "changed",
+ G_CALLBACK(combo_forecast_layout_changed), dialog);
+ g_signal_connect(GTK_SPIN_BUTTON(dialog->spin_forecast_days),
+ "value-changed",
+ G_CALLBACK(spin_forecast_days_value_changed), dialog);
+ g_signal_connect(dialog->check_round_values, "toggled",
+ G_CALLBACK(check_round_values_toggled), dialog);
+
+ /* scrollbox page */
+ g_signal_connect(dialog->check_scrollbox_show, "toggled",
+ G_CALLBACK(check_scrollbox_show_toggled), dialog);
+ g_signal_connect(GTK_SPIN_BUTTON(dialog->spin_scrollbox_lines),
+ "value-changed",
+ G_CALLBACK(spin_scrollbox_lines_value_changed),
+ dialog);
+ g_signal_connect(G_OBJECT(dialog->button_scrollbox_font),
+ "button_press_event",
+ G_CALLBACK(button_scrollbox_font_pressed),
+ dialog);
+ g_signal_connect(dialog->button_scrollbox_font, "clicked",
+ G_CALLBACK(button_scrollbox_font_clicked), dialog);
+ g_signal_connect(G_OBJECT(dialog->button_scrollbox_color),
+ "button-press-event",
+ G_CALLBACK(button_scrollbox_color_pressed),
+ dialog);
+ g_signal_connect(dialog->button_scrollbox_color, "color-set",
+ G_CALLBACK(button_scrollbox_color_set), dialog);
+ g_signal_connect(dialog->check_scrollbox_animate, "toggled",
+ G_CALLBACK(check_scrollbox_animate_toggled), dialog);
+}
+
+
xfceweather_dialog *
create_config_dialog(xfceweather_data *data,
GtkWidget *vbox)
@@ -1292,6 +1304,7 @@ create_config_dialog(xfceweather_data *data,
gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
create_scrollbox_page(dialog),
gtk_label_new_with_mnemonic("_Scrollbox"));
+ setup_notebook_signals(dialog);
gtk_box_pack_start(GTK_BOX(vbox), notebook, TRUE, TRUE, 0);
gtk_widget_show_all(vbox);
return dialog;
More information about the Xfce4-commits
mailing list