示例#1
0
void	Amt::LoggerImpl::insertLine(const char* _ctime, const char* _mess, unsigned _type, bool newString ){
	if (_type >= riku::logger::NUM_ERR_MESS_TYPE )
	    return;
	if (!_in_textbuffer || !_in_textview)    
	    return;
	GtkTextIter iter;
	/*Добавим новое сообщение*/
	gtk_text_buffer_get_end_iter (_in_textbuffer, &iter );
	gtk_text_buffer_insert_with_tags ( _in_textbuffer, &iter, _ctime, -1, _in_tagArr[_type], NULL  );
	gtk_text_buffer_insert ( _in_textbuffer, &iter, "  ", -1 );
	gtk_text_buffer_insert_with_tags(_in_textbuffer, &iter, _mess, -1, _in_tagArr[_type], NULL );
	if (newString)
	    gtk_text_buffer_insert(_in_textbuffer, &iter, "\n", -1);

	/*Передвинем маркер скроллинга, и прокрутим список*/
	GtkTextMark *mark = gtk_text_buffer_get_mark (_in_textbuffer, "scroll");
	gtk_text_buffer_move_mark (_in_textbuffer, mark, &iter);
	gtk_text_view_scroll_mark_onscreen (GTK_TEXT_VIEW(_in_textview), mark);
	/*Удалим записи, если их стало больше чем maxLines*/
	if (_in_maxLines < gtk_text_buffer_get_line_count(_in_textbuffer) ){
	    GtkTextIter startI, endI;
	    gtk_text_buffer_get_iter_at_line(_in_textbuffer, &endI, 9);
	    gtk_text_buffer_get_iter_at_line(_in_textbuffer, &startI, 9);	    
	    gtk_text_iter_forward_line(&endI );
	    gtk_text_buffer_delete(_in_textbuffer, &startI, &endI);
	}
	
}
示例#2
0
gboolean
follow_add_to_gtk_text(char *buffer, size_t nchars, gboolean is_server,
		       void *arg)
{
	GtkWidget *text = arg;
	GtkTextBuffer *buf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text));
	GtkTextIter    iter;

	/* While our isprint() hack is in place, we
	 * have to convert some chars to '.' in order
	 * to be able to see the data we *should* see
	 * in the GtkText widget.
	 */
	size_t i;

	for (i = 0; i < nchars; i++) {
		if (buffer[i] == '\n' || buffer[i] == '\r')
			continue;
		if (! isprint((guchar)buffer[i])) {
			buffer[i] = '.';
		}
	}

	gtk_text_buffer_get_end_iter(buf, &iter);
	if (is_server) {
		gtk_text_buffer_insert_with_tags(buf, &iter, buffer, (gint) nchars,
						 server_tag, NULL);
	} else {
		gtk_text_buffer_insert_with_tags(buf, &iter, buffer, (gint) nchars,
						 client_tag, NULL);
	}
	return TRUE;
}
示例#3
0
void
_gcr_display_view_append_content (GcrDisplayView *self, GcrRenderer *renderer,
                                  const gchar *content, const gchar *details)
{
	GcrDisplayItem *item;
	GtkTextIter iter;
	gchar *memory = NULL;

	g_return_if_fail (GCR_IS_DISPLAY_VIEW (self));
	g_return_if_fail (content);

	item = lookup_display_item (self, renderer);
	g_return_if_fail (item);

	if (item->details && !item->expanded)
		return;

	if (details)
		content = memory = g_strdup_printf ("%s: %s", content, details);

	gtk_text_buffer_get_iter_at_mark (self->pv->buffer, &iter, item->ending);
	gtk_text_buffer_insert_with_tags (self->pv->buffer, &iter, content, -1,
	                                  self->pv->content_tag, item->extra_tag, NULL);
	gtk_text_buffer_insert_with_tags (self->pv->buffer, &iter, "\n", 1,
	                                  item->extra_tag, NULL);

	g_free (memory);
}
示例#4
0
static void
add_notes (GtkTextBuffer *buffer, GtkTextIter *pos, GtkTextTag *header_tag,
           GtrMsg *msg)
{
  GtkTextTag *tag;
  const gchar *comments;

  tag = gtk_text_buffer_create_tag (buffer, NULL,
                                    "foreground", "blue",
                                    "underline", PANGO_UNDERLINE_SINGLE,
                                    NULL);

  gtk_text_buffer_insert_with_tags (buffer, pos, _("Notes:"), -1, header_tag, NULL);
  gtk_text_buffer_insert (buffer, pos, "\n", 1);

  g_object_set_data (G_OBJECT (tag), "is_path", GINT_TO_POINTER (1));

  comments = gtr_msg_get_comment (msg);

  if (comments == NULL || *comments == '\0')
    gtk_text_buffer_insert_with_tags (buffer, pos, _("Add Note"), -1, tag, NULL);
  else
    {
      gtk_text_buffer_insert (buffer, pos, comments, -1);
      gtk_text_buffer_insert (buffer, pos, "(", 1);
      gtk_text_buffer_insert_with_tags (buffer, pos, _("Edit"), -1, tag, NULL);
      gtk_text_buffer_insert (buffer, pos, ")", 1);
    }

  gtk_text_buffer_insert (buffer, pos, "\n", 1);
}
示例#5
0
文件: about.c 项目: jxitc/hybrid
static void create_gpl(GtkTextView *view)
{
    GtkTextTag    *tag;
    GtkTextIter    iter;
    char           *buf1 = N_("This program is free software; you can redistribute it and/or modify "
                              "it under the terms of the GNU General Public License as published by "
                              "the Free Software Foundation; either version 2 of the License, or "
                              "(at your option) any later version.\n\n");
    char           *buf2 = N_("This program is distributed in the hope that it will be useful, "
                              "but WITHOUT ANY WARRANTY; without even the implied warranty of "
                              "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the "
                              "GNU General Public License for more details.\n\n");
    char           *buf3 = N_("You should have received a copy of the GNU General Public License "
                              "along with this program; if not, see:");

    gtk_text_view_set_editable(view, FALSE);
    gtk_text_view_set_wrap_mode(view, GTK_WRAP_WORD);
    g_signal_connect (view, "motion-notify-event",
                      G_CALLBACK (motion_notify_event), NULL);

    GtkTextBuffer *buffer = gtk_text_view_get_buffer(view);

    tag = gtk_text_buffer_create_tag (buffer, NULL,
                                      "left-margin", 5,
                                      "right-margin", 5,
                                      NULL);

    gtk_text_buffer_get_start_iter(buffer, &iter);

    gtk_text_buffer_insert(buffer, &iter, "\n\n", 2);
    gtk_text_buffer_insert_with_tags(buffer, &iter, _(buf1), -1, tag, NULL);
    gtk_text_buffer_insert_with_tags(buffer, &iter, _(buf2), -1, tag, NULL);
    gtk_text_buffer_insert_with_tags(buffer, &iter, _(buf3), -1, tag, NULL);
    insert_link(buffer, &iter, "http://www.gnu.org/licenses/gpl-2.0.txt", NULL);
}
示例#6
0
static void text_insert_help(struct menu *menu)
{
	GtkTextBuffer *buffer;
	GtkTextIter start, end;
	const char *prompt = menu_get_prompt(menu);
	gchar *name;
	const char *help = _(nohelp_text);

	if (!menu->sym)
		help = "";
	else if (menu->sym->help)
		help = _(menu->sym->help);

	if (menu->sym && menu->sym->name)
		name = g_strdup_printf(_(menu->sym->name));
	else
		name = g_strdup("");

	buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_w));
	gtk_text_buffer_get_bounds(buffer, &start, &end);
	gtk_text_buffer_delete(buffer, &start, &end);
	gtk_text_view_set_left_margin(GTK_TEXT_VIEW(text_w), 15);

	gtk_text_buffer_get_end_iter(buffer, &end);
	gtk_text_buffer_insert_with_tags(buffer, &end, prompt, -1, tag1,
					 NULL);
	gtk_text_buffer_insert_at_cursor(buffer, " ", 1);
	gtk_text_buffer_get_end_iter(buffer, &end);
	gtk_text_buffer_insert_with_tags(buffer, &end, name, -1, tag1,
					 NULL);
	gtk_text_buffer_insert_at_cursor(buffer, "\n\n", 2);
	gtk_text_buffer_get_end_iter(buffer, &end);
	gtk_text_buffer_insert_with_tags(buffer, &end, help, -1, tag2,
					 NULL);
}
示例#7
0
static void
xfce_about_credits (GtkTextBuffer *buffer)
{
  guint                   i;
  GtkTextTag             *title;
  GtkTextTag             *indent;
  GtkTextIter             end;
  const ContributorGroup *group;
  const ContributorInfo  *user;

  g_return_if_fail (GTK_IS_TEXT_BUFFER (buffer));

  title = gtk_text_buffer_create_tag (buffer, "title",
                                      "scale", 1.1,
                                      "weight", PANGO_WEIGHT_BOLD, NULL);

  indent = gtk_text_buffer_create_tag (buffer, "indent",
                                       "left-margin", MARGIN,
                                       "indent", -MARGIN, NULL);

  gtk_text_buffer_get_end_iter (buffer, &end);

  for (i = 0; i < G_N_ELEMENTS (xfce_contributors); i++)
    {
      group = xfce_contributors + i;

      gtk_text_buffer_insert_with_tags (buffer, &end, _(group->name), -1, title, NULL);
      gtk_text_buffer_insert (buffer, &end, "\n", -1);

      if (group->contributors != NULL)
        {
          for (user = group->contributors; user->name != NULL; user++)
            {
              gtk_text_buffer_insert_with_tags (buffer, &end, user->name, -1, indent, NULL);
              gtk_text_buffer_insert (buffer, &end, " <", -1);
              gtk_text_buffer_insert (buffer, &end, user->email, -1);
              gtk_text_buffer_insert (buffer, &end, ">\n", -1);
            }
        }
      else
        {
          /* add the translators */
          xfce_about_credits_translators (buffer, &end);
        }

      gtk_text_buffer_insert (buffer, &end, "\n", -1);
    }

  gtk_text_buffer_insert (buffer, &end,
      _("If you know of anyone missing from this list; don't hesitate and "
        "file a bug on <https://bugzilla.xfce.org> ."), -1);
  gtk_text_buffer_insert (buffer, &end, "\n\n", -1);
  gtk_text_buffer_insert_with_tags (buffer, &end,
      _("Thanks to all who helped making this software available!"), -1, title, NULL);

  gtk_text_buffer_insert (buffer, &end, "\n", -1);
}
示例#8
0
void
_gcr_display_view_append_value (GcrDisplayView *self, GcrRenderer *renderer, const gchar *field,
                                const gchar *value, gboolean monospace)
{
	GcrDisplayItem *item;
	PangoRectangle extents;
	PangoTabArray *tabs;
	PangoLayout *layout;
	GtkTextIter iter;
	gchar *text;

	g_return_if_fail (GCR_IS_DISPLAY_VIEW (self));
	g_return_if_fail (field);

	item = lookup_display_item (self, renderer);
	g_return_if_fail (item);

	if (item->details && !item->expanded)
		return;

	text = g_strdup_printf ("%s:", field);
	if (value == NULL)
		value = "";

	/* Measure the width of the field */
	layout = gtk_widget_create_pango_layout (GTK_WIDGET (self), text);
	pango_layout_get_extents (layout, NULL, &extents);
	pango_extents_to_pixels (&extents, NULL);
	g_object_unref (layout);

	/* Make the tab wide enough to accomodate */
	if (extents.width > item->field_width) {
		item->field_width = extents.width + COLUMN_MARGIN;
		tabs = pango_tab_array_new (1, TRUE);
		pango_tab_array_set_tab (tabs, 0, PANGO_TAB_LEFT, item->field_width);
		g_object_set (item->field_tag,
		              "left-margin", FIELD_MARGIN,
		              "indent", 0 - item->field_width,
		              "tabs", tabs,
		              NULL);
		pango_tab_array_free (tabs);
	}

	gtk_text_buffer_get_iter_at_mark (self->pv->buffer, &iter, item->ending);
	gtk_text_buffer_insert_with_tags (self->pv->buffer, &iter, text, -1,
	                                  item->field_tag, item->extra_tag, NULL);
	gtk_text_buffer_insert_with_tags (self->pv->buffer, &iter, "\t", 1,
	                                  item->extra_tag, NULL);
	gtk_text_buffer_insert_with_tags (self->pv->buffer, &iter, value, -1, item->field_tag,
	                                  monospace ? self->pv->monospace_tag : item->extra_tag,
	                                  monospace ? item->extra_tag : NULL, NULL);
	gtk_text_buffer_insert_with_tags (self->pv->buffer, &iter, "\n", 1,
	                                  item->extra_tag, NULL);

	g_free (text);
}
示例#9
0
static void create_intro(GtkTextView *view)
{
	GtkTextTag    *tag;
	GtkTextTag    *tag1;
	GtkTextIter    iter;
	const char title[] = N_("Openfetion "OPENFETION_VERSION"\n\n");
	const char intro[] = N_("OpenFetion is a Fetion client for linux based on GTK+2.0, "
				"implementing Fetion Protocol Version 4.\n"
				"It supports most features of Fetion. \n"
				"What's more, it's lightweight and efficient with intuitive interface.\n\n"
				"Project homepage: ");

	gtk_text_view_set_editable(view,FALSE);
	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(view), GTK_WRAP_WORD_CHAR);
	g_signal_connect (view, "motion-notify-event", 
			G_CALLBACK (motion_notify_event), NULL);
	g_signal_connect(view, "event-after", 
                     G_CALLBACK (event_after), NULL);

	GtkTextBuffer *buffer = gtk_text_view_get_buffer(view);

	tag = gtk_text_buffer_create_tag (buffer, NULL, 
                                    "size", 15 * PANGO_SCALE, 
									"justification", GTK_JUSTIFY_CENTER,
									"weight", PANGO_WEIGHT_BOLD,
                                    NULL);

	tag1 = gtk_text_buffer_create_tag (buffer, NULL, 
                                    "left-margin", 25, 
                                    "right-margin", 25, 
                                    NULL);


	gtk_text_buffer_get_start_iter(buffer, &iter);
  
	gtk_text_buffer_insert_with_tags(buffer, &iter,
		   	title, -1, tag, NULL);
	gtk_text_buffer_insert_with_tags(buffer, &iter,
		   	_(intro), -1, tag1, NULL);
	insert_link(buffer, &iter, "http://code.google.com/p/ofetion/");
	gtk_text_buffer_insert_with_tags(buffer, &iter,
		   	_("\nBug report: "), -1, tag1, NULL);
	insert_link(buffer, &iter, "http://code.google.com/p/ofetion/issues/");
	
	gtk_text_buffer_insert_with_tags(buffer, &iter,
		   	_("\n\nPage on author's blog: "), -1, tag1, NULL);
	insert_link(buffer, &iter, "http://basiccoder.com/openfetion");
}
示例#10
0
static void
put_text_in_textview_impl(const gchar * txt, GtkWidget * textview_output)
{
    GtkTextBuffer * text_buffer;
    GtkTextIter end;
    GtkTextTag *tt;
    GtkTextTagTable *tt_table;

    text_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview_output));
    tt_table = gtk_text_buffer_get_tag_table(text_buffer);    
    tt = gtk_text_tag_table_lookup(tt_table, "mono");

    if (!tt)
    {
#ifdef win32
	tt = gtk_text_buffer_create_tag(text_buffer, "mono", 
					"font", "Courier", NULL);
#else
	tt = gtk_text_buffer_create_tag(text_buffer, "mono", "font", "Mono",
                                        "size-points", (double)8.0, NULL);
#endif
    }

    if (gtk_text_buffer_get_char_count(text_buffer) > 0)
    {
        GtkTextIter b, e;

        gtk_text_buffer_get_start_iter(text_buffer, &b);
        gtk_text_buffer_get_end_iter(text_buffer, &e);
        gtk_text_buffer_delete(text_buffer, &b, &e);
    }

    gtk_text_buffer_get_end_iter(text_buffer, &end);
    gtk_text_buffer_insert_with_tags(text_buffer, &end, txt, -1, tt, NULL);
}
示例#11
0
void fill_query_results(void)
{
  GtkTextIter iter, start, end; 

	/* Clear the buffer first */
  if (food_db_buffer != NULL)
  {
    gtk_text_buffer_get_start_iter (food_db_buffer,&start);
    gtk_text_buffer_get_end_iter (food_db_buffer,&end);
    //gtk_text_buffer_remove_all_tags(food_db_buffer, &start, &end);
	  gtk_text_buffer_delete (food_db_buffer,&start,&end);
  } 	

	/* Iterator is used to traverse line by line. */
  gtk_text_buffer_get_iter_at_offset(food_db_buffer, &iter, 0);

	if(flag == FALSE) {
    hlink = gtk_text_buffer_create_tag (food_db_buffer, "hlink", "foreground",
	  "#0000ff", NULL);
		flag = TRUE;
	}
	
	/* Values and row_count are two shared structures included from sqlite
	 * which are filled upon execution of a database query
	 */
	int i;
	for(i=0; i<row_count; i++) {
		//g_print("%s\n", values[i]);
	  //gtk_text_buffer_insert(food_db_buffer, &iter, values[i], -1);
    gtk_text_buffer_insert_with_tags(food_db_buffer,&iter,(const gchar*)values[i],-1,hlink,NULL); 		
	  gtk_text_buffer_insert(food_db_buffer, &iter, "\n", -1);
	}
}
示例#12
0
static G_GNUC_PRINTF(3, 4) void appendf(struct log_s *log, const char *colname,
		    const char *fmt, ...) {
  va_list args;
  va_start( args, fmt );
  char *buf = g_strdup_vprintf(fmt, args);
  va_end( args );

  printf("%s", buf);

  GtkTextTag *tag = NULL;
  if(colname)
    tag = gtk_text_buffer_create_tag(log->buffer, NULL,
				     "foreground", colname,
				     NULL);

  GtkTextIter end;
  gtk_text_buffer_get_end_iter(log->buffer, &end);
  if(tag)
    gtk_text_buffer_insert_with_tags(log->buffer, &end, buf, -1, tag, NULL);
  else
    gtk_text_buffer_insert(log->buffer, &end, buf, -1);

  g_free(buf);

  gtk_text_view_scroll_to_iter(GTK_TEXT_VIEW(log->view),
			       &end, 0.0, FALSE, 0, 0);

  while(gtk_events_pending())
    gtk_main_iteration();
}
示例#13
0
static void _document_load_write_node(GHtml * ghtml, XMLNode * node)
{
	GtkTextIter iter;

	if(node == NULL)
		return;
	switch(node->type)
	{
		case XML_NODE_TYPE_DATA:
			if(ghtml->position == GHTML_POSITION_HEAD_TITLE)
			{
				free(ghtml->title);
				ghtml->title = strdup(node->data.buffer);
				surfer_set_title(ghtml->surfer, ghtml->title);
				break;
			}
			else if(ghtml->position != GHTML_POSITION_BODY)
				break;
			/* FIXME looks like memory corruption at some point */
			gtk_text_buffer_get_end_iter(ghtml->tbuffer, &iter);
			gtk_text_buffer_insert_with_tags(ghtml->tbuffer, &iter,
					node->data.buffer, node->data.size,
					ghtml->tag, NULL);
			break;
		case XML_NODE_TYPE_ENTITY:
			_document_load_write_node_entity(ghtml, &node->entity);
			break;
		case XML_NODE_TYPE_TAG:
			_document_load_write_node_tag(ghtml, &node->tag);
			break;
	}
}
示例#14
0
void *catch_info(void *arg)
{
	FILE *f;
	char buf[100];
	GtkTextIter end;
	GtkTextTag *tag;

	f = fdopen(fd_info[0], "r");

	while (!feof (f)) {
		fgets (buf, 100, f);
		gtk_text_buffer_get_end_iter(text1b, &end);
		tag = gtk_text_buffer_create_tag(text1b, NULL,
						"foreground", "black", NULL);
		gtk_text_buffer_insert_with_tags(text1b, &end, buf, -1,
								tag, NULL);

		if (!strncmp(buf, "Estimated time :", 16))
			break;
	}

	fclose(f);

	pthread_exit(NULL);
}
static void
fill_buffer (GtkTextBuffer *buffer,
	     GtkTextTag    *tag)
{
	GtkTextIter iter;

	gtk_text_buffer_set_text (buffer, "", 0);

	gtk_text_buffer_get_start_iter (buffer, &iter);
	gtk_text_buffer_insert (buffer, &iter,
				"---\n"
				"\tText without draw-spaces tag.\n"
				"\tNon-breaking whitespace: .\n"
				"\tTrailing spaces.\t  \n"
				"---\n\n",
				-1);

	gtk_text_buffer_insert_with_tags (buffer, &iter,
					  "---\n"
					  "\tText with draw-spaces tag.\n"
					  "\tNon-breaking whitespace: .\n"
					  "\tTrailing spaces.\t  \n"
					  "---",
					  -1,
					  tag,
					  NULL);
}
示例#16
0
static void create_author(GtkTextView *view)
{
	GtkTextTag    *tag;
	GtkTextTag    *tag1;
	GtkTextIter    iter;
	const char title[] = "Levin\n\n";
	const char *intro = _("Graduate student at Beijing University of Post & Telecommunication."
						"Love Linux,Love OpenSource.Started this project in order to help "
						"linux users including myself to get a better way to use fetion.\n\n"
						"Blog:");

	gtk_text_view_set_editable(view,FALSE);
	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(view), GTK_WRAP_WORD_CHAR);
	g_signal_connect (view, "motion-notify-event", 
			G_CALLBACK (motion_notify_event), NULL);
	g_signal_connect(view, "event-after", 
                     G_CALLBACK (event_after), NULL);

	GtkTextBuffer *buffer = gtk_text_view_get_buffer(view);

	tag = gtk_text_buffer_create_tag (buffer, NULL, 
                                    "size", 15 * PANGO_SCALE, 
									"justification", GTK_JUSTIFY_CENTER,
									"weight", PANGO_WEIGHT_BOLD,
                                    NULL);

	tag1 = gtk_text_buffer_create_tag (buffer, NULL, 
                                    "left-margin", 25, 
                                    "right-margin", 25, 
                                    NULL);


	gtk_text_buffer_get_start_iter(buffer, &iter);
  
	gtk_text_buffer_insert_with_tags(buffer, &iter,
		   	title, -1, tag, NULL);
	gtk_text_buffer_insert_with_tags(buffer, &iter,
		   	intro, -1, tag1, NULL);
	insert_link(buffer, &iter, "http://basiccoder.com");
	gtk_text_buffer_insert_with_tags(buffer, &iter,
		   	"\nE-mail: [email protected]\n", -1, tag1, NULL);
	gtk_text_buffer_insert_with_tags(buffer, &iter,
		   	"Twitter: ", -1, tag1, NULL);
	insert_link(buffer, &iter, "http://twitter.com/levin108");
}
示例#17
0
文件: logfile.c 项目: Pidbip/egtkwave
void log_text_bold(GtkWidget *text, GdkFont *font, char *str)
{
#if defined(WAVE_USE_GTK2) && !defined(GTK_ENABLE_BROKEN)
gtk_text_buffer_insert_with_tags (GTK_TEXT_VIEW (text)->buffer, &GLOBALS->iter_logfile_c_2,
                                 str, -1, GLOBALS->bold_tag_logfile_c_2, GLOBALS->mono_tag_logfile_c_1, GLOBALS->size_tag_logfile_c_1, NULL);
#else
gtk_text_insert (GTK_TEXT (text), font, &text->style->fg[GTK_STATE_SELECTED], &text->style->bg[GTK_STATE_SELECTED], str, -1);
#endif
}
示例#18
0
文件: about.c 项目: jxitc/hybrid
static void create_contri(GtkTextView *view)
{
    GtkTextTag    *tag1;
    GtkTextTag    *tag2;
    GtkTextIter    iter;

    gtk_text_view_set_editable(view,FALSE);
    gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(view), GTK_WRAP_WORD_CHAR);
    g_signal_connect (view, "motion-notify-event",
                      G_CALLBACK (motion_notify_event), NULL);
    g_signal_connect(view, "event-after",
                     G_CALLBACK (event_after), NULL);

    GtkTextBuffer *buffer = gtk_text_view_get_buffer(view);

    tag1 = gtk_text_buffer_create_tag (buffer, NULL,
                                       "left-margin", 25,
                                       "right-margin", 25,
                                       NULL);

    tag2 = gtk_text_buffer_create_tag (buffer, NULL,
                                       "left-margin", 25,
                                       "weight", PANGO_WEIGHT_BOLD,
                                       NULL);

    gtk_text_buffer_get_start_iter(buffer, &iter);

    gtk_text_buffer_insert(buffer, &iter, "\n\n", 2);

    gtk_text_buffer_insert_with_tags(buffer, &iter,
                                     "Levin Li <", -1, tag1, NULL);
    insert_link(buffer, &iter, "*****@*****.**", "mailto:[email protected]");
    gtk_text_buffer_insert(buffer, &iter, ("> ("), 3);
    insert_link(buffer, &iter, "@levin108", "http://twitter.com/levin108");
    gtk_text_buffer_insert(buffer, &iter, (")\n"), 2);

    gtk_text_buffer_insert_with_tags(buffer, &iter,
                                     "Yichao Yu <", -1, tag1, NULL);
    insert_link(buffer, &iter, "*****@*****.**", "mailto:[email protected]");
    gtk_text_buffer_insert(buffer, &iter, ("> ("), 3);
    insert_link(buffer, &iter, "@yuyichao", "http://twitter.com/yuyichao");
    gtk_text_buffer_insert(buffer, &iter, (")\n"), 2);

}
示例#19
0
static void text_insert_msg(const char *title, const char *message)
{
	GtkTextBuffer *buffer;
	GtkTextIter start, end;
	const char *msg = message;

	buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_w));
	gtk_text_buffer_get_bounds(buffer, &start, &end);
	gtk_text_buffer_delete(buffer, &start, &end);
	gtk_text_view_set_left_margin(GTK_TEXT_VIEW(text_w), 15);

	gtk_text_buffer_get_end_iter(buffer, &end);
	gtk_text_buffer_insert_with_tags(buffer, &end, title, -1, tag1,
					 NULL);
	gtk_text_buffer_insert_at_cursor(buffer, "\n\n", 2);
	gtk_text_buffer_get_end_iter(buffer, &end);
	gtk_text_buffer_insert_with_tags(buffer, &end, msg, -1, tag2,
					 NULL);
}
示例#20
0
文件: Debugger.c 项目: wrapl/wrapl
static void add_line(module_t *Module, const char *Line) {
// 	printf("Adding line to %s: %s\n", Module->Name, Line);
	gdk_threads_enter();
	GtkTextIter Iter;
	gtk_text_buffer_get_end_iter(Module->Source, &Iter);
	gtk_text_buffer_insert_pixbuf(Module->Source, &Iter, NoBreakpointPixbuf);
	gtk_text_buffer_insert_with_tags(Module->Source, &Iter, Line, strlen(Line), SourceTag, 0);
	Module->NoOfLines++;
	gdk_threads_leave();
};
示例#21
0
void context_output(int fd, const char *text, gint length)
{
	static int last_fd = -1;
	GtkTextIter end;
	gchar *utf8;

	gtk_text_buffer_get_end_iter(context, &end);

	if (last_fd == 3 && fd != 0)
		gtk_text_buffer_insert(context, &end, "\n", 1);

	if (fd != last_fd)
		last_fd = fd;

	if (length == -1)
		length = strlen(text);

	dc_chars += length;
	utf8 = g_locale_to_utf8(text, length, NULL, NULL, NULL);

	if (utf8)
	{
		gtk_text_buffer_insert_with_tags(context, &end, utf8, -1, fd_tags[fd], NULL);
		g_free(utf8);
	}
	else
		gtk_text_buffer_insert_with_tags(context, &end, text, length, fd_tags[fd], NULL);

	if (dc_chars > DC_LIMIT + (DC_DELTA / 2))
	{
		GtkTextIter start, delta;

		gtk_text_buffer_get_start_iter(context, &start);
		gtk_text_buffer_get_iter_at_offset(context, &delta, DC_DELTA);
		gtk_text_buffer_delete(context, &start, &delta);
		gtk_text_buffer_get_end_iter(context, &end);
		dc_chars = gtk_text_buffer_get_char_count(context);
	}

	gtk_text_buffer_place_cursor(context, &end);
	gtk_text_view_scroll_mark_onscreen(debug_context, gtk_text_buffer_get_insert(context));
}
示例#22
0
/**
 * \internal
 */
static void
validate_insert_text_valist(struct validate *validate, GtkTextTag * text_tag, GtkTextIter * iter, const gchar * format, va_list argp)
{
	if (format == NULL)
		return;

	gchar *string;
	string = g_strdup_vprintf(format, argp);
	gtk_text_buffer_insert_with_tags(validate->text_buffer, iter, string, -1, text_tag, NULL);
	g_free(string);
}
示例#23
0
static void gglk_textbuffer_put_buffer(GtkWidget *widget,
				       const glui32 *buf, int len)
{
    GglkTextBuffer *tb = GGLK_TEXTBUFFER(widget);
    char *utfstr;
    utfstr = g_ucs4_to_utf8(buf, len, NULL, NULL, NULL);
    gtk_text_buffer_insert_with_tags(tb->base.buffer, &tb->base.iter,
				     utfstr, -1,
				     tb->base.style_tag,
				     NULL);
    g_free(utfstr);
}
示例#24
0
void
_gcr_display_view_append_heading (GcrDisplayView *self, GcrRenderer *renderer, const gchar *heading)
{
	GcrDisplayItem *item;
	GtkTextIter iter;

	g_return_if_fail (GCR_IS_DISPLAY_VIEW (self));
	g_return_if_fail (heading);

	item = lookup_display_item (self, renderer);
	g_return_if_fail (item);

	if (item->details && !item->expanded)
		return;

	gtk_text_buffer_get_iter_at_mark (self->pv->buffer, &iter, item->ending);
	gtk_text_buffer_insert_with_tags (self->pv->buffer, &iter, heading, -1,
	                                  self->pv->heading_tag, item->extra_tag, NULL);
	gtk_text_buffer_insert_with_tags (self->pv->buffer, &iter, "\n", 1,
	                                  item->extra_tag, NULL);
}
示例#25
0
static void
app_text_print (const char *line, PrintFormat format, gboolean newline)
{
	GtkTextIter iter;

	gtk_text_buffer_get_end_iter (app->text_buffer, &iter);
	gtk_text_buffer_insert_with_tags (
		app->text_buffer, &iter, line, -1, app->text_tags[format], NULL);
	if (newline) {
		gtk_text_buffer_insert (app->text_buffer, &iter, "\n", -1);
	}
	gtk_text_view_scroll_mark_onscreen (app->text_view, app->text_end);
}
示例#26
0
文件: about.c 项目: jxitc/hybrid
static void create_intro(GtkTextView *view)
{
    GtkTextTag  *tag1;
    GtkTextIter  iter;
    const char intro[] = N_("Hybrid is a lightweight extensible IM framework,"
                            "currently supports China Mobile Fetion protocol,"
                            "XMPP protocol, and IMAP mail notifier.\n\n\n");

    gtk_text_view_set_editable(view,FALSE);
    gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(view), GTK_WRAP_WORD_CHAR);
    g_signal_connect (view, "motion-notify-event",
                      G_CALLBACK (motion_notify_event), NULL);
    g_signal_connect(view, "event-after",
                     G_CALLBACK (event_after), NULL);

    GtkTextBuffer *buffer = gtk_text_view_get_buffer(view);

    tag1 = gtk_text_buffer_create_tag (buffer, NULL,
                                       "left-margin", 25,
                                       "right-margin", 25,
                                       NULL);


    gtk_text_buffer_get_start_iter(buffer, &iter);

    gtk_text_buffer_insert(buffer, &iter, "\n\n", 2);

    gtk_text_buffer_insert_with_tags(buffer, &iter,
                                     _(intro), -1, tag1, NULL);

    gtk_text_buffer_insert_with_tags(buffer, &iter,
                                     _("\nWebsite: "), -1, tag1, NULL);
    insert_link(buffer, &iter,
                "https://github.com/levin108/hybrid", NULL);

    gtk_text_buffer_insert_with_tags(buffer, &iter,
                                     _("\nBug report: "), -1, tag1, NULL);
    insert_link(buffer, &iter, "https://github.com/levin108/hybrid/issues", NULL);
}
示例#27
0
static void
add_text (GtkTextBuffer *buffer, GtkTextTag *tag, GtkTextIter *pos,
          const gchar *header, const gchar *text)
{
  if (text && *text != '\0')
    {
      gtk_text_buffer_insert (buffer, pos, "\n", 1);
      gtk_text_buffer_insert_with_tags (buffer, pos, header, -1, tag, NULL);
      gtk_text_buffer_insert (buffer, pos, "\n", 1);
      gtk_text_buffer_insert (buffer, pos, text, -1);
      gtk_text_buffer_insert (buffer, pos, "\n", 1);
    }
}
示例#28
0
static void 
insert_link (GtkTextBuffer *buffer, 
             GtkTextIter   *iter, 
             gchar         *text)
{
  GtkTextTag *tag;
  
  tag = gtk_text_buffer_create_tag (buffer, NULL, 
                                    "foreground", "blue", 
                                    "underline", PANGO_UNDERLINE_SINGLE, 
                                    NULL);
  g_object_set_data (G_OBJECT (tag), "url", text);
  gtk_text_buffer_insert_with_tags (buffer, iter, text, -1, tag, NULL);
}
示例#29
0
文件: gconf.c 项目: Reedgarden/WRS-SW
static void text_insert_help(struct menu *menu)
{
	GtkTextBuffer *buffer;
	GtkTextIter start, end;
	const char *prompt = _(menu_get_prompt(menu));
	struct gstr help = str_new();

	menu_get_ext_help(menu, &help);

	buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_w));
	gtk_text_buffer_get_bounds(buffer, &start, &end);
	gtk_text_buffer_delete(buffer, &start, &end);
	gtk_text_view_set_left_margin(GTK_TEXT_VIEW(text_w), 15);

	gtk_text_buffer_get_end_iter(buffer, &end);
	gtk_text_buffer_insert_with_tags(buffer, &end, prompt, -1, tag1,
					 NULL);
	gtk_text_buffer_insert_at_cursor(buffer, "\n\n", 2);
	gtk_text_buffer_get_end_iter(buffer, &end);
	gtk_text_buffer_insert_with_tags(buffer, &end, str_get(&help), -1, tag2,
					 NULL);
	str_free(&help);
}
示例#30
0
static FmJobErrorAction on_error(FmFileOpsJob* job, GError* err, FmJobErrorSeverity severity, FmProgressDisplay* data)
{
    GtkTextIter it;
    if(err->domain == G_IO_ERROR)
    {
        if(err->code == G_IO_ERROR_CANCELLED)
            return FM_JOB_ABORT;
        else if(err->code == G_IO_ERROR_FAILED_HANDLED)
            return FM_JOB_CONTINUE;
    }

    if(data->timer)
        g_timer_stop(data->timer);

    data->has_error = TRUE;

    ensure_dlg(data);

/*
    FIXME: Need to mount volumes on demand here, too.
    if( err->domain == G_IO_ERROR )
    {
        if( err->code == G_IO_ERROR_NOT_MOUNTED && severity < FM_JOB_ERROR_CRITICAL )
            if(fm_mount_path(parent, dest_path))
                return FM_JOB_RETRY;
    }
*/

    gtk_text_buffer_get_end_iter(data->error_buf, &it);
    if(data->cur_file == NULL)
        g_warning("FmProgressDialog on_error: assertion `cur_file != NULL' failed");
    if(data->cur_file || data->old_cur_file)
    {
        gtk_text_buffer_insert_with_tags(data->error_buf, &it,
                                     data->cur_file ? data->cur_file : data->old_cur_file,
                                     -1, data->bold_tag, NULL);
        gtk_text_buffer_insert(data->error_buf, &it, _(": "), -1);
    }
    gtk_text_buffer_insert(data->error_buf, &it, err->message, -1);
    gtk_text_buffer_insert(data->error_buf, &it, "\n", 1);

    if(!gtk_widget_get_visible(data->error_pane))
        gtk_widget_show(data->error_pane);

    if(data->timer)
        g_timer_continue(data->timer);
    return FM_JOB_CONTINUE;
}