Use GResource.

This commit is contained in:
Arnaud Bonatti 2015-02-25 21:41:15 +01:00
parent f1f9fd3f4d
commit ec662df5e7
6 changed files with 33 additions and 48 deletions

View file

@ -53,6 +53,12 @@ AM_CONDITIONAL([WITH_PRCTL], [test x$ac_cv_header_linux_prctl_h = xyes])
AC_PATH_PROG([DESKTOP_FILE_VALIDATE], [desktop-file-validate], [/bin/true])
dnl ###########################################################################
dnl GResources
dnl ###########################################################################
AC_PATH_PROG([GLIB_COMPILE_RESOURCES],[glib-compile-resources])
dnl ###########################################################################
dnl Internationalization
dnl ###########################################################################

View file

@ -10,8 +10,7 @@ appstream_XML = $(appstream_in_files:.appdata.xml.in=.appdata.xml)
@APPSTREAM_XML_RULES@
@INTLTOOL_XML_RULE@
uidir = $(pkgdatadir)
dist_ui_DATA = \
dist_noinst_DATA = \
gnome-chess.ui \
preferences.ui \
promotion-type-selector.ui \

View file

@ -1,7 +1,7 @@
<?xml version="1.0"?>
<interface>
<!-- interface-requires gtk+ 3.0 -->
<menu id="appmenu">
<menu id="app-menu">
<section>
<item>
<attribute name="label" translatable="yes">Preferences</attribute>

View file

@ -1,5 +1,7 @@
bin_PROGRAMS = gnome-chess
BUILT_SOURCES = chess-resources.c
gnome_chess_SOURCES = \
config.vapi \
portability.vapi \
@ -11,7 +13,8 @@ gnome_chess_SOURCES = \
chess-engine-cecp.vala \
chess-engine-uci.vala \
chess-scene.vala \
chess-view.vala
chess-view.vala \
$(BUILT_SOURCES)
gnome_chess_CFLAGS = \
-w
@ -38,10 +41,15 @@ gnome_chess_VALAFLAGS = \
--target-glib=$(GLIB_REQUIRED) \
$(top_builddir)/lib/libchess.vapi
chess-resources.c: $(shell $(GLIB_COMPILE_RESOURCES) --generate-dependencies chess.gresource.xml)
$(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --generate-source chess.gresource.xml
CLEANFILES = \
$(patsubst %.vala,%.c,$(filter %.vala, $(SOURCES))) \
*_vala.stamp \
*.log \
*.trs
EXTRA_DIST = chess.gresource.xml
-include $(top_srcdir)/git.mk

12
src/chess.gresource.xml Normal file
View file

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/org/gnome/chess/ui">
<file preprocess="xml-stripblanks" alias="gnome-chess.ui">../data/gnome-chess.ui</file>
<file preprocess="xml-stripblanks" alias="preferences.ui">../data/preferences.ui</file>
<file preprocess="xml-stripblanks" alias="promotion-type-selector.ui">../data/promotion-type-selector.ui</file>
</gresource>
<gresource prefix="/org/gnome/chess/gtk">
<file preprocess="xml-stripblanks" alias="menus.ui">../data/menu.ui</file>
</gresource>
</gresources>

View file

@ -18,8 +18,6 @@ public class ChessApplication : Gtk.Application
private int window_height;
private Settings settings;
private Gtk.Builder builder;
private Gtk.Builder preferences_builder;
private Gtk.ApplicationWindow window;
private Gtk.Container view_container;
private ChessScene scene;
@ -129,28 +127,7 @@ public class ChessApplication : Gtk.Application
settings = new Settings ("org.gnome.chess");
add_action_entries (app_entries, this);
builder = new Gtk.Builder ();
try
{
builder.add_from_file (Path.build_filename (PKGDATADIR, "menu.ui", null));
}
catch (Error e)
{
error ("Error loading menu UI: %s", e.message);
}
var app_menu = (Menu) builder.get_object ("appmenu");
set_app_menu (app_menu);
try
{
builder.add_from_file (Path.build_filename (PKGDATADIR, "gnome-chess.ui", null));
}
catch (Error e)
{
warning ("Could not load UI: %s", e.message);
}
Gtk.Builder builder = new Gtk.Builder.from_resource ("/org/gnome/chess/ui/gnome-chess.ui");
window = (Gtk.ApplicationWindow) builder.get_object ("gnome_chess_app");
window.set_default_size (settings.get_int ("width"), settings.get_int ("height"));
@ -292,17 +269,7 @@ public class ChessApplication : Gtk.Application
public PieceType? show_promotion_type_selector ()
{
Gtk.Builder promotion_type_selector_builder;
promotion_type_selector_builder = new Gtk.Builder ();
try
{
promotion_type_selector_builder.add_from_file (Path.build_filename (PKGDATADIR, "promotion-type-selector.ui", null));
}
catch (Error e)
{
warning ("Could not load promotion type selector UI: %s", e.message);
}
Gtk.Builder promotion_type_selector_builder = new Gtk.Builder.from_resource ("/org/gnome/chess/ui/promotion-type-selector.ui");
Gtk.Dialog promotion_type_selector_dialog = promotion_type_selector_builder.get_object ("dialog_promotion_type_selector") as Gtk.Dialog;
promotion_type_selector_dialog.transient_for = window;
@ -1677,15 +1644,8 @@ public class ChessApplication : Gtk.Application
return;
}
preferences_builder = new Gtk.Builder ();
try
{
preferences_builder.add_from_file (Path.build_filename (PKGDATADIR, "preferences.ui", null));
}
catch (Error e)
{
warning ("Could not load preferences UI: %s", e.message);
}
Gtk.Builder preferences_builder = new Gtk.Builder.from_resource ("/org/gnome/chess/ui/preferences.ui");
preferences_dialog = (Gtk.Dialog) preferences_builder.get_object ("preferences");
preferences_dialog.transient_for = window;