void get_commands() { int ch; for(;;) { can_resize = TRUE; /* it's safe to resize now */ if(!opt_get_bool(BOOL_SHOW_CURSOR)) hide_cursor(); if(should_resize) refresh_screen(); ch = getch(); if(!opt_get_bool(BOOL_SHOW_CURSOR)) show_cursor(); can_resize = FALSE; /* it's not safe to resize anymore */ switch(ch) { case 'q': return; case 'Q': quit_abook(QUIT_DONTSAVE); break; case 'P': print_stderr(selected_items() ? -1 : list_get_curitem()); return; case '?': display_help(HELP_MAIN); refresh_screen(); break; case 'a': add_item(); break; case '\r': edit_item(-1); break; case KEY_DC: case 'd': case 'r': ui_remove_items(); break; case 'D': duplicate_item(); break; case 12: refresh_screen(); break; case 'k': case KEY_UP: scroll_up(); break; case 'j': case KEY_DOWN: scroll_down(); break; case 'K': case KEY_PPAGE: page_up(); break; case 'J': case KEY_NPAGE: page_down(); break; case 'g': case KEY_HOME: goto_home(); break; case 'G': case KEY_END: goto_end(); break; case 'w': save_database(); break; case 'l': ui_read_database(); break; case 'i': import_database(); break; case 'e': export_database(); break; case 'C': ui_clear_database(); break; case 'o': ui_open_datafile(); break; case 's': sort_by_field("name"); break; case 'S': sort_surname(); break; case 'F': sort_by_field(NULL); break; case '/': ui_find(0); break; case '\\': ui_find(1); break; case ' ': if(list_get_curitem() >= 0) { list_invert_curitem_selection(); ui_print_number_of_items(); refresh_list(); } break; case '+': select_all(); refresh_list(); break; case '-': select_none(); refresh_list(); break; case '*': invert_selection(); refresh_list(); break; case 'A': move_curitem(MOVE_ITEM_UP); break; case 'Z': move_curitem(MOVE_ITEM_DOWN); break; case 'm': launch_mutt(selected_items() ? -1 : list_get_curitem()); refresh_screen(); break; case 'p': ui_print_database(); break; case 'v': launch_wwwbrowser(list_get_curitem()); refresh_screen(); break; case 'H': launch_callpgm(list_get_curitem(), 'H'); refresh_screen(); break; case 'W': launch_callpgm(list_get_curitem(), 'W'); refresh_screen(); break; case 'M': launch_callpgm(list_get_curitem(), 'M'); refresh_screen(); break; } } }
void item::init() { std::pair<self_ref_map::iterator,bool> res=data->self_refs.insert(self_ref_map::value_type(relation_ptr->get_name(),this)); if(!res.second) throw duplicate_item(); }