Last active
August 29, 2015 14:19
-
-
Save zeffii/9fc735c7387fbf3d0ba8 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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