int default_handle_key(ui_t *ui, int key) { int action = -1; // Check actions for this key while ((action = key_find_action(key, action)) != ERR) { // Check if we handle this action switch (action) { case ACTION_RESIZE_SCREEN: ui_resize_panel(ui); break; case ACTION_TOGGLE_SYNTAX: setting_toggle(SETTING_SYNTAX); break; case ACTION_TOGGLE_HINT: setting_toggle(SETTING_ALTKEY_HINT); break; case ACTION_CYCLE_COLOR: setting_toggle(SETTING_COLORMODE); break; case ACTION_SHOW_HOSTNAMES: setting_toggle(SETTING_DISPLAY_HOST); break; case ACTION_SHOW_ALIAS: setting_toggle(SETTING_DISPLAY_ALIAS); break; case ACTION_SHOW_SETTINGS: ui_create_panel(PANEL_SETTINGS); break; case ACTION_TOGGLE_PAUSE: // Pause/Resume capture capture_set_paused(!capture_is_paused()); break; case ACTION_SHOW_HELP: ui_help(ui); break; case ACTION_PREV_SCREEN: ui_destroy(ui); break; default: // Parse next action continue; } // Default handler has handled the key break; } // Return this is a valid handled key return (action == ERR) ? key : 0; }
int main(){ clear_tty(); srand(time(NULL)); int frame_left1 = 3; char *cd1[] = {"w","a","d","s","p"}; int frame_left2 = 42; char *cd2[] = {"i","j","l","k","p"}; GAME_UI *ui1 = ui_init(frame_left1, cd1); GAME *game1 = game_init(ui1); ui1->game = game1; GAME_UI *ui2 = ui_init(frame_left2, cd2); GAME *game2 = game_init(ui2); ui2->game = game2; int size = 0; PRESS_HANDLER handlers[20]; bind_press_handlers(game1, cd1, handlers, &size); bind_press_handlers(game2, cd2, handlers, &size); game_begin(game1); game_begin(game2); key_press_loop(handlers, size); game_destroy(game1); game_destroy(game2); ui_destroy(ui1); ui_destroy(ui2); reset_tty(); return 0; }
int main(int argc, char *argv[]) { if (argc > 2) { print_usage_and_exit(); } difficulty_t level = MEDIUM; if (argc == 2) { if (!strcmp(argv[1], "easy")) { level = EASY; } else if (!strcmp(argv[1], "medium")) { level = MEDIUM; } else if (!strcmp(argv[1], "hard")) { level = HARD; } else { print_usage_and_exit(); } } grid_t* grid = init_game_grid(level); ui_init(grid->tiles_per_row * ICON_SIZE); load_icons(grid); srand(time(0)); int done = 0; waiting = 0; previous_tile = NULL; ui_event_t event; while (!done) { while (ui_poll_event(&event)) { switch (event.type) { case ui_event_quit: done = 1; break; case ui_event_click: if (waiting) { break; } int x = event.click.x; int y = event.click.y; clicked_tile = get_clicked_tile(grid, x, y); on_tile_click(); break; } } ui_draw_grid(grid); ui_render(); } ui_destroy(); return 0; }
PUSS_EXPORT void puss_plugin_destroy(void* ext) { LanguageTips* self = (LanguageTips*)ext; if( !self ) return; controls_final(self); preview_final(self); tips_final(self); ui_destroy(self); g_regex_unref(self->re_include); g_regex_unref(self->re_include_tip); g_regex_unref(self->re_include_info); if( self->jump_to_seq ) g_sequence_free(self->jump_to_seq); if( self->outline_file ) cpp_file_unref(self->outline_file); parse_thread_final(self); g_free(self); }
int column_select_handle_key_form(ui_t *ui, int key) { int field_idx, new_field_idx; char field_value[48]; int action = -1; // Get panel information column_select_info_t *info = column_select_info(ui); // Get current field id field_idx = field_index(current_field(info->form)); // Get current field value. memset(field_value, 0, sizeof(field_value)); strcpy(field_value, field_buffer(current_field(info->form), 0)); strtrim(field_value); // Check actions for this key while ((action = key_find_action(key, action)) != ERR) { // Check if we handle this action switch (action) { case ACTION_RIGHT: case ACTION_NEXT_FIELD: form_driver(info->form, REQ_NEXT_FIELD); break; case ACTION_LEFT: case ACTION_PREV_FIELD: form_driver(info->form, REQ_PREV_FIELD); break; case ACTION_SELECT: case ACTION_CONFIRM: switch(field_idx) { case FLD_COLUMNS_ACCEPT: column_select_update_columns(ui); ui_destroy(ui); return KEY_HANDLED; case FLD_COLUMNS_CANCEL: ui_destroy(ui); return KEY_HANDLED; case FLD_COLUMNS_SAVE: column_select_update_columns(ui); column_select_save_columns(ui); ui_destroy(ui); return KEY_HANDLED; } break; default: // Parse next action continue; } // This panel has handled the key successfully break; } // Validate all input data form_driver(info->form, REQ_VALIDATION); // Change background and cursor of "button fields" set_field_back(info->fields[FLD_COLUMNS_ACCEPT], A_NORMAL); set_field_back(info->fields[FLD_COLUMNS_SAVE], A_NORMAL); set_field_back(info->fields[FLD_COLUMNS_CANCEL], A_NORMAL); // Get current selected field new_field_idx = field_index(current_field(info->form)); // Swap between menu and form if (field_idx == FLD_COLUMNS_CANCEL && new_field_idx == FLD_COLUMNS_ACCEPT) { set_menu_fore(info->menu, COLOR_PAIR(CP_DEF_ON_BLUE)); info->form_active = 0; } else { // Change current field background set_field_back(info->fields[new_field_idx], A_REVERSE); } // Return if this panel has handled or not the key return (action == ERR) ? KEY_NOT_HANDLED : KEY_HANDLED; }
int column_select_handle_key_menu(ui_t *ui, int key) { MENU *menu; ITEM *current; int current_idx; int action = -1; // Get panel information column_select_info_t *info = column_select_info(ui); menu = info->menu; current = current_item(menu); current_idx = item_index(current); // Check actions for this key while ((action = key_find_action(key, action)) != ERR) { // Check if we handle this action switch (action) { case ACTION_DOWN: menu_driver(menu, REQ_DOWN_ITEM); break; case ACTION_UP: menu_driver(menu, REQ_UP_ITEM); break; case ACTION_NPAGE: menu_driver(menu, REQ_SCR_DPAGE); break; case ACTION_PPAGE: menu_driver(menu, REQ_SCR_UPAGE); break; case ACTION_SELECT: column_select_toggle_item(ui, current); column_select_update_menu(ui); break; case ACTION_COLUMN_MOVE_DOWN: column_select_move_item(ui, current, current_idx + 1); column_select_update_menu(ui); break; case ACTION_COLUMN_MOVE_UP: column_select_move_item(ui, current, current_idx - 1); column_select_update_menu(ui); break; case ACTION_NEXT_FIELD: info->form_active = 1; set_menu_fore(menu, COLOR_PAIR(CP_DEFAULT)); set_field_back(info->fields[FLD_COLUMNS_ACCEPT], A_REVERSE); form_driver(info->form, REQ_VALIDATION); break; case ACTION_CONFIRM: column_select_update_columns(ui); ui_destroy(ui); return KEY_HANDLED; default: // Parse next action continue; } // This panel has handled the key successfully break; } // Draw a scrollbar to the right info->scroll.pos = top_row(menu); ui_scrollbar_draw(info->scroll); wnoutrefresh(info->menu_win); // Return if this panel has handled or not the key return (action == ERR) ? KEY_NOT_HANDLED : KEY_HANDLED; }
int main (int argc, char ** argv) { unsigned long channels = 2; int opt; const char * options = "hps:ionc:tD:"; struct option long_options[] = { { "help", 0, NULL, 'h' }, { "pid-name", 0, NULL, 'p' }, { "string-name", 1, NULL, 's' }, { "name", 1, NULL, 'n' }, { "channels", 1, NULL, 'c' }, { "input", 1, NULL, 'i' }, { "output", 1, NULL, 'o' }, { "no-time", 0, NULL, 't' }, { "jack-session-uuid", 1, NULL, 'U' }, { 0, 0, 0, 0 } }; #ifdef HAVE_LASH lash_args_t * lash_args; lash_event_t * lash_event; #endif gtk_set_locale (); #ifdef ENABLE_NLS bindtextdomain (PACKAGE, LOCALEDIR); bind_textdomain_codeset (PACKAGE, "UTF-8"); #endif /* not using gnome popt */ for (opt = 1; opt < argc; opt++) { if (strcmp (argv[opt], "-h") == 0 || strcmp (argv[opt], "--help") == 0) { print_help (); exit (0); } } #ifdef HAVE_LASH lash_args = lash_extract_args (&argc, &argv); #endif gtk_init (&argc, &argv); /* set the client name */ client_name = g_string_new (""); session_uuid = g_string_new (""); g_string_printf (client_name, "%s", CLIENT_NAME_BASE); while ((opt = getopt_long (argc, argv, options, long_options, NULL)) != -1) { switch (opt) { case 'h': print_help (); exit (0); break; case 's': g_string_printf (client_name, "%s (%s)", CLIENT_NAME_BASE, optarg); break; case 'p': g_string_printf (client_name, "%s (%d)", CLIENT_NAME_BASE, getpid()); break; case 'n': g_string_printf (client_name, CLIENT_NAME_BASE); break; case 'i': connect_inputs = TRUE; break; case 'o': connect_outputs = TRUE; break; case 'c': channels = atof (optarg); if (channels < 1) { fprintf (stderr, _("There must be at least one channel\n")); exit (EXIT_FAILURE); } break; case 't': time_runs = FALSE; break; case 'U': g_string_printf (session_uuid, "%s", optarg); break; case ':': case '?': print_help (); exit (EXIT_FAILURE); break; } } if (optind < argc) { if (argc - optind > 1) { fprintf (stderr, _("Please specify only one file to open")); exit(EXIT_FAILURE); } initial_filename = g_string_new(argv[optind]); } #ifdef HAVE_LASH { int flags = LASH_Config_File; global_lash_client = lash_init (lash_args, PACKAGE_NAME, flags, LASH_PROTOCOL (2,0)); } if (global_lash_client) { lash_event = lash_event_new_with_type (LASH_Client_Name); lash_event_set_string (lash_event, client_name->str); lash_send_event (global_lash_client, lash_event); } #endif /* HAVE_LASH */ xmlSetCompressMode (XML_COMPRESSION_LEVEL); global_ui = ui_new (channels); if (!global_ui) return 1; /* ignore the sighup (the jack client thread needs to deal with it) */ signal (SIGHUP, SIG_IGN); /* jack_activate (global_ui->procinfo->jack_client); */ gtk_main (); /* jack_deactivate (global_ui->procinfo->jack_client); */ ui_destroy (global_ui); return 0; }
int save_handle_key(ui_t *ui, int key) { int field_idx; int action = -1; // Get panel information save_info_t *info = save_info(ui); // Get current field id field_idx = field_index(current_field(info->form)); // Check actions for this key while ((action = key_find_action(key, action)) != ERR) { // Check if we handle this action switch (action) { case ACTION_PRINTABLE: if (field_idx == FLD_SAVE_PATH || field_idx == FLD_SAVE_FILE) { form_driver(info->form, key); break; } continue; case ACTION_NEXT_FIELD: form_driver(info->form, REQ_NEXT_FIELD); form_driver(info->form, REQ_END_LINE); break; case ACTION_PREV_FIELD: form_driver(info->form, REQ_PREV_FIELD); form_driver(info->form, REQ_END_LINE); break; case ACTION_RIGHT: form_driver(info->form, REQ_RIGHT_CHAR); break; case ACTION_LEFT: form_driver(info->form, REQ_LEFT_CHAR); break; case ACTION_BEGIN: form_driver(info->form, REQ_BEG_LINE); break; case ACTION_END: form_driver(info->form, REQ_END_LINE); break; case ACTION_DELETE: form_driver(info->form, REQ_DEL_CHAR); break; case ACTION_BACKSPACE: form_driver(info->form, REQ_DEL_PREV); break; case ACTION_CLEAR: form_driver(info->form, REQ_CLR_FIELD); break; case ACTION_SELECT: switch (field_idx) { case FLD_SAVE_ALL: info->savemode = SAVE_ALL; break; case FLD_SAVE_SELECTED: info->savemode = SAVE_SELECTED; break; case FLD_SAVE_DISPLAYED: info->savemode = SAVE_DISPLAYED; break; case FLD_SAVE_MESSAGE: info->savemode = SAVE_MESSAGE; break; case FLD_SAVE_PCAP: info->saveformat = SAVE_PCAP; break; case FLD_SAVE_PCAP_RTP: info->saveformat = SAVE_PCAP_RTP; break; case FLD_SAVE_TXT: info->saveformat = SAVE_TXT; break; case FLD_SAVE_FILE: form_driver(info->form, key); break; default: break; } break; case ACTION_CONFIRM: if (field_idx != FLD_SAVE_CANCEL) { save_to_file(ui); } ui_destroy(ui); return KEY_HANDLED; default: // Parse next action continue; } // This panel has handled the key successfully break; } // Validate all input data form_driver(info->form, REQ_VALIDATION); // Change background and cursor of "button fields" set_field_back(info->fields[FLD_SAVE_SAVE], A_NORMAL); set_field_back(info->fields[FLD_SAVE_CANCEL], A_NORMAL); curs_set(1); // Change current field background field_idx = field_index(current_field(info->form)); if (field_idx == FLD_SAVE_SAVE || field_idx == FLD_SAVE_CANCEL) { set_field_back(info->fields[field_idx], A_REVERSE); curs_set(0); } // Return if this panel has handled or not the key return (action == ERR) ? KEY_NOT_HANDLED : KEY_HANDLED; }
int filter_handle_key(ui_t *ui, int key) { int field_idx; char field_value[MAX_SETTING_LEN]; int action = -1; // Get panel information filter_info_t *info = filter_info(ui); // Get current field id field_idx = field_index(current_field(info->form)); // Get current field value. // We trim spaces with sscanf because and empty field is stored as // space characters memset(field_value, 0, sizeof(field_value)); strcpy(field_value, field_buffer(current_field(info->form), 0)); strtrim(field_value); // Check actions for this key while ((action = key_find_action(key, action)) != ERR) { // Check if we handle this action switch (action) { case ACTION_PRINTABLE: // If this is a normal character on input field, print it if (field_idx == FLD_FILTER_SIPFROM || field_idx == FLD_FILTER_SIPTO || field_idx == FLD_FILTER_SRC || field_idx == FLD_FILTER_DST || field_idx == FLD_FILTER_PAYLOAD) { form_driver(info->form, key); break; } continue; case ACTION_NEXT_FIELD: form_driver(info->form, REQ_NEXT_FIELD); form_driver(info->form, REQ_END_LINE); break; case ACTION_PREV_FIELD: form_driver(info->form, REQ_PREV_FIELD); form_driver(info->form, REQ_END_LINE); break; case ACTION_RIGHT: form_driver(info->form, REQ_RIGHT_CHAR); break; case ACTION_LEFT: form_driver(info->form, REQ_LEFT_CHAR); break; case ACTION_BEGIN: form_driver(info->form, REQ_BEG_LINE); break; case ACTION_END: form_driver(info->form, REQ_END_LINE); break; case ACTION_CLEAR: form_driver(info->form, REQ_CLR_FIELD); break; case KEY_DC: form_driver(info->form, REQ_DEL_CHAR); break; case ACTION_DELETE: form_driver(info->form, REQ_DEL_CHAR); break; case ACTION_BACKSPACE: if (strlen(field_value) > 0) form_driver(info->form, REQ_DEL_PREV); break; case ACTION_SELECT: switch (field_idx) { case FLD_FILTER_REGISTER: case FLD_FILTER_INVITE: case FLD_FILTER_SUBSCRIBE: case FLD_FILTER_NOTIFY: case FLD_FILTER_INFO: case FLD_FILTER_OPTIONS: case FLD_FILTER_PUBLISH: case FLD_FILTER_MESSAGE: case FLD_FILTER_REFER: case FLD_FILTER_UPDATE: if (field_value[0] == '*') { form_driver(info->form, REQ_DEL_CHAR); } else { form_driver(info->form, '*'); } break; case FLD_FILTER_CANCEL: ui_destroy(ui); return KEY_HANDLED; case FLD_FILTER_FILTER: filter_save_options(ui); ui_destroy(ui); return KEY_HANDLED; } break; case ACTION_CONFIRM: if (field_idx != FLD_FILTER_CANCEL) filter_save_options(ui); ui_destroy(ui); return KEY_HANDLED; default: // Parse next action continue; } // This panel has handled the key successfully break; } // Validate all input data form_driver(info->form, REQ_VALIDATION); // Change background and cursor of "button fields" set_field_back(info->fields[FLD_FILTER_FILTER], A_NORMAL); set_field_back(info->fields[FLD_FILTER_CANCEL], A_NORMAL); curs_set(1); // Change current field background field_idx = field_index(current_field(info->form)); if (field_idx == FLD_FILTER_FILTER || field_idx == FLD_FILTER_CANCEL) { set_field_back(info->fields[field_idx], A_REVERSE); curs_set(0); } // Return if this panel has handled or not the key return (action == ERR) ? KEY_NOT_HANDLED : KEY_HANDLED; }