Skip to content
Snippets Groups Projects
panel.py 3.56 KiB
Newer Older
  • Learn to ignore specific revisions
  • # ##### 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 . 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, (data_types.RenderCopySettingsScene, data_types.RenderCopySettingsDataSetting)))
    
                if isinstance(item, data_types.RenderCopySettingsDataSetting):
    
                    layout.label(text=item.name, icon_value=icon)
    
                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, data_types.RenderCopySettingsDataSetting):
    
                    layout.label(text=item.name, icon_value=icon)
    
                else: #elif isinstance(item, data_types.RenderCopySettingsDataScene):
    
    class RENDER_PT_copy_settings(bpy.types.Panel):
        bl_label = "Copy Settings"
        bl_space_type = "PROPERTIES"
        bl_region_type = "WINDOW"
        bl_context = "render"
        bl_options = {'DEFAULT_CLOSED'}
        COMPAT_ENGINES = {'BLENDER_RENDER'}
    
        def draw(self, context):
            layout = self.layout
            cp_sett = context.scene.render_copy_settings
    
    
            layout.operator("scene.render_copy_settings", text="Copy Render Settings")
    
            split = layout.split(factor=0.75)
    
            split.template_list("RENDER_UL_copy_settings", "settings", cp_sett, "affected_settings",
    
                                cp_sett, "affected_settings_idx", rows=5)
    
            all_set = {sett.strid for sett in cp_sett.affected_settings if sett.copy}
    
            for p in presets.presets:
                label = ""
                if p.elements & all_set == p.elements:
                    label = "Clear {}".format(p.ui_name)
                else:
                    label = "Set {}".format(p.ui_name)
    
                col.operator("scene.render_copy_settings_preset", text=label).presets = {p.rna_enum[0]}
    
    
            layout.prop(cp_sett, "filter_scene")
            if len(cp_sett.allowed_scenes):
    
                layout.label(text="Affected Scenes:")
    
                layout.template_list("RENDER_UL_copy_settings", "scenes", cp_sett, "allowed_scenes",
    #                                 cp_sett, "allowed_scenes_idx", rows=6, type='GRID')
                                     cp_sett, "allowed_scenes_idx", rows=6) # XXX Grid is not nice currently...
    
            else:
                layout.label(text="No Affectable Scenes!", icon="ERROR")
    
    
    
    classes = (
        RENDER_UL_copy_settings,
        RENDER_PT_copy_settings,
    )