Blender V5.0
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)
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 ()
int fsmenu_get_active_indices (FSMenu *fsmenu, enum FSMenuCategory category, const char *dir)

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(), FSMenuEntry::name, and 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_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 214 of file fsmenu.cc.

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

◆ fsmenu_entry_generate_name()

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

◆ fsmenu_free()

void fsmenu_free ( void )

Frees all the memory associated with the fsmenu.

Definition at line 511 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()

void fsmenu_free_ex ( FSMenu ** fsmenu)
static

◆ 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 516 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()

void fsmenu_insert_entry ( struct FSMenu * fsmenu,
enum FSMenuCategory category,
const char * path,
const char * name,
int icon,
enum FSMenuInsert flag )

◆ fsmenu_read_bookmarks()

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

reads the 'bookmarks' from the specified file

Definition at line 421 of file fsmenu.cc.

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

Referenced by ED_file_read_bookmarks().

◆ fsmenu_refresh_system_category()

void fsmenu_refresh_system_category ( struct FSMenu * fsmenu)

Refresh system directory menu

Definition at line 485 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 346 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(), and fsmenu_free().