Fixed a bunch of issues reported by pylint

This commit is contained in:
Marco Pesenti Gritti 2006-06-15 11:18:33 -04:00
parent ecf81ba35f
commit f0af49616c
18 changed files with 66 additions and 115 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -2,8 +2,6 @@ import pygtk
pygtk.require('2.0')
import gtk
import sugar.env
class AddressEntry(gtk.HBox):
def __init__(self, callback):
gtk.HBox.__init__(self)

View File

@ -1,24 +1,25 @@
from xml.sax import saxutils
import dbus
import pygtk
pygtk.require('2.0')
import gtk
import geckoembed
import urllib
from sugar.shell import activity
from sugar.browser import NotificationBar
from sugar.browser import NavigationToolbar
_BROWSER_ACTIVITY_TYPE = "_web_browser_olpc._udp"
class BrowserActivity(activity.Activity):
SOLO = 1
FOLLOWING = 2
LEADING = 3
def __init__(self, uri):
def __init__(self, group, uri):
activity.Activity.__init__(self)
self.uri = uri
self._group = group
self._mode = BrowserActivity.SOLO
def _update_shared_location(self):
@ -84,14 +85,14 @@ class BrowserActivity(activity.Activity):
self._setup_shared(self.uri)
def publish(self):
print 'Publish %s' % self.get_id()
print 'Publish %s' % self.activity_get_id()
def get_embed(self):
return self.embed
def share(self):
url = self.embed.get_address()
self._model = self._group.get_store().create_model(url)
address = self.embed.get_address()
self._model = self._group.get_store().create_model(address)
self._model.set_value('owner', self._group.get_owner().get_nick_name())
self._update_shared_location()
self.set_mode(BrowserActivity.LEADING)
@ -100,8 +101,8 @@ class BrowserActivity(activity.Activity):
proxy_obj = bus.get_object('com.redhat.Sugar.Chat', '/com/redhat/Sugar/Chat')
chat_shell = dbus.Interface(proxy_obj, 'com.redhat.Sugar.ChatShell')
escaped_title = urllib.quote(self.embed.get_title())
escaped_url = urllib.quote(url)
escaped_title = saxutils.escape(self.embed.get_title())
escaped_address = saxutils.escape(address)
chat_shell.send_text_message('<richtext><link href="' + escaped_address +
'">' + escaped_title + '</link></richtext>')

View File

@ -1,20 +1,21 @@
import dbus
import geckoembed
import threading
import gobject
import pygtk
pygtk.require('2.0')
import gtk
import sugar.env
from sugar.browser.BrowserActivity import BrowserActivity
class BrowserShell(dbus.service.Object):
def __init__(self, object_path = '/com/redhat/Sugar/Browser'):
def __init__(self, bus_name, object_path = '/com/redhat/Sugar/Browser'):
dbus.service.Object.__init__(self, bus_name, object_path)
geckoembed.set_profile_path(sugar.env.get_user_dir())
self.__browsers = []
def start():
def start(self):
gtk.main()
@dbus.service.method('com.redhat.Sugar.BrowserShell')
@ -30,6 +31,6 @@ class BrowserShell(dbus.service.Object):
@dbus.service.method('com.redhat.Sugar.BrowserShell')
def open_browser(self, uri):
browser = BrowserActivity(uri)
browser = BrowserActivity(None, uri)
self.__browsers.append(browser)
browser.connect_to_shell()

View File

@ -1,44 +1,31 @@
#!/usr/bin/env python
import base64
import sha
import dbus
import dbus.service
import dbus.glib
import threading
import pygtk
pygtk.require('2.0')
import gtk, gobject, pango
from sugar.shell import activity
from sugar.presence import Buddy
from sugar.presence.Service import Service
from sugar.p2p.Stream import Stream
from sugar.p2p import network
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
PANGO_SCALE = 1024 # Where is this defined?
CHAT_SERVICE_TYPE = "_olpc_chat._tcp"
CHAT_SERVICE_PORT = 6100
GROUP_CHAT_SERVICE_TYPE = "_olpc_group_chat._udp"
GROUP_CHAT_SERVICE_ADDRESS = "224.0.0.221"
GROUP_CHAT_SERVICE_PORT = 6200
class Chat(gtk.Window):
SERVICE_TYPE = "_olpc_chat._tcp"
SERVICE_PORT = 6100
def __init__(self, controller):
gtk.Window.__init__(self)
#Buddy.recognize_buddy_service_type(CHAT_SERVICE_TYPE)
#Buddy.recognize_buddy_service_type(Chat.SERVICE_TYPE)
self._controller = controller
self._stream_writer = None
self._emt_popup = None
@ -144,7 +131,7 @@ class Chat(gtk.Window):
return chat_vbox, self._editor.get_buffer()
def __get_browser_shell():
def __get_browser_shell(self):
bus = dbus.SessionBus()
proxy_obj = bus.get_object('com.redhat.Sugar.Browser', '/com/redhat/Sugar/Browser')
self._browser_shell = dbus.Interface(proxy_obj, 'com.redhat.Sugar.BrowserShell')
@ -287,7 +274,7 @@ class Chat(gtk.Window):
if icon:
rise = int(icon.get_height() / 4) * -1
chat_service = buddy.get_service(CHAT_SERVICE_TYPE)
chat_service = buddy.get_service(Chat.SERVICE_TYPE)
hash_string = "%s-%s" % (nick, chat_service.get_address())
sha_hash = sha.new()
sha_hash.update(hash_string)

View File

@ -1,4 +1,10 @@
from sugar.chat.Chat import Chat
from sugar.presence.Service import Service
from sugar.p2p.Stream import Stream
GROUP_CHAT_SERVICE_TYPE = "_olpc_group_chat._udp"
GROUP_CHAT_SERVICE_ADDRESS = "224.0.0.221"
GROUP_CHAT_SERVICE_PORT = 6200
class GroupChat(Chat):
def __init__(self):
@ -9,7 +15,7 @@ class GroupChat(Chat):
return self._group
def new_buddy_writer(self, buddy):
service = buddy.get_service(CHAT_SERVICE_TYPE)
service = buddy.get_service(Chat.SERVICE_TYPE)
return self._buddy_stream.new_writer(service)
def _start(self):
@ -17,15 +23,16 @@ class GroupChat(Chat):
# Group controls the Stream for incoming messages for
# specific buddy chats
buddy_service = Service(name, CHAT_SERVICE_TYPE, CHAT_SERVICE_PORT)
buddy_service = Service(name, Chat.SERVICE_TYPE, Chat.SERVICE_PORT)
self._buddy_stream = Stream.new_from_service(buddy_service, self._group)
self._buddy_stream.set_data_listener(getattr(self, "_buddy_recv_message"))
buddy_service.register(self._group)
# Group chat Stream
group_service = Service(name, GROUP_CHAT_SERVICE_TYPE,
GROUP_CHAT_SERVICE_PORT,
GROUP_CHAT_SERVICE_ADDRESS)
group_service = Service(name,
GROUP_CHAT_SERVICE_TYPE,
GROUP_CHAT_SERVICE_PORT,
GROUP_CHAT_SERVICE_ADDRESS)
self._group.add_service(group_service)
self._group_stream = Stream.new_from_service(group_service, self._group)
@ -37,9 +44,10 @@ class GroupChat(Chat):
def _buddy_recv_message(self, buddy, msg):
if not self._chats.has_key(buddy):
chat = BuddyChat(self, buddy)
self._chats[buddy] = chat
chat.connect_to_shell()
# chat = BuddyChat(self, buddy)
# self._chats[buddy] = chat
# chat.connect_to_shell()
pass
else:
chat = self._chats[buddy]
chat.recv_message(buddy, msg)

View File

@ -1,5 +1,5 @@
from sugar.p2p import network
from sugar.p2p.Service import Service
from sugar.presence.Service import Service
class Notifier:
TYPE = "_olpc_model_notification._udp"

View File

@ -1,6 +1,6 @@
import socket
from sugar.p2p.Service import Service
from sugar.presence.Service import Service
from sugar.p2p.Notifier import Notifier
from sugar.p2p.model.AbstractModel import AbstractModel
from sugar.p2p import network

View File

@ -1,5 +1,3 @@
import pwd
import os
import base64
import pygtk
@ -9,7 +7,6 @@ import gtk, gobject
from sugar.p2p import Stream
from sugar.p2p import network
PRESENCE_SERVICE_TYPE = "_presence_olpc._tcp"

View File

@ -111,13 +111,13 @@ class PresenceService(gobject.GObject):
self._service_advs = []
# Main activity UID to filter services on
self._activity_uids = []
self._activity_uid = None
self._bus = dbus.SystemBus()
self._server = dbus.Interface(self._bus.get_object(avahi.DBUS_NAME,
avahi.DBUS_PATH_SERVER), avahi.DBUS_INTERFACE_SERVER)
def start(self):
def start(self, activity_uid=None):
"""Start the presence service by kicking off service discovery."""
self._lock.acquire()
if self._started:
@ -126,6 +126,10 @@ class PresenceService(gobject.GObject):
self._started = True
self._lock.release()
if activity_uid and not util.validate_activity_uid(activity_uid):
raise ValueError("activity uid must be a valid UID string.")
self._activity_uid = activity_uid
# Always browse .local
self._new_domain_cb(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, "local")
@ -280,9 +284,11 @@ class PresenceService(gobject.GObject):
# If we care about the service right now, resolve it
resolve = False
if uid in self._activity_uids:
if self._activity_uid and self._activity_uid == uid:
if stype in self._allowed_service_types:
resolve = True
elif not self._activity_uid:
resolve = True
if self._is_special_service_type(stype):
resolve = True
if resolve:
@ -383,11 +389,6 @@ class PresenceService(gobject.GObject):
if stype in self._allowed_service_types:
return
# Decompose service type if we can
(uid, stype) = Service._decompose_service_type(stype)
if uid and util.validate_activity_uid(uid):
if uid not in self._activity_uids:
self._activity_uids.append(uid)
self._allowed_service_types.append(stype)
# Find unresolved services that match the service type
@ -403,53 +404,24 @@ class PresenceService(gobject.GObject):
raise RuntimeError("presence service must be started first.")
if not type(stype) == type(""):
raise ValueError("service type must be a string.")
# Decompose service type if we can
(uid, stype) = Service._decompose_service_type(stype)
if uid and util.validate_activity_uid(uid):
if uid in self._activity_uids:
self._activity_uids.remove(uid)
if stype in self._allowed_service_types:
if name in self._allowed_service_types:
self._allowed_service_types.remove(stype)
def join_shared_activity(self, service):
def join_group(self, group):
"""Convenience function to join a group and notify other buddies
that you are a member of it."""
if not isinstance(service, Service.Service):
raise ValueError("service was not a valid service object.")
if not isinstance(group, Group.Group):
raise ValueError("group was not a valid group.")
gservice = group.get_service()
self.register_service(service)
def share_activity(self, activity, stype, properties={}, address=None, port=None):
"""Convenience function to share an activity with other buddies."""
uid = activity.get_id()
owner_nick = self._owner.get_nick_name()
real_stype = "_%s_%s" % (uid, stype)
if address and type(address) != type(""):
raise ValueError("address must be a valid string.")
if not address:
# Use random currently unassigned multicast address
address = "232.%d.%d.%d" % (random.randint(0, 254), random.randint(1, 254),
random.randint(1, 254))
if port and (type(port) != type(1) or port <= 1024 or port >= 65535):
raise ValueError("port must be a number between 1024 and 65535")
if not port:
# random port #
port = random.randint(5000, 65535)
service = Service.Service(name=owner_nick, stype=real_stype, domain="local",
address=address, port=port, properties=properties)
# Publish it to the world
self.register_service(service)
return service
def register_service(self, service):
"""Register a new service, advertising it to other Buddies on the network."""
if not self._started:
raise RuntimeError("presence service must be started first.")
rs_name = service.get_name()
rs_stype = service.get_network_type()
rs_stype = service.get_type()
rs_port = service.get_port()
if type(rs_port) != type(1) and (rs_port <= 1024 or rs_port > 65536):
raise ValueError("invalid service port.")
@ -472,7 +444,7 @@ class PresenceService(gobject.GObject):
# should un-register it an re-register with the correct info
if str(exc) == "Local name collision":
pass
self.track_service_type(service.get_network_type())
self.track_service_type(rs_stype)
return group
def get_buddy_by_nick_name(self, nick_name):

View File

@ -69,8 +69,6 @@ def is_multicast_address(address):
return False
_ACTIVITY_UID_TAG = "ActivityUID"
class Service(object):
"""Encapsulates information about a specific ZeroConf/mDNS
service as advertised on the network."""
@ -103,16 +101,7 @@ class Service(object):
self.set_port(port)
self._properties = {}
self.set_properties(properties)
# Ensure that an ActivityUID tag, if given, matches
# what we expect from the service type
if self._properties.has_key(_ACTIVITY_UID_TAG):
prop_uid = self._properties[_ACTIVITY_UID_TAG]
if (prop_uid and not uid) or (prop_uid != uid):
raise ValueError("ActivityUID property specified, but the service type's activity UID didn't match it.")
self._activity_uid = uid
if uid and not self._properties.has_key(_ACTIVITY_UID_TAG):
self._properties[_ACTIVITY_UID_TAG] = uid
def get_name(self):
"""Return the service's name, usually that of the
@ -152,10 +141,6 @@ class Service(object):
"""Return the service's service type."""
return self._stype
def get_network_type(self):
"""Return the full service type, including activity UID."""
return self._real_stype
def get_port(self):
return self._port

View File

@ -1,7 +1,6 @@
import os
import sys
import dbus
import gobject
class LogWriter:
def __init__(self, application):

View File

@ -3,7 +3,6 @@ pygtk.require('2.0')
import gtk
import gobject
from sugar.p2p.Stream import Stream
from sugar.presence.PresenceService import PresenceService
class PresenceWindow(gtk.Window):
@ -94,9 +93,10 @@ class PresenceWindow(gtk.Window):
chat = None
buddy = self._buddy_list_model.get_value(aniter, self._MODEL_COL_BUDDY)
if buddy and not self._chats.has_key(buddy):
chat = BuddyChat(self, buddy)
self._chats[buddy] = chat
chat.connect_to_shell()
#chat = BuddyChat(self, buddy)
#self._chats[buddy] = chat
#chat.connect_to_shell()
pass
def __buddy_icon_changed_cb(self, buddy):
it = self._get_iter_for_buddy(buddy)

View File

@ -268,7 +268,7 @@ class Activity(object):
else:
self._activity_object.set_has_changes(False)
def get_id(self):
def activity_get_id(self):
return self._activity_id
def shutdown(self):

View File

@ -156,8 +156,9 @@ class ActivityHost(dbus.service.Object):
for c in data:
# Work around for a bug in dbus < 0.61 where integers
# are not correctly marshalled
if c < 0: c += 256
pixstr += chr(c)
if c < 0:
c += 256
pixstr += chr(c)
pixbuf = gtk.gdk.pixbuf_new_from_data(pixstr, colorspace, has_alpha, bits_per_sample, width, height, rowstride)
#print pixbuf
@ -408,4 +409,5 @@ if __name__ == "__main__":
try:
gtk.main()
except KeyboardInterrupt:
print 'Ctrl+c pressed, exiting...'
pass

View File

@ -2,6 +2,7 @@ import time
import sha
import random
import binascii
import string
def _stringify_sha(sha_hash):
"""Convert binary sha1 hash data into printable characters."""