Blender  V2.93
Classes
wm_files_link.c File Reference
#include <ctype.h>
#include <errno.h>
#include <float.h>
#include <stddef.h>
#include <stdio.h>
#include <string.h>
#include "MEM_guardedalloc.h"
#include "DNA_ID.h"
#include "DNA_key_types.h"
#include "DNA_scene_types.h"
#include "DNA_screen_types.h"
#include "DNA_windowmanager_types.h"
#include "BLI_bitmap.h"
#include "BLI_blenlib.h"
#include "BLI_ghash.h"
#include "BLI_linklist.h"
#include "BLI_math.h"
#include "BLI_memarena.h"
#include "BLI_utildefines.h"
#include "BLO_readfile.h"
#include "BKE_context.h"
#include "BKE_global.h"
#include "BKE_key.h"
#include "BKE_layer.h"
#include "BKE_lib_id.h"
#include "BKE_lib_override.h"
#include "BKE_lib_remap.h"
#include "BKE_main.h"
#include "BKE_report.h"
#include "BKE_idtype.h"
#include "DEG_depsgraph.h"
#include "DEG_depsgraph_build.h"
#include "IMB_colormanagement.h"
#include "ED_datafiles.h"
#include "ED_screen.h"
#include "RNA_access.h"
#include "RNA_define.h"
#include "WM_api.h"
#include "WM_types.h"
#include "wm_files.h"

Go to the source code of this file.

Classes

struct  WMLinkAppendDataItem
 
struct  WMLinkAppendData
 

Functions

Append Single Data-Block & Return it

Used for appending workspace from startup files.

IDWM_file_append_datablock (Main *bmain, Scene *scene, ViewLayer *view_layer, View3D *v3d, const char *filepath, const short id_code, const char *id_name)
 
Library Relocate Operator & Library Reload API
static int wm_lib_relocate_invoke (bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
 
static void lib_relocate_do_remap (Main *bmain, ID *old_id, ID *new_id, ReportList *reports, const bool do_reload, const short remap_flags)
 
static void lib_relocate_do (Main *bmain, Library *library, WMLinkAppendData *lapp_data, ReportList *reports, const bool do_reload)
 
void WM_lib_reload (Library *lib, bContext *C, ReportList *reports)
 
static int wm_lib_relocate_exec_do (bContext *C, wmOperator *op, bool do_reload)
 
static int wm_lib_relocate_exec (bContext *C, wmOperator *op)
 
void WM_OT_lib_relocate (wmOperatorType *ot)
 
static int wm_lib_reload_exec (bContext *C, wmOperator *op)
 
void WM_OT_lib_reload (wmOperatorType *ot)
 

Link/Append Operator

typedef struct WMLinkAppendDataItem WMLinkAppendDataItem
 
typedef struct WMLinkAppendData WMLinkAppendData
 
static bool wm_link_append_poll (bContext *C)
 
static int wm_link_append_invoke (bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
 
static short wm_link_append_flag (wmOperator *op)
 
static WMLinkAppendDatawm_link_append_data_new (const int flag)
 
static void wm_link_append_data_free (WMLinkAppendData *lapp_data)
 
static void wm_link_append_data_library_add (WMLinkAppendData *lapp_data, const char *libname)
 
static WMLinkAppendDataItemwm_link_append_data_item_add (WMLinkAppendData *lapp_data, const char *idname, const short idcode, void *customdata)
 
static void wm_link_do (WMLinkAppendData *lapp_data, ReportList *reports, Main *bmain, Scene *scene, ViewLayer *view_layer, const View3D *v3d)
 
static bool wm_link_append_item_poll (ReportList *reports, const char *path, const char *group, const char *name, const bool do_append)
 
static int wm_link_append_exec (bContext *C, wmOperator *op)
 
static void wm_link_append_properties_common (wmOperatorType *ot, bool is_link)
 
void WM_OT_link (wmOperatorType *ot)
 
void WM_OT_append (wmOperatorType *ot)
 

Detailed Description

Functions for dealing with append/link operators and helpers.

Definition in file wm_files_link.c.

Typedef Documentation

◆ WMLinkAppendData

◆ WMLinkAppendDataItem

Function Documentation

◆ lib_relocate_do()

static void lib_relocate_do ( Main bmain,
Library library,
WMLinkAppendData lapp_data,
ReportList reports,
const bool  do_reload 
)
static

◆ lib_relocate_do_remap()

static void lib_relocate_do_remap ( Main bmain,
ID old_id,
ID new_id,
ReportList reports,
const bool  do_reload,
const short  remap_flags 
)
static

◆ WM_file_append_datablock()

ID* WM_file_append_datablock ( Main bmain,
Scene scene,
ViewLayer view_layer,
View3D v3d,
const char *  filepath,
const short  id_code,
const char *  id_name 
)

◆ WM_lib_reload()

void WM_lib_reload ( Library lib,
bContext C,
ReportList reports 
)

◆ wm_lib_reload_exec()

static int wm_lib_reload_exec ( bContext C,
wmOperator op 
)
static

Definition at line 1180 of file wm_files_link.c.

References C, and wm_lib_relocate_exec_do().

Referenced by WM_OT_lib_reload().

◆ wm_lib_relocate_exec()

static int wm_lib_relocate_exec ( bContext C,
wmOperator op 
)
static

Definition at line 1149 of file wm_files_link.c.

References C, and wm_lib_relocate_exec_do().

Referenced by WM_OT_lib_relocate().

◆ wm_lib_relocate_exec_do()

static int wm_lib_relocate_exec_do ( bContext C,
wmOperator op,
bool  do_reload 
)
static

◆ wm_lib_relocate_invoke()

static int wm_lib_relocate_invoke ( bContext C,
wmOperator op,
const wmEvent UNUSEDevent 
)
static

◆ wm_link_append_data_free()

static void wm_link_append_data_free ( WMLinkAppendData lapp_data)
static

◆ wm_link_append_data_item_add()

static WMLinkAppendDataItem* wm_link_append_data_item_add ( WMLinkAppendData lapp_data,
const char *  idname,
const short  idcode,
void *  customdata 
)
static

◆ wm_link_append_data_library_add()

static void wm_link_append_data_library_add ( WMLinkAppendData lapp_data,
const char *  libname 
)
static

◆ wm_link_append_data_new()

static WMLinkAppendData* wm_link_append_data_new ( const int  flag)
static

◆ wm_link_append_exec()

static int wm_link_append_exec ( bContext C,
wmOperator op 
)
static

Definition at line 348 of file wm_files_link.c.

References BKE_idtype_idcode_from_name(), BKE_library_make_local(), BKE_main_blendfile_path(), BKE_main_id_tag_all(), BKE_main_lib_objects_recalc_all(), BKE_reportf(), BKE_view_layer_base_deselect_all(), BLI_BITMAP_ENABLE, BLI_ghash_free(), BLI_ghash_haskey(), BLI_ghash_insert(), BLI_ghash_lookup(), BLI_ghash_new(), BLI_ghashutil_ptrcmp(), BLI_ghashutil_ptrhash(), BLI_ghashutil_strcmp(), BLI_ghashutil_strhash_p(), BLI_gset_free(), BLI_gset_haskey(), BLI_gset_insert(), BLI_gset_new_ex(), BLI_join_dirfile(), BLI_path_cmp, BLI_strdup(), BLI_strncpy(), BLO_library_path_explode(), LibraryLink_Params::bmain, C, CTX_data_main(), CTX_data_scene(), CTX_data_view_layer(), CTX_wm_view3d(), DEG_id_tag_update(), DEG_relations_tag_update(), FILE_COLLECTION_INSTANCE, FILE_LINK, FILE_MAX, FILE_MAX_LIBEXTRA, FILE_MAXDIR, FILE_OBDATA_INSTANCE, LibraryLink_Params::flag, G, Scene::id, IMB_colormanagement_check_file_config(), WMLinkAppendData::items, ID::lib, LIB_TAG_PRE_EXISTING, WMLinkAppendDataItem::libraries, LinkNode::link, LinkNodePair::list, MEM_freeN, ID::name, NC_WINDOW, LinkNode::next, NULL, WMLinkAppendData::num_items, WMLinkAppendData::num_libraries, OPERATOR_CANCELLED, OPERATOR_FINISHED, POINTER_AS_INT, POINTER_FROM_INT, wmOperator::ptr, wmOperator::reports, RNA_BEGIN, RNA_boolean_get(), RNA_END, RNA_property_collection_length(), RNA_string_get(), RNA_struct_find_property(), RPT_ERROR, RPT_WARNING, scene, LibraryLink_Params::view_layer, WM_event_add_notifier(), wm_link_append_data_free(), wm_link_append_data_item_add(), wm_link_append_data_library_add(), wm_link_append_data_new(), wm_link_append_flag(), wm_link_append_item_poll(), and wm_link_do().

Referenced by WM_OT_append(), and WM_OT_link().

◆ wm_link_append_flag()

static short wm_link_append_flag ( wmOperator op)
static

◆ wm_link_append_invoke()

static int wm_link_append_invoke ( bContext C,
wmOperator op,
const wmEvent UNUSEDevent 
)
static

◆ wm_link_append_item_poll()

static bool wm_link_append_item_poll ( ReportList reports,
const char *  path,
const char *  group,
const char *  name,
const bool  do_append 
)
static

Check if an item defined by name and group can be appended/linked.

Parameters
reportsOptionally report an error when an item can't be appended/linked.

Definition at line 308 of file wm_files_link.c.

References BKE_idtype_idcode_from_name(), BKE_idtype_idcode_is_linkable(), BKE_reportf(), ID_WS, and RPT_ERROR_INVALID_INPUT.

Referenced by wm_link_append_exec().

◆ wm_link_append_poll()

static bool wm_link_append_poll ( bContext C)
static

Definition at line 83 of file wm_files_link.c.

References C, CTX_data_edit_object(), and WM_operator_winactive().

Referenced by WM_OT_append(), and WM_OT_link().

◆ wm_link_append_properties_common()

static void wm_link_append_properties_common ( wmOperatorType ot,
bool  is_link 
)
static

◆ wm_link_do()

static void wm_link_do ( WMLinkAppendData lapp_data,
ReportList reports,
Main bmain,
Scene scene,
ViewLayer view_layer,
const View3D v3d 
)
static

◆ WM_OT_append()

void WM_OT_append ( wmOperatorType ot)

◆ WM_OT_lib_reload()

void WM_OT_lib_reload ( wmOperatorType ot)

◆ WM_OT_lib_relocate()

void WM_OT_lib_relocate ( wmOperatorType ot)

◆ WM_OT_link()

void WM_OT_link ( wmOperatorType ot)