External plugins for 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.

398 lines
15KB

  1. // generated by Fast Light User Interface Designer (fluid) version 1.0300
  2. #include "external/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_Osc_Window* o, void*) {
  6. o->hide();
  7. }
  8. void ConfigUI::cb_configwindow(Fl_Osc_Window* o, void* v) {
  9. ((ConfigUI*)(o->user_data()))->cb_configwindow_i(o,v);
  10. }
  11. void ConfigUI::cb_oscilsize_widget_i(Fl_Choice* o, void*) {
  12. oscilsize->updateVal((int)(o->value()+7));
  13. }
  14. void ConfigUI::cb_oscilsize_widget(Fl_Choice* o, void* v) {
  15. ((ConfigUI*)(o->parent()->parent()->parent()->user_data()))->cb_oscilsize_widget_i(o,v);
  16. }
  17. Fl_Menu_Item ConfigUI::menu_oscilsize_widget[] = {
  18. {"128", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0},
  19. {"256", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0},
  20. {"512", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0},
  21. {"1024", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0},
  22. {"2048", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0},
  23. {"4096", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0},
  24. {"8192", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0},
  25. {"16384", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0},
  26. {0,0,0,0,0,0,0,0,0}
  27. };
  28. Fl_Menu_Item ConfigUI::menu_PADsynth[] = {
  29. {"Linear(fast)", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
  30. {"Cubic(slow)", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
  31. {0,0,0,0,0,0,0,0,0}
  32. };
  33. Fl_Menu_Item ConfigUI::menu_Virtual[] = {
  34. {" ", 0, 0, 0, 1, FL_NORMAL_LABEL, 1, 11, 0},
  35. {"QWERTY", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  36. {"Dvorak", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  37. {"QWERTZ", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  38. {"AZERTY", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0},
  39. {0,0,0,0,0,0,0,0,0}
  40. };
  41. void ConfigUI::cb_rootsbrowse_i(Fl_Osc_ListView* o, void*) {
  42. activatebutton_rootdir(o->value()!=0);
  43. }
  44. void ConfigUI::cb_rootsbrowse(Fl_Osc_ListView* o, void* v) {
  45. ((ConfigUI*)(o->parent()->parent()->parent()->user_data()))->cb_rootsbrowse_i(o,v);
  46. }
  47. void ConfigUI::cb_Add_i(Fl_Button*, void*) {
  48. const char *dirname;
  49. dirname=fl_dir_chooser("Add a root directory for banks:",NULL,0);
  50. if (dirname==NULL) return;
  51. rootsbrowse->append(dirname);
  52. }
  53. void ConfigUI::cb_Add(Fl_Button* o, void* v) {
  54. ((ConfigUI*)(o->parent()->parent()->parent()->user_data()))->cb_Add_i(o,v);
  55. }
  56. void ConfigUI::cb_removerootdirbutton_i(Fl_Button*, void*) {
  57. if (rootsbrowse->value()!=0) {
  58. rootsbrowse->doRemove(rootsbrowse->value());
  59. };
  60. activatebutton_rootdir(false);
  61. }
  62. void ConfigUI::cb_removerootdirbutton(Fl_Button* o, void* v) {
  63. ((ConfigUI*)(o->parent()->parent()->parent()->user_data()))->cb_removerootdirbutton_i(o,v);
  64. }
  65. void ConfigUI::cb_makedefaultrootdirbutton_i(Fl_Button*, void*) {
  66. int n=rootsbrowse->value();
  67. if (n!=0) {
  68. rootsbrowse->doMove(1,n);
  69. rootsbrowse->value(1);
  70. rootsbrowse->redraw();
  71. };
  72. activatebutton_rootdir(true);
  73. }
  74. void ConfigUI::cb_makedefaultrootdirbutton(Fl_Button* o, void* v) {
  75. ((ConfigUI*)(o->parent()->parent()->parent()->user_data()))->cb_makedefaultrootdirbutton_i(o,v);
  76. }
  77. void ConfigUI::cb_presetbrowse_i(Fl_Osc_ListView* o, void*) {
  78. activatebutton_presetdir(o->value()!=0);
  79. }
  80. void ConfigUI::cb_presetbrowse(Fl_Osc_ListView* o, void* v) {
  81. ((ConfigUI*)(o->parent()->parent()->parent()->user_data()))->cb_presetbrowse_i(o,v);
  82. }
  83. void ConfigUI::cb_Add1_i(Fl_Button*, void*) {
  84. const char *dirname;
  85. dirname=fl_dir_chooser("Add a preset directory :",NULL,0);
  86. if (dirname==NULL) return;
  87. presetbrowse->add(dirname);
  88. }
  89. void ConfigUI::cb_Add1(Fl_Button* o, void* v) {
  90. ((ConfigUI*)(o->parent()->parent()->parent()->user_data()))->cb_Add1_i(o,v);
  91. }
  92. void ConfigUI::cb_removepresetbutton_i(Fl_Button*, void*) {
  93. if (presetbrowse->value()!=0) {
  94. presetbrowse->remove(presetbrowse->value());
  95. };
  96. activatebutton_presetdir(false);
  97. }
  98. void ConfigUI::cb_removepresetbutton(Fl_Button* o, void* v) {
  99. ((ConfigUI*)(o->parent()->parent()->parent()->user_data()))->cb_removepresetbutton_i(o,v);
  100. }
  101. void ConfigUI::cb_makedefaultpresetbutton_i(Fl_Button*, void*) {
  102. int n=presetbrowse->value();
  103. if (n!=0) {
  104. presetbrowse->move(1,n);
  105. presetbrowse->value(1);
  106. presetbrowse->redraw();
  107. };
  108. activatebutton_presetdir(true);
  109. }
  110. void ConfigUI::cb_makedefaultpresetbutton(Fl_Button* o, void* v) {
  111. ((ConfigUI*)(o->parent()->parent()->parent()->user_data()))->cb_makedefaultpresetbutton_i(o,v);
  112. }
  113. void ConfigUI::cb_Close_i(Fl_Button*, void*) {
  114. configwindow->hide();
  115. }
  116. void ConfigUI::cb_Close(Fl_Button* o, void* v) {
  117. ((ConfigUI*)(o->parent()->user_data()))->cb_Close_i(o,v);
  118. }
  119. Fl_Osc_Window* ConfigUI::make_window() {
  120. { configwindow = new Fl_Osc_Window(510, 370, "ZynAddSubFX Settings");
  121. configwindow->box(FL_FLAT_BOX);
  122. configwindow->color(FL_BACKGROUND_COLOR);
  123. configwindow->selection_color(FL_BACKGROUND_COLOR);
  124. configwindow->labeltype(FL_NO_LABEL);
  125. configwindow->labelfont(0);
  126. configwindow->labelsize(14);
  127. configwindow->labelcolor(FL_FOREGROUND_COLOR);
  128. configwindow->callback((Fl_Callback*)cb_configwindow, (void*)(this));
  129. configwindow->align(Fl_Align(FL_ALIGN_TOP));
  130. configwindow->when(FL_WHEN_RELEASE);
  131. { dummy = new Fl_Box(25, 25, 25, 25);
  132. configwindow->init(osc, "/config/");
  133. } // Fl_Box* dummy
  134. { Fl_Tabs* o = new Fl_Tabs(5, 5, 500, 330);
  135. { mainsettings = new Fl_Group(5, 25, 500, 310, "Main settings");
  136. { Fl_Group* o = new Fl_Group(15, 45, 165, 30, "Sample Rate");
  137. o->box(FL_ENGRAVED_FRAME);
  138. { Fl_Osc_Numeric_Input* o = samplerateinput = new Fl_Osc_Numeric_Input(115, 50, 60, 20);
  139. samplerateinput->type(2);
  140. samplerateinput->box(FL_DOWN_BOX);
  141. samplerateinput->color(FL_BACKGROUND2_COLOR);
  142. samplerateinput->selection_color(FL_SELECTION_COLOR);
  143. samplerateinput->labeltype(FL_NORMAL_LABEL);
  144. samplerateinput->labelfont(0);
  145. samplerateinput->labelsize(14);
  146. samplerateinput->labelcolor(FL_FOREGROUND_COLOR);
  147. samplerateinput->textfont(1);
  148. samplerateinput->align(Fl_Align(FL_ALIGN_LEFT));
  149. samplerateinput->when(FL_WHEN_RELEASE);
  150. o->init("cfg.SampleRate");
  151. } // Fl_Osc_Numeric_Input* samplerateinput
  152. o->end();
  153. } // Fl_Group* o
  154. { Fl_Osc_Numeric_Input* o = new Fl_Osc_Numeric_Input(190, 45, 60, 20, "Buffer Size");
  155. o->tooltip("Internal Sound Buffer Size (samples)");
  156. o->type(2);
  157. o->box(FL_DOWN_BOX);
  158. o->color(FL_BACKGROUND2_COLOR);
  159. o->selection_color(FL_SELECTION_COLOR);
  160. o->labeltype(FL_NORMAL_LABEL);
  161. o->labelfont(0);
  162. o->labelsize(11);
  163. o->labelcolor(FL_FOREGROUND_COLOR);
  164. o->textfont(1);
  165. o->align(Fl_Align(129));
  166. o->when(FL_WHEN_RELEASE);
  167. o->init("cfg.SoundBufferSize");
  168. } // Fl_Osc_Numeric_Input* o
  169. { Fl_Osc_Check* o = new Fl_Osc_Check(15, 80, 95, 20, "Swap Stereo ");
  170. o->box(FL_NO_BOX);
  171. o->down_box(FL_DOWN_BOX);
  172. o->color(FL_BACKGROUND_COLOR);
  173. o->selection_color(FL_FOREGROUND_COLOR);
  174. o->labeltype(FL_NORMAL_LABEL);
  175. o->labelfont(0);
  176. o->labelsize(11);
  177. o->labelcolor(FL_FOREGROUND_COLOR);
  178. o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
  179. o->when(FL_WHEN_RELEASE);
  180. o->init("cfg.SwapStereo");
  181. } // Fl_Osc_Check* o
  182. { oscilsize_widget = new Fl_Choice(175, 80, 75, 20, "OscilSize");
  183. oscilsize_widget->tooltip("ADSynth Oscillator Size (samples)");
  184. oscilsize_widget->down_box(FL_BORDER_BOX);
  185. oscilsize_widget->labelfont(1);
  186. oscilsize_widget->labelsize(11);
  187. oscilsize_widget->textsize(10);
  188. oscilsize_widget->callback((Fl_Callback*)cb_oscilsize_widget);
  189. oscilsize_widget->menu(menu_oscilsize_widget);
  190. } // Fl_Choice* oscilsize_widget
  191. { Fl_Box* o = new Fl_Box(10, 300, 235, 30, "Most settings has effect only after ZynAddSubFX is restarted.");
  192. o->labelfont(1);
  193. o->labelsize(11);
  194. o->align(Fl_Align(FL_ALIGN_WRAP));
  195. } // Fl_Box* o
  196. { Fl_Osc_Counter* o = new Fl_Osc_Counter(20, 215, 65, 15, "XML compression level");
  197. o->tooltip("gzip compression level (0 - uncompressed)");
  198. o->type(1);
  199. o->box(FL_UP_BOX);
  200. o->color(FL_BACKGROUND_COLOR);
  201. o->selection_color(FL_INACTIVE_COLOR);
  202. o->labeltype(FL_NORMAL_LABEL);
  203. o->labelfont(0);
  204. o->labelsize(11);
  205. o->labelcolor(FL_FOREGROUND_COLOR);
  206. o->minimum(0);
  207. o->maximum(9);
  208. o->step(1);
  209. o->align(Fl_Align(FL_ALIGN_RIGHT));
  210. o->when(FL_WHEN_CHANGED);
  211. o->init("cfg.GzipCompression");
  212. } // Fl_Osc_Counter* o
  213. { Fl_Osc_Choice* o = new Fl_Osc_Choice(175, 105, 75, 15, "PADsynth Interpolation");
  214. o->box(FL_UP_BOX);
  215. o->down_box(FL_BORDER_BOX);
  216. o->color(FL_BACKGROUND_COLOR);
  217. o->selection_color(FL_SELECTION_COLOR);
  218. o->labeltype(FL_NORMAL_LABEL);
  219. o->labelfont(0);
  220. o->labelsize(10);
  221. o->labelcolor(FL_FOREGROUND_COLOR);
  222. o->textsize(11);
  223. o->align(Fl_Align(FL_ALIGN_LEFT));
  224. o->when(FL_WHEN_RELEASE);
  225. o->menu(menu_PADsynth);
  226. o->init("cfg.Interpolation");
  227. } // Fl_Osc_Choice* o
  228. { Fl_Osc_Choice* o = new Fl_Osc_Choice(155, 235, 85, 20, "Virtual Keyboard Layout");
  229. o->box(FL_UP_BOX);
  230. o->down_box(FL_BORDER_BOX);
  231. o->color(FL_BACKGROUND_COLOR);
  232. o->selection_color(FL_SELECTION_COLOR);
  233. o->labeltype(FL_NORMAL_LABEL);
  234. o->labelfont(0);
  235. o->labelsize(12);
  236. o->labelcolor(FL_FOREGROUND_COLOR);
  237. o->textfont(1);
  238. o->textsize(11);
  239. o->align(Fl_Align(FL_ALIGN_LEFT));
  240. o->when(FL_WHEN_RELEASE);
  241. o->menu(menu_Virtual);
  242. o->init("cfg.VirKeybLayout");
  243. } // Fl_Osc_Choice* o
  244. { Fl_Osc_Check* o = new Fl_Osc_Check(10, 255, 220, 20, "Ignore MIDI Program Change");
  245. o->box(FL_NO_BOX);
  246. o->down_box(FL_DOWN_BOX);
  247. o->color(FL_BACKGROUND_COLOR);
  248. o->selection_color(FL_FOREGROUND_COLOR);
  249. o->labeltype(FL_NORMAL_LABEL);
  250. o->labelfont(0);
  251. o->labelsize(14);
  252. o->labelcolor(FL_FOREGROUND_COLOR);
  253. o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
  254. o->when(FL_WHEN_RELEASE);
  255. o->init("cfg.IgnoreProgramChange");
  256. } // Fl_Osc_Check* o
  257. mainsettings->end();
  258. } // Fl_Group* mainsettings
  259. { Fl_Group* o = new Fl_Group(5, 25, 500, 285, "Bank root dirs");
  260. o->hide();
  261. { Fl_Osc_ListView* o = rootsbrowse = new Fl_Osc_ListView(15, 35, 485, 220);
  262. rootsbrowse->type(2);
  263. rootsbrowse->box(FL_NO_BOX);
  264. rootsbrowse->color(FL_BACKGROUND2_COLOR);
  265. rootsbrowse->selection_color(FL_SELECTION_COLOR);
  266. rootsbrowse->labeltype(FL_NORMAL_LABEL);
  267. rootsbrowse->labelfont(0);
  268. rootsbrowse->labelsize(14);
  269. rootsbrowse->labelcolor(FL_FOREGROUND_COLOR);
  270. rootsbrowse->callback((Fl_Callback*)cb_rootsbrowse);
  271. rootsbrowse->align(Fl_Align(FL_ALIGN_BOTTOM));
  272. rootsbrowse->when(FL_WHEN_RELEASE_ALWAYS);
  273. o->init("cfg.bankRootDirList");
  274. } // Fl_Osc_ListView* rootsbrowse
  275. { Fl_Button* o = new Fl_Button(15, 265, 80, 35, "Add root directory...");
  276. o->box(FL_THIN_UP_BOX);
  277. o->callback((Fl_Callback*)cb_Add);
  278. o->align(Fl_Align(FL_ALIGN_WRAP));
  279. } // Fl_Button* o
  280. { Fl_Button* o = removerootdirbutton = new Fl_Button(105, 265, 80, 35, "Remove root dir...");
  281. removerootdirbutton->box(FL_THIN_UP_BOX);
  282. removerootdirbutton->callback((Fl_Callback*)cb_removerootdirbutton);
  283. removerootdirbutton->align(Fl_Align(FL_ALIGN_WRAP));
  284. o->deactivate();
  285. } // Fl_Button* removerootdirbutton
  286. { Fl_Button* o = makedefaultrootdirbutton = new Fl_Button(190, 265, 80, 35, "Make default");
  287. makedefaultrootdirbutton->box(FL_THIN_UP_BOX);
  288. makedefaultrootdirbutton->callback((Fl_Callback*)cb_makedefaultrootdirbutton);
  289. makedefaultrootdirbutton->align(Fl_Align(FL_ALIGN_WRAP));
  290. o->deactivate();
  291. } // Fl_Button* makedefaultrootdirbutton
  292. o->end();
  293. } // Fl_Group* o
  294. { Fl_Group* o = new Fl_Group(5, 25, 500, 285, "Presets dirs");
  295. o->hide();
  296. { Fl_Osc_ListView* o = presetbrowse = new Fl_Osc_ListView(15, 35, 485, 220);
  297. presetbrowse->type(2);
  298. presetbrowse->box(FL_NO_BOX);
  299. presetbrowse->color(FL_BACKGROUND2_COLOR);
  300. presetbrowse->selection_color(FL_SELECTION_COLOR);
  301. presetbrowse->labeltype(FL_NORMAL_LABEL);
  302. presetbrowse->labelfont(0);
  303. presetbrowse->labelsize(14);
  304. presetbrowse->labelcolor(FL_FOREGROUND_COLOR);
  305. presetbrowse->callback((Fl_Callback*)cb_presetbrowse);
  306. presetbrowse->align(Fl_Align(FL_ALIGN_BOTTOM));
  307. presetbrowse->when(FL_WHEN_RELEASE_ALWAYS);
  308. o->init("cfg.presetsDirList");
  309. } // Fl_Osc_ListView* presetbrowse
  310. { Fl_Button* o = new Fl_Button(15, 265, 80, 35, "Add preset directory...");
  311. o->box(FL_THIN_UP_BOX);
  312. o->callback((Fl_Callback*)cb_Add1);
  313. o->align(Fl_Align(FL_ALIGN_WRAP));
  314. } // Fl_Button* o
  315. { Fl_Button* o = removepresetbutton = new Fl_Button(105, 265, 80, 35, "Remove preset dir...");
  316. removepresetbutton->box(FL_THIN_UP_BOX);
  317. removepresetbutton->callback((Fl_Callback*)cb_removepresetbutton);
  318. removepresetbutton->align(Fl_Align(FL_ALIGN_WRAP));
  319. o->deactivate();
  320. } // Fl_Button* removepresetbutton
  321. { Fl_Button* o = makedefaultpresetbutton = new Fl_Button(190, 265, 80, 35, "Make default");
  322. makedefaultpresetbutton->box(FL_THIN_UP_BOX);
  323. makedefaultpresetbutton->callback((Fl_Callback*)cb_makedefaultpresetbutton);
  324. makedefaultpresetbutton->align(Fl_Align(FL_ALIGN_WRAP));
  325. o->deactivate();
  326. } // Fl_Button* makedefaultpresetbutton
  327. o->end();
  328. } // Fl_Group* o
  329. o->end();
  330. } // Fl_Tabs* o
  331. { Fl_Button* o = new Fl_Button(200, 345, 105, 20, "Close");
  332. o->box(FL_THIN_UP_BOX);
  333. o->callback((Fl_Callback*)cb_Close);
  334. } // Fl_Button* o
  335. configwindow->end();
  336. } // Fl_Osc_Window* configwindow
  337. return configwindow;
  338. }
  339. ConfigUI::ConfigUI(Fl_Osc_Interface *osc_) {
  340. osc = osc_;
  341. make_window();
  342. oscilsize = new Osc_IntModel(osc);
  343. oscilsize->callback = [this](int i){
  344. oscilsize_widget->value(i-7);
  345. };
  346. oscilsize->doUpdate("/config/cfg.OscilPower");
  347. }
  348. void ConfigUI::activatebutton_rootdir(bool active) {
  349. if (active) {
  350. removerootdirbutton->activate();
  351. makedefaultrootdirbutton->activate();
  352. }else{
  353. removerootdirbutton->deactivate();
  354. makedefaultrootdirbutton->deactivate();
  355. };
  356. }
  357. void ConfigUI::activatebutton_presetdir(bool active) {
  358. if (active) {
  359. removepresetbutton->activate();
  360. makedefaultpresetbutton->activate();
  361. }else{
  362. removepresetbutton->deactivate();
  363. makedefaultpresetbutton->deactivate();
  364. };
  365. }
  366. void ConfigUI::show() {
  367. if (isPlugin) {
  368. mainsettings->deactivate();
  369. }
  370. rootsbrowse->update();
  371. presetbrowse->update();
  372. configwindow->show();
  373. }