space_view3d_stored_views: initial working update 2.8
[blender-addons-contrib.git] / space_view3d_stored_views / __init__.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 bl_info = {
20     "name": "Stored Views",
21     "description": "Save and restore User defined views, pov, layers and display configs",
22     "author": "nfloyd, Francesco Siddi",
23     "version": (0, 3, 7),
24     "blender": (2, 80, 0),
25     "location": "View3D > Properties > Stored Views",
26     "warning": "",
27     "wiki_url": "https://wiki.blender.org/index.php/Extensions:2.5/"
28                 "Py/Scripts/3D_interaction/stored_views",
29     "category": "3D View"
30 }
31
32 """
33 ACKNOWLEDGMENT
34 ==============
35 import/export functionality is mostly based
36 on Bart Crouch's Theme Manager Addon
37
38 TODO: quadview complete support : investigate. Where's the data?
39 TODO: lock_camera_and_layers. investigate usage
40 TODO: list reordering
41
42 NOTE: logging setup has to be provided by the user in a separate config file
43     as Blender will not try to configure logging by default in an add-on
44     The Config File should be in the Blender Config folder > /scripts/startup/config_logging.py
45     For setting up /location of the config folder see:
46     https://docs.blender.org/manual/en/dev/getting_started/
47     installing/configuration/directories.html
48     For configuring logging itself in the file, general Python documentation should work
49     As the logging calls are not configured, they can be kept in the other modules of this add-on
50     and will not have output until the logging configuration is set up
51 """
52
53 # if "bpy" in locals():
54 #     import importlib
55 #     importlib.reload(core)
56 #     importlib.reload(ui)
57 #     importlib.reload(properties)
58 #     importlib.reload(operators)
59 #     importlib.reload(io)
60 # else:
61 import bpy
62 from . import core
63 from . import ui
64 from . import properties
65 from . import operators
66 from . import io
67
68
69 from bpy.props import (
70     BoolProperty,
71     IntProperty,
72     PointerProperty,
73 )
74 from bpy.types import (
75     AddonPreferences,
76     Operator,
77 )
78
79
80 class VIEW3D_stored_views_initialize(Operator):
81     bl_idname = "view3d.stored_views_initialize"
82     bl_label = "Initialize"
83
84     @classmethod
85     def poll(cls, context):
86         return not hasattr(bpy.types.Scene, 'stored_views')
87
88     def execute(self, context):
89         bpy.types.Scene.stored_views = PointerProperty(
90                                             type=properties.StoredViewsData
91                                             )
92         scenes = bpy.data.scenes
93         for scene in scenes:
94             core.DataStore.sanitize_data(scene)
95         return {'FINISHED'}
96
97
98 # Addon Preferences
99
100 class VIEW3D_stored_views_preferences(AddonPreferences):
101     bl_idname = __name__
102
103     # show_exporters : BoolProperty(
104     #     name="Enable I/O Operators",
105     #     default=False,
106     #     description="Enable Import/Export Operations in the UI:\n"
107     #                 "Import Stored Views preset,\n"
108     #                 "Export Stored Views preset and \n"
109     #                 "Import stored views from scene",
110     # )
111     view_3d_update_rate : IntProperty(
112         name="3D view update",
113         description="Update rate of the 3D view redraw\n"
114                     "Increse the value if the UI feels sluggish",
115         min=1, max=10,
116         default=1
117     )
118
119     def draw(self, context):
120         layout = self.layout
121
122         row = layout.row(align=True)
123         row.prop(self, "view_3d_update_rate", toggle=True)
124  #       row.prop(self, "show_exporters", toggle=True)
125
126
127 def register():
128     ui.register()
129     properties.register()
130     operators.register()
131     bpy.utils.register_class(VIEW3D_stored_views_initialize)
132     bpy.utils.register_class(VIEW3D_stored_views_preferences)
133
134
135 def unregister():
136     ui.unregister()
137     properties.unregister()
138     operators.unregister()
139     bpy.utils.unregister_class(VIEW3D_stored_views_initialize)
140     bpy.utils.unregister_class(VIEW3D_stored_views_preferences)
141     ui.VIEW3D_stored_views_draw.handle_remove(bpy.context)
142     if hasattr(bpy.types.Scene, "stored_views"):
143         del bpy.types.Scene.stored_views
144
145
146 if __name__ == "__main__":
147     register()