Blender V4.3
fsmenu_system.cc File Reference
#include <cmath>
#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 fallback 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 (BLI_strnlen(dir, 3) > 2) { \
\
fsmenu_insert_entry(fsmenu, FS_CATEGORY_OTHER, dir, nullptr, icon, FS_INSERT_LAST); \
}
int char char int int int int size_t BLI_strnlen(const char *str, size_t maxlen) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
Definition string.c:909
@ FS_CATEGORY_OTHER
@ FS_INSERT_LAST

Referenced by fsmenu_read_system().

Function Documentation

◆ fsmenu_read_system()

◆ fsmenu_xdg_insert_entry()

static 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 143 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()

static void fsmenu_xdg_user_dirs_free ( GHash * xdg_map)
static

Definition at line 128 of file fsmenu_system.cc.

References BLI_ghash_free(), and MEM_freeN().

Referenced by fsmenu_read_system().

◆ fsmenu_xdg_user_dirs_parse()

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