AutoDelete

Hi guys.
I’m trying to make a small creak that would blender himself understood that it is necessary to put far (without the context menu).
I encountered a problem that when you delete an object in the object mode occurs only if at least one active object, how to do that he would have worked even if there is no active among the selected object

video bug - https://monosnap.com/file/fj3BbUSYOk5iGFKaTCifQ8DUemjD5x

code

import bpy
bl_info = {
"name": "Smart Delete :)",
"location": "View3D > Add > Mesh > Smart Delete,",
"description": "Auto detect a delete elements",
"author": "Vladislav Kindushov",
"version": (0,1),
"blender": (2, 7, 7),
"category": "Mesh",
}






 
 
def find_connected_verts(me, found_index):  
    edges = me.edges  
    connecting_edges = [i for i in edges if found_index in i.vertices[:]]  
    print('connecting_edges',len(connecting_edges))
    return len(connecting_edges)  
 
 
 
class MeshDissolveContextual(bpy.types.Operator):
    """ Dissolves mesh elements based on context instead
    of forcing the user to select from a menu what
    it should dissolve.
    """
    bl_idname = "mesh.dissolve_contextual"
    bl_label = "Mesh Dissolve Contextual"
    bl_options = {'UNDO'}
   
    use_verts = bpy.props.BoolProperty(name="Use Verts", default=False)
 
    @classmethod
    def poll(cls, context):
        return (context.active_object is not None)# and (context.mode == "EDIT_MESH")
   
    def execute(self, context):
        if bpy.context.mode == 'OBJECT':
            bpy.ops.object.delete()
            print ('hello')
        elif bpy.context.mode == 'EDIT_MESH':
            select_mode = context.tool_settings.mesh_select_mode
            me = context.object.data
            if select_mode[0]:
                bpy.ops.mesh.dissolve_verts()
            elif select_mode[1] and not select_mode[2]:
                bpy.ops.mesh.dissolve_edges(use_verts=self.use_verts)
                bpy.ops.mesh.select_mode(type='VERT')
                bpy.ops.object.mode_set(mode='OBJECT')
                bpy.ops.object.mode_set(mode='EDIT')
                vs = [v.index for v in me.vertices if v.select]
                bpy.ops.mesh.select_all(action='DESELECT')
                bpy.ops.object.mode_set(mode='OBJECT')
               
                for v in vs:
                    vv = find_connected_verts(me, v)
                    if vv==2:
                        me.vertices[v].select = True
                bpy.ops.object.mode_set(mode='EDIT')
                bpy.ops.mesh.dissolve_verts()
                bpy.ops.mesh.select_all(action='DESELECT')
               
                for v in vs:
                    me.vertices[v].select = True


                   
            elif select_mode[2] and not select_mode[1]:
                bpy.ops.mesh.delete(type='FACE')
            else:
                bpy.ops.mesh.dissolve_verts()
           
        return {'FINISHED'}
 
bpy.utils.register_class(MeshDissolveContextual)
 




def register():
    #bpy.utils.register_class(SmartDelete)


    kc = bpy.context.window_manager.keyconfigs.addon
    if kc:
        km = kc.keymaps.new(name="3D View", space_type="VIEW_3D")
        kmi = km.keymap_items.new('mesh.dissolve_contextual', 'X', 'PRESS',)






def unregister():
    bpy.utils.unregister_class(MeshDissolveContextual)
    kc = bpy.context.window_manager.keyconfigs.addon
    if kc:
        km = kc.keymaps["3D View"]
        for kmi in km.keymap_items:
            if kmi.idname == 'mesh.dissolve_contextual':
                km.keymap_items.remove(kmi)
                break




if __name__ == "__main__":
    register()

I found the problem.
poll function returns an invalid argument

Release
Idea
file - https://drive.google.com/open?id=0B44RnfYzKt3cYXFVNW1iLXNhck0