Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormeta-androcto <meta.androcto1@gmail.com>2019-05-24 03:07:02 +0300
committermeta-androcto <meta.androcto1@gmail.com>2019-05-24 03:07:02 +0300
commitd9ffde707fe559f2cbfefb39b75f4decb42aa0a1 (patch)
tree9c1ee4727ff453bf7b416a6049bd559be7f8123b /space_view3d_stored_views/ui.py
parent437e41a066811af52a86b305f07521120917f9a6 (diff)
space_view3d_stored_views: move to contrib: T63750
Diffstat (limited to 'space_view3d_stored_views/ui.py')
-rw-r--r--space_view3d_stored_views/ui.py263
1 files changed, 0 insertions, 263 deletions
diff --git a/space_view3d_stored_views/ui.py b/space_view3d_stored_views/ui.py
deleted file mode 100644
index 9388128a..00000000
--- a/space_view3d_stored_views/ui.py
+++ /dev/null
@@ -1,263 +0,0 @@
-# gpl authors: nfloyd, Francesco Siddi
-
-import logging
-module_logger = logging.getLogger(__name__)
-
-import bpy
-import blf
-from . import core
-from bpy.types import (
- Operator,
- Panel,
-)
-
-"""
- If view name display is enabled,
- it will check periodically if the view has been modified
- since last set.
- get_preferences_timer() is the time in seconds between these checks.
- It can be increased, if the view become sluggish
- It is set in the add-on preferences
-"""
-
-
-# Utility function get_preferences_timer for update of 3d view draw
-def get_preferences_timer():
- # replace the key if the add-on name changes
- # TODO: expose refresh rate to ui???
- addon = bpy.context.preferences.addons[__package__]
- timer_update = (addon.preferences.view_3d_update_rate if addon else False)
-
- return timer_update
-
-
-def init_draw(context=None):
- if context is None:
- context = bpy.context
-
- if "stored_views_osd" not in context.window_manager:
- context.window_manager["stored_views_osd"] = False
-
- if not context.window_manager["stored_views_osd"]:
- context.window_manager["stored_views_osd"] = True
- bpy.ops.stored_views.draw()
-
-
-def _draw_callback_px(self, context):
- if context.area and context.area.type == 'VIEW_3D':
- r_width = text_location = context.region.width
- r_height = context.region.height
- font_id = 0 # TODO: need to find out how best to get font_id
-
- blf.size(font_id, 11, context.preferences.system.dpi)
- text_size = blf.dimensions(0, self.view_name)
-
- # compute the text location
- text_location = 0
- overlap = context.preferences.system.use_region_overlap
- if overlap:
- for region in context.area.regions:
- if region.type == "UI":
- text_location = r_width - region.width
-
- text_x = text_location - text_size[0] - 10
- text_y = r_height - text_size[1] - 8
- blf.position(font_id, text_x, text_y, 0)
- blf.draw(font_id, self.view_name)
-
-
-class VIEW3D_stored_views_draw(Operator):
- bl_idname = "stored_views.draw"
- bl_label = "Show current"
- bl_description = "Toggle the display current view name in the view 3D"
-
- _handle = None
- _timer = None
-
- @staticmethod
- def handle_add(self, context):
- VIEW3D_stored_views_draw._handle = bpy.types.SpaceView3D.draw_handler_add(
- _draw_callback_px, (self, context), 'WINDOW', 'POST_PIXEL')
- VIEW3D_stored_views_draw._timer = \
- context.window_manager.event_timer_add(get_preferences_timer(), context.window)
-
- @staticmethod
- def handle_remove(context):
- if VIEW3D_stored_views_draw._handle is not None:
- bpy.types.SpaceView3D.draw_handler_remove(VIEW3D_stored_views_draw._handle, 'WINDOW')
- if VIEW3D_stored_views_draw._timer is not None:
- context.window_manager.event_timer_remove(VIEW3D_stored_views_draw._timer)
- VIEW3D_stored_views_draw._handle = None
- VIEW3D_stored_views_draw._timer = None
-
- @classmethod
- def poll(cls, context):
- # return context.mode == 'OBJECT'
- return True
-
- def modal(self, context, event):
- if context.area:
- context.area.tag_redraw()
-
- if not context.area or context.area.type != "VIEW_3D":
- return {"PASS_THROUGH"}
-
- data = core.DataStore()
- stored_views = context.scene.stored_views
-
- if len(data.list) > 0 and \
- data.current_index >= 0 and \
- not stored_views.view_modified:
-
- if not stored_views.view_modified:
- sv = data.list[data.current_index]
- self.view_name = sv.name
- if event.type == 'TIMER':
- is_modified = False
- if data.mode == 'VIEW':
- is_modified = core.View.is_modified(context, sv)
- elif data.mode == 'POV':
- is_modified = core.POV.is_modified(context, sv)
- elif data.mode == 'LAYERS':
- is_modified = core.Layers.is_modified(context, sv)
- elif data.mode == 'DISPLAY':
- is_modified = core.Display.is_modified(context, sv)
- if is_modified:
- module_logger.debug(
- 'view modified - index: %s name: %s' % (data.current_index, sv.name)
- )
- self.view_name = ""
- stored_views.view_modified = is_modified
-
- return {"PASS_THROUGH"}
- else:
- module_logger.debug('exit')
- context.window_manager["stored_views_osd"] = False
- VIEW3D_stored_views_draw.handle_remove(context)
-
- return {'FINISHED'}
-
- def execute(self, context):
- if context.area.type == "VIEW_3D":
- self.view_name = ""
- VIEW3D_stored_views_draw.handle_add(self, context)
- context.window_manager.modal_handler_add(self)
-
- return {"RUNNING_MODAL"}
- else:
- self.report({"WARNING"}, "View3D not found. Operation Cancelled")
-
- return {"CANCELLED"}
-
-
-class VIEW3D_PT_properties_stored_views(Panel):
- bl_label = "Stored Views"
- bl_space_type = "VIEW_3D"
- bl_region_type = "UI"
-
- def draw(self, context):
- self.logger = logging.getLogger('%s Properties panel' % __name__)
- layout = self.layout
-
- if bpy.ops.view3d.stored_views_initialize.poll():
- layout.operator("view3d.stored_views_initialize")
- return
-
- stored_views = context.scene.stored_views
-
- # UI : mode
- col = layout.column(align=True)
- col.prop_enum(stored_views, "mode", 'VIEW')
- row = layout.row(align=True)
- row.operator("view3d.camera_to_view", text="Camera To view")
- row.operator("stored_views.newcamera")
-
- row = col.row(align=True)
- row.prop_enum(stored_views, "mode", 'POV')
- row.prop_enum(stored_views, "mode", 'LAYERS')
- row.prop_enum(stored_views, "mode", 'DISPLAY')
-
- # UI : operators
- row = layout.row()
- row.operator("stored_views.save").index = -1
-
- # IO Operators
- if core.get_preferences():
- row = layout.row(align=True)
- row.operator("stored_views.import_from_scene", text="Import from Scene")
- row.operator("stored_views.import_blsv", text="", icon="IMPORT")
- row.operator("stored_views.export_blsv", text="", icon="EXPORT")
-
- data_store = core.DataStore()
- list = data_store.list
- # UI : items list
- if len(list) > 0:
- row = layout.row()
- box = row.box()
- # items list
- mode = stored_views.mode
- for i in range(len(list)):
- # associated icon
- icon_string = "MESH_CUBE" # default icon
- # TODO: icons for view
- if mode == 'POV':
- persp = list[i].perspective
- if persp == 'PERSP':
- icon_string = "MESH_CUBE"
- elif persp == 'ORTHO':
- icon_string = "MESH_PLANE"
- elif persp == 'CAMERA':
- if list[i].camera_type != 'CAMERA':
- icon_string = 'OBJECT_DATAMODE'
- else:
- icon_string = "OUTLINER_DATA_CAMERA"
- if mode == 'LAYERS':
- if list[i].lock_camera_and_layers is True:
- icon_string = 'SCENE_DATA'
- else:
- icon_string = 'RENDERLAYERS'
- if mode == 'DISPLAY':
- shade = list[i].viewport_shade
- if shade == 'TEXTURED':
- icon_string = 'TEXTURE_SHADED'
- if shade == 'MATERIAL':
- icon_string = 'MATERIAL_DATA'
- elif shade == 'SOLID':
- icon_string = 'SOLID'
- elif shade == 'WIREFRAME':
- icon_string = "WIRE"
- elif shade == 'BOUNDBOX':
- icon_string = 'BBOX'
- elif shade == 'RENDERED':
- icon_string = 'MATERIAL'
- # stored view row
- subrow = box.row(align=True)
- # current view indicator
- if data_store.current_index == i and context.scene.stored_views.view_modified is False:
- subrow.label(text="", icon='SMALL_TRI_RIGHT_VEC')
- subrow.operator("stored_views.set",
- text="", icon=icon_string).index = i
- subrow.prop(list[i], "name", text="")
- subrow.operator("stored_views.save",
- text="", icon="REC").index = i
- subrow.operator("stored_views.delete",
- text="", icon="PANEL_CLOSE").index = i
-
- layout = self.layout
- scene = context.scene
- layout.label(text="Camera Selector")
- cameras = sorted([o for o in scene.objects if o.type == 'CAMERA'],
- key=lambda o: o.name)
-
- if len(cameras) > 0:
- for camera in cameras:
- row = layout.row(align=True)
- row.context_pointer_set("active_object", camera)
- row.operator("cameraselector.set_scene_camera",
- text=camera.name, icon='OUTLINER_DATA_CAMERA')
- row.operator("cameraselector.preview_scene_camera",
- text='', icon='RESTRICT_VIEW_OFF')
- row.operator("cameraselector.add_camera_marker",
- text='', icon='MARKER')
- else:
- layout.label(text="No cameras in this scene")