static void enable_bookmarks (PlumaView *view, PlumaPlugin *plugin) { GdkPixbuf *pixbuf; pixbuf = get_bookmark_pixbuf (plugin); /* Make sure the category pixbuf is set */ if (pixbuf) { GtkSourceMarkAttributes *attrs; GtkTextBuffer *buffer; InsertData *data; attrs = gtk_source_mark_attributes_new (); buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)); update_background_color (attrs, GTK_SOURCE_BUFFER(buffer)); gtk_source_mark_attributes_set_pixbuf (attrs, pixbuf); g_object_unref (pixbuf); gtk_source_view_set_mark_attributes (GTK_SOURCE_VIEW (view), BOOKMARK_CATEGORY, attrs, BOOKMARK_PRIORITY); gtk_source_view_set_show_line_marks (GTK_SOURCE_VIEW (view), TRUE); g_signal_connect (buffer, "notify::style-scheme", G_CALLBACK (on_style_scheme_notify), view); g_signal_connect_after (buffer, "delete-range", G_CALLBACK (on_delete_range), NULL); data = g_slice_new0 (InsertData); g_object_set_data_full (G_OBJECT (buffer), INSERT_DATA_KEY, data, (GDestroyNotify) free_insert_data); g_signal_connect (buffer, "insert-text", G_CALLBACK (on_insert_text_before), data); g_signal_connect (buffer, "begin-user-action", G_CALLBACK (on_begin_user_action), data); g_signal_connect (buffer, "end-user-action", G_CALLBACK (on_end_user_action), data); } else { g_warning ("Could not set bookmark icon!"); } }
GUIEditor * gui_editor_new (void) { GUIEditor *self; GPtrArray *dirs; const gchar * const *current_search_path; gchar **lang_spec_search_path; self = g_malloc0 (sizeof (GUIEditor)); self->buffer = gtk_source_buffer_new (NULL); self->widget = gtk_source_view_new_with_buffer (self->buffer); self->scroll = gtk_scrolled_window_new (NULL, NULL); gtk_container_add (GTK_CONTAINER (self->scroll), self->widget); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (self->scroll), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gui_editor_set_font (self, DEFAULT_EDITOR_FONT); self->hltag = gtk_text_buffer_create_tag (GTK_TEXT_BUFFER(self->buffer), HIGHLIGHT_TAG, "background", COLOUR_BG_HL, NULL); self->lang_manager = gtk_source_language_manager_new (); self->style_scheme_manager = gtk_source_style_scheme_manager_get_default (); dirs = g_ptr_array_new(); current_search_path = gtk_source_language_manager_get_search_path(self->lang_manager); for (; current_search_path != NULL && *current_search_path != NULL; ++current_search_path) g_ptr_array_add(dirs, g_strdup(*current_search_path)); // look for spec file in our own directory g_ptr_array_add(dirs, g_strdup(PACKAGE_DATA_DIR)); // look for spec file in data directory when running from svn g_ptr_array_add(dirs, g_strdup("data")); // look for spec file in current directory, when running on windows g_ptr_array_add(dirs, g_strdup(".")); g_ptr_array_add(dirs, g_strdup(NULL)); lang_spec_search_path = (gchar **)g_ptr_array_free(dirs, FALSE); gtk_source_language_manager_set_search_path (self->lang_manager, lang_spec_search_path); gtk_source_style_scheme_manager_append_search_path (self->style_scheme_manager, "data"); gtk_source_style_scheme_manager_append_search_path (self->style_scheme_manager, "."); #if GTK_CHECK_VERSION(3, 0, 0) GtkSourceMarkAttributes *mark_attributes = gtk_source_mark_attributes_new (); gtk_source_mark_attributes_set_icon_name (mark_attributes, "gtk-no"); gtk_source_view_set_mark_attributes (GTK_SOURCE_VIEW (self->widget), MARKER_BREAKPOINT, mark_attributes, 0); #else GdkPixbuf *pixbuf; pixbuf = gui_editor_get_stock_icon (GTK_WIDGET(self->widget), GTK_STOCK_NO, GTK_ICON_SIZE_MENU); if (pixbuf) { gtk_source_view_set_mark_category_icon_from_pixbuf (GTK_SOURCE_VIEW (self->widget), MARKER_BREAKPOINT, pixbuf); g_object_unref (pixbuf); } #endif return self; }