added operators for setting rna for each type, this avoids having double "'quoted'" strings from C which is ugly.

This commit is contained in:
2009-10-14 20:09:21 +00:00
parent 991e67ddc7
commit 7bed5e35b4
4 changed files with 104 additions and 74 deletions

View File

@@ -153,54 +153,80 @@ class MESH_OT_delete_edgeloop(bpy.types.Operator):
bpy.ops.mesh.remove_doubles() bpy.ops.mesh.remove_doubles()
return ('FINISHED',) return ('FINISHED',)
class WM_OT_context_set(bpy.types.Operator): rna_path_prop = bpy.props.StringProperty(attr="path", name="Context Attributes", description="rna context string", maxlen= 1024, default= "")
'''Set a context value.'''
__idname__ = "wm.context_set"
__label__ = "Context Set"
__props__ = [
bpy.props.StringProperty(attr="path", name="Context Attributes", description="rna context string", maxlen= 1024, default= ""),
bpy.props.StringProperty(attr="value", name="Value", description="Assignment value (as a string)", maxlen= 1024, default= "")
]
class WM_OT_context_set_boolean(bpy.types.Operator):
'''Set a context value.'''
__idname__ = "wm.context_set_boolean"
__label__ = "Context Set"
__props__ = [rna_path_prop, bpy.props.BoolProperty(attr="value", name="Value", description="Assignment value", default= True)]
def execute(self, context): def execute(self, context):
exec("context.%s=%s" % (self.path, self.value)) # security nuts will complain. exec("context.%s=%s" % (self.path, self.value)) # security nuts will complain.
return ('FINISHED',) return ('FINISHED',)
class WM_OT_context_set_int(bpy.types.Operator): # same as enum
'''Set a context value.'''
__idname__ = "wm.context_set_int"
__label__ = "Context Set"
__props__ = [rna_path_prop, bpy.props.IntProperty(attr="value", name="Value", description="Assignment value", default= 0)]
def execute(self, context):
exec("context.%s=%d" % (self.path, self.value)) # security nuts will complain.
return ('FINISHED',)
class WM_OT_context_set_float(bpy.types.Operator): # same as enum
'''Set a context value.'''
__idname__ = "wm.context_set_int"
__label__ = "Context Set"
__props__ = [rna_path_prop, bpy.props.FloatProperty(attr="value", name="Value", description="Assignment value", default= 0.0)]
def execute(self, context):
exec("context.%s=%f" % (self.path, self.value)) # security nuts will complain.
return ('FINISHED',)
class WM_OT_context_set_string(bpy.types.Operator): # same as enum
'''Set a context value.'''
__idname__ = "wm.context_set_string"
__label__ = "Context Set"
__props__ = [rna_path_prop, bpy.props.StringProperty(attr="value", name="Value", description="Assignment value", maxlen= 1024, default= "")]
def execute(self, context):
exec("context.%s='%s'" % (self.path, self.value)) # security nuts will complain.
return ('FINISHED',)
class WM_OT_context_set_enum(bpy.types.Operator):
'''Set a context value.'''
__idname__ = "wm.context_set_enum"
__label__ = "Context Set"
__props__ = [rna_path_prop, bpy.props.StringProperty(attr="value", name="Value", description="Assignment value (as a string)", maxlen= 1024, default= "")]
def execute(self, context):
exec("context.%s='%s'" % (self.path, self.value)) # security nuts will complain.
return ('FINISHED',)
class WM_OT_context_toggle(bpy.types.Operator): class WM_OT_context_toggle(bpy.types.Operator):
'''Toggle a context value.''' '''Toggle a context value.'''
__idname__ = "wm.context_toggle" __idname__ = "wm.context_toggle"
__label__ = "Context Toggle" __label__ = "Context Toggle"
__props__ = [ __props__ = [rna_path_prop]
bpy.props.StringProperty(attr="path", name="Context Attributes", description="rna context string", maxlen= 1024, default= ""),
]
def execute(self, context): def execute(self, context):
exec("context.%s=not (context.%s)" % (self.path, self.path)) # security nuts will complain. exec("context.%s=not (context.%s)" % (self.path, self.path)) # security nuts will complain.
return ('FINISHED',) return ('FINISHED',)
class WM_OT_context_toggle_values(bpy.types.Operator): class WM_OT_context_toggle_enum(bpy.types.Operator):
'''Toggle a context value.''' '''Toggle a context value.'''
__idname__ = "wm.context_toggle_values" __idname__ = "wm.context_toggle_enum"
__label__ = "Context Toggle Values" __label__ = "Context Toggle Values"
__props__ = [ __props__ = [
bpy.props.StringProperty(attr="path", name="Context Attributes", description="rna context string", maxlen= 1024, default= ""), rna_path_prop,
bpy.props.StringProperty(attr="value_1", name="Value", description="Toggle value (as a string)", maxlen= 1024, default= ""), bpy.props.StringProperty(attr="value_1", name="Value", description="Toggle enum", maxlen= 1024, default= ""),
bpy.props.StringProperty(attr="value_2", name="Value", description="Toggle value (as a string)", maxlen= 1024, default= "") bpy.props.StringProperty(attr="value_2", name="Value", description="Toggle enum", maxlen= 1024, default= "")
] ]
def execute(self, context): def execute(self, context):
exec("context.%s = [%s, %s][context.%s!=%s]" % (self.path, self.value_1, self.value_2, self.path, self.value_2)) # security nuts will complain. exec("context.%s = ['%s', '%s'][context.%s!='%s']" % (self.path, self.value_1, self.value_2, self.path, self.value_2)) # security nuts will complain.
return ('FINISHED',) return ('FINISHED',)
class WM_OT_context_cycle_enum(bpy.types.Operator): class WM_OT_context_cycle_enum(bpy.types.Operator):
'''Toggle a context value.''' '''Toggle a context value.'''
__idname__ = "wm.context_cycle_enum" __idname__ = "wm.context_cycle_enum"
__label__ = "Context Enum Cycle" __label__ = "Context Enum Cycle"
__props__ = [ __props__ = [rna_path_prop, bpy.props.BoolProperty(attr="reverse", name="Reverse", description="Cycle backwards", default= False)]
bpy.props.StringProperty(attr="path", name="Context Attributes", description="rna context string", maxlen= 1024, default= ""),
bpy.props.BoolProperty(attr="reverse", name="Reverse", description="Cycle backwards", default= False)
]
def execute(self, context): def execute(self, context):
orig_value = eval("context.%s" % self.path) # security nuts will complain. orig_value = eval("context.%s" % self.path) # security nuts will complain.
@@ -233,8 +259,12 @@ class WM_OT_context_cycle_enum(bpy.types.Operator):
bpy.ops.add(MESH_OT_delete_edgeloop) bpy.ops.add(MESH_OT_delete_edgeloop)
bpy.ops.add(WM_OT_context_set) bpy.ops.add(WM_OT_context_set_boolean)
bpy.ops.add(WM_OT_context_set_int)
bpy.ops.add(WM_OT_context_set_float)
bpy.ops.add(WM_OT_context_set_string)
bpy.ops.add(WM_OT_context_set_enum)
bpy.ops.add(WM_OT_context_toggle) bpy.ops.add(WM_OT_context_toggle)
bpy.ops.add(WM_OT_context_toggle_values) bpy.ops.add(WM_OT_context_toggle_enum)
bpy.ops.add(WM_OT_context_cycle_enum) bpy.ops.add(WM_OT_context_cycle_enum)

View File

@@ -281,15 +281,15 @@ void ED_object_generic_keymap(struct wmKeyConfig *keyconf, struct wmKeyMap *keym
km = WM_keymap_add_item(keymap, "WM_OT_context_cycle_enum", OKEY, KM_PRESS, KM_SHIFT, 0); km = WM_keymap_add_item(keymap, "WM_OT_context_cycle_enum", OKEY, KM_PRESS, KM_SHIFT, 0);
RNA_string_set(km->ptr, "path", "scene.tool_settings.proportional_editing_falloff"); RNA_string_set(km->ptr, "path", "scene.tool_settings.proportional_editing_falloff");
km = WM_keymap_add_item(keymap, "WM_OT_context_toggle_values", OKEY, KM_PRESS, 0, 0); km = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", OKEY, KM_PRESS, 0, 0);
RNA_string_set(km->ptr, "path", "scene.tool_settings.proportional_editing"); RNA_string_set(km->ptr, "path", "scene.tool_settings.proportional_editing");
RNA_string_set(km->ptr, "value_1", "'DISABLED'"); RNA_string_set(km->ptr, "value_1", "DISABLED");
RNA_string_set(km->ptr, "value_2", "'ENABLED'"); RNA_string_set(km->ptr, "value_2", "ENABLED");
km = WM_keymap_add_item(keymap, "WM_OT_context_toggle_values", OKEY, KM_PRESS, KM_ALT, 0); km = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", OKEY, KM_PRESS, KM_ALT, 0);
RNA_string_set(km->ptr, "path", "scene.tool_settings.proportional_editing"); RNA_string_set(km->ptr, "path", "scene.tool_settings.proportional_editing");
RNA_string_set(km->ptr, "value_1", "'DISABLED'"); RNA_string_set(km->ptr, "value_1", "DISABLED");
RNA_string_set(km->ptr, "value_2", "'CONNECTED'"); RNA_string_set(km->ptr, "value_2", "CONNECTED");
} }
} }

View File

@@ -174,20 +174,20 @@ void view3d_keymap(wmKeyConfig *keyconf)
/* drawtype */ /* drawtype */
km = WM_keymap_add_item(keymap, "WM_OT_context_toggle_values", ZKEY, KM_PRESS, 0, 0); km = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", ZKEY, KM_PRESS, 0, 0);
RNA_string_set(km->ptr, "path", "space_data.viewport_shading"); RNA_string_set(km->ptr, "path", "space_data.viewport_shading");
RNA_string_set(km->ptr, "value_1", "'SOLID'"); RNA_string_set(km->ptr, "value_1", "SOLID");
RNA_string_set(km->ptr, "value_2", "'WIREFRAME'"); RNA_string_set(km->ptr, "value_2", "WIREFRAME");
km = WM_keymap_add_item(keymap, "WM_OT_context_toggle_values", ZKEY, KM_PRESS, KM_ALT, 0); km = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", ZKEY, KM_PRESS, KM_ALT, 0);
RNA_string_set(km->ptr, "path", "space_data.viewport_shading"); RNA_string_set(km->ptr, "path", "space_data.viewport_shading");
RNA_string_set(km->ptr, "value_1", "'TEXTURED'"); RNA_string_set(km->ptr, "value_1", "TEXTURED");
RNA_string_set(km->ptr, "value_2", "'SOLID'"); RNA_string_set(km->ptr, "value_2", "SOLID");
km = WM_keymap_add_item(keymap, "WM_OT_context_toggle_values", ZKEY, KM_PRESS, KM_SHIFT, 0); km = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", ZKEY, KM_PRESS, KM_SHIFT, 0);
RNA_string_set(km->ptr, "path", "space_data.viewport_shading"); RNA_string_set(km->ptr, "path", "space_data.viewport_shading");
RNA_string_set(km->ptr, "value_1", "'SHADED'"); RNA_string_set(km->ptr, "value_1", "SHADED");
RNA_string_set(km->ptr, "value_2", "'WIREFRAME'"); RNA_string_set(km->ptr, "value_2", "WIREFRAME");
/* selection*/ /* selection*/
WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, 0, 0);
@@ -225,28 +225,28 @@ void view3d_keymap(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "VIEW3D_OT_snap_menu", SKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_add_item(keymap, "VIEW3D_OT_snap_menu", SKEY, KM_PRESS, KM_SHIFT, 0);
/* context ops */ /* context ops */
km = WM_keymap_add_item(keymap, "WM_OT_context_set", COMMAKEY, KM_PRESS, 0, 0); km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", COMMAKEY, KM_PRESS, 0, 0);
RNA_string_set(km->ptr, "path", "space_data.pivot_point"); RNA_string_set(km->ptr, "path", "space_data.pivot_point");
RNA_string_set(km->ptr, "value", "'BOUNDING_BOX_CENTER'"); RNA_string_set(km->ptr, "value", "BOUNDING_BOX_CENTER");
km = WM_keymap_add_item(keymap, "WM_OT_context_set", COMMAKEY, KM_PRESS, KM_CTRL, 0); /* 2.4x allowed Comma+Shift too, rather not use both */ km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", COMMAKEY, KM_PRESS, KM_CTRL, 0); /* 2.4x allowed Comma+Shift too, rather not use both */
RNA_string_set(km->ptr, "path", "space_data.pivot_point"); RNA_string_set(km->ptr, "path", "space_data.pivot_point");
RNA_string_set(km->ptr, "value", "'MEDIAN_POINT'"); RNA_string_set(km->ptr, "value", "MEDIAN_POINT");
km = WM_keymap_add_item(keymap, "WM_OT_context_toggle", COMMAKEY, KM_PRESS, KM_ALT, 0); /* new in 2.5 */ km = WM_keymap_add_item(keymap, "WM_OT_context_toggle", COMMAKEY, KM_PRESS, KM_ALT, 0); /* new in 2.5 */
RNA_string_set(km->ptr, "path", "space_data.pivot_point_align"); RNA_string_set(km->ptr, "path", "space_data.pivot_point_align");
km = WM_keymap_add_item(keymap, "WM_OT_context_set", PERIODKEY, KM_PRESS, 0, 0); km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", PERIODKEY, KM_PRESS, 0, 0);
RNA_string_set(km->ptr, "path", "space_data.pivot_point"); RNA_string_set(km->ptr, "path", "space_data.pivot_point");
RNA_string_set(km->ptr, "value", "'CURSOR'"); RNA_string_set(km->ptr, "value", "CURSOR");
km = WM_keymap_add_item(keymap, "WM_OT_context_set", PERIODKEY, KM_PRESS, KM_CTRL, 0); km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", PERIODKEY, KM_PRESS, KM_CTRL, 0);
RNA_string_set(km->ptr, "path", "space_data.pivot_point"); RNA_string_set(km->ptr, "path", "space_data.pivot_point");
RNA_string_set(km->ptr, "value", "'INDIVIDUAL_CENTERS'"); RNA_string_set(km->ptr, "value", "INDIVIDUAL_CENTERS");
km = WM_keymap_add_item(keymap, "WM_OT_context_set", PERIODKEY, KM_PRESS, KM_ALT, 0); km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", PERIODKEY, KM_PRESS, KM_ALT, 0);
RNA_string_set(km->ptr, "path", "space_data.pivot_point"); RNA_string_set(km->ptr, "path", "space_data.pivot_point");
RNA_string_set(km->ptr, "value", "'ACTIVE_ELEMENT'"); RNA_string_set(km->ptr, "value", "ACTIVE_ELEMENT");
transform_keymap_for_space(keyconf, keymap, SPACE_VIEW3D); transform_keymap_for_space(keyconf, keymap, SPACE_VIEW3D);

View File

@@ -2220,52 +2220,52 @@ void wm_window_keymap(wmKeyConfig *keyconf)
/* Space switching */ /* Space switching */
km = WM_keymap_add_item(keymap, "WM_OT_context_set", F2KEY, KM_PRESS, KM_SHIFT, 0); /* new in 2.5x, was DXF export */ km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F2KEY, KM_PRESS, KM_SHIFT, 0); /* new in 2.5x, was DXF export */
RNA_string_set(km->ptr, "path", "area.type"); RNA_string_set(km->ptr, "path", "area.type");
RNA_string_set(km->ptr, "value", "'LOGIC_EDITOR'"); RNA_string_set(km->ptr, "value", "LOGIC_EDITOR");
km = WM_keymap_add_item(keymap, "WM_OT_context_set", F3KEY, KM_PRESS, KM_SHIFT, 0); km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F3KEY, KM_PRESS, KM_SHIFT, 0);
RNA_string_set(km->ptr, "path", "area.type"); RNA_string_set(km->ptr, "path", "area.type");
RNA_string_set(km->ptr, "value", "'NODE_EDITOR'"); RNA_string_set(km->ptr, "value", "NODE_EDITOR");
km = WM_keymap_add_item(keymap, "WM_OT_context_set", F4KEY, KM_PRESS, KM_SHIFT, 0); /* new in 2.5x, was data browser */ km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F4KEY, KM_PRESS, KM_SHIFT, 0); /* new in 2.5x, was data browser */
RNA_string_set(km->ptr, "path", "area.type"); RNA_string_set(km->ptr, "path", "area.type");
RNA_string_set(km->ptr, "value", "'CONSOLE'"); RNA_string_set(km->ptr, "value", "CONSOLE");
km = WM_keymap_add_item(keymap, "WM_OT_context_set", F5KEY, KM_PRESS, KM_SHIFT, 0); km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F5KEY, KM_PRESS, KM_SHIFT, 0);
RNA_string_set(km->ptr, "path", "area.type"); RNA_string_set(km->ptr, "path", "area.type");
RNA_string_set(km->ptr, "value", "'VIEW_3D'"); RNA_string_set(km->ptr, "value", "VIEW_3D");
km = WM_keymap_add_item(keymap, "WM_OT_context_set", F6KEY, KM_PRESS, KM_SHIFT, 0); km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F6KEY, KM_PRESS, KM_SHIFT, 0);
RNA_string_set(km->ptr, "path", "area.type"); RNA_string_set(km->ptr, "path", "area.type");
RNA_string_set(km->ptr, "value", "'GRAPH_EDITOR'"); RNA_string_set(km->ptr, "value", "GRAPH_EDITOR");
km = WM_keymap_add_item(keymap, "WM_OT_context_set", F7KEY, KM_PRESS, KM_SHIFT, 0); km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F7KEY, KM_PRESS, KM_SHIFT, 0);
RNA_string_set(km->ptr, "path", "area.type"); RNA_string_set(km->ptr, "path", "area.type");
RNA_string_set(km->ptr, "value", "'PROPERTIES'"); RNA_string_set(km->ptr, "value", "PROPERTIES");
km = WM_keymap_add_item(keymap, "WM_OT_context_set", F8KEY, KM_PRESS, KM_SHIFT, 0); km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F8KEY, KM_PRESS, KM_SHIFT, 0);
RNA_string_set(km->ptr, "path", "area.type"); RNA_string_set(km->ptr, "path", "area.type");
RNA_string_set(km->ptr, "value", "'SEQUENCE_EDITOR'"); RNA_string_set(km->ptr, "value", "SEQUENCE_EDITOR");
km = WM_keymap_add_item(keymap, "WM_OT_context_set", F9KEY, KM_PRESS, KM_SHIFT, 0); km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F9KEY, KM_PRESS, KM_SHIFT, 0);
RNA_string_set(km->ptr, "path", "area.type"); RNA_string_set(km->ptr, "path", "area.type");
RNA_string_set(km->ptr, "value", "'OUTLINER'"); RNA_string_set(km->ptr, "value", "OUTLINER");
km = WM_keymap_add_item(keymap, "WM_OT_context_set", F9KEY, KM_PRESS, KM_SHIFT, 0); km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F9KEY, KM_PRESS, KM_SHIFT, 0);
RNA_string_set(km->ptr, "path", "area.type"); RNA_string_set(km->ptr, "path", "area.type");
RNA_string_set(km->ptr, "value", "'OUTLINER'"); RNA_string_set(km->ptr, "value", "OUTLINER");
km = WM_keymap_add_item(keymap, "WM_OT_context_set", F10KEY, KM_PRESS, KM_SHIFT, 0); km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F10KEY, KM_PRESS, KM_SHIFT, 0);
RNA_string_set(km->ptr, "path", "area.type"); RNA_string_set(km->ptr, "path", "area.type");
RNA_string_set(km->ptr, "value", "'IMAGE_EDITOR'"); RNA_string_set(km->ptr, "value", "IMAGE_EDITOR");
km = WM_keymap_add_item(keymap, "WM_OT_context_set", F11KEY, KM_PRESS, KM_SHIFT, 0); km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F11KEY, KM_PRESS, KM_SHIFT, 0);
RNA_string_set(km->ptr, "path", "area.type"); RNA_string_set(km->ptr, "path", "area.type");
RNA_string_set(km->ptr, "value", "'TEXT_EDITOR'"); RNA_string_set(km->ptr, "value", "TEXT_EDITOR");
km = WM_keymap_add_item(keymap, "WM_OT_context_set", F12KEY, KM_PRESS, KM_SHIFT, 0); km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F12KEY, KM_PRESS, KM_SHIFT, 0);
RNA_string_set(km->ptr, "path", "area.type"); RNA_string_set(km->ptr, "path", "area.type");
RNA_string_set(km->ptr, "value", "'DOPESHEET_EDITOR'"); RNA_string_set(km->ptr, "value", "DOPESHEET_EDITOR");
} }