Compare commits
22 Commits
8950a533b4
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
17d9b3cf4c
|
|||
|
2aa0a6231c
|
|||
|
56a2a58ed6
|
|||
|
99834e93c0
|
|||
|
266c4c7c9f
|
|||
|
e5e42b63eb
|
|||
|
a4532ea322
|
|||
|
4aeaf61c99
|
|||
|
d5837555b8
|
|||
|
9003f36ba2
|
|||
|
6df51485d3
|
|||
|
2433b9046f
|
|||
|
93cd4dc4f9
|
|||
|
9dc1d20d6c
|
|||
|
66a3b3e259
|
|||
|
3ff0f117f9
|
|||
|
de291ffddb
|
|||
|
baaca4c58f
|
|||
|
7499f92811
|
|||
|
deceafb4f4
|
|||
|
3465557a5b
|
|||
|
082f1aa41c
|
100
CMakeLists.txt
100
CMakeLists.txt
@@ -1,6 +1,6 @@
|
|||||||
# The last version with Windows XP support is 3.13, we want to keep that
|
# The last version with Windows XP support is 3.13, we want to keep that
|
||||||
cmake_minimum_required (VERSION 3.10)
|
cmake_minimum_required (VERSION 3.10)
|
||||||
project (logdiag VERSION 0.2.1 DESCRIPTION "Schematic editor" LANGUAGES C)
|
project (logdiag VERSION 0.3.0 DESCRIPTION "Schematic editor" LANGUAGES C)
|
||||||
|
|
||||||
# Options
|
# Options
|
||||||
option (OPTION_CLANG_TIDY "Enable use of clang-tidy" OFF)
|
option (OPTION_CLANG_TIDY "Enable use of clang-tidy" OFF)
|
||||||
@@ -9,6 +9,7 @@ option (OPTION_GTKDOC "For developers only--enable use of gtk-doc" OFF)
|
|||||||
option (BUILD_TESTING "Build tests" OFF)
|
option (BUILD_TESTING "Build tests" OFF)
|
||||||
|
|
||||||
# Project information
|
# Project information
|
||||||
|
set (project_ID "name.janouch.${PROJECT_NAME}")
|
||||||
set (project_URL "https://git.janouch.name/p/logdiag")
|
set (project_URL "https://git.janouch.name/p/logdiag")
|
||||||
|
|
||||||
# For custom modules
|
# For custom modules
|
||||||
@@ -40,6 +41,7 @@ if (CONVERT_EXECUTABLE AND NOT WIN32)
|
|||||||
set (icon_svg ${icon_base}/scalable/apps/logdiag.svg)
|
set (icon_svg ${icon_base}/scalable/apps/logdiag.svg)
|
||||||
set (icon_size_list 16x16 32x32 48x48)
|
set (icon_size_list 16x16 32x32 48x48)
|
||||||
|
|
||||||
|
# ImageMagick very oddly outperforms rsvg-convert with our specific SVG
|
||||||
set (icon_png_list)
|
set (icon_png_list)
|
||||||
set (icon_symbolic_list)
|
set (icon_symbolic_list)
|
||||||
foreach (icon_size ${icon_size_list})
|
foreach (icon_size ${icon_size_list})
|
||||||
@@ -58,6 +60,8 @@ if (CONVERT_EXECUTABLE AND NOT WIN32)
|
|||||||
PROPERTIES SYMBOLIC TRUE)
|
PROPERTIES SYMBOLIC TRUE)
|
||||||
endforeach ()
|
endforeach ()
|
||||||
|
|
||||||
|
# Symbolic targets prevent the icons from being either cleaned,
|
||||||
|
# or pointlessly regenerated slightly differently
|
||||||
set (icon_ico ${PROJECT_SOURCE_DIR}/share/logdiag.ico)
|
set (icon_ico ${PROJECT_SOURCE_DIR}/share/logdiag.ico)
|
||||||
add_custom_target (${PROJECT_NAME}_icons
|
add_custom_target (${PROJECT_NAME}_icons
|
||||||
DEPENDS ${icon_symbolic_list}
|
DEPENDS ${icon_symbolic_list}
|
||||||
@@ -68,9 +72,12 @@ endif ()
|
|||||||
# Dependencies
|
# Dependencies
|
||||||
find_package (PkgConfig REQUIRED)
|
find_package (PkgConfig REQUIRED)
|
||||||
pkg_check_modules (GTK3 REQUIRED gtk+-3.0 json-glib-1.0)
|
pkg_check_modules (GTK3 REQUIRED gtk+-3.0 json-glib-1.0)
|
||||||
|
link_directories (${GTK3_LIBRARY_DIRS})
|
||||||
|
|
||||||
if (NOT WIN32)
|
if (NOT WIN32)
|
||||||
pkg_search_module (Lua REQUIRED lua>=5.2 lua5.3 lua-5.3 lua5.2 lua-5.2)
|
pkg_search_module (Lua REQUIRED lua>=5.2
|
||||||
|
lua5.4 lua-5.4 lua5.3 lua-5.3 lua5.2 lua-5.2)
|
||||||
|
link_directories (${Lua_LIBRARY_DIRS})
|
||||||
else ()
|
else ()
|
||||||
# For whatever reason this now seems to be required
|
# For whatever reason this now seems to be required
|
||||||
set (LUA_INCLUDE_DIR "${WIN32_DEPENDS_PATH}/include")
|
set (LUA_INCLUDE_DIR "${WIN32_DEPENDS_PATH}/include")
|
||||||
@@ -83,9 +90,6 @@ else ()
|
|||||||
set (Lua_INCLUDE_DIRS ${LUA_INCLUDE_DIR})
|
set (Lua_INCLUDE_DIRS ${LUA_INCLUDE_DIR})
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# This actually fucks up MinGW cross-compilation if omitted
|
|
||||||
link_directories (${GTK3_LIBRARY_DIRS})
|
|
||||||
|
|
||||||
# Localization
|
# Localization
|
||||||
find_package (Gettext REQUIRED)
|
find_package (Gettext REQUIRED)
|
||||||
file (GLOB project_PO_FILES ${PROJECT_SOURCE_DIR}/po/*.po)
|
file (GLOB project_PO_FILES ${PROJECT_SOURCE_DIR}/po/*.po)
|
||||||
@@ -143,6 +147,7 @@ set (logdiag_TESTS
|
|||||||
diagram)
|
diagram)
|
||||||
|
|
||||||
set (logdiag_SOURCES
|
set (logdiag_SOURCES
|
||||||
|
${PROJECT_BINARY_DIR}/gresource.c
|
||||||
src/ld-window-main.c
|
src/ld-window-main.c
|
||||||
src/logdiag.c)
|
src/logdiag.c)
|
||||||
set (logdiag_HEADERS
|
set (logdiag_HEADERS
|
||||||
@@ -155,34 +160,74 @@ if (WIN32)
|
|||||||
list (APPEND logdiag_SOURCES share/logdiag.rc)
|
list (APPEND logdiag_SOURCES share/logdiag.rc)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# Generate a configure file
|
|
||||||
add_definitions (-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_36)
|
|
||||||
add_definitions (-DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_36)
|
|
||||||
configure_file (config.h.in ${PROJECT_BINARY_DIR}/config.h)
|
|
||||||
include_directories (${PROJECT_BINARY_DIR})
|
|
||||||
|
|
||||||
# Generate marshallers
|
# Generate marshallers
|
||||||
find_program (GLIB_GENMARSHAL_EXECUTABLE glib-genmarshal)
|
|
||||||
if (NOT GLIB_GENMARSHAL_EXECUTABLE)
|
|
||||||
message (FATAL_ERROR "glib-genmarshal not found")
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
function (glib_genmarshal listfile prefix)
|
function (glib_genmarshal listfile prefix)
|
||||||
get_filename_component (basename "${listfile}" NAME_WE)
|
find_program (GLIB_GENMARSHAL_EXECUTABLE glib-genmarshal)
|
||||||
set (command_base ${GLIB_GENMARSHAL_EXECUTABLE} --prefix ${prefix}
|
if (NOT GLIB_GENMARSHAL_EXECUTABLE)
|
||||||
|
message (FATAL_ERROR "glib-genmarshal not found")
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
get_filename_component (_basename "${listfile}" NAME_WE)
|
||||||
|
set (_command_base ${GLIB_GENMARSHAL_EXECUTABLE} --prefix ${prefix}
|
||||||
"${listfile}")
|
"${listfile}")
|
||||||
|
|
||||||
add_custom_command (OUTPUT ${basename}.c ${basename}.h
|
add_custom_command (OUTPUT ${_basename}.c ${_basename}.h
|
||||||
COMMAND ${command_base} --body > ${basename}.c
|
COMMAND ${_command_base} --body > ${_basename}.c
|
||||||
COMMAND ${command_base} --header > ${basename}.h
|
COMMAND ${_command_base} --header > ${_basename}.h
|
||||||
DEPENDS "${listfile}"
|
DEPENDS "${listfile}"
|
||||||
COMMENT "Generating marshallers source files" VERBATIM)
|
COMMENT "Generating marshallers source files" VERBATIM)
|
||||||
endfunction ()
|
endfunction ()
|
||||||
|
|
||||||
glib_genmarshal (${PROJECT_SOURCE_DIR}/liblogdiag/ld-marshal.list ld_marshal)
|
glib_genmarshal (${PROJECT_SOURCE_DIR}/liblogdiag/ld-marshal.list ld_marshal)
|
||||||
|
|
||||||
include_directories (${PROJECT_SOURCE_DIR})
|
# Generate resources
|
||||||
include_directories (${GTK3_INCLUDE_DIRS} ${Lua_INCLUDE_DIRS})
|
function (glib_compile_resources xml target)
|
||||||
|
find_program (GLIB_COMPILE_RESOURCES_EXECUTABLE glib-compile-resources)
|
||||||
|
if (NOT GLIB_COMPILE_RESOURCES_EXECUTABLE)
|
||||||
|
message (FATAL_ERROR "glib-compile-resources not found")
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
# glib-compile-resources reads paths relative to its working directory
|
||||||
|
get_filename_component (_xml_path "${xml}" PATH)
|
||||||
|
|
||||||
|
# On Windows, the final Makefile may contain:
|
||||||
|
# cd e:\abc && ...
|
||||||
|
# That won't actually change the directory. We have to do:
|
||||||
|
# cd e:\abc && e: && ...
|
||||||
|
set (_prefix)
|
||||||
|
if (WIN32 AND "${_xml_path}" MATCHES "^.:[/\\\\]")
|
||||||
|
string (SUBSTRING "${_xml_path}" 0 2 _xml_drive)
|
||||||
|
set (_prefix ${_xml_drive} &&)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
# VERBATIM would cause problems, so it is not used here
|
||||||
|
add_custom_command (OUTPUT ${target}
|
||||||
|
COMMAND ${_prefix} ${GLIB_COMPILE_RESOURCES_EXECUTABLE}
|
||||||
|
--generate-source --target ${target} "${xml}" DEPENDS "${xml}"
|
||||||
|
WORKING_DIRECTORY "${_xml_path}" COMMENT "Compiling resources")
|
||||||
|
|
||||||
|
execute_process (COMMAND ${GLIB_COMPILE_RESOURCES_EXECUTABLE}
|
||||||
|
--generate-dependencies "${xml}"
|
||||||
|
WORKING_DIRECTORY "${_xml_path}" OUTPUT_VARIABLE _deps)
|
||||||
|
string (REPLACE "\n" ";" _deps "${_deps}")
|
||||||
|
foreach (_dep ${_deps})
|
||||||
|
set_property (SOURCE "${target}"
|
||||||
|
APPEND PROPERTY OBJECT_DEPENDS "${_xml_path}/${_dep}")
|
||||||
|
endforeach ()
|
||||||
|
|
||||||
|
configure_file ("${xml}" glib-compile-resources.stamp COPYONLY)
|
||||||
|
endfunction ()
|
||||||
|
|
||||||
|
glib_compile_resources (${PROJECT_SOURCE_DIR}/share/logdiag.gresource.xml
|
||||||
|
${PROJECT_BINARY_DIR}/gresource.c)
|
||||||
|
|
||||||
|
# Generate a configure file
|
||||||
|
add_definitions (-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_36)
|
||||||
|
add_definitions (-DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_36)
|
||||||
|
configure_file (config.h.in ${PROJECT_BINARY_DIR}/config.h)
|
||||||
|
|
||||||
|
include_directories (${PROJECT_SOURCE_DIR} ${PROJECT_BINARY_DIR}
|
||||||
|
${GTK3_INCLUDE_DIRS} ${Lua_INCLUDE_DIRS})
|
||||||
set (logdiag_LIBS ${GTK3_LIBRARIES} ${Lua_LIBRARIES} m)
|
set (logdiag_LIBS ${GTK3_LIBRARIES} ${Lua_LIBRARIES} m)
|
||||||
|
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
@@ -205,7 +250,7 @@ if (NOT GLIB_COMPILE_SCHEMAS_EXECUTABLE)
|
|||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
set (GSETTINGS_DIR "${PROJECT_SOURCE_DIR}/share")
|
set (GSETTINGS_DIR "${PROJECT_SOURCE_DIR}/share")
|
||||||
set (GSETTINGS_SCHEMAS "${GSETTINGS_DIR}/org.logdiag.gschema.xml")
|
set (GSETTINGS_SCHEMAS "${GSETTINGS_DIR}/${PROJECT_NAME}.gschema.xml")
|
||||||
|
|
||||||
if (OPTION_NOINSTALL)
|
if (OPTION_NOINSTALL)
|
||||||
set (GSETTINGS_COMPILED_SCHEMA "${PROJECT_BINARY_DIR}/gschemas.compiled")
|
set (GSETTINGS_COMPILED_SCHEMA "${PROJECT_BINARY_DIR}/gschemas.compiled")
|
||||||
@@ -350,8 +395,9 @@ else ()
|
|||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
install (DIRECTORY docs/user-guide DESTINATION share/doc/${PROJECT_NAME})
|
install (DIRECTORY docs/user-guide DESTINATION share/doc/${PROJECT_NAME})
|
||||||
install (DIRECTORY share/gui share/library DESTINATION share/${PROJECT_NAME})
|
install (DIRECTORY share/library DESTINATION share/${PROJECT_NAME})
|
||||||
install (FILES ${GSETTINGS_SCHEMAS} DESTINATION share/glib-2.0/schemas)
|
install (FILES ${GSETTINGS_SCHEMAS} DESTINATION share/glib-2.0/schemas
|
||||||
|
RENAME "${project_ID}.gschema.xml")
|
||||||
install (CODE " # DESTDIR is not in use on Windows (WIN32 is only native here!)
|
install (CODE " # DESTDIR is not in use on Windows (WIN32 is only native here!)
|
||||||
if (WIN32 OR \"\$ENV{DESTDIR}\" STREQUAL \"\")
|
if (WIN32 OR \"\$ENV{DESTDIR}\" STREQUAL \"\")
|
||||||
execute_process (COMMAND \"${GLIB_COMPILE_SCHEMAS_EXECUTABLE}\"
|
execute_process (COMMAND \"${GLIB_COMPILE_SCHEMAS_EXECUTABLE}\"
|
||||||
@@ -406,7 +452,7 @@ set (CPACK_DEBIAN_PACKAGE_HOMEPAGE "${project_URL}")
|
|||||||
|
|
||||||
set (CPACK_RPM_PACKAGE_REQUIRES "gtk3 >= 3.8, json-glib >= 0.10.4, lua = 5.2")
|
set (CPACK_RPM_PACKAGE_REQUIRES "gtk3 >= 3.8, json-glib >= 0.10.4, lua = 5.2")
|
||||||
set (CPACK_RPM_PACKAGE_GROUP "Graphics")
|
set (CPACK_RPM_PACKAGE_GROUP "Graphics")
|
||||||
set (CPACK_RPM_PACKAGE_LICENSE "ISC")
|
set (CPACK_RPM_PACKAGE_LICENSE "0BSD")
|
||||||
set (CPACK_RPM_PACKAGE_URL "${project_URL}")
|
set (CPACK_RPM_PACKAGE_URL "${project_URL}")
|
||||||
|
|
||||||
set (CPACK_SOURCE_GENERATOR "TGZ;ZIP")
|
set (CPACK_SOURCE_GENERATOR "TGZ;ZIP")
|
||||||
|
|||||||
11
NEWS
11
NEWS
@@ -1,3 +1,14 @@
|
|||||||
|
Version 0.3.0
|
||||||
|
- Added basic print functionality (lines may have the wrong width).
|
||||||
|
- Fine-tuned rendering of a few symbols.
|
||||||
|
- Bound toggling of the grid to the # key, following Inkscape.
|
||||||
|
- Ensured all opened files are added to the list of recent files.
|
||||||
|
- View position is reset when opening files.
|
||||||
|
- Made the user guide available from the Help menu.
|
||||||
|
- The website link in the About dialog now opens on Windows XP.
|
||||||
|
- Put the project's license in the About dialog.
|
||||||
|
- Made Windows builds considerably slimmer.
|
||||||
|
|
||||||
Version 0.2.1
|
Version 0.2.1
|
||||||
- Set up grounds for 64-bit Windows builds using the latest GTK+ 3.
|
- Set up grounds for 64-bit Windows builds using the latest GTK+ 3.
|
||||||
- Made the Windows installer ask to uninstall previous versions first.
|
- Made the Windows installer ask to uninstall previous versions first.
|
||||||
|
|||||||
15
README.adoc
15
README.adoc
@@ -10,8 +10,10 @@ image::docs/user-guide/logdiag-en.png[align="center"]
|
|||||||
|
|
||||||
Packages
|
Packages
|
||||||
--------
|
--------
|
||||||
Regular releases are sporadic. git master should be stable enough. You can get
|
Regular releases are sporadic. git master should be stable enough.
|
||||||
a package with the latest development version from Archlinux's AUR.
|
You can get a package with the latest development version using Arch Linux's
|
||||||
|
https://aur.archlinux.org/packages/logdiag-git[AUR],
|
||||||
|
or as a https://git.janouch.name/p/nixexprs[Nix derivation].
|
||||||
|
|
||||||
Windows installers can be downloaded from
|
Windows installers can be downloaded from
|
||||||
https://git.janouch.name/p/logdiag/releases[the Releases page on Gitea].
|
https://git.janouch.name/p/logdiag/releases[the Releases page on Gitea].
|
||||||
@@ -66,11 +68,14 @@ FindPkgConfig.cmake module to say:
|
|||||||
separate_arguments(_pkgconfig_invoke_result UNIX_COMMAND "${_pkgconfig_invoke_result}")
|
separate_arguments(_pkgconfig_invoke_result UNIX_COMMAND "${_pkgconfig_invoke_result}")
|
||||||
|
|
||||||
Run the following command in the directory with source files to automatically
|
Run the following command in the directory with source files to automatically
|
||||||
fetch and set up all dependencies (note that Windows XP is no longer able to
|
fetch and set up all dependencies:
|
||||||
download from HTTPS sources, you'll have to run this externally):
|
|
||||||
|
|
||||||
> cmake -P Win32Depends.cmake
|
> cmake -P Win32Depends.cmake
|
||||||
|
|
||||||
|
Note that on Windows XP, CMake will fail to download those files, even with
|
||||||
|
https://emailarchitect.net/easendmail/sdk/html/object_tls12.htm[updates].
|
||||||
|
You will have to run the script externally.
|
||||||
|
|
||||||
Reserve a directory for an out-of-source build and let CMake prepare the build:
|
Reserve a directory for an out-of-source build and let CMake prepare the build:
|
||||||
|
|
||||||
> mkdir build
|
> mkdir build
|
||||||
@@ -103,7 +108,7 @@ Just install MinGW-w64 and let automation take care of the rest.
|
|||||||
|
|
||||||
Alternatively, for an unnecessarily bloated MSYS2-based 64-bit build:
|
Alternatively, for an unnecessarily bloated MSYS2-based 64-bit build:
|
||||||
|
|
||||||
$ sh Win64Depends.sh
|
$ sh -e Win64Depends.sh
|
||||||
$ cmake -DCMAKE_TOOLCHAIN_FILE=ToolchainCrossWin64.cmake \
|
$ cmake -DCMAKE_TOOLCHAIN_FILE=ToolchainCrossWin64.cmake \
|
||||||
-DCMAKE_BUILD_TYPE=Release -B build
|
-DCMAKE_BUILD_TYPE=Release -B build
|
||||||
$ cmake --build build -- package
|
$ cmake --build build -- package
|
||||||
|
|||||||
@@ -5,12 +5,11 @@ set (CMAKE_C_COMPILER "i586-mingw32msvc-gcc")
|
|||||||
set (CMAKE_CXX_COMPILER "i586-mingw32msvc-g++")
|
set (CMAKE_CXX_COMPILER "i586-mingw32msvc-g++")
|
||||||
set (CMAKE_RC_COMPILER "i586-mingw32msvc-windres")
|
set (CMAKE_RC_COMPILER "i586-mingw32msvc-windres")
|
||||||
|
|
||||||
# Not needed to crosscompile an installation package
|
# Remember to set WINEPATH for library dependencies
|
||||||
#set (CMAKE_CROSSCOMPILING_EMULATOR "wine")
|
set (CMAKE_CROSSCOMPILING_EMULATOR "wine")
|
||||||
|
|
||||||
set (CMAKE_FIND_ROOT_PATH "/usr/i586-mingw32msvc")
|
set (CMAKE_FIND_ROOT_PATH "/usr/i586-mingw32msvc")
|
||||||
|
|
||||||
set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||||
set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||||
set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||||
|
|
||||||
|
|||||||
@@ -5,12 +5,11 @@ set (CMAKE_C_COMPILER "i686-w64-mingw32-gcc")
|
|||||||
set (CMAKE_CXX_COMPILER "i686-w64-mingw32-g++")
|
set (CMAKE_CXX_COMPILER "i686-w64-mingw32-g++")
|
||||||
set (CMAKE_RC_COMPILER "i686-w64-mingw32-windres")
|
set (CMAKE_RC_COMPILER "i686-w64-mingw32-windres")
|
||||||
|
|
||||||
# Not needed to crosscompile an installation package
|
# Remember to set WINEPATH for library dependencies
|
||||||
#set (CMAKE_CROSSCOMPILING_EMULATOR "wine")
|
set (CMAKE_CROSSCOMPILING_EMULATOR "wine")
|
||||||
|
|
||||||
set (CMAKE_FIND_ROOT_PATH "/usr/i686-w64-mingw32")
|
set (CMAKE_FIND_ROOT_PATH "/usr/i686-w64-mingw32")
|
||||||
|
|
||||||
set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||||
set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||||
set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||||
|
|
||||||
|
|||||||
@@ -5,12 +5,11 @@ set (CMAKE_C_COMPILER "x86_64-w64-mingw32-gcc")
|
|||||||
set (CMAKE_CXX_COMPILER "x86_64-w64-mingw32-g++")
|
set (CMAKE_CXX_COMPILER "x86_64-w64-mingw32-g++")
|
||||||
set (CMAKE_RC_COMPILER "x86_64-w64-mingw32-windres")
|
set (CMAKE_RC_COMPILER "x86_64-w64-mingw32-windres")
|
||||||
|
|
||||||
# Not needed to crosscompile an installation package
|
# Remember to set WINEPATH for library dependencies
|
||||||
#set (CMAKE_CROSSCOMPILING_EMULATOR "wine64")
|
set (CMAKE_CROSSCOMPILING_EMULATOR "wine64")
|
||||||
|
|
||||||
set (CMAKE_FIND_ROOT_PATH "/usr/x86_64-w64-mingw32")
|
set (CMAKE_FIND_ROOT_PATH "/usr/x86_64-w64-mingw32")
|
||||||
|
|
||||||
set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||||
set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||||
set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/bin/sh -e
|
#!/bin/sh -e
|
||||||
# Win64Depends.sh: download dependencies from MSYS2 for cross-compilation
|
# Win64Depends.sh: download dependencies from MSYS2 for cross-compilation.
|
||||||
# Dependencies: AWK, sed, sha256sum, cURL, bsdtar, wine64
|
# Dependencies: AWK, sed, sha256sum, cURL, bsdtar, wine64
|
||||||
repository=https://repo.msys2.org/mingw/mingw64/
|
repository=https://repo.msys2.org/mingw/mingw64/
|
||||||
|
|
||||||
@@ -27,7 +27,8 @@ fetch() {
|
|||||||
} BEGIN { while ((getline < "db.tsv") > 0) {
|
} BEGIN { while ((getline < "db.tsv") > 0) {
|
||||||
filenames[$1] = $2; deps[$1] = ""; for (i = 3; i <= NF; i++) {
|
filenames[$1] = $2; deps[$1] = ""; for (i = 3; i <= NF; i++) {
|
||||||
gsub(/[<=>].*/, "", $i); deps[$1] = deps[$1] $i FS }
|
gsub(/[<=>].*/, "", $i); deps[$1] = deps[$1] $i FS }
|
||||||
} for (i = 0; i < ARGC; i++) get(ARGV[i]) }' "$@" | while IFS= read -r name
|
} for (i = 0; i < ARGC; i++) get(ARGV[i]) }' "$@" | tee db.want | \
|
||||||
|
while IFS= read -r name
|
||||||
do
|
do
|
||||||
status Fetching "$name"
|
status Fetching "$name"
|
||||||
[ -f "packages/$name" ] || curl -#o "packages/$name" "$repository/$name"
|
[ -f "packages/$name" ] || curl -#o "packages/$name" "$repository/$name"
|
||||||
@@ -44,9 +45,9 @@ extract() {
|
|||||||
for subdir in *
|
for subdir in *
|
||||||
do [ -d "$subdir" -a "$subdir" != packages ] && rm -rf -- "$subdir"
|
do [ -d "$subdir" -a "$subdir" != packages ] && rm -rf -- "$subdir"
|
||||||
done
|
done
|
||||||
for i in packages/*
|
while IFS= read -r name
|
||||||
do bsdtar -xf "$i" --strip-components 1 mingw64
|
do bsdtar -xf "packages/$name" --strip-components 1
|
||||||
done
|
done < db.want
|
||||||
}
|
}
|
||||||
|
|
||||||
configure() {
|
configure() {
|
||||||
@@ -55,15 +56,16 @@ configure() {
|
|||||||
wine64 bin/gdk-pixbuf-query-loaders.exe \
|
wine64 bin/gdk-pixbuf-query-loaders.exe \
|
||||||
> lib/gdk-pixbuf-2.0/2.10.0/loaders.cache
|
> lib/gdk-pixbuf-2.0/2.10.0/loaders.cache
|
||||||
|
|
||||||
# pkgconf has a command line option for this, but CMake can't pass it
|
# pkgconf has a command line option for this, but CMake can't pass it.
|
||||||
sed -i "s|^prefix=/mingw64|prefix=$(pwd)|" {share,lib}/pkgconfig/*.pc
|
sed -i "s|^prefix=/mingw64|prefix=$(pwd)|" \
|
||||||
|
share/pkgconfig/*.pc lib/pkgconfig/*.pc
|
||||||
}
|
}
|
||||||
|
|
||||||
mkdir -p win32-depends
|
mkdir -p win32-depends
|
||||||
cd win32-depends
|
cd win32-depends
|
||||||
dbsync
|
dbsync
|
||||||
fetch mingw-w64-x86_64-gtk3 mingw-w64-x86_64-lua \
|
fetch mingw-w64-x86_64-gtk3 mingw-w64-x86_64-lua \
|
||||||
mingw-w64-x86_64-libwinpthread-git # because we don't do "provides"?
|
mingw-w64-x86_64-libwinpthread-git # Because we don't do "provides"?
|
||||||
verify
|
verify
|
||||||
extract
|
extract
|
||||||
configure
|
configure
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
#define PROJECT_NAME "${PROJECT_NAME}"
|
#define PROJECT_NAME "${PROJECT_NAME}"
|
||||||
#define PROJECT_VERSION "${PROJECT_VERSION}"
|
#define PROJECT_VERSION "${PROJECT_VERSION}"
|
||||||
|
#define PROJECT_ID "${project_ID}"
|
||||||
#define PROJECT_URL "${project_URL}"
|
#define PROJECT_URL "${project_URL}"
|
||||||
|
|
||||||
#cmakedefine OPTION_NOINSTALL
|
#cmakedefine OPTION_NOINSTALL
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ q:lang(cs):after { content: "“"; }
|
|||||||
<p class="details">
|
<p class="details">
|
||||||
<span id="author">Přemysl Eric Janouch</span><br>
|
<span id="author">Přemysl Eric Janouch</span><br>
|
||||||
<span id="email"><a href="mailto:p@janouch.name">p@janouch.name</a></span><br>
|
<span id="email"><a href="mailto:p@janouch.name">p@janouch.name</a></span><br>
|
||||||
<span id="revnumber">verze 0.2.2,</span>
|
<span id="revnumber">verze 0.3.0,</span>
|
||||||
<span id="revdate">2021-10-28</span>
|
<span id="revdate">2021-10-28</span>
|
||||||
|
|
||||||
<p class="figure"><img src="logdiag-cs.png" alt="Okno programu logdiag">
|
<p class="figure"><img src="logdiag-cs.png" alt="Okno programu logdiag">
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ q:lang(en):after { content: "’"; }
|
|||||||
<p class="details">
|
<p class="details">
|
||||||
<span id="author">Přemysl Eric Janouch</span><br>
|
<span id="author">Přemysl Eric Janouch</span><br>
|
||||||
<span id="email"><a href="mailto:p@janouch.name">p@janouch.name</a></span><br>
|
<span id="email"><a href="mailto:p@janouch.name">p@janouch.name</a></span><br>
|
||||||
<span id="revnumber">version 0.2.2,</span>
|
<span id="revnumber">version 0.3.0,</span>
|
||||||
<span id="revdate">2021-10-28</span>
|
<span id="revdate">2021-10-28</span>
|
||||||
|
|
||||||
<p class="figure"><img src="logdiag-en.png" alt="logdiag program window">
|
<p class="figure"><img src="logdiag-en.png" alt="logdiag program window">
|
||||||
|
|||||||
@@ -2591,7 +2591,9 @@ on_drag_motion (GtkWidget *widget, GdkDragContext *drag_ctx,
|
|||||||
/* Discard leftovers from any previous unsuccessful drag. */
|
/* Discard leftovers from any previous unsuccessful drag. */
|
||||||
if (self->priv->dnd_left)
|
if (self->priv->dnd_left)
|
||||||
{
|
{
|
||||||
g_object_unref (self->priv->dnd_symbol);
|
/* The Wayland backend does a leave-drop-leave sequence. */
|
||||||
|
if (self->priv->dnd_symbol)
|
||||||
|
g_object_unref (self->priv->dnd_symbol);
|
||||||
self->priv->dnd_symbol = NULL;
|
self->priv->dnd_symbol = NULL;
|
||||||
self->priv->dnd_left = FALSE;
|
self->priv->dnd_left = FALSE;
|
||||||
}
|
}
|
||||||
@@ -3002,6 +3004,9 @@ ld_diagram_view_get_export_bounds (LdDiagramView *self, LdRectangle *rect)
|
|||||||
{
|
{
|
||||||
LdRectangle intermediate;
|
LdRectangle intermediate;
|
||||||
|
|
||||||
|
/* Presumably, cairo_recording_surface_ink_extents() could also be used,
|
||||||
|
* though DrawData::exposed_rect currently stands in the way.
|
||||||
|
*/
|
||||||
get_diagram_bounds (self, &intermediate);
|
get_diagram_bounds (self, &intermediate);
|
||||||
ld_diagram_view_diagram_to_widget_coords_rect (self, &intermediate, rect);
|
ld_diagram_view_diagram_to_widget_coords_rect (self, &intermediate, rect);
|
||||||
return ld_diagram_view_get_scale_in_px (self);
|
return ld_diagram_view_get_scale_in_px (self);
|
||||||
|
|||||||
@@ -1,3 +1,2 @@
|
|||||||
VOID:OBJECT,OBJECT
|
|
||||||
VOID:OBJECT,STRING
|
VOID:OBJECT,STRING
|
||||||
VOID:DOUBLE,DOUBLE
|
VOID:DOUBLE,DOUBLE
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: logdiag 0.2.2\n"
|
"Project-Id-Version: logdiag 0.3.0\n"
|
||||||
"Report-Msgid-Bugs-To: https://git.janouch.name/p/logdiag/issues\n"
|
"Report-Msgid-Bugs-To: https://git.janouch.name/p/logdiag/issues\n"
|
||||||
"POT-Creation-Date: 2021-10-28 20:07+0200\n"
|
"POT-Creation-Date: 2021-10-28 20:07+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ local render = function (cr)
|
|||||||
cr:curve_to (3, 0, 2, 2, 0, 2)
|
cr:curve_to (3, 0, 2, 2, 0, 2)
|
||||||
cr:line_to (-2, 2)
|
cr:line_to (-2, 2)
|
||||||
cr:curve_to (-1, 1, -1, -1, -2, -2)
|
cr:curve_to (-1, 1, -1, -1, -2, -2)
|
||||||
|
cr:close_path ()
|
||||||
cr:stroke ()
|
cr:stroke ()
|
||||||
|
|
||||||
-- The terminals
|
-- The terminals
|
||||||
|
|||||||
@@ -21,8 +21,7 @@ local render = function (cr)
|
|||||||
cr:line_to (-1, 0)
|
cr:line_to (-1, 0)
|
||||||
|
|
||||||
-- The terminals
|
-- The terminals
|
||||||
cr:move_to (-2, 0)
|
cr:line_to (-2, 0)
|
||||||
cr:line_to (-1, 0)
|
|
||||||
|
|
||||||
cr:move_to (1, 0)
|
cr:move_to (1, 0)
|
||||||
cr:line_to (2, 0)
|
cr:line_to (2, 0)
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ local render = function (cr)
|
|||||||
cr:move_to (-1, -1)
|
cr:move_to (-1, -1)
|
||||||
cr:line_to (1, 0)
|
cr:line_to (1, 0)
|
||||||
cr:line_to (-1, 1)
|
cr:line_to (-1, 1)
|
||||||
cr:line_to (-1, -1)
|
cr:close_path ()
|
||||||
|
|
||||||
-- The vertical line
|
-- The vertical line
|
||||||
cr:move_to (1, 1)
|
cr:move_to (1, 1)
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ local render = function (cr)
|
|||||||
cr:line_to (1.5, -0.5)
|
cr:line_to (1.5, -0.5)
|
||||||
cr:line_to (1.5, 0.5)
|
cr:line_to (1.5, 0.5)
|
||||||
cr:line_to (-1.5, 0.5)
|
cr:line_to (-1.5, 0.5)
|
||||||
cr:line_to (-1.5, -0.5)
|
cr:close_path ()
|
||||||
|
|
||||||
-- The terminals
|
-- The terminals
|
||||||
cr:move_to (-2, 0)
|
cr:move_to (-2, 0)
|
||||||
|
|||||||
7
share/logdiag.gresource.xml
Normal file
7
share/logdiag.gresource.xml
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<gresources>
|
||||||
|
<gresource prefix="/logdiag">
|
||||||
|
<file>logdiag.ui</file>
|
||||||
|
<file alias="LICENSE">../LICENSE</file>
|
||||||
|
</gresource>
|
||||||
|
</gresources>
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<schemalist>
|
<schemalist>
|
||||||
<schema id="org.logdiag" path="/org/logdiag/" gettext-domain="logdiag">
|
<schema id="name.janouch.logdiag" path="/name/janouch/logdiag/" gettext-domain="logdiag">
|
||||||
<key name="show-main-toolbar" type="b">
|
<key name="show-main-toolbar" type="b">
|
||||||
<default>true</default>
|
<default>true</default>
|
||||||
<summary>Whether to show the main toolbar</summary>
|
<summary>Whether to show the main toolbar</summary>
|
||||||
@@ -14,4 +14,3 @@
|
|||||||
</key>
|
</key>
|
||||||
</schema>
|
</schema>
|
||||||
</schemalist>
|
</schemalist>
|
||||||
|
|
||||||
@@ -274,8 +274,8 @@ ld_window_main_init (LdWindowMain *self)
|
|||||||
priv->action_group, 0);
|
priv->action_group, 0);
|
||||||
|
|
||||||
error = NULL;
|
error = NULL;
|
||||||
gtk_ui_manager_add_ui_from_file
|
gtk_ui_manager_add_ui_from_resource
|
||||||
(priv->ui_manager, PROJECT_SHARE_DIR "gui/window-main.ui", &error);
|
(priv->ui_manager, "/logdiag/logdiag.ui", &error);
|
||||||
if (error)
|
if (error)
|
||||||
{
|
{
|
||||||
g_message ("building UI failed: %s", error->message);
|
g_message ("building UI failed: %s", error->message);
|
||||||
@@ -389,7 +389,7 @@ ld_window_main_init (LdWindowMain *self)
|
|||||||
gtk_widget_show_all (GTK_WIDGET (self));
|
gtk_widget_show_all (GTK_WIDGET (self));
|
||||||
|
|
||||||
/* Set up GSettings. */
|
/* Set up GSettings. */
|
||||||
priv->settings = g_settings_new ("org." PROJECT_NAME);
|
priv->settings = g_settings_new (PROJECT_ID);
|
||||||
|
|
||||||
g_settings_bind (priv->settings, "show-main-toolbar",
|
g_settings_bind (priv->settings, "show-main-toolbar",
|
||||||
gtk_action_group_get_action (priv->action_group,
|
gtk_action_group_get_action (priv->action_group,
|
||||||
@@ -712,9 +712,10 @@ diagram_save (LdWindowMain *self, GtkWindow *dialog_parent,
|
|||||||
static gboolean
|
static gboolean
|
||||||
diagram_open (LdWindowMain *self, const gchar *filename)
|
diagram_open (LdWindowMain *self, const gchar *filename)
|
||||||
{
|
{
|
||||||
GError *error;
|
GError *error = NULL;
|
||||||
|
GFile *file;
|
||||||
|
gchar *uri;
|
||||||
|
|
||||||
error = NULL;
|
|
||||||
ld_diagram_load_from_file (self->priv->diagram, filename, &error);
|
ld_diagram_load_from_file (self->priv->diagram, filename, &error);
|
||||||
if (error)
|
if (error)
|
||||||
{
|
{
|
||||||
@@ -748,8 +749,17 @@ diagram_open (LdWindowMain *self, const gchar *filename)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
file = g_file_new_for_path (filename);
|
||||||
|
uri = g_file_get_uri (file);
|
||||||
|
g_object_unref (file);
|
||||||
|
gtk_recent_manager_add_item (gtk_recent_manager_get_default (), uri);
|
||||||
|
g_free (uri);
|
||||||
|
|
||||||
ld_diagram_set_modified (self->priv->diagram, FALSE);
|
ld_diagram_set_modified (self->priv->diagram, FALSE);
|
||||||
diagram_set_filename (self, g_strdup (filename));
|
diagram_set_filename (self, g_strdup (filename));
|
||||||
|
|
||||||
|
ld_diagram_view_set_x (self->priv->view, 0);
|
||||||
|
ld_diagram_view_set_y (self->priv->view, 0);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1153,6 +1163,10 @@ static void
|
|||||||
on_action_about (GtkAction *action, LdWindowMain *self)
|
on_action_about (GtkAction *action, LdWindowMain *self)
|
||||||
{
|
{
|
||||||
GtkWidget *about_dialog;
|
GtkWidget *about_dialog;
|
||||||
|
GBytes *license;
|
||||||
|
|
||||||
|
license = g_resources_lookup_data ("/logdiag/LICENSE",
|
||||||
|
G_RESOURCE_LOOKUP_FLAGS_NONE, NULL);
|
||||||
|
|
||||||
about_dialog = g_object_new (GTK_TYPE_ABOUT_DIALOG,
|
about_dialog = g_object_new (GTK_TYPE_ABOUT_DIALOG,
|
||||||
"program-name", PROJECT_NAME,
|
"program-name", PROJECT_NAME,
|
||||||
@@ -1160,9 +1174,11 @@ on_action_about (GtkAction *action, LdWindowMain *self)
|
|||||||
"version", PROJECT_VERSION,
|
"version", PROJECT_VERSION,
|
||||||
"translator-credits", _("translator-credits"),
|
"translator-credits", _("translator-credits"),
|
||||||
"copyright", "Copyright 2010 - 2021 Přemysl Eric Janouch",
|
"copyright", "Copyright 2010 - 2021 Přemysl Eric Janouch",
|
||||||
|
"license", g_bytes_get_data (license, NULL),
|
||||||
"website", PROJECT_URL,
|
"website", PROJECT_URL,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
|
g_bytes_unref (license);
|
||||||
g_signal_connect (about_dialog, "activate-link",
|
g_signal_connect (about_dialog, "activate-link",
|
||||||
G_CALLBACK (on_action_about_activate_link), self);
|
G_CALLBACK (on_action_about_activate_link), self);
|
||||||
|
|
||||||
|
|||||||
@@ -127,16 +127,16 @@ main (int argc, char *argv[])
|
|||||||
textdomain (GETTEXT_DOMAIN);
|
textdomain (GETTEXT_DOMAIN);
|
||||||
|
|
||||||
#ifdef PROJECT_GSETTINGS_DIR
|
#ifdef PROJECT_GSETTINGS_DIR
|
||||||
/* This is enabled when the build is set up for developing, so that the
|
/* This is enabled when the build is set up for development,
|
||||||
* application can find its schema. It might also find use when
|
* so that the application can find its schema. It might also find use
|
||||||
* installing the application into a location that's missing from
|
* when installing the application into a location that's missing from
|
||||||
* g_get_system_data_dirs(), for example /usr/local or ~/.local.
|
* g_get_system_data_dirs(), for example /usr/local or ~/.local.
|
||||||
*/
|
*/
|
||||||
g_setenv ("GSETTINGS_SCHEMA_DIR", PROJECT_GSETTINGS_DIR, 0);
|
g_setenv ("GSETTINGS_SCHEMA_DIR", PROJECT_GSETTINGS_DIR, 0);
|
||||||
#endif /* PROJECT_GSETTINGS_DIR */
|
#endif /* PROJECT_GSETTINGS_DIR */
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
/* Don't be unneccessarily limited by the system ANSI codepage. */
|
/* Don't be unneccessarily limited by the system's ANSI codepage. */
|
||||||
/* g_win32_get_command_line() should replace this code for GLib >= 2.40. */
|
/* g_win32_get_command_line() should replace this code for GLib >= 2.40. */
|
||||||
argv_overriden = get_utf8_args (&argc, &argv);
|
argv_overriden = get_utf8_args (&argc, &argv);
|
||||||
if (argv_overriden)
|
if (argv_overriden)
|
||||||
|
|||||||
Reference in New Issue
Block a user