static void
disable_bookmarks (PlumaView *view)
{
	GtkTextIter start;
	GtkTextIter end;
	GtkTextBuffer *buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
	gpointer data;

	gtk_source_view_set_show_line_marks (GTK_SOURCE_VIEW (view), FALSE);

	gtk_text_buffer_get_bounds (buffer, &start, &end);
	gtk_source_buffer_remove_source_marks (GTK_SOURCE_BUFFER (buffer),
					       &start,
					       &end,
					       BOOKMARK_CATEGORY);

	g_signal_handlers_disconnect_by_func (buffer, on_style_scheme_notify, view);
	g_signal_handlers_disconnect_by_func (buffer, on_delete_range, NULL);

	data = g_object_get_data (G_OBJECT (buffer), INSERT_DATA_KEY);

	g_signal_handlers_disconnect_by_func (buffer, on_insert_text_before, data);
	g_signal_handlers_disconnect_by_func (buffer, on_begin_user_action, data);
	g_signal_handlers_disconnect_by_func (buffer, on_end_user_action, data);

	g_object_set_data (G_OBJECT (buffer), INSERT_DATA_KEY, NULL);
}
예제 #2
0
void
gui_editor_toggle_mark_at_line (GUIEditor * self, gint line_no)
{
  g_assert (self);

  GtkTextIter line_start, line_end;
  GSList *marker_list;
  GtkSourceMark *marker;

  /* get line bounds */
  gtk_text_buffer_get_iter_at_line (GTK_TEXT_BUFFER (self->buffer), &line_start, line_no);
  line_end = line_start;
  gtk_text_iter_forward_to_line_end (&line_end);

  /* get the breakpoint markers already in the line */
  marker_list = gtk_source_buffer_get_source_marks_at_line (self->buffer, line_no, MARKER_BREAKPOINT);

  if (marker_list != NULL && g_slist_length(marker_list)!=0)
	{
	  /* markers were found, so delete them */
	  gtk_source_buffer_remove_source_marks (self->buffer,  &line_start, &line_end, MARKER_BREAKPOINT);
	}
  else
	{
	  /* no marker found -> create one */
	  marker = gtk_source_buffer_create_source_mark (self->buffer, NULL, MARKER_BREAKPOINT, &(line_start));
	}
  g_slist_free (marker_list);
	
}
예제 #3
0
파일: editor.c 프로젝트: ueno/c-smie
static void
remove_all_marks (GtkSourceBuffer *buffer)
{
  GtkTextIter start;
  GtkTextIter end;

  gtk_text_buffer_get_bounds (GTK_TEXT_BUFFER (buffer), &start, &end);
  gtk_source_buffer_remove_source_marks (buffer, &start, &end, NULL);
}
예제 #4
0
void
gui_editor_clear_all_marks (GUIEditor * self)
{
  GtkTextIter buffer_start, buffer_end;

  /* get buffer bounds */
  gtk_text_buffer_get_bounds (GTK_TEXT_BUFFER(self->buffer), &buffer_start, &buffer_end);

  /* delete all breakpoint mark */
  gtk_source_buffer_remove_source_marks (self->buffer, &buffer_start, &buffer_end, MARKER_BREAKPOINT);

}
예제 #5
0
VISIBLE void removeUserMark(const char *umark,unsigned line)
{
	pageStruct		*page=getPageStructByIDFromPage(-1);
	const gchar		*mark_type;
	GtkTextMark		*mark;
	GtkTextIter		iter;

	if(page==NULL)
	return;
	mark_type=umark;

	if(line<0)
		{
			mark=gtk_text_buffer_get_insert((GtkTextBuffer*)page->buffer);
			gtk_text_buffer_get_iter_at_mark((GtkTextBuffer*)page->buffer,&iter,mark);
		}
	else
		{
			gtk_text_buffer_get_iter_at_line_offset((GtkTextBuffer*)page->buffer,&iter,line,0);
		}
	gtk_source_buffer_remove_source_marks(page->buffer,&iter,&iter,mark_type);
}
예제 #6
0
VISIBLE void removeAllBookmarks(GtkWidget *widget,GtkTextIter *titer)
{
	ERRDATA
	pageStruct	*page=NULL;
	int			numpages;
	GtkTextIter	startiter;
	GtkTextIter	enditer;

	numpages=gtk_notebook_get_n_pages(mainNotebook);
	for(int j=0; j<numpages; j++)
		{
			page=getPageStructByIDFromPage(j);
			if(page!=NULL)
				{
					gtk_text_buffer_get_start_iter((GtkTextBuffer*)page->buffer,&startiter);
					gtk_text_buffer_get_end_iter((GtkTextBuffer*)page->buffer,&enditer);
					gtk_source_buffer_remove_source_marks(page->buffer,&startiter,&enditer,NULL);
				}
		}
	g_list_free_full(newBookMarksList,destroyBMData);
	newBookMarksList=NULL;
	rebuildBookMarkMenu();
	gtk_widget_show_all(bookMarkMenu);
}