Fix T52839: "Copy Render Settings" doesn't work.
Recent removing of registered types from bpy.types broke this, had to twist a bit around to get it working again...
This commit is contained in:
parent
0c693054d0
commit
267662e07a
Notes:
blender-bot
2023-02-14 19:35:24 +01:00
Referenced by issue #53948, Addon Copy-settings Referenced by issue #52839, "Copy Render Settings" doesn't work
|
@ -21,8 +21,8 @@
|
|||
bl_info = {
|
||||
"name": "Copy Settings",
|
||||
"author": "Bastien Montagne",
|
||||
"version": (0, 1, 6),
|
||||
"blender": (2, 65, 9),
|
||||
"version": (0, 1, 7),
|
||||
"blender": (2, 79, 1),
|
||||
"location": "Render buttons (Properties window)",
|
||||
"description": "Allows to copy a selection of render settings "
|
||||
"from current scene to others.",
|
||||
|
@ -34,12 +34,14 @@ bl_info = {
|
|||
|
||||
if "bpy" in locals():
|
||||
import importlib
|
||||
importlib.reload(data)
|
||||
importlib.reload(operator)
|
||||
importlib.reload(panel)
|
||||
importlib.reload(translations)
|
||||
|
||||
else:
|
||||
from . import (
|
||||
data,
|
||||
operator,
|
||||
panel,
|
||||
translations,
|
||||
|
@ -48,59 +50,17 @@ else:
|
|||
|
||||
import bpy
|
||||
from bpy.props import (
|
||||
StringProperty,
|
||||
BoolProperty,
|
||||
IntProperty,
|
||||
CollectionProperty,
|
||||
PointerProperty,
|
||||
)
|
||||
|
||||
########################################################################################################################
|
||||
# Global properties for the script, for UI (as there’s no way to let them in the operator…).
|
||||
########################################################################################################################
|
||||
|
||||
class RenderCopySettingsDataScene(bpy.types.PropertyGroup):
|
||||
allowed = BoolProperty(default=True)
|
||||
|
||||
|
||||
class RenderCopySettingsDataSetting(bpy.types.PropertyGroup):
|
||||
strid = StringProperty(default="")
|
||||
copy = BoolProperty(default=False)
|
||||
|
||||
|
||||
class RenderCopySettingsData(bpy.types.PropertyGroup):
|
||||
# XXX: The consistency of this collection is delegated to the UI code.
|
||||
# It should only contain one element for each render setting.
|
||||
affected_settings = CollectionProperty(type=RenderCopySettingsDataSetting,
|
||||
name="Affected Settings",
|
||||
description="The list of all available render settings")
|
||||
# XXX Unused, but needed for template_list…
|
||||
affected_settings_idx = IntProperty()
|
||||
|
||||
# XXX: The consistency of this collection is delegated to the UI code.
|
||||
# It should only contain one element for each scene.
|
||||
allowed_scenes = CollectionProperty(type=RenderCopySettingsDataScene,
|
||||
name="Allowed Scenes",
|
||||
description="The list all scenes in the file")
|
||||
# XXX Unused, but needed for template_list…
|
||||
allowed_scenes_idx = IntProperty()
|
||||
|
||||
filter_scene = StringProperty(name="Filter Scene",
|
||||
description="Regex to only affect scenes which name matches it",
|
||||
default="")
|
||||
|
||||
|
||||
classes = (
|
||||
RenderCopySettingsDataScene,
|
||||
RenderCopySettingsDataSetting,
|
||||
RenderCopySettingsData,
|
||||
) + operator.classes + panel.classes
|
||||
classes = data.classes + operator.classes + panel.classes
|
||||
|
||||
|
||||
def register():
|
||||
for cls in classes:
|
||||
bpy.utils.register_class(cls)
|
||||
bpy.types.Scene.render_copy_settings = PointerProperty(type=RenderCopySettingsData)
|
||||
bpy.types.Scene.render_copy_settings = PointerProperty(type=data.RenderCopySettingsData)
|
||||
|
||||
bpy.app.translations.register(__name__, translations.translations_dict)
|
||||
|
||||
|
|
|
@ -0,0 +1,68 @@
|
|||
# ##### BEGIN GPL LICENSE BLOCK #####
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# ##### END GPL LICENSE BLOCK #####
|
||||
|
||||
# <pep8 compliant>
|
||||
|
||||
import bpy
|
||||
from bpy.props import (
|
||||
StringProperty,
|
||||
BoolProperty,
|
||||
IntProperty,
|
||||
CollectionProperty,
|
||||
)
|
||||
|
||||
########################################################################################################################
|
||||
# Global properties for the script, for UI (as there’s no way to let them in the operator…).
|
||||
########################################################################################################################
|
||||
|
||||
class RenderCopySettingsDataScene(bpy.types.PropertyGroup):
|
||||
allowed = BoolProperty(default=True)
|
||||
|
||||
|
||||
class RenderCopySettingsDataSetting(bpy.types.PropertyGroup):
|
||||
strid = StringProperty(default="")
|
||||
copy = BoolProperty(default=False)
|
||||
|
||||
|
||||
class RenderCopySettingsData(bpy.types.PropertyGroup):
|
||||
# XXX: The consistency of this collection is delegated to the UI code.
|
||||
# It should only contain one element for each render setting.
|
||||
affected_settings = CollectionProperty(type=RenderCopySettingsDataSetting,
|
||||
name="Affected Settings",
|
||||
description="The list of all available render settings")
|
||||
# XXX Unused, but needed for template_list…
|
||||
affected_settings_idx = IntProperty()
|
||||
|
||||
# XXX: The consistency of this collection is delegated to the UI code.
|
||||
# It should only contain one element for each scene.
|
||||
allowed_scenes = CollectionProperty(type=RenderCopySettingsDataScene,
|
||||
name="Allowed Scenes",
|
||||
description="The list all scenes in the file")
|
||||
# XXX Unused, but needed for template_list…
|
||||
allowed_scenes_idx = IntProperty()
|
||||
|
||||
filter_scene = StringProperty(name="Filter Scene",
|
||||
description="Regex to only affect scenes which name matches it",
|
||||
default="")
|
||||
|
||||
|
||||
classes = (
|
||||
RenderCopySettingsDataScene,
|
||||
RenderCopySettingsDataSetting,
|
||||
RenderCopySettingsData,
|
||||
)
|
|
@ -20,23 +20,24 @@
|
|||
|
||||
import bpy
|
||||
from . import presets
|
||||
from . import data as data_types
|
||||
|
||||
|
||||
class RENDER_UL_copy_settings(bpy.types.UIList):
|
||||
def draw_item(self, context, layout, data, item, icon, active_data, active_propname, index):
|
||||
#assert(isinstance(item, (bpy.types.RenderCopySettingsScene, bpy.types.RenderCopySettingsDataSetting)))
|
||||
#assert(isinstance(item, (data_types.RenderCopySettingsScene, data_types.RenderCopySettingsDataSetting)))
|
||||
if self.layout_type in {'DEFAULT', 'COMPACT'}:
|
||||
if isinstance(item, bpy.types.RenderCopySettingsDataSetting):
|
||||
if isinstance(item, data_types.RenderCopySettingsDataSetting):
|
||||
layout.label(item.name, icon_value=icon)
|
||||
layout.prop(item, "copy", text="")
|
||||
else: #elif isinstance(item, bpy.types.RenderCopySettingsDataScene):
|
||||
else: #elif isinstance(item, data_types.RenderCopySettingsDataScene):
|
||||
layout.prop(item, "allowed", text=item.name, toggle=True)
|
||||
elif self.layout_type in {'GRID'}:
|
||||
layout.alignment = 'CENTER'
|
||||
if isinstance(item, bpy.types.RenderCopySettingsDataSetting):
|
||||
if isinstance(item, data_types.RenderCopySettingsDataSetting):
|
||||
layout.label(item.name, icon_value=icon)
|
||||
layout.prop(item, "copy", text="")
|
||||
else: #elif isinstance(item, bpy.types.RenderCopySettingsDataScene):
|
||||
else: #elif isinstance(item, data_types.RenderCopySettingsDataScene):
|
||||
layout.prop(item, "allowed", text=item.name, toggle=True)
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue