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

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2011-11-21 01:02:12 +0400
committerTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2011-11-21 01:02:12 +0400
commit2676f2d58f71f438008b413a86b873e7787d80ea (patch)
treeeb541972cf32d5958b7c0f7f8ece525b78cfcbff /release/scripts
parentbb9976f058ba2090812074e1b774213d20821a30 (diff)
parent4ab1dadf72a821b344a714fff59aed11d15ecb14 (diff)
Merged changes in the trunk up to revision 42021.
Conflicts resolved: source/blender/blenkernel/intern/scene.c source/blender/blenloader/intern/readfile.c source/blender/editors/interface/resources.c source/blender/render/intern/source/pipeline.c
Diffstat (limited to 'release/scripts')
-rw-r--r--release/scripts/modules/addon_utils.py11
-rw-r--r--release/scripts/modules/animsys_refactor.py2
-rw-r--r--release/scripts/modules/bpy/path.py23
-rw-r--r--release/scripts/presets/camera/Sony_A55.py4
-rw-r--r--release/scripts/presets/tracking_camera/Sony_A55.py10
-rw-r--r--release/scripts/startup/bl_operators/clip.py95
-rw-r--r--release/scripts/startup/bl_operators/image.py2
-rw-r--r--release/scripts/startup/bl_operators/presets.py2
-rw-r--r--release/scripts/startup/bl_operators/wm.py2
-rw-r--r--release/scripts/startup/bl_ui/__init__.py10
-rw-r--r--release/scripts/startup/bl_ui/properties_data_modifier.py74
-rw-r--r--release/scripts/startup/bl_ui/properties_object_constraint.py10
-rw-r--r--release/scripts/startup/bl_ui/properties_particle.py4
-rw-r--r--release/scripts/startup/bl_ui/properties_physics_dynamicpaint.py66
-rw-r--r--release/scripts/startup/bl_ui/properties_scene.py7
-rw-r--r--release/scripts/startup/bl_ui/properties_texture.py16
-rw-r--r--release/scripts/startup/bl_ui/space_clip.py73
-rw-r--r--release/scripts/startup/bl_ui/space_sequencer.py6
-rw-r--r--release/scripts/startup/bl_ui/space_userpref.py71
-rw-r--r--release/scripts/startup/bl_ui/space_view3d.py107
20 files changed, 384 insertions, 211 deletions
diff --git a/release/scripts/modules/addon_utils.py b/release/scripts/modules/addon_utils.py
index 26611fb93ad..1bd218ad92a 100644
--- a/release/scripts/modules/addon_utils.py
+++ b/release/scripts/modules/addon_utils.py
@@ -62,7 +62,7 @@ def modules(module_cache):
path_list = paths()
# fake module importing
- def fake_module(mod_name, mod_path, speedy=True):
+ def fake_module(mod_name, mod_path, speedy=True, force_support=None):
global error_encoding
if _bpy.app.debug:
@@ -134,6 +134,9 @@ def modules(module_cache):
traceback.print_exc()
raise
+ if force_support is not None:
+ mod.bl_info["support"] = force_support
+
return mod
else:
return None
@@ -141,6 +144,10 @@ def modules(module_cache):
modules_stale = set(module_cache.keys())
for path in path_list:
+
+ # force all contrib addons to be 'TESTING'
+ force_support = 'TESTING' if path.endswith("addons_contrib") else None
+
for mod_name, mod_path in _bpy.path.module_names(path):
modules_stale -= {mod_name}
mod = module_cache.get(mod_name)
@@ -161,7 +168,7 @@ def modules(module_cache):
mod = None
if mod is None:
- mod = fake_module(mod_name, mod_path)
+ mod = fake_module(mod_name, mod_path, force_support=force_support)
if mod:
module_cache[mod_name] = mod
diff --git a/release/scripts/modules/animsys_refactor.py b/release/scripts/modules/animsys_refactor.py
index 64110b0f620..f97ba3c2a50 100644
--- a/release/scripts/modules/animsys_refactor.py
+++ b/release/scripts/modules/animsys_refactor.py
@@ -35,9 +35,9 @@ def drepr(string):
class DataPathBuilder(object):
- __slots__ = ("data_path", )
""" Dummy class used to parse fcurve and driver data paths.
"""
+ __slots__ = ("data_path", )
def __init__(self, attrs):
self.data_path = attrs
diff --git a/release/scripts/modules/bpy/path.py b/release/scripts/modules/bpy/path.py
index e6d0fbb99a2..4173d71b39c 100644
--- a/release/scripts/modules/bpy/path.py
+++ b/release/scripts/modules/bpy/path.py
@@ -154,25 +154,23 @@ def resolve_ncase(path):
returning a string with the path if found else return the original path.
"""
- import os
-
def _ncase_path_found(path):
- if not path or os.path.exists(path):
+ if not path or _os.path.exists(path):
return path, True
# filename may be a directory or a file
- filename = os.path.basename(path)
- dirpath = os.path.dirname(path)
+ filename = _os.path.basename(path)
+ dirpath = _os.path.dirname(path)
suffix = path[:0] # "" but ensure byte/str match
if not filename: # dir ends with a slash?
if len(dirpath) < len(path):
suffix = path[:len(path) - len(dirpath)]
- filename = os.path.basename(dirpath)
- dirpath = os.path.dirname(dirpath)
+ filename = _os.path.basename(dirpath)
+ dirpath = _os.path.dirname(dirpath)
- if not os.path.exists(dirpath):
+ if not _os.path.exists(dirpath):
if dirpath == path:
return path, False
@@ -184,8 +182,8 @@ def resolve_ncase(path):
# at this point, the directory exists but not the file
# we are expecting 'dirpath' to be a directory, but it could be a file
- if os.path.isdir(dirpath):
- files = os.listdir(dirpath)
+ if _os.path.isdir(dirpath):
+ files = _os.listdir(dirpath)
else:
return path, False
@@ -198,7 +196,7 @@ def resolve_ncase(path):
break
if f_iter_nocase:
- return os.path.join(dirpath, f_iter_nocase) + suffix, True
+ return _os.path.join(dirpath, f_iter_nocase) + suffix, True
else:
# cant find the right one, just return the path as is.
return path, False
@@ -216,8 +214,7 @@ def ensure_ext(filepath, ext, case_sensitive=False):
:arg case_sensitive: Check for matching case when comparing extensions.
:type case_sensitive: bool
"""
- import os
- fn_base, fn_ext = os.path.splitext(filepath)
+ fn_base, fn_ext = _os.path.splitext(filepath)
if fn_base and fn_ext:
if ((case_sensitive and ext == fn_ext) or
(ext.lower() == fn_ext.lower())):
diff --git a/release/scripts/presets/camera/Sony_A55.py b/release/scripts/presets/camera/Sony_A55.py
new file mode 100644
index 00000000000..b0f172206fa
--- /dev/null
+++ b/release/scripts/presets/camera/Sony_A55.py
@@ -0,0 +1,4 @@
+import bpy
+bpy.context.object.data.sensor_width = 23.4
+bpy.context.object.data.sensor_height = 15.6
+bpy.context.object.data.sensor_fit = 'HORIZONTAL'
diff --git a/release/scripts/presets/tracking_camera/Sony_A55.py b/release/scripts/presets/tracking_camera/Sony_A55.py
new file mode 100644
index 00000000000..5805bfa41db
--- /dev/null
+++ b/release/scripts/presets/tracking_camera/Sony_A55.py
@@ -0,0 +1,10 @@
+import bpy
+camera = bpy.context.edit_movieclip.tracking.camera
+
+camera.sensor_width = 23.4
+camera.units = 'MILLIMETERS'
+camera.focal_length = 24.0
+camera.pixel_aspect = 1
+camera.k1 = 0.0
+camera.k2 = 0.0
+camera.k3 = 0.0
diff --git a/release/scripts/startup/bl_operators/clip.py b/release/scripts/startup/bl_operators/clip.py
index 55592621112..59c4f88251d 100644
--- a/release/scripts/startup/bl_operators/clip.py
+++ b/release/scripts/startup/bl_operators/clip.py
@@ -24,27 +24,28 @@ from bpy.types import Operator
from bpy_extras.io_utils import unpack_list
+def CLIP_track_view_selected(sc, track):
+ if track.select_anchor:
+ return True
+
+ if sc.show_marker_pattern and track.select_pattern:
+ return True
+
+ if sc.show_marker_search and track.select_search:
+ return True
+
+ return False
+
+
class CLIP_OT_track_to_empty(Operator):
"""Create an Empty object which will be copying movement of active track"""
bl_idname = "clip.track_to_empty"
- bl_label = "2D Track to Empty"
+ bl_label = "Link Empty to Track"
bl_options = {'UNDO', 'REGISTER'}
- @classmethod
- def poll(cls, context):
- if context.space_data.type != 'CLIP_EDITOR':
- return False
-
+ def _link_track(self, context, track):
sc = context.space_data
- clip = sc.clip
-
- return clip and clip.tracking.tracks.active
-
- def execute(self, context):
- sc = context.space_data
- clip = sc.clip
- track = clip.tracking.tracks.active
constraint = None
ob = None
@@ -63,27 +64,30 @@ class CLIP_OT_track_to_empty(Operator):
constraint.clip = sc.clip
constraint.track = track.name
- constraint.reference = 'TRACK'
+ constraint.use_3d_position = False
+
+ def execute(self, context):
+ sc = context.space_data
+ clip = sc.clip
+
+ for track in clip.tracking.tracks:
+ if CLIP_track_view_selected(sc, track):
+ self._link_track(context, track)
return {'FINISHED'}
-class CLIP_OT_bundles_to_mesh(Operator):
- """Create vertex cloud using coordinates of bundles"""
+class CLIP_OT_tracks_to_mesh(Operator):
+ """Create vertex cloud using coordinates of tracks"""
- bl_idname = "clip.bundles_to_mesh"
- bl_label = "Bundles to Mesh"
+ bl_idname = "clip.tracks_to_mesh"
+ bl_label = "Tracks to Mesh"
bl_options = {'UNDO', 'REGISTER'}
@classmethod
def poll(cls, context):
- if context.space_data.type != 'CLIP_EDITOR':
- return False
-
sc = context.space_data
- clip = sc.clip
-
- return clip
+ return (sc.type == 'CLIP_EDITOR') and sc.clip
def execute(self, context):
sc = context.space_data
@@ -91,7 +95,7 @@ class CLIP_OT_bundles_to_mesh(Operator):
new_verts = []
- mesh = bpy.data.meshes.new(name="Bundles")
+ mesh = bpy.data.meshes.new(name="Tracks")
for track in clip.tracking.tracks:
if track.has_bundle:
new_verts.append(track.bundle)
@@ -100,7 +104,7 @@ class CLIP_OT_bundles_to_mesh(Operator):
mesh.vertices.add(len(new_verts))
mesh.vertices.foreach_set("co", unpack_list(new_verts))
- ob = bpy.data.objects.new(name="Bundles", object_data=mesh)
+ ob = bpy.data.objects.new(name="Tracks", object_data=mesh)
bpy.context.scene.objects.link(ob)
@@ -112,10 +116,13 @@ class CLIP_OT_delete_proxy(Operator):
bl_idname = "clip.delete_proxy"
bl_label = "Delete Proxy"
- bl_options = {'UNDO', 'REGISTER'}
+ bl_options = {'REGISTER'}
@classmethod
def poll(cls, context):
+ if context.space_data.type != 'CLIP_EDITOR':
+ return False
+
sc = context.space_data
return sc.clip
@@ -179,11 +186,12 @@ class CLIP_OT_delete_proxy(Operator):
class CLIP_OT_set_viewport_background(Operator):
- """Set current movie clip as a camera background in 3D viewport"""
+ """Set current movie clip as a camera background in 3D viewport \
+(works only when a 3D viewport is visible)"""
bl_idname = "clip.set_viewport_background"
bl_label = "Set as Background"
- bl_options = {'UNDO', 'REGISTER'}
+ bl_options = {'REGISTER'}
@classmethod
def poll(cls, context):
@@ -203,7 +211,7 @@ class CLIP_OT_set_viewport_background(Operator):
break
if not bgpic:
- bgpic = space_v3d.background_images.add()
+ bgpic = space_v3d.background_images.new()
bgpic.source = 'MOVIE'
bgpic.clip = clip
@@ -228,7 +236,8 @@ class CLIP_OT_set_viewport_background(Operator):
class CLIP_OT_constraint_to_fcurve(Operator):
- """Create F-Curves for object which will copy object's movement caused by this constraint"""
+ """Create F-Curves for object which will copy \
+object's movement caused by this constraint"""
bl_idname = "clip.constraint_to_fcurve"
bl_label = "Constraint to F-Curve"
@@ -250,14 +259,10 @@ class CLIP_OT_constraint_to_fcurve(Operator):
con = x
if not con:
- return
-
- if con.type == 'FOLLOW_TRACK' and con.reference == 'BUNDLE':
- mat = ob.matrix_world.copy()
- ob.constraints.remove(con)
- ob.matrix_world = mat
+ self.report({'ERROR'},
+ "Motion Tracking constraint to be converted not found")
- return
+ return {'CANCELLED'}
# Get clip used for parenting
if con.use_active_clip:
@@ -266,7 +271,17 @@ class CLIP_OT_constraint_to_fcurve(Operator):
clip = con.clip
if not clip:
- return
+ self.report({'ERROR'},
+ "Movie clip to use tracking data from isn't set")
+
+ return {'CANCELLED'}
+
+ if con.type == 'FOLLOW_TRACK' and con.use_3d_position:
+ mat = ob.matrix_world.copy()
+ ob.constraints.remove(con)
+ ob.matrix_world = mat
+
+ return {'FINISHED'}
# Find start and end frames
for track in clip.tracking.tracks:
diff --git a/release/scripts/startup/bl_operators/image.py b/release/scripts/startup/bl_operators/image.py
index 8c12a6442f7..c97f6eae6c7 100644
--- a/release/scripts/startup/bl_operators/image.py
+++ b/release/scripts/startup/bl_operators/image.py
@@ -147,7 +147,7 @@ class ProjectEdit(Operator):
# opengl buffer may fail, we can't help this, but best report it.
try:
- ret = bpy.ops.paint.image_from_view()
+ bpy.ops.paint.image_from_view()
except RuntimeError as err:
self.report({'ERROR'}, str(err))
return {'CANCELLED'}
diff --git a/release/scripts/startup/bl_operators/presets.py b/release/scripts/startup/bl_operators/presets.py
index dca96b302fb..100b21fc303 100644
--- a/release/scripts/startup/bl_operators/presets.py
+++ b/release/scripts/startup/bl_operators/presets.py
@@ -349,7 +349,7 @@ class AddPresetTrackingTrackColor(AddPresetBase, Operator):
preset_menu = "CLIP_MT_track_color_presets"
preset_defines = [
- "track = bpy.context.edit_movieclip.tracking.tracks"
+ "track = bpy.context.edit_movieclip.tracking.tracks.active"
]
preset_values = [
diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py
index aa661b76512..14c9a090529 100644
--- a/release/scripts/startup/bl_operators/wm.py
+++ b/release/scripts/startup/bl_operators/wm.py
@@ -106,7 +106,7 @@ def operator_path_is_undo(context, data_path):
# luckily we don't do this!
#
# When we cant find the data owner assume no undo is needed.
- data_path_head, data_path_sep, data_path_tail = data_path.rpartition(".")
+ data_path_head = data_path.rpartition(".")[0]
if not data_path_head:
return False
diff --git a/release/scripts/startup/bl_ui/__init__.py b/release/scripts/startup/bl_ui/__init__.py
index 3db768f73fe..6aa08a7f50d 100644
--- a/release/scripts/startup/bl_ui/__init__.py
+++ b/release/scripts/startup/bl_ui/__init__.py
@@ -116,11 +116,15 @@ def register():
)
WindowManager.addon_support = EnumProperty(
- items=[('OFFICIAL', "Official", ""),
- ('COMMUNITY', 'Community', ""),
+ items=[('OFFICIAL', "Official", "Officially supported"),
+ ('COMMUNITY', "Community", "Maintained by community developers"),
+ ('TESTING', "Testing", "Newly contributed scripts (excluded from release builds)"),
],
name="Support",
- description="Display support level", default={'OFFICIAL', 'COMMUNITY'}, options={'ENUM_FLAG'})
+ description="Display support level",
+ default={'OFFICIAL', 'COMMUNITY'},
+ options={'ENUM_FLAG'},
+ )
# done...
diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py
index e1b08d1ff8e..288f04b084e 100644
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py
@@ -414,6 +414,80 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
row.operator("object.multires_external_save", text="Save External...")
row.label()
+ def OCEAN(self, layout, ob, md):
+ if not md.is_build_enabled:
+ layout.label("Built without OceanSim modifier")
+ return
+
+ layout.prop(md, "geometry_mode")
+
+ if md.geometry_mode == 'GENERATE':
+ row = layout.row()
+ row.prop(md, "repeat_x")
+ row.prop(md, "repeat_y")
+
+ layout.separator()
+
+ flow = layout.column_flow()
+ flow.prop(md, "time")
+ flow.prop(md, "resolution")
+ flow.prop(md, "spatial_size")
+ flow.prop(md, "depth")
+
+ layout.label("Waves:")
+
+ split = layout.split()
+
+ col = split.column()
+ col.prop(md, "choppiness")
+ col.prop(md, "wave_scale", text="Scale")
+ col.prop(md, "wave_scale_min")
+ col.prop(md, "wind_velocity")
+
+ col = split.column()
+ col.prop(md, "wave_alignment", text="Alignment")
+ sub = col.column()
+ sub.active = md.wave_alignment > 0
+ sub.prop(md, "wave_direction", text="Direction")
+ sub.prop(md, "damping")
+
+ layout.separator()
+
+ layout.prop(md, "use_normals")
+
+ split = layout.split()
+
+ col = split.column()
+ col.prop(md, "use_foam")
+ sub = col.row()
+ sub.active = md.use_foam
+ sub.prop(md, "foam_coverage", text="Coverage")
+
+ col = split.column()
+ col.active = md.use_foam
+ col.label("Foam Data Layer Name:")
+ col.prop(md, "foam_layer_name", text="")
+
+ layout.separator()
+
+ if md.is_cached:
+ layout.operator("object.ocean_bake", text="Free Bake").free = True
+ else:
+ layout.operator("object.ocean_bake")
+
+ split = layout.split()
+ split.enabled = not md.is_cached
+
+ col = split.column(align=True)
+ col.prop(md, "frame_start", text="Start")
+ col.prop(md, "frame_end", text="End")
+
+ col = split.column(align=True)
+ col.label(text="Cache path:")
+ col.prop(md, "filepath", text="")
+
+ #col.prop(md, "bake_foam_fade")
+
def PARTICLE_INSTANCE(self, layout, ob, md):
layout.prop(md, "object")
layout.prop(md, "particle_system_index", text="Particle System")
diff --git a/release/scripts/startup/bl_ui/properties_object_constraint.py b/release/scripts/startup/bl_ui/properties_object_constraint.py
index 508818b62dc..038d7a38fd6 100644
--- a/release/scripts/startup/bl_ui/properties_object_constraint.py
+++ b/release/scripts/startup/bl_ui/properties_object_constraint.py
@@ -420,7 +420,9 @@ class ConstraintButtonsPanel():
layout.prop(con, "volume")
- self.space_template(layout, con)
+ row = layout.row()
+ row.label(text="Convert:")
+ row.prop(con, "owner_space", text="")
def COPY_TRANSFORMS(self, context, layout, con):
self.target_template(layout, con)
@@ -754,15 +756,15 @@ class ConstraintButtonsPanel():
col.prop(con, "rotation_range", text="Pivot When")
def FOLLOW_TRACK(self, context, layout, con):
- layout.prop(con, "use_active_clip")
+ row = layout.row()
+ row.prop(con, "use_active_clip")
+ row.prop(con, "use_3d_position")
if not con.use_active_clip:
layout.prop(con, "clip")
layout.prop(con, "track")
- layout.row().prop(con, "reference", expand=True)
-
layout.operator("clip.constraint_to_fcurve")
def CAMERA_SOLVER(self, context, layout, con):
diff --git a/release/scripts/startup/bl_ui/properties_particle.py b/release/scripts/startup/bl_ui/properties_particle.py
index a541f43be66..f7f67527b63 100644
--- a/release/scripts/startup/bl_ui/properties_particle.py
+++ b/release/scripts/startup/bl_ui/properties_particle.py
@@ -262,10 +262,6 @@ class PARTICLE_PT_hair_dynamics(ParticleButtonsPanel, Panel):
return psys.settings.type == 'HAIR' and (engine in cls.COMPAT_ENGINES)
def draw_header(self, context):
- #cloth = context.cloth.collision_settings
-
- #self.layout.active = cloth_panel_enabled(context.cloth)
- #self.layout.prop(cloth, "use_collision", text="")
psys = context.particle_system
self.layout.prop(psys, "use_hair_dynamics", text="")
diff --git a/release/scripts/startup/bl_ui/properties_physics_dynamicpaint.py b/release/scripts/startup/bl_ui/properties_physics_dynamicpaint.py
index a934e103c35..68fa0cedaa3 100644
--- a/release/scripts/startup/bl_ui/properties_physics_dynamicpaint.py
+++ b/release/scripts/startup/bl_ui/properties_physics_dynamicpaint.py
@@ -46,7 +46,6 @@ class PHYSICS_PT_dynamic_paint(PhysicButtonsPanel, Panel):
layout = self.layout
md = context.dynamic_paint
- ob = context.object
layout.prop(md, "ui_type", expand=True)
@@ -99,8 +98,8 @@ class PHYSICS_PT_dynamic_paint(PhysicButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.prop(brush, "absolute_alpha")
- col.prop(brush, "paint_erase")
+ col.prop(brush, "use_absolute_alpha")
+ col.prop(brush, "use_paint_erase")
col.prop(brush, "paint_wetness", text="Wetness")
col = split.column()
@@ -129,7 +128,6 @@ class PHYSICS_PT_dp_advanced_canvas(PhysicButtonsPanel, Panel):
canvas = context.dynamic_paint.canvas_settings
surface = canvas.canvas_surfaces.active
- ob = context.object
surface_type = surface.surface_type
@@ -168,7 +166,7 @@ class PHYSICS_PT_dp_advanced_canvas(PhysicButtonsPanel, Panel):
row.prop(surface, "displace_factor")
elif surface_type == 'WAVE':
- layout.prop(surface, "wave_open_borders")
+ layout.prop(surface, "use_wave_open_border")
split = layout.split()
@@ -213,33 +211,33 @@ class PHYSICS_PT_dp_canvas_output(PhysicButtonsPanel, Panel):
# paintmap output
row = layout.row()
- row.prop_search(surface, "output_name", ob.data, "vertex_colors", text="Paintmap layer: ")
+ row.prop_search(surface, "output_name_a", ob.data, "vertex_colors", text="Paintmap layer: ")
if surface.output_exists(object=ob, index=0):
ic = 'ZOOMOUT'
else:
ic = 'ZOOMIN'
- row.operator("dpaint.output_toggle", icon=ic, text="").index = 0
+ row.operator("dpaint.output_toggle", icon=ic, text="").output = 'A'
# wetmap output
row = layout.row()
- row.prop_search(surface, "output_name2", ob.data, "vertex_colors", text="Wetmap layer: ")
+ row.prop_search(surface, "output_name_b", ob.data, "vertex_colors", text="Wetmap layer: ")
if surface.output_exists(object=ob, index=1):
ic = 'ZOOMOUT'
else:
ic = 'ZOOMIN'
- row.operator("dpaint.output_toggle", icon=ic, text="").index = 1
+ row.operator("dpaint.output_toggle", icon=ic, text="").output = 'B'
elif surface_type == 'WEIGHT':
row = layout.row()
- row.prop_search(surface, "output_name", ob, "vertex_groups", text="Vertex Group: ")
+ row.prop_search(surface, "output_name_a", ob, "vertex_groups", text="Vertex Group: ")
if surface.output_exists(object=ob, index=0):
ic = 'ZOOMOUT'
else:
ic = 'ZOOMIN'
- row.operator("dpaint.output_toggle", icon=ic, text="").index = 0
+ row.operator("dpaint.output_toggle", icon=ic, text="").output = 'A'
# image format outputs
if surface.surface_format == 'IMAGE':
@@ -250,23 +248,23 @@ class PHYSICS_PT_dp_canvas_output(PhysicButtonsPanel, Panel):
layout.prop(surface, "image_output_path", text="")
row = layout.row()
row.prop(surface, "image_fileformat", text="")
- row.prop(surface, "premultiply", text="Premultiply alpha")
+ row.prop(surface, "use_premultiply", text="Premultiply alpha")
if surface_type == 'PAINT':
split = layout.split(percentage=0.4)
- split.prop(surface, "do_output1", text="Paintmaps:")
+ split.prop(surface, "use_output_a", text="Paintmaps:")
sub = split.row()
- sub.active = surface.do_output1
- sub.prop(surface, "output_name", text="")
+ sub.active = surface.use_output_a
+ sub.prop(surface, "output_name_a", text="")
split = layout.split(percentage=0.4)
- split.prop(surface, "do_output2", text="Wetmaps:")
+ split.prop(surface, "use_output_b", text="Wetmaps:")
sub = split.row()
- sub.active = surface.do_output2
- sub.prop(surface, "output_name2", text="")
+ sub.active = surface.use_output_b
+ sub.prop(surface, "output_name_b", text="")
else:
col = layout.column()
- col.prop(surface, "output_name", text="Filename: ")
+ col.prop(surface, "output_name_a", text="Filename: ")
if surface_type == 'DISPLACE':
col.prop(surface, "displace_type", text="Displace Type")
col.prop(surface, "depth_clamp")
@@ -367,11 +365,9 @@ class PHYSICS_PT_dp_cache(PhysicButtonsPanel, Panel):
md.ui_type == 'CANVAS' and
md.canvas_settings and
md.canvas_settings.canvas_surfaces.active and
- md.canvas_settings.canvas_surfaces.active.uses_cache)
+ md.canvas_settings.canvas_surfaces.active.is_cache_user)
def draw(self, context):
- layout = self.layout
-
surface = context.dynamic_paint.canvas_settings.canvas_surfaces.active
cache = surface.point_cache
@@ -411,21 +407,21 @@ class PHYSICS_PT_dp_brush_source(PhysicButtonsPanel, Panel):
split = layout.row().split(percentage=0.4)
sub = split.column()
if brush.paint_source == 'DISTANCE':
- sub.prop(brush, "proximity_project")
+ sub.prop(brush, "use_proximity_project")
elif brush.paint_source == 'VOLUME_DISTANCE':
- sub.prop(brush, "proximity_inverse")
- sub.prop(brush, "negate_volume")
+ sub.prop(brush, "invert_proximity")
+ sub.prop(brush, "use_negative_volume")
sub = split.column()
if brush.paint_source == 'DISTANCE':
column = sub.column()
- column.active = brush.proximity_project
+ column.active = brush.use_proximity_project
column.prop(brush, "ray_direction")
sub.prop(brush, "proximity_falloff")
if brush.proximity_falloff == 'RAMP':
col = layout.row().column()
col.separator()
- col.prop(brush, "proximity_ramp_alpha", text="Only Use Alpha")
+ col.prop(brush, "use_proximity_ramp_alpha", text="Only Use Alpha")
col.template_color_ramp(brush, "paint_ramp", expand=True)
@@ -442,26 +438,25 @@ class PHYSICS_PT_dp_brush_velocity(PhysicButtonsPanel, Panel):
layout = self.layout
brush = context.dynamic_paint.brush_settings
- ob = context.object
split = layout.split()
col = split.column()
- col.prop(brush, "velocity_alpha")
- col.prop(brush, "velocity_color")
+ col.prop(brush, "use_velocity_alpha")
+ col.prop(brush, "use_velocity_color")
- split.prop(brush, "velocity_depth")
+ split.prop(brush, "use_velocity_depth")
col = layout.column()
- col.active = (brush.velocity_alpha or brush.velocity_color or brush.velocity_depth)
- col.prop(brush, "max_velocity")
+ col.active = (brush.use_velocity_alpha or brush.use_velocity_color or brush.use_velocity_depth)
+ col.prop(brush, "velocity_max")
col.template_color_ramp(brush, "velocity_ramp", expand=True)
layout.separator()
row = layout.row()
- row.prop(brush, "do_smudge")
+ row.prop(brush, "use_smudge")
sub = row.row()
- sub.active = brush.do_smudge
+ sub.active = brush.use_smudge
sub.prop(brush, "smudge_strength")
@@ -478,7 +473,6 @@ class PHYSICS_PT_dp_brush_wave(PhysicButtonsPanel, Panel):
layout = self.layout
brush = context.dynamic_paint.brush_settings
- ob = context.object
layout.prop(brush, "wave_type")
if brush.wave_type != 'REFLECT':
diff --git a/release/scripts/startup/bl_ui/properties_scene.py b/release/scripts/startup/bl_ui/properties_scene.py
index 86880b9ddec..05f4887a542 100644
--- a/release/scripts/startup/bl_ui/properties_scene.py
+++ b/release/scripts/startup/bl_ui/properties_scene.py
@@ -195,14 +195,13 @@ class SCENE_PT_simplify(SceneButtonsPanel, Panel):
COMPAT_ENGINES = {'BLENDER_RENDER'}
def draw_header(self, context):
- scene = context.scene
- rd = scene.render
+ rd = context.scene.render
self.layout.prop(rd, "use_simplify", text="")
def draw(self, context):
layout = self.layout
- scene = context.scene
- rd = scene.render
+
+ rd = context.scene.render
layout.active = rd.use_simplify
diff --git a/release/scripts/startup/bl_ui/properties_texture.py b/release/scripts/startup/bl_ui/properties_texture.py
index 9ba0309aacd..6b4cfa8fb95 100644
--- a/release/scripts/startup/bl_ui/properties_texture.py
+++ b/release/scripts/startup/bl_ui/properties_texture.py
@@ -774,6 +774,22 @@ class TEXTURE_PT_pointdensity_turbulence(TextureButtonsPanel, Panel):
col.prop(pd, "turbulence_strength")
+class TEXTURE_PT_ocean(TextureTypePanel, Panel):
+ bl_label = "Ocean"
+ tex_type = 'OCEAN'
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
+
+ def draw(self, context):
+ layout = self.layout
+
+ tex = context.texture
+ ot = tex.ocean
+
+ col = layout.column()
+ col.prop(ot, "ocean_object")
+ col.prop(ot, "output")
+
+
class TEXTURE_PT_mapping(TextureSlotPanel, Panel):
bl_label = "Mapping"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
diff --git a/release/scripts/startup/bl_ui/space_clip.py b/release/scripts/startup/bl_ui/space_clip.py
index 55fc641f5ae..a70d632e8b0 100644
--- a/release/scripts/startup/bl_ui/space_clip.py
+++ b/release/scripts/startup/bl_ui/space_clip.py
@@ -54,11 +54,17 @@ class CLIP_HT_header(Header):
row = layout.row(align=True)
if sc.show_filters:
- row.prop(sc, "show_filters", icon='DISCLOSURE_TRI_DOWN', text="Filters")
- row.prop(sc, "show_graph_frames", icon='SEQUENCE', text="")
+ row.prop(sc, "show_filters", icon='DISCLOSURE_TRI_DOWN',
+ text="Filters")
+
+ sub = row.column()
+ sub.active = clip.tracking.reconstruction.is_valid
+ sub.prop(sc, "show_graph_frames", icon='SEQUENCE', text="")
+
row.prop(sc, "show_graph_tracks", icon='ANIM', text="")
else:
- row.prop(sc, "show_filters", icon='DISCLOSURE_TRI_RIGHT', text="Filters")
+ row.prop(sc, "show_filters", icon='DISCLOSURE_TRI_RIGHT',
+ text="Filters")
row = layout.row()
row.template_ID(sc, "clip", open='clip.open')
@@ -109,7 +115,6 @@ class CLIP_PT_tools_tracking(Panel):
def draw(self, context):
layout = self.layout
clip = context.space_data.clip
- settings = clip.tracking.settings
row = layout.row(align=True)
@@ -130,16 +135,16 @@ class CLIP_PT_tools_tracking(Panel):
props = col.operator("clip.clear_track_path", text="Clear Before")
props.action = 'UPTO'
- props = col.operator("clip.clear_track_path", text="Clear Track Path")
+ props = col.operator("clip.clear_track_path", text="Clear")
props.action = 'ALL'
- layout.operator("clip.join_tracks")
+ layout.operator("clip.join_tracks", text="Join")
-class CLIP_PT_tools_solving(Panel):
+class CLIP_PT_tools_solve(Panel):
bl_space_type = 'CLIP_EDITOR'
bl_region_type = 'TOOLS'
- bl_label = "Solving"
+ bl_label = "Solve"
@classmethod
def poll(cls, context):
@@ -154,13 +159,17 @@ class CLIP_PT_tools_solving(Panel):
settings = clip.tracking.settings
col = layout.column(align=True)
- col.operator("clip.solve_camera")
+ col.operator("clip.solve_camera", text="Camera Motion")
col.operator("clip.clear_solution")
col = layout.column(align=True)
col.prop(settings, "keyframe_a")
col.prop(settings, "keyframe_b")
+ col = layout.column(align=True)
+ col.label(text="Refine:")
+ col.prop(settings, "refine_intrinsics", text="")
+
class CLIP_PT_tools_cleanup(Panel):
bl_space_type = 'CLIP_EDITOR'
@@ -201,7 +210,7 @@ class CLIP_PT_tools_geometry(Panel):
def draw(self, context):
layout = self.layout
- layout.operator("clip.bundles_to_mesh")
+ layout.operator("clip.tracks_to_mesh")
layout.operator("clip.track_to_empty")
@@ -223,7 +232,6 @@ class CLIP_PT_tools_orientation(Panel):
settings = sc.clip.tracking.settings
col = layout.column(align=True)
- col.label(text="Scene Orientation:")
col.operator("clip.set_floor")
col.operator("clip.set_origin")
@@ -367,7 +375,7 @@ class CLIP_PT_tracking_camera(Panel):
col.prop(clip.tracking.camera, "pixel_aspect")
col = layout.column()
- col.label(text="Principal Point")
+ col.label(text="Optical Center:")
row = col.row()
row.prop(clip.tracking.camera, "principal", text="")
col.operator("clip.set_center_principal", text="Center")
@@ -402,8 +410,8 @@ class CLIP_PT_display(Panel):
col.prop(sc, "show_disabled", "Disabled Tracks")
col.prop(sc, "show_bundles", text="Bundles")
- col.prop(sc, "show_names", text="Track Names")
- col.prop(sc, "show_tiny_markers", text="Tiny Markers")
+ col.prop(sc, "show_names", text="Track Names and Status")
+ col.prop(sc, "show_tiny_markers", text="Compact Markers")
col.prop(sc, "show_grease_pencil", text="Grease Pencil")
col.prop(sc, "use_mute_footage", text="Mute")
@@ -418,7 +426,7 @@ class CLIP_PT_display(Panel):
clip = sc.clip
if clip:
- col.label(text="Display Aspect:")
+ col.label(text="Display Aspect Ratio:")
col.prop(clip, "display_aspect", text="")
@@ -466,16 +474,14 @@ class CLIP_PT_stabilization(Panel):
return sc.mode == 'RECONSTRUCTION' and sc.clip
def draw_header(self, context):
- sc = context.space_data
- tracking = sc.clip.tracking
- stab = tracking.stabilization
-
+ stab = context.space_data.clip.tracking.stabilization
+
self.layout.prop(stab, "use_2d_stabilization", text="")
def draw(self, context):
layout = self.layout
- sc = context.space_data
- tracking = sc.clip.tracking
+
+ tracking = context.space_data.clip.tracking
stab = tracking.stabilization
layout.active = stab.use_2d_stabilization
@@ -493,23 +499,21 @@ class CLIP_PT_stabilization(Panel):
layout.prop(stab, "influence_location")
- layout.separator()
-
layout.prop(stab, "use_autoscale")
col = layout.column()
col.active = stab.use_autoscale
col.prop(stab, "scale_max")
col.prop(stab, "influence_scale")
- layout.separator()
-
- layout.label(text="Rotation:")
+ layout.prop(stab, "use_stabilize_rotation")
+ col = layout.column()
+ col.active = stab.use_stabilize_rotation
- row = layout.row(align=True)
+ row = col.row(align=True)
row.prop_search(stab, "rotation_track", tracking, "tracks", text="")
row.operator("clip.stabilize_2d_set_rotation", text="", icon='ZOOMIN')
- row = layout.row()
+ row = col.row()
row.active = stab.rotation_track is not None
row.prop(stab, "influence_rotation")
@@ -634,7 +638,6 @@ class CLIP_PT_tools_clip(Panel):
def draw(self, context):
layout = self.layout
- clip = context.space_data.clip
layout.operator("clip.set_viewport_background")
@@ -691,9 +694,6 @@ class CLIP_MT_proxy(Menu):
def draw(self, context):
layout = self.layout
- sc = context.space_data
- clip = sc.clip
-
layout.operator("clip.rebuild_proxy")
layout.operator("clip.delete_proxy")
@@ -714,7 +714,8 @@ class CLIP_MT_track(Menu):
props = layout.operator("clip.clear_track_path", text="Clear Before")
props.action = 'UPTO'
- props = layout.operator("clip.clear_track_path", text="Clear Track Path")
+ props = layout.operator("clip.clear_track_path",
+ text="Clear Track Path")
props.action = 'ALL'
layout.separator()
@@ -765,7 +766,7 @@ class CLIP_MT_reconstruction(Menu):
layout.separator()
layout.operator("clip.track_to_empty")
- layout.operator("clip.bundles_to_mesh")
+ layout.operator("clip.tracks_to_mesh")
class CLIP_MT_track_visibility(Menu):
@@ -797,8 +798,6 @@ class CLIP_MT_select(Menu):
def draw(self, context):
layout = self.layout
- sc = context.space_data
-
layout.operator("clip.select_border")
layout.operator("clip.select_circle")
@@ -851,6 +850,7 @@ class CLIP_MT_tracking_specials(Menu):
class CLIP_MT_camera_presets(Menu):
+ """Predefined tracking camera intrinsics"""
bl_label = "Camera Presets"
preset_subdir = "tracking_camera"
preset_operator = "script.execute_preset"
@@ -858,6 +858,7 @@ class CLIP_MT_camera_presets(Menu):
class CLIP_MT_track_color_presets(Menu):
+ """Predefined track color"""
bl_label = "Color Presets"
preset_subdir = "tracking_track_color"
preset_operator = "script.execute_preset"
diff --git a/release/scripts/startup/bl_ui/space_sequencer.py b/release/scripts/startup/bl_ui/space_sequencer.py
index c1c9bc12b2d..06f481d2993 100644
--- a/release/scripts/startup/bl_ui/space_sequencer.py
+++ b/release/scripts/startup/bl_ui/space_sequencer.py
@@ -473,9 +473,9 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel, Panel):
if strip.type == 'SPEED':
col.prop(strip, "multiply_speed")
elif strip.type in {'CROSS', 'GAMMA_CROSS', 'PLUGIN', 'WIPE'}:
- col.prop(strip, "use_default_fade", "Default fade")
- if not strip.use_default_fade:
- col.prop(strip, "effect_fader", text="Effect fader")
+ col.prop(strip, "use_default_fade", "Default fade")
+ if not strip.use_default_fade:
+ col.prop(strip, "effect_fader", text="Effect fader")
layout.prop(strip, "use_translation", text="Image Offset:")
if strip.use_translation:
diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py
index 51f55fe019c..d71d57509c1 100644
--- a/release/scripts/startup/bl_ui/space_userpref.py
+++ b/release/scripts/startup/bl_ui/space_userpref.py
@@ -634,12 +634,51 @@ class USERPREF_PT_theme(Panel):
colsub.row().prop(ui, "inner_key_sel")
colsub.row().prop(ui, "blend")
+ col.separator()
+ col.separator()
+
ui = theme.user_interface
+ col.label("Icons:")
+
+ row = col.row()
+
+ subsplit = row.split(percentage=0.95)
+
+ padding = subsplit.split(percentage=0.15)
+ colsub = padding.column()
+ colsub = padding.column()
+ colsub.row().prop(ui, "icon_file")
+
+ subsplit = row.split(percentage=0.85)
+
+ padding = subsplit.split(percentage=0.15)
+ colsub = padding.column()
+ colsub = padding.column()
+ colsub.row().prop(ui, "icon_alpha")
+
col.separator()
col.separator()
- split = col.split(percentage=0.93)
- split.prop(ui, "icon_file")
+ ui = theme.user_interface.panel
+ col.label("Panels:")
+
+ row = col.row()
+
+ subsplit = row.split(percentage=0.95)
+
+ padding = subsplit.split(percentage=0.15)
+ colsub = padding.column()
+ colsub = padding.column()
+ rowsub = colsub.row()
+ rowsub.prop(ui, "show_header")
+ rowsub.label()
+
+ subsplit = row.split(percentage=0.85)
+
+ padding = subsplit.split(percentage=0.15)
+ colsub = padding.column()
+ colsub = padding.column()
+ colsub.row().prop(ui, "header")
layout.separator()
layout.separator()
@@ -765,10 +804,9 @@ class USERPREF_MT_ndof_settings(Menu):
layout.label(text="Orbit options")
if input_prefs.view_rotate_method == 'TRACKBALL':
layout.prop(input_prefs, "ndof_roll_invert_axis")
- layout.prop(input_prefs, "ndof_tilt_invert_axis")
- layout.prop(input_prefs, "ndof_rotate_invert_axis")
- else:
- layout.prop(input_prefs, "ndof_orbit_invert_axes")
+ layout.prop(input_prefs, "ndof_tilt_invert_axis")
+ layout.prop(input_prefs, "ndof_rotate_invert_axis")
+ layout.prop(input_prefs, "ndof_zoom_invert")
layout.separator()
layout.label(text="Pan options")
@@ -776,6 +814,9 @@ class USERPREF_MT_ndof_settings(Menu):
layout.prop(input_prefs, "ndof_pany_invert_axis")
layout.prop(input_prefs, "ndof_panz_invert_axis")
+ layout.label(text="Zoom options")
+ layout.prop(input_prefs, "ndof_zoom_updown")
+
layout.separator()
layout.label(text="Fly options")
layout.prop(input_prefs, "ndof_fly_helicopter", icon='NDOF_FLY')
@@ -889,6 +930,12 @@ class USERPREF_PT_addons(Panel):
bl_region_type = 'WINDOW'
bl_options = {'HIDE_HEADER'}
+ _support_icon_mapping = {
+ 'OFFICIAL': 'FILE_BLEND',
+ 'COMMUNITY': 'POSE_DATA',
+ 'TESTING': 'MOD_EXPLODE',
+ }
+
@classmethod
def poll(cls, context):
userpref = context.user_preferences
@@ -929,12 +976,13 @@ class USERPREF_PT_addons(Panel):
split = layout.split(percentage=0.2)
col = split.column()
col.prop(context.window_manager, "addon_search", text="", icon='VIEWZOOM')
- col.label(text="Categories")
- col.prop(context.window_manager, "addon_filter", expand=True)
col.label(text="Supported Level")
col.prop(context.window_manager, "addon_support", expand=True)
+ col.label(text="Categories")
+ col.prop(context.window_manager, "addon_filter", expand=True)
+
col = split.column()
# set in addon_utils.modules(...)
@@ -993,12 +1041,7 @@ class USERPREF_PT_addons(Panel):
rowsub.label(icon='ERROR')
# icon showing support level.
- if info["support"] == 'OFFICIAL':
- rowsub.label(icon='FILE_BLEND')
- elif info["support"] == 'COMMUNITY':
- rowsub.label(icon='POSE_DATA')
- else:
- rowsub.label(icon='QUESTION')
+ rowsub.label(icon=self._support_icon_mapping.get(info["support"], 'QUESTION'))
if is_enabled:
row.operator("wm.addon_disable", icon='CHECKBOX_HLT', text="", emboss=False).module = module_name
diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py
index 1314401a1ef..0753b49f69f 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -55,8 +55,8 @@ class VIEW3D_HT_header(Header):
sub.menu("VIEW3D_MT_object")
# Contains buttons like Mode, Pivot, Manipulator, Layer, Mesh Select Mode...
- row = layout.row() # XXX Narrowed down vert/edge/face selector in edit mode/solid drawmode. -DingTo
- row.template_header_3D()
+ row = layout
+ layout.template_header_3D()
if obj:
# Particle edit
@@ -366,6 +366,7 @@ class VIEW3D_MT_view_align(Menu):
layout.operator("view3d.view_all", text="Center Cursor and View All").center = True
layout.operator("view3d.camera_to_view", text="Align Active Camera to View")
+ layout.operator("view3d.camera_to_view_selected", text="Align Active Camera to Selected")
layout.operator("view3d.view_selected")
layout.operator("view3d.view_center_cursor")
@@ -524,7 +525,7 @@ class VIEW3D_MT_select_edit_mesh(Menu):
layout.operator("mesh.select_by_number_vertices", text="Triangles").type = 'TRIANGLES'
layout.operator("mesh.select_by_number_vertices", text="Quads").type = 'QUADS'
if context.scene.tool_settings.mesh_select_mode[2] == False:
- layout.operator("mesh.select_non_manifold", text="Non Manifold")
+ layout.operator("mesh.select_non_manifold", text="Non Manifold")
layout.operator("mesh.select_by_number_vertices", text="Loose Verts/Edges").type = 'OTHER'
layout.operator("mesh.select_similar", text="Similar")
@@ -1839,32 +1840,32 @@ class VIEW3D_MT_edit_text_chars(Menu):
def draw(self, context):
layout = self.layout
- layout.operator("font.text_insert", text="Copyright|Alt C").text = b'\xC2\xA9'.decode()
- layout.operator("font.text_insert", text="Registered Trademark|Alt R").text = b'\xC2\xAE'.decode()
+ layout.operator("font.text_insert", text="Copyright|Alt C").text = "\u00A9"
+ layout.operator("font.text_insert", text="Registered Trademark|Alt R").text = "\u00AE"
layout.separator()
- layout.operator("font.text_insert", text="Degree Sign|Alt G").text = b'\xC2\xB0'.decode()
- layout.operator("font.text_insert", text="Multiplication Sign|Alt x").text = b'\xC3\x97'.decode()
- layout.operator("font.text_insert", text="Circle|Alt .").text = b'\xC2\x8A'.decode()
- layout.operator("font.text_insert", text="Superscript 1|Alt 1").text = b'\xC2\xB9'.decode()
- layout.operator("font.text_insert", text="Superscript 2|Alt 2").text = b'\xC2\xB2'.decode()
- layout.operator("font.text_insert", text="Superscript 3|Alt 3").text = b'\xC2\xB3'.decode()
- layout.operator("font.text_insert", text="Double >>|Alt >").text = b'\xC2\xBB'.decode()
- layout.operator("font.text_insert", text="Double <<|Alt <").text = b'\xC2\xAB'.decode()
- layout.operator("font.text_insert", text="Promillage|Alt %").text = b'\xE2\x80\xB0'.decode()
+ layout.operator("font.text_insert", text="Degree Sign|Alt G").text = "\u00B0"
+ layout.operator("font.text_insert", text="Multiplication Sign|Alt x").text = "\u00D7"
+ layout.operator("font.text_insert", text="Circle|Alt .").text = "\u008A"
+ layout.operator("font.text_insert", text="Superscript 1|Alt 1").text = "\u00B9"
+ layout.operator("font.text_insert", text="Superscript 2|Alt 2").text = "\u00B2"
+ layout.operator("font.text_insert", text="Superscript 3|Alt 3").text = "\u00B3"
+ layout.operator("font.text_insert", text="Double >>|Alt >").text = "\u00BB"
+ layout.operator("font.text_insert", text="Double <<|Alt <").text = "\u00AB"
+ layout.operator("font.text_insert", text="Promillage|Alt %").text = "\u2030"
layout.separator()
- layout.operator("font.text_insert", text="Dutch Florin|Alt F").text = b'\xC2\xA4'.decode()
- layout.operator("font.text_insert", text="British Pound|Alt L").text = b'\xC2\xA3'.decode()
- layout.operator("font.text_insert", text="Japanese Yen|Alt Y").text = b'\xC2\xA5'.decode()
+ layout.operator("font.text_insert", text="Dutch Florin|Alt F").text = "\u00A4"
+ layout.operator("font.text_insert", text="British Pound|Alt L").text = "\u00A3"
+ layout.operator("font.text_insert", text="Japanese Yen|Alt Y").text = "\u00A5"
layout.separator()
- layout.operator("font.text_insert", text="German S|Alt S").text = b'\xC3\x9F'.decode()
- layout.operator("font.text_insert", text="Spanish Question Mark|Alt ?").text = b'\xC2\xBF'.decode()
- layout.operator("font.text_insert", text="Spanish Exclamation Mark|Alt !").text = b'\xC2\xA1'.decode()
+ layout.operator("font.text_insert", text="German S|Alt S").text = "\u00DF"
+ layout.operator("font.text_insert", text="Spanish Question Mark|Alt ?").text = "\u00BF"
+ layout.operator("font.text_insert", text="Spanish Exclamation Mark|Alt !").text = "\u00A1"
class VIEW3D_MT_edit_meta(Menu):
@@ -2174,16 +2175,6 @@ class VIEW3D_PT_view3d_display(Panel):
layout.separator()
- layout.prop(view, "show_reconstruction")
- if view.show_reconstruction:
- layout.label(text="Bundle type:")
- layout.prop(view, "bundle_draw_type", text="")
- layout.prop(view, "bundle_draw_size")
- layout.prop(view, "show_bundle_name")
- layout.prop(view, "show_camera_path")
-
- layout.separator()
-
region = view.region_quadview
layout.operator("screen.region_quadview", text="Toggle Quad View")
@@ -2199,6 +2190,36 @@ class VIEW3D_PT_view3d_display(Panel):
row.prop(region, "use_box_clip")
+class VIEW3D_PT_view3d_motion_tracking(Panel):
+ bl_space_type = 'VIEW_3D'
+ bl_region_type = 'UI'
+ bl_label = "Motion Tracking"
+ bl_options = {'DEFAULT_CLOSED'}
+
+ @classmethod
+ def poll(cls, context):
+ view = context.space_data
+ return (view)
+
+ def draw_header(self, context):
+ view = context.space_data
+
+ self.layout.prop(view, "show_reconstruction", text="")
+
+ def draw(self, context):
+ layout = self.layout
+
+ view = context.space_data
+
+ col = layout.column()
+ col.active = view.show_reconstruction
+ col.prop(view, "show_tracks_name")
+ col.prop(view, "show_camera_path")
+ col.label(text="Tracks:")
+ col.prop(view, "tracks_draw_type", text="")
+ col.prop(view, "tracks_draw_size", text="Size")
+
+
class VIEW3D_PT_view3d_meshdisplay(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
@@ -2266,17 +2287,10 @@ class VIEW3D_PT_background_image(Panel):
bl_label = "Background Images"
bl_options = {'DEFAULT_CLOSED'}
- @classmethod
- def poll(cls, context):
- view = context.space_data
- #~ bg = context.space_data.background_image
- return (view)
-
def draw_header(self, context):
- layout = self.layout
view = context.space_data
- layout.prop(view, "show_background_images", text="")
+ self.layout.prop(view, "show_background_images", text="")
def draw(self, context):
layout = self.layout
@@ -2293,7 +2307,7 @@ class VIEW3D_PT_background_image(Panel):
row.prop(bg, "show_expanded", text="", emboss=False)
if bg.source == 'IMAGE' and bg.image:
row.prop(bg.image, "name", text="", emboss=False)
- if bg.source == 'MOVIE' and bg.clip:
+ elif bg.source == 'MOVIE' and bg.clip:
row.prop(bg.clip, "name", text="", emboss=False)
else:
row.label(text="Not Set")
@@ -2305,16 +2319,15 @@ class VIEW3D_PT_background_image(Panel):
row = box.row()
row.prop(bg, "source", expand=True)
- hasbg = False
+ has_bg = False
if bg.source == 'IMAGE':
row = box.row()
row.template_ID(bg, "image", open="image.open")
if (bg.image):
box.template_image(bg, "image", bg.image_user, compact=True)
- hasbg = True
+ has_bg = True
elif bg.source == 'MOVIE':
- has_clip = False
box.prop(bg, 'use_camera_clip')
column = box.column()
@@ -2325,14 +2338,14 @@ class VIEW3D_PT_background_image(Panel):
column.template_movieclip(bg, "clip", compact=True)
if bg.use_camera_clip or bg.clip:
- hasbg = True
+ has_bg = True
column = box.column()
- column.active = hasbg
+ column.active = has_bg
column.prop(bg.clip_user, "proxy_render_size", text="")
column.prop(bg.clip_user, "use_render_undistorted")
- if hasbg:
+ if has_bg:
box.prop(bg, "opacity", slider=True)
if bg.view_axis != 'CAMERA':
box.prop(bg, "size")
@@ -2356,14 +2369,12 @@ class VIEW3D_PT_transform_orientations(Panel):
layout = self.layout
view = context.space_data
+ orientation = view.current_orientation
col = layout.column()
-
col.prop(view, "transform_orientation")
col.operator("transform.create_orientation", text="Create")
- orientation = view.current_orientation
-
if orientation:
col.prop(orientation, "name")
col.operator("transform.delete_orientation", text="Delete")