gnucash maint: Redo icon handling in cmake

Geert Janssens gjanssens at code.gnucash.org
Sun Apr 3 13:23:02 EDT 2022


Updated	 via  https://github.com/Gnucash/gnucash/commit/04bafdeb (commit)
	from  https://github.com/Gnucash/gnucash/commit/ee8729df (commit)



commit 04bafdebf0e7ea9844eac1796d4efe750fdc7e6a
Author: Geert Janssens <geert at kobaltwit.be>
Date:   Sun Apr 3 19:22:56 2022 +0200

    Redo icon handling in cmake
    
    Using globs for file copying prevents cmake from discovering newly added icons.
    Writing rules that explicitly use lists of icons will fix this as a new icon
    in the sources will have to be added to the list and will force reparsing by
    cmake. We have to maintain the lists anyway for our dist target so there's
    actually no extra work involved for the devs.

diff --git a/data/pixmaps/CMakeLists.txt b/data/pixmaps/CMakeLists.txt
index e44e9b465..db331fb1b 100644
--- a/data/pixmaps/CMakeLists.txt
+++ b/data/pixmaps/CMakeLists.txt
@@ -1,40 +1,4 @@
-
-install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION ${CMAKE_INSTALL_DATADIR}/gnucash
-    PATTERN Makefile* EXCLUDE
-    PATTERN CMake* EXCLUDE
-    PATTERN CTest* EXCLUDE
-    PATTERN cmake* EXCLUDE
-    PATTERN hicolor EXCLUDE
-)
-file(COPY ${CMAKE_CURRENT_SOURCE_DIR}
-    DESTINATION ${DATADIR_BUILD}/gnucash
-    PATTERN Makefile* EXCLUDE
-    PATTERN CMake* EXCLUDE
-    PATTERN CTest* EXCLUDE
-    PATTERN cmake* EXCLUDE
-    PATTERN hicolor EXCLUDE
-)
-install(
-    DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/hicolor DESTINATION  ${CMAKE_INSTALL_DATADIR}/gnucash/icons
-    REGEX "hicolor/.*/apps/.*" EXCLUDE
-)
-file(
-    COPY ${CMAKE_CURRENT_SOURCE_DIR}/hicolor
-    DESTINATION ${DATADIR_BUILD}/gnucash/icons
-    REGEX "hicolor/.*/apps/.*" EXCLUDE
-)
-
-install(
-    DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/hicolor DESTINATION  ${CMAKE_INSTALL_DATADIR}/icons
-    REGEX "hicolor/.*/actions/.*" EXCLUDE
-)
-file(
-    COPY ${CMAKE_CURRENT_SOURCE_DIR}/hicolor
-    DESTINATION ${DATADIR_BUILD}/icons
-    REGEX "hicolor/.*/actions/.*" EXCLUDE
-)
-
-set(gncpixmap_DATA
+set(gnc_action_icons
     hicolor/16x16/actions/gnc-account.png
     hicolor/24x24/actions/gnc-account.png
     hicolor/16x16/actions/gnc-account-delete.png
@@ -71,12 +35,9 @@ set(gncpixmap_DATA
     hicolor/24x24/actions/gnc-sx-new.png
     hicolor/16x16/actions/gnc-transfer.png
     hicolor/24x24/actions/gnc-transfer.png
-    gnucash-icon.ico
-    gnucash-icon-48x48.bmp
-    gnucash_splash.png
 )
 
-set(gncicon_DATA
+set(gnc_app_icons
     hicolor/16x16/apps/gnucash-icon.png
     hicolor/22x22/apps/gnucash-icon.png
     hicolor/24x24/apps/gnucash-icon.png
@@ -86,12 +47,35 @@ set(gncicon_DATA
     hicolor/96x96/apps/gnucash-icon.png
     hicolor/128x128/apps/gnucash-icon.png
     hicolor/256x256/apps/gnucash-icon.png
+    hicolor/scalable/apps/gnucash-icon.svg
 )
 
-set(gncscalableicon_DATA
-    hicolor/scalable/apps/gnucash-icon.svg
+set(gnc_other_pixmaps
+gnucash-icon.ico
+gnucash-icon-48x48.bmp
+gnucash_splash.png
 )
 
-set_local_dist(pixmaps_DIST_local CMakeLists.txt ${gncpixmap_DATA}
-    ${gncicon_DATA} ${gncscalableicon_DATA})
+install(FILES ${gnc_other_pixmaps} DESTINATION ${CMAKE_INSTALL_DATADIR}/gnucash/pixmaps)
+file(COPY ${gnc_other_pixmaps} DESTINATION ${DATADIR_BUILD}/gnucash/pixmaps)
+
+set(dest_base_dir "gnucash/icons")
+
+function (copy_iconpaths_to_dest iconpaths dest_base_dir)
+    foreach(iconpath ${iconpaths})
+        get_filename_component(dest_rel_dir ${iconpath} DIRECTORY)
+        set(dest_dir "${dest_base_dir}/${dest_rel_dir}")
+        install(FILES ${iconpath} DESTINATION "${CMAKE_INSTALL_DATADIR}/${dest_dir}")
+        file(COPY ${iconpath} DESTINATION "${DATADIR_BUILD}/${dest_dir}")
+    endforeach()
+endfunction()
+
+copy_iconpaths_to_dest ("${gnc_action_icons}" "gnucash/icons")
+copy_iconpaths_to_dest ("${gnc_app_icons}" "icons")
+
+#install(FILES ${gnc_app_icons} DESTINATION ${CMAKE_INSTALL_DATADIR}/icons)
+#file(COPY ${gnc_app_icons} DESTINATION ${DATADIR_BUILD}/icons)
+
+set_local_dist(pixmaps_DIST_local CMakeLists.txt ${gnc_action_icons}
+    ${gnc_other_pixmaps} ${gnc_app_icons})
 set(pixmaps_DIST ${pixmaps_DIST_local} PARENT_SCOPE)
diff --git a/gnucash/gnome/gnc-plugin-page-register.c b/gnucash/gnome/gnc-plugin-page-register.c
index ccdaeb4a3..9e20841f2 100644
--- a/gnucash/gnome/gnc-plugin-page-register.c
+++ b/gnucash/gnome/gnc-plugin-page-register.c
@@ -400,7 +400,7 @@ static GtkActionEntry gnc_plugin_page_register_actions [] =
         G_CALLBACK (gnc_plugin_page_register_cmd_paste_transaction)
     },
     {
-        "DuplicateTransactionAction", "edit-copy", DUPLICATE_TRANSACTION_LABEL, "",
+        "DuplicateTransactionAction", "edit-copy-ours", DUPLICATE_TRANSACTION_LABEL, "",
         DUPLICATE_TRANSACTION_TIP,
         G_CALLBACK (gnc_plugin_page_register_cmd_duplicate_transaction)
     },



Summary of changes:
 data/pixmaps/CMakeLists.txt              | 74 +++++++++++++-------------------
 gnucash/gnome/gnc-plugin-page-register.c |  2 +-
 2 files changed, 30 insertions(+), 46 deletions(-)



More information about the gnucash-changes mailing list