Zrythm
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
settings.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: © 2018-2022 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
10#ifndef __SETTINGS_SETTINGS_H__
11#define __SETTINGS_SETTINGS_H__
12
13#include <memory>
14
15#include "gtk_wrapper.h"
16
17typedef struct PluginSettings PluginSettings;
18typedef struct UserShortcuts UserShortcuts;
19
26#define GSETTINGS_ZRYTHM_PREFIX "org.zrythm.Zrythm"
27#define SETTINGS (gZrythm->settings)
28
29/* ---- Standard settings ---- */
30#define S_MONITOR SETTINGS->monitor
31#define S_UI SETTINGS->ui
32#define S_EXPORT_AUDIO SETTINGS->export_audio
33#define S_EXPORT_MIDI SETTINGS->export_midi
34#define S_GENERAL SETTINGS->general
35#define S_UI_INSPECTOR SETTINGS->ui_inspector
36#define S_UI_MIXER SETTINGS->ui_mixer
37#define S_UI_PANELS SETTINGS->ui_panels
38#define S_UI_PLUGIN_BROWSER SETTINGS->ui_plugin_browser
39#define S_UI_FILE_BROWSER SETTINGS->ui_file_browser
40#define S_TRANSPORT SETTINGS->transport
41
42/* ---- end standard settings ---- */
43
44/* ---- Preferences ---- */
45#define S_P_DSP_PAN SETTINGS->preferences_dsp_pan
46#define S_P_EDITING_AUDIO SETTINGS->preferences_editing_audio
47#define S_P_EDITING_AUTOMATION SETTINGS->preferences_editing_automation
48#define S_P_EDITING_UNDO SETTINGS->preferences_editing_undo
49#define S_P_GENERAL_ENGINE SETTINGS->preferences_general_engine
50#define S_P_GENERAL_PATHS SETTINGS->preferences_general_paths
51#define S_P_GENERAL_UPDATES SETTINGS->preferences_general_updates
52#define S_P_PLUGINS_UIS SETTINGS->preferences_plugins_uis
53#define S_P_PLUGINS_PATHS SETTINGS->preferences_plugins_paths
54#define S_P_PROJECTS_GENERAL SETTINGS->preferences_projects_general
55#define S_P_UI_GENERAL SETTINGS->preferences_ui_general
56#define S_P_SCRIPTING_GENERAL SETTINGS->preferences_scripting_general
57
58/* ---- end preferences ---- */
59
60#define S_IS_DEBUG (g_settings_get_int (S_GENERAL, "debug"))
61
62#define S_SET_ENUM(settings, key, val) g_settings_set_enum (settings, key, val)
63
64#define S_GET_ENUM(settings, key) g_settings_get_enum (settings, key)
65
66#define S_UI_SET_ENUM(key, val) S_SET_ENUM (S_UI, key, val)
67
68#define S_UI_GET_ENUM(key) S_GET_ENUM (S_UI, key)
69
70#define S_PLUGIN_SETTINGS SETTINGS->plugin_settings
71
72#define S_USER_SHORTCUTS SETTINGS->user_shortcuts
73
75{
76public:
77 Settings (){};
78 ~Settings ();
79
83 void init ();
84
88 GSettings * general = nullptr;
89
92 GSettings * preferences_dsp_pan = nullptr;
93 GSettings * preferences_editing_audio = nullptr;
94 GSettings * preferences_editing_automation = nullptr;
95 GSettings * preferences_editing_undo = nullptr;
96 GSettings * preferences_general_engine = nullptr;
97 GSettings * preferences_general_paths = nullptr;
98 GSettings * preferences_general_updates = nullptr;
99 GSettings * preferences_plugins_uis = nullptr;
100 GSettings * preferences_plugins_paths = nullptr;
101 GSettings * preferences_projects_general = nullptr;
102 GSettings * preferences_ui_general = nullptr;
103 GSettings * preferences_scripting_general = nullptr;
104
106 GSettings * monitor = nullptr;
107
115 GSettings * ui = nullptr;
116
118 GSettings * transport = nullptr;
119
120 GSettings * export_audio = nullptr;
121 GSettings * export_midi = nullptr;
122
123 GSettings * ui_mixer = nullptr;
124 GSettings * ui_inspector = nullptr;
125 GSettings * ui_panels = nullptr;
126 GSettings * ui_plugin_browser = nullptr;
127 GSettings * ui_file_browser = nullptr;
128
129 PluginSettings * plugin_settings = nullptr;
130
131 UserShortcuts * user_shortcuts = nullptr;
132};
133
140void
141settings_reset_to_factory (bool confirm, bool exit_on_finish);
142
146void
147settings_print (int pretty_print);
148
153NONNULL bool
155 GSettings * settings,
156 const char * key,
157 const char * val);
158
162NONNULL void
164 GSettings * settings,
165 const char * key,
166 const char * val,
167 bool ignore_if_duplicate);
168
169GVariant *
170settings_get_range (const char * schema, const char * key);
171
172void
173settings_get_range_double (
174 const char * schema,
175 const char * key,
176 double * lower,
177 double * upper);
178
179GVariant *
180settings_get_default_value (const char * schema, const char * key);
181
182double
183settings_get_default_value_double (const char * schema, const char * key);
184
189char *
190settings_get_summary (GSettings * settings, const char * key);
191
196char *
197settings_get_description (GSettings * settings, const char * key);
198
203#endif
GSettings * preferences_dsp_pan
All preferences_* settings are to be shown in the preferences dialog.
Definition settings.h:92
GSettings * general
General settings, like recent projects list.
Definition settings.h:88
GSettings * ui
UI memory.
Definition settings.h:115
GSettings * transport
Transport settings.
Definition settings.h:118
void init()
Initializes settings.
GSettings * monitor
Monitor settings.
Definition settings.h:106
char * settings_get_description(GSettings *settings, const char *key)
Returns the localized description as a newly allocated string.
void settings_reset_to_factory(bool confirm, bool exit_on_finish)
Resets settings to defaults.
void settings_print(int pretty_print)
Prints the current settings.
NONNULL void settings_append_to_strv(GSettings *settings, const char *key, const char *val, bool ignore_if_duplicate)
Appends the given string to a key of type "as".
NONNULL bool settings_strv_contains_str(GSettings *settings, const char *key, const char *val)
Returns whether the "as" key contains the given string.
char * settings_get_summary(GSettings *settings, const char *key)
Returns the localized summary as a newly allocated string.
User shortcuts read from yaml.