Amaranth Addon
[blender-addons-contrib.git] / amaranth / node_editor / templates / __init__.py
1 #  This program is free software; you can redistribute it and/or
2 #  modify it under the terms of the GNU General Public License
3 #  as published by the Free Software Foundation; either version 2
4 #  of the License, or (at your option) any later version.
5 #
6 #  This program is distributed in the hope that it will be useful,
7 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
8 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
9 #  GNU General Public License for more details.
10 #
11 #  You should have received a copy of the GNU General Public License
12 #  along with this program; if not, write to the Free Software Foundation,
13 #  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
14 """
15 Node Templates - Vignette, Vector Blur
16
17 Add a set of nodes with one click, in this version I added a "Vignette"
18 as first example.
19
20 There is no official way to make a vignette, this is just my approach at
21 it. Templates: On the Compositor's header, "Template" pulldown. Or hit W.
22 Vignette: Adjust the size and position of the vignette with the Ellipse
23 Mask's X/Y and width, height values.
24 """
25
26 import bpy
27 from amaranth.node_editor.templates.vectorblur import AMTH_NODE_OT_AddTemplateVectorBlur
28 from amaranth.node_editor.templates.vignette import AMTH_NODE_OT_AddTemplateVignette
29
30
31 KEYMAPS = list()
32
33
34 # Node Templates Menu
35 class AMTH_NODE_MT_amaranth_templates(bpy.types.Menu):
36     bl_idname = 'AMTH_NODE_MT_amaranth_templates'
37     bl_space_type = 'NODE_EDITOR'
38     bl_label = "Templates"
39     bl_description = "List of Amaranth Templates"
40
41     def draw(self, context):
42         layout = self.layout
43         layout.operator(
44             AMTH_NODE_OT_AddTemplateVectorBlur.bl_idname,
45             text="Vector Blur",
46             icon='FORCE_HARMONIC')
47         layout.operator(
48             AMTH_NODE_OT_AddTemplateVignette.bl_idname,
49             text="Vignette",
50             icon='COLOR')
51
52
53 def node_templates_pulldown(self, context):
54     if context.space_data.tree_type == 'CompositorNodeTree':
55         layout = self.layout
56         row = layout.row(align=True)
57         row.scale_x = 1.3
58         row.menu("AMTH_NODE_MT_amaranth_templates",
59                  icon="NODETREE")
60
61
62 def register():
63     bpy.utils.register_class(AMTH_NODE_MT_amaranth_templates)
64     bpy.utils.register_class(AMTH_NODE_OT_AddTemplateVignette)
65     bpy.utils.register_class(AMTH_NODE_OT_AddTemplateVectorBlur)
66     bpy.types.NODE_HT_header.append(node_templates_pulldown)
67     kc = bpy.context.window_manager.keyconfigs.addon
68     km = kc.keymaps.new(name="Node Editor", space_type="NODE_EDITOR")
69     kmi = km.keymap_items.new("wm.call_menu", "W", "PRESS")
70     kmi.properties.name = "AMTH_NODE_MT_amaranth_templates"
71     KEYMAPS.append((km, kmi))
72
73
74 def unregister():
75     bpy.utils.unregister_class(AMTH_NODE_MT_amaranth_templates)
76     bpy.utils.unregister_class(AMTH_NODE_OT_AddTemplateVignette)
77     bpy.utils.unregister_class(AMTH_NODE_OT_AddTemplateVectorBlur)
78     bpy.types.NODE_HT_header.remove(node_templates_pulldown)
79     for km, kmi in KEYMAPS:
80         km.keymap_items.remove(kmi)
81     KEYMAPS.clear()