Browse Source

Implement standard UI List draw function

Same as before, only doing Textures right now.
pull/104/head
Adam Johnson 6 years ago
parent
commit
f8aafcf3f1
Signed by: Hoikas
GPG Key ID: 0B6515D6FF6F271E
  1. 1
      korman/ui/__init__.py
  2. 46
      korman/ui/ui_list.py
  3. 18
      korman/ui/ui_texture.py

1
korman/ui/__init__.py

@ -14,6 +14,7 @@
# along with Korman. If not, see <http://www.gnu.org/licenses/>.
from .ui_lamp import *
from .ui_list import *
from .ui_menus import *
from .ui_modifiers import *
from .ui_object import *

46
korman/ui/ui_list.py

@ -0,0 +1,46 @@
# This file is part of Korman.
#
# Korman 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 3 of the License, or
# (at your option) any later version.
#
# Korman 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 Korman. If not, see <http://www.gnu.org/licenses/>.
import bpy
def draw_list(layout, listtype, context_attr, prop_base, collection_name, index_name, **kwargs):
"""Draws a generic UI list, including add/remove buttons. Note that in order to use this,
the parent datablock must be available in the context provided to operators. This should
always be true, but this is Blender...
Arguments:
- layout: required
- listtype: bpy.types.UIList subclass
- context_attr: attribute name to get the properties from in the current context
- prop_base: property group owning the collection
- collection_name: name of the collection property
- index_name: name of the active element index property
*** any other arguments are passed as keyword arguments to the template_list call
"""
prop_path = prop_base.path_from_id()
row = layout.row()
row.template_list(listtype, collection_name, prop_base, collection_name,
prop_base, index_name, **kwargs)
col = row.column(align=True)
op = col.operator("ui.plasma_collection_add", icon="ZOOMIN", text="")
op.context = context_attr
op.group_path = prop_path
op.collection_prop = collection_name
op.index_prop = index_name
op = col.operator("ui.plasma_collection_remove", icon="ZOOMOUT", text="")
op.context = context_attr
op.group_path = prop_path
op.collection_prop = collection_name
op.index_prop = index_name

18
korman/ui/ui_texture.py

@ -15,6 +15,8 @@
import bpy
from . import ui_list
class TextureButtonsPanel:
bl_space_type = "PROPERTIES"
bl_region_type = "WINDOW"
@ -42,20 +44,8 @@ class PlasmaEnvMapPanel(TextureButtonsPanel, bpy.types.Panel):
layout.separator()
layout.label("Visibility Sets:")
row = layout.row()
row.template_list("VisRegionListUI", "vis_regions", layer_props, "vis_regions", layer_props, "active_region_index",
rows=2, maxrows=3)
col = row.column(align=True)
op = col.operator("ui.plasma_collection_add", icon="ZOOMIN", text="")
op.context = "texture"
op.group_path = "plasma_layer"
op.collection_prop = "vis_regions"
op.index_prop = "active_region_index"
op = col.operator("ui.plasma_collection_remove", icon="ZOOMOUT", text="")
op.context = "texture"
op.group_path = "plasma_layer"
op.collection_prop = "vis_regions"
op.index_prop = "active_region_index"
ui_list.draw_list(layout, "VisRegionListUI", "texture", layer_props,
"vis_regions", "active_region_index", rows=2, maxrows=3)
rgns = layer_props.vis_regions
if layer_props.vis_regions:
layout.prop(rgns[layer_props.active_region_index], "control_region")

Loading…
Cancel
Save