2017-10-06 4 views
0

これは多少の質問には多分曖昧です。Gtk#akaでボールド、イタリック、アンダーラインボタンを使う方法gtkのテキストを動的にフォーマットする方法

オンラインで私に合ったものは見つけられません。私はGtk2.0とC#で作業しています。これをオンラインで行う方法については、別の言葉でもリストのようです関数の名前を書いたり、コードからテキストを生成しているときにテキストビューにテキストを書式設定する例があるだけです(つまり、Hello Worldという文を作ってください)。を太字のにしてください。これを行うと、それが機能するのはかなり基本的なビットのように思える

それは、例えば、いくつかのテキストを太字にすることは完全に簡単です:。

protected void Command_bold(object sender, EventArgs e) 
{ 
    if (selectedTextView.Buffer.GetSelectionBounds(out A, out B)) 
    { 
     selectedTextView.Buffer.ApplyTag("bold", A, B); 
    } 
} 

しかし、このボタンを使ってこの機能を起動すると、太字(または斜体など)になります。太字のボタンの通常の機能は、選択の一部または全部が既に太字である場合は選択肢を太字にし、太字であれば太字にしないでください。

Gtk TextViewオブジェクトでは、テキストが太字かどうかをどのように検出しますか?

答えて

0

私はそれを理解しました。多かれ少なかれ。以下のロジックには欠陥がありますが、これはタグを検出して太字ボタンのロジックを制御する方法です:

protected void Action_Bold(object sender, EventArgs e) 
{ 
    TextIter iA, A, B; 
    bool isBold = false; 
    if (selectedTextView.Buffer.GetSelectionBounds(out A, out B)) 
    { 
     iA = A; 
     while (iA.Compare(B) < 0) 
     { 
      foreach (TextTag tag in A.Tags) 
      { 
       if (tag.Name == "bold") isBold = true; 
      } 

      iA.ForwardChar(); 

     } 

     if (isBold == true) 
     { 
      selectedTextView.Buffer.RemoveTag("bold", A, B); 
     } 
     else 
     { 
      selectedTextView.Buffer.ApplyTag("bold", A, B); 
     } 
    } 
} 
関連する問題