Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/space_file/fsmenu.c
| Show All 39 Lines | |||||
| #ifdef WIN32 | #ifdef WIN32 | ||||
| /* Need to include windows.h so _WIN32_IE is defined. */ | /* Need to include windows.h so _WIN32_IE is defined. */ | ||||
| # include <windows.h> | # include <windows.h> | ||||
| /* For SHGetSpecialFolderPath, has to be done before BLI_winstuff | /* For SHGetSpecialFolderPath, has to be done before BLI_winstuff | ||||
| * because 'near' is disabled through BLI_windstuff. */ | * because 'near' is disabled through BLI_windstuff. */ | ||||
| # include "BLI_winstuff.h" | # include "BLI_winstuff.h" | ||||
| # include <shlobj.h> | # include <shlobj.h> | ||||
| # include <shlwapi.h> | |||||
| #endif | #endif | ||||
| #include "UI_interface_icons.h" | #include "UI_interface_icons.h" | ||||
| #include "UI_resources.h" | #include "UI_resources.h" | ||||
| #include "WM_api.h" | #include "WM_api.h" | ||||
| #include "WM_types.h" | #include "WM_types.h" | ||||
| #ifdef __APPLE__ | #ifdef __APPLE__ | ||||
| ▲ Show 20 Lines • Show All 563 Lines • ▼ Show 20 Lines | #endif | ||||
| fclose(fp); | fclose(fp); | ||||
| } | } | ||||
| #ifdef WIN32 | #ifdef WIN32 | ||||
| /* Add a Windows known folder path to the System list. */ | /* Add a Windows known folder path to the System list. */ | ||||
| static void fsmenu_add_windows_folder(struct FSMenu *fsmenu, | static void fsmenu_add_windows_folder(struct FSMenu *fsmenu, | ||||
| FSMenuCategory category, | FSMenuCategory category, | ||||
| REFKNOWNFOLDERID rfid, | REFKNOWNFOLDERID rfid, | ||||
| const char *subdirname, | |||||
| const char *name, | const char *name, | ||||
| const int icon, | const int icon, | ||||
| FSMenuInsert flag) | FSMenuInsert flag) | ||||
| { | { | ||||
| LPWSTR pPath; | LPWSTR pPath; | ||||
| char line[FILE_MAXDIR]; | char line[FILE_MAXDIR]; | ||||
| if (SHGetKnownFolderPath(rfid, 0, NULL, &pPath) == S_OK) { | if (SHGetKnownFolderPath(rfid, 0, NULL, &pPath) == S_OK) { | ||||
| BLI_strncpy_wchar_as_utf8(line, pPath, FILE_MAXDIR); | BLI_strncpy_wchar_as_utf8(line, pPath, FILE_MAXDIR); | ||||
| CoTaskMemFree(pPath); | CoTaskMemFree(pPath); | ||||
| if (subdirname) { | |||||
| BLI_path_append(line, FILE_MAXDIR, subdirname); | |||||
| if (PathIsDirectoryEmpty(line)) { | |||||
| return; | |||||
| } | |||||
| } | |||||
| fsmenu_insert_entry(fsmenu, category, line, name, icon, flag); | fsmenu_insert_entry(fsmenu, category, line, name, icon, flag); | ||||
| } | } | ||||
| } | } | ||||
| #endif | #endif | ||||
| void fsmenu_read_system(struct FSMenu *fsmenu, int read_bookmarks) | void fsmenu_read_system(struct FSMenu *fsmenu, int read_bookmarks) | ||||
| { | { | ||||
| char line[FILE_MAXDIR]; | char line[FILE_MAXDIR]; | ||||
| #ifdef WIN32 | #ifdef WIN32 | ||||
| /* Add the drive names to the listing */ | /* Add the drive names to the listing */ | ||||
| { | { | ||||
| wchar_t wline[FILE_MAXDIR]; | wchar_t wline[FILE_MAXDIR]; | ||||
| __int64 tmp; | __int64 tmp; | ||||
| char tmps[4], *name; | char tmps[4], *name; | ||||
| tmp = GetLogicalDrives(); | tmp = GetLogicalDrives(); | ||||
| for (int i = 0; i < 26; i++) { | for (int i = 0; i < 26; i++) { | ||||
| if ((tmp >> i) & 1) { | if ((tmp >> i) & 1) { | ||||
hzuika: It needs to be investigated if `st_size` shows the correct value. | |||||
| tmps[0] = 'A' + i; | tmps[0] = 'A' + i; | ||||
| tmps[1] = ':'; | tmps[1] = ':'; | ||||
| tmps[2] = '\\'; | tmps[2] = '\\'; | ||||
| tmps[3] = '\0'; | tmps[3] = '\0'; | ||||
| name = NULL; | name = NULL; | ||||
| /* Flee from horrible win querying hover floppy drives! */ | /* Flee from horrible win querying hover floppy drives! */ | ||||
| if (i > 1) { | if (i > 1) { | ||||
| Show All 32 Lines | /* Add the drive names to the listing */ | ||||
| /* Get Special Folder Locations. */ | /* Get Special Folder Locations. */ | ||||
| if (read_bookmarks) { | if (read_bookmarks) { | ||||
| /* These items are shown in System List. */ | /* These items are shown in System List. */ | ||||
| fsmenu_add_windows_folder(fsmenu, | fsmenu_add_windows_folder(fsmenu, | ||||
| FS_CATEGORY_SYSTEM_BOOKMARKS, | FS_CATEGORY_SYSTEM_BOOKMARKS, | ||||
| &FOLDERID_Profile, | &FOLDERID_Profile, | ||||
| 0, | |||||
| N_("Home"), | N_("Home"), | ||||
| ICON_HOME, | ICON_HOME, | ||||
| FS_INSERT_LAST); | FS_INSERT_LAST); | ||||
| fsmenu_add_windows_folder(fsmenu, | fsmenu_add_windows_folder(fsmenu, | ||||
| FS_CATEGORY_SYSTEM_BOOKMARKS, | FS_CATEGORY_SYSTEM_BOOKMARKS, | ||||
| &FOLDERID_Desktop, | &FOLDERID_Desktop, | ||||
| 0, | |||||
| N_("Desktop"), | N_("Desktop"), | ||||
| ICON_DESKTOP, | ICON_DESKTOP, | ||||
| FS_INSERT_LAST); | FS_INSERT_LAST); | ||||
| fsmenu_add_windows_folder(fsmenu, | fsmenu_add_windows_folder(fsmenu, | ||||
| FS_CATEGORY_SYSTEM_BOOKMARKS, | FS_CATEGORY_SYSTEM_BOOKMARKS, | ||||
| &FOLDERID_Documents, | &FOLDERID_Documents, | ||||
| 0, | |||||
| N_("Documents"), | N_("Documents"), | ||||
| ICON_DOCUMENTS, | ICON_DOCUMENTS, | ||||
| FS_INSERT_LAST); | FS_INSERT_LAST); | ||||
| fsmenu_add_windows_folder(fsmenu, | fsmenu_add_windows_folder(fsmenu, | ||||
| FS_CATEGORY_SYSTEM_BOOKMARKS, | FS_CATEGORY_SYSTEM_BOOKMARKS, | ||||
| &FOLDERID_Downloads, | &FOLDERID_Downloads, | ||||
| 0, | |||||
| N_("Downloads"), | N_("Downloads"), | ||||
| ICON_IMPORT, | ICON_IMPORT, | ||||
| FS_INSERT_LAST); | FS_INSERT_LAST); | ||||
| fsmenu_add_windows_folder(fsmenu, | fsmenu_add_windows_folder(fsmenu, | ||||
| FS_CATEGORY_SYSTEM_BOOKMARKS, | FS_CATEGORY_SYSTEM_BOOKMARKS, | ||||
| &FOLDERID_Music, | &FOLDERID_Music, | ||||
| 0, | |||||
| N_("Music"), | N_("Music"), | ||||
| ICON_FILE_SOUND, | ICON_FILE_SOUND, | ||||
| FS_INSERT_LAST); | FS_INSERT_LAST); | ||||
| fsmenu_add_windows_folder(fsmenu, | fsmenu_add_windows_folder(fsmenu, | ||||
| FS_CATEGORY_SYSTEM_BOOKMARKS, | FS_CATEGORY_SYSTEM_BOOKMARKS, | ||||
| &FOLDERID_Pictures, | &FOLDERID_Pictures, | ||||
| 0, | |||||
| N_("Pictures"), | N_("Pictures"), | ||||
| ICON_FILE_IMAGE, | ICON_FILE_IMAGE, | ||||
| FS_INSERT_LAST); | FS_INSERT_LAST); | ||||
| fsmenu_add_windows_folder(fsmenu, | fsmenu_add_windows_folder(fsmenu, | ||||
| FS_CATEGORY_SYSTEM_BOOKMARKS, | FS_CATEGORY_SYSTEM_BOOKMARKS, | ||||
| &FOLDERID_Videos, | &FOLDERID_Videos, | ||||
| 0, | |||||
| N_("Videos"), | N_("Videos"), | ||||
| ICON_FILE_MOVIE, | ICON_FILE_MOVIE, | ||||
| FS_INSERT_LAST); | FS_INSERT_LAST); | ||||
| fsmenu_add_windows_folder(fsmenu, | fsmenu_add_windows_folder(fsmenu, | ||||
| FS_CATEGORY_SYSTEM_BOOKMARKS, | FS_CATEGORY_SYSTEM_BOOKMARKS, | ||||
| &FOLDERID_Fonts, | &FOLDERID_Fonts, | ||||
| 0, | |||||
| N_("Fonts"), | N_("Fonts"), | ||||
| ICON_FILE_FONT, | ICON_FILE_FONT, | ||||
| FS_INSERT_LAST); | FS_INSERT_LAST); | ||||
| fsmenu_add_windows_folder(fsmenu, | |||||
| FS_CATEGORY_SYSTEM_BOOKMARKS, | |||||
| &FOLDERID_LocalAppData, | |||||
| "Microsoft\\Windows\\Fonts", | |||||
| N_("User Fonts"), | |||||
| ICON_FILE_FONT, | |||||
| FS_INSERT_LAST); | |||||
| /* These items are just put in path cache for thumbnail views and if bookmarked. */ | /* These items are just put in path cache for thumbnail views and if bookmarked. */ | ||||
| fsmenu_add_windows_folder( | fsmenu_add_windows_folder( | ||||
| fsmenu, FS_CATEGORY_OTHER, &FOLDERID_UserProfiles, NULL, ICON_COMMUNITY, FS_INSERT_LAST); | fsmenu, FS_CATEGORY_OTHER, &FOLDERID_UserProfiles, 0, NULL, ICON_COMMUNITY, FS_INSERT_LAST); | ||||
| fsmenu_add_windows_folder( | fsmenu_add_windows_folder( | ||||
| fsmenu, FS_CATEGORY_OTHER, &FOLDERID_SkyDrive, NULL, ICON_URL, FS_INSERT_LAST); | fsmenu, FS_CATEGORY_OTHER, &FOLDERID_SkyDrive, 0, NULL, ICON_URL, FS_INSERT_LAST); | ||||
| } | } | ||||
| } | } | ||||
| #elif defined(__APPLE__) | #elif defined(__APPLE__) | ||||
| { | { | ||||
| /* We store some known macOS system paths and corresponding icons | /* We store some known macOS system paths and corresponding icons | ||||
| * and names in the FS_CATEGORY_OTHER (not displayed directly) category. */ | * and names in the FS_CATEGORY_OTHER (not displayed directly) category. */ | ||||
| fsmenu_insert_entry( | fsmenu_insert_entry( | ||||
| fsmenu, FS_CATEGORY_OTHER, "/Library/Fonts/", N_("Fonts"), ICON_FILE_FONT, FS_INSERT_LAST); | fsmenu, FS_CATEGORY_OTHER, "/Library/Fonts/", N_("Fonts"), ICON_FILE_FONT, FS_INSERT_LAST); | ||||
| ▲ Show 20 Lines • Show All 459 Lines • Show Last 20 Lines | |||||
It needs to be investigated if st_size shows the correct value.