⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xo-callbacks.c

📁 高手写的手写代码!欢迎大家下载,共同交流,如果有问题,请联系我!谢谢!
💻 C
📖 第 1 页 / 共 5 页
字号:
      if (it->type == ITEM_TEXT && it->canvas_item != NULL)        gnome_canvas_item_set(it->canvas_item,           "fill-color-rgba", it->brush.color_rgba, NULL);    }  }  else if (redo->type == ITEM_TEXT_EDIT) {    tmpstr = redo->str;    redo->str = redo->item->text;    redo->item->text = tmpstr;    gnome_canvas_item_set(redo->item->canvas_item, "text", tmpstr, NULL);    update_item_bbox(redo->item);  }  else if (redo->type == ITEM_TEXT_ATTRIB) {    tmpstr = redo->str;    redo->str = redo->item->font_name;    redo->item->font_name = tmpstr;    tmp_x = redo->val_x;    redo->val_x = redo->item->font_size;    redo->item->font_size = tmp_x;    g_memmove(&tmp_brush, redo->brush, sizeof(struct Brush));    g_memmove(redo->brush, &(redo->item->brush), sizeof(struct Brush));    g_memmove(&(redo->item->brush), &tmp_brush, sizeof(struct Brush));    gnome_canvas_item_set(redo->item->canvas_item,       "fill-color-rgba", redo->item->brush.color_rgba, NULL);    update_text_item_displayfont(redo->item);    update_item_bbox(redo->item);  }    // move item from redo to undo stack  u = redo;  redo = redo->next;  u->next = undo;  undo = u;  ui.saved = FALSE;  update_undo_redo_enabled();  if (u->multiop & MULTIOP_CONT_REDO) on_editRedo_activate(NULL,NULL); // loop}voidon_editCut_activate                    (GtkMenuItem     *menuitem,                                        gpointer         user_data){  end_text();  reset_focus();  selection_to_clip();  selection_delete();}voidon_editCopy_activate                   (GtkMenuItem     *menuitem,                                        gpointer         user_data){  end_text();  reset_focus();  selection_to_clip();}voidon_editPaste_activate                  (GtkMenuItem     *menuitem,                                        gpointer         user_data){  end_text();  reset_focus();  clipboard_paste();}voidon_editDelete_activate                 (GtkMenuItem     *menuitem,                                        gpointer         user_data){  end_text();  reset_focus();  selection_delete();}voidon_viewContinuous_activate             (GtkMenuItem     *menuitem,                                        gpointer         user_data){  GtkAdjustment *v_adj;  double yscroll;  struct Page *pg;  reset_focus();  if (!gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM (menuitem))) return;  if (ui.view_continuous) return;  ui.view_continuous = TRUE;  v_adj = gtk_layout_get_vadjustment(GTK_LAYOUT(canvas));  pg = ui.cur_page;  yscroll = gtk_adjustment_get_value(v_adj) - pg->voffset*ui.zoom;  update_page_stuff();  gtk_adjustment_set_value(v_adj, yscroll + pg->voffset*ui.zoom);  // force a refresh  gnome_canvas_set_pixels_per_unit(canvas, ui.zoom);}voidon_viewOnePage_activate                (GtkMenuItem     *menuitem,                                        gpointer         user_data){  GtkAdjustment *v_adj;  double yscroll;    reset_focus();  if (!gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM (menuitem))) return;  if (!ui.view_continuous) return;  ui.view_continuous = FALSE;  v_adj = gtk_layout_get_vadjustment(GTK_LAYOUT(canvas));  yscroll = gtk_adjustment_get_value(v_adj) - ui.cur_page->voffset*ui.zoom;  update_page_stuff();  gtk_adjustment_set_value(v_adj, yscroll + ui.cur_page->voffset*ui.zoom);  // force a refresh  gnome_canvas_set_pixels_per_unit(canvas, ui.zoom);}voidon_viewZoomIn_activate                 (GtkMenuItem     *menuitem,                                        gpointer         user_data){  reset_focus();  if (ui.zoom > MAX_ZOOM) return;  ui.zoom *= ui.zoom_step_factor;  gnome_canvas_set_pixels_per_unit(canvas, ui.zoom);  rescale_text_items();  rescale_bg_pixmaps();}voidon_viewZoomOut_activate                (GtkMenuItem     *menuitem,                                        gpointer         user_data){  reset_focus();  if (ui.zoom < MIN_ZOOM) return;  ui.zoom /= ui.zoom_step_factor;  gnome_canvas_set_pixels_per_unit(canvas, ui.zoom);  rescale_text_items();  rescale_bg_pixmaps();}voidon_viewNormalSize_activate             (GtkMenuItem     *menuitem,                                        gpointer         user_data){  reset_focus();  ui.zoom = DEFAULT_ZOOM;  gnome_canvas_set_pixels_per_unit(canvas, ui.zoom);  rescale_text_items();  rescale_bg_pixmaps();}voidon_viewPageWidth_activate              (GtkMenuItem     *menuitem,                                        gpointer         user_data){  reset_focus();  ui.zoom = (GTK_WIDGET(canvas))->allocation.width/ui.cur_page->width;  gnome_canvas_set_pixels_per_unit(canvas, ui.zoom);  rescale_text_items();  rescale_bg_pixmaps();}voidon_viewFirstPage_activate              (GtkMenuItem     *menuitem,                                        gpointer         user_data){  end_text();  reset_focus();  do_switch_page(0, TRUE, FALSE);}voidon_viewPreviousPage_activate           (GtkMenuItem     *menuitem,                                        gpointer         user_data){  end_text();  reset_focus();  if (ui.pageno == 0) return;  do_switch_page(ui.pageno-1, TRUE, FALSE);}voidon_viewNextPage_activate               (GtkMenuItem     *menuitem,                                        gpointer         user_data){  end_text();  reset_focus();  if (ui.pageno == journal.npages-1) { // create a page at end    if (page_ops_forbidden()) return;    on_journalNewPageEnd_activate(menuitem, user_data);    return;  }  do_switch_page(ui.pageno+1, TRUE, FALSE);}voidon_viewLastPage_activate               (GtkMenuItem     *menuitem,                                        gpointer         user_data){  end_text();  reset_focus();  do_switch_page(journal.npages-1, TRUE, FALSE);}voidon_viewShowLayer_activate              (GtkMenuItem     *menuitem,                                        gpointer         user_data){  end_text();  reset_focus();  if (ui.layerno == ui.cur_page->nlayers-1) return;  reset_selection();  ui.layerno++;  ui.cur_layer = g_list_nth_data(ui.cur_page->layers, ui.layerno);  gnome_canvas_item_show(GNOME_CANVAS_ITEM(ui.cur_layer->group));  update_page_stuff();}voidon_viewHideLayer_activate              (GtkMenuItem     *menuitem,                                        gpointer         user_data){  end_text();  reset_focus();  if (ui.layerno == -1) return;  reset_selection();  gnome_canvas_item_hide(GNOME_CANVAS_ITEM(ui.cur_layer->group));  ui.layerno--;  if (ui.layerno<0) ui.cur_layer = NULL;  else ui.cur_layer = g_list_nth_data(ui.cur_page->layers, ui.layerno);  update_page_stuff();}voidon_journalNewPageBefore_activate       (GtkMenuItem     *menuitem,                                        gpointer         user_data){  struct Page *pg;  end_text();  reset_focus();  if (page_ops_forbidden()) return;  reset_selection();  pg = new_page(ui.cur_page);  journal.pages = g_list_insert(journal.pages, pg, ui.pageno);  journal.npages++;  do_switch_page(ui.pageno, TRUE, TRUE);    prepare_new_undo();  undo->type = ITEM_NEW_PAGE;  undo->val = ui.pageno;  undo->page = pg;}voidon_journalNewPageAfter_activate        (GtkMenuItem     *menuitem,                                        gpointer         user_data){  struct Page *pg;  end_text();  reset_focus();  if (page_ops_forbidden()) return;  reset_selection();  pg = new_page(ui.cur_page);  journal.pages = g_list_insert(journal.pages, pg, ui.pageno+1);  journal.npages++;  do_switch_page(ui.pageno+1, TRUE, TRUE);  prepare_new_undo();  undo->type = ITEM_NEW_PAGE;  undo->val = ui.pageno;  undo->page = pg;}voidon_journalNewPageEnd_activate          (GtkMenuItem     *menuitem,                                        gpointer         user_data){  struct Page *pg;  end_text();  reset_focus();  if (page_ops_forbidden()) return;  reset_selection();  pg = new_page((struct Page *)g_list_last(journal.pages)->data);  journal.pages = g_list_append(journal.pages, pg);  journal.npages++;  do_switch_page(journal.npages-1, TRUE, TRUE);  prepare_new_undo();  undo->type = ITEM_NEW_PAGE;  undo->val = ui.pageno;  undo->page = pg;}voidon_journalDeletePage_activate          (GtkMenuItem     *menuitem,                                        gpointer         user_data){  GList *layerlist, *itemlist;  struct Layer *l;  end_text();  reset_focus();  if (page_ops_forbidden()) return;  if (journal.npages == 1) return;  reset_selection();    prepare_new_undo();  undo->type = ITEM_DELETE_PAGE;  undo->val = ui.pageno;  undo->page = ui.cur_page;  // unmap all the canvas items    gtk_object_destroy(GTK_OBJECT(ui.cur_page->group));  ui.cur_page->group = NULL;  ui.cur_page->bg->canvas_item = NULL;  for (layerlist = ui.cur_page->layers; layerlist!=NULL; layerlist = layerlist->next) {    l = (struct Layer *)layerlist->data;    for (itemlist = l->items; itemlist!=NULL; itemlist = itemlist->next)      ((struct Item *)itemlist->data)->canvas_item = NULL;    l->group = NULL;  }    journal.pages = g_list_remove(journal.pages, ui.cur_page);  journal.npages--;  if (ui.pageno == journal.npages) ui.pageno--;  ui.cur_page = NULL;     // so do_switch_page() won't try to remap the layers of the defunct page  do_switch_page(ui.pageno, TRUE, TRUE);}voidon_journalNewLayer_activate            (GtkMenuItem     *menuitem,                                        gpointer         user_data){  struct Layer *l;    end_text();  reset_focus();  reset_selection();  l = g_new(struct Layer, 1);  l->items = NULL;  l->nitems = 0;  l->group = (GnomeCanvasGroup *) gnome_canvas_item_new(    ui.cur_page->group, gnome_canvas_group_get_type(), NULL);  lower_canvas_item_to(ui.cur_page->group, GNOME_CANVAS_ITEM(l->group),    (ui.cur_layer!=NULL)?(GNOME_CANVAS_ITEM(ui.cur_layer->group)):(ui.cur_page->bg->canvas_item));  ui.cur_page->layers = g_list_insert(ui.cur_page->layers, l, ui.layerno+1);  ui.cur_layer = l;  ui.layerno++;  ui.cur_page->nlayers++;  update_page_stuff();  prepare_new_undo();  undo->type = ITEM_NEW_LAYER;  undo->val = ui.layerno;  undo->layer = l;  undo->page = ui.cur_page;  }voidon_journalDeleteLayer_activate         (GtkMenuItem     *menuitem,                                        gpointer         user_data){  GList *list;    end_text();  reset_focus();  if (ui.cur_layer == NULL) return;  reset_selection();  prepare_new_undo();  undo->type = ITEM_DELETE_LAYER;  undo->val = ui.layerno;  undo->layer = ui.cur_layer;  undo->layer2 = NULL;  undo->page = ui.cur_page;  // delete all the canvas items  gtk_object_destroy(GTK_OBJECT(ui.cur_layer->group));  ui.cur_layer->group = NULL;  for (list=ui.cur_layer->items; list!=NULL; list=list->next)    ((struct Item *)list->data)->canvas_item = NULL;  ui.cur_page->layers = g_list_remove(ui.cur_page->layers, ui.cur_layer);  if (ui.cur_page->nlayers>=2) {    ui.cur_page->nlayers--;    ui.layerno--;    if (ui.layerno<0) ui.cur_layer = NULL;    else ui.cur_layer = (struct Layer *)g_list_nth_data(ui.cur_page->layers, ui.layerno);  }   else { // special case: can't remove the last layer    ui.cur_layer = g_new(struct Layer, 1);    ui.cur_layer->items = NULL;    ui.cur_layer->nitems = 0;    ui.cur_layer->group = (GnomeCanvasGroup *) gnome_canvas_item_new(

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -