[Bf-extensions-cvs] [32b977d] master: Stored Views: cleanup, refactor, various fixes
lijenstina
noreply at git.blender.org
Fri May 12 02:00:08 CEST 2017
Commit: 32b977d1b2f4abb9f09308636ba10c224c6a76f6
Author: lijenstina
Date: Fri May 12 01:59:08 2017 +0200
Branches: master
https://developer.blender.org/rBA32b977d1b2f4abb9f09308636ba10c224c6a76f6
Stored Views: cleanup, refactor, various fixes
Bumped version to 0.3.6
Pep 8 cleanup
Remove the logger setup, uncomment the log calls in the sripts
Replace deprecated imp call with importlib
Add AddonPreferences settings importers, draw update
Fix crash with New Camera To View
if there is no object present
Fix import, export BLSV crashes:
No file was selected during import
Pickle crashes during export with Vectors, Quaternions
Crash with import if the scene wasn't initialized
Finish the IO user interface switchable from the preferences
Finish Import from an another scene - scene selection
was missing making the feature not working
Replace type comparisons with isinstance
Fix the 3D view text alignment so it doesn't show bellow the
properties area
Fix the 3d view draw crash when opening the File Browser
Fix crash with Material enum missing in DisplayData
===================================================================
M stored_views/__init__.py
M stored_views/core.py
M stored_views/io.py
M stored_views/operators.py
M stored_views/properties.py
M stored_views/ui.py
===================================================================
diff --git a/stored_views/__init__.py b/stored_views/__init__.py
index cfc0beb..8deca8f 100644
--- a/stored_views/__init__.py
+++ b/stored_views/__init__.py
@@ -18,73 +18,113 @@
bl_info = {
"name": "Stored Views",
- "description": "Save and restore User defined views, pov, layers and display configs.",
+ "description": "Save and restore User defined views, pov, layers and display configs",
"author": "nfloyd, Francesco Siddi",
- "version": (0, 3, 4,),
+ "version": (0, 3, 6),
"blender": (2, 7, 8),
"location": "View3D > Properties > Stored Views",
- "warning": 'beta release, single view only',
- "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.5/Py/Scripts/3D_interaction/stored_views",
- "tracker_url": "https://developer.blender.org/maniphest/task/edit/form/2/",
+ "warning": "",
+ "wiki_url": "https://wiki.blender.org/index.php/Extensions:2.5/"
+ "Py/Scripts/3D_interaction/stored_views",
"category": "3D View"}
-# ACKNOWLEDGMENT
-# ==============
-# import/export functionality is mostly based
-# on Bart Crouch's Theme Manager Addon
+"""
+ACKNOWLEDGMENT
+==============
+import/export functionality is mostly based
+on Bart Crouch's Theme Manager Addon
-# TODO: check against 2.63
-# TODO: quadview complete support : investigate. Where's the data?
-# TODO: lock_camera_and_layers. investigate usage
-# TODO: list reordering
+TODO: quadview complete support : investigate. Where's the data?
+TODO: lock_camera_and_layers. investigate usage
+TODO: list reordering
-# logging setup
-'''
-import logging
-
-logger = logging.getLogger(__name__)
-logger.setLevel(logging.DEBUG)
-hdlr = logging.StreamHandler()
-fmtr = logging.Formatter('%(asctime)s %(levelname)s %(name)s : %(funcName)s - %(message)s')
-hdlr.setFormatter(fmtr)
-logger.addHandler(hdlr)
-'''
+NOTE: logging setup has to be provided by the user in a separate config file
+ as Blender will not try to configure logging by default in an add-on
+ The Config File should be in the Blender Config folder > /scripts/startup/config_logging.py
+ For setting up /location of the config folder see:
+ https://docs.blender.org/manual/en/dev/getting_started/
+ installing/configuration/directories.html
+ For configuring logging itself in the file, general Python documentation should work
+ As the logging calls are not configured, they can be kept in the other modules of this add-on
+ and will not have output until the logging configuration is set up
+"""
if "bpy" in locals():
- import imp
- imp.reload(ui)
- imp.reload(properties)
- imp.reload(core)
- imp.reload(operators)
- imp.reload(io)
+ import importlib
+ importlib.reload(core)
+ importlib.reload(ui)
+ importlib.reload(properties)
+ importlib.reload(operators)
+ importlib.reload(io)
else:
- #from . import properties, core
- from . import ui, properties, core, operators, io
+ from . import core
+ from . import ui
+ from . import properties
+ from . import operators
+ from . import io
import bpy
-from bpy.props import PointerProperty
+from bpy.props import (
+ BoolProperty,
+ IntProperty,
+ PointerProperty,
+ )
+from bpy.types import (
+ AddonPreferences,
+ Operator,
+ )
-class VIEW3D_stored_views_initialize(bpy.types.Operator):
+class VIEW3D_stored_views_initialize(Operator):
bl_idname = "view3d.stored_views_initialize"
- bl_label = "Initilize"
+ bl_label = "Initialize"
@classmethod
def poll(cls, context):
return not hasattr(bpy.types.Scene, 'stored_views')
def execute(self, context):
- bpy.types.Scene.stored_views = PointerProperty(type=properties.StoredViewsData)
+ bpy.types.Scene.stored_views = PointerProperty(
+ type=properties.StoredViewsData
+ )
scenes = bpy.data.scenes
for scene in scenes:
core.DataStore.sanitize_data(scene)
return {'FINISHED'}
+# Addon Preferences
+
+class VIEW3D_stored_views_preferences(AddonPreferences):
+ bl_idname = __name__
+
+ show_exporters = BoolProperty(
+ name="Enable I/O Operators",
+ default=False,
+ description="Enable Import/Export Operations in the UI:\n"
+ "Import Stored Views preset,\n"
+ "Export Stored Views preset and \n"
+ "Import stored views from scene",
+ )
+ view_3d_update_rate = IntProperty(
+ name="3D view update",
+ description="Update rate of the 3D view redraw\n"
+ "Increse the value if the UI feels sluggish",
+ min=1, max=10,
+ default=1
+ )
+
+ def draw(self, context):
+ layout = self.layout
+
+ row = layout.row(align=True)
+ row.prop(self, "view_3d_update_rate", toggle=True)
+ row.prop(self, "show_exporters", toggle=True)
+
+
def register():
bpy.utils.register_module(__name__)
- # Context restricted, need to initialize different (button to be clicked by user)
- #initialize()
+
def unregister():
ui.VIEW3D_stored_views_draw.handle_remove(bpy.context)
@@ -92,5 +132,6 @@ def unregister():
if hasattr(bpy.types.Scene, "stored_views"):
del bpy.types.Scene.stored_views
+
if __name__ == "__main__":
register()
diff --git a/stored_views/core.py b/stored_views/core.py
index 21e49b3..34f57df 100644
--- a/stored_views/core.py
+++ b/stored_views/core.py
@@ -1,15 +1,25 @@
-'''
+# gpl authors: nfloyd, Francesco Siddi
+
+
import logging
module_logger = logging.getLogger(__name__)
-'''
-import hashlib
+import hashlib
import bpy
+# Utility function get preferences setting for exporters
+def get_preferences():
+ # replace the key if the add-on name changes
+ addon = bpy.context.user_preferences.addons["stored_views"]
+ show_warn = (addon.preferences.show_exporters if addon else False)
+
+ return show_warn
+
+
class StoredView():
def __init__(self, mode, index=None):
-# self.logger = logging.getLogger('%s.StoredView' % __name__)
+ self.logger = logging.getLogger('%s.StoredView' % __name__)
self.scene = bpy.context.scene
self.view3d = bpy.context.space_data
self.index = index
@@ -21,12 +31,12 @@ class StoredView():
else:
stored_view = self.data_store.get(self.index)
self.from_v3d(stored_view)
-# self.logger.debug('index: %s name: %s' % (self.data_store.current_index, stored_view.name))
+ self.logger.debug('index: %s name: %s' % (self.data_store.current_index, stored_view.name))
def set(self):
stored_view = self.data_store.get(self.index)
self.update_v3d(stored_view)
-# self.logger.debug('index: %s name: %s' % (self.data_store.current_index, stored_view.name))
+ self.logger.debug('index: %s name: %s' % (self.data_store.current_index, stored_view.name))
def from_v3d(self, stored_view):
raise NotImplementedError("Subclass must implement abstract method")
@@ -42,7 +52,7 @@ class StoredView():
class POV(StoredView):
def __init__(self, index=None):
super().__init__(mode='POV', index=index)
-# self.logger = logging.getLogger('%s.POV' % __name__)
+ self.logger = logging.getLogger('%s.POV' % __name__)
def from_v3d(self, stored_view):
view3d = self.view3d
@@ -61,7 +71,7 @@ class POV(StoredView):
stored_view.camera_type = view3d.camera.type # type : 'CAMERA' or 'MESH'
stored_view.camera_name = view3d.camera.name # store string instead of object
stored_view.camera_pointer = view3d.camera.as_pointer()
- if view3d.lock_object != None:
+ if view3d.lock_object is not None:
stored_view.lock_object_name = view3d.lock_object.name # idem
stored_view.lock_object_pointer = view3d.lock_object.as_pointer() # idem
@@ -79,7 +89,7 @@ class POV(StoredView):
view3d.clip_start = stored_view.clip_start
view3d.clip_end = stored_view.clip_end
view3d.lock_cursor = stored_view.lock_cursor
- if stored_view.lock_cursor == True:
+ if stored_view.lock_cursor is True:
# update cursor only if view is locked to cursor
view3d.cursor_location = stored_view.cursor_location
@@ -120,18 +130,19 @@ class POV(StoredView):
@staticmethod
def is_modified(context, stored_view):
- # TODO: check for others param, currently only perspectiveand perspective_matrix are checked
-# logger = logging.getLogger('%s.POV' % __name__)
+ # TODO: check for others param, currently only perspective
+ # and perspective_matrix are checked
+ POV.logger = logging.getLogger('%s.POV' % __name__)
view3d = context.space_data
region3d = view3d.region_3d
if region3d.view_perspective != stored_view.perspective:
-# logger.debug('view_perspective')
+ POV.logger.debug('view_perspective')
return True
md5 = POV._get_perspective_matrix_md5(region3d)
if (md5 != stored_view.perspective_matrix_md5 and
- region3d.view_perspective != "CAMERA"):
-# logger.debug('perspective_matrix')
+ region3d.view_perspective != "CAMERA"):
+ POV.logger.debug('perspective_matrix')
return True
return False
@@ -145,7 +156,7 @@ class POV(StoredView):
class Layers(StoredView):
def __init__(self, index=None):
super().__init__(mode='LAYERS', index=index)
-# self.logger = logging.getLogger('%s.Layers' % __name__)
+ self.logger = logging.getLogger('%s.Layers' % __name__)
def from_v3d(self, stored_view):
view3d = self.view3d
@@ -156,26 +167,25 @@ class Layers(StoredView):
def update_v3d(self, stored_view):
view3d = self.view3d
view3d.lock_camera_and_layers = stored_view.lock_camera_and_layers
- if stored_view.lock_camera_and_layers == True:
+ if store
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-extensions-cvs
mailing list