Merge presence window and chat in one window

master
Marco Pesenti Gritti 18 years ago
parent 326f372f54
commit cc66d7d4df

@ -8,7 +8,8 @@ sugar_PYTHON = \
Emulator.py \
Owner.py \
HomeWindow.py \
PresenceWindow.py \
PeopleWindow.py \
PresenceView.py \
Process.py \
Session.py \
Shell.py

@ -0,0 +1,28 @@
import gtk
from sugar.chat.ActivityChat import ActivityChat
from PresenceView import PresenceView
class PeopleWindow(gtk.Window):
def __init__(self, shell, activity):
gtk.Window.__init__(self)
self.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG)
self.set_skip_taskbar_hint(True)
self.set_decorated(False)
self.set_default_size(620, 460)
hbox = gtk.HBox(False, 12)
hbox.set_border_width(12)
presence_view = PresenceView(shell)
presence_view.set_activity(activity)
hbox.pack_start(presence_view, False)
presence_view.show()
chat = ActivityChat(activity)
hbox.pack_start(chat)
chat.show()
self.add(hbox)
hbox.show()

@ -10,14 +10,14 @@ from sugar.chat.BuddyChat import BuddyChat
from gettext import gettext as _
class PresenceWindow(gtk.Window):
class PresenceView(gtk.VBox):
_MODEL_COL_NICK = 0
_MODEL_COL_ICON = 1
_MODEL_COL_BUDDY = 2
_MODEL_COL_VISIBLE = 3
def __init__(self, shell):
gtk.Window.__init__(self)
gtk.VBox.__init__(self, False, 6)
self._activity = None
self._shell = shell
@ -55,12 +55,11 @@ class PresenceWindow(gtk.Window):
self._share_button.set_sensitive(False)
def _setup_ui(self):
vbox = gtk.VBox(False, 6)
vbox.set_border_width(12)
self.set_size_request(120, -1)
label = gtk.Label(_("Who's around:"))
label.set_alignment(0.0, 0.5)
vbox.pack_start(label, False)
self.pack_start(label, False)
label.show()
self._buddy_store = gtk.ListStore(gobject.TYPE_STRING,
@ -95,7 +94,7 @@ class PresenceWindow(gtk.Window):
column.set_expand(True);
self._buddy_list_view.append_column(column)
vbox.pack_start(sw)
self.pack_start(sw)
sw.show()
button_box = gtk.HButtonBox()
@ -105,11 +104,8 @@ class PresenceWindow(gtk.Window):
button_box.pack_start(self._share_button)
self._share_button.show()
vbox.pack_start(button_box, False)
self.pack_start(button_box, False)
button_box.show()
self.add(vbox)
vbox.show()
def _share_button_clicked_cb(self, button):
self._shell.get_current_activity().publish()

@ -12,8 +12,7 @@ from HomeWindow import HomeWindow
from sugar import keybindings
from sugar import env
from sugar.activity import Activity
from PresenceWindow import PresenceWindow
from sugar.chat.ActivityChat import ActivityChat
from PeopleWindow import PeopleWindow
from Owner import ShellOwner
class ShellDbusService(dbus.service.Object):
@ -61,13 +60,7 @@ class Shell:
keybindings.setup_global_keys(self._home_window, self)
self._home_window.show()
self._presence_window = PresenceWindow(self)
self._presence_window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG)
self._presence_window.set_skip_taskbar_hint(True)
self._presence_window.set_decorated(False)
keybindings.setup_global_keys(self._presence_window, self)
self._chat_windows = {}
self._people_windows = {}
def _toggle_window_visibility(self, window):
if window.get_property('visible'):
@ -103,28 +96,15 @@ class Shell:
if activity:
activity_id = activity.get_id()
if not self._chat_windows.has_key(activity_id):
window = gtk.Window()
window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG)
window.set_skip_taskbar_hint(True)
window.set_decorated(False)
if not self._people_windows.has_key(activity_id):
window = PeopleWindow(self, activity)
keybindings.setup_global_keys(window, self)
chat = ActivityChat(activity)
window.add(chat)
chat.show()
self._chat_windows[activity_id] = window
self._people_windows[activity_id] = window
else:
window = self._chat_windows[activity_id]
window = self._people_windows[activity_id]
window.move(210, 10)
window.resize(380, 440)
self._toggle_window_visibility(window)
self._presence_window.move(10, 10)
self._presence_window.resize(180, 440)
self._presence_window.set_activity(activity)
self._toggle_window_visibility(self._presence_window)
def toggle_console(self):
self._toggle_window_visibility(self._console.get_window())

Loading…
Cancel
Save