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 <stdbool.h>
14
15#include <gtk/gtk.h>
16
17typedef struct PluginSettings PluginSettings;
18typedef struct UserShortcuts UserShortcuts;
19
26#define GSETTINGS_ZRYTHM_PREFIX "org.zrythm.Zrythm"
27#define SETTINGS (ZRYTHM->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 \
48 SETTINGS->preferences_editing_automation
49#define S_P_EDITING_UNDO SETTINGS->preferences_editing_undo
50#define S_P_GENERAL_ENGINE \
51 SETTINGS->preferences_general_engine
52#define S_P_GENERAL_PATHS SETTINGS->preferences_general_paths
53#define S_P_GENERAL_UPDATES \
54 SETTINGS->preferences_general_updates
55#define S_P_PLUGINS_UIS SETTINGS->preferences_plugins_uis
56#define S_P_PLUGINS_PATHS SETTINGS->preferences_plugins_paths
57#define S_P_PROJECTS_GENERAL \
58 SETTINGS->preferences_projects_general
59#define S_P_UI_GENERAL SETTINGS->preferences_ui_general
60#define S_P_SCRIPTING_GENERAL \
61 SETTINGS->preferences_scripting_general
62
63/* ---- end preferences ---- */
64
65#define S_IS_DEBUG (g_settings_get_int (S_GENERAL, "debug"))
66
67#define S_SET_ENUM(settings, key, val) \
68 g_settings_set_enum (settings, key, val)
69
70#define S_GET_ENUM(settings, key) \
71 g_settings_get_enum (settings, key)
72
73#define S_UI_SET_ENUM(key, val) S_SET_ENUM (S_UI, key, val)
74
75#define S_UI_GET_ENUM(key) S_GET_ENUM (S_UI, key)
76
77#define S_PLUGIN_SETTINGS SETTINGS->plugin_settings
78
79#define S_USER_SHORTCUTS SETTINGS->user_shortcuts
80
81typedef struct Settings
82{
86 GSettings * general;
87
91 GSettings * preferences_editing_audio;
92 GSettings * preferences_editing_automation;
93 GSettings * preferences_editing_undo;
94 GSettings * preferences_general_engine;
95 GSettings * preferences_general_paths;
96 GSettings * preferences_general_updates;
97 GSettings * preferences_plugins_uis;
98 GSettings * preferences_plugins_paths;
99 GSettings * preferences_projects_general;
100 GSettings * preferences_ui_general;
101 GSettings * preferences_scripting_general;
102
104 GSettings * monitor;
105
113 GSettings * ui;
114
116 GSettings * transport;
117
118 GSettings * export_audio;
119 GSettings * export_midi;
120
121 GSettings * ui_mixer;
122 GSettings * ui_inspector;
123 GSettings * ui_panels;
124 GSettings * ui_plugin_browser;
125 GSettings * ui_file_browser;
126
127 PluginSettings * plugin_settings;
128
129 UserShortcuts * user_shortcuts;
130} Settings;
131
135Settings *
137
149bool
151 bool confirm,
152 GtkWindow * window,
153 bool exit_on_finish);
154
158void
159settings_print (int pretty_print);
160
165NONNULL bool
167 GSettings * settings,
168 const char * key,
169 const char * val);
170
174NONNULL void
176 GSettings * settings,
177 const char * key,
178 const char * val,
179 bool ignore_if_duplicate);
180
181GVariant *
182settings_get_range (const char * schema, const char * key);
183
184void
185settings_get_range_double (
186 const char * schema,
187 const char * key,
188 double * lower,
189 double * upper);
190
191GVariant *
192settings_get_default_value (
193 const char * schema,
194 const char * key);
195
196double
197settings_get_default_value_double (
198 const char * schema,
199 const char * key);
200
205char *
206settings_get_summary (GSettings * settings, const char * key);
207
212char *
214 GSettings * settings,
215 const char * key);
216
220void
222
227#endif
char * settings_get_description(GSettings *settings, const char *key)
Returns the localized description as a newly allocated string.
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".
bool settings_reset_to_factory(bool confirm, GtkWindow *window, bool exit_on_finish)
Resets settings to defaults.
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.
Settings * settings_new(void)
Initializes settings.
void settings_free(Settings *self)
Frees settings.
GSettings * preferences_dsp_pan
All preferences_* settings are to be shown in the preferences dialog.
Definition settings.h:90
GSettings * general
General settings, like recent projects list.
Definition settings.h:86
GSettings * ui
UI memory.
Definition settings.h:113
GSettings * transport
Transport settings.
Definition settings.h:116
GSettings * monitor
Monitor settings.
Definition settings.h:104
User shortcuts read from yaml.