1

GTK ステータス バーを使用するプログラムがあり、複数行の出力が必要です。複数行を出力しようとすると、以下のように代わりにグリフが表示されます。

グリフ

私はそれがemacsのように動作することを期待しています:

ノグリフ

いくつかの検索の後、私が望んでいることを正確に行うように見えるlayoutSetSingleParagraphModeを発見しました。ほとんどのウィジェットのデフォルト設定は False であり、私たちはどこにも設定していないので、Statusbar はデフォルトでシングル パラグラフ モードになっていると思います。

私の問題は、この機能を使用できる場所Statusbarに移動する方法がわからないことです。PangoLayout

最も近いのは、widgetGetPangoContextPangoLayoutを見つけて、layoutEmptyを取得できるようにすることでしたが、名前が示すように、これはPangoLayout、操作時にステータスバーに影響を与えない別のものを作成するだけのようです。テキストのプッシュまたはポップは、これまでと同じように動作します。

不足している機能はありますか?確かにgtk2hs、生成されたドキュメントの可読性に寄与しないオブジェクト指向をエミュレートするために型クラスの海を泳ぎます。それは単純な仕事であるべきだと思われます。

既存のウィジェットから取得するつもりがない場合PangoLayout、どうすれば私が望むものを達成できますか? ステータスバーの作成時に段落モードを選択するオプションはないようです。

これに関連するこのプロジェクトの GitHub の問題については、これを参照してください。

4

1 に答える 1

1

これを試してください:

ステータス バーのテキスト ラベルの場所statusbarGetMessageAreaを取得するために使用します。Gtk.Box

次に、 でテキスト ラベルを取得しますcontainerGetChildren <status bar message area>。この関数は、Gtk.Widget1 つの要素 (ラベル) だけを持つ のリストを返します。

でウィジェットをラベルにキャストしますcastToLabel

で複数行モードを設定できるようになりましlabelSetSingleLineMode <label> Falseた。

labelSetTextまたはでラベルの内容を設定しlabelSetMarkupます。

私は成功しました(GTK2を使用してHackageのgtk 0.12.5を試しましたが、GTK3では試していません)。

于 2014-06-06T06:46:52.577 に答える