2012-05-07 4 views
2

ハードウェアをシミュレートしようとしていますが、このハードウェアには静的リボン表示があります。GTK TextView - 静的表示形式を作成する

これを行うには、TextViewを使用したいと思います。私のディスプレイには25行の10行があります。だから私はTextViewが十分に簡単であると考えました。

基本的には、「行Yに始まり、列Yで始まる文字列Sを挿入/置き換える」と言うことができます。私は特定の行、または行内の単一の列だけを更新する必要があるかもしれません。

私はこれをうまく動作させることに成功しませんでした。私ができることは、作成したときにTextViewに25行の10行を入力してから、get_iter_at_line_offsetを使用して行のイテレータを取得し、その行に新しいテキストをプッシュすることです。

これで、既存のテキストを置き換えるのではなく、行にテキストを追加し始めます。

行と列の両方のコントロールが必要です(特定の(X、Y)座標でテキストを設定できる必要があります)。

これはマークを使用していると考えられます。

誰でも私にこれを行う方法の簡単な例を教えてもらえますか?残念なことに、この種のことについては、たくさんのドキュメントがありません。

+0

静的なリボンの表示はわかりませんが、あなたの説明に基づいて、Gtk :: DrawingAreaベースのアプローチは比較的簡単で、結果の外観を制御することができます。 – ergosys

答えて

1

特定の行の行Xでiterを取得し、イテレータのforward_chars()メソッドを使用してY文字を前に移動する必要があります。その後、置換する文字の数を削除し、最後に挿入するテキストを挿入します。イテレーターを使ってすべてを行うことができます。つまり、バッファーを変更するとイテレーターは無効になりますが、テキストを削除すると、イテレーターの1つがテキストのある場所を指すように再検証されます。

+0

私は単純に私のGUIをメモリに保持しておき、set_textを使って基本的なワイプとバッファ全体をリフレッシュして変更したいと思うのですか?基本的にすべての操作を長いchar配列(25番目のインデックスごとに改行)で行い、その後set_textでそれを押しますか? – jasonmclose

+0

ディスプレイを更新する頻度によって異なります。おそらくそれを試してみるのが最善で、あまりにも遅い場合は後で最適化するのがよいでしょうか?メモリは問題ではないでしょう。ほとんどのコンピュータは、最近少なくとも250バイトのメモリを持っています。 – ptomato

+0

は1秒に1回更新されます。私はこの道を行くと思う。投稿された巻き戻しのようなカイロを使うというアイディアが好きですが、ベータテストのために締め切り期限がありますので、今度はこのようにして、後で最適化してください。 – jasonmclose

0

GTK + 3.xをターゲットにしている場合は、実際にCairoを使用する必要があります。あなたが実際にテキストバッファを必要としないので、GtkTextViewを使用するには、過剰な使い方と誤った調整のように思えます。

draw with Cairo in GTK+の基本的な紹介をご覧ください。その後、あなたが始めるのに十分なはずのtext-rendering Cairo APIsを見てください。

+0

ねえ。なぜちょうどGTK + 3.x. GTK + 2ではなく?ここにはいくつかの変更がありますが、パフォーマンスは改善されていますか?私の経験からカイロはそんなことにひどいです。 – Ivarpoiss