cebe58291d8e2c829a53927809df19dbefac05a2
[blender.git] / release / scripts / startup / bl_ui / properties_animviz.py
1 # ##### BEGIN GPL LICENSE BLOCK #####
2 #
3 #  This program is free software; you can redistribute it and/or
4 #  modify it under the terms of the GNU General Public License
5 #  as published by the Free Software Foundation; either version 2
6 #  of the License, or (at your option) any later version.
7 #
8 #  This program is distributed in the hope that it will be useful,
9 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
10 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 #  GNU General Public License for more details.
12 #
13 #  You should have received a copy of the GNU General Public License
14 #  along with this program; if not, write to the Free Software Foundation,
15 #  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 #
17 # ##### END GPL LICENSE BLOCK #####
18
19 # <pep8 compliant>
20
21 # Generic Panels (Independent of DataType)
22
23 # NOTE:
24 # The specialised panel types are derived in their respective UI modules
25 # dont register these classes since they are only helpers.
26
27
28 class MotionPathButtonsPanel():
29     bl_space_type = 'PROPERTIES'
30     bl_region_type = 'WINDOW'
31     bl_label = "Motion Paths"
32     bl_options = {'DEFAULT_CLOSED'}
33
34     def draw_settings(self, context, avs, bones=False):
35         layout = self.layout
36
37         mps = avs.motion_path
38
39         layout.prop(mps, "type", expand=True)
40
41         split = layout.split()
42
43         col = split.column()
44         sub = col.column(align=True)
45         if (mps.type == 'CURRENT_FRAME'):
46             sub.prop(mps, "frame_before", text="Before")
47             sub.prop(mps, "frame_after", text="After")
48         elif (mps.type == 'RANGE'):
49             sub.prop(mps, "frame_start", text="Start")
50             sub.prop(mps, "frame_end", text="End")
51
52         sub.prop(mps, "frame_step", text="Step")
53         if bones:
54             col.row().prop(mps, "bake_location", expand=True)
55
56         col = split.column()
57         col.label(text="Display:")
58         col.prop(mps, "show_frame_numbers", text="Frame Numbers")
59         col.prop(mps, "show_keyframe_highlight", text="Keyframes")
60         if bones:
61             col.prop(mps, "show_keyframe_action_all", text="+ Non-Grouped Keyframes")
62         col.prop(mps, "show_keyframe_numbers", text="Keyframe Numbers")
63
64
65 # FIXME: this panel still needs to be ported so that it will work correctly with animviz
66 class OnionSkinButtonsPanel():
67     bl_space_type = 'PROPERTIES'
68     bl_region_type = 'WINDOW'
69     bl_label = "Onion Skinning"
70     bl_options = {'DEFAULT_CLOSED'}
71
72     def draw(self, context):
73         layout = self.layout
74
75         arm = context.armature
76
77         layout.prop(arm, "ghost_type", expand=True)
78
79         split = layout.split()
80
81         col = split.column()
82
83         sub = col.column(align=True)
84         if arm.ghost_type == 'RANGE':
85             sub.prop(arm, "ghost_frame_start", text="Start")
86             sub.prop(arm, "ghost_frame_end", text="End")
87             sub.prop(arm, "ghost_size", text="Step")
88         elif arm.ghost_type == 'CURRENT_FRAME':
89             sub.prop(arm, "ghost_step", text="Range")
90             sub.prop(arm, "ghost_size", text="Step")
91
92         col = split.column()
93         col.label(text="Display:")
94         col.prop(arm, "show_only_ghost_selected", text="Selected Only")