aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt18
-rw-r--r--data/crystfel.gresource.xml17
-rw-r--r--meson.build20
-rw-r--r--src/crystfel_gui.c3
4 files changed, 46 insertions, 12 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 59419e35..7dd1a6b5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -58,6 +58,21 @@ pkg_search_module(GTK gtk+-3.0)
if (GTK_FOUND)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-deprecated-declarations")
link_directories(${GTK_LIBRARY_DIRS})
+
+
+ find_program(GLIB_COMPILE_RESOURCES NAMES glib-compile-resources REQUIRED)
+
+ add_custom_command(OUTPUT crystfel-gresources.c
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/data
+ VERBATIM
+ COMMAND ${GLIB_COMPILE_RESOURCES}
+ ARGS --generate-source
+ --target=${CMAKE_CURRENT_BINARY_DIR}/crystfel-gresources.c
+ crystfel.gresource.xml)
+
+ add_custom_target(crystfel-gresources
+ DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/crystfel-gresources.c)
+
endif ()
# If no version of GTK was found, try for GDK
@@ -417,7 +432,8 @@ if (GTK_FOUND)
src/gtkmultifilechooserbutton.c src/gui_backend_slurm.c)
add_executable(crystfel ${CRYSTFEL_GUI_SOURCES}
- ${CMAKE_CURRENT_BINARY_DIR}/version.c)
+ ${CMAKE_CURRENT_BINARY_DIR}/version.c
+ ${CMAKE_CURRENT_BINARY_DIR}/crystfel-gresources.c)
target_include_directories(crystfel PRIVATE ${COMMON_INCLUDES} ${GTK_INCLUDE_DIRS})
target_link_libraries (crystfel ${COMMON_LIBRARIES} util ${GTK_LIBRARIES})
diff --git a/data/crystfel.gresource.xml b/data/crystfel.gresource.xml
new file mode 100644
index 00000000..7453a58b
--- /dev/null
+++ b/data/crystfel.gresource.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gresources>
+ <gresource prefix="/de/desy/CrystFEL">
+ <file>crystfel-ambiguity.svg</file>
+ <file>crystfel.desktop</file>
+ <file>crystfel-export.svg</file>
+ <file>crystfel-fom.svg</file>
+ <file>crystfel.gresource.xml</file>
+ <file>crystfel-index-all.svg</file>
+ <file>crystfel-index-frame.svg</file>
+ <file>crystfel-load-data.svg</file>
+ <file>crystfel-merge.svg</file>
+ <file>crystfel-peak-detection.svg</file>
+ <file>crystfel.svg</file>
+ <file>crystfel-unitcell.svg</file>
+ </gresource>
+</gresources>
diff --git a/meson.build b/meson.build
index 3ca22532..bc4ccebb 100644
--- a/meson.build
+++ b/meson.build
@@ -35,6 +35,8 @@ if fftwdep.found()
conf_data.set10('HAVE_FFTW', true)
endif
+gnome = import('gnome')
+
gtkdep = dependency('gtk+-3.0', required: false)
if gtkdep.found()
add_project_arguments('-Wno-deprecated-declarations', language: 'c')
@@ -221,13 +223,18 @@ if gtkdep.found()
'src/gtkmultifilechooserbutton.c',
versionc]
- executable('crystfel', gui_sources,
+ gresources = gnome.compile_resources('crystfel-gui-resources',
+ 'data/crystfel.gresource.xml',
+ source_dir: 'data', c_name: 'crystfel')
+
+ executable('crystfel', gui_sources, gresources,
dependencies: [mdep, libcrystfeldep, gtkdep, gsldep],
install: true,
install_rpath: '$ORIGIN/../lib64/:$ORIGIN/../lib')
install_data(['data/crystfel.desktop'],
install_dir: get_option('datadir') / 'applications')
+
endif
# render_hkl
@@ -267,16 +274,7 @@ simulation_bits = files(['src/diffraction.c',
# ************************ Misc resources ************************
-install_data(['data/crystfel.svg',
- 'data/crystfel-load-data.svg',
- 'data/crystfel-peak-detection.svg',
- 'data/crystfel-index-frame.svg',
- 'data/crystfel-index-all.svg',
- 'data/crystfel-unitcell.svg',
- 'data/crystfel-ambiguity.svg',
- 'data/crystfel-merge.svg',
- 'data/crystfel-fom.svg',
- 'data/crystfel-export.svg' ],
+install_data(['data/crystfel.svg'],
install_dir: get_option('datadir')+'/icons/hicolor/scalable/apps')
diff --git a/src/crystfel_gui.c b/src/crystfel_gui.c
index a82f305e..eb13e608 100644
--- a/src/crystfel_gui.c
+++ b/src/crystfel_gui.c
@@ -1083,6 +1083,9 @@ int main(int argc, char *argv[])
gtk_init(&argc, &argv);
g_set_application_name("CrystFEL");
+ gtk_icon_theme_add_resource_path(gtk_icon_theme_get_default(),
+ "/de/desy/CrystFEL");
+
if ( default_project(&proj) ) {
ERROR("Failed to set up default project\n");
return 1;