Ejemplo n.º 1
0
static gboolean
gb_vim_command_syntax (GtkWidget      *active_widget,
                       const gchar    *command,
                       const gchar    *options,
                       GError        **error)
{
  g_assert (GTK_IS_WIDGET (active_widget));

  if (IDE_IS_EDITOR_PAGE (active_widget))
    {
      IdeBuffer *buffer = ide_editor_page_get_buffer (IDE_EDITOR_PAGE (active_widget));

      if (g_str_equal (options, "enable") || g_str_equal (options, "on"))
        gtk_source_buffer_set_highlight_syntax (GTK_SOURCE_BUFFER (buffer), TRUE);
      else if (g_str_equal (options, "off"))
        gtk_source_buffer_set_highlight_syntax (GTK_SOURCE_BUFFER (buffer), FALSE);
      else
        {
          g_set_error (error,
                       GB_VIM_ERROR,
                       GB_VIM_ERROR_UNKNOWN_OPTION,
                       _("Invalid :syntax subcommand: %s"),
                       options);
          return FALSE;
        }

      return TRUE;
    }
  else
    return gb_vim_set_source_view_error (error);
}
Ejemplo n.º 2
0
static void
set_language (GeditDocument     *doc,
              GtkSourceLanguage *lang,
              gboolean           set_by_user)
{
	GtkSourceLanguage *old_lang;

	gedit_debug (DEBUG_DOCUMENT);

	old_lang = gtk_source_buffer_get_language (GTK_SOURCE_BUFFER (doc));

	if (old_lang == lang)
	{
		return;
	}

	gtk_source_buffer_set_language (GTK_SOURCE_BUFFER (doc), lang);

	if (lang != NULL)
	{
		gboolean syntax_hl;

		syntax_hl = g_settings_get_boolean (doc->priv->editor_settings,
						    GEDIT_SETTINGS_SYNTAX_HIGHLIGHTING);

		gtk_source_buffer_set_highlight_syntax (GTK_SOURCE_BUFFER (doc),
							syntax_hl);
	}
	else
	{
		gtk_source_buffer_set_highlight_syntax (GTK_SOURCE_BUFFER (doc),
							FALSE);
	}

	if (set_by_user)
	{
		const gchar *language = get_language_string (doc);

		gedit_document_set_metadata (doc,
					     GEDIT_METADATA_ATTRIBUTE_LANGUAGE, language,
					     NULL);
	}

	doc->priv->language_set_by_user = set_by_user;
}
Ejemplo n.º 3
0
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);
}
Ejemplo n.º 4
0
static void
cedit_prefs_manager_syntax_hl_enable_changed (GSettings *settings,
					      gchar       *key,
					      gpointer     user_data)
{
	cedit_debug (DEBUG_PREFS);

	if (strcmp (key, GPM_SYNTAX_HL_ENABLE) == 0)
	{
		gboolean enable;
		GList *docs;
		GList *l;
		const GList *windows;

		enable = g_settings_get_boolean (settings, key);

		docs = cedit_app_get_documents (cedit_app_get_default ());
		l = docs;

		while (l != NULL)
		{
#if GTK_CHECK_VERSION (3, 0, 0)
			g_return_if_fail (GTK_SOURCE_IS_BUFFER (l->data));
#else
			g_return_if_fail (GTK_IS_SOURCE_BUFFER (l->data));
#endif

			gtk_source_buffer_set_highlight_syntax (GTK_SOURCE_BUFFER (l->data),
								enable);

			l = l->next;
		}

		g_list_free (docs);

		/* update the sensitivity of the Higlight Mode menu item */
		windows = cedit_app_get_windows (cedit_app_get_default ());
		while (windows != NULL)
		{
			GtkUIManager *ui;
			GtkAction *a;

			ui = cedit_window_get_ui_manager (CEDIT_WINDOW (windows->data));

			a = gtk_ui_manager_get_action (ui,
						       "/MenuBar/ViewMenu/ViewHighlightModeMenu");

			gtk_action_set_sensitive (a, enable);

			windows = g_list_next (windows);
		}
	}
}
Ejemplo n.º 5
0
	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));
	}
Ejemplo n.º 6
0
void
gui_editor_show (GUIEditor * self)
{
  gtk_widget_show (GTK_WIDGET (self->widget));
  gtk_widget_show (GTK_WIDGET (self->scroll));
  gtk_source_view_set_show_line_numbers (GTK_SOURCE_VIEW(self->widget), TRUE);
  self->language = gtk_source_language_manager_get_language(self->lang_manager,"8085_asm");
  if (self->language != NULL){
	gtk_source_buffer_set_language (self->buffer, self->language);
	gtk_source_buffer_set_style_scheme (self->buffer, gtk_source_style_scheme_manager_get_scheme(self->style_scheme_manager,"classic"));
	gtk_source_buffer_set_highlight_syntax (self->buffer, TRUE);
  }
  self->mark = gtk_text_buffer_get_insert (GTK_TEXT_BUFFER(self->buffer));
  gtk_source_view_set_show_line_marks (GTK_SOURCE_VIEW(self->widget), TRUE);
}
Ejemplo n.º 7
0
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;	
}
Ejemplo n.º 8
0
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;	
}
Ejemplo n.º 9
0
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;
}
Ejemplo n.º 10
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));
}
Ejemplo n.º 11
0
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;
}