Amaranth Addon
[blender-addons-contrib.git] / amaranth / __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 Amaranth
16
17 Using Blender every day, you get to change little things on it to speedup
18 your workflow. The problem is when you have to switch computers with
19 somebody else's Blender, it sucks.
20 That's the main reason behind Amaranth. I ported all sort of little changes
21 I find useful into this addon.
22
23 What is it about? Anything, whatever I think it can speedup workflow,
24 I'll try to add it. Enjoy <3
25 """
26
27 import sys
28
29 # import amaranth's modules
30
31 # NOTE: avoid local imports whenever possible!
32 # Thanks to Christopher Crouzet for let me know about this.
33 # http://stackoverflow.com/questions/13392038/python-making-a-class-variable-static-even-when-a-module-is-imported-in-differe
34
35 from amaranth import prefs
36
37 from amaranth.modeling import symmetry_tools
38
39 from amaranth.scene import (
40     refresh,
41     save_reload,
42     current_blend,
43     stats,
44     goto_library,
45     debug,
46     material_remove_unassigned,
47     )
48
49 from amaranth.node_editor import (
50     id_panel,
51     display_image,
52     templates,
53     simplify_nodes,
54     node_stats,
55     normal_node,
56     switch_material,
57     node_shader_extra,
58     )
59
60 from amaranth.render import (
61     border_camera,
62     meshlight_add,
63     meshlight_select,
64     passepartout,
65     only_render,
66     unsimplify,
67     final_resolution,
68     samples_scene,
69     remember_layers,
70     render_output_z,
71     )
72
73 from amaranth.animation import (
74     timeline_extra_info,
75     frame_current,
76     motion_paths,
77     jump_frames,
78     )
79
80 from amaranth.misc import (
81     dopesheet_grapheditor,
82     color_management,
83     dupli_group_id,
84     toggle_wire,
85     sequencer_extra_info,
86     )
87
88
89 # register the addon + modules found in globals()
90 bl_info = {
91     "name": "Amaranth Toolset",
92     "author": "Pablo Vazquez, Bassam Kurdali, Sergey Sharybin, Lukas Tönne, Cesar Saez",
93     "version": (1, 0, 0),
94     "blender": (2, 73),
95     "location": "Everywhere!",
96     "description": "A collection of tools and settings to improve productivity",
97     "warning": "",
98     "wiki_url": "http://pablovazquez.org/amaranth",
99     "tracker_url": "",
100     "category": "Scene",
101 }
102
103
104 def _call_globals(attr_name):
105     for m in globals().values():
106         if hasattr(m, attr_name):
107             getattr(m, attr_name)()
108
109
110 def _flush_modules(pkg_name):
111     pkg_name = pkg_name.lower()
112     for k in tuple(sys.modules.keys()):
113         if k.lower().startswith(pkg_name):
114             del sys.modules[k]
115
116
117 def register():
118     _call_globals("register")
119
120
121 def unregister():
122     _call_globals("unregister")
123     _flush_modules("amaranth")  # reload amaranth