From 8acd9095e8f32ee20a6c4cd105d12a133fa9f346 Mon Sep 17 00:00:00 2001 From: Vincent Vinet Date: Fri, 04 Dec 2009 05:06:49 +0000 Subject: Add Event Sources: - Add source property in Action and EventFilter - Change TPropContainer contructor to accept keyword arguments and set properties that were given - Change every single TPropContainer subclass constructor to accept kwargs and pass them on to super init - Add a "null" option for TStringProperty Use Event Sources: - Make the probe require a source property to install or subscribe - Have ProbeProxy install and subscribe return a prefixed address - Make update, uninstall and unsubsribe extract the prefix from the address - Have the TutorialRunner set a source on actions/events before installing/subscribing instead of setting current activity on ProbeManager Test Event Sources: - Change the tests according to the new constructors and behaviors --- (limited to 'addons/bubblemessage.py') diff --git a/addons/bubblemessage.py b/addons/bubblemessage.py index 7e91d00..accc79f 100644 --- a/addons/bubblemessage.py +++ b/addons/bubblemessage.py @@ -25,42 +25,33 @@ class BubbleMessage(Action): # Do the same for the tail position tail_pos = TArrayProperty((0,0), 2, 2) - def __init__(self, message=None, position=None, speaker=None, tail_pos=None): + def __init__(self, **kwargs): """ Shows a dialog with a given text, at the given position on the screen. + Accepted keyword args: @param message A string to display to the user @param position A list of the form [x, y] @param speaker treeish representation of the speaking widget @param tail_pos The position of the tail of the bubble; useful to point to specific elements of the interface """ - Action.__init__(self) - - if position: - self.position = position - if tail_pos: - self.tail_pos = tail_pos - if message: - self.message = message + super(BubbleMessage, self).__init__(**kwargs) self.overlay = None self._bubble = None self._speaker = None - def do(self, **kwargs): + def do(self, activity=None, **kwargs): """ Show the dialog """ - # get or inject overlayer - self.overlay = ObjectStore().activity._overlayer - # FIXME: subwindows, are left to overlap this. This behaviour is - # undesirable. subwindows (i.e. child of top level windows) should be - # handled either by rendering over them, or by finding different way to - # draw the overlay. + if activity is None: + raise TypeError("Missing argument activity") + + # get overlayer + self.overlay = activity._overlayer - if not self.overlay: - self.overlay = ObjectStore().activity._overlayer if not self._bubble: x, y = self.position # TODO: tails are relative to tailpos. They should be relative to -- cgit v0.9.1