~ubuntu-branches/ubuntu/hardy/pymsn/hardy-proposed

« back to all changes in this revision

Viewing changes to pymsn/event/__init__.py

  • Committer: Bazaar Package Importer
  • Author(s): Laurent Bigonville, Sjoerd Simons, Laurent Bigonville, Jonny Lamb
  • Date: 2008-01-17 18:23:14 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20080117182314-lwymmpnk2ut3rvr1
Tags: 0.3.1-0ubuntu1
[ Sjoerd Simons ]
* debian/rules: remove dh_python, it's no longer needed

[ Laurent Bigonville ]
* New upstream release (0.3.1)
* debian/control:
  - Add myself as an Uploaders
  - Add python:Provides for binary package
  - Add python-ctypes and python-crypto to build-deps/deps
* debian/rules: remove binary-install rule
* Add watch file
* remove pycompat file, not needed anymore
* Modify Maintainer value to match the DebianMaintainerField
  specification.

[ Jonny Lamb ]
* Added python-adns to build-deps/deps.
* Added python-pyopenssl to build-deps/deps.
* Updated copyright.
* Upped Standards-Version to 3.7.3.
* Added "XS-Dm-Upload-Allowed: yes" under the request of Sjoerd Simons.
* Added myself to Uploaders.
* Added Homepage to control.
* Added Vcs-Bzr to control.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# -*- coding: utf-8 -*-
 
2
#
 
3
# Copyright (C) 2006  Ali Sabil <ali.sabil@gmail.com>
 
4
#
 
5
# This program is free software; you can redistribute it and/or modify
 
6
# it under the terms of the GNU General Public License as published by
 
7
# the Free Software Foundation; either version 2 of the License, or
 
8
# (at your option) any later version.
 
9
#
 
10
# This program is distributed in the hope that it will be useful,
 
11
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 
12
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
13
# GNU General Public License for more details.
 
14
#
 
15
# You should have received a copy of the GNU General Public License
 
16
# along with this program; if not, write to the Free Software
 
17
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
18
#
 
19
 
 
20
"""pymsn event interfaces.
 
21
 
 
22
Defines the interfaces that the client can implement to benefit from the
 
23
client event notifications."""
 
24
 
 
25
from pymsn.util.weak import WeakSet
 
26
 
 
27
class EventsDispatcher(object):
 
28
    """Abstract object from which all the objects generating events inherit"""
 
29
 
 
30
    def __init__(self):
 
31
        self._events_handlers = WeakSet()
 
32
 
 
33
    ### Callbacks
 
34
    def register_events_handler(self, events_handler):
 
35
        """Registers an event handler with this dispatcher
 
36
            @param events_handler: an instance with methods as code of callbacks
 
37
            @type events_handler: L{pymsn.event.BaseEventInterface}
 
38
        """
 
39
        self._events_handlers.add(events_handler)
 
40
 
 
41
    def _dispatch(self, name, *args):
 
42
        count = 0
 
43
        for event_handler in list(self._events_handlers):
 
44
            if event_handler._dispatch_event(name, *args):
 
45
                count += 1
 
46
        return count
 
47
 
 
48
import weakref
 
49
class BaseEventInterface(object):
 
50
    """Event handler interface, implemented by all the event handlers"""
 
51
 
 
52
    def __init__(self, client):
 
53
        """Initializer
 
54
            @param client: the client we want to be notified for its events
 
55
            @type client: an object implementing L{EventsDispatcher}"""
 
56
        self._client = weakref.proxy(client)
 
57
        client.register_events_handler(self)
 
58
 
 
59
    def _dispatch_event(self, event_name, *params):
 
60
        try:
 
61
            handler = getattr(self, event_name)
 
62
        except Exception, e:
 
63
            return False
 
64
 
 
65
        handler(*params)
 
66
        return True
 
67
 
 
68
from client import *
 
69
from conversation import *
 
70
from contact import *
 
71
from address_book import *
 
72
from offline_messages import *
 
73
from invite import *
 
74