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; }
void ui_gtk_parse_arg(int argc, char *argv[]) { char c; /* Clear of ui_main_data not needed */ // memset (&ui_main_data, 0, sizeof(ui_main_data_t)); /* Set some default initialization value for the IP address */ ui_main_data.ip_entry_init = "127.0.0.1"; ui_main_data.port_entry_init = "10006"; /* Set default log level to at least warning level messages */ ui_main_data.log_flags = (G_LOG_LEVEL_MASK & (~(G_LOG_LEVEL_MESSAGE | G_LOG_LEVEL_INFO | G_LOG_LEVEL_DEBUG))); while ((c = getopt (argc, argv, "d:f:hi:l:m:p:")) != -1) { switch (c) { case 'd': ui_main_data.dissect_file_name = malloc (strlen (optarg) + 1); if (ui_main_data.dissect_file_name != NULL) { strcpy (ui_main_data.dissect_file_name, optarg); } break; case 'f': ui_main_data.filters_file_name = malloc (strlen (optarg) + 1); if (ui_main_data.filters_file_name != NULL) { strcpy (ui_main_data.filters_file_name, optarg); } break; case 'h': ui_help (); exit (0); break; case 'i': ui_main_data.ip_entry_init = optarg; break; case 'l': { GLogLevelFlags log_flag; log_flag = 1 << atoi(optarg); if (log_flag < G_LOG_LEVEL_ERROR) { log_flag = G_LOG_LEVEL_ERROR; } else { if (log_flag > G_LOG_LEVEL_DEBUG) { log_flag = G_LOG_LEVEL_DEBUG; } } ui_main_data.log_flags = ((log_flag << 1) - 1) & G_LOG_LEVEL_MASK; break; } case 'm': ui_main_data.messages_file_name = malloc (strlen (optarg) + 1); if (ui_main_data.messages_file_name != NULL) { strcpy (ui_main_data.messages_file_name, optarg); } break; case 'p': ui_main_data.port_entry_init = optarg; break; default: ui_help (); exit (-1); break; } } }
void ui ( void ) { // main menu uint8_t selected ( 1 ); uint8_t defaultHeight ( 5 ); uint8_t defaultWidth ( 5 ); uint8_t defaultAlignWinSize ( 5 ); uint8_t defaultAlignWinTotal ( 1 ); uint8_t defaultAI_prof ( 3 ); int32_t Key; uint8_t row , col; while ( true ) { clear (); getmaxyx ( stdscr , row , col ); if ( selected < 1 ) selected = 1; if ( selected > 3 ) selected = 3; attron ( A_BOLD ); mvprintw ( row / 4 , ( col - STR_TITLE_GAME.length () + 1 ) / 2 , STR_TITLE_GAME.c_str () ); mvprintw ( ( row / 2 ) + ( ( selected - 1 ) * 2 ) , 5 * col / 20 , STR_ARROW_RIGHT.c_str () ); mvprintw ( ( row / 2 ) + ( ( selected - 1 ) * 2 ) , 15 * col / 20 , STR_ARROW_LEFT.c_str () ); mvprintw ( 2 , 2 , STR_HELP.c_str () ); attroff ( A_BOLD ); mvprintw ( row / 2 , ( col - STR_PLAY.length () + 1 ) / 2 , STR_PLAY.c_str () ); mvprintw ( ( row / 2 ) + 2 , ( col - STR_OPTIONS.length () + 1 ) / 2 , STR_OPTIONS.c_str () ); mvprintw ( ( row / 2 ) + 4 , ( col - STR_EXIT.length () + 1 ) / 2 , STR_EXIT.c_str () ); refresh(); Key = getch (); if ( Key == KEY_DOWN ) selected += 1; if ( Key == KEY_UP ) selected -= 1; if ( Key == ENTER ) { if ( selected == 1 ) { play_menu ( defaultHeight , defaultWidth , defaultAlignWinSize , defaultAlignWinTotal , defaultAI_prof ); } if ( selected == 2 ) options ( defaultHeight , defaultWidth , defaultAlignWinSize , defaultAlignWinTotal , defaultAI_prof ); if ( selected == 3 ) { if ( warnExit () ) { endwin (); return; } } } if ( Key == KEY_P ) { play_menu ( defaultHeight , defaultWidth , defaultAlignWinSize , defaultAlignWinTotal , defaultAI_prof ); } if ( Key == KEY_O ) options ( defaultHeight , defaultWidth , defaultAlignWinSize , defaultAlignWinTotal , defaultAI_prof ); if ( Key == ESC || Key == KEY_E ) { if ( warnExit () ) { endwin (); return; } } if ( Key == KEY_F ( 5 ) ) ui_help (); } }