Пример #1
0
def make_extra_category_menus():
    global extra_category_menu_classes
    extra_categories = get_extra_categories()
    menu_classes = []
    for category in extra_categories:
        if category.identifier in extra_category_menu_classes:
            clazz = extra_category_menu_classes[category.identifier]
            menu_classes.append(clazz)
        else:

            class NODEVIEW_MT_ExtraCategoryMenu(bpy.types.Menu):
                bl_label = category.name

                def draw(self, context):
                    nodes = [[item.nodetype] for item in self.category_items]
                    layout_draw_categories(self.layout, nodes)

            class_name = "NODEVIEW_MT_EX_" + category.identifier
            items = list(category.items(None))
            menu_class = type(class_name, (NODEVIEW_MT_ExtraCategoryMenu, ),
                              {'category_items': items})
            menu_classes.append(menu_class)
            extra_category_menu_classes[category.identifier] = menu_class
            bpy.utils.register_class(menu_class)
    return menu_classes
Пример #2
0
 def generate(self, context):
     nonlocal std_categories
     extra_categories = get_extra_categories()
     n = len(std_categories)
     all_categories = std_categories[:]
     for category in extra_categories:
         n += 1
         all_categories.append((category.identifier, category.name, category.name, n))
     return all_categories
Пример #3
0
def gather_extra_nodes(idx, datastorage, context):
    extra_categories = get_extra_categories()
    for cat in extra_categories:
        for node in cat.items(context):
            description = SvDocstring(node.get_node_class().__doc__).get_shorthand()
            showstring = node.label + ensure_short_description(description)
            datastorage.append((str(idx), showstring,'',idx))
            loop_reverse[node.label] = node.nodetype
            idx +=1
Пример #4
0
    def draw(self, context):

        # dont show up in other tree menu (needed because we bypassed poll by appending manually)
        tree_type = context.space_data.tree_type
        if not tree_type in sv_tree_types:
            return

        layout = self.layout
        layout.operator_context = 'INVOKE_REGION_WIN'

        if self.bl_idname == 'NODEVIEW_MT_Dynamic_Menu':
            layout.operator("node.sv_extra_search", text="Search", icon='OUTLINER_DATA_FONT')


        layout.separator()
        layout.menu("NODEVIEW_MT_AddGenerators", **icon('OBJECT_DATAMODE'))
        layout.menu("NODEVIEW_MT_AddCurves", **icon('OUTLINER_OB_CURVE'))
        layout.menu("NODEVIEW_MT_AddSurfaces", **icon('SURFACE_DATA'))
        layout.menu("NODEVIEW_MT_AddFields", **icon('OUTLINER_OB_FORCE_FIELD'))
        layout.menu("NODEVIEW_MT_AddTransforms", **icon('ORIENTATION_LOCAL'))
        layout.menu("NODEVIEW_MT_AddAnalyzers", **icon('VIEWZOOM'))
        layout.menu("NODEVIEW_MT_AddModifiers", **icon('MODIFIER'))
        layout.menu("NODEVIEW_MT_AddCAD", **icon('TOOL_SETTINGS'))
        layout.separator()
        layout.menu("NODEVIEW_MT_AddNumber", **icon("SV_NUMBER"))
        layout.menu("NODEVIEW_MT_AddVector", **icon("SV_VECTOR"))
        layout.menu("NODEVIEW_MT_AddMatrix", **icon('EMPTY_AXIS'))
        layout.menu("NODEVIEW_MT_AddQuaternion", **icon('SV_QUATERNION'))
        layout.menu("NODEVIEW_MT_AddLogic", **icon("SV_LOGIC"))
        layout.menu("NODEVIEW_MT_AddListOps", **icon('NLA'))
        layout.menu("NODEVIEW_MT_AddDictionary", icon='OUTLINER_OB_FONT')
        layout.separator()
        layout.menu("NODEVIEW_MT_AddViz", **icon('RESTRICT_VIEW_OFF'))
        layout.menu("NODEVIEW_MT_AddText", icon='TEXT')
        layout.menu("NODEVIEW_MT_AddScene", **icon('SCENE_DATA'))
        layout.menu("NODEVIEW_MT_AddLayout", icon='NODETREE')
        layout.menu("NODE_MT_category_SVERCHOK_BPY_Data", icon="BLENDER")
        layout.separator()
        layout.menu("NODEVIEW_MT_AddNetwork", **icon("SYSTEM"))
        layout.menu("NODEVIEW_MT_AddBetas", **icon("SV_BETA"))
        layout.menu("NODEVIEW_MT_AddAlphas", **icon("SV_ALPHA"))
        layout.separator()
        layout.menu("NODE_MT_category_SVERCHOK_GROUPS", icon="RNA")
        layout.menu("NODEVIEW_MT_AddPresetOps", icon="SETTINGS")

        extra_categories = get_extra_categories()
        if extra_categories:
            layout.separator()
            for category in extra_categories:
                layout.menu("NODEVIEW_MT_EX_" + category.identifier)
Пример #5
0
    def draw(self, context):

        # dont show up in other tree menu (needed because we bypassed poll by appending manually)
        tree_type = context.space_data.tree_type
        if not tree_type in sv_tree_types:
            return

        layout = self.layout
        layout.operator_context = 'INVOKE_REGION_WIN'

        # if self.bl_idname == 'NODEVIEW_MT_Dynamic_Menu':
        layout.operator("node.sv_extra_search",
                        text="Search",
                        icon='OUTLINER_DATA_FONT')

        for item in menu_structure:
            if item[0] == 'separator':
                layout.separator()
            else:
                if "Add" in item[0]:
                    name = item[0].split("Add")[1]
                    if name in node_cats:
                        if category_has_nodes(name):
                            layout.menu(item[0], **icon(item[1]))

                    else:
                        layout.menu(item[0], **icon(item[1]))
                else:
                    # print('AA', globals()[item[0]].bl_label)
                    layout.menu(item[0], **icon(item[1]))

        extra_categories = get_extra_categories()
        if extra_categories:
            layout.separator()
            for category in extra_categories:
                layout.menu("NODEVIEW_MT_EX_" + category.identifier)
        if extra_category_providers:
            for provider in extra_category_providers:
                if hasattr(provider,
                           'use_custom_menu') and provider.use_custom_menu:
                    layout.menu(provider.custom_menu)
Пример #6
0
 def get_cat_list():
     extra_categories = get_extra_categories()
     cat_list = std_menu[:]
     cat_list.extend(extra_categories)
     return cat_list