diff options
author | Morgan Collett <morgan.collett@gmail.com> | 2007-10-19 15:47:48 (GMT) |
---|---|---|
committer | Morgan Collett <morgan.collett@gmail.com> | 2007-10-19 15:47:48 (GMT) |
commit | 43beaebf14754e201f3089da39e5092d27801e00 (patch) | |
tree | d01544d510b657e0e84ffa4d687f02e759957c35 | |
parent | d9d38565d10c91b7d82ba3dced7bb6145c76f0f7 (diff) |
#4320: Better URL support
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | chat.py | 42 |
2 files changed, 32 insertions, 12 deletions
@@ -1,3 +1,5 @@ +* #4320 Better URL support (morgs) + 25 * #3417 Resuming shows chat history (morgs) @@ -207,17 +207,6 @@ class Chat(Activity): color_fill = COLOR_WHITE.get_int() text_color = COLOR_BLACK.get_int() - if text.startswith('http://'): - message = hippo.CanvasLink(text=text) - message.connect('activated', self._link_activated_cb) - else: - message = hippo.CanvasText( - text=text, - size_mode=hippo.CANVAS_SIZE_WRAP_WORD, - color=text_color, - font_desc=FONT_NORMAL.get_pango_desc(), - xalign=hippo.ALIGNMENT_START) - rb = CanvasRoundBox(background_color=color_fill, border_color=color_stroke, padding=4) @@ -228,7 +217,36 @@ class Chat(Activity): color=text_color, font_desc=FONT_BOLD.get_pango_desc()) rb.append(name) - rb.append(message) + + urlstart = text.find('http') + while urlstart >= 0: + # there is a URL in the text + starttext = text[:urlstart] + if starttext: + message = hippo.CanvasText( + text=starttext, + size_mode=hippo.CANVAS_SIZE_WRAP_WORD, + color=text_color, + font_desc=FONT_NORMAL.get_pango_desc(), + xalign=hippo.ALIGNMENT_START) + rb.append(message) + urlend = text.find(' ', urlstart) + if urlend == -1: + urlend = len(text) + url = text[urlstart:urlend] + message = hippo.CanvasLink(text=url) + message.connect('activated', self._link_activated_cb) + rb.append(message) + text = text[urlend:] + urlstart = text.find('http') + if text: + message = hippo.CanvasText( + text=text, + size_mode=hippo.CANVAS_SIZE_WRAP_WORD, + color=text_color, + font_desc=FONT_NORMAL.get_pango_desc(), + xalign=hippo.ALIGNMENT_START) + rb.append(message) box = hippo.CanvasBox(padding=4) box.append(rb) |