[Sugar-devel] [PATCH 1/2] Browse: always show tabs

Manuel Quiñones manuq at laptop.org
Sun Sep 4 17:11:58 EDT 2011


This was discussed and decided in Design Meeting of 29 Aug, improving
the tabs usability in Browse.

If there is only one tab and it is closed, a new tab is created
showing the homepage.  In order to do that, the _show_homepage method
was moved from WebActivity class to Browser class.

Signed-off-by: Manuel Quiñones <manuq at laptop.org>
---
 browser.py     |   20 ++++++++++++++++++--
 webactivity.py |   25 ++++---------------------
 2 files changed, 22 insertions(+), 23 deletions(-)

diff --git a/browser.py b/browser.py
index 96e6fb1..c9a80c3 100644
--- a/browser.py
+++ b/browser.py
@@ -38,6 +38,7 @@ from sessionhistory import HistoryListener
 from progresslistener import ProgressListener
 
 _ZOOM_AMOUNT = 0.1
+_LIBRARY_PATH = '/usr/share/library-common/index.html'
 
 
 class SaveListener(object):
@@ -173,12 +174,27 @@ class TabbedView(gtk.Notebook):
         browser.show()
 
         self.set_current_page(-1)
-        self.props.show_tabs = self.get_n_pages() > 1
 
     def __tab_close_cb(self, label, browser):
         self.remove_page(self.page_num(browser))
         browser.destroy()
-        self.props.show_tabs = self.get_n_pages() > 1
+        if self.get_n_pages() == 0:
+            self._load_homepage(new_tab=True)
+
+    def _load_homepage(self, new_tab=False):
+        # If new_tab is True, open the homepage in a new tab.
+        if new_tab:
+            browser = Browser()
+            self._append_tab(browser)
+        else:
+            browser = self.current_browser
+
+        if os.path.isfile(_LIBRARY_PATH):
+            browser.load_uri('file://' + _LIBRARY_PATH)
+        else:
+            default_page = os.path.join(activity.get_bundle_path(),
+                                        "data/index.html")
+            browser.load_uri(default_page)
 
     def _get_current_browser(self):
         return self.get_nth_page(self.get_current_page())
diff --git a/webactivity.py b/webactivity.py
index fb1fec8..c6dcc13 100644
--- a/webactivity.py
+++ b/webactivity.py
@@ -177,8 +177,6 @@ from edittoolbar import EditToolbar
 from viewtoolbar import ViewToolbar
 import downloadmanager
 
-_LIBRARY_PATH = '/usr/share/library-common/index.html'
-
 from model import Model
 from sugar.presence.tubeconn import TubeConnection
 from messenger import Messenger
@@ -292,7 +290,7 @@ class WebActivity(activity.Activity):
         elif not self._jobject.file_path:
             # TODO: we need this hack until we extend the activity API for
             # opening URIs and default docs.
-            self._load_homepage()
+            self._tabbed_view._load_homepage()
 
         self.messenger = None
         self.connect('shared', self._shared_cb)
@@ -322,7 +320,7 @@ class WebActivity(activity.Activity):
             _logger.debug('Created activity')
 
     def _new_tab_cb(self, gobject):
-        self._load_homepage(new_tab=True)
+        self._tabbed_view._load_homepage(new_tab=True)
 
     def _shared_cb(self, activity_):
         _logger.debug('My activity was shared')
@@ -425,21 +423,6 @@ class WebActivity(activity.Activity):
             self.messenger = Messenger(self.tube_conn, self.initiating,
                                        self.model)
 
-    def _load_homepage(self, new_tab=False):
-        # If new_tab is True, open the homepage in a new tab.
-        if new_tab:
-            browser = Browser()
-            self._tabbed_view._append_tab(browser)
-        else:
-            browser = self._tabbed_view.current_browser
-
-        if os.path.isfile(_LIBRARY_PATH):
-            browser.load_uri('file://' + _LIBRARY_PATH)
-        else:
-            default_page = os.path.join(activity.get_bundle_path(),
-                                        "data/index.html")
-            browser.load_uri(default_page)
-
     def _get_data_from_file_path(self, file_path):
         fd = open(file_path, 'r')
         try:
@@ -518,7 +501,7 @@ class WebActivity(activity.Activity):
         self._add_link()
 
     def _go_home_button_cb(self, button):
-        self._load_homepage()
+        self._tabbed_view._load_homepage()
 
     def _key_press_cb(self, widget, event):
         key_name = gtk.gdk.keyval_name(event.keyval)
@@ -555,7 +538,7 @@ class WebActivity(activity.Activity):
                 browser.web_navigation.reload(flags)
             elif gtk.gdk.keyval_name(event.keyval) == "t":
                 if not self._disable_multiple_tabs:
-                    self._load_homepage(new_tab=True)
+                    self._tabbed_view._load_homepage(new_tab=True)
             else:
                 return False
 
-- 
1.7.4.4



More information about the Sugar-devel mailing list