diff options
-rw-r--r-- | CMakeLists.txt | 18 | ||||
-rw-r--r-- | data/crystfel.gresource.xml | 17 | ||||
-rw-r--r-- | meson.build | 20 | ||||
-rw-r--r-- | src/crystfel_gui.c | 3 |
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; |