# data file for the Fltk User Interface Designer (fluid) version 1.0300 header_name {.h} code_name {.cc} decl {//Copyright (c) 2002-2005 Nasca Octavian Paul} {private local } decl {//License: GNU GPL version 2 or later} {private local } decl {\#include } {public local } decl {\#include } {public local } decl {\#include } {public local } decl {\#include } {public local } decl {\#include "../globals.h"} {public local } decl {\#include "../Misc/Util.h"} {public local } decl {\#include "../Misc/Dump.h"} {public local } decl {extern Dump dump;} {public local } class ConfigUI {} { Function {make_window()} {} { Fl_Window configwindow { label {ZynAddSubFX Settings} callback {writebankcfg(); o->hide();} xywh {554 443 510 370} type Double visible } { Fl_Tabs {} { xywh {5 5 500 330} } { Fl_Group {} { label {Main settings} xywh {5 25 500 310} } { Fl_Group {} { label {Sample Rate} xywh {15 45 165 30} box ENGRAVED_FRAME } { Fl_Choice {} { callback {if ((int)o->value()==0) samplerateinput->activate(); else samplerateinput->deactivate(); int samplerates[8]={44100,16000,22050,32000,44100,48000,88200,96000}; config.cfg.SampleRate=samplerates[(int)o->value()]; setsamplerateinput();} xywh {20 50 85 20} down_box BORDER_BOX textsize 10 code0 {o->value(getsamplerateorder());} } { MenuItem {} { label Custom xywh {10 10 100 20} labelfont 1 } MenuItem {} { label 16000Hz xywh {30 30 100 20} labelfont 1 } MenuItem {} { label 22050Hz xywh {20 20 100 20} labelfont 1 } MenuItem {} { label 32000Hz xywh {30 30 100 20} labelfont 1 } MenuItem {} { label 44100Hz xywh {40 40 100 20} labelfont 1 } MenuItem {} { label 48000Hz xywh {50 50 100 20} labelfont 1 } MenuItem {} { label 88200Hz xywh {60 60 100 20} labelfont 1 } MenuItem {} { label 96000Hz xywh {70 70 100 20} labelfont 1 } } Fl_Input samplerateinput { callback {char *tmp; config.cfg.SampleRate=strtoul(o->value(),&tmp,10);} xywh {115 50 60 20} type Int textfont 1 code0 {setsamplerateinput();} code1 {if (getsamplerateorder()!=0) o->deactivate();} } } Fl_Input {} { label {Buffer Size} callback {char *tmp; config.cfg.SoundBufferSize=strtoul(o->value(),&tmp,10);} tooltip {Internal Sound Buffer Size (samples)} xywh {190 45 60 20} type Int labelsize 11 align 129 textfont 1 code0 {char *tmpbuf=new char[100];o->cut(0,o->maximum_size());} code1 {snprintf(tmpbuf,100,"%d",config.cfg.SoundBufferSize);o->insert(tmpbuf);} code2 {delete []tmpbuf;} } Fl_Light_Button {} { label {Swap Stereo } callback {config.cfg.SwapStereo=(int) o->value();} xywh {20 80 85 20} box THIN_UP_BOX labelsize 10 code0 {o->value(config.cfg.SwapStereo);} } Fl_Choice {} { label OscilSize callback {config.cfg.OscilSize=128<value();} tooltip {ADSynth Oscillator Size (samples)} xywh {175 80 75 20} down_box BORDER_BOX labelfont 1 labelsize 11 textsize 10 code0 {o->value( (int) (log(config.cfg.OscilSize/128.0-1.0)/log(2)) +1);} } { MenuItem {} { label 128 xywh {25 25 100 20} labelfont 1 } MenuItem {} { label 256 xywh {35 35 100 20} labelfont 1 } MenuItem {} { label 512 xywh {45 45 100 20} labelfont 1 } MenuItem {} { label 1024 xywh {45 45 100 20} labelfont 1 } MenuItem {} { label 2048 xywh {55 55 100 20} labelfont 1 } MenuItem {} { label 4096 xywh {55 55 100 20} labelfont 1 } MenuItem {} { label 8192 xywh {65 65 100 20} labelfont 1 } MenuItem {} { label 16384 xywh {75 75 100 20} labelfont 1 } } Fl_Box {} { label {Most settings has effect only after ZynAddSubFX is restarted.} xywh {10 300 235 30} labelfont 1 labelsize 11 align 128 } Fl_Box {} { label {Read the Readme.txt for other settings} xywh {10 280 240 15} labelfont 1 labelsize 11 align 128 } Fl_Group {} { xywh {15 125 230 85} box ENGRAVED_BOX } { Fl_File_Input {} { label {Dump File} callback {config.cfg.DumpFile = o->value();} xywh {20 170 220 35} align 5 code0 {o->insert(config.cfg.DumpFile.c_str());} } Fl_Check_Button {} { label {Dump notes} callback {config.cfg.DumpNotesToFile=(int) o->value(); dump.startnow();//this has effect only if this option was disabled} xywh {20 130 100 20} down_box DOWN_BOX code0 {o->value(config.cfg.DumpNotesToFile);} } Fl_Check_Button {} { label Append callback {config.cfg.DumpAppend=(int) o->value();} xywh {160 130 80 20} down_box DOWN_BOX code0 {o->value(config.cfg.DumpAppend);} } } Fl_Group {} { xywh {255 45 245 260} box ENGRAVED_FRAME } { Fl_Box {} { label {Note: Not all the following settings are used (this depends on the operating system, etc..)} xywh {260 50 235 45} labelfont 1 labelsize 11 align 128 } Fl_Group {} { label Linux xywh {260 110 235 115} box ENGRAVED_BOX labelfont 1 labelsize 13 align 5 } { Fl_File_Input {} { label {OSS Sequencer Device (/dev/...)} callback {snprintf(config.cfg.LinuxOSSSeqInDev,config.maxstringsize,"%s",o->value());} xywh {265 180 225 35} align 5 code0 {o->insert(config.cfg.LinuxOSSSeqInDev);} } Fl_File_Input {} { label {OSS Wave Out Device (/dev/...)} callback {snprintf(config.cfg.LinuxOSSWaveOutDev,config.maxstringsize,"%s",o->value());} xywh {265 130 225 35} align 5 code0 {o->insert(config.cfg.LinuxOSSWaveOutDev);} } } Fl_Group {} { label Windows xywh {260 250 235 50} box ENGRAVED_BOX labelfont 1 labelsize 13 align 5 } { Fl_Counter {} { label {Midi In Dev} callback {config.cfg.WindowsMidiInId=(int) o->value(); midiinputnamebox->label(config.winmididevices[config.cfg.WindowsMidiInId].name);} xywh {270 270 65 20} type Simple labelsize 11 align 1 minimum 0 maximum 100 step 1 code0 {o->maximum(config.winmidimax-1);} code1 {o->value(config.cfg.WindowsMidiInId);} } Fl_Box midiinputnamebox { label {Midi input device name} xywh {340 260 150 35} labelfont 1 labelsize 11 align 212 code0 {o->label(config.winmididevices[config.cfg.WindowsMidiInId].name);} } } } Fl_Counter {} { label {XML compression level} callback {config.cfg.GzipCompression=(int) o->value();} tooltip {gzip compression level (0 - uncompressed)} xywh {20 215 65 15} type Simple labelsize 11 align 8 minimum 0 maximum 9 step 1 code0 {o->value(config.cfg.GzipCompression);} } Fl_Choice {} { label {PADsynth Interpolation} callback {config.cfg.Interpolation=(int) o->value();} xywh {175 105 75 15} down_box BORDER_BOX labelsize 10 textsize 11 code0 {o->value(config.cfg.Interpolation);} } { MenuItem {} { label {Linear(fast)} xywh {0 0 100 20} labelfont 1 labelsize 10 } MenuItem {} { label {Cubic(slow)} xywh {10 10 100 20} labelfont 1 labelsize 10 } } Fl_Choice {} { label {Virtual Keyboard Layout} callback {config.cfg.VirKeybLayout=(int) o->value();;} xywh {155 235 85 20} down_box BORDER_BOX labelsize 12 textfont 1 textsize 11 code0 {o->value(config.cfg.VirKeybLayout);} } { MenuItem {} { label { } xywh {5 5 100 20} labelfont 1 labelsize 11 deactivate } MenuItem {} { label QWERTY xywh {15 15 100 20} labelfont 1 labelsize 11 } MenuItem {} { label Dvorak xywh {25 25 100 20} labelfont 1 labelsize 11 } MenuItem {} { label QWERTZ xywh {35 35 100 20} labelfont 1 labelsize 11 } MenuItem {} { label AZERTY xywh {45 45 100 20} labelfont 1 labelsize 11 } } Fl_Check_Button {} { label {Ignore MIDI Program Change} callback {config.cfg.IgnoreProgramChange=(int) o->value();} xywh {10 255 230 20} down_box DOWN_BOX code0 {o->value(config.cfg.IgnoreProgramChange);} } } Fl_Group {} { label {Bank root dirs} xywh {5 25 500 285} hide } { Fl_Browser rootsbrowse { callback {activatebutton_rootdir(o->value()!=0);} xywh {15 35 485 220} type Hold } Fl_Button {} { label {Add root directory...} callback {const char *dirname; dirname=fl_dir_chooser("Add a root directory for banks:",NULL,0); if (dirname==NULL) return; rootsbrowse->add(dirname);} xywh {15 265 80 35} box THIN_UP_BOX align 128 } Fl_Button removerootdirbutton { label {Remove root dir...} callback {if (rootsbrowse->value()!=0) { rootsbrowse->remove(rootsbrowse->value()); }; activatebutton_rootdir(false);} xywh {105 265 80 35} box THIN_UP_BOX align 128 code0 {o->deactivate();} } Fl_Button makedefaultrootdirbutton { label {Make default} callback {int n=rootsbrowse->value(); if (n!=0) { rootsbrowse->move(1,n); rootsbrowse->value(1); rootsbrowse->redraw(); }; activatebutton_rootdir(true);} xywh {190 265 80 35} box THIN_UP_BOX align 128 code0 {o->deactivate();} } } Fl_Group {} { label {Presets dirs} xywh {5 25 500 285} hide } { Fl_Browser presetbrowse { callback {activatebutton_presetdir(o->value()!=0);} xywh {15 35 485 220} type Hold } Fl_Button {} { label {Add preset directory...} callback {const char *dirname; dirname=fl_dir_chooser("Add a preset directory :",NULL,0); if (dirname==NULL) return; presetbrowse->add(dirname);} xywh {15 265 80 35} box THIN_UP_BOX align 128 } Fl_Button removepresetbutton { label {Remove preset dir...} callback {if (presetbrowse->value()!=0) { presetbrowse->remove(presetbrowse->value()); }; activatebutton_presetdir(false);} xywh {105 265 80 35} box THIN_UP_BOX align 128 code0 {o->deactivate();} } Fl_Button makedefaultpresetbutton { label {Make default} callback {int n=presetbrowse->value(); if (n!=0) { presetbrowse->move(1,n); presetbrowse->value(1); presetbrowse->redraw(); }; activatebutton_presetdir(true);} xywh {190 265 80 35} box THIN_UP_BOX align 128 code0 {o->deactivate();} } } } Fl_Button {} { label Close callback {configwindow->hide(); writebankcfg(); writepresetcfg();} xywh {200 345 105 20} box THIN_UP_BOX } } } Function {ConfigUI()} {} { code {make_window(); readbankcfg(); readpresetcfg();} {} } Function {activatebutton_rootdir(bool active)} {} { code {if (active) { removerootdirbutton->activate(); makedefaultrootdirbutton->activate(); }else{ removerootdirbutton->deactivate(); makedefaultrootdirbutton->deactivate(); };} {} } Function {activatebutton_presetdir(bool active)} {} { code {if (active) { removepresetbutton->activate(); makedefaultpresetbutton->activate(); }else{ removepresetbutton->deactivate(); makedefaultpresetbutton->deactivate(); };} {} } Function {readbankcfg()} {} { code {rootsbrowse->clear(); for (int i=0;iadd(config.cfg.bankRootDirList[i].c_str()); };} {} } Function {writebankcfg()} {} { code {config.clearbankrootdirlist(); for (int n=0;nsize();n++){ config.cfg.bankRootDirList[n] = rootsbrowse->text(n+1); };} {} } Function {readpresetcfg()} {} { code {presetbrowse->clear(); for(int i=0;iadd(config.cfg.presetsDirList[i].c_str()); };} {} } Function {writepresetcfg()} {} { code {config.clearpresetsdirlist(); for (int n=0;nsize();n++) config.cfg.presetsDirList[n] = presetbrowse->text(n+1);} {} } Function {getsamplerateorder()} {return_type int } { code {int smpr=config.cfg.SampleRate; int order=0; switch(smpr){ case 16000:order=1;break; case 22050:order=2;break; case 32000:order=3;break; case 44100:order=4;break; case 48000:order=5;break; case 88200:order=6;break; case 96000:order=7;break; default:order=0;break; }; return(order);} {} } Function {setsamplerateinput()} {return_type void } { code {char *tmpbuf=new char[100]; samplerateinput->cut(0,samplerateinput->maximum_size()); snprintf(tmpbuf,100,"%d",config.cfg.SampleRate); samplerateinput->insert(tmpbuf); delete []tmpbuf;} {} } Function {show()} {} { code {configwindow->show();} {} } }