f-spot r4110 - in trunk/src: . UI.Dialog Widgets



Author: sdelcroix
Date: Thu Jun 26 21:28:57 2008
New Revision: 4110
URL: http://svn.gnome.org/viewvc/f-spot?rev=4110&view=rev

Log:
use a MenuButton and a hierachical TagMenu for tag selection in the Prefrences dialog. Fixes bgo538875


Modified:
   trunk/src/UI.Dialog/PreferenceDialog.cs
   trunk/src/Widgets/MenuButton.cs
   trunk/src/f-spot.glade

Modified: trunk/src/UI.Dialog/PreferenceDialog.cs
==============================================================================
--- trunk/src/UI.Dialog/PreferenceDialog.cs	(original)
+++ trunk/src/UI.Dialog/PreferenceDialog.cs	Thu Jun 26 21:28:57 2008
@@ -13,6 +13,8 @@
 using System.Collections.Generic;
 using Gtk;
 
+using FSpot.Widgets;
+
 namespace FSpot.UI.Dialog {
 #if FALSE
 	public class ProfileList : TreeStore {
@@ -41,7 +43,7 @@
 		[Glade.Widget] private ComboBox display_combo;
 		[Glade.Widget] private ComboBox destination_combo;
 #endif
-		[Glade.Widget] private OptionMenu tag_option;
+		[Glade.Widget] private HBox tagselectionhbox;
 		[Glade.Widget] private Button set_saver_button;
 		[Glade.Widget] private FileChooserButton photosdir_chooser;
 		[Glade.Widget] private RadioButton screensaverall_radio;
@@ -55,7 +57,7 @@
 		[Glade.Widget] private Table theme_table;
 		[Glade.Widget] private Button refreshtheme_button;
 		private ComboBox themelist_combo;
-
+		private MenuButton tag_button;
 
 
 		private static PreferenceDialog prefs = null;
@@ -66,6 +68,7 @@
 
 		public PreferenceDialog () : base ("main_preferences")
 		{
+			tag_button = new MenuButton ();
 			LoadPreference (Preferences.METADATA_EMBED_IN_IMAGE);
 			LoadPreference (Preferences.SCREENSAVER_TAG);
 			LoadPreference (Preferences.GNOME_SCREENSAVER_THEME);
@@ -94,15 +97,13 @@
 			destination_combo.SetCellDataFunc (desc_cell, new CellLayoutDataFunc (ProfileList.ProfileDescriptionDataFunc));
 			destination_combo.Changed += HandleDisplayChanged;
 #endif
-			Tag t = MainWindow.Toplevel.Database.Tags.GetTagById (screensaver_tag);
 			TagMenu tagmenu = new TagMenu (null, MainWindow.Toplevel.Database.Tags);
 	
-			tagmenu.Populate (true);
-			tag_option.Menu = tagmenu;
+			tagmenu.Populate (false);
 
-			int history = tagmenu.GetPosition (t);
-			if (history >= 0)
-				tag_option.SetHistory ((uint)history);
+			tag_button.Menu = tagmenu;
+			tag_button.ShowAll ();
+			tagselectionhbox.Add (tag_button);
 
 			tagmenu.TagSelected += HandleTagMenuSelected;
 			set_saver_button.Clicked += HandleUseFSpot;
@@ -166,6 +167,7 @@
 #endif
 		private void HandleTagMenuSelected (Tag t)
 		{
+			tag_button.Label = t.Name;
 			screensaver_tag = (int) t.Id;
 			Preferences.Set (Preferences.SCREENSAVER_TAG, (int) t.Id);
 		}
@@ -178,11 +180,11 @@
 
 		private void ToggleTagRadio (object o, System.EventArgs e)
 		{
-			tag_option.Sensitive = (screensavertagged_radio.Active);
+			tag_button.Sensitive = (screensavertagged_radio.Active);
 			if (screensaverall_radio.Active)
 				Preferences.Set (Preferences.SCREENSAVER_TAG, 0);
 			else
-				HandleTagMenuSelected (((tag_option.Menu as Menu).Active as TagMenu.TagMenuItem).Value);
+				HandleTagMenuSelected (((tag_button.Menu as Menu).Active as TagMenu.TagMenuItem).Value);
 		}
 
 		void ToggleThemeRadio (object o, EventArgs e)
@@ -280,9 +282,11 @@
 				}
 				if (screensaver_tag == 0) {
 					screensaverall_radio.Active = true;
-					tag_option.Sensitive = false;
+					tag_button.Sensitive = false;
 				} else {
 					screensavertagged_radio.Active = true;
+					Tag t = MainWindow.Toplevel.Database.Tags.GetTagById (screensaver_tag);
+					tag_button.Label = t.Name;
 				}
 				break;
 			case Preferences.GNOME_SCREENSAVER_THEME:

Modified: trunk/src/Widgets/MenuButton.cs
==============================================================================
--- trunk/src/Widgets/MenuButton.cs	(original)
+++ trunk/src/Widgets/MenuButton.cs	Thu Jun 26 21:28:57 2008
@@ -39,13 +39,16 @@
 		}
 
 		public MenuButton () : this (null)
-		{}
+		{
+		}
 
 		public MenuButton (string label) : this (label, null)
-		{}
+		{
+		}
 
 		public MenuButton (string label, Menu menu) : this (label, menu, ArrowType.Down)
-		{}
+		{
+		}
 
 		public MenuButton (string label, Menu menu, ArrowType arrow_type) : base ()
 		{

Modified: trunk/src/f-spot.glade
==============================================================================
--- trunk/src/f-spot.glade	(original)
+++ trunk/src/f-spot.glade	Thu Jun 26 21:28:57 2008
@@ -6169,7 +6169,7 @@
                           </widget>
                         </child>
                         <child>
-                          <widget class="GtkHBox" id="hbox6">
+                          <widget class="GtkHBox" id="tagselectionhbox">
                             <property name="visible">True</property>
                             <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                             <child>
@@ -6189,14 +6189,7 @@
                               </packing>
                             </child>
                             <child>
-                              <widget class="GtkOptionMenu" id="tag_option">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="response_id">0</property>
-                              </widget>
-                              <packing>
-                                <property name="position">1</property>
-                              </packing>
+                              <placeholder/>
                             </child>
                           </widget>
                           <packing>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]