1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 '''
19 Network Events Controller.
20
21 :author: Mateusz Biliński <mateusz@bilinski.it>
22 :since: 10th August 2008
23 :copyright: Copyright (2008) Mateusz Biliński <mateusz@bilinski.it>
24 :license: GPL
25 '''
26
27 from pprint import pformat
28
29
30 from common import gajim
31
33
35 self.incoming_events_generators = {}
36 '''
37 Keys: names of events
38 Values: list of class objects that are subclasses
39 of `NetworkIncomingEvent`
40 '''
41
43 for base_event_name in event_class.base_network_events:
44 event_list = self.incoming_events_generators.setdefault(base_event_name, [])
45 if not event_class in event_list:
46 event_list.append(event_class)
47
49 for base_event_name in event_class.base_network_events:
50 if base_event_name in self.incoming_events_generators:
51 self.incoming_events_generators[base_event_name].remove(event_class)
52
55
58
63
66
68 '''
69 :return: True if even_object should be dispatched through Global
70 Events Dispatcher, False otherwise. This can be used to replace
71 base events with those that more data computed (easier to use
72 by handlers).
73 :note: replacing mechanism is not implemented currently, but will be
74 based on attribute in new network events object.
75 '''
76 base_event_name = event_object.name
77 if base_event_name in self.incoming_events_generators:
78 for new_event_class in self.incoming_events_generators[base_event_name]:
79 new_event_object = new_event_class(None, base_event=event_object)
80 if new_event_object.generate():
81 if self._generate_events_based_on_incoming_event(new_event_object):
82 gajim.ged.raise_event(new_event_object.name, new_event_object)
83 return True
84
86 name = ''
87
95
98
99
101 '''
102 Generates new event (sets it's attributes) based on event object.
103
104 Base event object name is one of those in `base_network_events`.
105
106 Reference to base event object is stored in `self.base_event` attribute.
107
108 Note that this is a reference, so modifications to that event object
109 are possible before dispatching to Global Events Dispatcher.
110
111 :return: True if generated event should be dispatched, False otherwise.
112 '''
113 return True
114
116 for k, v in kwargs.iteritems():
117 setattr(self, k, v)
118
120 return '<NetworkEvent object> Attributes: %s'%(pformat(self.__dict__))
121
123 return '<NetworkEvent object> Attributes: %s'%(pformat(self.__dict__))
124
125
127 base_network_events = []
128 '''
129 Names of base network events that new event is going to be generated on.
130 '''
131
132
135