Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/object/object_edit.c
| Show First 20 Lines • Show All 94 Lines • ▼ Show 20 Lines | |||||
| #include "ED_outliner.h" | #include "ED_outliner.h" | ||||
| #include "ED_screen.h" | #include "ED_screen.h" | ||||
| #include "ED_undo.h" | #include "ED_undo.h" | ||||
| #include "RNA_access.h" | #include "RNA_access.h" | ||||
| #include "RNA_define.h" | #include "RNA_define.h" | ||||
| #include "RNA_enum_types.h" | #include "RNA_enum_types.h" | ||||
| #include "UI_interface_icons.h" | |||||
| #include "CLG_log.h" | #include "CLG_log.h" | ||||
| /* for menu/popup icons etc etc*/ | /* for menu/popup icons etc etc*/ | ||||
| #include "UI_interface.h" | #include "UI_interface.h" | ||||
| #include "UI_resources.h" | #include "UI_resources.h" | ||||
| #include "WM_api.h" | #include "WM_api.h" | ||||
| ▲ Show 20 Lines • Show All 1,716 Lines • ▼ Show 20 Lines | if (*menu == NULL) { | ||||
| return; | return; | ||||
| } | } | ||||
| move_to_collection_menus_free_recursive(*menu); | move_to_collection_menus_free_recursive(*menu); | ||||
| MEM_freeN(*menu); | MEM_freeN(*menu); | ||||
| *menu = NULL; | *menu = NULL; | ||||
| } | } | ||||
| static void move_to_collection_menu_create(bContext *UNUSED(C), uiLayout *layout, void *menu_v) | static void move_to_collection_menu_create(bContext *C, uiLayout *layout, void *menu_v) | ||||
| { | { | ||||
| MoveToCollectionData *menu = menu_v; | MoveToCollectionData *menu = menu_v; | ||||
| const char *name = BKE_collection_ui_name_get(menu->collection); | const char *name = BKE_collection_ui_name_get(menu->collection); | ||||
| UI_block_flag_enable(uiLayoutGetBlock(layout), UI_BLOCK_IS_FLIP); | UI_block_flag_enable(uiLayoutGetBlock(layout), UI_BLOCK_IS_FLIP); | ||||
| WM_operator_properties_create_ptr(&menu->ptr, menu->ot); | WM_operator_properties_create_ptr(&menu->ptr, menu->ot); | ||||
| RNA_int_set(&menu->ptr, "collection_index", menu->index); | RNA_int_set(&menu->ptr, "collection_index", menu->index); | ||||
| RNA_boolean_set(&menu->ptr, "is_new", true); | RNA_boolean_set(&menu->ptr, "is_new", true); | ||||
| uiItemFullO_ptr( | uiItemFullO_ptr( | ||||
| layout, menu->ot, "New Collection", ICON_ADD, menu->ptr.data, WM_OP_INVOKE_DEFAULT, 0, NULL); | layout, menu->ot, "New Collection", ICON_ADD, menu->ptr.data, WM_OP_INVOKE_DEFAULT, 0, NULL); | ||||
| uiItemS(layout); | uiItemS(layout); | ||||
| uiItemIntO(layout, name, ICON_SCENE_DATA, menu->ot->idname, "collection_index", menu->index); | Scene *scene = CTX_data_scene(C); | ||||
| const int icon = (menu->collection == scene->master_collection) ? | |||||
| ICON_SCENE_DATA : | |||||
| UI_collection_color_icon_get(menu->collection); | |||||
| uiItemIntO(layout, name, icon, menu->ot->idname, "collection_index", menu->index); | |||||
| for (MoveToCollectionData *submenu = menu->submenus.first; submenu != NULL; | for (MoveToCollectionData *submenu = menu->submenus.first; submenu != NULL; | ||||
| submenu = submenu->next) { | submenu = submenu->next) { | ||||
| move_to_collection_menus_items(layout, submenu); | move_to_collection_menus_items(layout, submenu); | ||||
| } | } | ||||
| } | } | ||||
| static void move_to_collection_menus_items(uiLayout *layout, MoveToCollectionData *menu) | static void move_to_collection_menus_items(uiLayout *layout, MoveToCollectionData *menu) | ||||
| { | { | ||||
| const int icon = UI_collection_color_icon_get(menu->collection); | |||||
| if (BLI_listbase_is_empty(&menu->submenus)) { | if (BLI_listbase_is_empty(&menu->submenus)) { | ||||
| uiItemIntO(layout, | uiItemIntO(layout, | ||||
| menu->collection->id.name + 2, | menu->collection->id.name + 2, | ||||
| ICON_NONE, | icon, | ||||
| menu->ot->idname, | menu->ot->idname, | ||||
| "collection_index", | "collection_index", | ||||
| menu->index); | menu->index); | ||||
| } | } | ||||
| else { | else { | ||||
| uiItemMenuF( | uiItemMenuF(layout, menu->collection->id.name + 2, icon, move_to_collection_menu_create, menu); | ||||
| layout, menu->collection->id.name + 2, ICON_NONE, move_to_collection_menu_create, menu); | |||||
| } | } | ||||
| } | } | ||||
| /* This is allocated statically because we need this available for the menus creation callback. */ | /* This is allocated statically because we need this available for the menus creation callback. */ | ||||
| static MoveToCollectionData *master_collection_menu = NULL; | static MoveToCollectionData *master_collection_menu = NULL; | ||||
| static int move_to_collection_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event)) | static int move_to_collection_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event)) | ||||
| { | { | ||||
| ▲ Show 20 Lines • Show All 145 Lines • Show Last 20 Lines | |||||