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>2007-07-21 13:38:03 (GMT)
committer Marco Pesenti Gritti <marco@localhost.localdomain>2007-07-21 13:38:03 (GMT)
commitad7c272f4309c90332e9358f16904f2d135cd18b (patch)
treec9807c0ccd7cb44dc05090a07e6c25284f29fedc
parentb3552d27216eefd1a33f95e00f9f5872f1dc4df3 (diff)
Add basic link support
-rw-r--r--NEWS2
-rw-r--r--chat.py19
2 files changed, 17 insertions, 4 deletions
diff --git a/NEWS b/NEWS
index dad2ded..92ba576 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,5 @@
+* #2356 Basic link support. (marco)
+
10
* Adapt to sugar API change (marco)
diff --git a/chat.py b/chat.py
index 1307414..4421a81 100644
--- a/chat.py
+++ b/chat.py
@@ -23,6 +23,7 @@ from datetime import datetime
from sugar import profile
from sugar.activity.activity import Activity, ActivityToolbox
+from sugar.activity import activityfactory
from sugar.graphics.canvasicon import CanvasIcon
from sugar.graphics.roundbox import RoundBox
from sugar.graphics.xocolor import XoColor
@@ -205,6 +206,10 @@ class Chat(Activity):
def rescroll(self, adj, scroll=None):
"""Scroll the chat window to the bottom"""
adj.set_value(adj.upper-adj.page_size)
+
+ def _link_activated_cb(self, link):
+ activityfactory.create_with_uri(
+ 'org.laptop.WebActivity', link.props.text)
def add_text(self, name, icon, text, status_message=False):
"""Display text on screen, with name and icon.
@@ -220,10 +225,16 @@ class Chat(Activity):
self._add_log('*', '%s %s' % (name, text))
else:
self._add_log(name, text)
- text = hippo.CanvasText(
- text=text,
- size_mode=hippo.CANVAS_SIZE_WRAP_WORD,
- xalign=hippo.ALIGNMENT_START)
+
+ if text.startswith('http://'):
+ text = hippo.CanvasLink(text=text)
+ text.connect('activated', self._link_activated_cb)
+ else:
+ text = hippo.CanvasText(
+ text=text,
+ size_mode=hippo.CANVAS_SIZE_WRAP_WORD,
+ xalign=hippo.ALIGNMENT_START)
+
name = hippo.CanvasText(text=name)
vbox = hippo.CanvasBox(padding=px(5))