1 /* GSequencer - Advanced GTK Sequencer
2 * Copyright (C) 2005-2020 Joël Krähemann
3 *
4 * This file is part of GSequencer.
5 *
6 * GSequencer is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * GSequencer is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with GSequencer. If not, see <http://www.gnu.org/licenses/>.
18 */
19
20 #include <ags/X/editor/ags_composite_toolbar_callbacks.h>
21
22 #include <ags/X/ags_ui_provider.h>
23 #include <ags/X/ags_window.h>
24 #include <ags/X/ags_composite_editor.h>
25 #include <ags/X/ags_notation_editor.h>
26 #include <ags/X/ags_sheet_window.h>
27 #include <ags/X/ags_sheet_editor.h>
28 #include <ags/X/ags_automation_window.h>
29 #include <ags/X/ags_automation_editor.h>
30 #include <ags/X/ags_wave_window.h>
31 #include <ags/X/ags_wave_editor.h>
32
33 void
ags_composite_toolbar_position_callback(GtkToolButton * button,AgsCompositeToolbar * composite_toolbar)34 ags_composite_toolbar_position_callback(GtkToolButton *button, AgsCompositeToolbar *composite_toolbar)
35 {
36 if(composite_toolbar->block_selected_tool){
37 return;
38 }
39
40 composite_toolbar->block_selected_tool = TRUE;
41
42 ags_composite_toolbar_set_selected_tool(composite_toolbar,
43 (GtkToggleToolButton *) button);
44
45 composite_toolbar->block_selected_tool = FALSE;
46 }
47
48 void
ags_composite_toolbar_edit_callback(GtkToolButton * button,AgsCompositeToolbar * composite_toolbar)49 ags_composite_toolbar_edit_callback(GtkToolButton *button, AgsCompositeToolbar *composite_toolbar)
50 {
51 if(composite_toolbar->block_selected_tool){
52 return;
53 }
54
55 composite_toolbar->block_selected_tool = TRUE;
56
57 ags_composite_toolbar_set_selected_tool(composite_toolbar,
58 (GtkToggleToolButton *) button);
59
60 composite_toolbar->block_selected_tool = FALSE;
61 }
62
63 void
ags_composite_toolbar_clear_callback(GtkToolButton * button,AgsCompositeToolbar * composite_toolbar)64 ags_composite_toolbar_clear_callback(GtkToolButton *button, AgsCompositeToolbar *composite_toolbar)
65 {
66 if(composite_toolbar->block_selected_tool){
67 return;
68 }
69
70 composite_toolbar->block_selected_tool = TRUE;
71
72 ags_composite_toolbar_set_selected_tool(composite_toolbar,
73 (GtkToggleToolButton *) button);
74
75 composite_toolbar->block_selected_tool = FALSE;
76 }
77
78 void
ags_composite_toolbar_select_callback(GtkToolButton * button,AgsCompositeToolbar * composite_toolbar)79 ags_composite_toolbar_select_callback(GtkToolButton *button, AgsCompositeToolbar *composite_toolbar)
80 {
81 if(composite_toolbar->block_selected_tool){
82 return;
83 }
84
85 composite_toolbar->block_selected_tool = TRUE;
86
87 ags_composite_toolbar_set_selected_tool(composite_toolbar,
88 (GtkToggleToolButton *) button);
89
90 composite_toolbar->block_selected_tool = FALSE;
91 }
92
93 void
ags_composite_toolbar_invert_callback(GtkToolButton * button,AgsCompositeToolbar * composite_toolbar)94 ags_composite_toolbar_invert_callback(GtkToolButton *button, AgsCompositeToolbar *composite_toolbar)
95 {
96 AgsCompositeEditor *composite_editor;
97 AgsNotationEditor *notation_editor;
98 AgsSheetEditor *sheet_editor;
99 AgsAutomationEditor *automation_editor;
100 AgsWaveEditor *wave_editor;
101
102 AgsApplicationContext *application_context;
103
104 gboolean success;
105
106 application_context = ags_application_context_get_instance();
107
108 composite_editor = (AgsCompositeEditor *) ags_ui_provider_get_composite_editor(AGS_UI_PROVIDER(application_context));
109
110 notation_editor = NULL;
111 sheet_editor = NULL;
112 automation_editor = NULL;
113 wave_editor = NULL;
114
115 success = FALSE;
116
117 if(composite_editor != NULL){
118 ags_composite_editor_invert(composite_editor);
119
120 success = TRUE;
121 }else{
122 notation_editor = gtk_widget_get_ancestor(composite_toolbar,
123 AGS_TYPE_NOTATION_EDITOR);
124
125 if(notation_editor != NULL){
126 ags_notation_editor_invert(notation_editor);
127
128 success = TRUE;
129 }else{
130 sheet_editor = gtk_widget_get_ancestor(composite_toolbar,
131 AGS_TYPE_SHEET_EDITOR);
132 }
133
134 if(sheet_editor != NULL){
135 g_warning("invert not supported");
136
137 success = TRUE;
138 }else{
139 if(notation_editor == NULL){
140 automation_editor = gtk_widget_get_ancestor(composite_toolbar,
141 AGS_TYPE_AUTOMATION_EDITOR);
142 }
143 }
144
145 if(automation_editor != NULL){
146 g_warning("invert not supported");
147
148 success = TRUE;
149 }else{
150 if(notation_editor == NULL &&
151 sheet_editor == NULL){
152 wave_editor = gtk_widget_get_ancestor(composite_toolbar,
153 AGS_TYPE_WAVE_EDITOR);
154 }
155 }
156
157 if(wave_editor != NULL){
158 g_warning("invert not supported");
159
160 success = TRUE;
161 }
162 }
163 }
164
165 void
ags_composite_toolbar_copy_callback(GtkToolButton * button,AgsCompositeToolbar * composite_toolbar)166 ags_composite_toolbar_copy_callback(GtkToolButton *button, AgsCompositeToolbar *composite_toolbar)
167 {
168 AgsCompositeEditor *composite_editor;
169 AgsNotationEditor *notation_editor;
170 AgsSheetEditor *sheet_editor;
171 AgsAutomationEditor *automation_editor;
172 AgsWaveEditor *wave_editor;
173
174 AgsApplicationContext *application_context;
175
176 gboolean success;
177
178 application_context = ags_application_context_get_instance();
179
180 composite_editor = (AgsCompositeEditor *) ags_ui_provider_get_composite_editor(AGS_UI_PROVIDER(application_context));
181
182 notation_editor = NULL;
183 sheet_editor = NULL;
184 automation_editor = NULL;
185 wave_editor = NULL;
186
187 success = FALSE;
188
189 if(composite_editor != NULL){
190 ags_composite_editor_copy(composite_editor);
191
192 success = TRUE;
193 }else{
194 notation_editor = gtk_widget_get_ancestor(composite_toolbar,
195 AGS_TYPE_NOTATION_EDITOR);
196
197 if(notation_editor != NULL){
198 ags_notation_editor_copy(notation_editor);
199
200 success = TRUE;
201 }else{
202 sheet_editor = gtk_widget_get_ancestor(composite_toolbar,
203 AGS_TYPE_SHEET_EDITOR);
204 }
205
206 if(sheet_editor != NULL){
207 ags_sheet_editor_copy(sheet_editor);
208
209 success = TRUE;
210 }else{
211 if(notation_editor == NULL){
212 automation_editor = gtk_widget_get_ancestor(composite_toolbar,
213 AGS_TYPE_AUTOMATION_EDITOR);
214 }
215 }
216
217 if(automation_editor != NULL){
218 ags_automation_editor_copy(automation_editor);
219
220 success = TRUE;
221 }else{
222 if(notation_editor == NULL &&
223 sheet_editor == NULL){
224 wave_editor = gtk_widget_get_ancestor(composite_toolbar,
225 AGS_TYPE_WAVE_EDITOR);
226 }
227 }
228
229 if(wave_editor != NULL){
230 ags_wave_editor_copy(wave_editor);
231
232 success = TRUE;
233 }
234 }
235 }
236
237 void
ags_composite_toolbar_cut_callback(GtkToolButton * button,AgsCompositeToolbar * composite_toolbar)238 ags_composite_toolbar_cut_callback(GtkToolButton *button, AgsCompositeToolbar *composite_toolbar)
239 {
240 AgsCompositeEditor *composite_editor;
241 AgsNotationEditor *notation_editor;
242 AgsSheetEditor *sheet_editor;
243 AgsAutomationEditor *automation_editor;
244 AgsWaveEditor *wave_editor;
245
246 AgsApplicationContext *application_context;
247
248 gboolean success;
249
250 application_context = ags_application_context_get_instance();
251
252 composite_editor = (AgsCompositeEditor *) ags_ui_provider_get_composite_editor(AGS_UI_PROVIDER(application_context));
253
254 notation_editor = NULL;
255 sheet_editor = NULL;
256 automation_editor = NULL;
257 wave_editor = NULL;
258
259 success = FALSE;
260
261 if(composite_editor != NULL){
262 ags_composite_editor_cut(composite_editor);
263
264 success = TRUE;
265 }else{
266 notation_editor = gtk_widget_get_ancestor(composite_toolbar,
267 AGS_TYPE_NOTATION_EDITOR);
268
269 if(notation_editor != NULL){
270 ags_notation_editor_cut(notation_editor);
271
272 success = TRUE;
273 }else{
274 sheet_editor = gtk_widget_get_ancestor(composite_toolbar,
275 AGS_TYPE_SHEET_EDITOR);
276 }
277
278 if(sheet_editor != NULL){
279 ags_sheet_editor_cut(sheet_editor);
280
281 success = TRUE;
282 }else{
283 if(notation_editor == NULL){
284 automation_editor = gtk_widget_get_ancestor(composite_toolbar,
285 AGS_TYPE_AUTOMATION_EDITOR);
286 }
287 }
288
289 if(automation_editor != NULL){
290 ags_automation_editor_cut(automation_editor);
291
292 success = TRUE;
293 }else{
294 if(notation_editor == NULL &&
295 sheet_editor == NULL){
296 wave_editor = gtk_widget_get_ancestor(composite_toolbar,
297 AGS_TYPE_WAVE_EDITOR);
298 }
299 }
300
301 if(wave_editor != NULL){
302 ags_wave_editor_cut(wave_editor);
303
304 success = TRUE;
305 }
306 }
307 }
308
309 void
ags_composite_toolbar_paste_callback(GtkToolButton * button,AgsCompositeToolbar * composite_toolbar)310 ags_composite_toolbar_paste_callback(GtkToolButton *button, AgsCompositeToolbar *composite_toolbar)
311 {
312 AgsCompositeEditor *composite_editor;
313 AgsNotationEditor *notation_editor;
314 AgsSheetEditor *sheet_editor;
315 AgsAutomationEditor *automation_editor;
316 AgsWaveEditor *wave_editor;
317
318 AgsApplicationContext *application_context;
319
320 gboolean success;
321
322 application_context = ags_application_context_get_instance();
323
324 composite_editor = (AgsCompositeEditor *) ags_ui_provider_get_composite_editor(AGS_UI_PROVIDER(application_context));
325
326 notation_editor = NULL;
327 sheet_editor = NULL;
328 automation_editor = NULL;
329 wave_editor = NULL;
330
331 success = FALSE;
332
333 if(composite_editor != NULL){
334 ags_composite_editor_paste(composite_editor);
335
336 success = TRUE;
337 }else{
338 notation_editor = gtk_widget_get_ancestor(composite_toolbar,
339 AGS_TYPE_NOTATION_EDITOR);
340
341 if(notation_editor != NULL){
342 ags_notation_editor_paste(notation_editor);
343
344 success = TRUE;
345 }else{
346 sheet_editor = gtk_widget_get_ancestor(composite_toolbar,
347 AGS_TYPE_SHEET_EDITOR);
348 }
349
350 if(sheet_editor != NULL){
351 ags_sheet_editor_paste(sheet_editor);
352
353 success = TRUE;
354 }else{
355 if(notation_editor == NULL){
356 automation_editor = gtk_widget_get_ancestor(composite_toolbar,
357 AGS_TYPE_AUTOMATION_EDITOR);
358 }
359 }
360
361 if(automation_editor != NULL){
362 ags_automation_editor_paste(automation_editor);
363
364 success = TRUE;
365 }else{
366 if(notation_editor == NULL &&
367 sheet_editor == NULL){
368 wave_editor = gtk_widget_get_ancestor(composite_toolbar,
369 AGS_TYPE_WAVE_EDITOR);
370 }
371 }
372
373 if(wave_editor != NULL){
374 ags_wave_editor_paste(wave_editor);
375
376 success = TRUE;
377 }
378 }
379 }
380
381 void
ags_composite_toolbar_paste_match_audio_channel_callback(GtkMenuItem * button,AgsCompositeToolbar * composite_toolbar)382 ags_composite_toolbar_paste_match_audio_channel_callback(GtkMenuItem *button, AgsCompositeToolbar *composite_toolbar)
383 {
384 //TODO:JK: implement me
385 }
386
387 void
ags_composite_toolbar_paste_match_line_callback(GtkMenuItem * button,AgsCompositeToolbar * composite_toolbar)388 ags_composite_toolbar_paste_match_line_callback(GtkMenuItem *button, AgsCompositeToolbar *composite_toolbar)
389 {
390 //TODO:JK: implement me
391 }
392
393 void
ags_composite_toolbar_paste_no_duplicates_callback(GtkMenuItem * button,AgsCompositeToolbar * composite_toolbar)394 ags_composite_toolbar_paste_no_duplicates_callback(GtkMenuItem *button, AgsCompositeToolbar *composite_toolbar)
395 {
396 //TODO:JK: implement me
397 }
398
399 void
ags_composite_toolbar_menu_tool_popup_notation_move_note_callback(GtkMenuItem * item,AgsCompositeToolbar * composite_toolbar)400 ags_composite_toolbar_menu_tool_popup_notation_move_note_callback(GtkMenuItem *item, AgsCompositeToolbar *composite_toolbar)
401 {
402 //TODO:JK: implement me
403 }
404
405 void
ags_composite_toolbar_menu_tool_popup_notation_crop_note_callback(GtkMenuItem * item,AgsCompositeToolbar * composite_toolbar)406 ags_composite_toolbar_menu_tool_popup_notation_crop_note_callback(GtkMenuItem *item, AgsCompositeToolbar *composite_toolbar)
407 {
408 //TODO:JK: implement me
409 }
410
411 void
ags_composite_toolbar_menu_tool_popup_notation_select_note_callback(GtkMenuItem * item,AgsCompositeToolbar * composite_toolbar)412 ags_composite_toolbar_menu_tool_popup_notation_select_note_callback(GtkMenuItem *item, AgsCompositeToolbar *composite_toolbar)
413 {
414 //TODO:JK: implement me
415 }
416
417 void
ags_composite_toolbar_menu_tool_popup_notation_position_cursor_callback(GtkMenuItem * item,AgsCompositeToolbar * composite_toolbar)418 ags_composite_toolbar_menu_tool_popup_notation_position_cursor_callback(GtkMenuItem *item, AgsCompositeToolbar *composite_toolbar)
419 {
420 //TODO:JK: implement me
421 }
422
423 void
ags_composite_toolbar_menu_tool_popup_sheet_position_cursor_callback(GtkMenuItem * item,AgsCompositeToolbar * composite_toolbar)424 ags_composite_toolbar_menu_tool_popup_sheet_position_cursor_callback(GtkMenuItem *item, AgsCompositeToolbar *composite_toolbar)
425 {
426 //TODO:JK: implement me
427 }
428
429 void
ags_composite_toolbar_menu_tool_popup_automation_select_acceleration_callback(GtkMenuItem * item,AgsCompositeToolbar * composite_toolbar)430 ags_composite_toolbar_menu_tool_popup_automation_select_acceleration_callback(GtkMenuItem *item, AgsCompositeToolbar *composite_toolbar)
431 {
432 //TODO:JK: implement me
433 }
434
435 void
ags_composite_toolbar_menu_tool_popup_automation_ramp_acceleration_callback(GtkMenuItem * item,AgsCompositeToolbar * composite_toolbar)436 ags_composite_toolbar_menu_tool_popup_automation_ramp_acceleration_callback(GtkMenuItem *item, AgsCompositeToolbar *composite_toolbar)
437 {
438 //TODO:JK: implement me
439 }
440
441 void
ags_composite_toolbar_menu_tool_popup_automation_position_cursor_callback(GtkMenuItem * item,AgsCompositeToolbar * composite_toolbar)442 ags_composite_toolbar_menu_tool_popup_automation_position_cursor_callback(GtkMenuItem *item, AgsCompositeToolbar *composite_toolbar)
443 {
444 //TODO:JK: implement me
445 }
446
447 void
ags_composite_toolbar_menu_tool_popup_wave_select_buffer_callback(GtkMenuItem * item,AgsCompositeToolbar * composite_toolbar)448 ags_composite_toolbar_menu_tool_popup_wave_select_buffer_callback(GtkMenuItem *item, AgsCompositeToolbar *composite_toolbar)
449 {
450 //TODO:JK: implement me
451 }
452
453 void
ags_composite_toolbar_menu_tool_popup_wave_position_cursor_callback(GtkMenuItem * item,AgsCompositeToolbar * composite_toolbar)454 ags_composite_toolbar_menu_tool_popup_wave_position_cursor_callback(GtkMenuItem *item, AgsCompositeToolbar *composite_toolbar)
455 {
456 //TODO:JK: implement me
457 }
458
459 void
ags_composite_toolbar_menu_tool_popup_enable_all_audio_channels_callback(GtkMenuItem * item,AgsCompositeToolbar * composite_toolbar)460 ags_composite_toolbar_menu_tool_popup_enable_all_audio_channels_callback(GtkMenuItem *item, AgsCompositeToolbar *composite_toolbar)
461 {
462 //TODO:JK: implement me
463 }
464
465 void
ags_composite_toolbar_menu_tool_popup_disable_all_audio_channels_callback(GtkMenuItem * item,AgsCompositeToolbar * composite_toolbar)466 ags_composite_toolbar_menu_tool_popup_disable_all_audio_channels_callback(GtkMenuItem *item, AgsCompositeToolbar *composite_toolbar)
467 {
468 //TODO:JK: implement me
469 }
470
471 void
ags_composite_toolbar_menu_tool_popup_enable_all_lines_callback(GtkMenuItem * item,AgsCompositeToolbar * composite_toolbar)472 ags_composite_toolbar_menu_tool_popup_enable_all_lines_callback(GtkMenuItem *item, AgsCompositeToolbar *composite_toolbar)
473 {
474 //TODO:JK: implement me
475 }
476
477 void
ags_composite_toolbar_menu_tool_popup_disable_all_lines_callback(GtkMenuItem * item,AgsCompositeToolbar * composite_toolbar)478 ags_composite_toolbar_menu_tool_popup_disable_all_lines_callback(GtkMenuItem *item, AgsCompositeToolbar *composite_toolbar)
479 {
480 //TODO:JK: implement me
481 }
482
483 void
ags_composite_toolbar_zoom_callback(GtkComboBox * combo_box,AgsCompositeToolbar * composite_toolbar)484 ags_composite_toolbar_zoom_callback(GtkComboBox *combo_box, AgsCompositeToolbar *composite_toolbar)
485 {
486 //TODO:JK: implement me
487 }
488
489 void
ags_composite_toolbar_opacity_callback(GtkSpinButton * spin_button,AgsCompositeToolbar * composite_toolbar)490 ags_composite_toolbar_opacity_callback(GtkSpinButton *spin_button, AgsCompositeToolbar *composite_toolbar)
491 {
492 //TODO:JK: implement me
493 }
494