18#include "RNA_prototypes.hh"
39 auto file_handlers = bke::file_handlers_poll_file_drop(C, paths);
73 props,
"files", &RNA_OperatorFileListElement);
76 for (
const auto &index : supported_paths) {
85 const bool has_any_filepath_prop = filepath_prop || directory_prop || files_prop;
90 const bool has_missing_filepath_prop = bool(directory_prop) != bool(files_prop);
92 if (!has_any_filepath_prop || has_missing_filepath_prop) {
94 "Expected operator properties filepath or files and directory not found. Refer to "
95 "FileHandler documentation for details.";
104 if (paths.is_empty()) {
109 if (file_handlers.is_empty()) {
124 if (paths.is_empty()) {
129 if (file_handlers.size() == 1) {
141 for (
auto *file_handler : file_handlers) {
160 ot->
name =
"Drop to Import File";
161 ot->
description =
"Operator that allows file handlers to receive file drops";
162 ot->
idname =
"WM_OT_drop_import_file";
170 ot->
srna,
"directory",
nullptr,
FILE_MAX,
"Directory",
"Directory of the file");
186 for (
const auto &path : paths) {
212 if (file_handlers.size() == 1) {
217 return TIP_(
"Multiple file handlers can be used, drop to pick which to use");
224 "WM_OT_drop_import_file",
void void void BLI_path_split_file_part(const char *filepath, char *file, size_t file_maxncpy) ATTR_NONNULL(1
void void BLI_path_split_dir_part(const char *filepath, char *dir, size_t dir_maxncpy) ATTR_NONNULL(1
#define CTX_TIP_(context, msgid)
#define CLOG_WARN(clg_ref,...)
void UI_popup_menu_end(bContext *C, uiPopupMenu *pup)
void uiItemFullO_ptr(uiLayout *layout, wmOperatorType *ot, const char *name, int icon, IDProperty *properties, wmOperatorCallContext context, eUI_Item_Flag flag, PointerRNA *r_opptr)
uiPopupMenu * UI_popup_menu_begin(bContext *C, const char *title, int icon) ATTR_NONNULL()
uiLayout * UI_popup_menu_layout(uiPopupMenu *pup)
void uiLayoutSetOperatorContext(uiLayout *layout, wmOperatorCallContext opcontext)
static blender::Vector< blender::bke::FileHandlerType * > drop_import_file_poll_file_handlers(const bContext *C, const blender::Span< std::string > paths, const bool quiet=true)
static std::string drop_import_file_tooltip(bContext *C, wmDrag *drag, const int[2], wmDropBox *)
void WM_OT_drop_import_file(wmOperatorType *ot)
static int wm_drop_import_file_invoke(bContext *C, wmOperator *op, const wmEvent *)
static void drop_import_file_copy(bContext *, wmDrag *drag, wmDropBox *drop)
static bool drop_import_file_poll(bContext *C, wmDrag *drag, const wmEvent *)
void ED_dropbox_drop_import_file()
static int wm_drop_import_file_exec(bContext *C, wmOperator *op)
static PointerRNA file_handler_import_operator_create_ptr(const blender::bke::FileHandlerType *file_handler, const blender::Span< std::string > paths)
Vector< std::string > paths_from_operator_properties(PointerRNA *ptr)
PropertyRNA * RNA_struct_find_collection_property_check(PointerRNA &props, const char *name, const StructRNA *struct_type_check)
void RNA_string_set(PointerRNA *ptr, const char *name, const char *value)
PropertyRNA * RNA_struct_find_property_check(PointerRNA &props, const char *name, const PropertyType property_type_check)
void RNA_collection_clear(PointerRNA *ptr, const char *name)
void RNA_collection_add(PointerRNA *ptr, const char *name, PointerRNA *r_value)
void RNA_property_collection_add(PointerRNA *ptr, PropertyRNA *prop, PointerRNA *r_ptr)
void RNA_property_collection_clear(PointerRNA *ptr, PropertyRNA *prop)
void RNA_property_string_set(PointerRNA *ptr, PropertyRNA *prop, const char *value)
PropertyRNA * RNA_def_collection_runtime(StructOrFunctionRNA *cont_, const char *identifier, StructRNA *type, const char *ui_name, const char *ui_description)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
PropertyRNA * RNA_def_string_dir_path(StructOrFunctionRNA *cont_, const char *identifier, const char *default_value, const int maxlen, const char *ui_name, const char *ui_description)
char import_operator[OP_MAX_TYPENAME]
blender::Vector< int64_t > filter_supported_paths(const blender::Span< std::string > paths) const
int(* invoke)(bContext *C, wmOperator *op, const wmEvent *event) ATTR_WARN_UNUSED_RESULT
int(* exec)(bContext *C, wmOperator *op) ATTR_WARN_UNUSED_RESULT
const char * translation_context
wmDropBox * WM_dropbox_add(ListBase *lb, const char *idname, bool(*poll)(bContext *C, wmDrag *drag, const wmEvent *event), void(*copy)(bContext *C, wmDrag *drag, wmDropBox *drop), void(*cancel)(Main *bmain, wmDrag *drag, wmDropBox *drop), WMDropboxTooltipFunc tooltip)
blender::Span< std::string > WM_drag_get_paths(const wmDrag *drag)
ListBase * WM_dropboxmap_find(const char *idname, int spaceid, int regionid)
int WM_operator_name_call_ptr(bContext *C, wmOperatorType *ot, wmOperatorCallContext context, PointerRNA *properties, const wmEvent *event)
wmOperatorType * WM_operatortype_find(const char *idname, bool quiet)
void WM_operator_properties_create_ptr(PointerRNA *ptr, wmOperatorType *ot)
void WM_operator_properties_free(PointerRNA *ptr)