seed r767 - trunk/examples/browser



Author: hortont
Date: Mon Jan 19 09:24:59 2009
New Revision: 767
URL: http://svn.gnome.org/viewvc/seed?rev=767&view=rev

Log:
Statusbar, new setting, progressbar, reorderable tab view, etc. for browserrewrite.


Added:
   trunk/examples/browser/BrowserStatusbar.js
Modified:
   trunk/examples/browser/BrowserSettings.js
   trunk/examples/browser/BrowserTab.js
   trunk/examples/browser/BrowserView.js
   trunk/examples/browser/TabbedBrowser.js
   trunk/examples/browser/main.js

Modified: trunk/examples/browser/BrowserSettings.js
==============================================================================
--- trunk/examples/browser/BrowserSettings.js	(original)
+++ trunk/examples/browser/BrowserSettings.js	Mon Jan 19 09:24:59 2009
@@ -1 +1,2 @@
 var home_page = "http://www.google.com";;
+var select_new_tabs = false;

Added: trunk/examples/browser/BrowserStatusbar.js
==============================================================================
--- (empty file)
+++ trunk/examples/browser/BrowserStatusbar.js	Mon Jan 19 09:24:59 2009
@@ -0,0 +1,28 @@
+BrowserStatusbar = new GType({
+    parent: Gtk.Statusbar.type,
+    name: "BrowserStatusbar",
+    init: function (klass)
+    {
+        // Private
+        var progress = new Gtk.ProgressBar();
+        var transient_status_group = this.get_context_id("transient");
+        
+        // Public
+        this.get_progress = function ()
+        {
+            return progress;
+        };
+        
+        this.set_status = function (status)
+        {
+            this.pop(transient_status_group);
+            this.push(transient_status_group, status);
+        };
+        
+        // Implementation
+        
+        // TODO: Determine how to either make smaller progressbar
+        //        or, use Gtk SVN's ability to embed it in a text view!
+        this.pack_end(progress, false, false, 0);
+    }
+});

Modified: trunk/examples/browser/BrowserTab.js
==============================================================================
--- trunk/examples/browser/BrowserTab.js	(original)
+++ trunk/examples/browser/BrowserTab.js	Mon Jan 19 09:24:59 2009
@@ -19,6 +19,7 @@
         var toolbar = new BrowserToolbar();
         var web_view = new BrowserView();
         var scroll_view = new Gtk.ScrolledWindow();
+        var statusbar = new BrowserStatusbar();
         var tab_label;
         
         // Public
@@ -30,7 +31,9 @@
         this.set_web_view = function (new_web_view)
         {
             scroll_view.remove(web_view);
+            
             web_view = new_web_view;
+            
             scroll_view.add(web_view);
             web_view.set_tab(this);
             web_view.show();
@@ -51,6 +54,11 @@
             return tab_label;
         };
         
+        this.get_statusbar = function ()
+        {
+            return statusbar;
+        };
+        
         // Implementation
         web_view.set_tab(this);
         
@@ -61,6 +69,7 @@
 
         this.pack_start(toolbar);
         this.pack_start(scroll_view, true, true);
+        this.pack_start(statusbar);
         this.show_all();
     }
 });

Modified: trunk/examples/browser/BrowserView.js
==============================================================================
--- trunk/examples/browser/BrowserView.js	(original)
+++ trunk/examples/browser/BrowserView.js	Mon Jan 19 09:24:59 2009
@@ -23,12 +23,17 @@
             toolbar.set_can_go_forward(web_view.can_go_forward());
         };
         
+        var update_progress = function (bar, progress)
+        {
+            tab.get_statusbar().get_progress().fraction = progress / 100;
+        };
+        
         var create_new_tab = function (web_view, web_frame, new_web_view)
         {
             new_web_view = new BrowserView();
             new_web_view.signal.web_view_ready.connect(show_new_tab);
             return new_web_view;
-        }
+        };
         
         var show_new_tab = function (new_web_view)
         {
@@ -37,6 +42,25 @@
             return false;
         };
         
+        var hover_link = function (web_view, link, url)
+        {
+            tab.get_statusbar().set_status(url);
+        };
+        
+        var load_finished = function ()
+        {
+            tab.get_statusbar().get_progress().hide();
+        };
+        
+        var load_committed = function (web_view, web_frame)
+        {
+            update_url(web_view, web_frame);
+            
+            // Show statusbar in committed; otherwise, open-in-new-tab views
+            // haven't yet acquired a tab on which to show a progressbar.
+            tab.get_statusbar().get_progress().show();
+        };
+        
         // Public
         this.browse = function (url)
         {
@@ -58,8 +82,14 @@
         
         // Implementation
         this.set_scroll_adjustments(null, null);
+        
         this.signal.title_changed.connect(update_title);
-        this.signal.load_committed.connect(update_url);
+        this.signal.load_committed.connect(load_committed);
+        this.signal.load_finished.connect(load_finished);
+        this.signal.load_progress_changed.connect(update_progress);
+        
+        this.signal.hovering_over_link.connect(hover_link);
+        
         this.signal.create_web_view.connect(create_new_tab);
     }
 });

Modified: trunk/examples/browser/TabbedBrowser.js
==============================================================================
--- trunk/examples/browser/TabbedBrowser.js	(original)
+++ trunk/examples/browser/TabbedBrowser.js	Mon Jan 19 09:24:59 2009
@@ -17,17 +17,11 @@
         
         this.new_tab = function (url, new_web_view)
         {
-            var new_tab;
+            var new_tab = new BrowserTab();
             
             if(new_web_view != null)
-            {
-                new_tab = new BrowserTab();
                 new_tab.set_web_view(new_web_view);
-            }
             else
-                new_tab = new BrowserTab();
-            
-            if(!new_web_view)
                 new_tab.get_web_view().browse(url);
             
             var tab_label = new Gtk.Label({label:"Untitled"});
@@ -44,6 +38,10 @@
             new_tab.set_tab_label(tab_label);
             
             this.append_page(new_tab, tab_title);
+            this.set_tab_reorderable(new_tab, true);
+            
+            if(select_new_tabs)
+                this.page = this.page_num(new_tab);
         };
 
         this.current_tab = function ()

Modified: trunk/examples/browser/main.js
==============================================================================
--- trunk/examples/browser/main.js	(original)
+++ trunk/examples/browser/main.js	Mon Jan 19 09:24:59 2009
@@ -7,6 +7,7 @@
 
 Seed.include("BrowserSettings.js");
 Seed.include("BrowserView.js");
+Seed.include("BrowserStatusbar.js");
 Seed.include("BrowserTab.js");
 Seed.include("TabbedBrowser.js");
 Seed.include("BrowserToolbar.js");



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