Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--webactivity.py35
-rw-r--r--webtoolbar.py19
2 files changed, 47 insertions, 7 deletions
diff --git a/webactivity.py b/webactivity.py
index d7d8651..bba1032 100644
--- a/webactivity.py
+++ b/webactivity.py
@@ -31,6 +31,7 @@ import sqlite3
import cjson
import gconf
import locale
+import cairo
# HACK: Needed by http://dev.sugarlabs.org/ticket/456
import gnome
@@ -154,6 +155,7 @@ def _set_accept_languages():
logging.debug('LANG set')
from browser import TabbedView
+from browser import Browser
from webtoolbar import PrimaryToolbar
from edittoolbar import EditToolbar
from viewtoolbar import ViewToolbar
@@ -192,9 +194,24 @@ class WebActivity(activity.Activity):
branch = pref_service.getBranch("mozilla.widget.")
branch.setBoolPref("disable-native-theme", True)
- self._primary_toolbar = PrimaryToolbar(self._tabbed_view, self)
+ # HACK
+ # Currently, the multiple tabs feature crashes the Browse activity
+ # on cairo versions 1.8.10 or later. The exact cause for this
+ # isn't exactly known. Thus, disable the multiple tabs feature
+ # if we come across cairo versions >= 1.08.10
+ # More information can be found here:
+ # [1] http://lists.sugarlabs.org/archive/sugar-devel/2010-July/025187.html
+ self._disable_multiple_tabs = cairo.cairo_version() >= 10810
+ if self._disable_multiple_tabs:
+ logging.warning('Not enabling the multiple tabs feature due'
+ ' to a bug in cairo/mozilla')
+
+ self._primary_toolbar = PrimaryToolbar(self._tabbed_view, self,
+ self._disable_multiple_tabs)
self._primary_toolbar.connect('add-link', self._link_add_button_cb)
+ self._primary_toolbar.connect('add-tab', self._new_tab_cb)
+
self._tray = HTray()
self.set_tray(self._tray, gtk.POS_BOTTOM)
self._tray.show()
@@ -258,6 +275,9 @@ class WebActivity(activity.Activity):
else:
_logger.debug('Created activity')
+ def _new_tab_cb(self, gobject):
+ self._load_homepage(new_tab=True)
+
def _shared_cb(self, activity_):
_logger.debug('My activity was shared')
self.initiating = True
@@ -354,8 +374,14 @@ class WebActivity(activity.Activity):
self.messenger = Messenger(self.tube_conn, self.initiating,
self.model)
- def _load_homepage(self):
- browser = self._tabbed_view.current_browser
+ 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:
@@ -451,6 +477,9 @@ class WebActivity(activity.Activity):
elif key_name == 'r':
flags = components.interfaces.nsIWebNavigation.LOAD_FLAGS_NONE
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)
else:
return False
diff --git a/webtoolbar.py b/webtoolbar.py
index e7c20be..69a3c8e 100644
--- a/webtoolbar.py
+++ b/webtoolbar.py
@@ -35,10 +35,8 @@ from sugar.activity import activity
import filepicker
import places
-
_MAX_HISTORY_ENTRIES = 15
-
class WebEntry(AddressEntry):
_COL_ADDRESS = 0
_COL_TITLE = 1
@@ -218,17 +216,19 @@ class WebEntry(AddressEntry):
else:
self._search_popup()
-
class PrimaryToolbar(ToolbarBox):
__gtype_name__ = 'PrimaryToolbar'
__gsignals__ = {
'add-link': (gobject.SIGNAL_RUN_FIRST,
gobject.TYPE_NONE,
+ ([])),
+ 'add-tab': (gobject.SIGNAL_RUN_FIRST,
+ gobject.TYPE_NONE,
([]))
}
- def __init__(self, tabbed_view, act):
+ def __init__(self, tabbed_view, act, disable_multiple_tabs):
ToolbarBox.__init__(self)
self._activity = act
@@ -270,6 +270,14 @@ class PrimaryToolbar(ToolbarBox):
self.toolbar.insert(self._forward, -1)
self._forward.show()
+ if not disable_multiple_tabs:
+ self._add_tab = ToolButton('tab-add')
+ self._add_tab.set_tooltip(_('Add a tab'))
+ self._add_tab.props.sensitive = True
+ self._add_tab.connect('clicked', self._add_tab_cb)
+ self.toolbar.insert(self._add_tab, -1)
+ self._add_tab.show()
+
self._link_add = ToolButton('emblem-favorite')
self._link_add.set_tooltip(_('Bookmark'))
self._link_add.connect('clicked', self._link_add_clicked_cb)
@@ -388,6 +396,9 @@ class PrimaryToolbar(ToolbarBox):
browser.load_uri(entry.props.text)
browser.grab_focus()
+ def _add_tab_cb(self, button):
+ self.emit('add-tab')
+
def _go_back_cb(self, button):
browser = self._tabbed_view.props.current_browser
browser.web_navigation.goBack()