static GtkWidget * setup_editor (AppData *data) { GtkSourceBuffer *buffer; GtkSourceLanguageManager *manager; GtkSourceLanguage *lang; GtkWidget *view; manager = gtk_source_language_manager_get_default (); lang = gtk_source_language_manager_get_language (manager, "hip"); buffer = gtk_source_buffer_new_with_language (lang); view = gtk_source_view_new_with_buffer (buffer); gtk_widget_modify_font (view, pango_font_description_from_string ("monospace")); g_object_set (view, "auto-indent", TRUE, "indent-on-tab", TRUE, "indent-width", 8, "show-line-numbers", TRUE, NULL); /* Make it pretty ;) */ gtk_source_buffer_set_style_scheme (buffer, gtk_source_style_scheme_manager_get_scheme ( gtk_source_style_scheme_manager_get_default (), "tango")); gtk_widget_show (view); g_object_unref (buffer); data->text_buffer = GTK_TEXT_BUFFER (buffer); return view; }
SourceView::SourceView (const std::string& language, bool readOnly) { // Set the search path to the language and style files gchar* directories[2]; std::string langFilesDir = GlobalRegistry().get(RKEY_APP_PATH) + "sourceviewer/"; directories[0] = const_cast<gchar*> (langFilesDir.c_str()); // stupid GtkSourceLanguageManager is expecting non-const gchar* pointer... directories[1] = NULL; GtkSourceStyleSchemeManager* styleSchemeManager = gtk_source_style_scheme_manager_get_default(); gtk_source_style_scheme_manager_set_search_path(styleSchemeManager, directories); gtk_source_style_scheme_manager_force_rescan(styleSchemeManager); _langManager = gtk_source_language_manager_new(); gtk_source_language_manager_set_search_path(_langManager, directories); GtkSourceLanguage* lang = gtk_source_language_manager_get_language(_langManager, language.c_str()); if (lang == NULL) { gtkutil::errorDialog(_("Cannot find language for source viewer")); g_error("SourceView: Cannot find language %s\n", language.c_str()); throw std::runtime_error("SourceView: Cannot find language"); } // Remember the pointers to the textbuffers _buffer = gtk_source_buffer_new_with_language(lang); gtk_source_buffer_set_highlight_syntax(_buffer, TRUE); _view = GTK_SOURCE_VIEW(gtk_source_view_new_with_buffer(_buffer)); gtk_widget_set_size_request(GTK_WIDGET(_view), 0, -1); // allow shrinking gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(_view), GTK_WRAP_NONE); gtk_text_view_set_editable(GTK_TEXT_VIEW(_view), readOnly ? FALSE : TRUE); gtk_source_view_set_show_line_numbers(_view, TRUE); gtk_source_view_set_auto_indent(_view, TRUE); // Use a fixed width font PangoFontDescription* fontDesc = pango_font_description_from_string("Monospace"); if (fontDesc != NULL) { gtk_widget_modify_font(GTK_WIDGET(_view), fontDesc); } // Use a tab size of 4 gtk_source_view_set_tab_width(GTK_SOURCE_VIEW(_view), 4); g_signal_connect(G_OBJECT(_view), "key_press_event", G_CALLBACK(escape_clear_focus_widget), 0); _widget = gtkutil::ScrolledFrame(GTK_WIDGET(_view)); }
GtkSourceView * init_buffer_view(GtkSourceBuffer *source_buffer) { GtkSourceView *source_view = GTK_SOURCE_VIEW(gtk_source_view_new_with_buffer(source_buffer)); set_class(GTK_WIDGET(source_view), "editor"); gtk_text_view_set_left_margin(GTK_TEXT_VIEW(source_view), 4); gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(source_view), GTK_WRAP_CHAR); gtk_source_view_set_draw_spaces(source_view, GTK_SOURCE_DRAW_SPACES_TAB); gtk_source_view_set_auto_indent(source_view, TRUE); gtk_source_view_set_indent_on_tab(source_view, TRUE); //gtk_source_view_set_show_line_numbers(source_view, TRUE); return source_view; }
src_view___::src_view___(GtkWidget* scrolled2, void* window):view___(scrolled2, window) { buf_ = GTK_SOURCE_BUFFER (gtk_source_buffer_new (NULL)); widget_ = gtk_source_view_new_with_buffer(buf_); gtk_container_add (GTK_CONTAINER (scrolled2), widget_); GtkSourceView* sv = handle__(); gtk_source_view_set_show_line_numbers(sv, true); gtk_source_view_set_tab_width(sv, 4); gtk_source_view_set_auto_indent (sv, true); gtk_source_view_set_smart_home_end(sv, GTK_SOURCE_SMART_HOME_END_ALWAYS); gtk_source_view_set_draw_spaces (sv, GTK_SOURCE_DRAW_SPACES_ALL); gtk_widget_set_can_focus(widget_, true); }
/* * Class method: new(buffer=nil) * buffer: a Gtk::SourceBuffer object. * * Creates a new Gtk::SourceView. If buffer is not provided or nil, an empty * buffer will be created for you. Note that one buffer can be shared among * many widgets. * * Returns: a newly created Gtk::SourceView object. */ static VALUE rg_initialize(int argc, VALUE *argv, VALUE self) { VALUE buffer; GtkWidget *widget; rb_scan_args(argc, argv, "01", &buffer); if (NIL_P(buffer)) widget = gtk_source_view_new(); else widget = gtk_source_view_new_with_buffer(RVAL2GTKSOURCEBUFFER(buffer)); RBGTK_INITIALIZE(self, widget); return self; }
SourceView::SourceView(GtkSourceBuffer* source_buffer): Gtk::ScrolledWindow(), source_view(GTK_SOURCE_VIEW(gtk_source_view_new_with_buffer(GTK_SOURCE_BUFFER(source_buffer)))) { add(*Glib::wrap(GTK_WIDGET(source_view))); completion = gtk_source_view_get_completion(source_view); completion_words = gtk_source_completion_words_new("Suggestions", nullptr); gtk_source_completion_words_register(completion_words, gtk_text_view_get_buffer(GTK_TEXT_VIEW(source_view))); gtk_source_completion_add_provider(completion, GTK_SOURCE_COMPLETION_PROVIDER(completion_words), nullptr); gtk_source_buffer_set_highlight_matching_brackets(GetSourceBuffer(), TRUE); gtk_source_view_set_show_line_marks(source_view, TRUE); ShowLineNumbers(true); show_all(); }
void init_editor(GtkWidget *box) { //エディタ部分の外観の設定 GtkWidget *notebook = gtk_notebook_new(); scroll_window = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); buffer = gtk_source_buffer_new(NULL); view = gtk_source_view_new_with_buffer(buffer); set_file_name(""); name_label = gtk_label_new("編集中のファイル"); gtk_container_add(GTK_CONTAINER(scroll_window), view); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), scroll_window, name_label); gtk_widget_set_has_tooltip(view, TRUE); gtk_widget_grab_focus(view); set_style(); gtk_box_pack_start(GTK_BOX(box), notebook, TRUE, TRUE, 0); //エディタ部分の動作の初期設定 gtk_source_buffer_set_highlight_matching_brackets(buffer, FALSE); gtk_widget_modify_font(view, pango_font_description_from_string(font_name)); gtk_source_view_set_tab_width(GTK_SOURCE_VIEW(view), state & width_mask); if (state & wrap_mask) { gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(view), GTK_WRAP_CHAR); } else { gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(view), GTK_WRAP_NONE); } if (state & line_mask) { gtk_source_view_set_show_line_numbers(GTK_SOURCE_VIEW(view), TRUE); } else { gtk_source_view_set_show_line_numbers(GTK_SOURCE_VIEW(view), FALSE); } if (state & highlight_mask) { gtk_source_view_set_highlight_current_line(GTK_SOURCE_VIEW(view), TRUE); } else { gtk_source_view_set_highlight_current_line(GTK_SOURCE_VIEW(view), FALSE); } if (state & space_mask) { gtk_source_view_set_insert_spaces_instead_of_tabs(GTK_SOURCE_VIEW(view), TRUE); } else { gtk_source_view_set_insert_spaces_instead_of_tabs(GTK_SOURCE_VIEW(view), FALSE); } }
void GUI::add_program_file(gchar * filepath){ if (this->is_empty_notebook){ this->is_empty_notebook = false; gtk_notebook_remove_page(GTK_NOTEBOOK(this->programs_notebook), this->empty_notebook_index); } GuiNotebookItem notebook_item; notebook_item.vmachine = NULL; notebook_item.filepath = filepath; // netobook label notebook_item.notebook_label_text = this->extract_file_name(notebook_item.filepath); notebook_item.notebook_label = gtk_label_new (notebook_item.notebook_label_text); // create inner notebook vbox notebook_item.notebook_vbox = gtk_vbox_new(FALSE, 0); // create scrolled_window notebook_item.notebook_scrolled_window = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (notebook_item.notebook_scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_box_pack_start (GTK_BOX (notebook_item.notebook_vbox), notebook_item.notebook_scrolled_window, TRUE, // vbox gives widget all remaining space TRUE, // widget expands to fill given space 0); // pixel of padding around the widget // create notebook_source_view notebook_item.source_buffer = gtk_source_buffer_new (NULL); notebook_item.source_view = gtk_source_view_new_with_buffer(notebook_item.source_buffer); gtk_container_add (GTK_CONTAINER (notebook_item.notebook_scrolled_window), notebook_item.source_view); gtk_source_view_set_auto_indent ( GTK_SOURCE_VIEW (notebook_item.source_view), TRUE); // make a tab be two spaces gtk_source_view_set_indent_width (GTK_SOURCE_VIEW (notebook_item.source_view), 2); gtk_source_view_set_highlight_current_line (GTK_SOURCE_VIEW (notebook_item.source_view), TRUE); gtk_source_view_set_show_line_numbers ( GTK_SOURCE_VIEW (notebook_item.source_view), TRUE); gtk_source_view_set_right_margin_position ( GTK_SOURCE_VIEW (notebook_item.source_view), 80); // default is 70 chars gtk_source_view_set_show_right_margin ( GTK_SOURCE_VIEW (notebook_item.source_view), TRUE); gtk_text_view_set_wrap_mode ( GTK_TEXT_VIEW (notebook_item.source_view), GTK_WRAP_WORD_CHAR); gtk_text_view_set_editable ( GTK_TEXT_VIEW (notebook_item.source_view), FALSE); gtk_text_view_set_cursor_visible ( GTK_TEXT_VIEW (notebook_item.source_view), FALSE); /* setup view */ PangoFontDescription * font_desc = NULL; font_desc = pango_font_description_from_string ("monospace"); if (font_desc != NULL){ gtk_widget_modify_font (notebook_item.source_view, font_desc); pango_font_description_free (font_desc); } // get file content gchar * buffer; GError * error_here = NULL; if (g_file_get_contents (notebook_item.filepath, &buffer, NULL, &error_here)){ gtk_source_buffer_begin_not_undoable_action (notebook_item.source_buffer); gtk_source_buffer_begin_not_undoable_action (notebook_item.source_buffer); gtk_text_buffer_set_text (GTK_TEXT_BUFFER (notebook_item.source_buffer), buffer, -1); gtk_source_buffer_end_not_undoable_action (notebook_item.source_buffer); gtk_text_buffer_set_modified (GTK_TEXT_BUFFER (notebook_item.source_buffer), FALSE); /* move cursor to the beginning */ gtk_text_buffer_get_start_iter (GTK_TEXT_BUFFER (notebook_item.source_buffer), ¬ebook_item.iter); gtk_text_buffer_place_cursor (GTK_TEXT_BUFFER (notebook_item.source_buffer), ¬ebook_item.iter); { GtkTextIter start, end; char *text; gtk_text_buffer_get_bounds (GTK_TEXT_BUFFER (notebook_item.source_buffer), &start, &end); text = gtk_text_buffer_get_text (GTK_TEXT_BUFFER (notebook_item.source_buffer), &start, &end, TRUE); g_assert (!strcmp (text, buffer)); g_free (text); } g_free (buffer); GtkWidget * vm_frame; vm_frame = gtk_frame_new ("VM operations"); // create buttons notebook_item.notebook_button_hbox = gtk_hbox_new (FALSE, 0); notebook_item.run_step_button = gtk_button_new_with_label ("Run Step"); notebook_item.run_button = gtk_button_new_with_label ("Run"); notebook_item.view_vm_mem = gtk_button_new_with_label ("View Vm memory"); // create time out input notebook_item.timeout_field = gtk_entry_new_with_max_length(10); GtkWidget * timeout_label; timeout_label = gtk_label_new("Timeout:"); g_signal_connect (notebook_item.run_step_button, "clicked", G_CALLBACK (GUI::run_step_button_clicked), gpointer(this)); g_signal_connect (notebook_item.run_button, "clicked", G_CALLBACK (GUI::run_button_clicked), gpointer(this)); g_signal_connect (notebook_item.view_vm_mem, "clicked", G_CALLBACK (GUI::view_vm_mem_clicked), gpointer(this)); gtk_box_pack_start (GTK_BOX (notebook_item.notebook_button_hbox), notebook_item.view_vm_mem, FALSE, // vbox gives widget all remaining space FALSE, // widget expands to fill given space 5); // pixel of padding around the widget gtk_box_pack_start (GTK_BOX (notebook_item.notebook_button_hbox), notebook_item.run_step_button, FALSE, // vbox gives widget all remaining space FALSE, // widget expands to fill given space 5); // pixel of padding around the widget gtk_box_pack_start (GTK_BOX (notebook_item.notebook_button_hbox), timeout_label, FALSE, // vbox gives widget all remaining space FALSE, // widget expands to fill given space 5); // pixel of padding around the widget gtk_box_pack_start (GTK_BOX (notebook_item.notebook_button_hbox), notebook_item.timeout_field, FALSE, // vbox gives widget all remaining space FALSE, // widget expands to fill given space 5); // pixel of padding around the widget gtk_box_pack_start (GTK_BOX (notebook_item.notebook_button_hbox), notebook_item.run_button, FALSE, // vbox gives widget all remaining space FALSE, // widget expands to fill given space 5); // pixel of padding around the widget gtk_container_add(GTK_CONTAINER (vm_frame), notebook_item.notebook_button_hbox); gtk_box_pack_start (GTK_BOX (notebook_item.notebook_vbox), vm_frame, FALSE, // vbox gives widget all remaining space FALSE, // widget expands to fill given space 5); gtk_notebook_append_page( GTK_NOTEBOOK(this->programs_notebook), notebook_item.notebook_vbox, notebook_item.notebook_label); this->gui_notebook_item_list.push_back(notebook_item); gtk_widget_show_all(this->programs_notebook); } else { g_print("WRONG \n"); } }
int main (int argc, char *argv[]){ GtkWidget *button = NULL, *win = NULL, *vbox = NULL, *vbox2 = NULL, *halign = NULL, *buttonbox = NULL, *scrl1 = NULL, *scrl2 = NULL, *sourceview = NULL; GtkSourceLanguageManager *gsv_lm = NULL; GtkSourceLanguage *gsv_lang = NULL; gchar *searchpaths[] = {"./","/usr/share/gtksourceview-2.0/language-specs/",0}; /* Initialize GTK+ */ g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, (GLogFunc) gtk_false, NULL); gtk_init (&argc, &argv); g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, g_log_default_handler, NULL); /* Create the main window */ win = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_container_set_border_width (GTK_CONTAINER (win), 8); gtk_window_set_title (GTK_WINDOW (win), TITLE); gtk_window_set_position (GTK_WINDOW (win), GTK_WIN_POS_CENTER); gtk_window_set_default_size(GTK_WINDOW(win), 600, 0); gtk_widget_realize (win); g_signal_connect (G_OBJECT(win), "destroy", G_CALLBACK(destroy_wnd), NULL); g_signal_connect (G_OBJECT(win), "delete_event", G_CALLBACK(delete_event),NULL); /* Create a vertical box with buttons */ vbox = gtk_vbox_new(FALSE, 5); vbox2 = gtk_vbox_new(TRUE, 5); halign = gtk_alignment_new(1, 0, 0, 0); scrl1 = gtk_scrolled_window_new(0,0); scrl2 = gtk_scrolled_window_new(0,0); buttonbox = gtk_hbutton_box_new(); gtk_container_add(GTK_CONTAINER(halign), buttonbox); gtk_box_pack_start(GTK_BOX(vbox2), GTK_WIDGET(scrl1), FALSE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox2), GTK_WIDGET(scrl2), FALSE, TRUE, 0); gtk_widget_set_size_request(GTK_WIDGET(vbox2), 0, 400); gtk_container_add(GTK_CONTAINER(vbox), vbox2); gtk_container_add(GTK_CONTAINER(win), vbox); gtk_box_pack_start(GTK_BOX(vbox), halign, FALSE, FALSE, 0); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrl1), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrl2), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); /* Build the C buffer */ if (!(gsv_lm = gtk_source_language_manager_new())) exit(1); gtk_source_language_manager_set_search_path(gsv_lm, searchpaths); if (!(gsv_lang = gtk_source_language_manager_get_language(gsv_lm, "c"))) exit(2); if (!(gsv_buffer_c = gtk_source_buffer_new_with_language(gsv_lang))) exit(3); gtk_source_buffer_set_highlight_syntax(gsv_buffer_c, TRUE); if (!(sourceview = gtk_source_view_new_with_buffer(gsv_buffer_c))) exit(4); gtk_container_add(GTK_CONTAINER(scrl1), sourceview); gtk_text_view_set_editable(GTK_TEXT_VIEW(sourceview), FALSE); gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(sourceview), FALSE); /* Build the ASM buffer */ if (!(gsv_lm = gtk_source_language_manager_new())) exit(1); gtk_source_language_manager_set_search_path(gsv_lm, searchpaths); if (!(gsv_lang = gtk_source_language_manager_get_language(gsv_lm, "nasm"))) exit(2); if (!(gsv_buffer_asm = gtk_source_buffer_new_with_language(gsv_lang))) exit(3); gtk_source_buffer_set_highlight_syntax(gsv_buffer_asm, TRUE); if (!(sourceview = gtk_source_view_new_with_buffer(gsv_buffer_asm))) exit(4); gtk_container_add(GTK_CONTAINER(scrl2), sourceview); /* Set the text of the buffers */ gtk_text_buffer_set_text(GTK_TEXT_BUFFER(gsv_buffer_c), question, strlen(question)); gtk_text_buffer_set_text(GTK_TEXT_BUFFER(gsv_buffer_asm), answer, strlen(answer)); /* Buttons */ button = gtk_button_new_from_stock (GTK_STOCK_DIALOG_INFO); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK(info_dialog), (gpointer) win); gtk_box_pack_start (GTK_BOX (buttonbox), button, FALSE, FALSE, 0); button = gtk_button_new_with_label("Test Answer"); g_signal_connect (button, "clicked", G_CALLBACK(test_answer), NULL); gtk_box_pack_start (GTK_BOX (buttonbox), button, FALSE, FALSE, 0); button = gtk_button_new_from_stock (GTK_STOCK_CLOSE); g_signal_connect (button, "clicked", gtk_main_quit, NULL); gtk_box_pack_start (GTK_BOX (buttonbox), button, FALSE, FALSE, 0); srand(time(NULL)); /* Enter the main loop */ gtk_widget_show_all (win); gtk_main (); return 0; }
SourceView::SourceView(const std::string& language, bool readOnly) { // Set the search path to the language and style files gchar* directories[2]; #if defined(POSIX) && defined(PKGDATADIR) std::string langFilesDir = std::string(PKGDATADIR) + "/sourceviewer/"; #else std::string langFilesDir = GlobalRegistry().get(RKEY_APP_PATH) + "sourceviewer/"; #endif directories[0] = const_cast<gchar*>(langFilesDir.c_str()); // stupid GtkSourceLanguageManager is expecting non-const gchar* pointer... directories[1] = NULL; GtkSourceStyleSchemeManager* styleSchemeManager = gtk_source_style_scheme_manager_get_default(); gtk_source_style_scheme_manager_set_search_path(styleSchemeManager, directories); gtk_source_style_scheme_manager_force_rescan(styleSchemeManager); _langManager = gtk_source_language_manager_new(); gtk_source_language_manager_set_search_path(_langManager, directories); GtkSourceLanguage* lang = gtk_source_language_manager_get_language(_langManager, language.c_str()); if (lang == NULL) { globalErrorStream() << "SourceView: Cannot find language " << language << " in " << langFilesDir << std::endl; } // Remember the pointers to the textbuffers if (lang != NULL) { _buffer = gtk_source_buffer_new_with_language(lang); gtk_source_buffer_set_highlight_syntax(_buffer, TRUE); } else { _buffer = gtk_source_buffer_new(NULL); gtk_source_buffer_set_highlight_syntax(_buffer, FALSE); } _view = GTK_SOURCE_VIEW(gtk_source_view_new_with_buffer(_buffer)); gtk_widget_set_size_request(GTK_WIDGET(_view), 0, -1); // allow shrinking gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(_view), GTK_WRAP_WORD); gtk_text_view_set_editable(GTK_TEXT_VIEW(_view), readOnly ? FALSE : TRUE); gtk_source_view_set_show_line_numbers(_view, TRUE); gtk_source_view_set_auto_indent(_view, TRUE); // Use a fixed width font PangoFontDescription* fontDesc = pango_font_description_from_string("Monospace"); if (fontDesc != NULL) { gtk_widget_modify_font(GTK_WIDGET(_view), fontDesc); } // Use a tab size of 4 gtk_source_view_set_tab_width(GTK_SOURCE_VIEW(_view), 4); widget_connect_escape_clear_focus_widget(GTK_WIDGET(_view)); _widget = gtkutil::ScrolledFrame(GTK_WIDGET(_view)); }
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; }