Poof of Corncept

bl_info = {    "name": "example",    "author": "[email protected]",    "version": (1, 0),    "blender": (2, 5, 8),    "api": 37702,    "location": "View3D > UI > example",    "description": "perhaps this is a better example.",    "warning": "",    "wiki_url": "",    "tracker_url": "",    "category": "3D View"}
import bpy
ops=[]
OPS=[]
class OpSettings(bpy.types.PropertyGroup):
    n=bpy.props.IntProperty(min=2,max=99)
bpy.utils.register_class(OpSettings)
bpy.types.Object.opset=bpy.props.PointerProperty(type=OpSettings)

class Op(bpy.types.Operator):
    @classmethod
    def poll(self,context):return context.active_object!=None
    def invoke(self,context,event):
        self.ob=context.active_object
        bpy.ops.object.mode_set(mode='OBJECT')
        self.execute(context)
        bpy.ops.object.mode_set(mode='EDIT')
        return {'FINISHED'}
    def execute(self,context):self.f(context)



class automagic_panel(bpy.types.Panel):
    bl_label,bl_space_type,bl_region_type=['example','VIEW_3D','UI']
    def draw(self,context):
        self.layout.row().prop(context.active_object.opset, "n")        
        list(map(lambda  x:self.layout.row().operator(x),ops))
def MakeOp(f):
    fn='object.'+f.__name__
    FN='OBJECT_OT_'+f.__name__
    OP=type(FN,(Op,),{'bl_idname':fn,'bl_label':f.__name__.replace("_"," "),'f':f})
    OPS.append(OP)
    ops.append(fn)
    return f

def sl(x):x.select=True
def nv(x):x.select=not x.select
sel=lambda x:sl(x)
inv=lambda x:nv(x)
ptp=lambda x:print(type(x))
lsm=lambda x,y:list(map(x,y))
seln=lambda x,y:lsm(sel,[x[i] for i in range(0,len(x),y)])
flipn=lambda x,y:lsm(inv,[x[i] for i in range(0,len(x),y)])

@MakeOp
def sel_n_v(op,c):
    bpy.context.tool_settings.mesh_select_mode=[True,False,False]
    seln(op.ob.data.vertices,op.ob.opset.n)
@MakeOp
def sel_n_e(op,c):
    bpy.context.tool_settings.mesh_select_mode=[False,True,False]
    seln(op.ob.data.edges,op.ob.opset.n)
@MakeOp
def sel_n_f(op,c):
    bpy.context.tool_settings.mesh_select_mode=[False,False,True]
    seln(op.ob.data.faces,op.ob.opset.n)


@MakeOp
def flip_n_v(op,c):
    bpy.context.tool_settings.mesh_select_mode=[True,False,False]
    flipn(op.ob.data.vertices,op.ob.opset.n)
@MakeOp
def flip_n_e(op,c):
    bpy.context.tool_settings.mesh_select_mode=[False,True,False]
    flipn(op.ob.data.edges,op.ob.opset.n)
@MakeOp
def flip_n_f(op,c):
    bpy.context.tool_settings.mesh_select_mode=[False,False,True]
    flipn(op.ob.data.faces,op.ob.opset.n)


registry=OPS+[automagic_panel]
def register():list(map(lambda x:bpy.utils.register_class(x),registry))
def unregister():list(map(lambda x:bpy.utils.unregister_class(x),registry))
if __name__=='__main__':register()