sugar-toolkit-gtk3/sugar/p2p/Buddy.py

61 lines
1.3 KiB
Python
Raw Normal View History

import pwd
import os
2006-05-15 20:48:08 +02:00
from Service import Service
PRESENCE_SERVICE_TYPE = "_olpc_presence._tcp"
PRESENCE_SERVICE_PORT = 6000
2006-05-22 08:10:30 +02:00
class BuddyBase:
def __init__(self, service, nick_name):
self._service = service
self._nick_name = nick_name
2006-05-22 04:21:42 +02:00
def get_icon(self):
"""Return the buddies icon, if any."""
return self._icon
2006-05-22 04:21:42 +02:00
def get_address(self):
2006-05-22 08:10:30 +02:00
return self._service.get_address()
2006-05-22 04:21:42 +02:00
2006-05-22 08:10:30 +02:00
def get_service_name(self):
return self._service.get_name()
def get_nick_name(self):
return self._nick_name
2006-05-22 08:10:30 +02:00
class Buddy(BuddyBase):
"""Normal buddy class."""
2006-05-22 04:21:42 +02:00
def set_icon(self, icon):
"""Can only set icon for other buddies. The Owner
takes care of setting it's own icon."""
self._icon = icon
2006-05-22 08:10:30 +02:00
2006-05-22 04:21:42 +02:00
2006-05-22 08:10:30 +02:00
class Owner(BuddyBase):
2006-05-22 04:21:42 +02:00
"""Class representing the owner of this machine/instance."""
def __init__(self, group):
self._group = group
nick = pwd.getpwuid(os.getuid())[0]
if not nick or not len(nick):
nick = "n00b"
2006-05-22 08:10:30 +02:00
service = Service(nick, PRESENCE_SERVICE_TYPE, PRESENCE_SERVICE_PORT)
BuddyBase.__init__(self, service, nick)
2006-05-22 04:21:42 +02:00
2006-05-22 08:10:30 +02:00
sugar_dir = os.path.abspath(os.path.expanduser("~/.sugar"))
icon = None
for fname in os.listdir(sugar_dir):
2006-05-22 04:21:42 +02:00
if not fname.startswith("buddy-icon."):
continue
2006-05-22 08:10:30 +02:00
fd = open(os.path.join(sugar_dir, fname), "r")
2006-05-22 04:21:42 +02:00
self._icon = fd.read()
fd.close()
break
def register(self):
2006-05-22 08:10:30 +02:00
self._service.register(self._group)