Backdrop settings interface
    Benedikt Meurer 
    Benedikt.Meurer at unix-ag.uni-siegen.de
       
    Wed Jun  4 12:09:03 CEST 2003
    
    
  
Hello,
I've made two small improvements to the "Backdrop settings" dialog.
	1) Use an option menu instead of the radio buttons
	2) Make the image frame insensitive, if the "Use color only" box
	   is checked
Here are two screenshots:
	http://www.home.unix-ag.org/bmeurer/tmp/backdrop1.jpg
	http://www.home.unix-ag.org/bmeurer/tmp/backdrop2.jpg
I'd like to commit the stuff, if nobody complains. The patch is quite
simple, and does not break any translations.
regards,
Benedikt
-- 
NetBSD Operating system:                       http://www.NetBSD.org/
pkgsrc "Work in progress":                  http://pkgsrc-wip.sf.net/
XFce desktop environment:                        http://www.xfce.org/
German Unix-AG Association:                   http://www.unix-ag.org/
-------------- next part --------------
Index: backdrop_settings.c
===================================================================
RCS file: /cvsroot/xfce/xfce-devel/xfdesktop/settings/backdrop_settings.c,v
retrieving revision 1.27
diff -u -r1.27 backdrop_settings.c
--- backdrop_settings.c	3 Jun 2003 19:59:53 -0000	1.27
+++ backdrop_settings.c	4 Jun 2003 10:08:31 -0000
@@ -84,6 +84,7 @@
     GdkColor color;
     GtkWidget *color_box;
     GtkWidget *color_only_checkbox;
+    GtkWidget *image_frame;
     
     GtkWidget *file_entry;
     GtkWidget *edit_list_button;
@@ -408,6 +409,8 @@
 {
     showimage = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(b)) ? 0 : 1;
 
+    gtk_widget_set_sensitive(bd->image_frame, showimage);
+
     update_showimage(bd);
 }
 
@@ -772,7 +775,7 @@
                               BackdropDialog *bd)
 {
     GtkWidget *hbox, *label, *rb_tiled, *rb_scaled, *rb_centered, *rb_auto;
-    GtkRadioButton *rb;
+    GtkWidget *menu, *omenu;
     
     hbox = gtk_hbox_new(FALSE, BORDER);
     gtk_widget_show(hbox);
@@ -784,61 +787,39 @@
     gtk_widget_show(label);
     gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
 
-    rb_tiled = gtk_radio_button_new_with_mnemonic (NULL, _("_Tiled"));
+    menu = gtk_menu_new();
+
+    rb_tiled = gtk_menu_item_new_with_mnemonic(_("_Tiled"));
     gtk_widget_show(rb_tiled);
-    gtk_box_pack_start (GTK_BOX (hbox), rb_tiled, FALSE, FALSE, 0);
-    
-    rb = GTK_RADIO_BUTTON(rb_tiled);
-    
-    rb_scaled = gtk_radio_button_new_with_mnemonic_from_widget(rb,
-                    _("_Scaled"));
+    gtk_menu_shell_append(GTK_MENU_SHELL(menu), rb_tiled);
+    g_signal_connect_swapped(rb_tiled, "activate", 
+		    G_CALLBACK(set_tiled), bd);
+	    
+    rb_scaled = gtk_menu_item_new_with_mnemonic(_("_Scaled"));
     gtk_widget_show(rb_scaled);
-    gtk_box_pack_start (GTK_BOX (hbox), rb_scaled, FALSE, FALSE, 0);
-
-    rb_centered = 
-        gtk_radio_button_new_with_mnemonic_from_widget(rb, _("_Centered"));
+    gtk_menu_shell_append(GTK_MENU_SHELL(menu), rb_scaled);
+    g_signal_connect_swapped(rb_scaled, "activate", 
+		    G_CALLBACK(set_scaled), bd);
+	    
+    rb_centered = gtk_menu_item_new_with_mnemonic(_("_Centered"));
     gtk_widget_show(rb_centered);
-    gtk_box_pack_start (GTK_BOX (hbox), rb_centered, FALSE, FALSE, 0);
-
-    rb_auto = gtk_radio_button_new_with_mnemonic_from_widget(rb,
-                    _("_Automatic"));
+    gtk_menu_shell_append(GTK_MENU_SHELL(menu), rb_centered);
+    g_signal_connect_swapped(rb_centered, "activate", 
+		    G_CALLBACK(set_centered), bd);
+	    
+    rb_auto = gtk_menu_item_new_with_mnemonic(_("_Auto"));
     gtk_widget_show(rb_auto);
-    gtk_box_pack_start (GTK_BOX (hbox), rb_auto, FALSE, FALSE, 0);
-
-    bd->style_rb_group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(rb_tiled));
-    
-    g_signal_connect_swapped(rb_tiled, "toggled", 
-                             G_CALLBACK(set_tiled), bd);
-    g_signal_connect_swapped(rb_scaled, "toggled", 
-                             G_CALLBACK(set_scaled), bd);
-    g_signal_connect_swapped(rb_centered, "toggled", 
-                             G_CALLBACK(set_centered), bd);
-    g_signal_connect_swapped(rb_auto, "toggled", 
-                             G_CALLBACK(set_auto), bd);
-    
-    switch (backdrop_style)
-    {
-        case TILED:
-            gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(rb_tiled), TRUE);
-            break;
-        case SCALED:
-            gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(rb_scaled), TRUE);
-            break;
-        case CENTERED:
-            gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(rb_centered), TRUE);
-            break;
-        default:
-            gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(rb_auto), TRUE);
-    }
-
-    if (is_backdrop_list(backdrop_path))
-    {
-        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(rb_auto), TRUE);
-        gtk_widget_set_sensitive(rb_auto, FALSE);
-        gtk_widget_set_sensitive(rb_tiled, FALSE);
-        gtk_widget_set_sensitive(rb_scaled, FALSE);
-        gtk_widget_set_sensitive(rb_centered, FALSE);
-    }
+    gtk_menu_shell_append(GTK_MENU_SHELL(menu), rb_auto);
+    g_signal_connect_swapped(rb_auto, "activate", 
+		    G_CALLBACK(set_auto), bd);
+	    
+    omenu = gtk_option_menu_new();
+    gtk_option_menu_set_menu(GTK_OPTION_MENU(omenu), menu);
+    gtk_option_menu_set_history(GTK_OPTION_MENU(omenu), backdrop_style);
+
+    gtk_widget_show(menu);
+    gtk_widget_show(omenu);
+    gtk_box_pack_start(GTK_BOX(hbox), omenu, FALSE, FALSE, 0);
 }
 
 /* the dialog */
@@ -888,15 +869,16 @@
     add_color_button(vbox, bd);
 
     /* image vbox */
-    frame = gtk_frame_new(_("Image"));
-    gtk_container_set_border_width(GTK_CONTAINER(frame), BORDER);
-    gtk_widget_show(frame);
-    gtk_box_pack_start(GTK_BOX(mainvbox), frame, TRUE, TRUE, 0);
+    bd->image_frame = gtk_frame_new(_("Image"));
+    gtk_container_set_border_width(GTK_CONTAINER(bd->image_frame), BORDER);
+    gtk_widget_set_sensitive(bd->image_frame, showimage);
+    gtk_widget_show(bd->image_frame);
+    gtk_box_pack_start(GTK_BOX(mainvbox), bd->image_frame, TRUE, TRUE, 0);
     
-    vbox = gtk_vbox_new(FALSE, BORDER);
+    vbox = gtk_vbox_new(FALSE, 2 * BORDER);
     gtk_container_set_border_width(GTK_CONTAINER(vbox), BORDER);
     gtk_widget_show(vbox);
-    gtk_container_add(GTK_CONTAINER(frame), vbox);
+    gtk_container_add(GTK_CONTAINER(bd->image_frame), vbox);
     
     /* file entry and style radio buttons */
     sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
    
    
More information about the Xfce4-dev
mailing list