2017-10-06 28 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); 
     } 
    } 
} 
相關問題