如何在Gtk中加粗,斜体,下划线按钮#aka如何在gtk中动态地设置文本格式

问题描述:

也许这是一个宽泛或模糊的问题。如何在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对象?

好的,所以我想通了。或多或少。下面的逻辑有缺陷,但这是一种检测标签并控制粗体按钮的逻辑的方法:

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); 
     } 
    } 
}