Note: 1. On f13 based sugar environments (such as soas3, jhbuild-0.88), this patch will occasionally cause Browse to crash when closing tabs. This probably happens because of a bug [1] (or something very similar to this). As a workaround, one can downgrade the cairo package from cairo-1.8.10 to cairo-1.8.8-1.fc11 (or upgrade to the latest development version 1.9.10-1, though I haven't tested that).
2. This patch doesn't add an entry 'open link in new tab' to the context menu. That can come as a separate patch. [1] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=551852 -- Anish Mangal an...@sugarlabs.org On Wed, Jun 30, 2010 at 2:28 AM, anishmangal2002 <anishmangal2...@gmail.com> wrote: > This patch adds support to create multiple tabbed windows > in Browse. A tab may be added by either clicking the add tab > ('+') icon in the activity toolbar or by pressing 'ctrl+t'. > > Signed-off-by: anishmangal2002 <anishmangal2...@gmail.com> > --- > icons/add-tab.svg | 86 > +++++++++++++++++++++++++++++++++++++++++++++++++++++ > webactivity.py | 11 +++++++ > webtoolbar.py | 21 +++++++++++++ > 3 files changed, 118 insertions(+), 0 deletions(-) > create mode 100644 icons/add-tab.svg > > diff --git a/icons/add-tab.svg b/icons/add-tab.svg > new file mode 100644 > index 0000000..0220993 > --- /dev/null > +++ b/icons/add-tab.svg > @@ -0,0 +1,86 @@ > +<?xml version="1.0" encoding="UTF-8" standalone="no"?> > +<!-- Created with Inkscape (http://www.inkscape.org/) --> > + > +<svg > + xmlns:dc="http://purl.org/dc/elements/1.1/" > + xmlns:cc="http://creativecommons.org/ns#" > + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" > + xmlns:svg="http://www.w3.org/2000/svg" > + xmlns="http://www.w3.org/2000/svg" > + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" > + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" > + version="1.1" > + width="55" > + height="55" > + id="svg2" > + inkscape:version="0.47 r22583" > + sodipodi:docname="add-tab.svg"> > + <metadata > + id="metadata10"> > + <rdf:RDF> > + <cc:Work > + rdf:about=""> > + <dc:format>image/svg+xml</dc:format> > + <dc:type > + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> > + </cc:Work> > + </rdf:RDF> > + </metadata> > + <sodipodi:namedview > + pagecolor="#ffffff" > + bordercolor="#666666" > + borderopacity="1" > + objecttolerance="10" > + gridtolerance="10" > + guidetolerance="10" > + inkscape:pageopacity="0" > + inkscape:pageshadow="2" > + inkscape:window-width="1280" > + inkscape:window-height="721" > + id="namedview8" > + showgrid="false" > + inkscape:zoom="4.2909091" > + inkscape:cx="27.5" > + inkscape:cy="27.033898" > + inkscape:window-x="0" > + inkscape:window-y="27" > + inkscape:window-maximized="1" > + inkscape:current-layer="layer1" /> > + <defs > + id="defs4"> > + <inkscape:perspective > + sodipodi:type="inkscape:persp3d" > + inkscape:vp_x="0 : 27.5 : 1" > + inkscape:vp_y="0 : 1000 : 0" > + inkscape:vp_z="55 : 27.5 : 1" > + inkscape:persp3d-origin="27.5 : 18.333333 : 1" > + id="perspective12" /> > + </defs> > + <g > + transform="translate(0,-997.36218)" > + id="layer1"> > + <rect > + width="55" > + height="55" > + x="0" > + y="0" > + transform="translate(0,997.36218)" > + id="rect2818" > + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none" /> > + <rect > + width="9" > + height="38" > + x="23" > + y="1005.8622" > + id="rect3599" > + style="fill:#ffffff;fill-opacity:1;stroke:none" /> > + <rect > + width="8.94349" > + height="37.99044" > + x="1020.3485" > + y="-47.595592" > + transform="matrix(-0.00107369,0.99999942,-0.99999889,-0.00148761,0,0)" > + id="rect3599-4" > + style="fill:#ffffff;fill-opacity:1;stroke:none" /> > + </g> > +</svg> > diff --git a/webactivity.py b/webactivity.py > index 4be551e..5f4f917 100644 > --- a/webactivity.py > +++ b/webactivity.py > @@ -152,6 +152,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 > @@ -443,6 +444,16 @@ class WebActivity(activity.Activity): > _logger.debug('keyboard: Zoom in') > self._tabbed_view.props.current_browser.zoom_in() > return True > + elif gtk.gdk.keyval_name(event.keyval) == "t": > + browser = Browser() > + self._tabbed_view._append_tab(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) > + > return False > > def _add_link(self): > diff --git a/webtoolbar.py b/webtoolbar.py > index 854345c..99979ca 100644 > --- a/webtoolbar.py > +++ b/webtoolbar.py > @@ -18,6 +18,9 @@ > > from gettext import gettext as _ > > +_LIBRARY_PATH = '/usr/share/library-common/index.html' > + > +import os > import gobject > import gtk > import pango > @@ -31,6 +34,7 @@ from sugar.graphics.toolbarbox import ToolbarBox > from sugar.activity.widgets import ActivityToolbarButton > from sugar.activity.widgets import StopButton > from sugar.activity import activity > +from browser import Browser > > import filepicker > import places > @@ -267,6 +271,13 @@ class PrimaryToolbar(ToolbarBox): > self.toolbar.insert(self._forward, -1) > self._forward.show() > > + self._add_tab = ToolButton('add-tab') > + 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) > @@ -385,6 +396,16 @@ class PrimaryToolbar(ToolbarBox): > browser.load_uri(entry.props.text) > browser.grab_focus() > > + def _add_tab_cb(self, button): > + browser = Browser() > + self._tabbed_view._append_tab(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 _go_back_cb(self, button): > browser = self._tabbed_view.props.current_browser > browser.web_navigation.goBack() > -- > 1.7.0.1 > > _______________________________________________ Sugar-devel mailing list Sugar-devel@lists.sugarlabs.org http://lists.sugarlabs.org/listinfo/sugar-devel