Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@localhost.localdomain>2006-10-13 16:05:48 (GMT)
committer Marco Pesenti Gritti <marco@localhost.localdomain>2006-10-13 16:05:48 (GMT)
commit63e12fbd5ea5aef17a5b7aa26cb3c772cb0cb3db (patch)
tree05fcdf3e7607c34804a8fcee55dec12bc3027985
parent75b158c3d76eca9b13c4c1cced7a4cfd009927e9 (diff)
More work on links
-rw-r--r--activities/web/linkscontroller.py1
-rw-r--r--activities/web/linksmodel.py4
-rw-r--r--activities/web/linksview.py9
-rw-r--r--activities/web/stylesheet.py8
-rw-r--r--activities/web/toolbar.py2
-rw-r--r--activities/web/webactivity.py16
-rw-r--r--sugar/graphics/bubble.py40
7 files changed, 57 insertions, 23 deletions
diff --git a/activities/web/linkscontroller.py b/activities/web/linkscontroller.py
index e9d4cab..51d9c42 100644
--- a/activities/web/linkscontroller.py
+++ b/activities/web/linkscontroller.py
@@ -1,3 +1,4 @@
+from sugar.p2p.Stream import Stream
from sugar.presence import PresenceService
class LinksController(object):
diff --git a/activities/web/linksmodel.py b/activities/web/linksmodel.py
index db9e411..308bb93 100644
--- a/activities/web/linksmodel.py
+++ b/activities/web/linksmodel.py
@@ -18,13 +18,13 @@ class LinksModel(gobject.GObject):
gobject.GObject.__init__(self)
self._links = {}
- def add_link(buddy, title, url):
+ def add_link(self, buddy, title, url):
link = Link(buddy, title, url)
self._links[(buddy.get_name(), url)] = link
self.emit('link-added', link)
- def remove_link(buddy, url):
+ def remove_link(self, buddy, url):
key = (buddy.get_name(), url)
if self._links.haskey(key):
link = self._links[key]
diff --git a/activities/web/linksview.py b/activities/web/linksview.py
index fde1156..3c8e3df 100644
--- a/activities/web/linksview.py
+++ b/activities/web/linksview.py
@@ -1,6 +1,9 @@
+import gtk
import hippo
from sugar.graphics.bubble import Bubble
+from sugar.graphics.iconcolor import IconColor
+from sugar.graphics import style
class LinksView(hippo.Canvas):
def __init__(self, model):
@@ -18,8 +21,10 @@ class LinksView(hippo.Canvas):
model.connect('link_removed', self._link_removed_cb)
def _add_link(self, link):
- bubble = Bubble(color=link.buddy.get_color())
- self._box.append(link)
+ color = IconColor(link.buddy.get_color())
+ bubble = Bubble(color=color)
+ style.apply_stylesheet(bubble, 'bubble.Box')
+ self._box.append(bubble)
self._bubbles[link] = bubble
diff --git a/activities/web/stylesheet.py b/activities/web/stylesheet.py
new file mode 100644
index 0000000..bd0a6a6
--- /dev/null
+++ b/activities/web/stylesheet.py
@@ -0,0 +1,8 @@
+import gtk
+
+_screen_factor = gtk.gdk.screen_width() / 1200.0
+
+bubble_Box = {
+ 'box-width' : int(150.0 * _screen_factor),
+ 'box-height' : int(50.0 * _screen_factor)
+}
diff --git a/activities/web/toolbar.py b/activities/web/toolbar.py
index a191143..670fd1f 100644
--- a/activities/web/toolbar.py
+++ b/activities/web/toolbar.py
@@ -67,7 +67,7 @@ class Toolbar(gtk.Toolbar):
def set_links_controller(self, links_controller):
self._links_controller = links_controller
- self._post.props.sensitive = False
+ self._post.props.sensitive = True
def _progress_changed_cb(self, embed, spec):
self._entry.props.progress = embed.props.progress
diff --git a/activities/web/webactivity.py b/activities/web/webactivity.py
index 518d8bb..8ef4189 100644
--- a/activities/web/webactivity.py
+++ b/activities/web/webactivity.py
@@ -4,6 +4,8 @@ import gtkmozembed
from sugar.activity.Activity import Activity
from sugar import env
+from sugar.graphics import style
+import web.stylesheet
from webbrowser import WebBrowser
from toolbar import Toolbar
from linksmodel import LinksModel
@@ -23,8 +25,8 @@ class WebActivity(Activity):
self._browser = WebBrowser()
self._browser.connect('notify::title', self._title_changed_cb)
- links_model = LinksModel()
- links_view = LinksView(links_model)
+ self._links_model = LinksModel()
+ links_view = LinksView(self._links_model)
self._toolbar = Toolbar(self._browser)
vbox.pack_start(self._toolbar, False)
@@ -46,11 +48,14 @@ class WebActivity(Activity):
self._browser.load_url(_HOMEPAGE)
+ def _setup_links_controller(self):
+ links_controller = LinksController(self._service, self._links_model)
+ self._toolbar.set_links_controller(links_controller)
+
def join(self, activity_ps):
Activity.join(self, activity_ps)
- links_controller = LinksController(service, links_model)
- self._toolbar.set_links_controller(links_controller)
+ self._setup_links_controller()
url = self._service.get_published_value('URL')
if url:
@@ -59,6 +64,8 @@ class WebActivity(Activity):
def share(self):
Activity.share(self)
+ self._setup_links_controller()
+
url = self._browser.get_location()
if url:
self._service.set_published_value('URL', url)
@@ -68,3 +75,4 @@ class WebActivity(Activity):
def start():
gtkmozembed.set_profile_path(env.get_profile_path(), 'gecko')
+ style.load_stylesheet(web.stylesheet)
diff --git a/sugar/graphics/bubble.py b/sugar/graphics/bubble.py
index dc7c635..8f2fa32 100644
--- a/sugar/graphics/bubble.py
+++ b/sugar/graphics/bubble.py
@@ -1,4 +1,7 @@
+import math
+
import gobject
+import gtk
import hippo
class Bubble(hippo.CanvasBox, hippo.CanvasItem):
@@ -11,7 +14,7 @@ class Bubble(hippo.CanvasBox, hippo.CanvasItem):
def __init__(self, **kwargs):
self._color = None
- self._radius = 12
+ self._radius = 8
hippo.CanvasBox.__init__(self, **kwargs)
@@ -24,25 +27,34 @@ class Bubble(hippo.CanvasBox, hippo.CanvasItem):
if pspec.name == 'color':
return self._color
- def _color_string_to_rgb(self, color_string):
+ def _string_to_rgb(self, color_string):
col = gtk.gdk.color_parse(color_string)
- return (col.red / 65535, col.green / 65535, col.blue / 65535)
+ return (col.red / 65535.0, col.green / 65535.0, col.blue / 65535.0)
def do_paint_below_children(self, cr, damaged_box):
- cairo_move_to(self._radius, 0);
- cr.arc(width - self._radius, self._radius,
+ [width, height] = self.get_allocation()
+
+ line_width = 3.0
+ x = line_width
+ y = line_width
+ width -= line_width * 2
+ height -= line_width * 2
+
+ cr.move_to(x + self._radius, y);
+ cr.arc(x + width - self._radius, y + self._radius,
self._radius, math.pi * 1.5, math.pi * 2);
- cr.arc(width - self._radius, height - self._radius,
+ cr.arc(x + width - self._radius, x + height - self._radius,
self._radius, 0, math.pi * 0.5);
- cr.arc(self._radius, height - self._radius,
+ cr.arc(x + self._radius, y + height - self._radius,
self._radius, math.pi * 0.5, math.pi);
- cr.arc(cr, self._radius, self._radius, self._radius,
+ cr.arc(x + self._radius, y + self._radius, self._radius,
math.pi, math.pi * 1.5);
- color = self._color.get_fill_color()
- cr.set_source_rgb(cr, self._color_string_to_rgb(color));
- cairo_fill_preserve(cr);
+ color = self._string_to_rgb(self._color.get_fill_color())
+ cr.set_source_rgb(*color)
+ cr.fill_preserve();
- color = self._color.get_stroke_color()
- cr.set_source_rgb(cr, self._color_string_to_rgb(color));
- cairo_stroke(cr);
+ color = self._string_to_rgb(self._color.get_stroke_color())
+ cr.set_source_rgb(*color)
+ cr.set_line_width(line_width)
+ cr.stroke();