Why does removing the dot from bl_idname break my addon? I've made an export script, sorry to say much of it is copy paste coding.

It was working fine, but now:



There should be an extra menuitem 'Waveller' -- it was there and it was working, but it has just disappeared!  ARGH!

I must have done a nono while refactoring the code.

I have tried removing and adding in:



What is going wrong?

Here is my code:

bl_info = {
    "name":         "Waveller",
    "author":       "π",
    "version":      (0, 0),
    "blender":      (2, 6, 2),
    "location":     "File &gt; Import-Export &gt; Waveller",
    "description":  "Export Verts and Faces in Waveller Format",
    "warning":      "",
    "wiki_url":     "http://www.waveller.com",
    "category":     "Import-Export"
}

if "bpy" in locals():
    import imp
    if "export_waveller" in locals():
        imp.reload( export_waveller )
else:
    import bpy

from bpy.props import StringProperty, BoolProperty


class WavellerExporter( bpy.types.Operator ):
    '''Save in Waveller format'''
    bl_idname = "export_waveller.vert"
    bl_label = "Export Waveller"

    filepath = StringProperty(
            subtype='FILE_PATH',
            )

    check_existing = BoolProperty(
            name = "Check Existing",
            description = "Check and warn on overwriting existing files",
            default = True,
            options = { 'HIDDEN' },
            )

    def execute( self, context ):
        from . import export_waveller
        export_waveller.export_all( self.filepath )

        return {'FINISHED'}

    def invoke( self, context, event ):
        if not self.filepath:
            self.filepath = bpy.data.filepath
        # bpy.path.ensure_ext(bpy.data.filepath, "")
        wm = context.window_manager
        wm.fileselect_add( self )
        return { 'RUNNING_MODAL' }


def menu_export( self, context ):
    self.layout.operator(
                         WavellerExporter.bl_idname,
                         text = "Waveller"
                         )


def register():
    bpy.utils.register_module( __name__ )

    bpy.types.INFO_MT_file_export.append( menu_export )


def unregister():
    bpy.utils.unregister_module( __name__ )

    bpy.types.INFO_MT_file_export.remove( menu_export )

if __name__ == "__main__":
    register()


I did do a bit of fiddling, I remember changing:

bl_idname = "export_waveller.vert"


to

bl_idname = "export_waveller"


(changing it back doesn't fix this)

Well if anyone can put me right I'm very grateful. Also, corrections to any hideousnesses you see lurking in the code are most welcome!
It was that line!

Can anyone tell me why I'm not allowed to change bl_idname from "export_waveller.vert" to "export_waveller"?

My only guess is that this string is used as a token somewhere, and changing it creates some disparity.

I don't see why resetting factory settings doesn't cure this...

Anyone?