Audio plugin host https://kx.studio/carla
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

574 lines
21KB

  1. // generated by Fast Light User Interface Designer (fluid) version 1.0300
  2. #include "zynaddsubfx/UI/ConfigUI.h"
  3. //Copyright (c) 2002-2005 Nasca Octavian Paul
  4. //License: GNU GPL version 2 or later
  5. void ConfigUI::cb_configwindow_i(Fl_Double_Window* o, void*) {
  6. writebankcfg();
  7. o->hide();
  8. }
  9. void ConfigUI::cb_configwindow(Fl_Double_Window* o, void* v) {
  10. ((ConfigUI*)(o->user_data()))->cb_configwindow_i(o,v);
  11. }
  12. void ConfigUI::cb__i(Fl_Choice* o, void*) {
  13. if ((int)o->value()==0) samplerateinput->activate();
  14. else samplerateinput->deactivate();
  15. int samplerates[8]={44100,16000,22050,32000,44100,48000,88200,96000};
  16. config.cfg.SampleRate=samplerates[(int)o->value()];
  17. setsamplerateinput();
  18. }
  19. void ConfigUI::cb_(Fl_Choice* o, void* v) {
  20. ((ConfigUI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb__i(o,v);
  21. }
  22. Fl_Menu_Item ConfigUI::menu_[] = {
  23. {"Custom", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0},
  24. {"16000Hz", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0},
  25. {"22050Hz", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0},
  26. {"32000Hz", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0},
  27. {"44100Hz", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0},
  28. {"48000Hz", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0},
  29. {"88200Hz", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0},
  30. {"96000Hz", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0},
  31. {0,0,0,0,0,0,0,0,0}
  32. };
  33. void ConfigUI::cb_samplerateinput_i(Fl_Int_Input* o, void*) {
  34. char *tmp;
  35. config.cfg.SampleRate=strtoul(o->value(),&tmp,10);
  36. }
  37. void ConfigUI::cb_samplerateinput(Fl_Int_Input* o, void* v) {
  38. ((ConfigUI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_samplerateinput_i(o,v);
  39. }
  40. void ConfigUI::cb_Buffer_i(Fl_Int_Input* o, void*) {
  41. char *tmp;
  42. config.cfg.SoundBufferSize=strtoul(o->value(),&tmp,10);
  43. }
  44. void ConfigUI::cb_Buffer(Fl_Int_Input* o, void* v) {
  45. ((ConfigUI*)(o->parent()->parent()->parent()->user_data()))->cb_Buffer_i(o,v);
  46. }
  47. void ConfigUI::cb_Swap_i(Fl_Light_Button* o, void*) {
  48. config.cfg.SwapStereo=(int) o->value();
  49. }
  50. void ConfigUI::cb_Swap(Fl_Light_Button* o, void* v) {
  51. ((ConfigUI*)(o->parent()->parent()->parent()->user_data()))->cb_Swap_i(o,v);
  52. }
  53. void ConfigUI::cb_OscilSize_i(Fl_Choice* o, void*) {
  54. config.cfg.OscilSize=128<<o->value();
  55. }
  56. void ConfigUI::cb_OscilSize(Fl_Choice* o, void* v) {
  57. ((ConfigUI*)(o->parent()->parent()->parent()->user_data()))->cb_OscilSize_i(o,v);
  58. }
  59. Fl_Menu_Item ConfigUI::menu_OscilSize[] = {
  60. {"128", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0},
  61. {"256", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0},
  62. {"512", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0},
  63. {"1024", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0},
  64. {"2048", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0},
  65. {"4096", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0},
  66. {"8192", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0},
  67. {"16384", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0},
  68. {0,0,0,0,0,0,0,0,0}
  69. };
  70. void ConfigUI::cb_Dump_i(Fl_File_Input* o, void*) {
  71. config.cfg.DumpFile = o->value();
  72. }
  73. void ConfigUI::cb_Dump(Fl_File_Input* o, void* v) {
  74. ((ConfigUI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_Dump_i(o,v);
  75. }
  76. void ConfigUI::cb_Dump1_i(Fl_Check_Button* o, void*) {
  77. config.cfg.DumpNotesToFile=(int) o->value();
  78. dump.startnow();//this has effect only if this option was disabled;
  79. }
  80. void ConfigUI::cb_Dump1(Fl_Check_Button* o, void* v) {
  81. ((ConfigUI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_Dump1_i(o,v);
  82. }
  83. void ConfigUI::cb_Append_i(Fl_Check_Button* o, void*) {
  84. config.cfg.DumpAppend=(int) o->value();
  85. }
  86. void ConfigUI::cb_Append(Fl_Check_Button* o, void* v) {
  87. ((ConfigUI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_Append_i(o,v);
  88. }
  89. void ConfigUI::cb_OSS_i(Fl_File_Input* o, void*) {
  90. snprintf(config.cfg.LinuxOSSSeqInDev,config.maxstringsize,"%s",o->value());
  91. }
  92. void ConfigUI::cb_OSS(Fl_File_Input* o, void* v) {
  93. ((ConfigUI*)(o->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_OSS_i(o,v);
  94. }
  95. void ConfigUI::cb_OSS1_i(Fl_File_Input* o, void*) {
  96. snprintf(config.cfg.LinuxOSSWaveOutDev,config.maxstringsize,"%s",o->value());
  97. }
  98. void ConfigUI::cb_OSS1(Fl_File_Input* o, void* v) {
  99. ((ConfigUI*)(o->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_OSS1_i(o,v);
  100. }
  101. void ConfigUI::cb_Midi_i(Fl_Counter* o, void*) {
  102. config.cfg.WindowsMidiInId=(int) o->value();
  103. midiinputnamebox->label(config.winmididevices[config.cfg.WindowsMidiInId].name);
  104. }
  105. void ConfigUI::cb_Midi(Fl_Counter* o, void* v) {
  106. ((ConfigUI*)(o->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_Midi_i(o,v);
  107. }
  108. void ConfigUI::cb_XML_i(Fl_Counter* o, void*) {
  109. config.cfg.GzipCompression=(int) o->value();
  110. }
  111. void ConfigUI::cb_XML(Fl_Counter* o, void* v) {
  112. ((ConfigUI*)(o->parent()->parent()->parent()->user_data()))->cb_XML_i(o,v);
  113. }
  114. void ConfigUI::cb_PADsynth_i(Fl_Choice* o, void*) {
  115. config.cfg.Interpolation=(int) o->value();
  116. }
  117. void ConfigUI::cb_PADsynth(Fl_Choice* o, void* v) {
  118. ((ConfigUI*)(o->parent()->parent()->parent()->user_data()))->cb_PADsynth_i(o,v);
  119. }
  120. Fl_Menu_Item ConfigUI::menu_PADsynth[] = {
  121. {"Linear(fast)", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
  122. {"Cubic(slow)", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
  123. {0,0,0,0,0,0,0,0,0}
  124. };
  125. void ConfigUI::cb_Virtual_i(Fl_Choice* o, void*) {
  126. config.cfg.VirKeybLayout=(int) o->value();;
  127. }
  128. void ConfigUI::cb_Virtual(Fl_Choice* o, void* v) {
  129. ((ConfigUI*)(o->parent()->parent()->parent()->user_data()))->cb_Virtual_i(o,v);
  130. }
  131. Fl_Menu_Item ConfigUI::menu_Virtual[] = {
  132. {" ", 0, 0, 0, 1, FL_NORMAL_LABEL, 1, 11, 0},
  133. {"QWERTY", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  134. {"Dvorak", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  135. {"QWERTZ", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  136. {"AZERTY", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  137. {0,0,0,0,0,0,0,0,0}
  138. };
  139. void ConfigUI::cb_Ignore_i(Fl_Check_Button* o, void*) {
  140. config.cfg.IgnoreProgramChange=(int) o->value();
  141. }
  142. void ConfigUI::cb_Ignore(Fl_Check_Button* o, void* v) {
  143. ((ConfigUI*)(o->parent()->parent()->parent()->user_data()))->cb_Ignore_i(o,v);
  144. }
  145. void ConfigUI::cb_rootsbrowse_i(Fl_Browser* o, void*) {
  146. activatebutton_rootdir(o->value()!=0);
  147. }
  148. void ConfigUI::cb_rootsbrowse(Fl_Browser* o, void* v) {
  149. ((ConfigUI*)(o->parent()->parent()->parent()->user_data()))->cb_rootsbrowse_i(o,v);
  150. }
  151. void ConfigUI::cb_Add_i(Fl_Button*, void*) {
  152. const char *dirname;
  153. dirname=fl_dir_chooser("Add a root directory for banks:",NULL,0);
  154. if (dirname==NULL) return;
  155. rootsbrowse->add(dirname);
  156. }
  157. void ConfigUI::cb_Add(Fl_Button* o, void* v) {
  158. ((ConfigUI*)(o->parent()->parent()->parent()->user_data()))->cb_Add_i(o,v);
  159. }
  160. void ConfigUI::cb_removerootdirbutton_i(Fl_Button*, void*) {
  161. if (rootsbrowse->value()!=0) {
  162. rootsbrowse->remove(rootsbrowse->value());
  163. };
  164. activatebutton_rootdir(false);
  165. }
  166. void ConfigUI::cb_removerootdirbutton(Fl_Button* o, void* v) {
  167. ((ConfigUI*)(o->parent()->parent()->parent()->user_data()))->cb_removerootdirbutton_i(o,v);
  168. }
  169. void ConfigUI::cb_makedefaultrootdirbutton_i(Fl_Button*, void*) {
  170. int n=rootsbrowse->value();
  171. if (n!=0) {
  172. rootsbrowse->move(1,n);
  173. rootsbrowse->value(1);
  174. rootsbrowse->redraw();
  175. };
  176. activatebutton_rootdir(true);
  177. }
  178. void ConfigUI::cb_makedefaultrootdirbutton(Fl_Button* o, void* v) {
  179. ((ConfigUI*)(o->parent()->parent()->parent()->user_data()))->cb_makedefaultrootdirbutton_i(o,v);
  180. }
  181. void ConfigUI::cb_presetbrowse_i(Fl_Browser* o, void*) {
  182. activatebutton_presetdir(o->value()!=0);
  183. }
  184. void ConfigUI::cb_presetbrowse(Fl_Browser* o, void* v) {
  185. ((ConfigUI*)(o->parent()->parent()->parent()->user_data()))->cb_presetbrowse_i(o,v);
  186. }
  187. void ConfigUI::cb_Add1_i(Fl_Button*, void*) {
  188. const char *dirname;
  189. dirname=fl_dir_chooser("Add a preset directory :",NULL,0);
  190. if (dirname==NULL) return;
  191. presetbrowse->add(dirname);
  192. }
  193. void ConfigUI::cb_Add1(Fl_Button* o, void* v) {
  194. ((ConfigUI*)(o->parent()->parent()->parent()->user_data()))->cb_Add1_i(o,v);
  195. }
  196. void ConfigUI::cb_removepresetbutton_i(Fl_Button*, void*) {
  197. if (presetbrowse->value()!=0) {
  198. presetbrowse->remove(presetbrowse->value());
  199. };
  200. activatebutton_presetdir(false);
  201. }
  202. void ConfigUI::cb_removepresetbutton(Fl_Button* o, void* v) {
  203. ((ConfigUI*)(o->parent()->parent()->parent()->user_data()))->cb_removepresetbutton_i(o,v);
  204. }
  205. void ConfigUI::cb_makedefaultpresetbutton_i(Fl_Button*, void*) {
  206. int n=presetbrowse->value();
  207. if (n!=0) {
  208. presetbrowse->move(1,n);
  209. presetbrowse->value(1);
  210. presetbrowse->redraw();
  211. };
  212. activatebutton_presetdir(true);
  213. }
  214. void ConfigUI::cb_makedefaultpresetbutton(Fl_Button* o, void* v) {
  215. ((ConfigUI*)(o->parent()->parent()->parent()->user_data()))->cb_makedefaultpresetbutton_i(o,v);
  216. }
  217. void ConfigUI::cb_Close_i(Fl_Button*, void*) {
  218. configwindow->hide();
  219. writebankcfg();
  220. writepresetcfg();
  221. }
  222. void ConfigUI::cb_Close(Fl_Button* o, void* v) {
  223. ((ConfigUI*)(o->parent()->user_data()))->cb_Close_i(o,v);
  224. }
  225. Fl_Double_Window* ConfigUI::make_window() {
  226. { configwindow = new Fl_Double_Window(510, 370, "ZynAddSubFX Settings");
  227. configwindow->callback((Fl_Callback*)cb_configwindow, (void*)(this));
  228. { Fl_Tabs* o = new Fl_Tabs(5, 5, 500, 330);
  229. { Fl_Group* o = new Fl_Group(5, 25, 500, 310, "Main settings");
  230. { Fl_Group* o = new Fl_Group(15, 45, 165, 30, "Sample Rate");
  231. o->box(FL_ENGRAVED_FRAME);
  232. { Fl_Choice* o = new Fl_Choice(20, 50, 85, 20);
  233. o->down_box(FL_BORDER_BOX);
  234. o->textsize(10);
  235. o->callback((Fl_Callback*)cb_);
  236. o->menu(menu_);
  237. o->value(getsamplerateorder());
  238. } // Fl_Choice* o
  239. { Fl_Int_Input* o = samplerateinput = new Fl_Int_Input(115, 50, 60, 20);
  240. samplerateinput->type(2);
  241. samplerateinput->textfont(1);
  242. samplerateinput->callback((Fl_Callback*)cb_samplerateinput);
  243. setsamplerateinput();
  244. if (getsamplerateorder()!=0) o->deactivate();
  245. } // Fl_Int_Input* samplerateinput
  246. o->end();
  247. } // Fl_Group* o
  248. { Fl_Int_Input* o = new Fl_Int_Input(190, 45, 60, 20, "Buffer Size");
  249. o->tooltip("Internal Sound Buffer Size (samples)");
  250. o->type(2);
  251. o->labelsize(11);
  252. o->textfont(1);
  253. o->callback((Fl_Callback*)cb_Buffer);
  254. o->align(Fl_Align(129));
  255. char *tmpbuf=new char[100];o->cut(0,o->maximum_size());
  256. snprintf(tmpbuf,100,"%d",config.cfg.SoundBufferSize);o->insert(tmpbuf);
  257. delete []tmpbuf;
  258. } // Fl_Int_Input* o
  259. { Fl_Light_Button* o = new Fl_Light_Button(20, 80, 85, 20, "Swap Stereo ");
  260. o->box(FL_THIN_UP_BOX);
  261. o->labelsize(10);
  262. o->callback((Fl_Callback*)cb_Swap);
  263. o->value(config.cfg.SwapStereo);
  264. } // Fl_Light_Button* o
  265. { Fl_Choice* o = new Fl_Choice(175, 80, 75, 20, "OscilSize");
  266. o->tooltip("ADSynth Oscillator Size (samples)");
  267. o->down_box(FL_BORDER_BOX);
  268. o->labelfont(1);
  269. o->labelsize(11);
  270. o->textsize(10);
  271. o->callback((Fl_Callback*)cb_OscilSize);
  272. o->menu(menu_OscilSize);
  273. o->value( (int) (log(config.cfg.OscilSize/128.0-1.0)/log(2)) +1);
  274. } // Fl_Choice* o
  275. { Fl_Box* o = new Fl_Box(10, 300, 235, 30, "Most settings has effect only after ZynAddSubFX is restarted.");
  276. o->labelfont(1);
  277. o->labelsize(11);
  278. o->align(Fl_Align(FL_ALIGN_WRAP));
  279. } // Fl_Box* o
  280. { Fl_Box* o = new Fl_Box(10, 280, 240, 15, "Read the Readme.txt for other settings");
  281. o->labelfont(1);
  282. o->labelsize(11);
  283. o->align(Fl_Align(FL_ALIGN_WRAP));
  284. } // Fl_Box* o
  285. { Fl_Group* o = new Fl_Group(15, 125, 230, 85);
  286. o->box(FL_ENGRAVED_BOX);
  287. { Fl_File_Input* o = new Fl_File_Input(20, 170, 220, 35, "Dump File");
  288. o->callback((Fl_Callback*)cb_Dump);
  289. o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
  290. o->insert(config.cfg.DumpFile.c_str());
  291. } // Fl_File_Input* o
  292. { Fl_Check_Button* o = new Fl_Check_Button(20, 130, 100, 20, "Dump notes");
  293. o->down_box(FL_DOWN_BOX);
  294. o->callback((Fl_Callback*)cb_Dump1);
  295. o->value(config.cfg.DumpNotesToFile);
  296. } // Fl_Check_Button* o
  297. { Fl_Check_Button* o = new Fl_Check_Button(160, 130, 80, 20, "Append");
  298. o->down_box(FL_DOWN_BOX);
  299. o->callback((Fl_Callback*)cb_Append);
  300. o->value(config.cfg.DumpAppend);
  301. } // Fl_Check_Button* o
  302. o->end();
  303. } // Fl_Group* o
  304. { Fl_Group* o = new Fl_Group(255, 45, 245, 260);
  305. o->box(FL_ENGRAVED_FRAME);
  306. { Fl_Box* o = new Fl_Box(260, 50, 235, 45, "Note: Not all the following settings are used (this depends on the operating \
  307. system, etc..)");
  308. o->labelfont(1);
  309. o->labelsize(11);
  310. o->align(Fl_Align(FL_ALIGN_WRAP));
  311. } // Fl_Box* o
  312. { Fl_Group* o = new Fl_Group(260, 110, 235, 115, "Linux");
  313. o->box(FL_ENGRAVED_BOX);
  314. o->labelfont(1);
  315. o->labelsize(13);
  316. o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
  317. { Fl_File_Input* o = new Fl_File_Input(265, 180, 225, 35, "OSS Sequencer Device (/dev/...)");
  318. o->callback((Fl_Callback*)cb_OSS);
  319. o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
  320. o->insert(config.cfg.LinuxOSSSeqInDev);
  321. } // Fl_File_Input* o
  322. { Fl_File_Input* o = new Fl_File_Input(265, 130, 225, 35, "OSS Wave Out Device (/dev/...)");
  323. o->callback((Fl_Callback*)cb_OSS1);
  324. o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
  325. o->insert(config.cfg.LinuxOSSWaveOutDev);
  326. } // Fl_File_Input* o
  327. o->end();
  328. } // Fl_Group* o
  329. { Fl_Group* o = new Fl_Group(260, 250, 235, 50, "Windows");
  330. o->box(FL_ENGRAVED_BOX);
  331. o->labelfont(1);
  332. o->labelsize(13);
  333. o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
  334. { Fl_Counter* o = new Fl_Counter(270, 270, 65, 20, "Midi In Dev");
  335. o->type(1);
  336. o->labelsize(11);
  337. o->minimum(0);
  338. o->maximum(100);
  339. o->step(1);
  340. o->callback((Fl_Callback*)cb_Midi);
  341. o->align(Fl_Align(FL_ALIGN_TOP));
  342. o->maximum(config.winmidimax-1);
  343. o->value(config.cfg.WindowsMidiInId);
  344. } // Fl_Counter* o
  345. { Fl_Box* o = midiinputnamebox = new Fl_Box(340, 260, 150, 35, "Midi input device name");
  346. midiinputnamebox->labelfont(1);
  347. midiinputnamebox->labelsize(11);
  348. midiinputnamebox->align(Fl_Align(196|FL_ALIGN_INSIDE));
  349. o->label(config.winmididevices[config.cfg.WindowsMidiInId].name);
  350. } // Fl_Box* midiinputnamebox
  351. o->end();
  352. } // Fl_Group* o
  353. o->end();
  354. } // Fl_Group* o
  355. { Fl_Counter* o = new Fl_Counter(20, 215, 65, 15, "XML compression level");
  356. o->tooltip("gzip compression level (0 - uncompressed)");
  357. o->type(1);
  358. o->labelsize(11);
  359. o->minimum(0);
  360. o->maximum(9);
  361. o->step(1);
  362. o->callback((Fl_Callback*)cb_XML);
  363. o->align(Fl_Align(FL_ALIGN_RIGHT));
  364. o->value(config.cfg.GzipCompression);
  365. } // Fl_Counter* o
  366. { Fl_Choice* o = new Fl_Choice(175, 105, 75, 15, "PADsynth Interpolation");
  367. o->down_box(FL_BORDER_BOX);
  368. o->labelsize(10);
  369. o->textsize(11);
  370. o->callback((Fl_Callback*)cb_PADsynth);
  371. o->menu(menu_PADsynth);
  372. o->value(config.cfg.Interpolation);
  373. } // Fl_Choice* o
  374. { Fl_Choice* o = new Fl_Choice(155, 235, 85, 20, "Virtual Keyboard Layout");
  375. o->down_box(FL_BORDER_BOX);
  376. o->labelsize(12);
  377. o->textfont(1);
  378. o->textsize(11);
  379. o->callback((Fl_Callback*)cb_Virtual);
  380. o->menu(menu_Virtual);
  381. o->value(config.cfg.VirKeybLayout);
  382. } // Fl_Choice* o
  383. { Fl_Check_Button* o = new Fl_Check_Button(10, 255, 230, 20, "Ignore MIDI Program Change");
  384. o->down_box(FL_DOWN_BOX);
  385. o->callback((Fl_Callback*)cb_Ignore);
  386. o->value(config.cfg.IgnoreProgramChange);
  387. } // Fl_Check_Button* o
  388. o->end();
  389. } // Fl_Group* o
  390. { Fl_Group* o = new Fl_Group(5, 25, 500, 285, "Bank root dirs");
  391. o->hide();
  392. { rootsbrowse = new Fl_Browser(15, 35, 485, 220);
  393. rootsbrowse->type(2);
  394. rootsbrowse->callback((Fl_Callback*)cb_rootsbrowse);
  395. } // Fl_Browser* rootsbrowse
  396. { Fl_Button* o = new Fl_Button(15, 265, 80, 35, "Add root directory...");
  397. o->box(FL_THIN_UP_BOX);
  398. o->callback((Fl_Callback*)cb_Add);
  399. o->align(Fl_Align(FL_ALIGN_WRAP));
  400. } // Fl_Button* o
  401. { Fl_Button* o = removerootdirbutton = new Fl_Button(105, 265, 80, 35, "Remove root dir...");
  402. removerootdirbutton->box(FL_THIN_UP_BOX);
  403. removerootdirbutton->callback((Fl_Callback*)cb_removerootdirbutton);
  404. removerootdirbutton->align(Fl_Align(FL_ALIGN_WRAP));
  405. o->deactivate();
  406. } // Fl_Button* removerootdirbutton
  407. { Fl_Button* o = makedefaultrootdirbutton = new Fl_Button(190, 265, 80, 35, "Make default");
  408. makedefaultrootdirbutton->box(FL_THIN_UP_BOX);
  409. makedefaultrootdirbutton->callback((Fl_Callback*)cb_makedefaultrootdirbutton);
  410. makedefaultrootdirbutton->align(Fl_Align(FL_ALIGN_WRAP));
  411. o->deactivate();
  412. } // Fl_Button* makedefaultrootdirbutton
  413. o->end();
  414. } // Fl_Group* o
  415. { Fl_Group* o = new Fl_Group(5, 25, 500, 285, "Presets dirs");
  416. o->hide();
  417. { presetbrowse = new Fl_Browser(15, 35, 485, 220);
  418. presetbrowse->type(2);
  419. presetbrowse->callback((Fl_Callback*)cb_presetbrowse);
  420. } // Fl_Browser* presetbrowse
  421. { Fl_Button* o = new Fl_Button(15, 265, 80, 35, "Add preset directory...");
  422. o->box(FL_THIN_UP_BOX);
  423. o->callback((Fl_Callback*)cb_Add1);
  424. o->align(Fl_Align(FL_ALIGN_WRAP));
  425. } // Fl_Button* o
  426. { Fl_Button* o = removepresetbutton = new Fl_Button(105, 265, 80, 35, "Remove preset dir...");
  427. removepresetbutton->box(FL_THIN_UP_BOX);
  428. removepresetbutton->callback((Fl_Callback*)cb_removepresetbutton);
  429. removepresetbutton->align(Fl_Align(FL_ALIGN_WRAP));
  430. o->deactivate();
  431. } // Fl_Button* removepresetbutton
  432. { Fl_Button* o = makedefaultpresetbutton = new Fl_Button(190, 265, 80, 35, "Make default");
  433. makedefaultpresetbutton->box(FL_THIN_UP_BOX);
  434. makedefaultpresetbutton->callback((Fl_Callback*)cb_makedefaultpresetbutton);
  435. makedefaultpresetbutton->align(Fl_Align(FL_ALIGN_WRAP));
  436. o->deactivate();
  437. } // Fl_Button* makedefaultpresetbutton
  438. o->end();
  439. } // Fl_Group* o
  440. o->end();
  441. } // Fl_Tabs* o
  442. { Fl_Button* o = new Fl_Button(200, 345, 105, 20, "Close");
  443. o->box(FL_THIN_UP_BOX);
  444. o->callback((Fl_Callback*)cb_Close);
  445. } // Fl_Button* o
  446. configwindow->end();
  447. } // Fl_Double_Window* configwindow
  448. return configwindow;
  449. }
  450. ConfigUI::ConfigUI() {
  451. make_window();
  452. readbankcfg();
  453. readpresetcfg();
  454. }
  455. void ConfigUI::activatebutton_rootdir(bool active) {
  456. if (active) {
  457. removerootdirbutton->activate();
  458. makedefaultrootdirbutton->activate();
  459. }else{
  460. removerootdirbutton->deactivate();
  461. makedefaultrootdirbutton->deactivate();
  462. };
  463. }
  464. void ConfigUI::activatebutton_presetdir(bool active) {
  465. if (active) {
  466. removepresetbutton->activate();
  467. makedefaultpresetbutton->activate();
  468. }else{
  469. removepresetbutton->deactivate();
  470. makedefaultpresetbutton->deactivate();
  471. };
  472. }
  473. void ConfigUI::readbankcfg() {
  474. rootsbrowse->clear();
  475. for (int i=0;i<MAX_BANK_ROOT_DIRS;i++){
  476. if (!config.cfg.bankRootDirList[i].empty())
  477. rootsbrowse->add(config.cfg.bankRootDirList[i].c_str());
  478. };
  479. }
  480. void ConfigUI::writebankcfg() {
  481. config.clearbankrootdirlist();
  482. for (int n=0;n<rootsbrowse->size();n++){
  483. config.cfg.bankRootDirList[n] = rootsbrowse->text(n+1);
  484. };
  485. }
  486. void ConfigUI::readpresetcfg() {
  487. presetbrowse->clear();
  488. for(int i=0;i<MAX_BANK_ROOT_DIRS;i++){
  489. if(!config.cfg.presetsDirList[i].empty())
  490. presetbrowse->add(config.cfg.presetsDirList[i].c_str());
  491. };
  492. }
  493. void ConfigUI::writepresetcfg() {
  494. config.clearpresetsdirlist();
  495. for (int n=0;n<presetbrowse->size();n++)
  496. config.cfg.presetsDirList[n] = presetbrowse->text(n+1);
  497. }
  498. int ConfigUI::getsamplerateorder() {
  499. int smpr=config.cfg.SampleRate;
  500. int order=0;
  501. switch(smpr){
  502. case 16000:order=1;break;
  503. case 22050:order=2;break;
  504. case 32000:order=3;break;
  505. case 44100:order=4;break;
  506. case 48000:order=5;break;
  507. case 88200:order=6;break;
  508. case 96000:order=7;break;
  509. default:order=0;break;
  510. };
  511. return(order);
  512. }
  513. void ConfigUI::setsamplerateinput() {
  514. char *tmpbuf=new char[100];
  515. samplerateinput->cut(0,samplerateinput->maximum_size());
  516. snprintf(tmpbuf,100,"%d",config.cfg.SampleRate);
  517. samplerateinput->insert(tmpbuf);
  518. delete []tmpbuf;
  519. }
  520. void ConfigUI::show() {
  521. configwindow->show();
  522. }