The Battle for Wesnoth 1.21.0-dev
 
Loading...
Searching...
No Matches
paths.hpp
Go to the documentation of this file.
1/*
2 Copyright (C) 2016 - 2025
3 by Iris Morelle <shadowm2006@gmail.com>
4 Part of the Battle for Wesnoth Project https://www.wesnoth.org/
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY.
12
13 See the COPYING file for more details.
14*/
15
16/**
17 * @file
18 * Desktop paths, storage media and bookmark functions.
19 */
20
21#pragma once
22
23#include "tstring.hpp"
24
25#include <iosfwd>
26#include <set>
27#include <vector>
28
29namespace desktop
30{
31
32/**
33 * Returns the path to the user profile dir (e.g. /home/username).
34 *
35 * An empty string is returned if the path cannot be determined somehow.
36 */
37std::string user_profile_dir();
38
40{
41 /** Path name or drive letter/mount point path; may be a translatable string if it's a game resources path. */
43 /** System-defined label, if the path is a drive or mount point. */
44 std::string label;
45 /** Real path. */
46 std::string path;
47
48 /**
49 * Formats this path for UI display.
50 */
51 std::string display_name() const;
52};
53
54std::ostream& operator<<(std::ostream& os, const path_info& pinf);
55
57{
58 GAME_BIN_DIR = 0, /**< Game executable dir. */
59 GAME_CORE_DATA_DIR = 1, /**< Game data dir. */
60 GAME_USER_DATA_DIR = 3, /**< User data dir. */
61 GAME_EDITOR_MAP_DIR = 4, /**< Editor map dir */
62};
63
65{
66 SYSTEM_ALL_DRIVES = 0, /**< Paths for each storage media found (Windows), /media and/or /mnt (X11, if non-empty). */
67 SYSTEM_USER_PROFILE = 1, /**< Path to the user's profile dir (e.g. /home/username or X:\\Users\\Username). */
68 SYSTEM_ROOTFS = 2 /**< Path to the root of the filesystem hierarchy (ignored on Windows). */
69};
70
71/**
72 * Returns a list of game-related paths.
73 *
74 * These paths are guaranteed to be their canonical forms (with links and dot
75 * entries resolved) and using the platform's preferred path delimiter.
76 */
77std::vector<path_info> game_paths(const std::set<GAME_PATH_TYPES>& paths);
78
79/**
80 * Returns a list of system-defined paths.
81 *
82 * This includes removable media on platforms where we can reasonably
83 * accurately enumerate those (FIXME: only Windows right now), the path to the
84 * user's profile directory (/home/username, X:\\Users\\Username, etc.), and
85 * the system drive root.
86 *
87 * These paths are guaranteed to be their canonical forms (with links and dot
88 * entries resolved) and using the platform's preferred path delimiter.
89 */
90std::vector<path_info> system_paths(const std::set<SYSTEM_PATH_TYPES>& paths);
91
93{
94 /** User defined label. */
95 std::string label;
96 /** Real path. */
97 std::string path;
98};
99
100unsigned add_user_bookmark(const std::string& label, const std::string& path);
101
102void remove_user_bookmark(unsigned index);
103
104std::vector<bookmark_info> user_bookmarks();
105
106} // namespace desktop
std::string label
What to show in the filter's drop-down list.
Definition manager.cpp:201
std::vector< bookmark_info > user_bookmarks()
Definition paths.cpp:276
unsigned add_user_bookmark(const std::string &label, const std::string &path)
Definition paths.cpp:251
GAME_PATH_TYPES
Definition paths.hpp:57
@ GAME_EDITOR_MAP_DIR
Editor map dir.
Definition paths.hpp:61
@ GAME_USER_DATA_DIR
User data dir.
Definition paths.hpp:60
@ GAME_CORE_DATA_DIR
Game data dir.
Definition paths.hpp:59
@ GAME_BIN_DIR
Game executable dir.
Definition paths.hpp:58
void remove_user_bookmark(unsigned index)
Definition paths.cpp:264
std::vector< path_info > system_paths(const std::set< SYSTEM_PATH_TYPES > &paths)
Returns a list of system-defined paths.
Definition paths.cpp:228
SYSTEM_PATH_TYPES
Definition paths.hpp:65
@ SYSTEM_USER_PROFILE
Path to the user's profile dir (e.g.
Definition paths.hpp:67
@ SYSTEM_ALL_DRIVES
Paths for each storage media found (Windows), /media and/or /mnt (X11, if non-empty).
Definition paths.hpp:66
@ SYSTEM_ROOTFS
Path to the root of the filesystem hierarchy (ignored on Windows).
Definition paths.hpp:68
std::string user_profile_dir()
Returns the path to the user profile dir (e.g.
Definition paths.cpp:166
std::vector< path_info > game_paths(const std::set< GAME_PATH_TYPES > &paths)
Returns a list of game-related paths.
Definition paths.cpp:200
std::ostream & operator<<(std::ostream &os, const path_info &pinf)
Definition paths.cpp:195
std::string path
Real path.
Definition paths.hpp:97
std::string label
User defined label.
Definition paths.hpp:95
std::string path
Real path.
Definition paths.hpp:46
std::string display_name() const
Formats this path for UI display.
Definition paths.cpp:190
std::string label
System-defined label, if the path is a drive or mount point.
Definition paths.hpp:44
t_string name
Path name or drive letter/mount point path; may be a translatable string if it's a game resources pat...
Definition paths.hpp:42