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 }