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 'tutorius/properties.py') diff --git a/tutorius/properties.py b/tutorius/properties.py index bfdb32c..a0d63bb 100644 --- a/tutorius/properties.py +++ b/tutorius/properties.py @@ -49,12 +49,14 @@ class TPropContainer(object): at the cost of needing a mapping between container instances, and property values. This is what TPropContainer does. """ - def __init__(self): + def __init__(self, **kwargs): """ Prepares the instance for property value storage. This is done at object initialization, thus allowing initial mapping of properties declared on the class. Properties won't work correctly without this call. + + Keyword arguments will be evaluated as properties """ # create property value storage object.__setattr__(self, "_props", {}) @@ -74,6 +76,10 @@ class TPropContainer(object): # to the creator to update its action edition dialog. self._diff_dict = {} + #Set attribute values that were supplied + for key, value in kwargs.items(): + setattr(self, key, value) + def __getattribute__(self, name): """ Process the 'fake' read of properties in the appropriate instance @@ -254,11 +260,15 @@ class TStringProperty(TutoriusProperty): Represents a string. Can have a maximum size limit. """ widget_class = StringPropWidget - def __init__(self, value, size_limit=None): + def __init__(self, value, size_limit=None, null=False): TutoriusProperty.__init__(self) self.type = "string" - self.size_limit = MaxSizeConstraint(size_limit) - self.string_type = StringTypeConstraint() + if size_limit: + self.size_limit = MaxSizeConstraint(size_limit) + if null: + self.string_type = TypeConstraint((str, type(None))) + else: + self.string_type = StringTypeConstraint() self.default = self.validate(value) -- cgit v0.9.1