1
# data file for the Fltk User Interface Designer (fluid)
5
decl {\#include <FL/Fl_Box.h>} {public
8
decl {\#include <stdlib.h>} {public
11
decl {\#include "Controller.h"} {public
14
decl {Controller *controller;} {}
16
class Pad {: {public Fl_Box}
18
Function {Pad(int x,int y, int w, int h, const char *label=0):Fl_Box(x,y,w,h,label)} {} {
21
Function {temp_draw()} {} {
22
code {/*int ox=x(),oy=y(),lx=w(),ly=h(),i,ix,iy,oiy;
26
fl_rectf(ox,oy,lx,ly);
32
fl_line_style(FL_SOLID);
33
fl_line(ox+2,oy+ly/2,ox+lx-2,oy+ly/2);
36
Function {sendmidi(int button,float datax,float datay)} {} {
37
code {controller->send(button,datax);
38
controller->send(button+1,datay);} {}
40
Function {handle(int event)} {return_type int
42
code {int x_=Fl::event_x()-x();
43
int y_=Fl::event_y()-y();
45
if ((event==FL_PUSH)||(event==FL_DRAG)){
46
if (x_<0) x_=0;if (y_<0) y_=0;
47
if (x_>=w()) x_=w();if (y_>=h()-1) y_=h()-1;
49
float tmpx=(float) x_/(w());
50
float tmpy=1.0-(float) y_/h();
52
int b=Fl::event_buttons()>>24;
54
if (b&1) sendmidi(0,tmpx,tmpy);
55
if (b&2) sendmidi(2,tmpx,tmpy);
56
if (b&4) sendmidi(4,tmpx,tmpy);
62
decl {int oldx,oldy;} {}
65
class ControllerUI {} {
66
Function {make_window()} {} {
67
Fl_Window controlleruiwindow {
68
label {Midi Controller}
71
xywh {210 213 340 410} hide
74
label {Output Channel}
75
callback {controller->Pchout=(int) o->value();}
76
xywh {10 13 75 22} type Simple labelsize 10 align 5 minimum 0 maximum 15 step 1 textfont 1
77
code0 {o->value(controller->Pchout);}
80
xywh {10 80 320 320} box ENGRAVED_BOX color 176
84
callback {nbut=(int) o->value();
86
xywh {10 50 75 20} down_box BORDER_BOX
90
xywh {0 0 100 20} labelfont 1 labelsize 12
94
xywh {10 10 100 20} labelfont 1 labelsize 12 divider
98
xywh {10 10 100 20} labelfont 1 labelsize 12
102
xywh {20 20 100 20} labelfont 1 labelsize 12 divider
106
xywh {20 20 100 20} labelfont 1 labelsize 12
110
xywh {30 30 100 20} labelfont 1 labelsize 12
114
xywh {95 35 60 40} box ENGRAVED_BOX
116
Fl_Counter ctlcounter {
118
callback {controller->pars[nbut].ctl.par=(int) o->value();}
119
xywh {100 50 50 15} type Simple labelsize 10 align 1 minimum 0 maximum 127 step 1 textfont 1 textsize 12
122
Fl_Choice modechoice {
124
callback {controller->pars[nbut].mode=(int) o->value();
126
xywh {95 13 60 20} down_box BORDER_BOX labelsize 10 align 5
130
xywh {30 30 100 20} labelfont 1 labelsize 12
134
xywh {20 20 100 20} labelfont 1 labelsize 12
138
xywh {30 30 100 20} labelfont 1 labelsize 12 deactivate
142
xywh {40 40 100 20} labelfont 1 labelsize 12
146
xywh {160 35 170 40} box ENGRAVED_BOX
148
Fl_Counter cparcounter {
150
callback {controller->pars[nbut].nrpn.cpar=(int) o->value();}
151
xywh {165 50 50 15} type Simple labelsize 10 align 1 minimum 0 maximum 127 step 1 textfont 1 textsize 12
153
Fl_Counter fparcounter {
155
callback {controller->pars[nbut].nrpn.fpar=(int) o->value();}
156
xywh {220 50 50 15} type Simple labelsize 10 align 1 minimum 0 maximum 127 step 1 textfont 1 textsize 12
158
Fl_Counter cvalcounter {
160
callback {controller->pars[nbut].nrpn.cval=(int) o->value();}
161
xywh {275 50 50 15} type Simple labelsize 10 align 1 minimum 0 maximum 127 step 1 textfont 1 textsize 12
164
Fl_Counter val1counter {
166
callback {controller->pars[nbut].val1=(int) o->value();}
167
xywh {190 15 50 15} type Simple labelsize 10 align 5 minimum 0 maximum 127 step 1 textfont 1 textsize 12
169
Fl_Counter val2counter {
171
callback {controller->pars[nbut].val2=(int) o->value();}
172
xywh {275 15 50 15} type Simple labelsize 10 align 5 minimum 0 maximum 127 step 1 value 127 textfont 1 textsize 12
174
Fl_Button exchangebutton {
176
callback {unsigned char tmp=controller->pars[nbut].val2;
177
controller->pars[nbut].val2=controller->pars[nbut].val1;
178
controller->pars[nbut].val1=tmp;
180
xywh {245 15 25 15} box THIN_UP_BOX
184
Function {refreshvalues()} {} {
185
code {modechoice->value(controller->pars[nbut].mode);
186
val1counter->value(controller->pars[nbut].val1);
187
val2counter->value(controller->pars[nbut].val2);
188
ctlcounter->value(controller->pars[nbut].ctl.par);
189
cparcounter->value(controller->pars[nbut].nrpn.cpar);
190
fparcounter->value(controller->pars[nbut].nrpn.fpar);
191
cvalcounter->value(controller->pars[nbut].nrpn.cval);
193
if (controller->pars[nbut].mode!=0){
194
val1counter->activate();
195
val2counter->activate();
196
exchangebutton->activate();
198
val1counter->deactivate();
199
val2counter->deactivate();
200
exchangebutton->deactivate();
203
if (controller->pars[nbut].mode==1) ctlgroup->activate();
204
else ctlgroup->deactivate();
206
if (controller->pars[nbut].mode==3) nrpngroup->activate();
207
else nrpngroup->deactivate();} {selected
210
Function {ControllerUI(Controller *controller_)} {} {
212
controller=controller_;
215
controlleruiwindow->show();} {}