Compare commits
	
		
			36 Commits
		
	
	
		
			v0.2.0
			...
			b45670f9e9
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						
						
							
						
						b45670f9e9
	
				 | 
					
					
						|||
| 
						
						
							
						
						06e3c9e280
	
				 | 
					
					
						|||
| 
						
						
							
						
						073a4cd4a7
	
				 | 
					
					
						|||
| 
						
						
							
						
						f7807cada2
	
				 | 
					
					
						|||
| 
						
						
							
						
						08cf0ef2e6
	
				 | 
					
					
						|||
| 
						
						
							
						
						baf2dc8ccd
	
				 | 
					
					
						|||
| 
						
						
							
						
						a5e341bcc1
	
				 | 
					
					
						|||
| 
						
						
							
						
						bc8ceebef7
	
				 | 
					
					
						|||
| 
						
						
							
						
						da0a5c43dc
	
				 | 
					
					
						|||
| 
						
						
							
						
						384dad7bd8
	
				 | 
					
					
						|||
| 
						
						
							
						
						ada833a009
	
				 | 
					
					
						|||
| 
						
						
							
						
						924617e1ce
	
				 | 
					
					
						|||
| 
						
						
							
						
						67acddb26d
	
				 | 
					
					
						|||
| 
						
						
							
						
						bc1dd64fdf
	
				 | 
					
					
						|||
| 
						
						
							
						
						8c290df7b5
	
				 | 
					
					
						|||
| 
						
						
							
						
						5fc35517cb
	
				 | 
					
					
						|||
| 
						
						
							
						
						5a4cffd35e
	
				 | 
					
					
						|||
| 
						
						
							
						
						3a087ad581
	
				 | 
					
					
						|||
| 
						
						
							
						
						4305c603e9
	
				 | 
					
					
						|||
| 
						
						
							
						
						cbe23b7bb6
	
				 | 
					
					
						|||
| 
						
						
							
						
						2d103ed454
	
				 | 
					
					
						|||
| 
						
						
							
						
						885ccb46a3
	
				 | 
					
					
						|||
| 
						
						
							
						
						47fb9653b8
	
				 | 
					
					
						|||
| 
						
						
							
						
						42b6da1ffe
	
				 | 
					
					
						|||
| 
						
						
							
						
						98f16c2c76
	
				 | 
					
					
						|||
| 
						
						
							
						
						03c6ae0750
	
				 | 
					
					
						|||
| 
						
						
							
						
						95f53863ec
	
				 | 
					
					
						|||
| 
						
						
							
						
						8ac267c8db
	
				 | 
					
					
						|||
| 
						
						
							
						
						45dd1a4a86
	
				 | 
					
					
						|||
| 
						
						
							
						
						2c5fc3ebdd
	
				 | 
					
					
						|||
| 
						
						
							
						
						1ca42eb8e2
	
				 | 
					
					
						|||
| 
						
						
							
						
						8815d72db7
	
				 | 
					
					
						|||
| 
						
						
							
						
						3102bc0cb9
	
				 | 
					
					
						|||
| 
						
						
							
						
						7f357cb7c8
	
				 | 
					
					
						|||
| 
						
						
							
						
						b4db65d246
	
				 | 
					
					
						|||
| 
						
						
							
						
						af14119165
	
				 | 
					
					
						
							
								
								
									
										37
									
								
								.clang-format
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								.clang-format
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
			
		||||
# 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
 | 
			
		||||
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"
 | 
			
		||||
							
								
								
									
										133
									
								
								CMakeLists.txt
									
									
									
									
									
								
							
							
						
						
									
										133
									
								
								CMakeLists.txt
									
									
									
									
									
								
							@@ -1,23 +1,14 @@
 | 
			
		||||
project (logdiag C)
 | 
			
		||||
cmake_minimum_required (VERSION 2.8)
 | 
			
		||||
 | 
			
		||||
# Default to 2.8 behaviour
 | 
			
		||||
cmake_policy (VERSION 2.8)
 | 
			
		||||
# The last version with Windows XP support is 3.13, we want to keep that
 | 
			
		||||
cmake_minimum_required (VERSION 3.10)
 | 
			
		||||
project (logdiag VERSION 0.2.1 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_NOINSTALL "For developers only--work without installing" OFF)
 | 
			
		||||
option (OPTION_GTKDOC "For developers only--enable use of gtk-doc" OFF)
 | 
			
		||||
option (BUILD_TESTING "Build tests" OFF)
 | 
			
		||||
 | 
			
		||||
# Project information
 | 
			
		||||
set (project_VERSION_MAJOR "0")
 | 
			
		||||
set (project_VERSION_MINOR "2")
 | 
			
		||||
set (project_VERSION_PATCH "0")
 | 
			
		||||
 | 
			
		||||
set (project_VERSION "${project_VERSION_MAJOR}")
 | 
			
		||||
set (project_VERSION "${project_VERSION}.${project_VERSION_MINOR}")
 | 
			
		||||
set (project_VERSION "${project_VERSION}.${project_VERSION_PATCH}")
 | 
			
		||||
 | 
			
		||||
set (project_URL "https://git.janouch.name/p/logdiag")
 | 
			
		||||
 | 
			
		||||
# For custom modules
 | 
			
		||||
@@ -28,7 +19,7 @@ if (WIN32)
 | 
			
		||||
	set (WIN32_DEPENDS_PATH ${PROJECT_SOURCE_DIR}/win32-depends)
 | 
			
		||||
	list (APPEND CMAKE_PREFIX_PATH ${WIN32_DEPENDS_PATH})
 | 
			
		||||
	list (APPEND CMAKE_INCLUDE_PATH ${WIN32_DEPENDS_PATH}/lib)
 | 
			
		||||
	list (APPEND CMAKE_C_FLAGS "-mms-bitfields")
 | 
			
		||||
	set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mms-bitfields")
 | 
			
		||||
 | 
			
		||||
	if (CMAKE_CROSSCOMPILING)
 | 
			
		||||
		list (APPEND CMAKE_FIND_ROOT_PATH ${WIN32_DEPENDS_PATH})
 | 
			
		||||
@@ -90,7 +81,6 @@ else (NOT WIN32)
 | 
			
		||||
	# For whatever reason this now seems to be required
 | 
			
		||||
	set (LUA_INCLUDE_DIR "${WIN32_DEPENDS_PATH}/include")
 | 
			
		||||
 | 
			
		||||
	# XXX: this seems to require CMake 3.0 ... include it in the project?
 | 
			
		||||
	find_package (Lua REQUIRED)
 | 
			
		||||
	if (LUA_VERSION_STRING VERSION_LESS "5.2")
 | 
			
		||||
		message (FATAL_ERROR "Lua 5.2 not found")
 | 
			
		||||
@@ -114,10 +104,6 @@ foreach (file ${project_PO_FILES})
 | 
			
		||||
	list (APPEND project_TRANSLATIONS "${translation}")
 | 
			
		||||
endforeach (file)
 | 
			
		||||
 | 
			
		||||
# Documentation
 | 
			
		||||
find_package (GtkDoc 1.25)
 | 
			
		||||
set (project_DOC_DIR "${PROJECT_BINARY_DIR}/liblogdiag")
 | 
			
		||||
 | 
			
		||||
# Project source files
 | 
			
		||||
set (liblogdiag_SOURCES
 | 
			
		||||
	liblogdiag/ld-marshal.c
 | 
			
		||||
@@ -185,6 +171,8 @@ if (WIN32)
 | 
			
		||||
endif (WIN32)
 | 
			
		||||
 | 
			
		||||
# 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 (${PROJECT_SOURCE_DIR}/config.h.in
 | 
			
		||||
	${PROJECT_BINARY_DIR}/config.h)
 | 
			
		||||
include_directories (${PROJECT_BINARY_DIR})
 | 
			
		||||
@@ -232,7 +220,7 @@ set (logdiag_LIBS ${GTK3_LIBRARIES} ${Lua_LIBRARIES} m)
 | 
			
		||||
 | 
			
		||||
if (WIN32)
 | 
			
		||||
	find_package (LibIntl REQUIRED)
 | 
			
		||||
	list (APPEND logdiag_LIBS ${LIBINTL_LIBRARIES})
 | 
			
		||||
	list (APPEND logdiag_LIBS ${LIBINTL_LIBRARIES} shell32)
 | 
			
		||||
endif (WIN32)
 | 
			
		||||
 | 
			
		||||
# Build the library
 | 
			
		||||
@@ -250,20 +238,36 @@ if (BUILD_TESTING)
 | 
			
		||||
	foreach (name ${logdiag_TESTS})
 | 
			
		||||
		add_executable (test-${name} tests/${name}.c)
 | 
			
		||||
		target_link_libraries (test-${name} liblogdiag ${logdiag_LIBS})
 | 
			
		||||
 | 
			
		||||
		add_test (test-${name} test-${name})
 | 
			
		||||
		add_test (NAME test-${name} COMMAND test-${name})
 | 
			
		||||
		list (APPEND logdiag_TEST_TARGETS test-${name})
 | 
			
		||||
	endforeach (name)
 | 
			
		||||
	if (WIN32 AND NOT CMAKE_CROSSCOMPILING)
 | 
			
		||||
		set_tests_properties (${logdiag_TEST_TARGETS}
 | 
			
		||||
			PROPERTIES ENVIRONMENT "PATH=${WIN32_DEPENDS_PATH}/bin")
 | 
			
		||||
	endif ()
 | 
			
		||||
endif (BUILD_TESTING)
 | 
			
		||||
 | 
			
		||||
# 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 ()
 | 
			
		||||
 | 
			
		||||
@@ -340,19 +344,22 @@ 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)
 | 
			
		||||
	install (DIRECTORY
 | 
			
		||||
		${WIN32_DEPENDS_PATH}/lib/gdk-pixbuf-2.0
 | 
			
		||||
		DESTINATION lib)
 | 
			
		||||
		DESTINATION lib
 | 
			
		||||
		FILES_MATCHING PATTERN "*" PATTERN "*.a" EXCLUDE)
 | 
			
		||||
	install (DIRECTORY
 | 
			
		||||
		${WIN32_DEPENDS_PATH}/share/glib-2.0/schemas
 | 
			
		||||
		DESTINATION share/glib-2.0
 | 
			
		||||
		FILES_MATCHING PATTERN "org.gtk.Settings.*")
 | 
			
		||||
 | 
			
		||||
	install (DIRECTORY
 | 
			
		||||
		${WIN32_DEPENDS_PATH}/share/icons/Adwaita
 | 
			
		||||
		DESTINATION share/icons OPTIONAL)
 | 
			
		||||
	install (FILES
 | 
			
		||||
		${WIN32_DEPENDS_PATH}/share/icons/hicolor/index.theme
 | 
			
		||||
		DESTINATION share/icons/hicolor)
 | 
			
		||||
@@ -369,6 +376,8 @@ if (WIN32)
 | 
			
		||||
				DESTINATION share/locale)
 | 
			
		||||
		endif (translation_found GREATER -1)
 | 
			
		||||
	endforeach (locale)
 | 
			
		||||
 | 
			
		||||
	install (SCRIPT Win32Cleanup.cmake)
 | 
			
		||||
else (WIN32)
 | 
			
		||||
	install (TARGETS logdiag DESTINATION bin)
 | 
			
		||||
	install (FILES share/logdiag.desktop DESTINATION share/applications)
 | 
			
		||||
@@ -380,25 +389,21 @@ else (WIN32)
 | 
			
		||||
	install (FILES LICENSE NEWS DESTINATION share/doc/${PROJECT_NAME})
 | 
			
		||||
endif (WIN32)
 | 
			
		||||
 | 
			
		||||
install (FILES ${GSETTINGS_SCHEMAS}
 | 
			
		||||
	DESTINATION share/glib-2.0/schemas)
 | 
			
		||||
install (CODE " # DESTDIR is not in use on Windows
 | 
			
		||||
install (DIRECTORY docs/user-guide DESTINATION share/doc/${PROJECT_NAME})
 | 
			
		||||
install (DIRECTORY share/gui share/library DESTINATION share/${PROJECT_NAME})
 | 
			
		||||
install (FILES ${GSETTINGS_SCHEMAS} DESTINATION share/glib-2.0/schemas)
 | 
			
		||||
install (CODE " # DESTDIR is not in use on Windows (WIN32 is only native here!)
 | 
			
		||||
	if (WIN32 OR \"\$ENV{DESTDIR}\" STREQUAL \"\")
 | 
			
		||||
		execute_process (COMMAND ${GLIB_COMPILE_SCHEMAS_EXECUTABLE}
 | 
			
		||||
		execute_process (COMMAND \"${GLIB_COMPILE_SCHEMAS_EXECUTABLE}\"
 | 
			
		||||
			\"\${CMAKE_INSTALL_PREFIX}/share/glib-2.0/schemas\")
 | 
			
		||||
	endif (WIN32 OR \"\$ENV{DESTDIR}\" STREQUAL \"\")")
 | 
			
		||||
 | 
			
		||||
install (DIRECTORY share/gui share/library
 | 
			
		||||
	DESTINATION share/${PROJECT_NAME})
 | 
			
		||||
	endif ()")
 | 
			
		||||
 | 
			
		||||
# CPack
 | 
			
		||||
set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "Schematic editor")
 | 
			
		||||
set (CPACK_PACKAGE_VENDOR "Premysl Janouch")
 | 
			
		||||
set (CPACK_PACKAGE_CONTACT "Přemysl Janouch <p@janouch.name>")
 | 
			
		||||
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")
 | 
			
		||||
set (CPACK_PACKAGE_VERSION_MAJOR ${project_VERSION_MAJOR})
 | 
			
		||||
set (CPACK_PACKAGE_VERSION_MINOR ${project_VERSION_MINOR})
 | 
			
		||||
set (CPACK_PACKAGE_VERSION_PATCH ${project_VERSION_PATCH})
 | 
			
		||||
set (CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
 | 
			
		||||
 | 
			
		||||
if (WIN32)
 | 
			
		||||
	set (CPACK_GENERATOR "NSIS;ZIP")
 | 
			
		||||
@@ -408,29 +413,30 @@ else (WIN32)
 | 
			
		||||
endif (WIN32)
 | 
			
		||||
 | 
			
		||||
set (CPACK_PACKAGE_FILE_NAME
 | 
			
		||||
	"${PROJECT_NAME}-${project_VERSION}-${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
 | 
			
		||||
set (CPACK_PACKAGE_INSTALL_DIRECTORY
 | 
			
		||||
	"${PROJECT_NAME} ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}")
 | 
			
		||||
	"${PROJECT_NAME}-${PROJECT_VERSION}-${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
 | 
			
		||||
set (CPACK_PACKAGE_INSTALL_DIRECTORY "${PROJECT_NAME} ${CPACK_PACKAGE_VERSION}")
 | 
			
		||||
 | 
			
		||||
# XXX: It is still possible to install multiple copies, making commands collide.
 | 
			
		||||
set (CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)
 | 
			
		||||
set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${PROJECT_NAME}")
 | 
			
		||||
 | 
			
		||||
# FIXME: It is possible to install multiple copies. Everything screws up then.
 | 
			
		||||
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")
 | 
			
		||||
@@ -446,7 +452,6 @@ 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_PACKAGE_FILE_NAME "${PROJECT_NAME}-${project_VERSION}")
 | 
			
		||||
set (CPACK_SOURCE_PACKAGE_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION}")
 | 
			
		||||
 | 
			
		||||
include (CPack)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								LICENSE
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								LICENSE
									
									
									
									
									
								
							@@ -1,4 +1,4 @@
 | 
			
		||||
Copyright (c) 2010 - 2018, Přemysl Janouch <p@janouch.name>
 | 
			
		||||
Copyright (c) 2010 - 2021, Přemysl Eric Janouch <p@janouch.name>
 | 
			
		||||
 | 
			
		||||
Permission to use, copy, modify, and/or distribute this software for any
 | 
			
		||||
purpose with or without fee is hereby granted.
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								NEWS
									
									
									
									
									
								
							@@ -1,3 +1,9 @@
 | 
			
		||||
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.
 | 
			
		||||
 - Worked around a mysterious recent GTK+ bug with symbol dragging.
 | 
			
		||||
 - Put a default filename in the save dialog, ensuring a file extension.
 | 
			
		||||
 | 
			
		||||
Version 0.2.0
 | 
			
		||||
 - Added a library pane instead of a toolbar.
 | 
			
		||||
 - Added scrolling using the middle mouse button.
 | 
			
		||||
@@ -15,7 +21,7 @@ Version 0.2.0
 | 
			
		||||
 - 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 now and there's little we can do.
 | 
			
		||||
 - Known issues: Windows XP looks ugly with the classic theme, little we can do.
 | 
			
		||||
 | 
			
		||||
Version 0.1.2
 | 
			
		||||
 - Updated symbol library.
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										67
									
								
								README.adoc
									
									
									
									
									
								
							
							
						
						
									
										67
									
								
								README.adoc
									
									
									
									
									
								
							@@ -3,8 +3,8 @@ logdiag
 | 
			
		||||
 | 
			
		||||
'logdiag' is a simple multiplatform schematic editor written in GTK+.
 | 
			
		||||
 | 
			
		||||
This software is considered to be of alpha quality and isn't recommended for
 | 
			
		||||
regular usage.
 | 
			
		||||
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"]
 | 
			
		||||
 | 
			
		||||
@@ -13,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 >= 2.8
 | 
			
		||||
Build dependencies: CMake >= 3.10
 | 
			
		||||
 | 
			
		||||
Build from source on Unix-like systems
 | 
			
		||||
--------------------------------------
 | 
			
		||||
@@ -33,74 +36,78 @@ 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.
 | 
			
		||||
 | 
			
		||||
 $ fakeroot cpack -G DEB
 | 
			
		||||
+
 | 
			
		||||
 $ cpack -G DEB
 | 
			
		||||
 # dpkg -i logdiag-version-system-arch.deb
 | 
			
		||||
 | 
			
		||||
Leave out the fakeroot for CMake >= 2.8.9, it's been fixed since.
 | 
			
		||||
 | 
			
		||||
Build from source on Windows
 | 
			
		||||
----------------------------
 | 
			
		||||
_Note that with the current method we're stuck with GTK+ 3.10.4 at best._
 | 
			
		||||
_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 >= 3.1 and MinGW. Add both to your system path. If you want
 | 
			
		||||
to build an installation package, also install NSIS.
 | 
			
		||||
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,
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
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:
 | 
			
		||||
 | 
			
		||||
1. An NSIS-based installation package:
 | 
			
		||||
 | 
			
		||||
+
 | 
			
		||||
 > cpack -G NSIS
 | 
			
		||||
 | 
			
		||||
2. A portable ZIP package:
 | 
			
		||||
 | 
			
		||||
+
 | 
			
		||||
 > cpack -G ZIP
 | 
			
		||||
 | 
			
		||||
By default, that is if you specify no generator, both packages are built.
 | 
			
		||||
 | 
			
		||||
Cross-compilation for Windows
 | 
			
		||||
-----------------------------
 | 
			
		||||
 | 
			
		||||
The procedure is almost exactly the same as before, including the requirements.
 | 
			
		||||
Just install MinGW-w64 and let automation take care of the rest.
 | 
			
		||||
 | 
			
		||||
 $ cmake -P Win32Depends.cmake
 | 
			
		||||
 $ mkdir build
 | 
			
		||||
 $ cd build
 | 
			
		||||
 $ cmake .. \
 | 
			
		||||
   -DCMAKE_TOOLCHAIN_FILE=../ToolchainDebianMinGWW64.cmake \
 | 
			
		||||
   -DCMAKE_BUILD_TYPE=Release
 | 
			
		||||
 $ cmake -DCMAKE_TOOLCHAIN_FILE=../ToolchainCrossMinGWW64.cmake \
 | 
			
		||||
   -DCMAKE_BUILD_TYPE=Release ..
 | 
			
		||||
 $ cpack
 | 
			
		||||
 | 
			
		||||
Alternatively, for an unnecessarily bloated MSYS2-based 64-bit build:
 | 
			
		||||
 | 
			
		||||
 $ sh Win64Depends.sh
 | 
			
		||||
 $ cmake -DCMAKE_TOOLCHAIN_FILE=ToolchainCrossWin64.cmake \
 | 
			
		||||
   -DCMAKE_BUILD_TYPE=Release -B build
 | 
			
		||||
 $ cmake --build build -- package
 | 
			
		||||
 | 
			
		||||
Contributing and Support
 | 
			
		||||
------------------------
 | 
			
		||||
Use https://git.janouch.name/p/logdiag to report any bugs, request features,
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										16
									
								
								ToolchainCrossWin64.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								ToolchainCrossWin64.cmake
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
			
		||||
set (CMAKE_SYSTEM_NAME "Windows")
 | 
			
		||||
set (CMAKE_SYSTEM_PROCESSOR "x86_64")
 | 
			
		||||
 | 
			
		||||
set (CMAKE_C_COMPILER "x86_64-w64-mingw32-gcc")
 | 
			
		||||
set (CMAKE_CXX_COMPILER "x86_64-w64-mingw32-g++")
 | 
			
		||||
set (CMAKE_RC_COMPILER "x86_64-w64-mingw32-windres")
 | 
			
		||||
 | 
			
		||||
# Not needed to crosscompile an installation package
 | 
			
		||||
#set (CMAKE_CROSSCOMPILING_EMULATOR "wine64")
 | 
			
		||||
 | 
			
		||||
set (CMAKE_FIND_ROOT_PATH "/usr/x86_64-w64-mingw32")
 | 
			
		||||
 | 
			
		||||
set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
 | 
			
		||||
set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
 | 
			
		||||
set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										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})
 | 
			
		||||
@@ -1,14 +1,11 @@
 | 
			
		||||
# Usage: cmake -P Win32Depends.cmake
 | 
			
		||||
 | 
			
		||||
# Only CMake 3.1+ supports XZ archives and 7z doesn't also untar automatically
 | 
			
		||||
cmake_minimum_required (VERSION 3.1)
 | 
			
		||||
# Only CMake 3.1+ supports XZ archives, not sure when 7z support comes from
 | 
			
		||||
cmake_minimum_required (VERSION 3.9)
 | 
			
		||||
 | 
			
		||||
# Directories
 | 
			
		||||
set (working_dir ${CMAKE_CURRENT_BINARY_DIR}/win32-depends)
 | 
			
		||||
set (pkg_dir ${working_dir}/packages)
 | 
			
		||||
set (tools_dir ${working_dir}/tools)
 | 
			
		||||
set (sevenzip_executable ${tools_dir}/7za)
 | 
			
		||||
set (tmp_dir ${working_dir}/tmp)
 | 
			
		||||
file (MAKE_DIRECTORY ${working_dir})
 | 
			
		||||
file (MAKE_DIRECTORY ${pkg_dir})
 | 
			
		||||
 | 
			
		||||
@@ -21,27 +18,25 @@ if (files)
 | 
			
		||||
endif (files)
 | 
			
		||||
 | 
			
		||||
# Packages
 | 
			
		||||
set (pkg_list "7za" "gtk" "gtkalt" "winlibs" "mingw_lua")
 | 
			
		||||
 | 
			
		||||
set (pkg_7za_root "http://sourceforge.net/projects/sevenzip/files")
 | 
			
		||||
set (pkg_7za_urls "${pkg_7za_root}/7-Zip/9.20/7za920.zip")
 | 
			
		||||
set (pkg_7za_md5 "2fac454a90ae96021f4ffc607d4c00f8")
 | 
			
		||||
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")
 | 
			
		||||
set (pkg_gtk_md5 "09baff956ebd1c391c7f71e9bd768edd")
 | 
			
		||||
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_gtkalt_root "http://win32builder.gnome.org")
 | 
			
		||||
# 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")
 | 
			
		||||
 | 
			
		||||
# Doesn't work, no gtk+-3.0.pc file present
 | 
			
		||||
#set (pkg_gtkalt_urls "${pkg_gtkalt_root}/gtk+-bundle_3.10.4-20131202_win32.zip")
 | 
			
		||||
#set (pkg_gtkalt_md5 "520bed70943974efdaeea2a1dbe48f84")
 | 
			
		||||
# Too old
 | 
			
		||||
#set (pkg_gtkalt_urls "${pkg_gtkalt_root}/gtk+-bundle_3.6.4-20130921_win32.zip")
 | 
			
		||||
#set (pkg_gtkalt_md5 "9bcb87d917982a6e52a69141ade8bd56")
 | 
			
		||||
 | 
			
		||||
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")
 | 
			
		||||
@@ -66,11 +61,11 @@ foreach (pkg_set ${pkg_list})
 | 
			
		||||
			message (WARNING "MD5 checksum missing for ${basename}")
 | 
			
		||||
			set (pkg_md5_sum)
 | 
			
		||||
			set (pkg_md5_param)
 | 
			
		||||
		else (NOT pkg_md5)
 | 
			
		||||
		else ()
 | 
			
		||||
			list (GET pkg_md5 0 pkg_md5_sum)
 | 
			
		||||
			list (REMOVE_AT pkg_md5 0)
 | 
			
		||||
			set (pkg_md5_param EXPECTED_MD5 ${pkg_md5_sum})
 | 
			
		||||
		endif (NOT pkg_md5)
 | 
			
		||||
		endif ()
 | 
			
		||||
 | 
			
		||||
		if (NOT EXISTS ${filename})
 | 
			
		||||
			message (STATUS "Downloading ${url}...")
 | 
			
		||||
@@ -88,74 +83,27 @@ foreach (pkg_set ${pkg_list})
 | 
			
		||||
			if (NOT output MATCHES "^${pkg_md5_sum}")
 | 
			
		||||
				message (FATAL_ERROR "MD5 mismatch for ${basename}")
 | 
			
		||||
			endif (NOT output MATCHES "^${pkg_md5_sum}")
 | 
			
		||||
		endif (NOT EXISTS ${filename})
 | 
			
		||||
		endif ()
 | 
			
		||||
	endforeach (url)
 | 
			
		||||
endforeach (pkg_set)
 | 
			
		||||
 | 
			
		||||
if (NOT WIN32)
 | 
			
		||||
	unset (sevenzip_executable)
 | 
			
		||||
	find_program (sevenzip_executable 7za)
 | 
			
		||||
	if (NOT sevenzip_executable)
 | 
			
		||||
		message (FATAL_ERROR "Could not find 7za (part of p7zip)")
 | 
			
		||||
	endif (NOT sevenzip_executable)
 | 
			
		||||
endif (NOT WIN32)
 | 
			
		||||
 | 
			
		||||
# Stage 2: setup 7za first
 | 
			
		||||
file (MAKE_DIRECTORY ${tmp_dir})
 | 
			
		||||
foreach (url ${pkg_7za_urls})
 | 
			
		||||
	get_filename_component (filename ${url} NAME)
 | 
			
		||||
	message (STATUS "Extracting ${filename}...")
 | 
			
		||||
 | 
			
		||||
	set (filename ${pkg_dir}/${filename})
 | 
			
		||||
	execute_process (COMMAND ${CMAKE_COMMAND} -E tar xf ${filename}
 | 
			
		||||
		WORKING_DIRECTORY ${tmp_dir}
 | 
			
		||||
		RESULT_VARIABLE status)
 | 
			
		||||
	if (status)
 | 
			
		||||
		message (FATAL_ERROR "Extraction failed: ${status}")
 | 
			
		||||
	endif (status)
 | 
			
		||||
endforeach (url)
 | 
			
		||||
 | 
			
		||||
file (MAKE_DIRECTORY ${tools_dir})
 | 
			
		||||
file (COPY ${tmp_dir}/7za.exe DESTINATION ${tools_dir})
 | 
			
		||||
file (REMOVE_RECURSE ${tmp_dir})
 | 
			
		||||
list (REMOVE_ITEM pkg_list "7za")
 | 
			
		||||
 | 
			
		||||
# Stage 3: extract the rest of packages
 | 
			
		||||
# 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}...")
 | 
			
		||||
 | 
			
		||||
		if (filename MATCHES "\\.7z$")
 | 
			
		||||
			set (extract_command ${sevenzip_executable} x)
 | 
			
		||||
			set (quiet OUTPUT_QUIET)
 | 
			
		||||
		else (filename MATCHES "\\.7z$")
 | 
			
		||||
			set (extract_command ${CMAKE_COMMAND} -E tar xf)
 | 
			
		||||
			set (quiet)
 | 
			
		||||
		endif (filename MATCHES "\\.7z$")
 | 
			
		||||
 | 
			
		||||
		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 ${quiet})
 | 
			
		||||
			file (COPY ${tmp_dir}/${pkg_${pkg_set}_strip}/
 | 
			
		||||
				DESTINATION ${working_dir})
 | 
			
		||||
			file (REMOVE_RECURSE ${tmp_dir})
 | 
			
		||||
		else (pkg_${pkg_set}_strip)
 | 
			
		||||
			execute_process (COMMAND ${extract_command} ${filename}
 | 
			
		||||
				WORKING_DIRECTORY ${working_dir}
 | 
			
		||||
				RESULT_VARIABLE status ${quiet})
 | 
			
		||||
		endif (pkg_${pkg_set}_strip)
 | 
			
		||||
 | 
			
		||||
		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 (status)
 | 
			
		||||
		endif ()
 | 
			
		||||
	endforeach (url)
 | 
			
		||||
endforeach (pkg_set)
 | 
			
		||||
 | 
			
		||||
# Stage 4: final touches
 | 
			
		||||
# Stage 3: final touches
 | 
			
		||||
# We have to fix the prefix path as it is completely wrong everywhere
 | 
			
		||||
file (GLOB files ${working_dir}/lib/pkgconfig/*.pc)
 | 
			
		||||
foreach (file ${files})
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										74
									
								
								Win64Depends.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								Win64Depends.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,74 @@
 | 
			
		||||
#!/bin/sh -e
 | 
			
		||||
# Win64Depends.sh: download dependencies from MSYS2 for cross-compilation
 | 
			
		||||
# Dependencies: AWK, sed, sha256sum, cURL, bsdtar, wine64
 | 
			
		||||
repository=https://repo.msys2.org/mingw/mingw64/
 | 
			
		||||
 | 
			
		||||
status() {
 | 
			
		||||
	echo "$(tput bold)-- $*$(tput sgr0)"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
dbsync() {
 | 
			
		||||
	status Fetching repository DB
 | 
			
		||||
	[ -f db.tsv ] || curl -# "$repository/mingw64.db" | bsdtar -xOf- | awk '
 | 
			
		||||
		function flush() { print f["%NAME%"] f["%FILENAME%"] f["%DEPENDS%"] }
 | 
			
		||||
		NR > 1 && $0 == "%FILENAME%" { flush(); for (i in f) delete f[i] }
 | 
			
		||||
		!/^[^%]/ { field = $0; next } { f[field] = f[field] $0 "\t" }
 | 
			
		||||
		field == "%SHA256SUM%" { path = "*packages/" f["%FILENAME%"]
 | 
			
		||||
			sub(/\t$/, "", path); print $0, path > "db.sums" } END { flush() }
 | 
			
		||||
	' > db.tsv
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fetch() {
 | 
			
		||||
	status Resolving "$@"
 | 
			
		||||
	mkdir -p packages
 | 
			
		||||
	awk -F'\t' 'function get(name,    i, a) {
 | 
			
		||||
		if (visited[name]++ || !(name in filenames)) return
 | 
			
		||||
		print filenames[name]; split(deps[name], a); for (i in a) get(a[i])
 | 
			
		||||
	} BEGIN { while ((getline < "db.tsv") > 0) {
 | 
			
		||||
		filenames[$1] = $2; deps[$1] = ""; for (i = 3; i <= NF; i++) {
 | 
			
		||||
			gsub(/[<=>].*/, "", $i); deps[$1] = deps[$1] $i FS }
 | 
			
		||||
	} for (i = 0; i < ARGC; i++) get(ARGV[i]) }' "$@" | while IFS= read -r name
 | 
			
		||||
	do
 | 
			
		||||
		status Fetching "$name"
 | 
			
		||||
		[ -f "packages/$name" ] || curl -#o "packages/$name" "$repository/$name"
 | 
			
		||||
	done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
verify() {
 | 
			
		||||
	status Verifying checksums
 | 
			
		||||
	sha256sum --ignore-missing --quiet -c db.sums
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
extract() {
 | 
			
		||||
	status Extracting packages
 | 
			
		||||
	for subdir in *
 | 
			
		||||
	do [ -d "$subdir" -a "$subdir" != packages ] && rm -rf -- "$subdir"
 | 
			
		||||
	done
 | 
			
		||||
	for i in packages/*
 | 
			
		||||
	do bsdtar -xf "$i" --strip-components 1 mingw64
 | 
			
		||||
	done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
configure() {
 | 
			
		||||
	status Configuring packages
 | 
			
		||||
	glib-compile-schemas share/glib-2.0/schemas
 | 
			
		||||
	wine64 bin/gdk-pixbuf-query-loaders.exe \
 | 
			
		||||
		> lib/gdk-pixbuf-2.0/2.10.0/loaders.cache
 | 
			
		||||
 | 
			
		||||
	# pkgconf has a command line option for this, but CMake can't pass it
 | 
			
		||||
	sed -i "s|^prefix=/mingw64|prefix=$(pwd)|" {share,lib}/pkgconfig/*.pc
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
mkdir -p win32-depends
 | 
			
		||||
cd win32-depends
 | 
			
		||||
dbsync
 | 
			
		||||
fetch mingw-w64-x86_64-gtk3 mingw-w64-x86_64-lua \
 | 
			
		||||
	mingw-w64-x86_64-libwinpthread-git # because we don't do "provides"?
 | 
			
		||||
verify
 | 
			
		||||
extract
 | 
			
		||||
configure
 | 
			
		||||
 | 
			
		||||
status Success
 | 
			
		||||
 | 
			
		||||
# XXX: Why is this override needed to run some GLib-based things under wine64?
 | 
			
		||||
export XDG_DATA_DIRS=$(pwd)/share
 | 
			
		||||
@@ -44,7 +44,7 @@
 | 
			
		||||
 | 
			
		||||
#=============================================================================
 | 
			
		||||
# Copyright 2011 Johannes Wienke <jwienke at techfak dot uni-bielefeld dot de>
 | 
			
		||||
# Copyright 2012 Přemysl Janouch <p at janouch dot name>
 | 
			
		||||
# Copyright 2012 Přemysl Eric Janouch <p at janouch dot name>
 | 
			
		||||
# All rights reserved.
 | 
			
		||||
#
 | 
			
		||||
# Redistribution and use in source and binary forms, with or without
 | 
			
		||||
 
 | 
			
		||||
@@ -1,99 +0,0 @@
 | 
			
		||||
# - Find GNU gettext tools
 | 
			
		||||
# This module looks for the GNU gettext tools. This module defines the
 | 
			
		||||
# following values:
 | 
			
		||||
#    GETTEXT_MSGMERGE_EXECUTABLE: the full path to the msgmerge tool.
 | 
			
		||||
#    GETTEXT_MSGFMT_EXECUTABLE: the full path to the msgfmt tool.
 | 
			
		||||
#    GETTEXT_FOUND: True if gettext has been found.
 | 
			
		||||
#
 | 
			
		||||
# Additionally it provides the following macros:
 | 
			
		||||
# GETTEXT_CREATE_TRANSLATIONS ( outputFile [ALL] file1 ... fileN )
 | 
			
		||||
#    This will create a target "${PROJECT_NAME}_translations" which will
 | 
			
		||||
#    convert the given input po files into the binary output mo file.
 | 
			
		||||
#    If the ALL option is used, the translations will also be created
 | 
			
		||||
#    when building the default target.
 | 
			
		||||
 | 
			
		||||
#=============================================================================
 | 
			
		||||
# Copyright 2007-2009 Kitware, Inc.
 | 
			
		||||
# Copyright 2010-2011 Přemysl Janouch
 | 
			
		||||
#
 | 
			
		||||
# 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.
 | 
			
		||||
#     * Neither the name of the Kitware nor the names of contributors may be
 | 
			
		||||
#       used to endorse or promote products derived from this software
 | 
			
		||||
#       without specific prior written permission.
 | 
			
		||||
#
 | 
			
		||||
# 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_program (GETTEXT_MSGMERGE_EXECUTABLE msgmerge)
 | 
			
		||||
find_program (GETTEXT_MSGFMT_EXECUTABLE msgfmt)
 | 
			
		||||
 | 
			
		||||
macro (GETTEXT_CREATE_TRANSLATIONS _potFile _firstPoFileArg)
 | 
			
		||||
	# Make it a real variable, so we can modify it here.
 | 
			
		||||
	set (_firstPoFile "${_firstPoFileArg}")
 | 
			
		||||
 | 
			
		||||
	set (_gmoFiles)
 | 
			
		||||
	get_filename_component (_potBasename ${_potFile} NAME_WE)
 | 
			
		||||
	get_filename_component (_absPotFile ${_potFile} ABSOLUTE)
 | 
			
		||||
 | 
			
		||||
	set (_addToAll)
 | 
			
		||||
	if (${_firstPoFile} STREQUAL "ALL")
 | 
			
		||||
		set (_addToAll "ALL")
 | 
			
		||||
		set (_firstPoFile)
 | 
			
		||||
	endif (${_firstPoFile} STREQUAL "ALL")
 | 
			
		||||
 | 
			
		||||
	foreach (_currentPoFile ${_firstPoFile} ${ARGN})
 | 
			
		||||
		get_filename_component (_absFile ${_currentPoFile} ABSOLUTE)
 | 
			
		||||
		get_filename_component (_abs_PATH ${_absFile} PATH)
 | 
			
		||||
		get_filename_component (_lang ${_absFile} NAME_WE)
 | 
			
		||||
		set (_gmoFile ${CMAKE_CURRENT_BINARY_DIR}/${_lang}.gmo)
 | 
			
		||||
 | 
			
		||||
		# msgmerge versions older than 0.11 don't actually support --update
 | 
			
		||||
		# and --backup, let's try to workaround that (tested on 0.10.40).
 | 
			
		||||
		execute_process (COMMAND ${GETTEXT_MSGMERGE_EXECUTABLE} -V
 | 
			
		||||
			OUTPUT_VARIABLE _msgmergeVersion)
 | 
			
		||||
		string (REGEX MATCH "0[.][0-9]+" _msgmergeVersion ${_msgmergeVersion})
 | 
			
		||||
		if ("${_msgmergeVersion}" MATCHES "[.]10|[.][0-9]")
 | 
			
		||||
			set (_msgmergeParams --quiet -s
 | 
			
		||||
				${_absFile} -o ${_absFile} ${_absPotFile})
 | 
			
		||||
		else ("${_msgmergeVersion}" MATCHES "[.]10|[.][0-9]")
 | 
			
		||||
			set (_msgmergeParams --quiet --update --backup=none -s
 | 
			
		||||
				${_absFile} ${_absPotFile})
 | 
			
		||||
		endif ("${_msgmergeVersion}" MATCHES "[.]10|[.][0-9]")
 | 
			
		||||
 | 
			
		||||
		add_custom_command (
 | 
			
		||||
			OUTPUT ${_gmoFile}
 | 
			
		||||
			COMMAND ${GETTEXT_MSGMERGE_EXECUTABLE} ${_msgmergeParams}
 | 
			
		||||
			COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${_gmoFile} ${_absFile}
 | 
			
		||||
			DEPENDS ${_absPotFile} ${_absFile}
 | 
			
		||||
		)
 | 
			
		||||
 | 
			
		||||
		install (FILES ${_gmoFile} DESTINATION
 | 
			
		||||
			share/locale/${_lang}/LC_MESSAGES RENAME ${_potBasename}.mo)
 | 
			
		||||
		set (_gmoFiles ${_gmoFiles} ${_gmoFile})
 | 
			
		||||
	endforeach (_currentPoFile)
 | 
			
		||||
 | 
			
		||||
	add_custom_target (${PROJECT_NAME}_translations ${_addToAll}
 | 
			
		||||
		DEPENDS ${_gmoFiles})
 | 
			
		||||
endmacro (GETTEXT_CREATE_TRANSLATIONS)
 | 
			
		||||
 | 
			
		||||
include (FindPackageHandleStandardArgs)
 | 
			
		||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS (Gettext DEFAULT_MSG
 | 
			
		||||
	GETTEXT_MSGMERGE_EXECUTABLE GETTEXT_MSGFMT_EXECUTABLE)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -5,7 +5,7 @@
 | 
			
		||||
#    LIBINTL_LIBRARIES
 | 
			
		||||
 | 
			
		||||
#=============================================================================
 | 
			
		||||
# Copyright Přemysl Janouch 2011
 | 
			
		||||
# Copyright 2011 Přemysl Eric Janouch
 | 
			
		||||
# All rights reserved.
 | 
			
		||||
#
 | 
			
		||||
# Redistribution and use in source and binary forms, with or without
 | 
			
		||||
 
 | 
			
		||||
@@ -22,7 +22,7 @@
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
#=============================================================================
 | 
			
		||||
# Copyright Přemysl Janouch 2010
 | 
			
		||||
# Copyright 2010 Přemysl Eric Janouch
 | 
			
		||||
# All rights reserved.
 | 
			
		||||
#
 | 
			
		||||
# Redistribution and use in source and binary forms, with or without
 | 
			
		||||
 
 | 
			
		||||
@@ -9,18 +9,21 @@
 | 
			
		||||
#define __CONFIG_H__
 | 
			
		||||
 | 
			
		||||
#define PROJECT_NAME "${PROJECT_NAME}"
 | 
			
		||||
#define PROJECT_VERSION "${project_VERSION}"
 | 
			
		||||
#define PROJECT_VERSION "${PROJECT_VERSION}"
 | 
			
		||||
#define PROJECT_URL "${project_URL}"
 | 
			
		||||
 | 
			
		||||
#cmakedefine OPTION_NOINSTALL
 | 
			
		||||
 | 
			
		||||
#ifdef OPTION_NOINSTALL
 | 
			
		||||
	/* For developers. */
 | 
			
		||||
	#define PROJECT_DOC_DIR "${CMAKE_SOURCE_DIR}/docs/"
 | 
			
		||||
	#define PROJECT_SHARE_DIR "${CMAKE_SOURCE_DIR}/share/"
 | 
			
		||||
	#define PROJECT_GSETTINGS_DIR "${CMAKE_BINARY_DIR}"
 | 
			
		||||
#elif defined (_WIN32)
 | 
			
		||||
	#define PROJECT_DOC_DIR "share/doc/${PROJECT_NAME}/"
 | 
			
		||||
	#define PROJECT_SHARE_DIR "share/${PROJECT_NAME}/"
 | 
			
		||||
#else
 | 
			
		||||
	#define PROJECT_DOC_DIR "${CMAKE_INSTALL_PREFIX}/share/doc/${PROJECT_NAME}/"
 | 
			
		||||
	#define PROJECT_SHARE_DIR "${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME}/"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										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 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.
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										141
									
								
								docs/user-guide/user-guide-cs.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										141
									
								
								docs/user-guide/user-guide-cs.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,141 @@
 | 
			
		||||
<!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.2.0,</span>
 | 
			
		||||
<span id="revdate">2018-06-27</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>Jak můžu diagram vytisknout?</h3>
 | 
			
		||||
<p>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.
 | 
			
		||||
 | 
			
		||||
<h3>Schází mi popisky</h3>
 | 
			
		||||
<p>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.
 | 
			
		||||
 | 
			
		||||
<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 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.
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										133
									
								
								docs/user-guide/user-guide-en.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										133
									
								
								docs/user-guide/user-guide-en.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,133 @@
 | 
			
		||||
<!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.2.0,</span>
 | 
			
		||||
<span id="revdate">2018-06-27</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>How do I print a diagram?</h3>
 | 
			
		||||
<p>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.
 | 
			
		||||
 | 
			
		||||
<h3>I miss labels</h3>
 | 
			
		||||
<p>Similarly to the previous case, this functionality doesn’t exist yet, but it
 | 
			
		||||
is possible to get around this limitation using a graphics editor.
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * ld-category-symbol-view.c
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2012
 | 
			
		||||
 * Copyright 2012, 2015 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
@@ -47,6 +47,7 @@ SymbolData;
 | 
			
		||||
 * @path: path to the category within the library.
 | 
			
		||||
 * @layout: (element-type SymbolData *): current layout of symbols.
 | 
			
		||||
 * @preselected: currently preselected symbol.
 | 
			
		||||
 * @dragged: currently dragged symbol.
 | 
			
		||||
 */
 | 
			
		||||
struct _LdCategorySymbolViewPrivate
 | 
			
		||||
{
 | 
			
		||||
@@ -54,6 +55,7 @@ struct _LdCategorySymbolViewPrivate
 | 
			
		||||
	gchar *path;
 | 
			
		||||
	GSList *layout;
 | 
			
		||||
	SymbolData *preselected;
 | 
			
		||||
	SymbolData *dragged;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum
 | 
			
		||||
@@ -180,6 +182,7 @@ layout_destroy (LdCategorySymbolView *self)
 | 
			
		||||
	g_slist_free (self->priv->layout);
 | 
			
		||||
	self->priv->layout = NULL;
 | 
			
		||||
	self->priv->preselected = NULL;
 | 
			
		||||
	self->priv->dragged = NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static GSList *
 | 
			
		||||
@@ -350,7 +353,10 @@ on_draw (GtkWidget *widget, cairo_t *cr)
 | 
			
		||||
		return FALSE;
 | 
			
		||||
 | 
			
		||||
	context = gtk_widget_get_style_context (widget);
 | 
			
		||||
	// FIXME: there have to be better means (though I can't find them)
 | 
			
		||||
 | 
			
		||||
	// XXX: alternatively, we could use gtk_style_context_lookup_color()
 | 
			
		||||
	//   with hardcoded colour names ("theme_*_color")--this is cleaner,
 | 
			
		||||
	//   and unlike GtkStyle doesn't cause deprecation warnings
 | 
			
		||||
	gtk_style_context_add_class (context, "gtkstyle-fallback");
 | 
			
		||||
 | 
			
		||||
	gtk_style_context_get_background_color (context,
 | 
			
		||||
@@ -450,19 +456,19 @@ 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;
 | 
			
		||||
 | 
			
		||||
	self = LD_CATEGORY_SYMBOL_VIEW (widget);
 | 
			
		||||
	g_return_if_fail (self->priv->preselected != NULL);
 | 
			
		||||
	g_return_if_fail (self->priv->dragged != NULL);
 | 
			
		||||
 | 
			
		||||
	gtk_selection_data_set (selection_data,
 | 
			
		||||
		gtk_selection_data_get_target (selection_data),
 | 
			
		||||
		8, (guchar *) self->priv->preselected->path,
 | 
			
		||||
		strlen (self->priv->preselected->path));
 | 
			
		||||
		8, (guchar *) self->priv->dragged->path,
 | 
			
		||||
		strlen (self->priv->dragged->path));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
@@ -474,6 +480,9 @@ on_drag_begin (GtkWidget *widget, GdkDragContext *ctx, gpointer user_data)
 | 
			
		||||
	self = LD_CATEGORY_SYMBOL_VIEW (widget);
 | 
			
		||||
	g_return_if_fail (self->priv->preselected != NULL);
 | 
			
		||||
 | 
			
		||||
	/* Working around a mysterious bug where we /sometimes/ get deselected. */
 | 
			
		||||
	self->priv->dragged = self->priv->preselected;
 | 
			
		||||
 | 
			
		||||
	/* Some of the larger previews didn't work, and we have to get rid of
 | 
			
		||||
	 * the icon later when we're hovering above LdDiagramView anyway. */
 | 
			
		||||
	pbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, 1, 1);
 | 
			
		||||
@@ -485,7 +494,11 @@ on_drag_begin (GtkWidget *widget, GdkDragContext *ctx, gpointer user_data)
 | 
			
		||||
static void
 | 
			
		||||
on_drag_end (GtkWidget *widget, GdkDragContext *ctx, gpointer user_data)
 | 
			
		||||
{
 | 
			
		||||
	symbol_deselect (LD_CATEGORY_SYMBOL_VIEW (widget));
 | 
			
		||||
	LdCategorySymbolView *self;
 | 
			
		||||
 | 
			
		||||
	self = LD_CATEGORY_SYMBOL_VIEW (widget);
 | 
			
		||||
	symbol_deselect (self);
 | 
			
		||||
	self->priv->dragged = NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * ld-category-symbol-view.h
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2012
 | 
			
		||||
 * Copyright 2012 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
@@ -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;
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * ld-category-tree-view.c
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2011, 2012
 | 
			
		||||
 * Copyright 2011, 2012 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
@@ -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)
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * ld-category-tree-view.h
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2011, 2012
 | 
			
		||||
 * Copyright 2011, 2012 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
@@ -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;
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * ld-category-view.c
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2012
 | 
			
		||||
 * Copyright 2012 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
@@ -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);
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * ld-category-view.h
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2012
 | 
			
		||||
 * Copyright 2012 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
@@ -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);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * ld-category.c
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2010, 2011, 2012
 | 
			
		||||
 * Copyright 2010, 2011, 2012 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
@@ -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;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * ld-category.h
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2010, 2012
 | 
			
		||||
 * Copyright 2010, 2012 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
@@ -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__ */
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * ld-diagram-connection.c
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2011
 | 
			
		||||
 * Copyright 2011 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
@@ -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);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * ld-diagram-connection.h
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2011
 | 
			
		||||
 * Copyright 2011 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
@@ -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__ */
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * ld-diagram-object.c
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2010, 2011
 | 
			
		||||
 * Copyright 2010, 2011 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
@@ -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)
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * ld-diagram-object.h
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2010, 2011
 | 
			
		||||
 * Copyright 2010, 2011 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
@@ -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__ */
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * ld-diagram-symbol.c
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2010, 2011
 | 
			
		||||
 * Copyright 2010, 2011 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
@@ -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)
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * ld-diagram-symbol.h
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2010, 2011
 | 
			
		||||
 * Copyright 2010, 2011 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
@@ -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 Přemysl Janouch 2010, 2011, 2012
 | 
			
		||||
 * Copyright 2010, 2011, 2012, 2015 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
@@ -1390,8 +1390,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
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * ld-diagram-view.h
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2010, 2011
 | 
			
		||||
 * Copyright 2010, 2011 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;
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * ld-diagram.c
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2010, 2011, 2012
 | 
			
		||||
 * Copyright 2010, 2011, 2012 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
@@ -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)
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * ld-diagram.h
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2010, 2011
 | 
			
		||||
 * Copyright 2010, 2011 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
@@ -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__ */
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * ld-library.c
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2010, 2011, 2012
 | 
			
		||||
 * Copyright 2010, 2011, 2012 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
@@ -50,7 +50,7 @@ static gboolean foreach_dir (const gchar *path,
 | 
			
		||||
	gpointer userdata, GError **error);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
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)
 | 
			
		||||
@@ -427,4 +427,3 @@ ld_library_get_root (LdLibrary *self)
 | 
			
		||||
	g_return_val_if_fail (LD_IS_LIBRARY (self), NULL);
 | 
			
		||||
	return self->priv->root;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * ld-library.h
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2010, 2012
 | 
			
		||||
 * Copyright 2010, 2012 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
@@ -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__ */
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * ld-lua-private.h
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2010
 | 
			
		||||
 * Copyright 2010 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
@@ -23,4 +23,3 @@ void ld_lua_private_draw (LdLua *self, LdLuaSymbol *symbol, cairo_t *cr);
 | 
			
		||||
G_END_DECLS
 | 
			
		||||
 | 
			
		||||
#endif /* ! __LD_LUA_PRIVATE_H__ */
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * ld-lua-symbol-private.h
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2010, 2011
 | 
			
		||||
 * Copyright 2010, 2011 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
@@ -37,4 +37,3 @@ struct _LdLuaSymbolPrivate
 | 
			
		||||
G_END_DECLS
 | 
			
		||||
 | 
			
		||||
#endif /* ! __LD_LUA_SYMBOL_PRIVATE_H__ */
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * ld-lua-symbol.c
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2010, 2011
 | 
			
		||||
 * Copyright 2010, 2011 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
@@ -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);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * ld-lua-symbol.h
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2010
 | 
			
		||||
 * Copyright 2010 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
@@ -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__ */
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * ld-lua.c
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2010, 2011, 2012
 | 
			
		||||
 * Copyright 2010, 2011, 2012 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
@@ -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);
 | 
			
		||||
@@ -465,8 +464,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 +859,3 @@ LD_LUA_CAIRO_BEGIN (show_text)
 | 
			
		||||
 | 
			
		||||
	g_object_unref (layout);
 | 
			
		||||
LD_LUA_CAIRO_END (0)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * ld-lua.h
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2010
 | 
			
		||||
 * Copyright 2010 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
@@ -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__ */
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * ld-symbol.c
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2010, 2011
 | 
			
		||||
 * Copyright 2010, 2011 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
@@ -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)
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * ld-symbol.h
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2010, 2011
 | 
			
		||||
 * Copyright 2010, 2011 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
@@ -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__ */
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * ld-types.c
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2010, 2011
 | 
			
		||||
 * Copyright 2010, 2011 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
@@ -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);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * ld-types.h
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2010, 2011
 | 
			
		||||
 * Copyright 2010, 2011 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
@@ -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__ */
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * ld-undo-action.c
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2011
 | 
			
		||||
 * Copyright 2011 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
@@ -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;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * ld-undo-action.h
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2011
 | 
			
		||||
 * Copyright 2011 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
@@ -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__ */
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * liblogdiag.h
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2011, 2012
 | 
			
		||||
 * Copyright 2011, 2012 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										40
									
								
								po/cs.po
									
									
									
									
									
								
							
							
						
						
									
										40
									
								
								po/cs.po
									
									
									
									
									
								
							@@ -1,32 +1,32 @@
 | 
			
		||||
# Czech translation for logdiag.
 | 
			
		||||
# Copyright (C) 2011 Přemysl Janouch
 | 
			
		||||
# Copyright (C) 2011 Přemysl Eric Janouch
 | 
			
		||||
# This file is distributed under the same license as the logdiag package.
 | 
			
		||||
# Přemysl Janouch <p@janouch.name>, 2011.
 | 
			
		||||
# Přemysl Eric Janouch <p@janouch.name>, 2011.
 | 
			
		||||
#
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: logdiag\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: \n"
 | 
			
		||||
"POT-Creation-Date: 2018-06-27 04:52+0200\n"
 | 
			
		||||
"PO-Revision-Date: 2018-06-25 04:02+0200\n"
 | 
			
		||||
"Last-Translator: Přemysl Janouch <p@janouch.name>\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"
 | 
			
		||||
"Last-Translator: Přemysl Eric Janouch <p@janouch.name>\n"
 | 
			
		||||
"Language-Team: Czech <cs@li.org>\n"
 | 
			
		||||
"Language: cs\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:931
 | 
			
		||||
#: ../src/ld-window-main.c:937
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "%d%%"
 | 
			
		||||
msgstr "%d %%"
 | 
			
		||||
 | 
			
		||||
#: ../src/logdiag.c:146
 | 
			
		||||
#: ../src/logdiag.c:147
 | 
			
		||||
msgid "- Schematic editor"
 | 
			
		||||
msgstr "- Editor schémat"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:855
 | 
			
		||||
#: ../src/ld-window-main.c:861
 | 
			
		||||
msgid "Close _without Saving"
 | 
			
		||||
msgstr "Zavřít _bez uložení"
 | 
			
		||||
 | 
			
		||||
@@ -59,7 +59,7 @@ msgstr "Nelze otevřít soubor"
 | 
			
		||||
msgid "Failed to save the diagram"
 | 
			
		||||
msgstr "Nelze uložit diagram"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:853
 | 
			
		||||
#: ../src/ld-window-main.c:859
 | 
			
		||||
msgid "If you don't save, changes will be permanently lost."
 | 
			
		||||
msgstr "Pokud je neuložíte, budou změny navždy ztraceny."
 | 
			
		||||
 | 
			
		||||
@@ -87,7 +87,7 @@ msgstr "Provede posledně vrácenou akci"
 | 
			
		||||
msgid "Reset zoom level back to the default"
 | 
			
		||||
msgstr "Vrátí přiblížení na výchozí hodnotu"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:790
 | 
			
		||||
#: ../src/ld-window-main.c:792
 | 
			
		||||
msgid "Save As..."
 | 
			
		||||
msgstr "Uložit jako..."
 | 
			
		||||
 | 
			
		||||
@@ -97,17 +97,15 @@ msgstr "Uložit _jako..."
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:623
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"Save the changes to diagram \"%s\" before closing it and creating a new one?"
 | 
			
		||||
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
 | 
			
		||||
#, 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žit změny v diagramu \"%s\" před jeho zavřením a otevřením jiného?"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:893
 | 
			
		||||
#: ../src/ld-window-main.c:899
 | 
			
		||||
#, 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?"
 | 
			
		||||
@@ -160,6 +158,10 @@ msgstr "Vrátí poslední akci"
 | 
			
		||||
msgid "Unsaved Diagram"
 | 
			
		||||
msgstr "Neuložený diagram"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:806
 | 
			
		||||
msgid "Untitled diagram"
 | 
			
		||||
msgstr "Nepojmenovaný diagram"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:171
 | 
			
		||||
msgid "Zoom _Out"
 | 
			
		||||
msgstr "_Oddálit"
 | 
			
		||||
@@ -240,9 +242,9 @@ msgstr "_Zobrazení"
 | 
			
		||||
msgid "_Zoom In"
 | 
			
		||||
msgstr "_Přiblížit"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:977
 | 
			
		||||
#: ../src/ld-window-main.c:983
 | 
			
		||||
msgid "translator-credits"
 | 
			
		||||
msgstr "Přemysl Janouch <p@janouch.name>"
 | 
			
		||||
msgstr "Přemysl Eric Janouch <p@janouch.name>"
 | 
			
		||||
 | 
			
		||||
#~ msgid "The file is probably corrupted."
 | 
			
		||||
#~ msgstr "Soubor je pravděpodobně poškozen."
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										27
									
								
								po/de.po
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								po/de.po
									
									
									
									
									
								
							@@ -1,15 +1,15 @@
 | 
			
		||||
# German translation for logdiag.
 | 
			
		||||
# Copyright (C) 2011 Přemysl Janouch
 | 
			
		||||
# Copyright (C) 2011 Přemysl Eric Janouch
 | 
			
		||||
# This file is distributed under the same license as the logdiag package.
 | 
			
		||||
# Andy J., 2011.
 | 
			
		||||
#
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: logdiag\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: \n"
 | 
			
		||||
"POT-Creation-Date: 2018-06-27 04:52+0200\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"
 | 
			
		||||
"Last-Translator: Přemysl Janouch <p@janouch.name>\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"
 | 
			
		||||
@@ -17,16 +17,16 @@ msgstr ""
 | 
			
		||||
"Content-Transfer-Encoding: 8bit\n"
 | 
			
		||||
"X-Generator: Poedit 2.0.8\n"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:931
 | 
			
		||||
#: ../src/ld-window-main.c:937
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "%d%%"
 | 
			
		||||
msgstr "%d %%"
 | 
			
		||||
 | 
			
		||||
#: ../src/logdiag.c:146
 | 
			
		||||
#: ../src/logdiag.c:147
 | 
			
		||||
msgid "- Schematic editor"
 | 
			
		||||
msgstr "- Schema Editor"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:855
 | 
			
		||||
#: ../src/ld-window-main.c:861
 | 
			
		||||
msgid "Close _without Saving"
 | 
			
		||||
msgstr "Schließen _ohne Speichern"
 | 
			
		||||
 | 
			
		||||
@@ -61,7 +61,7 @@ msgstr "Fehler beim Öffnen der Datei"
 | 
			
		||||
msgid "Failed to save the diagram"
 | 
			
		||||
msgstr "Fehler beim Speichern des Diagramms"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:853
 | 
			
		||||
#: ../src/ld-window-main.c:859
 | 
			
		||||
msgid "If you don't save, changes will be permanently lost."
 | 
			
		||||
msgstr "Wenn Sie nicht speichern, gehen alle Änderungen verloren."
 | 
			
		||||
 | 
			
		||||
@@ -89,7 +89,7 @@ msgstr "Letzte nicht abgeschlossene Aktion wiederholen"
 | 
			
		||||
msgid "Reset zoom level back to the default"
 | 
			
		||||
msgstr "Zoom Bereich zurücksetzen"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:790
 | 
			
		||||
#: ../src/ld-window-main.c:792
 | 
			
		||||
msgid "Save As..."
 | 
			
		||||
msgstr "Speichern unter..."
 | 
			
		||||
 | 
			
		||||
@@ -111,7 +111,7 @@ msgstr ""
 | 
			
		||||
"Änderungen im Diagramm \"%s\" speichern bevor es beendet und ein Weiteres "
 | 
			
		||||
"geöffnet wird?"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:893
 | 
			
		||||
#: ../src/ld-window-main.c:899
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Save the changes to diagram \"%s\" before closing?"
 | 
			
		||||
msgstr "Änderungen im Diagramm \"%s\" vor dem Schließen speichern?"
 | 
			
		||||
@@ -164,6 +164,11 @@ msgstr "Letzte Aktion rückgangig machen"
 | 
			
		||||
msgid "Unsaved Diagram"
 | 
			
		||||
msgstr "Ungespeichertes Diagramm"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:806
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid "Untitled diagram"
 | 
			
		||||
msgstr "Ungespeichertes Diagramm"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:171
 | 
			
		||||
msgid "Zoom _Out"
 | 
			
		||||
msgstr "Zoom _heraus"
 | 
			
		||||
@@ -244,7 +249,7 @@ msgstr "_Ansicht"
 | 
			
		||||
msgid "_Zoom In"
 | 
			
		||||
msgstr "_Hineinzoomen"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:977
 | 
			
		||||
#: ../src/ld-window-main.c:983
 | 
			
		||||
msgid "translator-credits"
 | 
			
		||||
msgstr "Andy J."
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
# SOME DESCRIPTIVE TITLE.
 | 
			
		||||
# Copyright (C) YEAR Přemysl Janouch
 | 
			
		||||
# Copyright (C) YEAR Přemysl Eric Janouch
 | 
			
		||||
# This file is distributed under the same license as the logdiag package.
 | 
			
		||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 | 
			
		||||
#
 | 
			
		||||
@@ -7,8 +7,8 @@
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: logdiag 0.2.0\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: \n"
 | 
			
		||||
"POT-Creation-Date: 2018-06-27 04:52+0200\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: YEAR-MO-DA HO:MI+ZONE\n"
 | 
			
		||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 | 
			
		||||
"Language-Team: LANGUAGE <LL@li.org>\n"
 | 
			
		||||
@@ -206,29 +206,33 @@ msgstr ""
 | 
			
		||||
msgid "Open..."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:790
 | 
			
		||||
#: ../src/ld-window-main.c:792
 | 
			
		||||
msgid "Save As..."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:853
 | 
			
		||||
#: ../src/ld-window-main.c:806
 | 
			
		||||
msgid "Untitled diagram"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:859
 | 
			
		||||
msgid "If you don't save, changes will be permanently lost."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:855
 | 
			
		||||
#: ../src/ld-window-main.c:861
 | 
			
		||||
msgid "Close _without Saving"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:893
 | 
			
		||||
#: ../src/ld-window-main.c:899
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Save the changes to diagram \"%s\" before closing?"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:931
 | 
			
		||||
#: ../src/ld-window-main.c:937
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "%d%%"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:977
 | 
			
		||||
#: ../src/ld-window-main.c:983
 | 
			
		||||
msgid "translator-credits"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
@@ -236,7 +240,7 @@ msgstr ""
 | 
			
		||||
msgid "[FILE...]"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/logdiag.c:146
 | 
			
		||||
#: ../src/logdiag.c:147
 | 
			
		||||
msgid "- Schematic editor"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,36 +1,21 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
# This script makes a translation template
 | 
			
		||||
# The reason for this not being inside CMakeLists.txt
 | 
			
		||||
# is that the translator should not need to run
 | 
			
		||||
# the whole configure process to get this single stupid file.
 | 
			
		||||
#!/bin/sh -e
 | 
			
		||||
# This shell script generates the translation template.
 | 
			
		||||
#
 | 
			
		||||
# The reason for this not being inside CMakeLists.txt is that the translator
 | 
			
		||||
# should not need to run the whole configuration process just to get this file.
 | 
			
		||||
dir=$(dirname $0)
 | 
			
		||||
 | 
			
		||||
# Source files
 | 
			
		||||
SOURCES=$(echo ../{src,liblogdiag}/*.c)
 | 
			
		||||
export LC_ALL=C
 | 
			
		||||
 | 
			
		||||
# Get the package name from CMakeLists.txt
 | 
			
		||||
PACKAGE=$(sed -n '/^[ \t]*[pP][rR][oO][jJ][eE][cC][tT][ \t]*([ \t]*\([^ \t)]\{1,\}\).*).*/{s//\1/p;q}' \
 | 
			
		||||
	../CMakeLists.txt)
 | 
			
		||||
 | 
			
		||||
# Get the package version from CMakeLists.txt
 | 
			
		||||
EXP_BEG='/^[ \t]*[sS][eE][tT][ \t]*([ \t]*project_VERSION_'
 | 
			
		||||
EXP_END='[ \t]\{1,\}"\{0,1\}\([^)"]\{1,\}\)"\{0,1\}).*/{s//\1/p;q}'
 | 
			
		||||
 | 
			
		||||
MAJOR=$(sed -n "${EXP_BEG}MAJOR${EXP_END}" ../CMakeLists.txt)
 | 
			
		||||
MINOR=$(sed -n "${EXP_BEG}MINOR${EXP_END}" ../CMakeLists.txt)
 | 
			
		||||
PATCH=$(sed -n "${EXP_BEG}PATCH${EXP_END}" ../CMakeLists.txt)
 | 
			
		||||
 | 
			
		||||
if [ "$MAJOR" != "" ]; then
 | 
			
		||||
	VERSION=$MAJOR
 | 
			
		||||
	if [ "$MINOR" != "" ]; then
 | 
			
		||||
		VERSION=$VERSION.$MINOR
 | 
			
		||||
		if [ "$PATCH" != "" ]; then
 | 
			
		||||
			VERSION=$VERSION.$PATCH
 | 
			
		||||
		fi
 | 
			
		||||
	fi
 | 
			
		||||
re='^[ \t]*project *( *\([^ \t)]\{1,\}\) \{1,\}VERSION \{1,\}\([^ \t)]\{1,\}\).*'
 | 
			
		||||
package=$(sed -n "s/$re/\\1/p" "$dir/../CMakeLists.txt")
 | 
			
		||||
version=$(sed -n "s/$re/\\2/p" "$dir/../CMakeLists.txt")
 | 
			
		||||
if [ -z "$package" -o -z "$version" ]; then
 | 
			
		||||
	echo "Failed to get information from CMakeLists.txt"
 | 
			
		||||
	exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Finally make the template
 | 
			
		||||
xgettext -LC -k_ -kN_ $SOURCES -o "$PACKAGE".pot \
 | 
			
		||||
	--package-name="$PACKAGE" --package-version="$VERSION" \
 | 
			
		||||
	--copyright-holder="Přemysl Janouch"
 | 
			
		||||
 | 
			
		||||
xgettext -LC -k_ -kN_ "$dir"/../{src,liblogdiag}/*.c -o "$dir/$package.pot" \
 | 
			
		||||
	--package-name="$package" --package-version="$version" \
 | 
			
		||||
	--copyright-holder="Přemysl Eric Janouch" \
 | 
			
		||||
	--msgid-bugs-address="https://git.janouch.name/p/$package/issues"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										27
									
								
								po/pl.po
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								po/pl.po
									
									
									
									
									
								
							@@ -1,15 +1,15 @@
 | 
			
		||||
# Polish translation for logdiag.
 | 
			
		||||
# Copyright (C) 2011 Přemysl Janouch
 | 
			
		||||
# Copyright (C) 2011 Přemysl Eric Janouch
 | 
			
		||||
# This file is distributed under the same license as the logdiag package.
 | 
			
		||||
# Robert Svoboda <ravath@gmail.com>, 2011.
 | 
			
		||||
#
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: logdiag\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: \n"
 | 
			
		||||
"POT-Creation-Date: 2018-06-27 04:52+0200\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"
 | 
			
		||||
"Last-Translator: Přemysl Janouch <p@janouch.name>\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"
 | 
			
		||||
@@ -17,16 +17,16 @@ msgstr ""
 | 
			
		||||
"Content-Transfer-Encoding: 8bit\n"
 | 
			
		||||
"X-Generator: Poedit 2.0.8\n"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:931
 | 
			
		||||
#: ../src/ld-window-main.c:937
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "%d%%"
 | 
			
		||||
msgstr "%d%%"
 | 
			
		||||
 | 
			
		||||
#: ../src/logdiag.c:146
 | 
			
		||||
#: ../src/logdiag.c:147
 | 
			
		||||
msgid "- Schematic editor"
 | 
			
		||||
msgstr "- Edytor schematów"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:855
 | 
			
		||||
#: ../src/ld-window-main.c:861
 | 
			
		||||
msgid "Close _without Saving"
 | 
			
		||||
msgstr "Zamknąć _bez zapisu"
 | 
			
		||||
 | 
			
		||||
@@ -59,7 +59,7 @@ msgstr "Pliku nie da się otworzyć"
 | 
			
		||||
msgid "Failed to save the diagram"
 | 
			
		||||
msgstr "Nie udało się zapisać wykresu"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:853
 | 
			
		||||
#: ../src/ld-window-main.c:859
 | 
			
		||||
msgid "If you don't save, changes will be permanently lost."
 | 
			
		||||
msgstr "Jeżeli nie zapiszesz zmian, zostaną one trwale utracone"
 | 
			
		||||
 | 
			
		||||
@@ -87,7 +87,7 @@ msgstr "Powtórzy ostatnio cofniętą akcję"
 | 
			
		||||
msgid "Reset zoom level back to the default"
 | 
			
		||||
msgstr "Przywróci poziom zbliżenia na poziom wyjściowy"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:790
 | 
			
		||||
#: ../src/ld-window-main.c:792
 | 
			
		||||
msgid "Save As..."
 | 
			
		||||
msgstr "Zapisz jako..."
 | 
			
		||||
 | 
			
		||||
@@ -109,7 +109,7 @@ msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Zapisać zmiany w wykresie \"%s\" przed jego zamknięciem i stworzeniem nowego?"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:893
 | 
			
		||||
#: ../src/ld-window-main.c:899
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Save the changes to diagram \"%s\" before closing?"
 | 
			
		||||
msgstr "Zapisać zmiany w wykresie \"%s\" przed jego zamknięciem?"
 | 
			
		||||
@@ -162,6 +162,11 @@ msgstr "Cofnie ostatnią akcję"
 | 
			
		||||
msgid "Unsaved Diagram"
 | 
			
		||||
msgstr "Niezapisany Wykres"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:806
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid "Untitled diagram"
 | 
			
		||||
msgstr "Niezapisany Wykres"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:171
 | 
			
		||||
msgid "Zoom _Out"
 | 
			
		||||
msgstr "_Oddalić widok"
 | 
			
		||||
@@ -242,7 +247,7 @@ msgstr "_Widok"
 | 
			
		||||
msgid "_Zoom In"
 | 
			
		||||
msgstr "_Przybliżyć"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:977
 | 
			
		||||
#: ../src/ld-window-main.c:983
 | 
			
		||||
msgid "translator-credits"
 | 
			
		||||
msgstr "Robert Svoboda <ravath@gmail.com>"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										27
									
								
								po/sk.po
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								po/sk.po
									
									
									
									
									
								
							@@ -1,15 +1,15 @@
 | 
			
		||||
# Slovak translation for logdiag.
 | 
			
		||||
# Copyright (C) 2011 Přemysl Janouch
 | 
			
		||||
# Copyright (C) 2011 Přemysl Eric Janouch
 | 
			
		||||
# This file is distributed under the same license as the logdiag package.
 | 
			
		||||
# Miroslav Rigler <itsgoingd@luzer.sk>, 2011.
 | 
			
		||||
#
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: logdiag\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: \n"
 | 
			
		||||
"POT-Creation-Date: 2018-06-27 04:52+0200\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"
 | 
			
		||||
"Last-Translator: Přemysl Janouch <p@janouch.name>\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"
 | 
			
		||||
@@ -17,16 +17,16 @@ msgstr ""
 | 
			
		||||
"Content-Transfer-Encoding: 8bit\n"
 | 
			
		||||
"X-Generator: Poedit 2.0.8\n"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:931
 | 
			
		||||
#: ../src/ld-window-main.c:937
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "%d%%"
 | 
			
		||||
msgstr "%d %%"
 | 
			
		||||
 | 
			
		||||
#: ../src/logdiag.c:146
 | 
			
		||||
#: ../src/logdiag.c:147
 | 
			
		||||
msgid "- Schematic editor"
 | 
			
		||||
msgstr "- Editor schém"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:855
 | 
			
		||||
#: ../src/ld-window-main.c:861
 | 
			
		||||
msgid "Close _without Saving"
 | 
			
		||||
msgstr "Zatvoriť _bez uloženia"
 | 
			
		||||
 | 
			
		||||
@@ -59,7 +59,7 @@ msgstr "Nepodarilo sa otvoriť súbor"
 | 
			
		||||
msgid "Failed to save the diagram"
 | 
			
		||||
msgstr "Nepodarilo sa uložiť diagram"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:853
 | 
			
		||||
#: ../src/ld-window-main.c:859
 | 
			
		||||
msgid "If you don't save, changes will be permanently lost."
 | 
			
		||||
msgstr "Ak ich neuložíte, budú zmeny navždy stratené."
 | 
			
		||||
 | 
			
		||||
@@ -87,7 +87,7 @@ msgstr "Vykoná naposledy vrátenú akciu"
 | 
			
		||||
msgid "Reset zoom level back to the default"
 | 
			
		||||
msgstr "Vráti priblíženie na východiskovú hodnotu"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:790
 | 
			
		||||
#: ../src/ld-window-main.c:792
 | 
			
		||||
msgid "Save As..."
 | 
			
		||||
msgstr "Uložiť ako..."
 | 
			
		||||
 | 
			
		||||
@@ -108,7 +108,7 @@ 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:893
 | 
			
		||||
#: ../src/ld-window-main.c:899
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Save the changes to diagram \"%s\" before closing?"
 | 
			
		||||
msgstr "Uložiť zmeny v diagrame \"%s\" pred jeho zatvorením?"
 | 
			
		||||
@@ -161,6 +161,11 @@ msgstr "Vráti poslednú akciu"
 | 
			
		||||
msgid "Unsaved Diagram"
 | 
			
		||||
msgstr "Neuložený diagram"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:806
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid "Untitled diagram"
 | 
			
		||||
msgstr "Neuložený diagram"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:171
 | 
			
		||||
msgid "Zoom _Out"
 | 
			
		||||
msgstr "_Oddialiť"
 | 
			
		||||
@@ -241,7 +246,7 @@ msgstr "_Zobrazenie"
 | 
			
		||||
msgid "_Zoom In"
 | 
			
		||||
msgstr "_Priblížiť"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:977
 | 
			
		||||
#: ../src/ld-window-main.c:983
 | 
			
		||||
msgid "translator-credits"
 | 
			
		||||
msgstr "Miroslav Rigler <itsgoingd@luzer.sk>"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -36,6 +36,7 @@
 | 
			
		||||
			<menuitem action="NormalSize" />
 | 
			
		||||
		</menu>
 | 
			
		||||
		<menu name="HelpMenu" action="HelpMenu">
 | 
			
		||||
			<menuitem action="UserGuide" />
 | 
			
		||||
			<menuitem action="About" />
 | 
			
		||||
		</menu>
 | 
			
		||||
	</menubar>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
<schemalist>
 | 
			
		||||
	<schema id="org.logdiag" path="/apps/logdiag/" gettext-domain="logdiag">
 | 
			
		||||
	<schema id="org.logdiag" path="/org/logdiag/" gettext-domain="logdiag">
 | 
			
		||||
		<key name="show-main-toolbar" type="b">
 | 
			
		||||
			<default>true</default>
 | 
			
		||||
			<summary>Whether to show the main toolbar</summary>
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * ld-window-main.c
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2010, 2011, 2012
 | 
			
		||||
 * Copyright 2010 - 2021 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
@@ -13,6 +13,11 @@
 | 
			
		||||
 | 
			
		||||
#include "ld-window-main.h"
 | 
			
		||||
 | 
			
		||||
#ifdef G_OS_WIN32
 | 
			
		||||
#include <gdk/gdkwin32.h>
 | 
			
		||||
#include <shellapi.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
struct _LdWindowMainPrivate
 | 
			
		||||
{
 | 
			
		||||
@@ -100,6 +105,7 @@ 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_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 void on_action_undo (GtkAction *action, LdWindowMain *self);
 | 
			
		||||
@@ -176,9 +182,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 +198,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 +224,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)
 | 
			
		||||
@@ -784,6 +793,8 @@ static void
 | 
			
		||||
diagram_show_save_as_dialog (LdWindowMain *self)
 | 
			
		||||
{
 | 
			
		||||
	GtkWidget *dialog;
 | 
			
		||||
	GtkFileChooser *file_chooser;
 | 
			
		||||
	gchar *filename;
 | 
			
		||||
 | 
			
		||||
	g_return_if_fail (LD_IS_WINDOW_MAIN (self));
 | 
			
		||||
 | 
			
		||||
@@ -796,15 +807,19 @@ diagram_show_save_as_dialog (LdWindowMain *self)
 | 
			
		||||
	gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog),
 | 
			
		||||
		diagram_get_file_filter ());
 | 
			
		||||
 | 
			
		||||
	file_chooser = GTK_FILE_CHOOSER (dialog);
 | 
			
		||||
	if (self->priv->filename)
 | 
			
		||||
		gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (dialog),
 | 
			
		||||
			self->priv->filename);
 | 
			
		||||
		gtk_file_chooser_set_filename (file_chooser, self->priv->filename);
 | 
			
		||||
	else
 | 
			
		||||
	{
 | 
			
		||||
		filename = g_strdup_printf ("%s.ldd", _("Untitled diagram"));
 | 
			
		||||
		gtk_file_chooser_set_current_name (file_chooser, filename);
 | 
			
		||||
		g_free (filename);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	while (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
 | 
			
		||||
	{
 | 
			
		||||
		gchar *filename;
 | 
			
		||||
 | 
			
		||||
		filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
 | 
			
		||||
		filename = gtk_file_chooser_get_filename (file_chooser);
 | 
			
		||||
		if (diagram_save (self, GTK_WINDOW (dialog), filename))
 | 
			
		||||
		{
 | 
			
		||||
			diagram_set_filename (self, filename);
 | 
			
		||||
@@ -967,17 +982,126 @@ 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))
 | 
			
		||||
	{
 | 
			
		||||
		GtkWidget *message_dialog;
 | 
			
		||||
 | 
			
		||||
		message_dialog = gtk_message_dialog_new (GTK_WINDOW (self),
 | 
			
		||||
			GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
 | 
			
		||||
			_("Failed to open the user guide"));
 | 
			
		||||
		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);
 | 
			
		||||
	}
 | 
			
		||||
	g_object_unref (file);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
on_action_about_activate_link (GtkAboutDialog *dialog, gchar *uri,
 | 
			
		||||
	LdWindowMain *self)
 | 
			
		||||
{
 | 
			
		||||
	GdkWindow *window;
 | 
			
		||||
 | 
			
		||||
	window = gtk_widget_get_window (GTK_WIDGET (self));
 | 
			
		||||
 | 
			
		||||
#ifdef G_OS_WIN32
 | 
			
		||||
	/* 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
 | 
			
		||||
on_action_about (GtkAction *action, LdWindowMain *self)
 | 
			
		||||
{
 | 
			
		||||
	gtk_show_about_dialog (GTK_WINDOW (self),
 | 
			
		||||
	GtkWidget *about_dialog;
 | 
			
		||||
 | 
			
		||||
	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 Přemysl Janouch 2010 - 2018",
 | 
			
		||||
		"copyright", "Copyright 2010 - 2021 Přemysl Eric Janouch",
 | 
			
		||||
		"website", PROJECT_URL,
 | 
			
		||||
		NULL);
 | 
			
		||||
 | 
			
		||||
	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 void
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * ld-window-main.h
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2010
 | 
			
		||||
 * Copyright 2010 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
@@ -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__ */
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * logdiag.c -- logdiag main source file.
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2010, 2011
 | 
			
		||||
 * Copyright 2010, 2011 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
@@ -137,6 +137,7 @@ main (int argc, char *argv[])
 | 
			
		||||
 | 
			
		||||
#ifdef _WIN32
 | 
			
		||||
	/* Don't be unneccessarily limited by the system ANSI codepage. */
 | 
			
		||||
	/* g_win32_get_command_line() should replace this code for GLib >= 2.40. */
 | 
			
		||||
	argv_overriden = get_utf8_args (&argc, &argv);
 | 
			
		||||
	if (argv_overriden)
 | 
			
		||||
		_putenv ("CHARSET=UTF-8");
 | 
			
		||||
@@ -160,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)
 | 
			
		||||
@@ -174,4 +180,3 @@ main (int argc, char *argv[])
 | 
			
		||||
	gtk_main ();
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * diagram.c
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2011
 | 
			
		||||
 * Copyright 2011 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * point-array.c
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2011
 | 
			
		||||
 * Copyright 2011 Přemysl Eric Janouch
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user