[Sugar-devel] [PATCH] sdxo #310, #2769 adds ability to set a custom start/home page in Browse

Ariel Calzada ariel.calzada at gmail.com
Mon Jan 14 06:07:34 EST 2013


sdxo #310, #2769 this patch adds the ability to set a custom
 start/home page in Browse



---
 browser.py                       |   26 +++++++++++++++++++++-
 hometoolbar.py                   |   45 ++++++++++++++++++++++++++++++++++++++
 icons/browse-change-homepage.svg |   11 ++++++++++
 icons/browse-go-homepage.svg     |   11 ++++++++++
 webactivity.py                   |   13 +++++++++--
 webtoolbar.py                    |   14 +-----------
 6 files changed, 104 insertions(+), 16 deletions(-)
 create mode 100644 hometoolbar.py
 create mode 100644 icons/browse-change-homepage.svg
 create mode 100644 icons/browse-go-homepage.svg

diff --git a/browser.py b/browser.py
index 7419d2d..47be4c6 100644
--- a/browser.py
+++ b/browser.py
@@ -340,14 +340,38 @@ class TabbedView(BrowserNotebook):
     def load_homepage(self):
         browser = self.current_browser
 
-        if os.path.isfile(_LIBRARY_PATH):
+        if os.path.isfile(activity.get_bundle_path() + "/data/homepage.conf"):
+            confFile = os.path.join(activity.get_bundle_path(),"data/homepage.conf")
+            f = open(confFile,"r")
+            contents = f.read().strip()
+            f.close()
+
+            if contents != "":
+                default_page = contents
+            else:
+                default_page = os.path.join(activity.get_bundle_path(),"data/index.html")
+
+            browser.load_uri(default_page)
+        elif 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('file://' + default_page)
+
         browser.grab_focus()
 
+    def change_homepage(self):
+        """ Change data/homepage.conf with current URL
+        """
+        confFile = os.path.join(activity.get_bundle_path(),"data/homepage.conf")
+        index = self.get_current_page()
+        ui_uri = self.get_nth_page(index).browser.get_uri()
+
+        f = open ( confFile,"w")
+        f.write(ui_uri)
+        f.close()
+
     def _get_current_browser(self):
         if self.get_n_pages():
             return self.get_nth_page(self.get_current_page()).browser
diff --git a/hometoolbar.py b/hometoolbar.py
new file mode 100644
index 0000000..3d5e6a6
--- /dev/null
+++ b/hometoolbar.py
@@ -0,0 +1,45 @@
+# Copyright (C) 2007, One Laptop Per Child
+# Copyright (C) 2012, Ariel Calzada
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+from gettext import gettext as _
+from gi.repository import Gtk
+from sugar3.graphics.toolbutton import ToolButton
+
+class HomeToolbar(Gtk.Toolbar):
+    def __init__(self, activity):
+        Gtk.Toolbar.__init__(self)
+
+        self._activity = activity
+
+        self.gohome = ToolButton('browse-go-homepage')
+        self.gohome.set_tooltip(_('Go to home page'))
+        self.gohome.connect('clicked', self.__gohome_clicked_cb)
+        self.insert(self.gohome, -1)
+        self.gohome.show()
+
+        self.changehome = ToolButton('browse-change-homepage')
+        self.changehome.set_tooltip(_('Set current page as home page'))
+        self.changehome.connect('clicked', self.__changehome_clicked_cb)
+        self.insert(self.changehome, -1)
+        self.changehome.show()
+
+    def __changehome_clicked_cb(self, button):
+        self._activity._change_home_button_cb(button)
+
+    def __gohome_clicked_cb(self, button):
+        self._activity._go_home_button_cb(button)
+
diff --git a/icons/browse-change-homepage.svg b/icons/browse-change-homepage.svg
new file mode 100644
index 0000000..c79c6d9
--- /dev/null
+++ b/icons/browse-change-homepage.svg
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+  <!ENTITY fill_color "#FF0000">
+  <!ENTITY stroke_color "#010101">
+]>
+<svg xmlns="http://www.w3.org/2000/svg" width="55" height="55">
+  <g id="go-home">
+    <path d="M 27.5 15.96256 L 8.48131 32.4005 L 8.55256 48.0374 L 17 48.0052 L 17 30.9243 L 26 30.9243 L 26 48.0052 L 47.59 48.0052 L 47.4221 32.2792 Z M 31.5 30.9243 l 8 0 l 0 8 l -8 0 Z" stroke="none" fill="&fill_color;" stroke-linecap="round" stroke-width="3.5" />
+    <path d="M 5.48131 27.4005 L 27.5 8.96256 L 38.8997 18.0775 L 38.8637 9.26122 L 42.8936 9.27163 L 42.8832 21.3246 L 50.4221 27.2792" stroke="&fill_color;" fill="none" stroke-linecap="round" stroke-width="4.5" />
+  </g>
+</svg>
diff --git a/icons/browse-go-homepage.svg b/icons/browse-go-homepage.svg
new file mode 100644
index 0000000..a4fd762
--- /dev/null
+++ b/icons/browse-go-homepage.svg
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+  <!ENTITY fill_color "#00cb00">
+  <!ENTITY stroke_color "#010101">
+]>
+<svg xmlns="http://www.w3.org/2000/svg" width="55" height="55">
+  <g id="go-home">
+    <path d="M 27.5 15.96256 L 8.48131 32.4005 L 8.55256 48.0374 L 17 48.0052 L 17 30.9243 L 26 30.9243 L 26 48.0052 L 47.59 48.0052 L 47.4221 32.2792 Z M 31.5 30.9243 l 8 0 l 0 8 l -8 0 Z" stroke="none" fill="&fill_color;" stroke-linecap="round" stroke-width="3.5" />
+    <path d="M 5.48131 27.4005 L 27.5 8.96256 L 38.8997 18.0775 L 38.8637 9.26122 L 42.8936 9.27163 L 42.8832 21.3246 L 50.4221 27.2792" stroke="&fill_color;" fill="none" stroke-linecap="round" stroke-width="4.5" />
+  </g>
+</svg>
diff --git a/webactivity.py b/webactivity.py
index 3c0d337..0bbd9da 100644
--- a/webactivity.py
+++ b/webactivity.py
@@ -132,6 +132,7 @@ from browser import ZOOM_ORIGINAL
 from webtoolbar import PrimaryToolbar
 from edittoolbar import EditToolbar
 from viewtoolbar import ViewToolbar
+from hometoolbar import HomeToolbar
 import downloadmanager
 
 # TODO: make the registration clearer SL #3087
@@ -182,11 +183,10 @@ class WebActivity(activity.Activity):
         self._primary_toolbar = PrimaryToolbar(self._tabbed_view, self)
         self._edit_toolbar = EditToolbar(self)
         self._view_toolbar = ViewToolbar(self)
+        self._home_toolbar = HomeToolbar(self)
 
         self._primary_toolbar.connect('add-link', self._link_add_button_cb)
 
-        self._primary_toolbar.connect('go-home', self._go_home_button_cb)
-
         self._edit_toolbar_button = ToolbarButton(
                 page=self._edit_toolbar,
                 icon_name='toolbar-edit')
@@ -200,6 +200,12 @@ class WebActivity(activity.Activity):
         self._primary_toolbar.toolbar.insert(
                 view_toolbar_button, 2)
 
+        home_toolbar_button = ToolbarButton(
+                    page=self._home_toolbar,
+                    icon_name='go-home')
+        self._primary_toolbar.toolbar.insert(
+                    home_toolbar_button, 3)
+
         self._primary_toolbar.show_all()
         self.set_toolbar_box(self._primary_toolbar)
 
@@ -470,6 +476,9 @@ class WebActivity(activity.Activity):
     def _go_home_button_cb(self, button):
         self._tabbed_view.load_homepage()
 
+    def _change_home_button_cb(self, button):
+        self._tabbed_view.change_homepage()
+
     def _key_press_cb(self, widget, event):
         key_name = Gdk.keyval_name(event.keyval)
         browser = self._tabbed_view.props.current_browser
diff --git a/webtoolbar.py b/webtoolbar.py
index dc0b3de..35a699a 100644
--- a/webtoolbar.py
+++ b/webtoolbar.py
@@ -252,9 +252,6 @@ class PrimaryToolbar(ToolbarBase):
         'add-link': (GObject.SignalFlags.RUN_FIRST,
                      None,
                      ([])),
-        'go-home': (GObject.SignalFlags.RUN_FIRST,
-                     None,
-                     ([])),
     }
 
     def __init__(self, tabbed_view, act):
@@ -270,12 +267,6 @@ class PrimaryToolbar(ToolbarBase):
         activity_button = ActivityToolbarButton(self._activity)
         toolbar.insert(activity_button, 0)
 
-        self._go_home = ToolButton('go-home')
-        self._go_home.set_tooltip(_('Home page'))
-        self._go_home.connect('clicked', self._go_home_cb)
-        toolbar.insert(self._go_home, -1)
-        self._go_home.show()
-
         self.entry = WebEntry()
         self.entry.set_icon_from_name(iconentry.ICON_ENTRY_SECONDARY,
                                       'browse-dialog-cancel')
@@ -451,7 +442,7 @@ class PrimaryToolbar(ToolbarBase):
 
         is_webkit_browser = isinstance(self._browser, Browser)
         self._link_add.props.sensitive = is_webkit_browser
-        self._go_home.props.sensitive = is_webkit_browser
+        #self._go_home.props.sensitive = is_webkit_browser
         if is_webkit_browser:
             self._reload_session_history()
 
@@ -463,9 +454,6 @@ class PrimaryToolbar(ToolbarBase):
         self.entry.props.address = effective_url
         self._browser.grab_focus()
 
-    def _go_home_cb(self, button):
-        self.emit('go-home')
-
     def _go_back_cb(self, button):
         self._browser.go_back()
 
-- 
1.7.10.4



More information about the Sugar-devel mailing list