如何在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);
}
}
}