# SPDX-License-Identifier: GPL-2.0-or-later

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,
)
