- move WM operators out of bpy_ops.py into their own file
authorCampbell Barton <ideasman42@gmail.com>
Wed, 4 Nov 2009 20:21:08 +0000 (20:21 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Wed, 4 Nov 2009 20:21:08 +0000 (20:21 +0000)
- fix operator template

release/scripts/modules/bpy_ops.py
release/scripts/op/wm.py [new file with mode: 0644]
release/scripts/templates/operator.py

index c30869669cc20b1ebb22e4f9c5ccbbda51ba2c25..55df062ac83be1df9c075c109ed6507755bdecc5 100644 (file)
@@ -186,365 +186,3 @@ class bpy_ops_submodule_op(object):
 
 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))
-            upload["title"] = 'RNA %s:%s' % s(self.doc_id, doc_orig)
-
-        upload["description"] = self.doc_new
-
-        self._send_xmlrpc(upload)
-
-        return ('FINISHED',)
-
-    def invoke(self, context, event):
-        wm = context.manager
-        wm.invoke_props_popup(self, event)
-        return ('RUNNING_MODAL',)
-
-
-bpy.ops.add(MESH_OT_delete_edgeloop)
-
-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_enum)
-bpy.ops.add(WM_OT_context_cycle_enum)
-bpy.ops.add(WM_OT_context_cycle_int)
-
-bpy.ops.add(WM_OT_doc_view)
-bpy.ops.add(WM_OT_doc_edit)
diff --git a/release/scripts/op/wm.py b/release/scripts/op/wm.py
new file mode 100644 (file)
index 0000000..98f5351
--- /dev/null
@@ -0,0 +1,359 @@
+import bpy
+
+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))
+            upload["title"] = 'RNA %s:%s' % s(self.doc_id, doc_orig)
+
+        upload["description"] = self.doc_new
+
+        self._send_xmlrpc(upload)
+
+        return ('FINISHED',)
+
+    def invoke(self, context, event):
+        wm = context.manager
+        wm.invoke_props_popup(self, event)
+        return ('RUNNING_MODAL',)
+
+
+bpy.ops.add(MESH_OT_delete_edgeloop)
+
+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_enum)
+bpy.ops.add(WM_OT_context_cycle_enum)
+bpy.ops.add(WM_OT_context_cycle_int)
+
+bpy.ops.add(WM_OT_doc_view)
+bpy.ops.add(WM_OT_doc_edit)
index 88e6a3270962fa691ea73abbfc0c5c9fc59324f5..7eb21ad4f8b2e2d5357b8fbd907eca9c34cf97e6 100644 (file)
@@ -19,6 +19,7 @@
 import bpy
 
 def write_some_data(context, path, use_some_setting):
+    print("running write_some_data...")
     pass
 
 from bpy.props import *
@@ -33,16 +34,18 @@ class ExportSomeData(bpy.types.Operator):
 
     # TODO, add better example props
     path = StringProperty(name="File Path", description="File path used for exporting the PLY file", maxlen= 1024, default= "")
-    use_some_setting = BoolProperty(name="Apply Modifiers", description="Apply Modifiers to the exported mesh", default= True)
+    use_setting = BoolProperty(name="Example Boolean", description="Example Tooltip", default= True)
 
     def poll(self, context):
         return context.active_object != None
 
     def execute(self, context):
-        if not self.is_property_set("path"):
-            raise Exception("filename not set")
 
-        write(self.path, context, use_setting, SOME_SETTING = self.use_some_setting)
+        # # Bug, currently isnt working
+        #if not self.is_property_set("path"):
+        #    raise Exception("filename not set")
+
+        write_some_data(self.path, context, self.use_setting)
 
         return ('FINISHED',)
 
@@ -53,11 +56,11 @@ class ExportSomeData(bpy.types.Operator):
             # File selector
             wm.add_fileselect(self) # will run self.execute()
             return ('RUNNING_MODAL',)
-        else if 0:
+        elif 0:
             # Redo popup
             wm.invoke_props_popup(self, event) #
             return ('RUNNING_MODAL',)
-        else if 0:
+        elif 0:
             return self.execute(context)