微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Vala Gtk css 提供程序 load_from_path

如何解决Vala Gtk css 提供程序 load_from_path

我不知道为什么 load_from_pathsudo ninja install 期间不起作用。它返回:

warning: unhandled error `GLib.Error'
            css_provider.load_from_path ("com.github.saidbakr.quick-shutdown.css");

我试图捕捉异常,但同样的警告:

Gtk.Cssprovider css_provider = new Gtk.Cssprovider ();
        try {
            css_provider.load_from_path ("com.github.saidbakr.quick-shutdown.css");
        }
        catch (IOError e){
            GLib.error("",e.message);
        }

我检查了 meson.build:

...
install_data(
    join_paths('data',meson.project_name()+ '.css'),install_dir: join_paths(get_option('datadir'))
)

添加文件路径并安装到/usr/local/share 我不知道如何解决这个问题。

解决方法

The docs for Gtk.CssProvider.load_from_path() 没有提及在 /usr/local/share/<app-data-dir> 或任何其他标准目录中搜索。它期待一个绝对路径。

解决这个问题的标准方法是使用 GResource。如果您使用的是教程或模板,它可能在 GResource 上有一些您可以使用的内容。


如果不是:

  • 使用以下内容创建文件 quick-shutdown.gresource.xml
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
  <gresource prefix="/com/github/saidbakr/quick-shutdown">
    <file>com.github.saidbakr.quick-shutdown.css</file>
  </gresource>
</gresources>
  • 将此添加到您的 meson.build:
gnome = import('gnome')
resources = gnome.compile_resources('com.github.saidbakr.quick-shutdown',files('quick-shutdown.gresource.xml'),)
  • 在 meson.build 的 resources 调用中将 executable() 添加到源列表
  • 改用 Gtk.CssProvider.load_from_resource()css_provider.load_from_resource ("/com/github/saidbakr/quick-shutdown/com.github.saidbakr.quick-shutdown.css")
  • 删除安装 CSS 文件的介子代码。它现在直接内置到您的可执行文件中。

有关如何执行此操作的真实示例,请查看 GNOME Clocks source code

这听起来可能有很多步骤,但它与添加 GtkBuilder UI 文件(或您的程序中需要的任何其他类型的静态文件)的步骤相同。如果您稍后需要这样做,您只需将 <file> 条目添加到 .gresource.xml 文件中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?