114 lines
2.7 KiB
Python
114 lines
2.7 KiB
Python
import bpy
|
|
|
|
from bpy.props import IntProperty, EnumProperty, BoolProperty
|
|
from bpy.types import AddonPreferences, GizmoGroup, Operator, Gizmo
|
|
|
|
from mathutils import Vector, Matrix, Euler
|
|
from .constants import PICKERS
|
|
from .core.picker import Picker
|
|
|
|
|
|
'''
|
|
class RP_OT_simple_operator(bpy.types.Operator):
|
|
"""Tooltip"""
|
|
bl_idname = "object.simple_operator"
|
|
bl_label = "Simple Object Operator"
|
|
|
|
|
|
def invoke(self, context, event):
|
|
|
|
context.window_manager.modal_handler_add(self)
|
|
|
|
print('Invoke RP_OT_simple_operator')
|
|
bpy.ops.node.rp_box_select('INVOKE_DEFAULT', tweak=True)
|
|
|
|
#bpy.ops.node.select_box('INVOKE_DEFAULT', wait_for_input=True, tweak=True)
|
|
|
|
return {'RUNNING_MODAL'}
|
|
|
|
def modal(self, context, event):
|
|
print('modal op', event.type, event.value)
|
|
|
|
return {'RUNNING_MODAL'}
|
|
|
|
def execute(self, context):
|
|
print('Select Shape')
|
|
return {'FINISHED'}
|
|
'''
|
|
|
|
|
|
class RP_GT_gizmo(Gizmo):
|
|
|
|
def test_select(self, context, location):
|
|
ob = context.object
|
|
|
|
picker = PICKERS.get(ob)
|
|
if not picker:
|
|
return -1
|
|
|
|
picker.move_event(location)
|
|
|
|
# if bpy.app.timers.is_registered(tooltip):
|
|
# bpy.app.timers.unregister(tooltip)
|
|
# context.region.tag_redraw()
|
|
|
|
# picker.tooltip_event(event='START')
|
|
# bpy.app.timers.register(partial(tooltip, context.region), first_interval=1)
|
|
|
|
# print(location)
|
|
|
|
context.region.tag_redraw()
|
|
|
|
# print(location)
|
|
|
|
return -1
|
|
|
|
def draw(self, context):
|
|
return
|
|
|
|
"""
|
|
def invoke(self, context, event):
|
|
print(f'invoke: type={event.type}, value={event.value}, ctrl={event.ctrl}, shift={event.shift}, alt={event.alt}')
|
|
return {'RUNNING_MODAL'}
|
|
|
|
def modal(self, context, event, tweak):
|
|
print(f'invoke: type={event.type}, value={event.value}, ctrl={event.ctrl}, shift={event.shift}, alt={event.alt}')
|
|
|
|
return {'RUNNING_MODAL'}
|
|
|
|
def exit(self, context, cancel):
|
|
print('EXIT')
|
|
|
|
"""
|
|
|
|
|
|
class RP_GT_gizmogroup(GizmoGroup):
|
|
"""test gizmo button 2d"""
|
|
|
|
bl_idname = "view3d.gizmo_button_2d"
|
|
bl_label = "Test button 2d"
|
|
bl_space_type = "NODE_EDITOR"
|
|
bl_region_type = "WINDOW"
|
|
bl_options = {"PERSISTENT"}
|
|
|
|
@classmethod
|
|
def poll(cls, context):
|
|
return context.space_data.tree_type == "RigPickerTree"
|
|
|
|
def setup(self, context):
|
|
self.gizmo = self.gizmos.new("RP_GT_gizmo")
|
|
|
|
|
|
classes = (RP_GT_gizmo, RP_GT_gizmogroup)
|
|
|
|
|
|
def register():
|
|
for cls in classes:
|
|
bpy.utils.register_class(cls)
|
|
|
|
|
|
def unregister():
|
|
|
|
for cls in reversed(classes):
|
|
bpy.utils.unregister_class(cls)
|