Skip to content

Instantly share code, notes, and snippets.

@zeffii
Last active August 29, 2015 14:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zeffii/9fc735c7387fbf3d0ba8 to your computer and use it in GitHub Desktop.
Save zeffii/9fc735c7387fbf3d0ba8 to your computer and use it in GitHub Desktop.
import random
import bpy
from bpy.props import (EnumProperty, PointerProperty)
from bpy.types import (Panel, PropertyGroup)
own_name_space = {}
own_name_space['list 0'] = ['m']
own_name_space['list 1'] = ['a', 'b', 'c']
own_name_space['list 2'] = ['d', 'e', 'f']
own_name_space['list 3'] = ['g', 'h', 'i']
def get_menu_items(self, context):
items = [(t, t, "") for t in own_name_space[context.scene.menu_key]]
return items
class CallbackChangeList(bpy.types.Operator):
bl_idname = "scene.callback_change_enum"
bl_label = "Load new list items"
def execute(self, context):
context.scene.menu_key = random.choice(list(own_name_space.keys()))
return {'FINISHED'}
class LayoutDemoPanel(bpy.types.Panel):
bl_label = "Layout Demo"
bl_idname = "SCENE_PT_layout"
bl_space_type = 'PROPERTIES'
bl_region_type = 'WINDOW'
bl_context = "scene"
def draw(self, context):
layout = self.layout
col = layout.column()
col.label(text=" Simple Row:")
col.prop(context.scene, 'some_selection', text='')
col.operator('scene.callback_change_enum')
def register():
bpy.types.Scene.menu_key = bpy.props.StringProperty(
default='list 0',
options={'HIDDEN'}) # else it appes in Custom Properties menu
bpy.types.Scene.some_selection = EnumProperty(
items=get_menu_items,
name='some_description',
description='choose menu item')
bpy.utils.register_class(LayoutDemoPanel)
bpy.utils.register_class(CallbackChangeList)
bpy.utils.register_module(__name__)
def unregister():
bpy.utils.unregister_module(__name__)
bpy.utils.unregister_class(LayoutDemoPanel)
bpy.utils.unregister_class(CallbackChangeList)
del bpy.types.Scene.menu_key
del bpy.types.Scene.some_selection
if __name__ == "__main__":
register()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment