# HG changeset patch # User laurent # Date 1260218198 -3600 # Node ID 9ca03fdff80f7d83f6690db2f96d07c69f648d97 # Parent a07115f79c27676664a1792218f0c5ae73896600 ForceVariableDialog return a python value instead of string diff -r a07115f79c27 -r 9ca03fdff80f dialogs/ForceVariableDialog.py --- a/dialogs/ForceVariableDialog.py Mon Dec 07 21:26:36 2009 +0100 +++ b/dialogs/ForceVariableDialog.py Mon Dec 07 21:36:38 2009 +0100 @@ -33,39 +33,35 @@ "D" : ["DINT", "UDINT", "REAL", "DWORD"], "L" : ["LINT", "ULINT", "LREAL", "LWORD"]} -def checkbool(v): - return v in ["TRUE", "FALSE"] +def gen_get_function(f): + def get_function(v): + try: + return f(v) + except: + return None + return get_function -def gen_check_function(f): - def check_function(v): - try: - f(v) - return True - except: - return False - return check_function +getinteger = gen_check_function(int) +getfloat = gen_check_function(float) +getstring = gen_check_function(str) -checkinteger = gen_check_function(int) -checkfloat = gen_check_function(float) -checkstring = gen_check_function(str) - -CheckTypeValue = {"BOOL": lambda x: x in ["TRUE", "FALSE"], - "SINT": checkinteger, - "INT": checkinteger, - "DINT": checkinteger, - "LINT": checkinteger, - "USINT": checkinteger, - "UINT": checkinteger, - "UDINT": checkinteger, - "ULINT": checkinteger, - "BYTE": checkinteger, - "WORD": checkinteger, - "DWORD": checkinteger, - "LWORD": checkinteger, - "REAL": checkfloat, - "LREAL": checkfloat, - "STRING": checkstring, - "WSTRING": checkstring,} +GetTypeValue = {"BOOL": lambda x: {"TRUE": True, "FALSE": False}.get(x, None), + "SINT": getinteger, + "INT": getinteger, + "DINT": getinteger, + "LINT": getinteger, + "USINT": getinteger, + "UINT": getinteger, + "UDINT": getinteger, + "ULINT": getinteger, + "BYTE": getinteger, + "WORD": getinteger, + "DWORD": getinteger, + "LWORD": getinteger, + "REAL": getfloat, + "LREAL": getfloat, + "STRING": getstring, + "WSTRING": getstring} class ForceVariableDialog(wx.TextEntryDialog): @@ -96,7 +92,7 @@ message = wx.MessageDialog(self, _("You must type a value!"), _("Error"), wx.OK|wx.ICON_ERROR) message.ShowModal() message.Destroy() - elif not CheckTypeValue[self.IEC_Type](value): + elif GetTypeValue[self.IEC_Type](value) is None: message = wx.MessageDialog(self, _("Invalid value \"%s\" for \"%s\" variable!")%(value, self.IEC_Type), _("Error"), wx.OK|wx.ICON_ERROR) message.ShowModal() message.Destroy() @@ -104,4 +100,4 @@ self.EndModal(wx.ID_OK) def GetValue(self): - return self.GetSizer().GetItem(1).GetWindow().GetValue() + return GetTypeValue[self.IEC_Type](self.GetSizer().GetItem(1).GetWindow().GetValue())