[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [24322] trunk/blender/release/scripts: - move WM operators out of bpy_ops.py into their own file

Campbell Barton ideasman42 at gmail.com
Wed Nov 4 21:21:08 CET 2009


Revision: 24322
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24322
Author:   campbellbarton
Date:     2009-11-04 21:21:08 +0100 (Wed, 04 Nov 2009)

Log Message:
-----------
- move WM operators out of bpy_ops.py into their own file
- fix operator template

Modified Paths:
--------------
    trunk/blender/release/scripts/modules/bpy_ops.py
    trunk/blender/release/scripts/templates/operator.py

Added Paths:
-----------
    trunk/blender/release/scripts/op/wm.py

Modified: trunk/blender/release/scripts/modules/bpy_ops.py
===================================================================
--- trunk/blender/release/scripts/modules/bpy_ops.py	2009-11-04 20:19:41 UTC (rev 24321)
+++ trunk/blender/release/scripts/modules/bpy_ops.py	2009-11-04 20:21:08 UTC (rev 24322)
@@ -186,365 +186,3 @@
 
 import bpy
 bpy.ops = bpy_ops()
-
-# TODO, C macro's cant define settings :|
-
-from bpy.props import *
-
-
-class MESH_OT_delete_edgeloop(bpy.types.Operator):
-    '''Export a single object as a stanford PLY with normals,
-    colours and texture coordinates.'''
-    bl_idname = "mesh.delete_edgeloop"
-    bl_label = "Delete Edge Loop"
-
-    def execute(self, context):
-        bpy.ops.tfm.edge_slide(value=1.0)
-        bpy.ops.mesh.select_more()
-        bpy.ops.mesh.remove_doubles()
-        return ('FINISHED',)
-
-rna_path_prop = StringProperty(name="Context Attributes",
-        description="rna context string", maxlen=1024, default="")
-
-rna_reverse_prop = BoolProperty(name="Reverse",
-        description="Cycle backwards", default=False)
-
-
-class NullPathMember:
-    pass
-
-
-def context_path_validate(context, path):
-    import sys
-    try:
-        value = eval("context.%s" % path)
-    except AttributeError:
-        if "'NoneType'" in str(sys.exc_info()[1]):
-            # One of the items in the rna path is None, just ignore this
-            value = NullPathMember
-        else:
-            # We have a real error in the rna path, dont ignore that
-            raise
-
-    return value
-
-
-def execute_context_assign(self, context):
-    if context_path_validate(context, self.path) == NullPathMember:
-        return ('PASS_THROUGH',)
-
-    exec("context.%s=self.value" % self.path)
-    return ('FINISHED',)
-
-
-class WM_OT_context_set_boolean(bpy.types.Operator):
-    '''Set a context value.'''
-    bl_idname = "wm.context_set_boolean"
-    bl_label = "Context Set"
-
-    path = rna_path_prop
-    value = BoolProperty(name="Value",
-            description="Assignment value", default=True)
-
-    execute = execute_context_assign
-
-
-class WM_OT_context_set_int(bpy.types.Operator): # same as enum
-    '''Set a context value.'''
-    bl_idname = "wm.context_set_int"
-    bl_label = "Context Set"
-
-    path = rna_path_prop
-    value = IntProperty(name="Value", description="Assign value", default=0)
-
-    execute = execute_context_assign
-
-
-class WM_OT_context_set_float(bpy.types.Operator): # same as enum
-    '''Set a context value.'''
-    bl_idname = "wm.context_set_int"
-    bl_label = "Context Set"
-
-    path = rna_path_prop
-    value = FloatProperty(name="Value",
-            description="Assignment value", default=0.0)
-
-    execute = execute_context_assign
-
-
-class WM_OT_context_set_string(bpy.types.Operator): # same as enum
-    '''Set a context value.'''
-    bl_idname = "wm.context_set_string"
-    bl_label = "Context Set"
-
-    path = rna_path_prop
-    value = StringProperty(name="Value",
-            description="Assign value", maxlen=1024, default="")
-
-    execute = execute_context_assign
-
-
-class WM_OT_context_set_enum(bpy.types.Operator):
-    '''Set a context value.'''
-    bl_idname = "wm.context_set_enum"
-    bl_label = "Context Set"
-
-    path = rna_path_prop
-    value = StringProperty(name="Value",
-            description="Assignment value (as a string)",
-            maxlen=1024, default="")
-
-    execute = execute_context_assign
-
-
-class WM_OT_context_toggle(bpy.types.Operator):
-    '''Toggle a context value.'''
-    bl_idname = "wm.context_toggle"
-    bl_label = "Context Toggle"
-    path = rna_path_prop
-
-    def execute(self, context):
-
-        if context_path_validate(context, self.path) == NullPathMember:
-            return ('PASS_THROUGH',)
-
-        exec("context.%s=not (context.%s)" % (self.path, self.path))
-        return ('FINISHED',)
-
-
-class WM_OT_context_toggle_enum(bpy.types.Operator):
-    '''Toggle a context value.'''
-    bl_idname = "wm.context_toggle_enum"
-    bl_label = "Context Toggle Values"
-
-    path = rna_path_prop
-    value_1 = StringProperty(name="Value", \
-                description="Toggle enum", maxlen=1024, default="")
-
-    value_2 = StringProperty(name="Value", \
-                description="Toggle enum", maxlen=1024, default="")
-
-    def execute(self, context):
-
-        if context_path_validate(context, self.path) == NullPathMember:
-            return ('PASS_THROUGH',)
-
-        exec("context.%s = ['%s', '%s'][context.%s!='%s']" % \
-            (self.path, self.value_1, self.value_2, self.path, self.value_2))
-
-        return ('FINISHED',)
-
-
-class WM_OT_context_cycle_int(bpy.types.Operator):
-    '''Set a context value. Useful for cycling active material,
-    vertex keys, groups' etc.'''
-    bl_idname = "wm.context_cycle_int"
-    bl_label = "Context Int Cycle"
-    path = rna_path_prop
-    reverse = rna_reverse_prop
-
-    def execute(self, context):
-
-        value = context_path_validate(context, self.path)
-        if value == NullPathMember:
-            return ('PASS_THROUGH',)
-
-        self.value = value
-        if self.reverse:
-            self.value -= 1
-        else:
-            self.value += 1
-        execute_context_assign(self, context)
-
-        if self.value != eval("context.%s" % self.path):
-            # relies on rna clamping int's out of the range
-            if self.reverse:
-                self.value = (1 << 32)
-            else:
-                self.value = - (1 << 32)
-            execute_context_assign(self, context)
-
-        return ('FINISHED',)
-
-
-class WM_OT_context_cycle_enum(bpy.types.Operator):
-    '''Toggle a context value.'''
-    bl_idname = "wm.context_cycle_enum"
-    bl_label = "Context Enum Cycle"
-
-    path = rna_path_prop
-    reverse = rna_reverse_prop
-
-    def execute(self, context):
-
-        value = context_path_validate(context, self.path)
-        if value == NullPathMember:
-            return ('PASS_THROUGH',)
-
-        orig_value = value
-
-        # Have to get rna enum values
-        rna_struct_str, rna_prop_str = self.path.rsplit('.', 1)
-        i = rna_prop_str.find('[')
-
-        # just incse we get "context.foo.bar[0]"
-        if i != -1:
-            rna_prop_str = rna_prop_str[0:i]
-
-        rna_struct = eval("context.%s.rna_type" % rna_struct_str)
-
-        rna_prop = rna_struct.properties[rna_prop_str]
-
-        if type(rna_prop) != bpy.types.EnumProperty:
-            raise Exception("expected an enum property")
-
-        enums = rna_struct.properties[rna_prop_str].items.keys()
-        orig_index = enums.index(orig_value)
-
-        # Have the info we need, advance to the next item
-        if self.reverse:
-            if orig_index == 0:
-                advance_enum = enums[-1]
-            else:
-                advance_enum = enums[orig_index-1]
-        else:
-            if orig_index == len(enums) - 1:
-                advance_enum = enums[0]
-            else:
-                advance_enum = enums[orig_index + 1]
-
-        # set the new value
-        exec("context.%s=advance_enum" % self.path)
-        return ('FINISHED',)
-
-doc_id = StringProperty(name="Doc ID",
-        description="ID for the documentation", maxlen=1024, default="")
-
-doc_new = StringProperty(name="Doc New",
-        description="", maxlen=1024, default="")
-
-
-class WM_OT_doc_view(bpy.types.Operator):
-    '''Load online reference docs'''
-    bl_idname = "wm.doc_view"
-    bl_label = "View Documentation"
-
-    doc_id = doc_id
-    _prefix = 'http://www.blender.org/documentation/250PythonDoc'
-
-    def _nested_class_string(self, class_string):
-        ls = []
-        class_obj = getattr(bpy.types, class_string, None).bl_rna
-        while class_obj:
-            ls.insert(0, class_obj)
-            class_obj = class_obj.nested
-        return '.'.join([class_obj.identifier for class_obj in ls])
-
-    def execute(self, context):
-        id_split = self.doc_id.split('.')
-        if len(id_split) == 1: # rna, class
-            url = '%s/bpy.types.%s-class.html' % (self._prefix, id_split[0])
-        elif len(id_split) == 2: # rna, class.prop
-            class_name, class_prop = id_split
-
-            # It so happens that epydoc nests these
-            class_name_full = self._nested_class_string(class_name)
-
-            if hasattr(bpy.types, class_name.upper() + '_OT_' + class_prop):
-                url = '%s/bpy.ops.%s-module.html#%s' % \
-                        (self._prefix, class_name_full, class_prop)
-            else:
-                url = '%s/bpy.types.%s-class.html#%s' % \
-                        (self._prefix, class_name_full, class_prop)
-
-        else:
-            return ('PASS_THROUGH',)
-
-        import webbrowser
-        webbrowser.open(url)
-
-        return ('FINISHED',)
-
-
-class WM_OT_doc_edit(bpy.types.Operator):
-    '''Load online reference docs'''
-    bl_idname = "wm.doc_edit"
-    bl_label = "Edit Documentation"
-
-    doc_id = doc_id
-    doc_new = doc_new
-
-    _url = "http://www.mindrones.com/blender/svn/xmlrpc.php"
-
-    def _send_xmlrpc(self, data_dict):
-        print("sending data:", data_dict)
-
-        import xmlrpc.client
-        user = 'blenderuser'
-        pwd = 'blender>user'
-
-        docblog = xmlrpc.client.ServerProxy(self._url)
-        docblog.metaWeblog.newPost(1, user, pwd, data_dict, 1)
-
-    def execute(self, context):
-
-        class_name, class_prop = self.doc_id.split('.')
-
-        if not self.doc_new:
-            return 'OPERATOR_CANCELLED'
-
-        # check if this is an operator
-        op_name = class_name.upper() + '_OT_' + class_prop
-        op_class = getattr(bpy.types, op_name, None)
-
-        # Upload this to the web server
-        upload = {}
-
-        if op_class:
-            rna = op_class.bl_rna
-            doc_orig = rna.description
-            if doc_orig == self.doc_new:
-                return 'OPERATOR_CANCELLED'
-
-            print("op - old:'%s' -> new:'%s'" % (doc_orig, self.doc_new))
-            upload["title"] = 'OPERATOR %s:%s' % (self.doc_id, doc_orig)
-            upload["description"] = self.doc_new
-
-            self._send_xmlrpc(upload)
-
-        else:
-            rna = getattr(bpy.types, class_name).bl_rna
-            doc_orig = rna.properties[class_prop].description
-            if doc_orig == self.doc_new:
-                return 'OPERATOR_CANCELLED'
-
-            print("rna - old:'%s' -> new:'%s'" % (doc_orig, self.doc_new))

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list