Compare commits
61 Commits
|
@ -0,0 +1,38 @@
|
|||
# clang-format is fairly limited, and these rules are approximate:
|
||||
# - array initializers can get terribly mangled with clang-format 12.0,
|
||||
# - sometimes it still aligns with space characters,
|
||||
# - struct name NL { NL ... NL } NL name; is unachievable.
|
||||
BasedOnStyle: GNU
|
||||
ColumnLimit: 80
|
||||
IndentWidth: 4
|
||||
TabWidth: 4
|
||||
UseTab: ForContinuationAndIndentation
|
||||
BreakBeforeBraces: Allman
|
||||
SpaceAfterCStyleCast: true
|
||||
AlignConsecutiveAssignments: true
|
||||
AlignAfterOpenBracket: DontAlign
|
||||
AlignEscapedNewlines: DontAlign
|
||||
AlignOperands: DontAlign
|
||||
AlignConsecutiveMacros: Consecutive
|
||||
AllowAllArgumentsOnNextLine: false
|
||||
AllowAllParametersOfDeclarationOnNextLine: false
|
||||
IndentGotoLabels: false
|
||||
Cpp11BracedListStyle: true
|
||||
MaxEmptyLinesToKeep: 2
|
||||
|
||||
# IncludeCategories has some potential, but currently it breaks build.
|
||||
# Note that the documentation says the value should be "Never".
|
||||
SortIncludes: false
|
||||
|
||||
# Must be kept synchronized with gi18n.h and make-template.sh.
|
||||
WhitespaceSensitiveMacros: ['_', 'Q_', 'N_', 'C_', 'NC_']
|
||||
|
||||
# This is a compromise, it generally works out aesthetically better.
|
||||
BinPackArguments: false
|
||||
|
||||
# Unfortunately, this doesn't work for block comments, used in logdiag.
|
||||
SpacesBeforeTrailingComments: 2
|
||||
|
||||
# logdiag-specific function body wrappers.
|
||||
MacroBlockBegin: "LD_LUA_CAIRO_BEGIN"
|
||||
MacroBlockEnd: "LD_LUA_CAIRO_END"
|
|
@ -1,4 +1,3 @@
|
|||
/build
|
||||
/win32-depends
|
||||
/liblogdiag/ld-marshal.[ch]
|
||||
/CMakeLists.txt.user
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
[submodule "vera++"]
|
||||
path = vera++
|
||||
url = https://bitbucket.org/verateam/vera.git
|
366
CMakeLists.txt
366
CMakeLists.txt
|
@ -1,13 +1,15 @@
|
|||
# The last version with Windows XP support is 3.13, we want to keep that
|
||||
cmake_minimum_required (VERSION 3.9)
|
||||
project (logdiag VERSION 0.2.1 LANGUAGES C)
|
||||
cmake_minimum_required (VERSION 3.10)
|
||||
project (logdiag VERSION 0.3.0 DESCRIPTION "Schematic editor" LANGUAGES C)
|
||||
|
||||
# Options
|
||||
option (OPTION_USE_VERA "Use vera++ for source code style checks" OFF)
|
||||
option (OPTION_NOINSTALL "Only for developers; work without installing" OFF)
|
||||
option (OPTION_CLANG_TIDY "Enable use of clang-tidy" OFF)
|
||||
option (OPTION_NOINSTALL "For developers only--work without installing" OFF)
|
||||
option (OPTION_GTKDOC "For developers only--enable use of gtk-doc" OFF)
|
||||
option (BUILD_TESTING "Build tests" OFF)
|
||||
|
||||
# Project information
|
||||
set (project_ID "name.janouch.${PROJECT_NAME}")
|
||||
set (project_URL "https://git.janouch.name/p/logdiag")
|
||||
|
||||
# For custom modules
|
||||
|
@ -22,19 +24,13 @@ if (WIN32)
|
|||
|
||||
if (CMAKE_CROSSCOMPILING)
|
||||
list (APPEND CMAKE_FIND_ROOT_PATH ${WIN32_DEPENDS_PATH})
|
||||
endif (CMAKE_CROSSCOMPILING)
|
||||
endif ()
|
||||
|
||||
set (PKG_CONFIG_USE_CMAKE_PREFIX_PATH FALSE)
|
||||
# Seems like there is a regression setting this to two paths in one,
|
||||
# setting the path manually
|
||||
set (ENV{PKG_CONFIG_PATH} "${WIN32_DEPENDS_PATH}/lib/pkgconfig")
|
||||
|
||||
add_custom_target (win32-depends COMMAND ${CMAKE_COMMAND} -P
|
||||
${PROJECT_SOURCE_DIR}/Win32Depends.cmake
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
|
||||
add_custom_target (win32-depends-clean COMMAND ${CMAKE_COMMAND} -E
|
||||
remove_directory ${WIN32_DEPENDS_PATH})
|
||||
endif (WIN32)
|
||||
endif ()
|
||||
|
||||
# Generate icons
|
||||
find_program (CONVERT_EXECUTABLE convert)
|
||||
|
@ -45,6 +41,7 @@ if (CONVERT_EXECUTABLE AND NOT WIN32)
|
|||
set (icon_svg ${icon_base}/scalable/apps/logdiag.svg)
|
||||
set (icon_size_list 16x16 32x32 48x48)
|
||||
|
||||
# ImageMagick very oddly outperforms rsvg-convert with our specific SVG
|
||||
set (icon_png_list)
|
||||
set (icon_symbolic_list)
|
||||
foreach (icon_size ${icon_size_list})
|
||||
|
@ -61,35 +58,37 @@ if (CONVERT_EXECUTABLE AND NOT WIN32)
|
|||
DEPENDS ${icon_svg} VERBATIM)
|
||||
set_source_files_properties (${icon_symbolic}
|
||||
PROPERTIES SYMBOLIC TRUE)
|
||||
endforeach (icon_size)
|
||||
endforeach ()
|
||||
|
||||
# Symbolic targets prevent the icons from being either cleaned,
|
||||
# or pointlessly regenerated slightly differently
|
||||
set (icon_ico ${PROJECT_SOURCE_DIR}/share/logdiag.ico)
|
||||
add_custom_target (${PROJECT_NAME}_icons
|
||||
DEPENDS ${icon_symbolic_list}
|
||||
COMMAND ${CONVERT_EXECUTABLE} ${icon_png_list} ${icon_ico}
|
||||
COMMENT "Generating logdiag.ico" VERBATIM)
|
||||
endif (CONVERT_EXECUTABLE AND NOT WIN32)
|
||||
endif ()
|
||||
|
||||
# Dependencies
|
||||
find_package (PkgConfig REQUIRED)
|
||||
pkg_check_modules (GTK3 REQUIRED gtk+-3.0 json-glib-1.0)
|
||||
link_directories (${GTK3_LIBRARY_DIRS})
|
||||
|
||||
if (NOT WIN32)
|
||||
pkg_search_module (Lua REQUIRED lua>=5.2 lua5.3 lua-5.3 lua5.2 lua-5.2)
|
||||
else (NOT WIN32)
|
||||
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 ()
|
||||
# For whatever reason this now seems to be required
|
||||
set (LUA_INCLUDE_DIR "${WIN32_DEPENDS_PATH}/include")
|
||||
|
||||
find_package (Lua REQUIRED)
|
||||
if (LUA_VERSION_STRING VERSION_LESS "5.2")
|
||||
message (FATAL_ERROR "Lua 5.2 not found")
|
||||
endif (LUA_VERSION_STRING VERSION_LESS "5.2")
|
||||
endif ()
|
||||
set (Lua_LIBRARIES ${LUA_LIBRARIES})
|
||||
set (Lua_INCLUDE_DIRS ${LUA_INCLUDE_DIR})
|
||||
endif (NOT WIN32)
|
||||
|
||||
# This actually fucks up MinGW cross-compilation if omitted
|
||||
link_directories (${GTK3_LIBRARY_DIRS})
|
||||
endif ()
|
||||
|
||||
# Localization
|
||||
find_package (Gettext REQUIRED)
|
||||
|
@ -101,15 +100,11 @@ GETTEXT_CREATE_TRANSLATIONS (
|
|||
foreach (file ${project_PO_FILES})
|
||||
get_filename_component (translation "${file}" NAME_WE)
|
||||
list (APPEND project_TRANSLATIONS "${translation}")
|
||||
endforeach (file)
|
||||
|
||||
# Documentation--gtk-doc 1.25 is required
|
||||
find_package (GtkDoc 1.25)
|
||||
set (project_DOC_DIR "${PROJECT_BINARY_DIR}/liblogdiag")
|
||||
endforeach ()
|
||||
|
||||
# Project source files
|
||||
set (liblogdiag_SOURCES
|
||||
liblogdiag/ld-marshal.c
|
||||
${PROJECT_BINARY_DIR}/ld-marshal.c
|
||||
liblogdiag/ld-types.c
|
||||
liblogdiag/ld-undo-action.c
|
||||
liblogdiag/ld-diagram.c
|
||||
|
@ -126,9 +121,9 @@ set (liblogdiag_SOURCES
|
|||
liblogdiag/ld-lua.c
|
||||
liblogdiag/ld-lua-symbol.c)
|
||||
set (liblogdiag_HEADERS
|
||||
${PROJECT_BINARY_DIR}/ld-marshal.h
|
||||
${PROJECT_BINARY_DIR}/config.h
|
||||
liblogdiag/liblogdiag.h
|
||||
liblogdiag/ld-marshal.h
|
||||
liblogdiag/ld-types.h
|
||||
liblogdiag/ld-undo-action.h
|
||||
liblogdiag/ld-diagram.h
|
||||
|
@ -152,77 +147,93 @@ set (logdiag_TESTS
|
|||
diagram)
|
||||
|
||||
set (logdiag_SOURCES
|
||||
${PROJECT_BINARY_DIR}/gresource.c
|
||||
src/ld-window-main.c
|
||||
src/logdiag.c)
|
||||
set (logdiag_HEADERS
|
||||
${liblogdiag_HEADERS}
|
||||
src/ld-window-main.h)
|
||||
|
||||
# Resource compilation for MinGW
|
||||
if (MINGW)
|
||||
set (CMAKE_RC_COMPILER_INIT windres)
|
||||
enable_language (RC)
|
||||
set (CMAKE_RC_FLAGS "-O coff")
|
||||
set (CMAKE_RC_COMPILE_OBJECT
|
||||
"<CMAKE_RC_COMPILER> <FLAGS> <DEFINES> -o <OBJECT> <SOURCE>")
|
||||
endif (MINGW)
|
||||
|
||||
# Resource compilation for Windows
|
||||
if (WIN32)
|
||||
set (logdiag_SOURCES
|
||||
${logdiag_SOURCES}
|
||||
share/logdiag.rc)
|
||||
endif (WIN32)
|
||||
|
||||
# Generate a configure file
|
||||
configure_file (${PROJECT_SOURCE_DIR}/config.h.in
|
||||
${PROJECT_BINARY_DIR}/config.h)
|
||||
include_directories (${PROJECT_BINARY_DIR})
|
||||
# The file isn't scanned for dependencies, but they will only rarely change
|
||||
list (APPEND logdiag_SOURCES share/logdiag.rc)
|
||||
endif ()
|
||||
|
||||
# Generate marshallers
|
||||
find_program (GLIB_GENMARSHAL_EXECUTABLE glib-genmarshal)
|
||||
if (NOT GLIB_GENMARSHAL_EXECUTABLE)
|
||||
message (FATAL_ERROR "glib-genmarshal not found")
|
||||
endif (NOT GLIB_GENMARSHAL_EXECUTABLE)
|
||||
function (glib_genmarshal listfile prefix)
|
||||
find_program (GLIB_GENMARSHAL_EXECUTABLE glib-genmarshal)
|
||||
if (NOT GLIB_GENMARSHAL_EXECUTABLE)
|
||||
message (FATAL_ERROR "glib-genmarshal not found")
|
||||
endif ()
|
||||
|
||||
function (glib_genmarshal base prefix)
|
||||
get_filename_component (base_path "${base}" PATH)
|
||||
get_filename_component (base_name "${base}" NAME)
|
||||
set (command_base ${GLIB_GENMARSHAL_EXECUTABLE}
|
||||
--prefix ${prefix} "${base_name}.list")
|
||||
get_filename_component (_basename "${listfile}" NAME_WE)
|
||||
set (_command_base ${GLIB_GENMARSHAL_EXECUTABLE} --prefix ${prefix}
|
||||
"${listfile}")
|
||||
|
||||
# On Windows, the final makefile may contain:
|
||||
add_custom_command (OUTPUT ${_basename}.c ${_basename}.h
|
||||
COMMAND ${_command_base} --body > ${_basename}.c
|
||||
COMMAND ${_command_base} --header > ${_basename}.h
|
||||
DEPENDS "${listfile}"
|
||||
COMMENT "Generating marshallers source files" VERBATIM)
|
||||
endfunction ()
|
||||
|
||||
glib_genmarshal (${PROJECT_SOURCE_DIR}/liblogdiag/ld-marshal.list ld_marshal)
|
||||
|
||||
# Generate resources
|
||||
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: && ...
|
||||
if (WIN32 AND "${base_path}" MATCHES "^.:[/\\\\]")
|
||||
string (SUBSTRING "${base_path}" 0 2 base_drive)
|
||||
set (command_base "${base_drive}" && "${command_base}")
|
||||
endif (WIN32 AND "${base_path}" MATCHES "^.:[/\\\\]")
|
||||
set (_prefix)
|
||||
if (WIN32 AND "${_xml_path}" MATCHES "^.:[/\\\\]")
|
||||
string (SUBSTRING "${_xml_path}" 0 2 _xml_drive)
|
||||
set (_prefix ${_xml_drive} &&)
|
||||
endif ()
|
||||
|
||||
# NOTE: VERBATIM would cause problems, so it is not used here
|
||||
add_custom_command (OUTPUT ${base}.c
|
||||
COMMAND ${command_base} --body > "${base_name}.c"
|
||||
DEPENDS "${base}.list"
|
||||
WORKING_DIRECTORY "${base_path}"
|
||||
COMMENT "Generating marshallers source file")
|
||||
add_custom_command (OUTPUT ${base}.h
|
||||
COMMAND ${command_base} --header > "${base_name}.h"
|
||||
DEPENDS "${base}.list"
|
||||
WORKING_DIRECTORY "${base_path}"
|
||||
COMMENT "Generating marshallers header file")
|
||||
endfunction (glib_genmarshal)
|
||||
# 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")
|
||||
|
||||
glib_genmarshal (${PROJECT_SOURCE_DIR}/liblogdiag/ld-marshal
|
||||
ld_marshal)
|
||||
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 ()
|
||||
|
||||
include_directories (${PROJECT_SOURCE_DIR})
|
||||
include_directories (${GTK3_INCLUDE_DIRS} ${Lua_INCLUDE_DIRS})
|
||||
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)
|
||||
|
||||
if (WIN32)
|
||||
find_package (LibIntl REQUIRED)
|
||||
list (APPEND logdiag_LIBS ${LIBINTL_LIBRARIES})
|
||||
endif (WIN32)
|
||||
find_package (Intl REQUIRED)
|
||||
list (APPEND logdiag_LIBS ${Intl_LIBRARIES} shell32)
|
||||
endif ()
|
||||
|
||||
# Build the library
|
||||
add_library (liblogdiag STATIC ${liblogdiag_SOURCES} ${liblogdiag_HEADERS})
|
||||
|
@ -232,31 +243,66 @@ set_target_properties (liblogdiag PROPERTIES OUTPUT_NAME logdiag)
|
|||
add_executable (logdiag WIN32 ${logdiag_SOURCES} ${logdiag_HEADERS})
|
||||
target_link_libraries (logdiag liblogdiag ${logdiag_LIBS})
|
||||
|
||||
# GSettings
|
||||
find_program (GLIB_COMPILE_SCHEMAS_EXECUTABLE glib-compile-schemas)
|
||||
if (NOT GLIB_COMPILE_SCHEMAS_EXECUTABLE)
|
||||
message (FATAL_ERROR "glib-compile-schemas not found")
|
||||
endif ()
|
||||
|
||||
set (GSETTINGS_DIR "${PROJECT_SOURCE_DIR}/share")
|
||||
set (GSETTINGS_SCHEMAS "${GSETTINGS_DIR}/${PROJECT_NAME}.gschema.xml")
|
||||
|
||||
if (OPTION_NOINSTALL)
|
||||
set (GSETTINGS_COMPILED_SCHEMA "${PROJECT_BINARY_DIR}/gschemas.compiled")
|
||||
add_custom_command (OUTPUT "${GSETTINGS_COMPILED_SCHEMA}"
|
||||
COMMAND ${GLIB_COMPILE_SCHEMAS_EXECUTABLE}
|
||||
"--targetdir=${PROJECT_BINARY_DIR}" "${GSETTINGS_DIR}"
|
||||
DEPENDS "${GSETTINGS_SCHEMAS}"
|
||||
COMMENT "Compiling GSettings schema files" VERBATIM)
|
||||
add_custom_target (${PROJECT_NAME}-gschema ALL
|
||||
DEPENDS "${GSETTINGS_COMPILED_SCHEMA}")
|
||||
endif ()
|
||||
|
||||
# Testing
|
||||
if (BUILD_TESTING)
|
||||
enable_testing ()
|
||||
|
||||
add_test (NAME test-gschema-${PROJECT_NAME}
|
||||
COMMAND ${GLIB_COMPILE_SCHEMAS_EXECUTABLE} --dry-run "${GSETTINGS_DIR}")
|
||||
|
||||
foreach (name ${logdiag_TESTS})
|
||||
add_executable (test-${name} tests/${name}.c)
|
||||
target_link_libraries (test-${name} liblogdiag ${logdiag_LIBS})
|
||||
add_test (NAME test-${name} COMMAND test-${name})
|
||||
list (APPEND logdiag_TEST_TARGETS test-${name})
|
||||
endforeach (name)
|
||||
endforeach ()
|
||||
if (WIN32 AND NOT CMAKE_CROSSCOMPILING)
|
||||
set_tests_properties (${logdiag_TEST_TARGETS}
|
||||
PROPERTIES ENVIRONMENT "PATH=${WIN32_DEPENDS_PATH}/bin")
|
||||
endif ()
|
||||
endif (BUILD_TESTING)
|
||||
endif ()
|
||||
|
||||
# Generate documentation
|
||||
if (GTKDOC_FOUND)
|
||||
# FIXME: not our bug but xml/gtkdocentities.ent cannot be passed
|
||||
target_link_libraries (liblogdiag ${logdiag_LIBS})
|
||||
if (OPTION_GTKDOC)
|
||||
find_package (GtkDoc 1.25 REQUIRED)
|
||||
set (project_DOC_DIR "${PROJECT_BINARY_DIR}/liblogdiag")
|
||||
|
||||
# Extracted LDFLAGS didn't contain -l in CMake 3.21.3 and gtk-doc 1.33.2,
|
||||
# pass them explicitly and work around insanity; CMake still exits with
|
||||
# an error and gtk-doc produces empty HTML documentation
|
||||
string (REGEX REPLACE "(;)([^-])" "\\1-l\\2" xldflags "${logdiag_LIBS}")
|
||||
set_target_properties (liblogdiag PROPERTIES LINK_LIBRARIES "")
|
||||
|
||||
# The "official" module wants an XML file I don't want to give it
|
||||
file (WRITE ${PROJECT_BINARY_DIR}/liblogdiag-docs-dummy.xml "<book/>")
|
||||
|
||||
# XXX: not our bug but xml/gtkdocentities.ent cannot be passed
|
||||
# XXX: this causes `make clean` to remove the entire build directory,
|
||||
# because it marks CMAKE_CURRENT_BINARY_DIR as an output
|
||||
gtk_doc_add_module (liblogdiag
|
||||
SOURCE ${PROJECT_SOURCE_DIR}/liblogdiag
|
||||
SUFFIXES c h
|
||||
# The "official" module wants an XML file I don't want to give it
|
||||
XML ${PROJECT_BINARY_DIR}/liblogdiag/liblogdiag-docs.xml
|
||||
SUFFIXES c h LDFLAGS "-l${xldflags}"
|
||||
XML ${PROJECT_BINARY_DIR}/liblogdiag-docs-dummy.xml
|
||||
LIBRARIES liblogdiag)
|
||||
endif ()
|
||||
|
||||
|
@ -264,68 +310,38 @@ find_package (CppCheck)
|
|||
GENERATE_CPPCHECK (SOURCES liblogdiag src tests ENABLE_IDS all
|
||||
TARGET_NAME ${PROJECT_NAME}_cppcheck INCLUDES ${PROJECT_BINARY_DIR})
|
||||
|
||||
if (OPTION_USE_VERA)
|
||||
# Force this off, we don't need it
|
||||
option (VERA_LUA "" OFF)
|
||||
# Various clang-based diagnostics, loads of fake positives and spam
|
||||
if (OPTION_CLANG_TIDY)
|
||||
set (clang_tidy_checks
|
||||
clang-analyzer-* bugprone-* misc-* readability-* performance-*
|
||||
-bugprone-reserved-identifier # GObject
|
||||
-performance-no-int-to-ptr # GObject
|
||||
-bugprone-narrowing-conversions
|
||||
-bugprone-macro-parentheses # too coarse-grained
|
||||
-readability-braces-around-statements # fine by me
|
||||
-readability-isolate-declaration # fine by me
|
||||
-readability-magic-numbers # too coarse-grained
|
||||
-misc-unused-parameters) # fine by me
|
||||
|
||||
# Make it build within the same build tree
|
||||
get_directory_property (backup_includes INCLUDE_DIRECTORIES)
|
||||
set_directory_properties (PROPERTIES INCLUDE_DIRECTORIES "")
|
||||
set (backup_source_dir "${CMAKE_SOURCE_DIR}")
|
||||
set (CMAKE_SOURCE_DIR "${CMAKE_SOURCE_DIR}/vera++")
|
||||
string (REPLACE ";" "," clang_tidy_checks "${clang_tidy_checks}")
|
||||
set (clang_tidy_config "{
|
||||
Checks: '${clang_tidy_checks}',
|
||||
CheckOptions: [{
|
||||
key: readability-function-cognitive-complexity.Threshold,
|
||||
value: '30'
|
||||
}]}")
|
||||
|
||||
add_subdirectory ("vera++")
|
||||
string (REPLACE "\n" " " clang_tidy_config "${clang_tidy_config}")
|
||||
|
||||
set_directory_properties (PROPERTIES INCLUDE_DIRECTORIES "${backup_includes}")
|
||||
set (CMAKE_SOURCE_DIR "${backup_source_dir}")
|
||||
|
||||
# Check the sources
|
||||
# XXX: maybe do it per source file and not all at once
|
||||
set (vera_srcs ${liblogdiag_SOURCES} ${logdiag_SOURCES} ${logdiag_HEADERS})
|
||||
set (vera_output ${PROJECT_BINARY_DIR}/vera.log)
|
||||
add_custom_command (OUTPUT ${vera_output}
|
||||
COMMAND vera
|
||||
-R F001 -R L001 -R T001 -R T004 -R T005 -R T006
|
||||
-R T007 -R T009 -R T010 -R T015 -R T017 -R T018
|
||||
-R L004 -P max-line-length=80
|
||||
-R L005 -P max-consecutive-empty-lines=2
|
||||
--root ${CMAKE_SOURCE_DIR}/vera++
|
||||
--std-report=-
|
||||
--std-report=${vera_output}
|
||||
--warning -s
|
||||
${vera_srcs}
|
||||
DEPENDS ${vera_srcs}
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
COMMENT "Checking style for logdiag")
|
||||
|
||||
add_custom_target (logdiag_vera ALL DEPENDS ${vera_output})
|
||||
endif (OPTION_USE_VERA)
|
||||
|
||||
# GSettings
|
||||
find_program (GLIB_COMPILE_SCHEMAS_EXECUTABLE glib-compile-schemas)
|
||||
if (NOT GLIB_COMPILE_SCHEMAS_EXECUTABLE)
|
||||
message (FATAL_ERROR "glib-compile-schemas not found")
|
||||
endif (NOT GLIB_COMPILE_SCHEMAS_EXECUTABLE)
|
||||
|
||||
set (GSETTINGS_DIR "${PROJECT_SOURCE_DIR}/share")
|
||||
set (GSETTINGS_SCHEMAS "${GSETTINGS_DIR}/org.logdiag.gschema.xml")
|
||||
|
||||
add_custom_target (${PROJECT_NAME}_gschema_check
|
||||
COMMAND ${GLIB_COMPILE_SCHEMAS_EXECUTABLE} --dry-run "${GSETTINGS_DIR}"
|
||||
DEPENDS "${GSETTINGS_SCHEMAS}"
|
||||
COMMENT "Checking GSettings schema files" VERBATIM)
|
||||
|
||||
if (OPTION_NOINSTALL)
|
||||
set (GSETTINGS_COMPILED_SCHEMA "${PROJECT_BINARY_DIR}/gschemas.compiled")
|
||||
|
||||
add_custom_command (OUTPUT "${GSETTINGS_COMPILED_SCHEMA}"
|
||||
COMMAND ${GLIB_COMPILE_SCHEMAS_EXECUTABLE}
|
||||
"--targetdir=${PROJECT_BINARY_DIR}" "${GSETTINGS_DIR}"
|
||||
DEPENDS "${GSETTINGS_SCHEMAS}"
|
||||
COMMENT "Compiling GSettings schema files" VERBATIM)
|
||||
add_custom_target (${PROJECT_NAME}_gschema ALL
|
||||
DEPENDS "${GSETTINGS_COMPILED_SCHEMA}")
|
||||
endif (OPTION_NOINSTALL)
|
||||
set (CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
set (clang_tidy_sources ${liblogdiag_SOURCES} ${logdiag_SOURCES})
|
||||
add_custom_target (${PROJECT_NAME}_clang_tidy
|
||||
COMMAND clang-tidy --quiet -p ${PROJECT_BINARY_DIR}
|
||||
"--config=${clang_tidy_config}" ${clang_tidy_sources}
|
||||
| sh -c "cat 1>&2"
|
||||
DEPENDS ${clang_tidy_sources} VERBATIM
|
||||
USES_TERMINAL WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
|
||||
endif ()
|
||||
|
||||
# Installation
|
||||
if (WIN32)
|
||||
|
@ -333,8 +349,7 @@ if (WIN32)
|
|||
install (DIRECTORY
|
||||
${WIN32_DEPENDS_PATH}/bin/
|
||||
DESTINATION .
|
||||
FILES_MATCHING PATTERN "*.dll"
|
||||
PATTERN "libgettext*" EXCLUDE)
|
||||
FILES_MATCHING PATTERN "*.dll" PATTERN "gspawn-*-helper.exe")
|
||||
install (DIRECTORY
|
||||
${WIN32_DEPENDS_PATH}/etc/
|
||||
DESTINATION etc)
|
||||
|
@ -364,9 +379,11 @@ if (WIN32)
|
|||
install (DIRECTORY
|
||||
${WIN32_DEPENDS_PATH}/share/locale/${translation}
|
||||
DESTINATION share/locale)
|
||||
endif (translation_found GREATER -1)
|
||||
endforeach (locale)
|
||||
else (WIN32)
|
||||
endif ()
|
||||
endforeach ()
|
||||
|
||||
install (SCRIPT Win32Cleanup.cmake)
|
||||
else ()
|
||||
install (TARGETS logdiag DESTINATION bin)
|
||||
install (FILES share/logdiag.desktop DESTINATION share/applications)
|
||||
install (FILES share/logdiag.xml DESTINATION share/mime/packages)
|
||||
|
@ -375,18 +392,19 @@ else (WIN32)
|
|||
# install (DIRECTORY "${project_DOC_DIR}/html/"
|
||||
# DESTINATION share/gtk-doc/html/${PROJECT_NAME})
|
||||
install (FILES LICENSE NEWS DESTINATION share/doc/${PROJECT_NAME})
|
||||
endif (WIN32)
|
||||
endif ()
|
||||
|
||||
install (DIRECTORY share/gui share/library DESTINATION share/${PROJECT_NAME})
|
||||
install (FILES ${GSETTINGS_SCHEMAS} DESTINATION share/glib-2.0/schemas)
|
||||
install (CODE " # DESTDIR is not in use on Windows
|
||||
install (DIRECTORY docs/user-guide DESTINATION share/doc/${PROJECT_NAME})
|
||||
install (DIRECTORY share/library DESTINATION share/${PROJECT_NAME})
|
||||
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!)
|
||||
if (WIN32 OR \"\$ENV{DESTDIR}\" STREQUAL \"\")
|
||||
execute_process (COMMAND \"${GLIB_COMPILE_SCHEMAS_EXECUTABLE}\"
|
||||
\"\${CMAKE_INSTALL_PREFIX}/share/glib-2.0/schemas\")
|
||||
endif (WIN32 OR \"\$ENV{DESTDIR}\" STREQUAL \"\")")
|
||||
endif ()")
|
||||
|
||||
# CPack
|
||||
set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "Schematic editor")
|
||||
set (CPACK_PACKAGE_VENDOR "Premysl Eric Janouch")
|
||||
set (CPACK_PACKAGE_CONTACT "Přemysl Eric Janouch <p@janouch.name>")
|
||||
set (CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE")
|
||||
|
@ -394,10 +412,10 @@ set (CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
|
|||
|
||||
if (WIN32)
|
||||
set (CPACK_GENERATOR "NSIS;ZIP")
|
||||
else (WIN32)
|
||||
else ()
|
||||
set (CPACK_GENERATOR "TGZ;ZIP")
|
||||
set (CPACK_SET_DESTDIR TRUE)
|
||||
endif (WIN32)
|
||||
endif ()
|
||||
|
||||
set (CPACK_PACKAGE_FILE_NAME
|
||||
"${PROJECT_NAME}-${PROJECT_VERSION}-${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
|
||||
|
@ -409,22 +427,21 @@ set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${PROJECT_NAME}")
|
|||
|
||||
set (CPACK_PACKAGE_ICON "${PROJECT_SOURCE_DIR}/share\\\\header.bmp")
|
||||
set (CPACK_NSIS_INSTALLED_ICON_NAME "logdiag.exe")
|
||||
set (CPACK_NSIS_CREATE_ICONS_EXTRA "
|
||||
CreateShortCut '\$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\logdiag.lnk' '\$INSTDIR\\\\logdiag.exe'")
|
||||
set (CPACK_NSIS_DELETE_ICONS_EXTRA "
|
||||
Delete '\$SMPROGRAMS\\\\$MUI_TEMP\\\\logdiag.lnk'")
|
||||
set (CPACK_NSIS_EXTRA_INSTALL_COMMANDS "
|
||||
set (CPACK_NSIS_URL_INFO_ABOUT "${project_URL}")
|
||||
set (CPACK_NSIS_HELP_LINK "${project_URL}")
|
||||
# Or CPACK_NSIS_EXECUTABLES_DIRECTORY needs to be changed from "bin"
|
||||
set (CPACK_NSIS_MENU_LINKS "logdiag.exe" ${PROJECT_NAME})
|
||||
set (CPACK_NSIS_EXTRA_INSTALL_COMMANDS [[
|
||||
WriteRegStr HKCR '.ldd' '' 'logdiag.Diagram'
|
||||
WriteRegStr HKCR 'logdiag.Diagram' '' 'logdiag Diagram'
|
||||
WriteRegStr HKCR 'logdiag.Diagram\\\\shell\\\\open\\\\command' '' '\\\"\$INSTDIR\\\\logdiag.exe\\\" \\\"%1\\\"'
|
||||
WriteRegStr HKCR 'logdiag.Diagram\\\\shell\\\\edit\\\\command' '' '\\\"\$INSTDIR\\\\logdiag.exe\\\" \\\"%1\\\"'
|
||||
System::Call 'shell32::SHChangeNotify(i,i,i,i) (0x08000000, 0x1000, 0, 0)'")
|
||||
set (CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "
|
||||
WriteRegStr HKCR 'logdiag.Diagram\\shell\\open\\command' '' '\"$INSTDIR\\logdiag.exe\" \"%1\"'
|
||||
WriteRegStr HKCR 'logdiag.Diagram\\shell\\edit\\command' '' '\"$INSTDIR\\logdiag.exe\" \"%1\"'
|
||||
System::Call 'shell32::SHChangeNotify(i,i,i,i) (0x08000000, 0x1000, 0, 0)'
|
||||
]])
|
||||
set (CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS [[
|
||||
DeleteRegKey HKCR 'logdiag.Diagram'
|
||||
System::Call 'shell32::SHChangeNotify(i,i,i,i) (0x08000000, 0x1000, 0, 0)'")
|
||||
|
||||
string (REPLACE "https://" "https:\\\\\\\\" project_URL_NSIS "${project_URL}")
|
||||
set (CPACK_NSIS_URL_INFO_ABOUT "${project_URL_NSIS}")
|
||||
System::Call 'shell32::SHChangeNotify(i,i,i,i) (0x08000000, 0x1000, 0, 0)'
|
||||
]])
|
||||
|
||||
set (CPACK_DEBIAN_PACKAGE_DEPENDS
|
||||
"libgtk3.0-0 (>= 3.8), libjson-glib-1.0-0 (>= 0.10.4), liblua5.2-0")
|
||||
|
@ -435,12 +452,11 @@ 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_GROUP "Graphics")
|
||||
set (CPACK_RPM_PACKAGE_LICENSE "ISC")
|
||||
set (CPACK_RPM_PACKAGE_LICENSE "0BSD")
|
||||
set (CPACK_RPM_PACKAGE_URL "${project_URL}")
|
||||
|
||||
set (CPACK_SOURCE_GENERATOR "TGZ;ZIP")
|
||||
set (CPACK_SOURCE_IGNORE_FILES "/\\\\.git;/build;/CMakeLists.txt.user;/win32-depends;/liblogdiag/ld-marshal.[ch]")
|
||||
set (CPACK_SOURCE_IGNORE_FILES "/\\\\.git;/build;/CMakeLists.txt.user;/win32-depends")
|
||||
set (CPACK_SOURCE_PACKAGE_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION}")
|
||||
|
||||
include (CPack)
|
||||
|
||||
|
|
13
NEWS
13
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
|
||||
- Set up grounds for 64-bit Windows builds using the latest GTK+ 3.
|
||||
- Made the Windows installer ask to uninstall previous versions first.
|
||||
|
@ -18,8 +29,6 @@ Version 0.2.0
|
|||
- Symbol categories are also loaded from user-specific directories.
|
||||
- Show current zoom in the statusbar.
|
||||
- Ported to GTK+ 3 and Lua 5.2.
|
||||
- This is the last version supporting Windows XP (we use an outdated GTK+
|
||||
bundle, support for this operating system has been dropped in version 3.18).
|
||||
- Various unimportant fixes and changes.
|
||||
- Known issues: Windows XP looks ugly with the classic theme, little we can do.
|
||||
|
||||
|
|
60
README.adoc
60
README.adoc
|
@ -3,19 +3,25 @@ logdiag
|
|||
|
||||
'logdiag' is a simple multiplatform schematic editor written in GTK+.
|
||||
|
||||
This software has never really been finished, and is no longer being worked on.
|
||||
This software has never really been finished, and is no longer being worked on,
|
||||
although I strive to keep it building on Windows XP and elsewhere.
|
||||
|
||||
image::docs/user-guide/logdiag-en.png[align="center"]
|
||||
|
||||
Packages
|
||||
--------
|
||||
Regular releases are sporadic. git master should be stable enough. You can get
|
||||
a package with the latest development version from Archlinux's AUR.
|
||||
Regular releases are sporadic. git master should be stable enough.
|
||||
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
|
||||
https://git.janouch.name/p/logdiag/releases[the Releases page on Gitea].
|
||||
|
||||
Requirements
|
||||
------------
|
||||
Runtime dependencies: GTK+ >= 3.8, json-glib >= 0.10.4, lua >= 5.2 +
|
||||
Build dependencies: CMake >= 3.9
|
||||
Build dependencies: CMake >= 3.10
|
||||
|
||||
Build from source on Unix-like systems
|
||||
--------------------------------------
|
||||
|
@ -32,49 +38,48 @@ application to be installed. The default is _/usr/local_.
|
|||
|
||||
$ cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr
|
||||
|
||||
Now you have two basic choices of installing the application.
|
||||
|
||||
Using _make install_
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
Now you have two basic choices of installing the application:
|
||||
|
||||
1. Using _make install_:
|
||||
+
|
||||
# make install
|
||||
|
||||
Using _cpack_
|
||||
~~~~~~~~~~~~~
|
||||
2. Using _cpack_:
|
||||
+
|
||||
You have to choose a package format understood by your system package manager.
|
||||
CMake offers DEB and RPM.
|
||||
|
||||
+
|
||||
After _cpack_ finishes making the package, install this file.
|
||||
|
||||
+
|
||||
$ cpack -G DEB
|
||||
# dpkg -i logdiag-version-system-arch.deb
|
||||
|
||||
Build from source on Windows
|
||||
----------------------------
|
||||
_Note that with the current method we're stuck with GTK+ 3.8.2._
|
||||
_Note that using the current method we're stuck with GTK+ 3.8.2, which works
|
||||
worse on Windows 10, but better on XP and under WINE._
|
||||
|
||||
First install CMake and MinGW. Add both to your system path. If you want
|
||||
to build an installation package, also install NSIS. If you want to build within
|
||||
a path containing spaces, fix your FindPkgConfig.cmake to say:
|
||||
First, install CMake and MinGW (mingw32-base-bin, mingw32-gettext-dev).
|
||||
Ensure they're both in your system path. If you want to build an installation
|
||||
package, also install NSIS. If you want to build within a path containing
|
||||
spaces, https://gitlab.kitware.com/cmake/cmake/-/issues/22396[fix] your CMake's
|
||||
FindPkgConfig.cmake module to say:
|
||||
|
||||
separate_arguments(_pkgconfig_invoke_result UNIX_COMMAND "${_pkgconfig_invoke_result}")
|
||||
|
||||
Run the following command in the directory with source files to automatically
|
||||
fetch and setup all dependencies (contact me if the script becomes obsolete,
|
||||
it's easy to fix but I usually update it only just a short while before
|
||||
releasing a new version in order to resolve compatibility issues):
|
||||
fetch and set up all dependencies:
|
||||
|
||||
> cmake -P Win32Depends.cmake
|
||||
|
||||
Note that Windows XP is no longer able to reliably download from HTTPS sources.
|
||||
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:
|
||||
Reserve a directory for an out-of-source build and let CMake prepare the build:
|
||||
|
||||
> mkdir build
|
||||
> cd build
|
||||
|
||||
Let CMake prepare the build:
|
||||
|
||||
> cmake .. -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release
|
||||
|
||||
Now you can generate a package with CPack. You may choose between:
|
||||
|
@ -97,14 +102,13 @@ Just install MinGW-w64 and let automation take care of the rest.
|
|||
$ cmake -P Win32Depends.cmake
|
||||
$ mkdir build
|
||||
$ cd build
|
||||
$ cmake .. \
|
||||
-DCMAKE_TOOLCHAIN_FILE=../ToolchainCrossMinGWW64.cmake \
|
||||
-DCMAKE_BUILD_TYPE=Release
|
||||
$ cmake -DCMAKE_TOOLCHAIN_FILE=../ToolchainCrossMinGWW64.cmake \
|
||||
-DCMAKE_BUILD_TYPE=Release ..
|
||||
$ cpack
|
||||
|
||||
Alternatively, for an unnecessarily bloated MSYS2-based 64-bit build:
|
||||
|
||||
$ sh Win64Depends.sh
|
||||
$ sh -e Win64Depends.sh
|
||||
$ cmake -DCMAKE_TOOLCHAIN_FILE=ToolchainCrossWin64.cmake \
|
||||
-DCMAKE_BUILD_TYPE=Release -B build
|
||||
$ cmake --build build -- package
|
||||
|
|
|
@ -5,12 +5,11 @@ set (CMAKE_C_COMPILER "i586-mingw32msvc-gcc")
|
|||
set (CMAKE_CXX_COMPILER "i586-mingw32msvc-g++")
|
||||
set (CMAKE_RC_COMPILER "i586-mingw32msvc-windres")
|
||||
|
||||
# Not needed to crosscompile an installation package
|
||||
#set (CMAKE_CROSSCOMPILING_EMULATOR "wine")
|
||||
# Remember to set WINEPATH for library dependencies
|
||||
set (CMAKE_CROSSCOMPILING_EMULATOR "wine")
|
||||
|
||||
set (CMAKE_FIND_ROOT_PATH "/usr/i586-mingw32msvc")
|
||||
|
||||
set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY 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_RC_COMPILER "i686-w64-mingw32-windres")
|
||||
|
||||
# Not needed to crosscompile an installation package
|
||||
#set (CMAKE_CROSSCOMPILING_EMULATOR "wine")
|
||||
# Remember to set WINEPATH for library dependencies
|
||||
set (CMAKE_CROSSCOMPILING_EMULATOR "wine")
|
||||
|
||||
set (CMAKE_FIND_ROOT_PATH "/usr/i686-w64-mingw32")
|
||||
|
||||
set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY 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_RC_COMPILER "x86_64-w64-mingw32-windres")
|
||||
|
||||
# Not needed to crosscompile an installation package
|
||||
#set (CMAKE_CROSSCOMPILING_EMULATOR "wine64")
|
||||
# Remember to set WINEPATH for library dependencies
|
||||
set (CMAKE_CROSSCOMPILING_EMULATOR "wine64")
|
||||
|
||||
set (CMAKE_FIND_ROOT_PATH "/usr/x86_64-w64-mingw32")
|
||||
|
||||
set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
# To be run from cmake_install.cmake, eradicates all unreferenced libraries.
|
||||
# CMake 3.9.6 has a parsing bug with ENCODING UTF-8.
|
||||
cmake_minimum_required (VERSION 3.10)
|
||||
|
||||
# CPack runs this almost without any CMake variables at all
|
||||
# (cmStateSnapshot::SetDefaultDefinitions(), CMAKE_INSTALL_PREFIX, [DESTDIR])
|
||||
set (installdir "${CMAKE_INSTALL_PREFIX}")
|
||||
if (NOT installdir OR installdir MATCHES "^/usr(/|$)")
|
||||
return ()
|
||||
endif ()
|
||||
|
||||
# The function is recursive and CMake has tragic scoping behaviour;
|
||||
# environment variables are truly global there, in the absence of a cache
|
||||
unset (ENV{seen})
|
||||
function (expand path)
|
||||
set (seen $ENV{seen})
|
||||
if (path IN_LIST seen OR NOT EXISTS "${path}")
|
||||
return ()
|
||||
endif ()
|
||||
|
||||
set (ENV{seen} "$ENV{seen};${path}")
|
||||
file (STRINGS "${path}" strings REGEX "[.][Dd][Ll][Ll]$" ENCODING UTF-8)
|
||||
foreach (string ${strings})
|
||||
string (REGEX MATCH "[-.+_a-zA-Z0-9]+$" word "${string}")
|
||||
expand ("${installdir}/${word}")
|
||||
endforeach ()
|
||||
endfunction ()
|
||||
|
||||
file (GLOB roots LIST_DIRECTORIES false "${installdir}/*.[Ee][Xx][Ee]"
|
||||
"${installdir}/lib/gdk-pixbuf-2.0/2.10.0/loaders/*.[Dd][Ll][Ll]")
|
||||
foreach (binary ${roots})
|
||||
expand ("${binary}")
|
||||
endforeach ()
|
||||
|
||||
file (GLOB libraries LIST_DIRECTORIES false "${installdir}/*.[Dd][Ll][Ll]")
|
||||
list (REMOVE_ITEM libraries $ENV{seen})
|
||||
file (REMOVE ${libraries})
|
|
@ -6,7 +6,6 @@ cmake_minimum_required (VERSION 3.9)
|
|||
# Directories
|
||||
set (working_dir ${CMAKE_CURRENT_BINARY_DIR}/win32-depends)
|
||||
set (pkg_dir ${working_dir}/packages)
|
||||
set (tmp_dir ${working_dir}/tmp)
|
||||
file (MAKE_DIRECTORY ${working_dir})
|
||||
file (MAKE_DIRECTORY ${pkg_dir})
|
||||
|
||||
|
@ -16,32 +15,27 @@ file (GLOB files ${working_dir}/*)
|
|||
list (REMOVE_ITEM files ${pkg_dir})
|
||||
if (files)
|
||||
file (REMOVE_RECURSE ${files})
|
||||
endif (files)
|
||||
endif ()
|
||||
|
||||
# Packages
|
||||
set (pkg_list "gtk" "gtkalt" "winlibs" "mingw_lua")
|
||||
|
||||
set (pkg_gtk_root "http://ftp.gnome.org/pub/gnome/binaries/win32")
|
||||
set (pkg_gtk_urls
|
||||
"${pkg_gtk_root}/dependencies/gettext-tools-0.17.zip"
|
||||
"${pkg_gtk_root}/dependencies/gettext-runtime-0.17-1.zip")
|
||||
set (pkg_gtk_md5
|
||||
"09baff956ebd1c391c7f71e9bd768edd"
|
||||
"110394b4b1e0a50cd440f1e8729d159c")
|
||||
set (pkg_list "geany" "winlibs" "mingw_lua")
|
||||
|
||||
# https://sourceforge.net/projects/urlget/files
|
||||
# /GTK%2B%203%20binary%20for%20Windows/GTK%2B%203.16.6/
|
||||
# contains a binary bundle that may be more or less simply transplanted over,
|
||||
# due to ABI compatibility, however something is wrong with icons,
|
||||
# and it looks alien on Windows XP (use themes) for close to no improvement.
|
||||
set (pkg_gtkalt_root "https://download.geany.org/contrib/gtk")
|
||||
set (pkg_gtkalt_urls "${pkg_gtkalt_root}/gtk+-bundle_3.8.2-20131001_win32.zip")
|
||||
set (pkg_gtkalt_md5 "3f9b159207edf44937f209b4a5e6bb63")
|
||||
set (pkg_geany_root "https://download.geany.org/contrib/gtk")
|
||||
set (pkg_geany_urls "${pkg_geany_root}/gtk+-bundle_3.8.2-20131001_win32.zip")
|
||||
set (pkg_geany_md5 "3f9b159207edf44937f209b4a5e6bb63")
|
||||
|
||||
set (pkg_winlibs_root "http://sourceforge.net/projects/winlibs/files")
|
||||
set (pkg_winlibs_urls "${pkg_winlibs_root}/GTK+/libjson-glib-1.0-1-mingw32.7z")
|
||||
set (pkg_winlibs_md5 "f06e42c5998dae5fb6245fecc96a403e")
|
||||
|
||||
# With luabinaries MinGW-W64 builds the .dll/.a need to be moved to bin/lib
|
||||
# manually, and note that CMake 3.10.0 FindLua.cmake can't find Lua 5.4;
|
||||
# in any case there is no pkg-config file
|
||||
set (pkg_mingw_lua_root "http://sourceforge.net/projects/mingw/files/MinGW/Extension")
|
||||
set (pkg_mingw_lua_urls
|
||||
"${pkg_mingw_lua_root}/lua/lua-5.2.0-1/lua-5.2.0-1-mingw32-dll-52.tar.xz"
|
||||
|
@ -70,6 +64,8 @@ foreach (pkg_set ${pkg_list})
|
|||
|
||||
if (NOT EXISTS ${filename})
|
||||
message (STATUS "Downloading ${url}...")
|
||||
# TODO: on Windows XP, we can't download https://curl.se/windows/
|
||||
# but it would be somewhat nice to be able to detect it in PATH
|
||||
file (DOWNLOAD ${url} ${filename} STATUS status ${pkg_md5_param})
|
||||
|
||||
list (GET status 0 status_errno)
|
||||
|
@ -77,44 +73,32 @@ foreach (pkg_set ${pkg_list})
|
|||
if (status_errno)
|
||||
file (REMOVE ${filename})
|
||||
message (FATAL_ERROR "Download failed: ${status_msg}")
|
||||
endif (status_errno)
|
||||
endif ()
|
||||
elseif (pkg_md5_sum)
|
||||
execute_process (COMMAND ${CMAKE_COMMAND} -E md5sum ${filename}
|
||||
OUTPUT_VARIABLE output)
|
||||
if (NOT output MATCHES "^${pkg_md5_sum}")
|
||||
message (FATAL_ERROR "MD5 mismatch for ${basename}")
|
||||
endif (NOT output MATCHES "^${pkg_md5_sum}")
|
||||
endif ()
|
||||
endif ()
|
||||
endforeach (url)
|
||||
endforeach (pkg_set)
|
||||
endforeach ()
|
||||
endforeach ()
|
||||
|
||||
# Stage 2: extract the rest of packages
|
||||
foreach (pkg_set ${pkg_list})
|
||||
foreach (url ${pkg_${pkg_set}_urls})
|
||||
get_filename_component (filename ${url} NAME)
|
||||
message (STATUS "Extracting ${filename}...")
|
||||
set (extract_command ${CMAKE_COMMAND} -E tar xf)
|
||||
|
||||
set (filename ${pkg_dir}/${filename})
|
||||
if (pkg_${pkg_set}_strip)
|
||||
file (MAKE_DIRECTORY ${tmp_dir})
|
||||
execute_process (COMMAND ${extract_command} ${filename}
|
||||
WORKING_DIRECTORY ${tmp_dir}
|
||||
RESULT_VARIABLE status)
|
||||
file (COPY ${tmp_dir}/${pkg_${pkg_set}_strip}/
|
||||
DESTINATION ${working_dir})
|
||||
file (REMOVE_RECURSE ${tmp_dir})
|
||||
else ()
|
||||
execute_process (COMMAND ${extract_command} ${filename}
|
||||
WORKING_DIRECTORY ${working_dir}
|
||||
RESULT_VARIABLE status)
|
||||
endif ()
|
||||
|
||||
execute_process (COMMAND ${CMAKE_COMMAND} -E tar xf ${filename}
|
||||
WORKING_DIRECTORY ${working_dir}
|
||||
RESULT_VARIABLE status)
|
||||
if (status)
|
||||
message (FATAL_ERROR "Extraction failed: ${status}")
|
||||
endif ()
|
||||
endforeach (url)
|
||||
endforeach (pkg_set)
|
||||
endforeach ()
|
||||
endforeach ()
|
||||
|
||||
# Stage 3: final touches
|
||||
# We have to fix the prefix path as it is completely wrong everywhere
|
||||
|
@ -125,4 +109,4 @@ foreach (file ${files})
|
|||
string (REGEX REPLACE "prefix=[^\r\n]*(.*)" "prefix=${working_dir}\\1"
|
||||
file_content_fixed "${file_content}")
|
||||
file (WRITE ${file} "${file_content_fixed}")
|
||||
endforeach (file)
|
||||
endforeach ()
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#!/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
|
||||
repository=https://repo.msys2.org/mingw/mingw64/
|
||||
|
||||
|
@ -27,7 +27,8 @@ fetch() {
|
|||
} BEGIN { while ((getline < "db.tsv") > 0) {
|
||||
filenames[$1] = $2; deps[$1] = ""; for (i = 3; i <= NF; i++) {
|
||||
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
|
||||
status Fetching "$name"
|
||||
[ -f "packages/$name" ] || curl -#o "packages/$name" "$repository/$name"
|
||||
|
@ -44,9 +45,9 @@ extract() {
|
|||
for subdir in *
|
||||
do [ -d "$subdir" -a "$subdir" != packages ] && rm -rf -- "$subdir"
|
||||
done
|
||||
for i in packages/*
|
||||
do bsdtar -xf "$i" --strip-components 1 mingw64
|
||||
done
|
||||
while IFS= read -r name
|
||||
do bsdtar -xf "packages/$name" --strip-components 1
|
||||
done < db.want
|
||||
}
|
||||
|
||||
configure() {
|
||||
|
@ -55,15 +56,16 @@ configure() {
|
|||
wine64 bin/gdk-pixbuf-query-loaders.exe \
|
||||
> lib/gdk-pixbuf-2.0/2.10.0/loaders.cache
|
||||
|
||||
# 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
|
||||
# pkgconf has a command line option for this, but CMake can't pass it.
|
||||
sed -i "s|^prefix=/mingw64|prefix=$(pwd)|" \
|
||||
share/pkgconfig/*.pc lib/pkgconfig/*.pc
|
||||
}
|
||||
|
||||
mkdir -p win32-depends
|
||||
cd win32-depends
|
||||
dbsync
|
||||
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
|
||||
extract
|
||||
configure
|
||||
|
@ -71,4 +73,4 @@ configure
|
|||
status Success
|
||||
|
||||
# XXX: Why is this override needed to run some GLib-based things under wine64?
|
||||
export XDG_DATA_DIRS=$(pwd)/share
|
||||
unset XDG_DATA_DIRS
|
||||
|
|
|
@ -1,38 +0,0 @@
|
|||
# - Find libintl
|
||||
# This module looks for libintl.
|
||||
# This module defines the following values:
|
||||
# LIBINTL_FOUND
|
||||
# LIBINTL_LIBRARIES
|
||||
|
||||
#=============================================================================
|
||||
# Copyright 2011 Přemysl Eric Janouch
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are met:
|
||||
# * Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
# * Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
|
||||
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE
|
||||
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
# OF SUCH DAMAGE.
|
||||
#=============================================================================
|
||||
|
||||
find_library (LIBINTL_LIBRARIES intl)
|
||||
|
||||
include (FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS (LibIntl DEFAULT_MSG LIBINTL_LIBRARIES)
|
||||
|
||||
mark_as_advanced (LIBINTL_LIBRARIES)
|
||||
|
|
@ -10,17 +10,21 @@
|
|||
|
||||
#define PROJECT_NAME "${PROJECT_NAME}"
|
||||
#define PROJECT_VERSION "${PROJECT_VERSION}"
|
||||
#define PROJECT_ID "${project_ID}"
|
||||
#define PROJECT_URL "${project_URL}"
|
||||
|
||||
#cmakedefine OPTION_NOINSTALL
|
||||
|
||||
#ifdef OPTION_NOINSTALL
|
||||
/* For developers. */
|
||||
#define PROJECT_DOC_DIR "${CMAKE_SOURCE_DIR}/docs/"
|
||||
#define PROJECT_SHARE_DIR "${CMAKE_SOURCE_DIR}/share/"
|
||||
#define PROJECT_GSETTINGS_DIR "${CMAKE_BINARY_DIR}"
|
||||
#elif defined (_WIN32)
|
||||
#define PROJECT_DOC_DIR "share/doc/${PROJECT_NAME}/"
|
||||
#define PROJECT_SHARE_DIR "share/${PROJECT_NAME}/"
|
||||
#else
|
||||
#define PROJECT_DOC_DIR "${CMAKE_INSTALL_PREFIX}/share/doc/${PROJECT_NAME}/"
|
||||
#define PROJECT_SHARE_DIR "${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME}/"
|
||||
#endif
|
||||
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
body { max-width: 50em; margin: 0 auto 4em auto; padding: 0 2em;
|
||||
font-family: sans-serif; } h1, h2, h3 { font-weight: normal; }
|
||||
h1 { font-size: 2.5em; } h2 { font-size: 2em; } h3 { font-size: 1.33em; }
|
||||
h2 { padding-top: .67em; border-top: 1px solid silver; }
|
||||
p { line-height: 1.5; } .figure { text-align: center; } img { max-width: 100%; }
|
||||
q { font-style: normal; } .details { border-bottom: 1px solid silver; }
|
||||
.details br { display: none; } .details br + span:before { content: " — "; }
|
|
@ -1,148 +0,0 @@
|
|||
// TODO: nakonfigurovat v CMake asciidoctor-pdf, je potřeba pár `gem install`
|
||||
// https://github.com/asciidoctor/asciidoctor-pdf/blob/master/README.adoc
|
||||
// https://github.com/asciidoctor/asciidoctor-pdf/blob/master/docs/theming-guide.adoc
|
||||
|
||||
logdiag: Průvodce uživatele
|
||||
===========================
|
||||
Přemysl Eric Janouch <p@janouch.name>
|
||||
v0.2.0, 2018-06-27
|
||||
:toc: left
|
||||
:toc-title: Obsah
|
||||
:sectnums:
|
||||
:warning-caption: VAROVÁNÍ
|
||||
:xrefstyle: short
|
||||
:figure-caption: Obrázek
|
||||
|
||||
image::logdiag-cs.png[]
|
||||
|
||||
<<<
|
||||
|
||||
Úvod
|
||||
----
|
||||
Tento dokument vás má za účel provést po aplikaci a pomoci vám se v ní
|
||||
zorientovat. Popis úkonů se přednostně vztahuje na operační systém Microsoft
|
||||
Windows, do jisté míry je však platný i pro jiné operační systémy.
|
||||
|
||||
Získání aplikace
|
||||
----------------
|
||||
Nejnovější verzi aplikace je možné stáhnout na následující webové adrese:
|
||||
https://git.janouch.name/p/logdiag.
|
||||
|
||||
[[gitea-download]]
|
||||
.Nabídka pro stahování na stráncách projektu
|
||||
image::gitea.png[]
|
||||
|
||||
Až se ocitnete na webu, vyhledejte v záhlaví záložku s nápisem ``Releases'' a
|
||||
klepněte na ni. Zobrazí se přehled vydání a pod hlavičkami ``Downloads''
|
||||
související soubory ke stažení. Instalační soubor pro Microsoft Windows nese
|
||||
název ve stylu ``logdiag-__verze__-Windows-x86.exe''.
|
||||
|
||||
Instalace
|
||||
---------
|
||||
Proces instalace je velmi přímočarý. Po úvodní obrazovce je vyžadován souhlas s
|
||||
licencí. Pokud nerozumíte anglicky, její stručné shrnutí zní, že aplikaci smíte
|
||||
v nezměněné formě zcela volně používat a redistribuovat, ale nejsou vám
|
||||
poskytovány žádné záruky. Následuje výběr složky, do které chcete aplikaci
|
||||
nainstalovat, a složky pro umístění ve Start menu. V případě, že nenastala žádná
|
||||
náhlá chyba, už jen stačí potvrdit úspěšnou instalaci.
|
||||
|
||||
WARNING: Pokud aplikaci instalujete do složky, kde se nachází již existující
|
||||
instalace, mohou nastat potíže. Ačkoliv je to možné, nepokoušejte se z těch
|
||||
samých příčin instalovat ani více kopií vedle sebe. Nejdříve stávající instalaci
|
||||
odstraňte, například pomocí zástupce umístěného ve Start menu.
|
||||
|
||||
Operace s objekty
|
||||
-----------------
|
||||
|
||||
////
|
||||
|
||||
TODO: zkusit restrukturalizovat na:
|
||||
|
||||
4. Operace s objekty
|
||||
4.1 Základní operace
|
||||
4.1.1 Výběr
|
||||
4.1.2 Přesun
|
||||
4.1.3 Odstranění
|
||||
4.2 Značky
|
||||
4.2.1 Vložení
|
||||
4.2.2 Otáčení
|
||||
4.3 Spojení
|
||||
4.3.1 Tvorba
|
||||
|
||||
////
|
||||
|
||||
Každý diagram je tvořen z objektů, a s těmi se sdružují dále popsané operace.
|
||||
Budete-li chtít momentálně prováděnou operaci zrušit, můžete tak obvykle učinit
|
||||
stiskem klávesy Escape.
|
||||
|
||||
Výběr objektů
|
||||
~~~~~~~~~~~~~
|
||||
Jednotlivé objekty můžete vybírat levým kliknutím myší. Ty se v reakci na to
|
||||
vyznačí červenou barvou. Chcete-li vybrat objektů více, držte během klikání
|
||||
stisknutou klávesu Shift.
|
||||
|
||||
// XXX: nelze zarovnat obrázek na střed zároveň s caption
|
||||
[[select-objects]]
|
||||
.Výběr objektů v oblasti
|
||||
image::select-objects.png[]
|
||||
|
||||
Alternativně můžete táhnout myší z volné oblasti diagramu do prostoru, viz
|
||||
<<select-objects>>. Vyberou se objekty obsažené ve vytvořeném obdélníku. Výběr
|
||||
lze zrušit klepnutím na prázdné místo.
|
||||
|
||||
Přesun objektů
|
||||
~~~~~~~~~~~~~~
|
||||
Přesun objektů se provede tažením objektů myší na požadované místo. Pokud jsou
|
||||
tyto objekty součástí výběru, přesune se celý výběr. Ten lze též přesouvat
|
||||
pomocí kurzorových kláves.
|
||||
|
||||
Odstranění objektů
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
Objekty odstraníte stisknutím klávesy Delete, případně z menu aplikace.
|
||||
|
||||
Vložení značky
|
||||
~~~~~~~~~~~~~~
|
||||
_Značky_ představují nejdůležitější druh objektů. Do diagramu je vložíte výběrem
|
||||
z nabídky značek umístěné po levé straně hlavního okna aplikace a přetažením
|
||||
myší do diagramu na požadované umístění.
|
||||
|
||||
Otáčení značek
|
||||
~~~~~~~~~~~~~~
|
||||
Otočit značku vloženou do diagramu můžete přes pravé tlačítko myši.
|
||||
|
||||
Propojení terminálů
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
_Terminálem_ se nazývá bod určený pro tvorbu spojení mezi značkami nebo jinými
|
||||
spojeními. Abyste z něj spojení vyvedli, nejdříve na něj najeďte kurzorem myši
|
||||
tak, aby se viditelně vyznačil kroužkem. Pak stiskněte levé tlačítko myši a
|
||||
přetáhněte kurzor myši na místo, kde chcete, aby spojení končilo.
|
||||
|
||||
// XXX: nelze sloučit do jedné figure
|
||||
[[create-connection]]
|
||||
.Propojení terminálů dvou značek
|
||||
image:create-connection-begin.png[]
|
||||
...
|
||||
image:create-connection-end.png[]
|
||||
|
||||
Časté problémy
|
||||
--------------
|
||||
|
||||
Nelze otevřít uložený diagram
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Při ukládání se ujistěte, že zadaný název souboru obsahuje příponu ``.ldd''. V
|
||||
opačném případě se nezobrazí v dialogu pro otevření diagramu. Pokud jste nějaký
|
||||
soubor již bez přípony uložili, napravíte to dodatečným přidáním přípony k jeho
|
||||
názvu.
|
||||
|
||||
Jak můžu diagram vytisknout?
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Současná verze aplikace není schopná přímo tisknout. Pro vytištění vytvořeného
|
||||
diagramu můžete klávesou PrintScreen sejmout snímek obrazovky, vložit jej
|
||||
například do aplikace Malování, oříznout požadovanou část a vytisknout ji z
|
||||
tohoto grafického editoru.
|
||||
|
||||
Schází mi popisky
|
||||
~~~~~~~~~~~~~~~~~
|
||||
Obdobně jako v předchozím případě tato funkcionalita zatím neexistuje, ale je
|
||||
možné tento nedostatek obejít přes běžný grafický editor.
|
||||
|
|
@ -0,0 +1,137 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="cs">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>logdiag: Průvodce uživatele</title>
|
||||
<link rel="stylesheet" href="stylesheet.css">
|
||||
<style>
|
||||
q:lang(cs):before { content: "„"; }
|
||||
q:lang(cs):after { content: "“"; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>logdiag: Průvodce uživatele</h1>
|
||||
|
||||
<p class="details">
|
||||
<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="revnumber">verze 0.3.0,</span>
|
||||
<span id="revdate">2021-10-28</span>
|
||||
|
||||
<p class="figure"><img src="logdiag-cs.png" alt="Okno programu logdiag">
|
||||
|
||||
<h2>Úvod</h2>
|
||||
<p>Tento dokument vás má za účel provést po aplikaci a pomoci vám se v ní
|
||||
zorientovat. Popis úkonů se přednostně vztahuje na operační systém Microsoft
|
||||
Windows, do jisté míry je však platný i pro jiné operační systémy.
|
||||
|
||||
<h2>Získání aplikace</h2>
|
||||
<p>Nejnovější verzi aplikace je možné stáhnout na následující webové adrese:
|
||||
<a href="https://git.janouch.name/p/logdiag">https://git.janouch.name/p/logdiag</a>.
|
||||
|
||||
<p class="figure"><img src="gitea.png" alt="Gitea">
|
||||
<br>Obrázek 1: Nabídka pro stahování na stránkách projektu
|
||||
|
||||
<p>Až se ocitnete na webu, vyhledejte v záhlaví záložku s nápisem
|
||||
<q>Releases</q> a klepněte na ni. Zobrazí se přehled vydání a pod hlavičkami
|
||||
<q>Downloads</q> související soubory ke stažení. Instalační soubor pro Microsoft
|
||||
Windows nese název ve stylu <q>logdiag-<i>verze</i>-Windows-x86.exe</q>.
|
||||
|
||||
<h2>Instalace</h2>
|
||||
<p>Proces instalace je velmi přímočarý. Po úvodní obrazovce je vyžadován souhlas
|
||||
s licencí. Pokud nerozumíte anglicky, její stručné shrnutí zní, že aplikaci
|
||||
smíte v nezměněné formě zcela volně používat a redistribuovat, ale nejsou vám
|
||||
poskytovány žádné záruky. Následuje výběr složky, do které chcete aplikaci
|
||||
nainstalovat, a složky pro umístění ve Start menu. V případě, že nenastala žádná
|
||||
náhlá chyba, už jen stačí potvrdit úspěšnou instalaci.
|
||||
|
||||
<p><b>Pozor</b>: Pokud aplikaci instalujete do složky, kde se nachází již
|
||||
existující instalace, mohou nastat potíže. Ačkoliv je to možné, nepokoušejte se
|
||||
z těch samých příčin instalovat ani více kopií vedle sebe. Nejdříve stávající
|
||||
instalaci odstraňte, například pomocí zástupce umístěného ve Start menu.
|
||||
|
||||
<h2>Operace s objekty</h2>
|
||||
<p>Každý diagram je tvořen z objektů, a s těmi se sdružují dále popsané operace.
|
||||
Budete-li chtít momentálně prováděnou operaci zrušit, můžete tak obvykle učinit
|
||||
stiskem klávesy Escape.
|
||||
|
||||
<!-- TODO: zkusit restrukturalizovat na:
|
||||
|
||||
Operace s objekty
|
||||
Základní operace
|
||||
Výběr
|
||||
Přesun
|
||||
Odstranění
|
||||
Značky
|
||||
Vložení
|
||||
Otáčení
|
||||
Spojení
|
||||
Tvorba
|
||||
-->
|
||||
|
||||
<h3>Výběr objektů</h3>
|
||||
<p>Jednotlivé objekty můžete vybírat levým kliknutím myší. Ty se v reakci na to
|
||||
vyznačí červenou barvou. Chcete-li vybrat objektů více, držte během klikání
|
||||
stisknutou klávesu Shift.
|
||||
|
||||
<p class="figure" id="select-objects">
|
||||
<img src="select-objects.png" alt="Výběr objektů">
|
||||
<br>Obrázek 2: Výběr objektů v oblasti
|
||||
|
||||
<p>Alternativně můžete táhnout myší z volné oblasti diagramu do prostoru, viz
|
||||
<a href="#select-objects">Obrázek 2</a>. Vyberou se objekty obsažené
|
||||
ve vytvořeném obdélníku. Výběr lze zrušit klepnutím na prázdné místo.
|
||||
|
||||
<h3>Přesun objektů</h3>
|
||||
<p>Přesun objektů se provede tažením objektů myší na požadované místo. Pokud
|
||||
jsou tyto objekty součástí výběru, přesune se celý výběr. Ten lze též přesouvat
|
||||
pomocí kurzorových kláves.
|
||||
|
||||
<h3>Odstranění objektů</h3>
|
||||
<p>Objekty odstraníte stisknutím klávesy Delete, případně z menu aplikace.
|
||||
|
||||
<h3>Vložení značky</h3>
|
||||
<p><i>Značky</i> představují nejdůležitější druh objektů. Do diagramu je vložíte
|
||||
výběrem z nabídky značek umístěné po levé straně hlavního okna aplikace
|
||||
a přetažením myší do diagramu na požadované umístění.
|
||||
|
||||
<h3>Otáčení značek</h3>
|
||||
<p>Otočit značku vloženou do diagramu můžete přes pravé tlačítko myši.
|
||||
|
||||
<h3>Propojení terminálů</h3>
|
||||
<p><i>Terminálem</i> se nazývá bod určený pro tvorbu spojení mezi značkami nebo
|
||||
jinými spojeními. Abyste z něj spojení vyvedli, nejdříve na něj najeďte kurzorem
|
||||
myši tak, aby se viditelně vyznačil kroužkem. Pak stiskněte levé tlačítko myši
|
||||
a přetáhněte kurzor myši na místo, kde chcete, aby spojení končilo.
|
||||
|
||||
<p class="figure" id="create-connection">
|
||||
<img src="create-connection-begin.png" alt="Začátek operace" align="center">
|
||||
…
|
||||
<img src="create-connection-end.png" alt="Konec operace" align="center">
|
||||
<br>Obrázek 3: Propojení terminálů dvou značek
|
||||
|
||||
<h2>Časté problémy</h2>
|
||||
<h3>Nelze otevřít uložený diagram</h3>
|
||||
<p>Při ukládání se ujistěte, že zadaný název souboru obsahuje příponu
|
||||
<q>.ldd</q>. V opačném případě se nezobrazí v dialogu pro otevření diagramu.
|
||||
Pokud jste nějaký soubor již bez přípony uložili, napravíte to dodatečným
|
||||
přidáním přípony k jeho názvu.
|
||||
|
||||
<h3>Schází mi popisky</h3>
|
||||
<p>Tato funkcionalita zatím neexistuje, ale je možné tento nedostatek obejít
|
||||
buď sejmutím snímku obrazovky klávesou PrintScreen a jeho vložením například
|
||||
do aplikace Malování, nebo obdobně doplněním vašich textů do <q>vytištěného</q>
|
||||
PDF souboru.
|
||||
|
||||
<script>
|
||||
var toc = '', all = document.querySelectorAll('h2')
|
||||
for (var i = 0; i < all.length; i++) {
|
||||
var name = all[i].innerHTML.replace(/[^0-9a-z]/ig, '-')
|
||||
toc += '<li><p><a href="#' + name + '">' + all[i].innerHTML + '</a></li>'
|
||||
all[i].id = name
|
||||
all[i].innerHTML = (i + 1) + '. ' + all[i].innerHTML
|
||||
}
|
||||
all[0].insertAdjacentHTML('beforebegin',
|
||||
'<h2>Obsah</h2><ol>' + toc + '</ol>')
|
||||
</script>
|
|
@ -1,146 +0,0 @@
|
|||
// TODO: nakonfigurovat v CMake asciidoctor-pdf, je potřeba pár `gem install`
|
||||
// https://github.com/asciidoctor/asciidoctor-pdf/blob/master/README.adoc
|
||||
// https://github.com/asciidoctor/asciidoctor-pdf/blob/master/docs/theming-guide.adoc
|
||||
|
||||
logdiag: User Guide
|
||||
===================
|
||||
Přemysl Eric Janouch <p@janouch.name>
|
||||
v0.2.0, 2018-06-27
|
||||
:toc: left
|
||||
:sectnums:
|
||||
:xrefstyle: short
|
||||
|
||||
image::logdiag-en.png[]
|
||||
|
||||
<<<
|
||||
|
||||
Introduction
|
||||
------------
|
||||
This document will guide you through the application and help to familiarize you
|
||||
with it. The description of tasks mainly targets the Microsoft Windows
|
||||
operating system, though it's also valid for other operating systems to
|
||||
a certain extent.
|
||||
|
||||
Getting the application
|
||||
-----------------------
|
||||
Download the newest version of the application at the following web address:
|
||||
https://git.janouch.name/p/logdiag.
|
||||
|
||||
[[gitea-download]]
|
||||
.The download menu on the project site
|
||||
image::gitea.png[]
|
||||
|
||||
While on the web, look for a tab entitled ``Releases'' and click on it. A list
|
||||
of versions will appear with files for download listed under ``Downloads''
|
||||
headings. The installation file for Microsoft Windows is named in the style of
|
||||
``logdiag-__version__-Windows-x86.exe''.
|
||||
|
||||
Installation
|
||||
------------
|
||||
The installation process is quite straight-forward. After the initial screen a
|
||||
license agreement is required. Next, choose a folder in which to install the
|
||||
application and another one for placement in the Start menu. So long as no
|
||||
unexpected errors have occurred, all that's left is confirming a successful
|
||||
installation.
|
||||
|
||||
WARNING: If the application is installed into a folder where a previous
|
||||
installation is already located, problems may arise. Although it is possible to
|
||||
do so, don't try to install multiple copies parallely either, for the same
|
||||
reasons. Remove the current installation first, for example by using the
|
||||
shortcut located in the Start menu.
|
||||
|
||||
Operations with objects
|
||||
-----------------------
|
||||
|
||||
////
|
||||
|
||||
TODO: zkusit restrukturalizovat na:
|
||||
|
||||
4. Operace s objekty
|
||||
4.1 Základní operace
|
||||
4.1.1 Výběr
|
||||
4.1.2 Přesun
|
||||
4.1.3 Odstranění
|
||||
4.2 Značky
|
||||
4.2.1 Vložení
|
||||
4.2.2 Otáčení
|
||||
4.3 Spojení
|
||||
4.3.1 Tvorba
|
||||
|
||||
////
|
||||
|
||||
Each diagram consists of objects, and these are accompanied by the operations
|
||||
described below. To cancel any current operation, press the Escape key.
|
||||
|
||||
Selecting objects
|
||||
~~~~~~~~~~~~~~~~~
|
||||
Select single objects by left-clicking on them. They will get highlighted with
|
||||
red color in reaction to this. To select multiple objects, hold the Shift key
|
||||
while clicking.
|
||||
|
||||
// XXX: nelze zarovnat obrázek na střed zároveň s caption
|
||||
[[select-objects]]
|
||||
.Selecting objects inside an area
|
||||
image::select-objects.png[]
|
||||
|
||||
Alternatively drag the mouse from free space within the diagram into the area,
|
||||
see <<select-objects>>. Objects contained in this rectangle will be
|
||||
selected. The selection may later be dismissed by just clicking into free space.
|
||||
|
||||
Moving objects
|
||||
~~~~~~~~~~~~~~
|
||||
Moving of objects is done by dragging them with the mouse onto the desired
|
||||
place. If these objects form a part of the current selection, the whole
|
||||
selection is moved. The selection may also be moved using cursor keys.
|
||||
|
||||
Removing objects
|
||||
~~~~~~~~~~~~~~~~
|
||||
Remove objects either by pressing the Delete key or from the application menu.
|
||||
|
||||
Inserting symbols
|
||||
~~~~~~~~~~~~~~~~~
|
||||
_Symbols_ constitute the most important kind of objects. Insert them into the
|
||||
diagram by choosing one from the symbol menu located on the left side of the
|
||||
main application window and dragging it onto the diagram where you want the
|
||||
symbol to be placed.
|
||||
|
||||
Rotating symbols
|
||||
~~~~~~~~~~~~~~~~
|
||||
Rotate a symbol inserted into the diagram by right-clicking on it.
|
||||
|
||||
Connecting terminals
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
A point intended for creation of connections between symbols or other
|
||||
connections is called a _terminal_. To lead a connection out of it, first
|
||||
hover it with the mouse pointer, so it gets visibly highlighted with a circle.
|
||||
Then press the left mouse button and drag the pointer onto the place where you
|
||||
want the connection to end.
|
||||
|
||||
// XXX: nelze sloučit do jedné figure
|
||||
[[create-connection]]
|
||||
.Interconnecting terminals of two symbols
|
||||
image:create-connection-begin.png[]
|
||||
...
|
||||
image:create-connection-end.png[]
|
||||
|
||||
Frequent problems
|
||||
-----------------
|
||||
|
||||
Can't open a saved diagram
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
When saving, ensure that the filename you've typed in contains the ``.ldd''
|
||||
suffix. If not, it won't show up in the dialog for opening diagrams. In case
|
||||
you've already saved a file without an extension, you may fix this situation by
|
||||
adding the suffix to its name.
|
||||
|
||||
How do I print a diagram?
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
The current version of application is not able to print directly. To print out a
|
||||
created diagram, you may use the PrintScreen key to capture a screenshot, then
|
||||
insert it to, for example, Paint, and print it from inside the graphics editor.
|
||||
|
||||
I miss labels
|
||||
~~~~~~~~~~~~~
|
||||
Similarly to the previous case, this functionality doesn't exist yet, but it is
|
||||
possible to get around this limitation using a graphics editor.
|
||||
|
|
@ -0,0 +1,129 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>logdiag: User Guide</title>
|
||||
<link rel="stylesheet" href="stylesheet.css">
|
||||
<style>
|
||||
q:lang(en):before { content: "‘"; }
|
||||
q:lang(en):after { content: "’"; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>logdiag: User Guide</h1>
|
||||
|
||||
<p class="details">
|
||||
<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="revnumber">version 0.3.0,</span>
|
||||
<span id="revdate">2021-10-28</span>
|
||||
|
||||
<p class="figure"><img src="logdiag-en.png" alt="logdiag program window">
|
||||
|
||||
<h2>Introduction</h2>
|
||||
<p>This document will guide you through the application and help to familiarize
|
||||
you with it. The description of tasks mainly targets the Microsoft Windows
|
||||
operating system, though it’s also valid for other operating systems to
|
||||
a certain extent.
|
||||
|
||||
<h2>Getting the application</h2>
|
||||
<p>Download the newest version of the application at the following web address:
|
||||
<a href="https://git.janouch.name/p/logdiag">https://git.janouch.name/p/logdiag</a>.
|
||||
|
||||
<p class="figure"><img src="gitea.png" alt="Gitea">
|
||||
<br>Figure 1: The download menu on the project site
|
||||
|
||||
<p>While on the web, look for a tab entitled <q>Releases</q> and click on it.
|
||||
A list of versions will appear with files for download listed under
|
||||
<q>Downloads</q> headings. The installation file for Microsoft Windows is named
|
||||
in the style of <q>logdiag-<i>version</i>-Windows-x86.exe</q>.
|
||||
|
||||
<h2>Installation</h2>
|
||||
<p>The installation process is quite straight-forward. After the initial screen
|
||||
a license agreement is required. Next, choose a folder in which to install
|
||||
the application and another one for placement in the Start menu. So long as
|
||||
no unexpected errors have occurred, all that’s left is confirming a successful
|
||||
installation.
|
||||
|
||||
<p><b>Warning</b>: If the application is installed into a folder where
|
||||
a previous installation is already located, problems may arise. Although it is
|
||||
possible to do so, don’t try to install multiple copies parallely either, for
|
||||
the same reasons. Remove the current installation first, for example by using
|
||||
the shortcut located in the Start menu.
|
||||
|
||||
<h2>Operations with objects</h2>
|
||||
<p>Each diagram consists of objects, and these are accompanied by the operations
|
||||
described below. To cancel any current operation, press the Escape key.
|
||||
|
||||
<!-- TODO: see the Czech version -->
|
||||
|
||||
<h3>Selecting objects</h3>
|
||||
<p>Select single objects by left-clicking on them. They will get highlighted
|
||||
with red color in reaction to this. To select multiple objects, hold the Shift
|
||||
key while clicking.
|
||||
|
||||
<p class="figure" id="select-objects">
|
||||
<img src="select-objects.png" alt="select objects">
|
||||
<br>Figure 2: Selecting objects inside an area
|
||||
|
||||
<p>Alternatively drag the mouse from free space within the diagram into
|
||||
the area, see <a href="#select-objects">Figure 2</a>. Objects contained in this
|
||||
rectangle will be selected. The selection may later be dismissed by just
|
||||
clicking into free space.
|
||||
|
||||
<h3>Moving objects</h3>
|
||||
<p>Moving of objects is done by dragging them with the mouse onto the desired
|
||||
place. If these objects form a part of the current selection, the whole
|
||||
selection is moved. The selection may also be moved using cursor keys.
|
||||
|
||||
<h3>Removing objects</h3>
|
||||
<p>Remove objects either by pressing the Delete key or from the application
|
||||
menu.
|
||||
|
||||
<h3>Inserting symbols</h3>
|
||||
<p><i>Symbols</i> constitute the most important kind of objects. Insert them
|
||||
into the diagram by choosing one from the symbol menu located on the left side
|
||||
of the main application window and dragging it onto the diagram where you want
|
||||
the symbol to be placed.
|
||||
|
||||
<h3>Rotating symbols</h3>
|
||||
<p>Rotate a symbol inserted into the diagram by right-clicking on it.
|
||||
|
||||
<h3>Connecting terminals</h3>
|
||||
<p>A point intended for creation of connections between symbols or other
|
||||
connections is called a <i>terminal</i>. To lead a connection out of it, first
|
||||
hover it with the mouse pointer, so it gets visibly highlighted with a circle.
|
||||
Then press the left mouse button and drag the pointer onto the place where you
|
||||
want the connection to end.
|
||||
|
||||
<p class="figure" id="create-connection">
|
||||
<img src="create-connection-begin.png" alt="Start of operation" align="center">
|
||||
…
|
||||
<img src="create-connection-end.png" alt="End of operation" align="center">
|
||||
<br>Figure 3: Interconnecting terminals of two symbols
|
||||
|
||||
<h2>Frequent problems</h2>
|
||||
<h3>Can’t open a saved diagram</h3>
|
||||
<p>When saving, ensure that the filename you’ve typed in contains the
|
||||
<q>.ldd</q> suffix. If not, it won’t show up in the dialog for opening diagrams.
|
||||
In case you’ve already saved a file without an extension, you may fix this
|
||||
situation by adding the suffix to its name.
|
||||
|
||||
<h3>I miss labels</h3>
|
||||
<p>This functionality doesn't exist yet, but it is possible to get around this
|
||||
limitation either by using the PrintScreen key to capture a screenshot
|
||||
and inserting it to, for example, Paint, or similarly by adding your texts
|
||||
to a <q>printed</q> PDF file.
|
||||
|
||||
<script>
|
||||
var toc = '', all = document.querySelectorAll('h2')
|
||||
for (var i = 0; i < all.length; i++) {
|
||||
var name = all[i].innerHTML.replace(/[^0-9a-z]/ig, '-')
|
||||
toc += '<li><p><a href="#' + name + '">' + all[i].innerHTML + '</a></li>'
|
||||
all[i].id = name
|
||||
all[i].innerHTML = (i + 1) + '. ' + all[i].innerHTML
|
||||
}
|
||||
all[0].insertAdjacentHTML('beforebegin',
|
||||
'<h2>Table of Contents</h2><ol>' + toc + '</ol>')
|
||||
</script>
|
|
@ -456,9 +456,9 @@ on_leave_notify (GtkWidget *widget, GdkEventCrossing *event, gpointer user_data)
|
|||
}
|
||||
|
||||
static void
|
||||
on_drag_data_get
|
||||
(GtkWidget *widget, GdkDragContext *ctx, GtkSelectionData *selection_data,
|
||||
guint target_type, guint time, gpointer user_data)
|
||||
on_drag_data_get (GtkWidget *widget, GdkDragContext *ctx,
|
||||
GtkSelectionData *selection_data, guint target_type, guint time,
|
||||
gpointer user_data)
|
||||
{
|
||||
LdCategorySymbolView *self;
|
||||
|
||||
|
|
|
@ -15,16 +15,22 @@ G_BEGIN_DECLS
|
|||
|
||||
|
||||
#define LD_TYPE_CATEGORY_SYMBOL_VIEW (ld_category_symbol_view_get_type ())
|
||||
#define LD_CATEGORY_SYMBOL_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST \
|
||||
((obj), LD_TYPE_CATEGORY_SYMBOL_VIEW, LdCategorySymbolView))
|
||||
#define LD_CATEGORY_SYMBOL_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST \
|
||||
((klass), LD_TYPE_CATEGORY_SYMBOL_VIEW, LdCategorySymbolViewClass))
|
||||
#define LD_IS_CATEGORY_SYMBOL_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE \
|
||||
((obj), LD_TYPE_CATEGORY_SYMBOL_VIEW))
|
||||
#define LD_IS_CATEGORY_SYMBOL_VIEW_CLASS(klass) (G_TYPE_CHECK_INSTANCE_TYPE \
|
||||
((klass), LD_TYPE_CATEGORY_SYMBOL_VIEW))
|
||||
#define LD_CATEGORY_SYMBOL_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS \
|
||||
((obj), LD_CATEGORY_SYMBOL_VIEW, LdCategorySymbolViewClass))
|
||||
#define LD_CATEGORY_SYMBOL_VIEW(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST ((obj), \
|
||||
LD_TYPE_CATEGORY_SYMBOL_VIEW, \
|
||||
LdCategorySymbolView))
|
||||
#define LD_CATEGORY_SYMBOL_VIEW_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST ((klass), \
|
||||
LD_TYPE_CATEGORY_SYMBOL_VIEW, \
|
||||
LdCategorySymbolViewClass))
|
||||
#define LD_IS_CATEGORY_SYMBOL_VIEW(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), LD_TYPE_CATEGORY_SYMBOL_VIEW))
|
||||
#define LD_IS_CATEGORY_SYMBOL_VIEW_CLASS(klass) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((klass), LD_TYPE_CATEGORY_SYMBOL_VIEW))
|
||||
#define LD_CATEGORY_SYMBOL_VIEW_GET_CLASS(obj) \
|
||||
(G_TYPE_INSTANCE_GET_CLASS ((obj), \
|
||||
LD_CATEGORY_SYMBOL_VIEW, \
|
||||
LdCategorySymbolViewClass))
|
||||
|
||||
typedef struct _LdCategorySymbolView LdCategorySymbolView;
|
||||
typedef struct _LdCategorySymbolViewPrivate LdCategorySymbolViewPrivate;
|
||||
|
|
|
@ -58,7 +58,7 @@ ld_category_view_init (LdCategoryViewInterface *iface)
|
|||
|
||||
G_DEFINE_TYPE_WITH_CODE (LdCategoryTreeView,
|
||||
ld_category_tree_view, GTK_TYPE_BOX,
|
||||
G_IMPLEMENT_INTERFACE (LD_TYPE_CATEGORY_VIEW, ld_category_view_init));
|
||||
G_IMPLEMENT_INTERFACE (LD_TYPE_CATEGORY_VIEW, ld_category_view_init))
|
||||
|
||||
static void
|
||||
ld_category_tree_view_class_init (LdCategoryTreeViewClass *klass)
|
||||
|
|
|
@ -15,16 +15,22 @@ G_BEGIN_DECLS
|
|||
|
||||
|
||||
#define LD_TYPE_CATEGORY_TREE_VIEW (ld_category_tree_view_get_type ())
|
||||
#define LD_CATEGORY_TREE_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST \
|
||||
((obj), LD_TYPE_CATEGORY_TREE_VIEW, LdCategoryTreeView))
|
||||
#define LD_CATEGORY_TREE_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST \
|
||||
((klass), LD_TYPE_CATEGORY_TREE_VIEW, LdCategoryTreeViewClass))
|
||||
#define LD_IS_CATEGORY_TREE_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE \
|
||||
((obj), LD_TYPE_CATEGORY_TREE_VIEW))
|
||||
#define LD_IS_CATEGORY_TREE_VIEW_CLASS(klass) (G_TYPE_CHECK_INSTANCE_TYPE \
|
||||
((klass), LD_TYPE_CATEGORY_TREE_VIEW))
|
||||
#define LD_CATEGORY_TREE_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS \
|
||||
((obj), LD_CATEGORY_TREE_VIEW, LdCategoryTreeViewClass))
|
||||
#define LD_CATEGORY_TREE_VIEW(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST ((obj), \
|
||||
LD_TYPE_CATEGORY_TREE_VIEW, \
|
||||
LdCategoryTreeView))
|
||||
#define LD_CATEGORY_TREE_VIEW_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST ((klass), \
|
||||
LD_TYPE_CATEGORY_TREE_VIEW, \
|
||||
LdCategoryTreeViewClass))
|
||||
#define LD_IS_CATEGORY_TREE_VIEW(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), LD_TYPE_CATEGORY_TREE_VIEW))
|
||||
#define LD_IS_CATEGORY_TREE_VIEW_CLASS(klass) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((klass), LD_TYPE_CATEGORY_TREE_VIEW))
|
||||
#define LD_CATEGORY_TREE_VIEW_GET_CLASS(obj) \
|
||||
(G_TYPE_INSTANCE_GET_CLASS ((obj), \
|
||||
LD_CATEGORY_TREE_VIEW, \
|
||||
LdCategoryTreeViewClass))
|
||||
|
||||
typedef struct _LdCategoryTreeView LdCategoryTreeView;
|
||||
typedef struct _LdCategoryTreeViewPrivate LdCategoryTreeViewPrivate;
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
* hierarchies.
|
||||
*/
|
||||
|
||||
G_DEFINE_INTERFACE (LdCategoryView, ld_category_view, 0);
|
||||
G_DEFINE_INTERFACE (LdCategoryView, ld_category_view, 0)
|
||||
|
||||
static void
|
||||
ld_category_view_default_init (LdCategoryViewInterface *iface)
|
||||
|
@ -77,8 +77,7 @@ ld_category_view_default_init (LdCategoryViewInterface *iface)
|
|||
* Assign an #LdCategory object to the view.
|
||||
*/
|
||||
void
|
||||
ld_category_view_set_category (LdCategoryView *self,
|
||||
LdCategory *category)
|
||||
ld_category_view_set_category (LdCategoryView *self, LdCategory *category)
|
||||
{
|
||||
g_return_if_fail (LD_IS_CATEGORY_VIEW (self));
|
||||
LD_CATEGORY_VIEW_GET_INTERFACE (self)->set_category (self, category);
|
||||
|
|
|
@ -15,12 +15,14 @@ G_BEGIN_DECLS
|
|||
|
||||
|
||||
#define LD_TYPE_CATEGORY_VIEW (ld_category_view_get_type ())
|
||||
#define LD_CATEGORY_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST \
|
||||
((obj), LD_TYPE_CATEGORY_VIEW, LdCategoryView))
|
||||
#define LD_IS_CATEGORY_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE \
|
||||
((obj), LD_TYPE_CATEGORY_VIEW))
|
||||
#define LD_CATEGORY_VIEW_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE \
|
||||
((inst), LD_TYPE_CATEGORY_VIEW, LdCategoryViewInterface))
|
||||
#define LD_CATEGORY_VIEW(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST ((obj), LD_TYPE_CATEGORY_VIEW, LdCategoryView))
|
||||
#define LD_IS_CATEGORY_VIEW(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), LD_TYPE_CATEGORY_VIEW))
|
||||
#define LD_CATEGORY_VIEW_GET_INTERFACE(inst) \
|
||||
(G_TYPE_INSTANCE_GET_INTERFACE ((inst), \
|
||||
LD_TYPE_CATEGORY_VIEW, \
|
||||
LdCategoryViewInterface))
|
||||
|
||||
typedef struct _LdCategoryView LdCategoryView;
|
||||
typedef struct _LdCategoryViewInterface LdCategoryViewInterface;
|
||||
|
@ -48,8 +50,7 @@ struct _LdCategoryViewInterface
|
|||
|
||||
GType ld_category_view_get_type (void) G_GNUC_CONST;
|
||||
|
||||
void ld_category_view_set_category (LdCategoryView *self,
|
||||
LdCategory *category);
|
||||
void ld_category_view_set_category (LdCategoryView *self, LdCategory *category);
|
||||
LdCategory *ld_category_view_get_category (LdCategoryView *self);
|
||||
|
||||
|
||||
|
|
|
@ -55,7 +55,7 @@ static void on_category_notify_name (LdCategory *category,
|
|||
GParamSpec *pspec, gpointer user_data);
|
||||
|
||||
|
||||
G_DEFINE_TYPE (LdCategory, ld_category, G_TYPE_OBJECT);
|
||||
G_DEFINE_TYPE (LdCategory, ld_category, G_TYPE_OBJECT)
|
||||
|
||||
static void
|
||||
ld_category_class_init (LdCategoryClass *klass)
|
||||
|
@ -561,4 +561,3 @@ ld_category_get_children (LdCategory *self)
|
|||
g_return_val_if_fail (LD_IS_CATEGORY (self), NULL);
|
||||
return self->priv->subcategories;
|
||||
}
|
||||
|
||||
|
|
|
@ -15,16 +15,16 @@ G_BEGIN_DECLS
|
|||
|
||||
|
||||
#define LD_TYPE_CATEGORY (ld_category_get_type ())
|
||||
#define LD_CATEGORY(obj) (G_TYPE_CHECK_INSTANCE_CAST \
|
||||
((obj), LD_TYPE_CATEGORY, LdCategory))
|
||||
#define LD_CATEGORY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST \
|
||||
((klass), LD_TYPE_CATEGORY, LdCategoryClass))
|
||||
#define LD_IS_CATEGORY(obj) (G_TYPE_CHECK_INSTANCE_TYPE \
|
||||
((obj), LD_TYPE_CATEGORY))
|
||||
#define LD_IS_CATEGORY_CLASS(klass) (G_TYPE_CHECK_INSTANCE_TYPE \
|
||||
((klass), LD_TYPE_CATEGORY))
|
||||
#define LD_CATEGORY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS \
|
||||
((obj), LD_CATEGORY, LdCategoryClass))
|
||||
#define LD_CATEGORY(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST ((obj), LD_TYPE_CATEGORY, LdCategory))
|
||||
#define LD_CATEGORY_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST ((klass), LD_TYPE_CATEGORY, LdCategoryClass))
|
||||
#define LD_IS_CATEGORY(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), LD_TYPE_CATEGORY))
|
||||
#define LD_IS_CATEGORY_CLASS(klass) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((klass), LD_TYPE_CATEGORY))
|
||||
#define LD_CATEGORY_GET_CLASS(obj) \
|
||||
(G_TYPE_INSTANCE_GET_CLASS ((obj), LD_CATEGORY, LdCategoryClass))
|
||||
|
||||
typedef struct _LdCategory LdCategory;
|
||||
typedef struct _LdCategoryPrivate LdCategoryPrivate;
|
||||
|
@ -77,4 +77,3 @@ const GSList *ld_category_get_children (LdCategory *self);
|
|||
G_END_DECLS
|
||||
|
||||
#endif /* ! __LD_CATEGORY_H__ */
|
||||
|
||||
|
|
|
@ -57,7 +57,7 @@ static void on_set_points_destroy (gpointer user_data);
|
|||
|
||||
|
||||
G_DEFINE_TYPE (LdDiagramConnection, ld_diagram_connection,
|
||||
LD_TYPE_DIAGRAM_OBJECT);
|
||||
LD_TYPE_DIAGRAM_OBJECT)
|
||||
|
||||
static void
|
||||
ld_diagram_connection_class_init (LdDiagramConnectionClass *klass)
|
||||
|
@ -332,4 +332,3 @@ on_set_points_destroy (gpointer user_data)
|
|||
json_node_free (data->new_node);
|
||||
g_slice_free (SetPointsActionData, data);
|
||||
}
|
||||
|
||||
|
|
|
@ -15,16 +15,22 @@ G_BEGIN_DECLS
|
|||
|
||||
|
||||
#define LD_TYPE_DIAGRAM_CONNECTION (ld_diagram_connection_get_type ())
|
||||
#define LD_DIAGRAM_CONNECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST \
|
||||
((obj), LD_TYPE_DIAGRAM_CONNECTION, LdDiagramConnection))
|
||||
#define LD_DIAGRAM_CONNECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST \
|
||||
((klass), LD_TYPE_DIAGRAM_CONNECTION, LdDiagramConnectionClass))
|
||||
#define LD_IS_DIAGRAM_CONNECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE \
|
||||
((obj), LD_TYPE_DIAGRAM_CONNECTION))
|
||||
#define LD_IS_DIAGRAM_CONNECTION_CLASS(klass) (G_TYPE_CHECK_INSTANCE_TYPE \
|
||||
((klass), LD_TYPE_DIAGRAM_CONNECTION))
|
||||
#define LD_DIAGRAM_CONNECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS \
|
||||
((obj), LD_DIAGRAM_CONNECTION, LdDiagramConnectionClass))
|
||||
#define LD_DIAGRAM_CONNECTION(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST ((obj), \
|
||||
LD_TYPE_DIAGRAM_CONNECTION, \
|
||||
LdDiagramConnection))
|
||||
#define LD_DIAGRAM_CONNECTION_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST ((klass), \
|
||||
LD_TYPE_DIAGRAM_CONNECTION, \
|
||||
LdDiagramConnectionClass))
|
||||
#define LD_IS_DIAGRAM_CONNECTION(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), LD_TYPE_DIAGRAM_CONNECTION))
|
||||
#define LD_IS_DIAGRAM_CONNECTION_CLASS(klass) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((klass), LD_TYPE_DIAGRAM_CONNECTION))
|
||||
#define LD_DIAGRAM_CONNECTION_GET_CLASS(obj) \
|
||||
(G_TYPE_INSTANCE_GET_CLASS ((obj), \
|
||||
LD_DIAGRAM_CONNECTION, \
|
||||
LdDiagramConnectionClass))
|
||||
|
||||
typedef struct _LdDiagramConnection LdDiagramConnection;
|
||||
typedef struct _LdDiagramConnectionPrivate LdDiagramConnectionPrivate;
|
||||
|
@ -61,4 +67,3 @@ void ld_diagram_connection_set_points (LdDiagramConnection *self,
|
|||
G_END_DECLS
|
||||
|
||||
#endif /* ! __LD_DIAGRAM_CONNECTION_H__ */
|
||||
|
||||
|
|
|
@ -69,7 +69,7 @@ static void on_set_param_redo (gpointer user_data);
|
|||
static void on_set_param_destroy (gpointer user_data);
|
||||
|
||||
|
||||
G_DEFINE_TYPE (LdDiagramObject, ld_diagram_object, G_TYPE_OBJECT);
|
||||
G_DEFINE_TYPE (LdDiagramObject, ld_diagram_object, G_TYPE_OBJECT)
|
||||
|
||||
static void
|
||||
ld_diagram_object_class_init (LdDiagramObjectClass *klass)
|
||||
|
|
|
@ -15,16 +15,20 @@ G_BEGIN_DECLS
|
|||
|
||||
|
||||
#define LD_TYPE_DIAGRAM_OBJECT (ld_diagram_object_get_type ())
|
||||
#define LD_DIAGRAM_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST \
|
||||
((obj), LD_TYPE_DIAGRAM_OBJECT, LdDiagramObject))
|
||||
#define LD_DIAGRAM_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST \
|
||||
((klass), LD_TYPE_DIAGRAM_OBJECT, LdDiagramObjectClass))
|
||||
#define LD_IS_DIAGRAM_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE \
|
||||
((obj), LD_TYPE_DIAGRAM_OBJECT))
|
||||
#define LD_IS_DIAGRAM_OBJECT_CLASS(klass) (G_TYPE_CHECK_INSTANCE_TYPE \
|
||||
((klass), LD_TYPE_DIAGRAM_OBJECT))
|
||||
#define LD_DIAGRAM_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS \
|
||||
((obj), LD_DIAGRAM_OBJECT, LdDiagramObjectClass))
|
||||
#define LD_DIAGRAM_OBJECT(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST ((obj), \
|
||||
LD_TYPE_DIAGRAM_OBJECT, \
|
||||
LdDiagramObject))
|
||||
#define LD_DIAGRAM_OBJECT_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST ((klass), \
|
||||
LD_TYPE_DIAGRAM_OBJECT, \
|
||||
LdDiagramObjectClass))
|
||||
#define LD_IS_DIAGRAM_OBJECT(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), LD_TYPE_DIAGRAM_OBJECT))
|
||||
#define LD_IS_DIAGRAM_OBJECT_CLASS(klass) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((klass), LD_TYPE_DIAGRAM_OBJECT))
|
||||
#define LD_DIAGRAM_OBJECT_GET_CLASS(obj) \
|
||||
(G_TYPE_INSTANCE_GET_CLASS ((obj), LD_DIAGRAM_OBJECT, LdDiagramObjectClass))
|
||||
|
||||
typedef struct _LdDiagramObject LdDiagramObject;
|
||||
typedef struct _LdDiagramObjectPrivate LdDiagramObjectPrivate;
|
||||
|
@ -74,4 +78,3 @@ void ld_diagram_object_set_y (LdDiagramObject *self, gdouble y);
|
|||
G_END_DECLS
|
||||
|
||||
#endif /* ! __LD_DIAGRAM_OBJECT_H__ */
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@ static void ld_diagram_symbol_set_property (GObject *object, guint property_id,
|
|||
const GValue *value, GParamSpec *pspec);
|
||||
|
||||
|
||||
G_DEFINE_TYPE (LdDiagramSymbol, ld_diagram_symbol, LD_TYPE_DIAGRAM_OBJECT);
|
||||
G_DEFINE_TYPE (LdDiagramSymbol, ld_diagram_symbol, LD_TYPE_DIAGRAM_OBJECT)
|
||||
|
||||
static void
|
||||
ld_diagram_symbol_class_init (LdDiagramSymbolClass *klass)
|
||||
|
|
|
@ -15,16 +15,20 @@ G_BEGIN_DECLS
|
|||
|
||||
|
||||
#define LD_TYPE_DIAGRAM_SYMBOL (ld_diagram_symbol_get_type ())
|
||||
#define LD_DIAGRAM_SYMBOL(obj) (G_TYPE_CHECK_INSTANCE_CAST \
|
||||
((obj), LD_TYPE_DIAGRAM_SYMBOL, LdDiagramSymbol))
|
||||
#define LD_DIAGRAM_SYMBOL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST \
|
||||
((klass), LD_TYPE_DIAGRAM_SYMBOL, LdDiagramSymbolClass))
|
||||
#define LD_IS_DIAGRAM_SYMBOL(obj) (G_TYPE_CHECK_INSTANCE_TYPE \
|
||||
((obj), LD_TYPE_DIAGRAM_SYMBOL))
|
||||
#define LD_IS_DIAGRAM_SYMBOL_CLASS(klass) (G_TYPE_CHECK_INSTANCE_TYPE \
|
||||
((klass), LD_TYPE_DIAGRAM_SYMBOL))
|
||||
#define LD_DIAGRAM_SYMBOL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS \
|
||||
((obj), LD_DIAGRAM_SYMBOL, LdDiagramSymbolClass))
|
||||
#define LD_DIAGRAM_SYMBOL(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST ((obj), \
|
||||
LD_TYPE_DIAGRAM_SYMBOL, \
|
||||
LdDiagramSymbol))
|
||||
#define LD_DIAGRAM_SYMBOL_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST ((klass), \
|
||||
LD_TYPE_DIAGRAM_SYMBOL, \
|
||||
LdDiagramSymbolClass))
|
||||
#define LD_IS_DIAGRAM_SYMBOL(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), LD_TYPE_DIAGRAM_SYMBOL))
|
||||
#define LD_IS_DIAGRAM_SYMBOL_CLASS(klass) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((klass), LD_TYPE_DIAGRAM_SYMBOL))
|
||||
#define LD_DIAGRAM_SYMBOL_GET_CLASS(obj) \
|
||||
(G_TYPE_INSTANCE_GET_CLASS ((obj), LD_DIAGRAM_SYMBOL, LdDiagramSymbolClass))
|
||||
|
||||
typedef struct _LdDiagramSymbol LdDiagramSymbol;
|
||||
typedef struct _LdDiagramSymbolPrivate LdDiagramSymbolPrivate;
|
||||
|
@ -70,4 +74,3 @@ void ld_diagram_symbol_set_rotation (LdDiagramSymbol *self, gint rotation);
|
|||
G_END_DECLS
|
||||
|
||||
#endif /* ! __LD_DIAGRAM_SYMBOL_H__ */
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* ld-diagram-view.c
|
||||
*
|
||||
* This file is a part of logdiag.
|
||||
* Copyright 2010, 2011, 2012, 2015 Přemysl Eric Janouch
|
||||
* Copyright 2010 - 2021 Přemysl Eric Janouch
|
||||
*
|
||||
* See the file LICENSE for licensing information.
|
||||
*
|
||||
|
@ -335,7 +335,7 @@ static void oper_select_begin (LdDiagramView *self, const LdPoint *point);
|
|||
static void oper_select_end (LdDiagramView *self);
|
||||
static void oper_select_get_rectangle (LdDiagramView *self, LdRectangle *rect);
|
||||
static void oper_select_queue_draw (LdDiagramView *self);
|
||||
static void oper_select_draw (GtkWidget *widget, DrawData *data);
|
||||
static void oper_select_draw (DrawData *data);
|
||||
static void oper_select_motion (LdDiagramView *self, const LdPoint *point);
|
||||
|
||||
static void oper_move_selection_begin (LdDiagramView *self,
|
||||
|
@ -374,13 +374,19 @@ static void on_drag_leave (GtkWidget *widget, GdkDragContext *drag_ctx,
|
|||
guint time, gpointer user_data);
|
||||
|
||||
static gboolean on_draw (GtkWidget *widget, cairo_t *cr, gpointer user_data);
|
||||
static void draw_grid (GtkWidget *widget, DrawData *data);
|
||||
static void draw_diagram (GtkWidget *widget, DrawData *data);
|
||||
static void draw_terminal (GtkWidget *widget, DrawData *data);
|
||||
static void draw_grid (DrawData *data);
|
||||
static void draw_diagram (DrawData *data);
|
||||
static void draw_terminal (DrawData *data);
|
||||
static void draw_object (LdDiagramObject *diagram_object, DrawData *data);
|
||||
static void draw_symbol (LdDiagramSymbol *diagram_symbol, DrawData *data);
|
||||
static void draw_connection (LdDiagramConnection *connection, DrawData *data);
|
||||
|
||||
/* Export. */
|
||||
|
||||
static void get_diagram_bounds (LdDiagramView *self, LdRectangle *rect);
|
||||
static gboolean get_object_bounds (LdDiagramView *self, LdDiagramObject *object,
|
||||
LdRectangle *rect);
|
||||
|
||||
|
||||
G_DEFINE_TYPE_WITH_CODE (LdDiagramView, ld_diagram_view, GTK_TYPE_DRAWING_AREA,
|
||||
G_IMPLEMENT_INTERFACE (GTK_TYPE_SCROLLABLE,
|
||||
|
@ -1045,6 +1051,27 @@ ld_diagram_view_diagram_to_widget_coords (LdDiagramView *self,
|
|||
*wy = scale * (dy - self->priv->y) + 0.5 * allocation.height;
|
||||
}
|
||||
|
||||
static void
|
||||
ld_diagram_view_diagram_to_widget_coords_rect (LdDiagramView *self,
|
||||
const LdRectangle *area, LdRectangle *rect)
|
||||
{
|
||||
gdouble x1, x2, y1, y2;
|
||||
|
||||
ld_diagram_view_diagram_to_widget_coords (self,
|
||||
area->x,
|
||||
area->y,
|
||||
&x1, &y1);
|
||||
ld_diagram_view_diagram_to_widget_coords (self,
|
||||
area->x + area->width,
|
||||
area->y + area->height,
|
||||
&x2, &y2);
|
||||
|
||||
rect->x = floor (x1);
|
||||
rect->y = floor (y1);
|
||||
rect->width = ceil (x2) - rect->x;
|
||||
rect->height = ceil (y2) - rect->y;
|
||||
}
|
||||
|
||||
/**
|
||||
* ld_diagram_view_get_x:
|
||||
* @self: an #LdDiagramView object.
|
||||
|
@ -1288,7 +1315,7 @@ point_to_line_segment_distance
|
|||
/* The projection is beyond the line segment. */
|
||||
if (u < 0.)
|
||||
return ld_point_distance (point, p1->x, p1->y);
|
||||
else if (u > 1.)
|
||||
if (u > 1.)
|
||||
return ld_point_distance (point, p2->x, p2->y);
|
||||
|
||||
/* The projection is on the line segment. */
|
||||
|
@ -1390,8 +1417,8 @@ move_selection (LdDiagramView *self, gdouble dx, gdouble dy)
|
|||
static gboolean
|
||||
is_object_selected (LdDiagramView *self, LdDiagramObject *object)
|
||||
{
|
||||
return g_list_find (ld_diagram_get_selection (self->priv->diagram),
|
||||
object) != NULL;
|
||||
return g_list_find (ld_diagram_get_selection (self->priv->diagram), object)
|
||||
!= NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1612,14 +1639,12 @@ get_symbol_clip_area (LdDiagramView *self,
|
|||
}
|
||||
|
||||
static gboolean
|
||||
get_symbol_area (LdDiagramView *self, LdDiagramSymbol *symbol,
|
||||
get_symbol_area_in_diagram_units (LdDiagramView *self, LdDiagramSymbol *symbol,
|
||||
LdRectangle *rect)
|
||||
{
|
||||
gdouble object_x, object_y;
|
||||
LdSymbol *library_symbol;
|
||||
LdRectangle area;
|
||||
gdouble x1, x2;
|
||||
gdouble y1, y2;
|
||||
gint rotation;
|
||||
|
||||
g_object_get (symbol, "x", &object_x, "y", &object_y,
|
||||
|
@ -1633,24 +1658,23 @@ get_symbol_area (LdDiagramView *self, LdDiagramSymbol *symbol,
|
|||
|
||||
rotate_symbol_area (&area, rotation);
|
||||
|
||||
ld_diagram_view_diagram_to_widget_coords (self,
|
||||
object_x + area.x,
|
||||
object_y + area.y,
|
||||
&x1, &y1);
|
||||
ld_diagram_view_diagram_to_widget_coords (self,
|
||||
object_x + area.x + area.width,
|
||||
object_y + area.y + area.height,
|
||||
&x2, &y2);
|
||||
rect->x = object_x + area.x;
|
||||
rect->y = object_y + area.y;
|
||||
rect->width = (rect->x + area.width) - rect->x;
|
||||
rect->height = (rect->y + area.height) - rect->y;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
x1 = floor (x1);
|
||||
y1 = floor (y1);
|
||||
x2 = ceil (x2);
|
||||
y2 = ceil (y2);
|
||||
static gboolean
|
||||
get_symbol_area (LdDiagramView *self, LdDiagramSymbol *symbol,
|
||||
LdRectangle *rect)
|
||||
{
|
||||
LdRectangle intermediate;
|
||||
|
||||
rect->x = x1;
|
||||
rect->y = y1;
|
||||
rect->width = x2 - x1;
|
||||
rect->height = y2 - y1;
|
||||
if (!get_symbol_area_in_diagram_units (self, symbol, &intermediate))
|
||||
return FALSE;
|
||||
|
||||
ld_diagram_view_diagram_to_widget_coords_rect (self, &intermediate, rect);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -1782,7 +1806,7 @@ get_connection_clip_area (LdDiagramView *self,
|
|||
}
|
||||
|
||||
static gboolean
|
||||
get_connection_area (LdDiagramView *self,
|
||||
get_connection_area_in_diagram_units (LdDiagramView *self,
|
||||
LdDiagramConnection *connection, LdRectangle *rect)
|
||||
{
|
||||
gdouble x_origin, y_origin;
|
||||
|
@ -1799,20 +1823,13 @@ get_connection_area (LdDiagramView *self,
|
|||
|
||||
g_object_get (connection, "x", &x_origin, "y", &y_origin, NULL);
|
||||
|
||||
ld_diagram_view_diagram_to_widget_coords (self,
|
||||
x_origin + points->points[0].x,
|
||||
y_origin + points->points[0].y,
|
||||
&x, &y);
|
||||
|
||||
x_max = x_min = x;
|
||||
y_max = y_min = y;
|
||||
x_max = x_min = x_origin + points->points[0].x;
|
||||
y_max = y_min = y_origin + points->points[0].y;
|
||||
|
||||
for (i = 1; i < points->length; i++)
|
||||
{
|
||||
ld_diagram_view_diagram_to_widget_coords (self,
|
||||
x_origin + points->points[i].x,
|
||||
y_origin + points->points[i].y,
|
||||
&x, &y);
|
||||
x = x_origin + points->points[i].x;
|
||||
y = y_origin + points->points[i].y;
|
||||
|
||||
if (x < x_min)
|
||||
x_min = x;
|
||||
|
@ -1834,6 +1851,19 @@ get_connection_area (LdDiagramView *self,
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
get_connection_area (LdDiagramView *self,
|
||||
LdDiagramConnection *connection, LdRectangle *rect)
|
||||
{
|
||||
LdRectangle intermediate;
|
||||
|
||||
if (!get_connection_area_in_diagram_units (self, connection, &intermediate))
|
||||
return FALSE;
|
||||
|
||||
ld_diagram_view_diagram_to_widget_coords_rect (self, &intermediate, rect);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/* ===== Operations ======================================================== */
|
||||
|
||||
|
@ -2101,7 +2131,7 @@ oper_select_queue_draw (LdDiagramView *self)
|
|||
}
|
||||
|
||||
static void
|
||||
oper_select_draw (GtkWidget *widget, DrawData *data)
|
||||
oper_select_draw (DrawData *data)
|
||||
{
|
||||
static const double dashes[] = {3, 5};
|
||||
SelectData *select_data;
|
||||
|
@ -2561,7 +2591,9 @@ on_drag_motion (GtkWidget *widget, GdkDragContext *drag_ctx,
|
|||
/* Discard leftovers from any previous unsuccessful drag. */
|
||||
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_left = FALSE;
|
||||
}
|
||||
|
@ -2664,19 +2696,19 @@ on_draw (GtkWidget *widget, cairo_t *cr, gpointer user_data)
|
|||
cairo_paint (data.cr);
|
||||
|
||||
if (data.self->priv->show_grid)
|
||||
draw_grid (widget, &data);
|
||||
draw_grid (&data);
|
||||
|
||||
draw_diagram (widget, &data);
|
||||
draw_terminal (widget, &data);
|
||||
draw_diagram (&data);
|
||||
draw_terminal (&data);
|
||||
|
||||
if (data.self->priv->operation == OPER_SELECT)
|
||||
oper_select_draw (widget, &data);
|
||||
oper_select_draw (&data);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
draw_grid (GtkWidget *widget, DrawData *data)
|
||||
draw_grid (DrawData *data)
|
||||
{
|
||||
gdouble grid_step;
|
||||
gint grid_factor;
|
||||
|
@ -2738,7 +2770,7 @@ draw_grid (GtkWidget *widget, DrawData *data)
|
|||
}
|
||||
|
||||
static void
|
||||
draw_terminal (GtkWidget *widget, DrawData *data)
|
||||
draw_terminal (DrawData *data)
|
||||
{
|
||||
LdDiagramViewPrivate *priv;
|
||||
LdPoint widget_coords;
|
||||
|
@ -2760,7 +2792,7 @@ draw_terminal (GtkWidget *widget, DrawData *data)
|
|||
}
|
||||
|
||||
static void
|
||||
draw_diagram (GtkWidget *widget, DrawData *data)
|
||||
draw_diagram (DrawData *data)
|
||||
{
|
||||
GList *objects, *iter;
|
||||
|
||||
|
@ -2905,5 +2937,101 @@ draw_connection (LdDiagramConnection *connection, DrawData *data)
|
|||
|
||||
draw_connection_end:
|
||||
ld_point_array_free (points);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/* ===== Export ============================================================ */
|
||||
|
||||
static void
|
||||
get_diagram_bounds (LdDiagramView *self, LdRectangle *rect)
|
||||
{
|
||||
GList *objects;
|
||||
gboolean initialized = FALSE;
|
||||
LdRectangle partial;
|
||||
gdouble x2, y2;
|
||||
|
||||
g_return_if_fail (LD_IS_DIAGRAM_VIEW (self));
|
||||
g_return_if_fail (rect != NULL);
|
||||
|
||||
memset (rect, 0, sizeof *rect);
|
||||
objects = (GList *) ld_diagram_get_objects (self->priv->diagram);
|
||||
for (; objects != NULL; objects = objects->next)
|
||||
{
|
||||
if (!get_object_bounds (self, objects->data, &partial))
|
||||
continue;
|
||||
|
||||
if (!initialized)
|
||||
{
|
||||
*rect = partial;
|
||||
initialized = TRUE;
|
||||
continue;
|
||||
}
|
||||
|
||||
x2 = MAX (partial.x + partial.width, rect->x + rect->width);
|
||||
y2 = MAX (partial.y + partial.height, rect->y + rect->height);
|
||||
rect->x = MIN (rect->x, partial.x);
|
||||
rect->y = MIN (rect->y, partial.y);
|
||||
rect->width = x2 - rect->x;
|
||||
rect->height = y2 - rect->y;
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
get_object_bounds (LdDiagramView *self, LdDiagramObject *object,
|
||||
LdRectangle *rect)
|
||||
{
|
||||
if (LD_IS_DIAGRAM_SYMBOL (object))
|
||||
return get_symbol_area_in_diagram_units (self,
|
||||
LD_DIAGRAM_SYMBOL (object), rect);
|
||||
if (LD_IS_DIAGRAM_CONNECTION (object))
|
||||
return get_connection_area_in_diagram_units (self,
|
||||
LD_DIAGRAM_CONNECTION (object), rect);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* ld_diagram_view_get_export_bounds:
|
||||
* @self: an #LdDiagramView object.
|
||||
* @rect: (out): diagram boundaries.
|
||||
*
|
||||
* Get the smallest rectangular area containing all objects in the diagram.
|
||||
* The diagram object itself doesn't have any idea of how symbols are rendered.
|
||||
*
|
||||
* Return value: export units per diagram unit.
|
||||
*/
|
||||
gdouble
|
||||
ld_diagram_view_get_export_bounds (LdDiagramView *self, LdRectangle *rect)
|
||||
{
|
||||
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);
|
||||
ld_diagram_view_diagram_to_widget_coords_rect (self, &intermediate, rect);
|
||||
return ld_diagram_view_get_scale_in_px (self);
|
||||
}
|
||||
|
||||
/**
|
||||
* ld_diagram_view_export:
|
||||
* @self: an #LdDiagramView object.
|
||||
* @cr: Cairo context to draw on.
|
||||
* @clip: the clip area (the function itself does not clip).
|
||||
*
|
||||
* Get the smallest rectangular area containing all objects in the diagram.
|
||||
* The diagram object itself doesn't have any idea of how symbols are rendered.
|
||||
*/
|
||||
void
|
||||
ld_diagram_view_export (LdDiagramView *self, cairo_t *cr,
|
||||
const LdRectangle *clip)
|
||||
{
|
||||
DrawData data;
|
||||
|
||||
data.cr = cr;
|
||||
data.self = self;
|
||||
/* FIXME: Various functions call this directly, this export is a hack. */
|
||||
data.scale = ld_diagram_view_get_scale_in_px (data.self);
|
||||
data.exposed_rect = *clip;
|
||||
|
||||
draw_diagram (&data);
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* ld-diagram-view.h
|
||||
*
|
||||
* This file is a part of logdiag.
|
||||
* Copyright 2010, 2011 Přemysl Eric Janouch
|
||||
* Copyright 2010 - 2021 Přemysl Eric Janouch
|
||||
*
|
||||
* See the file LICENSE for licensing information.
|
||||
*
|
||||
|
@ -15,16 +15,18 @@ G_BEGIN_DECLS
|
|||
|
||||
|
||||
#define LD_TYPE_DIAGRAM_VIEW (ld_diagram_view_get_type ())
|
||||
#define LD_DIAGRAM_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST \
|
||||
((obj), LD_TYPE_DIAGRAM_VIEW, LdDiagramView))
|
||||
#define LD_DIAGRAM_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST \
|
||||
((klass), LD_TYPE_DIAGRAM_VIEW, LdDiagramViewClass))
|
||||
#define LD_IS_DIAGRAM_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE \
|
||||
((obj), LD_TYPE_DIAGRAM_VIEW))
|
||||
#define LD_IS_DIAGRAM_VIEW_CLASS(klass) (G_TYPE_CHECK_INSTANCE_TYPE \
|
||||
((klass), LD_TYPE_DIAGRAM_VIEW))
|
||||
#define LD_DIAGRAM_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS \
|
||||
((obj), LD_DIAGRAM_VIEW, LdDiagramViewClass))
|
||||
#define LD_DIAGRAM_VIEW(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST ((obj), LD_TYPE_DIAGRAM_VIEW, LdDiagramView))
|
||||
#define LD_DIAGRAM_VIEW_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST ((klass), \
|
||||
LD_TYPE_DIAGRAM_VIEW, \
|
||||
LdDiagramViewClass))
|
||||
#define LD_IS_DIAGRAM_VIEW(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), LD_TYPE_DIAGRAM_VIEW))
|
||||
#define LD_IS_DIAGRAM_VIEW_CLASS(klass) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((klass), LD_TYPE_DIAGRAM_VIEW))
|
||||
#define LD_DIAGRAM_VIEW_GET_CLASS(obj) \
|
||||
(G_TYPE_INSTANCE_GET_CLASS ((obj), LD_DIAGRAM_VIEW, LdDiagramViewClass))
|
||||
|
||||
typedef struct _LdDiagramView LdDiagramView;
|
||||
typedef struct _LdDiagramViewPrivate LdDiagramViewPrivate;
|
||||
|
@ -94,6 +96,11 @@ void ld_diagram_view_set_show_grid (LdDiagramView *self, gboolean show_grid);
|
|||
void ld_diagram_view_add_object_begin (LdDiagramView *self,
|
||||
LdDiagramObject *object);
|
||||
|
||||
gdouble ld_diagram_view_get_export_bounds (LdDiagramView *self,
|
||||
LdRectangle *rect);
|
||||
void ld_diagram_view_export (LdDiagramView *self,
|
||||
cairo_t *cr, const LdRectangle *clip);
|
||||
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
|
|
@ -105,7 +105,7 @@ static void uninstall_object (LdDiagramObject *object, LdDiagram *self);
|
|||
static void ld_diagram_unselect_all_internal (LdDiagram *self);
|
||||
|
||||
|
||||
G_DEFINE_TYPE (LdDiagram, ld_diagram, G_TYPE_OBJECT);
|
||||
G_DEFINE_TYPE (LdDiagram, ld_diagram, G_TYPE_OBJECT)
|
||||
|
||||
static void
|
||||
ld_diagram_class_init (LdDiagramClass *klass)
|
||||
|
|
|
@ -15,16 +15,15 @@ G_BEGIN_DECLS
|
|||
|
||||
|
||||
#define LD_TYPE_DIAGRAM (ld_diagram_get_type ())
|
||||
#define LD_DIAGRAM(obj) (G_TYPE_CHECK_INSTANCE_CAST \
|
||||
((obj), LD_TYPE_DIAGRAM, LdDiagram))
|
||||
#define LD_DIAGRAM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST \
|
||||
((klass), LD_TYPE_DIAGRAM, LdDiagramClass))
|
||||
#define LD_IS_DIAGRAM(obj) (G_TYPE_CHECK_INSTANCE_TYPE \
|
||||
((obj), LD_TYPE_DIAGRAM))
|
||||
#define LD_IS_DIAGRAM_CLASS(klass) (G_TYPE_CHECK_INSTANCE_TYPE \
|
||||
((klass), LD_TYPE_DIAGRAM))
|
||||
#define LD_DIAGRAM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS \
|
||||
((obj), LD_DIAGRAM, LdDiagramClass))
|
||||
#define LD_DIAGRAM(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST ((obj), LD_TYPE_DIAGRAM, LdDiagram))
|
||||
#define LD_DIAGRAM_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST ((klass), LD_TYPE_DIAGRAM, LdDiagramClass))
|
||||
#define LD_IS_DIAGRAM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), LD_TYPE_DIAGRAM))
|
||||
#define LD_IS_DIAGRAM_CLASS(klass) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((klass), LD_TYPE_DIAGRAM))
|
||||
#define LD_DIAGRAM_GET_CLASS(obj) \
|
||||
(G_TYPE_INSTANCE_GET_CLASS ((obj), LD_DIAGRAM, LdDiagramClass))
|
||||
|
||||
typedef struct _LdDiagram LdDiagram;
|
||||
typedef struct _LdDiagramClass LdDiagramClass;
|
||||
|
@ -114,4 +113,3 @@ void ld_diagram_unselect_all (LdDiagram *self);
|
|||
G_END_DECLS
|
||||
|
||||
#endif /* ! __LD_DIAGRAM_H__ */
|
||||
|
||||
|
|
|
@ -49,8 +49,10 @@ static gboolean foreach_dir (const gchar *path,
|
|||
gboolean (*callback) (const gchar *, const gchar *, gpointer),
|
||||
gpointer userdata, GError **error);
|
||||
|
||||
static LdSymbol *traverse_path (LdCategory *category, gchar **path);
|
||||
|
||||
G_DEFINE_TYPE (LdLibrary, ld_library, G_TYPE_OBJECT);
|
||||
|
||||
G_DEFINE_TYPE (LdLibrary, ld_library, G_TYPE_OBJECT)
|
||||
|
||||
static void
|
||||
ld_library_class_init (LdLibraryClass *klass)
|
||||
|
@ -356,62 +358,51 @@ ld_library_load (LdLibrary *self, const gchar *directory)
|
|||
LdSymbol *
|
||||
ld_library_find_symbol (LdLibrary *self, const gchar *identifier)
|
||||
{
|
||||
gchar **id_el_start, **id_el;
|
||||
const GSList *list, *list_el;
|
||||
LdCategory *cat;
|
||||
gchar **path;
|
||||
LdSymbol *symbol = NULL;
|
||||
|
||||
g_return_val_if_fail (LD_IS_LIBRARY (self), NULL);
|
||||
g_return_val_if_fail (identifier != NULL, NULL);
|
||||
|
||||
id_el_start = g_strsplit (identifier, LD_LIBRARY_IDENTIFIER_SEPARATOR, 0);
|
||||
if (!id_el_start)
|
||||
return NULL;
|
||||
|
||||
/* We need at least one category name plus the symbol name. */
|
||||
id_el = id_el_start;
|
||||
if (!id_el[0] || !id_el[1])
|
||||
goto ld_library_find_symbol_error;
|
||||
|
||||
/* Find the category where the symbol is in. */
|
||||
cat = self->priv->root;
|
||||
while (1)
|
||||
path = g_strsplit (identifier, LD_LIBRARY_IDENTIFIER_SEPARATOR, 0);
|
||||
if (path)
|
||||
{
|
||||
gboolean found = FALSE;
|
||||
symbol = traverse_path (self->priv->root, path);
|
||||
g_strfreev (path);
|
||||
}
|
||||
return symbol;
|
||||
}
|
||||
|
||||
list = ld_category_get_children (cat);
|
||||
for (list_el = list; list_el; list_el = g_slist_next (list_el))
|
||||
static LdSymbol *
|
||||
traverse_path (LdCategory *category, gchar **path)
|
||||
{
|
||||
const GSList *list, *iter;
|
||||
LdSymbol *symbol;
|
||||
|
||||
g_return_val_if_fail (*path != NULL, NULL);
|
||||
|
||||
/* Walk the category tree to where the symbol is supposed to be. */
|
||||
for (; path[1]; path++)
|
||||
{
|
||||
list = ld_category_get_children (category);
|
||||
for (iter = list; iter; iter = g_slist_next (iter))
|
||||
{
|
||||
cat = LD_CATEGORY (list_el->data);
|
||||
if (!strcmp (*id_el, ld_category_get_name (cat)))
|
||||
{
|
||||
found = TRUE;
|
||||
category = LD_CATEGORY (iter->data);
|
||||
if (!strcmp (*path, ld_category_get_name (category)))
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!found)
|
||||
goto ld_library_find_symbol_error;
|
||||
|
||||
if (!(id_el++)[2])
|
||||
break;
|
||||
if (!iter)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* And then the actual symbol. */
|
||||
list = ld_category_get_symbols (cat);
|
||||
for (list_el = list; list_el; list_el = g_slist_next (list_el))
|
||||
/* And look up the actual symbol at the leaf. */
|
||||
list = ld_category_get_symbols (category);
|
||||
for (iter = list; iter; iter = g_slist_next (iter))
|
||||
{
|
||||
LdSymbol *symbol;
|
||||
|
||||
symbol = LD_SYMBOL (list_el->data);
|
||||
if (!strcmp (*id_el, ld_symbol_get_name (symbol)))
|
||||
{
|
||||
g_strfreev (id_el_start);
|
||||
symbol = LD_SYMBOL (iter->data);
|
||||
if (!strcmp (*path, ld_symbol_get_name (symbol)))
|
||||
return symbol;
|
||||
}
|
||||
}
|
||||
|
||||
ld_library_find_symbol_error:
|
||||
g_strfreev (id_el_start);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -427,4 +418,3 @@ ld_library_get_root (LdLibrary *self)
|
|||
g_return_val_if_fail (LD_IS_LIBRARY (self), NULL);
|
||||
return self->priv->root;
|
||||
}
|
||||
|
||||
|
|
|
@ -15,16 +15,15 @@ G_BEGIN_DECLS
|
|||
|
||||
|
||||
#define LD_TYPE_LIBRARY (ld_library_get_type ())
|
||||
#define LD_LIBRARY(obj) (G_TYPE_CHECK_INSTANCE_CAST \
|
||||
((obj), LD_TYPE_LIBRARY, LdLibrary))
|
||||
#define LD_LIBRARY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST \
|
||||
((klass), LD_TYPE_LIBRARY, LdLibraryClass))
|
||||
#define LD_IS_LIBRARY(obj) (G_TYPE_CHECK_INSTANCE_TYPE \
|
||||
((obj), LD_TYPE_LIBRARY))
|
||||
#define LD_IS_LIBRARY_CLASS(klass) (G_TYPE_CHECK_INSTANCE_TYPE \
|
||||
((klass), LD_TYPE_LIBRARY))
|
||||
#define LD_LIBRARY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS \
|
||||
((obj), LD_LIBRARY, LdLibraryClass))
|
||||
#define LD_LIBRARY(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST ((obj), LD_TYPE_LIBRARY, LdLibrary))
|
||||
#define LD_LIBRARY_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST ((klass), LD_TYPE_LIBRARY, LdLibraryClass))
|
||||
#define LD_IS_LIBRARY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), LD_TYPE_LIBRARY))
|
||||
#define LD_IS_LIBRARY_CLASS(klass) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((klass), LD_TYPE_LIBRARY))
|
||||
#define LD_LIBRARY_GET_CLASS(obj) \
|
||||
(G_TYPE_INSTANCE_GET_CLASS ((obj), LD_LIBRARY, LdLibraryClass))
|
||||
|
||||
typedef struct _LdLibrary LdLibrary;
|
||||
typedef struct _LdLibraryPrivate LdLibraryPrivate;
|
||||
|
@ -66,4 +65,3 @@ LdCategory *ld_library_get_root (LdLibrary *self);
|
|||
G_END_DECLS
|
||||
|
||||
#endif /* ! __LD_LIBRARY_H__ */
|
||||
|
||||
|
|
|
@ -23,4 +23,3 @@ void ld_lua_private_draw (LdLua *self, LdLuaSymbol *symbol, cairo_t *cr);
|
|||
G_END_DECLS
|
||||
|
||||
#endif /* ! __LD_LUA_PRIVATE_H__ */
|
||||
|
||||
|
|
|
@ -37,4 +37,3 @@ struct _LdLuaSymbolPrivate
|
|||
G_END_DECLS
|
||||
|
||||
#endif /* ! __LD_LUA_SYMBOL_PRIVATE_H__ */
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ static const LdPointArray *ld_lua_symbol_real_get_terminals (LdSymbol *symbol);
|
|||
static void ld_lua_symbol_real_draw (LdSymbol *symbol, cairo_t *cr);
|
||||
|
||||
|
||||
G_DEFINE_TYPE (LdLuaSymbol, ld_lua_symbol, LD_TYPE_SYMBOL);
|
||||
G_DEFINE_TYPE (LdLuaSymbol, ld_lua_symbol, LD_TYPE_SYMBOL)
|
||||
|
||||
static void
|
||||
ld_lua_symbol_class_init (LdLuaSymbolClass *klass)
|
||||
|
@ -135,4 +135,3 @@ ld_lua_symbol_real_draw (LdSymbol *symbol, cairo_t *cr)
|
|||
ld_lua_private_draw (self->priv->lua, self, cr);
|
||||
cairo_restore (cr);
|
||||
}
|
||||
|
||||
|
|
|
@ -15,16 +15,16 @@ G_BEGIN_DECLS
|
|||
|
||||
|
||||
#define LD_TYPE_LUA_SYMBOL (ld_lua_symbol_get_type ())
|
||||
#define LD_LUA_SYMBOL(obj) (G_TYPE_CHECK_INSTANCE_CAST \
|
||||
((obj), LD_TYPE_LUA_SYMBOL, LdLuaSymbol))
|
||||
#define LD_LUA_SYMBOL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST \
|
||||
((klass), LD_TYPE_LUA_SYMBOL, LdLuaSymbolClass))
|
||||
#define LD_IS_LUA_SYMBOL(obj) (G_TYPE_CHECK_INSTANCE_TYPE \
|
||||
((obj), LD_TYPE_LUA_SYMBOL))
|
||||
#define LD_IS_LUA_SYMBOL_CLASS(klass) (G_TYPE_CHECK_INSTANCE_TYPE \
|
||||
((klass), LD_TYPE_LUA_SYMBOL))
|
||||
#define LD_LUA_SYMBOL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS \
|
||||
((obj), LD_LUA_SYMBOL, LdLuaSymbolClass))
|
||||
#define LD_LUA_SYMBOL(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST ((obj), LD_TYPE_LUA_SYMBOL, LdLuaSymbol))
|
||||
#define LD_LUA_SYMBOL_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST ((klass), LD_TYPE_LUA_SYMBOL, LdLuaSymbolClass))
|
||||
#define LD_IS_LUA_SYMBOL(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), LD_TYPE_LUA_SYMBOL))
|
||||
#define LD_IS_LUA_SYMBOL_CLASS(klass) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((klass), LD_TYPE_LUA_SYMBOL))
|
||||
#define LD_LUA_SYMBOL_GET_CLASS(obj) \
|
||||
(G_TYPE_INSTANCE_GET_CLASS ((obj), LD_LUA_SYMBOL, LdLuaSymbolClass))
|
||||
|
||||
typedef struct _LdLuaSymbol LdLuaSymbol;
|
||||
typedef struct _LdLuaSymbolPrivate LdLuaSymbolPrivate;
|
||||
|
@ -57,4 +57,3 @@ GType ld_lua_symbol_get_type (void) G_GNUC_CONST;
|
|||
G_END_DECLS
|
||||
|
||||
#endif /* ! __LD_LUA_SYMBOL_H__ */
|
||||
|
||||
|
|
|
@ -150,7 +150,7 @@ static luaL_Reg ld_lua_cairo_table[] =
|
|||
|
||||
/* ===== Generic =========================================================== */
|
||||
|
||||
G_DEFINE_TYPE (LdLua, ld_lua, G_TYPE_OBJECT);
|
||||
G_DEFINE_TYPE (LdLua, ld_lua, G_TYPE_OBJECT)
|
||||
|
||||
static void
|
||||
ld_lua_class_init (LdLuaClass *klass)
|
||||
|
@ -187,8 +187,7 @@ ld_lua_init (LdLua *self)
|
|||
lua_State *L;
|
||||
LdLuaData *ud;
|
||||
|
||||
self->priv = G_TYPE_INSTANCE_GET_PRIVATE
|
||||
(self, LD_TYPE_LUA, LdLuaPrivate);
|
||||
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, LD_TYPE_LUA, LdLuaPrivate);
|
||||
|
||||
L = self->priv->L = lua_newstate (ld_lua_alloc, NULL);
|
||||
g_return_if_fail (L != NULL);
|
||||
|
@ -251,8 +250,7 @@ ld_lua_alloc (void *ud, void *ptr, size_t osize, size_t nsize)
|
|||
g_free (ptr);
|
||||
return NULL;
|
||||
}
|
||||
else
|
||||
return g_try_realloc (ptr, nsize);
|
||||
return g_try_realloc (ptr, nsize);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -465,8 +463,7 @@ ld_lua_logdiag_register (lua_State *L)
|
|||
lua_insert (L, -2);
|
||||
lua_concat (L, 2);
|
||||
|
||||
g_warning ("Lua symbol registration failed: %s",
|
||||
lua_tostring (L, -1));
|
||||
g_warning ("Lua symbol registration failed: %s", lua_tostring (L, -1));
|
||||
lua_pushboolean (L, FALSE);
|
||||
}
|
||||
else
|
||||
|
@ -861,4 +858,3 @@ LD_LUA_CAIRO_BEGIN (show_text)
|
|||
|
||||
g_object_unref (layout);
|
||||
LD_LUA_CAIRO_END (0)
|
||||
|
||||
|
|
|
@ -15,16 +15,14 @@ G_BEGIN_DECLS
|
|||
|
||||
|
||||
#define LD_TYPE_LUA (ld_lua_get_type ())
|
||||
#define LD_LUA(obj) (G_TYPE_CHECK_INSTANCE_CAST \
|
||||
((obj), LD_TYPE_LUA, LdLua))
|
||||
#define LD_LUA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST \
|
||||
((klass), LD_TYPE_LUA, LdLuaClass))
|
||||
#define LD_IS_LUA(obj) (G_TYPE_CHECK_INSTANCE_TYPE \
|
||||
((obj), LD_TYPE_LUA))
|
||||
#define LD_IS_LUA_CLASS(klass) (G_TYPE_CHECK_INSTANCE_TYPE \
|
||||
((klass), LD_TYPE_LUA))
|
||||
#define LD_LUA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS \
|
||||
((obj), LD_LUA, LdLuaClass))
|
||||
#define LD_LUA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), LD_TYPE_LUA, LdLua))
|
||||
#define LD_LUA_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST ((klass), LD_TYPE_LUA, LdLuaClass))
|
||||
#define LD_IS_LUA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), LD_TYPE_LUA))
|
||||
#define LD_IS_LUA_CLASS(klass) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((klass), LD_TYPE_LUA))
|
||||
#define LD_LUA_GET_CLASS(obj) \
|
||||
(G_TYPE_INSTANCE_GET_CLASS ((obj), LD_LUA, LdLuaClass))
|
||||
|
||||
typedef struct _LdLua LdLua;
|
||||
typedef struct _LdLuaPrivate LdLuaPrivate;
|
||||
|
@ -67,4 +65,3 @@ gboolean ld_lua_load_file (LdLua *self, const gchar *filename,
|
|||
G_END_DECLS
|
||||
|
||||
#endif /* ! __LD_LUA_H__ */
|
||||
|
||||
|
|
|
@ -1,3 +1,2 @@
|
|||
VOID:OBJECT,OBJECT
|
||||
VOID:OBJECT,STRING
|
||||
VOID:DOUBLE,DOUBLE
|
||||
|
|
|
@ -38,7 +38,7 @@ static void ld_symbol_set_property (GObject *object, guint property_id,
|
|||
const GValue *value, GParamSpec *pspec);
|
||||
|
||||
|
||||
G_DEFINE_ABSTRACT_TYPE (LdSymbol, ld_symbol, G_TYPE_OBJECT);
|
||||
G_DEFINE_ABSTRACT_TYPE (LdSymbol, ld_symbol, G_TYPE_OBJECT)
|
||||
|
||||
static void
|
||||
ld_symbol_class_init (LdSymbolClass *klass)
|
||||
|
|
|
@ -15,16 +15,15 @@ G_BEGIN_DECLS
|
|||
|
||||
|
||||
#define LD_TYPE_SYMBOL (ld_symbol_get_type ())
|
||||
#define LD_SYMBOL(obj) (G_TYPE_CHECK_INSTANCE_CAST \
|
||||
((obj), LD_TYPE_SYMBOL, LdSymbol))
|
||||
#define LD_SYMBOL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST \
|
||||
((klass), LD_TYPE_SYMBOL, LdSymbolClass))
|
||||
#define LD_IS_SYMBOL(obj) (G_TYPE_CHECK_INSTANCE_TYPE \
|
||||
((obj), LD_TYPE_SYMBOL))
|
||||
#define LD_IS_SYMBOL_CLASS(klass) (G_TYPE_CHECK_INSTANCE_TYPE \
|
||||
((klass), LD_TYPE_SYMBOL))
|
||||
#define LD_SYMBOL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS \
|
||||
((obj), LD_SYMBOL, LdSymbolClass))
|
||||
#define LD_SYMBOL(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST ((obj), LD_TYPE_SYMBOL, LdSymbol))
|
||||
#define LD_SYMBOL_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST ((klass), LD_TYPE_SYMBOL, LdSymbolClass))
|
||||
#define LD_IS_SYMBOL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), LD_TYPE_SYMBOL))
|
||||
#define LD_IS_SYMBOL_CLASS(klass) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((klass), LD_TYPE_SYMBOL))
|
||||
#define LD_SYMBOL_GET_CLASS(obj) \
|
||||
(G_TYPE_INSTANCE_GET_CLASS ((obj), LD_SYMBOL, LdSymbolClass))
|
||||
|
||||
typedef struct _LdSymbol LdSymbol;
|
||||
typedef struct _LdSymbolPrivate LdSymbolPrivate;
|
||||
|
@ -72,4 +71,3 @@ void ld_symbol_draw (LdSymbol *self, cairo_t *cr);
|
|||
G_END_DECLS
|
||||
|
||||
#endif /* ! __LD_SYMBOL_H__ */
|
||||
|
||||
|
|
|
@ -256,7 +256,8 @@ ld_point_array_remove (LdPointArray *self, gint pos, guint length)
|
|||
*
|
||||
* Change size of the array.
|
||||
*/
|
||||
void ld_point_array_set_size (LdPointArray *self, guint size)
|
||||
void
|
||||
ld_point_array_set_size (LdPointArray *self, guint size)
|
||||
{
|
||||
g_return_if_fail (self != NULL);
|
||||
|
||||
|
|
|
@ -14,9 +14,9 @@
|
|||
G_BEGIN_DECLS
|
||||
|
||||
|
||||
#define LD_TYPE_POINT (ld_point_get_type ())
|
||||
#define LD_TYPE_POINT (ld_point_get_type ())
|
||||
#define LD_TYPE_POINT_ARRAY (ld_point_array_get_type ())
|
||||
#define LD_TYPE_RECTANGLE (ld_rectangle_get_type ())
|
||||
#define LD_TYPE_RECTANGLE (ld_rectangle_get_type ())
|
||||
|
||||
|
||||
/**
|
||||
|
@ -99,4 +99,3 @@ void ld_rectangle_extend (LdRectangle *self, gdouble border);
|
|||
G_END_DECLS
|
||||
|
||||
#endif /* ! __LD_TYPES_H__ */
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ struct _LdUndoActionPrivate
|
|||
static void ld_undo_action_finalize (GObject *gobject);
|
||||
|
||||
|
||||
G_DEFINE_TYPE (LdUndoAction, ld_undo_action, G_TYPE_OBJECT);
|
||||
G_DEFINE_TYPE (LdUndoAction, ld_undo_action, G_TYPE_OBJECT)
|
||||
|
||||
static void
|
||||
ld_undo_action_class_init (LdUndoActionClass *klass)
|
||||
|
@ -84,9 +84,8 @@ ld_undo_action_finalize (GObject *gobject)
|
|||
* Return value: a new #LdUndoAction object.
|
||||
*/
|
||||
LdUndoAction *
|
||||
ld_undo_action_new (LdUndoActionFunc undo_func,
|
||||
LdUndoActionFunc redo_func, LdUndoActionFunc destroy_func,
|
||||
gpointer user_data)
|
||||
ld_undo_action_new (LdUndoActionFunc undo_func, LdUndoActionFunc redo_func,
|
||||
LdUndoActionFunc destroy_func, gpointer user_data)
|
||||
{
|
||||
LdUndoAction *self;
|
||||
|
||||
|
|
|
@ -15,16 +15,16 @@ G_BEGIN_DECLS
|
|||
|
||||
|
||||
#define LD_TYPE_UNDO_ACTION (ld_undo_action_get_type ())
|
||||
#define LD_UNDO_ACTION(obj) (G_TYPE_CHECK_INSTANCE_CAST \
|
||||
((obj), LD_TYPE_UNDO_ACTION, LdUndoAction))
|
||||
#define LD_UNDO_ACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST \
|
||||
((klass), LD_TYPE_UNDO_ACTION, LdUndoActionClass))
|
||||
#define LD_IS_UNDO_ACTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE \
|
||||
((obj), LD_TYPE_UNDO_ACTION))
|
||||
#define LD_IS_UNDO_ACTION_CLASS(klass) (G_TYPE_CHECK_INSTANCE_TYPE \
|
||||
((klass), LD_TYPE_UNDO_ACTION))
|
||||
#define LD_UNDO_ACTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS \
|
||||
((obj), LD_UNDO_ACTION, LdUndoActionClass))
|
||||
#define LD_UNDO_ACTION(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST ((obj), LD_TYPE_UNDO_ACTION, LdUndoAction))
|
||||
#define LD_UNDO_ACTION_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST ((klass), LD_TYPE_UNDO_ACTION, LdUndoActionClass))
|
||||
#define LD_IS_UNDO_ACTION(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), LD_TYPE_UNDO_ACTION))
|
||||
#define LD_IS_UNDO_ACTION_CLASS(klass) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((klass), LD_TYPE_UNDO_ACTION))
|
||||
#define LD_UNDO_ACTION_GET_CLASS(obj) \
|
||||
(G_TYPE_INSTANCE_GET_CLASS ((obj), LD_UNDO_ACTION, LdUndoActionClass))
|
||||
|
||||
typedef struct _LdUndoAction LdUndoAction;
|
||||
typedef struct _LdUndoActionPrivate LdUndoActionPrivate;
|
||||
|
@ -73,4 +73,3 @@ void ld_undo_action_redo (LdUndoAction *self);
|
|||
G_END_DECLS
|
||||
|
||||
#endif /* ! __LD_UNDO_ACTION_H__ */
|
||||
|
||||
|
|
134
po/cs.po
134
po/cs.po
|
@ -7,8 +7,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: logdiag\n"
|
||||
"Report-Msgid-Bugs-To: https://git.janouch.name/p/logdiag/issues\n"
|
||||
"POT-Creation-Date: 2021-10-22 22:16+0200\n"
|
||||
"PO-Revision-Date: 2021-10-22 22:21+0200\n"
|
||||
"POT-Creation-Date: 2021-10-28 20:07+0200\n"
|
||||
"PO-Revision-Date: 2021-10-28 20:10+0200\n"
|
||||
"Last-Translator: Přemysl Eric Janouch <p@janouch.name>\n"
|
||||
"Language-Team: Czech <cs@li.org>\n"
|
||||
"Language: cs\n"
|
||||
|
@ -17,7 +17,7 @@ msgstr ""
|
|||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 3.0\n"
|
||||
|
||||
#: ../src/ld-window-main.c:937
|
||||
#: ../src/ld-window-main.c:968
|
||||
#, c-format
|
||||
msgid "%d%%"
|
||||
msgstr "%d %%"
|
||||
|
@ -26,19 +26,19 @@ msgstr "%d %%"
|
|||
msgid "- Schematic editor"
|
||||
msgstr "- Editor schémat"
|
||||
|
||||
#: ../src/ld-window-main.c:861
|
||||
#: ../src/ld-window-main.c:892
|
||||
msgid "Close _without Saving"
|
||||
msgstr "Zavřít _bez uložení"
|
||||
|
||||
#: ../src/ld-window-main.c:128
|
||||
#: ../src/ld-window-main.c:141
|
||||
msgid "Create a new diagram"
|
||||
msgstr "Vytvoří nový diagram"
|
||||
|
||||
#: ../src/ld-window-main.c:161
|
||||
#: ../src/ld-window-main.c:174
|
||||
msgid "Delete the contents of the selection"
|
||||
msgstr "Odstraní obsah výběru"
|
||||
|
||||
#: ../src/ld-window-main.c:354
|
||||
#: ../src/ld-window-main.c:370
|
||||
msgid "Drag symbols from the library pane to add them to the diagram."
|
||||
msgstr "Pro přidání symbolů do diagramu je přetáhněte z panelu knihovny."
|
||||
|
||||
|
@ -46,131 +46,147 @@ msgstr "Pro přidání symbolů do diagramu je přetáhněte z panelu knihovny."
|
|||
msgid "Empty"
|
||||
msgstr "Prázdné"
|
||||
|
||||
#: ../src/ld-window-main.c:707
|
||||
#: ../src/ld-window-main.c:1042
|
||||
msgid "Error"
|
||||
msgstr "Chyba"
|
||||
|
||||
#: ../src/ld-window-main.c:738
|
||||
#, c-format
|
||||
msgid "Failed to open file `%s': Invalid contents."
|
||||
msgstr "Nelze otevřít soubor \"%s\": Neplatný obsah."
|
||||
|
||||
#: ../src/ld-window-main.c:698
|
||||
#: ../src/ld-window-main.c:729
|
||||
msgid "Failed to open the file"
|
||||
msgstr "Nelze otevřít soubor"
|
||||
|
||||
#: ../src/ld-window-main.c:662
|
||||
#: ../src/ld-window-main.c:1149
|
||||
msgid "Failed to open the user guide"
|
||||
msgstr "Nelze otevřít průvodce uživatele"
|
||||
|
||||
#: ../src/ld-window-main.c:693
|
||||
msgid "Failed to save the diagram"
|
||||
msgstr "Nelze uložit diagram"
|
||||
|
||||
#: ../src/ld-window-main.c:859
|
||||
#: ../src/ld-window-main.c:890
|
||||
msgid "If you don't save, changes will be permanently lost."
|
||||
msgstr "Pokud je neuložíte, budou změny navždy ztraceny."
|
||||
|
||||
#: ../src/ld-window-main.c:738
|
||||
#: ../src/ld-window-main.c:769
|
||||
msgid "Logdiag Diagrams (*.ldd)"
|
||||
msgstr "Diagramy logdiag (*.ldd)"
|
||||
|
||||
#: ../src/ld-window-main.c:131
|
||||
#: ../src/ld-window-main.c:144
|
||||
msgid "Open a diagram"
|
||||
msgstr "Otevře diagram"
|
||||
|
||||
#: ../src/ld-window-main.c:759
|
||||
#: ../src/ld-window-main.c:193
|
||||
msgid "Open the manual"
|
||||
msgstr "Otevře manuál"
|
||||
|
||||
#: ../src/ld-window-main.c:790
|
||||
msgid "Open..."
|
||||
msgstr "Otevřít..."
|
||||
|
||||
#: ../src/ld-window-main.c:145
|
||||
#: ../src/ld-window-main.c:154
|
||||
msgid "Print the diagram"
|
||||
msgstr "Vytiskne diagram"
|
||||
|
||||
#: ../src/ld-window-main.c:158
|
||||
msgid "Quit the application"
|
||||
msgstr "Ukončí aplikaci"
|
||||
|
||||
#: ../src/ld-window-main.c:153
|
||||
#: ../src/ld-window-main.c:166
|
||||
msgid "Redo the last undone action"
|
||||
msgstr "Provede posledně vrácenou akci"
|
||||
|
||||
#: ../src/ld-window-main.c:175
|
||||
#: ../src/ld-window-main.c:188
|
||||
msgid "Reset zoom level back to the default"
|
||||
msgstr "Vrátí přiblížení na výchozí hodnotu"
|
||||
|
||||
#: ../src/ld-window-main.c:792
|
||||
#: ../src/ld-window-main.c:823
|
||||
msgid "Save As..."
|
||||
msgstr "Uložit jako..."
|
||||
|
||||
#: ../src/ld-window-main.c:136
|
||||
#: ../src/ld-window-main.c:149
|
||||
msgid "Save _As..."
|
||||
msgstr "Uložit _jako..."
|
||||
|
||||
#: ../src/ld-window-main.c:623
|
||||
#: ../src/ld-window-main.c:654
|
||||
#, c-format
|
||||
msgid "Save the changes to diagram \"%s\" before closing it and creating a new one?"
|
||||
msgstr "Uložit změny v diagramu \"%s\" před jeho zavřením a vytvořením nového?"
|
||||
|
||||
#: ../src/ld-window-main.c:755
|
||||
#: ../src/ld-window-main.c:786
|
||||
#, c-format
|
||||
msgid "Save the changes to diagram \"%s\" before closing it and opening another one?"
|
||||
msgstr "Uložit změny v diagramu \"%s\" před jeho zavřením a otevřením jiného?"
|
||||
|
||||
#: ../src/ld-window-main.c:899
|
||||
#: ../src/ld-window-main.c:930
|
||||
#, c-format
|
||||
msgid "Save the changes to diagram \"%s\" before closing?"
|
||||
msgstr "Uložit změny v diagramu \"%s\" před jeho zavřením?"
|
||||
|
||||
#: ../src/ld-window-main.c:134
|
||||
#: ../src/ld-window-main.c:147
|
||||
msgid "Save the current diagram"
|
||||
msgstr "Uloží stávající diagram"
|
||||
|
||||
#: ../src/ld-window-main.c:137
|
||||
#: ../src/ld-window-main.c:150
|
||||
msgid "Save the current diagram with another name"
|
||||
msgstr "Uloží stávající diagram pod jiným jménem"
|
||||
|
||||
#: ../src/ld-window-main.c:163
|
||||
#: ../src/ld-window-main.c:176
|
||||
msgid "Select _All"
|
||||
msgstr "Vybrat _vše"
|
||||
|
||||
#: ../src/ld-window-main.c:164
|
||||
#: ../src/ld-window-main.c:177
|
||||
msgid "Select all objects in the diagram"
|
||||
msgstr "Vybere všechny objekty v diagramu"
|
||||
|
||||
#: ../src/ld-window-main.c:192
|
||||
#: ../src/ld-window-main.c:208
|
||||
msgid "Show _Grid"
|
||||
msgstr "Zobrazit _mřížku"
|
||||
|
||||
#: ../src/ld-window-main.c:180
|
||||
#: ../src/ld-window-main.c:196
|
||||
msgid "Show a dialog about this application"
|
||||
msgstr "Zobrazí dialog o této aplikaci"
|
||||
|
||||
#: ../src/ld-window-main.c:193
|
||||
#: ../src/ld-window-main.c:209
|
||||
msgid "Toggle displaying of the grid"
|
||||
msgstr "Přepne zobrazování mřížky"
|
||||
|
||||
#: ../src/ld-window-main.c:190
|
||||
#: ../src/ld-window-main.c:206
|
||||
msgid "Toggle displaying of the library pane"
|
||||
msgstr "Přepne zobrazování panelu knihovny"
|
||||
|
||||
#: ../src/ld-window-main.c:187
|
||||
#: ../src/ld-window-main.c:203
|
||||
msgid "Toggle displaying of the main toolbar"
|
||||
msgstr "Přepne zobrazování hlavního panelu nástrojů"
|
||||
|
||||
#: ../src/ld-window-main.c:665
|
||||
#: ../src/ld-window-main.c:696
|
||||
msgid "Try again or save it under another name."
|
||||
msgstr "Zkuste to znova nebo jej uložte pod jiným názvem."
|
||||
|
||||
#: ../src/ld-window-main.c:150
|
||||
#: ../src/ld-window-main.c:163
|
||||
msgid "Undo the last action"
|
||||
msgstr "Vrátí poslední akci"
|
||||
|
||||
#: ../src/ld-window-main.c:591
|
||||
#: ../src/ld-window-main.c:622
|
||||
msgid "Unsaved Diagram"
|
||||
msgstr "Neuložený diagram"
|
||||
|
||||
#: ../src/ld-window-main.c:806
|
||||
#: ../src/ld-window-main.c:837
|
||||
msgid "Untitled diagram"
|
||||
msgstr "Nepojmenovaný diagram"
|
||||
|
||||
#: ../src/ld-window-main.c:171
|
||||
#: ../src/ld-window-main.c:184
|
||||
msgid "Zoom _Out"
|
||||
msgstr "_Oddálit"
|
||||
|
||||
#: ../src/ld-window-main.c:169
|
||||
#: ../src/ld-window-main.c:182
|
||||
msgid "Zoom into the diagram"
|
||||
msgstr "Přiblíží diagram"
|
||||
|
||||
#: ../src/ld-window-main.c:172
|
||||
#: ../src/ld-window-main.c:185
|
||||
msgid "Zoom out of the diagram"
|
||||
msgstr "Oddálí diagram"
|
||||
|
||||
|
@ -178,71 +194,79 @@ msgstr "Oddálí diagram"
|
|||
msgid "[FILE...]"
|
||||
msgstr "[SOUBOR...]"
|
||||
|
||||
#: ../src/ld-window-main.c:179
|
||||
#: ../src/ld-window-main.c:195
|
||||
msgid "_About"
|
||||
msgstr "_O programu"
|
||||
|
||||
#: ../src/ld-window-main.c:160
|
||||
#: ../src/ld-window-main.c:173
|
||||
msgid "_Delete"
|
||||
msgstr "_Smazat"
|
||||
|
||||
#: ../src/ld-window-main.c:148
|
||||
#: ../src/ld-window-main.c:161
|
||||
msgid "_Edit"
|
||||
msgstr "_Úpravy"
|
||||
|
||||
#: ../src/ld-window-main.c:126
|
||||
#: ../src/ld-window-main.c:139
|
||||
msgid "_File"
|
||||
msgstr "_Soubor"
|
||||
|
||||
#: ../src/ld-window-main.c:178
|
||||
#: ../src/ld-window-main.c:191
|
||||
msgid "_Help"
|
||||
msgstr "_Nápověda"
|
||||
|
||||
#: ../src/ld-window-main.c:189
|
||||
#: ../src/ld-window-main.c:205
|
||||
msgid "_Library Pane"
|
||||
msgstr "Panel _knihovny"
|
||||
|
||||
#: ../src/ld-window-main.c:186
|
||||
#: ../src/ld-window-main.c:202
|
||||
msgid "_Main Toolbar"
|
||||
msgstr "_Hlavní panel nástrojů"
|
||||
|
||||
#: ../src/ld-window-main.c:127
|
||||
#: ../src/ld-window-main.c:140
|
||||
msgid "_New"
|
||||
msgstr "_Nový"
|
||||
|
||||
#: ../src/ld-window-main.c:174
|
||||
#: ../src/ld-window-main.c:187
|
||||
msgid "_Normal Size"
|
||||
msgstr "_Normální velikost"
|
||||
|
||||
#: ../src/ld-window-main.c:130
|
||||
#: ../src/ld-window-main.c:143
|
||||
msgid "_Open..."
|
||||
msgstr "_Otevřít..."
|
||||
|
||||
#: ../src/ld-window-main.c:144
|
||||
#: ../src/ld-window-main.c:153
|
||||
msgid "_Print..."
|
||||
msgstr "_Tisk..."
|
||||
|
||||
#: ../src/ld-window-main.c:157
|
||||
msgid "_Quit"
|
||||
msgstr "U_končit"
|
||||
|
||||
#: ../src/ld-window-main.c:152
|
||||
#: ../src/ld-window-main.c:165
|
||||
msgid "_Redo"
|
||||
msgstr "Z_novu"
|
||||
|
||||
#: ../src/ld-window-main.c:133
|
||||
#: ../src/ld-window-main.c:146
|
||||
msgid "_Save"
|
||||
msgstr "_Uložit"
|
||||
|
||||
#: ../src/ld-window-main.c:149
|
||||
#: ../src/ld-window-main.c:162
|
||||
msgid "_Undo"
|
||||
msgstr "_Zpět"
|
||||
|
||||
#: ../src/ld-window-main.c:167
|
||||
#: ../src/ld-window-main.c:192
|
||||
msgid "_User Guide"
|
||||
msgstr "_Průvodce uživatele"
|
||||
|
||||
#: ../src/ld-window-main.c:180
|
||||
msgid "_View"
|
||||
msgstr "_Zobrazení"
|
||||
|
||||
#: ../src/ld-window-main.c:168
|
||||
#: ../src/ld-window-main.c:181
|
||||
msgid "_Zoom In"
|
||||
msgstr "_Přiblížit"
|
||||
|
||||
#: ../src/ld-window-main.c:983
|
||||
#: ../src/ld-window-main.c:1163
|
||||
msgid "translator-credits"
|
||||
msgstr "Přemysl Eric Janouch <p@janouch.name>"
|
||||
|
||||
|
|
141
po/de.po
141
po/de.po
|
@ -7,17 +7,17 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: logdiag\n"
|
||||
"Report-Msgid-Bugs-To: https://git.janouch.name/p/logdiag/issues\n"
|
||||
"POT-Creation-Date: 2021-10-22 22:16+0200\n"
|
||||
"PO-Revision-Date: 2018-06-25 04:11+0200\n"
|
||||
"POT-Creation-Date: 2021-10-28 20:07+0200\n"
|
||||
"PO-Revision-Date: 2021-10-28 21:29+0200\n"
|
||||
"Last-Translator: Přemysl Eric Janouch <p@janouch.name>\n"
|
||||
"Language-Team: German <de@li.org>\n"
|
||||
"Language: de\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.0.8\n"
|
||||
"X-Generator: Poedit 3.0\n"
|
||||
|
||||
#: ../src/ld-window-main.c:937
|
||||
#: ../src/ld-window-main.c:968
|
||||
#, c-format
|
||||
msgid "%d%%"
|
||||
msgstr "%d %%"
|
||||
|
@ -26,19 +26,19 @@ msgstr "%d %%"
|
|||
msgid "- Schematic editor"
|
||||
msgstr "- Schema Editor"
|
||||
|
||||
#: ../src/ld-window-main.c:861
|
||||
#: ../src/ld-window-main.c:892
|
||||
msgid "Close _without Saving"
|
||||
msgstr "Schließen _ohne Speichern"
|
||||
|
||||
#: ../src/ld-window-main.c:128
|
||||
#: ../src/ld-window-main.c:141
|
||||
msgid "Create a new diagram"
|
||||
msgstr "Neues Diagramm erstellen"
|
||||
|
||||
#: ../src/ld-window-main.c:161
|
||||
#: ../src/ld-window-main.c:174
|
||||
msgid "Delete the contents of the selection"
|
||||
msgstr "Inhalt der markierten Einträge löschen"
|
||||
|
||||
#: ../src/ld-window-main.c:354
|
||||
#: ../src/ld-window-main.c:370
|
||||
msgid "Drag symbols from the library pane to add them to the diagram."
|
||||
msgstr ""
|
||||
"Ziehen Sie Symbole aus dem Bibliotheksfenster, um sie dem Diagramm "
|
||||
|
@ -48,62 +48,78 @@ msgstr ""
|
|||
msgid "Empty"
|
||||
msgstr "Leere"
|
||||
|
||||
#: ../src/ld-window-main.c:707
|
||||
#: ../src/ld-window-main.c:1042
|
||||
msgid "Error"
|
||||
msgstr "Fehler"
|
||||
|
||||
#: ../src/ld-window-main.c:738
|
||||
#, c-format
|
||||
msgid "Failed to open file `%s': Invalid contents."
|
||||
msgstr "Fehler beim Öffnen der Datei \"%s\": Ungültiger Inhalt."
|
||||
|
||||
#: ../src/ld-window-main.c:698
|
||||
#: ../src/ld-window-main.c:729
|
||||
msgid "Failed to open the file"
|
||||
msgstr "Fehler beim Öffnen der Datei"
|
||||
|
||||
#: ../src/ld-window-main.c:662
|
||||
#: ../src/ld-window-main.c:1149
|
||||
msgid "Failed to open the user guide"
|
||||
msgstr "Fehler beim Öffnen des Benutzerhandbuchs"
|
||||
|
||||
#: ../src/ld-window-main.c:693
|
||||
msgid "Failed to save the diagram"
|
||||
msgstr "Fehler beim Speichern des Diagramms"
|
||||
|
||||
#: ../src/ld-window-main.c:859
|
||||
#: ../src/ld-window-main.c:890
|
||||
msgid "If you don't save, changes will be permanently lost."
|
||||
msgstr "Wenn Sie nicht speichern, gehen alle Änderungen verloren."
|
||||
|
||||
#: ../src/ld-window-main.c:738
|
||||
#: ../src/ld-window-main.c:769
|
||||
msgid "Logdiag Diagrams (*.ldd)"
|
||||
msgstr "Diagramme logdiag (.ldd)"
|
||||
|
||||
#: ../src/ld-window-main.c:131
|
||||
#: ../src/ld-window-main.c:144
|
||||
msgid "Open a diagram"
|
||||
msgstr "Diagramm öffnen"
|
||||
|
||||
#: ../src/ld-window-main.c:759
|
||||
#: ../src/ld-window-main.c:193
|
||||
msgid "Open the manual"
|
||||
msgstr "Die Betriebsanleitung öffnen"
|
||||
|
||||
#: ../src/ld-window-main.c:790
|
||||
msgid "Open..."
|
||||
msgstr "Öffnen..."
|
||||
|
||||
#: ../src/ld-window-main.c:145
|
||||
#: ../src/ld-window-main.c:154
|
||||
msgid "Print the diagram"
|
||||
msgstr "Das Diagramm drucken"
|
||||
|
||||
#: ../src/ld-window-main.c:158
|
||||
msgid "Quit the application"
|
||||
msgstr "Anwendung beenden"
|
||||
|
||||
#: ../src/ld-window-main.c:153
|
||||
#: ../src/ld-window-main.c:166
|
||||
msgid "Redo the last undone action"
|
||||
msgstr "Letzte nicht abgeschlossene Aktion wiederholen"
|
||||
|
||||
#: ../src/ld-window-main.c:175
|
||||
#: ../src/ld-window-main.c:188
|
||||
msgid "Reset zoom level back to the default"
|
||||
msgstr "Zoom Bereich zurücksetzen"
|
||||
|
||||
#: ../src/ld-window-main.c:792
|
||||
#: ../src/ld-window-main.c:823
|
||||
msgid "Save As..."
|
||||
msgstr "Speichern unter..."
|
||||
|
||||
#: ../src/ld-window-main.c:136
|
||||
#: ../src/ld-window-main.c:149
|
||||
msgid "Save _As..."
|
||||
msgstr "Speichern _unter..."
|
||||
|
||||
#: ../src/ld-window-main.c:623
|
||||
#: ../src/ld-window-main.c:654
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Save the changes to diagram \"%s\" before closing it and creating a new one?"
|
||||
msgstr "Änderungen im Diagramm \"%s\" speichern bevor ein Neues geöffnet wird?"
|
||||
|
||||
#: ../src/ld-window-main.c:755
|
||||
#: ../src/ld-window-main.c:786
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Save the changes to diagram \"%s\" before closing it and opening another one?"
|
||||
|
@ -111,73 +127,72 @@ msgstr ""
|
|||
"Änderungen im Diagramm \"%s\" speichern bevor es beendet und ein Weiteres "
|
||||
"geöffnet wird?"
|
||||
|
||||
#: ../src/ld-window-main.c:899
|
||||
#: ../src/ld-window-main.c:930
|
||||
#, c-format
|
||||
msgid "Save the changes to diagram \"%s\" before closing?"
|
||||
msgstr "Änderungen im Diagramm \"%s\" vor dem Schließen speichern?"
|
||||
|
||||
#: ../src/ld-window-main.c:134
|
||||
#: ../src/ld-window-main.c:147
|
||||
msgid "Save the current diagram"
|
||||
msgstr "Speichern des aktuellen Diagramms"
|
||||
|
||||
#: ../src/ld-window-main.c:137
|
||||
#: ../src/ld-window-main.c:150
|
||||
msgid "Save the current diagram with another name"
|
||||
msgstr "Aktuelles Diagramm unter anderem Namen speichern"
|
||||
|
||||
#: ../src/ld-window-main.c:163
|
||||
#: ../src/ld-window-main.c:176
|
||||
msgid "Select _All"
|
||||
msgstr "_Alles Auswählen"
|
||||
|
||||
#: ../src/ld-window-main.c:164
|
||||
#: ../src/ld-window-main.c:177
|
||||
msgid "Select all objects in the diagram"
|
||||
msgstr "Alle Objekte im Diagramm auswählen"
|
||||
|
||||
#: ../src/ld-window-main.c:192
|
||||
#: ../src/ld-window-main.c:208
|
||||
msgid "Show _Grid"
|
||||
msgstr "_Gitter anzeigen"
|
||||
|
||||
#: ../src/ld-window-main.c:180
|
||||
#: ../src/ld-window-main.c:196
|
||||
msgid "Show a dialog about this application"
|
||||
msgstr "Zeige einen Dialog über diese Anwendung"
|
||||
|
||||
#: ../src/ld-window-main.c:193
|
||||
#: ../src/ld-window-main.c:209
|
||||
msgid "Toggle displaying of the grid"
|
||||
msgstr "Gitter ein-/ausblenden"
|
||||
|
||||
#: ../src/ld-window-main.c:190
|
||||
#: ../src/ld-window-main.c:206
|
||||
msgid "Toggle displaying of the library pane"
|
||||
msgstr "Bibliothek ein-/ausblenden"
|
||||
|
||||
#: ../src/ld-window-main.c:187
|
||||
#: ../src/ld-window-main.c:203
|
||||
msgid "Toggle displaying of the main toolbar"
|
||||
msgstr "Symbolleiste ein-/ausblenden"
|
||||
|
||||
#: ../src/ld-window-main.c:665
|
||||
#: ../src/ld-window-main.c:696
|
||||
msgid "Try again or save it under another name."
|
||||
msgstr "Erneuter Versuch oder unter anderem Namen speichern."
|
||||
|
||||
#: ../src/ld-window-main.c:150
|
||||
#: ../src/ld-window-main.c:163
|
||||
msgid "Undo the last action"
|
||||
msgstr "Letzte Aktion rückgangig machen"
|
||||
|
||||
#: ../src/ld-window-main.c:591
|
||||
#: ../src/ld-window-main.c:622
|
||||
msgid "Unsaved Diagram"
|
||||
msgstr "Ungespeichertes Diagramm"
|
||||
|
||||
#: ../src/ld-window-main.c:806
|
||||
#, fuzzy
|
||||
#: ../src/ld-window-main.c:837
|
||||
msgid "Untitled diagram"
|
||||
msgstr "Ungespeichertes Diagramm"
|
||||
msgstr "Unbenanntes Diagramm"
|
||||
|
||||
#: ../src/ld-window-main.c:171
|
||||
#: ../src/ld-window-main.c:184
|
||||
msgid "Zoom _Out"
|
||||
msgstr "Zoom _heraus"
|
||||
|
||||
#: ../src/ld-window-main.c:169
|
||||
#: ../src/ld-window-main.c:182
|
||||
msgid "Zoom into the diagram"
|
||||
msgstr "In das Diagramm zoomen"
|
||||
|
||||
#: ../src/ld-window-main.c:172
|
||||
#: ../src/ld-window-main.c:185
|
||||
msgid "Zoom out of the diagram"
|
||||
msgstr "Aus dem Diagramm zoomen"
|
||||
|
||||
|
@ -185,71 +200,79 @@ msgstr "Aus dem Diagramm zoomen"
|
|||
msgid "[FILE...]"
|
||||
msgstr "[DATEI...]"
|
||||
|
||||
#: ../src/ld-window-main.c:179
|
||||
#: ../src/ld-window-main.c:195
|
||||
msgid "_About"
|
||||
msgstr "_Über"
|
||||
msgstr "_Info"
|
||||
|
||||
#: ../src/ld-window-main.c:160
|
||||
#: ../src/ld-window-main.c:173
|
||||
msgid "_Delete"
|
||||
msgstr "_Löschen"
|
||||
|
||||
#: ../src/ld-window-main.c:148
|
||||
#: ../src/ld-window-main.c:161
|
||||
msgid "_Edit"
|
||||
msgstr "_Ändern"
|
||||
|
||||
#: ../src/ld-window-main.c:126
|
||||
#: ../src/ld-window-main.c:139
|
||||
msgid "_File"
|
||||
msgstr "_Datei"
|
||||
|
||||
#: ../src/ld-window-main.c:178
|
||||
#: ../src/ld-window-main.c:191
|
||||
msgid "_Help"
|
||||
msgstr "_Hilfe"
|
||||
|
||||
#: ../src/ld-window-main.c:189
|
||||
#: ../src/ld-window-main.c:205
|
||||
msgid "_Library Pane"
|
||||
msgstr "_Bibliothek Menüleiste"
|
||||
|
||||
#: ../src/ld-window-main.c:186
|
||||
#: ../src/ld-window-main.c:202
|
||||
msgid "_Main Toolbar"
|
||||
msgstr "_Symbolleiste"
|
||||
|
||||
#: ../src/ld-window-main.c:127
|
||||
#: ../src/ld-window-main.c:140
|
||||
msgid "_New"
|
||||
msgstr "_Neu"
|
||||
|
||||
#: ../src/ld-window-main.c:174
|
||||
#: ../src/ld-window-main.c:187
|
||||
msgid "_Normal Size"
|
||||
msgstr "_Normale Größe"
|
||||
|
||||
#: ../src/ld-window-main.c:130
|
||||
#: ../src/ld-window-main.c:143
|
||||
msgid "_Open..."
|
||||
msgstr "_Öffnen..."
|
||||
|
||||
#: ../src/ld-window-main.c:144
|
||||
#: ../src/ld-window-main.c:153
|
||||
msgid "_Print..."
|
||||
msgstr "_Drucken..."
|
||||
|
||||
#: ../src/ld-window-main.c:157
|
||||
msgid "_Quit"
|
||||
msgstr "_Beenden"
|
||||
|
||||
#: ../src/ld-window-main.c:152
|
||||
#: ../src/ld-window-main.c:165
|
||||
msgid "_Redo"
|
||||
msgstr "_Wiederholen"
|
||||
|
||||
#: ../src/ld-window-main.c:133
|
||||
#: ../src/ld-window-main.c:146
|
||||
msgid "_Save"
|
||||
msgstr "_Speichern"
|
||||
|
||||
#: ../src/ld-window-main.c:149
|
||||
#: ../src/ld-window-main.c:162
|
||||
msgid "_Undo"
|
||||
msgstr "_Rückgängig"
|
||||
|
||||
#: ../src/ld-window-main.c:167
|
||||
#: ../src/ld-window-main.c:192
|
||||
msgid "_User Guide"
|
||||
msgstr "_Benutzerhandbuch"
|
||||
|
||||
#: ../src/ld-window-main.c:180
|
||||
msgid "_View"
|
||||
msgstr "_Ansicht"
|
||||
|
||||
#: ../src/ld-window-main.c:168
|
||||
#: ../src/ld-window-main.c:181
|
||||
msgid "_Zoom In"
|
||||
msgstr "_Hineinzoomen"
|
||||
|
||||
#: ../src/ld-window-main.c:983
|
||||
#: ../src/ld-window-main.c:1163
|
||||
msgid "translator-credits"
|
||||
msgstr "Andy J."
|
||||
|
||||
|
|
168
po/logdiag.pot
168
po/logdiag.pot
|
@ -6,9 +6,9 @@
|
|||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: logdiag 0.2.0\n"
|
||||
"Project-Id-Version: logdiag 0.3.0\n"
|
||||
"Report-Msgid-Bugs-To: https://git.janouch.name/p/logdiag/issues\n"
|
||||
"POT-Creation-Date: 2021-10-22 22:16+0200\n"
|
||||
"POT-Creation-Date: 2021-10-28 20:07+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -17,222 +17,246 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: ../src/ld-window-main.c:126
|
||||
#: ../src/ld-window-main.c:139
|
||||
msgid "_File"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:127
|
||||
#: ../src/ld-window-main.c:140
|
||||
msgid "_New"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:128
|
||||
#: ../src/ld-window-main.c:141
|
||||
msgid "Create a new diagram"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:130
|
||||
#: ../src/ld-window-main.c:143
|
||||
msgid "_Open..."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:131
|
||||
#: ../src/ld-window-main.c:144
|
||||
msgid "Open a diagram"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:133
|
||||
#: ../src/ld-window-main.c:146
|
||||
msgid "_Save"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:134
|
||||
#: ../src/ld-window-main.c:147
|
||||
msgid "Save the current diagram"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:136
|
||||
#: ../src/ld-window-main.c:149
|
||||
msgid "Save _As..."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:137
|
||||
#: ../src/ld-window-main.c:150
|
||||
msgid "Save the current diagram with another name"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:144
|
||||
#: ../src/ld-window-main.c:153
|
||||
msgid "_Print..."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:154
|
||||
msgid "Print the diagram"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:157
|
||||
msgid "_Quit"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:145
|
||||
#: ../src/ld-window-main.c:158
|
||||
msgid "Quit the application"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:148
|
||||
#: ../src/ld-window-main.c:161
|
||||
msgid "_Edit"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:149
|
||||
#: ../src/ld-window-main.c:162
|
||||
msgid "_Undo"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:150
|
||||
#: ../src/ld-window-main.c:163
|
||||
msgid "Undo the last action"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:152
|
||||
#: ../src/ld-window-main.c:165
|
||||
msgid "_Redo"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:153
|
||||
#: ../src/ld-window-main.c:166
|
||||
msgid "Redo the last undone action"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:160
|
||||
#: ../src/ld-window-main.c:173
|
||||
msgid "_Delete"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:161
|
||||
#: ../src/ld-window-main.c:174
|
||||
msgid "Delete the contents of the selection"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:163
|
||||
#: ../src/ld-window-main.c:176
|
||||
msgid "Select _All"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:164
|
||||
#: ../src/ld-window-main.c:177
|
||||
msgid "Select all objects in the diagram"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:167
|
||||
#: ../src/ld-window-main.c:180
|
||||
msgid "_View"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:168
|
||||
#: ../src/ld-window-main.c:181
|
||||
msgid "_Zoom In"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:169
|
||||
#: ../src/ld-window-main.c:182
|
||||
msgid "Zoom into the diagram"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:171
|
||||
#: ../src/ld-window-main.c:184
|
||||
msgid "Zoom _Out"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:172
|
||||
#: ../src/ld-window-main.c:185
|
||||
msgid "Zoom out of the diagram"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:174
|
||||
#: ../src/ld-window-main.c:187
|
||||
msgid "_Normal Size"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:175
|
||||
#: ../src/ld-window-main.c:188
|
||||
msgid "Reset zoom level back to the default"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:178
|
||||
#: ../src/ld-window-main.c:191
|
||||
msgid "_Help"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:179
|
||||
msgid "_About"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:180
|
||||
msgid "Show a dialog about this application"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:186
|
||||
msgid "_Main Toolbar"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:187
|
||||
msgid "Toggle displaying of the main toolbar"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:189
|
||||
msgid "_Library Pane"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:190
|
||||
msgid "Toggle displaying of the library pane"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:192
|
||||
msgid "Show _Grid"
|
||||
msgid "_User Guide"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:193
|
||||
msgid "Open the manual"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:195
|
||||
msgid "_About"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:196
|
||||
msgid "Show a dialog about this application"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:202
|
||||
msgid "_Main Toolbar"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:203
|
||||
msgid "Toggle displaying of the main toolbar"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:205
|
||||
msgid "_Library Pane"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:206
|
||||
msgid "Toggle displaying of the library pane"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:208
|
||||
msgid "Show _Grid"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:209
|
||||
msgid "Toggle displaying of the grid"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:354
|
||||
#: ../src/ld-window-main.c:370
|
||||
msgid "Drag symbols from the library pane to add them to the diagram."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:591
|
||||
#: ../src/ld-window-main.c:622
|
||||
msgid "Unsaved Diagram"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:623
|
||||
#: ../src/ld-window-main.c:654
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Save the changes to diagram \"%s\" before closing it and creating a new one?"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:662
|
||||
#: ../src/ld-window-main.c:693
|
||||
msgid "Failed to save the diagram"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:665
|
||||
#: ../src/ld-window-main.c:696
|
||||
msgid "Try again or save it under another name."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:698
|
||||
#: ../src/ld-window-main.c:729
|
||||
msgid "Failed to open the file"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:707
|
||||
#: ../src/ld-window-main.c:738
|
||||
#, c-format
|
||||
msgid "Failed to open file `%s': Invalid contents."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:738
|
||||
#: ../src/ld-window-main.c:769
|
||||
msgid "Logdiag Diagrams (*.ldd)"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:755
|
||||
#: ../src/ld-window-main.c:786
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Save the changes to diagram \"%s\" before closing it and opening another one?"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:759
|
||||
#: ../src/ld-window-main.c:790
|
||||
msgid "Open..."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:792
|
||||
#: ../src/ld-window-main.c:823
|
||||
msgid "Save As..."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:806
|
||||
#: ../src/ld-window-main.c:837
|
||||
msgid "Untitled diagram"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:859
|
||||
#: ../src/ld-window-main.c:890
|
||||
msgid "If you don't save, changes will be permanently lost."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:861
|
||||
#: ../src/ld-window-main.c:892
|
||||
msgid "Close _without Saving"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:899
|
||||
#: ../src/ld-window-main.c:930
|
||||
#, c-format
|
||||
msgid "Save the changes to diagram \"%s\" before closing?"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:937
|
||||
#: ../src/ld-window-main.c:968
|
||||
#, c-format
|
||||
msgid "%d%%"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:983
|
||||
#: ../src/ld-window-main.c:1042
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:1149
|
||||
msgid "Failed to open the user guide"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ld-window-main.c:1163
|
||||
msgid "translator-credits"
|
||||
msgstr ""
|
||||
|
||||
|
|
159
po/pl.po
159
po/pl.po
|
@ -7,17 +7,17 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: logdiag\n"
|
||||
"Report-Msgid-Bugs-To: https://git.janouch.name/p/logdiag/issues\n"
|
||||
"POT-Creation-Date: 2021-10-22 22:16+0200\n"
|
||||
"PO-Revision-Date: 2018-06-25 04:09+0200\n"
|
||||
"POT-Creation-Date: 2021-10-28 20:07+0200\n"
|
||||
"PO-Revision-Date: 2021-10-28 20:38+0200\n"
|
||||
"Last-Translator: Přemysl Eric Janouch <p@janouch.name>\n"
|
||||
"Language-Team: Polish <pl@li.org>\n"
|
||||
"Language: pl\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.0.8\n"
|
||||
"X-Generator: Poedit 3.0\n"
|
||||
|
||||
#: ../src/ld-window-main.c:937
|
||||
#: ../src/ld-window-main.c:968
|
||||
#, c-format
|
||||
msgid "%d%%"
|
||||
msgstr "%d%%"
|
||||
|
@ -26,19 +26,19 @@ msgstr "%d%%"
|
|||
msgid "- Schematic editor"
|
||||
msgstr "- Edytor schematów"
|
||||
|
||||
#: ../src/ld-window-main.c:861
|
||||
#: ../src/ld-window-main.c:892
|
||||
msgid "Close _without Saving"
|
||||
msgstr "Zamknąć _bez zapisu"
|
||||
|
||||
#: ../src/ld-window-main.c:128
|
||||
#: ../src/ld-window-main.c:141
|
||||
msgid "Create a new diagram"
|
||||
msgstr "Stworzenie nowego wykresu"
|
||||
|
||||
#: ../src/ld-window-main.c:161
|
||||
#: ../src/ld-window-main.c:174
|
||||
msgid "Delete the contents of the selection"
|
||||
msgstr "Usuń zawartość wyboru"
|
||||
|
||||
#: ../src/ld-window-main.c:354
|
||||
#: ../src/ld-window-main.c:370
|
||||
msgid "Drag symbols from the library pane to add them to the diagram."
|
||||
msgstr "Przeciągnij symbole z panelu biblioteki, aby dodać je do diagramu."
|
||||
|
||||
|
@ -46,136 +46,147 @@ msgstr "Przeciągnij symbole z panelu biblioteki, aby dodać je do diagramu."
|
|||
msgid "Empty"
|
||||
msgstr "Puste"
|
||||
|
||||
#: ../src/ld-window-main.c:707
|
||||
#: ../src/ld-window-main.c:1042
|
||||
msgid "Error"
|
||||
msgstr "Błąd"
|
||||
|
||||
#: ../src/ld-window-main.c:738
|
||||
#, c-format
|
||||
msgid "Failed to open file `%s': Invalid contents."
|
||||
msgstr "Nie można otworzyć pliku \"%s\": Niepoprawna zawartość."
|
||||
|
||||
#: ../src/ld-window-main.c:698
|
||||
#: ../src/ld-window-main.c:729
|
||||
msgid "Failed to open the file"
|
||||
msgstr "Pliku nie da się otworzyć"
|
||||
|
||||
#: ../src/ld-window-main.c:662
|
||||
#: ../src/ld-window-main.c:1149
|
||||
msgid "Failed to open the user guide"
|
||||
msgstr "Przewodniku użytkownika nie da się otworzyć"
|
||||
|
||||
#: ../src/ld-window-main.c:693
|
||||
msgid "Failed to save the diagram"
|
||||
msgstr "Nie udało się zapisać wykresu"
|
||||
|
||||
#: ../src/ld-window-main.c:859
|
||||
#: ../src/ld-window-main.c:890
|
||||
msgid "If you don't save, changes will be permanently lost."
|
||||
msgstr "Jeżeli nie zapiszesz zmian, zostaną one trwale utracone"
|
||||
msgstr "Jeżeli nie zapiszesz zmian, zostaną one trwale utracone."
|
||||
|
||||
#: ../src/ld-window-main.c:738
|
||||
#: ../src/ld-window-main.c:769
|
||||
msgid "Logdiag Diagrams (*.ldd)"
|
||||
msgstr "Wykresy logdiag (*.ldd)"
|
||||
|
||||
#: ../src/ld-window-main.c:131
|
||||
#: ../src/ld-window-main.c:144
|
||||
msgid "Open a diagram"
|
||||
msgstr "Otwórz wykres"
|
||||
|
||||
#: ../src/ld-window-main.c:759
|
||||
#: ../src/ld-window-main.c:193
|
||||
msgid "Open the manual"
|
||||
msgstr "Otworzy podręcznik"
|
||||
|
||||
#: ../src/ld-window-main.c:790
|
||||
msgid "Open..."
|
||||
msgstr "Otworzyć..."
|
||||
|
||||
#: ../src/ld-window-main.c:145
|
||||
#: ../src/ld-window-main.c:154
|
||||
msgid "Print the diagram"
|
||||
msgstr "Wydrukuje wykres"
|
||||
|
||||
#: ../src/ld-window-main.c:158
|
||||
msgid "Quit the application"
|
||||
msgstr "Zamknie aplikację"
|
||||
|
||||
#: ../src/ld-window-main.c:153
|
||||
#: ../src/ld-window-main.c:166
|
||||
msgid "Redo the last undone action"
|
||||
msgstr "Powtórzy ostatnio cofniętą akcję"
|
||||
|
||||
#: ../src/ld-window-main.c:175
|
||||
#: ../src/ld-window-main.c:188
|
||||
msgid "Reset zoom level back to the default"
|
||||
msgstr "Przywróci poziom zbliżenia na poziom wyjściowy"
|
||||
|
||||
#: ../src/ld-window-main.c:792
|
||||
#: ../src/ld-window-main.c:823
|
||||
msgid "Save As..."
|
||||
msgstr "Zapisz jako..."
|
||||
|
||||
#: ../src/ld-window-main.c:136
|
||||
#: ../src/ld-window-main.c:149
|
||||
msgid "Save _As..."
|
||||
msgstr "Zapisz _jako..."
|
||||
|
||||
#: ../src/ld-window-main.c:623
|
||||
#: ../src/ld-window-main.c:654
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Save the changes to diagram \"%s\" before closing it and creating a new one?"
|
||||
msgstr ""
|
||||
"Zapisać zmiany w wykresie \"%s\" przed jego zamknięciem i stworzeniem nowego?"
|
||||
msgid "Save the changes to diagram \"%s\" before closing it and creating a new one?"
|
||||
msgstr "Zapisać zmiany w wykresie \"%s\" przed jego zamknięciem i stworzeniem nowego?"
|
||||
|
||||
#: ../src/ld-window-main.c:755
|
||||
#: ../src/ld-window-main.c:786
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Save the changes to diagram \"%s\" before closing it and opening another one?"
|
||||
msgstr ""
|
||||
"Zapisać zmiany w wykresie \"%s\" przed jego zamknięciem i stworzeniem nowego?"
|
||||
msgid "Save the changes to diagram \"%s\" before closing it and opening another one?"
|
||||
msgstr "Zapisać zmiany w wykresie \"%s\" przed jego zamknięciem i stworzeniem nowego?"
|
||||
|
||||
#: ../src/ld-window-main.c:899
|
||||
#: ../src/ld-window-main.c:930
|
||||
#, c-format
|
||||
msgid "Save the changes to diagram \"%s\" before closing?"
|
||||
msgstr "Zapisać zmiany w wykresie \"%s\" przed jego zamknięciem?"
|
||||
|
||||
#: ../src/ld-window-main.c:134
|
||||
#: ../src/ld-window-main.c:147
|
||||
msgid "Save the current diagram"
|
||||
msgstr "Zapisz aktywny wykres"
|
||||
|
||||
#: ../src/ld-window-main.c:137
|
||||
#: ../src/ld-window-main.c:150
|
||||
msgid "Save the current diagram with another name"
|
||||
msgstr "Zapisać aktywny wykres pod inną nazwą"
|
||||
|
||||
#: ../src/ld-window-main.c:163
|
||||
#: ../src/ld-window-main.c:176
|
||||
msgid "Select _All"
|
||||
msgstr "Wybierz _wszystko"
|
||||
|
||||
#: ../src/ld-window-main.c:164
|
||||
#: ../src/ld-window-main.c:177
|
||||
msgid "Select all objects in the diagram"
|
||||
msgstr "Wybierze wszystkie obietky w wykresie"
|
||||
|
||||
#: ../src/ld-window-main.c:192
|
||||
#: ../src/ld-window-main.c:208
|
||||
msgid "Show _Grid"
|
||||
msgstr "Pokaż _Siatkę"
|
||||
msgstr "Pokaż _siatkę"
|
||||
|
||||
#: ../src/ld-window-main.c:180
|
||||
#: ../src/ld-window-main.c:196
|
||||
msgid "Show a dialog about this application"
|
||||
msgstr "Pokaże informacje o tej aplikacji"
|
||||
|
||||
#: ../src/ld-window-main.c:193
|
||||
#: ../src/ld-window-main.c:209
|
||||
msgid "Toggle displaying of the grid"
|
||||
msgstr "Przełączy pokazywanie siatki"
|
||||
|
||||
#: ../src/ld-window-main.c:190
|
||||
#: ../src/ld-window-main.c:206
|
||||
msgid "Toggle displaying of the library pane"
|
||||
msgstr "Przełączy pokazywanie panelu biblioteki"
|
||||
|
||||
#: ../src/ld-window-main.c:187
|
||||
#: ../src/ld-window-main.c:203
|
||||
msgid "Toggle displaying of the main toolbar"
|
||||
msgstr "Przełączy pokazywanie głównego panelu narzędzi"
|
||||
|
||||
#: ../src/ld-window-main.c:665
|
||||
#: ../src/ld-window-main.c:696
|
||||
msgid "Try again or save it under another name."
|
||||
msgstr "Spróbuj ponownie, bądź zapisz pod inną nazwą."
|
||||
|
||||
#: ../src/ld-window-main.c:150
|
||||
#: ../src/ld-window-main.c:163
|
||||
msgid "Undo the last action"
|
||||
msgstr "Cofnie ostatnią akcję"
|
||||
|
||||
#: ../src/ld-window-main.c:591
|
||||
#: ../src/ld-window-main.c:622
|
||||
msgid "Unsaved Diagram"
|
||||
msgstr "Niezapisany Wykres"
|
||||
msgstr "Niezapisany wykres"
|
||||
|
||||
#: ../src/ld-window-main.c:806
|
||||
#, fuzzy
|
||||
#: ../src/ld-window-main.c:837
|
||||
msgid "Untitled diagram"
|
||||
msgstr "Niezapisany Wykres"
|
||||
msgstr "Wykres bez nazwy"
|
||||
|
||||
#: ../src/ld-window-main.c:171
|
||||
#: ../src/ld-window-main.c:184
|
||||
msgid "Zoom _Out"
|
||||
msgstr "_Oddalić widok"
|
||||
|
||||
#: ../src/ld-window-main.c:169
|
||||
#: ../src/ld-window-main.c:182
|
||||
msgid "Zoom into the diagram"
|
||||
msgstr "Przybliżyć widok"
|
||||
|
||||
#: ../src/ld-window-main.c:172
|
||||
#: ../src/ld-window-main.c:185
|
||||
msgid "Zoom out of the diagram"
|
||||
msgstr "Oddalić widok"
|
||||
|
||||
|
@ -183,71 +194,79 @@ msgstr "Oddalić widok"
|
|||
msgid "[FILE...]"
|
||||
msgstr "[PLIK...]"
|
||||
|
||||
#: ../src/ld-window-main.c:179
|
||||
#: ../src/ld-window-main.c:195
|
||||
msgid "_About"
|
||||
msgstr "_O programie"
|
||||
|
||||
#: ../src/ld-window-main.c:160
|
||||
#: ../src/ld-window-main.c:173
|
||||
msgid "_Delete"
|
||||
msgstr "_Usuń"
|
||||
|
||||
#: ../src/ld-window-main.c:148
|
||||
#: ../src/ld-window-main.c:161
|
||||
msgid "_Edit"
|
||||
msgstr "_Edycja"
|
||||
|
||||
#: ../src/ld-window-main.c:126
|
||||
#: ../src/ld-window-main.c:139
|
||||
msgid "_File"
|
||||
msgstr "_Plik"
|
||||
|
||||
#: ../src/ld-window-main.c:178
|
||||
#: ../src/ld-window-main.c:191
|
||||
msgid "_Help"
|
||||
msgstr "_Pomoc"
|
||||
|
||||
#: ../src/ld-window-main.c:189
|
||||
#: ../src/ld-window-main.c:205
|
||||
msgid "_Library Pane"
|
||||
msgstr "Panel _biblioteki"
|
||||
|
||||
#: ../src/ld-window-main.c:186
|
||||
#: ../src/ld-window-main.c:202
|
||||
msgid "_Main Toolbar"
|
||||
msgstr "_Główny panel narzędzi"
|
||||
|
||||
#: ../src/ld-window-main.c:127
|
||||
#: ../src/ld-window-main.c:140
|
||||
msgid "_New"
|
||||
msgstr "_Nowy"
|
||||
|
||||
#: ../src/ld-window-main.c:174
|
||||
#: ../src/ld-window-main.c:187
|
||||
msgid "_Normal Size"
|
||||
msgstr "_Normalna Wielkość"
|
||||
msgstr "_Normalna wielkość"
|
||||
|
||||
#: ../src/ld-window-main.c:130
|
||||
#: ../src/ld-window-main.c:143
|
||||
msgid "_Open..."
|
||||
msgstr "_Otwórz..."
|
||||
|
||||
#: ../src/ld-window-main.c:144
|
||||
#: ../src/ld-window-main.c:153
|
||||
msgid "_Print..."
|
||||
msgstr "Wy_drukuj..."
|
||||
|
||||
#: ../src/ld-window-main.c:157
|
||||
msgid "_Quit"
|
||||
msgstr "_Zakończ"
|
||||
|
||||
#: ../src/ld-window-main.c:152
|
||||
#: ../src/ld-window-main.c:165
|
||||
msgid "_Redo"
|
||||
msgstr "_Powtórz"
|
||||
|
||||
#: ../src/ld-window-main.c:133
|
||||
#: ../src/ld-window-main.c:146
|
||||
msgid "_Save"
|
||||
msgstr "Z_apisz"
|
||||
|
||||
#: ../src/ld-window-main.c:149
|
||||
#: ../src/ld-window-main.c:162
|
||||
msgid "_Undo"
|
||||
msgstr "_Wróć"
|
||||
|
||||
#: ../src/ld-window-main.c:167
|
||||
#: ../src/ld-window-main.c:192
|
||||
msgid "_User Guide"
|
||||
msgstr "_Przewodnik użytkownika"
|
||||
|
||||
#: ../src/ld-window-main.c:180
|
||||
msgid "_View"
|
||||
msgstr "_Widok"
|
||||
|
||||
#: ../src/ld-window-main.c:168
|
||||
#: ../src/ld-window-main.c:181
|
||||
msgid "_Zoom In"
|
||||
msgstr "_Przybliżyć"
|
||||
|
||||
#: ../src/ld-window-main.c:983
|
||||
#: ../src/ld-window-main.c:1163
|
||||
msgid "translator-credits"
|
||||
msgstr "Robert Svoboda <ravath@gmail.com>"
|
||||
|
||||
|
|
148
po/sk.po
148
po/sk.po
|
@ -7,17 +7,17 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: logdiag\n"
|
||||
"Report-Msgid-Bugs-To: https://git.janouch.name/p/logdiag/issues\n"
|
||||
"POT-Creation-Date: 2021-10-22 22:16+0200\n"
|
||||
"PO-Revision-Date: 2018-06-25 04:05+0200\n"
|
||||
"POT-Creation-Date: 2021-10-28 20:07+0200\n"
|
||||
"PO-Revision-Date: 2021-10-28 20:23+0200\n"
|
||||
"Last-Translator: Přemysl Eric Janouch <p@janouch.name>\n"
|
||||
"Language-Team: Slovak <sk@li.org>\n"
|
||||
"Language: sk\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.0.8\n"
|
||||
"X-Generator: Poedit 3.0\n"
|
||||
|
||||
#: ../src/ld-window-main.c:937
|
||||
#: ../src/ld-window-main.c:968
|
||||
#, c-format
|
||||
msgid "%d%%"
|
||||
msgstr "%d %%"
|
||||
|
@ -26,19 +26,19 @@ msgstr "%d %%"
|
|||
msgid "- Schematic editor"
|
||||
msgstr "- Editor schém"
|
||||
|
||||
#: ../src/ld-window-main.c:861
|
||||
#: ../src/ld-window-main.c:892
|
||||
msgid "Close _without Saving"
|
||||
msgstr "Zatvoriť _bez uloženia"
|
||||
|
||||
#: ../src/ld-window-main.c:128
|
||||
#: ../src/ld-window-main.c:141
|
||||
msgid "Create a new diagram"
|
||||
msgstr "Vytvorí nový diagram"
|
||||
|
||||
#: ../src/ld-window-main.c:161
|
||||
#: ../src/ld-window-main.c:174
|
||||
msgid "Delete the contents of the selection"
|
||||
msgstr "Odstráni obsah výberu"
|
||||
|
||||
#: ../src/ld-window-main.c:354
|
||||
#: ../src/ld-window-main.c:370
|
||||
msgid "Drag symbols from the library pane to add them to the diagram."
|
||||
msgstr "Pre pridanie symbolov do diagramu ich pretiahnite z panela knižnice."
|
||||
|
||||
|
@ -46,135 +46,147 @@ msgstr "Pre pridanie symbolov do diagramu ich pretiahnite z panela knižnice."
|
|||
msgid "Empty"
|
||||
msgstr "Prázdne"
|
||||
|
||||
#: ../src/ld-window-main.c:707
|
||||
#: ../src/ld-window-main.c:1042
|
||||
msgid "Error"
|
||||
msgstr "Chyba"
|
||||
|
||||
#: ../src/ld-window-main.c:738
|
||||
#, c-format
|
||||
msgid "Failed to open file `%s': Invalid contents."
|
||||
msgstr "Nepodarilo sa otvoriť súbor \"%s\": Neplatný obsah."
|
||||
|
||||
#: ../src/ld-window-main.c:698
|
||||
#: ../src/ld-window-main.c:729
|
||||
msgid "Failed to open the file"
|
||||
msgstr "Nepodarilo sa otvoriť súbor"
|
||||
|
||||
#: ../src/ld-window-main.c:662
|
||||
#: ../src/ld-window-main.c:1149
|
||||
msgid "Failed to open the user guide"
|
||||
msgstr "Nepodarilo sa otvoriť príručku používateľa"
|
||||
|
||||
#: ../src/ld-window-main.c:693
|
||||
msgid "Failed to save the diagram"
|
||||
msgstr "Nepodarilo sa uložiť diagram"
|
||||
|
||||
#: ../src/ld-window-main.c:859
|
||||
#: ../src/ld-window-main.c:890
|
||||
msgid "If you don't save, changes will be permanently lost."
|
||||
msgstr "Ak ich neuložíte, budú zmeny navždy stratené."
|
||||
|
||||
#: ../src/ld-window-main.c:738
|
||||
#: ../src/ld-window-main.c:769
|
||||
msgid "Logdiag Diagrams (*.ldd)"
|
||||
msgstr "Diagramy logdiag (*.ldd)"
|
||||
|
||||
#: ../src/ld-window-main.c:131
|
||||
#: ../src/ld-window-main.c:144
|
||||
msgid "Open a diagram"
|
||||
msgstr "Otvorí diagram"
|
||||
|
||||
#: ../src/ld-window-main.c:759
|
||||
#: ../src/ld-window-main.c:193
|
||||
msgid "Open the manual"
|
||||
msgstr "Otvorí manuál"
|
||||
|
||||
#: ../src/ld-window-main.c:790
|
||||
msgid "Open..."
|
||||
msgstr "Otvoriť..."
|
||||
|
||||
#: ../src/ld-window-main.c:145
|
||||
#: ../src/ld-window-main.c:154
|
||||
msgid "Print the diagram"
|
||||
msgstr "Vytlačí diagram"
|
||||
|
||||
#: ../src/ld-window-main.c:158
|
||||
msgid "Quit the application"
|
||||
msgstr "Ukončí aplikáciu"
|
||||
|
||||
#: ../src/ld-window-main.c:153
|
||||
#: ../src/ld-window-main.c:166
|
||||
msgid "Redo the last undone action"
|
||||
msgstr "Vykoná naposledy vrátenú akciu"
|
||||
|
||||
#: ../src/ld-window-main.c:175
|
||||
#: ../src/ld-window-main.c:188
|
||||
msgid "Reset zoom level back to the default"
|
||||
msgstr "Vráti priblíženie na východiskovú hodnotu"
|
||||
|
||||
#: ../src/ld-window-main.c:792
|
||||
#: ../src/ld-window-main.c:823
|
||||
msgid "Save As..."
|
||||
msgstr "Uložiť ako..."
|
||||
|
||||
#: ../src/ld-window-main.c:136
|
||||
#: ../src/ld-window-main.c:149
|
||||
msgid "Save _As..."
|
||||
msgstr "Uložiť _ako..."
|
||||
|
||||
#: ../src/ld-window-main.c:623
|
||||
#: ../src/ld-window-main.c:654
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Save the changes to diagram \"%s\" before closing it and creating a new one?"
|
||||
msgstr ""
|
||||
"Uložiť zmeny v diagrame \"%s\" pred jeho zatvorením a vytvorením nového?"
|
||||
msgid "Save the changes to diagram \"%s\" before closing it and creating a new one?"
|
||||
msgstr "Uložiť zmeny v diagrame \"%s\" pred jeho zatvorením a vytvorením nového?"
|
||||
|
||||
#: ../src/ld-window-main.c:755
|
||||
#: ../src/ld-window-main.c:786
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Save the changes to diagram \"%s\" before closing it and opening another one?"
|
||||
msgid "Save the changes to diagram \"%s\" before closing it and opening another one?"
|
||||
msgstr "Uložiť zmeny v diagrame \"%s\" pred jeho zatvorením a otvorením iného?"
|
||||
|
||||
#: ../src/ld-window-main.c:899
|
||||
#: ../src/ld-window-main.c:930
|
||||
#, c-format
|
||||
msgid "Save the changes to diagram \"%s\" before closing?"
|
||||
msgstr "Uložiť zmeny v diagrame \"%s\" pred jeho zatvorením?"
|
||||
|
||||
#: ../src/ld-window-main.c:134
|
||||
#: ../src/ld-window-main.c:147
|
||||
msgid "Save the current diagram"
|
||||
msgstr "Uloží aktuálny diagram"
|
||||
|
||||
#: ../src/ld-window-main.c:137
|
||||
#: ../src/ld-window-main.c:150
|
||||
msgid "Save the current diagram with another name"
|
||||
msgstr "Uloží aktuálny diagram pod iným menom"
|
||||
|
||||
#: ../src/ld-window-main.c:163
|
||||
#: ../src/ld-window-main.c:176
|
||||
msgid "Select _All"
|
||||
msgstr "Vybrať _všetko"
|
||||
|
||||
#: ../src/ld-window-main.c:164
|
||||
#: ../src/ld-window-main.c:177
|
||||
msgid "Select all objects in the diagram"
|
||||
msgstr "Vyberie všetky objekty v diagrame"
|
||||
|
||||
#: ../src/ld-window-main.c:192
|
||||
#: ../src/ld-window-main.c:208
|
||||
msgid "Show _Grid"
|
||||
msgstr "Zobraziť _mriežku"
|
||||
|
||||
#: ../src/ld-window-main.c:180
|
||||
#: ../src/ld-window-main.c:196
|
||||
msgid "Show a dialog about this application"
|
||||
msgstr "Zobrazí dialóg o tejto aplikácii"
|
||||
|
||||
#: ../src/ld-window-main.c:193
|
||||
#: ../src/ld-window-main.c:209
|
||||
msgid "Toggle displaying of the grid"
|
||||
msgstr "Prepne zobrazovanie mriežky"
|
||||
|
||||
#: ../src/ld-window-main.c:190
|
||||
#: ../src/ld-window-main.c:206
|
||||
msgid "Toggle displaying of the library pane"
|
||||
msgstr "Prepne zobrazovanie panelu knižnice"
|
||||
|
||||
#: ../src/ld-window-main.c:187
|
||||
#: ../src/ld-window-main.c:203
|
||||
msgid "Toggle displaying of the main toolbar"
|
||||
msgstr "Prepne zobrazovanie hlavného panelu nástrojov"
|
||||
|
||||
#: ../src/ld-window-main.c:665
|
||||
#: ../src/ld-window-main.c:696
|
||||
msgid "Try again or save it under another name."
|
||||
msgstr "Skúste to znova alebo ho uložte pod iným názvom."
|
||||
|
||||
#: ../src/ld-window-main.c:150
|
||||
#: ../src/ld-window-main.c:163
|
||||
msgid "Undo the last action"
|
||||
msgstr "Vráti poslednú akciu"
|
||||
|
||||
#: ../src/ld-window-main.c:591
|
||||
#: ../src/ld-window-main.c:622
|
||||
msgid "Unsaved Diagram"
|
||||
msgstr "Neuložený diagram"
|
||||
|
||||
#: ../src/ld-window-main.c:806
|
||||
#, fuzzy
|
||||
#: ../src/ld-window-main.c:837
|
||||
msgid "Untitled diagram"
|
||||
msgstr "Neuložený diagram"
|
||||
msgstr "Nepomenovaný diagram"
|
||||
|
||||
#: ../src/ld-window-main.c:171
|
||||
#: ../src/ld-window-main.c:184
|
||||
msgid "Zoom _Out"
|
||||
msgstr "_Oddialiť"
|
||||
|
||||
#: ../src/ld-window-main.c:169
|
||||
#: ../src/ld-window-main.c:182
|
||||
msgid "Zoom into the diagram"
|
||||
msgstr "Priblíži diagram"
|
||||
|
||||
#: ../src/ld-window-main.c:172
|
||||
#: ../src/ld-window-main.c:185
|
||||
msgid "Zoom out of the diagram"
|
||||
msgstr "Oddiali diagram"
|
||||
|
||||
|
@ -182,71 +194,79 @@ msgstr "Oddiali diagram"
|
|||
msgid "[FILE...]"
|
||||
msgstr "[SÚBOR...]"
|
||||
|
||||
#: ../src/ld-window-main.c:179
|
||||
#: ../src/ld-window-main.c:195
|
||||
msgid "_About"
|
||||
msgstr "_O programe"
|
||||
|
||||
#: ../src/ld-window-main.c:160
|
||||
#: ../src/ld-window-main.c:173
|
||||
msgid "_Delete"
|
||||
msgstr "_Zmazať"
|
||||
|
||||
#: ../src/ld-window-main.c:148
|
||||
#: ../src/ld-window-main.c:161
|
||||
msgid "_Edit"
|
||||
msgstr "_Úpravy"
|
||||
|
||||
#: ../src/ld-window-main.c:126
|
||||
#: ../src/ld-window-main.c:139
|
||||
msgid "_File"
|
||||
msgstr "_Súbor"
|
||||
|
||||
#: ../src/ld-window-main.c:178
|
||||
#: ../src/ld-window-main.c:191
|
||||
msgid "_Help"
|
||||
msgstr "_Nápoveda"
|
||||
|
||||
#: ../src/ld-window-main.c:189
|
||||
#: ../src/ld-window-main.c:205
|
||||
msgid "_Library Pane"
|
||||
msgstr "Panel _knižnice"
|
||||
|
||||
#: ../src/ld-window-main.c:186
|
||||
#: ../src/ld-window-main.c:202
|
||||
msgid "_Main Toolbar"
|
||||
msgstr "_Hlavný panel nástrojov"
|
||||
|
||||
#: ../src/ld-window-main.c:127
|
||||
#: ../src/ld-window-main.c:140
|
||||
msgid "_New"
|
||||
msgstr "_Nový"
|
||||
|
||||
#: ../src/ld-window-main.c:174
|
||||
#: ../src/ld-window-main.c:187
|
||||
msgid "_Normal Size"
|
||||
msgstr "_Normálna veľkosť"
|
||||
|
||||
#: ../src/ld-window-main.c:130
|
||||
#: ../src/ld-window-main.c:143
|
||||
msgid "_Open..."
|
||||
msgstr "_Otvoriť..."
|
||||
|
||||
#: ../src/ld-window-main.c:144
|
||||
#: ../src/ld-window-main.c:153
|
||||
msgid "_Print..."
|
||||
msgstr "_Tlačiť..."
|
||||
|
||||
#: ../src/ld-window-main.c:157
|
||||
msgid "_Quit"
|
||||
msgstr "U_končiť"
|
||||
|
||||
#: ../src/ld-window-main.c:152
|
||||
#: ../src/ld-window-main.c:165
|
||||
msgid "_Redo"
|
||||
msgstr "Z_novu"
|
||||
|
||||
#: ../src/ld-window-main.c:133
|
||||
#: ../src/ld-window-main.c:146
|
||||
msgid "_Save"
|
||||
msgstr "_Uložiť"
|
||||
|
||||
#: ../src/ld-window-main.c:149
|
||||
#: ../src/ld-window-main.c:162
|
||||
msgid "_Undo"
|
||||
msgstr "_Späť"
|
||||
|
||||
#: ../src/ld-window-main.c:167
|
||||
#: ../src/ld-window-main.c:192
|
||||
msgid "_User Guide"
|
||||
msgstr "_Príručka používateľa"
|
||||
|
||||
#: ../src/ld-window-main.c:180
|
||||
msgid "_View"
|
||||
msgstr "_Zobrazenie"
|
||||
|
||||
#: ../src/ld-window-main.c:168
|
||||
#: ../src/ld-window-main.c:181
|
||||
msgid "_Zoom In"
|
||||
msgstr "_Priblížiť"
|
||||
|
||||
#: ../src/ld-window-main.c:983
|
||||
#: ../src/ld-window-main.c:1163
|
||||
msgid "translator-credits"
|
||||
msgstr "Miroslav Rigler <itsgoingd@luzer.sk>"
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@ local render = function (cr)
|
|||
cr:curve_to (3, 0, 2, 2, 0, 2)
|
||||
cr:line_to (-2, 2)
|
||||
cr:curve_to (-1, 1, -1, -1, -2, -2)
|
||||
cr:close_path ()
|
||||
cr:stroke ()
|
||||
|
||||
-- The terminals
|
||||
|
|
|
@ -21,8 +21,7 @@ local render = function (cr)
|
|||
cr:line_to (-1, 0)
|
||||
|
||||
-- The terminals
|
||||
cr:move_to (-2, 0)
|
||||
cr:line_to (-1, 0)
|
||||
cr:line_to (-2, 0)
|
||||
|
||||
cr:move_to (1, 0)
|
||||
cr:line_to (2, 0)
|
||||
|
|
|
@ -48,7 +48,7 @@ local render = function (cr)
|
|||
cr:move_to (-1, -1)
|
||||
cr:line_to (1, 0)
|
||||
cr:line_to (-1, 1)
|
||||
cr:line_to (-1, -1)
|
||||
cr:close_path ()
|
||||
|
||||
-- The vertical line
|
||||
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:close_path ()
|
||||
|
||||
-- The terminals
|
||||
cr:move_to (-2, 0)
|
||||
|
|
|
@ -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>
|
||||
<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">
|
||||
<default>true</default>
|
||||
<summary>Whether to show the main toolbar</summary>
|
||||
|
@ -14,4 +14,3 @@
|
|||
</key>
|
||||
</schema>
|
||||
</schemalist>
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
|
||||
<assemblyIdentity name="logdiag" version="1.0.0.0" type="win32" />
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Microsoft.Windows.Common-Controls"
|
||||
version="6.0.0.0" type="win32" processorArchitecture="*"
|
||||
publicKeyToken="6595b64144ccf1df" language="*" />
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
</assembly>
|
|
@ -1 +1,3 @@
|
|||
#include <windows.h>
|
||||
LD_ICON ICON "logdiag.ico"
|
||||
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "logdiag.manifest"
|
||||
|
|
|
@ -1,18 +1,16 @@
|
|||
<ui>
|
||||
<menubar name="MenuBar">
|
||||
<menu name="FileMenu" action="FileMenu">
|
||||
<menu action="FileMenu">
|
||||
<menuitem action="New" />
|
||||
<menuitem action="Open" />
|
||||
<menuitem action="Save" />
|
||||
<menuitem action="SaveAs" />
|
||||
<separator />
|
||||
<!--
|
||||
<menuitem action="Export" />
|
||||
<menuitem action="Print" />
|
||||
<separator />
|
||||
-->
|
||||
<menuitem action="Quit" />
|
||||
</menu>
|
||||
<menu name="EditMenu" action="EditMenu">
|
||||
<menu action="EditMenu">
|
||||
<menuitem action="Undo" />
|
||||
<menuitem action="Redo" />
|
||||
<separator />
|
||||
|
@ -25,7 +23,7 @@
|
|||
<separator />
|
||||
<menuitem action="SelectAll" />
|
||||
</menu>
|
||||
<menu name="ViewMenu" action="ViewMenu">
|
||||
<menu action="ViewMenu">
|
||||
<menuitem action="MainToolbar" />
|
||||
<menuitem action="LibraryPane" />
|
||||
<separator />
|
||||
|
@ -35,7 +33,8 @@
|
|||
<menuitem action="ZoomOut" />
|
||||
<menuitem action="NormalSize" />
|
||||
</menu>
|
||||
<menu name="HelpMenu" action="HelpMenu">
|
||||
<menu action="HelpMenu">
|
||||
<menuitem action="UserGuide" />
|
||||
<menuitem action="About" />
|
||||
</menu>
|
||||
</menubar>
|
|
@ -13,6 +13,11 @@
|
|||
|
||||
#include "ld-window-main.h"
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
#include <gdk/gdkwin32.h>
|
||||
#include <shellapi.h>
|
||||
#endif
|
||||
|
||||
|
||||
struct _LdWindowMainPrivate
|
||||
{
|
||||
|
@ -51,6 +56,8 @@ struct _LdWindowMainPrivate
|
|||
|
||||
static void ld_window_main_finalize (GObject *gobject);
|
||||
static void load_library_directories (LdLibrary *library);
|
||||
static void display_and_free_error (LdWindowMain *self, const gchar *title,
|
||||
GError *error);
|
||||
|
||||
static void on_ui_proxy_connected (GtkUIManager *ui, GtkAction *action,
|
||||
GtkWidget *proxy, LdWindowMain *window);
|
||||
|
@ -99,8 +106,14 @@ static void on_action_new (GtkAction *action, LdWindowMain *self);
|
|||
static void on_action_open (GtkAction *action, LdWindowMain *self);
|
||||
static void on_action_save (GtkAction *action, LdWindowMain *self);
|
||||
static void on_action_save_as (GtkAction *action, LdWindowMain *self);
|
||||
static void on_action_print (GtkAction *action, LdWindowMain *self);
|
||||
static void on_action_print_draw_page (GtkPrintOperation *operation,
|
||||
GtkPrintContext *context, int page_nr, LdWindowMain *self);
|
||||
static void on_action_quit (GtkAction *action, LdWindowMain *self);
|
||||
static void on_action_user_guide (GtkAction *action, LdWindowMain *self);
|
||||
static void on_action_about (GtkAction *action, LdWindowMain *self);
|
||||
static gboolean on_action_about_activate_link (GtkAboutDialog *dialog,
|
||||
gchar *uri, LdWindowMain *self);
|
||||
|
||||
static void on_action_undo (GtkAction *action, LdWindowMain *self);
|
||||
static void on_action_redo (GtkAction *action, LdWindowMain *self);
|
||||
|
@ -136,11 +149,11 @@ static GtkActionEntry wm_action_entries[] =
|
|||
{"SaveAs", GTK_STOCK_SAVE_AS, N_("Save _As..."), "<Shift><Ctrl>S",
|
||||
N_("Save the current diagram with another name"),
|
||||
G_CALLBACK (on_action_save_as)},
|
||||
/*
|
||||
* {"Export", NULL, N_("_Export"), NULL,
|
||||
* N_("Export the diagram"),
|
||||
* NULL},
|
||||
*/
|
||||
|
||||
{"Print", GTK_STOCK_PRINT, N_("_Print..."), "<Ctrl>P",
|
||||
N_("Print the diagram"),
|
||||
G_CALLBACK (on_action_print)},
|
||||
|
||||
{"Quit", GTK_STOCK_QUIT, N_("_Quit"), "<Ctrl>Q",
|
||||
N_("Quit the application"),
|
||||
G_CALLBACK (on_action_quit)},
|
||||
|
@ -176,9 +189,12 @@ static GtkActionEntry wm_action_entries[] =
|
|||
G_CALLBACK (on_action_normal_size)},
|
||||
|
||||
{"HelpMenu", NULL, N_("_Help"), NULL, NULL, NULL},
|
||||
{"UserGuide", GTK_STOCK_HELP, N_("_User Guide"), NULL,
|
||||
N_("Open the manual"),
|
||||
G_CALLBACK (on_action_user_guide)},
|
||||
{"About", GTK_STOCK_ABOUT, N_("_About"), NULL,
|
||||
N_("Show a dialog about this application"),
|
||||
G_CALLBACK (on_action_about)}
|
||||
G_CALLBACK (on_action_about)},
|
||||
};
|
||||
|
||||
static GtkToggleActionEntry wm_toggle_action_entries[] =
|
||||
|
@ -189,7 +205,7 @@ static GtkToggleActionEntry wm_toggle_action_entries[] =
|
|||
{"LibraryPane", NULL, N_("_Library Pane"), NULL,
|
||||
N_("Toggle displaying of the library pane"),
|
||||
G_CALLBACK (on_action_library_pane), TRUE},
|
||||
{"ShowGrid", NULL, N_("Show _Grid"), NULL,
|
||||
{"ShowGrid", NULL, N_("Show _Grid"), "numbersign",
|
||||
N_("Toggle displaying of the grid"),
|
||||
G_CALLBACK (on_action_grid), TRUE}
|
||||
};
|
||||
|
@ -215,7 +231,7 @@ ld_window_main_new (const gchar *filename)
|
|||
return self;
|
||||
}
|
||||
|
||||
G_DEFINE_TYPE (LdWindowMain, ld_window_main, GTK_TYPE_WINDOW);
|
||||
G_DEFINE_TYPE (LdWindowMain, ld_window_main, GTK_TYPE_WINDOW)
|
||||
|
||||
static void
|
||||
ld_window_main_class_init (LdWindowMainClass *klass)
|
||||
|
@ -258,8 +274,8 @@ ld_window_main_init (LdWindowMain *self)
|
|||
priv->action_group, 0);
|
||||
|
||||
error = NULL;
|
||||
gtk_ui_manager_add_ui_from_file
|
||||
(priv->ui_manager, PROJECT_SHARE_DIR "gui/window-main.ui", &error);
|
||||
gtk_ui_manager_add_ui_from_resource
|
||||
(priv->ui_manager, "/logdiag/logdiag.ui", &error);
|
||||
if (error)
|
||||
{
|
||||
g_message ("building UI failed: %s", error->message);
|
||||
|
@ -373,7 +389,7 @@ ld_window_main_init (LdWindowMain *self)
|
|||
gtk_widget_show_all (GTK_WIDGET (self));
|
||||
|
||||
/* 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",
|
||||
gtk_action_group_get_action (priv->action_group,
|
||||
|
@ -435,6 +451,21 @@ load_library_directories (LdLibrary *library)
|
|||
g_free (user_dir);
|
||||
}
|
||||
|
||||
static void
|
||||
display_and_free_error (LdWindowMain *self, const gchar *title, GError *error)
|
||||
{
|
||||
GtkWidget *message_dialog;
|
||||
|
||||
message_dialog = gtk_message_dialog_new (GTK_WINDOW (self),
|
||||
GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "%s", title);
|
||||
gtk_message_dialog_format_secondary_text
|
||||
(GTK_MESSAGE_DIALOG (message_dialog), "%s", error->message);
|
||||
g_error_free (error);
|
||||
|
||||
gtk_dialog_run (GTK_DIALOG (message_dialog));
|
||||
gtk_widget_destroy (message_dialog);
|
||||
}
|
||||
|
||||
/*
|
||||
* on_delete:
|
||||
*
|
||||
|
@ -587,8 +618,8 @@ diagram_get_name (LdWindowMain *self)
|
|||
|
||||
if (self->priv->filename)
|
||||
return g_filename_display_basename (self->priv->filename);
|
||||
else
|
||||
return g_strdup (_("Unsaved Diagram"));
|
||||
|
||||
return g_strdup (_("Unsaved Diagram"));
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -667,12 +698,10 @@ diagram_save (LdWindowMain *self, GtkWindow *dialog_parent,
|
|||
gtk_widget_destroy (message_dialog);
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
ld_diagram_set_modified (self->priv->diagram, FALSE);
|
||||
update_title (self);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
ld_diagram_set_modified (self->priv->diagram, FALSE);
|
||||
update_title (self);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -683,9 +712,10 @@ diagram_save (LdWindowMain *self, GtkWindow *dialog_parent,
|
|||
static gboolean
|
||||
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);
|
||||
if (error)
|
||||
{
|
||||
|
@ -719,8 +749,17 @@ diagram_open (LdWindowMain *self, const gchar *filename)
|
|||
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);
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -966,6 +1005,89 @@ on_action_save_as (GtkAction *action, LdWindowMain *self)
|
|||
diagram_show_save_as_dialog (self);
|
||||
}
|
||||
|
||||
static void
|
||||
on_action_print (GtkAction *action, LdWindowMain *self)
|
||||
{
|
||||
static GtkPrintSettings *settings = NULL;
|
||||
GError *error = NULL;
|
||||
GtkPrintOperation *print;
|
||||
GtkPrintOperationResult res;
|
||||
gchar *name;
|
||||
|
||||
print = gtk_print_operation_new ();
|
||||
gtk_print_operation_set_n_pages (print, 1);
|
||||
gtk_print_operation_set_embed_page_setup (print, TRUE);
|
||||
gtk_print_operation_set_unit (print, GTK_UNIT_MM);
|
||||
|
||||
name = diagram_get_name (self);
|
||||
gtk_print_operation_set_job_name (print, name);
|
||||
g_free (name);
|
||||
|
||||
if (settings != NULL)
|
||||
gtk_print_operation_set_print_settings (print, settings);
|
||||
g_signal_connect (print, "draw-page",
|
||||
G_CALLBACK (on_action_print_draw_page), self);
|
||||
|
||||
/* On Windows, it is not possible to get a print preview from the system
|
||||
* print dialog. But in Windows XP previews do not work at all--unreadable
|
||||
* EMFs come out. Windows 10 errors out with "A sharing violation occurred
|
||||
* while accessing" the temporary EMF file on our first run of
|
||||
* GtkPrintOperation, and following that it opens the previews up in
|
||||
* fucking Paint, so there is no point in trying. It lacks a stage
|
||||
* or controls for setting up page parameters anyway.
|
||||
*/
|
||||
res = gtk_print_operation_run (print,
|
||||
GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG,
|
||||
GTK_WINDOW (self), &error);
|
||||
if (res == GTK_PRINT_OPERATION_RESULT_APPLY)
|
||||
{
|
||||
if (settings != NULL)
|
||||
g_object_unref (settings);
|
||||
settings
|
||||
= g_object_ref (gtk_print_operation_get_print_settings (print));
|
||||
}
|
||||
if (error)
|
||||
display_and_free_error (self, _("Error"), error);
|
||||
|
||||
g_object_unref (print);
|
||||
}
|
||||
|
||||
static void
|
||||
on_action_print_draw_page (GtkPrintOperation *operation,
|
||||
GtkPrintContext *context, int page_nr, LdWindowMain *self)
|
||||
{
|
||||
cairo_t *cr;
|
||||
LdDiagramView *view;
|
||||
gdouble area_width_mm, area_height_mm;
|
||||
gdouble diagram_width_mm, diagram_height_mm;
|
||||
gdouble diagram_to_export_units, scale, width_fit, height_fit;
|
||||
LdRectangle bounds;
|
||||
|
||||
cr = gtk_print_context_get_cairo_context (context);
|
||||
view = self->priv->view;
|
||||
|
||||
area_width_mm = gtk_print_context_get_width (context);
|
||||
area_height_mm = gtk_print_context_get_height (context);
|
||||
diagram_to_export_units = ld_diagram_view_get_export_bounds (view, &bounds);
|
||||
|
||||
/* Scale for the view's constant, measured in milimetres. */
|
||||
scale = 1 / diagram_to_export_units * LD_DIAGRAM_VIEW_BASE_UNIT_LENGTH;
|
||||
diagram_width_mm = bounds.width * scale;
|
||||
diagram_height_mm = bounds.height * scale;
|
||||
|
||||
/* Scale to fit the paper, taking care to not divide by zero. */
|
||||
width_fit = (area_width_mm < diagram_width_mm)
|
||||
? area_width_mm / diagram_width_mm : 1;
|
||||
height_fit = (area_height_mm < diagram_height_mm)
|
||||
? area_height_mm / diagram_height_mm : 1;
|
||||
|
||||
scale *= MIN (width_fit, height_fit);
|
||||
|
||||
cairo_scale (cr, scale, scale);
|
||||
cairo_translate (cr, -bounds.x, -bounds.y);
|
||||
ld_diagram_view_export (view, cr, &bounds);
|
||||
}
|
||||
|
||||
static void
|
||||
on_action_quit (GtkAction *action, LdWindowMain *self)
|
||||
{
|
||||
|
@ -973,17 +1095,123 @@ on_action_quit (GtkAction *action, LdWindowMain *self)
|
|||
gtk_widget_destroy (GTK_WIDGET (self));
|
||||
}
|
||||
|
||||
static GFile *
|
||||
user_guide_path (const gchar *language)
|
||||
{
|
||||
gchar *filename, *path;
|
||||
GFile *file;
|
||||
|
||||
filename = g_strdup_printf ("user-guide-%s.html", language);
|
||||
path = g_build_filename (PROJECT_DOC_DIR, "user-guide", filename, NULL);
|
||||
g_free (filename);
|
||||
file = g_file_new_for_path (path);
|
||||
g_free (path);
|
||||
return file;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
open_file (GFile *file, GdkScreen *screen, GError **error)
|
||||
{
|
||||
GdkDisplay *display;
|
||||
GAppInfo *app_info;
|
||||
GdkAppLaunchContext *context;
|
||||
GList link;
|
||||
gboolean success;
|
||||
|
||||
/* GLib 2.36.1 prevents us from using gtk_show_uri() on Windows XP. */
|
||||
if (!(app_info = g_file_query_default_handler (file, NULL, error)))
|
||||
return FALSE;
|
||||
|
||||
link.next = link.prev = NULL;
|
||||
link.data = file;
|
||||
|
||||
display = gdk_screen_get_display (screen);
|
||||
context = gdk_display_get_app_launch_context (display);
|
||||
gdk_app_launch_context_set_screen (context, screen);
|
||||
success = g_app_info_launch (app_info,
|
||||
&link, G_APP_LAUNCH_CONTEXT (context), error);
|
||||
g_object_unref (context);
|
||||
return success;
|
||||
}
|
||||
|
||||
static void
|
||||
on_action_user_guide (GtkAction *action, LdWindowMain *self)
|
||||
{
|
||||
const gchar *const *iter;
|
||||
GFile *file;
|
||||
GError *error = NULL;
|
||||
|
||||
/* Look for a usable language variant, or fall back to the lingua franca. */
|
||||
for (iter = g_get_language_names (); *iter; iter++)
|
||||
{
|
||||
if (g_file_query_exists ((file = user_guide_path (*iter)), NULL))
|
||||
break;
|
||||
g_object_unref (file);
|
||||
}
|
||||
if (!*iter)
|
||||
file = user_guide_path ("en");
|
||||
|
||||
if (!open_file (file, gtk_window_get_screen (GTK_WINDOW (self)), &error))
|
||||
{
|
||||
display_and_free_error (self,
|
||||
_("Failed to open the user guide"), error);
|
||||
}
|
||||
g_object_unref (file);
|
||||
}
|
||||
|
||||
static void
|
||||
on_action_about (GtkAction *action, LdWindowMain *self)
|
||||
{
|
||||
gtk_show_about_dialog (GTK_WINDOW (self),
|
||||
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,
|
||||
"program-name", PROJECT_NAME,
|
||||
"logo-icon-name", PROJECT_NAME,
|
||||
"version", PROJECT_VERSION,
|
||||
"translator-credits", _("translator-credits"),
|
||||
"copyright", "Copyright 2010 - 2021 Přemysl Eric Janouch",
|
||||
"license", g_bytes_get_data (license, NULL),
|
||||
"website", PROJECT_URL,
|
||||
NULL);
|
||||
|
||||
g_bytes_unref (license);
|
||||
g_signal_connect (about_dialog, "activate-link",
|
||||
G_CALLBACK (on_action_about_activate_link), self);
|
||||
|
||||
gtk_window_set_transient_for (GTK_WINDOW (about_dialog), GTK_WINDOW (self));
|
||||
gtk_window_set_modal (GTK_WINDOW (about_dialog), TRUE);
|
||||
gtk_window_set_destroy_with_parent (GTK_WINDOW (about_dialog), TRUE);
|
||||
gtk_dialog_run (GTK_DIALOG (about_dialog));
|
||||
gtk_widget_destroy (about_dialog);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
on_action_about_activate_link (GtkAboutDialog *dialog, gchar *uri,
|
||||
LdWindowMain *self)
|
||||
{
|
||||
#ifdef G_OS_WIN32
|
||||
GdkWindow *window;
|
||||
|
||||
window = gtk_widget_get_window (GTK_WIDGET (self));
|
||||
|
||||
/* gtk_show_uri() on Windows XP fails, due to trying to establish
|
||||
* an SSL connection, so let's first try to not do that on Windows.
|
||||
* `cmd.exe /c start "" ...` would pop up a command line window,
|
||||
* so use SHELL32.DLL directly. rundll does not cover this.
|
||||
* There doesn't seem to be anything better directly in GIO/GLib.
|
||||
*
|
||||
* When we fail here, we fall back to normal processing.
|
||||
*/
|
||||
if ((INT_PTR) ShellExecute (gdk_win32_window_get_handle (window),
|
||||
"open", uri, NULL, NULL, SW_SHOWNORMAL) > 32)
|
||||
return TRUE;
|
||||
#endif /* G_OS_WIN32 */
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -15,16 +15,16 @@ G_BEGIN_DECLS
|
|||
|
||||
|
||||
#define LD_TYPE_WINDOW_MAIN (ld_window_main_get_type ())
|
||||
#define LD_WINDOW_MAIN(obj) (G_TYPE_CHECK_INSTANCE_CAST \
|
||||
((obj), LD_TYPE_WINDOW_MAIN, LdWindowMain))
|
||||
#define LD_WINDOW_MAIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST \
|
||||
((klass), LD_TYPE_WINDOW_MAIN, LdWindowMainClass))
|
||||
#define LD_IS_WINDOW_MAIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE \
|
||||
((obj), LD_TYPE_WINDOW_MAIN))
|
||||
#define LD_IS_WINDOW_MAIN_CLASS(klass) (G_TYPE_CHECK_INSTANCE_TYPE \
|
||||
((klass), LD_TYPE_WINDOW_MAIN))
|
||||
#define LD_WINDOW_MAIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS \
|
||||
((obj), LD_WINDOW_MAIN, LdWindowMainClass))
|
||||
#define LD_WINDOW_MAIN(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST ((obj), LD_TYPE_WINDOW_MAIN, LdWindowMain))
|
||||
#define LD_WINDOW_MAIN_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST ((klass), LD_TYPE_WINDOW_MAIN, LdWindowMainClass))
|
||||
#define LD_IS_WINDOW_MAIN(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), LD_TYPE_WINDOW_MAIN))
|
||||
#define LD_IS_WINDOW_MAIN_CLASS(klass) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((klass), LD_TYPE_WINDOW_MAIN))
|
||||
#define LD_WINDOW_MAIN_GET_CLASS(obj) \
|
||||
(G_TYPE_INSTANCE_GET_CLASS ((obj), LD_WINDOW_MAIN, LdWindowMainClass))
|
||||
|
||||
typedef struct _LdWindowMain LdWindowMain;
|
||||
typedef struct _LdWindowMainPrivate LdWindowMainPrivate;
|
||||
|
@ -53,4 +53,3 @@ GtkWidget *ld_window_main_new (const gchar *filename);
|
|||
G_END_DECLS
|
||||
|
||||
#endif /* ! __LD_WINDOW_MAIN_H__ */
|
||||
|
||||
|
|
|
@ -127,16 +127,16 @@ main (int argc, char *argv[])
|
|||
textdomain (GETTEXT_DOMAIN);
|
||||
|
||||
#ifdef PROJECT_GSETTINGS_DIR
|
||||
/* This is enabled when the build is set up for developing, so that the
|
||||
* application can find its schema. It might also find use when
|
||||
* installing the application into a location that's missing from
|
||||
/* This is enabled when the build is set up for development,
|
||||
* so that the application can find its schema. It might also find use
|
||||
* when installing the application into a location that's missing from
|
||||
* g_get_system_data_dirs(), for example /usr/local or ~/.local.
|
||||
*/
|
||||
g_setenv ("GSETTINGS_SCHEMA_DIR", PROJECT_GSETTINGS_DIR, 0);
|
||||
#endif /* PROJECT_GSETTINGS_DIR */
|
||||
|
||||
#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. */
|
||||
argv_overriden = get_utf8_args (&argc, &argv);
|
||||
if (argv_overriden)
|
||||
|
@ -161,6 +161,11 @@ main (int argc, char *argv[])
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef OPTION_NOINSTALL
|
||||
gtk_icon_theme_prepend_search_path (gtk_icon_theme_get_default (),
|
||||
PROJECT_SHARE_DIR "icons");
|
||||
#endif
|
||||
|
||||
gtk_window_set_default_icon_name (PROJECT_NAME);
|
||||
|
||||
if (files)
|
||||
|
@ -175,4 +180,3 @@ main (int argc, char *argv[])
|
|||
gtk_main ();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
1
vera++
1
vera++
|
@ -1 +0,0 @@
|
|||
Subproject commit 45f3ab870d3722891642098bd7fc0d6fc97c8571
|
Loading…
Reference in New Issue