Compare commits
	
		
			48 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						
						
							
						
						9dc1d20d6c
	
				 | 
					
					
						|||
| 
						
						
							
						
						66a3b3e259
	
				 | 
					
					
						|||
| 
						
						
							
						
						3ff0f117f9
	
				 | 
					
					
						|||
| 
						
						
							
						
						de291ffddb
	
				 | 
					
					
						|||
| 
						
						
							
						
						baaca4c58f
	
				 | 
					
					
						|||
| 
						
						
							
						
						7499f92811
	
				 | 
					
					
						|||
| 
						
						
							
						
						deceafb4f4
	
				 | 
					
					
						|||
| 
						
						
							
						
						3465557a5b
	
				 | 
					
					
						|||
| 
						
						
							
						
						082f1aa41c
	
				 | 
					
					
						|||
| 
						
						
							
						
						8950a533b4
	
				 | 
					
					
						|||
| 
						
						
							
						
						79d2fc78ea
	
				 | 
					
					
						|||
| 
						
						
							
						
						1d118d5406
	
				 | 
					
					
						|||
| 
						
						
							
						
						d5ea2e2b4d
	
				 | 
					
					
						|||
| 
						
						
							
						
						0cec1b4bad
	
				 | 
					
					
						|||
| 
						
						
							
						
						a40b281078
	
				 | 
					
					
						|||
| 
						
						
							
						
						dd48af42eb
	
				 | 
					
					
						|||
| 
						
						
							
						
						ed6d34159e
	
				 | 
					
					
						|||
| 
						
						
							
						
						ff03060efa
	
				 | 
					
					
						|||
| 
						
						
							
						
						9dcef6a14f
	
				 | 
					
					
						|||
| 
						
						
							
						
						ee7be81434
	
				 | 
					
					
						|||
| 
						
						
							
						
						0c5c680f62
	
				 | 
					
					
						|||
| 
						
						
							
						
						f139efba6d
	
				 | 
					
					
						|||
| 
						
						
							
						
						83c1e7a491
	
				 | 
					
					
						|||
| 
						
						
							
						
						59b5ff7020
	
				 | 
					
					
						|||
| 
						
						
							
						
						2bc9fe4f1d
	
				 | 
					
					
						|||
| 
						
						
							
						
						bd12c0502a
	
				 | 
					
					
						|||
| 
						
						
							
						
						4f01392de5
	
				 | 
					
					
						|||
| 
						
						
							
						
						6cd6ddbd1c
	
				 | 
					
					
						|||
| 
						
						
							
						
						a4a0dd2106
	
				 | 
					
					
						|||
| 
						
						
							
						
						b45670f9e9
	
				 | 
					
					
						|||
| 
						
						
							
						
						06e3c9e280
	
				 | 
					
					
						|||
| 
						
						
							
						
						073a4cd4a7
	
				 | 
					
					
						|||
| 
						
						
							
						
						f7807cada2
	
				 | 
					
					
						|||
| 
						
						
							
						
						08cf0ef2e6
	
				 | 
					
					
						|||
| 
						
						
							
						
						baf2dc8ccd
	
				 | 
					
					
						|||
| 
						
						
							
						
						a5e341bcc1
	
				 | 
					
					
						|||
| 
						
						
							
						
						bc8ceebef7
	
				 | 
					
					
						|||
| 
						
						
							
						
						da0a5c43dc
	
				 | 
					
					
						|||
| 
						
						
							
						
						384dad7bd8
	
				 | 
					
					
						|||
| 
						
						
							
						
						ada833a009
	
				 | 
					
					
						|||
| 
						
						
							
						
						924617e1ce
	
				 | 
					
					
						|||
| 
						
						
							
						
						67acddb26d
	
				 | 
					
					
						|||
| 
						
						
							
						
						bc1dd64fdf
	
				 | 
					
					
						|||
| 
						
						
							
						
						8c290df7b5
	
				 | 
					
					
						|||
| 
						
						
							
						
						5fc35517cb
	
				 | 
					
					
						|||
| 
						
						
							
						
						5a4cffd35e
	
				 | 
					
					
						|||
| 
						
						
							
						
						3a087ad581
	
				 | 
					
					
						|||
| 
						
						
							
						
						4305c603e9
	
				 | 
					
					
						
							
								
								
									
										38
									
								
								.clang-format
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								.clang-format
									
									
									
									
									
										Normal file
									
								
							@@ -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
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -1,4 +1,3 @@
 | 
			
		||||
/build
 | 
			
		||||
/win32-depends
 | 
			
		||||
/liblogdiag/ld-marshal.[ch]
 | 
			
		||||
/CMakeLists.txt.user
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										3
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
								
							@@ -1,3 +0,0 @@
 | 
			
		||||
[submodule "vera++"]
 | 
			
		||||
	path = vera++
 | 
			
		||||
	url = https://bitbucket.org/verateam/vera.git
 | 
			
		||||
							
								
								
									
										354
									
								
								CMakeLists.txt
									
									
									
									
									
								
							
							
						
						
									
										354
									
								
								CMakeLists.txt
									
									
									
									
									
								
							@@ -1,10 +1,11 @@
 | 
			
		||||
# 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
 | 
			
		||||
@@ -22,19 +23,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)
 | 
			
		||||
@@ -61,35 +56,34 @@ if (CONVERT_EXECUTABLE AND NOT WIN32)
 | 
			
		||||
			DEPENDS ${icon_svg} VERBATIM)
 | 
			
		||||
		set_source_files_properties (${icon_symbolic}
 | 
			
		||||
			PROPERTIES SYMBOLIC TRUE)
 | 
			
		||||
	endforeach (icon_size)
 | 
			
		||||
	endforeach ()
 | 
			
		||||
 | 
			
		||||
	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)
 | 
			
		||||
	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 +95,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 +116,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 +142,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 +238,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}/org.logdiag.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 +305,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 +344,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 +374,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 +387,18 @@ 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 (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)
 | 
			
		||||
install (CODE " # DESTDIR is not in use on Windows
 | 
			
		||||
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 +406,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 +421,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")
 | 
			
		||||
@@ -439,8 +450,7 @@ set (CPACK_RPM_PACKAGE_LICENSE "ISC")
 | 
			
		||||
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.
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										51
									
								
								README.adoc
									
									
									
									
									
								
							
							
						
						
									
										51
									
								
								README.adoc
									
									
									
									
									
								
							@@ -3,7 +3,8 @@ 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"]
 | 
			
		||||
 | 
			
		||||
@@ -12,10 +13,13 @@ 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.
 | 
			
		||||
 | 
			
		||||
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 +36,45 @@ 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 (note that Windows XP is no longer able to
 | 
			
		||||
download from HTTPS sources, you'll have to run this externally):
 | 
			
		||||
 | 
			
		||||
 > cmake -P Win32Depends.cmake
 | 
			
		||||
 | 
			
		||||
Note that Windows XP is no longer able to reliably download from HTTPS sources.
 | 
			
		||||
 | 
			
		||||
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,9 +97,8 @@ 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:
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										37
									
								
								Win32Cleanup.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								Win32Cleanup.cmake
									
									
									
									
									
										Normal file
									
								
							@@ -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 ()
 | 
			
		||||
 
 | 
			
		||||
@@ -71,4 +71,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)
 | 
			
		||||
 | 
			
		||||
@@ -16,11 +16,14 @@
 | 
			
		||||
 | 
			
		||||
#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
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										7
									
								
								docs/user-guide/stylesheet.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								docs/user-guide/stylesheet.css
									
									
									
									
									
										Normal file
									
								
							@@ -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.
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										137
									
								
								docs/user-guide/user-guide-cs.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										137
									
								
								docs/user-guide/user-guide-cs.html
									
									
									
									
									
										Normal file
									
								
							@@ -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.
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										129
									
								
								docs/user-guide/user-guide-en.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										129
									
								
								docs/user-guide/user-guide-en.html
									
									
									
									
									
										Normal file
									
								
							@@ -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;
 | 
			
		||||
@@ -2664,19 +2694,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 +2768,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 +2790,7 @@ draw_terminal (GtkWidget *widget, DrawData *data)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
draw_diagram (GtkWidget *widget, DrawData *data)
 | 
			
		||||
draw_diagram (DrawData *data)
 | 
			
		||||
{
 | 
			
		||||
	GList *objects, *iter;
 | 
			
		||||
 | 
			
		||||
@@ -2905,5 +2935,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__ */
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										7
									
								
								share/logdiag.gresource.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								share/logdiag.gresource.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<gresources>
 | 
			
		||||
	<gresource prefix="/logdiag">
 | 
			
		||||
		<file>logdiag.ui</file>
 | 
			
		||||
		<file alias="LICENSE">../LICENSE</file>
 | 
			
		||||
	</gresource>
 | 
			
		||||
</gresources>
 | 
			
		||||
							
								
								
									
										11
									
								
								share/logdiag.manifest
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								share/logdiag.manifest
									
									
									
									
									
										Normal file
									
								
							@@ -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);
 | 
			
		||||
@@ -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__ */
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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++
									
									
									
									
									
								
							 Submodule vera++ deleted from 45f3ab870d
									
								
							
		Reference in New Issue
	
	Block a user