124 lines
2.7 KiB
Python
124 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 .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()
|
||
|
|
||
|
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)
|