コード例 #1
0
 def __draw_input_fields(self, arg, element, type):        
     for i in xrange(len(arg)):
         if type == "in":                            
             label = "label_in%d" % i
         else:
             label = "label_out%d" % i
             
         if arg[i] == 'i':
             element.append(pg.wxIntProperty('Integer', label))
             self.cmds_pg.Append(element[i])
         elif arg[i] == 'f':
             element.append(pg.wxFloatProperty('Float', label))
             self.cmds_pg.Append(element[i])
         elif arg[i] == 's':
             if type == "in":
                 element.append(pg.wxStringCallBackProperty('String', 
                                 label, '' ))
                 self.cmds_pg.Append(element[i])
                 dlg = browser.create_dialog(self, True)
                 element[i].SetCallBackDialog(dlg)
             else:                    
                 element.append(pg.wxStringProperty('String', label, ''))
                 self.cmds_pg.Append(element[i])
         elif arg[i] == 'b':
             element.append(pg.wxEnumProperty('Boolean', 
                                label,['True','False'],[1,0],2,0 ))
             self.cmds_pg.Append(element[i])
         elif arg[i] == 'o':
             if type == "in":
                 element.append(pg.wxStringCallBackProperty( 'Object', 
                                     label, '' ))
                 self.cmds_pg.Append(element[i])
                 dlg = browser.create_dialog(self, True)        
                 element[i].SetCallBackDialog(dlg)  
             else:
                 element.append(pg.wxStringProperty('Object', label, ''))
                 self.cmds_pg.Append(element[i])
         elif arg[i] == 'l':
             if type == "in":
                 element.append(pg.wxStringProperty('List', label, ''))
                 self.cmds_pg.Append(element[i])
             else:
                 element.append(pg.wxArrayStringProperty('List', label, ''))
                 self.cmds_pg.Append(element[i])
             
         else:
             element.append(pg.wxStringProperty('String', label,
                                                    'Unknow type!!!'))
             self.cmds_pg.Append(element[i])
コード例 #2
0
def draw_input_fields(inspector_win, arg, element, type):        
    for i in xrange(len(arg)):
        if type == "in":                            
            label = "label_in%d" % i
        else:
            label = "label_out%d" % i
            
        if arg[i] == 'i':
            element.append(pg.wxIntProperty('Integer', label))
            inspector_win.cmds_pg.Append(element[i])
        elif arg[i] == 'f':
            element.append(pg.wxFloatProperty('Float', label))
            inspector_win.cmds_pg.Append(element[i])
        elif arg[i] == 's':
            if type == "in":
                element.append(pg.wxStringCallBackProperty('String', 
                                label, '' ))
                inspector_win.cmds_pg.Append(element[i])
                dlg = browser.create_dialog(inspector_win, True)
                element[i].SetCallBackDialog(dlg)                                               
            else:                    
                element.append(pg.wxStringProperty('String', label, ''))
                inspector_win.cmds_pg.Append(element[i])
        elif arg[i] == 'b':
            element.append(pg.wxEnumProperty('Boolean', 
                               label,['True','False'],[1,0],2 ))
            inspector_win.cmds_pg.Append(element[i])
        elif arg[i] == 'o':
            if type == "in":
                element.append(pg.wxStringCallBackProperty( 'Object', 
                                    label, '' ))
                inspector_win.cmds_pg.Append(element[i])
                dlg = browser.create_dialog(inspector_win, True)        
                element[i].SetCallBackDialog(dlg)  
            else:
                element.append(pg.wxStringProperty('Object', label, ''))
                inspector_win.cmds_pg.Append(element[i])
        elif arg[i] == 'l':
            if type == "in":
                element.append(pg.wxStringProperty('List', label, ''))
                inspector_win.cmds_pg.Append(element[i])
            else:
                element.append(pg.wxArrayStringProperty('List', label, ''))
                inspector_win.cmds_pg.Append(element[i])
            
        else:
            element.append(pg.wxStringProperty('String', label,
                                                   'Unknow type!!!'))
            inspector_win.cmds_pg.Append(element[i])
コード例 #3
0
def check_string_subtypes(subtype, param_name, label):
    if subtype is not "":
        if "asset" == subtype:
            directory = mangle_path("wc:export/assets") + "\\"
            element = pg.wxFileProperty(param_name, label, directory)
        elif "texture" == subtype:
            directory = mangle_path("wc:export/textures") + "\\"
            element = pg.wxFileProperty(param_name, label, directory)
        elif "shader" == subtype:
            directory = mangle_path("wc:export/shader") + "\\"
            element = pg.wxFileProperty(param_name, label, directory)
        elif "file" == subtype:
            directory = mangle_path("wc:")
            element = pg.wxFileProperty(param_name, label, directory)
        elif "directory" == subtype:
            directory = mangle_path("home:")
            element = pg.wxDirProperty(param_name, label, directory)
        elif "entityobject" == subtype:
            element = pg.wxStringCallBackProperty(param_name, label, '')
            dlg = browser.create_dialog(True, "/sys/nobject/nentityobject")
            element.SetCallBackDialog(dlg)
        elif "nroot" == subtype:
            element = pg.wxStringCallBackProperty(param_name, label, '')
            dlg = browser.create_dialog(True, "/")
            element.SetCallBackDialog(dlg)
        elif "entityclass" == subtype:
            element = pg.wxStringCallBackProperty(param_name, label, '')
            dlg = grimoire.create_dialog(True)
            element.SetCallBackDialog(dlg)
        elif "nobjectclass" == subtype:
            element = pg.wxStringCallBackProperty(param_name, label, '')
            dlg = entitybrowser.create_dialog(self)
            element.SetCallBackDialog(dlg)
    else:
        # No subtype
        element = pg.wxStringProperty(param_name, label, '')

    return element
コード例 #4
0
def check_string_subtypes(subtype, param_name, label):
    if subtype is not "":
        if "asset" == subtype:
            directory = mangle_path("wc:export/assets") + "\\"
            element = pg.wxFileProperty(param_name, label, directory)
        elif "texture" == subtype:
            directory = mangle_path("wc:export/textures") + "\\"
            element = pg.wxFileProperty(param_name, label, directory)
        elif "shader" == subtype:
            directory = mangle_path("wc:export/shader") + "\\"
            element = pg.wxFileProperty(param_name, label, directory)
        elif "file" == subtype:
            directory = mangle_path("wc:")
            element = pg.wxFileProperty(param_name, label, directory)
        elif "directory" == subtype:
            directory = mangle_path("home:")
            element = pg.wxDirProperty(param_name, label, directory)
        elif "entityobject" == subtype:
            element = pg.wxStringCallBackProperty(param_name, label, '' )
            dlg = browser.create_dialog(True, "/sys/nobject/nentityobject")
            element.SetCallBackDialog(dlg)
        elif "nroot" == subtype:
            element = pg.wxStringCallBackProperty(param_name, label, '' )
            dlg = browser.create_dialog(True, "/")                            
            element.SetCallBackDialog(dlg)
        elif "entityclass" == subtype:
            element = pg.wxStringCallBackProperty(param_name, label, '' )
            dlg = grimoire.create_dialog(True)                            
            element.SetCallBackDialog(dlg)
        elif "nobjectclass" == subtype:
            element = pg.wxStringCallBackProperty(param_name, label, '' )
            dlg = entitybrowser.create_dialog(self)
            element.SetCallBackDialog(dlg)
    else:
        # No subtype
        element = pg.wxStringProperty(param_name, label, '')

    return element
コード例 #5
0
 def __get_subtype_property(self, subtype, name, label):
     if "asset" == subtype:
         directory = servers.get_file_server().manglepath("wc:export/assets") + "\\"
         prop = pg.wxFileProperty(name, label, directory)
     elif "texture" == subtype:
         directory = servers.get_file_server().manglepath("wc:export/textures") + "\\"
         prop = pg.wxFileProperty(name, label, directory)
     elif "image" == subtype:
         directory = servers.get_file_server().manglepath("wc:export/textures") + "\\"
         prop = pg.wxAdvImageFileProperty(name, label)
     elif "shader" == subtype:
         directory = servers.get_file_server().manglepath("wc:export/shader") + "\\"
         prop = pg.wxFileProperty(name, label, directory)
     elif "file" == subtype:
         directory = servers.get_file_server().manglepath("wc:")
         prop = pg.wxFileProperty(name, label, directory)
     elif "material" == subtype:
         prop = pg.wxStringCallBackProperty(name, label, '')
         dlg = nodelibdlg.NodeLibDialog( self, nodelibdlg.SELECT,
             'material', 'Material', "/usr/materials")
         prop.SetCallBackDialog(dlg)
     elif "directory" == subtype:
         directory = servers.get_file_server().manglepath("home:")
         prop = pg.wxDirProperty(name, label, directory)
     elif "entityobjectclass" == subtype:
         prop = pg.wxStringCallBackProperty(name, label, '' )
         dlg = objbrowserwindow.create_dialog(
                     self, 
                     True, 
                     "/sys/nobject/nentityobject"
                     )
         prop.SetCallBackDialog(dlg)
         prop = pg.wxStringProperty(name, label, '')
     elif "nroot" == subtype:
         prop = pg.wxStringCallBackProperty(name, label, '' )
         dlg = objbrowserwindow.create_dialog(
                     self, 
                     True, 
                     "/"
                     )
         prop.SetCallBackDialog(dlg)
     elif "entityclass" == subtype:
         prop = pg.wxStringCallBackProperty(name, label, '' )
         dlg = grimoire.create_dialog(self, True)
         prop.SetCallBackDialog(dlg)
     elif "entityobject" == subtype:
         prop = pg.wxStringCallBackProperty(name, label, '' )
         dlg = entitybrowser.create_dialog(self)
         prop.SetCallBackDialog(dlg)
     elif "musicsample" == subtype:
         prop = pg.wxStringCallBackProperty(name, label, '' )
         dlg = musictabledlg.dialog_for_music_sample_selection(self)
         prop.SetCallBackDialog(dlg)
     elif "musicmood" == subtype:
         prop = pg.wxStringCallBackProperty(name, label, '' )
         dlg = musictabledlg.dialog_for_music_mood_selection(self)
         prop.SetCallBackDialog(dlg)
     elif "musicstyle" == subtype:
         prop = pg.wxStringCallBackProperty(name, label, '' )
         dlg = musictabledlg.dialog_for_music_style_selection(self)
         prop.SetCallBackDialog(dlg)
     else:
         print "Bad subtype"
         prop = pg.wxStringProperty(name, label, '')
 
     return prop
コード例 #6
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
コード例 #7
0
    def draw_state_commands(self, obj):
        self.cmds_pg.Clear()

        if obj is None:
            self.Disable()
            return
        else:
            self.Enable()

        # Get the commands

        inspector = pynebula.new(
                            "nobjinspector",
                            "/editor/inspector"
                            )
        inspector.initcmdsstate(obj)

        # Navigate over the commands and build the interface. We need
        # the command definition to put it in the category. So first create
        # the grid properties  but do not append them until the category
        # is placed with the full description.

        cmds_count = inspector.getcmdscount() 
        self.cmd_list = list()       # Command list
        self.cmd_name_list = list()  # Store the categories
        self.undo_list = list()

        if cmds_count == 0:
            self.cmds_pg.Append(
                pg.wxPropertyCategory(
                    str("State is EMPTY"), 
                    str("nostate")
                    )
                )

        self.prev_state = list() # Storage state when the inspector is call
        for num_cmd in xrange(cmds_count):
            cmds_name_desc = inspector.getcmdname(num_cmd) + str(" (")
            undo_cmd = inspector.getcmdname(num_cmd) + str("(")
            args_count = inspector.getinargscount(num_cmd)
            self.element = list()   # Start argument list            

            for num_arg in xrange(args_count):                
                label = "label_in" + str(num_cmd) + "-" + str(num_arg+1)
                arg_type = inspector.gettype(num_cmd, num_arg+1)

                # Type is Int

                if arg_type == 1:
                    value = inspector.geti(num_cmd, num_arg+1)
                    self.element.append(
                        pg.wxIntProperty(
                            'Integer', 
                            label
                            )
                        )
                    value_as_string = str(value)
                    self.element[num_arg].SetValueFromString(
                        value_as_string, 
                        0
                        )
                    self.prev_state.append(value_as_string)
                    cmds_name_desc = cmds_name_desc + value_as_string + ", "
                    undo_cmd = undo_cmd + value_as_string + ","

                # Type is Float

                elif arg_type == 2:
                    value = inspector.getf(num_cmd, num_arg+1)
                    self.element.append(
                        pg.wxFloatProperty(
                            'Float', 
                            label
                            )
                        )
                    value_as_string = str(value)    
                    self.element[num_arg].SetValueFromString(
                        value_as_string,
                        0
                        )
                    self.prev_state.append(value_as_string)
                    undo_cmd = undo_cmd + value_as_string + ","
                    temp = value_as_string.rsplit('.')
                    value = temp[0] + '.' + temp[1][:2]
                    cmds_name_desc = cmds_name_desc + value_as_string + ", "

                # Type if String

                elif arg_type == 3:
                    value = inspector.gets(num_cmd, num_arg+1)
                    self.element.append(
                        pg.wxStringProperty(
                            'String',
                            label, 
                            ''
                            )
                        )
                    value_as_string = str(value)
                    self.element[num_arg].SetValueFromString(
                        value_as_string,
                        0
                        )
                    self.prev_state.append(value_as_string)
                    cmds_name_desc = cmds_name_desc +\
                                   '"' + value_as_string + '"' + ", "
                    undo_cmd = undo_cmd + '"' + value_as_string + '"' + ","

                # Type is Boolean

                elif arg_type == 4:
                    value = inspector.getb(num_cmd, num_arg+1)
                    self.element.append(
                        pg.wxEnumProperty(
                            'Boolean', 
                            label,
                            ['True','False'],
                            [1,0],
                            2 
                            )
                        )
                    if value == 1:
                        self.element[num_arg].SetValueFromString(
                            str("True"), 
                            0
                            )
                        cmds_name_desc = cmds_name_desc + str('True') + ", "
                        self.prev_state.append('True')
                    else:
                        self.element[num_arg].SetValueFromString(
                            str("False"), 
                            0
                            )
                        cmds_name_desc = cmds_name_desc + str('False') + ", "
                        self.prev_state.append('False')
                    undo_cmd = undo_cmd + str(value) + ","

                # Type is Object

                elif arg_type == 5:
                    value = inspector.geto(num_cmd, num_arg+1)             
                    self.element.append(
                        pg.wxStringProperty(
                            'Object', 
                            label, 
                            ''
                            )
                        )
                    full_name_as_string = str( value.getfullname() )
                    self.element[num_arg].SetValueFromString(
                        full_name_as_string,
                        0
                        )
                    self.prev_state.append(full_name_as_string)
                    cmds_name_desc = cmds_name_desc +\
                                   str(value.getname()) + ", "
                    undo_cmd = undo_cmd + "lookup(" + \
                                            full_name_as_string + "),"

                # Type not implemented

                else:
                    cjr.show_error_message("Unknown type!!!")

            # Write the command definition into the category and attach it

            if args_count > 0:
                cmds_name_desc = cmds_name_desc[:-2] + ")"
                undo_cmd = undo_cmd[:-1] + ")"
            else:
                cmds_name_desc = cmds_name_desc + ")"
                undo_cmd = undo_cmd + ")"

            category = pg.wxPropertyCategory(
                                cmds_name_desc, 
                                "cmdLabel%d" % num_cmd
                                )
            self.cmds_pg.Append(category)
            self.cmd_name_list.append(
                inspector.getcmdprotoname(num_cmd)
                )

            # Show the arguments (append to grid) recently created 
            # and append them to a command list

            for num_arg in xrange(args_count):
                self.cmds_pg.Append(self.element[num_arg])
            
            self.cmd_list.append(self.element)

            self.undo_list.append(undo_cmd)

        pynebula.delete("/editor/inspector")

        # Make de object the current

        nebulagui.nebula_object = obj
        self.object = obj

        # Refresh control
        self.cmds_pg.Refresh()
コード例 #8
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
コード例 #9
0
    def draw_state_commands(self, obj):
        self.cmds_pg.Clear()

        if obj is None:
            self.Disable()
            return
        else:
            self.Enable()

        # Get the commands

        inspector = pynebula.new("nobjinspector", "/editor/inspector")
        inspector.initcmdsstate(obj)

        # Navigate over the commands and build the interface. We need
        # the command definition to put it in the category. So first create
        # the grid properties  but do not append them until the category
        # is placed with the full description.

        cmds_count = inspector.getcmdscount()
        self.cmd_list = list()  # Command list
        self.cmd_name_list = list()  # Store the categories
        self.undo_list = list()

        if cmds_count == 0:
            self.cmds_pg.Append(
                pg.wxPropertyCategory(str("State is EMPTY"), str("nostate")))

        self.prev_state = list()  # Storage state when the inspector is call
        for num_cmd in xrange(cmds_count):
            cmds_name_desc = inspector.getcmdname(num_cmd) + str(" (")
            undo_cmd = inspector.getcmdname(num_cmd) + str("(")
            args_count = inspector.getinargscount(num_cmd)
            self.element = list()  # Start argument list

            for num_arg in xrange(args_count):
                label = "label_in" + str(num_cmd) + "-" + str(num_arg + 1)
                arg_type = inspector.gettype(num_cmd, num_arg + 1)

                # Type is Int

                if arg_type == 1:
                    value = inspector.geti(num_cmd, num_arg + 1)
                    self.element.append(pg.wxIntProperty('Integer', label))
                    value_as_string = str(value)
                    self.element[num_arg].SetValueFromString(
                        value_as_string, 0)
                    self.prev_state.append(value_as_string)
                    cmds_name_desc = cmds_name_desc + value_as_string + ", "
                    undo_cmd = undo_cmd + value_as_string + ","

                # Type is Float

                elif arg_type == 2:
                    value = inspector.getf(num_cmd, num_arg + 1)
                    self.element.append(pg.wxFloatProperty('Float', label))
                    value_as_string = str(value)
                    self.element[num_arg].SetValueFromString(
                        value_as_string, 0)
                    self.prev_state.append(value_as_string)
                    undo_cmd = undo_cmd + value_as_string + ","
                    temp = value_as_string.rsplit('.')
                    value = temp[0] + '.' + temp[1][:2]
                    cmds_name_desc = cmds_name_desc + value_as_string + ", "

                # Type if String

                elif arg_type == 3:
                    value = inspector.gets(num_cmd, num_arg + 1)
                    self.element.append(
                        pg.wxStringProperty('String', label, ''))
                    value_as_string = str(value)
                    self.element[num_arg].SetValueFromString(
                        value_as_string, 0)
                    self.prev_state.append(value_as_string)
                    cmds_name_desc = cmds_name_desc +\
                                   '"' + value_as_string + '"' + ", "
                    undo_cmd = undo_cmd + '"' + value_as_string + '"' + ","

                # Type is Boolean

                elif arg_type == 4:
                    value = inspector.getb(num_cmd, num_arg + 1)
                    self.element.append(
                        pg.wxEnumProperty('Boolean', label, ['True', 'False'],
                                          [1, 0], 2))
                    if value == 1:
                        self.element[num_arg].SetValueFromString(
                            str("True"), 0)
                        cmds_name_desc = cmds_name_desc + str('True') + ", "
                        self.prev_state.append('True')
                    else:
                        self.element[num_arg].SetValueFromString(
                            str("False"), 0)
                        cmds_name_desc = cmds_name_desc + str('False') + ", "
                        self.prev_state.append('False')
                    undo_cmd = undo_cmd + str(value) + ","

                # Type is Object

                elif arg_type == 5:
                    value = inspector.geto(num_cmd, num_arg + 1)
                    self.element.append(
                        pg.wxStringProperty('Object', label, ''))
                    full_name_as_string = str(value.getfullname())
                    self.element[num_arg].SetValueFromString(
                        full_name_as_string, 0)
                    self.prev_state.append(full_name_as_string)
                    cmds_name_desc = cmds_name_desc +\
                                   str(value.getname()) + ", "
                    undo_cmd = undo_cmd + "lookup(" + \
                                            full_name_as_string + "),"

                # Type not implemented

                else:
                    cjr.show_error_message("Unknown type!!!")

            # Write the command definition into the category and attach it

            if args_count > 0:
                cmds_name_desc = cmds_name_desc[:-2] + ")"
                undo_cmd = undo_cmd[:-1] + ")"
            else:
                cmds_name_desc = cmds_name_desc + ")"
                undo_cmd = undo_cmd + ")"

            category = pg.wxPropertyCategory(cmds_name_desc,
                                             "cmdLabel%d" % num_cmd)
            self.cmds_pg.Append(category)
            self.cmd_name_list.append(inspector.getcmdprotoname(num_cmd))

            # Show the arguments (append to grid) recently created
            # and append them to a command list

            for num_arg in xrange(args_count):
                self.cmds_pg.Append(self.element[num_arg])

            self.cmd_list.append(self.element)

            self.undo_list.append(undo_cmd)

        pynebula.delete("/editor/inspector")

        # Make de object the current

        nebulagui.nebula_object = obj
        self.object = obj

        # Refresh control
        self.cmds_pg.Refresh()
コード例 #10
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