1
0
Fork 0
mirror of https://github.com/transmission/transmission synced 2024-12-23 16:24:02 +00:00
transmission/gtk/CMakeLists.txt
Will Thompson 01ffcd5dcf
gtk: add symbolic icon
The -symbolic icon variant (if available) is used in the GNOME top bar,
and when the high contrast theme is in use.  This icon was created by
Jakub Steiner, and comes from the gnome-icons repository:

https://github.com/gnome-design-team/gnome-icons/blob/master/apps-symbolic/Adwaita/scalable/apps/transmission-symbolic.svg
https://bugzilla.redhat.com/show_bug.cgi?id=1221292

There is some confusion over whether symbolic app icons should be
installed to icons/hicolor/scalable/apps (alongside the regular scalable
icon) or to icons/hicolor/symbolic/apps. On the one hand,
https://wiki.gnome.org/Initiatives/GnomeGoals/HighContrastAppIcons has
this to say:

> […] obtain a suitable symbolic style icon […] and install it to the
> hicolor prefix, the same way you would for the full color variant.
>
> cp myapp-symbolic.svg /usr/share/icons/hicolor/scalable/apps/myapp-symbolic.svg

On the other hand, the Fedora package at
https://src.fedoraproject.org/rpms/transmission/blob/master/f/transmission.spec
ships this icon in icons/hicolor/symbolic/apps:

> # Install the symbolic icon
> mkdir -p  %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps
> cp %{SOURCE1} %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps/transmission-symbolic.svg

Anecdotally, icons in scalable/ have minimum size 64×64 on openSUSE, so
symbolic/ is the safer location (given the GNOME top bar uses 32×32
icons). This has the advantage of matching the location used in the
distribution which already ships this file.

https://github.com/transmission/transmission/issues/414
2017-11-30 17:38:34 +00:00

205 lines
5.7 KiB
CMake

project(trgtk)
if(WITH_LIBAPPINDICATOR)
add_definitions(-DHAVE_LIBAPPINDICATOR)
endif()
execute_process(
COMMAND
${PKG_CONFIG_EXECUTABLE} gio-2.0 --variable glib_compile_resources
OUTPUT_VARIABLE
GLIB_COMPILE_RESOURCES_EXECUTABLE
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(NOT GLIB_COMPILE_RESOURCES_EXECUTABLE)
message(SEND_ERROR "Unable to find glib-compile-resources executable")
endif()
add_custom_command(
OUTPUT
${CMAKE_CURRENT_BINARY_DIR}/transmission-resources.c
${CMAKE_CURRENT_BINARY_DIR}/transmission-resources.h
COMMAND
${GLIB_COMPILE_RESOURCES_EXECUTABLE}
--target=${CMAKE_CURRENT_BINARY_DIR}/transmission-resources.c
--sourcedir=${CMAKE_CURRENT_SOURCE_DIR}
--generate-source
--c-name transmission
transmission.gresource.xml
COMMAND
${GLIB_COMPILE_RESOURCES_EXECUTABLE}
--target=${CMAKE_CURRENT_BINARY_DIR}/transmission-resources.h
--sourcedir=${CMAKE_CURRENT_SOURCE_DIR}
--generate-header
--c-name transmission
transmission.gresource.xml
DEPENDS
icons/hicolor_apps_24x24_transmission.png
icons/hicolor_apps_48x48_transmission.png
icons/lock.png
icons/ratio.png
icons/turtle-blue.png
icons/turtle-grey.png
icons/utilities.png
transmission.gresource.xml
transmission-ui.xml
WORKING_DIRECTORY
${CMAKE_CURRENT_SOURCE_DIR}
)
if(ENABLE_NLS)
find_program(INTLTOOL_MERGE_EXECUTABLE intltool-merge REQUIRED)
set(${PROJECT_NAME}_DESKTOP_FILE "${PROJECT_BINARY_DIR}/${TR_NAME}-gtk.desktop")
add_custom_command(
OUTPUT ${${PROJECT_NAME}_DESKTOP_FILE}
COMMAND ${INTLTOOL_MERGE_EXECUTABLE} --desktop-style --utf8 ${CMAKE_SOURCE_DIR}/po ${PROJECT_SOURCE_DIR}/transmission-gtk.desktop.in ${${PROJECT_NAME}_DESKTOP_FILE}
DEPENDS ${PROJECT_SOURCE_DIR}/transmission-gtk.desktop.in
VERBATIM
)
set(${PROJECT_NAME}_APPDATA_FILE "${PROJECT_BINARY_DIR}/${TR_NAME}-gtk.appdata.xml")
add_custom_command(
OUTPUT ${${PROJECT_NAME}_APPDATA_FILE}
COMMAND ${INTLTOOL_MERGE_EXECUTABLE} --xml-style --utf8 ${CMAKE_SOURCE_DIR}/po ${PROJECT_SOURCE_DIR}/transmission-gtk.appdata.xml.in ${${PROJECT_NAME}_APPDATA_FILE}
DEPENDS ${PROJECT_SOURCE_DIR}/transmission-gtk.appdata.xml.in
VERBATIM
)
endif()
set(${PROJECT_NAME}_SOURCES
actions.c
conf.c
details.c
dialogs.c
favicon.c
file-list.c
filter.c
hig.c
icons.c
main.c
makemeta-ui.c
msgwin.c
notify.c
open-dialog.c
relocate.c
stats.c
torrent-cell-renderer.c
tr-core.c
tr-icon.c
tr-prefs.c
tr-window.c
util.c
${CMAKE_CURRENT_BINARY_DIR}/transmission-resources.c
)
set(${PROJECT_NAME}_HEADERS
actions.h
conf.h
details.h
dialogs.h
favicon.h
file-list.h
filter.h
hig.h
icons.h
makemeta-ui.h
msgwin.h
notify.h
open-dialog.h
relocate.h
stats.h
torrent-cell-renderer.h
tr-core.h
tr-icon.h
tr-prefs.h
tr-window.h
util.h
${CMAKE_CURRENT_BINARY_DIR}/transmission-resources.h
)
include_directories(
${CMAKE_SOURCE_DIR}
${PROJECT_BINARY_DIR}
${LIBAPPINDICATOR_INCLUDE_DIRS}
${GTK_INCLUDE_DIRS}
${CURL_INCLUDE_DIRS}
${EVENT2_INCLUDE_DIRS}
)
link_directories(
${GTK_LIBRARY_DIRS}
)
add_definitions(
"-DTRANSMISSIONLOCALEDIR=\"${CMAKE_INSTALL_FULL_LOCALEDIR}\""
"-DGETTEXT_PACKAGE=\"${TR_NAME}-gtk\""
-DG_DISABLE_DEPRECATED
-DGDK_PIXBUF_DISABLE_DEPRECATED
-DGDK_DISABLE_DEPRECATED
# FIXME: migrate from GtkUIManager to GtkBuilder in 2.90
# -DGTK_DISABLE_DEPRECATED
-DPANGO_DISABLE_DEPRECATED
# FIXME: these break libnotify's headers
# -DG_DISABLE_SINGLE_INCLUDES
# -DGTK_DISABLE_SINGLE_INCLUDES
${GTK_CFLAGS_OTHER}
)
tr_win32_app_info(${PROJECT_NAME}_WIN32_RC_FILE
"Transmission GTK+ Client"
"${TR_NAME}-gtk"
"${TR_NAME}-gtk.exe"
"${TR_NAME}.ico")
add_executable(${TR_NAME}-gtk WIN32
${${PROJECT_NAME}_SOURCES}
${${PROJECT_NAME}_HEADERS}
${${PROJECT_NAME}_DESKTOP_FILE}
${${PROJECT_NAME}_APPDATA_FILE}
${${PROJECT_NAME}_WIN32_RC_FILE}
)
target_link_libraries(${TR_NAME}-gtk
${TR_NAME}
${LIBAPPINDICATOR_LIBRARIES}
${GTK_LIBRARIES}
${CURL_LIBRARIES}
${EVENT2_LIBRARIES}
)
if(MSVC)
tr_append_target_property(${TR_NAME}-gtk LINK_FLAGS "/ENTRY:mainCRTStartup")
endif()
install(TARGETS ${TR_NAME}-gtk DESTINATION ${CMAKE_INSTALL_BINDIR})
set(${PROJECT_NAME}_PUBLIC_ICONS
hicolor_apps_16x16_transmission.png
hicolor_apps_22x22_transmission.png
hicolor_apps_24x24_transmission.png
hicolor_apps_32x32_transmission.png
hicolor_apps_48x48_transmission.png
hicolor_apps_256x256_transmission.png
hicolor_apps_scalable_transmission.svg
hicolor_apps_symbolic_transmission-symbolic.svg
)
set(ICON_NAME_REGEX "^([^_]+)_([^_]+)_([^_]+)_(.+)$")
foreach(ICON ${${PROJECT_NAME}_PUBLIC_ICONS})
string(REGEX REPLACE ${ICON_NAME_REGEX} "\\1/\\3/\\2" ICON_DIR ${ICON})
string(REGEX REPLACE ${ICON_NAME_REGEX} "\\4" ICON_NAME ${ICON})
install(FILES icons/${ICON} DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/${ICON_DIR}/ RENAME ${ICON_NAME})
endforeach()
if(INSTALL_DOC)
install(FILES ${TR_NAME}-gtk.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
endif()
if(ENABLE_NLS)
install(FILES ${${PROJECT_NAME}_DESKTOP_FILE} DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)
install(FILES ${${PROJECT_NAME}_APPDATA_FILE} DESTINATION ${CMAKE_INSTALL_DATADIR}/appdata)
else()
install(FILES transmission-gtk.desktop.in DESTINATION ${CMAKE_INSTALL_DATADIR}/applications RENAME ${TR_NAME}-gtk.desktop)
endif()