Example #1
0
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();
    }
}
Example #2
0
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()));
}
Example #3
0
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;
	}
}
Example #4
0
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;
}
Example #5
0
static List *
menu_create_item (List *products)
{
	return edit_item (products, NULL);
}
Example #6
0
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;
        }
    }
}
Example #7
0
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);
}
Example #8
0
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;
}
Example #9
0
/**
@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;
}
Example #10
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);
    }
}
Example #11
0
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]);
}