1 #ifndef SND_MENU_H
2 #define SND_MENU_H
3 
4 #define I_LINES_OR_DOTS "Dots or lines"
5 #define I_CHANNEL_LAYOUT "Channel layout"
6 #define I_ZOOM_CENTERS_ON "Zoom centers on"
7 #define I_AXIS_LAYOUT "Axis layout"
8 
9 enum {m_menu,
10         f_menu, f_cascade_menu,
11           f_open_menu, f_open_recent_menu, f_open_recent_cascade_menu, f_close_menu, f_close_all_menu, f_save_menu, f_save_as_menu, f_revert_menu, f_exit_menu, f_new_menu,
12           f_view_menu, f_print_menu, f_mix_menu, f_insert_menu, f_update_menu, f_sep_menu,
13         e_menu, e_cascade_menu,
14           e_cut_menu, e_paste_menu, e_mix_menu, e_play_menu, e_save_as_menu, e_undo_menu,
15           e_redo_menu, e_find_menu, e_env_menu, e_header_menu, e_select_all_menu, e_unselect_menu,
16           e_select_sep_menu, e_edit_sep_menu,
17         h_menu, h_cascade_menu,
18           h_about_snd_menu, h_fft_menu, h_find_menu, h_undo_menu, h_sync_menu, h_controls_menu,
19           h_env_menu, h_marks_menu, h_sound_files_menu, h_init_file_menu,
20           h_mix_menu, h_keys_menu,
21           h_play_menu, h_save_menu, h_resample_menu, h_filter_menu, h_insert_menu,
22           h_delete_menu, h_reverb_menu, h_debug_menu, h_region_menu, h_selection_menu, h_colors_menu,
23         o_menu, o_cascade_menu,
24           o_transform_menu, o_controls_menu,
25           o_save_state_menu, o_sep_menu, o_preferences_menu,
26         v_menu, v_cascade_menu,
27           v_graph_style_menu, v_graph_style_cascade_menu,
28             v_lines_menu, v_dots_menu, v_filled_menu, v_dots_and_lines_menu, v_lollipops_menu,
29             v_zero_menu, v_cursor_menu, v_inset_menu, v_controls_menu, v_listener_menu,
30           v_region_menu,
31           v_combine_menu, v_combine_cascade_menu,
32             v_combine_separate_menu, v_combine_combined_menu, v_combine_superimposed_menu,
33           v_color_orientation_menu,
34           v_files_menu, v_mix_dialog_menu,
35           v_x_axis_menu, v_x_axis_cascade_menu,
36             v_x_axis_seconds_menu, v_x_axis_samples_menu, v_x_axis_percentage_menu, v_x_axis_beats_menu, v_x_axis_measures_menu, v_x_axis_clock_menu,
37           v_axes_menu, v_axes_cascade_menu,
38           v_no_axes_menu, v_all_axes_menu, v_just_x_axis_menu, v_all_axes_unlabelled_menu, v_just_x_axis_unlabelled_menu, v_bare_x_axis_menu,
39           v_focus_style_menu, v_focus_cascade_menu,
40             v_focus_right_menu, v_focus_left_menu, v_focus_middle_menu, v_focus_active_menu,
41           v_grid_menu,
42         v_sep2_menu,
43       NUM_MENU_WIDGETS
44 };
45 
46 #define main_menu (ss->mw[m_menu])
47 
48 #define file_menu (ss->mw[f_menu])
49 #define file_cascade_menu (ss->mw[f_cascade_menu])
50 #define file_open_menu (ss->mw[f_open_menu])
51 #define file_open_recent_menu (ss->mw[f_open_recent_menu])
52 #define file_open_recent_cascade_menu (ss->mw[f_open_recent_cascade_menu])
53 #define file_close_menu (ss->mw[f_close_menu])
54 #define file_close_all_menu (ss->mw[f_close_all_menu])
55 #define file_save_menu (ss->mw[f_save_menu])
56 #define file_save_as_menu (ss->mw[f_save_as_menu])
57 #define file_revert_menu (ss->mw[f_revert_menu])
58 #define file_exit_menu (ss->mw[f_exit_menu])
59 #define file_new_menu (ss->mw[f_new_menu])
60 #define file_view_menu (ss->mw[f_view_menu])
61 #define file_print_menu (ss->mw[f_print_menu])
62 #define file_mix_menu (ss->mw[f_mix_menu])
63 #define file_insert_menu (ss->mw[f_insert_menu])
64 #define file_update_menu (ss->mw[f_update_menu])
65 #define file_sep_menu (ss->mw[f_sep_menu])
66 
67 #define edit_menu (ss->mw[e_menu])
68 #define edit_cascade_menu (ss->mw[e_cascade_menu])
69 #define edit_cut_menu (ss->mw[e_cut_menu])
70 #define edit_paste_menu (ss->mw[e_paste_menu])
71 #define edit_mix_menu (ss->mw[e_mix_menu])
72 #define edit_play_menu (ss->mw[e_play_menu])
73 #define edit_save_as_menu (ss->mw[e_save_as_menu])
74 #define edit_undo_menu (ss->mw[e_undo_menu])
75 #define edit_redo_menu (ss->mw[e_redo_menu])
76 #define edit_find_menu (ss->mw[e_find_menu])
77 #define edit_env_menu (ss->mw[e_env_menu])
78 #define edit_header_menu (ss->mw[e_header_menu])
79 #define edit_select_all_menu (ss->mw[e_select_all_menu])
80 #define edit_unselect_menu (ss->mw[e_unselect_menu])
81 #define edit_select_sep_menu (ss->mw[e_select_sep_menu])
82 #define edit_edit_sep_menu (ss->mw[e_edit_sep_menu])
83 
84 #define help_menu (ss->mw[h_menu])
85 #define help_cascade_menu (ss->mw[h_cascade_menu])
86 #define help_about_snd_menu (ss->mw[h_about_snd_menu])
87 #define help_fft_menu (ss->mw[h_fft_menu])
88 #define help_find_menu (ss->mw[h_find_menu])
89 #define help_undo_menu (ss->mw[h_undo_menu])
90 #define help_sync_menu (ss->mw[h_sync_menu])
91 #define help_controls_menu (ss->mw[h_controls_menu])
92 #define help_env_menu (ss->mw[h_env_menu])
93 #define help_marks_menu (ss->mw[h_marks_menu])
94 #define help_sound_files_menu (ss->mw[h_sound_files_menu])
95 #define help_init_file_menu (ss->mw[h_init_file_menu])
96 #define help_mix_menu (ss->mw[h_mix_menu])
97 #define help_keys_menu (ss->mw[h_keys_menu])
98 #define help_play_menu (ss->mw[h_play_menu])
99 #define help_save_menu (ss->mw[h_save_menu])
100 #define help_resample_menu (ss->mw[h_resample_menu])
101 #define help_filter_menu (ss->mw[h_filter_menu])
102 #define help_insert_menu (ss->mw[h_insert_menu])
103 #define help_delete_menu (ss->mw[h_delete_menu])
104 #define help_reverb_menu (ss->mw[h_reverb_menu])
105 #define help_debug_menu (ss->mw[h_debug_menu])
106 #define help_region_menu (ss->mw[h_region_menu])
107 #define help_selection_menu (ss->mw[h_selection_menu])
108 #define help_colors_menu (ss->mw[h_colors_menu])
109 
110 #define options_menu (ss->mw[o_menu])
111 #define options_cascade_menu (ss->mw[o_cascade_menu])
112 #define options_transform_menu (ss->mw[o_transform_menu])
113 #define options_save_state_menu (ss->mw[o_save_state_menu])
114 #define options_sep_menu (ss->mw[o_sep_menu])
115 #define options_preferences_menu (ss->mw[o_preferences_menu])
116 #define options_controls_menu (ss->mw[o_controls_menu])
117 
118 #define view_menu (ss->mw[v_menu])
119 #define view_cascade_menu (ss->mw[v_cascade_menu])
120 #define view_graph_style_menu (ss->mw[v_graph_style_menu])
121 #define view_graph_style_cascade_menu (ss->mw[v_graph_style_cascade_menu])
122 #define view_lines_menu (ss->mw[v_lines_menu])
123 #define view_dots_menu (ss->mw[v_dots_menu])
124 #define view_filled_menu (ss->mw[v_filled_menu])
125 #define view_dots_and_lines_menu (ss->mw[v_dots_and_lines_menu])
126 #define view_lollipops_menu (ss->mw[v_lollipops_menu])
127 #define view_zero_menu (ss->mw[v_zero_menu])
128 #define view_cursor_menu (ss->mw[v_cursor_menu])
129 #define view_inset_menu (ss->mw[v_inset_menu])
130 #define view_controls_menu (ss->mw[v_controls_menu])
131 #define view_listener_menu (ss->mw[v_listener_menu])
132 #define view_region_menu (ss->mw[v_region_menu])
133 #define view_combine_menu (ss->mw[v_combine_menu])
134 #define view_combine_cascade_menu (ss->mw[v_combine_cascade_menu])
135 #define view_combine_separate_menu (ss->mw[v_combine_separate_menu])
136 #define view_combine_combined_menu (ss->mw[v_combine_combined_menu])
137 #define view_combine_superimposed_menu (ss->mw[v_combine_superimposed_menu])
138 #define view_color_orientation_menu (ss->mw[v_color_orientation_menu])
139 #define view_files_menu (ss->mw[v_files_menu])
140 #define view_mix_dialog_menu (ss->mw[v_mix_dialog_menu])
141 #define view_x_axis_menu (ss->mw[v_x_axis_menu])
142 #define view_x_axis_cascade_menu (ss->mw[v_x_axis_cascade_menu])
143 #define view_x_axis_seconds_menu (ss->mw[v_x_axis_seconds_menu])
144 #define view_x_axis_clock_menu (ss->mw[v_x_axis_clock_menu])
145 #define view_x_axis_samples_menu (ss->mw[v_x_axis_samples_menu])
146 #define view_x_axis_percentage_menu (ss->mw[v_x_axis_percentage_menu])
147 #define view_x_axis_beats_menu (ss->mw[v_x_axis_beats_menu])
148 #define view_x_axis_measures_menu (ss->mw[v_x_axis_measures_menu])
149 #define view_axes_menu (ss->mw[v_axes_menu])
150 #define view_axes_cascade_menu (ss->mw[v_axes_cascade_menu])
151 #define view_no_axes_menu (ss->mw[v_no_axes_menu])
152 #define view_all_axes_menu (ss->mw[v_all_axes_menu])
153 #define view_just_x_axis_menu (ss->mw[v_just_x_axis_menu])
154 #define view_all_axes_unlabelled_menu (ss->mw[v_all_axes_unlabelled_menu])
155 #define view_just_x_axis_unlabelled_menu (ss->mw[v_just_x_axis_unlabelled_menu])
156 #define view_bare_x_axis_menu (ss->mw[v_bare_x_axis_menu])
157 #define view_sep2_menu (ss->mw[v_sep2_menu])
158 #define view_focus_style_menu (ss->mw[v_focus_style_menu])
159 #define view_focus_cascade_menu (ss->mw[v_focus_cascade_menu])
160 #define view_focus_right_menu (ss->mw[v_focus_right_menu])
161 #define view_focus_left_menu (ss->mw[v_focus_left_menu])
162 #define view_focus_middle_menu (ss->mw[v_focus_middle_menu])
163 #define view_focus_active_menu (ss->mw[v_focus_active_menu])
164 #define view_grid_menu (ss->mw[v_grid_menu])
165 
166 void edit_menu_update(void);
167 void view_menu_update(void);
168 void file_menu_update(void);
169 void update_file_from_menu(void);
170 void revert_file_from_menu(void);
171 void save_state_from_menu(void);
172 void unprotect_callback(int slot);
173 
174 int g_add_to_main_menu(const char *label, int slot);
175 widget_t g_add_to_menu(int which_menu, const char *label, int callb, int position);
176 int g_remove_from_menu(int which_menu, const char *label);
177 void g_menu_callback(int callb);
178 
179 #endif
180