如何在Gtk中使用粗体、斜体、下划线按钮,也就是如何在Gtk中动态格式化文本



也许这是一个有点过于宽泛或模糊的问题。

我在网上找不到任何对我有意义的东西,我正在使用Gtk2.0和C#,关于如何在网上做到这一点的每一个参考都是用不同的语言编写的,似乎只是函数名称的列表,或者只有在从代码生成文本时在文本视图中格式化文本的示例(例如,造一句"Hello World")。"然后将hello加粗。似乎没有人在谈论如何做到这一点,这似乎是一个非常基本的功能。

将一些文本加粗是非常容易的,例如:

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

相关内容

最新更新