QuaJoystickPort::QuaJoystickPort(const string &devnm, QuaJoystickManager *qj, short subt, bool hf #ifdef QUA_V_JOYSTICK_MMC , int32 jid #endif ): QuaPort(devnm, QuaPort::Device::JOYSTICK, subt, QUA_PORT_IO) { quaJoystick = qj; #ifdef QUA_V_JOYSTICK_MMC stickId = jid; #endif isOpen = false; lastUpdate = 0; rate = 10; minx = -1; miny = -1; maxx = 1; maxy = 1; minUpdateMSec = 100; AddInsert("Joy!", 0, OUTPUT_INSERT, 1, 0); }
void NcursesConsole(Connection *conn, const char *file) { char console_buf[MAX_DATA]; char *arg1, *arg2, *arg3, *arg4; int *free_index = &(conn->core->cnf->free_index); int *delete_index = &(conn->core->cnf->delete_index); int *size = &(conn->core->cnf->size); wmove(console, 1, 1); touchwin(console); wrefresh(console); napms(100); wbkgd(border_console, COLOR_PAIR(5)); touchwin(border_console); wrefresh(border_console); touchwin(console); wrefresh(console); echo(); do { DisplayMode("Mode: Console"); wmove(body, 0, 0); werase(body); DatabaseList(conn, body); PREFRESH; wgetnstr(console, console_buf, MAX_DATA); arg1 = strtok(console_buf, " "); arg2 = strtok(NULL, " "); arg3 = strtok(NULL, " "); arg4 = strtok(NULL, " "); ClearLine(console); if (arg1 != NULL) { if (strncmp(arg1, "add", 1) == 0) { if (arg4 == NULL) { if ((arg2 == NULL) || (arg3 == NULL)) { DisplayError("name or phone is empty\n"); } else AddRecord(conn, NULL, arg2, arg3); } else { int i = atoi(arg2); if (i > *size || i < 0) { DisplayError("index out of bounds\n"); } else { if ((arg3 == NULL) || (arg4 == NULL)) { DisplayError("name or phone is empty\n"); } else { AddRecord(conn, &i, arg3, arg4); } } } DatabaseWrite(conn, file); } if (strncmp(arg1, "Insert", 1) == 0) { if (arg4 == NULL) { AddInsert(conn, NULL, arg2, arg3); } else { int i = atoi(arg2); if (i > *size || i < 0) { DisplayError("index out of bounds\n"); } else { AddInsert(conn, &i, arg3, arg4); } } DatabaseWrite(conn, file); } if (strncmp(arg1, "delete", 1) == 0) { if (*free_index == 0 && *delete_index == 0) { DisplayError("database is already empty\n"); } else if (arg2 == NULL) { DeleteRecord(conn, NULL); } else { int i = atoi(arg2); DeleteRecord(conn, &i); } DatabaseWrite(conn, file); } if (strncmp(arg1, "Delete", 1) == 0) { if (*free_index == 0 && *delete_index == 0) { DisplayError("database is already empty\n"); } else if (arg2 == NULL) { DeleteInsert(conn, NULL); } else { int i = atoi(arg2); DeleteInsert(conn, &i); } DatabaseWrite(conn, file); } if (strncmp(arg1, "resize", 1) == 0) { int i = atoi(arg2); if (i == *size) { DisplayError("database size is already that size\n"); } else if (i <= *free_index || i <= (*delete_index) + 1) { DisplayError("cannot resize below valid records\n"); } else { DatabaseResize(conn, &i); DatabaseWrite(conn, file); } } if (strncmp(arg1, "Arrange", 1) == 0) { DatabaseArrange(conn); DatabaseWrite(conn, file); } if (strncmp(arg1, "sort", 1) == 0) { DatabaseSort(conn); DatabaseWrite(conn, file); } if (strncmp(arg1, "find", 1) == 0) { wmove(body, 0, 0); werase(body); DatabaseFind(conn, arg2, body); PREFRESH; getch(); } } else break; } while (strncmp(arg1, "quit", 1) != 0); wbkgd(border_console, COLOR_PAIR(2)); wrefresh(border_console); touchwin(console); wrefresh(console); noecho(); }
void NcursesExamine(Connection *conn, const char *file) { int y = 0, down = 0, selection = 0; int input; char examine_buf[MAX_DATA]; char *arg1, *arg2; struct Information *rows = conn->core->db->rows; int *free_index = &(conn->core->cnf->free_index); int *delete_index = &(conn->core->cnf->delete_index); int *size = &(conn->core->cnf->size); mvwprintw(body, 0, 0, "%-2d %-10s %-10s", rows[0].index, rows[0].name, rows[0].phone); do { DisplayMode("Mode: Examine"); /* debug getyx(body, gety, getx); mvprintw(maxy - 10, maxx - 30, "\ny = %d\nx = %d\ndown = %d\n", y, x, down); mvprintw(maxy - 7, maxx - 30, "\ngety = %d\ngetx = %d\n", gety, getx); mvprintw(maxy - 10, maxx - 30, "\ny = %d\nx = %d\ndown = %d\n", y, x, down); refresh(); */ PREFRESH_SCROLL; input = getchar(); switch(input) { case 'a': touchwin(add); wrefresh(add); echo(); wmove(add, 1, 1); wrefresh(add); wgetnstr(add, examine_buf, MAX_DATA); arg1 = strtok(examine_buf, " "); arg2 = strtok(NULL, " "); if ((arg1 == NULL) || (arg2 == NULL)) { DisplayError("name or phone is empty\n"); } else { AddRecord(conn, &selection, arg1, arg2); DatabaseWrite(conn, file); } noecho(); ClearLine(add); RefreshdbList(conn); break; case 'I': touchwin(add); wrefresh(add); echo(); wmove(add, 1, 1); wrefresh(add); wgetnstr(add, examine_buf, MAX_DATA); arg1 = strtok(examine_buf, " "); arg2 = strtok(NULL, " "); if (arg1) { AddInsert(conn, &selection, arg1, arg2); DatabaseWrite(conn, file); } noecho(); ClearLine(add); RefreshdbList(conn); break; case 'd': DeleteRecord(conn, &selection); DatabaseWrite(conn, file); RefreshdbList(conn); break; case 'D': DeleteInsert(conn, &selection); DatabaseWrite(conn, file); RefreshdbList(conn); break; case 'f': touchwin(find); wrefresh(find); echo(); wmove(find, 1, 1); wrefresh(find); wgetnstr(find, examine_buf, MAX_DATA); arg1 = strtok(examine_buf, " "); if (arg1) { wmove(body, 0, 0); werase(body); DatabaseFind(conn, arg1, body); PREFRESH_SCROLL; getch(); } noecho(); ClearLine(find); RefreshdbList(conn); break; //case KEY_DOWN: case 'j': if (y != (maxy / 2) + 3) y++; wmove(body, y, 0); selection++; RefreshdbList(conn); if (y == (maxy / 2) + 3) down++; if (selection > (*size) - 1) { selection = 0; y = 0; down = 0; } ExamineSelection(&selection, conn); break; //case KEY_UP: case 'k': if (y != 0) y--; selection--; RefreshdbList(conn); if ((y == 0) && (down != 0)) down--; if (selection < 0) { selection = (*size) - 1; y = (*size) / 2; down = (*size) / 2; } ExamineSelection(&selection, conn); break; case 'r': touchwin(resize); wrefresh(resize); echo(); wmove(resize, 1, 1); wrefresh(resize); wgetnstr(resize, examine_buf, MAX_DATA); arg1 = strtok(examine_buf, " "); if (arg1) { int i = atoi(arg1); if (i == *size) { DisplayError("database size is already that size\n"); } else if (i <= *free_index || i <= (*delete_index) + 1) { DisplayError("cannot resize below valid records\n"); } else { DatabaseResize(conn, &i); DatabaseWrite(conn, file); } } noecho(); ClearLine(resize); RefreshdbList(conn); break; case 'A': DatabaseArrange(conn); DatabaseWrite(conn, file); RefreshdbList(conn); break; case 's': DatabaseSort(conn); DatabaseWrite(conn, file); RefreshdbList(conn); break; default: break; } } while (input != 'q'); RefreshdbList(conn); PREFRESH_SCROLL; }