static void place_lib_object(int x, int y, unsigned int shift) { F_compound *this_c; canvas_leftbut_proc = null_proc; canvas_middlebut_proc = null_proc; canvas_rightbut_proc = null_proc; canvas_locmove_proc = null_proc; canvas_ref_proc = null_proc; put_draw(ERASE); clean_up(); if (draw_box) translate_compound(new_c,cur_x,cur_y); /* remove it from the depths because it will be added when it is put in the main list */ remove_compound_depth(new_c); add_compound(new_c); set_modifiedflag(); redisplay_compound(new_c); if (shift) { /* temporarily turn off library place mode so we can edit the object just placed */ canvas_kbd_proc = null_proc; clear_mousefun(); set_mousefun("","","", "", "", ""); turn_off_current(); set_cursor(arrow_cursor); edit_remember_lib_mode = True; this_c = new_c; edit_item(this_c, O_COMPOUND, 0, 0); } else { put_selected(); } }
void ItemList::init_actions() { PasspotPlugin *plugin = dynamic_cast<PasspotPlugin*>(get_plugin().pointer()); assert(NULL != plugin); // add article _new_action = new QAction(plugin->load_icon("passpot/add_item"), tr("添加(&A)"), this); _new_action->setStatusTip(tr("添加新记录")); _new_action->setToolTip(tr("添加新记录")); connect(_new_action, SIGNAL(triggered()), this, SLOT(add_item())); _edit_action = new QAction(plugin->load_icon("passpot/edit_item"), tr("编辑(&E)"), this); _edit_action->setStatusTip(tr("编辑当前记录")); _edit_action->setToolTip(tr("编辑当前记录")); connect(_edit_action, SIGNAL(triggered()), this, SLOT(edit_item())); _move_to_trash_action = new QAction(plugin->load_icon("passpot/move_to_trash"), tr("移动到回收站(&T)"), this); _move_to_trash_action->setStatusTip(tr("将当前记录移动到回收站")); _move_to_trash_action->setToolTip(tr("将当前记录移动到回收站")); connect(_move_to_trash_action, SIGNAL(triggered()), this, SLOT(move_to_trash())); // delete article _delete_action = new QAction(plugin->load_icon("passpot/delete"), tr("删除(&D)"), this); _delete_action->setStatusTip(tr("永久删除当前记录")); _delete_action->setToolTip(tr("永久删除当前记录")); connect(_delete_action, SIGNAL(triggered()), this, SLOT(delete_item())); }
static List * menu_edit_item (List *products) { Product *product; if (products == NULL) { printf ("There are no products to edit\n"); return products; } product = prompt_for_id (products, "Enter the ID of the product to edit: "); view_product (product); if (prompt_e_d ("Edit this product")) { return edit_item (products, product); } else { return products; } }
static int main_with_input (const char *cmd, const char *id_str) { unsigned int id; List *products; Product *product; int error = 0; products = db_load_products (); id = (unsigned int) atoi (id_str); product = product_list_find (products, id); if (product == NULL && toupper (*cmd) != 'N' && toupper (*cmd) != 'L') { printf ("Product with ID %d does not exist\n", id); error = 1; } if (product != NULL && toupper (*cmd) == 'N') { printf ("Product with ID %d already exists\n", id); error = 1; } if (error) { list_foreach (products, LIST_FUNC (product_free)); list_free (products); return 1; } switch (toupper (*cmd)) { case 'N': product = product_new (id, NULL, 0, 0, 0); products = list_append (products, product); /* fall through */ case 'E': products = edit_item (products, product); db_write_products (products); break; case 'V': view_product (product); break; case 'D': view_product (product); if (prompt_y_n ("Delete this item")) { products = list_remove (products, product); product_free (product); db_write_products (products); } break; case 'L': menu_list_items (products); break; } list_foreach (products, LIST_FUNC (product_free)); list_free (products); return 0; }
static List * menu_create_item (List *products) { return edit_item (products, NULL); }
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 CL_ListView_Impl::on_mouse_lbutton_down(CL_GUIMessage_Input &input, CL_InputEvent &input_event) { listview->set_focus(); CL_Point pos = input_event.mouse_pos; pos_mouse_drag_start = pos; lineedit->set_visible(false); listview->set_focus(); if (edited_item.is_item()) { edited_item.impl->selected = true; listview->request_repaint(); edited_item = CL_ListViewItem(); } ListViewShownItem si = layout->get_item_at(pos); if (si.valid == false) return; // Check if opener rect is clicked. if (si.rect_opener.contains(pos)) { si.item.set_open(!si.item.is_open()); layout->invalidate(); listview->request_repaint(); update_scrollbar(); } // Check if icon or text is clicked. if (si.rect_text[0].contains(pos) || si.rect_icon.contains(pos)) { if (si.item.is_selected() && si.item.is_editable()) { edit_item(si); } else { if (multiple_selection && !si.item.is_selected()) { si.item.impl->selected = true; selection.append(si.item); if (!func_selection_changed.is_null()) func_selection_changed.invoke(selection); } else { if (!si.item.is_selected()) { selection.clear(); si.item.impl->selected = true; selection.append(si.item); if (!func_selection_changed.is_null()) func_selection_changed.invoke(selection); } } if (!si.item.is_open()) { si.item.set_open(true); layout->invalidate(); update_scrollbar(); } } listview->request_repaint(); } listview->capture_mouse(true); }
bool CL_ListView_Impl::on_keyboard_pressed(CL_InputEvent &event) { bool event_consumed = false; if (document_item.get_child_count() == 0) return event_consumed; if (event.id == CL_KEY_LEFT || event.id == CL_KEY_RIGHT || event.id == CL_KEY_UP || event.id == CL_KEY_DOWN) { event_consumed = true; // Ensure we have a selected item. if (selection.get_first().is_null()) { CL_ListViewItem item = document_item.get_first_child(); listview->set_selected(item, true); } CL_ListViewSelectedItem sel = selection.get_last(); CL_ListViewItem sel_item = sel.get_item(); CL_ListViewItem new_selected_item; if (event.id == CL_KEY_LEFT) { if (display_mode == listview_mode_details) { if (sel_item.has_children() && sel_item.is_open()) { sel_item.set_open(false); layout->invalidate(); update_scrollbar(); new_selected_item = sel_item; } else { new_selected_item = layout->get_neighbour(sel_item, CL_ListViewLayout::neighbour_left); } } else { new_selected_item = layout->get_neighbour(sel_item, CL_ListViewLayout::neighbour_left); } } else if (event.id == CL_KEY_RIGHT) { if (display_mode == listview_mode_details) { if (sel_item.has_children() && !sel_item.is_open()) { sel_item.set_open(true); layout->invalidate(); update_scrollbar(); new_selected_item = sel_item; } else { new_selected_item = layout->get_neighbour(sel_item, CL_ListViewLayout::neighbour_right); } } else { new_selected_item = layout->get_neighbour(sel_item, CL_ListViewLayout::neighbour_right); } } else if (event.id == CL_KEY_UP) { new_selected_item = layout->get_neighbour(sel_item, CL_ListViewLayout::neighbour_up); } else if (event.id == CL_KEY_DOWN) { new_selected_item = layout->get_neighbour(sel_item, CL_ListViewLayout::neighbour_down); } if (!event.ctrl) listview->set_selected(new_selected_item); else selection.append(new_selected_item); if (!layout->is_visible(new_selected_item)) { if (event.id == CL_KEY_UP || event.id == CL_KEY_LEFT) { int scroll_pos = scrollbar->get_position(); scroll_pos -= layout->get_row_height(); scrollbar->set_position(scroll_pos); on_scroll(); } else { int scroll_pos = scrollbar->get_position(); scroll_pos += layout->get_row_height(); scrollbar->set_position(scroll_pos); on_scroll(); } } } else if (event.id == CL_KEY_F2) { std::vector<ListViewShownItem> &items = layout->get_shown_items(); std::vector<ListViewShownItem>::iterator it; for (it = items.begin(); it != items.end(); ++it) { ListViewShownItem &si = (*it); if (si.is_null()) continue; if (si.item.is_null()) continue; if (si.item.is_selected()) edit_item(*it); } } else if (event.type == CL_InputEvent::pressed && event.id == CL_KEY_HOME) { scrollbar->set_position(scrollbar->get_min()); on_scroll(); std::vector<ListViewShownItem> show_items = layout->get_shown_items(); if (!show_items.empty()) listview->set_selected(show_items[0].item, true); } else if (event.type == CL_InputEvent::pressed && event.id == CL_KEY_END) { scrollbar->set_position(scrollbar->get_max()); on_scroll(); std::vector<ListViewShownItem> show_items = layout->get_shown_items(); if (!show_items.empty()) listview->set_selected(show_items.back().item, true); } else if (event.type == CL_InputEvent::pressed && event.id == CL_KEY_PRIOR) { // PageUp - selects the first item of the visible items if another item is selected. // If first item already selected, do a page up. std::vector<ListViewShownItem> show_items = layout->get_shown_items(); if (show_items.size() > 1) { if (selection.get_first().get_item() != show_items[0].item) listview->set_selected(show_items[0].item, true); else { scrollbar->set_position(scrollbar->get_position()-scrollbar->get_page_step()); on_scroll(); std::vector<ListViewShownItem> show_items = layout->get_shown_items(); if (!show_items.empty()) listview->set_selected(show_items[0].item, true); } } } else if (event.type == CL_InputEvent::pressed && event.id == CL_KEY_NEXT) { // PageDown - selects the last item of the visible items if last item is selected. // If last item is already selected, do a page down. std::vector<ListViewShownItem> show_items = layout->get_shown_items(); if (show_items.size() > 1) { if (selection.get_first().get_item() != show_items.back().item) listview->set_selected(show_items.back().item, true); else { scrollbar->set_position(scrollbar->get_position() + scrollbar->get_page_step()); on_scroll(); std::vector<ListViewShownItem> show_items = layout->get_shown_items(); if (!show_items.empty()) listview->set_selected(show_items.back().item, true); } } } else { if (!func_key_pressed.is_null()) func_key_pressed.invoke(event); } return event_consumed; }
/** @brief Runs the program and calls funcitons from the headerfile lagerhantering.h @return always 0 */ int main() { bool should_continue = true; db_t db1 = malloc(sizeof(struct db_t)); db1->amount = 0; db_t backup; int i = 0; while (should_continue) { print_menu(); switch (ask_char_question("What do you want to do?", "AaRrEeUuPpQq")){ // Add case 'a': puts("You chose 'Add'"); if (i > 0){ free_db(backup); } backup = db_copy(db1); i++; add_item(db1); break; // Remove case 'r': puts("You chose 'Remove'"); if(i>0){ free_db(backup); } backup = db_copy(db1); i++; remove_item(db1); break; // Edit case 'e': puts("You chose 'Edit'"); if (i>0){ free_db(backup); } backup = db_copy(db1); i++; edit_item(db1); break; // Undo case 'u': puts("You chose 'Undo'"); if(i>0){ free_db(db1); } db1 = db_copy(backup); i++; // backup = db_copy(db1); break; // Print case 'p': puts("You chose 'Print'"); print_db(db1); break; // Quit case 'q': if (ask_char_question("Do you wish to exit the programme?", "YyNn") == 'y') { puts("Goodbye!"); should_continue = false; free_db(db1); if(i > 0){ free_db(backup); } /* if(db1 != NULL){ free_db(db1); } else free(db1); if (backup != NULL) { free_db(backup); } else if(backup == NULL){ free(backup); }*/ } break; default: puts("Did not enter any valid command, please try again.\n"); } } return 0; }
// keys_edit: Keys for the 2d editor // ------------------------------ >> void keys_edit() { if (!map.opened) return; // Scroll up if (binds.pressed("view_up")) { yoff += ((MAJOR_UNIT / (int)zoom)) + 1; force_map_redraw(true, true); } // Scroll down if (binds.pressed("view_down")) { yoff -= ((MAJOR_UNIT / (int)zoom)) + 1; force_map_redraw(true, true); } // Scroll left if (binds.pressed("view_left")) { xoff += ((MAJOR_UNIT / (int)zoom)) + 1; force_map_redraw(true, true); } // Scroll right if (binds.pressed("view_right")) { xoff -= ((MAJOR_UNIT / (int)zoom)) + 1; force_map_redraw(true, true); } // Zoom in if (binds.pressed("view_zoomin")) view_zoom(true); // Zoom out if (binds.pressed("view_zoomout")) view_zoom(false); // Center view on mouse if (binds.pressed("view_mousecenter")) { xoff = -m_x(mouse.x) / MAJOR_UNIT; yoff = -m_y(mouse.y) / MAJOR_UNIT; force_map_redraw(true, true); } // Set offsets to 0, 0 if (binds.pressed("view_origin")) { xoff = yoff = 0; force_map_redraw(true, true); } // Vertices mode if (binds.pressed("mode_vertices")) change_edit_mode(0); // Linedefs mode if (binds.pressed("mode_linedefs")) change_edit_mode(1); // Sectors mode if (binds.pressed("mode_sectors")) change_edit_mode(2); // Things mode if (binds.pressed("mode_things")) change_edit_mode(3); // Change mode if (binds.pressed("mode_change")) cycle_edit_mode(); // Increase grid size if (binds.pressed("view_increasegrid")) { increase_grid(); force_map_redraw(false, true); } // Decrease grid size if (binds.pressed("view_decreasegrid")) { decrease_grid(); force_map_redraw(false, true); } // Clear selection if (binds.pressed("edit_clearselection")) { clear_selection(); force_map_redraw(true); } // Delete item if (binds.pressed("edit_deleteitem")) { if (edit_mode == 0) delete_vertex(); if (edit_mode == 1) delete_line(); if (edit_mode == 2) delete_sector(); if (edit_mode == 3) delete_thing(); force_map_redraw(true); } // Create item if (binds.pressed("edit_createitem")) { if (edit_mode == 0) { if (!selection()) create_vertex(); else create_lines(false); force_map_redraw(true); return; } if (edit_mode == 1) { if (selection()) create_sector(); force_map_redraw(true); return; } if (edit_mode == 3) { create_thing(); force_map_redraw(true); return; } binds.clear("edit_createitem"); } // Sector height quick changes (8 units) if (binds.pressed("sector_upfloor8")) { if (edit_mode == 2) sector_changeheight(true, 8); } if (binds.pressed("sector_downfloor8")) { if (edit_mode == 2) sector_changeheight(true, -8); } if (binds.pressed("sector_upceil8")) { if (edit_mode == 2) sector_changeheight(false, 8); } if (binds.pressed("sector_downceil8")) { if (edit_mode == 2) sector_changeheight(false, -8); } if (binds.pressed("sector_upboth8")) { if (edit_mode == 2) { sector_changeheight(true, 8); sector_changeheight(false, 8); } } if (binds.pressed("sector_downboth8")) { if (edit_mode == 2) { sector_changeheight(true, -8); sector_changeheight(false, -8); } } // Sector height quick changes (1 unit) if (binds.pressed("sector_upfloor")) { if (edit_mode == 2) sector_changeheight(true, 1); } if (binds.pressed("sector_downfloor")) { if (edit_mode == 2) sector_changeheight(true, -1); } if (binds.pressed("sector_upceil")) { if (edit_mode == 2) sector_changeheight(false, 1); } if (binds.pressed("sector_downceil")) { if (edit_mode == 2) sector_changeheight(false, -1); } if (binds.pressed("sector_upboth")) { if (edit_mode == 2) { sector_changeheight(true, 1); sector_changeheight(false, 1); } } if (binds.pressed("sector_downboth")) { if (edit_mode == 2) { sector_changeheight(true, -1); sector_changeheight(false, -1); } } // Flip line if (binds.pressed("line_flip")) { if (edit_mode == 1) line_flip(true, false); force_map_redraw(true); } // Swap line sides if (binds.pressed("line_swapsides")) { if (edit_mode == 1) line_flip(false, true); force_map_redraw(true); } // Flip both line direction and sides if (binds.pressed("line_flipboth")) { if (edit_mode == 1) line_flip(true, true); force_map_redraw(true); } // Begin line draw if (binds.pressed("line_begindraw")) { if (!line_draw) line_draw = true; binds.clear("line_begindraw"); } // Begin rectangle draw if (binds.pressed("line_begindraw_rect")) { if (!line_draw) { line_draw = true; sel_box.set(mouse.x, mouse.y, mouse.x, mouse.y); } binds.clear("line_begindraw_rect"); } // Undo if (binds.pressed("edit_undo")) { undo(); clear_selection(); hilight_item = -1; force_map_redraw(true, true); //map_changelevel(3); map.change_level(MC_NODE_REBUILD); binds.clear("edit_undo"); } // Edit item if (binds.pressed("edit_edititem")) { edit_item(); binds.clear("edit_edititem"); } // Merge sectors if (binds.pressed("sector_merge")) { sector_merge(false); binds.clear("sector_merge"); } // Join sectors if (binds.pressed("sector_join")) { sector_merge(true); binds.clear("sector_join"); } if (binds.pressed("view_3dmode")) { binds.clear("view_3dmode"); binds.clear("3d_exit"); start_3d_mode(); } if (binds.pressed("open_console")) { binds.clear("open_console"); popup_console(); } if (binds.pressed("copy")) { binds.clear("copy"); clipboard.Copy(); } if (binds.pressed("paste")) { binds.clear("paste"); paste_mode = true; clear_selection(); } if (binds.pressed("cancel_paste")) { binds.clear("cancel_paste"); paste_mode = false; force_map_redraw(true, false); } }
void CAllDlg::edit_row(int row, CString* contents, int n_col) { for(int i=0;i<n_col;i++) edit_item(row,i,contents[i]); }