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 > Import-Export > 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!