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.

332 lines
12KB

  1. // generated by Fast Light User Interface Designer (fluid) version 1.0300
  2. #include "external/zynaddsubfx/UI/PresetsUI.h"
  3. void PresetsUI_::refresh() {
  4. ;
  5. }
  6. PresetsUI_::~PresetsUI_() {
  7. ;
  8. }
  9. void PresetsUI::cb_copybrowse_i(Fl_Browser* o, void*) {
  10. int val=o->value();
  11. if (val!=0){
  12. presetname->cut(0,presetname->maximum_size());
  13. presetname->insert(o->text(val));
  14. };
  15. }
  16. void PresetsUI::cb_copybrowse(Fl_Browser* o, void* v) {
  17. ((PresetsUI*)(o->parent()->user_data()))->cb_copybrowse_i(o,v);
  18. }
  19. void PresetsUI::cb_copypbutton_i(Fl_Button*, void*) {
  20. const char *tmp=presetname->value();
  21. if (tmp!=NULL) {
  22. if (strlen(tmp)>0){
  23. if(arraymode)
  24. osc->write("/presets/copy", "ssi", url.c_str(), tmp, arrayidx);
  25. else
  26. osc->write("/presets/copy", "ss", url.c_str(), tmp);
  27. copywin->hide();
  28. };
  29. };
  30. }
  31. void PresetsUI::cb_copypbutton(Fl_Button* o, void* v) {
  32. ((PresetsUI*)(o->parent()->user_data()))->cb_copypbutton_i(o,v);
  33. }
  34. void PresetsUI::cb_copybutton_i(Fl_Button*, void*) {
  35. if(arraymode)
  36. osc->write("/presets/copy", "si", url.c_str(), arrayidx);
  37. else
  38. osc->write("/presets/copy", "s", url.c_str());
  39. copywin->hide();
  40. }
  41. void PresetsUI::cb_copybutton(Fl_Button* o, void* v) {
  42. ((PresetsUI*)(o->parent()->user_data()))->cb_copybutton_i(o,v);
  43. }
  44. void PresetsUI::cb_Cancel_i(Fl_Button*, void*) {
  45. copywin->hide();
  46. }
  47. void PresetsUI::cb_Cancel(Fl_Button* o, void* v) {
  48. ((PresetsUI*)(o->parent()->user_data()))->cb_Cancel_i(o,v);
  49. }
  50. void PresetsUI::cb_presetname_i(Fl_Input* o, void*) {
  51. const char *tmp=o->value();
  52. if (tmp==NULL) tmp="";
  53. if (strlen(tmp)>0) {
  54. copybutton->deactivate();
  55. copypbutton->activate();
  56. } else {
  57. copybutton->activate();
  58. copypbutton->deactivate();
  59. };
  60. }
  61. void PresetsUI::cb_presetname(Fl_Input* o, void* v) {
  62. ((PresetsUI*)(o->parent()->user_data()))->cb_presetname_i(o,v);
  63. }
  64. void PresetsUI::cb_pastebrowse_i(Fl_Browser* o, void*) {
  65. if (o->value()==0) {
  66. pastepbutton->deactivate();
  67. deletepbutton->deactivate();
  68. }else{
  69. pastepbutton->activate();
  70. deletepbutton->activate();
  71. };
  72. }
  73. void PresetsUI::cb_pastebrowse(Fl_Browser* o, void* v) {
  74. ((PresetsUI*)(o->parent()->user_data()))->cb_pastebrowse_i(o,v);
  75. }
  76. void PresetsUI::cb_pastepbutton_i(Fl_Button*, void*) {
  77. int n=pastebrowse->value()-1;
  78. if (n>=0){
  79. if(arraymode)
  80. osc->write("/presets/paste", "ssi", url.c_str(), files[n].c_str(), arrayidx);
  81. else
  82. osc->write("/presets/paste", "ss", url.c_str(), files[n].c_str());
  83. }
  84. pastewin->hide();
  85. pui->refresh();
  86. }
  87. void PresetsUI::cb_pastepbutton(Fl_Button* o, void* v) {
  88. ((PresetsUI*)(o->parent()->user_data()))->cb_pastepbutton_i(o,v);
  89. }
  90. void PresetsUI::cb_pastebutton_i(Fl_Button*, void*) {
  91. if(arraymode)
  92. osc->write("/presets/paste", "si", url.c_str(), arrayidx);
  93. else
  94. osc->write("/presets/paste", "s", url.c_str());
  95. pastewin->hide();
  96. pui->refresh();
  97. }
  98. void PresetsUI::cb_pastebutton(Fl_Button* o, void* v) {
  99. ((PresetsUI*)(o->parent()->user_data()))->cb_pastebutton_i(o,v);
  100. }
  101. void PresetsUI::cb_Cancel1_i(Fl_Button*, void*) {
  102. pastewin->hide();
  103. }
  104. void PresetsUI::cb_Cancel1(Fl_Button* o, void* v) {
  105. ((PresetsUI*)(o->parent()->user_data()))->cb_Cancel1_i(o,v);
  106. }
  107. void PresetsUI::cb_deletepbutton_i(Fl_Button*, void*) {
  108. int n=pastebrowse->value()-1;
  109. if (n>=0) {
  110. osc->write("/presets/delete", "s", files[n].c_str());
  111. }
  112. rescan(url);
  113. }
  114. void PresetsUI::cb_deletepbutton(Fl_Button* o, void* v) {
  115. ((PresetsUI*)(o->parent()->user_data()))->cb_deletepbutton_i(o,v);
  116. }
  117. PresetsUI::PresetsUI(Fl_Osc_Interface *osc_):listmodel(osc_), datamodel(osc_) {
  118. osc = osc_;
  119. arraymode = false;
  120. make_window();
  121. listmodel.callback = [this](Osc_ListModel::list_t list) {
  122. copybrowse->clear();
  123. pastebrowse->clear();
  124. files.clear();
  125. printf("adding entries<%s>...\n", datamodel.value.c_str());
  126. if(datamodel.value.empty())
  127. return;
  128. for(unsigned i=0;i<list.size();++i){
  129. std::string type = std::get<2>(list[i]);
  130. std::string comp = datamodel.value.substr(1);
  131. if(arraymode)
  132. comp += "n";
  133. bool same = comp == type;
  134. same |= strstr(type.c_str(), "Plfo") && strstr(comp.c_str(), "Plfo");
  135. if(!same)
  136. continue;
  137. files.push_back(std::get<0>(list[i]));
  138. copybrowse->add(std::get<1>(list[i]).c_str());
  139. pastebrowse->add(std::get<1>(list[i]).c_str());
  140. }};
  141. datamodel.callback = [this](Osc_DataModel::value_t val) {
  142. printf("Value = %s\n", val.c_str());
  143. copytypetext->label(val.c_str());
  144. pastetypetext->label(val.c_str());
  145. listmodel.doUpdate("/presets/scan-for-presets");
  146. };
  147. }
  148. PresetsUI::~PresetsUI() {
  149. copywin->hide();delete(copywin);
  150. pastewin->hide();delete(pastewin);
  151. }
  152. Fl_Double_Window* PresetsUI::make_window() {
  153. { copywin = new Fl_Double_Window(265, 430, "Copy to Clipboard/Preset");
  154. copywin->box(FL_THIN_UP_BOX);
  155. copywin->color((Fl_Color)238);
  156. copywin->user_data((void*)(this));
  157. { copybrowse = new Fl_Browser(10, 25, 245, 320);
  158. copybrowse->type(1);
  159. copybrowse->callback((Fl_Callback*)cb_copybrowse);
  160. } // Fl_Browser* copybrowse
  161. { copypbutton = new Fl_Button(145, 355, 110, 20, "Copy to Preset");
  162. copypbutton->box(FL_THIN_UP_BOX);
  163. copypbutton->callback((Fl_Callback*)cb_copypbutton);
  164. } // Fl_Button* copypbutton
  165. { copybutton = new Fl_Button(25, 385, 90, 35, "Copy to Clipboard");
  166. copybutton->box(FL_THIN_UP_BOX);
  167. copybutton->callback((Fl_Callback*)cb_copybutton);
  168. copybutton->align(Fl_Align(192));
  169. } // Fl_Button* copybutton
  170. { Fl_Button* o = new Fl_Button(160, 385, 80, 35, "Cancel");
  171. o->box(FL_THIN_UP_BOX);
  172. o->callback((Fl_Callback*)cb_Cancel);
  173. o->align(Fl_Align(192));
  174. } // Fl_Button* o
  175. { Fl_Box* o = new Fl_Box(10, 5, 40, 15, "Type:");
  176. o->labelsize(11);
  177. o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
  178. } // Fl_Box* o
  179. { copytypetext = new Fl_Box(50, 5, 205, 15);
  180. copytypetext->box(FL_FLAT_BOX);
  181. copytypetext->color((Fl_Color)238);
  182. copytypetext->labelfont(1);
  183. copytypetext->labelsize(11);
  184. copytypetext->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
  185. } // Fl_Box* copytypetext
  186. { presetname = new Fl_Input(10, 355, 130, 20);
  187. presetname->callback((Fl_Callback*)cb_presetname);
  188. presetname->when(FL_WHEN_CHANGED);
  189. } // Fl_Input* presetname
  190. copywin->set_modal();
  191. copywin->end();
  192. } // Fl_Double_Window* copywin
  193. { pastewin = new Fl_Double_Window(265, 430, "Paste from Clipboard/Preset");
  194. pastewin->box(FL_THIN_UP_BOX);
  195. pastewin->color((Fl_Color)238);
  196. pastewin->user_data((void*)(this));
  197. { pastebrowse = new Fl_Browser(10, 25, 245, 320);
  198. pastebrowse->type(2);
  199. pastebrowse->callback((Fl_Callback*)cb_pastebrowse);
  200. } // Fl_Browser* pastebrowse
  201. { pastepbutton = new Fl_Button(10, 355, 160, 20, "Paste from Preset");
  202. pastepbutton->box(FL_THIN_UP_BOX);
  203. pastepbutton->callback((Fl_Callback*)cb_pastepbutton);
  204. } // Fl_Button* pastepbutton
  205. { pastebutton = new Fl_Button(25, 385, 90, 35, "Paste from Clipboard");
  206. pastebutton->box(FL_THIN_UP_BOX);
  207. pastebutton->callback((Fl_Callback*)cb_pastebutton);
  208. pastebutton->align(Fl_Align(192));
  209. } // Fl_Button* pastebutton
  210. { Fl_Button* o = new Fl_Button(160, 385, 80, 35, "Cancel");
  211. o->box(FL_THIN_UP_BOX);
  212. o->callback((Fl_Callback*)cb_Cancel1);
  213. o->align(Fl_Align(192));
  214. } // Fl_Button* o
  215. { pastetypetext = new Fl_Box(55, 5, 200, 15);
  216. pastetypetext->box(FL_FLAT_BOX);
  217. pastetypetext->color((Fl_Color)238);
  218. pastetypetext->labelfont(1);
  219. pastetypetext->labelsize(11);
  220. pastetypetext->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
  221. } // Fl_Box* pastetypetext
  222. { Fl_Box* o = new Fl_Box(15, 5, 40, 15, "Type:");
  223. o->labelsize(11);
  224. o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
  225. } // Fl_Box* o
  226. { deletepbutton = new Fl_Button(180, 355, 75, 20, "Delete");
  227. deletepbutton->box(FL_THIN_UP_BOX);
  228. deletepbutton->callback((Fl_Callback*)cb_deletepbutton);
  229. } // Fl_Button* deletepbutton
  230. pastewin->set_modal();
  231. pastewin->end();
  232. } // Fl_Double_Window* pastewin
  233. return pastewin;
  234. }
  235. void PresetsUI::paste(std::string url_, PresetsUI_ *pui, int idx) {
  236. url = url_;
  237. this->pui=pui;
  238. bool but=(Fl::event_button()!=FL_LEFT_MOUSE);
  239. pastepbutton->deactivate();
  240. deletepbutton->deactivate();
  241. arraymode = true;
  242. arrayidx = idx;
  243. if(but) {
  244. osc->write("/presets/paste", "si", url.c_str(), idx);
  245. pui->refresh();
  246. } else {
  247. rescan(url_);
  248. pastewin->show();
  249. }
  250. }
  251. void PresetsUI::copy(std::string url_, int idx) {
  252. copybutton->activate();
  253. copypbutton->deactivate();
  254. arraymode = true;
  255. arrayidx = idx;
  256. url = url_;
  257. this->pui=NULL;
  258. bool but=(Fl::event_button()!=FL_LEFT_MOUSE);
  259. presetname->cut(0,presetname->maximum_size());
  260. if(but) {
  261. osc->write("/presets/copy", "si", url_.c_str(), idx);
  262. } else {
  263. rescan(url_);
  264. copywin->show();
  265. }
  266. }
  267. void PresetsUI::copy(std::string url_) {
  268. copybutton->activate();
  269. copypbutton->deactivate();
  270. arraymode = false;
  271. url = url_;
  272. this->pui=NULL;
  273. bool but=(Fl::event_button()!=FL_LEFT_MOUSE);
  274. presetname->cut(0,presetname->maximum_size());
  275. if(but) {
  276. osc->write("/presets/copy", "s", url_.c_str());
  277. } else {
  278. rescan(url_);
  279. copywin->show();
  280. };
  281. }
  282. void PresetsUI::paste(std::string url_, PresetsUI_ *pui) {
  283. url = url_;
  284. this->pui=pui;
  285. bool but=(Fl::event_button()!=FL_LEFT_MOUSE);
  286. pastepbutton->deactivate();
  287. deletepbutton->deactivate();
  288. arraymode = false;
  289. if(but) {
  290. osc->write("/presets/paste", "s", url.c_str());
  291. pui->refresh();
  292. } else {
  293. rescan(url_);
  294. pastewin->show();
  295. };
  296. }
  297. void PresetsUI::rescan(std::string url) {
  298. copybrowse->clear();
  299. pastebrowse->clear();
  300. printf("Datamodel Update...");
  301. datamodel.doUpdate(url+"preset-type");
  302. }
  303. PresetsUI *presetsui;