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 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
74typedef struct Settings
75{
79 GSettings * general;
80
84 GSettings * preferences_editing_audio;
85 GSettings * preferences_editing_automation;
86 GSettings * preferences_editing_undo;
87 GSettings * preferences_general_engine;
88 GSettings * preferences_general_paths;
89 GSettings * preferences_general_updates;
90 GSettings * preferences_plugins_uis;
91 GSettings * preferences_plugins_paths;
92 GSettings * preferences_projects_general;
93 GSettings * preferences_ui_general;
94 GSettings * preferences_scripting_general;
95
97 GSettings * monitor;
98
106 GSettings * ui;
107
109 GSettings * transport;
110
111 GSettings * export_audio;
112 GSettings * export_midi;
113
114 GSettings * ui_mixer;
115 GSettings * ui_inspector;
116 GSettings * ui_panels;
117 GSettings * ui_plugin_browser;
118 GSettings * ui_file_browser;
119
120 PluginSettings * plugin_settings;
121
122 UserShortcuts * user_shortcuts;
123} Settings;
124
128Settings *
130
137void
138settings_reset_to_factory (bool confirm, bool exit_on_finish);
139
143void
144settings_print (int pretty_print);
145
150NONNULL bool
152 GSettings * settings,
153 const char * key,
154 const char * val);
155
159NONNULL void
161 GSettings * settings,
162 const char * key,
163 const char * val,
164 bool ignore_if_duplicate);
165
166GVariant *
167settings_get_range (const char * schema, const char * key);
168
169void
170settings_get_range_double (
171 const char * schema,
172 const char * key,
173 double * lower,
174 double * upper);
175
176GVariant *
177settings_get_default_value (const char * schema, const char * key);
178
179double
180settings_get_default_value_double (const char * schema, const char * key);
181
186char *
187settings_get_summary (GSettings * settings, const char * key);
188
193char *
194settings_get_description (GSettings * settings, const char * key);
195
199void
201
206#endif
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.
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:83
GSettings * general
General settings, like recent projects list.
Definition settings.h:79
GSettings * ui
UI memory.
Definition settings.h:106
GSettings * transport
Transport settings.
Definition settings.h:109
GSettings * monitor
Monitor settings.
Definition settings.h:97
User shortcuts read from yaml.