summaryrefslogtreecommitdiff
path: root/snd-prefs.c
diff options
context:
space:
mode:
authorAlessio Treglia <alessio@debian.org>2011-03-24 09:13:51 +0100
committerAlessio Treglia <alessio@debian.org>2011-03-24 09:13:51 +0100
commite5328e59987b90c4e98959510b810510e384650d (patch)
tree0f140b79d942c4654701d8fb4cfe2f1dd904f9f0 /snd-prefs.c
parent36cf8384e5699cda3f1ca607753fe4d4a8515b01 (diff)
Imported Upstream version 12.0
Diffstat (limited to 'snd-prefs.c')
-rw-r--r--snd-prefs.c2227
1 files changed, 764 insertions, 1463 deletions
diff --git a/snd-prefs.c b/snd-prefs.c
index 4036ea8..5793788 100644
--- a/snd-prefs.c
+++ b/snd-prefs.c
@@ -1,5 +1,8 @@
/* this file included as text in snd-g|xprefs.c */
+/* TODO: make the current help strings less stupid
+ */
+
static void int_to_textfield(widget_t w, int val)
{
char *str;
@@ -73,7 +76,7 @@ static prefs_info **prefs = NULL;
static void remember_pref(prefs_info *prf,
void (*reflect_func)(struct prefs_info *prf),
void (*save_func)(struct prefs_info *prf, FILE *fd),
- void (*help_func)(struct prefs_info *prf),
+ const char *(*help_func)(struct prefs_info *prf),
void (*clear_func)(struct prefs_info *prf),
void (*revert_func)(struct prefs_info *prf))
{
@@ -99,6 +102,18 @@ static void remember_pref(prefs_info *prf,
prf->clear_func = clear_func;
prf->revert_func = revert_func;
prefs[prefs_top++] = prf;
+
+ if ((help_func) &&
+ (prf->label))
+ {
+ if (prf->var_name)
+ {
+ char *str;
+ str = mus_format("%s\n See %s for more info.", (*help_func)(prf), prf->var_name);
+ add_tooltip(prf->label, str); /* don't free it... */
+ }
+ else add_tooltip(prf->label, (*help_func)(prf));
+ }
}
@@ -250,8 +265,7 @@ static void save_prefs(void)
FILE *fd;
/* save_options_in_prefs passes us the filename after calling save_options which handles all
- * the simple cases. The rest of the special "save" functions called here are for cases
- * where we are calling extension code, so we have to make sure the necessary files are loaded.
+ * the simple cases.
*/
filename = save_options_in_prefs();
@@ -274,11 +288,8 @@ static void save_prefs(void)
* load_path_to_string_array can turn the LOAD_PATH into a char** array.
*
* load-path needs to be set even if a later init file adds to it; we need a true
- * load-path before loading extensions.scm, but this can be called
- * repeatedly, and across executions, so we don't want to fill up the list
- * with repetitions,
- *
- * find_sources below is being used to get the current load-path entry that points to extensions.*
+ * load-path, but this can be called repeatedly, and across executions, so we
+ * don't want to fill up the list with repetitions
*/
current_dirs = load_path_to_string_array(&current_dirs_len);
@@ -367,256 +378,6 @@ static char *possibly_quote(char *key)
}
-static void prefs_help(prefs_info *prf)
-{
- if (prf->var_name)
- {
- if (prf->help_func)
- {
- prefs_helping = true;
- (*(prf->help_func))(prf);
- }
-#if (!HAVE_SCHEME)
- else
- {
- XEN sym;
- sym = C_STRING_TO_XEN_SYMBOL(TO_PROC_NAME((char *)(prf->var_name)));
- if (XEN_SYMBOL_P(sym))
- {
- XEN obj;
- obj = XEN_OBJECT_HELP(sym);
- if (XEN_STRING_P(obj))
- {
- prefs_helping = true;
- snd_help(prf->var_name,
- XEN_TO_C_STRING(obj),
- WITH_WORD_WRAP);
- }
- }
- }
-#endif
- }
-}
-
-
-#if HAVE_RUBY
-static char *no_stars(const char *name)
-{
- if (name[0] == '*')
- {
- char *val;
- val = (char *)calloc(strlen(name), sizeof(char));
- strncpy(val, (char *)(name + 1), strlen(name) - 2);
- return(val);
- }
- else return(mus_strdup(name));
-}
-#endif
-
-
-static void prefs_variable_set(const char *name, XEN val)
-{
-#if HAVE_SCHEME
- if (XEN_DEFINED_P(name))
- XEN_VARIABLE_SET(XEN_NAME_AS_C_STRING_TO_VARIABLE(name), val);
-#endif
-
-#if HAVE_FORTH
- if (XEN_DEFINED_P(name))
- XEN_VARIABLE_SET(name, val);
-#endif
-
-#if HAVE_RUBY
- {
- char *str;
- str = no_stars(name);
- if (XEN_DEFINED_P(str))
- XEN_VARIABLE_SET(str, val);
- free(str);
- }
-#endif
-}
-
-
-static void prefs_variable_save(FILE *fd, const char *name, const char *file, XEN val)
-{
-#if HAVE_SCHEME
- char *temp = NULL;
- if (file)
- fprintf(fd, "(if (not (provided? 'snd-%s.scm)) (load \"%s.scm\"))\n", file, file);
- fprintf(fd, "(set! %s %s)\n", name, temp = XEN_AS_STRING(val));
-#if HAVE_SCHEME
- if (temp) free(temp);
-#endif
-#endif
-
-#if HAVE_RUBY
- char *str;
- str = no_stars(name);
- if (file)
- fprintf(fd, "require \"%s\"\n", file);
- fprintf(fd, "$%s = %s\n", TO_PROC_NAME(str), XEN_AS_STRING(val));
- /* fprintf(fd, "set_%s(%s)\n", TO_PROC_NAME(str), XEN_AS_STRING(val)); */
- free(str);
-#endif
-
-#if HAVE_FORTH
- if (file)
- fprintf(fd, "require %s\n", file);
- fprintf(fd, "%s to %s\n", XEN_AS_STRING(val), name);
- /* fprintf(fd, "%s set-%s drop\n", XEN_AS_STRING(val), name); */
-#endif
-}
-
-
-static XEN prefs_variable_get(const char *name)
-{
-#if HAVE_SCHEME || HAVE_FORTH
- if (XEN_DEFINED_P(name))
- return(XEN_NAME_AS_C_STRING_TO_VALUE(name));
-#endif
-
-#if HAVE_RUBY
- {
- char *str;
- XEN val = XEN_FALSE;
- str = no_stars(name);
- if (XEN_DEFINED_P(str))
- val = XEN_NAME_AS_C_STRING_TO_VALUE(str);
- free(str);
- return(val);
- }
-#endif
-
- return(XEN_FALSE);
-}
-
-
-static bool prefs_is_loading = false;
-
-static void watch_for_snd_error_in_prefs(ss_watcher_reason_t reason, void *msg)
-{
- if ((prefs_is_loading) &&
- (widget_is_active(preferences_dialog)))
- post_it("Load error", (const char *)msg);
-}
-
-
-static void load_file_with_path_and_extension(const char *file)
-{
- /* file is bare (no extension, no directory) file name */
- char *str;
- str = mus_format("%s.%s", file, XEN_FILE_EXTENSION);
- prefs_is_loading = true;
- XEN_LOAD_FILE_WITH_PATH(str);
- prefs_is_loading = false;
- free(str);
-}
-
-
-static void prefs_function_call_0(const char *func)
-{
-#if HAVE_EXTENSION_LANGUAGE
- char *str;
-#if HAVE_SCHEME
- str = mus_format("(%s)\n", func);
-#endif
-
-#if HAVE_RUBY
- str = mus_format("%s()\n", TO_PROC_NAME(func));
-#endif
-
-#if HAVE_FORTH
- str = mus_format("%s\n", func);
-#endif
-
- XEN_EVAL_C_STRING(str);
- free(str);
-#endif
-}
-
-
-static void prefs_function_call_1(const char *func, XEN arg)
-{
-#if HAVE_EXTENSION_LANGUAGE
- char *str;
-#if HAVE_SCHEME
- char *temp = NULL;
- str = mus_format("(%s %s)\n", func, temp = XEN_AS_STRING(arg));
-#if HAVE_SCHEME
- if (temp) free(temp);
-#endif
-#endif
-
-#if HAVE_RUBY
- str = mus_format("%s(%s)\n", TO_PROC_NAME(func), XEN_AS_STRING(arg));
-#endif
-
-#if HAVE_FORTH
- str = mus_format("%s %s\n", XEN_AS_STRING(arg), func);
-#endif
-
- XEN_EVAL_C_STRING(str);
- free(str);
-#endif
-}
-
-
-static void prefs_function_save_0(FILE *fd, const char *name, const char *file)
-{
-#if HAVE_SCHEME
- if (file)
- fprintf(fd, "(if (not (provided? 'snd-%s.scm)) (load \"%s.scm\"))\n", file, file);
- fprintf(fd, "(%s)\n", name);
-#endif
-
-#if HAVE_RUBY
- char *str;
- str = TO_PROC_NAME(name);
- if (file)
- fprintf(fd, "require \"%s\"\n", file);
- fprintf(fd, "%s()\n", str);
- free(str);
-#endif
-
-#if HAVE_FORTH
- if (file)
- fprintf(fd, "require %s\n", file);
- fprintf(fd, "%s\n", name);
-#endif
-}
-
-
-static void prefs_function_save_1(FILE *fd, const char *name, const char *file, XEN val)
-{
-#if HAVE_SCHEME
- char *temp = NULL;
- if (file)
- fprintf(fd, "(if (not (provided? 'snd-%s.scm)) (load \"%s.scm\"))\n", file, file);
- fprintf(fd, "(%s %s)\n", name, temp = XEN_AS_STRING(val));
-#if HAVE_SCHEME
- if (temp) free(temp);
-#endif
-#endif
-
-#if HAVE_RUBY
- char *str;
- str = TO_PROC_NAME(name);
- if (file)
- fprintf(fd, "require \"%s\"\n", file);
- fprintf(fd, "%s(%s)\n", str, XEN_AS_STRING(val));
- free(str);
-#endif
-
-#if HAVE_FORTH
- if (file)
- fprintf(fd, "require %s\n", file);
- fprintf(fd, "%s %s\n", XEN_AS_STRING(val), name);
-#endif
-}
-
-
-
/* ---------------- auto-resize ---------------- */
static bool rts_auto_resize = DEFAULT_AUTO_RESIZE;
@@ -625,6 +386,14 @@ static void resize_toggle(prefs_info *prf) {set_auto_resize(GET_TOGGLE(prf->togg
static void revert_auto_resize(prefs_info *prf) {set_auto_resize(rts_auto_resize);}
static void save_auto_resize(prefs_info *prf, FILE *ignore) {rts_auto_resize = auto_resize(ss);}
+static const char *help_auto_resize(prefs_info *prf)
+{
+ return("\
+ If this option is set, Snd's main window \n\
+ changes size as sounds come and go. ");
+}
+
+
/* ---------------- ask-before-overwrite ---------------- */
@@ -634,13 +403,21 @@ static void overwrite_toggle(prefs_info *prf) {set_ask_before_overwrite(GET_TOGG
static void revert_ask_before_overwrite(prefs_info *prf) {set_ask_before_overwrite(rts_ask_before_overwrite);}
static void save_ask_before_overwrite(prefs_info *prf, FILE *ignore) {rts_ask_before_overwrite = ask_before_overwrite(ss);}
+static const char *help_ask_before_overwrite(prefs_info *prf)
+{
+ return("\
+ If this option is set, Snd will ask you before \n\
+ it overwrites an existing sound. ");
+}
+
+
/* ---------------- show-controls ---------------- */
static bool rts_show_controls = DEFAULT_SHOW_CONTROLS;
static void reflect_show_controls(prefs_info *prf) {SET_TOGGLE(prf->toggle, in_show_controls(ss));}
-static void controls_toggle(prefs_info *prf) {in_set_show_controls(ss, GET_TOGGLE(prf->toggle));}
-static void revert_show_controls(prefs_info *prf) {in_set_show_controls(ss, rts_show_controls);}
+static void controls_toggle(prefs_info *prf) {set_show_controls(GET_TOGGLE(prf->toggle));}
+static void revert_show_controls(prefs_info *prf) {set_show_controls(rts_show_controls);}
static void save_show_controls(prefs_info *prf, FILE *ignore) {rts_show_controls = in_show_controls(ss);}
@@ -657,8 +434,8 @@ static void save_just_sounds(prefs_info *prf, FILE *ignore) {rts_just_sounds = j
static bool rts_verbose_cursor = DEFAULT_VERBOSE_CURSOR;
static void reflect_verbose_cursor(prefs_info *prf) {SET_TOGGLE(prf->toggle, verbose_cursor(ss));}
-static void verbose_cursor_toggle(prefs_info *prf) {in_set_verbose_cursor(GET_TOGGLE(prf->toggle));}
-static void revert_verbose_cursor(prefs_info *prf) {in_set_verbose_cursor(rts_verbose_cursor);}
+static void verbose_cursor_toggle(prefs_info *prf) {set_verbose_cursor(GET_TOGGLE(prf->toggle));}
+static void revert_verbose_cursor(prefs_info *prf) {set_verbose_cursor(rts_verbose_cursor);}
static void save_verbose_cursor(prefs_info *prf, FILE *ignore) {rts_verbose_cursor = verbose_cursor(ss);}
@@ -675,8 +452,8 @@ static void save_graphs_horizontal(prefs_info *prf, FILE *ignore) {rts_graphs_ho
static bool rts_show_y_zero = DEFAULT_SHOW_Y_ZERO;
static void reflect_show_y_zero(prefs_info *prf) {SET_TOGGLE(prf->toggle, show_y_zero(ss));}
-static void y_zero_toggle(prefs_info *prf) {in_set_show_y_zero(GET_TOGGLE(prf->toggle));}
-static void revert_show_y_zero(prefs_info *prf) {in_set_show_y_zero(rts_show_y_zero);}
+static void y_zero_toggle(prefs_info *prf) {set_show_y_zero(GET_TOGGLE(prf->toggle));}
+static void revert_show_y_zero(prefs_info *prf) {set_show_y_zero(rts_show_y_zero);}
static void save_show_y_zero(prefs_info *prf, FILE *ignore) {rts_show_y_zero = show_y_zero(ss);}
@@ -684,8 +461,8 @@ static void save_show_y_zero(prefs_info *prf, FILE *ignore) {rts_show_y_zero = s
static with_grid_t rts_show_grid = DEFAULT_SHOW_GRID;
static void reflect_show_grid(prefs_info *prf) {SET_TOGGLE(prf->toggle, show_grid(ss) == WITH_GRID);}
-static void grid_toggle(prefs_info *prf) {in_set_show_grid(((GET_TOGGLE(prf->toggle)) ? WITH_GRID : NO_GRID));}
-static void revert_show_grid(prefs_info *prf) {in_set_show_grid(rts_show_grid);}
+static void grid_toggle(prefs_info *prf) {set_show_grid(((GET_TOGGLE(prf->toggle)) ? WITH_GRID : NO_GRID));}
+static void revert_show_grid(prefs_info *prf) {set_show_grid(rts_show_grid);}
static void save_show_grid(prefs_info *prf, FILE *ignore) {rts_show_grid = show_grid(ss);}
@@ -693,8 +470,8 @@ static void save_show_grid(prefs_info *prf, FILE *ignore) {rts_show_grid = show_
static bool rts_fft_log_magnitude = DEFAULT_FFT_LOG_MAGNITUDE;
static void reflect_fft_log_magnitude(prefs_info *prf) {SET_TOGGLE(prf->toggle, fft_log_magnitude(ss));}
-static void log_magnitude_toggle(prefs_info *prf) {in_set_fft_log_magnitude(GET_TOGGLE(prf->toggle));}
-static void revert_fft_log_magnitude(prefs_info *prf) {in_set_fft_log_magnitude(rts_fft_log_magnitude);}
+static void log_magnitude_toggle(prefs_info *prf) {set_fft_log_magnitude(GET_TOGGLE(prf->toggle));}
+static void revert_fft_log_magnitude(prefs_info *prf) {set_fft_log_magnitude(rts_fft_log_magnitude);}
static void save_fft_log_magnitude(prefs_info *prf, FILE *ignore) {rts_fft_log_magnitude = fft_log_magnitude(ss);}
@@ -702,8 +479,8 @@ static void save_fft_log_magnitude(prefs_info *prf, FILE *ignore) {rts_fft_log_m
static bool rts_fft_log_frequency = DEFAULT_FFT_LOG_FREQUENCY;
static void reflect_fft_log_frequency(prefs_info *prf) {SET_TOGGLE(prf->toggle, fft_log_frequency(ss));}
-static void log_frequency_toggle(prefs_info *prf) {in_set_fft_log_frequency(GET_TOGGLE(prf->toggle));}
-static void revert_fft_log_frequency(prefs_info *prf) {in_set_fft_log_frequency(rts_fft_log_frequency);}
+static void log_frequency_toggle(prefs_info *prf) {set_fft_log_frequency(GET_TOGGLE(prf->toggle));}
+static void revert_fft_log_frequency(prefs_info *prf) {set_fft_log_frequency(rts_fft_log_frequency);}
static void save_fft_log_frequency(prefs_info *prf, FILE *ignore) {rts_fft_log_frequency = fft_log_frequency(ss);}
@@ -760,7 +537,7 @@ static void clear_show_listener(prefs_info *prf)
/* we need the original color (Clear), the last saved color (Revert)
* the colors are updated continuously, so the current color variable (and the reflection func) is irrelevant
* so:
- * set original in snd-gxmain or somewhere: requires ss->sgx fields
+ * set original in snd-gxmain or somewhere
* set rts in prefs dialog startup
* reflect_color: a no-op
* save_color: save current color_t value in rts value (actual fd output dealt with elsewhere)
@@ -771,7 +548,7 @@ static void clear_show_listener(prefs_info *prf)
*/
static color_t saved_basic_color;
-static void save_basic_color(prefs_info *prf, FILE *ignore) {saved_basic_color = ss->sgx->basic_color;}
+static void save_basic_color(prefs_info *prf, FILE *ignore) {saved_basic_color = ss->basic_color;}
static void basic_color_func(prefs_info *prf, float r, float g, float b) {set_basic_color(rgb_to_color(r, g, b));}
@@ -784,8 +561,8 @@ static void revert_basic_color(prefs_info *prf)
static void clear_basic_color(prefs_info *prf)
{
- scale_set_color(prf, ss->sgx->basic_color);
- set_basic_color(ss->sgx->orig_basic_color);
+ scale_set_color(prf, ss->basic_color);
+ set_basic_color(ss->orig_basic_color);
}
@@ -793,7 +570,7 @@ static void clear_basic_color(prefs_info *prf)
/* ---------------- highlight-color ---------------- */
static color_t saved_highlight_color;
-static void save_highlight_color(prefs_info *prf, FILE *ignore) {saved_highlight_color = ss->sgx->highlight_color;}
+static void save_highlight_color(prefs_info *prf, FILE *ignore) {saved_highlight_color = ss->highlight_color;}
static void highlight_color_func(prefs_info *prf, float r, float g, float b) {set_highlight_color(rgb_to_color(r, g, b));}
@@ -806,8 +583,8 @@ static void revert_highlight_color(prefs_info *prf)
static void clear_highlight_color(prefs_info *prf)
{
- scale_set_color(prf, ss->sgx->orig_highlight_color);
- set_highlight_color(ss->sgx->orig_highlight_color);
+ scale_set_color(prf, ss->orig_highlight_color);
+ set_highlight_color(ss->orig_highlight_color);
}
@@ -815,7 +592,7 @@ static void clear_highlight_color(prefs_info *prf)
/* ---------------- position-color ---------------- */
static color_t saved_position_color;
-static void save_position_color(prefs_info *prf, FILE *ignore) {saved_position_color = ss->sgx->position_color;}
+static void save_position_color(prefs_info *prf, FILE *ignore) {saved_position_color = ss->position_color;}
static void position_color_func(prefs_info *prf, float r, float g, float b) {set_position_color(rgb_to_color(r, g, b));}
@@ -828,8 +605,8 @@ static void revert_position_color(prefs_info *prf)
static void clear_position_color(prefs_info *prf)
{
- scale_set_color(prf, ss->sgx->orig_position_color);
- set_position_color(ss->sgx->orig_position_color);
+ scale_set_color(prf, ss->orig_position_color);
+ set_position_color(ss->orig_position_color);
}
@@ -837,7 +614,7 @@ static void clear_position_color(prefs_info *prf)
/* ---------------- zoom-color ---------------- */
static color_t saved_zoom_color;
-static void save_zoom_color(prefs_info *prf, FILE *ignore) {saved_zoom_color = ss->sgx->zoom_color;}
+static void save_zoom_color(prefs_info *prf, FILE *ignore) {saved_zoom_color = ss->zoom_color;}
static void zoom_color_func(prefs_info *prf, float r, float g, float b) {set_zoom_color(rgb_to_color(r, g, b));}
@@ -850,8 +627,8 @@ static void revert_zoom_color(prefs_info *prf)
static void clear_zoom_color(prefs_info *prf)
{
- scale_set_color(prf, ss->sgx->orig_zoom_color);
- set_zoom_color(ss->sgx->orig_zoom_color);
+ scale_set_color(prf, ss->orig_zoom_color);
+ set_zoom_color(ss->orig_zoom_color);
}
@@ -859,7 +636,7 @@ static void clear_zoom_color(prefs_info *prf)
/* ---------------- cursor-color ---------------- */
static color_t saved_cursor_color;
-static void save_cursor_color(prefs_info *prf, FILE *ignore) {saved_cursor_color = ss->sgx->cursor_color;}
+static void save_cursor_color(prefs_info *prf, FILE *ignore) {saved_cursor_color = ss->cursor_color;}
static void cursor_color_func(prefs_info *prf, float r, float g, float b)
{
@@ -877,8 +654,8 @@ static void revert_cursor_color(prefs_info *prf)
static void clear_cursor_color(prefs_info *prf)
{
- scale_set_color(prf, ss->sgx->orig_cursor_color);
- color_cursor(ss->sgx->orig_cursor_color);
+ scale_set_color(prf, ss->orig_cursor_color);
+ color_cursor(ss->orig_cursor_color);
}
@@ -886,7 +663,7 @@ static void clear_cursor_color(prefs_info *prf)
/* ---------------- data-color ---------------- */
static color_t saved_data_color;
-static void save_data_color(prefs_info *prf, FILE *ignore) {saved_data_color = ss->sgx->data_color;}
+static void save_data_color(prefs_info *prf, FILE *ignore) {saved_data_color = ss->data_color;}
static void data_color_func(prefs_info *prf, float r, float g, float b) {set_data_color(rgb_to_color(r, g, b));}
@@ -899,8 +676,8 @@ static void revert_data_color(prefs_info *prf)
static void clear_data_color(prefs_info *prf)
{
- scale_set_color(prf, ss->sgx->orig_data_color);
- set_data_color(ss->sgx->orig_data_color);
+ scale_set_color(prf, ss->orig_data_color);
+ set_data_color(ss->orig_data_color);
}
@@ -908,7 +685,7 @@ static void clear_data_color(prefs_info *prf)
/* ---------------- graph-color ---------------- */
static color_t saved_graph_color;
-static void save_graph_color(prefs_info *prf, FILE *ignore) {saved_graph_color = ss->sgx->graph_color;}
+static void save_graph_color(prefs_info *prf, FILE *ignore) {saved_graph_color = ss->graph_color;}
static void graph_color_func(prefs_info *prf, float r, float g, float b) {set_graph_color(rgb_to_color(r, g, b));}
@@ -921,8 +698,8 @@ static void revert_graph_color(prefs_info *prf)
static void clear_graph_color(prefs_info *prf)
{
- scale_set_color(prf, ss->sgx->orig_graph_color);
- set_graph_color(ss->sgx->orig_graph_color);
+ scale_set_color(prf, ss->orig_graph_color);
+ set_graph_color(ss->orig_graph_color);
}
@@ -930,7 +707,7 @@ static void clear_graph_color(prefs_info *prf)
/* ---------------- selected-data-color ---------------- */
static color_t saved_selected_data_color;
-static void save_selected_data_color(prefs_info *prf, FILE *ignore) {saved_selected_data_color = ss->sgx->selected_data_color;}
+static void save_selected_data_color(prefs_info *prf, FILE *ignore) {saved_selected_data_color = ss->selected_data_color;}
static void selected_data_color_func(prefs_info *prf, float r, float g, float b) {set_selected_data_color(rgb_to_color(r, g, b));}
@@ -943,8 +720,8 @@ static void revert_selected_data_color(prefs_info *prf)
static void clear_selected_data_color(prefs_info *prf)
{
- scale_set_color(prf, ss->sgx->orig_selected_data_color);
- set_selected_data_color(ss->sgx->orig_selected_data_color);
+ scale_set_color(prf, ss->orig_selected_data_color);
+ set_selected_data_color(ss->orig_selected_data_color);
}
@@ -952,7 +729,7 @@ static void clear_selected_data_color(prefs_info *prf)
/* ---------------- selected-graph-color ---------------- */
static color_t saved_selected_graph_color;
-static void save_selected_graph_color(prefs_info *prf, FILE *ignore) {saved_selected_graph_color = ss->sgx->selected_graph_color;}
+static void save_selected_graph_color(prefs_info *prf, FILE *ignore) {saved_selected_graph_color = ss->selected_graph_color;}
static void selected_graph_color_func(prefs_info *prf, float r, float g, float b) {set_selected_graph_color(rgb_to_color(r, g, b));}
@@ -965,8 +742,8 @@ static void revert_selected_graph_color(prefs_info *prf)
static void clear_selected_graph_color(prefs_info *prf)
{
- scale_set_color(prf, ss->sgx->orig_selected_graph_color);
- set_selected_graph_color(ss->sgx->orig_selected_graph_color);
+ scale_set_color(prf, ss->orig_selected_graph_color);
+ set_selected_graph_color(ss->orig_selected_graph_color);
}
@@ -981,7 +758,7 @@ static void set_selection_color(color_t color)
static color_t saved_selection_color;
-static void save_selection_color(prefs_info *prf, FILE *ignore) {saved_selection_color = ss->sgx->selection_color;}
+static void save_selection_color(prefs_info *prf, FILE *ignore) {saved_selection_color = ss->selection_color;}
static void selection_color_func(prefs_info *prf, float r, float g, float b) {set_selection_color(rgb_to_color(r, g, b));}
@@ -994,8 +771,8 @@ static void revert_selection_color(prefs_info *prf)
static void clear_selection_color(prefs_info *prf)
{
- scale_set_color(prf, ss->sgx->orig_selection_color);
- set_selection_color(ss->sgx->orig_selection_color);
+ scale_set_color(prf, ss->orig_selection_color);
+ set_selection_color(ss->orig_selection_color);
}
@@ -1003,7 +780,7 @@ static void clear_selection_color(prefs_info *prf)
/* ---------------- mark-color ---------------- */
static color_t saved_mark_color;
-static void save_mark_color(prefs_info *prf, FILE *ignore) {saved_mark_color = ss->sgx->mark_color;}
+static void save_mark_color(prefs_info *prf, FILE *ignore) {saved_mark_color = ss->mark_color;}
static void mark_color_func(prefs_info *prf, float r, float g, float b) {color_marks(rgb_to_color(r, g, b));}
@@ -1016,8 +793,8 @@ static void revert_mark_color(prefs_info *prf)
static void clear_mark_color(prefs_info *prf)
{
- scale_set_color(prf, ss->sgx->orig_mark_color);
- color_marks(ss->sgx->orig_mark_color);
+ scale_set_color(prf, ss->orig_mark_color);
+ color_marks(ss->orig_mark_color);
}
@@ -1025,7 +802,7 @@ static void clear_mark_color(prefs_info *prf)
/* ---------------- mix-color (waveform) ---------------- */
static color_t saved_mix_color;
-static void save_mix_color(prefs_info *prf, FILE *ignore) {saved_mix_color = ss->sgx->mix_color;}
+static void save_mix_color(prefs_info *prf, FILE *ignore) {saved_mix_color = ss->mix_color;}
static void mix_color_func(prefs_info *prf, float r, float g, float b) {color_mixes(rgb_to_color(r, g, b));}
@@ -1038,8 +815,8 @@ static void revert_mix_color(prefs_info *prf)
static void clear_mix_color(prefs_info *prf)
{
- scale_set_color(prf, ss->sgx->orig_mix_color);
- color_mixes(ss->sgx->orig_mix_color);
+ scale_set_color(prf, ss->orig_mix_color);
+ color_mixes(ss->orig_mix_color);
}
@@ -1047,7 +824,7 @@ static void clear_mix_color(prefs_info *prf)
/* ---------------- listener-color ---------------- */
static color_t saved_listener_color;
-static void save_listener_color(prefs_info *prf, FILE *ignore) {saved_listener_color = ss->sgx->listener_color;}
+static void save_listener_color(prefs_info *prf, FILE *ignore) {saved_listener_color = ss->listener_color;}
static void listener_color_func(prefs_info *prf, float r, float g, float b) {color_listener(rgb_to_color(r, g, b));}
@@ -1060,8 +837,8 @@ static void revert_listener_color(prefs_info *prf)
static void clear_listener_color(prefs_info *prf)
{
- scale_set_color(prf, ss->sgx->orig_listener_color);
- color_listener(ss->sgx->orig_listener_color);
+ scale_set_color(prf, ss->orig_listener_color);
+ color_listener(ss->orig_listener_color);
}
@@ -1069,7 +846,7 @@ static void clear_listener_color(prefs_info *prf)
/* ---------------- listener-text-color ---------------- */
static color_t saved_listener_text_color;
-static void save_listener_text_color(prefs_info *prf, FILE *ignore) {saved_listener_text_color = ss->sgx->listener_text_color;}
+static void save_listener_text_color(prefs_info *prf, FILE *ignore) {saved_listener_text_color = ss->listener_text_color;}
static void listener_text_color_func(prefs_info *prf, float r, float g, float b) {color_listener_text(rgb_to_color(r, g, b));}
@@ -1082,8 +859,8 @@ static void revert_listener_text_color(prefs_info *prf)
static void clear_listener_text_color(prefs_info *prf)
{
- scale_set_color(prf, ss->sgx->orig_listener_text_color);
- color_listener_text(ss->sgx->orig_listener_text_color);
+ scale_set_color(prf, ss->orig_listener_text_color);
+ color_listener_text(ss->orig_listener_text_color);
}
@@ -1537,6 +1314,11 @@ static void ladspa_dir_text(prefs_info *prf)
}
else set_ladspa_dir(mus_strdup(DEFAULT_LADSPA_DIR));
}
+
+static const char *help_ladspa_dir(prefs_info *prf)
+{
+ return("This sets the location of the ladspa libraries");
+}
#endif
@@ -1685,8 +1467,8 @@ static void reflect_transform_peaks(prefs_info *prf)
static void revert_transform_peaks(prefs_info *prf)
{
- in_set_show_transform_peaks(rts_show_transform_peaks);
- in_set_max_transform_peaks(rts_max_transform_peaks);
+ set_show_transform_peaks(rts_show_transform_peaks);
+ set_max_transform_peaks(rts_max_transform_peaks);
}
@@ -1699,7 +1481,7 @@ static void save_transform_peaks(prefs_info *prf, FILE *ignore)
static void transform_peaks_toggle(prefs_info *prf)
{
- in_set_show_transform_peaks(GET_TOGGLE(prf->toggle));
+ set_show_transform_peaks(GET_TOGGLE(prf->toggle));
}
@@ -1716,7 +1498,7 @@ static void max_peaks_text(prefs_info *prf)
redirect_errors_to(NULL, NULL);
if (!(prf->got_error))
- in_set_max_transform_peaks(value);
+ set_max_transform_peaks(value);
free_TEXT(str);
}
}
@@ -1737,8 +1519,8 @@ static void reflect_mix_waveforms(prefs_info *prf)
static void revert_mix_waveforms(prefs_info *prf)
{
- in_set_show_mix_waveforms(rts_show_mix_waveforms);
- in_set_mix_waveform_height(rts_mix_waveform_height);
+ set_show_mix_waveforms(rts_show_mix_waveforms);
+ set_mix_waveform_height(rts_mix_waveform_height);
}
@@ -1751,7 +1533,7 @@ static void save_mix_waveforms(prefs_info *prf, FILE *ignore)
static void show_mix_waveforms_toggle(prefs_info *prf)
{
- in_set_show_mix_waveforms(GET_TOGGLE(prf->toggle));
+ set_show_mix_waveforms(GET_TOGGLE(prf->toggle));
}
@@ -1768,7 +1550,7 @@ static void mix_waveform_height_text(prefs_info *prf)
redirect_errors_to(NULL, NULL);
if (!(prf->got_error))
- in_set_mix_waveform_height(value);
+ set_mix_waveform_height(value);
free_TEXT(str);
}
}
@@ -1958,9 +1740,9 @@ static void reflect_fft_window_beta(prefs_info *prf)
}
-static void revert_fft_window_beta(prefs_info *prf) {in_set_fft_window_beta(rts_fft_window_beta);}
+static void revert_fft_window_beta(prefs_info *prf) {set_fft_window_beta(rts_fft_window_beta);}
static void save_fft_window_beta(prefs_info *prf, FILE *ignore) {rts_fft_window_beta = fft_window_beta(ss);}
-static void fft_window_beta_scale_callback(prefs_info *prf) {in_set_fft_window_beta(GET_SCALE() * prf->scale_max);}
+static void fft_window_beta_scale_callback(prefs_info *prf) {set_fft_window_beta(GET_SCALE() * prf->scale_max);}
static void fft_window_beta_text_callback(prefs_info *prf)
@@ -1977,7 +1759,7 @@ static void fft_window_beta_text_callback(prefs_info *prf)
if ((!(prf->got_error)) && (value <= prf->scale_max))
{
- in_set_fft_window_beta(value);
+ set_fft_window_beta(value);
SET_SCALE(value / prf->scale_max);
}
free_TEXT(str);
@@ -1996,9 +1778,9 @@ static void reflect_grid_density(prefs_info *prf)
}
-static void revert_grid_density(prefs_info *prf) {in_set_grid_density(rts_grid_density);}
+static void revert_grid_density(prefs_info *prf) {set_grid_density(rts_grid_density);}
static void save_grid_density(prefs_info *prf, FILE *ignore) {rts_grid_density = grid_density(ss);}
-static void grid_density_scale_callback(prefs_info *prf) {in_set_grid_density(GET_SCALE() * prf->scale_max);}
+static void grid_density_scale_callback(prefs_info *prf) {set_grid_density(GET_SCALE() * prf->scale_max);}
static void grid_density_text_callback(prefs_info *prf)
@@ -2015,7 +1797,7 @@ static void grid_density_text_callback(prefs_info *prf)
if ((!(prf->got_error)) && (value <= prf->scale_max))
{
- in_set_grid_density(value);
+ set_grid_density(value);
SET_SCALE(value / prf->scale_max);
}
free_TEXT(str);
@@ -2024,92 +1806,46 @@ static void grid_density_text_callback(prefs_info *prf)
-/* ---------------- sync choice ---------------- */
-
-#define SYNC_WITHIN_EACH_SOUND 2
-#define SYNC_ACROSS_ALL_SOUNDS 1
-#define SYNC_DISABLED 0
-#define SYNC_UNSET -1
-
-static int prefs_sync_choice = SYNC_UNSET, rts_sync_choice = 0;
-
-static int sync_choice(void)
-{
- return(XEN_TO_C_INT_OR_ELSE(prefs_variable_get("global-sync-choice"),
- SYNC_DISABLED));
-}
-
-
-static void set_sync_choice(int val, const char *load)
-{
- if ((load) &&
- (!XEN_DEFINED_P("global-sync-choice")))
- load_file_with_path_and_extension(load);
- if (XEN_DEFINED_P("global-sync-choice"))
- {
- prefs_variable_set("global-sync-choice",
- C_TO_XEN_INT(val));
- if ((load) &&
- (val != SYNC_DISABLED))
- prefs_function_call_1("set-global-sync", C_TO_XEN_INT(val));
- }
-}
-
-
-static void revert_sync_choice(prefs_info *prf) {set_sync_choice(rts_sync_choice, NULL);}
-static void clear_sync_choice(prefs_info *prf) {set_sync_choice(SYNC_DISABLED, NULL);}
-
-
-static void help_sync_choice(prefs_info *prf)
-{
- snd_help(prf->var_name,
- "Many operations can operate on all channels at once, or only on the currently selected \
-channel. If either of these buttons is selected, such operations operate either on all channels \
-within each sound (but not across sounds), or on all current channels at once. The default is \
-to operate only on the selected channel (neither button selected).",
- WITH_WORD_WRAP);
-}
+/* ---------------- sync style ---------------- */
+static sync_style_t rts_sync_style = DEFAULT_SYNC_STYLE;
+static void revert_sync_style(prefs_info *prf) {set_sync_style(rts_sync_style);}
+static void clear_sync_style(prefs_info *prf) {set_sync_style(DEFAULT_SYNC_STYLE);}
+static void save_sync_style(prefs_info *prf, FILE *ignore) {rts_sync_style = sync_style(ss);}
-static void reflect_sync_choice(prefs_info *prf)
+static const char *help_sync_style(prefs_info *prf)
{
- prefs_sync_choice = sync_choice();
- SET_TOGGLE(prf->toggle, prefs_sync_choice == SYNC_WITHIN_EACH_SOUND);
- SET_TOGGLE(prf->toggle2, prefs_sync_choice == SYNC_ACROSS_ALL_SOUNDS);
+ return("\
+ Many operations can operate either on all channels at once,\n\
+ or only on the currently selected channel.");
}
-static void save_sync_choice(prefs_info *prf, FILE *fd)
+static void reflect_sync_style(prefs_info *prf)
{
- if (prefs_sync_choice != SYNC_UNSET)
- {
- rts_sync_choice = prefs_sync_choice;
- if (prefs_sync_choice != SYNC_DISABLED)
- prefs_variable_save(fd, "global-sync-choice", "extensions", C_TO_XEN_INT(prefs_sync_choice));
- }
+ rts_sync_style = sync_style(ss);
+ SET_TOGGLE(prf->toggle, rts_sync_style == SYNC_BY_SOUND);
+ SET_TOGGLE(prf->toggle2, rts_sync_style == SYNC_ALL);
}
static void sync1_choice(prefs_info *prf)
{
if (GET_TOGGLE(prf->toggle))
- prefs_sync_choice = SYNC_WITHIN_EACH_SOUND;
- else prefs_sync_choice = SYNC_DISABLED;
+ rts_sync_style = SYNC_BY_SOUND;
+ else rts_sync_style = SYNC_NONE;
SET_TOGGLE(prf->toggle2, false);
- /* if user has not loaded extensions, but sets one of the toggle buttons, load extensions and
- * set the global-sync-choice variable
- */
- set_sync_choice(prefs_sync_choice, "extensions");
+ set_sync_style(rts_sync_style);
}
static void sync2_choice(prefs_info *prf)
{
if (GET_TOGGLE(prf->toggle2))
- prefs_sync_choice = SYNC_ACROSS_ALL_SOUNDS;
- else prefs_sync_choice = SYNC_DISABLED;
+ rts_sync_style = SYNC_ALL;
+ else rts_sync_style = SYNC_NONE;
SET_TOGGLE(prf->toggle, false);
- set_sync_choice(prefs_sync_choice, "extensions");
+ set_sync_style(rts_sync_style);
}
@@ -2389,108 +2125,89 @@ static void startup_size_text(prefs_info *prf)
}
-/* ---------------- check-for-unsaved-edits ---------------- */
-
-static bool rts_unsaved_edits = false, prefs_unsaved_edits = false;
-
-static bool unsaved_edits(void)
-{
- return(XEN_TO_C_BOOLEAN(prefs_variable_get("checking-for-unsaved-edits")));
-}
+/* ---------------- ask-about-unsaved-edits ---------------- */
+static bool rts_unsaved_edits = DEFAULT_ASK_ABOUT_UNSAVED_EDITS;
+static void revert_unsaved_edits(prefs_info *prf) {set_ask_about_unsaved_edits(rts_unsaved_edits);}
+static void clear_unsaved_edits(prefs_info *prf) {set_ask_about_unsaved_edits(DEFAULT_ASK_ABOUT_UNSAVED_EDITS);}
+static void save_unsaved_edits(prefs_info *prf, FILE *fd) {rts_unsaved_edits = ask_about_unsaved_edits(ss);}
+static void reflect_unsaved_edits(prefs_info *prf) {SET_TOGGLE(prf->toggle, ask_about_unsaved_edits(ss));}
+static void unsaved_edits_toggle(prefs_info *prf) {set_ask_about_unsaved_edits(GET_TOGGLE(prf->toggle));}
-static void set_unsaved_edits(bool val, const char *load)
+static const char *help_unsaved_edits(prefs_info *prf)
{
- prefs_unsaved_edits = val;
- if ((load) &&
- (!XEN_DEFINED_P("checking-for-unsaved-edits")))
- load_file_with_path_and_extension(load);
- if (XEN_DEFINED_P("checking-for-unsaved-edits"))
- prefs_function_call_1("check-for-unsaved-edits", C_TO_XEN_BOOLEAN(val));
+ return("\
+ This option looks for unsaved edits when you \n\
+ close a file, or exit Snd. If it finds any, it \n\
+ asks you whether you want to save them.");
}
-static void revert_unsaved_edits(prefs_info *prf) {set_unsaved_edits(rts_unsaved_edits, NULL);}
-static void clear_unsaved_edits(prefs_info *prf) {set_unsaved_edits(false, NULL);}
-
-static void save_unsaved_edits(prefs_info *prf, FILE *fd)
-{
- rts_unsaved_edits = GET_TOGGLE(prf->toggle);
- if (rts_unsaved_edits)
- prefs_function_save_1(fd, "check-for-unsaved-edits", "extensions", C_TO_XEN_BOOLEAN(prefs_unsaved_edits));
-}
+/* ---------------- with-inset-graph ---------------- */
+static bool rts_with_inset_graph = DEFAULT_WITH_INSET_GRAPH;
+static void revert_with_inset_graph(prefs_info *prf) {set_with_inset_graph(rts_with_inset_graph);}
+static void clear_with_inset_graph(prefs_info *prf) {set_with_inset_graph(DEFAULT_WITH_INSET_GRAPH);}
+static void reflect_with_inset_graph(prefs_info *prf) {SET_TOGGLE(prf->toggle, with_inset_graph(ss));}
-static void reflect_unsaved_edits(prefs_info *prf)
+static void with_inset_graph_toggle(prefs_info *prf)
{
- prefs_unsaved_edits = unsaved_edits();
- SET_TOGGLE(prf->toggle, prefs_unsaved_edits);
+ set_with_inset_graph(GET_TOGGLE(prf->toggle));
+ for_each_chan(update_graph);
}
-
-static void help_unsaved_edits(prefs_info *prf)
+static void save_with_inset_graph(prefs_info *prf, FILE *fd)
{
- snd_help(prf->var_name,
- "This option looks for unsaved edits when you close a file, or exit Snd. If it \
-finds any, it asks you whether you want to save them.",
- WITH_WORD_WRAP);
+ rts_with_inset_graph = GET_TOGGLE(prf->toggle);
+ set_with_inset_graph(rts_with_inset_graph);
}
-
-static void unsaved_edits_toggle(prefs_info *prf)
+static const char *help_inset_graph(prefs_info *prf)
{
- set_unsaved_edits(GET_TOGGLE(prf->toggle), "extensions");
+ return("\
+ This option displays a small graph of the entire sound \n\
+ in the upper right corner of the screen with an indication \n\
+ of where the current window is. If you click somewhere in the \n\
+little graph, the cursor and main window are moved to that spot.");
}
-/* ---------------- with-inset-graph ---------------- */
-
-static bool rts_with_inset_graph = false, prefs_with_inset_graph = false;
-
-static void revert_with_inset_graph(prefs_info *prf) {set_with_inset_graph(rts_with_inset_graph);}
-static void clear_with_inset_graph(prefs_info *prf) {set_with_inset_graph(false);}
+/* ---------------- with-smpte-label ---------------- */
+static bool rts_with_smpte_label = DEFAULT_WITH_SMPTE_LABEL;
+static void revert_smpte(prefs_info *prf) {set_with_smpte_label(rts_with_smpte_label);}
+static void clear_smpte(prefs_info *prf) {set_with_smpte_label(DEFAULT_WITH_SMPTE_LABEL);}
+static void reflect_smpte(prefs_info *prf) {SET_TOGGLE(prf->toggle, with_smpte_label(ss));}
-static void save_with_inset_graph(prefs_info *prf, FILE *fd)
+static void smpte_toggle(prefs_info *prf)
{
- rts_with_inset_graph = GET_TOGGLE(prf->toggle);
- set_with_inset_graph(rts_with_inset_graph);
+ set_with_smpte_label(GET_TOGGLE(prf->toggle));
+ for_each_chan(update_graph);
}
-
-static void help_inset_graph(prefs_info *prf)
+static void save_smpte(prefs_info *prf, FILE *fd)
{
- snd_help(prf->var_name,
- "This option displays a small graph of the entire sound in the upper right corner \
-of the screen with an indication of where the current window is. If you click somewhere in the \
-little graph, the cursor and main window are moved to that spot.",
- WITH_WORD_WRAP);
+ rts_with_smpte_label = GET_TOGGLE(prf->toggle);
+ set_with_smpte_label(rts_with_smpte_label);
}
-
-static void with_inset_graph_toggle(prefs_info *prf)
+static const char *help_smpte(prefs_info *prf)
{
- set_with_inset_graph(GET_TOGGLE(prf->toggle));
-}
-
-
-static void reflect_with_inset_graph(prefs_info *prf)
-{
- prefs_with_inset_graph = with_inset_graph(ss);
- SET_TOGGLE(prf->toggle, prefs_with_inset_graph);
+ return(" This option displays the SMPTE data in the time domain graph. ");
}
/* ---------------- with-pointer-focus ---------------- */
-static bool rts_with_pointer_focus = false, prefs_with_pointer_focus = false;
+static bool rts_with_pointer_focus = DEFAULT_WITH_POINTER_FOCUS;
static void revert_with_pointer_focus(prefs_info *prf) {set_with_pointer_focus(rts_with_pointer_focus);}
-static void clear_with_pointer_focus(prefs_info *prf) {set_with_pointer_focus(false);}
-
+static void clear_with_pointer_focus(prefs_info *prf) {set_with_pointer_focus(DEFAULT_WITH_POINTER_FOCUS);}
+static void with_pointer_focus_toggle(prefs_info *prf) {set_with_pointer_focus(GET_TOGGLE(prf->toggle));}
+static void reflect_with_pointer_focus(prefs_info *prf) {SET_TOGGLE(prf->toggle, with_pointer_focus(ss));}
static void save_with_pointer_focus(prefs_info *prf, FILE *fd)
{
@@ -2499,94 +2216,12 @@ static void save_with_pointer_focus(prefs_info *prf, FILE *fd)
}
-static void help_pointer_focus(prefs_info *prf)
-{
- snd_help(prf->var_name,
- "If this option is set, when the mouse moves over a text or graph widget, the widget is activated.",
- WITH_WORD_WRAP);
-}
-
-
-static void with_pointer_focus_toggle(prefs_info *prf)
-{
- set_with_pointer_focus(GET_TOGGLE(prf->toggle));
-}
-
-
-static void reflect_with_pointer_focus(prefs_info *prf)
-{
- prefs_with_pointer_focus = with_pointer_focus(ss);
- SET_TOGGLE(prf->toggle, prefs_with_pointer_focus);
-}
-
-
-
-#if HAVE_SCHEME
-/* ---------------- optimization ---------------- */
-
-static int rts_optimization = DEFAULT_OPTIMIZATION;
-
-#define MAX_OPTIMIZATION 6
-#define MIN_OPTIMIZATION 0
-
-static void revert_optimization(prefs_info *prf) {set_optimization(rts_optimization);}
-static void save_optimization(prefs_info *prf, FILE *ignore) {rts_optimization = optimization(ss);}
-
-
-static void reflect_optimization(prefs_info *prf)
-{
- int_to_textfield(prf->text, optimization(ss));
- SET_SENSITIVE(prf->arrow_up, optimization(ss) < MAX_OPTIMIZATION);
- SET_SENSITIVE(prf->arrow_down, optimization(ss) > MIN_OPTIMIZATION);
-}
-
-
-static void optimization_up(prefs_info *prf)
-{
- int val;
- val = optimization(ss) + 1;
- if (val >= MAX_OPTIMIZATION) SET_SENSITIVE(prf->arrow_up, false);
- if (val > MIN_OPTIMIZATION) SET_SENSITIVE(prf->arrow_down, true);
- set_optimization(val);
- int_to_textfield(prf->text, optimization(ss));
-}
-
-
-static void optimization_down(prefs_info *prf)
+static const char *help_pointer_focus(prefs_info *prf)
{
- int val;
- val = optimization(ss) - 1;
- if (val <= MIN_OPTIMIZATION) SET_SENSITIVE(prf->arrow_down, false);
- if (val < MAX_OPTIMIZATION) SET_SENSITIVE(prf->arrow_up, true);
- set_optimization(val);
- int_to_textfield(prf->text, optimization(ss));
-}
-
-
-static void optimization_from_text(prefs_info *prf)
-{
- int opt;
- char *str;
- str = GET_TEXT(prf->text);
- if ((str) && (*str))
- {
- prf->got_error = false;
-
- redirect_errors_to(redirect_post_prefs_error, (void *)prf);
- opt = string_to_int(str, MIN_OPTIMIZATION, "optimization");
- redirect_errors_to(NULL, NULL);
-
- free_TEXT(str);
- if (!(prf->got_error))
- {
- if (opt <= MAX_OPTIMIZATION)
- set_optimization(opt);
- else va_post_prefs_error("%s > %d?", prf, str, MAX_OPTIMIZATION);
- }
- else prf->got_error = false;
- }
+ return("\
+ If this option is set, when the mouse moves over a \n\
+ text or graph widget, the widget is activated. ");
}
-#endif
@@ -2598,7 +2233,7 @@ static int rts_cursor_size = DEFAULT_CURSOR_SIZE;
#define MIN_CURSOR_SIZE 1
#define MAX_CURSOR_SIZE 500
-static void revert_cursor_size(prefs_info *prf) {in_set_cursor_size(rts_cursor_size);}
+static void revert_cursor_size(prefs_info *prf) {set_cursor_size(rts_cursor_size);}
static void save_cursor_size(prefs_info *prf, FILE *ignore) {rts_cursor_size = cursor_size(ss);}
@@ -2616,7 +2251,7 @@ static void cursor_size_up(prefs_info *prf)
size = cursor_size(ss) + 1;
if (size >= MAX_CURSOR_SIZE) SET_SENSITIVE(prf->arrow_up, false);
if (size > MIN_CURSOR_SIZE) SET_SENSITIVE(prf->arrow_down, true);
- in_set_cursor_size(size);
+ set_cursor_size(size);
int_to_textfield(prf->text, cursor_size(ss));
}
@@ -2627,7 +2262,7 @@ static void cursor_size_down(prefs_info *prf)
size = cursor_size(ss) - 1;
if (size <= MIN_CURSOR_SIZE) SET_SENSITIVE(prf->arrow_down, false);
if (size < MAX_CURSOR_SIZE) SET_SENSITIVE(prf->arrow_up, true);
- in_set_cursor_size(size);
+ set_cursor_size(size);
int_to_textfield(prf->text, cursor_size(ss));
}
@@ -2651,7 +2286,7 @@ static void cursor_size_from_text(prefs_info *prf)
if (size >= MIN_CURSOR_SIZE)
{
if (size <= MAX_CURSOR_SIZE)
- in_set_cursor_size(size);
+ set_cursor_size(size);
else va_post_prefs_error("%s > %d?", prf, str, MAX_CURSOR_SIZE);
}
else va_post_prefs_error("%s < %d?", prf, str, MIN_CURSOR_SIZE);
@@ -2670,7 +2305,7 @@ static int rts_dot_size = DEFAULT_DOT_SIZE;
#define MIN_DOT_SIZE 0
#define MAX_DOT_SIZE 100
-static void revert_dot_size(prefs_info *prf) {in_set_dot_size(rts_dot_size);}
+static void revert_dot_size(prefs_info *prf) {set_dot_size(rts_dot_size);}
static void save_dot_size(prefs_info *prf, FILE *ignore) {rts_dot_size = dot_size(ss);}
@@ -2688,7 +2323,7 @@ static void dot_size_up(prefs_info *prf)
size = dot_size(ss) + 1;
if (size >= MAX_DOT_SIZE) SET_SENSITIVE(prf->arrow_up, false);
if (size > MIN_DOT_SIZE) SET_SENSITIVE(prf->arrow_down, true);
- in_set_dot_size(size);
+ set_dot_size(size);
int_to_textfield(prf->text, dot_size(ss));
}
@@ -2699,7 +2334,7 @@ static void dot_size_down(prefs_info *prf)
size = dot_size(ss) - 1;
if (size <= MIN_DOT_SIZE) SET_SENSITIVE(prf->arrow_down, false);
if (size < MAX_DOT_SIZE) SET_SENSITIVE(prf->arrow_up, true);
- in_set_dot_size(size);
+ set_dot_size(size);
int_to_textfield(prf->text, dot_size(ss));
}
@@ -2723,7 +2358,7 @@ static void dot_size_from_text(prefs_info *prf)
if (size >= MIN_DOT_SIZE)
{
if (size <= MAX_DOT_SIZE)
- in_set_dot_size(size);
+ set_dot_size(size);
else va_post_prefs_error("%s > %d?", prf, str, MAX_DOT_SIZE);
}
else va_post_prefs_error("%s < %d?", prf, str, MIN_DOT_SIZE);
@@ -2741,7 +2376,7 @@ static mus_long_t rts_fft_size = DEFAULT_TRANSFORM_SIZE;
#define MAX_TRANSFORM_SIZE 1073741824
#define MIN_TRANSFORM_SIZE 2
-static void revert_fft_size(prefs_info *prf) {in_set_transform_size(rts_fft_size);}
+static void revert_fft_size(prefs_info *prf) {set_transform_size(rts_fft_size);}
static void save_fft_size(prefs_info *prf, FILE *ignore) {rts_fft_size = transform_size(ss);}
@@ -2759,7 +2394,7 @@ static void fft_size_up(prefs_info *prf)
size = transform_size(ss) * 2;
if (size >= MAX_TRANSFORM_SIZE) SET_SENSITIVE(prf->arrow_up, false);
if (size > MIN_TRANSFORM_SIZE) SET_SENSITIVE(prf->arrow_down, true);
- in_set_transform_size(size);
+ set_transform_size(size);
mus_long_t_to_textfield(prf->text, transform_size(ss));
}
@@ -2770,7 +2405,7 @@ static void fft_size_down(prefs_info *prf)
size = transform_size(ss) / 2;
if (size <= MIN_TRANSFORM_SIZE) SET_SENSITIVE(prf->arrow_down, false);
if (size < MAX_TRANSFORM_SIZE) SET_SENSITIVE(prf->arrow_up, true);
- in_set_transform_size(size);
+ set_transform_size(size);
mus_long_t_to_textfield(prf->text, transform_size(ss));
}
@@ -2794,7 +2429,7 @@ static void fft_size_from_text(prefs_info *prf)
if (POWER_OF_2_P(size))
{
if (size <= MAX_TRANSFORM_SIZE)
- in_set_transform_size(size);
+ set_transform_size(size);
else va_post_prefs_error("%s > %d?", prf, str, MAX_TRANSFORM_SIZE);
}
else post_prefs_error("size must be a power of 2", prf);
@@ -2813,7 +2448,7 @@ static int rts_cursor_location_offset = DEFAULT_CURSOR_LOCATION_OFFSET;
static void revert_with_tracking_cursor(prefs_info *prf)
{
- in_set_with_tracking_cursor(ss, rts_with_tracking_cursor);
+ set_with_tracking_cursor(ss, rts_with_tracking_cursor);
set_cursor_update_interval(rts_cursor_update_interval);
set_cursor_location_offset(rts_cursor_location_offset);
}
@@ -2837,7 +2472,7 @@ static void reflect_with_tracking_cursor(prefs_info *prf)
static void with_tracking_cursor_toggle(prefs_info *prf)
{
- in_set_with_tracking_cursor(ss, (GET_TOGGLE(prf->toggle)) ? ALWAYS_TRACK : DONT_TRACK);
+ set_with_tracking_cursor(ss, (GET_TOGGLE(prf->toggle)) ? ALWAYS_TRACK : TRACK_IF_ASKED);
}
@@ -2878,18 +2513,18 @@ static void cursor_location_text(prefs_info *prf)
static channel_style_t rts_channel_style = DEFAULT_CHANNEL_STYLE;
-static const char *channel_styles[NUM_CHANNEL_STYLES] = {"separate", "combined", "superimposed"};
+static const char *channel_styles[NUM_CHANNEL_STYLES] = {"separate ", "combined ", "superimposed"};
static void reflect_channel_style(prefs_info *prf) {set_radio_button(prf, (int)channel_style(ss));}
-static void revert_channel_style(prefs_info *prf) {in_set_channel_style(rts_channel_style);}
+static void revert_channel_style(prefs_info *prf) {set_channel_style(rts_channel_style);}
static void save_channel_style(prefs_info *prf, FILE *ignore) {rts_channel_style = channel_style(ss);}
static void channel_style_choice(prefs_info *prf)
{
if (GET_TOGGLE(prf->radio_button))
- in_set_channel_style((channel_style_t)which_radio_button(prf));
+ set_channel_style((channel_style_t)which_radio_button(prf));
}
@@ -2898,18 +2533,18 @@ static void channel_style_choice(prefs_info *prf)
static cursor_style_t rts_cursor_style = DEFAULT_CURSOR_STYLE;
#define NUM_CURSOR_STYLES 2
-static const char *cursor_styles[NUM_CURSOR_STYLES] = {"cross", "line"};
+static const char *cursor_styles[NUM_CURSOR_STYLES] = {"cross ", "line"};
static void reflect_cursor_style(prefs_info *prf) {set_radio_button(prf, (int)cursor_style(ss));}
-static void revert_cursor_style(prefs_info *prf) {in_set_cursor_style(rts_cursor_style);}
+static void revert_cursor_style(prefs_info *prf) {set_cursor_style(rts_cursor_style);}
static void save_cursor_style(prefs_info *prf, FILE *ignore) {rts_cursor_style = cursor_style(ss);}
static void cursor_style_choice(prefs_info *prf)
{
if (GET_TOGGLE(prf->radio_button))
- in_set_cursor_style((cursor_style_t)which_radio_button(prf));
+ set_cursor_style((cursor_style_t)which_radio_button(prf));
}
@@ -2935,18 +2570,18 @@ static void tracking_cursor_style_choice(prefs_info *prf)
static graph_type_t rts_transform_graph_type = DEFAULT_TRANSFORM_GRAPH_TYPE;
#define NUM_TRANSFORM_GRAPH_TYPES 3
-static const char *transform_graph_types[NUM_TRANSFORM_GRAPH_TYPES] = {"normal", "sonogram", "spectrogram"};
+static const char *transform_graph_types[NUM_TRANSFORM_GRAPH_TYPES] = {"normal ", "sonogram ", "spectrogram"};
static void reflect_transform_graph_type(prefs_info *prf) {set_radio_button(prf, (int)transform_graph_type(ss));}
-static void revert_transform_graph_type(prefs_info *prf) {in_set_transform_graph_type(rts_transform_graph_type);}
+static void revert_transform_graph_type(prefs_info *prf) {set_transform_graph_type(rts_transform_graph_type);}
static void save_transform_graph_type(prefs_info *prf, FILE *ignore) {rts_transform_graph_type = transform_graph_type(ss);}
static void transform_graph_type_choice(prefs_info *prf)
{
if (GET_TOGGLE(prf->radio_button))
- in_set_transform_graph_type((graph_type_t)which_radio_button(prf));
+ set_transform_graph_type((graph_type_t)which_radio_button(prf));
}
@@ -2954,18 +2589,18 @@ static void transform_graph_type_choice(prefs_info *prf)
static fft_normalize_t rts_transform_normalization = DEFAULT_TRANSFORM_NORMALIZATION;
-static const char *transform_normalizations[NUM_TRANSFORM_NORMALIZATIONS] = {"none", "by channel", "by sound", "global"};
+static const char *transform_normalizations[NUM_TRANSFORM_NORMALIZATIONS] = {"none ", "by channel ", "by sound ", "global"};
static void reflect_transform_normalization(prefs_info *prf) {set_radio_button(prf, (int)transform_normalization(ss));}
-static void revert_transform_normalization(prefs_info *prf) {in_set_transform_normalization(rts_transform_normalization);}
+static void revert_transform_normalization(prefs_info *prf) {set_transform_normalization(rts_transform_normalization);}
static void save_transform_normalization(prefs_info *prf, FILE *ignore) {rts_transform_normalization = transform_normalization(ss);}
static void transform_normalization_choice(prefs_info *prf)
{
if (GET_TOGGLE(prf->radio_button))
- in_set_transform_normalization((fft_normalize_t)which_radio_button(prf));
+ set_transform_normalization((fft_normalize_t)which_radio_button(prf));
}
@@ -2973,18 +2608,18 @@ static void transform_normalization_choice(prefs_info *prf)
static graph_style_t rts_graph_style = DEFAULT_GRAPH_STYLE;
-static const char *graph_styles[NUM_GRAPH_STYLES] = {"line", "dot", "filled", "dot+line", "lollipop"};
+static const char *graph_styles[NUM_GRAPH_STYLES] = {"line ", "dot ", "filled ", "dot+line ", "lollipop"};
static void reflect_graph_style(prefs_info *prf) {set_radio_button(prf, (int)graph_style(ss));}
-static void revert_graph_style(prefs_info *prf) {in_set_graph_style(rts_graph_style);}
+static void revert_graph_style(prefs_info *prf) {set_graph_style(rts_graph_style);}
static void save_graph_style(prefs_info *prf, FILE *ignore) {rts_graph_style = graph_style(ss);}
static void graph_style_choice(prefs_info *prf)
{
if (GET_TOGGLE(prf->radio_button))
- in_set_graph_style((graph_style_t)which_radio_button(prf));
+ set_graph_style((graph_style_t)which_radio_button(prf));
}
@@ -2994,7 +2629,7 @@ static speed_style_t rts_speed_control_style = DEFAULT_SPEED_CONTROL_STYLE;
static int rts_speed_control_tones = DEFAULT_SPEED_CONTROL_TONES;
#define MIN_SPEED_CONTROL_SEMITONES 1
-static const char *speed_control_styles[NUM_SPEED_CONTROL_STYLES] = {"float", "ratio", "semitones:"};
+static const char *speed_control_styles[NUM_SPEED_CONTROL_STYLES] = {"float ", "ratio ", "semitones:"};
static void show_speed_control_semitones(prefs_info *prf)
{
@@ -3077,19 +2712,19 @@ static int rts_default_output_header_type = DEFAULT_OUTPUT_HEADER_TYPE;
static prefs_info *output_data_format_prf = NULL, *output_header_type_prf = NULL;
#define NUM_OUTPUT_CHAN_CHOICES 4
-static const char *output_chan_choices[NUM_OUTPUT_CHAN_CHOICES] = {"1", "2", "4", "8"};
+static const char *output_chan_choices[NUM_OUTPUT_CHAN_CHOICES] = {"1 ", "2 ", "4 ", "8"};
static int output_chans[NUM_OUTPUT_CHAN_CHOICES] = {1, 2, 4, 8};
#define NUM_OUTPUT_SRATE_CHOICES 4
-static const char *output_srate_choices[NUM_OUTPUT_SRATE_CHOICES] = {"8000", "22050", "44100", "48000"};
+static const char *output_srate_choices[NUM_OUTPUT_SRATE_CHOICES] = {"8000 ", "22050 ", "44100 ", "48000"};
static int output_srates[NUM_OUTPUT_SRATE_CHOICES] = {8000, 22050, 44100, 48000};
#define NUM_OUTPUT_TYPE_CHOICES 7
-static const char *output_type_choices[NUM_OUTPUT_TYPE_CHOICES] = {"aifc", "wave", "next/sun", "rf64", "nist", "aiff", "caff"};
+static const char *output_type_choices[NUM_OUTPUT_TYPE_CHOICES] = {"aifc ", "wave ", "au ", "rf64 ", "nist ", "aiff ", "caff"};
static int output_types[NUM_OUTPUT_TYPE_CHOICES] = {MUS_AIFC, MUS_RIFF, MUS_NEXT, MUS_RF64, MUS_NIST, MUS_AIFF, MUS_CAFF};
#define NUM_OUTPUT_FORMAT_CHOICES 4
-static const char *output_format_choices[NUM_OUTPUT_FORMAT_CHOICES] = {"short", "int", "float", "double"};
+static const char *output_format_choices[NUM_OUTPUT_FORMAT_CHOICES] = {"short ", "int ", "float ", "double"};
static int output_formats[NUM_OUTPUT_FORMAT_CHOICES] = {MUS_LSHORT, MUS_LINT, MUS_LFLOAT, MUS_LDOUBLE};
@@ -3511,763 +3146,76 @@ static void raw_data_format_from_menu(prefs_info *prf, char *value)
#endif
+/* ---------------- with-toolbar ---------------- */
-/* ---------------- with-sound ---------------- */
-
-static bool rts_with_sound = false;
-static char *rts_clm_file_name = NULL;
-static mus_long_t rts_clm_file_buffer_size = 65536;
-static mus_long_t rts_clm_table_size = 512;
-
-
-static bool with_sound_is_loaded(void) {return(XEN_DEFINED_P("with-sound"));}
-static void reflect_with_sound(prefs_info *prf) {}
-static void revert_with_sound(prefs_info *prf) {SET_TOGGLE(prf->toggle, rts_with_sound);}
-static void clear_with_sound(prefs_info *prf) {SET_TOGGLE(prf->toggle, false);}
-
-
-static void with_sound_toggle(prefs_info *prf)
-{
- if ((GET_TOGGLE(prf->toggle)) &&
- (!(XEN_DEFINED_P("with-sound"))))
- load_file_with_path_and_extension("ws");
-}
-
-
-static void save_with_sound(prefs_info *prf, FILE *fd)
-{
- rts_with_sound = GET_TOGGLE(prf->toggle);
- if (rts_with_sound)
- {
-#if HAVE_SCHEME
- fprintf(fd, "(if (not (provided? 'snd-ws.scm)) (load \"ws.scm\"))\n");
- if (rts_clm_file_name)
- fprintf(fd, "(set! *clm-file-name* \"%s\")\n", rts_clm_file_name);
- if (rts_clm_file_buffer_size != 65536)
- fprintf(fd, "(set! *clm-file-buffer-size* " MUS_LD ")\n", rts_clm_file_buffer_size);
- if (rts_clm_table_size != 512)
- fprintf(fd, "(set! *clm-table-size* " MUS_LD ")\n", rts_clm_table_size);
-#endif
-
-#if HAVE_RUBY
- fprintf(fd, "require \"ws\"\n");
- if (rts_clm_file_name)
- fprintf(fd, "$clm_file_name = \"%s\"\n", rts_clm_file_name);
- if (rts_clm_file_buffer_size != 65536)
- fprintf(fd, "$clm_file_buffer_size = " MUS_LD "\n", rts_clm_file_buffer_size);
- if (rts_clm_table_size != 512)
- fprintf(fd, "$clm_table_size = " MUS_LD "\n", rts_clm_table_size);
-#endif
-
-#if HAVE_FORTH
- fprintf(fd, "require clm\n");
- if (rts_clm_file_name)
- fprintf(fd, "\"%s\" to *clm-file-name*\n", rts_clm_file_name);
- if (rts_clm_file_buffer_size != 65536)
- fprintf(fd, MUS_LD " to *clm-file-buffer-size*\n", rts_clm_file_buffer_size);
- if (rts_clm_table_size != 512)
- fprintf(fd, MUS_LD " to *clm-table-size*\n", rts_clm_table_size);
-#endif
- }
-}
-
-
-static void help_with_sound(prefs_info *prf)
-{
- snd_help(prf->var_name,
- "with-sound is the main CLM sound-producing macro. If you want to use CLM functions to create \
-new sounds, then edit them in Snd, include with-sound.",
- WITH_WORD_WRAP);
-}
-
-
-
-/* ---------------- clm file name ---------------- */
-
-#define CLM_FILE_NAME "*clm-file-name*"
-
-static void set_clm_file_name(const char *str) {prefs_variable_set(CLM_FILE_NAME, C_TO_XEN_STRING(str));}
-
-static const char *find_clm_file_name(void)
-{
- XEN val;
- val = prefs_variable_get(CLM_FILE_NAME);
- if (XEN_STRING_P(val))
- return(XEN_TO_C_STRING(val));
- return(NULL);
-}
-
-
-static void clm_file_name_text(prefs_info *prf)
-{
- char *str;
- str = GET_TEXT(prf->text);
- if ((str) && (*str))
- {
- rts_with_sound = true;
- if (rts_clm_file_name) free(rts_clm_file_name); /* save is done after we're sure with-sound is loaded */
- rts_clm_file_name = mus_strdup(str);
- set_clm_file_name(str);
- free_TEXT(str);
- }
-}
-
-
-static void reflect_clm_file_name(prefs_info *prf)
-{
- SET_TEXT(prf->text, find_clm_file_name());
-}
-
-static void clear_clm_file_name(prefs_info *prf)
-{
- prefs_variable_set(CLM_FILE_NAME, C_TO_XEN_STRING("test.snd"));
-}
-
-
-static void revert_clm_file_name(prefs_info *prf)
-{
- prefs_variable_set(CLM_FILE_NAME, C_TO_XEN_STRING((char *)((rts_clm_file_name) ? rts_clm_file_name : "test.snd")));
-}
-
-
-static void help_clm_file_name(prefs_info *prf)
-{
- snd_help(prf->var_name,
- "This option sets the default output file name used by with-sound.",
- WITH_WORD_WRAP);
-}
-
-
-static void save_clm_file_name(prefs_info *prf, FILE *ignore)
-{
- if (rts_clm_file_name) free(rts_clm_file_name);
- rts_clm_file_name = mus_strdup(find_clm_file_name());
-}
-
-
-/* ---------------- clm sizes ---------------- */
-
-#define CLM_TABLE_SIZE "*clm-table-size*"
-#define CLM_FILE_BUFFER_SIZE "*clm-file-buffer-size*"
-
-static mus_long_t find_clm_table_size(void)
-{
- return(XEN_TO_C_INT64_T_OR_ELSE(prefs_variable_get(CLM_TABLE_SIZE), 512));
-}
-
-
-static mus_long_t find_clm_file_buffer_size(void)
-{
- return(XEN_TO_C_INT64_T_OR_ELSE(prefs_variable_get(CLM_FILE_BUFFER_SIZE), 65536));
-}
-
-
-static void reflect_clm_sizes(prefs_info *prf)
-{
- rts_clm_table_size = find_clm_table_size();
- mus_long_t_to_textfield(prf->text, rts_clm_table_size);
- rts_clm_file_buffer_size = find_clm_file_buffer_size();
- mus_long_t_to_textfield(prf->rtxt, rts_clm_file_buffer_size);
-}
-
-
-static void clm_sizes_text(prefs_info *prf)
-{
- char *str;
-
- str = GET_TEXT(prf->text);
- if ((str) && (*str))
- {
- mus_long_t size = 0;
- rts_with_sound = true;
- redirect_errors_to(any_error_to_text, (void *)prf);
- size = string_to_mus_long_t(str, 1, "table size");
- redirect_errors_to(NULL, NULL);
- if (!(prf->got_error))
- rts_clm_table_size = size;
- free_TEXT(str);
- }
-
- str = GET_TEXT(prf->rtxt);
- if ((str) && (*str))
- {
- mus_long_t size = 0;
- rts_with_sound = true;
- redirect_errors_to(any_error_to_text, (void *)prf);
- size = string_to_mus_long_t(str, 1, "file buffer size");
- redirect_errors_to(NULL, NULL);
- if (!(prf->got_error))
- rts_clm_file_buffer_size = size;
- free_TEXT(str);
- }
-}
-
-
-static void help_clm_sizes(prefs_info *prf)
-{
- snd_help(prf->var_name,
- "This option sets the default clm table size and file buffer size.",
- WITH_WORD_WRAP);
-}
-
-
-static void revert_clm_sizes(prefs_info *prf)
-{
- prefs_variable_set(CLM_FILE_BUFFER_SIZE, C_TO_XEN_INT64_T(rts_clm_file_buffer_size));
- prefs_variable_set(CLM_TABLE_SIZE, C_TO_XEN_INT64_T(rts_clm_table_size));
-}
-
-
-static void clear_clm_sizes(prefs_info *prf)
-{
- prefs_variable_set(CLM_FILE_BUFFER_SIZE, C_TO_XEN_INT64_T(65536));
- prefs_variable_set(CLM_TABLE_SIZE, C_TO_XEN_INT64_T(512));
-}
-
-
-static void save_clm_sizes(prefs_info *prf, FILE *ignore)
-{
- rts_clm_file_buffer_size = find_clm_file_buffer_size();
- rts_clm_table_size = find_clm_table_size();
-}
-
-
-/* ---------------- context sensitive popup ---------------- */
-
-static bool include_context_sensitive_popup = false;
-
-static void help_context_sensitive_popup(prefs_info *prf)
-{
- snd_help(prf->var_name,
- "This option creates a context-sensitive popup menu (activated by button 3). The menu \
-displayed depends on where the mouse is at the time; there are special menus for the waveform and fft \
-portions of the graphs, the listener, the edit history pane, and the current selection.",
- WITH_WORD_WRAP);
-}
-
-
-static bool find_context_sensitive_popup(void)
-{
- return(XEN_DEFINED_P("edhist-help-edits"));
-}
-
-
-static void save_context_sensitive_popup(prefs_info *prf, FILE *fd)
-{
- include_context_sensitive_popup = GET_TOGGLE(prf->toggle);
- if (include_context_sensitive_popup)
- {
-#if HAVE_SCHEME
- fprintf(fd, "(if (provided? 'snd-motif)\n (if (not (provided? 'snd-popup.scm))\n (load \"popup.scm\"))\n (if (not (provided? 'snd-gtk-popup.scm))\n (load \"gtk-popup.scm\")))\n");
-#endif
-
-#if HAVE_RUBY
- fprintf(fd, "require \"popup\"\n");
-#endif
-
-#if HAVE_FORTH
- fprintf(fd, "require popup\n");
-#endif
- }
-}
-
-
-static void context_sensitive_popup_toggle(prefs_info *prf)
-{
- if ((GET_TOGGLE(prf->toggle)) &&
- (!(find_context_sensitive_popup())))
-#if USE_MOTIF
- load_file_with_path_and_extension("popup");
-#else
- load_file_with_path_and_extension("gtk-popup");
-#endif
-}
-
-
-static void reflect_context_sensitive_popup(prefs_info *prf) {}
-static void revert_context_sensitive_popup(prefs_info *prf) {SET_TOGGLE(prf->toggle, include_context_sensitive_popup);}
-static void clear_context_sensitive_popup(prefs_info *prf) {SET_TOGGLE(prf->toggle, false);}
-
-
-
-/* ---------------- effects menu ---------------- */
-
-static bool include_effects_menu = false;
-
-static void help_effects_menu(prefs_info *prf)
-{
- snd_help(prf->var_name,
- "This option creates a top-level menu named 'Effects'. The effects include such things as \
-reverberation, reversal, normalizations, gains and envelopes, inversion, echos, flanging, companding, \
-filtering, padding, cross synthesis, and so on.",
- WITH_WORD_WRAP);
-}
-
-
-static bool find_effects_menu(void)
-{
- return(XEN_DEFINED_P("effects-menu"));
-}
-
-
-static void save_effects_menu(prefs_info *prf, FILE *fd)
-{
- include_effects_menu = GET_TOGGLE(prf->toggle);
- if (include_effects_menu)
- {
-#if HAVE_SCHEME
- fprintf(fd, "(if (provided? 'snd-motif)\n (if (not (provided? 'snd-new-effects.scm))\n (load \"new-effects.scm\"))\n (if (not (provided? 'snd-gtk-effects.scm))\n (load \"gtk-effects.scm\")))\n");
-#endif
-
-#if HAVE_RUBY
- fprintf(fd, "require \"effects\"\n");
-#endif
-
-#if HAVE_FORTH
- fprintf(fd, "require effects\n");
-#endif
- }
-}
-
-
-static void effects_menu_toggle(prefs_info *prf)
-{
- if ((GET_TOGGLE(prf->toggle)) &&
- (!(find_effects_menu())))
-#if USE_MOTIF
- load_file_with_path_and_extension("new-effects");
-#else
- load_file_with_path_and_extension("gtk-effects");
-#endif
-}
-
-
-static void reflect_effects_menu(prefs_info *prf) {}
-static void revert_effects_menu(prefs_info *prf) {SET_TOGGLE(prf->toggle, include_effects_menu);}
-static void clear_effects_menu(prefs_info *prf) {SET_TOGGLE(prf->toggle, false);}
-
+static bool rts_with_toolbar = DEFAULT_WITH_TOOLBAR;
-
-#if HAVE_SCHEME
-/* ---------------- edit menu ---------------- */
-
-static bool include_edit_menu = false;
-
-
-static void help_edit_menu(prefs_info *prf)
+static const char *help_with_toolbar(prefs_info *prf)
{
- snd_help(prf->var_name,
- "This option adds several options to the top-level Edit menu: selection to file, \
-append selection, mono to stereo, trim, crop, etc.",
- WITH_WORD_WRAP);
+ return(" If this is set, a toolbar is displayed. ");
}
+static void revert_with_toolbar(prefs_info *prf) {set_with_toolbar_and_display(rts_with_toolbar);}
+static void clear_with_toolbar(prefs_info *prf) {set_with_toolbar_and_display(DEFAULT_WITH_TOOLBAR);}
+static void reflect_with_toolbar(prefs_info *prf) {SET_TOGGLE(prf->toggle, with_toolbar(ss));}
+static void save_with_toolbar(prefs_info *prf, FILE *fd) {rts_with_toolbar = with_toolbar(ss);}
+static void toggle_with_toolbar(prefs_info *prf) {set_with_toolbar_and_display(GET_TOGGLE(prf->toggle));}
-static bool find_edit_menu(void)
-{
- return(XEN_DEFINED_P("make-stereofile")); /* a kludge... currently this is only defined in edit-menu.scm */
-}
-static void save_edit_menu(prefs_info *prf, FILE *fd)
-{
- include_edit_menu = GET_TOGGLE(prf->toggle);
- if (include_edit_menu)
- fprintf(fd, "(if (not (provided? 'snd-edit-menu.scm)) (load \"edit-menu.scm\"))\n"); /* ok for either case */
-}
+/* ---------------- with-tooltips ---------------- */
+static bool rts_with_tooltips = DEFAULT_WITH_TOOLTIPS;
-static void edit_menu_toggle(prefs_info *prf)
+static const char *help_with_tooltips(prefs_info *prf)
{
- if ((GET_TOGGLE(prf->toggle)) &&
- (!(find_edit_menu())))
- load_file_with_path_and_extension("edit-menu");
+ return(" If this is set, tooltips may be displayed. ");
}
+static void revert_with_tooltips(prefs_info *prf) {set_with_tooltips(rts_with_tooltips);}
+static void clear_with_tooltips(prefs_info *prf) {set_with_tooltips(DEFAULT_WITH_TOOLTIPS);}
+static void reflect_with_tooltips(prefs_info *prf) {SET_TOGGLE(prf->toggle, with_tooltips(ss));}
+static void save_with_tooltips(prefs_info *prf, FILE *fd) {rts_with_tooltips = with_tooltips(ss);}
+static void toggle_with_tooltips(prefs_info *prf) {set_with_tooltips(GET_TOGGLE(prf->toggle));}
-static void reflect_edit_menu(prefs_info *prf) {}
-static void revert_edit_menu(prefs_info *prf) {SET_TOGGLE(prf->toggle, include_edit_menu);}
-static void clear_edit_menu(prefs_info *prf) {SET_TOGGLE(prf->toggle, false);}
-
-
-
-/* ---------------- marks menu ---------------- */
-
-static bool include_marks_menu = false;
-
-static bool find_marks_menu(void)
-{
- return(XEN_DEFINED_P("marks-menu"));
-}
-static void help_marks_menu(prefs_info *prf)
-{
- snd_help(prf->var_name,
- "This option adds a top-level 'Marks' menu that includes such things as play between marks, \
-trim, crop, define selection via marks, etc",
- WITH_WORD_WRAP);
-}
+#if USE_GTK
+/* ---------------- with-menu-icons ---------------- */
+static bool rts_with_menu_icons = DEFAULT_WITH_MENU_ICONS;
-static void save_marks_menu(prefs_info *prf, FILE *fd)
+static const char *help_with_menu_icons(prefs_info *prf)
{
- include_marks_menu = GET_TOGGLE(prf->toggle);
- if (include_marks_menu)
- fprintf(fd, "(if (not (provided? 'snd-marks-menu.scm)) (load \"marks-menu.scm\"))\n");
+ return(" If this is set, some menus include icons. ");
}
-
-static void marks_menu_toggle(prefs_info *prf)
-{
- if ((GET_TOGGLE(prf->toggle)) &&
- (!(find_marks_menu())))
- load_file_with_path_and_extension("marks-menu");
-}
-
-
-static void reflect_marks_menu(prefs_info *prf) {}
-static void revert_marks_menu(prefs_info *prf) {SET_TOGGLE(prf->toggle, include_marks_menu);}
-static void clear_marks_menu(prefs_info *prf) {SET_TOGGLE(prf->toggle, false);}
-
-
-
-/* ---------------- icon box ---------------- */
-
-static bool include_icon_box = false;
-
-static void help_icon_box(prefs_info *prf)
-{
- snd_help(prf->var_name,
- "This option adds a top-level box full of various handy icons. Not implemented in Gtk yet.",
- WITH_WORD_WRAP);
-}
-
-
-static bool find_icon_box(void)
-{
- return(XEN_DEFINED_P("add-useful-icons"));
-}
-
-
-static void save_icon_box(prefs_info *prf, FILE *fd)
-{
- include_icon_box = GET_TOGGLE(prf->toggle);
- if (include_icon_box)
- fprintf(fd, "(if (not (provided? 'snd-toolbar.scm)) (load \"toolbar.scm\"))\n");
-}
-
-
-static void icon_box_toggle(prefs_info *prf)
-{
- if ((GET_TOGGLE(prf->toggle)) &&
- (!(find_icon_box())))
- load_file_with_path_and_extension("toolbar");
-}
-
-
-static void reflect_icon_box(prefs_info *prf) {}
-static void revert_icon_box(prefs_info *prf) {SET_TOGGLE(prf->toggle, include_icon_box);}
-static void clear_icon_box(prefs_info *prf) {SET_TOGGLE(prf->toggle, false);}
+static void revert_with_menu_icons(prefs_info *prf) {set_with_menu_icons(rts_with_menu_icons);}
+static void clear_with_menu_icons(prefs_info *prf) {set_with_menu_icons(DEFAULT_WITH_MENU_ICONS);}
+static void reflect_with_menu_icons(prefs_info *prf) {SET_TOGGLE(prf->toggle, with_menu_icons(ss));}
+static void save_with_menu_icons(prefs_info *prf, FILE *fd) {rts_with_menu_icons = with_menu_icons(ss);}
+static void toggle_with_menu_icons(prefs_info *prf) {set_with_menu_icons(GET_TOGGLE(prf->toggle));}
#endif
-/* ---------------- reopen menu ---------------- */
-
-static bool include_reopen_menu = false;
-
-static void help_reopen_menu(prefs_info *prf)
-{
- snd_help(prf->var_name,
- "This option adds a top-level 'Reopen' menu. Previously opened sounds that are not currently open are listed \
-as menu items.",
- WITH_WORD_WRAP);
-}
-
-
-static bool find_reopen_menu(void)
-{
- return((XEN_DEFINED_P("including-reopen-menu")) &&
- XEN_TO_C_BOOLEAN(XEN_NAME_AS_C_STRING_TO_VALUE("including-reopen-menu")));
-}
-
-
-static void save_reopen_menu(prefs_info *prf, FILE *fd)
-{
- include_reopen_menu = GET_TOGGLE(prf->toggle);
- if (include_reopen_menu)
- prefs_function_save_0(fd, "with-reopen-menu", "extensions");
-}
-
-
-static void reopen_menu_toggle(prefs_info *prf)
-{
- if ((GET_TOGGLE(prf->toggle)) &&
- (!(find_reopen_menu())))
- {
- load_file_with_path_and_extension("extensions");
- prefs_function_call_0("with-reopen-menu");
- }
-}
-
-
-static void reflect_reopen_menu(prefs_info *prf) {}
-static void revert_reopen_menu(prefs_info *prf) {SET_TOGGLE(prf->toggle, include_reopen_menu);}
-static void clear_reopen_menu(prefs_info *prf) {SET_TOGGLE(prf->toggle, false);}
-
-
-
-#if USE_MOTIF
-/* ---------------- mark-pane ---------------- */
-
-static bool include_mark_pane = false;
-
-static void help_mark_pane(prefs_info *prf)
-{
- snd_help(prf->var_name,
- "This option adds a pane to each channel window containing information about that channel's marks.",
- WITH_WORD_WRAP);
-}
-
-
-static bool find_mark_pane(void)
-{
- return((XEN_DEFINED_P("including-mark-pane")) &&
- XEN_TO_C_BOOLEAN(XEN_NAME_AS_C_STRING_TO_VALUE("including-mark-pane")));
-}
-
-
-#if HAVE_SCHEME
- #if USE_MOTIF
- #define MARK_PANE_SOURCE "snd-motif"
- #else
- #define MARK_PANE_SOURCE "snd-gtk"
- #endif
-#else
- #define MARK_PANE_SOURCE "snd-xm"
-#endif
-
-static void mark_pane_toggle(prefs_info *prf)
-{
- if ((GET_TOGGLE(prf->toggle)) &&
- (!(find_mark_pane())))
- {
- load_file_with_path_and_extension(MARK_PANE_SOURCE);
- prefs_function_call_0("add-mark-pane");
- }
-}
-
-
-static void save_mark_pane(prefs_info *prf, FILE *fd)
-{
- include_mark_pane = GET_TOGGLE(prf->toggle);
- if (include_mark_pane)
- prefs_function_save_0(fd, "add-mark-pane", MARK_PANE_SOURCE);
-}
-
-
-static void reflect_mark_pane(prefs_info *prf) {}
-static void revert_mark_pane(prefs_info *prf) {SET_TOGGLE(prf->toggle, include_mark_pane);}
-static void clear_mark_pane(prefs_info *prf) {SET_TOGGLE(prf->toggle, false);}
-#endif
-
-
-
-#if HAVE_SCHEME
-/* ---------------- hidden controls dialog ---------------- */
-
-static bool include_hidden_controls = false;
-
-static void help_hidden_controls(prefs_info *prf)
-{
- snd_help(prf->var_name,
- "This adds a 'Hidden Controls' option to the Option menu. The dialog \
-gives access to all the synthesis variables that aren't reflected in the standard \
-control panel: 'expand-hop' sets the hop size (per grain), 'expand-length' \
-sets the grain length, 'expand-ramp' sets the slope of the grain amplitude envelope, \
-'contrast-amp' sets the prescaler for the contrast effect, 'reverb-feedback' sets the feedback \
-amount in the reverberator (it sets all the comb filter scalers), and 'reverb-lowpass' sets \
-the lowpass filter coefficient in the reverberator.",
- WITH_WORD_WRAP);
-}
-
-
-static bool find_hidden_controls(void)
-{
- return((XEN_DEFINED_P("hidden-controls-dialog")) &&
- (XEN_NOT_FALSE_P(XEN_NAME_AS_C_STRING_TO_VALUE("hidden-controls-dialog"))));
-}
-
-
-static void save_hidden_controls(prefs_info *prf, FILE *fd)
-{
- include_hidden_controls = GET_TOGGLE(prf->toggle);
- if (include_hidden_controls)
- {
- fprintf(fd, "(if (not (provided? 'snd-snd-motif.scm)) (load \"snd-motif.scm\"))\n");
- fprintf(fd, "(make-hidden-controls-dialog)\n");
- }
-}
-
-
-static void hidden_controls_toggle(prefs_info *prf)
-{
- if ((GET_TOGGLE(prf->toggle)) &&
- (!(find_hidden_controls())))
- {
- load_file_with_path_and_extension("snd-motif");
- prefs_function_call_0("make-hidden-controls-dialog");
- }
-}
-
-
-static void reflect_hidden_controls(prefs_info *prf) {}
-static void revert_hidden_controls(prefs_info *prf) {SET_TOGGLE(prf->toggle, include_hidden_controls);}
-static void clear_hidden_controls(prefs_info *prf) {SET_TOGGLE(prf->toggle, false);}
-
-#endif
-
-
-
-/* ---------------- smpte ---------------- */
-
-static bool include_smpte = false;
-
-static void help_smpte(prefs_info *prf)
-{
- snd_help(prf->var_name,
- "This option adds a label to the time domain graph showing the current SMPTE frame of the leftmost sample.",
- WITH_WORD_WRAP);
-}
-
-
-static bool find_smpte(void)
-{
-#if HAVE_SCHEME
- return((XEN_DEFINED_P("smpte-is-on")) &&
- (!(XEN_FALSE_P(XEN_EVAL_C_STRING("(smpte-is-on)"))))); /* "member" of hook-list -> a list if successful */
-#endif
-
-#if HAVE_RUBY || HAVE_FORTH
- return((XEN_DEFINED_P("smpte-is-on")) &&
- XEN_TO_C_BOOLEAN(XEN_EVAL_C_STRING(TO_PROC_NAME("smpte-is-on")))); /* "member" of hook-list -> true */
-#endif
- return(false);
-}
-
-
-static void reflect_smpte(prefs_info *prf) {}
-static void revert_smpte(prefs_info *prf) {SET_TOGGLE(prf->toggle, include_smpte);}
-static void clear_smpte(prefs_info *prf) {SET_TOGGLE(prf->toggle, false);}
-
-
-#if HAVE_SCHEME
- #if USE_MOTIF
- #define SMPTE_SOURCE "snd-motif"
- #else
- #define SMPTE_SOURCE "snd-gtk"
- #endif
-#else
- #define SMPTE_SOURCE "snd-xm"
-#endif
-
-static void smpte_toggle(prefs_info *prf)
-{
- if ((GET_TOGGLE(prf->toggle)) &&
- (!(find_smpte())))
- load_file_with_path_and_extension(SMPTE_SOURCE);
- if (find_smpte())
- prefs_function_call_1("show-smpte-label", C_TO_XEN_BOOLEAN(GET_TOGGLE(prf->toggle)));
-}
-
-
-static void save_smpte(prefs_info *prf, FILE *fd)
-{
- include_smpte = GET_TOGGLE(prf->toggle);
- if (include_smpte)
- {
-#if HAVE_SCHEME
- fprintf(fd, "(if (provided? 'snd-motif)\n (if (not (provided? 'snd-snd-motif.scm))\n (load \"snd-motif.scm\"))\n (if (not (provided? 'snd-snd-gtk.scm))\n (load \"snd-gtk.scm\")))\n");
- fprintf(fd, "(show-smpte-label #t)\n");
-#endif
-
-#if HAVE_RUBY
- fprintf(fd, "require \"snd-xm\"\n");
- fprintf(fd, "show_smpte_label(true)\n");
-#endif
-
-#if HAVE_FORTH
- fprintf(fd, "require snd-xm\n");
- fprintf(fd, "#t show-smpte-label\n");
-#endif
- }
-}
-
-
/* ---------------- remember-sound-state ---------------- */
-static int rts_remember_sound_state_choice = 0, remember_sound_state_choice = 0; /* 0=none, 1=local, 2=global+not local, 3=local+global */
-
-static void help_remember_sound_state_choice(prefs_info *prf)
-{
- snd_help(prf->var_name,
- "This option causes Snd to save most of a sound's display state when it is closed, \
-and if that same sound is later re-opened, Snd restores the previous state. This only takes effect upon restarting Snd.",
- WITH_WORD_WRAP);
-}
-
-
-static int find_remember_sound_state_choice(void) {return(XEN_TO_C_INT_OR_ELSE(prefs_variable_get("remembering-sound-state"), 0));}
-static void revert_remember_sound_state(prefs_info *prf) {remember_sound_state_choice = rts_remember_sound_state_choice;}
-static void clear_remember_sound_state(prefs_info *prf) {remember_sound_state_choice = 0;}
-
-
-static void reflect_remember_sound_state_choice(prefs_info *prf)
-{
- SET_TOGGLE(prf->toggle, remember_sound_state_choice & 1);
- SET_TOGGLE(prf->toggle2, remember_sound_state_choice & 2);
-}
-
-static void save_remember_sound_state_choice(prefs_info *prf, FILE *fd)
-{
- rts_remember_sound_state_choice = remember_sound_state_choice;
- if (remember_sound_state_choice != 0)
- {
-#if HAVE_SCHEME
- fprintf(fd, "(if (not (provided? 'snd-extensions.scm)) (load \"extensions.scm\"))\n");
- fprintf(fd, "(remember-sound-state %d)\n", remember_sound_state_choice);
-#endif
-
-#if HAVE_RUBY
- fprintf(fd, "require \"extensions\"\n");
- if (remember_sound_state_choice & 2)
- fprintf(fd, "remember_all_sound_properties\n");
- else fprintf(fd, "remember_sound_state\n");
-#endif
-
-#if HAVE_FORTH
- fprintf(fd, "require extensions\n");
- fprintf(fd, "%d remember-sound-state\n", remember_sound_state_choice);
-#endif
- }
-}
-
+static bool rts_remember_sound_state = DEFAULT_REMEMBER_SOUND_STATE;
-static void remember_sound_state_1_choice(prefs_info *prf)
+static const char *help_remember_sound_state(prefs_info *prf)
{
- if (GET_TOGGLE(prf->toggle))
- remember_sound_state_choice |= 1;
- else remember_sound_state_choice &= 2;
+ return("\
+ This option causes Snd to save most of a sound's display \n\
+ state when it is closed, and if that same sound is later re-opened, \n\
+ Snd restores the previous state. This only takes effect upon restarting Snd.");
}
-
-static void remember_sound_state_2_choice(prefs_info *prf)
-{
- if (GET_TOGGLE(prf->toggle2))
- remember_sound_state_choice |= 2;
- else remember_sound_state_choice &= 1;
-}
+static void revert_remember_sound_state(prefs_info *prf) {set_remember_sound_state(rts_remember_sound_state);}
+static void clear_remember_sound_state(prefs_info *prf) {set_remember_sound_state(DEFAULT_REMEMBER_SOUND_STATE);}
+static void reflect_remember_sound_state(prefs_info *prf) {SET_TOGGLE(prf->toggle, remember_sound_state(ss));}
+static void save_remember_sound_state(prefs_info *prf, FILE *fd) {rts_remember_sound_state = remember_sound_state(ss);}
+static void toggle_remember_sound_state(prefs_info *prf) {set_remember_sound_state(GET_TOGGLE(prf->toggle));}
@@ -4277,10 +3225,9 @@ static show_axes_t rts_show_axes = DEFAULT_SHOW_AXES;
static const char *show_axes_choices[NUM_SHOW_AXES] = {"none", "X and Y", "just X", "X and Y unlabelled", "just X unlabelled", "bare X"};
-
static void reflect_show_axes(prefs_info *prf) {SET_TEXT(prf->text, (char *)show_axes_choices[(int)show_axes(ss)]);}
-static void revert_show_axes(prefs_info *prf) {in_set_show_axes(rts_show_axes);}
-static void clear_show_axes(prefs_info *prf) {in_set_show_axes(DEFAULT_SHOW_AXES);}
+static void revert_show_axes(prefs_info *prf) {set_show_axes(rts_show_axes);}
+static void clear_show_axes(prefs_info *prf) {set_show_axes(DEFAULT_SHOW_AXES);}
static void save_show_axes(prefs_info *prf, FILE *ignore) {rts_show_axes = show_axes(ss);}
@@ -4291,7 +3238,7 @@ static void show_axes_from_menu(prefs_info *prf, char *value)
for (i = 0; i < NUM_SHOW_AXES; i++)
if (mus_strcmp(value, show_axes_choices[i]))
{
- in_set_show_axes((show_axes_t)i);
+ set_show_axes((show_axes_t)i);
SET_TEXT(prf->text, value);
return;
}
@@ -4319,7 +3266,7 @@ static void show_axes_from_text(prefs_info *prf)
break;
}
if (curpos >= 0)
- in_set_show_axes((show_axes_t)curpos);
+ set_show_axes((show_axes_t)curpos);
else post_prefs_error("unknown axis choice", prf);
}
else post_prefs_error("need an axis choice", prf);
@@ -4336,10 +3283,9 @@ static x_axis_style_t rts_x_axis_style = DEFAULT_X_AXIS_STYLE;
static const char *x_axis_styles[NUM_X_AXIS_STYLES] = {"seconds", "samples", "% of total", "beats", "measures", "clock"};
-
static void reflect_x_axis_style(prefs_info *prf) {SET_TEXT(prf->text, (char *)x_axis_styles[(int)x_axis_style(ss)]);}
-static void revert_x_axis_style(prefs_info *prf) {in_set_x_axis_style(rts_x_axis_style);}
-static void clear_x_axis_style(prefs_info *prf) {in_set_x_axis_style(DEFAULT_X_AXIS_STYLE);}
+static void revert_x_axis_style(prefs_info *prf) {set_x_axis_style(rts_x_axis_style);}
+static void clear_x_axis_style(prefs_info *prf) {set_x_axis_style(DEFAULT_X_AXIS_STYLE);}
static void save_x_axis_style(prefs_info *prf, FILE *ignore) {rts_x_axis_style = x_axis_style(ss);}
@@ -4350,7 +3296,7 @@ static void x_axis_style_from_menu(prefs_info *prf, char *value)
for (i = 0; i < NUM_X_AXIS_STYLES; i++)
if (mus_strcmp(value, x_axis_styles[i]))
{
- in_set_x_axis_style((x_axis_style_t)i);
+ set_x_axis_style((x_axis_style_t)i);
SET_TEXT(prf->text, value);
return;
}
@@ -4378,7 +3324,7 @@ static void x_axis_style_from_text(prefs_info *prf)
break;
}
if (curpos >= 0)
- in_set_x_axis_style((x_axis_style_t)curpos);
+ set_x_axis_style((x_axis_style_t)curpos);
else post_prefs_error("unknown axis style", prf);
}
else post_prefs_error("need an axis style", prf);
@@ -4404,8 +3350,8 @@ static void reflect_transform_type(prefs_info *prf)
}
-static void revert_transform_type(prefs_info *prf) {in_set_transform_type(rts_transform_type);}
-static void clear_transform_type(prefs_info *prf) {in_set_transform_type(DEFAULT_TRANSFORM_TYPE);}
+static void revert_transform_type(prefs_info *prf) {set_transform_type(rts_transform_type);}
+static void clear_transform_type(prefs_info *prf) {set_transform_type(DEFAULT_TRANSFORM_TYPE);}
static void save_transform_type(prefs_info *prf, FILE *ignore) {rts_transform_type = transform_type(ss);}
@@ -4430,7 +3376,7 @@ static void transform_type_from_menu(prefs_info *prf, char *value)
for (i = 0; i < NUM_BUILTIN_TRANSFORM_TYPES; i++)
if (mus_strcmp(value, transform_types[i]))
{
- in_set_transform_type(i);
+ set_transform_type(i);
SET_TEXT(prf->text, value);
return;
}
@@ -4458,7 +3404,7 @@ static void transform_type_from_text(prefs_info *prf)
break;
}
if (curpos >= 0)
- in_set_transform_type(curpos);
+ set_transform_type(curpos);
else post_prefs_error("unknown tranform", prf);
}
else post_prefs_error("no transform?", prf);
@@ -4474,8 +3420,8 @@ static void transform_type_from_text(prefs_info *prf)
static mus_fft_window_t rts_fft_window = DEFAULT_FFT_WINDOW;
static void reflect_fft_window(prefs_info *prf) {SET_TEXT(prf->text, (char *)mus_fft_window_name(fft_window(ss)));}
-static void revert_fft_window(prefs_info *prf) {in_set_fft_window(rts_fft_window);}
-static void clear_fft_window(prefs_info *prf) {in_set_fft_window(DEFAULT_FFT_WINDOW);}
+static void revert_fft_window(prefs_info *prf) {set_fft_window(rts_fft_window);}
+static void clear_fft_window(prefs_info *prf) {set_fft_window(DEFAULT_FFT_WINDOW);}
static void save_fft_window(prefs_info *prf, FILE *ignore) {rts_fft_window = fft_window(ss);}
static list_completer_info *fft_window_completer_info = NULL;
@@ -4502,7 +3448,7 @@ static void fft_window_from_menu(prefs_info *prf, char *value)
for (i = 0; i < MUS_NUM_FFT_WINDOWS; i++)
if (mus_strcmp(value, mus_fft_window_name((mus_fft_window_t)i)))
{
- in_set_fft_window((mus_fft_window_t)i);
+ set_fft_window((mus_fft_window_t)i);
SET_TEXT(prf->text, value);
return;
}
@@ -4530,7 +3476,7 @@ static void fft_window_from_text(prefs_info *prf)
break;
}
if (curpos >= 0)
- in_set_fft_window((mus_fft_window_t)curpos);
+ set_fft_window((mus_fft_window_t)curpos);
else post_prefs_error("unknown window", prf);
}
else post_prefs_error("no window?", prf);
@@ -4567,14 +3513,14 @@ static char *colormap_completer(widget_t w, const char *text, void *data)
static void reflect_colormap(prefs_info *prf) {SET_TEXT(prf->text, colormap_name(color_map(ss)));}
-static void clear_colormap(prefs_info *prf) {in_set_color_map(DEFAULT_COLOR_MAP);}
+static void clear_colormap(prefs_info *prf) {set_color_map(DEFAULT_COLOR_MAP);}
static void save_colormap(prefs_info *prf, FILE *ignore) {rts_colormap = color_map(ss);}
static void revert_colormap(prefs_info *prf)
{
if (!(is_colormap(rts_colormap))) rts_colormap = DEFAULT_COLOR_MAP;
- in_set_color_map(rts_colormap);
+ set_color_map(rts_colormap);
}
@@ -4600,7 +3546,7 @@ static void colormap_from_text(prefs_info *prf)
break;
}
if (is_colormap(curpos))
- in_set_color_map(curpos);
+ set_color_map(curpos);
else post_prefs_error("unknown colormap", prf);
}
else post_prefs_error("no colormap?", prf);
@@ -4618,7 +3564,7 @@ static void colormap_from_menu(prefs_info *prf, char *value)
for (i = 0; i < len; i++)
if (mus_strcmp(value, colormap_name(i)))
{
- in_set_color_map(i);
+ set_color_map(i);
SET_TEXT(prf->text, value);
return;
}
@@ -4632,14 +3578,15 @@ static void colormap_from_menu(prefs_info *prf, char *value)
static bool include_peak_envs = false, rts_peak_envs = false;
static char *include_peak_env_directory = NULL, *rts_peak_env_directory = NULL;
-static void help_peak_envs(prefs_info *prf)
+static const char *help_peak_envs(prefs_info *prf)
{
- snd_help(prf->var_name,
- "When a very large file is first opened, Snd scans all the data to build up an overall \
-representation of the sound. If you like to view the entire sound upon opening it, you can speed \
-up the process a lot by saving this initial representation. The data is called a 'peak-env' file \
-and it resides in the 'peak-env-dir'.",
- WITH_WORD_WRAP);
+ return("\
+ When a very large file is first opened, Snd scans \n\
+ all the data to build up an overall representation of \n\
+ the sound. If you like to view the entire sound upon \n\
+ opening it, you can speed up the process a lot by saving \n\
+ this initial representation. The data is called a 'peak-env' file \n\
+ and it resides in the 'peak-env-dir'.");
}
@@ -4704,15 +3651,19 @@ static void peak_envs_text(prefs_info *prf)
static char *rts_load_path = NULL;
-static void help_load_path(prefs_info *prf)
+static const char *help_load_path(prefs_info *prf)
{
- char *hlp, *temp = NULL;
- hlp = mus_format("Much of Snd's functionality is loaded as needed from the Scheme, Ruby, or Forth \
-files found in the Snd tarball. You can run Snd without \
-these files, but there's no reason to! Just add the directory containing \
-them to the load path variable%s. " XEN_LANGUAGE_NAME " searches these \
-directories for any *." XEN_FILE_EXTENSION " files that it can't \
-find elsewhere. The current load path list is: \n\n%s\n",
+ static char *hlp = NULL;
+ char *temp = NULL;
+ if (hlp) free(hlp);
+
+ hlp = mus_format("Much of Snd's functionality is loaded as needed \n\
+from the Scheme, Ruby, or Forth files found in the Snd tarball. \n\
+You can run Snd without these files, but there's no reason to! \n\
+Just add the directory containing them to the load path \n\
+variable %s. " XEN_LANGUAGE_NAME " searches these directories \n\
+for any *." XEN_FILE_EXTENSION " files that it can't find elsewhere. \n\
+The current load path list is: \n\n%s\n",
#if HAVE_RUBY
", $LOAD_PATH",
#else
@@ -4723,15 +3674,14 @@ find elsewhere. The current load path list is: \n\n%s\n",
#endif
#endif
temp = (char *)XEN_AS_STRING(XEN_LOAD_PATH));
- snd_help("load paths", hlp, WITH_WORD_WRAP);
#if HAVE_SCHEME
if (temp) free(temp);
#endif
- free(hlp);
+ return(hlp);
}
-static char *find_sources(void) /* returns full filename if found else null */
+static char *find_sources(void) /* returns directory name where it finds extensions.* */
{
char *file = NULL;
#define BASE_FILE "extensions." XEN_FILE_EXTENSION
@@ -4758,22 +3708,17 @@ static char *find_sources(void) /* returns full filename if found else null */
file = fname;
break;
}
- free(fname);
}
}
#endif
#if HAVE_RUBY
- #if RB_FIND_FILE_TAKES_VALUE
{
XEN xfile;
xfile = rb_find_file(C_TO_XEN_STRING(BASE_FILE));
if (XEN_STRING_P(xfile))
file = mus_expand_filename(XEN_TO_C_STRING(xfile));
}
- #else
- file = mus_expand_filename(rb_find_file(BASE_FILE));
- #endif
#endif
#if HAVE_FORTH
@@ -4797,7 +3742,6 @@ static char *find_sources(void) /* returns full filename if found else null */
file = fname;
break;
}
- free(fname);
}
}
#endif
@@ -4866,79 +3810,27 @@ static void load_path_text(prefs_info *prf)
/* ---------------- initial bounds ---------------- */
-static mus_float_t rts_initial_beg = 0.0, rts_initial_dur = 0.1;
-static bool rts_full_duration = false;
-static bool include_duration = false;
-
-static bool full_duration(void)
-{
- return(XEN_TO_C_BOOLEAN(prefs_variable_get("prefs-show-full-duration")));
-}
-
-
-static mus_float_t initial_beg(void)
-{
- return(XEN_TO_C_DOUBLE_OR_ELSE(prefs_variable_get("prefs-initial-beg"), 0.0));
-}
-
-
-static mus_float_t initial_dur(void)
-{
- return(XEN_TO_C_DOUBLE_OR_ELSE(prefs_variable_get("prefs-initial-dur"), 0.1));
-}
-
+static mus_float_t rts_initial_beg = DEFAULT_INITIAL_BEG, rts_initial_dur = DEFAULT_INITIAL_DUR;
+static bool rts_full_duration = DEFAULT_SHOW_FULL_DURATION;
-static void help_initial_bounds(prefs_info *prf)
+static const char *help_initial_bounds(prefs_info *prf)
{
- snd_help(prf->var_name,
- "Normally Snd displays just the first 0.1 seconds of a sound in its initial graph. This option \
-sets either new bounds for that display, or directs Snd to display the entire sound.",
- WITH_WORD_WRAP);
+ return("\
+ Normally Snd displays just the first 0.1 seconds of a \n\
+ sound in its initial graph. This option sets either new \n\
+ bounds for that display, or directs Snd to display the entire sound.");
}
static char *initial_bounds_to_string(void)
{
- return(mus_format("%.2f : %.2f", initial_beg(), initial_dur()));
+ return(mus_format("%.2f : %.2f", initial_beg(ss), initial_dur(ss)));
}
static void save_initial_bounds(prefs_info *prf, FILE *fd)
{
- char *str;
rts_full_duration = GET_TOGGLE(prf->toggle);
- str = GET_TEXT(prf->text);
- if (str)
- {
- float a = 0.0, b = 0.0;
- sscanf(str, "%f : %f", &a, &b); /* these can be doubles -- need conversion to fit all cases */
- rts_initial_beg = (mus_float_t)a;
- rts_initial_dur = (mus_float_t)b;
- free_TEXT(str);
- }
- else
- {
- rts_initial_beg = 0.0;
- rts_initial_dur = 0.1;
- }
- if (include_duration)
- {
-#if HAVE_SCHEME
- fprintf(fd, "(if (not (provided? 'snd-extensions.scm)) (load \"extensions.scm\"))\n");
- fprintf(fd, "(prefs-activate-initial-bounds %.2f %.2f %s)\n", rts_initial_beg, rts_initial_dur, (rts_full_duration) ? "#t" : "#f");
-#endif
-
-#if HAVE_RUBY
- fprintf(fd, "require \"extensions\"\n");
- fprintf(fd, "prefs_activate_initial_bounds(%.2f, %.2f, %s)\n", rts_initial_beg, rts_initial_dur, (rts_full_duration) ? "true" : "false");
-
-#endif
-
-#if HAVE_FORTH
- fprintf(fd, "require extensions\n");
- fprintf(fd, "%.2f %.2f %s prefs-activate-initial-bounds\n", rts_initial_beg, rts_initial_dur, (rts_full_duration) ? "true" : "false");
-#endif
- }
}
@@ -4949,32 +3841,29 @@ static void reflect_initial_bounds(prefs_info *prf)
str = initial_bounds_to_string();
SET_TEXT(prf->text, str);
free(str);
- SET_TOGGLE(prf->toggle, full_duration());
+ SET_TOGGLE(prf->toggle, show_full_duration(ss));
}
static void revert_initial_bounds(prefs_info *prf)
{
- prefs_variable_set("prefs-initial-beg", C_TO_XEN_DOUBLE(rts_initial_beg));
- prefs_variable_set("prefs-initial-dur", C_TO_XEN_DOUBLE(rts_initial_dur));
- prefs_variable_set("prefs-show-full-duration", C_TO_XEN_BOOLEAN(rts_full_duration));
+ set_initial_beg(rts_initial_beg);
+ set_initial_dur(rts_initial_dur);
+ set_show_full_duration(rts_full_duration);
}
static void clear_initial_bounds(prefs_info *prf)
{
- prefs_variable_set("prefs-initial-beg", C_TO_XEN_DOUBLE(0.0));
- prefs_variable_set("prefs-initial-dur", C_TO_XEN_DOUBLE(0.1));
- prefs_variable_set("prefs-show-full-duration", XEN_FALSE);
+ set_initial_beg(DEFAULT_INITIAL_BEG);
+ set_initial_dur(DEFAULT_INITIAL_DUR);
+ set_show_full_duration(DEFAULT_SHOW_FULL_DURATION);
}
static void initial_bounds_toggle(prefs_info *prf)
{
- include_duration = true;
- if (!(XEN_DEFINED_P("prefs-show-full-duration")))
- load_file_with_path_and_extension("extensions");
- prefs_variable_set("prefs-show-full-duration", C_TO_XEN_BOOLEAN(GET_TOGGLE(prf->toggle)));
+ set_show_full_duration(GET_TOGGLE(prf->toggle));
}
@@ -4982,15 +3871,11 @@ static void initial_bounds_text(prefs_info *prf)
{
float beg = 0.0, dur = 0.1;
char *str;
- include_duration = true;
str = GET_TEXT(prf->text);
sscanf(str, "%f : %f", &beg, &dur);
- if (!(XEN_DEFINED_P("prefs-initial-beg")))
- load_file_with_path_and_extension("extensions");
-
- prefs_variable_set("prefs-initial-beg", C_TO_XEN_DOUBLE(beg));
- prefs_variable_set("prefs-initial-dur", C_TO_XEN_DOUBLE(dur));
+ set_initial_beg(beg);
+ set_initial_dur(dur);
free_TEXT(str);
}
@@ -5070,13 +3955,9 @@ static void clear_key(prefs_info *prf, const char *name)
/* -------- key: play all chans from cursor -------- */
-static void help_play_from_cursor(prefs_info *prf)
+static const char *help_play_from_cursor(prefs_info *prf)
{
- snd_help("play from cursor",
- "By default, C-q plays the current channel from the cursor, but one often wants to play the entire \
-sound; this option binds a key for that purpose, and also overrides the pause setting. The new binding does \
-not take effect until you type return in the text widget.",
- WITH_WORD_WRAP);
+ return(" This option binds a key to play the entire sound. ");
}
@@ -5133,12 +4014,12 @@ static void clear_play_from_cursor(prefs_info *prf)
/* -------- key: show all of sound -------- */
-static void help_show_all(prefs_info *prf)
+static const char *help_show_all(prefs_info *prf)
{
- snd_help("show entire sound",
- "This option binds a key to show all of the current sound in the current time domain window, \
-equivalent to moving the 'zoom' slider all the way to the right.",
- WITH_WORD_WRAP);
+ return("\
+ This option binds a key to show all of the current sound \n\
+ in the current time domain window, equivalent to moving the \n\
+ 'zoom' slider all the way to the right.");
}
@@ -5147,7 +4028,7 @@ static char *make_show_all_binding(char *key, bool ctrl, bool meta, bool cx)
#if HAVE_SCHEME
return(mus_format("(bind-key %s %d (lambda () \
(let ((old-sync (sync))) \
- (set! (sync) (1+ (max-sync))) \
+ (set! (sync) (1+ (sync-max))) \
(set! (x-bounds) (list 0.0 (/ (frames) (srate)))) \
(set! (sync) old-sync))) %s \"show entire sound\" \"show-all\")\n",
possibly_quote(key),
@@ -5204,12 +4085,12 @@ static void clear_show_all(prefs_info *prf)
/* -------- key: select all of sound -------- */
-static void help_select_all(prefs_info *prf)
+static const char *help_select_all(prefs_info *prf)
{
- snd_help("select entire sound",
- "This option binds a key to select all of the current sound. The 'Select all' Edit menu item \
-follows the 'sync' buttons when deciding which channels to select.",
- WITH_WORD_WRAP);
+ return("\
+ This option binds a key to select all of the current sound. \n\
+ The 'Select all' Edit menu item follows the 'sync' buttons when \n\
+ deciding which channels to select.");
}
@@ -5218,7 +4099,7 @@ static char *make_select_all_binding(char *key, bool ctrl, bool meta, bool cx)
#if HAVE_SCHEME
return(mus_format("(bind-key %s %d (lambda () \
(let ((old-sync (sync))) \
- (set! (sync) (1+ (max-sync))) \
+ (set! (sync) (1+ (sync-max))) \
(select-all) \
(set! (sync) old-sync))) %s \"select entire sound\" \"select-all\")\n",
possibly_quote(key),
@@ -5275,11 +4156,11 @@ static void clear_select_all(prefs_info *prf)
/* -------- key: undo all edits -------- */
-static void help_revert(prefs_info *prf)
+static const char *help_revert(prefs_info *prf)
{
- snd_help("undo all edits (revert)",
- "This option binds a key to undo any edits in the current sound, equivalent to the File:Revert menu item.",
- WITH_WORD_WRAP);
+ return("\
+ This option binds a key to undo any edits in the current sound, \n\
+ equivalent to the File:Revert menu item.");
}
@@ -5336,11 +4217,11 @@ static void clear_revert_sound(prefs_info *prf)
/* -------- key: exit -------- */
-static void help_exit(prefs_info *prf)
+static const char *help_exit(prefs_info *prf)
{
- snd_help("exit from Snd",
- "This option binds a key to exit from Snd, equivalent to the File:Exit menu item.",
- WITH_WORD_WRAP);
+ return("\
+ This option binds a key to exit from Snd, \n\
+ equivalent to the File:Exit menu item.");
}
@@ -5397,11 +4278,11 @@ static void clear_exit(prefs_info *prf)
/* -------- key: goto maxamp -------- */
-static void help_goto_maxamp(prefs_info *prf)
+static const char *help_goto_maxamp(prefs_info *prf)
{
- snd_help("go to maxamp",
- "This option binds a key to move the view (and cursor) to the position of the current channel's maximum sample.",
- WITH_WORD_WRAP);
+ return("\
+ This option binds a key to move the view (and cursor) to the \n\
+ position of the current channel's maximum sample.");
}
@@ -5458,32 +4339,32 @@ static void clear_goto_maxamp(prefs_info *prf)
/* -------- key: show selection -------- */
-static void help_show_selection(prefs_info *prf)
+static const char *help_show_selection(prefs_info *prf)
{
- snd_help("show selection",
- "This option binds a key to cause the current selection to fill the time domain graph.",
- WITH_WORD_WRAP);
+ return("\
+ This option binds a key to cause the current selection to \n\
+ fill the time domain graph.");
}
static char *make_show_selection_binding(char *key, bool ctrl, bool meta, bool cx)
{
#if HAVE_SCHEME
- return(mus_format("(if (not (provided? 'snd-selection.scm)) (load \"selection.scm\"))\n\(bind-key %s %d show-selection %s \"show selection\" \"show-selection\")\n",
+ return(mus_format("(bind-key %s %d show-selection %s \"show selection\" \"show-selection\")\n",
possibly_quote(key),
((ctrl) ? 4 : 0) + ((meta) ? 8 : 0),
(cx) ? "#t" : "#f"));
#endif
#if HAVE_RUBY
- return(mus_format("require \"extensions\"\nbind_key(%s, %d, lambda do\n show_selection()\n end, %s, \"show selection\", \"show-selection\")\n",
+ return(mus_format("bind_key(%s, %d, lambda do\n show_selection()\n end, %s, \"show selection\", \"show-selection\")\n",
possibly_quote(key),
((ctrl) ? 4 : 0) + ((meta) ? 8 : 0),
(cx) ? "true" : "false"));
#endif
#if HAVE_FORTH
- return(mus_format("require extensions\n%s %d ' show-selection %s \"show selection\" \"show-selection\" bind-key drop\n",
+ return(mus_format("%s %d ' show-selection %s \"show selection\" \"show-selection\" bind-key drop\n",
possibly_quote(key),
((ctrl) ? 4 : 0) + ((meta) ? 8 : 0),
(cx) ? "#t" : "#f"));
@@ -5514,3 +4395,423 @@ static void clear_show_selection(prefs_info *prf)
{
clear_key(prf, "show-selection");
}
+
+static const char *help_show_controls(prefs_info *prf)
+{
+ return("\
+ The control panel is the set of playback controls \n\
+ under the sound graphs. It is normally hidden. ");
+}
+
+static const char *help_selection_creates_region(prefs_info *prf)
+{
+ return("\
+ This determines whether a region is created whenever \n\
+ you make a selection. ");
+}
+
+static const char *help_just_sounds(prefs_info *prf)
+{
+ return("\
+ The various file dialogs can restrict the files \n\
+ displayed to just sound files. ");
+}
+
+static const char *help_temp_dir(prefs_info *prf)
+{
+ return("\
+ Snd sometimes needs a place to write a temporary \n\
+ file. This is the directory to use. ");
+}
+
+static const char *help_save_dir(prefs_info *prf)
+{
+ return("\
+ When you choose the Options: Save state item, \n\
+ the saved settings are placed in a file in this directory. ");
+}
+
+static const char *help_save_state_file(prefs_info *prf)
+{
+ return("\
+ When you choose Options: Save state, the state \n\
+ is saved in this file, in the save directory. ");
+}
+
+static const char *help_html_program(prefs_info *prf)
+{
+ return("\
+ The help dialog has links to the Snd documentation, \n\
+ and this option gives the name of the HTML viewer to use. ");
+}
+
+static const char *help_default_output_chans(prefs_info *prf)
+{
+ return("\
+ This sets the default number of output channels \n\
+ when a new sound is started. ");
+}
+
+static const char *help_default_output_srate(prefs_info *prf)
+{
+ return("\
+ This sets the default sampling rate when a new \n\
+ sound is opened. ");
+}
+
+static const char *help_default_output_header_type(prefs_info *prf)
+{
+ return("\
+ This sets the default output header type (AIFC, etc) \n\
+ when a new sound is opened. ");
+}
+
+static const char *help_default_output_data_format(prefs_info *prf)
+{
+ return("\
+ This sets the default data format (big-endian float, etc) \n\
+ when a new sound is opened. ");
+}
+
+static const char *help_verbose_cursor(prefs_info *prf)
+{
+ return("\
+ If this is set, the cursor's position and the underlying \n\
+ sample's value are displayed in the minibuffer as the cursor moves. ");
+}
+
+static const char *help_with_tracking_cursor(prefs_info *prf)
+{
+ return("\
+ If this is set, the cursor always tries to show where the playback \n\
+ is in the sound as it is played. It is only an approximation. ");
+}
+
+static const char *help_cursor_size(prefs_info *prf)
+{
+ return(" This sets the cursor size in pixels. ");
+}
+
+static const char *help_cursor_style(prefs_info *prf)
+{
+ return(" This sets the cursor shape. ");
+}
+
+static const char *help_tracking_cursor_style(prefs_info *prf)
+{
+ return(" This sets the tracking cursor shape. ");
+}
+
+static const char *help_cursor_color(prefs_info *prf)
+{
+ return(" This is the cursor color. ");
+}
+
+static const char *help_basic_color(prefs_info *prf)
+{
+ return(" This is the main background color used throughout Snd. ");
+}
+
+static const char *help_highlight_color(prefs_info *prf)
+{
+ return(" This color is used for highlighted items. ");
+}
+
+static const char *help_position_color(prefs_info *prf)
+{
+ return(" This is the color of the position-related sliders. ");
+}
+
+static const char *help_zoom_color(prefs_info *prf)
+{
+ return(" This is the color of the zoom-related sliders. ");
+}
+
+static const char *help_graph_style(prefs_info *prf)
+{
+ return("\
+ This sets how sound data is displayed. Normally samples \n\
+ are joined by lines, but you can also display them as isolated \n\
+ dots, or as filled polygons, or as dots-on-stilts, as in the DSP \n\
+ textbooks. ");
+}
+
+static const char *help_dot_size(prefs_info *prf)
+{
+ return("\
+ If the graph style uses dots, this sets the dot size. ");
+}
+
+static const char *help_channel_style(prefs_info *prf)
+{
+ return("\
+ When a sound has more than one channel, this chooses how \n\
+ to lay them out: in separate windows, combined in one window \n\
+ or superimposed on each other in a single graph. ");
+}
+
+static const char *help_graphs_horizontal(prefs_info *prf)
+{
+ return("\
+ This chooses whether sounds are layed out horizontally or vertically. ");
+}
+
+static const char *help_show_y_zero(prefs_info *prf)
+{
+ return("\
+ If this is set, each channel graph includes a line at y=0. ");
+}
+
+static const char *help_show_grid(prefs_info *prf)
+{
+ return("\
+ If this option is set, each channel graph has a grid, sort \n\
+ of like engineering graph paper. ");
+}
+
+static const char *help_grid_density(prefs_info *prf)
+{
+ return("\
+ If grids are in use, this sets how close the lines are. ");
+}
+
+static const char *help_show_axes(prefs_info *prf)
+{
+ return(" This chooses which axes to display. ");
+}
+
+static const char *help_x_axis_style(prefs_info *prf)
+{
+ return(" This sets the x axis labelling. ");
+}
+
+static const char *help_data_color(prefs_info *prf)
+{
+ return(" This is the waveform color in unselected graphs. ");
+}
+
+static const char *help_graph_color(prefs_info *prf)
+{
+ return(" This is the background color in unselected graphs. ");
+}
+
+static const char *help_selected_data_color(prefs_info *prf)
+{
+ return(" This is the waveform color in a selected graph. ");
+}
+
+static const char *help_selected_graph_color(prefs_info *prf)
+{
+ return(" This is the background color in a selected graph. ");
+}
+
+static const char *help_selection_color(prefs_info *prf)
+{
+ return(" This is the color used to show the current selection. ");
+}
+
+static const char *help_axis_label_font(prefs_info *prf)
+{
+ return(" This is a font used to label axes. ");
+}
+
+static const char *help_axis_numbers_font(prefs_info *prf)
+{
+ return(" This is the font used for axis numbers. ");
+}
+
+static const char *help_peaks_font(prefs_info *prf)
+{
+ return(" This is the font used in the FFT peaks listing. ");
+}
+
+static const char *help_bold_peaks_font(prefs_info *prf)
+{
+ return("\
+ This is the font used in the FFT peaks list\n\
+ to show a major peak. ");
+}
+
+static const char *help_transform_graph_type(prefs_info *prf)
+{
+ return("\
+ FFT results can be displayed as a waveform, a sonogram, \n\
+ or a spectrogram. ");
+}
+
+static const char *help_transform_type(prefs_info *prf)
+{
+ return("\
+ This chooses the kind of transform displayed \n\
+ in the fft graph. ");
+}
+
+static const char *help_fft_window(prefs_info *prf)
+{
+ return(" This sets the fft data window. ");
+}
+
+static const char *help_fft_window_beta(prefs_info *prf)
+{
+ return(" If the FFT window has an associated parameter, this sets it. ");
+}
+
+static const char *help_colormap(prefs_info *prf)
+{
+ return(" If the FFT is being displayed as a sonogram or spectrogram,\n\
+ this sets the colormap to use. ");
+}
+
+static const char *help_fft_log_magnitude(prefs_info *prf)
+{
+ return(" If this option is set, the FFTs show the magnitude axis on a log scale. ");
+}
+
+static const char *help_min_dB(prefs_info *prf)
+{
+ return("\
+ If the FFT graphs are using a dB scale, this sets the\n\
+ minimum dB value displayed. ");
+}
+
+static const char *help_fft_log_frequency(prefs_info *prf)
+{
+ return(" If this is set, FFTs show the frequency axis on a log scale. ");
+}
+
+static const char *help_transform_normalization(prefs_info *prf)
+{
+ return(" This chooses whether FFT data is normalized before display. ");
+}
+
+static const char *help_mark_color(prefs_info *prf)
+{
+ return(" This is the mark color. ");
+}
+
+static const char *help_mix_color(prefs_info *prf)
+{
+ return(" This is the color of the mix handle. ");
+}
+
+static const char *help_sinc_width(prefs_info *prf)
+{
+ return("\
+ If sampling rate conversion is needed, this sets \n\
+ the width of the sinc used for low-pass filtering. ");
+}
+
+static const char *help_show_listener(prefs_info *prf)
+{
+ return(" This option chooses whether to include the listener window. ");
+}
+
+static const char *help_listener_prompt(prefs_info *prf)
+{
+ return(" This is the prompt displayed in the listener window. ");
+}
+
+static const char *help_print_length(prefs_info *prf)
+{
+ return("\
+ When a vector is printed in the listener, this sets\n\
+ the maximum number of values displayed. ");
+}
+
+static const char *help_listener_font(prefs_info *prf)
+{
+ return(" This is the font used in the listener. ");
+}
+
+static const char *help_listener_color(prefs_info *prf)
+{
+ return(" This is the background color of the listener. ");
+}
+
+static const char *help_dac_size(prefs_info *prf)
+{
+ return(" This is the DAC buffer size. ");
+}
+
+static const char *help_dac_combines_channels(prefs_info *prf)
+{
+ return("\
+ If the DAC has fewer output channels than the sound you\n\
+ want to play, and this option is set, then the extra \n\
+ channels are mixed into the existing ones. ");
+}
+
+
+static const char *help_view_files_directory(prefs_info *prf)
+{
+ return(" This directory is added to the View:files dialog's list. ");
+}
+
+static const char *help_raw_chans(prefs_info *prf)
+{
+ return("\
+ When a raw (no header) sound is opened, this sets the \n\
+ default number of channels. ");
+}
+
+static const char *help_raw_srate(prefs_info *prf)
+{
+ return("\
+ When a raw (no header) sound is opened, this sets the \n\
+ default sampling rate. ");
+}
+
+static const char *help_raw_data_format(prefs_info *prf)
+{
+ return("\
+ When a raw (no header) sound is opened, this sets the \n\
+ default data format. ");
+}
+
+static const char *help_tiny_font(prefs_info *prf)
+{
+ return(" When space is tight, Snd uses this font. ");
+}
+
+static const char *help_fft_size(prefs_info *prf)
+{
+ return(" This is the default FFT size. ");
+}
+
+static const char *help_transform_peaks(prefs_info *prf)
+{
+ return(" If this is set, FFTs include peak listings. ");
+}
+
+static const char *help_mark_tag_size(prefs_info *prf)
+{
+ return(" This is the size of the upper tag on a mark. ");
+}
+
+static const char *help_mix_tag_size(prefs_info *prf)
+{
+ return(" This sets the mix tag size. ");
+}
+
+static const char *help_mix_waveforms(prefs_info *prf)
+{
+ return(" If this is set, mixes display their waveforms. ");
+}
+
+static const char *help_speed_control(prefs_info *prf)
+{
+ return("\
+ This chooses how the speed control in the control panel\n\
+ divides up the speeds; as a continuous scale, by simple ratios, etc. ");
+}
+
+static const char *help_listener_text_color(prefs_info *prf)
+{
+ return(" This is the listener text color. ");
+}
+
+static const char *help_init_window_size(prefs_info *prf)
+{
+ return(" This sets Snd's size when it first comes up. ");
+}
+