13#include <fmt/format.h>
121 ®ion->v2d, event->
mval[0], event->
mval[1], &view_mval[0], &view_mval[1]);
124 space_outliner, &space_outliner->
tree, view_mval[1]);
127 bool is_over_icon =
false;
130 space_outliner, hovered_te, view_mval[0],
nullptr, &is_over_icon);
133 bool changed =
false;
159 ot->
name =
"Update Highlight";
160 ot->
idname =
"OUTLINER_OT_highlight_update";
161 ot->
description =
"Update the item highlight based on the current mouse position";
188 tselem->
flag &= ~TSE_CLOSED;
212 ®ion->v2d, event->
mval[0], event->
mval[1], &view_mval[0], &view_mval[1]);
220 if (te &&
TREESTORE(te) != data->prev_tselem) {
223 if (te->
xs == data->x_location) {
234 data->prev_tselem =
nullptr;
277 OpenCloseData *toggle_data = MEM_cnew<OpenCloseData>(
"open_close_data");
279 toggle_data->
open = open;
295 ot->
idname =
"OUTLINER_OT_item_openclose";
296 ot->
description =
"Toggle whether item under cursor is enabled or closed";
317 bool add_textbut =
false;
364 BKE_report(reports,
RPT_INFO,
"Library path is not editable, use the Relocate operation");
392 if (!active_element) {
397 return active_element;
418 View2D *v2d = ®ion->v2d;
431 int ytop = (te->
ys + (size_y / 2));
432 int delta_y = ytop - v2d->
cur.
ymax;
445 ot->
idname =
"OUTLINER_OT_item_rename";
460 "Rename the active item, rather than the one the mouse is over");
486 "Cannot delete library override id '%s', it is part of an override hierarchy",
503 "Cannot delete id '%s', indirectly used data-blocks need at least one user",
511 reports,
RPT_WARNING,
"Cannot delete currently visible workspace id '%s'", id->name);
538 int id_tagged_num = 0;
543 if (te->
idcode != 0 && tselem->
id) {
547 "Cannot delete indirectly linked library '%s'",
548 ((
Library *)tselem->
id)->runtime.filepath_abs);
564 return id_tagged_num;
578 int id_tagged_num = 0;
585 if (id_tagged_num == 0) {
597 ot->
name =
"Delete Data-Block";
598 ot->
idname =
"OUTLINER_OT_id_delete";
620 ID *old_id =
static_cast<ID *
>(
622 ID *new_id =
static_cast<ID *
>(
626 if (space_outliner ==
nullptr) {
630 if (!(old_id && new_id && (old_id != new_id) && (
GS(old_id->
name) ==
GS(new_id->
name)))) {
633 "Invalid old/new ID pair ('%s' / '%s')",
634 old_id ? old_id->
name :
"Invalid ID",
635 new_id ? new_id->
name :
"Invalid ID");
642 "Old ID '%s' is linked from a library, indirect usages of this data-block will "
718 for (; id;
id =
static_cast<ID *
>(
id->next)) {
720 item_tmp.
value = i++;
735 ot->
name =
"Outliner ID Data Remap";
736 ot->
idname =
"OUTLINER_OT_id_remap";
762 "New ID to remap all selected IDs' users to");
810 PartialWriteContext::IDAddOperations::SET_FAKE_USER |
811 PartialWriteContext::IDAddOperations::SET_CLIPBOARD_MARK |
812 PartialWriteContext::IDAddOperations::ADD_DEPENDENCIES)},
840 copybuffer.write(filepath, *op->
reports);
850 ot->
name =
"Outliner ID Data Copy";
852 ot->
description =
"Copy the selected data-blocks to the internal clipboard";
876 if (num_pasted == 0) {
891 ot->
name =
"Outliner ID Data Paste";
892 ot->
idname =
"OUTLINER_OT_id_paste";
893 ot->
description =
"Paste data-blocks from the internal clipboard";
927 lib->runtime.filepath_abs, dir,
sizeof(dir), filename,
sizeof(filename));
933 &op_props,
"relative_path",
BLI_path_cmp(
lib->runtime.filepath_abs,
lib->filepath) != 0);
956 if (((
Library *)tselem->
id)->runtime.parent && !reload) {
959 "Cannot relocate indirectly linked library '%s'",
960 ((
Library *)tselem->
id)->runtime.filepath_abs);
1004 ot->
name =
"Relocate Library";
1005 ot->
idname =
"OUTLINER_OT_lib_relocate";
1060 ot->
name =
"Reload Library";
1061 ot->
idname =
"OUTLINER_OT_lib_reload";
1091 int level = curlevel;
1125 bool changed =
false;
1129 bool has_flag = (tselem->
flag &
flag);
1132 tselem->
flag &= ~flag;
1136 else if (!has_flag) {
1152 bool changed =
false;
1188 ot->
name =
"Expand/Collapse All";
1189 ot->
idname =
"OUTLINER_OT_expanded_toggle";
1240 ot->
name =
"Toggle Selected";
1241 ot->
idname =
"OUTLINER_OT_select_all";
1275 ot->
idname =
"OUTLINER_OT_start_filter";
1293 ot->
name =
"Clear Filter";
1295 ot->
idname =
"OUTLINER_OT_clear_filter";
1329 tselem->
flag &= ~TSE_CLOSED;
1401 View2D *v2d = ®ion->v2d;
1404 C, space_outliner, scene, view_layer);
1406 if (active_element) {
1420 int ytop = (active_element->
ys + (size_y / 2));
1421 int delta_y = ytop - v2d->
cur.
ymax;
1437 ot->
name =
"Show Active";
1438 ot->
idname =
"OUTLINER_OT_show_active";
1440 "Open up the tree and adjust the view so that the active object is shown centered";
1477 ot->
name =
"Scroll Page";
1478 ot->
idname =
"OUTLINER_OT_scroll_page";
1503 if (curlevel <= level) {
1504 tselem->
flag &= ~TSE_CLOSED;
1508 if (curlevel >= level) {
1549 ot->
name =
"Show/Hide One Level";
1550 ot->
idname =
"OUTLINER_OT_show_one_level";
1551 ot->
description =
"Expand/collapse all entries by one level";
1602 if (tselem->
id != (
ID *)scene) {
1606 tselem->
flag &= ~TSE_CLOSED;
1611 tselem->
flag &= ~TSE_CLOSED;
1642 ot->
name =
"Show Hierarchy";
1643 ot->
idname =
"OUTLINER_OT_show_hierarchy";
1644 ot->
description =
"Open all object entries and close all others";
1685 ListBase hierarchy = {
nullptr,
nullptr};
1686 char *newpath =
nullptr;
1706 LinkData *ld = MEM_cnew<LinkData>(
"LinkData for tree_element_to_path()");
1726 PropertyRNA *prop = tem_rna_prop->get_property_rna();
1733 char buf[128], *name;
1752 if (temsub == temnext) {
1799 *array_index = te->
index;
1849 char *path =
nullptr;
1850 int array_index = 0;
1875 arraylen = array_index;
1879 if (arraylen == array_index) {
1884 for (; array_index < arraylen; array_index++) {
1916 if (space_outliner ==
nullptr) {
1932 ot->
idname =
"OUTLINER_OT_drivers_add_selected";
1933 ot->
name =
"Add Drivers for Selected";
1955 if (space_outliner ==
nullptr) {
1971 ot->
idname =
"OUTLINER_OT_drivers_delete_selected";
1972 ot->
name =
"Delete Drivers for Selected";
1973 ot->
description =
"Delete drivers assigned to selected items";
2007 if (scene ==
nullptr) {
2012 if (scene->active_keyingset > 0) {
2018 if ((add) && (ks ==
nullptr)) {
2040 char *path =
nullptr;
2041 int array_index = 0;
2100 if (ks ==
nullptr) {
2104 if (space_outliner ==
nullptr) {
2120 ot->
idname =
"OUTLINER_OT_keyingset_add_selected";
2121 ot->
name =
"Keying Set Add Selected";
2122 ot->
description =
"Add selected items (blue-gray rows) to active Keying Set";
2145 if (space_outliner ==
nullptr) {
2161 ot->
idname =
"OUTLINER_OT_keyingset_remove_selected";
2162 ot->
name =
"Keying Set Remove Selected";
2163 ot->
description =
"Remove selected items (blue-gray rows) from active Keying Set";
2190 const std::array<int, INDEX_ID_MAX> &num_tagged)
2192 bool is_first =
true;
2194 message +=
IFACE_(
"None");
2204 if (num_tagged[i] != 0) {
2205 message += fmt::format(
2207 (is_first) ?
"" :
", ",
2209 (num_tagged[i] > 1) ?
2224 data.do_linked_ids =
true;
2225 data.do_recursive =
true;
2228 std::string unused_message =
"";
2234 unused_message =
"";
2236 max_messages_width = std::max(
2240 return int(std::max(max_messages_width, 300.0f));
2268 op->
customdata = MEM_new<LibQueryUnusedIDsData>(__func__);
2276 IFACE_(
"Purge Unused Data from This File"),
2287 op->
customdata = MEM_new<LibQueryUnusedIDsData>(__func__);
2345 op->
customdata = MEM_new<LibQueryUnusedIDsData>(__func__);
2349 std::string unused_message =
"";
2355 uiItemL(row, unused_message.c_str(), ICON_NONE);
2357 unused_message =
"";
2363 uiItemL(row, unused_message.c_str(), ICON_NONE);
2371 ot->
idname =
"OUTLINER_OT_orphans_purge";
2373 ot->
description =
"Clear all orphaned data-blocks without any users from the file";
2392 "Local Data-blocks",
2393 "Include unused local data-blocks into deletion");
2397 "Linked Data-blocks",
2398 "Include unused linked data-blocks into deletion");
2404 "Recursively check for indirectly unused data-blocks, ensuring that no orphaned "
2405 "data-blocks remain after execution");
2418 const rcti window_rect = {
2420 event->xy[0] + sizex,
2422 event->xy[1] + sizey,
2426 IFACE_(
"Manage Unused Data"),
2434 nullptr) !=
nullptr)
2446 ot->
idname =
"OUTLINER_OT_orphans_manage";
2447 ot->
name =
"Manage Unused Data";
Blender kernel action and pose functionality.
bPoseChannel * BKE_pose_channel_active(Object *ob, bool check_bonecoll)
struct KS_Path * BKE_keyingset_find_path(struct KeyingSet *ks, struct ID *id, const char group_name[], const char rna_path[], int array_index, int group_mode)
struct KeyingSet * BKE_keyingset_add(struct ListBase *list, const char idname[], const char name[], short flag, short keyingflag)
struct KS_Path * BKE_keyingset_add_path(struct KeyingSet *ks, struct ID *id, const char group_name[], const char rna_path[], int array_index, short flag, short groupmode)
void BKE_keyingset_free_path(struct KeyingSet *ks, struct KS_Path *ksp)
const char * BKE_tempdir_base() ATTR_WARN_UNUSED_RESULT ATTR_RETURNS_NONNULL
int BKE_copybuffer_paste(bContext *C, const char *libname, int flag, ReportList *reports, uint64_t id_types_mask)
SpaceOutliner * CTX_wm_space_outliner(const bContext *C)
ScrArea * CTX_wm_area(const bContext *C)
Scene * CTX_data_scene(const bContext *C)
Main * CTX_data_main(const bContext *C)
EditBone * CTX_data_active_bone(const bContext *C)
ARegion * CTX_wm_region(const bContext *C)
wmWindowManager * CTX_wm_manager(const bContext *C)
ViewLayer * CTX_data_view_layer(const bContext *C)
short BKE_idtype_index_to_idcode(int idtype_index)
const char * BKE_idtype_idcode_to_name(short idcode)
const char * BKE_idtype_idcode_to_name_plural(short idcode)
void BKE_view_layer_synced_ensure(const Scene *scene, ViewLayer *view_layer)
Object * BKE_view_layer_active_object_get(const ViewLayer *view_layer)
void size_t BKE_id_multi_tagged_delete(Main *bmain) ATTR_NONNULL()
void BKE_main_id_tag_idcode(Main *mainvar, short type, int tag, bool value)
void BKE_main_lib_objects_recalc_all(Main *bmain)
void BKE_main_id_tag_all(Main *mainvar, int tag, bool value)
void BKE_lib_query_unused_ids_tag(Main *bmain, int tag, LibQueryUnusedIDsData ¶meters)
bool BKE_library_ID_is_indirectly_used(Main *bmain, void *idv)
void BKE_lib_query_unused_ids_amounts(Main *bmain, LibQueryUnusedIDsData ¶meters)
@ ID_REMAP_SKIP_NEVER_NULL_USAGE
@ ID_REMAP_SKIP_INDIRECT_USAGE
void void BKE_libblock_remap(Main *bmain, void *old_idv, void *new_idv, int remap_flags) ATTR_NONNULL(1
ListBase * which_libbase(Main *bmain, short type)
const char * BKE_main_blendfile_path(const Main *bmain) ATTR_NONNULL()
General operations, lookup, etc. for blender objects.
Object * BKE_object_pose_armature_get(Object *ob)
void BKE_reportf(ReportList *reports, eReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
void BKE_report(ReportList *reports, eReportType type, const char *message)
ARegion * BKE_area_find_region_type(const ScrArea *area, int region_type)
void BKE_workspace_id_tag_all_visible(Main *bmain, int tag) ATTR_NONNULL()
#define BLF_DRAW_STR_DUMMY_MAX
float BLF_width(int fontid, const char *str, size_t str_len, ResultBLF *r_info=nullptr) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(2)
#define BLI_assert_unreachable()
A dynamically sized string ADT.
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
void BLI_addhead(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
#define BLI_path_join(...)
void BLI_path_split_dir_file(const char *filepath, char *dir, size_t dir_maxncpy, char *file, size_t file_maxncpy) ATTR_NONNULL(1
BLI_INLINE int BLI_rcti_size_y(const struct rcti *rct)
#define UNUSED_VARS_NDEBUG(...)
#define BLT_I18NCONTEXT_ID_ID
void DEG_id_tag_update(ID *id, unsigned int flags)
void DEG_relations_tag_update(Main *bmain)
ID and Library types, which are fundamental for SDNA.
#define ID_IS_OVERRIDE_LIBRARY_REAL(_id)
#define ID_IS_EDITABLE(_id)
@ LIBOVERRIDE_FLAG_NO_HIERARCHY
#define ID_REAL_USERS(id)
#define ID_IS_OVERRIDE_LIBRARY(_id)
Object groups, one object can be in many groups at once.
Object is a sort of wrapper for general info.
#define TSE_IS_REAL_ID(_tse)
@ TSE_VIEW_COLLECTION_BASE
@ TSE_LIBRARY_OVERRIDE_BASE
@ TSE_SCENE_COLLECTION_BASE
@ TSE_BONE_COLLECTION_BASE
@ RPT_ERROR_INVALID_INPUT
@ CREATEDRIVER_WITH_DEFAULT_DVAR
void ED_outliner_select_sync_from_outliner(bContext *C, SpaceOutliner *space_outliner)
bool ED_operator_region_outliner_active(bContext *C)
void ED_area_tag_redraw(ScrArea *area)
int ED_screen_area_active(const bContext *C)
void ED_region_tag_redraw_no_rebuild(ARegion *region)
void ED_region_tag_redraw(ARegion *region)
bool ED_operator_outliner_active(bContext *C)
void GPU_materials_free(Main *bmain)
Read Guarded memory(de)allocation.
constexpr PointerRNA PointerRNA_NULL
bool UI_textbutton_activate_rna(const bContext *C, ARegion *region, const void *rna_poin_data, const char *rna_prop_id)
void uiItemL(uiLayout *layout, const char *name, int icon)
uiLayout * uiLayoutRow(uiLayout *layout, bool align)
const uiStyle * UI_style_get_dpi()
void uiItemS_ex(uiLayout *layout, float factor, LayoutSeparatorType type=LayoutSeparatorType::Auto)
uiLayout * uiLayoutColumn(uiLayout *layout, bool align)
void uiItemR(uiLayout *layout, PointerRNA *ptr, const char *propname, eUI_Item_Flag flag, const char *name, int icon)
void UI_view2d_region_to_view(const View2D *v2d, float x, float y, float *r_view_x, float *r_view_y) ATTR_NONNULL()
@ WIN_ALIGN_LOCATION_CENTER
ID * id_add(const ID *id, IDAddOptions options, blender::FunctionRef< IDAddOperations(LibraryIDLinkCallbackData *cb_data, IDAddOptions options)> dependencies_filter_cb=nullptr)
const PointerRNA & get_pointer_rna() const
virtual PropertyRNA * get_property_rna() const
int ANIM_add_driver(ReportList *reports, ID *id, const char rna_path[], int array_index, short flag, int type)
Main Driver Management API calls.
bool ANIM_remove_driver(ID *id, const char rna_path[], int array_index)
Main Driver Management API calls.
draw_view in_light_buf[] float
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int
void MEM_freeN(void *vmemh)
void all_open(const SpaceOutliner &space_outliner, const VisitorFn visitor)
void all(const SpaceOutliner &space_outliner, const VisitorFn visitor)
void OUTLINER_OT_expanded_toggle(wmOperatorType *ot)
static int outliner_highlight_update_invoke(bContext *C, wmOperator *, const wmEvent *event)
bool outliner_item_is_co_within_close_toggle(const TreeElement *te, float view_co_x)
int outliner_flag_is_any_test(ListBase *lb, short flag, const int curlevel)
static void outliner_openclose_level(ListBase *lb, int curlevel, int level, int open)
static void tree_element_show_hierarchy(Scene *scene, SpaceOutliner *space_outliner)
static int outliner_select_all_exec(bContext *C, wmOperator *op)
void outliner_tag_redraw_avoid_rebuild_on_open_change(const SpaceOutliner *space_outliner, ARegion *region)
void OUTLINER_OT_item_rename(wmOperatorType *ot)
static int outliner_keyingset_additems_exec(bContext *C, wmOperator *op)
static int subtree_has_objects(ListBase *lb)
static TreeElement * outliner_item_rename_find_hovered(const SpaceOutliner *space_outliner, ARegion *region, const wmEvent *event)
static void do_outliner_keyingset_editop(SpaceOutliner *space_outliner, KeyingSet *ks, const short mode)
void OUTLINER_OT_show_hierarchy(wmOperatorType *ot)
TreeElement * outliner_find_posechannel(ListBase *lb, const bPoseChannel *pchan)
static int outliner_drivers_deletesel_exec(bContext *C, wmOperator *op)
void OUTLINER_OT_highlight_update(wmOperatorType *ot)
static int outliner_id_delete_tag(bContext *C, ReportList *reports, TreeElement *te, const float mval[2])
bool outliner_is_collection_tree_element(const TreeElement *te)
static TreeElement * outliner_show_active_get_element(bContext *C, SpaceOutliner *space_outliner, const Scene *scene, ViewLayer *view_layer)
void OUTLINER_OT_drivers_add_selected(wmOperatorType *ot)
void OUTLINER_OT_select_all(wmOperatorType *ot)
TreeElement * outliner_find_item_at_x_in_row(const SpaceOutliner *space_outliner, TreeElement *parent_te, float view_co_x, bool *r_is_merged_icon, bool *r_is_over_icon)
void OUTLINER_OT_lib_relocate(wmOperatorType *ot)
static void do_outliner_drivers_editop(SpaceOutliner *space_outliner, ReportList *reports, short mode)
TreeElement * outliner_find_id(SpaceOutliner *space_outliner, ListBase *lb, const ID *id)
static void outliner_orphans_purge_ui(bContext *, wmOperator *op)
static int outliner_id_copy_tag(SpaceOutliner *space_outliner, ListBase *tree, blender::bke::blendfile::PartialWriteContext ©buffer)
void id_delete_tag_fn(bContext *C, ReportList *reports, Scene *, TreeElement *te, TreeStoreElem *, TreeStoreElem *tselem)
static int outliner_clear_filter_exec(bContext *C, wmOperator *)
static int outliner_open_back(TreeElement *te)
static int unused_message_popup_width_compute(bContext *C)
static void outliner_orphans_purge_cancel(bContext *, wmOperator *op)
static int outliner_show_active_exec(bContext *C, wmOperator *)
bool outliner_flag_set(const SpaceOutliner &space_outliner, const short flag, const short set)
static int outliner_id_delete_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static const EnumPropertyItem * outliner_id_itemf(bContext *C, PointerRNA *ptr, PropertyRNA *, bool *r_free)
TreeElement * outliner_find_item_at_y(const SpaceOutliner *space_outliner, const ListBase *tree, float view_co_y)
void OUTLINER_OT_id_paste(wmOperatorType *ot)
static int outliner_one_level_exec(bContext *C, wmOperator *op)
void OUTLINER_OT_clear_filter(wmOperatorType *ot)
static int outliner_id_remap_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static int outliner_id_paste_exec(bContext *C, wmOperator *op)
void outliner_set_coordinates(const ARegion *region, const SpaceOutliner *space_outliner)
static void id_delete_tag(bContext *C, ReportList *reports, TreeElement *te, TreeStoreElem *tselem)
void OUTLINER_OT_start_filter(wmOperatorType *ot)
static int outliner_id_remap_exec(bContext *C, wmOperator *op)
void OUTLINER_OT_drivers_delete_selected(wmOperatorType *ot)
void OUTLINER_OT_show_one_level(wmOperatorType *ot)
static int lib_relocate(bContext *C, TreeElement *te, TreeStoreElem *tselem, wmOperatorType *ot, const bool reload)
void OUTLINER_OT_show_active(wmOperatorType *ot)
static bool outliner_id_remap_find_tree_element(bContext *C, wmOperator *op, ListBase *tree, const float y)
void OUTLINER_OT_id_copy(wmOperatorType *ot)
static void outliner_show_active(SpaceOutliner *space_outliner, ARegion *region, TreeElement *te, ID *id)
static int outliner_lib_relocate_invoke(bContext *C, wmOperator *op, const wmEvent *event)
void OUTLINER_OT_orphans_manage(wmOperatorType *ot)
TreeElement * outliner_find_editbone(ListBase *lb, const EditBone *ebone)
Collection * outliner_collection_from_tree_element(const TreeElement *te)
static void tree_element_to_path(TreeElement *te, TreeStoreElem *tselem, ID **id, char **path, int *array_index, short *flag, short *)
static int outliner_orphans_purge_exec(bContext *C, wmOperator *op)
void outliner_scroll_view(SpaceOutliner *space_outliner, ARegion *region, int delta_y)
bool outliner_flag_flip(const SpaceOutliner &space_outliner, const short flag)
void lib_relocate_fn(bContext *C, ReportList *, Scene *, TreeElement *te, TreeStoreElem *, TreeStoreElem *tselem)
@ TE_PRETEND_HAS_CHILDREN
static int outliner_show_hierarchy_exec(bContext *C, wmOperator *)
void OUTLINER_OT_lib_reload(wmOperatorType *ot)
static int outliner_id_copy_exec(bContext *C, wmOperator *op)
void outliner_item_openclose(TreeElement *te, bool open, bool toggle_all)
static int outliner_orphans_purge_invoke(bContext *C, wmOperator *op, const wmEvent *)
void OUTLINER_OT_scroll_page(wmOperatorType *ot)
void OUTLINER_OT_keyingset_remove_selected(wmOperatorType *ot)
void OUTLINER_OT_id_remap(wmOperatorType *ot)
void OUTLINER_OT_id_delete(wmOperatorType *ot)
TreeElementT * tree_element_cast(const TreeElement *te)
@ DRIVERS_EDITMODE_REMOVE
void OUTLINER_OT_keyingset_add_selected(wmOperatorType *ot)
static int outliner_scroll_page_exec(bContext *C, wmOperator *op)
static bool ed_operator_outliner_id_orphans_active(bContext *C)
static void do_item_rename(ARegion *region, TreeElement *te, TreeStoreElem *tselem, ReportList *reports)
static int outliner_item_openclose_modal(bContext *C, wmOperator *op, const wmEvent *event)
void id_remap_fn(bContext *C, ReportList *, Scene *, TreeElement *, TreeStoreElem *, TreeStoreElem *tselem)
static int outliner_start_filter_exec(bContext *C, wmOperator *)
static bool ed_operator_outliner_datablocks_active(bContext *C)
void lib_reload_fn(bContext *C, ReportList *, Scene *, TreeElement *te, TreeStoreElem *, TreeStoreElem *tselem)
void outliner_cleanup_tree(SpaceOutliner *space_outliner)
static int outliner_lib_reload_invoke(bContext *C, wmOperator *op, const wmEvent *event)
void OUTLINER_OT_item_openclose(wmOperatorType *ot)
static void outliner_orphans_purge_cleanup(wmOperator *op)
bool outliner_item_is_co_over_name(const TreeElement *te, float view_co_x)
TreeElement * outliner_find_element_with_flag(const ListBase *lb, short flag)
static KeyingSet * verify_active_keyingset(Scene *scene, short add)
static int outliner_keyingset_removeitems_exec(bContext *C, wmOperator *)
static int outliner_item_rename_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static int outliner_toggle_expanded_exec(bContext *C, wmOperator *)
static int outliner_orphans_manage_invoke(bContext *C, wmOperator *, const wmEvent *event)
static int outliner_count_levels(ListBase *lb, const int curlevel)
void item_rename_fn(bContext *C, ReportList *reports, Scene *, TreeElement *te, TreeStoreElem *, TreeStoreElem *tselem)
static void outliner_copybuffer_filepath_get(char filepath[FILE_MAX], size_t filepath_maxncpy)
static void unused_message_gen(std::string &message, const std::array< int, INDEX_ID_MAX > &num_tagged)
static int outliner_item_openclose_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static int outliner_lib_relocate_invoke_do(bContext *C, ReportList *reports, TreeElement *te, const float mval[2], const bool reload)
static int outliner_drivers_addsel_exec(bContext *C, wmOperator *op)
static bool outliner_orphans_purge_check(bContext *C, wmOperator *op)
void OUTLINER_OT_orphans_purge(wmOperatorType *ot)
@ KEYINGSET_EDITMODE_REMOVE
static TreeElement * outliner_item_rename_find_active(const SpaceOutliner *space_outliner, ReportList *reports)
const EnumPropertyItem rna_enum_id_type_items[]
bool RNA_property_array_check(PropertyRNA *prop)
void RNA_string_set(PointerRNA *ptr, const char *name, const char *value)
bool RNA_struct_is_ID(const StructRNA *type)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
char * RNA_struct_name_get_alloc(PointerRNA *ptr, char *fixedbuf, int fixedlen, int *r_len)
void RNA_boolean_set(PointerRNA *ptr, const char *name, bool value)
bool RNA_property_is_set(PointerRNA *ptr, PropertyRNA *prop)
PropertyType RNA_property_type(PropertyRNA *prop)
void RNA_enum_set_identifier(bContext *C, PointerRNA *ptr, const char *name, const char *id)
bool RNA_property_anim_editable(const PointerRNA *ptr, PropertyRNA *prop_orig)
int RNA_property_array_length(PointerRNA *ptr, PropertyRNA *prop)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
void RNA_enum_set(PointerRNA *ptr, const char *name, int value)
int RNA_enum_get(PointerRNA *ptr, const char *name)
void RNA_def_property_enum_funcs_runtime(PropertyRNA *prop, EnumPropertyGetFunc getfunc, EnumPropertySetFunc setfunc, EnumPropertyItemFunc itemfunc)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, const int default_value, const char *ui_name, const char *ui_description)
void RNA_enum_item_end(EnumPropertyItem **items, int *totitem)
void RNA_enum_item_add(EnumPropertyItem **items, int *totitem, const EnumPropertyItem *item)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, const bool default_value, const char *ui_name, const char *ui_description)
void RNA_def_property_translation_context(PropertyRNA *prop, const char *context)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
char * RNA_path_append(const char *path, const PointerRNA *, PropertyRNA *prop, int intkey, const char *strkey)
const EnumPropertyItem rna_enum_dummy_NULL_items[]
TreeStoreElem * prev_tselem
TreeStoreElem * store_elem
bool(* poll)(bContext *C) ATTR_WARN_UNUSED_RESULT
int(* modal)(bContext *C, wmOperator *op, const wmEvent *event) ATTR_WARN_UNUSED_RESULT
bool(* check)(bContext *C, wmOperator *op)
int(* invoke)(bContext *C, wmOperator *op, const wmEvent *event) ATTR_WARN_UNUSED_RESULT
int(* exec)(bContext *C, wmOperator *op) ATTR_WARN_UNUSED_RESULT
void(* ui)(bContext *C, wmOperator *op)
void(* cancel)(bContext *C, wmOperator *op)
struct ReportList * reports
static DynamicLibrary lib
void WM_event_drag_start_mval(const wmEvent *event, const ARegion *region, int r_mval[2])
void WM_main_add_notifier(uint type, void *reference)
wmEventHandler_Op * WM_event_add_modal_handler(bContext *C, wmOperator *op)
int WM_operator_name_call_ptr(bContext *C, wmOperatorType *ot, wmOperatorCallContext context, PointerRNA *properties, const wmEvent *event)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
void WM_operator_properties_select_all(wmOperatorType *ot)
wmOperatorType * WM_operatortype_find(const char *idname, bool quiet)
int WM_operator_props_dialog_popup(bContext *C, wmOperator *op, int width, std::optional< std::string > title, std::optional< std::string > confirm_text, const bool cancel_default)
void WM_operator_properties_create_ptr(PointerRNA *ptr, wmOperatorType *ot)
void WM_operator_properties_free(PointerRNA *ptr)
wmWindow * WM_window_open(bContext *C, const char *title, const rcti *rect_unscaled, int space_type, bool toplevel, bool dialog, bool temp, eWindowAlignment alignment, void(*area_setup_fn)(bScreen *screen, ScrArea *area, void *user_data), void *area_setup_user_data)