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

📄 xo-misc.c

📁 高手写的手写代码!欢迎大家下载,共同交流,如果有问题,请联系我!谢谢!
💻 C
📖 第 1 页 / 共 5 页
字号:
      undo->bg = (struct Background *)g_memdup(pg->bg, sizeof(struct Background));      undo->bg->canvas_item = NULL;      pg->bg->color_no = color;      pg->bg->color_rgba = predef_bgcolors_rgba[color];      update_canvas_bg(pg);    }    if (!ui.bg_apply_all_pages) break;  }  if (hasdone) undo->multiop -= MULTIOP_CONT_REDO;}void process_paperstyle_activate(GtkMenuItem *menuitem, int style){  struct Page *pg;  GList *pglist;  gboolean hasdone, must_upd;  if (!gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM (menuitem)))    return;  if (ui.bg_apply_all_pages)    gtk_check_menu_item_set_active(      GTK_CHECK_MENU_ITEM(GET_COMPONENT("paperstyleNA")), TRUE);  pg = ui.cur_page;  hasdone = FALSE;  must_upd = FALSE;  for (pglist = journal.pages; pglist!=NULL; pglist = pglist->next) {    if (ui.bg_apply_all_pages) pg = (struct Page *)pglist->data;    if (pg->bg->type != BG_SOLID || pg->bg->ruling != style) {      prepare_new_undo();      undo->type = ITEM_NEW_BG_ONE;      if (hasdone) undo->multiop |= MULTIOP_CONT_UNDO;      undo->multiop |= MULTIOP_CONT_REDO;      hasdone = TRUE;      undo->page = pg;      undo->bg = (struct Background *)g_memdup(pg->bg, sizeof(struct Background));      undo->bg->canvas_item = NULL;      if (pg->bg->type != BG_SOLID) {        pg->bg->type = BG_SOLID;        pg->bg->color_no = COLOR_WHITE;        pg->bg->color_rgba = predef_bgcolors_rgba[COLOR_WHITE];        pg->bg->filename = NULL;        pg->bg->pixbuf = NULL;        must_upd = TRUE;      }      pg->bg->ruling = style;      update_canvas_bg(pg);    }    if (!ui.bg_apply_all_pages) break;  }  if (hasdone) undo->multiop -= MULTIOP_CONT_REDO;  if (must_upd) update_page_stuff();}gboolean ok_to_close(void){  GtkWidget *dialog;  GtkResponseType response;  GList *pagelist;  if (ui.saved) return TRUE;  dialog = gtk_message_dialog_new(GTK_WINDOW (winMain), GTK_DIALOG_DESTROY_WITH_PARENT,    GTK_MESSAGE_WARNING, GTK_BUTTONS_YES_NO, "Save changes to '%s'?",    (ui.filename!=NULL) ? ui.filename:"Untitled");  gtk_dialog_add_button(GTK_DIALOG (dialog), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);  response = gtk_dialog_run(GTK_DIALOG (dialog));  gtk_widget_destroy(dialog);  if (response == GTK_RESPONSE_CANCEL || response == GTK_RESPONSE_DELETE_EVENT)     return FALSE; // aborted  if (response == GTK_RESPONSE_YES) {    on_fileSave_activate(NULL, NULL);    if (!ui.saved) return FALSE; // if save failed, then we abort  }  return TRUE;}// test if we're still busy loading a PDF background filegboolean page_ops_forbidden(void){  return (bgpdf.status != STATUS_NOT_INIT && bgpdf.create_pages);}// send the focus back to the appropriate widgetvoid reset_focus(void){  if (ui.cur_item_type == ITEM_TEXT)    gtk_widget_grab_focus(ui.cur_item->widget);  else    gtk_widget_grab_focus(GTK_WIDGET(canvas));}// selection / clipboard stuffvoid reset_selection(void){  if (ui.selection == NULL) return;  if (ui.selection->canvas_item != NULL)     gtk_object_destroy(GTK_OBJECT(ui.selection->canvas_item));  g_list_free(ui.selection->items);  g_free(ui.selection);  ui.selection = NULL;  update_copy_paste_enabled();  update_color_menu();  update_thickness_buttons();  update_color_buttons();  update_font_button();}void move_journal_items_by(GList *itemlist, double dx, double dy,                              struct Layer *l1, struct Layer *l2, GList *depths){  struct Item *item;  GnomeCanvasItem *refitem;  GList *link;  int i;  double *pt;    while (itemlist!=NULL) {    item = (struct Item *)itemlist->data;    if (item->type == ITEM_STROKE)      for (pt=item->path->coords, i=0; i<item->path->num_points; i++, pt+=2)        { pt[0] += dx; pt[1] += dy; }    if (item->type == ITEM_STROKE || item->type == ITEM_TEXT || item->type == ITEM_TEMP_TEXT) {      item->bbox.left += dx;      item->bbox.right += dx;      item->bbox.top += dy;      item->bbox.bottom += dy;    }    if (l1 != l2) {      // find out where to insert      if (depths != NULL) {        if (depths->data == NULL) link = l2->items;        else {          link = g_list_find(l2->items, depths->data);          if (link != NULL) link = link->next;        }      } else link = NULL;      l2->items = g_list_insert_before(l2->items, link, item);      l2->nitems++;      l1->items = g_list_remove(l1->items, item);      l1->nitems--;    }    if (depths != NULL) { // also raise/lower the canvas items      if (item->canvas_item!=NULL) {        if (depths->data == NULL) link = NULL;        else link = g_list_find(l2->items, depths->data);        if (link != NULL) refitem = ((struct Item *)(link->data))->canvas_item;        else refitem = NULL;        lower_canvas_item_to(l2->group, item->canvas_item, refitem);      }      depths = depths->next;    }    itemlist = itemlist->next;  }}// Switch between button mappings/* NOTE ABOUT BUTTON MAPPINGS: ui.cur_mapping is 0 except while a canvas   click event is being processed ... */void switch_mapping(int m){  if (ui.cur_mapping == m) return;  ui.cur_mapping = m;  if (ui.toolno[m] < NUM_STROKE_TOOLS)     ui.cur_brush = &(ui.brushes[m][ui.toolno[m]]);  if (ui.toolno[m] == TOOL_TEXT)    ui.cur_brush = &(ui.brushes[m][TOOL_PEN]);  update_tool_buttons();  update_color_menu();  update_cursor();}void process_mapping_activate(GtkMenuItem *menuitem, int m, int tool){  if (!gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem))) return;  if (ui.cur_mapping!=0) return;  if (ui.toolno[m] == tool) return;  end_text();  reset_focus();      ui.toolno[m] = tool;  ui.ruler[m] = FALSE;  if (ui.linked_brush[m] == BRUSH_LINKED        && (tool==TOOL_PEN || tool==TOOL_HIGHLIGHTER))    ui.ruler[m] = ui.ruler[0];  if (ui.linked_brush[m] == BRUSH_COPIED) {    ui.linked_brush[m] = BRUSH_STATIC;    update_mappings_menu_linkings();  }}// update the ordering of components in the main vboxconst char *vbox_component_names[VBOX_MAIN_NITEMS]= {"scrolledwindowMain", "menubar", "toolbarMain", "toolbarPen", "hbox1"};void update_vbox_order(int *order){  int i, j;  GtkWidget *child;  GtkBox *vboxMain = GTK_BOX(GET_COMPONENT("vboxMain"));  gboolean present[VBOX_MAIN_NITEMS];    for (i=0; i<VBOX_MAIN_NITEMS; i++) present[i] = FALSE;  j=0;  for (i=0; i<VBOX_MAIN_NITEMS; i++) {    if (order[i]<0 || order[i]>=VBOX_MAIN_NITEMS) continue;    present[order[i]] = TRUE;    child = GET_COMPONENT(vbox_component_names[order[i]]);    gtk_box_reorder_child(vboxMain, child, j++);    gtk_widget_show(child);  }  for (i=1; i<VBOX_MAIN_NITEMS; i++) // hide others, but not the drawing area!    if (!present[i]) gtk_widget_hide(GET_COMPONENT(vbox_component_names[i]));}gchar *make_cur_font_name(void){  gchar *str;  struct Item *it;  if (ui.cur_item_type == ITEM_TEXT)    str = g_strdup_printf("%s %.1f", ui.cur_item->font_name, ui.cur_item->font_size);  else if (ui.selection!=NULL && ui.selection->items!=NULL &&           ui.selection->items->next==NULL &&           (it=(struct Item*)ui.selection->items->data)->type == ITEM_TEXT)    str = g_strdup_printf("%s %.1f", it->font_name, it->font_size);  else    str = g_strdup_printf("%s %.1f", ui.font_name, ui.font_size);  return str;}void update_font_button(void){  gchar *str;  str = make_cur_font_name();  gtk_font_button_set_font_name(GTK_FONT_BUTTON(GET_COMPONENT("fontButton")), str);  g_free(str);}gboolean can_accel(GtkWidget *widget, guint id, gpointer data){  return GTK_WIDGET_SENSITIVE(widget);}void allow_all_accels(void){  g_signal_connect((gpointer) GET_COMPONENT("fileNew"),      "can-activate-accel", G_CALLBACK(can_accel), NULL);  g_signal_connect((gpointer) GET_COMPONENT("fileOpen"),      "can-activate-accel", G_CALLBACK(can_accel), NULL);  g_signal_connect((gpointer) GET_COMPONENT("fileSave"),      "can-activate-accel", G_CALLBACK(can_accel), NULL);  g_signal_connect((gpointer) GET_COMPONENT("filePrint"),      "can-activate-accel", G_CALLBACK(can_accel), NULL);  g_signal_connect((gpointer) GET_COMPONENT("filePrintPDF"),      "can-activate-accel", G_CALLBACK(can_accel), NULL);  g_signal_connect((gpointer) GET_COMPONENT("fileQuit"),      "can-activate-accel", G_CALLBACK(can_accel), NULL);  g_signal_connect((gpointer) GET_COMPONENT("editUndo"),      "can-activate-accel", G_CALLBACK(can_accel), NULL);  g_signal_connect((gpointer) GET_COMPONENT("editRedo"),      "can-activate-accel", G_CALLBACK(can_accel), NULL);  g_signal_connect((gpointer) GET_COMPONENT("editCut"),      "can-activate-accel", G_CALLBACK(can_accel), NULL);  g_signal_connect((gpointer) GET_COMPONENT("editCopy"),      "can-activate-accel", G_CALLBACK(can_accel), NULL);  g_signal_connect((gpointer) GET_COMPONENT("editPaste"),      "can-activate-accel", G_CALLBACK(can_accel), NULL);  g_signal_connect((gpointer) GET_COMPONENT("editDelete"),      "can-activate-accel", G_CALLBACK(can_accel), NULL);  g_signal_connect((gpointer) GET_COMPONENT("viewFullscreen"),      "can-activate-accel", G_CALLBACK(can_accel), NULL);  g_signal_connect((gpointer) GET_COMPONENT("viewZoomIn"),      "can-activate-accel", G_CALLBACK(can_accel), NULL);  g_signal_connect((gpointer) GET_COMPONENT("viewZoomOut"),      "can-activate-accel", G_CALLBACK(can_accel), NULL);  g_signal_connect((gpointer) GET_COMPONENT("viewNormalSize"),      "can-activate-accel", G_CALLBACK(can_accel), NULL);  g_signal_connect((gpointer) GET_COMPONENT("viewPageWidth"),      "can-activate-accel", G_CALLBACK(can_accel), NULL);  g_signal_connect((gpointer) GET_COMPONENT("viewFirstPage"),      "can-activate-accel", G_CALLBACK(can_accel), NULL);  g_signal_connect((gpointer) GET_COMPONENT("viewPreviousPage"),      "can-activate-accel", G_CALLBACK(can_accel), NULL);  g_signal_connect((gpointer) GET_COMPONENT("viewNextPage"),      "can-activate-accel", G_CALLBACK(can_accel), NULL);  g_signal_connect((gpointer) GET_COMPONENT("viewLastPage"),      "can-activate-accel", G_CALLBACK(can_accel), NULL);  g_signal_connect((gpointer) GET_COMPONENT("toolsPen"),      "can-activate-accel", G_CALLBACK(can_accel), NULL);  g_signal_connect((gpointer) GET_COMPONENT("toolsEraser"),      "can-activate-accel", G_CALLBACK(can_accel), NULL);  g_signal_connect((gpointer) GET_COMPONENT("toolsHighlighter"),      "can-activate-accel", G_CALLBACK(can_accel), NULL);  g_signal_connect((gpointer) GET_COMPONENT("toolsText"),      "can-activate-accel", G_CALLBACK(can_accel), NULL);/*  g_signal_connect((gpointer) GET_COMPONENT("toolsSelectRegion"),      "can-activate-accel", G_CALLBACK(can_accel), NULL);  */  g_signal_connect((gpointer) GET_COMPONENT("toolsSelectRectangle"),      "can-activate-accel", G_CALLBACK(can_accel), NULL);  g_signal_connect((gpointer) GET_COMPONENT("toolsVerticalSpace"),      "can-activate-accel", G_CALLBACK(can_accel), NULL);  g_signal_connect((gpointer) GET_COMPONENT("toolsHand"),      "can-activate-accel", G_CALLBACK(can_accel), NULL);  g_signal_connect((gpointer) GET_COMPONENT("toolsTextFont"),      "can-activate-accel", G_CALLBACK(can_accel), NULL);  g_signal_connect((gpointer) GET_COMPONENT("toolsRuler"),      "can-activate-accel", G_CALLBACK(can_accel), NULL);}void add_scroll_bindings(void){  GtkBindingSet *binding_set;    binding_set = gtk_binding_set_by_class(     G_OBJECT_GET_CLASS(GET_COMPONENT("scrolledwindowMain")));  gtk_binding_entry_add_signal(binding_set, GDK_Up, 0,    "scroll_child", 2, GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_STEP_BACKWARD,     G_TYPE_BOOLEAN, FALSE);    gtk_binding_entry_add_signal(binding_set, GDK_KP_Up, 0,    "scroll_child", 2, GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_STEP_BACKWARD,     G_TYPE_BOOLEAN, FALSE);    gtk_binding_entry_add_signal(binding_set, GDK_Down, 0,    "scroll_child", 2, GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_STEP_FORWARD,     G_TYPE_BOOLEAN, FALSE);    gtk_binding_entry_add_signal(binding_set, GDK_KP_Down, 0,    "scroll_child", 2, GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_STEP_FORWARD,     G_TYPE_BOOLEAN, FALSE);    gtk_binding_entry_add_signal(binding_set, GDK_Left, 0,    "scroll_child", 2, GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_STEP_BACKWARD,     G_TYPE_BOOLEAN, TRUE);    gtk_binding_entry_add_signal(binding_set, GDK_KP_Left, 0,    "scroll_child", 2, GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_STEP_BACKWARD,     G_TYPE_BOOLEAN, TRUE);    gtk_binding_entry_add_signal(binding_set, GDK_Right, 0,    "scroll_child", 2, GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_STEP_FORWARD,     G_TYPE_BOOLEAN, TRUE);    gtk_binding_entry_add_signal(binding_set, GDK_KP_Right, 0,    "scroll_child", 2, GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_STEP_FORWARD,     G_TYPE_BOOLEAN, TRUE);  }gboolean is_event_within_textview(GdkEventButton *event){  double pt[2];    if (ui.cur_item_type!=ITEM_TEXT) return FALSE;  get_pointer_coords((GdkEvent *)event, pt);  if (pt[0]<ui.cur_item->bbox.left || pt[0]>ui.cur_item->bbox.right) return FALSE;  if (pt[1]<ui.cur_item->bbox.top || pt[1]>ui.cur_item->bbox.bottom) return FALSE;  return TRUE;}

⌨️ 快捷键说明

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