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 ED_fsmenu_entry_get_icon(), and FSMenuEntry::icon.

Referenced by ED_fsmenu_entry_get_icon().

◆ ED_fsmenu_entry_get_name()

char * ED_fsmenu_entry_get_name ( FSMenuEntry * fsentry)

◆ ED_fsmenu_entry_get_path()

char * ED_fsmenu_entry_get_path ( FSMenuEntry * fsentry)

Definition at line 124 of file fsmenu.cc.

References ED_fsmenu_entry_get_path(), and FSMenuEntry::path.

Referenced by ED_fsmenu_entry_get_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 ED_fsmenu_entry_set_icon(), and FSMenuEntry::icon.

Referenced by ED_fsmenu_entry_set_icon(), and fsmenu_insert_entry().

◆ ED_fsmenu_entry_set_name()

◆ ED_fsmenu_entry_set_path()

◆ ED_fsmenu_get()

◆ ED_fsmenu_get_category()

◆ ED_fsmenu_get_entry()

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

◆ ED_fsmenu_get_nentries()

int ED_fsmenu_get_nentries ( FSMenu * fsmenu,
FSMenuCategory category )

◆ ED_fsmenu_set_category()

◆ fsmenu_bookmark_validate_job_end()

void fsmenu_bookmark_validate_job_end ( void * fsmenuv)
static

◆ fsmenu_bookmark_validate_job_free()

void fsmenu_bookmark_validate_job_free ( void * fsmenuv)
static

◆ 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_bookmark_validate_job_startjob(), fsmenu_entry_refresh_valid(), i, and FSMenuEntry::next.

Referenced by fsmenu_bookmark_validate_job_start(), and fsmenu_bookmark_validate_job_startjob().

◆ 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(), fsmenu_can_save(), FSMenuEntry::next, and FSMenuEntry::save.

Referenced by fsmenu_can_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)

◆ 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(), fsmenu_free_ex(), and g_fsmenu.

Referenced by ED_file_exit(), ED_file_read_bookmarks(), and fsmenu_free().

◆ 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(), fsmenu_get_active_indices(), i, FSMenuEntry::next, and FSMenuEntry::path.

Referenced by file_refresh(), and fsmenu_get_active_indices().

◆ fsmenu_insert_entry()

◆ fsmenu_read_bookmarks()

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

◆ fsmenu_refresh_bookmarks_status()

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

◆ fsmenu_refresh_system_category()

void fsmenu_refresh_system_category ( struct FSMenu * fsmenu)

◆ fsmenu_remove_entry()

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

◆ fsmenu_write_file()

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().