Blender V5.0
fsmenu_system.cc File Reference
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include "MEM_guardedalloc.h"
#include "BLI_fileops.h"
#include "BLI_ghash.h"
#include "BLI_listbase.h"
#include "BLI_path_utils.hh"
#include "BLI_string.h"
#include "BLI_utildefines.h"
#include "DNA_userdef_types.h"
#include "BLT_translation.hh"
#include "ED_fileselect.hh"
#include "UI_resources.hh"
#include "fsmenu.h"

Go to the source code of this file.

Macros

#define FS_UDIR_PATH(dir, icon)

Functions

void fsmenu_read_system (FSMenu *fsmenu, int read_bookmarks)
XDG User Directory Support (Unix)

Generic Unix, Use XDG when available, otherwise fall back to the home directory.

static GHashfsmenu_xdg_user_dirs_parse (const char *home)
static void fsmenu_xdg_user_dirs_free (GHash *xdg_map)
static void fsmenu_xdg_insert_entry (GHash *xdg_map, FSMenu *fsmenu, const char *key, const char *default_path, int icon, const char *home)

Macro Definition Documentation

◆ FS_UDIR_PATH

#define FS_UDIR_PATH ( dir,
icon )
Value:
if (dir[0] && !BLI_path_is_rel(dir)) { \
fsmenu_insert_entry(fsmenu, FS_CATEGORY_OTHER, dir, nullptr, icon, FS_INSERT_LAST); \
}
bool BLI_path_is_rel(const char *path) ATTR_NONNULL(1) ATTR_WARN_UNUSED_RESULT
@ FS_CATEGORY_OTHER
@ FS_INSERT_LAST

Referenced by fsmenu_read_system().

Function Documentation

◆ fsmenu_read_system()

◆ fsmenu_xdg_insert_entry()

void fsmenu_xdg_insert_entry ( GHash * xdg_map,
FSMenu * fsmenu,
const char * key,
const char * default_path,
int icon,
const char * home )
static

Add fsmenu entry for system folders on linux.

  • Check if a path is stored in the GHash generated from user-dirs.dirs.
  • If not, check for a default path in $HOME.
Parameters
keyUse user-dirs.dirs format "XDG_EXAMPLE_DIR"
default_pathDirectory name to check in $HOME, also used for the menu entry name.

Definition at line 147 of file fsmenu_system.cc.

References BLI_ghash_lookup(), BLI_path_join, FILE_MAXDIR, FS_CATEGORY_SYSTEM_BOOKMARKS, FS_INSERT_LAST, fsmenu_insert_entry(), and N_.

Referenced by fsmenu_read_system().

◆ fsmenu_xdg_user_dirs_free()

void fsmenu_xdg_user_dirs_free ( GHash * xdg_map)
static

Definition at line 132 of file fsmenu_system.cc.

References BLI_ghash_free(), and MEM_freeN().

Referenced by fsmenu_read_system().

◆ fsmenu_xdg_user_dirs_parse()

GHash * fsmenu_xdg_user_dirs_parse ( const char * home)
static

Look for user-dirs.dirs, where localized or custom user folders are defined, and store their paths in a GHash.

Definition at line 73 of file fsmenu_system.cc.

References BLI_fopen(), BLI_ghash_insert(), BLI_ghash_str_new_ex(), BLI_path_join, BLI_str_rstrip(), BLI_strdup(), FILE_MAX, FILE_MAXDIR, l, SEP_STR, and STRPREFIX.

Referenced by fsmenu_read_system().