そのため、GtkSourceViewmmを使用してC ++でGtkSourceViewを利用しようとしています。そのドキュメントとサポートのレベルから、長い間慎重に検討されていなかったという印象を受けます。しかし、私は常に楽観主義者です:)
次のようなコードを使用してSourceViewを追加しようとしています。
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);
残念ながら、それは警告を吐き出します
(algoviz:4992):glibmm-警告**:タイプ'GtkSourceLanguage'のオブジェクトをラップできませんでした。ヒント:このエラーは通常、ライブラリのinit()関数の呼び出しに失敗したことが原因で発生します。
デバッガーでそれを見ると、実際、上の2行目(が付いている行Glib::wrap()
)はを返してNULL
います。これがなぜなのかはGlib::init()
わかりませんが、プログラムの冒頭に追加して警告に注意を払おうとしましたが、それもまったく役に立たなかったようです。
私はグーグルを試してみましたが、失敗しました。そのラップコールを実行できるようにするために、Glibが私に初期化を求めていることを誰かが知っていますか?または、さらに良いことに、GtkSourceViewmm(通常のGtkSourceViewだけでなく)を使用する実用的なサンプルコードを知っている人はいますか?Googleコード検索でも、実際のサンプルコードを見つけることができませんでした。
ありがとう!