C-可以从GTK中的用户隐藏一个.glade文件



我是GTK的新手,开始使用GLADE设计UI。但是,每当我运行应用程序时,我都必须将GLADE文件与可执行文件保持在同一目录中。我想以编译形式分发GLADE文件,与源代码相同。这可能吗?

是的,这是可能的。看看GRESOURCE文档。它的主要用途是嵌入UI文件,图标等之类的资源。在主二进制中。

我意识到这篇文章已经快5岁了,但是,为了偶然发现这个问题的其他人(即,像我一样),这是我的工作。在GTK -3.0中,您可以通过本地文件或字符串导入GLADE XML。即:

builder = gtk_builder_new_from_string(myGladeStr,strlen(myGladeStr));

编写一个小应用程序,将GLADE XML文件转换为" C"兼容的"字符串"格式。即,替换'&quot&quot'与'&quot'并在每行的末端添加一个''。我还包括声明和返回函数的含义,对GLADE文件的任何调整都很简单,因为运行此应用程序>>gladefilestring1.c等

以这种方式,您可以将GLADE XML存储在" C"文件中,作为字符串,不在您的应用程序上。

这就是xnec2c的方式:

===== Src/makefile.am ====

PKGCONFIG = $(shell which pkg-config)
GLIB_COMPILE_RESOURCES = $(shell $(PKGCONFIG) --variable=glib_compile_resources gio-2.0)
xnec2c-resources.c: ../resources/xnec2c.gresource.xml $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=../resources --generate-dependencies ../resources/xnec2c.gresource.xml)
    $(GLIB_COMPILE_RESOURCES) --sourcedir=../resources --target=xnec2c-resources.c --generate-source ../resources/xnec2c.gresource.xml

========

<?xml version="1.0" encoding="UTF-8"?>
<gresources>
  <gresource prefix="/">
    <file>xnec2c.glade</file>
    <file>xnec2c.svg</file>
    <file>link.svg</file>
    <file>unlink.svg</file>
  </gresource>
</gresources>

然后,请确保编译并将结果.c文件链接到您的项目中。在这种情况下,它是xnec2c-resources.c

这是实现您要求的提交:

  • https://github.com/kj7lnw/xnec2c/commit/e57c92f9d75ef50167bffe1da444444444444fe3d2f2401cd

,这里还有其他一些相关参考:

  • https://github.com/kj7lnw/xnec2c/blob/master/src/makefile.am#l58
  • https://github.com/kj7lnw/xnec2c/blob/master/resources/xnec2c.gresource.xml
  • https://github.com/kj7lnw/xnec2c/tree/master/resources

相关内容

最新更新