diff options
author | Aleksey Lim <alsroot@member.fsf.org> | 2009-12-25 15:34:56 (GMT) |
---|---|---|
committer | Aleksey Lim <alsroot@member.fsf.org> | 2009-12-25 15:34:56 (GMT) |
commit | 6e82c5964e31f3cc937911069709af9830071338 (patch) | |
tree | 13e2b5e82fcd64eb0ea54aafb31df9421343f3cd /Speak.activity/chat.py | |
parent | da69d3983184b35350ff6634ca9e00faaa631d1a (diff) |
Use only one directory level for sources
Diffstat (limited to 'Speak.activity/chat.py')
-rw-r--r-- | Speak.activity/chat.py | 256 |
1 files changed, 0 insertions, 256 deletions
diff --git a/Speak.activity/chat.py b/Speak.activity/chat.py deleted file mode 100644 index 251628e..0000000 --- a/Speak.activity/chat.py +++ /dev/null @@ -1,256 +0,0 @@ -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -import gtk -import pango -import hippo -import logging -from gettext import gettext as _ - -import sugar.graphics.style as style -from sugar.graphics.roundbox import CanvasRoundBox -from sugar.graphics.toggletoolbutton import ToggleToolButton - -import eye -import glasses -import mouth -import face -import messenger -from chatbox import ChatBox - -logger = logging.getLogger('speak') - -BUDDY_SIZE = min(100, min(gtk.gdk.screen_width(), - gtk.gdk.screen_height() - style.LARGE_ICON_SIZE) / 5) -BUDDY_XPAD = 0 -BUDDY_YPAD = 5 - -BUDDIES_WIDTH = int(BUDDY_SIZE * 2.5) -BUDDIES_COLOR = style.COLOR_SELECTION_GREY - -ENTRY_COLOR = style.COLOR_PANEL_GREY -ENTRY_XPAD = 0 -ENTRY_YPAD = 7 - - -class View(hippo.Canvas): - def __init__(self): - hippo.Canvas.__init__(self) - - self.messenger = None - self.me = None - self.quiet = False - - self._buddies = {} - - # buddies box - - self._buddies_list = hippo.CanvasBox( - background_color = BUDDIES_COLOR.get_int(), - box_width = BUDDIES_WIDTH, - padding = ENTRY_YPAD, - spacing = ENTRY_YPAD - ) - - self._buddies_box = hippo.CanvasScrollbars() - self._buddies_box.set_policy(hippo.ORIENTATION_HORIZONTAL, - hippo.SCROLLBAR_NEVER) - self._buddies_box.set_root(self._buddies_list) - - # chat entry - - self._chat = ChatBox() - self.me, my_face_widget = self._new_face(self._chat.owner, - ENTRY_COLOR) - - chat_post = gtk.TextView() - chat_post.modify_bg(gtk.STATE_INSENSITIVE, - style.COLOR_WHITE.get_gdk_color()) - chat_post.modify_base(gtk.STATE_INSENSITIVE, - style.COLOR_WHITE.get_gdk_color()) - chat_post.connect('key-press-event', self._key_press_cb) - chat_post.props.wrap_mode = gtk.WRAP_WORD_CHAR - chat_post.set_size_request(-1, BUDDY_SIZE - ENTRY_YPAD*2) - - chat_post_box = CanvasRoundBox( - background_color = style.COLOR_WHITE.get_int(), - padding_left = ENTRY_XPAD, - padding_right = ENTRY_XPAD, - padding_top = ENTRY_YPAD, - padding_bottom = ENTRY_YPAD - ) - chat_post_box.props.border_color = ENTRY_COLOR.get_int() - chat_post_box.append(hippo.CanvasWidget(widget=chat_post), - hippo.PACK_EXPAND) - - chat_entry = CanvasRoundBox( - background_color = ENTRY_COLOR.get_int(), - padding_left = ENTRY_XPAD, - padding_right = ENTRY_XPAD, - padding_top = ENTRY_YPAD, - padding_bottom = ENTRY_YPAD, - spacing = ENTRY_YPAD - ) - chat_entry.props.orientation = hippo.ORIENTATION_HORIZONTAL - chat_entry.props.border_color = style.COLOR_WHITE.get_int() - chat_entry.append(my_face_widget) - chat_entry.append(chat_post_box, hippo.PACK_EXPAND) - - chat_box = hippo.CanvasBox( - orientation = hippo.ORIENTATION_VERTICAL, - background_color = style.COLOR_WHITE.get_int(), - ) - chat_box.append(self._chat, hippo.PACK_EXPAND) - chat_box.append(chat_entry) - - # desk - - self._desk = hippo.CanvasBox() - self._desk.props.orientation=hippo.ORIENTATION_HORIZONTAL - self._desk.append(chat_box, hippo.PACK_EXPAND) - - self.set_root(self._desk) - - def update(self, status): - self.me.update(status) - if self.messenger: - self.messenger.post(None) - - def post(self, buddy, status, text): - i = self._buddies.get(buddy) - if not i: - self._add_buddy(buddy) - i = self._buddies[buddy] - - face = i['face'] - lang_box = i['lang'] - - if status: - face.update(status) - if lang_box: - lang_box.props.text = status.voice.friendlyname - if text: - self._chat.add_text(buddy, text) - if not self.quiet: - # and self.props.window \ - # and self.props.window.is_visible(): - face.say(text) - - def farewell(self, buddy): - i = self._buddies.get(buddy) - if not i: - logger.debug('farewell: cannot find buddy %s' % buddy.props.nick) - return - - self._buddies_list.remove(i['box']) - del self._buddies[buddy] - - if len(self._buddies) == 0: - self._desk.remove(self._buddies_box) - - def shut_up(self): - for i in self._buddies.values(): - i['face'].shut_up(); - self.me.shut_up(); - - def _add_buddy(self, buddy): - box = hippo.CanvasBox( - orientation = hippo.ORIENTATION_HORIZONTAL, - background_color = BUDDIES_COLOR.get_int(), - spacing = ENTRY_YPAD - ) - - buddy_face, buddy_widget = self._new_face(buddy, BUDDIES_COLOR) - - char_box = hippo.CanvasBox( - orientation = hippo.ORIENTATION_VERTICAL, - ) - nick = hippo.CanvasText( - text = buddy.props.nick, - xalign = hippo.ALIGNMENT_START, - yalign = hippo.ALIGNMENT_START - ) - lang = hippo.CanvasText( - text = '', - xalign = hippo.ALIGNMENT_START, - yalign = hippo.ALIGNMENT_START - ) - char_box.append(nick) - char_box.append(lang) - - box.append(buddy_widget) - box.append(char_box, hippo.PACK_EXPAND) - - self._buddies[buddy] = { - 'box' : box, - 'face' : buddy_face, - 'lang' : lang - } - self._buddies_list.append(box) - - if len(self._buddies) == 1: - self._desk.append(self._buddies_box) - - def _key_press_cb(self, widget, event): - if event.keyval == gtk.keysyms.Return: - if not (event.state & gtk.gdk.CONTROL_MASK): - text = widget.get_buffer().props.text - - if text: - self._chat.add_text(None, text) - widget.get_buffer().props.text = '' - if not self.quiet: - self.me.say(text) - if self.messenger: - self.messenger.post(text) - - return True - return False - - def _new_face(self, buddy, color): - stroke_color, fill_color = buddy.props.color.split(',') - stroke_color = style.Color(stroke_color) - fill_color = style.Color(fill_color) - - buddy_face = face.View(fill_color) - buddy_face.show_all() - - inner = CanvasRoundBox( - background_color = fill_color.get_int(), - padding_top = BUDDY_YPAD, - padding_bottom = BUDDY_YPAD, - padding_left = BUDDY_XPAD, - padding_right = BUDDY_XPAD, - ) - inner.props.border_color = fill_color.get_int() - inner.append(hippo.CanvasWidget(widget=buddy_face), hippo.PACK_EXPAND) - - outer = CanvasRoundBox( - background_color = stroke_color.get_int(), - box_width = BUDDY_SIZE, - box_height = BUDDY_SIZE, - padding_top = BUDDY_YPAD, - padding_bottom = BUDDY_YPAD, - padding_left = BUDDY_XPAD, - padding_right = BUDDY_XPAD - ) - outer.props.border_color = stroke_color.get_int() - outer.append(inner, hippo.PACK_EXPAND) - - return (buddy_face, outer) - - def look_at(self): - self.me.look_at() - for i in self._buddies.values(): - i['face'].look_at() |