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

📄 textview.c

📁 Linux下gtk图形界面开发的各种gtk控件调用方法示例
💻 C
📖 第 1 页 / 共 2 页
字号:
/* Text Widget/Multiple Views * * The GtkTextView widget displays a GtkTextBuffer. One GtkTextBuffer * can be displayed by multiple GtkTextViews. This demo has two views * displaying a single buffer, and shows off the widget's text * formatting features. * */#include <gtk/gtk.h>#include <stdlib.h> /* for exit() */#include "demo-common.h"static void easter_egg_callback (GtkWidget *button, gpointer data);#define gray50_width 2#define gray50_height 2static char gray50_bits[] = {  0x02, 0x01};static voidcreate_tags (GtkTextBuffer *buffer){  GdkBitmap *stipple;  /* Create a bunch of tags. Note that it's also possible to   * create tags with gtk_text_tag_new() then add them to the   * tag table for the buffer, gtk_text_buffer_create_tag() is   * just a convenience function. Also note that you don't have   * to give tags a name; pass NULL for the name to create an   * anonymous tag.   *   * In any real app, another useful optimization would be to create   * a GtkTextTagTable in advance, and reuse the same tag table for   * all the buffers with the same tag set, instead of creating   * new copies of the same tags for every buffer.   *   * Tags are assigned default priorities in order of addition to the   * tag table.	 That is, tags created later that affect the same text   * property affected by an earlier tag will override the earlier   * tag.  You can modify tag priorities with   * gtk_text_tag_set_priority().   */  gtk_text_buffer_create_tag (buffer, "heading",			      "weight", PANGO_WEIGHT_BOLD,			      "size", 15 * PANGO_SCALE,			      NULL);    gtk_text_buffer_create_tag (buffer, "italic",			      "style", PANGO_STYLE_ITALIC, NULL);  gtk_text_buffer_create_tag (buffer, "bold",			      "weight", PANGO_WEIGHT_BOLD, NULL);      gtk_text_buffer_create_tag (buffer, "big",			      /* points times the PANGO_SCALE factor */			      "size", 20 * PANGO_SCALE, NULL);  gtk_text_buffer_create_tag (buffer, "xx-small",			      "scale", PANGO_SCALE_XX_SMALL, NULL);  gtk_text_buffer_create_tag (buffer, "x-large",			      "scale", PANGO_SCALE_X_LARGE, NULL);    gtk_text_buffer_create_tag (buffer, "monospace",			      "family", "monospace", NULL);    gtk_text_buffer_create_tag (buffer, "blue_foreground",			      "foreground", "blue", NULL);    gtk_text_buffer_create_tag (buffer, "red_background",			      "background", "red", NULL);  stipple = gdk_bitmap_create_from_data (NULL,					 gray50_bits, gray50_width,					 gray50_height);    gtk_text_buffer_create_tag (buffer, "background_stipple",			      "background_stipple", stipple, NULL);  gtk_text_buffer_create_tag (buffer, "foreground_stipple",			      "foreground_stipple", stipple, NULL);  g_object_unref (stipple);  gtk_text_buffer_create_tag (buffer, "big_gap_before_line",			      "pixels_above_lines", 30, NULL);  gtk_text_buffer_create_tag (buffer, "big_gap_after_line",			      "pixels_below_lines", 30, NULL);  gtk_text_buffer_create_tag (buffer, "double_spaced_line",			      "pixels_inside_wrap", 10, NULL);  gtk_text_buffer_create_tag (buffer, "not_editable",			      "editable", FALSE, NULL);    gtk_text_buffer_create_tag (buffer, "word_wrap",			      "wrap_mode", GTK_WRAP_WORD, NULL);  gtk_text_buffer_create_tag (buffer, "char_wrap",			      "wrap_mode", GTK_WRAP_CHAR, NULL);  gtk_text_buffer_create_tag (buffer, "no_wrap",			      "wrap_mode", GTK_WRAP_NONE, NULL);    gtk_text_buffer_create_tag (buffer, "center",			      "justification", GTK_JUSTIFY_CENTER, NULL);  gtk_text_buffer_create_tag (buffer, "right_justify",			      "justification", GTK_JUSTIFY_RIGHT, NULL);  gtk_text_buffer_create_tag (buffer, "wide_margins",			      "left_margin", 50, "right_margin", 50,			      NULL);    gtk_text_buffer_create_tag (buffer, "strikethrough",			      "strikethrough", TRUE, NULL);    gtk_text_buffer_create_tag (buffer, "underline",			      "underline", PANGO_UNDERLINE_SINGLE, NULL);  gtk_text_buffer_create_tag (buffer, "double_underline",			      "underline", PANGO_UNDERLINE_DOUBLE, NULL);  gtk_text_buffer_create_tag (buffer, "superscript",			      "rise", 10 * PANGO_SCALE,	  /* 10 pixels */			      "size", 8 * PANGO_SCALE,	  /* 8 points */			      NULL);    gtk_text_buffer_create_tag (buffer, "subscript",			      "rise", -10 * PANGO_SCALE,   /* 10 pixels */			      "size", 8 * PANGO_SCALE,	   /* 8 points */			      NULL);  gtk_text_buffer_create_tag (buffer, "rtl_quote",			      "wrap_mode", GTK_WRAP_WORD,			      "direction", GTK_TEXT_DIR_RTL,			      "indent", 30,			      "left_margin", 20,			      "right_margin", 20,			      NULL);}static voidinsert_text (GtkTextBuffer *buffer){  GtkTextIter iter;  GtkTextIter start, end;  GdkPixbuf *pixbuf;  GdkPixbuf *scaled;  GtkTextChildAnchor *anchor;  char *filename;  /* demo_find_file() looks in the current directory first,   * so you can run gtk-demo without installing GTK, then looks   * in the location where the file is installed.   */  pixbuf = NULL;  filename = demo_find_file ("gtk-logo-rgb.gif", NULL);  if (filename)    {      pixbuf = gdk_pixbuf_new_from_file (filename, NULL);      g_free (filename);    }  if (pixbuf == NULL)    {      g_printerr ("Failed to load image file gtk-logo-rgb.gif\n");      exit (1);    }  scaled = gdk_pixbuf_scale_simple (pixbuf, 32, 32, GDK_INTERP_BILINEAR);  g_object_unref (pixbuf);  pixbuf = scaled;    /* get start of buffer; each insertion will revalidate the   * iterator to point to just after the inserted text.   */  gtk_text_buffer_get_iter_at_offset (buffer, &iter, 0);  gtk_text_buffer_insert (buffer, &iter, "The text widget can display text with all kinds of nifty attributes. It also supports multiple views of the same buffer; this demo is showing the same buffer in two places.\n\n", -1);  gtk_text_buffer_insert_with_tags_by_name (buffer, &iter, "Font styles. ", -1,					    "heading", NULL);    gtk_text_buffer_insert (buffer, &iter, "For example, you can have ", -1);  gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,					    "italic", -1,					    "italic", NULL);  gtk_text_buffer_insert (buffer, &iter, ", ", -1);    gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,					    "bold", -1,					    "bold", NULL);  gtk_text_buffer_insert (buffer, &iter, ", or ", -1);  gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,					    "monospace (typewriter)", -1,					    "monospace", NULL);  gtk_text_buffer_insert (buffer, &iter, ", or ", -1);  gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,					    "big", -1,					    "big", NULL);  gtk_text_buffer_insert (buffer, &iter, " text. ", -1);  gtk_text_buffer_insert (buffer, &iter, "It's best not to hardcode specific text sizes; you can use relative sizes as with CSS, such as ", -1);  gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,					    "xx-small", -1,					    "xx-small", NULL);  gtk_text_buffer_insert (buffer, &iter, " or ", -1);  gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,					    "x-large", -1,					    "x-large", NULL);  gtk_text_buffer_insert (buffer, &iter, " to ensure that your program properly adapts if the user changes the default font size.\n\n", -1);    gtk_text_buffer_insert_with_tags_by_name (buffer, &iter, "Colors. ", -1,					    "heading", NULL);    gtk_text_buffer_insert (buffer, &iter, "Colors such as ", -1);    gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,					    "a blue foreground", -1,					    "blue_foreground", NULL);  gtk_text_buffer_insert (buffer, &iter, " or ", -1);    gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,					    "a red background", -1,					    "red_background", NULL);  gtk_text_buffer_insert (buffer, &iter, " or even ", -1);    gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,					    "a stippled red background", -1,					    "red_background",					    "background_stipple",					    NULL);  gtk_text_buffer_insert (buffer, &iter, " or ", -1);    gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,					    "a stippled blue foreground on solid red background", -1,					    "blue_foreground",					    "red_background",					    "foreground_stipple",					    NULL);  gtk_text_buffer_insert (buffer, &iter, " (select that to read it) can be used.\n\n", -1);    gtk_text_buffer_insert_with_tags_by_name (buffer, &iter, "Underline, strikethrough, and rise. ", -1,					    "heading", NULL);    gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,					    "Strikethrough", -1,					    "strikethrough", NULL);  gtk_text_buffer_insert (buffer, &iter, ", ", -1);  gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,					    "underline", -1,					    "underline", NULL);  gtk_text_buffer_insert (buffer, &iter, ", ", -1);  gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,					    "double underline", -1, 					    "double_underline", NULL);  gtk_text_buffer_insert (buffer, &iter, ", ", -1);  gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,					    "superscript", -1,					    "superscript", NULL);  gtk_text_buffer_insert (buffer, &iter, ", and ", -1);  gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,					    "subscript", -1,					    "subscript", NULL);  gtk_text_buffer_insert (buffer, &iter, " are all supported.\n\n", -1);  gtk_text_buffer_insert_with_tags_by_name (buffer, &iter, "Images. ", -1,					    "heading", NULL);    gtk_text_buffer_insert (buffer, &iter, "The buffer can have images in it: ", -1);  gtk_text_buffer_insert_pixbuf (buffer, &iter, pixbuf);  gtk_text_buffer_insert_pixbuf (buffer, &iter, pixbuf);  gtk_text_buffer_insert_pixbuf (buffer, &iter, pixbuf);  gtk_text_buffer_insert (buffer, &iter, " for example.\n\n", -1);  gtk_text_buffer_insert_with_tags_by_name (buffer, &iter, "Spacing. ", -1,					    "heading", NULL);  gtk_text_buffer_insert (buffer, &iter, "You can adjust the amount of space before each line.\n", -1);    gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,					    "This line has a whole lot of space before it.\n", -1,					    "big_gap_before_line", "wide_margins", NULL);  gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,					    "You can also adjust the amount of space after each line; this line has a whole lot of space after it.\n", -1,					    "big_gap_after_line", "wide_margins", NULL);    gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,					    "You can also adjust the amount of space between wrapped lines; this line has extra space between each wrapped line in the same paragraph. To show off wrapping, some filler text: the quick brown fox jumped over the lazy dog. Blah blah blah blah blah blah blah blah blah.\n", -1,					    "double_spaced_line", "wide_margins", NULL);  gtk_text_buffer_insert (buffer, &iter, "Also note that those lines have extra-wide margins.\n\n", -1);  gtk_text_buffer_insert_with_tags_by_name (buffer, &iter, "Editability. ", -1,					    "heading", NULL);    gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,					    "This line is 'locked down' and can't be edited by the user - just try it! You can't delete this line.\n\n", -1,

⌨️ 快捷键说明

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