static void
ide_highlight_engine__unbind_buffer_cb (IdeHighlightEngine  *self,
                                        EggSignalGroup      *group)
{
    GtkTextBuffer *text_buffer;
    GtkTextTagTable *tag_table;
    GtkTextIter begin;
    GtkTextIter end;
    GSList *iter;

    IDE_ENTRY;

    g_assert (IDE_IS_HIGHLIGHT_ENGINE (self));
    g_assert (EGG_IS_SIGNAL_GROUP (group));

    text_buffer = GTK_TEXT_BUFFER (self->buffer);

    if (self->work_timeout)
    {
        g_source_remove (self->work_timeout);
        self->work_timeout = 0;
    }

    g_object_set_qdata (G_OBJECT (text_buffer), gEngineQuark, NULL);

    tag_table = gtk_text_buffer_get_tag_table (text_buffer);

    gtk_text_buffer_delete_mark (text_buffer, self->invalid_begin);
    gtk_text_buffer_delete_mark (text_buffer, self->invalid_end);

    self->invalid_begin = NULL;
    self->invalid_end = NULL;

    gtk_text_buffer_get_bounds (text_buffer, &begin, &end);

    for (iter = self->private_tags; iter; iter = iter->next)
    {
        gtk_text_buffer_remove_tag (text_buffer, iter->data, &begin, &end);
        gtk_text_tag_table_remove (tag_table, iter->data);
    }
    g_clear_pointer (&self->private_tags, g_slist_free);

    for (iter = self->public_tags; iter; iter = iter->next)
    {
        gtk_text_buffer_remove_tag (text_buffer, iter->data, &begin, &end);
        gtk_text_tag_table_remove (tag_table, iter->data);
    }
    g_clear_pointer (&self->public_tags, g_slist_free);

    ide_clear_weak_pointer (&self->buffer);

    IDE_EXIT;
}
Пример #2
0
static void
gtkspell_free(GtkSpell *spell) {
	GtkTextBuffer *buffer;
	GtkTextTagTable *table;
	GtkTextIter start, end;

	buffer = gtk_text_view_get_buffer(spell->view);
	table = gtk_text_buffer_get_tag_table(buffer);

	gtk_text_buffer_get_bounds(buffer, &start, &end);
	gtk_text_buffer_remove_tag(buffer, spell->tag_highlight, &start, &end);
	gtk_text_tag_table_remove(table, spell->tag_highlight);

	gtk_text_buffer_delete_mark(buffer, spell->mark_insert);

	delete_aspell_speller(spell->speller);

	g_signal_handlers_disconnect_matched(spell->view,
			G_SIGNAL_MATCH_DATA,
			0, 0, NULL, NULL,
			spell);
	g_signal_handlers_disconnect_matched(buffer,
			G_SIGNAL_MATCH_DATA,
			0, 0, NULL, NULL,
			spell);
	g_free(spell);
}
static void
on_line_spacing_changed_cb (GbpLineSpacingBufferAddin *self,
                            const gchar               *key,
                            GSettings                 *settings)
{
  gint spacing;

  g_assert (GBP_IS_LINE_SPACING_BUFFER_ADDIN (self));
  g_assert (IDE_IS_BUFFER (self->buffer));
  g_assert (G_IS_SETTINGS (settings));

  if (self->tag != NULL)
    {
      GtkTextTagTable *table = gtk_text_buffer_get_tag_table (GTK_TEXT_BUFFER (self->buffer));
      gtk_text_tag_table_remove (table, self->tag);
      self->tag = NULL;
    }

  spacing = g_settings_get_int (settings, "line-spacing");

  if (spacing > 0)
    {
      self->tag = gtk_text_buffer_create_tag (GTK_TEXT_BUFFER (self->buffer), NULL,
                                              "pixels-above-lines", spacing,
                                              "pixels-below-lines", spacing,
                                              NULL);
      gbp_line_spacing_buffer_addin_apply (self);
    }
}
Пример #4
0
static VALUE
rg_remove(VALUE self, VALUE tag)
{
    G_CHILD_REMOVE(self, tag);
    gtk_text_tag_table_remove(_SELF(self), RVAL2GTKTEXTTAG(tag));
    return self;
}
Пример #5
0
void
e_buffer_tagger_disconnect (GtkTextView *textview)
{
	GtkTextBuffer *buffer;
	GtkTextTagTable *tag_table;
	GtkTextTag *tag;

	g_return_if_fail (textview != NULL);
	g_return_if_fail (GTK_IS_TEXT_VIEW (textview));

	buffer = gtk_text_view_get_buffer (textview);
	tag_table = gtk_text_buffer_get_tag_table (buffer);
	tag = gtk_text_tag_table_lookup (tag_table, E_BUFFER_TAGGER_LINK_TAG);

	/* if tag is not there, then it is not connected, thus claim */
	g_return_if_fail (tag != NULL);

	gtk_text_tag_table_remove (tag_table, tag);

	set_state (buffer, E_BUFFER_TAGGER_STATE_NONE);

	g_signal_handlers_disconnect_by_func (buffer, G_CALLBACK (buffer_insert_text), NULL);
	g_signal_handlers_disconnect_by_func (buffer, G_CALLBACK (buffer_delete_range), NULL);
	g_signal_handlers_disconnect_by_func (buffer, G_CALLBACK (buffer_cursor_position), NULL);

	gtk_widget_set_has_tooltip (GTK_WIDGET (textview), FALSE);

	g_signal_handlers_disconnect_by_func (textview, G_CALLBACK (textview_query_tooltip), NULL);
	g_signal_handlers_disconnect_by_func (textview, G_CALLBACK (textview_key_press_event), NULL);
	g_signal_handlers_disconnect_by_func (textview, G_CALLBACK (textview_event_after), NULL);
	g_signal_handlers_disconnect_by_func (textview, G_CALLBACK (textview_motion_notify_event), NULL);
	g_signal_handlers_disconnect_by_func (textview, G_CALLBACK (textview_visibility_notify_event), NULL);
}
static void
remove_tag_cb (GbColorPickerDocumentMonitor *self,
               GtkTextTag                   *tag,
               GtkTextIter                  *start,
               GtkTextIter                  *end,
               GtkTextBuffer                *buffer)
{
  GtkTextTagTable *tag_table;
  g_autofree gchar *name = NULL;
  Position spos;
  Position epos;

  g_assert (GB_IS_COLOR_PICKER_DOCUMENT_MONITOR (self));
  g_assert (GTK_IS_TEXT_BUFFER (buffer));
  g_assert (GTK_IS_TEXT_TAG (tag));

  position_save (&spos, start);
  position_save (&epos, end);

  tag_table = gtk_text_buffer_get_tag_table (GTK_TEXT_BUFFER (self->buffer));
  g_object_get (G_OBJECT (tag), "name", &name, NULL);

  if (!dzl_str_empty0 (name) &&
      g_str_has_prefix (name, COLOR_TAG_PREFIX) &&
      gtk_text_tag_table_lookup (tag_table, name))
    gtk_text_tag_table_remove (tag_table, tag);

  position_restore (&spos, buffer, start);
  position_restore (&epos, buffer, end);
}
Пример #7
0
void GtkTextTagTable_::remove(Php::Parameters &parameters)
{
	GtkTextTag *tag;
	if(parameters.size() > 0) {
		Php::Value object_tag = parameters[0];
		GtkTextTag_ *phpgtk_tag = (GtkTextTag_ *)object_tag.implementation();
		tag = (phpgtk_tag->get_tag());
	}

	gtk_text_tag_table_remove (GTK_TEXT_TAG_TABLE(instance), tag);

}
Пример #8
0
/*#
    @method remove GtkTextTagTable
    @brief Remove a tag from the table.
    @param tag a GtkTextTag
 */
FALCON_FUNC TextTagTable::remove( VMARG )
{
    Item* i_tag = vm->param( 0 );
#ifndef NO_PARAMETER_CHECK
    if ( !i_tag || i_tag->isNil() || !i_tag->isObject()
        || !IS_DERIVED( i_tag, GtkTextTag ) )
        throw_inv_params( "GtkTextTag" );
#endif
    GtkTextTag* tag = (GtkTextTag*) COREGOBJECT( i_tag )->getObject();
    MYSELF;
    GET_OBJ( self );
    gtk_text_tag_table_remove( (GtkTextTagTable*)_obj, tag );
}
Пример #9
0
static GdkAtom
setup_buffer (GtkTextBuffer *buffer)
{
  const guint tlen = strlen (example_text);
  const guint tcount = 17;
  GtkTextTag **tags;
  GtkTextTagTable *ttable = gtk_text_buffer_get_tag_table (buffer);
  GSList *node, *slist = NULL;
  GdkAtom atom;
  guint i;

  tags = g_malloc (sizeof (GtkTextTag *) * tcount);

  /* cleanup */
  gtk_text_buffer_set_text (buffer, "", 0);
  gtk_text_tag_table_foreach (ttable, text_tag_enqueue, &slist);
  for (node = slist; node; node = node->next)
    gtk_text_tag_table_remove (ttable, node->data);
  g_slist_free (slist);

  /* create new tags */
  for (i = 0; i < tcount; i++)
    {
      char *s = g_strdup_printf ("tag%u", i);
      tags[i] = gtk_text_buffer_create_tag (buffer, s,
                                            "weight", quick_rand32() >> 31 ? PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL,
                                            "style", quick_rand32() >> 31 ? PANGO_STYLE_OBLIQUE : PANGO_STYLE_NORMAL,
                                            "underline", quick_rand32() >> 31,
                                            NULL);
      g_free (s);
    }

  /* assign text and tags */
  gtk_text_buffer_set_text (buffer, example_text, -1);
  for (i = 0; i < tcount * 5; i++)
    {
      gint a = quick_rand32() % tlen, b = quick_rand32() % tlen;
      GtkTextIter start, end;
      gtk_text_buffer_get_iter_at_offset (buffer, &start, MIN (a, b));
      gtk_text_buffer_get_iter_at_offset (buffer, &end,   MAX (a, b));
      gtk_text_buffer_apply_tag (buffer, tags[i % tcount], &start, &end);
    }

  /* return serialization format */
  atom = gtk_text_buffer_register_deserialize_tagset (buffer, NULL);
  gtk_text_buffer_deserialize_set_can_create_tags (buffer, atom, TRUE);

  g_free (tags);

  return atom;
}
Пример #10
0
static void
destroy_display_item (gpointer data)
{
	GcrDisplayItem *item = data;
	GtkTextTagTable *tags;
	GcrDisplayView *self;

	g_assert (item);

	g_assert (GCR_IS_DISPLAY_VIEW (item->display_view));
	self = item->display_view;

	tags = gtk_text_buffer_get_tag_table (self->pv->buffer);
	gtk_text_tag_table_remove (tags, item->field_tag);
	gtk_text_tag_table_remove (tags, item->details_tag);

	g_object_unref (item->field_tag);
	g_object_unref (item->details_tag);

	if (item->pixbuf)
		g_object_unref (item->pixbuf);
	item->pixbuf = NULL;

	g_assert (item->details_widget);
	g_object_unref (item->details_widget);
	item->details_widget = NULL;

	g_return_if_fail (!gtk_text_mark_get_deleted (item->beginning));
	gtk_text_buffer_delete_mark (self->pv->buffer, item->beginning);
	g_object_unref (item->beginning);

	g_return_if_fail (!gtk_text_mark_get_deleted (item->ending));
	gtk_text_buffer_delete_mark (self->pv->buffer, item->ending);
	g_object_unref (item->ending);

	g_free (item);
}
Пример #11
0
static void highlight_remove_tags (guint id)
{
        guint n;

        for (n = 0; n < HIGHLIGHT_MATCHES; n++) {
                GtkTextTag *tag;
                char *name;

                name = mangle_name (id, n);
                tag = gtk_text_tag_table_lookup (highlight_tag_table, name);
                g_assert (tag != NULL);
                gtk_text_tag_table_remove (highlight_tag_table, tag);
                debug ("removed tag %s\n", name);
                next_priority--;
        }
}
Пример #12
0
Файл: color.c Проект: Moeryn/bmc
/**
 * \fn void set_tags(GtkTextBuffer *buffer)
 * \brief This function creates a tag for each color 
 * which is in the GdkColor table
 */
void set_tags(GtkTextBuffer *buffer) {
    GtkTextIter start, end;
    GtkTextTagTable *tag_table = gtk_text_buffer_get_tag_table(buffer);

    gtk_text_buffer_get_start_iter(buffer, &start);
    gtk_text_buffer_get_end_iter(buffer, &end);
    
    GtkTextTag *tag;
    int i;
    for(i = 0; i< NB_TYPES; i++) {
	tag = gtk_text_tag_table_lookup(tag_table, type_table[i]);
	if(tag) 
	    gtk_text_tag_table_remove(tag_table, tag);
	
	gtk_text_buffer_create_tag(buffer, type_table[i], "foreground", 
				   gdk_color_to_string(&color_table[i]), NULL); 
    }
}
Пример #13
0
static void
gbp_spell_buffer_addin_unload (IdeBufferAddin *addin,
                               IdeBuffer      *buffer)
{
  GbpSpellBufferAddin *self = (GbpSpellBufferAddin *)addin;

  IDE_ENTRY;

  g_assert (GBP_IS_SPELL_BUFFER_ADDIN (self));
  g_assert (IDE_IS_BUFFER (buffer));

  g_signal_handlers_disconnect_by_func (buffer,
                                        G_CALLBACK (update_style_scheme),
                                        self);
  gtk_text_tag_table_remove (gtk_text_buffer_get_tag_table (GTK_TEXT_BUFFER (buffer)),
                             self->misspelled_tag);
  self->misspelled_tag = NULL;

  self->buffer = NULL;
  gbp_spell_buffer_addin_apply (self);

  IDE_EXIT;
}
Пример #14
0
static void
gedit_automatic_spell_checker_free_internal (GeditAutomaticSpellChecker *spell)
{
	GtkTextTagTable *table;
	GtkTextIter start, end;
	GSList *list;

	g_return_if_fail (spell != NULL);

	table = gtk_text_buffer_get_tag_table (GTK_TEXT_BUFFER (spell->doc));

	if (table != NULL && spell->tag_highlight != NULL)
	{
		gtk_text_buffer_get_bounds (GTK_TEXT_BUFFER (spell->doc),
					    &start,
					    &end);
		gtk_text_buffer_remove_tag (GTK_TEXT_BUFFER (spell->doc),
					    spell->tag_highlight,
					    &start,
					    &end);

		g_signal_handlers_disconnect_matched (G_OBJECT (table),
					G_SIGNAL_MATCH_DATA,
					0, 0, NULL, NULL,
					spell);

		gtk_text_tag_table_remove (table, spell->tag_highlight);
	}

	g_signal_handlers_disconnect_matched (G_OBJECT (spell->doc),
			G_SIGNAL_MATCH_DATA,
			0, 0, NULL, NULL,
			spell);

	g_signal_handlers_disconnect_matched (G_OBJECT (spell->spell_checker),
			G_SIGNAL_MATCH_DATA,
			0, 0, NULL, NULL,
			spell);

	g_object_unref (spell->spell_checker);

	list = spell->views;
	while (list != NULL)
	{
		GeditView *view = GEDIT_VIEW (list->data);

		g_signal_handlers_disconnect_matched (G_OBJECT (view),
				G_SIGNAL_MATCH_DATA,
				0, 0, NULL, NULL,
				spell);

		g_signal_handlers_disconnect_matched (G_OBJECT (view),
			G_SIGNAL_MATCH_DATA,
			0, 0, NULL, NULL,
			spell);

		list = g_slist_next (list);
	}

	g_slist_free (spell->views);

	g_free (spell);
}
Пример #15
0
/* Process plain text in the font table (font names separated by semicolons) */
static void
font_table_text(ParserContext *ctx)
{
	gchar *name, *semicolon, *tagname, *fontstring = NULL;
	FontProperties *fontprop;
	FontTableState *state = (FontTableState *)get_state(ctx);
	GtkTextTag *tag;
	static gchar *font_suggestions[] = {
		"Sans", /* Default font for \fnil */
		"Serif", /* \froman */
		"Sans", /* \fswiss */
		"Monospace", /* \fmodern */
		"Script", /* \fscript */
		NULL, /* \fdecor */
		NULL, /* \ftech */
		NULL /* \fbidi */
	};
	
	name = g_strdup(ctx->text->str);
	semicolon = strchr(name, ';');
	if(!semicolon)
	{
		gchar *newname = g_strconcat(state->name, name, NULL);
		g_free(state->name);
		state->name = newname;
		g_string_truncate(ctx->text, 0);
		return;
	}
	g_string_assign(ctx->text, semicolon + 1); /* Leave the text after the semicolon in the buffer */
	*semicolon = '\0';
	
	fontprop = g_slice_new0(FontProperties);
	fontprop->index = state->index;
	fontprop->codepage = state->codepage;
	fontprop->font_name = g_strconcat(state->name, name, NULL);
	ctx->font_table = g_slist_prepend(ctx->font_table, fontprop);
	
	/* Add the tag to the buffer right now instead of when the font is used,
	since any font might be declared the default font; remove any previous font
	with this font table index first */
	tagname = g_strdup_printf("osxcart-rtf-font-%i", state->index);
    if((tag = gtk_text_tag_table_lookup(ctx->tags, tagname)))
        gtk_text_tag_table_remove(ctx->tags, tag);
    tag = gtk_text_tag_new(tagname);

    if(fontprop->font_name && font_suggestions[state->family])
        fontstring = g_strconcat(fontprop->font_name, 
                                 ",", 
                                 font_suggestions[state->family], 
                                 NULL);
    else if(fontprop->font_name)
        fontstring = g_strdup(fontprop->font_name);
    else if(font_suggestions[state->family])
        fontstring = g_strdup(font_suggestions[state->family]);

    if(fontstring)
    {
        g_object_set(tag, 
                     "family", fontstring, 
                     "family-set", TRUE,
                     NULL);
        g_free(fontstring);
    }
    gtk_text_tag_table_add(ctx->tags, tag);
	g_free(tagname);

	g_free(state->name);
	state->index = 0;
	state->family = FONT_FAMILY_NIL;
	state->codepage = -1;
	state->name = g_strdup("");
}
static void
gb_color_picker_document_monitor_uncolorize (GbColorPickerDocumentMonitor *self,
                                             GtkTextBuffer                *buffer,
                                             GtkTextIter                  *begin,
                                             GtkTextIter                  *end)
{
  GtkTextTagTable *tag_table;
  GtkTextIter real_begin;
  GtkTextIter real_end;

  g_return_if_fail (GB_IS_COLOR_PICKER_DOCUMENT_MONITOR (self));
  g_return_if_fail (GTK_IS_TEXT_BUFFER (buffer));

  tag_table = gtk_text_buffer_get_tag_table (GTK_TEXT_BUFFER (buffer));

  if (begin == NULL && end == NULL)
    {
      g_autoptr(GPtrArray) taglist = g_ptr_array_new_with_free_func (g_free);

      gtk_text_tag_table_foreach (tag_table, (GtkTextTagTableForeach)collect_tag_names, taglist);
      for (guint n = 0; n < taglist->len; ++n)
        gtk_text_tag_table_remove (tag_table, g_ptr_array_index (taglist, n));

      return;
    }

  if (begin == NULL)
    gtk_text_buffer_get_start_iter (GTK_TEXT_BUFFER (buffer), &real_begin);
  else
    real_begin = *begin;

  if (end == NULL)
    gtk_text_buffer_get_end_iter (GTK_TEXT_BUFFER (buffer), &real_end);
  else
    real_end = *end;

  while (TRUE)
    {
      g_autoptr(GSList) tags = NULL;
      GtkTextTag *color_tag = NULL;

      tags = gtk_text_iter_get_toggled_tags (&real_begin, TRUE);

      for (const GSList *l = tags; l != NULL; l = l->next)
        {
          g_autofree gchar *name = NULL;
          GtkTextTag *tag = l->data;

          g_object_get (G_OBJECT (tag), "name", &name, NULL);

          if (name != NULL && g_str_has_prefix (name, COLOR_TAG_PREFIX))
            {
              color_tag = tag;
              break;
            }
        }

      if (color_tag != NULL)
        {
          gtk_text_iter_forward_to_tag_toggle (&real_begin, color_tag);
          gtk_text_tag_table_remove (tag_table, color_tag);
        }

      if (!gtk_text_iter_forward_to_tag_toggle (&real_begin, NULL))
        break;

      if (gtk_text_iter_compare (&real_begin, &real_end) != -1)
        break;
    }
}