Ind*_*oad 5 css gtk fonts colors styling
在试图清理约弃用一些警告Gtk.Widget.modify_base,Gtk.Widget.modify_font我发现了建议的替代物,override_background_color(和其等同为字体和颜色)也已过时.我现在正在尝试研究如何为小部件提供这些样式.
字体,颜色和背景用于自定义TextView窗口小部件,并且这些值的值作为某些首选项的一部分存储在某些字符串中,以便用户可以自定义几种不同的颜色.
对于字体和文本颜色,似乎最好的方法是Gtk.TextTag使用适当的样式创建s,并将insert()文本缓冲区的任何实例更改为insert_with_tags().TextBuffers和TextTags似乎没有"默认样式"概念.
但是,文本标签不会处理整个文本视图的背景.
建议的方法似乎是GtkStyleProvider,但我应该如何将这些用户指定的颜色提供给提供者?
很多例子像这样加载字符串常量:
string style = """
GtkButton {color:#ff00ea; font:Serif 12;}
GtkButton:hover {background-color:#3085a9;}
GtkLabel {background-color:#898989;}
GtkEntry {background-color:green; color:red;}
""";
CssProvider provider = new CssProvider();
provider.load_from_data(style,-1);
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,每次配置更改时我都必须手动格式化并插入字符串到一大块CSS中,并将其反馈到样式中,这看起来非常混乱.我也不确定这些是否可以在加载后更改,因为似乎没有改变信号.
我想另一种方式是以某种方式继承GtkStyleProvider和实现我自己的,但这对于设置一些颜色似乎有些过分,并且似乎很少有文档.
大多数GTK +程序(甚至是GNOME的)似乎只是做它的"旧"的方式与modify_*和override_*而忽略了弃用,这是我不明白,如果那些使用CSS加载后可以改变它的少数.
这些只是两个选择吗?哪一个是"正确的"?