1055 lines
31 KiB
Plaintext
1055 lines
31 KiB
Plaintext
# data file for the FLTK User Interface Designer (FLUID)
|
|
version 2.1000
|
|
images_dir header_name
|
|
do_not_include_H_from_C
|
|
header_name {.h}
|
|
code_name {.cpp}
|
|
gridx 5
|
|
gridy 5
|
|
snap 3
|
|
decl {/*
|
|
Epichord - a midi sequencer
|
|
Copyright (C) 2008 Evan Rinehart
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License
|
|
as published by the Free Software Foundation; either version 2
|
|
of the License, or (at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to
|
|
|
|
The Free Software Foundation, Inc.
|
|
51 Franklin Street, Fifth Floor
|
|
Boston, MA 02110-1301, USA
|
|
*/} {}
|
|
|
|
decl {\#include <stdlib.h>} {}
|
|
|
|
decl {\#include <fltk/events.h>} {}
|
|
|
|
decl {\#include <fltk/file_chooser.h>} {}
|
|
|
|
decl {\#include "backend.h"} {}
|
|
|
|
decl {\#include "util.h"} {}
|
|
|
|
decl {\#include "uihelper.h"} {}
|
|
|
|
decl {\#include "config.h"} {}
|
|
|
|
decl {extern UI* ui;} {}
|
|
|
|
class UI {open
|
|
} {
|
|
Function {UI()} {open
|
|
} {
|
|
{fltk::Window} main_window {
|
|
label Epichord
|
|
callback {if(!fltk::ask("Quit?")){
|
|
return;
|
|
}
|
|
|
|
shutdown_gui();
|
|
|
|
save_config();} open
|
|
xywh {634 268 640 480} resizable
|
|
extra_code {\#include <stdio.h>
|
|
|
|
\#include <fltk/ask.h>
|
|
|
|
\#include "seq.h"
|
|
\#include "trackmodule.h"
|
|
o->size_range(640,455);
|
|
o->resize(640,455);} visible
|
|
} {
|
|
{fltk::Group} {} {open
|
|
xywh {0 0 640 445} resizable
|
|
} {
|
|
{fltk::Group} song_edit {open
|
|
xywh {0 0 640 445}
|
|
} {
|
|
{fltk::Group} {} {open
|
|
xywh {0 0 255 445} box FLAT_BOX
|
|
} {
|
|
{fltk::Widget} track_info {
|
|
label {track info}
|
|
xywh {0 15 255 415} resizable
|
|
extra_code {\#include "trackinfo.h"}
|
|
class TrackInfo
|
|
}
|
|
{fltk::Button} {} {
|
|
label {@}
|
|
callback {ui->track_info->toggle_controls();}
|
|
tooltip {more settings}
|
|
xywh {170 0 85 15}
|
|
}
|
|
{fltk::Button} {} {
|
|
label {+}
|
|
callback {track* t = new track();
|
|
add_track(t);
|
|
ui->track_info->redraw();
|
|
ui->arranger->layout();
|
|
ui->song_vscroll->redraw();}
|
|
tooltip {add new track}
|
|
xywh {0 0 85 15}
|
|
}
|
|
{fltk::Button} {} {
|
|
label {-}
|
|
tooltip {delete last track}
|
|
xywh {85 0 85 15}
|
|
}
|
|
}
|
|
{fltk::Group} {} {open
|
|
xywh {255 0 385 15}
|
|
} {
|
|
{fltk::Widget} song_timeline {
|
|
label timeline
|
|
xywh {0 0 370 15} resizable
|
|
extra_code {o->scale=16;
|
|
o->label_scale=4;}
|
|
class Timeline
|
|
}
|
|
}
|
|
{fltk::Group} song_scrollgroup {open
|
|
xywh {255 15 385 430} resizable
|
|
} {
|
|
{fltk::Widget} arranger {
|
|
label arranger
|
|
xywh {0 0 370 415} resizable box FLAT_BOX
|
|
extra_code {\#include "seq.h"
|
|
\#include "arranger.h"}
|
|
class Arranger
|
|
}
|
|
{fltk::Scrollbar} song_vscroll {
|
|
callback {int target = (int)o->value();
|
|
int dummy = ui->arranger->scrollx;
|
|
ui->arranger->scrollTo(dummy,target);}
|
|
xywh {370 0 15 415} slider_size 60
|
|
}
|
|
{fltk::Widget} song_hscroll {
|
|
callback {ui->arranger->scrollTo(o->value(), ui->arranger->scrolly);}
|
|
xywh {0 415 370 15}
|
|
extra_code {\#include "dragbar.h"}
|
|
class DragBar
|
|
}
|
|
}
|
|
}
|
|
{fltk::Group} pattern_edit {
|
|
xywh {0 0 640 445} hide
|
|
} {
|
|
{fltk::Group} {} {open
|
|
xywh {45 0 595 445} resizable
|
|
} {
|
|
{fltk::Group} {} {
|
|
xywh {0 0 595 15}
|
|
} {
|
|
{fltk::Widget} pattern_timeline {
|
|
label timeline
|
|
xywh {0 0 580 15} resizable box FLAT_BOX
|
|
extra_code {\#include "timeline.h"
|
|
o->edit_flag = 1;}
|
|
class Timeline
|
|
}
|
|
}
|
|
{fltk::Group} pattern_scrollgroup {open
|
|
xywh {0 15 595 355} resizable
|
|
} {
|
|
{fltk::Widget} piano_roll {
|
|
label pianoroll
|
|
xywh {0 0 580 340} resizable box FLAT_BOX
|
|
extra_code {\#include "pianoroll.h"}
|
|
class PianoRoll
|
|
}
|
|
{fltk::Scrollbar} pattern_vscroll {
|
|
callback {int target = (int)o->value();
|
|
int dummy = ui->piano_roll->scrollx;
|
|
ui->piano_roll->scrollTo(dummy,target);}
|
|
xywh {580 0 15 340}
|
|
}
|
|
{fltk::Widget} pattern_hscroll {
|
|
callback {ui->piano_roll->scrollTo(o->value(),ui->piano_roll->scrolly);}
|
|
xywh {0 340 580 15}
|
|
extra_code {\#include "dragbar.h"}
|
|
class DragBar
|
|
}
|
|
}
|
|
{fltk::Group} {} {
|
|
xywh {0 370 595 75}
|
|
} {
|
|
{fltk::Widget} event_edit {
|
|
label {event editor}
|
|
xywh {0 0 580 75} resizable box FLAT_BOX
|
|
extra_code {\#include "eventedit.h"}
|
|
class EventEdit
|
|
}
|
|
{fltk::Widget} event_menu {
|
|
xywh {0 0 580 75} hide box FLAT_BOX
|
|
extra_code {\#include "eventmenu.h"}
|
|
class EventMenu
|
|
}
|
|
{fltk::Button} event_menu_button {
|
|
label E
|
|
callback {if(o->state()==0){
|
|
ui->event_menu->hide();
|
|
ui->event_edit->show();
|
|
}
|
|
else{
|
|
ui->event_edit->hide();
|
|
ui->event_edit->recount_has();
|
|
ui->event_menu->show();
|
|
}}
|
|
tooltip {pick event type}
|
|
xywh {580 0 15 15}
|
|
extra_code {o->type(fltk::Button::TOGGLE);}
|
|
}
|
|
{fltk::Button} {} {
|
|
label L
|
|
callback {ui->event_edit->label_flag = o->state();
|
|
ui->event_edit->redraw();}
|
|
tooltip {toggle event value labels}
|
|
xywh {580 15 15 15}
|
|
extra_code {o->type(fltk::Button::TOGGLE);}
|
|
}
|
|
{fltk::Button} {} {
|
|
label C
|
|
callback {ui->event_edit->clear_events();}
|
|
tooltip {clear these events}
|
|
xywh {580 30 15 15}
|
|
}
|
|
{fltk::Button} {} {
|
|
label X
|
|
callback {ui->event_edit->clear_non_note_events();}
|
|
tooltip {clear all non note events in pattern}
|
|
xywh {580 45 15 15}
|
|
}
|
|
{fltk::Button} {} {
|
|
label Z
|
|
callback {ui->event_edit->clear_all_events();}
|
|
tooltip {clear everything}
|
|
xywh {580 60 15 15} labelcolor 0xff000000
|
|
}
|
|
}
|
|
}
|
|
{fltk::Group} {} {open
|
|
xywh {0 0 45 445} horizontal
|
|
} {
|
|
{fltk::Button} {} {
|
|
label {@line}
|
|
xywh {0 0 45 15}
|
|
}
|
|
{fltk::Group} {} {open
|
|
xywh {0 15 45 340} resizable
|
|
} {
|
|
{fltk::Widget} track_select {
|
|
label {track picker}
|
|
xywh {0 35 45 305}
|
|
extra_code {\#include "trackselect.h"}
|
|
class TrackSelect
|
|
}
|
|
{fltk::Widget} sample_view {
|
|
label {sample names}
|
|
xywh {0 35 45 305}
|
|
extra_code {\#include "sampleview.h"}
|
|
class SampleView
|
|
}
|
|
{fltk::Widget} keyboard {
|
|
label keyboard
|
|
xywh {0 0 45 340}
|
|
extra_code {\#include "keyboard.h"}
|
|
class Keyboard
|
|
}
|
|
}
|
|
{fltk::Button} {} {
|
|
label {@<-}
|
|
callback {show_song_edit();}
|
|
xywh {0 370 45 75}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
{fltk::Group} {} {open
|
|
xywh {0 445 640 35} box UP_BOX
|
|
} {
|
|
{fltk::Button} play_button {
|
|
label {@>}
|
|
callback {press_play();}
|
|
xywh {5 5 25 25} labelcolor 0x800000
|
|
}
|
|
{fltk::Button} stop_button {
|
|
label {@square}
|
|
callback {press_stop();}
|
|
xywh {35 5 25 25} labelcolor 0x800000
|
|
}
|
|
{fltk::Button} record_button {
|
|
label {@circle}
|
|
callback {toggle_backend_recording();}
|
|
xywh {65 5 25 25} labelcolor 0xff000000
|
|
extra_code {o->type(fltk::Button::TOGGLE);}
|
|
}
|
|
{fltk::Widget} metronome {
|
|
label 0
|
|
xywh {95 5 25 25} color 56 labelcolor 0xffffff00
|
|
extra_code {\#include <metronome.h>}
|
|
class Metronome
|
|
}
|
|
{fltk::Button} loop_toggle {
|
|
callback {toggle_loop();}
|
|
tooltip {toggle looping}
|
|
xywh {125 5 25 25}
|
|
extra_code {o->type(fltk::Button::TOGGLE);}
|
|
}
|
|
{fltk::Group} {} {open
|
|
xywh {155 0 20 35} resizable
|
|
} {}
|
|
{fltk::Group} pattern_buttons {
|
|
xywh {200 5 310 25} hide
|
|
} {
|
|
{fltk::Button} tri_button {
|
|
label tri
|
|
callback {set_trip(o->value());}
|
|
xywh {10 0 25 25}
|
|
extra_code {o->type(fltk::Button::TOGGLE);}
|
|
}
|
|
{fltk::Button} quant1_button {
|
|
label qua
|
|
tooltip {quantize selected notes}
|
|
xywh {35 0 25 25}
|
|
}
|
|
{fltk::Button} quant0_button {
|
|
label qu_
|
|
tooltip {quantize length of selected notes}
|
|
xywh {60 0 25 25}
|
|
}
|
|
{fltk::Button} tool_button {
|
|
label tool
|
|
callback {toggle_tool();}
|
|
xywh {85 0 25 25}
|
|
}
|
|
{fltk::Button} qbutton4 {
|
|
callback {set_quant(4);}
|
|
xywh {135 0 25 25}
|
|
extra_code {o->type(fltk::Button::TOGGLE);}
|
|
}
|
|
{fltk::Button} qbutton8 {
|
|
callback {set_quant(8);}
|
|
xywh {160 0 25 25}
|
|
extra_code {o->type(fltk::Button::TOGGLE);}
|
|
}
|
|
{fltk::Button} qbutton16 {
|
|
callback {set_quant(16);}
|
|
xywh {185 0 25 25}
|
|
extra_code {o->type(fltk::Button::TOGGLE);
|
|
o->state(1);}
|
|
}
|
|
{fltk::Button} qbutton32 {
|
|
callback {set_quant(32);}
|
|
xywh {210 0 25 25}
|
|
extra_code {o->type(fltk::Button::TOGGLE);}
|
|
}
|
|
{fltk::Button} qbutton64 {
|
|
callback {set_quant(64);}
|
|
xywh {235 0 25 25}
|
|
extra_code {o->type(fltk::Button::TOGGLE);}
|
|
}
|
|
{fltk::Button} qbutton128 {
|
|
callback {set_quant(128);}
|
|
xywh {260 0 25 25}
|
|
extra_code {o->type(fltk::Button::TOGGLE);}
|
|
}
|
|
{fltk::Button} qbutton0 {
|
|
callback {set_quant(0);}
|
|
xywh {285 0 25 25}
|
|
extra_code {o->type(fltk::Button::TOGGLE);}
|
|
}
|
|
}
|
|
{fltk::Group} song_buttons {
|
|
xywh {385 5 145 25}
|
|
} {
|
|
{fltk::Button} edit_button {
|
|
callback {set_songtool(0);}
|
|
tooltip {create delete move resize select paste blocks}
|
|
xywh {0 0 25 25} value 1
|
|
}
|
|
{fltk::Button} color_button {
|
|
callback {set_songtool(1);}
|
|
tooltip {color tool}
|
|
xywh {25 0 25 25}
|
|
extra_code {o->type(fltk::Button::TOGGLE);}
|
|
}
|
|
{fltk::Button} unclone_button {
|
|
callback {set_songtool(2);}
|
|
tooltip {click on blocks to unclone them}
|
|
xywh {50 0 25 25}
|
|
extra_code {o->type(fltk::Button::TOGGLE);}
|
|
}
|
|
{fltk::Button} split_button {
|
|
callback {set_songtool(3);}
|
|
tooltip {click on a block to split in two}
|
|
xywh {75 0 25 25}
|
|
extra_code {o->type(fltk::Button::TOGGLE);}
|
|
}
|
|
{fltk::Button} join_button {
|
|
callback {set_songtool(4);}
|
|
tooltip {click on adjacent blocks to join them}
|
|
xywh {100 0 25 25}
|
|
extra_code {o->type(fltk::Button::TOGGLE);}
|
|
}
|
|
}
|
|
{fltk::Button} conf_button {
|
|
callback {if(o->state()){
|
|
ui->config_window->show();
|
|
}
|
|
else{
|
|
ui->config_window->hide();
|
|
}}
|
|
tooltip configuration
|
|
xywh {535 5 25 25}
|
|
extra_code {o->type(fltk::Button::TOGGLE);}
|
|
}
|
|
{fltk::Button} scope_button {
|
|
callback {if(o->state()){
|
|
ui->scope_window->show();
|
|
}
|
|
else{
|
|
ui->scope_window->hide();
|
|
}}
|
|
tooltip scope
|
|
xywh {560 5 25 25}
|
|
extra_code {o->type(fltk::Button::TOGGLE);}
|
|
}
|
|
{fltk::Button} file_button {
|
|
callback {if(o->state()){
|
|
ui->action_window->show();
|
|
}
|
|
else{
|
|
ui->action_window->hide();
|
|
}}
|
|
tooltip disk
|
|
xywh {585 5 25 25} hide
|
|
extra_code {\#include "saveload.h"
|
|
o->type(fltk::Button::TOGGLE);}
|
|
}
|
|
{fltk::PopupMenu} file_menu {open
|
|
xywh {585 5 25 25}
|
|
} {
|
|
{fltk::Item} {} {
|
|
label new
|
|
callback {reset_song();
|
|
ui->file_button->state(0);}
|
|
}
|
|
{fltk::Item} {} {
|
|
label load
|
|
callback {action_window->hide();
|
|
ui->file_button->state(0);
|
|
const char* filename = fltk::file_chooser("open file",NULL,get_last_dir());
|
|
if(filename){
|
|
reset_song();
|
|
if(load(filename)<0){
|
|
reset_song();
|
|
}
|
|
}} selected
|
|
}
|
|
{fltk::Item} {} {
|
|
label save
|
|
callback {action_window->hide();
|
|
ui->file_button->state(0);
|
|
save();}
|
|
}
|
|
{fltk::Item} {} {
|
|
label {save as...}
|
|
callback {action_window->hide();
|
|
ui->file_button->state(0);
|
|
save(fltk::file_chooser("save file",NULL,get_last_dir()));}
|
|
}
|
|
{fltk::Divider} {} {
|
|
}
|
|
{fltk::Item} {} {
|
|
label import
|
|
callback {action_window->hide();
|
|
ui->file_button->state(0);
|
|
const char* filename = fltk::file_chooser("open file",NULL,get_last_dir());
|
|
if(filename){
|
|
reset_song();
|
|
if(loadsmf(filename)<0){
|
|
reset_song();
|
|
}
|
|
}}
|
|
}
|
|
{fltk::Item} {} {
|
|
label export
|
|
callback {action_window->hide();
|
|
ui->file_button->state(0);
|
|
savesmf(fltk::file_chooser("export file",NULL,get_last_dir()));}
|
|
}
|
|
}
|
|
{fltk::Button} help_button {
|
|
callback {if(o->state()){
|
|
ui->help_window->show();
|
|
}
|
|
else{
|
|
ui->help_window->hide();
|
|
}}
|
|
tooltip help
|
|
xywh {610 5 25 25}
|
|
extra_code {o->type(fltk::Button::TOGGLE);}
|
|
}
|
|
}
|
|
}
|
|
{fltk::Window} config_window {
|
|
label config
|
|
callback {ui->conf_button->state(0);
|
|
o->hide();}
|
|
xywh {52 125 320 285} hide resizable
|
|
} {
|
|
{fltk::TabGroup} {} {open
|
|
xywh {0 0 320 285}
|
|
} {
|
|
{fltk::Group} {} {
|
|
label options open
|
|
xywh {145 15 170 265} horizontal
|
|
} {
|
|
{fltk::ValueInput} beats_per_measure {
|
|
label {beats per measure}
|
|
callback {if(o->value() > o->maximum())
|
|
o->value(o->maximum());
|
|
if(o->value() < o->minimum())
|
|
o->value(o->minimum());
|
|
set_beats_per_measure((int)o->value());}
|
|
xywh {5 5 45 20} minimum 1 maximum 31 step 1 value 4
|
|
}
|
|
{fltk::ValueInput} measures_per_phrase {
|
|
label {measures per phrase}
|
|
callback {if(o->value() > o->maximum())
|
|
o->value(o->maximum());
|
|
if(o->value() < o->minimum())
|
|
o->value(o->minimum());
|
|
set_measures_per_phrase((int)o->value());}
|
|
xywh {5 30 45 20} maximum 128 step 1 value 4
|
|
}
|
|
{fltk::ValueOutput} bpm_output {
|
|
label bpm
|
|
xywh {5 55 45 20} minimum 1 maximum 1000 step 1 value 120
|
|
}
|
|
{fltk::ThumbWheel} bpm_wheel {
|
|
callback {set_bpm((int)o->value());
|
|
ui->bpm_output->value(o->value());}
|
|
xywh {55 55 105 20} align 4 minimum 1 maximum 1000 step 1 value 120
|
|
}
|
|
{fltk::ValueInput} measures_until_record {
|
|
label {measures until record}
|
|
callback {if(o->value() > o->maximum())
|
|
o->value(o->maximum());
|
|
if(o->value() < o->minimum())
|
|
o->value(o->minimum());
|
|
set_measures_until_record((int)o->value());}
|
|
xywh {5 80 45 20} maximum 128 step 1 value 1
|
|
}
|
|
{fltk::CheckButton} check_alwayscopy {
|
|
label {always hard copy}
|
|
callback {set_alwayscopy(o->value());}
|
|
tooltip {instead of making a linked clone when you copy a block in the song view.}
|
|
xywh {5 105 25 25} align 4
|
|
}
|
|
{fltk::CheckButton} check_trackinit {
|
|
label {track init}
|
|
callback {set_trackinit(o->value());}
|
|
xywh {145 80 25 25} align 4 value 1
|
|
}
|
|
{fltk::CheckButton} check_autotrackname {
|
|
label {auto track name}
|
|
callback {set_autotrackname(o->value());}
|
|
tooltip {Fill in GM instruments for track names when you change the program.}
|
|
xywh {145 105 25 25} align 4
|
|
}
|
|
{fltk::CheckButton} check_passthru {
|
|
label {record pass-thru}
|
|
callback {set_passthru(o->value());}
|
|
tooltip {Echo midi input to midi output.}
|
|
xywh {5 130 25 26} horizontal align 4 value 1
|
|
}
|
|
{fltk::CheckButton} check_playinsert {
|
|
label {play note insertion}
|
|
callback {set_playinsert(o->value());}
|
|
tooltip {Send midi note on when you create notes.}
|
|
xywh {145 130 25 26} horizontal align 4 value 1
|
|
}
|
|
{fltk::CheckButton} check_recordonchan {
|
|
label {record on channel}
|
|
callback {set_recordonchan(o->value());}
|
|
tooltip {Record on first track that matches channel of midi input instead of selected track.}
|
|
xywh {5 155 25 25} align 4
|
|
}
|
|
{fltk::CheckButton} check_playmove {
|
|
label {play note move}
|
|
callback {set_playmove(o->value());}
|
|
tooltip {Send midi note on when you move notes.}
|
|
xywh {145 155 25 26} horizontal align 4 value 1
|
|
}
|
|
{fltk::CheckButton} check_follow {
|
|
label {follow playback}
|
|
callback {set_follow(o->value());}
|
|
tooltip {Auto scroll horizontally when play head leaves viewing area.}
|
|
xywh {5 179 25 26} horizontal align 4 value 1
|
|
}
|
|
{fltk::ValueInput} default_velocity {
|
|
label {default velocity}
|
|
callback {if(o->value() > o->maximum())
|
|
o->value(o->maximum());
|
|
if(o->value() < o->minimum())
|
|
o->value(o->minimum());
|
|
set_defaultvelocity((int)o->value());}
|
|
xywh {120 180 45 20} maximum 127 step 1 value 96
|
|
}
|
|
{fltk::Choice} menu_recordmode {
|
|
label {record mode} open
|
|
xywh {5 210 160 25}
|
|
} {
|
|
{fltk::Item} {} {
|
|
label merge
|
|
callback {set_recordmode(0);}
|
|
}
|
|
{fltk::Item} {} {
|
|
label overwrite
|
|
callback {set_recordmode(1);}
|
|
}
|
|
{fltk::Item} {} {
|
|
label layer
|
|
callback {set_recordmode(2);}
|
|
}
|
|
}
|
|
{fltk::Choice} menu_rob {
|
|
label {record outside block} open
|
|
xywh {5 240 160 25}
|
|
} {
|
|
{fltk::Item} {} {
|
|
label {do nothing}
|
|
callback {set_robmode(0);}
|
|
}
|
|
{fltk::Item} {} {
|
|
label {new block}
|
|
callback {set_robmode(1);}
|
|
}
|
|
{fltk::Item} {} {
|
|
label {extend block}
|
|
callback {set_robmode(2);}
|
|
}
|
|
}
|
|
}
|
|
{fltk::Group} {} {
|
|
label keyboard
|
|
xywh {0 15 320 270} hide
|
|
} {
|
|
{fltk::Widget} kg_l0 {
|
|
label C0
|
|
xywh {35 5 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_l1 {
|
|
label {C\#0}
|
|
xywh {35 20 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_l2 {
|
|
label D0
|
|
xywh {35 35 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_l3 {
|
|
label {D\#0}
|
|
xywh {35 50 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_l4 {
|
|
label E0
|
|
xywh {35 65 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_l5 {
|
|
label F0
|
|
xywh {35 80 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_l6 {
|
|
label {F\#0}
|
|
xywh {35 95 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_l7 {
|
|
label G0
|
|
xywh {35 110 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_l8 {
|
|
label {G\#0}
|
|
xywh {35 125 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_l9 {
|
|
label A0
|
|
xywh {35 140 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_l10 {
|
|
label {A\#0}
|
|
callback {;}
|
|
xywh {35 155 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_l11 {
|
|
label B0
|
|
xywh {35 170 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_l12 {
|
|
label C1
|
|
xywh {35 185 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_l13 {
|
|
label {C\#1}
|
|
xywh {35 200 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_l14 {
|
|
label D1
|
|
xywh {35 215 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_l15 {
|
|
label {D\#1}
|
|
xywh {35 230 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_l16 {
|
|
label E1
|
|
xywh {35 245 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_u0 {
|
|
label C1
|
|
xywh {130 5 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_u1 {
|
|
label {C\#1}
|
|
xywh {130 20 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_u2 {
|
|
label D1
|
|
xywh {130 35 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_u3 {
|
|
label {D\#1}
|
|
xywh {130 50 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_u4 {
|
|
label E1
|
|
xywh {130 65 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_u5 {
|
|
label F1
|
|
xywh {130 80 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_u6 {
|
|
label {F\#1}
|
|
xywh {130 95 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_u7 {
|
|
label G1
|
|
xywh {130 110 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_u8 {
|
|
label {G\#1}
|
|
xywh {130 125 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_u9 {
|
|
label A1
|
|
xywh {130 140 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_u10 {
|
|
label {A\#1}
|
|
xywh {130 155 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_u11 {
|
|
label B1
|
|
xywh {130 170 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_u12 {
|
|
label C2
|
|
xywh {130 185 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_u13 {
|
|
label {C\#2}
|
|
xywh {130 200 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_u14 {
|
|
label D2
|
|
xywh {130 215 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_u15 {
|
|
label {D\#2}
|
|
xywh {130 230 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_u16 {
|
|
label E2
|
|
xywh {130 245 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_u17 {
|
|
label F2
|
|
xywh {265 5 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_u18 {
|
|
label {F\#2}
|
|
xywh {265 20 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_u19 {
|
|
label G2
|
|
xywh {265 35 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_u20 {
|
|
label {G\#2}
|
|
xywh {265 50 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_zi {
|
|
label {zoom in}
|
|
xywh {265 65 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_zo {
|
|
label {zoom out}
|
|
xywh {265 80 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_ou {
|
|
label {octave up}
|
|
xywh {265 95 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
{fltk::Widget} kg_od {
|
|
label {octave down}
|
|
xywh {265 110 45 15} align 4
|
|
class KeyGrabber
|
|
}
|
|
}
|
|
{fltk::Group} {} {
|
|
label colors
|
|
xywh {0 15 320 270} hide
|
|
} {
|
|
{fltk::Button} {} {
|
|
label apply
|
|
xywh {250 245 65 20}
|
|
}
|
|
{fltk::Choice} {} {
|
|
label presets open
|
|
xywh {55 10 100 20}
|
|
} {
|
|
{fltk::Item} {} {
|
|
label windo
|
|
}
|
|
{fltk::Item} {} {
|
|
label midnight
|
|
}
|
|
{fltk::Item} {} {
|
|
label xterm
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
{fltk::Window} help_window {
|
|
label help
|
|
callback {ui->help_button->state(0);
|
|
o->hide();}
|
|
xywh {519 345 580 370} hide resizable
|
|
extra_code {o->size_range(580,370);}
|
|
} {
|
|
{fltk::TabGroup} {} {open
|
|
xywh {0 0 580 370}
|
|
} {
|
|
{fltk::Group} {} {
|
|
label info open
|
|
xywh {0 25 580 345} resizable
|
|
} {
|
|
{fltk::Input} title_text {
|
|
label Title
|
|
xywh {55 5 520 20}
|
|
}
|
|
{fltk::Input} author_text {
|
|
label Author
|
|
xywh {55 30 520 20}
|
|
}
|
|
{fltk::TextEditor} info_text {
|
|
xywh {5 55 570 285} resizable textfont 4
|
|
}
|
|
}
|
|
{fltk::Group} {} {
|
|
label controls open
|
|
xywh {0 25 580 345} hide
|
|
} {
|
|
{fltk::TextDisplay} {} {
|
|
xywh {5 5 570 335} resizable textfont 4
|
|
extra_code {load_text(o,ROOT_DATA_DIR"doc/controls.txt");}
|
|
}
|
|
}
|
|
{fltk::Group} {} {
|
|
label guide open
|
|
xywh {0 25 580 345} hide
|
|
} {
|
|
{fltk::TextDisplay} {} {
|
|
xywh {5 5 570 335} resizable textfont 4
|
|
extra_code {load_text(o,ROOT_DATA_DIR"doc/guide.txt");}
|
|
}
|
|
}
|
|
{fltk::Group} {} {
|
|
label license open
|
|
xywh {0 25 580 345} hide
|
|
} {
|
|
{fltk::TextDisplay} {} {
|
|
xywh {5 5 570 335} resizable textfont 4
|
|
extra_code {load_text(o,ROOT_DATA_DIR"doc/license.txt");}
|
|
}
|
|
}
|
|
{fltk::Group} {} {
|
|
label about open
|
|
xywh {0 25 580 345} hide
|
|
} {
|
|
{fltk::TextDisplay} {} {
|
|
xywh {5 5 570 335} resizable textfont 4
|
|
extra_code {load_text(o,ROOT_DATA_DIR"doc/README");}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
{fltk::Window} action_window {
|
|
label menu
|
|
callback {ui->file_button->state(0);
|
|
o->hide();}
|
|
xywh {286 302 100 130} horizontal hide resizable
|
|
} {
|
|
{fltk::Button} {} {
|
|
label new
|
|
callback {reset_song();
|
|
ui->file_button->state(0);}
|
|
xywh {5 5 90 20}
|
|
}
|
|
{fltk::Button} {} {
|
|
label save
|
|
callback {action_window->hide();
|
|
ui->file_button->state(0);
|
|
save();}
|
|
xywh {5 25 90 20}
|
|
}
|
|
{fltk::Button} {} {
|
|
label {save as}
|
|
callback {action_window->hide();
|
|
ui->file_button->state(0);
|
|
save(fltk::file_chooser("save file",NULL,get_last_dir()));}
|
|
xywh {5 45 90 20}
|
|
}
|
|
{fltk::Button} {} {
|
|
label load
|
|
callback {action_window->hide();
|
|
ui->file_button->state(0);
|
|
if(load(fltk::file_chooser("open file",NULL,get_last_dir()))<0){
|
|
reset_song();
|
|
}}
|
|
xywh {5 65 90 20}
|
|
}
|
|
{fltk::Button} {} {
|
|
label import
|
|
callback {action_window->hide();
|
|
ui->file_button->state(0);
|
|
if(loadsmf(fltk::file_chooser("import file",NULL,get_last_dir()))<0){
|
|
reset_song();
|
|
}}
|
|
xywh {5 85 90 20}
|
|
}
|
|
{fltk::Button} {} {
|
|
label export
|
|
callback {action_window->hide();
|
|
ui->file_button->state(0);
|
|
savesmf(fltk::file_chooser("export file",NULL,get_last_dir()));}
|
|
xywh {5 105 90 20}
|
|
}
|
|
}
|
|
{fltk::Window} scope_window {
|
|
label scope
|
|
callback {ui->scope_button->state(0);
|
|
o->hide();}
|
|
xywh {647 310 425 280} hide resizable
|
|
} {
|
|
{fltk::TextDisplay} scope {
|
|
xywh {5 5 415 245} resizable textfont 4 color 0x280000 textcolor 0xff0000
|
|
extra_code {o->wrap_mode(1);}
|
|
}
|
|
{fltk::Group} {} {open
|
|
xywh {5 255 415 20}
|
|
} {
|
|
{fltk::Button} {} {
|
|
label on
|
|
callback {if(o->state()){
|
|
turnonscope();
|
|
}
|
|
else{
|
|
turnoffscope();
|
|
}}
|
|
xywh {0 0 40 20}
|
|
extra_code {o->type(fltk::Button::TOGGLE);}
|
|
}
|
|
{fltk::InvisibleBox} {} {
|
|
xywh {45 0 95 20} resizable
|
|
}
|
|
}
|
|
}
|
|
code {loop_toggle->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/loop.gif"));
|
|
conf_button->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/conf.gif"));
|
|
scope_button->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/scope.gif"));
|
|
file_button->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/file.gif"));
|
|
file_menu->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/file.gif"));
|
|
help_button->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/help.gif"));
|
|
|
|
edit_button->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/edit.gif"));
|
|
color_button->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/color.gif"));
|
|
unclone_button->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/fork.gif"));
|
|
split_button->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/split.gif"));
|
|
join_button->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/join.gif"));
|
|
|
|
qbutton4->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/q4.gif"));
|
|
qbutton8->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/q8.gif"));
|
|
qbutton16->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/q16.gif"));
|
|
qbutton32->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/q32.gif"));
|
|
qbutton64->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/q64.gif"));
|
|
qbutton128->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/q128.gif"));
|
|
qbutton0->image(fltk::SharedImage::get(ROOT_DATA_DIR"gfx/q0.gif"));} {}
|
|
code {track_info->set_rec(0);} {}
|
|
code {start_monitor();} {}
|
|
code {main_window->show();} {}
|
|
}
|
|
}
|