GtkSourceLanguageManager * cedit_get_language_manager (void) { if (language_manager == NULL) { language_manager = gtk_source_language_manager_new (); } return language_manager; }
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)); }
void set_language(){ if(cfg_lang()){ GtkSourceLanguageManager *lm; lm=gtk_source_language_manager_new(); char* currentfile=(char*)tpad_fp_get_current(); if(currentfile!=NULL){ long unsigned int i= 0,pos= 0; size_t mlewn = sizeof(currentfile)/sizeof(currentfile[1]); size_t blew = strlen(currentfile) + 1; if(blew > mlewn) mlewn = blew; char fil[mlewn]; for(i=0; currentfile[i]; i++){ if(currentfile[i]=='\\') fil[pos++]='\\'; fil[pos++]=currentfile[i]; } fil[pos]=0; gboolean result_uncertain; gchar *content_type; content_type = g_content_type_guess (fil, NULL, 0, &result_uncertain); if (result_uncertain){ g_free (content_type); content_type = NULL; } GtkSourceLanguage *lang = NULL; lang = gtk_source_language_manager_guess_language (lm, fil, content_type); gtk_source_buffer_set_language (GTK_SOURCE_BUFFER(mBuff),GTK_SOURCE_LANGUAGE(lang)); gtk_source_buffer_set_highlight_matching_brackets (GTK_SOURCE_BUFFER(mBuff), (gboolean) cfg_lang()); if(cfg_lang()) (lang) ? gtk_source_buffer_set_highlight_syntax(GTK_SOURCE_BUFFER(mBuff),TRUE) : gtk_source_buffer_set_highlight_syntax(GTK_SOURCE_BUFFER(mBuff),FALSE); if(content_type) g_free (content_type); } } else { gtk_source_buffer_set_language(GTK_SOURCE_BUFFER(mBuff),NULL); gtk_source_buffer_set_highlight_syntax(GTK_SOURCE_BUFFER(mBuff),FALSE); } if(cfg_undo() >= 1 && cfg_undo() <= UNDO_MAX) gtk_source_buffer_set_max_undo_levels ((GtkSourceBuffer *)mBuff,(gint)cfg_undo()); else { gtk_source_buffer_set_max_undo_levels ((GtkSourceBuffer *)mBuff,(gint)-1); cfg_set_undo(0); } (cfg_line_wrap()) ? gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (view),GTK_WRAP_WORD) : gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (view),GTK_WRAP_NONE); }
MapeEditView* mape_edit_view_new(MapePreView* pre_view, MapeStatusbar* statusbar, GError** error) { MapeEditView* view; GtkSourceBuffer* buf; GPtrArray* search_dirs; const gchar* const* data_dirs; const gchar* const* dir; view = malloc(sizeof(MapeEditView) ); view->pre_view = pre_view; view->statusbar = statusbar; view->file_path = NULL; view->encoding = "UTF-8"; view->type = MAPE_MAPGEN_NONE; view->render_thread = NULL; view->rerender = FALSE; view->fixed_seed = FALSE; view->view = gtk_source_view_new(); buf = GTK_SOURCE_BUFFER( gtk_text_view_get_buffer(GTK_TEXT_VIEW(view->view) ) ); g_signal_connect_after( G_OBJECT(buf), "changed", G_CALLBACK(mape_edit_view_cb_changed), view ); g_signal_connect( G_OBJECT(pre_view->event_box), "button-press-event", G_CALLBACK(mape_edit_view_cb_update), view ); view->font_desc = pango_font_description_new(); pango_font_description_set_family(view->font_desc, "monospace"); gtk_widget_modify_font(view->view, view->font_desc); search_dirs = g_ptr_array_new(); #ifdef G_OS_WIN32 g_ptr_array_add( search_dirs, g_win32_get_package_installation_subdirectory(NULL, NULL, "mape-syntax") ); #endif g_ptr_array_add( search_dirs, g_build_filename(g_get_home_dir(), ".mape-syntax", NULL) ); g_ptr_array_add( search_dirs, g_strdup("./mape-syntax") ); g_ptr_array_add( search_dirs, g_strdup("./src/mape/mape-syntax") ); data_dirs = g_get_system_data_dirs(); for(dir = data_dirs; *dir != NULL; ++ dir) g_ptr_array_add(search_dirs, g_build_filename(*dir, "mape", NULL)); g_ptr_array_add(search_dirs, NULL); view->lang_manager = gtk_source_language_manager_new(); gtk_source_language_manager_set_search_path( view->lang_manager, (gchar**)search_dirs->pdata ); view->style_manager = gtk_source_style_scheme_manager_new(); gtk_source_style_scheme_manager_set_search_path( view->style_manager, (gchar**)search_dirs->pdata ); g_ptr_array_foreach(search_dirs, (GFunc)g_free, NULL); g_ptr_array_free(search_dirs, TRUE); mape_edit_view_set_filename(view, NULL); gtk_widget_show(view->view); view->window = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW(view->window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC ); gtk_scrolled_window_set_shadow_type( GTK_SCROLLED_WINDOW(view->window), GTK_SHADOW_IN ); gtk_container_add( GTK_CONTAINER(view->window), view->view ); gtk_widget_show(view->window); return view; }
NetlistEditor * netlist_editor_new (GtkSourceBuffer * textbuffer) { NetlistEditor * nle; GtkBuilder *gui; GError *perror = NULL; GtkWidget * toplevel; GtkScrolledWindow * scroll; GtkSourceView * source_view; GtkSourceLanguageManager * lm; GtkButton * save, * close; GtkSourceLanguage *lang=NULL; if (!textbuffer) return NULL; if ((gui = gtk_builder_new ()) == NULL) { oregano_error (_("Could not create the netlist dialog")); return NULL; } gtk_builder_set_translation_domain (gui, NULL); nle = NETLIST_EDITOR (g_object_new (netlist_editor_get_type (), NULL)); if (gtk_builder_add_from_file (gui, OREGANO_UIDIR "/view-netlist.ui", &perror) <= 0) { gchar *msg; msg = perror->message; oregano_error_with_title (_("Could not create the netlist dialog"), msg); g_error_free (perror); return NULL; } toplevel = GTK_WIDGET (gtk_builder_get_object (gui, "toplevel")); gtk_window_set_default_size (GTK_WINDOW (toplevel), 800, 600); gtk_window_set_title (GTK_WINDOW (toplevel), "Net List Editor\n"); scroll = GTK_SCROLLED_WINDOW (gtk_builder_get_object (gui, "netlist-scrolled-window")); source_view = GTK_SOURCE_VIEW (gtk_source_view_new ()); lm = GTK_SOURCE_LANGUAGE_MANAGER (gtk_source_language_manager_new ()); setup_language_manager_path (lm); g_object_set_data_full (G_OBJECT (source_view), "language-manager", lm, (GDestroyNotify) g_object_unref); lang = gtk_source_language_manager_get_language (lm, "netlist"); if (lang) { NG_DEBUG ("\"%s\" from \"%s\"", gtk_source_language_get_name (lang), OREGANO_LANGDIR "/netlist.lang"); gtk_source_buffer_set_language (GTK_SOURCE_BUFFER (textbuffer), lang); gtk_source_buffer_set_highlight_syntax (GTK_SOURCE_BUFFER (textbuffer), TRUE); gtk_source_buffer_set_highlight_matching_brackets (GTK_SOURCE_BUFFER (textbuffer), TRUE); } else { g_warning ("Can't load netlist.lang in %s", OREGANO_LANGDIR "/netlist.lang"); } gtk_text_view_set_editable (GTK_TEXT_VIEW (source_view), TRUE); gtk_text_view_set_buffer (GTK_TEXT_VIEW (source_view), GTK_TEXT_BUFFER (textbuffer)); gtk_container_add (GTK_CONTAINER (scroll), GTK_WIDGET (source_view)); close = GTK_BUTTON (gtk_builder_get_object (gui, "btn_close")); g_signal_connect_swapped (G_OBJECT (close), "clicked", G_CALLBACK (g_object_unref), G_OBJECT (nle)); save = GTK_BUTTON (gtk_builder_get_object (gui, "btn_save")); g_signal_connect (G_OBJECT (save), "clicked", G_CALLBACK (netlist_editor_save), nle); // Set tab, fonts, wrap mode, colors, etc. according // to preferences nle->priv->view = GTK_TEXT_VIEW (source_view); nle->priv->toplevel = GTK_WINDOW (toplevel); nle->priv->save = save; nle->priv->close = close; nle->priv->buffer = textbuffer; gtk_widget_show_all (GTK_WIDGET (toplevel)); return nle; }
NetlistEditor * netlist_editor_new (GtkSourceBuffer * textbuffer) { gchar** lang_files; NetlistEditor * nle; GladeXML * gui; GtkWidget * toplevel; GtkScrolledWindow * scroll; GtkSourceView * source_view; GtkSourceLanguageManager * lm; GtkButton * save, * sim, * close, * print; GtkSourceLanguage *lang=NULL; const GSList *list; if (!textbuffer) return NULL; nle = NETLIST_EDITOR (g_object_new (netlist_editor_get_type (), NULL)); netlist_editor_get_config (nle); if (!g_file_test (OREGANO_GLADEDIR "/view-netlist.glade2", G_FILE_TEST_EXISTS)) { gchar *msg; msg = g_strdup_printf ( _("The file %s could not be found. You might need to reinstall Oregano to fix this."), OREGANO_GLADEDIR "/view-netlist.glade2"); oregano_error_with_title (_("Could not create the netlist dialog"), msg); g_free (msg); return NULL; } gui = glade_xml_new (OREGANO_GLADEDIR "/view-netlist.glade2", NULL, NULL); toplevel = glade_xml_get_widget (gui, "toplevel"); gtk_window_set_default_size (GTK_WINDOW (toplevel), 800, 600); gtk_window_set_title (GTK_WINDOW (toplevel), "Net List Editor\n"); scroll = GTK_SCROLLED_WINDOW (glade_xml_get_widget (gui, "netlist-scrolled-window")); source_view = GTK_SOURCE_VIEW (gtk_source_view_new ()); lm = GTK_SOURCE_LANGUAGE_MANAGER (gtk_source_language_manager_new ()); setup_language_manager_path (lm); g_object_set_data_full (G_OBJECT (source_view), "language-manager", lm, (GDestroyNotify) g_object_unref); lang = gtk_source_language_manager_get_language (lm, "netlist"); if (lang) { gtk_source_buffer_set_language (GTK_SOURCE_BUFFER (textbuffer), lang); gtk_source_buffer_set_highlight_syntax (GTK_SOURCE_BUFFER (textbuffer), TRUE); gtk_source_buffer_set_highlight_matching_brackets (GTK_SOURCE_BUFFER (textbuffer), TRUE); } else { g_warning ("Can't load netlist.lang in %s", OREGANO_LANGDIR "/netlist.lang"); } gtk_text_view_set_editable (GTK_TEXT_VIEW (source_view), TRUE); gtk_text_view_set_buffer (GTK_TEXT_VIEW (source_view), GTK_TEXT_BUFFER (textbuffer)); gtk_container_add (GTK_CONTAINER (scroll), GTK_WIDGET (source_view)); close = GTK_BUTTON (glade_xml_get_widget (gui, "btn_close")); g_signal_connect_swapped (G_OBJECT (close), "clicked", G_CALLBACK (g_object_unref), G_OBJECT (nle)); save = GTK_BUTTON (glade_xml_get_widget (gui, "btn_save")); g_signal_connect (G_OBJECT (save), "clicked", G_CALLBACK (netlist_editor_save), nle); sim = GTK_BUTTON (glade_xml_get_widget (gui, "btn_sim")); g_signal_connect (G_OBJECT (sim), "clicked", G_CALLBACK (netlist_editor_simulate), nle); print = GTK_BUTTON (glade_xml_get_widget (gui, "btn_print")); g_signal_connect (G_OBJECT (print), "clicked", G_CALLBACK (netlist_editor_print), nle); /* * Set tab, fonts, wrap mode, colors, etc. according * to preferences */ nle->priv->lm = lm; nle->priv->view = GTK_TEXT_VIEW (source_view); nle->priv->toplevel = GTK_WINDOW (toplevel); nle->priv->sim = sim; nle->priv->save = save; nle->priv->close = close; nle->priv->buffer = textbuffer; gtk_widget_show_all (GTK_WIDGET (toplevel)); return nle; }
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)); }
AtlantisDocument* atlantis_document_construct (GType object_type, const char* path) { #line 73 "document.c" GError * _inner_error_; AtlantisDocument * self; char* _tmp0_; char* _tmp1_; GtkSourceLanguageManager* slm; GtkSourceLanguage* lang; GtkSourceLanguageManager* _tmp2_; GtkSourceLanguage* _tmp3_; #line 11 "document.vala" g_return_val_if_fail (path != NULL, NULL); #line 84 "document.c" _inner_error_ = NULL; self = g_object_newv (object_type, 0, NULL); #line 13 "document.vala" self->priv->fileName = (_tmp0_ = atlantis_document_uri_to_filename (self, path), _g_free0 (self->priv->fileName), _tmp0_); #line 14 "document.vala" self->priv->baseName = (_tmp1_ = g_path_get_basename (self->priv->fileName), _g_free0 (self->priv->baseName), _tmp1_); #line 91 "document.c" slm = NULL; lang = NULL; #line 18 "document.vala" slm = (_tmp2_ = gtk_source_language_manager_new (), _g_object_unref0 (slm), _tmp2_); #line 19 "document.vala" lang = (_tmp3_ = _g_object_ref0 (gtk_source_language_manager_get_language (slm, "vala")), _g_object_unref0 (lang), _tmp3_); #line 21 "document.vala" if (lang != NULL) { #line 100 "document.c" char* content; char* _tmp6_; gboolean _tmp5_; char* _tmp4_ = NULL; content = NULL; #line 24 "document.vala" _tmp5_ = g_file_get_contents (self->priv->fileName, &_tmp4_, NULL, &_inner_error_); #line 24 "document.vala" content = (_tmp6_ = _tmp4_, _g_free0 (content), _tmp6_); #line 24 "document.vala" _tmp5_; #line 112 "document.c" if (_inner_error_ != NULL) { _g_free0 (content); _g_object_unref0 (slm); _g_object_unref0 (lang); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return NULL; } #line 25 "document.vala" g_object_set ((GtkTextBuffer*) self, "text", content, NULL); #line 26 "document.vala" gtk_source_buffer_set_language ((GtkSourceBuffer*) self, lang); #line 27 "document.vala" gtk_source_buffer_set_highlight_syntax ((GtkSourceBuffer*) self, TRUE); #line 127 "document.c" _g_free0 (content); } _g_object_unref0 (slm); _g_object_unref0 (lang); return self; }
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; }