Collection of tools useful for audio production
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.

85 lines
2.1KB

  1. #include "NioUI.h"
  2. #include "../Nio/Nio.h"
  3. #include <cstdio>
  4. #include <iostream>
  5. #include <cstring>
  6. #include <FL/Fl_Pack.H>
  7. #include <FL/Fl_Spinner.H>
  8. #include <FL/Enumerations.H>
  9. #include <FL/Fl_Choice.H>
  10. #include <FL/Fl_Tabs.H>
  11. #include <FL/Fl_Group.H>
  12. #include <FL/Fl_Text_Display.H>
  13. using namespace std;
  14. NioUI::NioUI()
  15. :Fl_Window(200, 100, 400, 400, "New IO Controls")
  16. {
  17. //hm, I appear to be leaking memory
  18. Fl_Group *settings = new Fl_Group(0, 20, 400, 400 - 35, "Settings");
  19. {
  20. audio = new Fl_Choice(60, 80, 100, 25, "Audio");
  21. audio->callback(audioCallback);
  22. midi = new Fl_Choice(60, 100, 100, 25, "Midi");
  23. midi->callback(midiCallback);
  24. }
  25. settings->end();
  26. //initialize midi list
  27. {
  28. #if 0
  29. set<string> midiList = Nio::getSources();
  30. string source = Nio::getSource();
  31. int midival = 0;
  32. for(set<string>::iterator itr = midiList.begin();
  33. itr != midiList.end(); ++itr) {
  34. midi->add(itr->c_str());
  35. if(*itr == source)
  36. midival = midi->size() - 2;
  37. }
  38. #else
  39. int midival = 0;
  40. #endif
  41. midi->value(midival);
  42. }
  43. //initialize audio list
  44. {
  45. #if 0
  46. set<string> audioList = Nio::getSinks();
  47. string sink = Nio::getSink();
  48. int audioval = 0;
  49. for(set<string>::iterator itr = audioList.begin();
  50. itr != audioList.end(); ++itr) {
  51. audio->add(itr->c_str());
  52. if(*itr == sink)
  53. audioval = audio->size() - 2;
  54. }
  55. #else
  56. int audioval = 0;
  57. #endif
  58. audio->value(audioval);
  59. }
  60. resizable(this);
  61. size_range(400, 300);
  62. }
  63. NioUI::~NioUI()
  64. {}
  65. void NioUI::refresh()
  66. {}
  67. void NioUI::midiCallback(Fl_Widget *c)
  68. {
  69. bool good = Nio::setSource(static_cast<Fl_Choice *>(c)->text());
  70. static_cast<Fl_Choice *>(c)->textcolor(fl_rgb_color(255 * !good, 0, 0));
  71. }
  72. void NioUI::audioCallback(Fl_Widget *c)
  73. {
  74. bool good = Nio::setSink(static_cast<Fl_Choice *>(c)->text());
  75. static_cast<Fl_Choice *>(c)->textcolor(fl_rgb_color(255 * !good, 0, 0));
  76. }