d75541feca0e8480382f20ddb8024f2663a5dba4
[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 from blf import gettext as _
27
28
29 class MotionPathButtonsPanel():
30     bl_space_type = 'PROPERTIES'
31     bl_region_type = 'WINDOW'
32     bl_label = "Motion Paths"
33     bl_options = {'DEFAULT_CLOSED'}
34
35     def draw_settings(self, context, avs, bones=False):
36         layout = self.layout
37
38         mps = avs.motion_path
39
40         layout.prop(mps, "type", expand=True)
41
42         split = layout.split()
43
44         col = split.column()
45         sub = col.column(align=True)
46         if (mps.type == 'CURRENT_FRAME'):
47             sub.prop(mps, "frame_before", text=_("Before"))
48             sub.prop(mps, "frame_after", text=_("After"))
49         elif (mps.type == 'RANGE'):
50             sub.prop(mps, "frame_start", text=_("Start"))
51             sub.prop(mps, "frame_end", text=_("End"))
52
53         sub.prop(mps, "frame_step", text=_("Step"))
54         if bones:
55             col.row().prop(mps, "bake_location", expand=True)
56
57         col = split.column()
58         col.label(text=_("Display:"))
59         col.prop(mps, "show_frame_numbers", text=_("Frame Numbers"))
60         col.prop(mps, "show_keyframe_highlight", text=_("Keyframes"))
61         if bones:
62             col.prop(mps, "show_keyframe_action_all", text=_("+ Non-Grouped Keyframes"))
63         col.prop(mps, "show_keyframe_numbers", text=_("Keyframe Numbers"))
64
65
66 # FIXME: this panel still needs to be ported so that it will work correctly with animviz
67 class OnionSkinButtonsPanel():
68     bl_space_type = 'PROPERTIES'
69     bl_region_type = 'WINDOW'
70     bl_label = "Onion Skinning"
71     bl_options = {'DEFAULT_CLOSED'}
72
73     def draw(self, context):
74         layout = self.layout
75
76         arm = context.armature
77
78         layout.prop(arm, "ghost_type", expand=True)
79
80         split = layout.split()
81
82         col = split.column()
83
84         sub = col.column(align=True)
85         if arm.ghost_type == 'RANGE':
86             sub.prop(arm, "ghost_frame_start", text=_("Start"))
87             sub.prop(arm, "ghost_frame_end", text=_("End"))
88             sub.prop(arm, "ghost_size", text=_("Step"))
89         elif arm.ghost_type == 'CURRENT_FRAME':
90             sub.prop(arm, "ghost_step", text=_("Range"))
91             sub.prop(arm, "ghost_size", text=_("Step"))
92
93         col = split.column()
94         col.label(text=_("Display:"))
95         col.prop(arm, "show_only_ghost_selected", text=_("Selected Only"))
96
97 if __name__ == "__main__":  # only for live edit.
98     import bpy
99     bpy.utils.register_module(__name__)