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

📄 gtktext.c

📁 gtk是linux一款强大的夸平台的图形化开发工具
💻 C
📖 第 1 页 / 共 5 页
字号:
  (GtkTextFunction)gtk_text_move_next_line,            /* n */  NULL,                                                /* o */  (GtkTextFunction)gtk_text_move_previous_line,        /* p */  NULL,                                                /* q */  NULL,                                                /* r */  NULL,                                                /* s */  NULL,                                                /* t */  (GtkTextFunction)gtk_text_delete_line,               /* u */  (GtkTextFunction)gtk_editable_paste_clipboard,       /* v */  (GtkTextFunction)gtk_text_delete_backward_word,      /* w */  (GtkTextFunction)gtk_editable_cut_clipboard,         /* x */  NULL,                                                /* y */  NULL,                                                /* z */};static const GtkTextFunction alt_keys[26] ={  NULL,                                                /* a */  (GtkTextFunction)gtk_text_move_backward_word,        /* b */  NULL,                                                /* c */  (GtkTextFunction)gtk_text_delete_forward_word,       /* d */  NULL,                                           /* e */  (GtkTextFunction)gtk_text_move_forward_word,         /* f */  NULL,                                           /* g */  NULL,                                           /* h */  NULL,                                           /* i */  NULL,                                           /* j */  NULL,                                           /* k */  NULL,                                           /* l */  NULL,                                           /* m */  NULL,                                           /* n */  NULL,                                           /* o */  NULL,                                           /* p */  NULL,                                           /* q */  NULL,                                           /* r */  NULL,                                           /* s */  NULL,                                           /* t */  NULL,                                           /* u */  NULL,                                           /* v */  NULL,                                           /* w */  NULL,                                           /* x */  NULL,                                           /* y */  NULL,                                           /* z */};/**********************************************************************//*			        Widget Crap                           *//**********************************************************************/GtkTypegtk_text_get_type (void){  static GtkType text_type = 0;    if (!text_type)    {      static const GtkTypeInfo text_info =      {	"GtkText",	sizeof (GtkText),	sizeof (GtkTextClass),	(GtkClassInitFunc) gtk_text_class_init,	(GtkObjectInitFunc) gtk_text_init,	/* reserved_1 */ NULL,        /* reserved_2 */ NULL,        (GtkClassInitFunc) NULL,      };            text_type = gtk_type_unique (GTK_TYPE_EDITABLE, &text_info);    }    return text_type;}static voidgtk_text_class_init (GtkTextClass *class){  GtkObjectClass *object_class;  GtkWidgetClass *widget_class;  GtkEditableClass *editable_class;    object_class = (GtkObjectClass*) class;  widget_class = (GtkWidgetClass*) class;  editable_class = (GtkEditableClass*) class;  parent_class = gtk_type_class (GTK_TYPE_EDITABLE);  gtk_object_add_arg_type ("GtkText::hadjustment",			   GTK_TYPE_ADJUSTMENT,			   GTK_ARG_READWRITE | GTK_ARG_CONSTRUCT,			   ARG_HADJUSTMENT);  gtk_object_add_arg_type ("GtkText::vadjustment",			   GTK_TYPE_ADJUSTMENT,			   GTK_ARG_READWRITE | GTK_ARG_CONSTRUCT,			   ARG_VADJUSTMENT);  gtk_object_add_arg_type ("GtkText::line_wrap",			   GTK_TYPE_BOOL,			   GTK_ARG_READWRITE,			   ARG_LINE_WRAP);  gtk_object_add_arg_type ("GtkText::word_wrap",			   GTK_TYPE_BOOL,			   GTK_ARG_READWRITE,			   ARG_WORD_WRAP);  object_class->set_arg = gtk_text_set_arg;  object_class->get_arg = gtk_text_get_arg;  object_class->destroy = gtk_text_destroy;  object_class->finalize = gtk_text_finalize;    widget_class->realize = gtk_text_realize;  widget_class->unrealize = gtk_text_unrealize;  widget_class->style_set = gtk_text_style_set;  widget_class->draw_focus = gtk_text_draw_focus;  widget_class->size_request = gtk_text_size_request;  widget_class->size_allocate = gtk_text_size_allocate;  widget_class->draw = gtk_text_draw;  widget_class->expose_event = gtk_text_expose;  widget_class->button_press_event = gtk_text_button_press;  widget_class->button_release_event = gtk_text_button_release;  widget_class->motion_notify_event = gtk_text_motion_notify;  widget_class->key_press_event = gtk_text_key_press;  widget_class->focus_in_event = gtk_text_focus_in;  widget_class->focus_out_event = gtk_text_focus_out;    widget_class->set_scroll_adjustments_signal =    gtk_signal_new ("set_scroll_adjustments",		    GTK_RUN_LAST,		    object_class->type,		    GTK_SIGNAL_OFFSET (GtkTextClass, set_scroll_adjustments),		    gtk_marshal_NONE__POINTER_POINTER,		    GTK_TYPE_NONE, 2, GTK_TYPE_ADJUSTMENT, GTK_TYPE_ADJUSTMENT);  editable_class->set_editable = gtk_text_real_set_editable;  editable_class->insert_text = gtk_text_insert_text;  editable_class->delete_text = gtk_text_delete_text;    editable_class->move_cursor = gtk_text_move_cursor;  editable_class->move_word = gtk_text_move_word;  editable_class->move_page = gtk_text_move_page;  editable_class->move_to_row = gtk_text_move_to_row;  editable_class->move_to_column = gtk_text_move_to_column;    editable_class->kill_char = gtk_text_kill_char;  editable_class->kill_word = gtk_text_kill_word;  editable_class->kill_line = gtk_text_kill_line;    editable_class->update_text = gtk_text_update_text;  editable_class->get_chars   = gtk_text_get_chars;  editable_class->set_selection = gtk_text_set_selection;  editable_class->set_position = gtk_text_set_position;  class->set_scroll_adjustments = gtk_text_set_adjustments;}static voidgtk_text_set_arg (GtkObject        *object,		  GtkArg           *arg,		  guint             arg_id){  GtkText *text;    text = GTK_TEXT (object);    switch (arg_id)    {    case ARG_HADJUSTMENT:      gtk_text_set_adjustments (text,				GTK_VALUE_POINTER (*arg),				text->vadj);      break;    case ARG_VADJUSTMENT:      gtk_text_set_adjustments (text,				text->hadj,				GTK_VALUE_POINTER (*arg));      break;    case ARG_LINE_WRAP:      gtk_text_set_line_wrap (text, GTK_VALUE_BOOL (*arg));      break;    case ARG_WORD_WRAP:      gtk_text_set_word_wrap (text, GTK_VALUE_BOOL (*arg));      break;    default:      break;    }}static voidgtk_text_get_arg (GtkObject        *object,		  GtkArg           *arg,		  guint             arg_id){  GtkText *text;    text = GTK_TEXT (object);    switch (arg_id)    {    case ARG_HADJUSTMENT:      GTK_VALUE_POINTER (*arg) = text->hadj;      break;    case ARG_VADJUSTMENT:      GTK_VALUE_POINTER (*arg) = text->vadj;      break;    case ARG_LINE_WRAP:      GTK_VALUE_BOOL (*arg) = text->line_wrap;      break;    case ARG_WORD_WRAP:      GTK_VALUE_BOOL (*arg) = text->word_wrap;      break;    default:      arg->type = GTK_TYPE_INVALID;      break;    }}static voidgtk_text_init (GtkText *text){  GTK_WIDGET_SET_FLAGS (text, GTK_CAN_FOCUS);  text->text_area = NULL;  text->hadj = NULL;  text->vadj = NULL;  text->gc = NULL;  text->bg_gc = NULL;  text->line_wrap_bitmap = NULL;  text->line_arrow_bitmap = NULL;    text->use_wchar = FALSE;  text->text.ch = g_new (guchar, INITIAL_BUFFER_SIZE);  text->text_len = INITIAL_BUFFER_SIZE;   text->scratch_buffer.ch = NULL;  text->scratch_buffer_len = 0;   text->freeze_count = 0;    if (!params_mem_chunk)    params_mem_chunk = g_mem_chunk_new ("LineParams",					sizeof (LineParams),					256 * sizeof (LineParams),					G_ALLOC_AND_FREE);    text->default_tab_width = 4;  text->tab_stops = NULL;    text->tab_stops = g_list_prepend (text->tab_stops, (void*)8);  text->tab_stops = g_list_prepend (text->tab_stops, (void*)8);    text->line_start_cache = NULL;  text->first_cut_pixels = 0;    text->line_wrap = TRUE;  text->word_wrap = FALSE;    text->timer = 0;  text->button = 0;    text->current_font = NULL;    init_properties (text);    GTK_EDITABLE (text)->editable = FALSE;    gtk_editable_set_position (GTK_EDITABLE (text), 0);}GtkWidget*gtk_text_new (GtkAdjustment *hadj,	      GtkAdjustment *vadj){  GtkWidget *text;  if (hadj)    g_return_val_if_fail (GTK_IS_ADJUSTMENT (hadj), NULL);  if (vadj)    g_return_val_if_fail (GTK_IS_ADJUSTMENT (vadj), NULL);  text = gtk_widget_new (GTK_TYPE_TEXT,			 "hadjustment", hadj,			 "vadjustment", vadj,			 NULL);  return text;}voidgtk_text_set_word_wrap (GtkText *text,			gint     word_wrap){  g_return_if_fail (text != NULL);  g_return_if_fail (GTK_IS_TEXT (text));    text->word_wrap = (word_wrap != FALSE);    if (GTK_WIDGET_REALIZED (text))    {      recompute_geometry (text);      gtk_widget_queue_draw (GTK_WIDGET (text));    }}voidgtk_text_set_line_wrap (GtkText *text,			gint     line_wrap){  g_return_if_fail (text != NULL);  g_return_if_fail (GTK_IS_TEXT (text));    text->line_wrap = (line_wrap != FALSE);    if (GTK_WIDGET_REALIZED (text))    {      recompute_geometry (text);      gtk_widget_queue_draw (GTK_WIDGET (text));    }}voidgtk_text_set_editable (GtkText *text,		       gboolean is_editable){  g_return_if_fail (text != NULL);  g_return_if_fail (GTK_IS_TEXT (text));    gtk_editable_set_editable (GTK_EDITABLE (text), is_editable);}static voidgtk_text_real_set_editable (GtkEditable *editable,			    gboolean     is_editable){  GtkText *text;    g_return_if_fail (editable != NULL);  g_return_if_fail (GTK_IS_TEXT (editable));    text = GTK_TEXT (editable);  editable->editable = (is_editable != FALSE);    if (GTK_WIDGET_REALIZED (text))    {      recompute_geometry (text);      gtk_widget_queue_draw (GTK_WIDGET (text));    }}voidgtk_text_set_adjustments (GtkText       *text,			  GtkAdjustment *hadj,			  GtkAdjustment *vadj){  g_return_if_fail (text != NULL);  g_return_if_fail (GTK_IS_TEXT (text));  if (hadj)    g_return_if_fail (GTK_IS_ADJUSTMENT (hadj));  else    hadj = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 0.0, 0.0, 0.0, 0.0));  if (vadj)    g_return_if_fail (GTK_IS_ADJUSTMENT (vadj));  else    vadj = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 0.0, 0.0, 0.0, 0.0));    if (text->hadj && (text->hadj != hadj))    {      gtk_signal_disconnect_by_data (GTK_OBJECT (text->hadj), text);      gtk_object_unref (GTK_OBJECT (text->hadj));    }    if (text->vadj && (text->vadj != vadj))    {      gtk_signal_disconnect_by_data (GTK_OBJECT (text->vadj), text);      gtk_object_unref (GTK_OBJECT (text->vadj));    }    if (text->hadj != hadj)    {      text->hadj = hadj;      gtk_object_ref (GTK_OBJECT (text->hadj));      gtk_object_sink (GTK_OBJECT (text->hadj));            gtk_signal_connect (GTK_OBJECT (text->hadj), "changed",			  (GtkSignalFunc) gtk_text_adjustment,			  text);      gtk_signal_connect (GTK_OBJECT (text->hadj), "value_changed",			  (GtkSignalFunc) gtk_text_adjustment,			  text);      gtk_signal_connect (GTK_OBJECT (text->hadj), "disconnect",			  (GtkSignalFunc) gtk_text_disconnect,			  text);      gtk_text_adjustment (hadj, text);    }    if (text->vadj != vadj)    {      text->vadj = vadj;      gtk_object_ref (GTK_OBJECT (text->vadj));      gtk_object_sink (GTK_OBJECT (text->vadj));            gtk_signal_connect (GTK_OBJECT (text->vadj), "changed",			  (GtkSignalFunc) gtk_text_adjustment,			  text);      gtk_signal_connect (GTK_OBJECT (text->vadj), "value_changed",			  (GtkSignalFunc) gtk_text_adjustment,			  text);      gtk_signal_connect (GTK_OBJECT (text->vadj), "disconnect",			  (GtkSignalFunc) gtk_text_disconnect,			  text);      gtk_text_adjustment (vadj, text);    }}voidgtk_text_set_point (GtkText *text,		    guint    index){  g_return_if_fail (text != NULL);  g_return_if_fail (GTK_IS_TEXT (text));  g_return_if_fail (index <= TEXT_LENGTH (text));    text->point = find_mark (text, index);}guintgtk_text_get_point (GtkText *text){  g_return_val_if_fail (text != NULL, 0);  g_return_val_if_fail (GTK_IS_TEXT (text), 0);    return text->point.index;}guintgtk_text_get_length (GtkText *text){  g_return_val_if_fail (text != NULL, 0);  g_return_val_if_fail (GTK_IS_TEXT (text), 0);    return TEXT_LENGTH (text);}voidgtk_text_freeze (GtkText *text){  g_return_if_fail (text != NULL);  g_return_if_fail (GTK_IS_TEXT (text));    text->freeze_count++;}voidgtk_text_thaw (GtkText *text){  g_return_if_fail (text != NULL);  g_return_if_fail (GTK_IS_TEXT (text));

⌨️ 快捷键说明

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