merge
This commit is contained in:
parent
2c272cc892
commit
3841ac9983
@ -1,4 +1,4 @@
|
||||
AC_INIT([Sugar],[0.4],[],[sugar])
|
||||
AC_INIT([Sugar],[0.6],[],[sugar])
|
||||
|
||||
AC_PREREQ([2.59])
|
||||
|
||||
@ -21,6 +21,7 @@ sugar/Makefile
|
||||
sugar/__installed__.py
|
||||
sugar/browser/Makefile
|
||||
sugar/chat/Makefile
|
||||
sugar/chat/sketchpad/Makefile
|
||||
sugar/p2p/Makefile
|
||||
sugar/p2p/model/Makefile
|
||||
sugar/shell/Makefile
|
||||
|
@ -16,4 +16,6 @@ activitydir = $(pkgdatadir)/activities
|
||||
activity_DATA = browser.activity
|
||||
|
||||
EXTRA_DIST = \
|
||||
$(rc_DATA) \
|
||||
$(activity_DATA) \
|
||||
$(icon_DATA)
|
||||
|
@ -322,6 +322,8 @@ class BrowserShell(dbus.service.Object):
|
||||
get_instance = staticmethod(get_instance)
|
||||
|
||||
def __init__(self):
|
||||
geckoembed.set_profile_path(sugar.env.get_user_dir())
|
||||
|
||||
session_bus = dbus.SessionBus()
|
||||
bus_name = dbus.service.BusName('com.redhat.Sugar.Browser', bus=session_bus)
|
||||
object_path = '/com/redhat/Sugar/Browser'
|
||||
|
@ -1,3 +1,5 @@
|
||||
SUBDIRS = sketchpad
|
||||
|
||||
sugardir = $(pythondir)/sugar/chat
|
||||
sugar_PYTHON = \
|
||||
__init__.py \
|
||||
@ -12,4 +14,6 @@ icon_DATA = \
|
||||
activitydir = $(pkgdatadir)/activities
|
||||
activity_DATA = chat.activity
|
||||
|
||||
EXTRA_DIST = $(icon_DATA)
|
||||
EXTRA_DIST = \
|
||||
$(icon_DATA) \
|
||||
$(activity_DATA)
|
||||
|
@ -20,6 +20,7 @@ from sugar.p2p.Stream import Stream
|
||||
from sugar.session.LogWriter import LogWriter
|
||||
from sugar.chat.sketchpad.Toolbox import Toolbox
|
||||
from sugar.chat.sketchpad.SketchPad import SketchPad
|
||||
from sugar.chat.Emoticons import Emoticons
|
||||
import sugar.env
|
||||
|
||||
import richtext
|
||||
@ -197,6 +198,8 @@ class Chat(activity.Activity):
|
||||
# FIXME self._controller.notify_activate(self)
|
||||
|
||||
def _insert_rich_message(self, nick, msg):
|
||||
msg = Emoticons.get_instance().replace(msg)
|
||||
|
||||
buf = self._chat_view.get_buffer()
|
||||
aniter = buf.get_end_iter()
|
||||
buf.insert(aniter, nick + ": ")
|
||||
|
@ -59,7 +59,7 @@ class RichTextView(gtk.TextView):
|
||||
it = self.__get_event_iter(event)
|
||||
if it and self.__iter_is_link(it):
|
||||
buf = self.get_buffer()
|
||||
address_tag = buf.get_tag_table().lookup("link-address")
|
||||
address_tag = buf.get_tag_table().lookup("object-id")
|
||||
|
||||
address_end = it.copy()
|
||||
address_end.backward_to_tag_toggle(address_tag)
|
||||
@ -81,9 +81,18 @@ class RichTextBuffer(gtk.TextBuffer):
|
||||
|
||||
def append_link(self, title, address):
|
||||
it = self.get_iter_at_mark(self.get_insert())
|
||||
self.insert_with_tags_by_name(it, address, "link", "link-address")
|
||||
self.insert_with_tags_by_name(it, address, "link", "object-id")
|
||||
self.insert_with_tags_by_name(it, title, "link")
|
||||
|
||||
|
||||
def append_icon(self, name, it = None):
|
||||
if not it:
|
||||
it = self.get_iter_at_mark(self.get_insert())
|
||||
|
||||
self.insert_with_tags_by_name(it, name, "icon", "object-id")
|
||||
icon_theme = gtk.icon_theme_get_default()
|
||||
pixbuf = icon_theme.load_icon(name, 16, 0)
|
||||
self.insert_pixbuf(it, pixbuf)
|
||||
|
||||
def apply_tag(self, tag_name):
|
||||
self.active_tags.append(tag_name)
|
||||
|
||||
@ -101,11 +110,13 @@ class RichTextBuffer(gtk.TextBuffer):
|
||||
self.remove_tag_by_name(tag_name, start, end)
|
||||
|
||||
def __create_tags(self):
|
||||
tag = self.create_tag("icon")
|
||||
|
||||
tag = self.create_tag("link")
|
||||
tag.set_property("underline", pango.UNDERLINE_SINGLE)
|
||||
tag.set_property("foreground", "#0000FF")
|
||||
|
||||
tag = self.create_tag("link-address")
|
||||
tag = self.create_tag("object-id")
|
||||
tag.set_property("invisible", True)
|
||||
|
||||
tag = self.create_tag("bold")
|
||||
@ -224,6 +235,8 @@ class RichTextHandler(xml.sax.handler.ContentHandler):
|
||||
self.tags.append(tag)
|
||||
if name == "link":
|
||||
self.href = attrs['href']
|
||||
elif name == "icon":
|
||||
self.buf.append_icon(attrs['name'], self.buf.get_end_iter())
|
||||
|
||||
def characters(self, data):
|
||||
start_it = it = self.buf.get_end_iter()
|
||||
@ -235,8 +248,8 @@ class RichTextHandler(xml.sax.handler.ContentHandler):
|
||||
self.buf.apply_tag_by_name(tag, start_it, it)
|
||||
if tag == "link":
|
||||
self.buf.insert_with_tags_by_name(start_it, self.href,
|
||||
"link", "link-address")
|
||||
|
||||
"link", "object-id")
|
||||
|
||||
def endElement(self, name):
|
||||
if not self._done and self._in_richtext:
|
||||
if name != "richtext":
|
||||
@ -258,9 +271,17 @@ class RichTextSerializer:
|
||||
return "font-size-" + attributes["size"]
|
||||
elif el_name == "link":
|
||||
return "link"
|
||||
elif el_name == "icon":
|
||||
return "icon"
|
||||
else:
|
||||
return None
|
||||
|
||||
def _parse_object_id(self, it):
|
||||
object_id_tag = self.buf.get_tag_table().lookup("object-id")
|
||||
end = it.copy()
|
||||
end.forward_to_tag_toggle(object_id_tag)
|
||||
return self.buf.get_text(it, end)
|
||||
|
||||
def serialize_tag_start(self, tag, it):
|
||||
name = tag.get_property("name")
|
||||
if name == "bold":
|
||||
@ -268,12 +289,12 @@ class RichTextSerializer:
|
||||
elif name == "italic":
|
||||
return "<italic>"
|
||||
elif name == "link":
|
||||
address_tag = self.buf.get_tag_table().lookup("link-address")
|
||||
end = it.copy()
|
||||
end.forward_to_tag_toggle(address_tag)
|
||||
address = self.buf.get_text(it, end)
|
||||
address = self._parse_object_id(it)
|
||||
return "<link " + "href=\"" + address + "\">"
|
||||
elif name == "link-address":
|
||||
elif name == "icon":
|
||||
name = self._parse_object_id(it)
|
||||
return "<icon " + "name=\"" + name + "\"/>"
|
||||
elif name == "object-id":
|
||||
return ""
|
||||
elif name.startswith("font-size-"):
|
||||
tag_name = name.replace("font-size-", "", 1)
|
||||
@ -289,7 +310,9 @@ class RichTextSerializer:
|
||||
return "</italic>"
|
||||
elif name == "link":
|
||||
return "</link>"
|
||||
elif name == "link-address":
|
||||
elif name == "icon":
|
||||
return ""
|
||||
elif name == "object-id":
|
||||
return ""
|
||||
elif name.startswith("font-size-"):
|
||||
return "</font>"
|
||||
@ -369,6 +392,7 @@ if __name__ == "__main__":
|
||||
test_xml += "<bold><italic>Test two</italic></bold>"
|
||||
test_xml += "<font size=\"xx-small\">Test three</font>"
|
||||
test_xml += "<link href=\"http://www.gnome.org\">Test link</link>"
|
||||
test_xml += "<icon name=\"stock_help-chat\"/>"
|
||||
test_xml += "</richtext>"
|
||||
|
||||
RichTextSerializer().deserialize(test_xml, rich_buf)
|
||||
|
@ -48,17 +48,22 @@ class SketchPad(gtk.DrawingArea):
|
||||
def add_sketch(self, sketch):
|
||||
self._sketches.append(sketch)
|
||||
|
||||
def add_point(self, event):
|
||||
if self._active_sketch:
|
||||
self._active_sketch.add_point(event.x, event.y)
|
||||
self.window.invalidate_rect(None, False)
|
||||
|
||||
def __button_press_cb(self, widget, event):
|
||||
self._active_sketch = Sketch(self._rgb)
|
||||
self.add_sketch(self._active_sketch)
|
||||
self.add_point(event)
|
||||
|
||||
def __button_release_cb(self, widget, event):
|
||||
self.add_point(event)
|
||||
self._active_sketch = None
|
||||
|
||||
def __motion_notify_cb(self, widget, event):
|
||||
if self._active_sketch:
|
||||
self._active_sketch.add_point(event.x, event.y)
|
||||
self.window.invalidate_rect(None, False)
|
||||
self.add_point(event)
|
||||
|
||||
def to_svg(self):
|
||||
"""Return a string containing an SVG representation of this sketch."""
|
||||
|
@ -4,6 +4,9 @@ try:
|
||||
from sugar.__uninstalled__ import *
|
||||
except ImportError:
|
||||
from sugar.__installed__ import *
|
||||
|
||||
def get_user_dir():
|
||||
return os.path.expanduser('~/.sugar/')
|
||||
|
||||
def get_data_file(filename):
|
||||
for data_dir in get_data_dirs():
|
||||
|
@ -20,7 +20,7 @@ def start(console):
|
||||
act_dir = os.path.join(data_dir, env.get_activities_dir())
|
||||
activities_dirs.append(act_dir)
|
||||
|
||||
activities_dirs.append(os.path.expanduser('~/.sugar/activities'))
|
||||
activities_dirs.append(os.path.join(env.get_user_dir(), 'activities'))
|
||||
|
||||
for activities_dir in activities_dirs:
|
||||
if os.path.isdir(activities_dir):
|
||||
|
Loading…
Reference in New Issue
Block a user