Cleanup: use staticmethod where appropriate
[blender.git] / release / scripts / templates_py / gizmo_operator_target.py
1 # Example of a gizmo that activates an operator
2 # using the predefined dial gizmo to change the camera roll.
3 #
4 # Usage: Run this script and select a camera in the 3D view.
5 #
6 import bpy
7 from bpy.types import (
8     GizmoGroup,
9 )
10
11
12 class MyCameraWidgetGroup(GizmoGroup):
13     bl_idname = "OBJECT_GGT_test_camera"
14     bl_label = "Object Camera Test Widget"
15     bl_space_type = 'VIEW_3D'
16     bl_region_type = 'WINDOW'
17     bl_options = {'3D', 'PERSISTENT'}
18
19     @classmethod
20     def poll(cls, context):
21         ob = context.object
22         return (ob and ob.type == 'CAMERA')
23
24     def setup(self, context):
25         # Run an operator using the dial gizmo
26         ob = context.object
27         mpr = self.gizmos.new("GIZMO_GT_dial_3d")
28         props = mpr.target_set_operator("transform.rotate")
29         props.constraint_axis = False, False, True
30         props.orient_type = 'LOCAL'
31         props.release_confirm = True
32
33         mpr.matrix_basis = ob.matrix_world.normalized()
34         mpr.line_width = 3
35
36         mpr.color = 0.8, 0.8, 0.8
37         mpr.alpha = 0.5
38
39         mpr.color_highlight = 1.0, 1.0, 1.0
40         mpr.alpha_highlight = 1.0
41
42         self.roll_widget = mpr
43
44     def refresh(self, context):
45         ob = context.object
46         mpr = self.roll_widget
47         mpr.matrix_basis = ob.matrix_world.normalized()
48
49
50 bpy.utils.register_class(MyCameraWidgetGroup)