Blender V4.5
fsmenu.cc File Reference
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include "MEM_guardedalloc.h"
#include "BLI_fileops.h"
#include "BLI_path_utils.hh"
#include "BLI_string.h"
#include "BLI_string_utils.hh"
#include "BLI_utildefines.h"
#include "BLT_translation.hh"
#include "BKE_appdir.hh"
#include "ED_fileselect.hh"
#include "UI_resources.hh"
#include "WM_api.hh"
#include "WM_types.hh"
#include "fsmenu.h"

Go to the source code of this file.

Classes

struct  FSMenu

Functions

FSMenuED_fsmenu_get ()
FSMenuEntryED_fsmenu_get_category (FSMenu *fsmenu, FSMenuCategory category)
void ED_fsmenu_set_category (FSMenu *fsmenu, FSMenuCategory category, FSMenuEntry *fsm_head)
int ED_fsmenu_get_nentries (FSMenu *fsmenu, FSMenuCategory category)
FSMenuEntryED_fsmenu_get_entry (FSMenu *fsmenu, FSMenuCategory category, int idx)
char * ED_fsmenu_entry_get_path (FSMenuEntry *fsentry)
void ED_fsmenu_entry_set_path (FSMenuEntry *fsentry, const char *path)
int ED_fsmenu_entry_get_icon (FSMenuEntry *fsentry)
void ED_fsmenu_entry_set_icon (FSMenuEntry *fsentry, const int icon)
static void fsmenu_entry_generate_name (FSMenuEntry *fsentry, char *name, size_t name_size)
char * ED_fsmenu_entry_get_name (FSMenuEntry *fsentry)
void ED_fsmenu_entry_set_name (FSMenuEntry *fsentry, const char *name)
void fsmenu_entry_refresh_valid (FSMenuEntry *fsentry)
short fsmenu_can_save (FSMenu *fsmenu, FSMenuCategory category, int idx)
void fsmenu_insert_entry (FSMenu *fsmenu, FSMenuCategory category, const char *path, const char *name, int icon, FSMenuInsert flag)
void fsmenu_remove_entry (FSMenu *fsmenu, FSMenuCategory category, int idx)
bool fsmenu_write_file (FSMenu *fsmenu, const char *filepath)
void fsmenu_read_bookmarks (FSMenu *fsmenu, const char *filepath)
static void fsmenu_free_category (FSMenu *fsmenu, FSMenuCategory category)
void fsmenu_refresh_system_category (FSMenu *fsmenu)
static void fsmenu_free_ex (FSMenu **fsmenu)
void fsmenu_free ()
static void fsmenu_copy_category (FSMenu *fsmenu_dst, FSMenu *fsmenu_src, const FSMenuCategory category)
static FSMenufsmenu_copy (FSMenu *fsmenu)
int fsmenu_get_active_indices (FSMenu *fsmenu, enum FSMenuCategory category, const char *dir)
static void fsmenu_bookmark_validate_job_startjob (void *fsmenuv, wmJobWorkerStatus *worker_status)
static void fsmenu_bookmark_validate_job_update (void *fsmenuv)
static void fsmenu_bookmark_validate_job_end (void *fsmenuv)
static void fsmenu_bookmark_validate_job_free (void *fsmenuv)
static void fsmenu_bookmark_validate_job_start (wmWindowManager *wm)
static void fsmenu_bookmark_validate_job_stop (wmWindowManager *wm)
void fsmenu_refresh_bookmarks_status (wmWindowManager *wm, FSMenu *fsmenu)

Variables

static FSMenug_fsmenu = nullptr

Function Documentation

◆ ED_fsmenu_entry_get_icon()

int ED_fsmenu_entry_get_icon ( FSMenuEntry * fsentry)

Definition at line 148 of file fsmenu.cc.

References FSMenuEntry::icon.

◆ ED_fsmenu_entry_get_name()

char * ED_fsmenu_entry_get_name ( FSMenuEntry * fsentry)

Definition at line 175 of file fsmenu.cc.

References fsmenu_entry_generate_name(), and FSMenuEntry::name.

◆ ED_fsmenu_entry_get_path()

char * ED_fsmenu_entry_get_path ( FSMenuEntry * fsentry)

Definition at line 124 of file fsmenu.cc.

References FSMenuEntry::path.

◆ ED_fsmenu_entry_set_icon()

void ED_fsmenu_entry_set_icon ( FSMenuEntry * fsentry,
const int icon )

Definition at line 153 of file fsmenu.cc.

References FSMenuEntry::icon.

Referenced by fsmenu_insert_entry().

◆ ED_fsmenu_entry_set_name()

◆ ED_fsmenu_entry_set_path()

void ED_fsmenu_entry_set_path ( FSMenuEntry * fsentry,
const char * path )

◆ ED_fsmenu_get()

◆ ED_fsmenu_get_category()

◆ ED_fsmenu_get_entry()

FSMenuEntry * ED_fsmenu_get_entry ( FSMenu * fsmenu,
FSMenuCategory category,
int idx )

Definition at line 111 of file fsmenu.cc.

References ED_fsmenu_get_category(), and FSMenuEntry::next.

Referenced by reset_recent_exec().

◆ ED_fsmenu_get_nentries()

int ED_fsmenu_get_nentries ( FSMenu * fsmenu,
FSMenuCategory category )

Definition at line 99 of file fsmenu.cc.

References count, ED_fsmenu_get_category(), and FSMenuEntry::next.

Referenced by bookmark_delete_exec(), and bookmark_move_exec().

◆ ED_fsmenu_set_category()

◆ fsmenu_bookmark_validate_job_end()

void fsmenu_bookmark_validate_job_end ( void * fsmenuv)
static

Definition at line 645 of file fsmenu.cc.

References fsmenu_bookmark_validate_job_update().

Referenced by fsmenu_bookmark_validate_job_start().

◆ fsmenu_bookmark_validate_job_free()

void fsmenu_bookmark_validate_job_free ( void * fsmenuv)
static

Definition at line 651 of file fsmenu.cc.

References fsmenu_free_ex().

Referenced by fsmenu_bookmark_validate_job_start().

◆ fsmenu_bookmark_validate_job_start()

◆ fsmenu_bookmark_validate_job_startjob()

void fsmenu_bookmark_validate_job_startjob ( void * fsmenuv,
wmJobWorkerStatus * worker_status )
static

Thanks to some bookmarks sometimes being network drives that can have tens of seconds of delay before being defined as unreachable by the OS, we need to validate the bookmarks in an asynchronous job.

Definition at line 601 of file fsmenu.cc.

References ARRAY_SIZE, ED_fsmenu_get_category(), FS_CATEGORY_BOOKMARKS, FS_CATEGORY_RECENT, FS_CATEGORY_SYSTEM, FS_CATEGORY_SYSTEM_BOOKMARKS, fsmenu_entry_refresh_valid(), i, and FSMenuEntry::next.

Referenced by fsmenu_bookmark_validate_job_start().

◆ fsmenu_bookmark_validate_job_stop()

void fsmenu_bookmark_validate_job_stop ( wmWindowManager * wm)
static

◆ fsmenu_bookmark_validate_job_update()

◆ fsmenu_can_save()

short fsmenu_can_save ( struct FSMenu * fsmenu,
enum FSMenuCategory category,
int idx )

Return whether the entry was created by the user and can be saved and deleted

Definition at line 239 of file fsmenu.cc.

References ED_fsmenu_get_category(), FSMenuEntry::next, and FSMenuEntry::save.

◆ fsmenu_copy()

◆ fsmenu_copy_category()

void fsmenu_copy_category ( FSMenu * fsmenu_dst,
FSMenu * fsmenu_src,
const FSMenuCategory category )
static

◆ fsmenu_entry_generate_name()

void fsmenu_entry_generate_name ( FSMenuEntry * fsentry,
char * name,
size_t name_size )
static

◆ fsmenu_entry_refresh_valid()

void fsmenu_entry_refresh_valid ( struct FSMenuEntry * fsentry)

Refresh 'valid' status of given menu entry

Definition at line 214 of file fsmenu.cc.

References BLI_is_dir(), i, FSMenuEntry::path, STRCASEEQLEN, and FSMenuEntry::valid.

Referenced by fsmenu_bookmark_validate_job_startjob(), and fsmenu_insert_entry().

◆ fsmenu_free()

void fsmenu_free ( void )

Frees all the memory associated with the fsmenu.

Definition at line 539 of file fsmenu.cc.

References fsmenu_free_ex(), and g_fsmenu.

Referenced by ED_file_exit(), and ED_file_read_bookmarks().

◆ fsmenu_free_category()

void fsmenu_free_category ( FSMenu * fsmenu,
FSMenuCategory category )
static

◆ fsmenu_free_ex()

◆ fsmenu_get_active_indices()

int fsmenu_get_active_indices ( struct FSMenu * fsmenu,
enum FSMenuCategory category,
const char * dir )

Get active index based on given directory.

Definition at line 582 of file fsmenu.cc.

References BLI_path_cmp, ED_fsmenu_get_category(), i, FSMenuEntry::next, and FSMenuEntry::path.

Referenced by file_refresh().

◆ fsmenu_insert_entry()

◆ fsmenu_read_bookmarks()

void fsmenu_read_bookmarks ( struct FSMenu * fsmenu,
const char * filepath )

reads the 'bookmarks' from the specified file

Definition at line 444 of file fsmenu.cc.

References BLI_exists(), BLI_fopen(), FILE_MAXDIR, FILE_MAXFILE, FS_CATEGORY_BOOKMARKS, FS_CATEGORY_RECENT, FS_INSERT_SAVE, fsmenu_insert_entry(), len, STRNCPY(), and STRPREFIX.

Referenced by ED_file_read_bookmarks().

◆ fsmenu_refresh_bookmarks_status()

void fsmenu_refresh_bookmarks_status ( struct wmWindowManager * wm,
struct FSMenu * fsmenu )

Refresh 'valid' status of all menu entries

Definition at line 686 of file fsmenu.cc.

References BLI_assert, ED_fsmenu_get(), fsmenu_bookmark_validate_job_start(), fsmenu_bookmark_validate_job_stop(), and UNUSED_VARS_NDEBUG.

Referenced by bookmark_cleanup_exec(), and file_refresh_exec().

◆ fsmenu_refresh_system_category()

void fsmenu_refresh_system_category ( struct FSMenu * fsmenu)

Refresh system directory menu

Definition at line 513 of file fsmenu.cc.

References ED_fsmenu_set_category(), FS_CATEGORY_SYSTEM, FS_CATEGORY_SYSTEM_BOOKMARKS, fsmenu_free_category(), and fsmenu_read_system().

Referenced by file_refresh_exec().

◆ fsmenu_remove_entry()

void fsmenu_remove_entry ( struct FSMenu * fsmenu,
enum FSMenuCategory category,
int idx )

Removes the fsmenu entry at the given index.

Definition at line 369 of file fsmenu.cc.

References ED_fsmenu_get_category(), ED_fsmenu_set_category(), MEM_freeN(), FSMenuEntry::next, FSMenuEntry::path, and FSMenuEntry::save.

Referenced by bookmark_cleanup_exec(), bookmark_delete_exec(), and reset_recent_exec().

◆ fsmenu_write_file()

bool fsmenu_write_file ( struct FSMenu * fsmenu,
const char * filepath )

Variable Documentation

◆ g_fsmenu

FSMenu* g_fsmenu = nullptr
static

Definition at line 44 of file fsmenu.cc.

Referenced by ED_fsmenu_get(), fsmenu_bookmark_validate_job_start(), and fsmenu_free().