J'essaie donc de faire usage d'un GtkSourceView en C++ en utilisant GtkSourceViewmm, dont la documentation et le niveau de support me donnent l'impression qu'il n'a pas été très attentivement examiné depuis longtemps. Mais je suis toujours optimiste :)Que doit être Glib :: init() pour utiliser Glib :: wrap?
Je suis en train d'ajouter un SourceView en utilisant un code similaire à ce qui suit:
Glib::RefPtr<gtksourceview::SourceLanguageManager> source_language_manager = gtksourceview::SourceLanguageManager::create();
Glib::RefPtr<gtksourceview::SourceLanguage> source_language = Glib::wrap(gtk_source_language_manager_guess_language(source_language_manager->gobj(), file, NULL));
Glib::RefPtr<gtksourceview::SourceBuffer> source_buffer = gtksourceview::SourceBuffer::create(source_language);
gtksourceview::SourceView* = m_source_view = new gtksourceview::SourceView(source_buffer);
m_vbox.pack_start(*m_source_view);
Malheureusement, il recrache l'avertissement
(algoviz: 4992): glibmm-WARNING **: Impossible d'envelopper l'objet de type 'GtkSourceLanguage'. Conseil: cette erreur est généralement provoquée par l'échec de l'appel d'une fonction de bibliothèque init().
et quand je regarde dans un débogueur, en effet la deuxième ligne ci-dessus (celui avec le Glib::wrap()
) est de retour NULL
. Je n'ai aucune idée pourquoi c'est, mais j'ai essayé de tenir compte de l'avertissement en ajoutant Glib::init()
au début du programme, mais cela n'a pas semblé aider du tout non plus. J'ai essayé Google, mais je n'ai pas réussi. Est-ce que quelqu'un sait ce que Glib veut que je fasse pour pouvoir faire cet appel? Ou, mieux encore, est-ce que quelqu'un connaît un exemple de code qui utilise GtkSourceViewmm (et pas seulement GtkSourceView)? Je n'ai pas été en mesure de trouver un exemple de code réel, même pas sur Google Code Search.
Merci!
Cela change à Gsv :: init() pour les versions plus récentes. – ergosys
pour utiliser Gsv :: init(), vous devez inclure gtksourceviewmm.h – Parker