Make states change more fault tolerant

This commit is contained in:
Cédric Krier committed 2008-04-17 23:41:00 +02:00
1 parent 141133c911
commit 90bf877344
2 files changed
+51 -38

No files matched your search

+18 -15
View File
@@ -98,21 +98,24 @@ class CharField(object):
if values is None:
values = {'state': 'draft'}
state_changes = self.attrs.get('states', {})
if isinstance(state_changes, basestring):
state_changes = eval(state_changes)
for key in ('readonly', 'required', 'invisible'):
if key in state_changes:
self.get_state_attrs(model)[key] = \
eval(state_changes[key], values)
elif key in self.attrs:
self.get_state_attrs(model)[key] = self.attrs[key]
if model.mgroup.readonly:
self.get_state_attrs(model)['readonly'] = True
if 'value' in state_changes:
value = eval(state_changes['value'], values)
if value:
self.set(model, value, test_state=False,
modified=True)
try:
if isinstance(state_changes, basestring):
state_changes = eval(state_changes)
for key in ('readonly', 'required', 'invisible'):
if key in state_changes:
self.get_state_attrs(model)[key] = \
eval(state_changes[key], values)
elif key in self.attrs:
self.get_state_attrs(model)[key] = self.attrs[key]
if model.mgroup.readonly:
self.get_state_attrs(model)['readonly'] = True
if 'value' in state_changes:
value = eval(state_changes['value'], values)
if value:
self.set(model, value, test_state=False,
modified=True)
except:
pass
def get_state_attrs(self, model):
if self.name not in model.state_attrs:
@@ -82,21 +82,25 @@ class Button(object):
def state_set(self, values):
state_changes = self.attrs.get('states', {})
if isinstance(state_changes, basestring):
state_changes = eval(state_changes)
if 'invisible' in state_changes:
if eval(state_changes['invisible'], values):
self.widget.hide()
try:
if isinstance(state_changes, basestring):
state_changes = eval(state_changes)
if 'invisible' in state_changes:
if eval(state_changes['invisible'], values):
self.widget.hide()
else:
self.widget.show()
else:
self.widget.show()
else:
self.widget.show()
if 'readonly' in state_changes:
if eval(state_changes['readonly'], values):
self.widget.set_sensitive(False)
if 'readonly' in state_changes:
if eval(state_changes['readonly'], values):
self.widget.set_sensitive(False)
else:
self.widget.set_sensitive(True)
else:
self.widget.set_sensitive(True)
else:
except:
self.widget.show()
self.widget.set_sensitive(True)
class Label(gtk.Label):
@@ -107,14 +111,17 @@ class Label(gtk.Label):
def state_set(self, values):
state_changes = self.attrs.get('states', {})
if isinstance(state_changes, basestring):
state_changes = eval(state_changes)
if 'invisible' in state_changes:
if eval(state_changes['invisible'], values):
self.hide()
try:
if isinstance(state_changes, basestring):
state_changes = eval(state_changes)
if 'invisible' in state_changes:
if eval(state_changes['invisible'], values):
self.hide()
else:
self.show()
else:
self.show()
else:
except:
self.show()
@@ -126,14 +133,17 @@ class VBox(gtk.VBox):
def state_set(self, values):
state_changes = self.attrs.get('states', {})
if isinstance(state_changes, basestring):
state_changes = eval(state_changes)
if 'invisible' in state_changes:
if eval(state_changes['invisible'], values):
self.hide()
try:
if isinstance(state_changes, basestring):
state_changes = eval(state_changes)
if 'invisible' in state_changes:
if eval(state_changes['invisible'], values):
self.hide()
else:
self.show()
else:
self.show()
else:
except:
self.show()