Как включить файл ресурсов в проект anjuta

Я пытаюсь обновить графический проект в vala, перемещая много строк кода в файл пользовательского интерфейса. Я хочу использовать шаблон (доступно с glib-2.38 и GTK+3.8, что-то вроде этого).

Мой проект управляется с помощью Anjuta и autoconf.

в src каталог есть

application.ui:

<?xml version="1.0" encoding="UTF-8"?>
<interface>
  <!-- interface-requires gtk+ 3.8 -->
  <template class="SpiWindow" parent="GtkApplicationWindow">
    <property name="title" translatable="yes">Example Application</property>
    <property name="default-width">600</property>
    <property name="default-height">400</property>
    <child>
        <placeholder />
    </child>
  </template>
</interface>

resources.xml:

<?xml version="1.0" charset="UTF-8" ?>
<gresources>
  <gresource prefix="/org/app/spi">
    <file compressed="true" preprocess="xml-stripblanks">application.ui</file>
  </gresource>
</gresources>

в src/Makefile.am У меня есть приложение --gresources resources.xml к spi_VALAFLAGS, И наконец я объявил Gtk.ApplicationWindow как это

[GtkTemplate(ui = "/org/app/spi/application.ui")]
internal class SpiWindow : Gtk.ApplicationWindow {

    // Constructor
    public Window (Gtk.Application application) {
        Object(application: application);
    }
}

Но когда я компилирую и затем запускаю приложение, появляется сообщение об ошибке:

(spi:9749): Gtk-CRITICAL : Unable to load resource for composite template for type 'SpiWindow': The resource at '/org/app/spi/application.ui' does not exist
(spi:9749): Gtk-CRITICAL : gtk_widget_init_template: assertion 'template != NULL' failed

1 ответ

Решение

Вам все еще нужно скомпилировать ресурсы и включить их:

GLIB_COMPILE_RESOURCES=glib-compile-resources

resources.c: resources.xml $(shell $(GLIB_COMPILE_RESOURCES) --generate-dependencies resources.xml)
  $(GLIB_COMPILE_RESOURCES) --target=$@  --generate-source $<

и включать resources.c в качестве исходного файла в spi_SOURCES,

Другие вопросы по тегам