[Xfce4-commits] r22643 - xfce4-panel/trunk/plugins/clock
Jasper Huijsmans
jasper at xfce.org
Thu Aug 3 17:58:30 UTC 2006
Author: jasper
Date: 2006-08-03 17:58:30 +0000 (Thu, 03 Aug 2006)
New Revision: 22643
Modified:
xfce4-panel/trunk/plugins/clock/clock.c
Log:
Small improvements and cleanup of clock dialog. Patch by Nick.
Modified: xfce4-panel/trunk/plugins/clock/clock.c
===================================================================
--- xfce4-panel/trunk/plugins/clock/clock.c 2006-08-03 15:05:48 UTC (rev 22642)
+++ xfce4-panel/trunk/plugins/clock/clock.c 2006-08-03 17:58:30 UTC (rev 22643)
@@ -72,6 +72,18 @@
}
Clock;
+typedef struct
+{
+ Clock *clock;
+
+ GtkWidget *cb_mode;
+ GtkWidget *cb_frame;
+ GtkWidget *cb_military;
+ GtkWidget *cb_ampm;
+ GtkWidget *cb_secs;
+}
+ClockDialog;
+
static void clock_properties_dialog (XfcePanelPlugin *plugin,
Clock *clock);
@@ -341,72 +353,96 @@
* -------------------------------------------------------------------- */
static void
-clock_show_frame_toggled (GtkToggleButton *cb, Clock *clock)
+clock_set_sensative (ClockDialog *cd)
{
- clock->show_frame = gtk_toggle_button_get_active (cb);
-
- gtk_frame_set_shadow_type (GTK_FRAME (clock->frame), clock->show_frame ?
- GTK_SHADOW_IN : GTK_SHADOW_NONE);
+ if (cd->clock->mode == XFCE_CLOCK_ANALOG)
+ {
+ gtk_widget_set_sensitive (cd->cb_military, FALSE);
+ gtk_widget_set_sensitive (cd->cb_ampm, FALSE);
+ }
+ else
+ {
+ gtk_widget_set_sensitive (cd->cb_military, TRUE);
+
+ if (cd->clock->military)
+ gtk_widget_set_sensitive (cd->cb_ampm, FALSE);
+ else
+ gtk_widget_set_sensitive (cd->cb_ampm, TRUE);
+ }
}
static void
-clock_military_toggled (GtkToggleButton *cb, Clock *clock)
+clock_button_toggled (GtkWidget *cb, ClockDialog *cd)
{
- clock->military = gtk_toggle_button_get_active (cb);
- xfce_clock_show_military (XFCE_CLOCK (clock->clock), clock->military);
+ gboolean active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (cb));
- clock_update_size (clock,
- xfce_panel_plugin_get_size (XFCE_PANEL_PLUGIN (clock->plugin)));
-}
-
-static void
-clock_ampm_toggled (GtkToggleButton *cb, Clock *clock)
-{
- clock->ampm = gtk_toggle_button_get_active(cb);
- xfce_clock_show_ampm (XFCE_CLOCK (clock->clock), clock->ampm);
+ if (cb == cd->cb_frame)
+ {
+ cd->clock->show_frame = active;
+ gtk_frame_set_shadow_type (GTK_FRAME (cd->clock->frame),
+ active ? GTK_SHADOW_IN : GTK_SHADOW_NONE);
+ }
+ else if (cb == cd->cb_military)
+ {
+ cd->clock->military = active;
+ xfce_clock_show_military (XFCE_CLOCK (cd->clock->clock),
+ active);
+
+ clock_set_sensative (cd);
+ }
+ else if (cb == cd->cb_ampm)
+ {
+ cd->clock->ampm = active;
+ xfce_clock_show_ampm (XFCE_CLOCK (cd->clock->clock),
+ active);
+ }
+ else if (cb == cd->cb_secs)
+ {
+ cd->clock->secs = active;
+ xfce_clock_show_secs (XFCE_CLOCK (cd->clock->clock),
+ active);
+ }
- clock_update_size (clock,
- xfce_panel_plugin_get_size (XFCE_PANEL_PLUGIN (clock->plugin)));
+ clock_update_size (cd->clock,
+ xfce_panel_plugin_get_size (XFCE_PANEL_PLUGIN (cd->clock->plugin)));
}
static void
-clock_secs_toggled (GtkToggleButton *cb, Clock *clock)
+clock_mode_changed (GtkComboBox *cb, ClockDialog *cd)
{
- clock->secs = gtk_toggle_button_get_active(cb);
- xfce_clock_show_secs (XFCE_CLOCK (clock->clock), clock->secs);
+ cd->clock->mode = gtk_combo_box_get_active(cb);
+ xfce_clock_set_mode (XFCE_CLOCK (cd->clock->clock), cd->clock->mode);
- clock_update_size (clock,
- xfce_panel_plugin_get_size (XFCE_PANEL_PLUGIN (clock->plugin)));
-}
-
-static void
-clock_mode_changed (GtkComboBox *cb, Clock *clock)
-{
- clock->mode = gtk_combo_box_get_active(cb);
- xfce_clock_set_mode (XFCE_CLOCK (clock->clock), clock->mode);
+ clock_set_sensative (cd);
- clock_update_size (clock,
- xfce_panel_plugin_get_size (XFCE_PANEL_PLUGIN (clock->plugin)));
+ clock_update_size (cd->clock,
+ xfce_panel_plugin_get_size (XFCE_PANEL_PLUGIN (cd->clock->plugin)));
}
static void
clock_dialog_response (GtkWidget *dlg, int reponse,
- Clock *clock)
+ ClockDialog *cd)
{
- g_object_set_data (G_OBJECT (clock->plugin), "dialog", NULL);
+ g_object_set_data (G_OBJECT (cd->clock->plugin), "dialog", NULL);
gtk_widget_destroy (dlg);
- xfce_panel_plugin_unblock_menu (clock->plugin);
- clock_write_rc_file (clock->plugin, clock);
+ xfce_panel_plugin_unblock_menu (cd->clock->plugin);
+ clock_write_rc_file (cd->clock->plugin, cd->clock);
+
+ g_free (cd);
}
static void
clock_properties_dialog (XfcePanelPlugin *plugin, Clock *clock)
{
GtkWidget *dlg, *frame, *bin, *vbox, *cb;
+ ClockDialog *cd;
xfce_panel_plugin_block_menu (plugin);
+ cd = g_new0 (ClockDialog, 1);
+ cd->clock = clock;
+
dlg = xfce_titled_dialog_new_with_buttons (_("Clock"),
GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (plugin))),
GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_NO_SEPARATOR,
@@ -418,23 +454,17 @@
gtk_window_set_position (GTK_WINDOW (dlg), GTK_WIN_POS_CENTER);
gtk_window_set_icon_name (GTK_WINDOW (dlg), "xfce4-settings");
- g_signal_connect (dlg, "response", G_CALLBACK (clock_dialog_response),
- clock);
-
gtk_container_set_border_width (GTK_CONTAINER (dlg), 2);
frame = xfce_create_framebox (_("Appearance"), &bin);
gtk_container_set_border_width (GTK_CONTAINER (frame), 6);
- gtk_widget_show (frame);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), frame,
FALSE, FALSE, 0);
vbox = gtk_vbox_new (FALSE, 8);
- gtk_widget_show (vbox);
gtk_container_add (GTK_CONTAINER (bin), vbox);
- cb = gtk_combo_box_new_text ();
- gtk_widget_show (cb);
+ cd->cb_mode = cb = gtk_combo_box_new_text ();
gtk_box_pack_start (GTK_BOX (vbox), cb, FALSE, FALSE, 0);
/* Keep order in sync with XfceClockMode */
@@ -443,50 +473,49 @@
gtk_combo_box_append_text (GTK_COMBO_BOX (cb), _("LED"));
gtk_combo_box_set_active (GTK_COMBO_BOX (cb), clock->mode);
g_signal_connect (cb, "changed",
- G_CALLBACK (clock_mode_changed), clock);
+ G_CALLBACK (clock_mode_changed), cd);
- cb = gtk_check_button_new_with_mnemonic (_("Show _frame"));
- gtk_widget_show (cb);
+ cd->cb_frame = cb = gtk_check_button_new_with_mnemonic (_("Show _frame"));
gtk_box_pack_start (GTK_BOX (vbox), cb, FALSE, FALSE, 0);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cb),
clock->show_frame);
- g_signal_connect (cb, "toggled", G_CALLBACK (clock_show_frame_toggled),
- clock);
+ g_signal_connect (cb, "toggled",
+ G_CALLBACK (clock_button_toggled), cd);
frame = xfce_create_framebox (_("Clock Options"), &bin);
gtk_container_set_border_width (GTK_CONTAINER (frame), 6);
- gtk_widget_show (frame);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), frame,
FALSE, FALSE, 0);
vbox = gtk_vbox_new (FALSE, 8);
- gtk_widget_show (vbox);
gtk_container_add (GTK_CONTAINER (bin), vbox);
- cb = gtk_check_button_new_with_mnemonic (_("Use 24-_hour clock"));
- gtk_widget_show (cb);
+ cd->cb_military = cb = gtk_check_button_new_with_mnemonic (_("Use 24-_hour clock"));
gtk_box_pack_start (GTK_BOX (vbox), cb, FALSE, FALSE, 0);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cb),
clock->military);
- g_signal_connect (cb, "toggled", G_CALLBACK (clock_military_toggled),
- clock);
-
- cb = gtk_check_button_new_with_mnemonic (_("Show AM/PM"));
- gtk_widget_show (cb);
+ g_signal_connect (cb, "toggled",
+ G_CALLBACK (clock_button_toggled), cd);
+
+ cd->cb_ampm = cb = gtk_check_button_new_with_mnemonic (_("Show AM/PM"));
gtk_box_pack_start (GTK_BOX (vbox), cb, FALSE, FALSE, 0);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cb),
clock->ampm);
- g_signal_connect (cb, "toggled", G_CALLBACK (clock_ampm_toggled),
- clock);
+ g_signal_connect (cb, "toggled",
+ G_CALLBACK (clock_button_toggled), cd);
- cb = gtk_check_button_new_with_mnemonic (_("Display seconds"));
- gtk_widget_show (cb);
+ cd->cb_secs = cb = gtk_check_button_new_with_mnemonic (_("Display seconds"));
gtk_box_pack_start (GTK_BOX (vbox), cb, FALSE, FALSE, 0);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cb),
clock->secs);
- g_signal_connect (cb, "toggled", G_CALLBACK (clock_secs_toggled),
- clock);
+ g_signal_connect (cb, "toggled",
+ G_CALLBACK (clock_button_toggled), cd);
- gtk_widget_show (dlg);
+ clock_set_sensative (cd);
+
+ g_signal_connect (dlg, "response",
+ G_CALLBACK (clock_dialog_response), cd);
+
+ gtk_widget_show_all (dlg);
}
More information about the Xfce4-commits
mailing list