[banshee] [WebBrowser] Add option to add more shortcut links



commit 1029d3ba8fb4ccfc4585c882b7e08c517113c2de
Author: Gabriel Burt <gabriel burt gmail com>
Date:   Thu Aug 26 12:53:38 2010 -0500

    [WebBrowser] Add option to add more shortcut links
    
    If there are any added, the Home button becomes a MenuButton, with the
    arrow next to it opening a menu with all the links available.

 .../Banshee.WebBrowser/NavigationControl.cs        |   33 ++++++++++++++++++-
 .../Banshee.WebSource/WebBrowserShell.cs           |   10 +++--
 src/Hyena                                          |    2 +-
 3 files changed, 38 insertions(+), 7 deletions(-)
---
diff --git a/src/Core/Banshee.WebBrowser/Banshee.WebBrowser/NavigationControl.cs b/src/Core/Banshee.WebBrowser/Banshee.WebBrowser/NavigationControl.cs
index e8787cc..9ad7e03 100644
--- a/src/Core/Banshee.WebBrowser/Banshee.WebBrowser/NavigationControl.cs
+++ b/src/Core/Banshee.WebBrowser/Banshee.WebBrowser/NavigationControl.cs
@@ -1,8 +1,9 @@
 // 
 // NavigationControl.cs
 // 
-// Author:
+// Authors:
 //   Aaron Bockover <abockover novell com>
+//   Gabriel Burt <gburt novell com>
 // 
 // Copyright 2010 Novell, Inc.
 // 
@@ -28,6 +29,7 @@ using System;
 
 using Gtk;
 using Hyena.Gui;
+using Hyena.Widgets;
 
 namespace Banshee.WebBrowser
 {
@@ -37,6 +39,8 @@ namespace Banshee.WebBrowser
         private Button forward_button = new Button (new Image (Stock.GoForward, IconSize.Button)) { Relief = ReliefStyle.None };
         private Button reload_button = new Button (new Image (Stock.Refresh, IconSize.Button)) { Relief = ReliefStyle.None };
         private Button home_button = new Button (new Image (Stock.Home, IconSize.Button)) { Relief = ReliefStyle.None };
+        private Menu shortcut_menu = new Menu ();
+        private MenuButton shortcut_menu_button;
 
         public event EventHandler GoHomeEvent;
 
@@ -67,14 +71,39 @@ namespace Banshee.WebBrowser
                 }
             };
 
+            shortcut_menu_button = new MenuButton (home_button, shortcut_menu, true);
+
             UpdateNavigation ();
 
             PackStart (back_button, false, false, 0);
             PackStart (forward_button, false, false, 0);
             PackStart (reload_button, false, false, 5);
-            PackStart (home_button, false, false, 0);
+            PackStart (shortcut_menu_button, false, false, 0);
 
             ShowAll ();
+            ClearLinks ();
+        }
+
+        public void ClearLinks ()
+        {
+            while (shortcut_menu.Children.Length > 0) {
+                shortcut_menu.Remove (shortcut_menu.Children[0]);
+            }
+
+            shortcut_menu_button.ArrowVisible = false;
+        }
+
+        public MenuItem AddLink (string name, string url)
+        {
+            var link = new MenuItem (name) { Visible = true };
+
+            if (url != null) {
+                link.Activated += (o, a) => WebView.LoadUri (url);
+            }
+
+            shortcut_menu.Append (link);
+            shortcut_menu_button.ArrowVisible = true;
+            return link;
         }
 
         private OssiferWebView web_view;
diff --git a/src/Core/Banshee.WebBrowser/Banshee.WebSource/WebBrowserShell.cs b/src/Core/Banshee.WebBrowser/Banshee.WebSource/WebBrowserShell.cs
index 59fdddc..b7c5bed 100644
--- a/src/Core/Banshee.WebBrowser/Banshee.WebSource/WebBrowserShell.cs
+++ b/src/Core/Banshee.WebBrowser/Banshee.WebSource/WebBrowserShell.cs
@@ -49,7 +49,9 @@ namespace Banshee.WebSource
 
         public WebView View { get { return view; } }
 
-        public WebBrowserShell (string name, WebView view) : base (2, 4, false)
+        protected NavigationControl NavigationControl { get { return navigation_control; } }
+
+        public WebBrowserShell (string name, WebView view) : base (2, 3, false)
         {
             this.name = name;
             this.view = view;
@@ -82,7 +84,7 @@ namespace Banshee.WebSource
                 0, 0);
 
             title.Xalign = 0.0f;
-            title.Xpad = 20;
+            title.Xpad = 6;
             title.Ellipsize = Pango.EllipsizeMode.End;
 
             Attach (title, 1, 2, 0, 1,
@@ -103,7 +105,7 @@ namespace Banshee.WebSource
                 view.HasFocus = true;
                 search_clear_on_navigate_state = 1;
             };
-            Attach (search_entry, 3, 4, 0, 1,
+            Attach (search_entry, 2, 3, 0, 1,
                 AttachOptions.Fill,
                 AttachOptions.Shrink,
                 0, 0);
@@ -111,7 +113,7 @@ namespace Banshee.WebSource
             view_scroll.Add (view);
             view_scroll.ShadowType = ShadowType.In;
 
-            Attach (view_scroll, 0, 4, 1, 2,
+            Attach (view_scroll, 0, 3, 1, 2,
                 AttachOptions.Expand | AttachOptions.Fill,
                 AttachOptions.Expand | AttachOptions.Fill,
                 0, 0);
diff --git a/src/Hyena b/src/Hyena
index d56839c..ff259e5 160000
--- a/src/Hyena
+++ b/src/Hyena
@@ -1 +1 @@
-Subproject commit d56839c38ff03c9b043867edc4a7c239c27ada26
+Subproject commit ff259e5ad515b0edefc98c13283dee6ac2c06a50



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