GUI Changes. Added midi scope.
[epichord.git] / src / ui.fl
blob99eced43cc4e4580b4fda2860786439683ad9d40
1 # data file for the FLTK User Interface Designer (FLUID)
2 version 2.1000 
3 images_dir header_name 
4 do_not_include_H_from_C 
5 header_name {.h} 
6 code_name {.cpp} 
7 gridx 5 
8 gridy 5 
9 snap 3
10 decl {/*
11    Epichord - a midi sequencer
12    Copyright (C) 2008  Evan Rinehart
14    This program is free software; you can redistribute it and/or
15    modify it under the terms of the GNU General Public License
16    as published by the Free Software Foundation; either version 2
17    of the License, or (at your option) any later version.
19    This program is distributed in the hope that it will be useful,
20    but WITHOUT ANY WARRANTY; without even the implied warranty of
21    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22    GNU General Public License for more details.
24    You should have received a copy of the GNU General Public License
25    along with this program; if not, write to
27    The Free Software Foundation, Inc.
28    51 Franklin Street, Fifth Floor
29    Boston, MA  02110-1301, USA
30 */} {} 
32 decl {\#include <fltk/events.h>} {} 
34 decl {\#include <fltk/file_chooser.h>} {} 
36 decl {\#include "backend.h"} {} 
38 decl {\#include "util.h"} {} 
40 decl {\#include "uihelper.h"} {} 
42 decl {\#include "config.h"} {} 
44 decl {extern UI* ui;} {} 
46 class UI {open
47 } {
48   Function {UI()} {open
49   } {
50     {fltk::Window} main_window {
51       label Epichord
52       callback {config_window->hide();
53 help_window->hide();
54 action_window->hide();
55 scope_window->hide();
56 o->hide();} open
57       xywh {507 27 640 480} resizable
58       extra_code {\#include <unistd.h>
59 \#include <stdio.h>
60 \#include "seq.h"
61 \#include "trackmodule.h"
62 o->size_range(640,455);
63 o->resize(640,455);} visible
64     } {
65       {fltk::Group} {} {
66         xywh {0 0 640 445} resizable
67       } {
68         {fltk::Group} song_edit {
69           xywh {0 0 640 445}
70         } {
71           {fltk::Group} {} {open
72             xywh {0 0 255 445} box FLAT_BOX
73           } {
74             {fltk::Widget} track_info {
75               label {track info}
76               xywh {0 15 255 415} resizable
77               extra_code {\#include "trackinfo.h"}
78               class TrackInfo
79             }
80             {fltk::Button} {} {
81               label {@+}
82               callback {ui->track_info->toggle_controls();}
83               xywh {0 0 255 15}
84             }
85           }
86           {fltk::Group} {} {open
87             xywh {255 0 385 15}
88           } {
89             {fltk::Widget} song_timeline {
90               label timeline
91               xywh {0 0 370 15} resizable
92               extra_code {o->scale=16;
93 o->label_scale=4;}
94               class Timeline
95             }
96           }
97           {fltk::ScrollGroup} song_scroll {
98             xywh {255 15 385 430} resizable
99             extra_code {o->type(fltk::ScrollGroup::BOTH_ALWAYS);}
100           } {
101             {fltk::Widget} arranger {
102               label arranger
103               xywh {0 0 245 220} box FLAT_BOX
104               extra_code {\#include "seq.h"
105 \#include "arranger.h"
106 o->resize(1000,30*16);}
107               class Arranger
108             }
109           }
110         }
111         {fltk::Group} pattern_edit {
112           xywh {0 0 640 445} hide
113         } {
114           {fltk::Group} {} {open
115             xywh {45 0 595 445} resizable
116           } {
117             {fltk::Group} {} {open
118               xywh {0 0 595 15}
119             } {
120               {fltk::Widget} pattern_timeline {
121                 label timeline
122                 xywh {0 0 580 15} resizable box FLAT_BOX
123                 extra_code {\#include "timeline.h"
124 o->edit_flag = 1;}
125                 class Timeline
126               }
127             }
128             {fltk::ScrollGroup} pattern_scroll {
129               xywh {0 15 595 355} when CHANGED resizable box FLAT_BOX shortcut 0xff1b
130               extra_code {o->type(fltk::ScrollGroup::BOTH_ALWAYS);}
131             } {
132               {fltk::Widget} piano_roll {
133                 label pianoroll
134                 xywh {0 0 595 355} resizable box FLAT_BOX
135                 extra_code {\#include "pianoroll.h"
136 o->resize(960,900);}
137                 class PianoRoll
138               }
139             }
140             {fltk::Group} {} {open
141               xywh {0 370 595 75}
142             } {
143               {fltk::Widget} event_edit {
144                 label {event editor}
145                 xywh {0 0 580 75} resizable box FLAT_BOX
146                 extra_code {\#include "eventedit.h"}
147                 class EventEdit
148               }
149               {fltk::Button} {} {
150                 label E
151                 tooltip {pick event type}
152                 xywh {580 0 15 15}
153               }
154               {fltk::Button} {} {
155                 label {?}
156                 xywh {580 15 15 15}
157               }
158               {fltk::Button} {} {
159                 label {?}
160                 xywh {580 30 15 15}
161               }
162               {fltk::Button} {} {
163                 label {?}
164                 xywh {580 45 15 15}
165               }
166               {fltk::Button} {} {
167                 label {?}
168                 xywh {580 60 15 15}
169               }
170             }
171           }
172           {fltk::Group} {} {open
173             xywh {0 0 45 445} horizontal
174           } {
175             {fltk::Button} {} {
176               label {@+}
177               xywh {0 0 45 15}
178             }
179             {fltk::Group} {} {open
180               xywh {0 15 45 340} resizable
181             } {
182               {fltk::Widget} track_select {
183                 label {track picker}
184                 xywh {0 35 45 305}
185                 extra_code {\#include "trackselect.h"}
186                 class TrackSelect
187               }
188               {fltk::Widget} sample_view {
189                 label {sample names}
190                 xywh {0 35 45 305}
191                 extra_code {\#include "sampleview.h"}
192                 class SampleView
193               }
194               {fltk::Widget} keyboard {
195                 label keyboard
196                 xywh {0 0 45 340}
197                 extra_code {\#include "keyboard.h"}
198                 class Keyboard
199               }
200             }
201             {fltk::Button} {} {
202               label {@<-}
203               callback {ui->pattern_edit->hide();
204 ui->pattern_buttons->hide();
205 ui->song_edit->activate();
206 ui->song_edit->show();
207 ui->song_edit->take_focus();
208 ui->song_buttons->show();}
209               xywh {0 370 45 75}
210             }
211           }
212         }
213       }
214       {fltk::Group} {} {open
215         xywh {0 445 640 35} box UP_BOX
216       } {
217         {fltk::Button} play_button {
218           label {@>}
219           callback {press_play();}
220           xywh {5 5 25 25} labelcolor 0x800000
221         }
222         {fltk::Button} stop_button {
223           label {@square}
224           callback {press_stop();}
225           xywh {35 5 25 25} labelcolor 0x800000
226         }
227         {fltk::Button} record_button {
228           label {@circle}
229           callback {toggle_backend_recording();}
230           xywh {65 5 25 25} labelcolor 0xff000000
231           extra_code {o->type(fltk::Button::TOGGLE);}
232         }
233         {fltk::Widget} metronome {
234           label metr
235           xywh {125 5 25 25}
236         }
237         {fltk::Group} {} {
238           xywh {180 0 20 35} resizable
239         } {}
240         {fltk::Group} pattern_buttons {
241           xywh {250 5 205 25} hide
242         } {
243           {fltk::Button} qbutton4 {
244             callback {set_quant(4);}
245             xywh {0 0 25 25}
246             extra_code {o->type(fltk::Button::TOGGLE);}
247           }
248           {fltk::Button} qbutton8 {
249             callback {set_quant(8);}
250             xywh {25 0 25 25}
251             extra_code {o->type(fltk::Button::TOGGLE);}
252           }
253           {fltk::Button} qbutton16 {
254             callback {set_quant(16);}
255             xywh {50 0 25 25}
256             extra_code {o->type(fltk::Button::TOGGLE);
257 o->state(1);}
258           }
259           {fltk::Button} qbutton32 {
260             callback {set_quant(32);}
261             xywh {75 0 25 25}
262             extra_code {o->type(fltk::Button::TOGGLE);}
263           }
264           {fltk::Button} qbutton64 {
265             callback {set_quant(64);}
266             xywh {100 0 25 25}
267             extra_code {o->type(fltk::Button::TOGGLE);}
268           }
269           {fltk::Button} qbutton128 {
270             callback {set_quant(128);}
271             xywh {125 0 25 25}
272             extra_code {o->type(fltk::Button::TOGGLE);}
273           }
274           {fltk::Button} qbutton0 {
275             callback {set_quant(0);}
276             xywh {150 0 25 25}
277             extra_code {o->type(fltk::Button::TOGGLE);}
278           }
279           {fltk::Button} quant_button {
280             label qua
281             tooltip {quantize selected notes}
282             xywh {180 0 25 25}
283           }
284         }
285         {fltk::Group} song_buttons {
286           xywh {340 5 115 25}
287         } {
288           {fltk::Button} color_toggle {
289             callback {arranger->color_flag = o->state();}
290             tooltip {color tool}
291             xywh {0 0 25 25}
292             extra_code {o->type(fltk::Button::TOGGLE);}
293           }
294           {fltk::Button} unclone_button {
295             label dclo
296             tooltip {unclone selected block}
297             xywh {30 0 25 25}
298           }
299           {fltk::Button} join_button {
300             label join
301             tooltip {join selected blocks}
302             xywh {60 0 25 25}
303           }
304           {fltk::Button} split_button {
305             label split
306             tooltip {split selected block}
307             xywh {90 0 25 25}
308           }
309         }
310         {fltk::Button} loop_toggle {
311           callback {toggle_loop();}
312           tooltip {toggle looping}
313           xywh {490 5 25 25}
314           extra_code {o->type(fltk::Button::TOGGLE);}
315         }
316         {fltk::Button} config_button {
317           label conf
318           callback {ui->config_window->show();}
319           tooltip configuration
320           xywh {520 5 25 25}
321         }
322         {fltk::Button} scope_button {
323           callback {ui->scope_window->show();}
324           tooltip scope
325           xywh {550 5 25 25}
326         }
327         {fltk::Button} file_button {
328           callback {//load(fltk::file_chooser("save file",NULL,"~"));
329 ui->action_window->show();}
330           tooltip disk
331           xywh {580 5 25 25}
332           extra_code {\#include "saveload.h"}
333         }
334         {fltk::Button} help_button {
335           callback {help_window->show();}
336           tooltip help
337           xywh {610 5 25 25}
338         }
339       }
340     }
341     {fltk::Window} config_window {
342       label controls
343       xywh {66 237 320 285} hide
344     } {
345       {fltk::TabGroup} {} {open
346         xywh {0 0 320 285}
347       } {
348         {fltk::Group} {} {
349           label options
350           xywh {145 15 170 265} horizontal
351         } {
352           {fltk::ValueInput} beats_per_measure {
353             label {beats per measure}
354             callback {set_beats_per_measure((int)o->value());}
355             xywh {5 5 45 20} minimum 2 maximum 31 step 1 value 4
356           }
357           {fltk::ValueInput} {} {
358             label {measures per phrase}
359             callback {set_measures_per_phrase((int)o->value());}
360             xywh {5 30 45 20} maximum 128 step 1 value 4
361           }
362           {fltk::ValueOutput} bpm_output {
363             label bpm
364             xywh {5 55 45 20} minimum 1 maximum 1000 step 1 value 120
365           }
366           {fltk::ThumbWheel} bpm_wheel {
367             callback {set_bpm((int)o->value());
368 ui->bpm_output->value(o->value());}
369             xywh {55 55 105 20} align 4 minimum 1 maximum 1000 step 1 value 120
370           }
371           {fltk::ValueInput} mur {
372             label {measures until record}
373             callback {set_mur((int)o->value());}
374             xywh {5 80 45 20} maximum 128 step 1 value 1
375           }
376           {fltk::CheckButton} check_alwayscopy {
377             label {always hard copy}
378             callback {set_alwayscopy(o->value());}
379             tooltip {instead of making a linked clone when you copy a block in the song view.}
380             xywh {5 105 25 25} align 4
381           }
382           {fltk::CheckButton} check_autotrackname {
383             label {auto track name}
384             callback {set_autotrackname(o->value());}
385             tooltip {Fill in GM instruments for track names when you change the program.}
386             xywh {145 105 25 25} align 4
387           }
388           {fltk::CheckButton} check_passthru {
389             label {record pass-thru}
390             callback {set_passthru(o->value());}
391             tooltip {Echo midi input to midi output.}
392             xywh {5 130 25 26} horizontal align 4 value 1
393           }
394           {fltk::CheckButton} check_playinsert {
395             label {play note insertion}
396             callback {set_playinsert(o->value());}
397             tooltip {Send midi note on when you create notes.}
398             xywh {145 130 25 26} horizontal align 4 value 1
399           }
400           {fltk::CheckButton} check_recordonchan {
401             label {record on channel}
402             callback {set_recordonchan(o->value());}
403             tooltip {Record on first track that matches channel of midi input instead of selected track.}
404             xywh {5 155 25 25} align 4
405           }
406           {fltk::CheckButton} check_playmove {
407             label {play note move}
408             callback {set_playmove(o->value());}
409             tooltip {Send midi note on when you move notes.}
410             xywh {145 155 25 26} horizontal align 4 value 1
411           }
412           {fltk::CheckButton} check_follow {
413             label {follow playback}
414             callback {set_follow(o->value());}
415             tooltip {Auto scroll horizontally when play head leaves viewing area.}
416             xywh {5 179 25 26} horizontal align 4 value 1
417           }
418           {fltk::CheckButton} check_quantizedur {
419             label {quantize note off}
420             callback {set_quantizedur(o->value());}
421             tooltip {Quantize the length of notes when using the quantizer.}
422             xywh {145 180 25 25} align 4 value 1
423           }
424           {fltk::Choice} {} {
425             label {record mode} open
426             xywh {5 210 160 25}
427           } {
428             {fltk::Item} {} {
429               label merge
430               callback {set_recordmode(0);}
431               }
432             {fltk::Item} {} {
433               label overwrite
434               callback {set_recordmode(1);}
435               }
436             {fltk::Item} {} {
437               label layer
438               callback {set_recordmode(2);}
439               }
440           }
441           {fltk::Choice} {} {
442             label {record outside block} open
443             xywh {5 240 160 25}
444           } {
445             {fltk::Item} {} {
446               label {do nothing}
447               callback {set_robmode(0);}
448               }
449             {fltk::Item} {} {
450               label {new block}
451               callback {set_robmode(1);}
452               }
453             {fltk::Item} {} {
454               label {extend block}
455               callback {set_robmode(2);}
456               }
457           }
458         }
459         {fltk::Group} {} {
460           label keyboard
461           xywh {0 15 320 270} hide
462         } {
463           {fltk::Widget} {} {
464             label C0
465             xywh {35 5 45 15} align 4
466             class KeyGrabber
467           }
468           {fltk::Widget} {} {
469             label {C\#0}
470             xywh {35 20 45 15} align 4
471             class KeyGrabber
472           }
473           {fltk::Widget} {} {
474             label D0
475             xywh {35 35 45 15} align 4
476             class KeyGrabber
477           }
478           {fltk::Widget} {} {
479             label {D\#0}
480             xywh {35 50 45 15} align 4
481             class KeyGrabber
482           }
483           {fltk::Widget} {} {
484             label E0
485             xywh {35 65 45 15} align 4
486             class KeyGrabber
487           }
488           {fltk::Widget} {} {
489             label F0
490             xywh {35 80 45 15} align 4
491             class KeyGrabber
492           }
493           {fltk::Widget} {} {
494             label {F\#0}
495             xywh {35 95 45 15} align 4
496             class KeyGrabber
497           }
498           {fltk::Widget} {} {
499             label G0
500             xywh {35 110 45 15} align 4
501             class KeyGrabber
502           }
503           {fltk::Widget} {} {
504             label {G\#0}
505             xywh {35 125 45 15} align 4
506             class KeyGrabber
507           }
508           {fltk::Widget} {} {
509             label A0
510             xywh {35 140 45 15} align 4
511             class KeyGrabber
512           }
513           {fltk::Widget} {} {
514             label {A\#0}
515             xywh {35 155 45 15} align 4
516             class KeyGrabber
517           }
518           {fltk::Widget} {} {
519             label B0
520             xywh {35 170 45 15} align 4
521             class KeyGrabber
522           }
523           {fltk::Widget} {} {
524             label C1
525             xywh {35 185 45 15} align 4
526             class KeyGrabber
527           }
528           {fltk::Widget} {} {
529             label {C\#1}
530             xywh {35 200 45 15} align 4
531             class KeyGrabber
532           }
533           {fltk::Widget} {} {
534             label D1
535             xywh {35 215 45 15} align 4
536             class KeyGrabber
537           }
538           {fltk::Widget} {} {
539             label {D\#1}
540             xywh {35 230 45 15} align 4
541             class KeyGrabber
542           }
543           {fltk::Widget} {} {
544             label E1
545             xywh {35 245 45 15} align 4
546             class KeyGrabber
547           }
548           {fltk::Widget} {} {
549             label C1
550             xywh {130 5 45 15} align 4
551             class KeyGrabber
552           }
553           {fltk::Widget} {} {
554             label {C\#1}
555             xywh {130 20 45 15} align 4
556             class KeyGrabber
557           }
558           {fltk::Widget} {} {
559             label D1
560             xywh {130 35 45 15} align 4
561             class KeyGrabber
562           }
563           {fltk::Widget} {} {
564             label {D\#1}
565             xywh {130 50 45 15} align 4
566             class KeyGrabber
567           }
568           {fltk::Widget} {} {
569             label E1
570             xywh {130 65 45 15} align 4
571             class KeyGrabber
572           }
573           {fltk::Widget} {} {
574             label F1
575             xywh {130 80 45 15} align 4
576             class KeyGrabber
577           }
578           {fltk::Widget} {} {
579             label {F\#1}
580             xywh {130 95 45 15} align 4
581             class KeyGrabber
582           }
583           {fltk::Widget} {} {
584             label G1
585             xywh {130 110 45 15} align 4
586             class KeyGrabber
587           }
588           {fltk::Widget} {} {
589             label {G\#1}
590             xywh {130 125 45 15} align 4
591             class KeyGrabber
592           }
593           {fltk::Widget} {} {
594             label A1
595             xywh {130 140 45 15} align 4
596             class KeyGrabber
597           }
598           {fltk::Widget} {} {
599             label {A\#1}
600             xywh {130 155 45 15} align 4
601             class KeyGrabber
602           }
603           {fltk::Widget} {} {
604             label B1
605             xywh {130 170 45 15} align 4
606             class KeyGrabber
607           }
608           {fltk::Widget} {} {
609             label C2
610             xywh {130 185 45 15} align 4
611             class KeyGrabber
612           }
613           {fltk::Widget} {} {
614             label {C\#2}
615             xywh {130 200 45 15} align 4
616             class KeyGrabber
617           }
618           {fltk::Widget} {} {
619             label D2
620             xywh {130 215 45 15} align 4
621             class KeyGrabber
622           }
623           {fltk::Widget} {} {
624             label {D\#2}
625             xywh {130 230 45 15} align 4
626             class KeyGrabber
627           }
628           {fltk::Widget} {} {
629             label E2
630             xywh {130 245 45 15} align 4
631             class KeyGrabber
632           }
633           {fltk::Widget} {} {
634             label {zoom in}
635             xywh {265 5 45 15} align 4
636             class KeyGrabber
637           }
638           {fltk::Widget} {} {
639             label {zoom out}
640             xywh {265 20 45 15} align 4
641             class KeyGrabber
642           }
643           {fltk::Widget} {} {
644             label {octave up}
645             xywh {265 35 45 15} align 4
646             class KeyGrabber
647           }
648           {fltk::Widget} {} {
649             label {octave down}
650             xywh {265 50 45 15} align 4
651             class KeyGrabber
652           }
653         }
654       }
655     }
656     {fltk::Window} help_window {
657       label help
658       xywh {519 345 580 370} hide resizable
659       extra_code {o->size_range(580,370);}
660     } {
661       {fltk::TabGroup} {} {open
662         xywh {0 0 580 370}
663       } {
664         {fltk::Group} {} {
665           label info open
666           xywh {0 25 580 345} resizable
667         } {
668           {fltk::Input} title_text {
669             label Title
670             xywh {55 5 520 20}
671           }
672           {fltk::Input} author_text {
673             label Author
674             xywh {55 30 520 20}
675           }
676           {fltk::TextEditor} info_text {
677             xywh {5 55 570 285} resizable textfont 4
678           }
679         }
680         {fltk::Group} {} {
681           label controls open
682           xywh {0 25 580 345} hide
683         } {
684           {fltk::TextDisplay} {} {
685             xywh {5 5 570 335} resizable textfont 4
686             extra_code {load_text(o,ROOT_DATA_DIR"doc/controls.txt");}
687           }
688         }
689         {fltk::Group} {} {
690           label guide open
691           xywh {0 25 580 345} hide
692         } {
693           {fltk::TextDisplay} {} {
694             xywh {5 5 570 335} resizable textfont 4
695             extra_code {load_text(o,ROOT_DATA_DIR"doc/guide.txt");}
696           }
697         }
698         {fltk::Group} {} {
699           label license open
700           xywh {0 25 580 345} hide
701         } {
702           {fltk::TextDisplay} {} {
703             xywh {5 5 570 335} resizable textfont 4
704             extra_code {load_text(o,ROOT_DATA_DIR"doc/license.txt");}
705           }
706         }
707         {fltk::Group} {} {
708           label about open
709           xywh {0 25 580 345} hide
710         } {
711           {fltk::TextDisplay} {} {
712             xywh {5 5 570 335} resizable textfont 4
713             extra_code {load_text(o,ROOT_DATA_DIR"doc/README");}
714           }
715         }
716       }
717     }
718     {fltk::Window} action_window {
719       label menu
720       xywh {286 302 100 130} horizontal hide
721     } {
722       {fltk::Button} {} {
723         label new
724         callback {clear();
725 init_seq();
726 track_info->update();
727 action_window->hide();}
728         xywh {5 5 90 20}
729       }
730       {fltk::Button} {} {
731         label save
732         callback {action_window->hide();
733 save();}
734         xywh {5 25 90 20}
735       }
736       {fltk::Button} {} {
737         label {save as}
738         callback {action_window->hide();
739 save(fltk::file_chooser("save file",NULL,get_last_dir()));}
740         xywh {5 45 90 20}
741       }
742       {fltk::Button} {} {
743         label load
744         callback {action_window->hide();
745 load(fltk::file_chooser("open file",NULL,get_last_dir()));}
746         xywh {5 65 90 20}
747       }
748       {fltk::Button} {} {
749         label import
750         xywh {5 85 90 20}
751       }
752       {fltk::Button} {} {
753         label export
754         callback {action_window->hide();
755 savesmf(fltk::file_chooser("export file",NULL,get_last_dir()));}
756         xywh {5 105 90 20}
757       }
758     }
759     {fltk::Window} scope_window {
760       label scope selected
761       xywh {647 310 425 280} hide resizable
762     } {
763       {fltk::TextDisplay} scope {
764         xywh {5 5 415 245} textfont 4 color 0x280000 textcolor 0xff0000
765         extra_code {o->wrap_mode(1);}
766       }
767       {fltk::Button} {} {
768         label on
769         xywh {5 255 30 20}
770         extra_code {o->type(fltk::Button::TOGGLE);}
771       }
772     }
773     code {loop_toggle->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/loop.gif"));
774 color_toggle->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/color.gif"));
775 scope_button->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/conf.gif"));
776 file_button->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/file.gif"));
777 help_button->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/help.gif"));
779 qbutton4->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/q4.gif"));
780 qbutton8->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/q8.gif"));
781 qbutton16->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/q16.gif"));
782 qbutton32->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/q32.gif"));
783 qbutton64->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/q64.gif"));
784 qbutton128->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/q128.gif"));
785 qbutton0->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/q0.gif"));} {}
786     code {track_info->set_rec(0);} {}
787     code {config_init();} {}
788     code {main_window->show();} {}
789   }