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:
authorJulian Eisel <eiseljulian@gmail.com>2015-09-06 15:21:28 +0300
committerJulian Eisel <eiseljulian@gmail.com>2015-09-06 15:21:28 +0300
commitca7f2749a0c6d50a2f6d609d1289e4241c5efcb5 (patch)
treea3d3e9a99ab1306c5ad263d56aa1d3679fc841b8 /release
parent1be1136785c34ad7b1cf744c3a3c4f35838964c1 (diff)
parent14dd88e817432b5654012ebf544eecc1d07c4e1b (diff)
Merge branch 'master' into wiggly-widgets
Diffstat (limited to 'release')
-rw-r--r--release/datafiles/blender_icons.svg297
-rw-r--r--release/datafiles/blender_icons16/icon16_library_data_broken.datbin1048 -> 1048 bytes
-rw-r--r--release/datafiles/blender_icons16/icon16_snap_grid.datbin0 -> 1048 bytes
-rw-r--r--release/datafiles/blender_icons16/icon16_snap_increment.datbin1048 -> 1048 bytes
-rw-r--r--release/datafiles/blender_icons32/icon32_library_data_broken.datbin4120 -> 4120 bytes
-rw-r--r--release/datafiles/blender_icons32/icon32_snap_grid.datbin0 -> 4120 bytes
-rw-r--r--release/datafiles/blender_icons32/icon32_snap_increment.datbin4120 -> 4120 bytes
-rw-r--r--release/scripts/modules/bl_previews_utils/bl_previews_render.py84
-rw-r--r--release/scripts/modules/bpy/path.py17
-rw-r--r--release/scripts/modules/nodeitems_utils.py2
-rw-r--r--release/scripts/modules/progress_report.py1
-rw-r--r--release/scripts/startup/bl_operators/file.py1
-rw-r--r--release/scripts/startup/bl_ui/properties_freestyle.py4
-rw-r--r--release/scripts/startup/bl_ui/space_filebrowser.py4
-rw-r--r--release/scripts/startup/bl_ui/space_image.py11
-rw-r--r--release/scripts/startup/bl_ui/space_time.py2
-rw-r--r--release/scripts/startup/bl_ui/space_view3d.py4
-rw-r--r--release/scripts/startup/bl_ui/space_view3d_toolbar.py2
18 files changed, 366 insertions, 63 deletions
diff --git a/release/datafiles/blender_icons.svg b/release/datafiles/blender_icons.svg
index 94784a73782..1923b93577a 100644
--- a/release/datafiles/blender_icons.svg
+++ b/release/datafiles/blender_icons.svg
@@ -30748,6 +30748,195 @@
offset="1"
id="stop16000-1" />
</linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient16023"
+ id="radialGradient16031"
+ cx="139"
+ cy="137.5"
+ fx="139"
+ fy="137.5"
+ r="7"
+ gradientTransform="matrix(1.9285714,0,0,0.5,-129.07143,68.75)"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient16023">
+ <stop
+ style="stop-color:#d8d8d8;stop-opacity:1"
+ offset="0"
+ id="stop16025" />
+ <stop
+ style="stop-color:#9a9a9a;stop-opacity:1"
+ offset="1"
+ id="stop16027" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient16023"
+ id="radialGradient14148"
+ cx="139"
+ cy="137.5"
+ fx="139"
+ fy="137.5"
+ r="7"
+ gradientTransform="matrix(1.9285714,0,0,0.5,-129.07143,68.75)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient16023"
+ id="radialGradient14156"
+ cx="139"
+ cy="137.5"
+ fx="139"
+ fy="137.5"
+ r="7"
+ gradientTransform="matrix(1.9285714,0,0,0.5,-129.07143,68.75)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient16023"
+ id="radialGradient14164"
+ cx="139"
+ cy="137.5"
+ fx="139"
+ fy="137.5"
+ r="7"
+ gradientTransform="matrix(1.9285714,0,0,0.5,-129.07143,68.75)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient16023"
+ id="radialGradient14172"
+ cx="139"
+ cy="137.5"
+ fx="139"
+ fy="137.5"
+ r="7"
+ gradientTransform="matrix(1.9285714,0,0,0.5,-129.07143,68.75)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient16023"
+ id="radialGradient14180"
+ cx="139"
+ cy="137.5"
+ fx="139"
+ fy="137.5"
+ r="7"
+ gradientTransform="matrix(1.9285714,0,0,0.5,-129.07143,68.75)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15984"
+ id="radialGradient15990"
+ cx="139"
+ cy="137.5"
+ fx="139"
+ fy="137.5"
+ r="1"
+ gradientTransform="matrix(14.5,0,0,5.5,-1876.5,-618.75)"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient15984">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop15986" />
+ <stop
+ style="stop-color:#a8cafb;stop-opacity:1"
+ offset="1"
+ id="stop15988" />
+ </linearGradient>
+ <radialGradient
+ r="7"
+ fy="137.5"
+ fx="139"
+ cy="137.5"
+ cx="139"
+ gradientTransform="matrix(1.9285714,0,0,0.5,-129.07143,68.75)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient14206"
+ xlink:href="#linearGradient16023"
+ inkscape:collect="always" />
+ <radialGradient
+ r="7"
+ fy="137.5"
+ fx="139"
+ cy="137.5"
+ cx="139"
+ gradientTransform="matrix(1.9285714,0,0,0.5,-129.07143,68.75)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient14208"
+ xlink:href="#linearGradient16023"
+ inkscape:collect="always" />
+ <radialGradient
+ r="7"
+ fy="137.5"
+ fx="139"
+ cy="137.5"
+ cx="139"
+ gradientTransform="matrix(1.9285714,0,0,0.5,-129.07143,68.75)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient14210"
+ xlink:href="#linearGradient16023"
+ inkscape:collect="always" />
+ <radialGradient
+ r="7"
+ fy="137.5"
+ fx="139"
+ cy="137.5"
+ cx="139"
+ gradientTransform="matrix(1.9285714,0,0,0.5,-129.07143,68.75)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient14212"
+ xlink:href="#linearGradient16023"
+ inkscape:collect="always" />
+ <radialGradient
+ r="7"
+ fy="137.5"
+ fx="139"
+ cy="137.5"
+ cx="139"
+ gradientTransform="matrix(1.9285714,0,0,0.5,-129.07143,68.75)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient14214"
+ xlink:href="#linearGradient16023"
+ inkscape:collect="always" />
+ <radialGradient
+ r="1"
+ fy="137.5"
+ fx="139"
+ cy="137.5"
+ cx="139"
+ gradientTransform="matrix(14.5,0,0,5.5,-1876.5,-618.75)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient14216"
+ xlink:href="#linearGradient15984"
+ inkscape:collect="always" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient16023"
+ id="radialGradient16945"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.9285714,0,0,0.5,-129.59176,68.75)"
+ cx="139"
+ cy="137.5"
+ fx="139"
+ fy="137.5"
+ r="7" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient16023"
+ id="radialGradient16947"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.9285714,0,0,0.5,-128.51641,68.75)"
+ cx="139"
+ cy="137.5"
+ fx="139"
+ fy="137.5"
+ r="7" />
</defs>
<sodipodi:namedview
id="base"
@@ -91625,6 +91814,114 @@
style="opacity:0.51799999;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 316.57643,242.95337 c 0,0.33872 -0.26469,0.6133 -0.5912,0.6133 -0.32651,0 -0.5912,-0.27458 -0.5912,-0.6133 0,-0.33872 0.26469,-0.6133 0.5912,-0.6133 0.32651,0 0.5912,0.27458 0.5912,0.6133 z" />
</g>
+ <g
+ transform="translate(189.00803,-79.37555)"
+ style="display:inline;enable-background:new"
+ id="g14119">
+ <g
+ id="g16949">
+ <rect
+ style="color:#000000;fill:#272727;fill-opacity:1;stroke:none;stroke-width:1.20000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new"
+ id="rect15992"
+ width="2"
+ height="7"
+ x="134.47968"
+ y="134"
+ ry="1" />
+ <rect
+ style="color:#000000;fill:#272727;fill-opacity:1;stroke:none;stroke-width:1.20000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new"
+ id="rect15994"
+ width="2"
+ height="7"
+ x="141.55502"
+ y="134"
+ ry="1" />
+ <rect
+ ry="1"
+ y="136"
+ x="131.25"
+ height="3"
+ width="15.5"
+ id="rect15926"
+ style="color:#000000;fill:#272727;fill-opacity:1;stroke:none;stroke-width:1.20000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
+ <rect
+ ry="1"
+ y="132.25"
+ x="131.25"
+ height="10.5"
+ width="2.5"
+ id="rect15930"
+ style="color:#000000;fill:#272727;fill-opacity:1;stroke:none;stroke-width:1.20000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
+ <rect
+ ry="1"
+ y="132.25"
+ x="144.25"
+ height="10.5"
+ width="2.5"
+ id="rect15938"
+ style="color:#000000;fill:#272727;fill-opacity:1;stroke:none;stroke-width:1.20000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
+ <g
+ id="g16016-6"
+ style="fill:url(#radialGradient16031);fill-opacity:1">
+ <rect
+ style="color:#000000;fill:url(#radialGradient14206);fill-opacity:1;stroke:none;stroke-width:1.20000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new"
+ id="rect15946"
+ width="1"
+ height="9"
+ x="132"
+ y="133"
+ ry="0.5" />
+ <rect
+ style="color:#000000;fill:url(#radialGradient14208);fill-opacity:1;stroke:none;stroke-width:1.20000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new"
+ id="rect15946-7"
+ width="1"
+ height="9"
+ x="145"
+ y="133"
+ ry="0.5" />
+ <rect
+ ry="0.5"
+ y="137"
+ x="132"
+ height="1"
+ width="14"
+ id="rect15972"
+ style="color:#000000;fill:url(#radialGradient14210);fill-opacity:1;stroke:none;stroke-width:1.20000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
+ <rect
+ ry="1"
+ y="135"
+ x="134.97968"
+ height="5"
+ width="1"
+ id="rect15996"
+ style="color:#000000;fill:url(#radialGradient16945);fill-opacity:1;stroke:none;stroke-width:1.20000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
+ <rect
+ ry="1"
+ y="135"
+ x="142.05502"
+ height="5"
+ width="1"
+ id="rect15998"
+ style="color:#000000;fill:url(#radialGradient16947);fill-opacity:1;stroke:none;stroke-width:1.20000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
+ </g>
+ <rect
+ style="opacity:0.51499999;color:#000000;fill:#0065ff;fill-opacity:1;stroke:none;stroke-width:1.20000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new"
+ id="rect15974"
+ width="4"
+ height="11"
+ x="137"
+ y="132"
+ ry="1" />
+ <rect
+ ry="1"
+ y="133"
+ x="138"
+ height="9"
+ width="2"
+ id="rect15944"
+ style="color:#000000;fill:url(#radialGradient14216);fill-opacity:1;stroke:none;stroke-width:1.20000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
+ </g>
+ </g>
</g>
</g>
</g>
diff --git a/release/datafiles/blender_icons16/icon16_library_data_broken.dat b/release/datafiles/blender_icons16/icon16_library_data_broken.dat
index e0ede6bc019..613fac48c21 100644
--- a/release/datafiles/blender_icons16/icon16_library_data_broken.dat
+++ b/release/datafiles/blender_icons16/icon16_library_data_broken.dat
Binary files differ
diff --git a/release/datafiles/blender_icons16/icon16_snap_grid.dat b/release/datafiles/blender_icons16/icon16_snap_grid.dat
new file mode 100644
index 00000000000..4def9b8df2e
--- /dev/null
+++ b/release/datafiles/blender_icons16/icon16_snap_grid.dat
Binary files differ
diff --git a/release/datafiles/blender_icons16/icon16_snap_increment.dat b/release/datafiles/blender_icons16/icon16_snap_increment.dat
index 4def9b8df2e..5216afb6d72 100644
--- a/release/datafiles/blender_icons16/icon16_snap_increment.dat
+++ b/release/datafiles/blender_icons16/icon16_snap_increment.dat
Binary files differ
diff --git a/release/datafiles/blender_icons32/icon32_library_data_broken.dat b/release/datafiles/blender_icons32/icon32_library_data_broken.dat
index e1ec782d5f4..89702a9ff9e 100644
--- a/release/datafiles/blender_icons32/icon32_library_data_broken.dat
+++ b/release/datafiles/blender_icons32/icon32_library_data_broken.dat
Binary files differ
diff --git a/release/datafiles/blender_icons32/icon32_snap_grid.dat b/release/datafiles/blender_icons32/icon32_snap_grid.dat
new file mode 100644
index 00000000000..cc4c0efe3c4
--- /dev/null
+++ b/release/datafiles/blender_icons32/icon32_snap_grid.dat
Binary files differ
diff --git a/release/datafiles/blender_icons32/icon32_snap_increment.dat b/release/datafiles/blender_icons32/icon32_snap_increment.dat
index cc4c0efe3c4..eb88877e3ad 100644
--- a/release/datafiles/blender_icons32/icon32_snap_increment.dat
+++ b/release/datafiles/blender_icons32/icon32_snap_increment.dat
Binary files differ
diff --git a/release/scripts/modules/bl_previews_utils/bl_previews_render.py b/release/scripts/modules/bl_previews_utils/bl_previews_render.py
index 0ef49601c43..627a6ab2d3d 100644
--- a/release/scripts/modules/bl_previews_utils/bl_previews_render.py
+++ b/release/scripts/modules/bl_previews_utils/bl_previews_render.py
@@ -33,11 +33,15 @@ INTERN_PREVIEW_TYPES = {'MATERIAL', 'LAMP', 'WORLD', 'TEXTURE', 'IMAGE'}
OBJECT_TYPES_RENDER = {'MESH', 'CURVE', 'SURFACE', 'META', 'FONT'}
+def ids_nolib(bids):
+ return (bid for bid in bids if not bid.library)
+
+
def rna_backup_gen(data, include_props=None, exclude_props=None, root=()):
# only writable properties...
for p in data.bl_rna.properties:
pid = p.identifier
- if pid in {'rna_type',}:
+ if pid in {'rna_type', }:
continue
path = root + (pid,)
if include_props is not None and path not in include_props:
@@ -156,15 +160,15 @@ def do_previews(do_objects, do_groups, do_scenes, do_data_intern):
# .blend as clean as possible!
success = True
- scene = bpy.data.scenes[render_context.scene]
+ scene = bpy.data.scenes[render_context.scene, None]
try:
if render_context.backup_scene is None:
scene.world = None
scene.camera = None
if render_context.camera:
- scene.objects.unlink(bpy.data.objects[render_context.camera])
+ scene.objects.unlink(bpy.data.objects[render_context.camera, None])
if render_context.lamp:
- scene.objects.unlink(bpy.data.objects[render_context.lamp])
+ scene.objects.unlink(bpy.data.objects[render_context.lamp, None])
bpy.data.scenes.remove(scene)
scene = None
else:
@@ -175,7 +179,7 @@ def do_previews(do_objects, do_groups, do_scenes, do_data_intern):
if render_context.world is not None:
try:
- world = bpy.data.worlds[render_context.world]
+ world = bpy.data.worlds[render_context.world, None]
if render_context.backup_world is None:
if scene is not None:
scene.world = None
@@ -189,39 +193,40 @@ def do_previews(do_objects, do_groups, do_scenes, do_data_intern):
if render_context.camera:
try:
- camera = bpy.data.objects[render_context.camera]
+ camera = bpy.data.objects[render_context.camera, None]
if render_context.backup_camera is None:
if scene is not None:
scene.camera = None
scene.objects.unlink(camera)
camera.user_clear()
bpy.data.objects.remove(camera)
- bpy.data.cameras.remove(bpy.data.cameras[render_context.camera_data])
+ bpy.data.cameras.remove(bpy.data.cameras[render_context.camera_data, None])
else:
rna_backup_restore(camera, render_context.backup_camera)
- rna_backup_restore(bpy.data.cameras[render_context.camera_data], render_context.backup_camera_data)
+ rna_backup_restore(bpy.data.cameras[render_context.camera_data, None],
+ render_context.backup_camera_data)
except Exception as e:
print("ERROR:", e)
success = False
if render_context.lamp:
try:
- lamp = bpy.data.objects[render_context.lamp]
+ lamp = bpy.data.objects[render_context.lamp, None]
if render_context.backup_lamp is None:
if scene is not None:
scene.objects.unlink(lamp)
lamp.user_clear()
bpy.data.objects.remove(lamp)
- bpy.data.lamps.remove(bpy.data.lamps[render_context.lamp_data])
+ bpy.data.lamps.remove(bpy.data.lamps[render_context.lamp_data, None])
else:
rna_backup_restore(lamp, render_context.backup_lamp)
- rna_backup_restore(bpy.data.lamps[render_context.lamp_data], render_context.backup_lamp_data)
+ rna_backup_restore(bpy.data.lamps[render_context.lamp_data, None], render_context.backup_lamp_data)
except Exception as e:
print("ERROR:", e)
success = False
try:
- image = bpy.data.images[render_context.image]
+ image = bpy.data.images[render_context.image, None]
image.user_clear()
bpy.data.images.remove(image)
except Exception as e:
@@ -232,7 +237,7 @@ def do_previews(do_objects, do_groups, do_scenes, do_data_intern):
def objects_render_engine_guess(obs):
for obname in obs:
- ob = bpy.data.objects[obname]
+ ob = bpy.data.objects[obname, None]
for matslot in ob.material_slots:
mat = matslot.material
if mat and mat.use_nodes and mat.node_tree:
@@ -264,7 +269,7 @@ def do_previews(do_objects, do_groups, do_scenes, do_data_intern):
def objects_bbox_calc(camera, objects):
bbox = (Vector((1e9, 1e9, 1e9)), Vector((-1e9, -1e9, -1e9)))
for obname in objects:
- ob = bpy.data.objects[obname]
+ ob = bpy.data.objects[obname, None]
object_bbox_merge(bbox, ob, camera)
# Our bbox has been generated in camera local space, bring it back in world one
bbox[0][:] = camera.matrix_world * bbox[0]
@@ -282,10 +287,10 @@ def do_previews(do_objects, do_groups, do_scenes, do_data_intern):
return cos
def preview_render_do(render_context, item_container, item_name, objects):
- scene = bpy.data.scenes[render_context.scene]
+ scene = bpy.data.scenes[render_context.scene, None]
if objects is not None:
- camera = bpy.data.objects[render_context.camera]
- lamp = bpy.data.objects[render_context.lamp] if render_context.lamp is not None else None
+ camera = bpy.data.objects[render_context.camera, None]
+ lamp = bpy.data.objects[render_context.lamp, None] if render_context.lamp is not None else None
cos = objects_bbox_calc(camera, objects)
loc, ortho_scale = camera.camera_fit_coords(scene, cos)
camera.location = loc
@@ -296,14 +301,11 @@ def do_previews(do_objects, do_groups, do_scenes, do_data_intern):
bpy.ops.render.render(write_still=True)
- image = bpy.data.images[render_context.image]
- item = getattr(bpy.data, item_container)[item_name]
+ image = bpy.data.images[render_context.image, None]
+ item = getattr(bpy.data, item_container)[item_name, None]
image.reload()
- # Note: we could use struct module here, but not quite sure it'd give any advantage really...
- pix = tuple((round(r * 255)) + (round(g * 255) << 8) + (round(b * 255) << 16) + (round(a * 255) << 24)
- for r, g, b, a in zip(*[iter(image.pixels)] * 4))
item.preview.image_size = (RENDER_PREVIEW_SIZE, RENDER_PREVIEW_SIZE)
- item.preview.image_pixels = pix
+ item.preview.image_pixels_float[:] = image.pixels
# And now, main code!
do_save = True
@@ -320,12 +322,12 @@ def do_previews(do_objects, do_groups, do_scenes, do_data_intern):
prev_scenename = bpy.context.screen.scene.name
if do_objects:
- prev_shown = tuple(ob.hide_render for ob in bpy.data.objects)
- for ob in bpy.data.objects:
+ prev_shown = tuple(ob.hide_render for ob in ids_nolib(bpy.data.objects))
+ for ob in ids_nolib(bpy.data.objects):
if ob in objects_ignored:
continue
ob.hide_render = True
- for root in bpy.data.objects:
+ for root in ids_nolib(bpy.data.objects):
if root.name in objects_ignored:
continue
if root.type not in OBJECT_TYPES_RENDER:
@@ -338,11 +340,11 @@ def do_previews(do_objects, do_groups, do_scenes, do_data_intern):
render_context = render_context_create(render_engine, objects_ignored)
render_contexts[render_engine] = render_context
- scene = bpy.data.scenes[render_context.scene]
+ scene = bpy.data.scenes[render_context.scene, None]
bpy.context.screen.scene = scene
for obname in objects:
- ob = bpy.data.objects[obname]
+ ob = bpy.data.objects[obname, None]
if obname not in scene.objects:
scene.objects.link(ob)
ob.hide_render = False
@@ -360,17 +362,17 @@ def do_previews(do_objects, do_groups, do_scenes, do_data_intern):
# OverflowError: Python int too large to convert to C long
# ... :(
import sys
- scene = bpy.data.scenes[render_context.scene]
+ scene = bpy.data.scenes[render_context.scene, None]
for obname in objects:
- ob = bpy.data.objects[obname]
+ ob = bpy.data.objects[obname, None]
scene.objects.unlink(ob)
ob.hide_render = True
- for ob, is_rendered in zip(bpy.data.objects, prev_shown):
+ for ob, is_rendered in zip(tuple(ids_nolib(bpy.data.objects)), prev_shown):
ob.hide_render = is_rendered
if do_groups:
- for grp in bpy.data.groups:
+ for grp in ids_nolib(bpy.data.groups):
if grp.name in groups_ignored:
continue
objects = tuple(ob.name for ob in grp.objects)
@@ -381,7 +383,7 @@ def do_previews(do_objects, do_groups, do_scenes, do_data_intern):
render_context = render_context_create(render_engine, objects_ignored)
render_contexts[render_engine] = render_context
- scene = bpy.data.scenes[render_context.scene]
+ scene = bpy.data.scenes[render_context.scene, None]
bpy.context.screen.scene = scene
bpy.ops.object.group_instance_add(group=grp.name)
@@ -391,16 +393,16 @@ def do_previews(do_objects, do_groups, do_scenes, do_data_intern):
preview_render_do(render_context, 'groups', grp.name, objects)
- scene = bpy.data.scenes[render_context.scene]
- scene.objects.unlink(bpy.data.objects[grp_obname])
+ scene = bpy.data.scenes[render_context.scene, None]
+ scene.objects.unlink(bpy.data.objects[grp_obname, None])
- bpy.context.screen.scene = bpy.data.scenes[prev_scenename]
+ bpy.context.screen.scene = bpy.data.scenes[prev_scenename, None]
for render_context in render_contexts.values():
if not render_context_delete(render_context):
do_save = False # Do not save file if something went wrong here, we could 'pollute' it with temp data...
if do_scenes:
- for scene in bpy.data.scenes:
+ for scene in ids_nolib(bpy.data.scenes):
has_camera = scene.camera is not None
bpy.context.screen.scene = scene
render_context = render_context_create('__SCENE', objects_ignored)
@@ -417,7 +419,7 @@ def do_previews(do_objects, do_groups, do_scenes, do_data_intern):
if not render_context_delete(render_context):
do_save = False
- bpy.context.screen.scene = bpy.data.scenes[prev_scenename]
+ bpy.context.screen.scene = bpy.data.scenes[prev_scenename, None]
if do_save:
print("Saving %s..." % bpy.data.filepath)
try:
@@ -435,15 +437,15 @@ def do_clear_previews(do_objects, do_groups, do_scenes, do_data_intern):
bpy.ops.wm.previews_clear(id_type=INTERN_PREVIEW_TYPES)
if do_objects:
- for ob in bpy.data.objects:
+ for ob in ids_nolib(bpy.data.objects):
ob.preview.image_size = (0, 0)
if do_groups:
- for grp in bpy.data.groups:
+ for grp in ids_nolib(bpy.data.groups):
grp.preview.image_size = (0, 0)
if do_scenes:
- for scene in bpy.data.scenes:
+ for scene in ids_nolib(bpy.data.scenes):
scene.preview.image_size = (0, 0)
print("Saving %s..." % bpy.data.filepath)
diff --git a/release/scripts/modules/bpy/path.py b/release/scripts/modules/bpy/path.py
index b7d7d9ee694..d7c6101115d 100644
--- a/release/scripts/modules/bpy/path.py
+++ b/release/scripts/modules/bpy/path.py
@@ -283,22 +283,21 @@ def ensure_ext(filepath, ext, case_sensitive=False):
"""
Return the path with the extension added if it is not already set.
- :arg ext: The extension to check for.
+ :arg ext: The extension to check for, can be a compound extension. Should
+ start with a dot, such as '.blend' or '.tar.gz'.
:type ext: string
:arg case_sensitive: Check for matching case when comparing extensions.
:type case_sensitive: bool
"""
- 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())):
+ if case_sensitive:
+ if filepath.endswith(ext):
return filepath
- else:
- return fn_base + ext
-
else:
- return filepath + ext
+ if filepath[-len(ext):].lower().endswith(ext.lower()):
+ return filepath
+
+ return filepath + ext
def module_names(path, recursive=False):
diff --git a/release/scripts/modules/nodeitems_utils.py b/release/scripts/modules/nodeitems_utils.py
index 1cc9afc78cc..be6f031217c 100644
--- a/release/scripts/modules/nodeitems_utils.py
+++ b/release/scripts/modules/nodeitems_utils.py
@@ -85,6 +85,7 @@ class NodeItemCustom:
_node_categories = {}
+
def register_node_categories(identifier, cat_list):
if identifier in _node_categories:
raise KeyError("Node categories list '%s' already registered" % identifier)
@@ -167,6 +168,7 @@ def unregister_node_categories(identifier=None):
unregister_node_cat_types(cat_types)
_node_categories.clear()
+
def draw_node_categories_menu(self, context):
for cats in _node_categories.values():
cats[1](self, context)
diff --git a/release/scripts/modules/progress_report.py b/release/scripts/modules/progress_report.py
index 0d1f4f2bef8..578eb967fec 100644
--- a/release/scripts/modules/progress_report.py
+++ b/release/scripts/modules/progress_report.py
@@ -20,6 +20,7 @@
import time
+
class ProgressReport:
"""
A basic 'progress report' using either simple prints in console, or WindowManager's 'progress' API.
diff --git a/release/scripts/startup/bl_operators/file.py b/release/scripts/startup/bl_operators/file.py
index a6a6982e746..efcc7d5c65e 100644
--- a/release/scripts/startup/bl_operators/file.py
+++ b/release/scripts/startup/bl_operators/file.py
@@ -28,6 +28,7 @@ from bpy.props import (
# ########## Datablock previews... ##########
+
class WM_OT_previews_batch_generate(Operator):
"""Generate selected .blend file's previews"""
bl_idname = "wm.previews_batch_generate"
diff --git a/release/scripts/startup/bl_ui/properties_freestyle.py b/release/scripts/startup/bl_ui/properties_freestyle.py
index f58a698d194..e0620447185 100644
--- a/release/scripts/startup/bl_ui/properties_freestyle.py
+++ b/release/scripts/startup/bl_ui/properties_freestyle.py
@@ -381,7 +381,6 @@ class RENDERLAYER_PT_freestyle_linestyle(RenderLayerFreestyleEditorButtonsPanel,
message = "Enable Face Smoothness to use this modifier"
self.draw_modifier_box_error(col.box(), modifier, message)
-
def draw_alpha_modifier(self, context, modifier):
layout = self.layout
@@ -496,7 +495,6 @@ class RENDERLAYER_PT_freestyle_linestyle(RenderLayerFreestyleEditorButtonsPanel,
row.prop(modifier, "angle_min")
row.prop(modifier, "angle_max")
-
elif modifier.type == 'CURVATURE_3D':
self.draw_modifier_curve_common(box, modifier, False, False)
row = box.row(align=True)
@@ -510,7 +508,6 @@ class RENDERLAYER_PT_freestyle_linestyle(RenderLayerFreestyleEditorButtonsPanel,
message = "Enable Face Smoothness to use this modifier"
self.draw_modifier_box_error(col.box(), modifier, message)
-
def draw_geometry_modifier(self, context, modifier):
layout = self.layout
@@ -611,7 +608,6 @@ class RENDERLAYER_PT_freestyle_linestyle(RenderLayerFreestyleEditorButtonsPanel,
elif modifier.type == 'SIMPLIFICATION':
box.prop(modifier, "tolerance")
-
def draw(self, context):
layout = self.layout
diff --git a/release/scripts/startup/bl_ui/space_filebrowser.py b/release/scripts/startup/bl_ui/space_filebrowser.py
index 0b9c8474dd9..ca695208a67 100644
--- a/release/scripts/startup/bl_ui/space_filebrowser.py
+++ b/release/scripts/startup/bl_ui/space_filebrowser.py
@@ -69,8 +69,8 @@ class FILEBROWSER_HT_header(Header):
row.prop(params, "use_filter_folder", text="")
if params.filter_glob:
- #if st.active_operator and hasattr(st.active_operator, "filter_glob"):
- # row.prop(params, "filter_glob", text="")
+ # if st.active_operator and hasattr(st.active_operator, "filter_glob"):
+ # row.prop(params, "filter_glob", text="")
row.label(params.filter_glob)
else:
row.prop(params, "use_filter_blender", text="")
diff --git a/release/scripts/startup/bl_ui/space_image.py b/release/scripts/startup/bl_ui/space_image.py
index b3fc643cc41..c3024b25282 100644
--- a/release/scripts/startup/bl_ui/space_image.py
+++ b/release/scripts/startup/bl_ui/space_image.py
@@ -705,7 +705,7 @@ class IMAGE_PT_tools_transform_uvs(Panel, UVToolsPanel):
col.operator("transform.shear")
-class IMAGE_PT_paint(Panel, BrushButtonsPanel):
+class IMAGE_PT_paint(Panel, ImagePaintPanel):
bl_label = "Paint"
bl_category = "Tools"
@@ -721,6 +721,11 @@ class IMAGE_PT_paint(Panel, BrushButtonsPanel):
if brush:
brush_texpaint_common(self, context, layout, brush, settings)
+ @classmethod
+ def poll(cls, context):
+ sima = context.space_data
+ toolsettings = context.tool_settings.image_paint
+ return sima.show_paint
class IMAGE_PT_tools_brush_overlay(BrushButtonsPanel, Panel):
bl_label = "Overlay"
@@ -920,7 +925,7 @@ class IMAGE_PT_paint_curve(BrushButtonsPanel, Panel):
row.operator("brush.curve_preset", icon='NOCURVE', text="").shape = 'MAX'
-class VIEW3D_PT_tools_imagepaint_symmetry(BrushButtonsPanel, Panel):
+class IMAGE_PT_tools_imagepaint_symmetry(BrushButtonsPanel, Panel):
bl_category = "Tools"
bl_context = "imagepaint"
bl_label = "Tiling"
@@ -936,7 +941,7 @@ class VIEW3D_PT_tools_imagepaint_symmetry(BrushButtonsPanel, Panel):
row = col.row(align=True)
row.prop(ipaint, "tile_x", text="X", toggle=True)
row.prop(ipaint, "tile_y", text="Y", toggle=True)
-
+
class IMAGE_PT_tools_brush_appearance(BrushButtonsPanel, Panel):
bl_label = "Appearance"
diff --git a/release/scripts/startup/bl_ui/space_time.py b/release/scripts/startup/bl_ui/space_time.py
index c4c4097315c..817c28c6359 100644
--- a/release/scripts/startup/bl_ui/space_time.py
+++ b/release/scripts/startup/bl_ui/space_time.py
@@ -230,7 +230,7 @@ class TIME_MT_autokey(Menu):
def marker_menu_generic(layout):
- #layout.operator_context = 'EXEC_REGION_WIN'
+ # layout.operator_context = 'EXEC_REGION_WIN'
layout.column()
layout.operator("marker.add", "Add Marker")
diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py
index b936e2df165..bb0ad001c34 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -1998,7 +1998,7 @@ class VIEW3D_MT_pose_group(Menu):
layout.separator()
- #layout.operator_context = 'INVOKE_AREA'
+ # layout.operator_context = 'INVOKE_AREA'
layout.operator("pose.group_unassign")
layout.operator("pose.group_remove")
@@ -3292,7 +3292,7 @@ class VIEW3D_PT_background_image(Panel):
box.template_image(bg, "image", bg.image_user, compact=True)
has_bg = True
- if use_multiview and bg.view_axis in {'CAMERA','ALL'}:
+ if use_multiview and bg.view_axis in {'CAMERA', 'ALL'}:
box.prop(bg.image, "use_multiview")
column = box.column()
diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
index 2294e109f0c..a24dc494c30 100644
--- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
@@ -1552,7 +1552,6 @@ class VIEW3D_PT_sculpt_symmetry(Panel, View3DPaintPanel):
row.prop(sculpt, "lock_y", text="Y", toggle=True)
row.prop(sculpt, "lock_z", text="Z", toggle=True)
-
layout.label(text="Tiling:")
row = layout.row(align=True)
@@ -1562,6 +1561,7 @@ class VIEW3D_PT_sculpt_symmetry(Panel, View3DPaintPanel):
layout.column().prop(sculpt, "tile_offset", text="Tile Offset")
+
class VIEW3D_PT_tools_brush_appearance(Panel, View3DPaintPanel):
bl_category = "Options"
bl_label = "Appearance"