[Xfce4-commits] <xfce4-settings:bluesabre/display-settings> Super simplification of minimal dialog and code.
Sean Davis
noreply at xfce.org
Thu Oct 4 20:04:01 CEST 2012
Updating branch refs/heads/bluesabre/display-settings
to 422122c9d6236b4bf7010fbcd78eea35f3b823e5 (commit)
from 131356b9b8cd8d1360624e06e887386d21aed299 (commit)
commit 422122c9d6236b4bf7010fbcd78eea35f3b823e5
Author: Sean Davis <smd.seandavis at gmail.com>
Date: Thu Oct 4 14:03:25 2012 -0400
Super simplification of minimal dialog and code.
dialogs/display-settings/main.c | 225 ++++++--------------
.../display-settings/minimal-display-dialog.glade | 161 ++++++++-------
2 files changed, 147 insertions(+), 239 deletions(-)
diff --git a/dialogs/display-settings/main.c b/dialogs/display-settings/main.c
index e57ba21..03ebbc5 100644
--- a/dialogs/display-settings/main.c
+++ b/dialogs/display-settings/main.c
@@ -1367,158 +1367,86 @@ display_settings_dialog_new (GtkBuilder *builder)
static void
display_settings_minimal_only_display1_toggled (GtkToggleButton *button,
- GtkBuilder *builder)
+ GtkBuilder *builder)
{
- GObject *mirror_displays, *extend_right, *only_display2;
+ GObject *buttons;
- mirror_displays = gtk_builder_get_object(builder, "mirror");
- extend_right = gtk_builder_get_object(builder, "extend_right");
- only_display2 = gtk_builder_get_object(builder, "display2");
-
- /* Lock everything in the dialog to prevent bad things from happening */
- g_object_disconnect (mirror_displays, "any_signal::toggled",
- display_settings_minimal_mirror_displays_toggled,
- builder, NULL);
- g_object_disconnect (extend_right, "any_signal::toggled",
- display_settings_minimal_extend_right_toggled,
- builder, NULL);
- g_object_disconnect (only_display2, "any_signal::toggled",
- display_settings_minimal_only_display2_toggled,
- builder, NULL);
-
- gtk_widget_set_sensitive( GTK_WIDGET(mirror_displays), FALSE );
- gtk_widget_set_sensitive( GTK_WIDGET(extend_right), FALSE );
- gtk_widget_set_sensitive( GTK_WIDGET(only_display2), FALSE );
-
- gtk_toggle_button_set_active (button, TRUE);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(mirror_displays), FALSE);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(extend_right), FALSE);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(only_display2), FALSE);
+ if ( !gtk_toggle_button_get_active(button) )
+ return;
if (!xfce_randr)
return;
if (xfce_randr->noutput <= 1)
return;
+
+ buttons = gtk_builder_get_object(builder, "buttons");
+ gtk_widget_set_sensitive( GTK_WIDGET(buttons), FALSE );
- if (gtk_toggle_button_get_active (button))
- {
- /* Put Display1 in its preferred mode and deactivate Display2 */
- XFCE_RANDR_MODE (xfce_randr) = xfce_randr_preferred_mode (xfce_randr, 0);
- xfce_randr->active_output = 1;
- XFCE_RANDR_MODE (xfce_randr) = None;
- /* Apply the changes */
- xfce_randr_save_output (xfce_randr, "Default", display_channel,0);
- xfce_randr_save_output (xfce_randr, "Default", display_channel,1);
- xfce_randr_apply (xfce_randr, "Default", display_channel);
- }
+ /* Put Display1 in its preferred mode and deactivate Display2 */
+ XFCE_RANDR_MODE (xfce_randr) = xfce_randr_preferred_mode (xfce_randr, 0);
+ xfce_randr->active_output = 1;
+ XFCE_RANDR_MODE (xfce_randr) = None;
- gtk_widget_set_sensitive( GTK_WIDGET(mirror_displays), TRUE );
- gtk_widget_set_sensitive( GTK_WIDGET(extend_right), TRUE );
- gtk_widget_set_sensitive( GTK_WIDGET(only_display2), TRUE );
-
- /* Reconnect the signals */
- g_signal_connect (mirror_displays, "toggled", G_CALLBACK (display_settings_minimal_mirror_displays_toggled),
- builder);
- g_signal_connect (extend_right, "toggled", G_CALLBACK (display_settings_minimal_extend_right_toggled),
- builder);
- g_signal_connect (only_display2, "toggled", G_CALLBACK (display_settings_minimal_only_display2_toggled),
- builder);
+ /* Apply the changes */
+ xfce_randr_save_output (xfce_randr, "Default", display_channel,0);
+ xfce_randr_save_output (xfce_randr, "Default", display_channel,1);
+ xfce_randr_apply (xfce_randr, "Default", display_channel);
+
+ gtk_widget_set_sensitive( GTK_WIDGET(buttons), TRUE );
}
static void
display_settings_minimal_only_display2_toggled (GtkToggleButton *button,
- GtkBuilder *builder)
+ GtkBuilder *builder)
{
- GObject *mirror_displays, *extend_right, *only_display1;
+ GObject *buttons;
- mirror_displays = gtk_builder_get_object(builder, "mirror");
- extend_right = gtk_builder_get_object(builder, "extend_right");
- only_display1 = gtk_builder_get_object(builder, "display1");
-
- /* Lock everything in the dialog to prevent bad things from happening */
- g_object_disconnect (mirror_displays, "any_signal::toggled",
- display_settings_minimal_mirror_displays_toggled,
- builder, NULL);
- g_object_disconnect (extend_right, "any_signal::toggled",
- display_settings_minimal_extend_right_toggled,
- builder, NULL);
- g_object_disconnect (only_display1, "any_signal::toggled",
- display_settings_minimal_only_display1_toggled,
- builder, NULL);
-
- gtk_widget_set_sensitive( GTK_WIDGET(mirror_displays), FALSE );
- gtk_widget_set_sensitive( GTK_WIDGET(extend_right), FALSE );
- gtk_widget_set_sensitive( GTK_WIDGET(only_display1), FALSE );
-
- gtk_toggle_button_set_active (button, TRUE);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(mirror_displays), FALSE);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(extend_right), FALSE);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(only_display1), FALSE);
+ if ( !gtk_toggle_button_get_active(button) )
+ return;
if (!xfce_randr)
return;
if (xfce_randr->noutput <= 1)
return;
+
+ buttons = gtk_builder_get_object(builder, "buttons");
+ gtk_widget_set_sensitive( GTK_WIDGET(buttons), FALSE );
- if (gtk_toggle_button_get_active (button))
- {
- /* Put Display2 in its preferred mode and deactivate Display1 */
- XFCE_RANDR_MODE (xfce_randr) = xfce_randr_preferred_mode (xfce_randr, 1);
- xfce_randr->active_output = 0;
- XFCE_RANDR_MODE (xfce_randr) = None;
- /* Apply the changes */
- xfce_randr_save_output (xfce_randr, "Default", display_channel,0);
- xfce_randr_save_output (xfce_randr, "Default", display_channel,1);
- xfce_randr_apply (xfce_randr, "Default", display_channel);
- }
+ /* Put Display2 in its preferred mode and deactivate Display1 */
+ XFCE_RANDR_MODE (xfce_randr) = xfce_randr_preferred_mode (xfce_randr, 1);
+ xfce_randr->active_output = 0;
+ XFCE_RANDR_MODE (xfce_randr) = None;
- gtk_widget_set_sensitive( GTK_WIDGET(mirror_displays), TRUE );
- gtk_widget_set_sensitive( GTK_WIDGET(extend_right), TRUE );
- gtk_widget_set_sensitive( GTK_WIDGET(only_display1), TRUE );
-
- /* Reconnect the signals */
- g_signal_connect (mirror_displays, "toggled", G_CALLBACK (display_settings_minimal_mirror_displays_toggled),
- builder);
- g_signal_connect (extend_right, "toggled", G_CALLBACK (display_settings_minimal_extend_right_toggled),
- builder);
- g_signal_connect (only_display1, "toggled", G_CALLBACK (display_settings_minimal_only_display1_toggled),
- builder);
+ /* Apply the changes */
+ xfce_randr_save_output (xfce_randr, "Default", display_channel,0);
+ xfce_randr_save_output (xfce_randr, "Default", display_channel,1);
+ xfce_randr_apply (xfce_randr, "Default", display_channel);
+
+ gtk_widget_set_sensitive( GTK_WIDGET(buttons), TRUE );
}
static void
display_settings_minimal_mirror_displays_toggled (GtkToggleButton *button,
- GtkBuilder *builder)
+ GtkBuilder *builder)
{
- GObject *extend_right, *only_display1, *only_display2;
+ GObject *buttons;
gint selected_x, selected_y;
guint n;
-
- only_display1 = gtk_builder_get_object(builder, "display1");
- only_display2 = gtk_builder_get_object(builder, "display2");
- extend_right = gtk_builder_get_object(builder, "extend_right");
- /* Lock everything in the dialog to prevent bad things from happening */
- g_object_disconnect (only_display1, "any_signal::toggled",
- display_settings_minimal_only_display1_toggled,
- builder, NULL);
- g_object_disconnect (only_display2, "any_signal::toggled",
- display_settings_minimal_only_display2_toggled,
- builder, NULL);
- g_object_disconnect (extend_right, "any_signal::toggled",
- display_settings_minimal_extend_right_toggled,
- builder, NULL);
-
- gtk_widget_set_sensitive( GTK_WIDGET(only_display1), FALSE );
- gtk_widget_set_sensitive( GTK_WIDGET(only_display2), FALSE );
- gtk_widget_set_sensitive( GTK_WIDGET(extend_right), FALSE );
+ if ( !gtk_toggle_button_get_active(button) )
+ return;
+
+ if (!xfce_randr)
+ return;
- gtk_toggle_button_set_active (button, TRUE);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(only_display1), FALSE);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(only_display2), FALSE);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(extend_right), FALSE);
+ if (xfce_randr->noutput <= 1)
+ return;
+
+ buttons = gtk_builder_get_object(builder, "buttons");
+ gtk_widget_set_sensitive( GTK_WIDGET(buttons), FALSE );
/* Activate all inactive displays */
for (n = 0; n < xfce_randr->noutput; ++n)
@@ -1544,51 +1472,30 @@ display_settings_minimal_mirror_displays_toggled (GtkToggleButton *button,
/* Apply all changes */
xfce_randr_apply (xfce_randr, "Default", display_channel);
- gtk_widget_set_sensitive( GTK_WIDGET(only_display1), TRUE );
- gtk_widget_set_sensitive( GTK_WIDGET(only_display2), TRUE );
- gtk_widget_set_sensitive( GTK_WIDGET(extend_right), TRUE );
-
- /* Reconnect the signals */
- g_signal_connect (only_display1, "toggled", G_CALLBACK (display_settings_minimal_only_display1_toggled),
- builder);
- g_signal_connect (only_display2, "toggled", G_CALLBACK (display_settings_minimal_only_display2_toggled),
- builder);
- g_signal_connect (extend_right, "toggled", G_CALLBACK (display_settings_minimal_extend_right_toggled),
- builder);
+ gtk_widget_set_sensitive( GTK_WIDGET(buttons), TRUE );
}
static void
display_settings_minimal_extend_right_toggled (GtkToggleButton *button,
GtkBuilder *builder)
{
- GObject *mirror_displays, *only_display1, *only_display2;
+ GObject *buttons;
+
guint n;
-
+
XfceRRMode *current_mode;
- mirror_displays = gtk_builder_get_object(builder, "mirror");
- only_display1 = gtk_builder_get_object(builder, "display1");
- only_display2 = gtk_builder_get_object(builder, "display2");
-
- /* Lock everything in the dialog to prevent bad things from happening */
- g_object_disconnect (mirror_displays, "any_signal::toggled",
- display_settings_minimal_mirror_displays_toggled,
- builder, NULL);
- g_object_disconnect (only_display1, "any_signal::toggled",
- display_settings_minimal_only_display1_toggled,
- builder, NULL);
- g_object_disconnect (only_display2, "any_signal::toggled",
- display_settings_minimal_only_display2_toggled,
- builder, NULL);
-
- gtk_widget_set_sensitive( GTK_WIDGET(mirror_displays), FALSE );
- gtk_widget_set_sensitive( GTK_WIDGET(only_display1), FALSE );
- gtk_widget_set_sensitive( GTK_WIDGET(only_display2), FALSE );
+ if ( !gtk_toggle_button_get_active(button) )
+ return;
- gtk_toggle_button_set_active (button, TRUE);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(mirror_displays), FALSE);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(only_display1), FALSE);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(only_display2), FALSE);
+ if (!xfce_randr)
+ return;
+
+ if (xfce_randr->noutput <= 1)
+ return;
+
+ buttons = gtk_builder_get_object(builder, "buttons");
+ gtk_widget_set_sensitive( GTK_WIDGET(buttons), FALSE );
/* Activate all inactive displays */
for (n = 0; n < xfce_randr->noutput; ++n)
@@ -1620,17 +1527,7 @@ display_settings_minimal_extend_right_toggled (GtkToggleButton *button,
/* Apply all changes */
xfce_randr_apply (xfce_randr, "Default", display_channel);
- /* Unlock the dialog and reconnect the signals */
- gtk_widget_set_sensitive( GTK_WIDGET(mirror_displays), TRUE );
- gtk_widget_set_sensitive( GTK_WIDGET(only_display1), TRUE );
- gtk_widget_set_sensitive( GTK_WIDGET(only_display2), TRUE );
-
- g_signal_connect (mirror_displays, "toggled", G_CALLBACK (display_settings_minimal_mirror_displays_toggled),
- builder);
- g_signal_connect (only_display1, "toggled", G_CALLBACK (display_settings_minimal_only_display1_toggled),
- builder);
- g_signal_connect (only_display2, "toggled", G_CALLBACK (display_settings_minimal_only_display2_toggled),
- builder);
+ gtk_widget_set_sensitive( GTK_WIDGET(buttons), TRUE );
}
diff --git a/dialogs/display-settings/minimal-display-dialog.glade b/dialogs/display-settings/minimal-display-dialog.glade
index 6e6b1d9..abaf02a 100644
--- a/dialogs/display-settings/minimal-display-dialog.glade
+++ b/dialogs/display-settings/minimal-display-dialog.glade
@@ -16,7 +16,7 @@
<property name="border_width">6</property>
<property name="spacing">6</property>
<child>
- <object class="GtkTable" id="table1">
+ <object class="GtkTable" id="buttons">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="n_rows">2</property>
@@ -24,79 +24,57 @@
<property name="column_spacing">24</property>
<property name="row_spacing">3</property>
<child>
- <object class="GtkToggleButton" id="display1">
- <property name="width_request">128</property>
- <property name="height_request">128</property>
+ <object class="GtkLabel" id="label1">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="use_action_appearance">False</property>
- <child>
- <object class="GtkImage" id="image1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="pixbuf">display1.png</property>
- </object>
- </child>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Only Display 1</property>
</object>
<packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options">GTK_FILL</property>
</packing>
</child>
<child>
- <object class="GtkToggleButton" id="mirror">
- <property name="width_request">128</property>
- <property name="height_request">128</property>
+ <object class="GtkLabel" id="label2">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="use_action_appearance">False</property>
- <child>
- <object class="GtkImage" id="image2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="pixbuf">mirror.png</property>
- </object>
- </child>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Mirror Displays</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options">GTK_FILL</property>
</packing>
</child>
<child>
- <object class="GtkToggleButton" id="extend_right">
- <property name="width_request">128</property>
- <property name="height_request">128</property>
+ <object class="GtkLabel" id="label3">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="use_action_appearance">False</property>
- <child>
- <object class="GtkImage" id="image3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="pixbuf">extend-right.png</property>
- </object>
- </child>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Extend to the right</property>
</object>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options">GTK_FILL</property>
</packing>
</child>
<child>
- <object class="GtkLabel" id="label1">
+ <object class="GtkLabel" id="label4">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="label" translatable="yes">Only Display 1</property>
+ <property name="label" translatable="yes">Only Display 2</property>
</object>
<packing>
+ <property name="left_attach">3</property>
+ <property name="right_attach">4</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">GTK_FILL</property>
@@ -104,71 +82,104 @@
</packing>
</child>
<child>
- <object class="GtkLabel" id="label2">
+ <object class="GtkRadioButton" id="display1">
+ <property name="width_request">128</property>
+ <property name="height_request">128</property>
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Mirror Displays</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">False</property>
+ <child>
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="pixbuf">display1.png</property>
+ </object>
+ </child>
</object>
<packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
+ <property name="x_options"></property>
+ <property name="y_options"></property>
</packing>
</child>
<child>
- <object class="GtkLabel" id="label3">
+ <object class="GtkRadioButton" id="mirror">
+ <property name="width_request">128</property>
+ <property name="height_request">128</property>
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Extend to the right</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">False</property>
+ <property name="group">display1</property>
+ <child>
+ <object class="GtkImage" id="image2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="pixbuf">mirror.png</property>
+ </object>
+ </child>
</object>
<packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="x_options"></property>
+ <property name="y_options"></property>
</packing>
</child>
<child>
- <object class="GtkToggleButton" id="display2">
+ <object class="GtkRadioButton" id="extend_right">
<property name="width_request">128</property>
<property name="height_request">128</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="receives_default">True</property>
+ <property name="receives_default">False</property>
<property name="use_action_appearance">False</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">False</property>
+ <property name="group">display1</property>
<child>
- <object class="GtkImage" id="image4">
+ <object class="GtkImage" id="image3">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="pixbuf">display2.png</property>
+ <property name="pixbuf">extend-right.png</property>
</object>
</child>
</object>
<packing>
- <property name="left_attach">3</property>
- <property name="right_attach">4</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="x_options"></property>
+ <property name="y_options"></property>
</packing>
</child>
<child>
- <object class="GtkLabel" id="label4">
+ <object class="GtkRadioButton" id="display2">
+ <property name="width_request">128</property>
+ <property name="height_request">128</property>
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Only Display 2</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">False</property>
+ <property name="group">display1</property>
+ <child>
+ <object class="GtkImage" id="image4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="pixbuf">display2.png</property>
+ </object>
+ </child>
</object>
<packing>
<property name="left_attach">3</property>
<property name="right_attach">4</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
+ <property name="x_options"></property>
+ <property name="y_options"></property>
</packing>
</child>
</object>
More information about the Xfce4-commits
mailing list