|
- #include "NioUI.h"
- #include "../Nio/Nio.h"
- #include <cstdio>
- #include <iostream>
- #include <cstring>
- #include <FL/Fl_Pack.H>
- #include <FL/Fl_Spinner.H>
- #include <FL/Enumerations.H>
- #include <FL/Fl_Choice.H>
- #include <FL/Fl_Tabs.H>
- #include <FL/Fl_Group.H>
- #include <FL/Fl_Text_Display.H>
-
- using namespace std;
-
- NioUI::NioUI()
- :Fl_Window(200, 100, 400, 400, "New IO Controls")
- {
- //hm, I appear to be leaking memory
- Fl_Group *settings = new Fl_Group(0, 20, 400, 400 - 35, "Settings");
- {
- audio = new Fl_Choice(60, 80, 100, 25, "Audio");
- audio->callback(audioCallback);
- midi = new Fl_Choice(60, 100, 100, 25, "Midi");
- midi->callback(midiCallback);
- }
- settings->end();
-
- //initialize midi list
- {
- set<string> midiList = Nio::getSources();
- string source = Nio::getSource();
- int midival = 0;
- for(set<string>::iterator itr = midiList.begin();
- itr != midiList.end(); ++itr) {
- midi->add(itr->c_str());
- if(*itr == source)
- midival = midi->size() - 2;
- }
- midi->value(midival);
- }
-
- //initialize audio list
- {
- set<string> audioList = Nio::getSinks();
- string sink = Nio::getSink();
- int audioval = 0;
- for(set<string>::iterator itr = audioList.begin();
- itr != audioList.end(); ++itr) {
- audio->add(itr->c_str());
- if(*itr == sink)
- audioval = audio->size() - 2;
- }
- audio->value(audioval);
- }
- resizable(this);
- size_range(400, 300);
- }
-
- NioUI::~NioUI()
- {}
-
- void NioUI::refresh()
- {}
-
- void NioUI::midiCallback(Fl_Widget *c)
- {
- bool good = Nio::setSource(static_cast<Fl_Choice *>(c)->text());
- static_cast<Fl_Choice *>(c)->textcolor(fl_rgb_color(255 * !good, 0, 0));
- }
-
- void NioUI::audioCallback(Fl_Widget *c)
- {
- bool good = Nio::setSink(static_cast<Fl_Choice *>(c)->text());
- static_cast<Fl_Choice *>(c)->textcolor(fl_rgb_color(255 * !good, 0, 0));
- }
|