def __draw_input_fields(inspector, params, type): i = 0 for param in params: if type == "in": label = "label_in%d" % i else: label = "label_out%d" % i param_type = inspector.xml.get_param_type(param) param_name = inspector.xml.get_param_name(param) # Get posible attributes editor = "" min_value = "" max_value = "" default_value = "" step = "" subtype = "" for attr in inspector.xml.get_param_attrs(param): attr_type = inspector.xml.get_attr_type(attr) if "editor" == attr_type: editor = inspector.xml.get_attr_value(attr) if "min" == attr_type: min_value = inspector.xml.get_attr_value(attr) if "max" == attr_type: max_value = inspector.xml.get_attr_value(attr) if "default" == attr_type: default_value = inspector.xml.get_attr_value(attr) if "step" == attr_type: step = inspector.xml.get_attr_value(attr) if "subtype" == attr_type: subtype = inspector.xml.get_attr_value(attr) if param_type == 'i': if "spin" == editor: element = pg.wxIntProperty(param_name, label) elif "color" == editor: element = pg.wxColourProperty(param_name, label, wx.RED) elif "slider" == editor: element = pg.wxIntProperty(param_name, label) elif "enum" == editor: test_labels = ["uno", "dos", "tres"] test_values = [1, 2, 3] element = pg.wxEnumProperty(param_name, label, test_labels, test_values) elif "flags" == editor: element = pg.wxIntProperty("flags", label) else: element = pg.wxIntProperty(param_name, label) elif param_type == 'f': element = pg.wxFloatProperty('Float', label) elif param_type == 's': if "" == editor: if type == "in": element = check_string_subtypes(subtype, param_name, label) else: element = pg.wxStringProperty(param_name, label, '') elif "font" == editor: element = pg.wxFontProperty(param_name, label, wx.NORMAL_FONT) elif param_type == 'b': element = pg.wxEnumProperty('Boolean', label, ['True', 'False'], [1, 0], 2) elif param_type == 'o': if type == "in": element = check_string_subtypes(subtype, param_name, label) else: element = pg.wxStringProperty(param_name, label, '') elif param_type == 'l': if type == "in": element = pg.wxStringProperty('List', label, '') else: element = pg.wxArrayStringProperty('List', label, '') else: element = pg.wxStringProperty('String', label, 'Unknow type!!!') inspector.cmds_pg.Append(element) if "spin" == editor or "slider" == editor: inspector.cmds_pg.MakeIntegerSpinControl(label) if "in" == type: inspector.in_elements.append(element) else: inspector.out_elements.append(element) i = i + 1
def append_property(self, parent_pid, name, format, data=None): """Add to the end a child property""" # Create a basic dictionary if format given is just the type if isinstance(format, str): format = { Format_Type: format, Format_Editor: None, Format_Max: None, Format_Min: None, Format_Step: None, Format_Subtype: None, Format_Flags: None, Format_Enums: None } # Create a property for the correct type label = self.__get_next_label() type = format[Format_Type] if type == Type_Bool: prop = pg.wxBoolProperty( name, label ) elif type == Type_Float: prop = self.__append_float_property( name, label, format ) elif type == Type_Int: prop = self.__append_int_property( parent_pid, name, label, format ) if not isinstance(prop, pg.wxPGProperty): return prop elif type == Type_Object: if format[Format_Subtype] != None: prop = self.__get_subtype_property( format[Format_Subtype], name, label ) else: prop = pg.wxStringProperty( name, label, '' ) elif type == Type_String: if format[Format_Subtype] != None: prop = self.__get_subtype_property( format[Format_Subtype], name, label ) else: prop = pg.wxStringProperty( name, label, '' ) elif type == Type_Vector2: pid = self.__append_vector2( parent_pid, name, format, data ) return pid elif type == Type_Vector3: if format[Format_Editor] == Editor_Color: # Color editor prop = pg.wxColourProperty( name, label, wx.BLACK) else: pid = self.__append_vector3( parent_pid, name, format, data ) return pid elif type == Type_Vector4 or type == Type_Quaternion: pid = self.__append_vector4( parent_pid, name, format, data ) return pid else: raise TypeError, "Type '%s' not supported" % type # Add the property to the control for simple types pid = self.__append_property( prop, parent_pid, name, format, data, label ) return pid
def __draw_input_fields(inspector, params, type): i = 0 for param in params: if type == "in": label = "label_in%d" % i else: label = "label_out%d" % i param_type = inspector.xml.get_param_type(param) param_name = inspector.xml.get_param_name(param) # Get posible attributes editor = "" min_value = "" max_value = "" default_value = "" step = "" subtype = "" for attr in inspector.xml.get_param_attrs(param): attr_type = inspector.xml.get_attr_type(attr) if "editor" == attr_type: editor = inspector.xml.get_attr_value(attr) if "min" == attr_type: min_value = inspector.xml.get_attr_value(attr) if "max" == attr_type: max_value = inspector.xml.get_attr_value(attr) if "default" == attr_type: default_value = inspector.xml.get_attr_value(attr) if "step" == attr_type: step = inspector.xml.get_attr_value(attr) if "subtype" == attr_type: subtype = inspector.xml.get_attr_value(attr) if param_type == 'i': if "spin" == editor: element = pg.wxIntProperty(param_name, label) elif "color" == editor: element = pg.wxColourProperty(param_name, label, wx.RED) elif "slider" == editor: element = pg.wxIntProperty(param_name, label) elif "enum" == editor: test_labels = ["uno", "dos", "tres"] test_values = [1, 2, 3] element = pg.wxEnumProperty( param_name, label, test_labels, test_values) elif "flags" == editor: element = pg.wxIntProperty("flags", label) else: element = pg.wxIntProperty(param_name, label) elif param_type == 'f': element = pg.wxFloatProperty('Float', label) elif param_type == 's': if "" == editor: if type == "in": element = check_string_subtypes(subtype, param_name, label) else: element = pg.wxStringProperty(param_name, label, '') elif "font" == editor: element = pg.wxFontProperty(param_name, label, wx.NORMAL_FONT) elif param_type == 'b': element = pg.wxEnumProperty('Boolean', label,['True','False'],[1,0],2) elif param_type == 'o': if type == "in": element = check_string_subtypes(subtype, param_name, label) else: element = pg.wxStringProperty(param_name, label, '') elif param_type == 'l': if type == "in": element = pg.wxStringProperty('List', label, '') else: element = pg.wxArrayStringProperty('List', label, '') else: element = pg.wxStringProperty('String', label, 'Unknow type!!!') inspector.cmds_pg.Append(element) if "spin" == editor or "slider" == editor: inspector.cmds_pg.MakeIntegerSpinControl(label) if "in" == type: inspector.in_elements.append(element) else: inspector.out_elements.append(element) i = i + 1