That’s even easier. Just use the keymap item’s operator properties
import bpy
def execute_func(self, context):
context.object.location = self.location
context.object.hide_set(self.hidden)
class VIEW3D_PT_custom_redo_panel(bpy.types.Panel):
bl_label = "Custom Redo Panel"
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_category = "Tool"
def draw(self, context):
layout = self.layout
col = layout.column()
col.prop(kmi.properties, "location")
col.prop(kmi.properties, "hidden")
op = col.operator("object.simple_operator", text="Execute")
op.location = kmi.properties.location
op.hidden = kmi.properties.hidden
class OBJECT_OT_simple_operator(bpy.types.Operator):
bl_idname = "object.simple_operator"
bl_label = "Simple Object Operator"
bl_options = {'REGISTER', 'UNDO'}
location: bpy.props.FloatVectorProperty(size=3)
hidden: bpy.props.BoolProperty()
def execute(self, context):
execute_func(self, context)
return {'FINISHED'}
if __name__ == "__main__":
bpy.utils.register_class(VIEW3D_PT_custom_redo_panel)
bpy.utils.register_class(OBJECT_OT_simple_operator)
kmi = bpy.context.window_manager.keyconfigs.addon.keymaps['3D View'].keymap_items.new("object.simple_operator", "NONE", "ANY")