Fixed one segfault during undo.
[epichord.git] / src / ui.cpp
bloba9b10db721cf34bb62eaeac85d90e5129b79566c
1 // generated by Fast Light User Interface Designer (fluid) version 2.1000
3 #include "ui.h"
4 /*
5 Epichord - a midi sequencer
6 Copyright (C) 2008 Evan Rinehart
8 This program is free software; you can redistribute it and/or
9 modify it under the terms of the GNU General Public License
10 as published by the Free Software Foundation; either version 2
11 of the License, or (at your option) any later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to
21 The Free Software Foundation, Inc.
22 51 Franklin Street, Fifth Floor
23 Boston, MA 02110-1301, USA
25 #include <stdlib.h>
26 #include <fltk/events.h>
27 #include <fltk/file_chooser.h>
28 #include "backend.h"
29 #include "util.h"
30 #include "uihelper.h"
31 #include "config.h"
32 extern UI* ui;
34 inline void UI::cb_main_window_i(fltk::Window* o, void*) {
35 config_window->hide();
36 help_window->hide();
37 action_window->hide();
38 scope_window->hide();
39 o->hide();
41 save_config();
43 void UI::cb_main_window(fltk::Window* o, void* v) {
44 ((UI*)(o->user_data()))->cb_main_window_i(o,v);
47 inline void UI::cb_line_i(fltk::Button*, void*) {
48 ui->track_info->toggle_controls();
50 void UI::cb_line(fltk::Button* o, void* v) {
51 ((UI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_line_i(o,v);
54 inline void UI::cb_song_vscroll_i(fltk::Scrollbar* o, void*) {
55 int target = (int)o->value();
56 int dummy = ui->arranger->scrollx;
57 ui->arranger->scrollTo(dummy,target);
59 void UI::cb_song_vscroll(fltk::Scrollbar* o, void* v) {
60 ((UI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_song_vscroll_i(o,v);
63 inline void UI::cb_song_hscroll_i(fltk::ThumbWheel* o, void*) {
64 ui->arranger->scrollTo((int)o->value(),ui->arranger->scrolly);
66 void UI::cb_song_hscroll(fltk::ThumbWheel* o, void* v) {
67 ((UI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_song_hscroll_i(o,v);
70 inline void UI::cb_pattern_vscroll_i(fltk::Scrollbar* o, void*) {
71 int target = (int)o->value();
72 int dummy = ui->piano_roll->scrollx;
73 ui->piano_roll->scrollTo(dummy,target);
75 void UI::cb_pattern_vscroll(fltk::Scrollbar* o, void* v) {
76 ((UI*)(o->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_pattern_vscroll_i(o,v);
79 inline void UI::cb_pattern_hscroll_i(fltk::ThumbWheel* o, void*) {
80 ui->piano_roll->scrollTo((int)o->value(),ui->piano_roll->scrolly);
82 void UI::cb_pattern_hscroll(fltk::ThumbWheel* o, void* v) {
83 ((UI*)(o->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_pattern_hscroll_i(o,v);
86 inline void UI::cb_event_menu_button_i(fltk::Button* o, void*) {
87 if(o->state()==0){
88 ui->event_menu->hide();
89 ui->event_edit->show();
91 else{
92 ui->event_edit->hide();
93 ui->event_edit->recount_has();
94 ui->event_menu->show();
97 void UI::cb_event_menu_button(fltk::Button* o, void* v) {
98 ((UI*)(o->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_event_menu_button_i(o,v);
101 inline void UI::cb_L_i(fltk::Button* o, void*) {
102 ui->event_edit->label_flag = o->state();
103 ui->event_edit->redraw();
105 void UI::cb_L(fltk::Button* o, void* v) {
106 ((UI*)(o->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_L_i(o,v);
109 inline void UI::cb_C_i(fltk::Button*, void*) {
110 ui->event_edit->clear_events();
112 void UI::cb_C(fltk::Button* o, void* v) {
113 ((UI*)(o->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_C_i(o,v);
116 inline void UI::cb_X_i(fltk::Button*, void*) {
117 ui->event_edit->clear_non_note_events();
119 void UI::cb_X(fltk::Button* o, void* v) {
120 ((UI*)(o->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_X_i(o,v);
123 inline void UI::cb_Z_i(fltk::Button*, void*) {
124 ui->event_edit->clear_all_events();
126 void UI::cb_Z(fltk::Button* o, void* v) {
127 ((UI*)(o->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_Z_i(o,v);
130 inline void UI::cb__i(fltk::Button*, void*) {
131 show_song_edit();
133 void UI::cb_(fltk::Button* o, void* v) {
134 ((UI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb__i(o,v);
137 inline void UI::cb_play_button_i(fltk::Button*, void*) {
138 press_play();
140 void UI::cb_play_button(fltk::Button* o, void* v) {
141 ((UI*)(o->parent()->parent()->user_data()))->cb_play_button_i(o,v);
144 inline void UI::cb_stop_button_i(fltk::Button*, void*) {
145 press_stop();
147 void UI::cb_stop_button(fltk::Button* o, void* v) {
148 ((UI*)(o->parent()->parent()->user_data()))->cb_stop_button_i(o,v);
151 inline void UI::cb_record_button_i(fltk::Button*, void*) {
152 toggle_backend_recording();
154 void UI::cb_record_button(fltk::Button* o, void* v) {
155 ((UI*)(o->parent()->parent()->user_data()))->cb_record_button_i(o,v);
158 inline void UI::cb_qbutton4_i(fltk::Button*, void*) {
159 set_quant(4);
161 void UI::cb_qbutton4(fltk::Button* o, void* v) {
162 ((UI*)(o->parent()->parent()->parent()->user_data()))->cb_qbutton4_i(o,v);
165 inline void UI::cb_qbutton8_i(fltk::Button*, void*) {
166 set_quant(8);
168 void UI::cb_qbutton8(fltk::Button* o, void* v) {
169 ((UI*)(o->parent()->parent()->parent()->user_data()))->cb_qbutton8_i(o,v);
172 inline void UI::cb_qbutton16_i(fltk::Button*, void*) {
173 set_quant(16);
175 void UI::cb_qbutton16(fltk::Button* o, void* v) {
176 ((UI*)(o->parent()->parent()->parent()->user_data()))->cb_qbutton16_i(o,v);
179 inline void UI::cb_qbutton32_i(fltk::Button*, void*) {
180 set_quant(32);
182 void UI::cb_qbutton32(fltk::Button* o, void* v) {
183 ((UI*)(o->parent()->parent()->parent()->user_data()))->cb_qbutton32_i(o,v);
186 inline void UI::cb_qbutton64_i(fltk::Button*, void*) {
187 set_quant(64);
189 void UI::cb_qbutton64(fltk::Button* o, void* v) {
190 ((UI*)(o->parent()->parent()->parent()->user_data()))->cb_qbutton64_i(o,v);
193 inline void UI::cb_qbutton128_i(fltk::Button*, void*) {
194 set_quant(128);
196 void UI::cb_qbutton128(fltk::Button* o, void* v) {
197 ((UI*)(o->parent()->parent()->parent()->user_data()))->cb_qbutton128_i(o,v);
200 inline void UI::cb_qbutton0_i(fltk::Button*, void*) {
201 set_quant(0);
203 void UI::cb_qbutton0(fltk::Button* o, void* v) {
204 ((UI*)(o->parent()->parent()->parent()->user_data()))->cb_qbutton0_i(o,v);
207 inline void UI::cb_tool_button_i(fltk::Button*, void*) {
208 toggle_tool();
210 void UI::cb_tool_button(fltk::Button* o, void* v) {
211 ((UI*)(o->parent()->parent()->parent()->user_data()))->cb_tool_button_i(o,v);
214 inline void UI::cb_edit_button_i(fltk::Button*, void*) {
215 set_songtool(0);
217 void UI::cb_edit_button(fltk::Button* o, void* v) {
218 ((UI*)(o->parent()->parent()->parent()->user_data()))->cb_edit_button_i(o,v);
221 inline void UI::cb_color_button_i(fltk::Button*, void*) {
222 set_songtool(1);
224 void UI::cb_color_button(fltk::Button* o, void* v) {
225 ((UI*)(o->parent()->parent()->parent()->user_data()))->cb_color_button_i(o,v);
228 inline void UI::cb_unclone_button_i(fltk::Button*, void*) {
229 set_songtool(2);
231 void UI::cb_unclone_button(fltk::Button* o, void* v) {
232 ((UI*)(o->parent()->parent()->parent()->user_data()))->cb_unclone_button_i(o,v);
235 inline void UI::cb_split_button_i(fltk::Button*, void*) {
236 set_songtool(3);
238 void UI::cb_split_button(fltk::Button* o, void* v) {
239 ((UI*)(o->parent()->parent()->parent()->user_data()))->cb_split_button_i(o,v);
242 inline void UI::cb_join_button_i(fltk::Button*, void*) {
243 set_songtool(4);
245 void UI::cb_join_button(fltk::Button* o, void* v) {
246 ((UI*)(o->parent()->parent()->parent()->user_data()))->cb_join_button_i(o,v);
249 inline void UI::cb_loop_toggle_i(fltk::Button*, void*) {
250 toggle_loop();
252 void UI::cb_loop_toggle(fltk::Button* o, void* v) {
253 ((UI*)(o->parent()->parent()->user_data()))->cb_loop_toggle_i(o,v);
256 inline void UI::cb_conf_toggle_i(fltk::Button* o, void*) {
257 if(o->state()){
258 ui->config_window->show();
260 else{
261 ui->config_window->hide();
264 void UI::cb_conf_toggle(fltk::Button* o, void* v) {
265 ((UI*)(o->parent()->parent()->user_data()))->cb_conf_toggle_i(o,v);
268 inline void UI::cb_scope_button_i(fltk::Button* o, void*) {
269 if(o->state()){
270 ui->scope_window->show();
272 else{
273 ui->scope_window->hide();
276 void UI::cb_scope_button(fltk::Button* o, void* v) {
277 ((UI*)(o->parent()->parent()->user_data()))->cb_scope_button_i(o,v);
280 inline void UI::cb_file_button_i(fltk::Button* o, void*) {
281 if(o->state()){
282 ui->action_window->show();
284 else{
285 ui->action_window->hide();
288 void UI::cb_file_button(fltk::Button* o, void* v) {
289 ((UI*)(o->parent()->parent()->user_data()))->cb_file_button_i(o,v);
292 inline void UI::cb_help_button_i(fltk::Button* o, void*) {
293 if(o->state()){
294 ui->help_window->show();
296 else{
297 ui->help_window->hide();
300 void UI::cb_help_button(fltk::Button* o, void* v) {
301 ((UI*)(o->parent()->parent()->user_data()))->cb_help_button_i(o,v);
304 inline void UI::cb_beats_per_measure_i(fltk::ValueInput* o, void*) {
305 if(o->value() > o->maximum())
306 o->value(o->maximum());
307 if(o->value() < o->minimum())
308 o->value(o->minimum());
309 set_beats_per_measure((int)o->value());
311 void UI::cb_beats_per_measure(fltk::ValueInput* o, void* v) {
312 ((UI*)(o->parent()->parent()->parent()->user_data()))->cb_beats_per_measure_i(o,v);
315 inline void UI::cb_measures_per_phrase_i(fltk::ValueInput* o, void*) {
316 if(o->value() > o->maximum())
317 o->value(o->maximum());
318 if(o->value() < o->minimum())
319 o->value(o->minimum());
320 set_measures_per_phrase((int)o->value());
322 void UI::cb_measures_per_phrase(fltk::ValueInput* o, void* v) {
323 ((UI*)(o->parent()->parent()->parent()->user_data()))->cb_measures_per_phrase_i(o,v);
326 inline void UI::cb_bpm_wheel_i(fltk::ThumbWheel* o, void*) {
327 set_bpm((int)o->value());
328 ui->bpm_output->value(o->value());
330 void UI::cb_bpm_wheel(fltk::ThumbWheel* o, void* v) {
331 ((UI*)(o->parent()->parent()->parent()->user_data()))->cb_bpm_wheel_i(o,v);
334 inline void UI::cb_measures_until_record_i(fltk::ValueInput* o, void*) {
335 if(o->value() > o->maximum())
336 o->value(o->maximum());
337 if(o->value() < o->minimum())
338 o->value(o->minimum());
339 set_measures_until_record((int)o->value());
341 void UI::cb_measures_until_record(fltk::ValueInput* o, void* v) {
342 ((UI*)(o->parent()->parent()->parent()->user_data()))->cb_measures_until_record_i(o,v);
345 inline void UI::cb_check_alwayscopy_i(fltk::CheckButton* o, void*) {
346 set_alwayscopy(o->value());
348 void UI::cb_check_alwayscopy(fltk::CheckButton* o, void* v) {
349 ((UI*)(o->parent()->parent()->parent()->user_data()))->cb_check_alwayscopy_i(o,v);
352 inline void UI::cb_check_autotrackname_i(fltk::CheckButton* o, void*) {
353 set_autotrackname(o->value());
355 void UI::cb_check_autotrackname(fltk::CheckButton* o, void* v) {
356 ((UI*)(o->parent()->parent()->parent()->user_data()))->cb_check_autotrackname_i(o,v);
359 inline void UI::cb_check_passthru_i(fltk::CheckButton* o, void*) {
360 set_passthru(o->value());
362 void UI::cb_check_passthru(fltk::CheckButton* o, void* v) {
363 ((UI*)(o->parent()->parent()->parent()->user_data()))->cb_check_passthru_i(o,v);
366 inline void UI::cb_check_playinsert_i(fltk::CheckButton* o, void*) {
367 set_playinsert(o->value());
369 void UI::cb_check_playinsert(fltk::CheckButton* o, void* v) {
370 ((UI*)(o->parent()->parent()->parent()->user_data()))->cb_check_playinsert_i(o,v);
373 inline void UI::cb_check_recordonchan_i(fltk::CheckButton* o, void*) {
374 set_recordonchan(o->value());
376 void UI::cb_check_recordonchan(fltk::CheckButton* o, void* v) {
377 ((UI*)(o->parent()->parent()->parent()->user_data()))->cb_check_recordonchan_i(o,v);
380 inline void UI::cb_check_playmove_i(fltk::CheckButton* o, void*) {
381 set_playmove(o->value());
383 void UI::cb_check_playmove(fltk::CheckButton* o, void* v) {
384 ((UI*)(o->parent()->parent()->parent()->user_data()))->cb_check_playmove_i(o,v);
387 inline void UI::cb_check_follow_i(fltk::CheckButton* o, void*) {
388 set_follow(o->value());
390 void UI::cb_check_follow(fltk::CheckButton* o, void* v) {
391 ((UI*)(o->parent()->parent()->parent()->user_data()))->cb_check_follow_i(o,v);
394 inline void UI::cb_default_velocity_i(fltk::ValueInput* o, void*) {
395 if(o->value() > o->maximum())
396 o->value(o->maximum());
397 if(o->value() < o->minimum())
398 o->value(o->minimum());
399 set_defaultvelocity((int)o->value());
401 void UI::cb_default_velocity(fltk::ValueInput* o, void* v) {
402 ((UI*)(o->parent()->parent()->parent()->user_data()))->cb_default_velocity_i(o,v);
405 inline void UI::cb_merge_i(fltk::Item*, void*) {
406 set_recordmode(0);
408 void UI::cb_merge(fltk::Item* o, void* v) {
409 ((UI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_merge_i(o,v);
412 inline void UI::cb_overwrite_i(fltk::Item*, void*) {
413 set_recordmode(1);
415 void UI::cb_overwrite(fltk::Item* o, void* v) {
416 ((UI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_overwrite_i(o,v);
419 inline void UI::cb_layer_i(fltk::Item*, void*) {
420 set_recordmode(2);
422 void UI::cb_layer(fltk::Item* o, void* v) {
423 ((UI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_layer_i(o,v);
426 inline void UI::cb_do_i(fltk::Item*, void*) {
427 set_robmode(0);
429 void UI::cb_do(fltk::Item* o, void* v) {
430 ((UI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_do_i(o,v);
433 inline void UI::cb_new_i(fltk::Item*, void*) {
434 set_robmode(1);
436 void UI::cb_new(fltk::Item* o, void* v) {
437 ((UI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_new_i(o,v);
440 inline void UI::cb_extend_i(fltk::Item*, void*) {
441 set_robmode(2);
443 void UI::cb_extend(fltk::Item* o, void* v) {
444 ((UI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_extend_i(o,v);
447 inline void UI::cb_kg_l10_i(KeyGrabber*, void*) {
450 void UI::cb_kg_l10(KeyGrabber* o, void* v) {
451 ((UI*)(o->parent()->parent()->parent()->user_data()))->cb_kg_l10_i(o,v);
454 inline void UI::cb_new1_i(fltk::Button*, void*) {
455 reset_song();
457 void UI::cb_new1(fltk::Button* o, void* v) {
458 ((UI*)(o->parent()->user_data()))->cb_new1_i(o,v);
461 inline void UI::cb_save_i(fltk::Button*, void*) {
462 action_window->hide();
463 save();
465 void UI::cb_save(fltk::Button* o, void* v) {
466 ((UI*)(o->parent()->user_data()))->cb_save_i(o,v);
469 inline void UI::cb_save1_i(fltk::Button*, void*) {
470 action_window->hide();
471 save(fltk::file_chooser("save file",NULL,get_last_dir()));
473 void UI::cb_save1(fltk::Button* o, void* v) {
474 ((UI*)(o->parent()->user_data()))->cb_save1_i(o,v);
477 inline void UI::cb_load_i(fltk::Button*, void*) {
478 action_window->hide();
479 if(load(fltk::file_chooser("open file",NULL,get_last_dir()))<0){
480 reset_song();
483 void UI::cb_load(fltk::Button* o, void* v) {
484 ((UI*)(o->parent()->user_data()))->cb_load_i(o,v);
487 inline void UI::cb_import_i(fltk::Button*, void*) {
488 action_window->hide();
489 if(loadsmf(fltk::file_chooser("import file",NULL,get_last_dir()))<0){
490 reset_song();
493 void UI::cb_import(fltk::Button* o, void* v) {
494 ((UI*)(o->parent()->user_data()))->cb_import_i(o,v);
497 inline void UI::cb_export_i(fltk::Button*, void*) {
498 action_window->hide();
499 savesmf(fltk::file_chooser("export file",NULL,get_last_dir()));
501 void UI::cb_export(fltk::Button* o, void* v) {
502 ((UI*)(o->parent()->user_data()))->cb_export_i(o,v);
505 inline void UI::cb_on_i(fltk::Button* o, void*) {
506 if(o->state()){
507 turnonscope();
509 else{
510 turnoffscope();
513 void UI::cb_on(fltk::Button* o, void* v) {
514 ((UI*)(o->parent()->parent()->user_data()))->cb_on_i(o,v);
517 UI::UI() {
518 fltk::Window* w;
519 {fltk::Window* o = main_window = new fltk::Window(640, 480, "Epichord");
520 o->shortcut(0xff1b);
521 o->callback((fltk::Callback*)cb_main_window, (void*)(this));
522 o->begin();
523 {fltk::Group* o = new fltk::Group(0, 0, 640, 445);
524 o->begin();
525 {fltk::Group* o = song_edit = new fltk::Group(0, 0, 640, 445);
526 o->begin();
527 {fltk::Group* o = new fltk::Group(0, 0, 255, 445);
528 o->set_vertical();
529 o->box(fltk::FLAT_BOX);
530 o->begin();
531 {TrackInfo* o = track_info = new TrackInfo(0, 15, 255, 415, "track info");
532 o->set_vertical();
533 fltk::Group::current()->resizable(o);
535 {fltk::Button* o = new fltk::Button(0, 0, 255, 15, "@line");
536 o->callback((fltk::Callback*)cb_line);
538 o->end();
540 {fltk::Group* o = new fltk::Group(255, 0, 385, 15);
541 o->begin();
542 {Timeline* o = song_timeline = new Timeline(0, 0, 370, 15, "timeline");
543 fltk::Group::current()->resizable(o);
544 o->scale=16;
545 o->label_scale=4;
547 o->end();
549 {fltk::Group* o = song_scrollgroup = new fltk::Group(255, 15, 385, 430);
550 o->set_vertical();
551 o->begin();
552 {Arranger* o = arranger = new Arranger(0, 0, 370, 415, "arranger");
553 o->set_vertical();
554 o->box(fltk::FLAT_BOX);
555 fltk::Group::current()->resizable(o);
557 {fltk::Scrollbar* o = song_vscroll = new fltk::Scrollbar(370, 0, 15, 415);
558 o->set_vertical();
559 o->slider_size(60);
560 o->callback((fltk::Callback*)cb_song_vscroll);
562 {fltk::ThumbWheel* o = song_hscroll = new fltk::ThumbWheel(0, 415, 370, 15);
563 o->maximum(10000);
564 o->step(10);
565 o->callback((fltk::Callback*)cb_song_hscroll);
567 o->end();
568 fltk::Group::current()->resizable(o);
570 o->end();
572 {fltk::Group* o = pattern_edit = new fltk::Group(0, 0, 640, 445);
573 o->hide();
574 o->begin();
575 {fltk::Group* o = new fltk::Group(45, 0, 595, 445);
576 o->begin();
577 {fltk::Group* o = new fltk::Group(0, 0, 595, 15);
578 o->begin();
579 {Timeline* o = pattern_timeline = new Timeline(0, 0, 580, 15, "timeline");
580 o->box(fltk::FLAT_BOX);
581 fltk::Group::current()->resizable(o);
582 o->edit_flag = 1;
584 o->end();
586 {fltk::Group* o = pattern_scrollgroup = new fltk::Group(0, 15, 595, 355);
587 o->begin();
588 {PianoRoll* o = piano_roll = new PianoRoll(0, 0, 580, 340, "pianoroll");
589 o->box(fltk::FLAT_BOX);
590 fltk::Group::current()->resizable(o);
592 {fltk::Scrollbar* o = pattern_vscroll = new fltk::Scrollbar(580, 0, 15, 340);
593 o->set_vertical();
594 o->callback((fltk::Callback*)cb_pattern_vscroll);
596 {fltk::ThumbWheel* o = pattern_hscroll = new fltk::ThumbWheel(0, 340, 580, 15);
597 o->step(10);
598 o->callback((fltk::Callback*)cb_pattern_hscroll);
600 o->end();
601 fltk::Group::current()->resizable(o);
603 {fltk::Group* o = new fltk::Group(0, 370, 595, 75);
604 o->begin();
605 {EventEdit* o = event_edit = new EventEdit(0, 0, 580, 75, "event editor");
606 o->box(fltk::FLAT_BOX);
607 fltk::Group::current()->resizable(o);
609 {EventMenu* o = event_menu = new EventMenu(0, 0, 580, 75);
610 o->box(fltk::FLAT_BOX);
611 o->hide();
613 {fltk::Button* o = event_menu_button = new fltk::Button(580, 0, 15, 15, "E");
614 o->callback((fltk::Callback*)cb_event_menu_button);
615 o->tooltip("pick event type");
616 o->type(fltk::Button::TOGGLE);
618 {fltk::Button* o = new fltk::Button(580, 15, 15, 15, "L");
619 o->callback((fltk::Callback*)cb_L);
620 o->tooltip("toggle event value labels");
621 o->type(fltk::Button::TOGGLE);
623 {fltk::Button* o = new fltk::Button(580, 30, 15, 15, "C");
624 o->callback((fltk::Callback*)cb_C);
625 o->tooltip("clear these events");
627 {fltk::Button* o = new fltk::Button(580, 45, 15, 15, "X");
628 o->callback((fltk::Callback*)cb_X);
629 o->tooltip("clear all non note events in pattern");
631 {fltk::Button* o = new fltk::Button(580, 60, 15, 15, "Z");
632 o->labelcolor((fltk::Color)0xff000000);
633 o->callback((fltk::Callback*)cb_Z);
634 o->tooltip("clear everything");
636 o->end();
638 o->end();
639 fltk::Group::current()->resizable(o);
641 {fltk::Group* o = new fltk::Group(0, 0, 45, 445);
642 o->begin();
643 new fltk::Button(0, 0, 45, 15, "@line");
644 {fltk::Group* o = new fltk::Group(0, 15, 45, 340);
645 o->set_vertical();
646 o->begin();
647 {TrackSelect* o = track_select = new TrackSelect(0, 35, 45, 305, "track picker");
648 o->set_vertical();
650 {SampleView* o = sample_view = new SampleView(0, 35, 45, 305, "sample names");
651 o->set_vertical();
653 {Keyboard* o = keyboard = new Keyboard(0, 0, 45, 340, "keyboard");
654 o->set_vertical();
656 o->end();
657 fltk::Group::current()->resizable(o);
659 {fltk::Button* o = new fltk::Button(0, 370, 45, 75, "@<-");
660 o->set_vertical();
661 o->callback((fltk::Callback*)cb_);
663 o->end();
665 o->end();
667 o->end();
668 fltk::Group::current()->resizable(o);
670 {fltk::Group* o = new fltk::Group(0, 445, 640, 35);
671 o->box(fltk::UP_BOX);
672 o->begin();
673 {fltk::Button* o = play_button = new fltk::Button(5, 5, 25, 25, "@>");
674 o->labelcolor((fltk::Color)0x800000);
675 o->callback((fltk::Callback*)cb_play_button);
677 {fltk::Button* o = stop_button = new fltk::Button(35, 5, 25, 25, "@square");
678 o->labelcolor((fltk::Color)0x800000);
679 o->callback((fltk::Callback*)cb_stop_button);
681 {fltk::Button* o = record_button = new fltk::Button(65, 5, 25, 25, "@circle");
682 o->labelcolor((fltk::Color)0xff000000);
683 o->callback((fltk::Callback*)cb_record_button);
684 o->type(fltk::Button::TOGGLE);
686 {Metronome* o = metronome = new Metronome(95, 5, 25, 25, "0");
687 o->color((fltk::Color)56);
688 o->labelcolor((fltk::Color)0xffffff00);
690 {fltk::Group* o = new fltk::Group(125, 0, 20, 35);
691 o->set_vertical();
692 fltk::Group::current()->resizable(o);
694 {fltk::Group* o = pattern_buttons = new fltk::Group(145, 5, 310, 25);
695 o->hide();
696 o->begin();
697 {fltk::Button* o = qbutton4 = new fltk::Button(135, 0, 25, 25);
698 o->callback((fltk::Callback*)cb_qbutton4);
699 o->type(fltk::Button::TOGGLE);
701 {fltk::Button* o = qbutton8 = new fltk::Button(160, 0, 25, 25);
702 o->callback((fltk::Callback*)cb_qbutton8);
703 o->type(fltk::Button::TOGGLE);
705 {fltk::Button* o = qbutton16 = new fltk::Button(185, 0, 25, 25);
706 o->callback((fltk::Callback*)cb_qbutton16);
707 o->type(fltk::Button::TOGGLE);
708 o->state(1);
710 {fltk::Button* o = qbutton32 = new fltk::Button(210, 0, 25, 25);
711 o->callback((fltk::Callback*)cb_qbutton32);
712 o->type(fltk::Button::TOGGLE);
714 {fltk::Button* o = qbutton64 = new fltk::Button(235, 0, 25, 25);
715 o->callback((fltk::Callback*)cb_qbutton64);
716 o->type(fltk::Button::TOGGLE);
718 {fltk::Button* o = qbutton128 = new fltk::Button(260, 0, 25, 25);
719 o->callback((fltk::Callback*)cb_qbutton128);
720 o->type(fltk::Button::TOGGLE);
722 {fltk::Button* o = qbutton0 = new fltk::Button(285, 0, 25, 25);
723 o->callback((fltk::Callback*)cb_qbutton0);
724 o->type(fltk::Button::TOGGLE);
726 {fltk::Button* o = quant1_button = new fltk::Button(15, 0, 25, 25, "qua");
727 o->tooltip("quantize selected notes");
729 {fltk::Button* o = quant0_button = new fltk::Button(45, 0, 25, 25, "qu_");
730 o->tooltip("quantize length of selected notes");
732 {fltk::Button* o = tool_button = new fltk::Button(75, 0, 25, 25, "tool");
733 o->callback((fltk::Callback*)cb_tool_button);
735 o->end();
737 {fltk::Group* o = song_buttons = new fltk::Group(330, 5, 145, 25);
738 o->begin();
739 {fltk::Button* o = edit_button = new fltk::Button(0, 0, 25, 25);
740 o->set_flag(fltk::STATE);
741 o->callback((fltk::Callback*)cb_edit_button);
742 o->tooltip("create delete move resize select paste blocks");
744 {fltk::Button* o = color_button = new fltk::Button(25, 0, 25, 25);
745 o->callback((fltk::Callback*)cb_color_button);
746 o->tooltip("color tool");
747 o->type(fltk::Button::TOGGLE);
749 {fltk::Button* o = unclone_button = new fltk::Button(50, 0, 25, 25);
750 o->callback((fltk::Callback*)cb_unclone_button);
751 o->tooltip("click on blocks to unclone them");
752 o->type(fltk::Button::TOGGLE);
754 {fltk::Button* o = split_button = new fltk::Button(75, 0, 25, 25);
755 o->callback((fltk::Callback*)cb_split_button);
756 o->tooltip("click on a block to split in two");
757 o->type(fltk::Button::TOGGLE);
759 {fltk::Button* o = join_button = new fltk::Button(100, 0, 25, 25);
760 o->callback((fltk::Callback*)cb_join_button);
761 o->tooltip("click on adjacent blocks to join them");
762 o->type(fltk::Button::TOGGLE);
764 o->end();
766 {fltk::Button* o = loop_toggle = new fltk::Button(490, 5, 25, 25);
767 o->callback((fltk::Callback*)cb_loop_toggle);
768 o->tooltip("toggle looping");
769 o->type(fltk::Button::TOGGLE);
771 {fltk::Button* o = conf_toggle = new fltk::Button(520, 5, 25, 25);
772 o->callback((fltk::Callback*)cb_conf_toggle);
773 o->tooltip("configuration");
774 o->type(fltk::Button::TOGGLE);
776 {fltk::Button* o = scope_button = new fltk::Button(550, 5, 25, 25);
777 o->callback((fltk::Callback*)cb_scope_button);
778 o->tooltip("scope");
779 o->type(fltk::Button::TOGGLE);
781 {fltk::Button* o = file_button = new fltk::Button(580, 5, 25, 25);
782 o->callback((fltk::Callback*)cb_file_button);
783 o->tooltip("disk");
784 o->type(fltk::Button::TOGGLE);
786 {fltk::Button* o = help_button = new fltk::Button(610, 5, 25, 25);
787 o->callback((fltk::Callback*)cb_help_button);
788 o->tooltip("help");
789 o->type(fltk::Button::TOGGLE);
791 o->end();
793 o->end();
794 o->size_range(640,455);
795 o->resize(640,455);
797 {fltk::Window* o = config_window = new fltk::Window(320, 285, "controls");
798 o->shortcut(0xff1b);
799 o->user_data((void*)(this));
800 o->begin();
801 {fltk::TabGroup* o = new fltk::TabGroup(0, 0, 320, 285);
802 o->begin();
803 {fltk::Group* o = new fltk::Group(145, 15, 170, 265, "options");
804 o->begin();
805 {fltk::ValueInput* o = beats_per_measure = new fltk::ValueInput(5, 5, 45, 20, "beats per measure");
806 o->minimum(1);
807 o->maximum(31);
808 o->step(1);
809 o->value(4);
810 o->callback((fltk::Callback*)cb_beats_per_measure);
812 {fltk::ValueInput* o = measures_per_phrase = new fltk::ValueInput(5, 30, 45, 20, "measures per phrase");
813 o->maximum(128);
814 o->step(1);
815 o->value(4);
816 o->callback((fltk::Callback*)cb_measures_per_phrase);
818 {fltk::ValueOutput* o = bpm_output = new fltk::ValueOutput(5, 55, 45, 20, "bpm");
819 o->minimum(1);
820 o->maximum(1000);
821 o->step(1);
822 o->value(120);
824 {fltk::ThumbWheel* o = bpm_wheel = new fltk::ThumbWheel(55, 55, 105, 20);
825 o->minimum(1);
826 o->maximum(1000);
827 o->step(1);
828 o->value(120);
829 o->callback((fltk::Callback*)cb_bpm_wheel);
830 o->align(fltk::ALIGN_LEFT);
832 {fltk::ValueInput* o = measures_until_record = new fltk::ValueInput(5, 80, 45, 20, "measures until record");
833 o->maximum(128);
834 o->step(1);
835 o->value(1);
836 o->callback((fltk::Callback*)cb_measures_until_record);
838 {fltk::CheckButton* o = check_alwayscopy = new fltk::CheckButton(5, 105, 25, 25, "always hard copy");
839 o->callback((fltk::Callback*)cb_check_alwayscopy);
840 o->align(fltk::ALIGN_LEFT);
841 o->tooltip("instead of making a linked clone when you copy a block in the song view.");
843 {fltk::CheckButton* o = check_autotrackname = new fltk::CheckButton(145, 105, 25, 25, "auto track name");
844 o->callback((fltk::Callback*)cb_check_autotrackname);
845 o->align(fltk::ALIGN_LEFT);
846 o->tooltip("Fill in GM instruments for track names when you change the program.");
848 {fltk::CheckButton* o = check_passthru = new fltk::CheckButton(5, 130, 25, 26, "record pass-thru");
849 o->set_flag(fltk::STATE);
850 o->callback((fltk::Callback*)cb_check_passthru);
851 o->align(fltk::ALIGN_LEFT);
852 o->tooltip("Echo midi input to midi output.");
854 {fltk::CheckButton* o = check_playinsert = new fltk::CheckButton(145, 130, 25, 26, "play note insertion");
855 o->set_flag(fltk::STATE);
856 o->callback((fltk::Callback*)cb_check_playinsert);
857 o->align(fltk::ALIGN_LEFT);
858 o->tooltip("Send midi note on when you create notes.");
860 {fltk::CheckButton* o = check_recordonchan = new fltk::CheckButton(5, 155, 25, 25, "record on channel");
861 o->callback((fltk::Callback*)cb_check_recordonchan);
862 o->align(fltk::ALIGN_LEFT);
863 o->tooltip("Record on first track that matches channel of midi input instead of selected \
864 track.");
866 {fltk::CheckButton* o = check_playmove = new fltk::CheckButton(145, 155, 25, 26, "play note move");
867 o->set_flag(fltk::STATE);
868 o->callback((fltk::Callback*)cb_check_playmove);
869 o->align(fltk::ALIGN_LEFT);
870 o->tooltip("Send midi note on when you move notes.");
872 {fltk::CheckButton* o = check_follow = new fltk::CheckButton(5, 179, 25, 26, "follow playback");
873 o->set_flag(fltk::STATE);
874 o->callback((fltk::Callback*)cb_check_follow);
875 o->align(fltk::ALIGN_LEFT);
876 o->tooltip("Auto scroll horizontally when play head leaves viewing area.");
878 {fltk::ValueInput* o = default_velocity = new fltk::ValueInput(120, 180, 45, 20, "default velocity");
879 o->maximum(127);
880 o->step(1);
881 o->value(96);
882 o->callback((fltk::Callback*)cb_default_velocity);
884 {fltk::Choice* o = menu_recordmode = new fltk::Choice(5, 210, 160, 25, "record mode");
885 o->begin();
886 {fltk::Item* o = new fltk::Item("merge");
887 o->callback((fltk::Callback*)cb_merge);
889 {fltk::Item* o = new fltk::Item("overwrite");
890 o->callback((fltk::Callback*)cb_overwrite);
892 {fltk::Item* o = new fltk::Item("layer");
893 o->callback((fltk::Callback*)cb_layer);
895 o->end();
897 {fltk::Choice* o = menu_rob = new fltk::Choice(5, 240, 160, 25, "record outside block");
898 o->begin();
899 {fltk::Item* o = new fltk::Item("do nothing");
900 o->callback((fltk::Callback*)cb_do);
902 {fltk::Item* o = new fltk::Item("new block");
903 o->callback((fltk::Callback*)cb_new);
905 {fltk::Item* o = new fltk::Item("extend block");
906 o->callback((fltk::Callback*)cb_extend);
908 o->end();
910 o->end();
912 {fltk::Group* o = new fltk::Group(0, 15, 320, 270, "keyboard");
913 o->hide();
914 o->begin();
915 {KeyGrabber* o = kg_l0 = new KeyGrabber(35, 5, 45, 15, "C0");
916 o->align(fltk::ALIGN_LEFT);
918 {KeyGrabber* o = kg_l1 = new KeyGrabber(35, 20, 45, 15, "C#0");
919 o->align(fltk::ALIGN_LEFT);
921 {KeyGrabber* o = kg_l2 = new KeyGrabber(35, 35, 45, 15, "D0");
922 o->align(fltk::ALIGN_LEFT);
924 {KeyGrabber* o = kg_l3 = new KeyGrabber(35, 50, 45, 15, "D#0");
925 o->align(fltk::ALIGN_LEFT);
927 {KeyGrabber* o = kg_l4 = new KeyGrabber(35, 65, 45, 15, "E0");
928 o->align(fltk::ALIGN_LEFT);
930 {KeyGrabber* o = kg_l5 = new KeyGrabber(35, 80, 45, 15, "F0");
931 o->align(fltk::ALIGN_LEFT);
933 {KeyGrabber* o = kg_l6 = new KeyGrabber(35, 95, 45, 15, "F#0");
934 o->align(fltk::ALIGN_LEFT);
936 {KeyGrabber* o = kg_l7 = new KeyGrabber(35, 110, 45, 15, "G0");
937 o->align(fltk::ALIGN_LEFT);
939 {KeyGrabber* o = kg_l8 = new KeyGrabber(35, 125, 45, 15, "G#0");
940 o->align(fltk::ALIGN_LEFT);
942 {KeyGrabber* o = kg_l9 = new KeyGrabber(35, 140, 45, 15, "A0");
943 o->align(fltk::ALIGN_LEFT);
945 {KeyGrabber* o = kg_l10 = new KeyGrabber(35, 155, 45, 15, "A#0");
946 o->callback((fltk::Callback*)cb_kg_l10);
947 o->align(fltk::ALIGN_LEFT);
949 {KeyGrabber* o = kg_l11 = new KeyGrabber(35, 170, 45, 15, "B0");
950 o->align(fltk::ALIGN_LEFT);
952 {KeyGrabber* o = kg_l12 = new KeyGrabber(35, 185, 45, 15, "C1");
953 o->align(fltk::ALIGN_LEFT);
955 {KeyGrabber* o = kg_l13 = new KeyGrabber(35, 200, 45, 15, "C#1");
956 o->align(fltk::ALIGN_LEFT);
958 {KeyGrabber* o = kg_l14 = new KeyGrabber(35, 215, 45, 15, "D1");
959 o->align(fltk::ALIGN_LEFT);
961 {KeyGrabber* o = kg_l15 = new KeyGrabber(35, 230, 45, 15, "D#1");
962 o->align(fltk::ALIGN_LEFT);
964 {KeyGrabber* o = kg_l16 = new KeyGrabber(35, 245, 45, 15, "E1");
965 o->align(fltk::ALIGN_LEFT);
967 {KeyGrabber* o = kg_u0 = new KeyGrabber(130, 5, 45, 15, "C1");
968 o->align(fltk::ALIGN_LEFT);
970 {KeyGrabber* o = kg_u1 = new KeyGrabber(130, 20, 45, 15, "C#1");
971 o->align(fltk::ALIGN_LEFT);
973 {KeyGrabber* o = kg_u2 = new KeyGrabber(130, 35, 45, 15, "D1");
974 o->align(fltk::ALIGN_LEFT);
976 {KeyGrabber* o = kg_u3 = new KeyGrabber(130, 50, 45, 15, "D#1");
977 o->align(fltk::ALIGN_LEFT);
979 {KeyGrabber* o = kg_u4 = new KeyGrabber(130, 65, 45, 15, "E1");
980 o->align(fltk::ALIGN_LEFT);
982 {KeyGrabber* o = kg_u5 = new KeyGrabber(130, 80, 45, 15, "F1");
983 o->align(fltk::ALIGN_LEFT);
985 {KeyGrabber* o = kg_u6 = new KeyGrabber(130, 95, 45, 15, "F#1");
986 o->align(fltk::ALIGN_LEFT);
988 {KeyGrabber* o = kg_u7 = new KeyGrabber(130, 110, 45, 15, "G1");
989 o->align(fltk::ALIGN_LEFT);
991 {KeyGrabber* o = kg_u8 = new KeyGrabber(130, 125, 45, 15, "G#1");
992 o->align(fltk::ALIGN_LEFT);
994 {KeyGrabber* o = kg_u9 = new KeyGrabber(130, 140, 45, 15, "A1");
995 o->align(fltk::ALIGN_LEFT);
997 {KeyGrabber* o = kg_u10 = new KeyGrabber(130, 155, 45, 15, "A#1");
998 o->align(fltk::ALIGN_LEFT);
1000 {KeyGrabber* o = kg_u11 = new KeyGrabber(130, 170, 45, 15, "B1");
1001 o->align(fltk::ALIGN_LEFT);
1003 {KeyGrabber* o = kg_u12 = new KeyGrabber(130, 185, 45, 15, "C2");
1004 o->align(fltk::ALIGN_LEFT);
1006 {KeyGrabber* o = kg_u13 = new KeyGrabber(130, 200, 45, 15, "C#2");
1007 o->align(fltk::ALIGN_LEFT);
1009 {KeyGrabber* o = kg_u14 = new KeyGrabber(130, 215, 45, 15, "D2");
1010 o->align(fltk::ALIGN_LEFT);
1012 {KeyGrabber* o = kg_u15 = new KeyGrabber(130, 230, 45, 15, "D#2");
1013 o->align(fltk::ALIGN_LEFT);
1015 {KeyGrabber* o = kg_u16 = new KeyGrabber(130, 245, 45, 15, "E2");
1016 o->align(fltk::ALIGN_LEFT);
1018 {KeyGrabber* o = kg_u17 = new KeyGrabber(265, 5, 45, 15, "F2");
1019 o->align(fltk::ALIGN_LEFT);
1021 {KeyGrabber* o = kg_u18 = new KeyGrabber(265, 20, 45, 15, "F#2");
1022 o->align(fltk::ALIGN_LEFT);
1024 {KeyGrabber* o = kg_u19 = new KeyGrabber(265, 35, 45, 15, "G2");
1025 o->align(fltk::ALIGN_LEFT);
1027 {KeyGrabber* o = kg_u20 = new KeyGrabber(265, 50, 45, 15, "G#2");
1028 o->align(fltk::ALIGN_LEFT);
1030 {KeyGrabber* o = kg_zi = new KeyGrabber(265, 65, 45, 15, "zoom in");
1031 o->align(fltk::ALIGN_LEFT);
1033 {KeyGrabber* o = kg_zo = new KeyGrabber(265, 80, 45, 15, "zoom out");
1034 o->align(fltk::ALIGN_LEFT);
1036 {KeyGrabber* o = kg_ou = new KeyGrabber(265, 95, 45, 15, "octave up");
1037 o->align(fltk::ALIGN_LEFT);
1039 {KeyGrabber* o = kg_od = new KeyGrabber(265, 110, 45, 15, "octave down");
1040 o->align(fltk::ALIGN_LEFT);
1042 o->end();
1044 {fltk::Group* o = new fltk::Group(0, 15, 320, 270, "colors");
1045 o->hide();
1046 o->begin();
1047 new fltk::Button(250, 245, 65, 20, "apply");
1048 {fltk::Choice* o = new fltk::Choice(55, 10, 100, 20, "presets");
1049 o->begin();
1050 new fltk::Item("windo");
1051 new fltk::Item("midnight");
1052 new fltk::Item("xterm");
1053 o->end();
1055 o->end();
1057 o->end();
1059 o->end();
1061 {fltk::Window* o = help_window = new fltk::Window(580, 370, "help");
1062 o->shortcut(0xff1b);
1063 o->user_data((void*)(this));
1064 o->begin();
1065 {fltk::TabGroup* o = new fltk::TabGroup(0, 0, 580, 370);
1066 o->begin();
1067 {fltk::Group* o = new fltk::Group(0, 25, 580, 345, "info");
1068 o->begin();
1069 title_text = new fltk::Input(55, 5, 520, 20, "Title");
1070 author_text = new fltk::Input(55, 30, 520, 20, "Author");
1071 {fltk::TextEditor* o = info_text = new fltk::TextEditor(5, 55, 570, 285);
1072 o->textfont(fltk::COURIER);
1073 fltk::Group::current()->resizable(o);
1075 o->end();
1076 fltk::Group::current()->resizable(o);
1078 {fltk::Group* o = new fltk::Group(0, 25, 580, 345, "controls");
1079 o->hide();
1080 o->begin();
1081 {fltk::TextDisplay* o = new fltk::TextDisplay(5, 5, 570, 335);
1082 o->textfont(fltk::COURIER);
1083 fltk::Group::current()->resizable(o);
1084 load_text(o,ROOT_DATA_DIR"doc/controls.txt");
1086 o->end();
1088 {fltk::Group* o = new fltk::Group(0, 25, 580, 345, "guide");
1089 o->hide();
1090 o->begin();
1091 {fltk::TextDisplay* o = new fltk::TextDisplay(5, 5, 570, 335);
1092 o->textfont(fltk::COURIER);
1093 fltk::Group::current()->resizable(o);
1094 load_text(o,ROOT_DATA_DIR"doc/guide.txt");
1096 o->end();
1098 {fltk::Group* o = new fltk::Group(0, 25, 580, 345, "license");
1099 o->hide();
1100 o->begin();
1101 {fltk::TextDisplay* o = new fltk::TextDisplay(5, 5, 570, 335);
1102 o->textfont(fltk::COURIER);
1103 fltk::Group::current()->resizable(o);
1104 load_text(o,ROOT_DATA_DIR"doc/license.txt");
1106 o->end();
1108 {fltk::Group* o = new fltk::Group(0, 25, 580, 345, "about");
1109 o->hide();
1110 o->begin();
1111 {fltk::TextDisplay* o = new fltk::TextDisplay(5, 5, 570, 335);
1112 o->textfont(fltk::COURIER);
1113 fltk::Group::current()->resizable(o);
1114 load_text(o,ROOT_DATA_DIR"doc/README");
1116 o->end();
1118 o->end();
1120 o->end();
1121 o->size_range(580,370);
1122 o->resizable(o);
1124 {fltk::Window* o = action_window = new fltk::Window(100, 130, "menu");
1125 o->shortcut(0xff1b);
1126 o->user_data((void*)(this));
1127 o->begin();
1128 {fltk::Button* o = new fltk::Button(5, 5, 90, 20, "new");
1129 o->callback((fltk::Callback*)cb_new1);
1131 {fltk::Button* o = new fltk::Button(5, 25, 90, 20, "save");
1132 o->callback((fltk::Callback*)cb_save);
1134 {fltk::Button* o = new fltk::Button(5, 45, 90, 20, "save as");
1135 o->callback((fltk::Callback*)cb_save1);
1137 {fltk::Button* o = new fltk::Button(5, 65, 90, 20, "load");
1138 o->callback((fltk::Callback*)cb_load);
1140 {fltk::Button* o = new fltk::Button(5, 85, 90, 20, "import");
1141 o->callback((fltk::Callback*)cb_import);
1143 {fltk::Button* o = new fltk::Button(5, 105, 90, 20, "export");
1144 o->callback((fltk::Callback*)cb_export);
1146 o->end();
1148 {fltk::Window* o = scope_window = new fltk::Window(425, 280, "scope");
1149 w = o;
1150 o->shortcut(0xff1b);
1151 o->user_data((void*)(this));
1152 o->begin();
1153 {fltk::TextDisplay* o = scope = new fltk::TextDisplay(5, 5, 415, 245);
1154 o->textfont(fltk::COURIER);
1155 o->color((fltk::Color)0x280000);
1156 o->textcolor((fltk::Color)0xff0000);
1157 o->wrap_mode(1);
1159 {fltk::Group* o = new fltk::Group(5, 255, 410, 20);
1160 o->begin();
1161 {fltk::Button* o = new fltk::Button(0, 0, 40, 20, "on");
1162 o->callback((fltk::Callback*)cb_on);
1163 o->type(fltk::Button::TOGGLE);
1165 {fltk::InvisibleBox* o = new fltk::InvisibleBox(45, 0, 95, 20);
1166 fltk::Group::current()->resizable(o);
1168 o->end();
1170 o->end();
1171 o->resizable(o);
1173 loop_toggle->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/loop.gif"));
1174 conf_toggle->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/conf.gif"));
1175 scope_button->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/scope.gif"));
1176 file_button->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/file.gif"));
1177 help_button->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/help.gif"));
1179 edit_button->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/edit.gif"));
1180 color_button->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/color.gif"));
1181 unclone_button->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/fork.gif"));
1182 split_button->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/split.gif"));
1183 join_button->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/join.gif"));
1185 qbutton4->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/q4.gif"));
1186 qbutton8->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/q8.gif"));
1187 qbutton16->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/q16.gif"));
1188 qbutton32->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/q32.gif"));
1189 qbutton64->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/q64.gif"));
1190 qbutton128->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/q128.gif"));
1191 qbutton0->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/q0.gif"));
1192 track_info->set_rec(0);
1193 start_monitor();
1194 main_window->show();