static int pick(int x, int y, int button) { int n; if (inbox(&more, x, y)) { cancel_which(); if (page + 1 >= npages) return 0; page++; return -1; } if (inbox(&less, x, y)) { cancel_which(); if (page == 0) return 0; page--; return -1; } if (inbox(&cancel, x, y)) { if (which == -2) return -2; cancel_which(); which = -2; R_standard_color(RED); Outline_box(cancel.top, cancel.bottom, cancel.left, cancel.right); R_flush(); return 0; } /* search name list. handle double click */ for (n = 0; n < count; n++) if (inbox(&list[n].box, x, y)) { if (n == which) /* second click! */ return 1; cancel_which(); which = n; R_standard_color(RED); Outline_box(list[n].box.top, list[n].box.bottom, list[n].box.left, list[n].box.right); R_flush(); return 0; /* ignore first click */ } cancel_which(); return 0; }
static int to_printer(void) { FILE *fd; cancel_which(); Menu_msg("Sending report to printer ..."); Curses_write_window(PROMPT_WINDOW, 1, 1, "Sending report to printer ..."); fd = popen("lp", "w"); do_report(fd); pclose(fd); return 0; }
static int to_file(void) { FILE *fd; char msg[1024]; cancel_which(); if (Input_other(askfile, "Keyboard") < 0) { return 0; } fd = fopen(buf, "w"); if (fd == NULL) { sprintf(msg, "** Unable to create file %s\n", buf); Beep(); Curses_write_window(PROMPT_WINDOW, 2, 1, msg); } else { do_report(fd); fclose(fd); sprintf(msg, "Report saved in file %s\n", buf); Curses_write_window(PROMPT_WINDOW, 2, 1, msg); } return 0; }
static int done(void) { cancel_which(); return -1; }
static int pick(int x, int y) { int n; int cur; cur = which; cancel_which(); if (inbox(&more, x, y)) { if (curp >= group.points.count) return 0; first_point = curp; pager = 1; return 1; } if (inbox(&less, x, y)) { if (first_point == 0) return 0; first_point -= nlines; if (first_point < 0) first_point = 0; pager = 1; return 1; } if (!inbox(&report, x, y)) { return 0; } n = (y - report.top) / height; if (n == cur) { /* second click! */ if (!delete_mode) { group.points.status[first_point + n] = !group.points.status[first_point + n]; compute_transformation(); show_point(first_point + n, 1); return 1; } else { delete_control_point(first_point + n); first_point = 0; compute_transformation(); pager = 1; return 1; } } /* first click */ which = n; show_point(first_point + n, 0); if (!delete_mode) R_standard_color(RED); else R_standard_color(ORANGE); Outline_box((report.top + n * height) + 1, report.top + (n + 1) * height, report.left, report.right - 1); R_flush(); return 0; /* ignore first click */ }