Esempio n. 1
0
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
Esempio n. 2
0
    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
Esempio n. 3
0
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