diff options
author | Julian Eisel <julian@blender.org> | 2020-08-07 14:04:31 +0300 |
---|---|---|
committer | Julian Eisel <julian@blender.org> | 2020-08-07 14:04:31 +0300 |
commit | 0d2d4a6d4a75ac38c41f872c88255eab70e88ab7 (patch) | |
tree | b7a7518af86dddba48e05a98b3c2be55e8804721 /source/blender/editors/space_file/filelist.c | |
parent | 9b416c66fb714bdfd15a481489dbf650d0f389ea (diff) | |
parent | cfc6f9eb18e701f5be601b95c45004e8cf7fbc81 (diff) |
Merge branch 'master' into temp-ui-button-type-refactortemp-ui-button-type-refactor
Diffstat (limited to 'source/blender/editors/space_file/filelist.c')
-rw-r--r-- | source/blender/editors/space_file/filelist.c | 197 |
1 files changed, 101 insertions, 96 deletions
diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c index f60ef2b6aed..3ce80c11160 100644 --- a/source/blender/editors/space_file/filelist.c +++ b/source/blender/editors/space_file/filelist.c @@ -359,12 +359,24 @@ enum { static ImBuf *gSpecialFileImages[SPECIAL_IMG_MAX]; -static void filelist_readjob_main( - struct FileList *, const char *, short *, short *, float *, ThreadMutex *); -static void filelist_readjob_lib( - struct FileList *, const char *, short *, short *, float *, ThreadMutex *); -static void filelist_readjob_dir( - struct FileList *, const char *, short *, short *, float *, ThreadMutex *); +static void filelist_readjob_main(FileList *filelist, + const char *main_name, + short *stop, + short *do_update, + float *progress, + ThreadMutex *lock); +static void filelist_readjob_lib(FileList *filelist, + const char *main_name, + short *stop, + short *do_update, + float *progress, + ThreadMutex *lock); +static void filelist_readjob_dir(FileList *filelist, + const char *main_name, + short *stop, + short *do_update, + float *progress, + ThreadMutex *lock); /* helper, could probably go in BKE actually? */ static int groupname_to_code(const char *group); @@ -625,11 +637,10 @@ static bool is_hidden_dot_filename(const char *filename, FileListInternEntry *fi if (filename[0] == '.' && !ELEM(filename[1], '.', '\0')) { return true; /* ignore .file */ } - else { - int len = strlen(filename); - if ((len > 0) && (filename[len - 1] == '~')) { - return true; /* ignore file~ */ - } + + int len = strlen(filename); + if ((len > 0) && (filename[len - 1] == '~')) { + return true; /* ignore file~ */ } /* filename might actually be a piece of path, in which case we have to check all its parts. */ @@ -999,43 +1010,41 @@ static int filelist_geticon_ex(FileDirEntry *file, if (FILENAME_IS_PARENT(file->relpath)) { return is_main ? ICON_FILE_PARENT : ICON_NONE; } - else if (typeflag & FILE_TYPE_APPLICATIONBUNDLE) { + if (typeflag & FILE_TYPE_APPLICATIONBUNDLE) { return ICON_UGLYPACKAGE; } - else if (typeflag & FILE_TYPE_BLENDER) { + if (typeflag & FILE_TYPE_BLENDER) { return ICON_FILE_BLEND; } - else if (is_main) { + if (is_main) { /* Do not return icon for folders if icons are not 'main' draw type * (e.g. when used over previews). */ return (file->attributes & FILE_ATTR_ANY_LINK) ? ICON_FOLDER_REDIRECT : ICON_FILE_FOLDER; } - else { - /* If this path is in System list or path cache then use that icon. */ - struct FSMenu *fsmenu = ED_fsmenu_get(); - FSMenuCategory categories[] = { - FS_CATEGORY_SYSTEM, - FS_CATEGORY_SYSTEM_BOOKMARKS, - FS_CATEGORY_OTHER, - }; - - for (int i = 0; i < ARRAY_SIZE(categories); i++) { - FSMenuEntry *tfsm = ED_fsmenu_get_category(fsmenu, categories[i]); - char fullpath[FILE_MAX_LIBEXTRA]; - char *target = fullpath; - if (file->redirection_path) { - target = file->redirection_path; - } - else { - BLI_join_dirfile(fullpath, sizeof(fullpath), root, file->relpath); - BLI_path_slash_ensure(fullpath); - } - for (; tfsm; tfsm = tfsm->next) { - if (STREQ(tfsm->path, target)) { - /* Never want a little folder inside a large one. */ - return (tfsm->icon == ICON_FILE_FOLDER) ? ICON_NONE : tfsm->icon; - } + /* If this path is in System list or path cache then use that icon. */ + struct FSMenu *fsmenu = ED_fsmenu_get(); + FSMenuCategory categories[] = { + FS_CATEGORY_SYSTEM, + FS_CATEGORY_SYSTEM_BOOKMARKS, + FS_CATEGORY_OTHER, + }; + + for (int i = 0; i < ARRAY_SIZE(categories); i++) { + FSMenuEntry *tfsm = ED_fsmenu_get_category(fsmenu, categories[i]); + char fullpath[FILE_MAX_LIBEXTRA]; + char *target = fullpath; + if (file->redirection_path) { + target = file->redirection_path; + } + else { + BLI_join_dirfile(fullpath, sizeof(fullpath), root, file->relpath); + BLI_path_slash_ensure(fullpath); + } + for (; tfsm; tfsm = tfsm->next) { + if (STREQ(tfsm->path, target)) { + /* Never want a little folder inside a large one. */ + return (tfsm->icon == ICON_FILE_FOLDER) ? ICON_NONE : tfsm->icon; } } } @@ -1043,10 +1052,10 @@ static int filelist_geticon_ex(FileDirEntry *file, if (file->attributes & FILE_ATTR_OFFLINE) { return ICON_ERROR; } - else if (file->attributes & FILE_ATTR_TEMPORARY) { + if (file->attributes & FILE_ATTR_TEMPORARY) { return ICON_FILE_CACHE; } - else if (file->attributes & FILE_ATTR_SYSTEM) { + if (file->attributes & FILE_ATTR_SYSTEM) { return ICON_SYSTEM; } } @@ -1054,49 +1063,49 @@ static int filelist_geticon_ex(FileDirEntry *file, if (typeflag & FILE_TYPE_BLENDER) { return ICON_FILE_BLEND; } - else if (typeflag & FILE_TYPE_BLENDER_BACKUP) { + if (typeflag & FILE_TYPE_BLENDER_BACKUP) { return ICON_FILE_BACKUP; } - else if (typeflag & FILE_TYPE_IMAGE) { + if (typeflag & FILE_TYPE_IMAGE) { return ICON_FILE_IMAGE; } - else if (typeflag & FILE_TYPE_MOVIE) { + if (typeflag & FILE_TYPE_MOVIE) { return ICON_FILE_MOVIE; } - else if (typeflag & FILE_TYPE_PYSCRIPT) { + if (typeflag & FILE_TYPE_PYSCRIPT) { return ICON_FILE_SCRIPT; } - else if (typeflag & FILE_TYPE_SOUND) { + if (typeflag & FILE_TYPE_SOUND) { return ICON_FILE_SOUND; } - else if (typeflag & FILE_TYPE_FTFONT) { + if (typeflag & FILE_TYPE_FTFONT) { return ICON_FILE_FONT; } - else if (typeflag & FILE_TYPE_BTX) { + if (typeflag & FILE_TYPE_BTX) { return ICON_FILE_BLANK; } - else if (typeflag & FILE_TYPE_COLLADA) { + if (typeflag & FILE_TYPE_COLLADA) { return ICON_FILE_3D; } - else if (typeflag & FILE_TYPE_ALEMBIC) { + if (typeflag & FILE_TYPE_ALEMBIC) { return ICON_FILE_3D; } - else if (typeflag & FILE_TYPE_USD) { + if (typeflag & FILE_TYPE_USD) { return ICON_FILE_3D; } - else if (typeflag & FILE_TYPE_VOLUME) { + if (typeflag & FILE_TYPE_VOLUME) { return ICON_FILE_VOLUME; } - else if (typeflag & FILE_TYPE_OBJECT_IO) { + if (typeflag & FILE_TYPE_OBJECT_IO) { return ICON_FILE_3D; } - else if (typeflag & FILE_TYPE_TEXT) { + if (typeflag & FILE_TYPE_TEXT) { return ICON_FILE_TEXT; } - else if (typeflag & FILE_TYPE_ARCHIVE) { + if (typeflag & FILE_TYPE_ARCHIVE) { return ICON_FILE_ARCHIVE; } - else if (typeflag & FILE_TYPE_BLENDERLIB) { + if (typeflag & FILE_TYPE_BLENDERLIB) { const int ret = UI_idcode_icon_get(file->blentype); if (ret != ICON_NONE) { return ret; @@ -1133,9 +1142,7 @@ static bool filelist_checkdir_dir(struct FileList *UNUSED(filelist), parent_dir_until_exists_or_default_root(r_dir); return true; } - else { - return BLI_is_dir(r_dir); - } + return BLI_is_dir(r_dir); } static bool filelist_checkdir_lib(struct FileList *UNUSED(filelist), @@ -2106,7 +2113,7 @@ void filelist_cache_previews_set(FileList *filelist, const bool use_previews) return; } /* Do not start preview work while listing, gives nasty flickering! */ - else if (use_previews && (filelist->flags & FL_IS_READY)) { + if (use_previews && (filelist->flags & FL_IS_READY)) { cache->flags |= FLC_PREVIEWS_ACTIVE; BLI_assert((cache->previews_pool == NULL) && (cache->previews_done == NULL)); @@ -2215,67 +2222,65 @@ int ED_path_extension_type(const char *path) if (BLO_has_bfile_extension(path)) { return FILE_TYPE_BLENDER; } - else if (file_is_blend_backup(path)) { + if (file_is_blend_backup(path)) { return FILE_TYPE_BLENDER_BACKUP; } - else if (BLI_path_extension_check(path, ".app")) { + if (BLI_path_extension_check(path, ".app")) { return FILE_TYPE_APPLICATIONBUNDLE; } - else if (BLI_path_extension_check(path, ".py")) { + if (BLI_path_extension_check(path, ".py")) { return FILE_TYPE_PYSCRIPT; } - else if (BLI_path_extension_check_n(path, - ".txt", - ".glsl", - ".osl", - ".data", - ".pov", - ".ini", - ".mcr", - ".inc", - ".fountain", - NULL)) { + if (BLI_path_extension_check_n(path, + ".txt", + ".glsl", + ".osl", + ".data", + ".pov", + ".ini", + ".mcr", + ".inc", + ".fountain", + NULL)) { return FILE_TYPE_TEXT; } - else if (BLI_path_extension_check_n(path, ".ttf", ".ttc", ".pfb", ".otf", ".otc", NULL)) { + if (BLI_path_extension_check_n(path, ".ttf", ".ttc", ".pfb", ".otf", ".otc", NULL)) { return FILE_TYPE_FTFONT; } - else if (BLI_path_extension_check(path, ".btx")) { + if (BLI_path_extension_check(path, ".btx")) { return FILE_TYPE_BTX; } - else if (BLI_path_extension_check(path, ".dae")) { + if (BLI_path_extension_check(path, ".dae")) { return FILE_TYPE_COLLADA; } - else if (BLI_path_extension_check(path, ".abc")) { + if (BLI_path_extension_check(path, ".abc")) { return FILE_TYPE_ALEMBIC; } - else if (BLI_path_extension_check_n(path, ".usd", ".usda", ".usdc", NULL)) { + if (BLI_path_extension_check_n(path, ".usd", ".usda", ".usdc", NULL)) { return FILE_TYPE_USD; } - else if (BLI_path_extension_check(path, ".vdb")) { + if (BLI_path_extension_check(path, ".vdb")) { return FILE_TYPE_VOLUME; } - else if (BLI_path_extension_check(path, ".zip")) { + if (BLI_path_extension_check(path, ".zip")) { return FILE_TYPE_ARCHIVE; } - else if (BLI_path_extension_check_n(path, ".obj", ".3ds", ".fbx", ".glb", ".gltf", NULL)) { + if (BLI_path_extension_check_n(path, ".obj", ".3ds", ".fbx", ".glb", ".gltf", NULL)) { return FILE_TYPE_OBJECT_IO; } - else if (BLI_path_extension_check_array(path, imb_ext_image)) { + if (BLI_path_extension_check_array(path, imb_ext_image)) { return FILE_TYPE_IMAGE; } - else if (BLI_path_extension_check(path, ".ogg")) { + if (BLI_path_extension_check(path, ".ogg")) { if (IMB_isanim(path)) { return FILE_TYPE_MOVIE; } - else { - return FILE_TYPE_SOUND; - } + return FILE_TYPE_SOUND; } - else if (BLI_path_extension_check_array(path, imb_ext_movie)) { + if (BLI_path_extension_check_array(path, imb_ext_movie)) { return FILE_TYPE_MOVIE; } - else if (BLI_path_extension_check_array(path, imb_ext_audio)) { + if (BLI_path_extension_check_array(path, imb_ext_audio)) { return FILE_TYPE_SOUND; } return 0; @@ -2655,9 +2660,9 @@ static void filelist_readjob_main_recursive(Main *bmain, FileList *filelist) if (filelist->dir[0] == 0) { /* make directories */ # ifdef WITH_FREESTYLE - filelist->filelist.nbr_entries = 27; + filelist->filelist.nbr_entries = 27; # else - filelist->filelist.nbr_entries = 26; + filelist->filelist.nbr_entries = 26; # endif filelist_resize(filelist, filelist->filelist.nbr_entries); @@ -2688,11 +2693,11 @@ static void filelist_readjob_main_recursive(Main *bmain, FileList *filelist) filelist->filelist.entries[20].entry->relpath = BLI_strdup("Action"); filelist->filelist.entries[21].entry->relpath = BLI_strdup("NodeTree"); filelist->filelist.entries[22].entry->relpath = BLI_strdup("Speaker"); - filelist->filelist.entries[23].entry->relpath = BLI_strdup("Hair"); - filelist->filelist.entries[24].entry->relpath = BLI_strdup("Point Cloud"); - filelist->filelist.entries[25].entry->relpath = BLI_strdup("Volume"); + filelist->filelist.entries[23].entry->relpath = BLI_strdup("Hair"); + filelist->filelist.entries[24].entry->relpath = BLI_strdup("Point Cloud"); + filelist->filelist.entries[25].entry->relpath = BLI_strdup("Volume"); # ifdef WITH_FREESTYLE - filelist->filelist.entries[26].entry->relpath = BLI_strdup("FreestyleLineStyle"); + filelist->filelist.entries[26].entry->relpath = BLI_strdup("FreestyleLineStyle"); # endif } else { @@ -2804,7 +2809,7 @@ static void filelist_readjob_main_recursive(Main *bmain, FileList *filelist) static void filelist_readjob_do(const bool do_lib, FileList *filelist, const char *main_name, - short *stop, + const short *stop, short *do_update, float *progress, ThreadMutex *lock) |