combjs
annotate gui/combjs-gui.cc @ 1:dd02002227a2
- added a few commandline arguments to combjs
- trying to make a gui frontend
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Thu, 14 Jul 2011 15:40:20 +0300 |
parents | |
children |
rev | line source |
---|---|
nuclear@1 | 1 #include <stdio.h> |
nuclear@1 | 2 #include <QApplication> |
nuclear@1 | 3 #include <QMessageBox> |
nuclear@1 | 4 #include "combjs.h" |
nuclear@1 | 5 #include "gui.h" |
nuclear@1 | 6 |
nuclear@1 | 7 MainWindow *main_win; |
nuclear@1 | 8 |
nuclear@1 | 9 int main(int argc, char **argv) |
nuclear@1 | 10 { |
nuclear@1 | 11 QApplication app(argc, argv); |
nuclear@1 | 12 |
nuclear@1 | 13 main_win = new MainWindow; |
nuclear@1 | 14 main_win->show(); |
nuclear@1 | 15 |
nuclear@1 | 16 return app.exec(); |
nuclear@1 | 17 } |
nuclear@1 | 18 |
nuclear@1 | 19 int enum_joysticks(std::vector<Joystick> *jsvec) |
nuclear@1 | 20 { |
nuclear@1 | 21 jsvec->clear(); |
nuclear@1 | 22 |
nuclear@1 | 23 FILE *pipe = popen("combjs -l", "r"); |
nuclear@1 | 24 if(!pipe) { |
nuclear@1 | 25 QMessageBox::critical(main_win, "Critical error", |
nuclear@1 | 26 "Failed to execute combjs, make sure it's installed in the path."); |
nuclear@1 | 27 exit(1); |
nuclear@1 | 28 } |
nuclear@1 | 29 |
nuclear@1 | 30 char line[512]; |
nuclear@1 | 31 while(fgets(line, sizeof line, pipe)) { |
nuclear@1 | 32 Joystick js; |
nuclear@1 | 33 char *ptr, *end; |
nuclear@1 | 34 |
nuclear@1 | 35 if(!(ptr = strchr(line, ':'))) { |
nuclear@1 | 36 goto inval; |
nuclear@1 | 37 } |
nuclear@1 | 38 *ptr++ = 0; |
nuclear@1 | 39 |
nuclear@1 | 40 js.dev = line; |
nuclear@1 | 41 |
nuclear@1 | 42 if(!(ptr = strchr(ptr, '"')) || !(end = strchr(ptr + 1, '"'))) { |
nuclear@1 | 43 goto inval; |
nuclear@1 | 44 } |
nuclear@1 | 45 *end = 0; |
nuclear@1 | 46 |
nuclear@1 | 47 js.name = ptr + 1; |
nuclear@1 | 48 ptr = end + 1; |
nuclear@1 | 49 |
nuclear@1 | 50 if(sscanf(ptr, ", axes: %d, buttons: %d", &js.num_axes, &js.num_bn) != 2) { |
nuclear@1 | 51 goto inval; |
nuclear@1 | 52 } |
nuclear@1 | 53 |
nuclear@1 | 54 js.isvirt = false; |
nuclear@1 | 55 jsvec->push_back(js); |
nuclear@1 | 56 } |
nuclear@1 | 57 pclose(pipe); |
nuclear@1 | 58 |
nuclear@1 | 59 return jsvec->size(); |
nuclear@1 | 60 |
nuclear@1 | 61 inval: |
nuclear@1 | 62 QMessageBox::critical(main_win, "Invalid combjs output", |
nuclear@1 | 63 "The output from combjs is in an unexpected format, version missmatch?"); |
nuclear@1 | 64 exit(1); |
nuclear@1 | 65 return -1; /* unreachable (duh) */ |
nuclear@1 | 66 } |