Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--browser.py27
-rw-r--r--webactivity.py29
-rw-r--r--webtoolbar.py51
3 files changed, 102 insertions, 5 deletions
diff --git a/browser.py b/browser.py
index dd23999..b03b0e3 100644
--- a/browser.py
+++ b/browser.py
@@ -27,6 +27,7 @@ from gi.repository import Gdk
from gi.repository import Pango
from gi.repository import WebKit
from gi.repository import Soup
+from gi.repository import GConf
from sugar3 import env
from sugar3.activity import activity
@@ -42,7 +43,7 @@ from pdfviewer import PDFTabPage
ZOOM_ORIGINAL = 1.0
_ZOOM_AMOUNT = 0.1
-_LIBRARY_PATH = '/usr/share/library-common/index.html'
+LIBRARY_PATH = '/usr/share/library-common/index.html'
_WEB_SCHEMES = ['http', 'https', 'ftp', 'file', 'javascript', 'data',
'about', 'gopher', 'mailto']
@@ -62,6 +63,8 @@ _NON_SEARCH_REGEX = re.compile('''
DEFAULT_ERROR_PAGE = os.path.join(activity.get_bundle_path(),
'data/error_page.tmpl')
+HOME_PAGE_GCONF_KEY = '/desktop/sugar/browser/home_page'
+
class CommandListener(object):
def __init__(self, window):
@@ -342,17 +345,31 @@ class TabbedView(BrowserNotebook):
else:
first_label.show_close_button()
- def load_homepage(self):
+ def load_homepage(self, ignore_gconf=False):
browser = self.current_browser
-
- if os.path.isfile(_LIBRARY_PATH):
- browser.load_uri('file://' + _LIBRARY_PATH)
+ uri_homepage = None
+ if not ignore_gconf:
+ client = GConf.Client.get_default()
+ uri_homepage = client.get_string(HOME_PAGE_GCONF_KEY)
+ if uri_homepage is not None:
+ browser.load_uri(uri_homepage)
+ 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 set_homepage(self):
+ uri = self.current_browser.get_uri()
+ client = GConf.Client.get_default()
+ client.set_string(HOME_PAGE_GCONF_KEY, uri)
+
+ def reset_homepage(self):
+ client = GConf.Client.get_default()
+ client.unset(HOME_PAGE_GCONF_KEY)
+
def _get_current_browser(self):
if self.get_n_pages():
return self.get_nth_page(self.get_current_page()).browser
diff --git a/webactivity.py b/webactivity.py
index ecf84b6..c74f54a 100644
--- a/webactivity.py
+++ b/webactivity.py
@@ -50,6 +50,7 @@ from sugar3.presence import presenceservice
from sugar3.graphics.tray import HTray
from sugar3 import profile
from sugar3.graphics.alert import Alert
+from sugar3.graphics.alert import NotifyAlert
from sugar3.graphics.icon import Icon
from sugar3 import mime
@@ -187,6 +188,12 @@ class WebActivity(activity.Activity):
self._primary_toolbar.connect('go-home', self._go_home_button_cb)
+ self._primary_toolbar.connect('go-library', self._go_library_button_cb)
+
+ self._primary_toolbar.connect('set-home', self._set_home_button_cb)
+
+ self._primary_toolbar.connect('reset-home', self._reset_home_button_cb)
+
self._edit_toolbar_button = ToolbarButton(
page=self._edit_toolbar,
icon_name='toolbar-edit')
@@ -475,6 +482,28 @@ class WebActivity(activity.Activity):
def _go_home_button_cb(self, button):
self._tabbed_view.load_homepage()
+ def _go_library_button_cb(self, button):
+ self._tabbed_view.load_homepage(ignore_gconf=True)
+
+ def _set_home_button_cb(self, button):
+ self._tabbed_view.set_homepage()
+ self._alert(_('The initial page was configured'))
+
+ def _reset_home_button_cb(self, button):
+ self._tabbed_view.reset_homepage()
+ self._alert(_('The default initial page was configured'))
+
+ def _alert(self, title, text=None):
+ alert = NotifyAlert(timeout=5)
+ alert.props.title = title
+ alert.props.msg = text
+ self.add_alert(alert)
+ alert.connect('response', self._alert_cancel_cb)
+ alert.show()
+
+ def _alert_cancel_cb(self, alert, response_id):
+ self.remove_alert(alert)
+
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 f3c5541..2d013a5 100644
--- a/webtoolbar.py
+++ b/webtoolbar.py
@@ -16,11 +16,13 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+import os
from gettext import gettext as _
from gi.repository import GObject
from gi.repository import Gtk
from gi.repository import Gdk
+from gi.repository import GConf
from gi.repository import Pango
from gi.repository import WebKit
@@ -28,6 +30,7 @@ from sugar3.graphics.toolbutton import ToolButton
from sugar3.graphics import iconentry
from sugar3.graphics.toolbarbox import ToolbarBox as ToolbarBase
from sugar3.graphics.palettemenu import PaletteMenuItem
+from sugar3.graphics.palettemenu import PaletteMenuBox
from sugar3.graphics import style
from sugar3.activity.widgets import ActivityToolbarButton
from sugar3.activity.widgets import StopButton
@@ -35,6 +38,8 @@ from sugar3.activity.widgets import StopButton
import filepicker
import places
from browser import Browser
+from browser import HOME_PAGE_GCONF_KEY, LIBRARY_PATH
+
from pdfviewer import DummyBrowser
_MAX_HISTORY_ENTRIES = 15
@@ -255,6 +260,15 @@ class PrimaryToolbar(ToolbarBase):
'go-home': (GObject.SignalFlags.RUN_FIRST,
None,
([])),
+ 'set-home': (GObject.SignalFlags.RUN_FIRST,
+ None,
+ ([])),
+ 'reset-home': (GObject.SignalFlags.RUN_FIRST,
+ None,
+ ([])),
+ 'go-library': (GObject.SignalFlags.RUN_FIRST,
+ None,
+ ([])),
}
def __init__(self, tabbed_view, act):
@@ -273,6 +287,32 @@ class PrimaryToolbar(ToolbarBase):
self._go_home = ToolButton('go-home')
self._go_home.set_tooltip(_('Home page'))
self._go_home.connect('clicked', self._go_home_cb)
+ # add a menu to save the home page
+ menu_box = PaletteMenuBox()
+ self._go_home.props.palette.set_content(menu_box)
+ menu_item = PaletteMenuItem()
+ menu_item.set_label(_('Select as initial page'))
+ menu_item.connect('activate', self._set_home_cb)
+ menu_box.append_item(menu_item)
+
+ self._reset_home_menu = PaletteMenuItem()
+ self._reset_home_menu.set_label(_('Reset initial page'))
+ self._reset_home_menu.connect('activate', self._reset_home_cb)
+ menu_box.append_item(self._reset_home_menu)
+
+ if os.path.isfile(LIBRARY_PATH):
+ library_menu = PaletteMenuItem()
+ library_menu.set_label(_('Library'))
+ library_menu.connect('activate', self._go_library_cb)
+ menu_box.append_item(library_menu)
+
+ menu_box.show_all()
+
+ # verify if the home page is configured
+ client = GConf.Client.get_default()
+ self._reset_home_menu.set_visible(
+ client.get_string(HOME_PAGE_GCONF_KEY) is not None)
+
toolbar.insert(self._go_home, -1)
self._go_home.show()
@@ -487,6 +527,17 @@ class PrimaryToolbar(ToolbarBase):
def _go_home_cb(self, button):
self.emit('go-home')
+ def _go_library_cb(self, button):
+ self.emit('go-library')
+
+ def _set_home_cb(self, button):
+ self._reset_home_menu.set_visible(True)
+ self.emit('set-home')
+
+ def _reset_home_cb(self, button):
+ self._reset_home_menu.set_visible(False)
+ self.emit('reset-home')
+
def _go_back_cb(self, button):
self._browser.go_back()