summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2025-05-24 14:35:10 +0200
committerFelix Morgner <felix.morgner@gmail.com>2025-05-24 14:35:10 +0200
commitf05c009fb30817afd905310689cb479fa36d6ff9 (patch)
treeafd9b9ce1e2b276ccbec96d578c854a2d862d855
parent3b34ac3ccbeb62673b37f0c73cc145fede43c404 (diff)
downloadturns-f05c009fb30817afd905310689cb479fa36d6ff9.tar.xz
turns-f05c009fb30817afd905310689cb479fa36d6ff9.zip
gui: add resources
-rw-r--r--CMakeLists.txt2
-rw-r--r--cmake/Modules/GlibCompileResources.cmake22
-rw-r--r--cmake/Modules/GlibCompileResources.in2
-rw-r--r--gui/CMakeLists.txt117
4 files changed, 73 insertions, 70 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index dc106d2..a907d5c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -22,7 +22,7 @@ include("GNUInstallDirs")
# Global Dependencies
-add_subdirectory("deps/libadwaitamm" SYSTEM)
+add_subdirectory("deps/libadwaitamm" EXCLUDE_FROM_ALL SYSTEM)
FetchContent_Declare(
"Catch2"
diff --git a/cmake/Modules/GlibCompileResources.cmake b/cmake/Modules/GlibCompileResources.cmake
index 3922b92..f718cac 100644
--- a/cmake/Modules/GlibCompileResources.cmake
+++ b/cmake/Modules/GlibCompileResources.cmake
@@ -7,8 +7,8 @@ find_program(GLIB_COMPILE_RESOURCES
)
function(target_add_glib_resources TARGET)
- set(SINGLE_VALUE_ARGS "PREFIX" "WORKING_DIRECTORY")
- set(MULTI_VALUE_ARGS "CSS_FILES" "UI_FILES")
+ set(SINGLE_VALUE_ARGS "NAME" "PREFIX" "WORKING_DIRECTORY")
+ set(MULTI_VALUE_ARGS "CSS_FILES" "XML_FILES")
cmake_parse_arguments(
PARSE_ARGV 1
""
@@ -23,6 +23,10 @@ function(target_add_glib_resources TARGET)
message(FATAL_ERROR "Target '${TARGET}' does not exist")
endif()
+ if(NOT _NAME)
+ set(_NAME "${TARGET}")
+ endif()
+
if(NOT _PREFIX)
message(FATAL_ERROR "Glib resource prefix not defined")
endif()
@@ -33,13 +37,13 @@ function(target_add_glib_resources TARGET)
# File Names
- set(GLIB_RESOURCE_C_FILE "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}.gresource.c")
- set(GLIB_RESOURCE_MANIFEST "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}.gresource.xml")
+ set(GLIB_RESOURCE_C_FILE "${CMAKE_CURRENT_BINARY_DIR}/${_NAME}.gresource.c")
+ set(GLIB_RESOURCE_MANIFEST "${CMAKE_CURRENT_BINARY_DIR}/${_NAME}.gresource.xml")
# Manifest File
- foreach(UI_FILE IN LISTS _UI_FILES)
- string(APPEND GLIB_RESOURCE_FILES " <file compressed=\"true\" preprocess=\"xml-stripblanks\">${UI_FILE}</file>\n")
+ foreach(XML_FILE IN LISTS _XML_FILES)
+ string(APPEND GLIB_RESOURCE_FILES " <file compressed=\"true\" preprocess=\"xml-stripblanks\">${XML_FILE}</file>\n")
endforeach()
foreach(CSS_FILE IN LISTS _CSS_FILES)
@@ -48,13 +52,13 @@ function(target_add_glib_resources TARGET)
string(STRIP "${GLIB_RESOURCE_FILES}" GLIB_RESOURCE_FILES)
set(GLIB_RESOURCE_PREFIX "${_PREFIX}")
- configure_file("${PROJECT_SOURCE_DIR}/cmake/Modules/GlibCompileResources.in"
+ configure_file("${CMAKE_CURRENT_FUNCTION_LIST_DIR}/GlibCompileResources.in"
"${GLIB_RESOURCE_MANIFEST}"
)
# Source Generation
- foreach(FILE IN LISTS _CSS_FILES _UI_FILES)
+ foreach(FILE IN LISTS _CSS_FILES _XML_FILES)
list(APPEND _DEPS "${_WORKING_DIRECTORY}/${FILE}")
endforeach()
@@ -79,5 +83,3 @@ function(target_add_glib_resources TARGET)
"${GLIB_RESOURCE_C_FILE}"
)
endfunction()
-
-# <file preprocess="xml-stripblanks">bookie.ui</file>
diff --git a/cmake/Modules/GlibCompileResources.in b/cmake/Modules/GlibCompileResources.in
index 2166c25..07b7194 100644
--- a/cmake/Modules/GlibCompileResources.in
+++ b/cmake/Modules/GlibCompileResources.in
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
- <gresource prefix="/@GLIB_RESOURCE_PREFIX@">
+ <gresource prefix="@GLIB_RESOURCE_PREFIX@">
@GLIB_RESOURCE_FILES@
</gresource>
</gresources> \ No newline at end of file
diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt
index cf7830b..389332d 100644
--- a/gui/CMakeLists.txt
+++ b/gui/CMakeLists.txt
@@ -10,17 +10,54 @@ project("turns-gui"
)
include("FetchContent")
+include("GlibCompileResources")
find_package("PkgConfig" REQUIRED)
# Dependencies
+pkg_check_modules("gio"
+ IMPORTED_TARGET
+ REQUIRED
+ "gio-2.0>=${TURNS_GLIB_MINIMUM_VERSION}"
+)
+
pkg_check_modules("glibmm"
IMPORTED_TARGET
REQUIRED
"glibmm-2.68>=${TURNS_GLIB_MINIMUM_VERSION}"
)
+# Resources
+
+add_library("resources" STATIC)
+
+target_link_libraries("resources" PUBLIC
+ "PkgConfig::gio"
+)
+
+target_add_glib_resources("resources"
+ NAME "ui"
+ WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/ui"
+ PREFIX "/ch/arknet/Turns"
+ XML_FILES
+ "participant_editor.ui"
+ "participant_row.ui"
+ "preferences.ui"
+ "tracker.ui"
+ "turn_order_view.ui"
+ CSS_FILES
+ "style.css"
+ "style-dark.css"
+)
+
+target_add_glib_resources("resources"
+ NAME "metainfo"
+ PREFIX "/ch/arknet/Turns"
+ XML_FILES
+ "metainfo.xml"
+)
+
# Application
add_executable("gui" "src/main.cpp")
@@ -38,6 +75,10 @@ target_include_directories("gui" PUBLIC
target_link_libraries("gui" PUBLIC
"adwaitamm::adwaitamm"
"turns::mm"
+
+ "$<$<CXX_COMPILER_ID:GNU,Clang>:-Wl,--whole-archive>"
+ "resources"
+ "$<$<CXX_COMPILER_ID:GNU,Clang>:-Wl,--no-whole-archive>"
)
set_target_properties("gui" PROPERTIES
@@ -47,62 +88,22 @@ set_target_properties("gui" PROPERTIES
CXX_EXTENSIONS OFF
)
-install(TARGETS "gui")
+configure_file("desktop.in" "ch.arknet.Turns.desktop")
+configure_file("metainfo.xml" "ch.arknet.Turns.metainfo.xml")
+configure_file("mime.xml" "ch.arknet.Turns.xml")
+
+install(FILES
+ "${CMAKE_CURRENT_BINARY_DIR}/ch.arknet.Turns.desktop"
+ DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications"
+)
-# add_executable("app"
-# "src/main.cpp"
-# )
-
-# target_link_libraries("app" PRIVATE
-# "$<$<AND:$<CXX_COMPILER_ID:GNU,Clang>,$<CONFIG:Debug>>:gcov>"
-
-# "PkgConfig::gtkmm"
-# "adwaitamm::adwaitamm"
-
-# "turns::core"
-# "turns::lang"
-
-# "$<$<CXX_COMPILER_ID:GNU,Clang>:-Wl,--whole-archive>"
-# "turns::ui"
-# "turns::style"
-# "$<$<CXX_COMPILER_ID:GNU,Clang>:-Wl,--no-whole-archive>"
-# )
-
-# target_add_glib_resources("app"
-# PREFIX "/ch/arknet/Turns"
-# UI_FILES "metainfo.xml"
-# )
-
-# set_target_properties("app" PROPERTIES
-# OUTPUT_NAME "turns"
-# )
-
-# install(TARGETS "app"
-# RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
-# )
-
-# install(FILES
-# "${CMAKE_CURRENT_SOURCE_DIR}/metainfo.xml"
-# DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/metainfo"
-# RENAME "ch.arknet.Turns.metainfo.xml"
-# )
-
-# configure_file("desktop.in"
-# "turns.desktop"
-# )
-
-# install(FILES
-# "${CMAKE_CURRENT_BINARY_DIR}/turns.desktop"
-# DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications"
-# RENAME "ch.arknet.Turns.desktop"
-# )
-
-# configure_file("mime.xml"
-# "turns.xml"
-# )
-
-# install(FILES
-# "${CMAKE_CURRENT_BINARY_DIR}/turns.xml"
-# DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/mime/packages"
-# RENAME "ch.arknet.Turns.xml"
-# )
+install(FILES
+ "${CMAKE_CURRENT_BINARY_DIR}/ch.arknet.Turns.metainfo.xml"
+ DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/metainfo"
+)
+install(FILES
+ "${CMAKE_CURRENT_BINARY_DIR}/ch.arknet.Turns.xml"
+ DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/mime/packages"
+)
+
+install(TARGETS "gui")