Compare commits
	
		
			45 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 8cdefbca29 | |||
| 0aaa214a75 | |||
| b37f856557 | |||
| 7d2b3a8c2f | |||
| 95b92e12f9 | |||
| 403a9d702a | |||
| f9827e2ff3 | |||
| d4bfd8a504 | |||
| 8f8866ffc4 | |||
| f074bc6742 | |||
| 8aef3fc772 | |||
| b5ff3b5bbb | |||
| 58e3e43c15 | |||
| fdb6418733 | |||
| 6820d27efa | |||
| 781273c236 | |||
| 7fa6efbaec | |||
| 6a8238846c | |||
| 412a01690b | |||
| 841e9e9f85 | |||
| ac56c16ab8 | |||
| baed5ee4bd | |||
| 5ccabad6ce | |||
| 1730064ed3 | |||
| 8ac4674a8e | |||
| 0841e75076 | |||
| bc491d0d0f | |||
| cffc6f01a5 | |||
| ebd4cd3a17 | |||
| 69f3ce89c5 | |||
| 5fd66ada46 | |||
| 440a9da5fc | |||
| ee8a82925f | |||
| 66dc2948df | |||
| 948e9d53d2 | |||
| 9a217e97c8 | |||
| 68e6e4a7e8 | |||
| b7875c361f | |||
| 299ce010bd | |||
| 2c5f2f5b3f | |||
| d96acedcdb | |||
| 39fb4bb56f | |||
| ab3e2733ce | |||
| 93bac99a10 | |||
| da34bbb3bb | 
@@ -16,7 +16,7 @@ endif (OPTION_NOINSTALL)
 | 
			
		||||
# Project information
 | 
			
		||||
set (project_VERSION_MAJOR "0")
 | 
			
		||||
set (project_VERSION_MINOR "1")
 | 
			
		||||
set (project_VERSION_PATCH "0")
 | 
			
		||||
set (project_VERSION_PATCH "1")
 | 
			
		||||
 | 
			
		||||
set (project_VERSION "${project_VERSION_MAJOR}")
 | 
			
		||||
set (project_VERSION "${project_VERSION}.${project_VERSION_MINOR}")
 | 
			
		||||
@@ -94,14 +94,16 @@ find_package (Lua51 REQUIRED)
 | 
			
		||||
find_package (JsonGlib REQUIRED)
 | 
			
		||||
 | 
			
		||||
# Localization
 | 
			
		||||
find_package (Gettext)
 | 
			
		||||
if (GETTEXT_FOUND)
 | 
			
		||||
	set (HAVE_GETTEXT true)
 | 
			
		||||
	file (GLOB project_TRANSLATIONS ${CMAKE_CURRENT_SOURCE_DIR}/po/*.po)
 | 
			
		||||
	GETTEXT_CREATE_TRANSLATIONS (
 | 
			
		||||
		${CMAKE_CURRENT_SOURCE_DIR}/po/${CMAKE_PROJECT_NAME}.pot
 | 
			
		||||
		ALL ${project_TRANSLATIONS})
 | 
			
		||||
endif (GETTEXT_FOUND)
 | 
			
		||||
find_package (Gettext REQUIRED)
 | 
			
		||||
file (GLOB project_PO_FILES ${CMAKE_CURRENT_SOURCE_DIR}/po/*.po)
 | 
			
		||||
GETTEXT_CREATE_TRANSLATIONS (
 | 
			
		||||
	${CMAKE_CURRENT_SOURCE_DIR}/po/${CMAKE_PROJECT_NAME}.pot
 | 
			
		||||
	ALL ${project_PO_FILES})
 | 
			
		||||
 | 
			
		||||
foreach (file ${project_PO_FILES})
 | 
			
		||||
	get_filename_component (translation "${file}" NAME_WE)
 | 
			
		||||
	list (APPEND project_TRANSLATIONS "${translation}")
 | 
			
		||||
endforeach (file)
 | 
			
		||||
 | 
			
		||||
# Documentation
 | 
			
		||||
# TODO: Add pregenerated docs to the tree
 | 
			
		||||
@@ -117,7 +119,7 @@ set (liblogdiag_SOURCES
 | 
			
		||||
	liblogdiag/ld-diagram-object.c
 | 
			
		||||
	liblogdiag/ld-diagram-symbol.c
 | 
			
		||||
	liblogdiag/ld-diagram-connection.c
 | 
			
		||||
	liblogdiag/ld-canvas.c
 | 
			
		||||
	liblogdiag/ld-diagram-view.c
 | 
			
		||||
	liblogdiag/ld-library.c
 | 
			
		||||
	liblogdiag/ld-library-toolbar.c
 | 
			
		||||
	liblogdiag/ld-symbol-category.c
 | 
			
		||||
@@ -134,7 +136,7 @@ set (liblogdiag_HEADERS
 | 
			
		||||
	liblogdiag/ld-diagram-object.h
 | 
			
		||||
	liblogdiag/ld-diagram-symbol.h
 | 
			
		||||
	liblogdiag/ld-diagram-connection.h
 | 
			
		||||
	liblogdiag/ld-canvas.h
 | 
			
		||||
	liblogdiag/ld-diagram-view.h
 | 
			
		||||
	liblogdiag/ld-library.h
 | 
			
		||||
	liblogdiag/ld-library-toolbar.h
 | 
			
		||||
	liblogdiag/ld-symbol-category.h
 | 
			
		||||
@@ -218,6 +220,11 @@ include_directories (${GTK2_INCLUDE_DIRS}
 | 
			
		||||
set (logdiag_LIBS ${GTK2_LIBRARIES}
 | 
			
		||||
	${JSON_GLIB_LIBRARIES} ${LUA_LIBRARIES})
 | 
			
		||||
 | 
			
		||||
if (WIN32)
 | 
			
		||||
	find_package (LibIntl REQUIRED)
 | 
			
		||||
	list (APPEND logdiag_LIBS ${LIBINTL_LIBRARIES})
 | 
			
		||||
endif (WIN32)
 | 
			
		||||
 | 
			
		||||
# Build the library
 | 
			
		||||
add_library (liblogdiag STATIC ${liblogdiag_SOURCES} ${liblogdiag_HEADERS})
 | 
			
		||||
set_target_properties (liblogdiag PROPERTIES OUTPUT_NAME logdiag)
 | 
			
		||||
@@ -258,7 +265,8 @@ if (WIN32)
 | 
			
		||||
	install (DIRECTORY
 | 
			
		||||
		${WIN32_DEPENDS_PATH}/bin/
 | 
			
		||||
		DESTINATION .
 | 
			
		||||
		FILES_MATCHING PATTERN "*.dll")
 | 
			
		||||
		FILES_MATCHING PATTERN "*.dll"
 | 
			
		||||
		PATTERN "libgettext*" EXCLUDE)
 | 
			
		||||
	install (DIRECTORY
 | 
			
		||||
		${WIN32_DEPENDS_PATH}/etc/
 | 
			
		||||
		DESTINATION etc)
 | 
			
		||||
@@ -268,9 +276,20 @@ if (WIN32)
 | 
			
		||||
		${WIN32_DEPENDS_PATH}/lib/gdk-pixbuf-2.0
 | 
			
		||||
		DESTINATION lib)
 | 
			
		||||
	install (DIRECTORY
 | 
			
		||||
		${WIN32_DEPENDS_PATH}/share/locale
 | 
			
		||||
		${WIN32_DEPENDS_PATH}/share/themes
 | 
			
		||||
		DESTINATION share)
 | 
			
		||||
		${WIN32_DEPENDS_PATH}/share/themes/MS-Windows
 | 
			
		||||
		DESTINATION share/themes)
 | 
			
		||||
 | 
			
		||||
	# Avoid partial translations
 | 
			
		||||
	file (GLOB locales ${WIN32_DEPENDS_PATH}/share/locale/*)
 | 
			
		||||
	foreach (locale ${locales})
 | 
			
		||||
		get_filename_component (translation ${locale} NAME)
 | 
			
		||||
		list (FIND project_TRANSLATIONS ${translation} translation_found)
 | 
			
		||||
		if (translation_found GREATER -1)
 | 
			
		||||
			install (DIRECTORY
 | 
			
		||||
				${WIN32_DEPENDS_PATH}/share/locale/${translation}
 | 
			
		||||
				DESTINATION share/locale)
 | 
			
		||||
		endif (translation_found GREATER -1)
 | 
			
		||||
	endforeach (locale)
 | 
			
		||||
else (WIN32)
 | 
			
		||||
	install (TARGETS logdiag DESTINATION bin)
 | 
			
		||||
	install (FILES share/logdiag.desktop DESTINATION share/applications)
 | 
			
		||||
@@ -279,12 +298,12 @@ else (WIN32)
 | 
			
		||||
# Don't install the documentation yet as we don't install any library
 | 
			
		||||
#	install (DIRECTORY "${project_DOC_DIR}/html/"
 | 
			
		||||
#		DESTINATION share/gtk-doc/html/${CMAKE_PROJECT_NAME})
 | 
			
		||||
	install (FILES LICENSE DESTINATION share/doc/${CMAKE_PROJECT_NAME})
 | 
			
		||||
	install (FILES LICENSE NEWS DESTINATION share/doc/${CMAKE_PROJECT_NAME})
 | 
			
		||||
endif (WIN32)
 | 
			
		||||
 | 
			
		||||
# CPack
 | 
			
		||||
set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "Schematic editor")
 | 
			
		||||
set (CPACK_PACKAGE_VENDOR "Přemysl Janouch")
 | 
			
		||||
set (CPACK_PACKAGE_VENDOR "Premysl Janouch")
 | 
			
		||||
set (CPACK_PACKAGE_CONTACT "p.janouch@gmail.com")
 | 
			
		||||
set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
 | 
			
		||||
set (CPACK_PACKAGE_VERSION_MAJOR ${project_VERSION_MAJOR})
 | 
			
		||||
@@ -302,11 +321,25 @@ set (CPACK_PACKAGE_FILE_NAME
 | 
			
		||||
set (CPACK_PACKAGE_INSTALL_DIRECTORY
 | 
			
		||||
	"${CMAKE_PROJECT_NAME} ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}")
 | 
			
		||||
 | 
			
		||||
# FIXME: It is possible to install multiple copies. Everything screws up then.
 | 
			
		||||
set (CPACK_PACKAGE_ICON "${CMAKE_CURRENT_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_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 "
 | 
			
		||||
	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 "
 | 
			
		||||
	DeleteRegKey HKCR 'logdiag.Diagram'
 | 
			
		||||
	System::Call 'shell32::SHChangeNotify(i,i,i,i) (0x08000000, 0x1000, 0, 0)'")
 | 
			
		||||
 | 
			
		||||
string (REPLACE "http://" "http:\\\\\\\\" project_URL_NSIS "${project_URL}")
 | 
			
		||||
set (CPACK_NSIS_URL_INFO_ABOUT "${project_URL_NSIS}")
 | 
			
		||||
 | 
			
		||||
set (CPACK_DEBIAN_PACKAGE_DEPENDS
 | 
			
		||||
	"libgtk2.0-0 (>= 2.12), libjson-glib-1.0-0 (>= 0.10.4), liblua5.1-0, librsvg2-common")
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								NEWS
									
									
									
									
									
								
							@@ -1,3 +1,13 @@
 | 
			
		||||
Version 0.1.1
 | 
			
		||||
 - Rotation of symbols made possible.
 | 
			
		||||
 - Connections can also be created at ends of other connections.
 | 
			
		||||
 - Added more symbols.
 | 
			
		||||
 - Internationalization, added Czech translation.
 | 
			
		||||
 - Visual enhancement of symbol menus.
 | 
			
		||||
 - The grid is drawn much faster.
 | 
			
		||||
 - Diagrams can be opened from command line.
 | 
			
		||||
 - The diagram file type is registered on Windows.
 | 
			
		||||
 | 
			
		||||
Version 0.1.0
 | 
			
		||||
 - The first release.
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										29
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								README.md
									
									
									
									
									
								
							@@ -1,7 +1,6 @@
 | 
			
		||||
# logdiag
 | 
			
		||||
 | 
			
		||||
logdiag is a schematic editor written in GTK+. It focuses on simplicity,  
 | 
			
		||||
usability and openness.  
 | 
			
		||||
logdiag is a schematic editor written in GTK+.
 | 
			
		||||
 | 
			
		||||
__This software is considered to be alpha quality and cannot be recommended  
 | 
			
		||||
for regular usage.__  
 | 
			
		||||
@@ -44,3 +43,29 @@ Now you have two basic choices of installing the application:
 | 
			
		||||
       $ cpack -G DEB
 | 
			
		||||
       # dpkg -i logdiag-0.0-Linux-x86_64.deb
 | 
			
		||||
 | 
			
		||||
# Building from sources on Windows
 | 
			
		||||
 | 
			
		||||
First install CMake 2.8 and MinGW. Add both to the system path.  
 | 
			
		||||
If you want to build an installation package, also install NSIS.  
 | 
			
		||||
 | 
			
		||||
Run the following command in the directory with source files  
 | 
			
		||||
to automatically fetch and setup all dependencies:  
 | 
			
		||||
    > cmake -P Win32Depends.cmake
 | 
			
		||||
 | 
			
		||||
Reserve a directory for an out-of-source 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.  
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -44,7 +44,8 @@ set (pkg_gtk_urls
 | 
			
		||||
	"${pkg_gtk_root}/librsvg/2.32/svg-gdk-pixbuf-loader_2.32.1-1_win32.zip"
 | 
			
		||||
	"${pkg_gtk_root}/libcroco/0.6/libcroco_0.6.2-1_win32.zip"
 | 
			
		||||
	"${pkg_gtk_root}/dependencies/libxml2_2.7.7-1_win32.zip"
 | 
			
		||||
	"${pkg_gtk_root}/dependencies/libxml2-dev_2.7.7-1_win32.zip")
 | 
			
		||||
	"${pkg_gtk_root}/dependencies/libxml2-dev_2.7.7-1_win32.zip"
 | 
			
		||||
	"${pkg_gtk_root}/dependencies/gettext-tools-0.17.zip")
 | 
			
		||||
set (pkg_gtk_md5
 | 
			
		||||
	"a545c0ca1e6a312701d42a18e49572af"
 | 
			
		||||
	"2c712a8d7a652363241c0967098515db"
 | 
			
		||||
@@ -52,16 +53,17 @@ set (pkg_gtk_md5
 | 
			
		||||
	"bf4e34f1f175b88430159d33e01d0c49"
 | 
			
		||||
	"2d90c71404be0de4e5f3259f63a3e278"
 | 
			
		||||
	"bd6b3d8c35e06a00937db65887c6e287"
 | 
			
		||||
	"b6f59b70eef0992df37f8db891d4b283")
 | 
			
		||||
	"b6f59b70eef0992df37f8db891d4b283"
 | 
			
		||||
	"09baff956ebd1c391c7f71e9bd768edd")
 | 
			
		||||
 | 
			
		||||
set (pkg_opensuse_root "http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_Factory/noarch")
 | 
			
		||||
set (pkg_opensuse_urls
 | 
			
		||||
	"${pkg_opensuse_root}/mingw32-libjson-glib-0.12.0-2.38.noarch.rpm"
 | 
			
		||||
	"${pkg_opensuse_root}/mingw32-json-glib-devel-0.12.0-2.38.noarch.rpm")
 | 
			
		||||
	"${pkg_opensuse_root}/mingw32-libjson-glib-0.12.0-3.1.noarch.rpm"
 | 
			
		||||
	"${pkg_opensuse_root}/mingw32-json-glib-devel-0.12.0-3.1.noarch.rpm")
 | 
			
		||||
set (pkg_opensuse_strip "usr/i686-pc-mingw32/sys-root/mingw")
 | 
			
		||||
set (pkg_opensuse_md5
 | 
			
		||||
	"2ca72896a3888c9081104e16a996a234"
 | 
			
		||||
	"1c50ab8368b54f9ddf14dbca001477b9")
 | 
			
		||||
	"df41a913984b865a46d234ad59703c8c"
 | 
			
		||||
	"13702ee3e22f79f42948ec5cbb6e23cb")
 | 
			
		||||
 | 
			
		||||
set (pkg_mingw_lua_root "http://sourceforge.net/projects/mingw-cross/files/%5BLIB%5D%20Lua")
 | 
			
		||||
set (pkg_mingw_lua_name "mingw32-lua-5.1.4-2")
 | 
			
		||||
@@ -156,11 +158,12 @@ endforeach (pkg_set)
 | 
			
		||||
file (WRITE ${working_dir}/etc/gtk-2.0/gtkrc
 | 
			
		||||
	"gtk-theme-name = \"MS-Windows\"")
 | 
			
		||||
 | 
			
		||||
set (gdk_pixbuf_libdir ${working_dir}/lib/gdk-pixbuf-2.0/2.10.0)
 | 
			
		||||
set (gdk_pixbuf_libdir lib/gdk-pixbuf-2.0/2.10.0)
 | 
			
		||||
set (ENV{GDK_PIXBUF_MODULE_FILE} ${gdk_pixbuf_libdir}/loaders.cache)
 | 
			
		||||
set (ENV{GDK_PIXBUF_MODULEDIR} ${gdk_pixbuf_libdir}/loaders)
 | 
			
		||||
execute_process (COMMAND
 | 
			
		||||
	${working_dir}/bin/gdk-pixbuf-query-loaders --update-cache
 | 
			
		||||
	WORKING_DIRECTORY "${working_dir}"
 | 
			
		||||
	RESULT_VARIABLE result)
 | 
			
		||||
if (result)
 | 
			
		||||
	message (FATAL_ERROR "gdk-pixbuf-query-loaders failed")
 | 
			
		||||
 
 | 
			
		||||
@@ -447,6 +447,7 @@ foreach(_GTK2_component ${GTK2_FIND_COMPONENTS})
 | 
			
		||||
 | 
			
		||||
        _GTK2_FIND_INCLUDE_DIR(GTK2_PANGO_INCLUDE_DIR pango/pango.h)
 | 
			
		||||
        _GTK2_FIND_LIBRARY    (GTK2_PANGO_LIBRARY pango false true)
 | 
			
		||||
        _GTK2_FIND_LIBRARY    (GTK2_PANGOCAIRO_LIBRARY pangocairo false true)
 | 
			
		||||
 | 
			
		||||
        _GTK2_FIND_INCLUDE_DIR(GTK2_ATK_INCLUDE_DIR atk/atk.h)
 | 
			
		||||
        _GTK2_FIND_LIBRARY    (GTK2_ATK_LIBRARY atk false true)
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 | 
			
		||||
#=============================================================================
 | 
			
		||||
# Copyright 2007-2009 Kitware, Inc.
 | 
			
		||||
# Copyright 2010 Přemysl Janouch
 | 
			
		||||
# 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:
 | 
			
		||||
@@ -41,7 +41,6 @@
 | 
			
		||||
#=============================================================================
 | 
			
		||||
 | 
			
		||||
find_program (GETTEXT_MSGMERGE_EXECUTABLE msgmerge)
 | 
			
		||||
 | 
			
		||||
find_program (GETTEXT_MSGFMT_EXECUTABLE msgfmt)
 | 
			
		||||
 | 
			
		||||
macro (GETTEXT_CREATE_TRANSLATIONS _potFile _firstPoFileArg)
 | 
			
		||||
@@ -93,13 +92,8 @@ macro (GETTEXT_CREATE_TRANSLATIONS _potFile _firstPoFileArg)
 | 
			
		||||
		DEPENDS ${_gmoFiles})
 | 
			
		||||
endmacro (GETTEXT_CREATE_TRANSLATIONS)
 | 
			
		||||
 | 
			
		||||
if (GETTEXT_MSGMERGE_EXECUTABLE AND GETTEXT_MSGFMT_EXECUTABLE)
 | 
			
		||||
	set (GETTEXT_FOUND TRUE)
 | 
			
		||||
else (GETTEXT_MSGMERGE_EXECUTABLE AND GETTEXT_MSGFMT_EXECUTABLE)
 | 
			
		||||
	set (GETTEXT_FOUND FALSE)
 | 
			
		||||
	if (GetText_REQUIRED)
 | 
			
		||||
		message (FATAL_ERROR "GetText not found")
 | 
			
		||||
	endif (GetText_REQUIRED)
 | 
			
		||||
endif (GETTEXT_MSGMERGE_EXECUTABLE AND GETTEXT_MSGFMT_EXECUTABLE)
 | 
			
		||||
include (FindPackageHandleStandardArgs)
 | 
			
		||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS (Gettext DEFAULT_MSG
 | 
			
		||||
	GETTEXT_MSGMERGE_EXECUTABLE GETTEXT_MSGFMT_EXECUTABLE)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										38
									
								
								cmake/FindLibIntl.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								cmake/FindLibIntl.cmake
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,38 @@
 | 
			
		||||
# - Find libintl
 | 
			
		||||
# This module looks for libintl.
 | 
			
		||||
# This module defines the following values:
 | 
			
		||||
#    LIBINTL_FOUND
 | 
			
		||||
#    LIBINTL_LIBRARIES
 | 
			
		||||
 | 
			
		||||
#=============================================================================
 | 
			
		||||
# Copyright Přemysl Janouch 2011
 | 
			
		||||
# All rights reserved.
 | 
			
		||||
#
 | 
			
		||||
# Redistribution and use in source and binary forms, with or without
 | 
			
		||||
# modification, are permitted provided that the following conditions are met:
 | 
			
		||||
#     * Redistributions of source code must retain the above copyright
 | 
			
		||||
#       notice, this list of conditions and the following disclaimer.
 | 
			
		||||
#     * Redistributions in binary form must reproduce the above copyright
 | 
			
		||||
#       notice, this list of conditions and the following disclaimer in the
 | 
			
		||||
#       documentation and/or other materials provided with the distribution.
 | 
			
		||||
#
 | 
			
		||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
 | 
			
		||||
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 | 
			
		||||
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 | 
			
		||||
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE
 | 
			
		||||
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
			
		||||
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | 
			
		||||
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
			
		||||
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
			
		||||
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | 
			
		||||
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
 | 
			
		||||
# OF SUCH DAMAGE.
 | 
			
		||||
#=============================================================================
 | 
			
		||||
 | 
			
		||||
find_library (LIBINTL_LIBRARIES intl)
 | 
			
		||||
 | 
			
		||||
include (FindPackageHandleStandardArgs)
 | 
			
		||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS (LibIntl DEFAULT_MSG LIBINTL_LIBRARIES)
 | 
			
		||||
 | 
			
		||||
mark_as_advanced (LIBINTL_LIBRARIES)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										19
									
								
								config.h.in
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								config.h.in
									
									
									
									
									
								
							@@ -25,22 +25,15 @@
 | 
			
		||||
#cmakedefine HAVE_SANE___RESTRICT
 | 
			
		||||
#cmakedefine HAVE_RESTRICT
 | 
			
		||||
 | 
			
		||||
#cmakedefine HAVE_GETTEXT
 | 
			
		||||
 | 
			
		||||
#include <glib/gi18n.h>
 | 
			
		||||
 | 
			
		||||
#define Q_(s) (s)
 | 
			
		||||
#ifdef HAVE_GETTEXT
 | 
			
		||||
	#include <locale.h>
 | 
			
		||||
	#include <libintl.h>
 | 
			
		||||
	#define _(s) gettext(s)
 | 
			
		||||
	#define N_(s1, s2, n) ngettext(s1, s2, n)
 | 
			
		||||
 | 
			
		||||
	#define GETTEXT_DOMAIN "${PROJECT_NAME}"
 | 
			
		||||
#define GETTEXT_DOMAIN "${PROJECT_NAME}"
 | 
			
		||||
#ifdef _WIN32
 | 
			
		||||
	#define GETTEXT_DIRNAME "share/locale"
 | 
			
		||||
#else
 | 
			
		||||
	#define GETTEXT_DIRNAME "${CMAKE_INSTALL_PREFIX}/share/locale"
 | 
			
		||||
#else /* ! HAVE_GETTEXT */
 | 
			
		||||
	#define _(s) (s)
 | 
			
		||||
	#define N_(s1, s2, n) ((n) == 1 ? (s1) : (s2))
 | 
			
		||||
#endif /* ! HAVE_GETTEXT */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef HAVE_SANE___RESTRICT
 | 
			
		||||
 
 | 
			
		||||
@@ -1,95 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
 * ld-canvas.h
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2010 - 2011. All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __LD_CANVAS_H__
 | 
			
		||||
#define __LD_CANVAS_H__
 | 
			
		||||
 | 
			
		||||
G_BEGIN_DECLS
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define LD_TYPE_CANVAS (ld_canvas_get_type ())
 | 
			
		||||
#define LD_CANVAS(obj) (G_TYPE_CHECK_INSTANCE_CAST \
 | 
			
		||||
	((obj), LD_TYPE_CANVAS, LdCanvas))
 | 
			
		||||
#define LD_CANVAS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST \
 | 
			
		||||
	((klass), LD_TYPE_CANVAS, LdCanvasClass))
 | 
			
		||||
#define LD_IS_CANVAS(obj) (G_TYPE_CHECK_INSTANCE_TYPE \
 | 
			
		||||
	((obj), LD_TYPE_CANVAS))
 | 
			
		||||
#define LD_IS_CANVAS_CLASS(klass) (G_TYPE_CHECK_INSTANCE_TYPE \
 | 
			
		||||
	((klass), LD_TYPE_CANVAS))
 | 
			
		||||
#define LD_CANVAS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS \
 | 
			
		||||
	((obj), LD_CANVAS, LdCanvasClass))
 | 
			
		||||
 | 
			
		||||
typedef struct _LdCanvas LdCanvas;
 | 
			
		||||
typedef struct _LdCanvasPrivate LdCanvasPrivate;
 | 
			
		||||
typedef struct _LdCanvasClass LdCanvasClass;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * LdCanvas:
 | 
			
		||||
 */
 | 
			
		||||
struct _LdCanvas
 | 
			
		||||
{
 | 
			
		||||
/*< private >*/
 | 
			
		||||
	GtkDrawingArea parent_instance;
 | 
			
		||||
	LdCanvasPrivate *priv;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct _LdCanvasClass
 | 
			
		||||
{
 | 
			
		||||
/*< private >*/
 | 
			
		||||
	GtkDrawingAreaClass parent_class;
 | 
			
		||||
 | 
			
		||||
	guint cancel_operation_signal;
 | 
			
		||||
	guint move_signal;
 | 
			
		||||
 | 
			
		||||
	void (*set_scroll_adjustments) (LdCanvas *self,
 | 
			
		||||
		GtkAdjustment *horizontal, GtkAdjustment *vertical);
 | 
			
		||||
	void (*cancel_operation) (LdCanvas *self);
 | 
			
		||||
	void (*move) (LdCanvas *self, gdouble dx, gdouble dy);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * LD_CANVAS_BASE_UNIT_LENGTH:
 | 
			
		||||
 *
 | 
			
		||||
 * Length of the base unit in milimetres.
 | 
			
		||||
 */
 | 
			
		||||
#define LD_CANVAS_BASE_UNIT_LENGTH 2.5
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
GType ld_canvas_get_type (void) G_GNUC_CONST;
 | 
			
		||||
 | 
			
		||||
GtkWidget *ld_canvas_new (void);
 | 
			
		||||
 | 
			
		||||
void ld_canvas_set_diagram (LdCanvas *self, LdDiagram *diagram);
 | 
			
		||||
LdDiagram *ld_canvas_get_diagram (LdCanvas *self);
 | 
			
		||||
void ld_canvas_set_library (LdCanvas *self, LdLibrary *library);
 | 
			
		||||
LdLibrary *ld_canvas_get_library (LdCanvas *self);
 | 
			
		||||
 | 
			
		||||
void ld_canvas_widget_to_diagram_coords (LdCanvas *self,
 | 
			
		||||
	gdouble wx, gdouble wy, gdouble *dx, gdouble *dy);
 | 
			
		||||
void ld_canvas_diagram_to_widget_coords (LdCanvas *self,
 | 
			
		||||
	gdouble dx, gdouble dy, gdouble *wx, gdouble *wy);
 | 
			
		||||
 | 
			
		||||
gdouble ld_canvas_get_zoom (LdCanvas *self);
 | 
			
		||||
void ld_canvas_set_zoom (LdCanvas *self, gdouble zoom);
 | 
			
		||||
gboolean ld_canvas_can_zoom_in (LdCanvas *self);
 | 
			
		||||
void ld_canvas_zoom_in (LdCanvas *self);
 | 
			
		||||
gboolean ld_canvas_can_zoom_out (LdCanvas *self);
 | 
			
		||||
void ld_canvas_zoom_out (LdCanvas *self);
 | 
			
		||||
 | 
			
		||||
void ld_canvas_add_object_begin (LdCanvas *self, LdDiagramObject *object);
 | 
			
		||||
 | 
			
		||||
/* TODO: The rest of the interface. */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
G_END_DECLS
 | 
			
		||||
 | 
			
		||||
#endif /* ! __LD_CANVAS_H__ */
 | 
			
		||||
@@ -17,7 +17,7 @@
 | 
			
		||||
/**
 | 
			
		||||
 * SECTION:ld-diagram-object
 | 
			
		||||
 * @short_description: A diagram object
 | 
			
		||||
 * @see_also: #LdDiagram, #LdCanvas
 | 
			
		||||
 * @see_also: #LdDiagram, #LdDiagramView
 | 
			
		||||
 *
 | 
			
		||||
 * #LdDiagramObject represents an object in an #LdDiagram.
 | 
			
		||||
 */
 | 
			
		||||
@@ -25,10 +25,12 @@
 | 
			
		||||
/*
 | 
			
		||||
 * LdDiagramObjectPrivate:
 | 
			
		||||
 * @storage: storage for object parameters.
 | 
			
		||||
 * @lock_history: lock emitting of changes.
 | 
			
		||||
 */
 | 
			
		||||
struct _LdDiagramObjectPrivate
 | 
			
		||||
{
 | 
			
		||||
	JsonObject *storage;
 | 
			
		||||
	gboolean lock_history;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
typedef struct _SetParamActionData SetParamActionData;
 | 
			
		||||
@@ -309,7 +311,10 @@ ld_diagram_object_get_data_warn:
 | 
			
		||||
 | 
			
		||||
ld_diagram_object_get_data_default:
 | 
			
		||||
	g_param_value_set_default (pspec, data);
 | 
			
		||||
 | 
			
		||||
	self->priv->lock_history = TRUE;
 | 
			
		||||
	g_object_set_property (G_OBJECT (self), name, data);
 | 
			
		||||
	self->priv->lock_history = FALSE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -328,7 +333,7 @@ ld_diagram_object_set_data_for_param (LdDiagramObject *self,
 | 
			
		||||
	SetParamActionData *action_data;
 | 
			
		||||
	JsonObject *storage;
 | 
			
		||||
	const gchar *name;
 | 
			
		||||
	JsonNode *node;
 | 
			
		||||
	JsonNode *new_node, *old_node;
 | 
			
		||||
 | 
			
		||||
	g_return_if_fail (LD_IS_DIAGRAM_OBJECT (self));
 | 
			
		||||
	g_return_if_fail (G_IS_VALUE (data));
 | 
			
		||||
@@ -337,23 +342,31 @@ ld_diagram_object_set_data_for_param (LdDiagramObject *self,
 | 
			
		||||
	storage = ld_diagram_object_get_storage (self);
 | 
			
		||||
	name = g_param_spec_get_name (pspec);
 | 
			
		||||
 | 
			
		||||
	action_data = g_slice_new (SetParamActionData);
 | 
			
		||||
	action_data->self = g_object_ref (self);
 | 
			
		||||
	action_data->param_name = g_strdup (g_param_spec_get_name (pspec));
 | 
			
		||||
	if (!self->priv->lock_history)
 | 
			
		||||
	{
 | 
			
		||||
		action_data = g_slice_new (SetParamActionData);
 | 
			
		||||
		action_data->self = g_object_ref (self);
 | 
			
		||||
		action_data->param_name = g_strdup (g_param_spec_get_name (pspec));
 | 
			
		||||
 | 
			
		||||
	node = json_object_get_member (storage, name);
 | 
			
		||||
	action_data->old_node = node ? json_node_copy (node) : NULL;
 | 
			
		||||
		old_node = json_object_get_member (storage, name);
 | 
			
		||||
		action_data->old_node = old_node ? json_node_copy (old_node) : NULL;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	node = json_node_new (JSON_NODE_VALUE);
 | 
			
		||||
	json_node_set_value (node, data);
 | 
			
		||||
	action_data->new_node = json_node_copy (node);
 | 
			
		||||
	new_node = json_node_new (JSON_NODE_VALUE);
 | 
			
		||||
	json_node_set_value (new_node, data);
 | 
			
		||||
 | 
			
		||||
	json_object_set_member (storage, name, node);
 | 
			
		||||
	if (!self->priv->lock_history)
 | 
			
		||||
		action_data->new_node = json_node_copy (new_node);
 | 
			
		||||
 | 
			
		||||
	action = ld_undo_action_new (on_set_param_undo, on_set_param_redo,
 | 
			
		||||
		on_set_param_destroy, action_data);
 | 
			
		||||
	ld_diagram_object_changed (self, action);
 | 
			
		||||
	g_object_unref (action);
 | 
			
		||||
	json_object_set_member (storage, name, new_node);
 | 
			
		||||
 | 
			
		||||
	if (!self->priv->lock_history)
 | 
			
		||||
	{
 | 
			
		||||
		action = ld_undo_action_new (on_set_param_undo, on_set_param_redo,
 | 
			
		||||
			on_set_param_destroy, action_data);
 | 
			
		||||
		ld_diagram_object_changed (self, action);
 | 
			
		||||
		g_object_unref (action);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
 
 | 
			
		||||
@@ -23,7 +23,8 @@
 | 
			
		||||
enum
 | 
			
		||||
{
 | 
			
		||||
	PROP_0,
 | 
			
		||||
	PROP_CLASS
 | 
			
		||||
	PROP_CLASS,
 | 
			
		||||
	PROP_ROTATION
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static void ld_diagram_symbol_get_property (GObject *object, guint property_id,
 | 
			
		||||
@@ -53,6 +54,16 @@ ld_diagram_symbol_class_init (LdDiagramSymbolClass *klass)
 | 
			
		||||
		"The class of this symbol.",
 | 
			
		||||
		"", G_PARAM_READWRITE);
 | 
			
		||||
	g_object_class_install_property (object_class, PROP_CLASS, pspec);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * LdDiagramSymbol:rotation:
 | 
			
		||||
 *
 | 
			
		||||
 * Rotation of this symbol.
 | 
			
		||||
 */
 | 
			
		||||
	pspec = g_param_spec_int ("rotation", "Rotation",
 | 
			
		||||
		"Rotation of this symbol.",
 | 
			
		||||
		0, 3, 0, G_PARAM_READWRITE);
 | 
			
		||||
	g_object_class_install_property (object_class, PROP_ROTATION, pspec);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
@@ -70,6 +81,7 @@ ld_diagram_symbol_get_property (GObject *object, guint property_id,
 | 
			
		||||
	switch (property_id)
 | 
			
		||||
	{
 | 
			
		||||
	case PROP_CLASS:
 | 
			
		||||
	case PROP_ROTATION:
 | 
			
		||||
		ld_diagram_object_get_data_for_param (self, value, pspec);
 | 
			
		||||
		break;
 | 
			
		||||
	default:
 | 
			
		||||
@@ -87,6 +99,7 @@ ld_diagram_symbol_set_property (GObject *object, guint property_id,
 | 
			
		||||
	switch (property_id)
 | 
			
		||||
	{
 | 
			
		||||
	case PROP_CLASS:
 | 
			
		||||
	case PROP_ROTATION:
 | 
			
		||||
		ld_diagram_object_set_data_for_param (self, value, pspec);
 | 
			
		||||
		break;
 | 
			
		||||
	default:
 | 
			
		||||
@@ -139,3 +152,33 @@ ld_diagram_symbol_set_class (LdDiagramSymbol *self, const gchar *klass)
 | 
			
		||||
	g_return_if_fail (LD_IS_DIAGRAM_SYMBOL (self));
 | 
			
		||||
	g_object_set (self, "class", klass, NULL);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * ld_diagram_symbol_get_rotation:
 | 
			
		||||
 * @self: an #LdDiagramSymbol object.
 | 
			
		||||
 *
 | 
			
		||||
 * Return value: rotation of the symbol.
 | 
			
		||||
 */
 | 
			
		||||
gint
 | 
			
		||||
ld_diagram_symbol_get_rotation (LdDiagramSymbol *self)
 | 
			
		||||
{
 | 
			
		||||
	gint rotation;
 | 
			
		||||
 | 
			
		||||
	g_return_val_if_fail (LD_IS_DIAGRAM_SYMBOL (self), 0);
 | 
			
		||||
	g_object_get (self, "rotation", &rotation, NULL);
 | 
			
		||||
	return rotation;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * ld_diagram_symbol_set_rotation:
 | 
			
		||||
 * @self: an #LdDiagramSymbol object.
 | 
			
		||||
 * @rotation: the rotation.
 | 
			
		||||
 *
 | 
			
		||||
 * Set rotation of the symbol.
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
ld_diagram_symbol_set_rotation (LdDiagramSymbol *self, gint rotation)
 | 
			
		||||
{
 | 
			
		||||
	g_return_if_fail (LD_IS_DIAGRAM_SYMBOL (self));
 | 
			
		||||
	g_object_set (self, "rotation", rotation, NULL);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -50,11 +50,21 @@ struct _LdDiagramSymbolClass
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
enum
 | 
			
		||||
{
 | 
			
		||||
	LD_DIAGRAM_SYMBOL_ROTATION_0,
 | 
			
		||||
	LD_DIAGRAM_SYMBOL_ROTATION_90,
 | 
			
		||||
	LD_DIAGRAM_SYMBOL_ROTATION_180,
 | 
			
		||||
	LD_DIAGRAM_SYMBOL_ROTATION_270
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
GType ld_diagram_symbol_get_type (void) G_GNUC_CONST;
 | 
			
		||||
 | 
			
		||||
LdDiagramSymbol *ld_diagram_symbol_new (JsonObject *storage);
 | 
			
		||||
gchar *ld_diagram_symbol_get_class (LdDiagramSymbol *self);
 | 
			
		||||
void ld_diagram_symbol_set_class (LdDiagramSymbol *self, const gchar *klass);
 | 
			
		||||
gint ld_diagram_symbol_get_rotation (LdDiagramSymbol *self);
 | 
			
		||||
void ld_diagram_symbol_set_rotation (LdDiagramSymbol *self, gint rotation);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
G_END_DECLS
 | 
			
		||||
 
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										99
									
								
								liblogdiag/ld-diagram-view.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										99
									
								
								liblogdiag/ld-diagram-view.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,99 @@
 | 
			
		||||
/*
 | 
			
		||||
 * ld-diagram-view.h
 | 
			
		||||
 *
 | 
			
		||||
 * This file is a part of logdiag.
 | 
			
		||||
 * Copyright Přemysl Janouch 2010 - 2011. All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * See the file LICENSE for licensing information.
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __LD_DIAGRAM_VIEW_H__
 | 
			
		||||
#define __LD_DIAGRAM_VIEW_H__
 | 
			
		||||
 | 
			
		||||
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))
 | 
			
		||||
 | 
			
		||||
typedef struct _LdDiagramView LdDiagramView;
 | 
			
		||||
typedef struct _LdDiagramViewPrivate LdDiagramViewPrivate;
 | 
			
		||||
typedef struct _LdDiagramViewClass LdDiagramViewClass;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * LdDiagramView:
 | 
			
		||||
 */
 | 
			
		||||
struct _LdDiagramView
 | 
			
		||||
{
 | 
			
		||||
/*< private >*/
 | 
			
		||||
	GtkDrawingArea parent_instance;
 | 
			
		||||
	LdDiagramViewPrivate *priv;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct _LdDiagramViewClass
 | 
			
		||||
{
 | 
			
		||||
/*< private >*/
 | 
			
		||||
	GtkDrawingAreaClass parent_class;
 | 
			
		||||
 | 
			
		||||
	guint cancel_operation_signal;
 | 
			
		||||
	guint move_signal;
 | 
			
		||||
 | 
			
		||||
	void (*set_scroll_adjustments) (LdDiagramView *self,
 | 
			
		||||
		GtkAdjustment *horizontal, GtkAdjustment *vertical);
 | 
			
		||||
	void (*cancel_operation) (LdDiagramView *self);
 | 
			
		||||
	void (*move) (LdDiagramView *self, gdouble dx, gdouble dy);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * LD_DIAGRAM_VIEW_BASE_UNIT_LENGTH:
 | 
			
		||||
 *
 | 
			
		||||
 * Length of the base unit in milimetres.
 | 
			
		||||
 */
 | 
			
		||||
#define LD_DIAGRAM_VIEW_BASE_UNIT_LENGTH 2.5
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
GType ld_diagram_view_get_type (void) G_GNUC_CONST;
 | 
			
		||||
 | 
			
		||||
GtkWidget *ld_diagram_view_new (void);
 | 
			
		||||
 | 
			
		||||
void ld_diagram_view_set_diagram (LdDiagramView *self, LdDiagram *diagram);
 | 
			
		||||
LdDiagram *ld_diagram_view_get_diagram (LdDiagramView *self);
 | 
			
		||||
void ld_diagram_view_set_library (LdDiagramView *self, LdLibrary *library);
 | 
			
		||||
LdLibrary *ld_diagram_view_get_library (LdDiagramView *self);
 | 
			
		||||
 | 
			
		||||
void ld_diagram_view_widget_to_diagram_coords (LdDiagramView *self,
 | 
			
		||||
	gdouble wx, gdouble wy, gdouble *dx, gdouble *dy);
 | 
			
		||||
void ld_diagram_view_diagram_to_widget_coords (LdDiagramView *self,
 | 
			
		||||
	gdouble dx, gdouble dy, gdouble *wx, gdouble *wy);
 | 
			
		||||
 | 
			
		||||
gdouble ld_diagram_view_get_x (LdDiagramView *self);
 | 
			
		||||
void ld_diagram_view_set_x (LdDiagramView *self, gdouble x);
 | 
			
		||||
gdouble ld_diagram_view_get_y (LdDiagramView *self);
 | 
			
		||||
void ld_diagram_view_set_y (LdDiagramView *self, gdouble y);
 | 
			
		||||
 | 
			
		||||
gdouble ld_diagram_view_get_zoom (LdDiagramView *self);
 | 
			
		||||
void ld_diagram_view_set_zoom (LdDiagramView *self, gdouble zoom);
 | 
			
		||||
gboolean ld_diagram_view_can_zoom_in (LdDiagramView *self);
 | 
			
		||||
void ld_diagram_view_zoom_in (LdDiagramView *self);
 | 
			
		||||
gboolean ld_diagram_view_can_zoom_out (LdDiagramView *self);
 | 
			
		||||
void ld_diagram_view_zoom_out (LdDiagramView *self);
 | 
			
		||||
 | 
			
		||||
void ld_diagram_view_add_object_begin (LdDiagramView *self,
 | 
			
		||||
	LdDiagramObject *object);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
G_END_DECLS
 | 
			
		||||
 | 
			
		||||
#endif /* ! __LD_DIAGRAM_VIEW_H__ */
 | 
			
		||||
@@ -15,7 +15,7 @@
 | 
			
		||||
/**
 | 
			
		||||
 * SECTION:ld-diagram
 | 
			
		||||
 * @short_description: A model for diagrams
 | 
			
		||||
 * @see_also: #LdCanvas
 | 
			
		||||
 * @see_also: #LdDiagramView
 | 
			
		||||
 *
 | 
			
		||||
 * #LdDiagram is a model used for storing diagrams.
 | 
			
		||||
 */
 | 
			
		||||
 
 | 
			
		||||
@@ -61,25 +61,25 @@ struct _SymbolMenuData
 | 
			
		||||
 | 
			
		||||
enum
 | 
			
		||||
{
 | 
			
		||||
	CANVAS_HANDLER_EXPOSE,
 | 
			
		||||
	CANVAS_HANDLER_MOTION_NOTIFY,
 | 
			
		||||
	CANVAS_HANDLER_BUTTON_PRESS,
 | 
			
		||||
	CANVAS_HANDLER_BUTTON_RELEASE,
 | 
			
		||||
	CANVAS_HANDLER_COUNT
 | 
			
		||||
	VIEW_HANDLER_EXPOSE,
 | 
			
		||||
	VIEW_HANDLER_MOTION_NOTIFY,
 | 
			
		||||
	VIEW_HANDLER_BUTTON_PRESS,
 | 
			
		||||
	VIEW_HANDLER_BUTTON_RELEASE,
 | 
			
		||||
	VIEW_HANDLER_COUNT
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * LdLibraryToolbarPrivate:
 | 
			
		||||
 * @library: a library object assigned to this canvas as a model.
 | 
			
		||||
 * @canvas: a canvas object for showing symbol menus.
 | 
			
		||||
 * @canvas_handlers: signal handlers that hook the canvas.
 | 
			
		||||
 * @library: a library object assigned as a model.
 | 
			
		||||
 * @view: a view widget for showing symbol menus.
 | 
			
		||||
 * @view_handlers: signal handlers that hook the view.
 | 
			
		||||
 * @symbol_menu: data related to menus.
 | 
			
		||||
 */
 | 
			
		||||
struct _LdLibraryToolbarPrivate
 | 
			
		||||
{
 | 
			
		||||
	LdLibrary *library;
 | 
			
		||||
	LdCanvas *canvas;
 | 
			
		||||
	gulong canvas_handlers[CANVAS_HANDLER_COUNT];
 | 
			
		||||
	LdDiagramView *view;
 | 
			
		||||
	gulong view_handlers[VIEW_HANDLER_COUNT];
 | 
			
		||||
	SymbolMenuData symbol_menu;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@@ -87,7 +87,7 @@ enum
 | 
			
		||||
{
 | 
			
		||||
	PROP_0,
 | 
			
		||||
	PROP_LIBRARY,
 | 
			
		||||
	PROP_CANVAS
 | 
			
		||||
	PROP_VIEW
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static void ld_library_toolbar_get_property (GObject *object, guint property_id,
 | 
			
		||||
@@ -106,16 +106,16 @@ static void emit_symbol_signal (LdLibraryToolbar *self,
 | 
			
		||||
static void on_category_toggle (GtkToggleButton *toggle_button,
 | 
			
		||||
	gpointer user_data);
 | 
			
		||||
 | 
			
		||||
static inline void block_canvas_handlers (LdLibraryToolbar *self);
 | 
			
		||||
static inline void unblock_canvas_handlers (LdLibraryToolbar *self);
 | 
			
		||||
static inline void disconnect_canvas_handlers (LdLibraryToolbar *self);
 | 
			
		||||
static gboolean on_canvas_exposed (GtkWidget *widget,
 | 
			
		||||
static inline void block_view_handlers (LdLibraryToolbar *self);
 | 
			
		||||
static inline void unblock_view_handlers (LdLibraryToolbar *self);
 | 
			
		||||
static inline void disconnect_view_handlers (LdLibraryToolbar *self);
 | 
			
		||||
static gboolean on_view_exposed (GtkWidget *widget,
 | 
			
		||||
	GdkEventExpose *event, gpointer user_data);
 | 
			
		||||
static gboolean on_canvas_motion_notify (GtkWidget *widget,
 | 
			
		||||
static gboolean on_view_motion_notify (GtkWidget *widget,
 | 
			
		||||
	GdkEventMotion *event, gpointer user_data);
 | 
			
		||||
static gboolean on_canvas_button_press (GtkWidget *widget,
 | 
			
		||||
static gboolean on_view_button_press (GtkWidget *widget,
 | 
			
		||||
	GdkEventButton *event, gpointer user_data);
 | 
			
		||||
static gboolean on_canvas_button_release (GtkWidget *widget,
 | 
			
		||||
static gboolean on_view_button_release (GtkWidget *widget,
 | 
			
		||||
	GdkEventButton *event, gpointer user_data);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -138,22 +138,22 @@ ld_library_toolbar_class_init (LdLibraryToolbarClass *klass)
 | 
			
		||||
/**
 | 
			
		||||
 * LdLibraryToolbar:library:
 | 
			
		||||
 *
 | 
			
		||||
 * The #LdLibrary that this canvas retrieves symbols from.
 | 
			
		||||
 * The #LdLibrary that this toolbar retrieves symbols from.
 | 
			
		||||
 */
 | 
			
		||||
	pspec = g_param_spec_object ("library", "Library",
 | 
			
		||||
		"The library that this canvas retrieves symbols from.",
 | 
			
		||||
		"The library that this toolbar retrieves symbols from.",
 | 
			
		||||
		LD_TYPE_LIBRARY, G_PARAM_READWRITE);
 | 
			
		||||
	g_object_class_install_property (object_class, PROP_LIBRARY, pspec);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * LdLibraryToolbar:canvas:
 | 
			
		||||
 * LdLibraryToolbar:view:
 | 
			
		||||
 *
 | 
			
		||||
 * The #LdCanvas misused for showing symbol menus.
 | 
			
		||||
 * The #LdDiagramView widget misused for showing symbol menus.
 | 
			
		||||
 */
 | 
			
		||||
	pspec = g_param_spec_object ("canvas", "Canvas",
 | 
			
		||||
		"The canvas misused for showing symbol menus.",
 | 
			
		||||
		LD_TYPE_CANVAS, G_PARAM_READWRITE);
 | 
			
		||||
	g_object_class_install_property (object_class, PROP_CANVAS, pspec);
 | 
			
		||||
	pspec = g_param_spec_object ("view", "View",
 | 
			
		||||
		"The view widget misused for showing symbol menus.",
 | 
			
		||||
		LD_TYPE_DIAGRAM_VIEW, G_PARAM_READWRITE);
 | 
			
		||||
	g_object_class_install_property (object_class, PROP_VIEW, pspec);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * LdLibraryToolbar::symbol-chosen:
 | 
			
		||||
@@ -218,7 +218,7 @@ ld_library_toolbar_dispose (GObject *gobject)
 | 
			
		||||
	self = LD_LIBRARY_TOOLBAR (gobject);
 | 
			
		||||
 | 
			
		||||
	ld_library_toolbar_set_library (self, NULL);
 | 
			
		||||
	ld_library_toolbar_set_canvas (self, NULL);
 | 
			
		||||
	ld_library_toolbar_set_view (self, NULL);
 | 
			
		||||
 | 
			
		||||
	/* Chain up to the parent class. */
 | 
			
		||||
	G_OBJECT_CLASS (ld_library_toolbar_parent_class)->dispose (gobject);
 | 
			
		||||
@@ -236,8 +236,8 @@ ld_library_toolbar_get_property (GObject *object, guint property_id,
 | 
			
		||||
	case PROP_LIBRARY:
 | 
			
		||||
		g_value_set_object (value, ld_library_toolbar_get_library (self));
 | 
			
		||||
		break;
 | 
			
		||||
	case PROP_CANVAS:
 | 
			
		||||
		g_value_set_object (value, ld_library_toolbar_get_canvas (self));
 | 
			
		||||
	case PROP_VIEW:
 | 
			
		||||
		g_value_set_object (value, ld_library_toolbar_get_view (self));
 | 
			
		||||
		break;
 | 
			
		||||
	default:
 | 
			
		||||
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
 | 
			
		||||
@@ -257,9 +257,9 @@ ld_library_toolbar_set_property (GObject *object, guint property_id,
 | 
			
		||||
		ld_library_toolbar_set_library (self,
 | 
			
		||||
			LD_LIBRARY (g_value_get_object (value)));
 | 
			
		||||
		break;
 | 
			
		||||
	case PROP_CANVAS:
 | 
			
		||||
		ld_library_toolbar_set_canvas (self,
 | 
			
		||||
			LD_CANVAS (g_value_get_object (value)));
 | 
			
		||||
	case PROP_VIEW:
 | 
			
		||||
		ld_library_toolbar_set_view (self,
 | 
			
		||||
			LD_DIAGRAM_VIEW (g_value_get_object (value)));
 | 
			
		||||
		break;
 | 
			
		||||
	default:
 | 
			
		||||
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
 | 
			
		||||
@@ -281,7 +281,7 @@ ld_library_toolbar_new (void)
 | 
			
		||||
/**
 | 
			
		||||
 * ld_library_toolbar_set_library:
 | 
			
		||||
 * @self: an #LdLibraryToolbar object.
 | 
			
		||||
 * @library: (allow-none): the #LdLibrary to be assigned to the toolbar.
 | 
			
		||||
 * @library: (allow-none): the library to be assigned to the toolbar.
 | 
			
		||||
 *
 | 
			
		||||
 * Assign an #LdLibrary object to the toolbar.
 | 
			
		||||
 */
 | 
			
		||||
@@ -315,8 +315,8 @@ ld_library_toolbar_set_library (LdLibraryToolbar *self, LdLibrary *library)
 | 
			
		||||
 * ld_library_toolbar_get_library:
 | 
			
		||||
 * @self: an #LdLibraryToolbar object.
 | 
			
		||||
 *
 | 
			
		||||
 * Get the #LdLibrary object assigned to this toolbar.
 | 
			
		||||
 * The reference count on the library is not incremented.
 | 
			
		||||
 * Return value: (transfer none): the #LdLibrary object
 | 
			
		||||
 *               assigned to the toolbar.
 | 
			
		||||
 */
 | 
			
		||||
LdLibrary *
 | 
			
		||||
ld_library_toolbar_get_library (LdLibraryToolbar *self)
 | 
			
		||||
@@ -326,59 +326,59 @@ ld_library_toolbar_get_library (LdLibraryToolbar *self)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * ld_library_toolbar_set_canvas:
 | 
			
		||||
 * ld_library_toolbar_set_view:
 | 
			
		||||
 * @self: an #LdLibraryToolbar object.
 | 
			
		||||
 * @canvas: (allow-none): the #LdCanvas to be assigned to the toolbar.
 | 
			
		||||
 * @view: (allow-none): the widget to be assigned to the toolbar.
 | 
			
		||||
 *
 | 
			
		||||
 * Assign an #LdCanvas object to the toolbar.
 | 
			
		||||
 * Assign an #LdDiagramView widget to the toolbar.
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
ld_library_toolbar_set_canvas (LdLibraryToolbar *self, LdCanvas *canvas)
 | 
			
		||||
ld_library_toolbar_set_view (LdLibraryToolbar *self, LdDiagramView *view)
 | 
			
		||||
{
 | 
			
		||||
	g_return_if_fail (LD_IS_LIBRARY_TOOLBAR (self));
 | 
			
		||||
	g_return_if_fail (LD_IS_CANVAS (canvas) || canvas == NULL);
 | 
			
		||||
	g_return_if_fail (LD_IS_DIAGRAM_VIEW (view) || view == NULL);
 | 
			
		||||
 | 
			
		||||
	if (self->priv->canvas)
 | 
			
		||||
	if (self->priv->view)
 | 
			
		||||
	{
 | 
			
		||||
		disconnect_canvas_handlers (self);
 | 
			
		||||
		g_object_unref (self->priv->canvas);
 | 
			
		||||
		disconnect_view_handlers (self);
 | 
			
		||||
		g_object_unref (self->priv->view);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	self->priv->canvas = canvas;
 | 
			
		||||
	self->priv->view = view;
 | 
			
		||||
 | 
			
		||||
	if (canvas)
 | 
			
		||||
	if (view)
 | 
			
		||||
	{
 | 
			
		||||
		self->priv->canvas_handlers[CANVAS_HANDLER_EXPOSE]
 | 
			
		||||
			= g_signal_connect (canvas, "expose-event",
 | 
			
		||||
			G_CALLBACK (on_canvas_exposed), self);
 | 
			
		||||
		self->priv->canvas_handlers[CANVAS_HANDLER_MOTION_NOTIFY]
 | 
			
		||||
			= g_signal_connect (canvas, "motion-notify-event",
 | 
			
		||||
			G_CALLBACK (on_canvas_motion_notify), self);
 | 
			
		||||
		self->priv->canvas_handlers[CANVAS_HANDLER_BUTTON_PRESS]
 | 
			
		||||
			= g_signal_connect (canvas, "button-press-event",
 | 
			
		||||
			G_CALLBACK (on_canvas_button_press), self);
 | 
			
		||||
		self->priv->canvas_handlers[CANVAS_HANDLER_BUTTON_RELEASE]
 | 
			
		||||
			= g_signal_connect (canvas, "button-release-event",
 | 
			
		||||
			G_CALLBACK (on_canvas_button_release), self);
 | 
			
		||||
		self->priv->view_handlers[VIEW_HANDLER_EXPOSE]
 | 
			
		||||
			= g_signal_connect (view, "expose-event",
 | 
			
		||||
			G_CALLBACK (on_view_exposed), self);
 | 
			
		||||
		self->priv->view_handlers[VIEW_HANDLER_MOTION_NOTIFY]
 | 
			
		||||
			= g_signal_connect (view, "motion-notify-event",
 | 
			
		||||
			G_CALLBACK (on_view_motion_notify), self);
 | 
			
		||||
		self->priv->view_handlers[VIEW_HANDLER_BUTTON_PRESS]
 | 
			
		||||
			= g_signal_connect (view, "button-press-event",
 | 
			
		||||
			G_CALLBACK (on_view_button_press), self);
 | 
			
		||||
		self->priv->view_handlers[VIEW_HANDLER_BUTTON_RELEASE]
 | 
			
		||||
			= g_signal_connect (view, "button-release-event",
 | 
			
		||||
			G_CALLBACK (on_view_button_release), self);
 | 
			
		||||
 | 
			
		||||
		block_canvas_handlers (self);
 | 
			
		||||
		g_object_ref (canvas);
 | 
			
		||||
		block_view_handlers (self);
 | 
			
		||||
		g_object_ref (view);
 | 
			
		||||
	}
 | 
			
		||||
	g_object_notify (G_OBJECT (self), "canvas");
 | 
			
		||||
	g_object_notify (G_OBJECT (self), "view");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * ld_library_toolbar_get_canvas:
 | 
			
		||||
 * ld_library_toolbar_get_view:
 | 
			
		||||
 * @self: an #LdLibraryToolbar object.
 | 
			
		||||
 *
 | 
			
		||||
 * Get the #LdLibrary object assigned to this toolbar.
 | 
			
		||||
 * The reference count on the canvas is not incremented.
 | 
			
		||||
 * Return value: (transfer none): the #LdDiagramView widget
 | 
			
		||||
 *               assigned to the toolbar.
 | 
			
		||||
 */
 | 
			
		||||
LdCanvas *
 | 
			
		||||
ld_library_toolbar_get_canvas (LdLibraryToolbar *self)
 | 
			
		||||
LdDiagramView *
 | 
			
		||||
ld_library_toolbar_get_view (LdLibraryToolbar *self)
 | 
			
		||||
{
 | 
			
		||||
	g_return_val_if_fail (LD_IS_LIBRARY_TOOLBAR (self), NULL);
 | 
			
		||||
	return self->priv->canvas;
 | 
			
		||||
	return self->priv->view;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
@@ -439,7 +439,7 @@ load_category_cb (gpointer data, gpointer user_data)
 | 
			
		||||
	gtk_container_add (GTK_CONTAINER (button), img);
 | 
			
		||||
	gtk_container_add (GTK_CONTAINER (item), button);
 | 
			
		||||
 | 
			
		||||
	/* Don't steal focus from the canvas. */
 | 
			
		||||
	/* Don't steal focus from the view. */
 | 
			
		||||
	g_object_set (button, "can-focus", FALSE, NULL);
 | 
			
		||||
 | 
			
		||||
	/* Assign the category to the toggle button. */
 | 
			
		||||
@@ -498,7 +498,7 @@ redraw_symbol_menu (LdLibraryToolbar *self)
 | 
			
		||||
	g_return_if_fail (LD_IS_LIBRARY_TOOLBAR (self));
 | 
			
		||||
	data = &self->priv->symbol_menu;
 | 
			
		||||
 | 
			
		||||
	gtk_widget_queue_draw_area (GTK_WIDGET (self->priv->canvas),
 | 
			
		||||
	gtk_widget_queue_draw_area (GTK_WIDGET (self->priv->view),
 | 
			
		||||
		0, data->menu_y - 1, data->menu_width + 2, data->menu_height + 2);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -541,7 +541,7 @@ on_category_toggle (GtkToggleButton *toggle_button, gpointer user_data)
 | 
			
		||||
	{
 | 
			
		||||
		gint i;
 | 
			
		||||
 | 
			
		||||
		block_canvas_handlers (self);
 | 
			
		||||
		block_view_handlers (self);
 | 
			
		||||
 | 
			
		||||
		g_object_unref (data->active_button);
 | 
			
		||||
		data->active_button = NULL;
 | 
			
		||||
@@ -559,7 +559,7 @@ on_category_toggle (GtkToggleButton *toggle_button, gpointer user_data)
 | 
			
		||||
		g_free (data->items);
 | 
			
		||||
		data->items = NULL;
 | 
			
		||||
 | 
			
		||||
		gtk_grab_remove (GTK_WIDGET (self->priv->canvas));
 | 
			
		||||
		gtk_grab_remove (GTK_WIDGET (self->priv->view));
 | 
			
		||||
	}
 | 
			
		||||
	else
 | 
			
		||||
	{
 | 
			
		||||
@@ -568,12 +568,12 @@ on_category_toggle (GtkToggleButton *toggle_button, gpointer user_data)
 | 
			
		||||
		gint x, y, menu_width;
 | 
			
		||||
 | 
			
		||||
		g_return_if_fail (gtk_widget_translate_coordinates (GTK_WIDGET
 | 
			
		||||
			(toggle_button), GTK_WIDGET (priv->canvas), 0, 0, &x, &y));
 | 
			
		||||
			(toggle_button), GTK_WIDGET (priv->view), 0, 0, &x, &y));
 | 
			
		||||
 | 
			
		||||
		data->menu_y = y;
 | 
			
		||||
		data->menu_height = GTK_WIDGET (toggle_button)->allocation.height;
 | 
			
		||||
 | 
			
		||||
		unblock_canvas_handlers (self);
 | 
			
		||||
		unblock_view_handlers (self);
 | 
			
		||||
 | 
			
		||||
		data->active_button = toggle_button;
 | 
			
		||||
		g_object_ref (data->active_button);
 | 
			
		||||
@@ -606,6 +606,8 @@ on_category_toggle (GtkToggleButton *toggle_button, gpointer user_data)
 | 
			
		||||
			 */
 | 
			
		||||
			item->scale = data->menu_height * 0.5
 | 
			
		||||
				/ MAX (ABS (area.y), ABS (area.y + area.height)) * 0.5;
 | 
			
		||||
			if (item->scale * area.width > 1.5 * data->menu_height)
 | 
			
		||||
				item->scale = 1.5 * data->menu_height / area.width;
 | 
			
		||||
			item->width = data->menu_height * 0.5 + item->scale * area.width;
 | 
			
		||||
			item->dx = item->width * 0.5 + item->scale
 | 
			
		||||
				* (area.width * 0.5 - ABS (area.x + area.width));
 | 
			
		||||
@@ -614,28 +616,28 @@ on_category_toggle (GtkToggleButton *toggle_button, gpointer user_data)
 | 
			
		||||
		}
 | 
			
		||||
		data->menu_width = menu_width;
 | 
			
		||||
 | 
			
		||||
		gtk_grab_add (GTK_WIDGET (self->priv->canvas));
 | 
			
		||||
		gtk_grab_add (GTK_WIDGET (self->priv->view));
 | 
			
		||||
	}
 | 
			
		||||
	redraw_symbol_menu (self);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define DEFINE_CANVAS_HANDLER_FUNC(name) \
 | 
			
		||||
#define DEFINE_VIEW_HANDLER_FUNC(name) \
 | 
			
		||||
static inline void \
 | 
			
		||||
name ## _canvas_handlers (LdLibraryToolbar *self) \
 | 
			
		||||
name ## _view_handlers (LdLibraryToolbar *self) \
 | 
			
		||||
{ \
 | 
			
		||||
	gint i; \
 | 
			
		||||
	g_return_if_fail (LD_IS_CANVAS (self->priv->canvas)); \
 | 
			
		||||
	for (i = 0; i < CANVAS_HANDLER_COUNT; i++) \
 | 
			
		||||
		g_signal_handler_ ## name (self->priv->canvas, \
 | 
			
		||||
			self->priv->canvas_handlers[i]); \
 | 
			
		||||
	g_return_if_fail (LD_IS_DIAGRAM_VIEW (self->priv->view)); \
 | 
			
		||||
	for (i = 0; i < VIEW_HANDLER_COUNT; i++) \
 | 
			
		||||
		g_signal_handler_ ## name (self->priv->view, \
 | 
			
		||||
			self->priv->view_handlers[i]); \
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
DEFINE_CANVAS_HANDLER_FUNC (block)
 | 
			
		||||
DEFINE_CANVAS_HANDLER_FUNC (unblock)
 | 
			
		||||
DEFINE_CANVAS_HANDLER_FUNC (disconnect)
 | 
			
		||||
DEFINE_VIEW_HANDLER_FUNC (block)
 | 
			
		||||
DEFINE_VIEW_HANDLER_FUNC (unblock)
 | 
			
		||||
DEFINE_VIEW_HANDLER_FUNC (disconnect)
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
on_canvas_exposed (GtkWidget *widget, GdkEventExpose *event, gpointer user_data)
 | 
			
		||||
on_view_exposed (GtkWidget *widget, GdkEventExpose *event, gpointer user_data)
 | 
			
		||||
{
 | 
			
		||||
	cairo_t *cr;
 | 
			
		||||
	LdLibraryToolbar *self;
 | 
			
		||||
@@ -658,6 +660,14 @@ on_canvas_exposed (GtkWidget *widget, GdkEventExpose *event, gpointer user_data)
 | 
			
		||||
	{
 | 
			
		||||
		SymbolMenuItem *item;
 | 
			
		||||
 | 
			
		||||
		if (i)
 | 
			
		||||
		{
 | 
			
		||||
			cairo_move_to (cr, x - 0.5, data->menu_y + 1);
 | 
			
		||||
			cairo_line_to (cr, x - 0.5, data->menu_y + data->menu_height);
 | 
			
		||||
			cairo_set_source_rgb (cr, 0.5, 0.5, 0.5);
 | 
			
		||||
			cairo_stroke (cr);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		item = data->items + i;
 | 
			
		||||
		cairo_save (cr);
 | 
			
		||||
 | 
			
		||||
@@ -682,7 +692,8 @@ on_canvas_exposed (GtkWidget *widget, GdkEventExpose *event, gpointer user_data)
 | 
			
		||||
		x += item->width;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	cairo_rectangle (cr, 0, data->menu_y, data->menu_width, data->menu_height);
 | 
			
		||||
	cairo_rectangle (cr, 0.5, data->menu_y + 0.5,
 | 
			
		||||
		data->menu_width, data->menu_height);
 | 
			
		||||
	cairo_set_source_rgb (cr, 0, 0, 0);
 | 
			
		||||
	cairo_stroke (cr);
 | 
			
		||||
 | 
			
		||||
@@ -691,7 +702,7 @@ on_canvas_exposed (GtkWidget *widget, GdkEventExpose *event, gpointer user_data)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
on_canvas_motion_notify (GtkWidget *widget, GdkEventMotion *event,
 | 
			
		||||
on_view_motion_notify (GtkWidget *widget, GdkEventMotion *event,
 | 
			
		||||
	gpointer user_data)
 | 
			
		||||
{
 | 
			
		||||
	LdLibraryToolbar *self;
 | 
			
		||||
@@ -704,7 +715,7 @@ on_canvas_motion_notify (GtkWidget *widget, GdkEventMotion *event,
 | 
			
		||||
	if (widget->window != event->window
 | 
			
		||||
		|| event->x < 0 || event->y < data->menu_y
 | 
			
		||||
		|| event->y >= data->menu_y + data->menu_height)
 | 
			
		||||
		goto on_canvas_motion_notify_end;
 | 
			
		||||
		goto on_view_motion_notify_end;
 | 
			
		||||
 | 
			
		||||
	for (x = i = 0; i < data->n_items; i++)
 | 
			
		||||
	{
 | 
			
		||||
@@ -716,7 +727,7 @@ on_canvas_motion_notify (GtkWidget *widget, GdkEventMotion *event,
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
on_canvas_motion_notify_end:
 | 
			
		||||
on_view_motion_notify_end:
 | 
			
		||||
	if (data->active_item != at_cursor)
 | 
			
		||||
	{
 | 
			
		||||
		emit_symbol_signal (self, LD_LIBRARY_TOOLBAR_GET_CLASS (self)
 | 
			
		||||
@@ -732,7 +743,7 @@ on_canvas_motion_notify_end:
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
on_canvas_button_press (GtkWidget *widget, GdkEventButton *event,
 | 
			
		||||
on_view_button_press (GtkWidget *widget, GdkEventButton *event,
 | 
			
		||||
	gpointer user_data)
 | 
			
		||||
{
 | 
			
		||||
	LdLibraryToolbar *self;
 | 
			
		||||
@@ -753,7 +764,7 @@ on_canvas_button_press (GtkWidget *widget, GdkEventButton *event,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
on_canvas_button_release (GtkWidget *widget, GdkEventButton *event,
 | 
			
		||||
on_view_button_release (GtkWidget *widget, GdkEventButton *event,
 | 
			
		||||
	gpointer user_data)
 | 
			
		||||
{
 | 
			
		||||
	LdLibraryToolbar *self;
 | 
			
		||||
 
 | 
			
		||||
@@ -59,9 +59,9 @@ GtkWidget *ld_library_toolbar_new (void);
 | 
			
		||||
void ld_library_toolbar_set_library (LdLibraryToolbar *self,
 | 
			
		||||
	LdLibrary *library);
 | 
			
		||||
LdLibrary *ld_library_toolbar_get_library (LdLibraryToolbar *self);
 | 
			
		||||
void ld_library_toolbar_set_canvas (LdLibraryToolbar *self,
 | 
			
		||||
	LdCanvas *canvas);
 | 
			
		||||
LdCanvas *ld_library_toolbar_get_canvas (LdLibraryToolbar *self);
 | 
			
		||||
void ld_library_toolbar_set_view (LdLibraryToolbar *self,
 | 
			
		||||
	LdDiagramView *view);
 | 
			
		||||
LdDiagramView *ld_library_toolbar_get_view (LdLibraryToolbar *self);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
G_END_DECLS
 | 
			
		||||
 
 | 
			
		||||
@@ -94,6 +94,9 @@ static int ld_lua_cairo_save (lua_State *L);
 | 
			
		||||
static int ld_lua_cairo_restore (lua_State *L);
 | 
			
		||||
static int ld_lua_cairo_get_line_width (lua_State *L);
 | 
			
		||||
static int ld_lua_cairo_set_line_width (lua_State *L);
 | 
			
		||||
static int ld_lua_cairo_translate (lua_State *L);
 | 
			
		||||
static int ld_lua_cairo_scale (lua_State *L);
 | 
			
		||||
static int ld_lua_cairo_rotate (lua_State *L);
 | 
			
		||||
static int ld_lua_cairo_move_to (lua_State *L);
 | 
			
		||||
static int ld_lua_cairo_line_to (lua_State *L);
 | 
			
		||||
static int ld_lua_cairo_curve_to (lua_State *L);
 | 
			
		||||
@@ -108,6 +111,7 @@ static int ld_lua_cairo_fill (lua_State *L);
 | 
			
		||||
static int ld_lua_cairo_fill_preserve (lua_State *L);
 | 
			
		||||
static int ld_lua_cairo_clip (lua_State *L);
 | 
			
		||||
static int ld_lua_cairo_clip_preserve (lua_State *L);
 | 
			
		||||
static int ld_lua_cairo_show_text (lua_State *L);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static luaL_Reg ld_lua_logdiag_lib[] =
 | 
			
		||||
@@ -122,6 +126,9 @@ static luaL_Reg ld_lua_cairo_table[] =
 | 
			
		||||
	{"restore", ld_lua_cairo_restore},
 | 
			
		||||
	{"get_line_width", ld_lua_cairo_get_line_width},
 | 
			
		||||
	{"set_line_width", ld_lua_cairo_set_line_width},
 | 
			
		||||
	{"translate", ld_lua_cairo_translate},
 | 
			
		||||
	{"scale", ld_lua_cairo_scale},
 | 
			
		||||
	{"rotate", ld_lua_cairo_rotate},
 | 
			
		||||
	{"move_to", ld_lua_cairo_move_to},
 | 
			
		||||
	{"line_to", ld_lua_cairo_line_to},
 | 
			
		||||
	{"curve_to", ld_lua_cairo_curve_to},
 | 
			
		||||
@@ -136,6 +143,7 @@ static luaL_Reg ld_lua_cairo_table[] =
 | 
			
		||||
	{"fill_preserve", ld_lua_cairo_fill_preserve},
 | 
			
		||||
	{"clip", ld_lua_cairo_clip},
 | 
			
		||||
	{"clip_preserve", ld_lua_cairo_clip_preserve},
 | 
			
		||||
	{"show_text", ld_lua_cairo_show_text},
 | 
			
		||||
	{NULL, NULL}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@@ -649,15 +657,21 @@ get_cairo_scale (cairo_t *cr)
 | 
			
		||||
	return dx;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define LD_LUA_CAIRO_TRIVIAL(name) \
 | 
			
		||||
#define LD_LUA_CAIRO_BEGIN(name) \
 | 
			
		||||
static int \
 | 
			
		||||
ld_lua_cairo_ ## name (lua_State *L) \
 | 
			
		||||
{ \
 | 
			
		||||
	LdLuaDrawData *data; \
 | 
			
		||||
 | 
			
		||||
#define LD_LUA_CAIRO_END(n_values) \
 | 
			
		||||
	return (n_values); \
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define LD_LUA_CAIRO_TRIVIAL(name) \
 | 
			
		||||
LD_LUA_CAIRO_BEGIN (name) \
 | 
			
		||||
	data = lua_touserdata (L, lua_upvalueindex (1)); \
 | 
			
		||||
	cairo_ ## name (data->cr); \
 | 
			
		||||
	return 0; \
 | 
			
		||||
}
 | 
			
		||||
LD_LUA_CAIRO_END (0)
 | 
			
		||||
 | 
			
		||||
LD_LUA_CAIRO_TRIVIAL (new_path)
 | 
			
		||||
LD_LUA_CAIRO_TRIVIAL (new_sub_path)
 | 
			
		||||
@@ -670,60 +684,67 @@ LD_LUA_CAIRO_TRIVIAL (fill_preserve)
 | 
			
		||||
LD_LUA_CAIRO_TRIVIAL (clip)
 | 
			
		||||
LD_LUA_CAIRO_TRIVIAL (clip_preserve)
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
ld_lua_cairo_save (lua_State *L)
 | 
			
		||||
{
 | 
			
		||||
	LdLuaDrawData *data;
 | 
			
		||||
 | 
			
		||||
LD_LUA_CAIRO_BEGIN (save)
 | 
			
		||||
	data = lua_touserdata (L, lua_upvalueindex (1));
 | 
			
		||||
	if (data->save_count + 1)
 | 
			
		||||
	{
 | 
			
		||||
		data->save_count++;
 | 
			
		||||
		cairo_save (data->cr);
 | 
			
		||||
	}
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
ld_lua_cairo_restore (lua_State *L)
 | 
			
		||||
{
 | 
			
		||||
	LdLuaDrawData *data;
 | 
			
		||||
LD_LUA_CAIRO_END (0)
 | 
			
		||||
 | 
			
		||||
LD_LUA_CAIRO_BEGIN (restore)
 | 
			
		||||
	data = lua_touserdata (L, lua_upvalueindex (1));
 | 
			
		||||
	if (data->save_count)
 | 
			
		||||
	{
 | 
			
		||||
		data->save_count--;
 | 
			
		||||
		cairo_restore (data->cr);
 | 
			
		||||
	}
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
ld_lua_cairo_get_line_width (lua_State *L)
 | 
			
		||||
{
 | 
			
		||||
	LdLuaDrawData *data;
 | 
			
		||||
LD_LUA_CAIRO_END (0)
 | 
			
		||||
 | 
			
		||||
LD_LUA_CAIRO_BEGIN (get_line_width)
 | 
			
		||||
	data = lua_touserdata (L, lua_upvalueindex (1));
 | 
			
		||||
	lua_pushnumber (L, cairo_get_line_width (data->cr)
 | 
			
		||||
		* get_cairo_scale (data->cr));
 | 
			
		||||
	return 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
ld_lua_cairo_set_line_width (lua_State *L)
 | 
			
		||||
{
 | 
			
		||||
	LdLuaDrawData *data;
 | 
			
		||||
LD_LUA_CAIRO_END (1)
 | 
			
		||||
 | 
			
		||||
LD_LUA_CAIRO_BEGIN (set_line_width)
 | 
			
		||||
	data = lua_touserdata (L, lua_upvalueindex (1));
 | 
			
		||||
	cairo_set_line_width (data->cr, luaL_checknumber (L, 1)
 | 
			
		||||
		/ get_cairo_scale (data->cr));
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
LD_LUA_CAIRO_END (0)
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
ld_lua_cairo_move_to (lua_State *L)
 | 
			
		||||
{
 | 
			
		||||
	LdLuaDrawData *data;
 | 
			
		||||
LD_LUA_CAIRO_BEGIN (translate)
 | 
			
		||||
	lua_Number x, y;
 | 
			
		||||
 | 
			
		||||
	data = lua_touserdata (L, lua_upvalueindex (1));
 | 
			
		||||
 | 
			
		||||
	x = luaL_checknumber (L, 1);
 | 
			
		||||
	y = luaL_checknumber (L, 2);
 | 
			
		||||
 | 
			
		||||
	cairo_translate (data->cr, x, y);
 | 
			
		||||
LD_LUA_CAIRO_END (0)
 | 
			
		||||
 | 
			
		||||
LD_LUA_CAIRO_BEGIN (scale)
 | 
			
		||||
	lua_Number sx, sy;
 | 
			
		||||
 | 
			
		||||
	data = lua_touserdata (L, lua_upvalueindex (1));
 | 
			
		||||
 | 
			
		||||
	sx = luaL_checknumber (L, 1);
 | 
			
		||||
	sy = luaL_checknumber (L, 2);
 | 
			
		||||
 | 
			
		||||
	cairo_scale (data->cr, sx, sy);
 | 
			
		||||
LD_LUA_CAIRO_END (0)
 | 
			
		||||
 | 
			
		||||
LD_LUA_CAIRO_BEGIN (rotate)
 | 
			
		||||
	lua_Number angle;
 | 
			
		||||
 | 
			
		||||
	data = lua_touserdata (L, lua_upvalueindex (1));
 | 
			
		||||
	angle = luaL_checknumber (L, 1);
 | 
			
		||||
	cairo_rotate (data->cr, angle);
 | 
			
		||||
LD_LUA_CAIRO_END (0)
 | 
			
		||||
 | 
			
		||||
LD_LUA_CAIRO_BEGIN (move_to)
 | 
			
		||||
	lua_Number x, y;
 | 
			
		||||
 | 
			
		||||
	data = lua_touserdata (L, lua_upvalueindex (1));
 | 
			
		||||
@@ -732,13 +753,9 @@ ld_lua_cairo_move_to (lua_State *L)
 | 
			
		||||
	y = luaL_checknumber (L, 2);
 | 
			
		||||
 | 
			
		||||
	cairo_move_to (data->cr, x, y);
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
LD_LUA_CAIRO_END (0)
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
ld_lua_cairo_line_to (lua_State *L)
 | 
			
		||||
{
 | 
			
		||||
	LdLuaDrawData *data;
 | 
			
		||||
LD_LUA_CAIRO_BEGIN (line_to)
 | 
			
		||||
	lua_Number x, y;
 | 
			
		||||
 | 
			
		||||
	data = lua_touserdata (L, lua_upvalueindex (1));
 | 
			
		||||
@@ -747,13 +764,9 @@ ld_lua_cairo_line_to (lua_State *L)
 | 
			
		||||
	y = luaL_checknumber (L, 2);
 | 
			
		||||
 | 
			
		||||
	cairo_line_to (data->cr, x, y);
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
LD_LUA_CAIRO_END (0)
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
ld_lua_cairo_curve_to (lua_State *L)
 | 
			
		||||
{
 | 
			
		||||
	LdLuaDrawData *data;
 | 
			
		||||
LD_LUA_CAIRO_BEGIN (curve_to)
 | 
			
		||||
	lua_Number x1, y1, x2, y2, x3, y3;
 | 
			
		||||
 | 
			
		||||
	data = lua_touserdata (L, lua_upvalueindex (1));
 | 
			
		||||
@@ -766,13 +779,9 @@ ld_lua_cairo_curve_to (lua_State *L)
 | 
			
		||||
	y3 = luaL_checknumber (L, 6);
 | 
			
		||||
 | 
			
		||||
	cairo_curve_to (data->cr, x1, y1, x2, y2, x3, y3);
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
LD_LUA_CAIRO_END (0)
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
ld_lua_cairo_arc (lua_State *L)
 | 
			
		||||
{
 | 
			
		||||
	LdLuaDrawData *data;
 | 
			
		||||
LD_LUA_CAIRO_BEGIN (arc)
 | 
			
		||||
	lua_Number xc, yc, radius, angle1, angle2;
 | 
			
		||||
 | 
			
		||||
	data = lua_touserdata (L, lua_upvalueindex (1));
 | 
			
		||||
@@ -784,13 +793,9 @@ ld_lua_cairo_arc (lua_State *L)
 | 
			
		||||
	angle2 = luaL_checknumber (L, 5);
 | 
			
		||||
 | 
			
		||||
	cairo_arc (data->cr, xc, yc, radius, angle1, angle2);
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
LD_LUA_CAIRO_END (0)
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
ld_lua_cairo_arc_negative (lua_State *L)
 | 
			
		||||
{
 | 
			
		||||
	LdLuaDrawData *data;
 | 
			
		||||
LD_LUA_CAIRO_BEGIN (arc_negative)
 | 
			
		||||
	lua_Number xc, yc, radius, angle1, angle2;
 | 
			
		||||
 | 
			
		||||
	data = lua_touserdata (L, lua_upvalueindex (1));
 | 
			
		||||
@@ -802,6 +807,36 @@ ld_lua_cairo_arc_negative (lua_State *L)
 | 
			
		||||
	angle2 = luaL_checknumber (L, 5);
 | 
			
		||||
 | 
			
		||||
	cairo_arc_negative (data->cr, xc, yc, radius, angle1, angle2);
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
LD_LUA_CAIRO_END (0)
 | 
			
		||||
 | 
			
		||||
LD_LUA_CAIRO_BEGIN (show_text)
 | 
			
		||||
	const char *text;
 | 
			
		||||
	GtkStyle *style;
 | 
			
		||||
	PangoLayout *layout;
 | 
			
		||||
	int width, height;
 | 
			
		||||
	double x, y;
 | 
			
		||||
 | 
			
		||||
	data = lua_touserdata (L, lua_upvalueindex (1));
 | 
			
		||||
	text = luaL_checkstring (L, 1);
 | 
			
		||||
 | 
			
		||||
	layout = pango_cairo_create_layout (data->cr);
 | 
			
		||||
	pango_layout_set_text (layout, text, -1);
 | 
			
		||||
 | 
			
		||||
	style = gtk_style_new ();
 | 
			
		||||
	pango_font_description_set_size (style->font_desc, 1 * PANGO_SCALE);
 | 
			
		||||
	pango_layout_set_font_description (layout, style->font_desc);
 | 
			
		||||
	g_object_unref (style);
 | 
			
		||||
 | 
			
		||||
	pango_layout_get_size (layout, &width, &height);
 | 
			
		||||
	cairo_get_current_point (data->cr, &x, &y);
 | 
			
		||||
	x -= (double) width  / PANGO_SCALE / 2;
 | 
			
		||||
	y -= (double) height / PANGO_SCALE / 2;
 | 
			
		||||
 | 
			
		||||
	cairo_save (data->cr);
 | 
			
		||||
	cairo_move_to (data->cr, x, y);
 | 
			
		||||
	pango_cairo_show_layout (data->cr, layout);
 | 
			
		||||
	cairo_restore (data->cr);
 | 
			
		||||
 | 
			
		||||
	g_object_unref (layout);
 | 
			
		||||
LD_LUA_CAIRO_END (0)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -15,9 +15,9 @@
 | 
			
		||||
/**
 | 
			
		||||
 * SECTION:ld-symbol
 | 
			
		||||
 * @short_description: A symbol
 | 
			
		||||
 * @see_also: #LdDiagramSymbol, #LdCanvas
 | 
			
		||||
 * @see_also: #LdDiagramSymbol, #LdDiagramView
 | 
			
		||||
 *
 | 
			
		||||
 * #LdSymbol represents a symbol to be drawn onto a #LdCanvas.
 | 
			
		||||
 * #LdSymbol represents a symbol to be drawn by #LdDiagramView.
 | 
			
		||||
 *
 | 
			
		||||
 * All implementations of this abstract class are required to use
 | 
			
		||||
 * cairo_save() and cairo_restore() when drawing to store the state.
 | 
			
		||||
 
 | 
			
		||||
@@ -18,10 +18,6 @@ G_BEGIN_DECLS
 | 
			
		||||
#define LD_TYPE_POINT_ARRAY (ld_point_array_get_type ())
 | 
			
		||||
#define LD_TYPE_RECTANGLE (ld_rectangle_get_type ())
 | 
			
		||||
 | 
			
		||||
typedef struct _LdPoint LdPoint;
 | 
			
		||||
typedef struct _LdPointArray LdPointArray;
 | 
			
		||||
typedef struct _LdRectangle LdRectangle;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * LdPoint:
 | 
			
		||||
@@ -30,10 +26,11 @@ typedef struct _LdRectangle LdRectangle;
 | 
			
		||||
 *
 | 
			
		||||
 * Defines a point.
 | 
			
		||||
 */
 | 
			
		||||
struct _LdPoint
 | 
			
		||||
typedef struct
 | 
			
		||||
{
 | 
			
		||||
	gdouble x, y;
 | 
			
		||||
};
 | 
			
		||||
}
 | 
			
		||||
LdPoint;
 | 
			
		||||
 | 
			
		||||
GType ld_point_get_type (void) G_GNUC_CONST;
 | 
			
		||||
 | 
			
		||||
@@ -50,12 +47,13 @@ gdouble ld_point_distance (const LdPoint *self, gdouble x, gdouble y);
 | 
			
		||||
 *
 | 
			
		||||
 * Defines an array of points.
 | 
			
		||||
 */
 | 
			
		||||
struct _LdPointArray
 | 
			
		||||
typedef struct
 | 
			
		||||
{
 | 
			
		||||
	LdPoint *points;
 | 
			
		||||
	guint length;
 | 
			
		||||
	guint size;
 | 
			
		||||
};
 | 
			
		||||
}
 | 
			
		||||
LdPointArray;
 | 
			
		||||
 | 
			
		||||
GType ld_point_array_get_type (void) G_GNUC_CONST;
 | 
			
		||||
 | 
			
		||||
@@ -78,11 +76,12 @@ void ld_point_array_set_size (LdPointArray *self, guint size);
 | 
			
		||||
 *
 | 
			
		||||
 * Defines a rectangle.
 | 
			
		||||
 */
 | 
			
		||||
struct _LdRectangle
 | 
			
		||||
typedef struct
 | 
			
		||||
{
 | 
			
		||||
	gdouble x, y;
 | 
			
		||||
	gdouble width, height;
 | 
			
		||||
};
 | 
			
		||||
}
 | 
			
		||||
LdRectangle;
 | 
			
		||||
 | 
			
		||||
GType ld_rectangle_get_type (void) G_GNUC_CONST;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -27,7 +27,7 @@
 | 
			
		||||
#include "ld-diagram-connection.h"
 | 
			
		||||
#include "ld-diagram.h"
 | 
			
		||||
 | 
			
		||||
#include "ld-canvas.h"
 | 
			
		||||
#include "ld-diagram-view.h"
 | 
			
		||||
#include "ld-library-toolbar.h"
 | 
			
		||||
 | 
			
		||||
#include "ld-lua.h"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										198
									
								
								po/cs.po
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										198
									
								
								po/cs.po
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,198 @@
 | 
			
		||||
# Czech translation for logdiag.
 | 
			
		||||
# Copyright (C) 2011 Přemysl Janouch
 | 
			
		||||
# This file is distributed under the same license as the logdiag package.
 | 
			
		||||
# Přemysl Janouch <p.janouch@gmail.com>, 2011.
 | 
			
		||||
#
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: logdiag\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: \n"
 | 
			
		||||
"POT-Creation-Date: 2011-02-13 20:25+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2011-02-13 20:36+0100\n"
 | 
			
		||||
"Last-Translator: Přemysl Janouch <p.janouch@gmail.com>\n"
 | 
			
		||||
"Language-Team: Czech <LL@li.org>\n"
 | 
			
		||||
"Language: \n"
 | 
			
		||||
"MIME-Version: 1.0\n"
 | 
			
		||||
"Content-Type: text/plain; charset=UTF-8\n"
 | 
			
		||||
"Content-Transfer-Encoding: 8bit\n"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:736
 | 
			
		||||
msgid "Close _without Saving"
 | 
			
		||||
msgstr "Zavřít _bez uložení"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:116
 | 
			
		||||
msgid "Create a new diagram"
 | 
			
		||||
msgstr "Vytvoří nový diagram"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:149
 | 
			
		||||
msgid "Delete the contents of the selection"
 | 
			
		||||
msgstr "Odstraní obsah výběru"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:604
 | 
			
		||||
msgid "Failed to open the file"
 | 
			
		||||
msgstr "Nelze otevřít soubor"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:569
 | 
			
		||||
msgid "Failed to save the diagram"
 | 
			
		||||
msgstr "Nelze uložit diagram"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:734
 | 
			
		||||
msgid "If you don't save, changes will be permanently lost."
 | 
			
		||||
msgstr "Pokud je neuložíte, budou změny navždy ztraceny."
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:629
 | 
			
		||||
msgid "Logdiag Diagrams (*.ldd)"
 | 
			
		||||
msgstr "Diagramy logdiag (*.ldd)"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:119
 | 
			
		||||
msgid "Open a diagram"
 | 
			
		||||
msgstr "Otevře diagram"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:650
 | 
			
		||||
msgid "Open..."
 | 
			
		||||
msgstr "Otevřít..."
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:133
 | 
			
		||||
msgid "Quit the application"
 | 
			
		||||
msgstr "Ukončí aplikaci"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:141
 | 
			
		||||
msgid "Redo the last undone action"
 | 
			
		||||
msgstr "Provede posledně vrácenou akci"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:163
 | 
			
		||||
msgid "Reset zoom level back to the default"
 | 
			
		||||
msgstr "Vrátí přiblížení na výchozí hodnotu"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:681
 | 
			
		||||
msgid "Save As..."
 | 
			
		||||
msgstr "Uložit jako..."
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:124
 | 
			
		||||
msgid "Save _As..."
 | 
			
		||||
msgstr "Uložit _jako..."
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:525
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"Save the changes to diagram \"%s\" before closing it and creating a new one?"
 | 
			
		||||
msgstr "Uložit změny v diagramu \"%s\" před jeho zavřením a vytvořením nového?"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:646
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"Save the changes to diagram \"%s\" before closing it and opening another one?"
 | 
			
		||||
msgstr "Uložit změny v diagramu \"%s\" před jeho zavřením a otevřením jiného?"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:774
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Save the changes to diagram \"%s\" before closing?"
 | 
			
		||||
msgstr "Uložit změny v diagramu \"%s\" před jeho zavřením?"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:122
 | 
			
		||||
msgid "Save the current diagram"
 | 
			
		||||
msgstr "Uloží stávající diagram"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:125
 | 
			
		||||
msgid "Save the current diagram with another name"
 | 
			
		||||
msgstr "Uloží stávající diagram pod jiným jménem"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:151
 | 
			
		||||
msgid "Select _All"
 | 
			
		||||
msgstr "Vybrat _vše"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:152
 | 
			
		||||
msgid "Select all objects in the diagram"
 | 
			
		||||
msgstr "Vybere všechny objekty v diagramu"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:168
 | 
			
		||||
msgid "Show a dialog about this application"
 | 
			
		||||
msgstr "Zobrazí dialog o této aplikaci"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:607
 | 
			
		||||
msgid "The file is probably corrupted."
 | 
			
		||||
msgstr "Soubor je pravděpodobně poškozen."
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:572
 | 
			
		||||
msgid "Try again or save it under another name."
 | 
			
		||||
msgstr "Zkuste to znova nebo jej uložte pod jiným názvem."
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:138
 | 
			
		||||
msgid "Undo the last action"
 | 
			
		||||
msgstr "Vrátí poslední akci"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:493
 | 
			
		||||
msgid "Unsaved Diagram"
 | 
			
		||||
msgstr "Neuložený diagram"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:159
 | 
			
		||||
msgid "Zoom _Out"
 | 
			
		||||
msgstr "_Oddálit"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:157
 | 
			
		||||
msgid "Zoom into the diagram"
 | 
			
		||||
msgstr "Přiblíží diagram"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:160
 | 
			
		||||
msgid "Zoom out of the diagram"
 | 
			
		||||
msgstr "Oddálí diagram"
 | 
			
		||||
 | 
			
		||||
#: ../src/logdiag.c:33
 | 
			
		||||
msgid "[FILE] - Schematic editor"
 | 
			
		||||
msgstr "[SOUBOR] - Editor schémat"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:167
 | 
			
		||||
msgid "_About"
 | 
			
		||||
msgstr "_O programu"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:148
 | 
			
		||||
msgid "_Delete"
 | 
			
		||||
msgstr "_Smazat"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:136
 | 
			
		||||
msgid "_Edit"
 | 
			
		||||
msgstr "_Úpravy"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:114
 | 
			
		||||
msgid "_File"
 | 
			
		||||
msgstr "_Soubor"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:166
 | 
			
		||||
msgid "_Help"
 | 
			
		||||
msgstr "_Nápověda"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:115
 | 
			
		||||
msgid "_New"
 | 
			
		||||
msgstr "_Nový"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:162
 | 
			
		||||
msgid "_Normal Size"
 | 
			
		||||
msgstr "_Normální velikost"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:118
 | 
			
		||||
msgid "_Open..."
 | 
			
		||||
msgstr "_Otevřít..."
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:132
 | 
			
		||||
msgid "_Quit"
 | 
			
		||||
msgstr "_Ukončit"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:140
 | 
			
		||||
msgid "_Redo"
 | 
			
		||||
msgstr "_Znovu"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:121
 | 
			
		||||
msgid "_Save"
 | 
			
		||||
msgstr "_Uložit"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:137
 | 
			
		||||
msgid "_Undo"
 | 
			
		||||
msgstr "_Zpět"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:155
 | 
			
		||||
msgid "_View"
 | 
			
		||||
msgstr "_Zobrazení"
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:156
 | 
			
		||||
msgid "_Zoom In"
 | 
			
		||||
msgstr "_Přiblížit"
 | 
			
		||||
							
								
								
									
										184
									
								
								po/logdiag.pot
									
									
									
									
									
								
							
							
						
						
									
										184
									
								
								po/logdiag.pot
									
									
									
									
									
								
							@@ -8,7 +8,7 @@ msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: logdiag \n"
 | 
			
		||||
"Report-Msgid-Bugs-To: \n"
 | 
			
		||||
"POT-Creation-Date: 2010-07-05 23:23+0200\n"
 | 
			
		||||
"POT-Creation-Date: 2011-02-13 20:25+0100\n"
 | 
			
		||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 | 
			
		||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 | 
			
		||||
"Language-Team: LANGUAGE <LL@li.org>\n"
 | 
			
		||||
@@ -17,7 +17,183 @@ msgstr ""
 | 
			
		||||
"Content-Type: text/plain; charset=UTF-8\n"
 | 
			
		||||
"Content-Transfer-Encoding: 8bit\n"
 | 
			
		||||
 | 
			
		||||
#: ../src/window-main.c:102
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Building UI failed: %s"
 | 
			
		||||
#: ../src/ld-window-main.c:114
 | 
			
		||||
msgid "_File"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:115
 | 
			
		||||
msgid "_New"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:116
 | 
			
		||||
msgid "Create a new diagram"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:118
 | 
			
		||||
msgid "_Open..."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:119
 | 
			
		||||
msgid "Open a diagram"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:121
 | 
			
		||||
msgid "_Save"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:122
 | 
			
		||||
msgid "Save the current diagram"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:124
 | 
			
		||||
msgid "Save _As..."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:125
 | 
			
		||||
msgid "Save the current diagram with another name"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:132
 | 
			
		||||
msgid "_Quit"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:133
 | 
			
		||||
msgid "Quit the application"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:136
 | 
			
		||||
msgid "_Edit"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:137
 | 
			
		||||
msgid "_Undo"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:138
 | 
			
		||||
msgid "Undo the last action"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:140
 | 
			
		||||
msgid "_Redo"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:141
 | 
			
		||||
msgid "Redo the last undone action"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:148
 | 
			
		||||
msgid "_Delete"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:149
 | 
			
		||||
msgid "Delete the contents of the selection"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:151
 | 
			
		||||
msgid "Select _All"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:152
 | 
			
		||||
msgid "Select all objects in the diagram"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:155
 | 
			
		||||
msgid "_View"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:156
 | 
			
		||||
msgid "_Zoom In"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:157
 | 
			
		||||
msgid "Zoom into the diagram"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:159
 | 
			
		||||
msgid "Zoom _Out"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:160
 | 
			
		||||
msgid "Zoom out of the diagram"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:162
 | 
			
		||||
msgid "_Normal Size"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:163
 | 
			
		||||
msgid "Reset zoom level back to the default"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:166
 | 
			
		||||
msgid "_Help"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:167
 | 
			
		||||
msgid "_About"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:168
 | 
			
		||||
msgid "Show a dialog about this application"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:493
 | 
			
		||||
msgid "Unsaved Diagram"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:525
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"Save the changes to diagram \"%s\" before closing it and creating a new one?"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:569
 | 
			
		||||
msgid "Failed to save the diagram"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:572
 | 
			
		||||
msgid "Try again or save it under another name."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:604
 | 
			
		||||
msgid "Failed to open the file"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:607
 | 
			
		||||
msgid "The file is probably corrupted."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:629
 | 
			
		||||
msgid "Logdiag Diagrams (*.ldd)"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:646
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"Save the changes to diagram \"%s\" before closing it and opening another one?"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:650
 | 
			
		||||
msgid "Open..."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:681
 | 
			
		||||
msgid "Save As..."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:734
 | 
			
		||||
msgid "If you don't save, changes will be permanently lost."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:736
 | 
			
		||||
msgid "Close _without Saving"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/ld-window-main.c:774
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Save the changes to diagram \"%s\" before closing?"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../src/logdiag.c:33
 | 
			
		||||
msgid "[FILE] - Schematic editor"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 
 | 
			
		||||
@@ -30,7 +30,7 @@ if [ "$MAJOR" != "" ]; then
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Finally make the template
 | 
			
		||||
xgettext -LC -k_ -kN_:1,2 -kG_ $SOURCES -o "$PACKAGE".pot \
 | 
			
		||||
xgettext -LC -k_ -kN_ $SOURCES -o "$PACKAGE".pot \
 | 
			
		||||
	--package-name="$PACKAGE" --package-version="$VERSION" \
 | 
			
		||||
	--copyright-holder="Přemysl Janouch"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								share/header.bmp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								share/header.bmp
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 25 KiB  | 
							
								
								
									
										159
									
								
								share/header.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										159
									
								
								share/header.svg
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,159 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 | 
			
		||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
 | 
			
		||||
 | 
			
		||||
<svg
 | 
			
		||||
   xmlns:dc="http://purl.org/dc/elements/1.1/"
 | 
			
		||||
   xmlns:cc="http://creativecommons.org/ns#"
 | 
			
		||||
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 | 
			
		||||
   xmlns:svg="http://www.w3.org/2000/svg"
 | 
			
		||||
   xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
   version="1.1"
 | 
			
		||||
   width="150"
 | 
			
		||||
   height="57"
 | 
			
		||||
   id="svg2">
 | 
			
		||||
  <defs
 | 
			
		||||
     id="defs4" />
 | 
			
		||||
  <metadata
 | 
			
		||||
     id="metadata7">
 | 
			
		||||
    <rdf:RDF>
 | 
			
		||||
      <cc:Work
 | 
			
		||||
         rdf:about="">
 | 
			
		||||
        <dc:format>image/svg+xml</dc:format>
 | 
			
		||||
        <dc:type
 | 
			
		||||
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
 | 
			
		||||
        <dc:title></dc:title>
 | 
			
		||||
      </cc:Work>
 | 
			
		||||
    </rdf:RDF>
 | 
			
		||||
  </metadata>
 | 
			
		||||
  <rect
 | 
			
		||||
     width="150"
 | 
			
		||||
     height="57"
 | 
			
		||||
     x="0"
 | 
			
		||||
     y="-1.3322676e-15"
 | 
			
		||||
     id="rect3078"
 | 
			
		||||
     style="fill:#ffffff;fill-opacity:1;stroke:none" />
 | 
			
		||||
  <g
 | 
			
		||||
     transform="translate(0,-995.36218)"
 | 
			
		||||
     id="layer1">
 | 
			
		||||
    <g
 | 
			
		||||
       transform="matrix(0.33083214,0,0,0.33083214,7.3082845,1004.0193)"
 | 
			
		||||
       id="g3077">
 | 
			
		||||
      <g
 | 
			
		||||
         transform="translate(0,-926.86216)"
 | 
			
		||||
         id="layer1-4"
 | 
			
		||||
         style="fill:none;stroke:#ffffff;stroke-width:22.81488991;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
 | 
			
		||||
        <g
 | 
			
		||||
           transform="translate(-10,-60)"
 | 
			
		||||
           id="g3016-5"
 | 
			
		||||
           style="stroke-width:22.81488991">
 | 
			
		||||
          <path
 | 
			
		||||
             d="m 25,108 20,0"
 | 
			
		||||
             transform="translate(0,924.36218)"
 | 
			
		||||
             id="path3008-0"
 | 
			
		||||
             style="stroke-width:22.81488991" />
 | 
			
		||||
          <path
 | 
			
		||||
             d="m 25,88 20,0"
 | 
			
		||||
             transform="translate(0,924.36218)"
 | 
			
		||||
             id="path3010-3"
 | 
			
		||||
             style="stroke-width:22.81488991" />
 | 
			
		||||
          <path
 | 
			
		||||
             d="m 45,118 0,-40 25,0 c 0,0 20,0 20,20 0,20 -20,20 -20,20 z"
 | 
			
		||||
             transform="translate(0,924.36218)"
 | 
			
		||||
             id="path3012-6"
 | 
			
		||||
             style="stroke-width:22.81488991" />
 | 
			
		||||
          <path
 | 
			
		||||
             d="m 90,98 20,0"
 | 
			
		||||
             transform="translate(0,924.36218)"
 | 
			
		||||
             id="path3014-1"
 | 
			
		||||
             style="stroke-width:22.81488991" />
 | 
			
		||||
        </g>
 | 
			
		||||
        <g
 | 
			
		||||
           transform="translate(10,-5.00002)"
 | 
			
		||||
           id="g3016-8-0"
 | 
			
		||||
           style="stroke-width:22.81488991">
 | 
			
		||||
          <path
 | 
			
		||||
             d="m 25,1022.3622 20,0"
 | 
			
		||||
             id="path3010-0-6"
 | 
			
		||||
             style="stroke-width:22.81488991" />
 | 
			
		||||
          <path
 | 
			
		||||
             d="M 45,118 45,78 75,98 z"
 | 
			
		||||
             transform="translate(0,924.36218)"
 | 
			
		||||
             id="path3012-9-3"
 | 
			
		||||
             style="stroke-width:22.81488991" />
 | 
			
		||||
          <path
 | 
			
		||||
             d="m 87.5,1022.3622 17.5,0"
 | 
			
		||||
             id="path3014-6-2"
 | 
			
		||||
             style="stroke-width:22.81488991" />
 | 
			
		||||
          <path
 | 
			
		||||
             d="m 100,93 a 10,10 0 1 1 -20,0 10,10 0 1 1 20,0 z"
 | 
			
		||||
             transform="matrix(0.5,0,0,0.5,37,975.86218)"
 | 
			
		||||
             id="path3820-0"
 | 
			
		||||
             style="stroke-width:45.62977982" />
 | 
			
		||||
        </g>
 | 
			
		||||
      </g>
 | 
			
		||||
      <g
 | 
			
		||||
         transform="translate(0,-926.86216)"
 | 
			
		||||
         id="layer1-5"
 | 
			
		||||
         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:6.33746958;stroke-linecap:square;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
 | 
			
		||||
        <g
 | 
			
		||||
           transform="translate(-10,-60)"
 | 
			
		||||
           id="g3016"
 | 
			
		||||
           style="stroke-width:6.33746958">
 | 
			
		||||
          <path
 | 
			
		||||
             d="m 25,108 20,0"
 | 
			
		||||
             transform="translate(0,924.36218)"
 | 
			
		||||
             id="path3008"
 | 
			
		||||
             style="stroke-width:6.33746958" />
 | 
			
		||||
          <path
 | 
			
		||||
             d="m 25,88 20,0"
 | 
			
		||||
             transform="translate(0,924.36218)"
 | 
			
		||||
             id="path3010"
 | 
			
		||||
             style="stroke-width:6.33746958" />
 | 
			
		||||
          <path
 | 
			
		||||
             d="m 45,118 0,-40 25,0 c 0,0 20,0 20,20 0,20 -20,20 -20,20 z"
 | 
			
		||||
             transform="translate(0,924.36218)"
 | 
			
		||||
             id="path3012"
 | 
			
		||||
             style="stroke-width:6.33746958" />
 | 
			
		||||
          <path
 | 
			
		||||
             d="m 90,98 20,0"
 | 
			
		||||
             transform="translate(0,924.36218)"
 | 
			
		||||
             id="path3014"
 | 
			
		||||
             style="stroke-width:6.33746958" />
 | 
			
		||||
        </g>
 | 
			
		||||
        <g
 | 
			
		||||
           transform="translate(10,-5.00002)"
 | 
			
		||||
           id="g3016-8"
 | 
			
		||||
           style="stroke-width:6.33746958">
 | 
			
		||||
          <path
 | 
			
		||||
             d="m 25,1022.3622 20,0"
 | 
			
		||||
             id="path3010-0"
 | 
			
		||||
             style="stroke-width:6.33746958" />
 | 
			
		||||
          <path
 | 
			
		||||
             d="M 45,118 45,78 75,98 z"
 | 
			
		||||
             transform="translate(0,924.36218)"
 | 
			
		||||
             id="path3012-9"
 | 
			
		||||
             style="stroke-width:6.33746958" />
 | 
			
		||||
          <path
 | 
			
		||||
             d="m 87.5,1022.3622 17.5,0"
 | 
			
		||||
             id="path3014-6"
 | 
			
		||||
             style="stroke-width:6.33746958" />
 | 
			
		||||
          <path
 | 
			
		||||
             d="m 100,93 a 10,10 0 1 1 -20,0 10,10 0 1 1 20,0 z"
 | 
			
		||||
             transform="matrix(0.5,0,0,0.5,37,975.86218)"
 | 
			
		||||
             id="path3820"
 | 
			
		||||
             style="stroke-width:12.67493916" />
 | 
			
		||||
        </g>
 | 
			
		||||
      </g>
 | 
			
		||||
    </g>
 | 
			
		||||
    <text
 | 
			
		||||
       x="56.96154"
 | 
			
		||||
       y="1029.7422"
 | 
			
		||||
       id="text3103"
 | 
			
		||||
       xml:space="preserve"
 | 
			
		||||
       style="font-size:22.81624222px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"><tspan
 | 
			
		||||
         x="56.96154"
 | 
			
		||||
         y="1029.7422"
 | 
			
		||||
         id="tspan3105"
 | 
			
		||||
         style="font-size:20px;font-weight:bold">logdiag</tspan></text>
 | 
			
		||||
  </g>
 | 
			
		||||
</svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 5.3 KiB  | 
							
								
								
									
										73
									
								
								share/library/Active/bipolar.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								share/library/Active/bipolar.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,73 @@
 | 
			
		||||
-- Symbol names
 | 
			
		||||
local names_npn =
 | 
			
		||||
{
 | 
			
		||||
	en = "NPN transistor",
 | 
			
		||||
	cs = "Tranzistor NPN"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
local names_pnp =
 | 
			
		||||
{
 | 
			
		||||
	en = "PNP transistor",
 | 
			
		||||
	cs = "Tranzistor PNP"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
-- Render area in base units (X1, Y1, X2, Y2)
 | 
			
		||||
local area = {-2, -2, 2, 2}
 | 
			
		||||
 | 
			
		||||
-- Terminal points
 | 
			
		||||
local terminals = {{-2, 0}, {2, 2}, {2, -2}}
 | 
			
		||||
 | 
			
		||||
-- Rendering
 | 
			
		||||
local render = function (cr)
 | 
			
		||||
	-- The terminals
 | 
			
		||||
	cr.move_to (-2, 0)
 | 
			
		||||
	cr.line_to (0, 0)
 | 
			
		||||
 | 
			
		||||
	cr.move_to (0, 0.5)
 | 
			
		||||
	cr.line_to (2, 2)
 | 
			
		||||
 | 
			
		||||
	cr.move_to (0, -0.5)
 | 
			
		||||
	cr.line_to (2, -2)
 | 
			
		||||
 | 
			
		||||
	-- The ohmic connection
 | 
			
		||||
	cr.move_to (0, -1)
 | 
			
		||||
	cr.line_to (0, 1)
 | 
			
		||||
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local render_npn = function (cr)
 | 
			
		||||
	render (cr)
 | 
			
		||||
 | 
			
		||||
	cr.save ()
 | 
			
		||||
	cr.translate (0, 0.5)
 | 
			
		||||
	cr.rotate (math.atan2 (-2, 1.5))
 | 
			
		||||
 | 
			
		||||
	cr.move_to (-0.4, 0.8)
 | 
			
		||||
	cr.line_to (0, 1.4)
 | 
			
		||||
	cr.line_to (0.4, 0.8)
 | 
			
		||||
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
	cr.restore ()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local render_pnp = function (cr)
 | 
			
		||||
	render (cr)
 | 
			
		||||
 | 
			
		||||
	cr.save ()
 | 
			
		||||
	cr.translate (2, -2)
 | 
			
		||||
	cr.rotate (math.atan2 (2, 1.5))
 | 
			
		||||
 | 
			
		||||
	cr.move_to (-0.4, 1.3)
 | 
			
		||||
	cr.line_to (0, 1.9)
 | 
			
		||||
	cr.line_to (0.4, 1.3)
 | 
			
		||||
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
	cr.restore ()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- Register the symbols
 | 
			
		||||
logdiag.register ("NPN", names_npn, area, terminals, render_npn)
 | 
			
		||||
logdiag.register ("PNP", names_pnp, area, terminals, render_pnp)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										5
									
								
								share/library/Active/category.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								share/library/Active/category.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
	"en": "Active",
 | 
			
		||||
	"cs": "Aktivní"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										53
									
								
								share/library/Active/icon.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								share/library/Active/icon.svg
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,53 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 | 
			
		||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
 | 
			
		||||
 | 
			
		||||
<svg
 | 
			
		||||
   xmlns:dc="http://purl.org/dc/elements/1.1/"
 | 
			
		||||
   xmlns:cc="http://creativecommons.org/ns#"
 | 
			
		||||
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 | 
			
		||||
   xmlns:svg="http://www.w3.org/2000/svg"
 | 
			
		||||
   xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
   version="1.1"
 | 
			
		||||
   width="128"
 | 
			
		||||
   height="128"
 | 
			
		||||
   id="svg2">
 | 
			
		||||
  <defs
 | 
			
		||||
     id="defs4" />
 | 
			
		||||
  <metadata
 | 
			
		||||
     id="metadata7">
 | 
			
		||||
    <rdf:RDF>
 | 
			
		||||
      <cc:Work
 | 
			
		||||
         rdf:about="">
 | 
			
		||||
        <dc:format>image/svg+xml</dc:format>
 | 
			
		||||
        <dc:type
 | 
			
		||||
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
 | 
			
		||||
        <dc:title></dc:title>
 | 
			
		||||
      </cc:Work>
 | 
			
		||||
    </rdf:RDF>
 | 
			
		||||
  </metadata>
 | 
			
		||||
  <g
 | 
			
		||||
     transform="translate(-3,-1)"
 | 
			
		||||
     id="g3774"
 | 
			
		||||
     style="fill:none;stroke:#000000;stroke-width:4;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
 | 
			
		||||
    <path
 | 
			
		||||
       d="m 20,63 45,0"
 | 
			
		||||
       id="path3764"
 | 
			
		||||
       style="fill:none;stroke:#000000;stroke-width:4;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
 | 
			
		||||
    <path
 | 
			
		||||
       d="m 65,38 0,50"
 | 
			
		||||
       id="path3766"
 | 
			
		||||
       style="fill:none;stroke:#000000;stroke-width:4;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
 | 
			
		||||
    <path
 | 
			
		||||
       d="M 65,53 110,23"
 | 
			
		||||
       id="path3768"
 | 
			
		||||
       style="fill:none;stroke:#000000;stroke-width:4;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
 | 
			
		||||
    <path
 | 
			
		||||
       d="m 65,73 45,30"
 | 
			
		||||
       id="path3770"
 | 
			
		||||
       style="fill:none;stroke:#000000;stroke-width:4;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
 | 
			
		||||
    <path
 | 
			
		||||
       d="M 78,92 93,92 88,77"
 | 
			
		||||
       id="path3772"
 | 
			
		||||
       style="fill:none;stroke:#000000;stroke-width:4;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
 | 
			
		||||
  </g>
 | 
			
		||||
</svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 1.7 KiB  | 
							
								
								
									
										83
									
								
								share/library/Active/igfet.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								share/library/Active/igfet.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,83 @@
 | 
			
		||||
-- Symbol names
 | 
			
		||||
local names_n =
 | 
			
		||||
{
 | 
			
		||||
	en = "N-channel IGFET transistor",
 | 
			
		||||
	cs = "Tranzistor IGFET s kanálem N"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
local names_p =
 | 
			
		||||
{
 | 
			
		||||
	en = "P-channel IGFET transistor",
 | 
			
		||||
	cs = "Tranzistor IGFET s kanálem P"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
-- Render area in base units (X1, Y1, X2, Y2)
 | 
			
		||||
local area = {-2, -1.5, 2, 1.5}
 | 
			
		||||
 | 
			
		||||
-- Terminal points
 | 
			
		||||
local terminals_n = {{-2, 1}, {2, 1}, {2, 0}, {2, -1}}
 | 
			
		||||
local terminals_p = {{-2, -1}, {2, 1}, {2, 0}, {2, -1}}
 | 
			
		||||
 | 
			
		||||
-- Rendering
 | 
			
		||||
local render = function (cr)
 | 
			
		||||
	-- The terminals
 | 
			
		||||
	cr.move_to (-0.3, 1)
 | 
			
		||||
	cr.line_to (-0.3, -1)
 | 
			
		||||
 | 
			
		||||
	cr.move_to (0, 1)
 | 
			
		||||
	cr.line_to (2, 1)
 | 
			
		||||
 | 
			
		||||
	cr.move_to (0, 0)
 | 
			
		||||
	cr.line_to (2, 0)
 | 
			
		||||
 | 
			
		||||
	cr.move_to (0, -1)
 | 
			
		||||
	cr.line_to (2, -1)
 | 
			
		||||
 | 
			
		||||
	-- Source, gate, drain
 | 
			
		||||
	cr.move_to (0, -1.5)
 | 
			
		||||
	cr.line_to (0, -0.5)
 | 
			
		||||
 | 
			
		||||
	cr.move_to (0, -0.3)
 | 
			
		||||
	cr.line_to (0, 0.3)
 | 
			
		||||
 | 
			
		||||
	cr.move_to (0, 0.5)
 | 
			
		||||
	cr.line_to (0, 1.5)
 | 
			
		||||
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local render_n = function (cr)
 | 
			
		||||
	render (cr)
 | 
			
		||||
 | 
			
		||||
	-- The left-side terminal
 | 
			
		||||
	cr.move_to (-2, 1)
 | 
			
		||||
	cr.line_to (-0.3, 1)
 | 
			
		||||
 | 
			
		||||
	-- The arrow
 | 
			
		||||
	cr.move_to (0.9, -0.4)
 | 
			
		||||
	cr.line_to (0.4, 0)
 | 
			
		||||
	cr.line_to (0.9, 0.4)
 | 
			
		||||
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local render_p = function (cr)
 | 
			
		||||
	render (cr)
 | 
			
		||||
 | 
			
		||||
	-- The left-side terminal
 | 
			
		||||
	cr.move_to (-2, -1)
 | 
			
		||||
	cr.line_to (-0.3, -1)
 | 
			
		||||
 | 
			
		||||
	-- The arrow
 | 
			
		||||
	cr.move_to (0.4, -0.4)
 | 
			
		||||
	cr.line_to (0.9, 0)
 | 
			
		||||
	cr.line_to (0.4, 0.4)
 | 
			
		||||
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- Register the symbols
 | 
			
		||||
logdiag.register ("IGFET-N", names_n, area, terminals_n, render_n)
 | 
			
		||||
logdiag.register ("IGFET-P", names_p, area, terminals_p, render_p)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										71
									
								
								share/library/Active/jfet.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								share/library/Active/jfet.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,71 @@
 | 
			
		||||
-- Symbol names
 | 
			
		||||
local names_n =
 | 
			
		||||
{
 | 
			
		||||
	en = "N-channel JFET transistor",
 | 
			
		||||
	cs = "Tranzistor JFET s kanálem N"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
local names_p =
 | 
			
		||||
{
 | 
			
		||||
	en = "P-channel JFET transistor",
 | 
			
		||||
	cs = "Tranzistor JFET s kanálem P"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
-- Render area in base units (X1, Y1, X2, Y2)
 | 
			
		||||
local area = {-2, -1.5, 2, 1.5}
 | 
			
		||||
 | 
			
		||||
-- Terminal points
 | 
			
		||||
local terminals_n = {{-2, 1}, {2, 1}, {2, -1}}
 | 
			
		||||
local terminals_p = {{-2, -1}, {2, 1}, {2, -1}}
 | 
			
		||||
 | 
			
		||||
-- Rendering
 | 
			
		||||
local render = function (cr)
 | 
			
		||||
	-- The terminals
 | 
			
		||||
	cr.move_to (0, 1)
 | 
			
		||||
	cr.line_to (2, 1)
 | 
			
		||||
 | 
			
		||||
	cr.move_to (0, -1)
 | 
			
		||||
	cr.line_to (2, -1)
 | 
			
		||||
 | 
			
		||||
	-- The ohmic connection
 | 
			
		||||
	cr.move_to (0, -1.5)
 | 
			
		||||
	cr.line_to (0, 1.5)
 | 
			
		||||
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local render_n = function (cr)
 | 
			
		||||
	render (cr)
 | 
			
		||||
 | 
			
		||||
	-- The left-side terminal
 | 
			
		||||
	cr.move_to (-2, 1)
 | 
			
		||||
	cr.line_to (0, 1)
 | 
			
		||||
 | 
			
		||||
	-- The arrow
 | 
			
		||||
	cr.move_to (-1, 0.6)
 | 
			
		||||
	cr.line_to (-0.5, 1)
 | 
			
		||||
	cr.line_to (-1, 1.4)
 | 
			
		||||
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local render_p = function (cr)
 | 
			
		||||
	render (cr)
 | 
			
		||||
 | 
			
		||||
	-- The left-side terminal
 | 
			
		||||
	cr.move_to (-2, -1)
 | 
			
		||||
	cr.line_to (0, -1)
 | 
			
		||||
 | 
			
		||||
	-- The arrow
 | 
			
		||||
	cr.move_to (-0.4, -0.6)
 | 
			
		||||
	cr.line_to (-1, -1)
 | 
			
		||||
	cr.line_to (-0.4, -1.4)
 | 
			
		||||
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- Register the symbols
 | 
			
		||||
logdiag.register ("JFET-N", names_n, area, terminals_n, render_n)
 | 
			
		||||
logdiag.register ("JFET-P", names_p, area, terminals_p, render_p)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -1,37 +1,35 @@
 | 
			
		||||
-- Symbol name
 | 
			
		||||
names =
 | 
			
		||||
local names =
 | 
			
		||||
{
 | 
			
		||||
	en = "AND",
 | 
			
		||||
	cs = "AND"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
-- Render area in base units (X1, Y1, X2, Y2)
 | 
			
		||||
area = {-4, -2, 5, 2}
 | 
			
		||||
local area = {-4, -2, 5, 2}
 | 
			
		||||
 | 
			
		||||
-- Terminals
 | 
			
		||||
terminals = {{-4, -1}, {-4, 1}, {5, 0}}
 | 
			
		||||
-- Terminal points
 | 
			
		||||
local terminals = {{-4, -1}, {-4, 1}, {5, 0}}
 | 
			
		||||
 | 
			
		||||
-- Rendering
 | 
			
		||||
render = function (cr)
 | 
			
		||||
local render = function (cr)
 | 
			
		||||
	-- The main shape
 | 
			
		||||
	cr.move_to (-2, -2)
 | 
			
		||||
	cr.line_to (1, -2)
 | 
			
		||||
	cr.arc (1, 0, 2, math.pi * 1.5, math.pi * 0.5)
 | 
			
		||||
	cr.line_to (-2, 2)
 | 
			
		||||
	cr.close_path ()
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
 | 
			
		||||
	-- The contacts
 | 
			
		||||
	-- The terminals
 | 
			
		||||
	cr.move_to (-4, -1)
 | 
			
		||||
	cr.line_to (-2, -1)
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
 | 
			
		||||
	cr.move_to (-4, 1)
 | 
			
		||||
	cr.line_to (-2, 1)
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
 | 
			
		||||
	cr.move_to (3, 0)
 | 
			
		||||
	cr.line_to (5, 0)
 | 
			
		||||
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,37 +1,35 @@
 | 
			
		||||
-- Symbol name
 | 
			
		||||
names =
 | 
			
		||||
local names =
 | 
			
		||||
{
 | 
			
		||||
	en = "NOT",
 | 
			
		||||
	cs = "NOT"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
-- Render area in base units (X1, Y1, X2, Y2)
 | 
			
		||||
area = {-4, -2, 4, 2}
 | 
			
		||||
local area = {-4, -2, 4, 2}
 | 
			
		||||
 | 
			
		||||
-- Terminals
 | 
			
		||||
terminals = {{-4, 0}, {4, 0}}
 | 
			
		||||
-- Terminal points
 | 
			
		||||
local terminals = {{-4, 0}, {4, 0}}
 | 
			
		||||
 | 
			
		||||
-- Rendering
 | 
			
		||||
render = function (cr)
 | 
			
		||||
local render = function (cr)
 | 
			
		||||
	-- The triangle
 | 
			
		||||
	cr.move_to (-2, -2)
 | 
			
		||||
	cr.line_to (2, 0)
 | 
			
		||||
	cr.line_to (-2, 2)
 | 
			
		||||
	cr.close_path ()
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
 | 
			
		||||
	-- The circle
 | 
			
		||||
	cr.new_sub_path ()
 | 
			
		||||
	cr.arc (2.25, 0, 0.25, 0, 2 * math.pi)
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
 | 
			
		||||
	-- The contacts
 | 
			
		||||
	-- The terminals
 | 
			
		||||
	cr.move_to (-4, 0)
 | 
			
		||||
	cr.line_to (-2, 0)
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
 | 
			
		||||
	cr.move_to (2.5, 0)
 | 
			
		||||
	cr.line_to (4, 0)
 | 
			
		||||
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,18 +1,18 @@
 | 
			
		||||
-- Symbol name
 | 
			
		||||
names =
 | 
			
		||||
local names =
 | 
			
		||||
{
 | 
			
		||||
	en = "OR",
 | 
			
		||||
	cs = "OR"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
-- Render area in base units (X1, Y1, X2, Y2)
 | 
			
		||||
area = {-4, -2, 5, 2}
 | 
			
		||||
local area = {-4, -2, 5, 2}
 | 
			
		||||
 | 
			
		||||
-- Terminals
 | 
			
		||||
terminals = {{-4, -1}, {-4, 1}, {5, 0}}
 | 
			
		||||
-- Terminal points
 | 
			
		||||
local terminals = {{-4, -1}, {-4, 1}, {5, 0}}
 | 
			
		||||
 | 
			
		||||
-- Rendering
 | 
			
		||||
render = function (cr)
 | 
			
		||||
local render = function (cr)
 | 
			
		||||
	-- The main shape
 | 
			
		||||
	cr.move_to (-2, -2)
 | 
			
		||||
	cr.line_to (0, -2)
 | 
			
		||||
@@ -22,7 +22,7 @@ render = function (cr)
 | 
			
		||||
	cr.curve_to (-1, 1, -1, -1, -2, -2)
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
 | 
			
		||||
	-- The contacts
 | 
			
		||||
	-- The terminals
 | 
			
		||||
	cr.save ()
 | 
			
		||||
 | 
			
		||||
	-- Crop the contacts according to
 | 
			
		||||
@@ -36,12 +36,11 @@ render = function (cr)
 | 
			
		||||
 | 
			
		||||
	cr.move_to (-4, -1)
 | 
			
		||||
	cr.line_to (-1, -1)
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
 | 
			
		||||
	cr.move_to (-4, 1)
 | 
			
		||||
	cr.line_to (-1, 1)
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
	cr.restore ()
 | 
			
		||||
 | 
			
		||||
	cr.move_to (3, 0)
 | 
			
		||||
 
 | 
			
		||||
@@ -1,18 +1,18 @@
 | 
			
		||||
-- Symbol name
 | 
			
		||||
names =
 | 
			
		||||
local names =
 | 
			
		||||
{
 | 
			
		||||
	en = "Power source",
 | 
			
		||||
	cs = "Zdroj napětí"
 | 
			
		||||
	en = "Cell",
 | 
			
		||||
	cs = "Článek"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
-- Render area in base units (X1, Y1, X2, Y2)
 | 
			
		||||
area = {-1, -2, 1, 2}
 | 
			
		||||
local area = {-1, -2, 1, 2}
 | 
			
		||||
 | 
			
		||||
-- Terminals
 | 
			
		||||
terminals = {{-1, 0}, {1, 0}}
 | 
			
		||||
-- Terminal points
 | 
			
		||||
local terminals = {{-1, 0}, {1, 0}}
 | 
			
		||||
 | 
			
		||||
-- Rendering
 | 
			
		||||
render = function (cr)
 | 
			
		||||
local render = function (cr)
 | 
			
		||||
	-- The vertical lines
 | 
			
		||||
	cr.move_to (-0.2, -1)
 | 
			
		||||
	cr.line_to (-0.2, 1)
 | 
			
		||||
@@ -20,7 +20,7 @@ render = function (cr)
 | 
			
		||||
	cr.move_to (0.2, -2)
 | 
			
		||||
	cr.line_to (0.2, 2)
 | 
			
		||||
 | 
			
		||||
	-- The contacts
 | 
			
		||||
	-- The terminals
 | 
			
		||||
	cr.move_to (-1, 0)
 | 
			
		||||
	cr.line_to (-0.2, 0)
 | 
			
		||||
 | 
			
		||||
@@ -31,6 +31,6 @@ render = function (cr)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- Register the symbol
 | 
			
		||||
logdiag.register ("PowerSource", names, area, terminals, render)
 | 
			
		||||
logdiag.register ("Cell", names, area, terminals, render)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -1,18 +1,18 @@
 | 
			
		||||
-- Symbol name
 | 
			
		||||
names =
 | 
			
		||||
local names =
 | 
			
		||||
{
 | 
			
		||||
	en = "Ground",
 | 
			
		||||
	cs = "Zem"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
-- Render area in base units (X1, Y1, X2, Y2)
 | 
			
		||||
area = {-1, -1, 1, 2}
 | 
			
		||||
local area = {-1, -1, 1, 2}
 | 
			
		||||
 | 
			
		||||
-- Terminals
 | 
			
		||||
terminals = {{0, -1}}
 | 
			
		||||
-- Terminal points
 | 
			
		||||
local terminals = {{0, -1}}
 | 
			
		||||
 | 
			
		||||
-- Rendering
 | 
			
		||||
render = function (cr)
 | 
			
		||||
local render = function (cr)
 | 
			
		||||
	-- The vertical line
 | 
			
		||||
	cr.move_to (0, -1)
 | 
			
		||||
	cr.line_to (0, 0.5)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										24
									
								
								share/library/Misc/junction.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								share/library/Misc/junction.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
			
		||||
-- Symbol name
 | 
			
		||||
local names =
 | 
			
		||||
{
 | 
			
		||||
	en = "Junction",
 | 
			
		||||
	cs = "Spoj"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
-- Render area in base units (X1, Y1, X2, Y2)
 | 
			
		||||
local area = {-0.5, -0.5, 0.5, 0.5}
 | 
			
		||||
 | 
			
		||||
-- Terminal points
 | 
			
		||||
local terminals = {}
 | 
			
		||||
 | 
			
		||||
-- Rendering
 | 
			
		||||
local render = function (cr)
 | 
			
		||||
	-- The disk
 | 
			
		||||
	cr.arc (0, 0, 0.3, 0, math.pi * 2)
 | 
			
		||||
	cr.fill ()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- Register the symbol
 | 
			
		||||
logdiag.register ("Junction", names, area, terminals, render)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -1,18 +1,18 @@
 | 
			
		||||
-- Symbol name
 | 
			
		||||
names =
 | 
			
		||||
local names =
 | 
			
		||||
{
 | 
			
		||||
	en = "Lamp",
 | 
			
		||||
	cs = "Světelný zdroj"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
-- Render area in base units (X1, Y1, X2, Y2)
 | 
			
		||||
area = {-2, -1, 2, 1}
 | 
			
		||||
local area = {-2, -1, 2, 1}
 | 
			
		||||
 | 
			
		||||
-- Terminals
 | 
			
		||||
terminals = {{-2, 0}, {2, 0}}
 | 
			
		||||
-- Terminal points
 | 
			
		||||
local terminals = {{-2, 0}, {2, 0}}
 | 
			
		||||
 | 
			
		||||
-- Rendering
 | 
			
		||||
render = function (cr)
 | 
			
		||||
local render = function (cr)
 | 
			
		||||
	-- The circle
 | 
			
		||||
	cr.save ()
 | 
			
		||||
 | 
			
		||||
@@ -25,16 +25,17 @@ render = function (cr)
 | 
			
		||||
 | 
			
		||||
	cr.move_to (1, -1)
 | 
			
		||||
	cr.line_to (-1, 1)
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
	cr.restore ()
 | 
			
		||||
 | 
			
		||||
	-- The contacts
 | 
			
		||||
	-- The terminals
 | 
			
		||||
	cr.move_to (-2, 0)
 | 
			
		||||
	cr.line_to (-1, 0)
 | 
			
		||||
 | 
			
		||||
	cr.move_to (1, 0)
 | 
			
		||||
	cr.line_to (2, 0)
 | 
			
		||||
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										83
									
								
								share/library/Misc/meters.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								share/library/Misc/meters.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,83 @@
 | 
			
		||||
-- Symbol names
 | 
			
		||||
local names_A =
 | 
			
		||||
{
 | 
			
		||||
	en = "Ammeter",
 | 
			
		||||
	cs = "Ampérmetr"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
local names_mA =
 | 
			
		||||
{
 | 
			
		||||
	en = "Milliammeter",
 | 
			
		||||
	cs = "Miliampérmetr"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
local names_V =
 | 
			
		||||
{
 | 
			
		||||
	en = "Voltmeter",
 | 
			
		||||
	cs = "Voltmetr"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
local names_ohm =
 | 
			
		||||
{
 | 
			
		||||
	en = "Ohmmeter",
 | 
			
		||||
	cs = "Ohmmetr"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
local names_W =
 | 
			
		||||
{
 | 
			
		||||
	en = "Wattmeter",
 | 
			
		||||
	cs = "Wattmetr"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
-- Render area in base units (X1, Y1, X2, Y2)
 | 
			
		||||
local area = {-3, -2, 3, 2}
 | 
			
		||||
 | 
			
		||||
-- Terminal points
 | 
			
		||||
local terminals = {{-3, 0}, {3, 0}}
 | 
			
		||||
 | 
			
		||||
-- Rendering
 | 
			
		||||
local render = function (cr, name)
 | 
			
		||||
	-- The circle
 | 
			
		||||
	cr.arc (0, 0, 2, 0, math.pi * 2)
 | 
			
		||||
 | 
			
		||||
	-- The contact
 | 
			
		||||
	cr.move_to (-3, 0)
 | 
			
		||||
	cr.line_to (-2, 0)
 | 
			
		||||
 | 
			
		||||
	cr.move_to (2, 0)
 | 
			
		||||
	cr.line_to (3, 0)
 | 
			
		||||
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
 | 
			
		||||
	cr.move_to (0, 0)
 | 
			
		||||
	cr.show_text (name)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local render_A = function (cr)
 | 
			
		||||
	render (cr, "A")
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local render_mA = function (cr)
 | 
			
		||||
	render (cr, "mA")
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local render_V = function (cr)
 | 
			
		||||
	render (cr, "V")
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local render_ohm = function (cr)
 | 
			
		||||
	render (cr, "Ω")
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local render_W = function (cr)
 | 
			
		||||
	render (cr, "W")
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- Register the symbols
 | 
			
		||||
logdiag.register ("Ammeter",      names_A,   area, terminals, render_A)
 | 
			
		||||
logdiag.register ("Milliammeter", names_mA,  area, terminals, render_mA)
 | 
			
		||||
logdiag.register ("Voltmeter",    names_V,   area, terminals, render_V)
 | 
			
		||||
logdiag.register ("Ohmmeter",     names_ohm, area, terminals, render_ohm)
 | 
			
		||||
logdiag.register ("Wattmeter",    names_W,   area, terminals, render_W)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -1,23 +1,23 @@
 | 
			
		||||
-- Symbol name
 | 
			
		||||
names =
 | 
			
		||||
local names =
 | 
			
		||||
{
 | 
			
		||||
	en = "Switch",
 | 
			
		||||
	cs = "Spínač"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
-- Render area in base units (X1, Y1, X2, Y2)
 | 
			
		||||
area = {-2, -1.5, 2, 0}
 | 
			
		||||
local area = {-2, -1.5, 2, 0}
 | 
			
		||||
 | 
			
		||||
-- Terminals
 | 
			
		||||
terminals = {{-2, 0}, {2, 0}}
 | 
			
		||||
-- Terminal points
 | 
			
		||||
local terminals = {{-2, 0}, {2, 0}}
 | 
			
		||||
 | 
			
		||||
-- Rendering
 | 
			
		||||
render_normal = function (cr)
 | 
			
		||||
local render = function (cr)
 | 
			
		||||
	-- The switch contact
 | 
			
		||||
	cr.move_to (1.3, -1.3)
 | 
			
		||||
	cr.line_to (-1, 0)
 | 
			
		||||
 | 
			
		||||
	-- The contacts
 | 
			
		||||
	-- The terminals
 | 
			
		||||
	cr.move_to (-2, 0)
 | 
			
		||||
	cr.line_to (-1, 0)
 | 
			
		||||
 | 
			
		||||
@@ -28,6 +28,6 @@ render_normal = function (cr)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- Register the symbol
 | 
			
		||||
logdiag.register ("Switch", names, area, terminals, render_normal)
 | 
			
		||||
logdiag.register ("Switch", names, area, terminals, render)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										29
									
								
								share/library/Misc/terminal.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								share/library/Misc/terminal.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
			
		||||
-- Symbol name
 | 
			
		||||
local names =
 | 
			
		||||
{
 | 
			
		||||
	en = "Terminal",
 | 
			
		||||
	cs = "Terminál"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
-- Render area in base units (X1, Y1, X2, Y2)
 | 
			
		||||
local area = {-1, -0.5, 0.5, 0.5}
 | 
			
		||||
 | 
			
		||||
-- Terminal points
 | 
			
		||||
local terminals = {{-1, 0}}
 | 
			
		||||
 | 
			
		||||
-- Rendering
 | 
			
		||||
local render = function (cr)
 | 
			
		||||
	-- The circle
 | 
			
		||||
	cr.arc (0, 0, 0.3, 0, math.pi * 2)
 | 
			
		||||
 | 
			
		||||
	-- The contact
 | 
			
		||||
	cr.move_to (-1, 0)
 | 
			
		||||
	cr.line_to (-0.3, 0)
 | 
			
		||||
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- Register the symbol
 | 
			
		||||
logdiag.register ("Terminal", names, area, terminals, render)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										72
									
								
								share/library/Misc/voltage-source.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								share/library/Misc/voltage-source.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,72 @@
 | 
			
		||||
-- Symbol names
 | 
			
		||||
local names_ac =
 | 
			
		||||
{
 | 
			
		||||
	en = "AC voltage source",
 | 
			
		||||
	cs = "Střídavý zdroj napětí"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
local names_dc =
 | 
			
		||||
{
 | 
			
		||||
	en = "DC voltage source",
 | 
			
		||||
	cs = "Stejnosměrný zdroj napětí"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
-- Render area in base units (X1, Y1, X2, Y2)
 | 
			
		||||
local area = {-3, -2, 3, 2}
 | 
			
		||||
 | 
			
		||||
-- Terminal points
 | 
			
		||||
local terminals = {{-3, 0}, {3, 0}}
 | 
			
		||||
 | 
			
		||||
-- Rendering
 | 
			
		||||
local render = function (cr)
 | 
			
		||||
	-- The circle
 | 
			
		||||
	cr.arc (0, 0, 2, 0, math.pi * 2)
 | 
			
		||||
 | 
			
		||||
	-- The terminals
 | 
			
		||||
	cr.move_to (-3, 0)
 | 
			
		||||
	cr.line_to (-2, 0)
 | 
			
		||||
 | 
			
		||||
	cr.move_to (2, 0)
 | 
			
		||||
	cr.line_to (3, 0)
 | 
			
		||||
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local render_ac = function (cr)
 | 
			
		||||
	render (cr)
 | 
			
		||||
 | 
			
		||||
	-- The AC symbol
 | 
			
		||||
	cr.move_to (-1, 0.25)
 | 
			
		||||
	cr.curve_to (-0.4, -1.5, 0.4, 1.5, 1, -0.25)
 | 
			
		||||
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local render_dc = function (cr)
 | 
			
		||||
	render (cr)
 | 
			
		||||
 | 
			
		||||
	-- The DC symbol
 | 
			
		||||
	cr.move_to (-1, -0.25)
 | 
			
		||||
	cr.line_to (1, -0.25)
 | 
			
		||||
 | 
			
		||||
	cr.move_to (-1, 0.25)
 | 
			
		||||
	cr.line_to (-0.2, 0.25)
 | 
			
		||||
 | 
			
		||||
	cr.move_to (0.2, 0.25)
 | 
			
		||||
	cr.line_to (1, 0.25)
 | 
			
		||||
 | 
			
		||||
	-- Polarity sign
 | 
			
		||||
	cr.move_to (2.6, -0.6)
 | 
			
		||||
	cr.line_to (2.6, -1.4)
 | 
			
		||||
 | 
			
		||||
	cr.move_to (2.2, -1)
 | 
			
		||||
	cr.line_to (3.0, -1)
 | 
			
		||||
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- Register the symbol
 | 
			
		||||
logdiag.register ("ACSource", names_ac, area, terminals, render_ac)
 | 
			
		||||
logdiag.register ("DCSource", names_dc, area, terminals, render_dc)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -1,38 +1,59 @@
 | 
			
		||||
-- Symbol name
 | 
			
		||||
names =
 | 
			
		||||
local names =
 | 
			
		||||
{
 | 
			
		||||
	en = "Capacitor",
 | 
			
		||||
	cs = "Kondenzátor"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
-- Render area in base units (X1, Y1, X2, Y2)
 | 
			
		||||
area = {-2, -1, 2, 1}
 | 
			
		||||
local names_polar =
 | 
			
		||||
{
 | 
			
		||||
	en = "Polarized capacitor",
 | 
			
		||||
	cs = "Polarizovaný kondenzátor"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
-- Terminals
 | 
			
		||||
terminals = {{-2, 0}, {2, 0}}
 | 
			
		||||
-- Render area in base units (X1, Y1, X2, Y2)
 | 
			
		||||
local area       = {-2, -1, 2, 1}
 | 
			
		||||
local area_polar = {-2, -1.5, 2, 1}
 | 
			
		||||
 | 
			
		||||
-- Terminal points
 | 
			
		||||
local terminals = {{-2, 0}, {2, 0}}
 | 
			
		||||
 | 
			
		||||
-- Rendering
 | 
			
		||||
render = function (cr)
 | 
			
		||||
local render = function (cr)
 | 
			
		||||
	-- The vertical lines
 | 
			
		||||
	cr.move_to (-0.2, -1)
 | 
			
		||||
	cr.line_to (-0.2, 1)
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
 | 
			
		||||
	cr.move_to (0.2, -1)
 | 
			
		||||
	cr.line_to (0.2, 1)
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
 | 
			
		||||
	-- The contacts
 | 
			
		||||
	-- The terminals
 | 
			
		||||
	cr.move_to (-2, 0)
 | 
			
		||||
	cr.line_to (-0.2, 0)
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
 | 
			
		||||
	cr.move_to (0.2, 0)
 | 
			
		||||
	cr.line_to (2, 0)
 | 
			
		||||
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local render_polar = function (cr)
 | 
			
		||||
	render (cr)
 | 
			
		||||
 | 
			
		||||
	-- The plus sign
 | 
			
		||||
	cr.move_to (-0.6, -1)
 | 
			
		||||
	cr.line_to (-1.4, -1)
 | 
			
		||||
 | 
			
		||||
	cr.move_to (-1, -1.4)
 | 
			
		||||
	cr.line_to (-1, -0.6)
 | 
			
		||||
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- Register the symbol
 | 
			
		||||
logdiag.register ("Capacitor", names, area, terminals, render)
 | 
			
		||||
logdiag.register ("Capacitor",
 | 
			
		||||
	names,       area,       terminals, render)
 | 
			
		||||
logdiag.register ("CapacitorPolarized",
 | 
			
		||||
	names_polar, area_polar, terminals, render_polar)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,41 +1,117 @@
 | 
			
		||||
-- Symbol name
 | 
			
		||||
names =
 | 
			
		||||
-- Symbol names
 | 
			
		||||
local names =
 | 
			
		||||
{
 | 
			
		||||
	en = "Diode",
 | 
			
		||||
	cs = "Dioda"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
-- Render area in base units (X1, Y1, X2, Y2)
 | 
			
		||||
area = {-2, -1, 2, 1}
 | 
			
		||||
local names_zener =
 | 
			
		||||
{
 | 
			
		||||
	en = "Zener diode",
 | 
			
		||||
	cs = "Zenerova dioda"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
-- Terminals
 | 
			
		||||
terminals = {{-2, 0}, {2, 0}}
 | 
			
		||||
local names_led =
 | 
			
		||||
{
 | 
			
		||||
	en = "Light-emitting diode",
 | 
			
		||||
	cs = "Svítivá dioda"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
local names_photo =
 | 
			
		||||
{
 | 
			
		||||
	en = "Photodiode",
 | 
			
		||||
	cs = "Fotodioda"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
-- Render area in base units (X1, Y1, X2, Y2)
 | 
			
		||||
local area     = {-2, -1, 2, 1}
 | 
			
		||||
local area_rad = {-2, -2.5, 2, 1}
 | 
			
		||||
 | 
			
		||||
-- Terminal points
 | 
			
		||||
local terminals = {{-2, 0}, {2, 0}}
 | 
			
		||||
 | 
			
		||||
-- Rendering
 | 
			
		||||
render = function (cr)
 | 
			
		||||
local render = function (cr)
 | 
			
		||||
	-- The triangle
 | 
			
		||||
	cr.move_to (-1, -1)
 | 
			
		||||
	cr.line_to (1, 0)
 | 
			
		||||
	cr.line_to (-1, 1)
 | 
			
		||||
	cr.line_to (-1, -1)
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
 | 
			
		||||
	-- The vertical line
 | 
			
		||||
	cr.move_to (1, 1)
 | 
			
		||||
	cr.line_to (1, -1)
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
 | 
			
		||||
	-- The contacts
 | 
			
		||||
	-- The terminals
 | 
			
		||||
	cr.move_to (-2, 0)
 | 
			
		||||
	cr.line_to (-1, 0)
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
 | 
			
		||||
	cr.move_to (1, 0)
 | 
			
		||||
	cr.line_to (2, 0)
 | 
			
		||||
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local render_zener = function (cr)
 | 
			
		||||
	render (cr)
 | 
			
		||||
 | 
			
		||||
	cr.move_to (1, 1)
 | 
			
		||||
	cr.line_to (0.5, 1)
 | 
			
		||||
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local render_arrow = function (cr)
 | 
			
		||||
	cr.move_to (0, 0)
 | 
			
		||||
	cr.line_to (0, -1.5)
 | 
			
		||||
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
 | 
			
		||||
	cr.move_to (-0.3, -0.7)
 | 
			
		||||
	cr.line_to (0, -1.5)
 | 
			
		||||
	cr.line_to (0.3, -0.7)
 | 
			
		||||
	cr.close_path ()
 | 
			
		||||
 | 
			
		||||
	cr.fill ()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local render_radiation = function (cr)
 | 
			
		||||
	cr.save ()
 | 
			
		||||
	cr.translate (-0.4, 0)
 | 
			
		||||
	render_arrow (cr)
 | 
			
		||||
	cr.restore ()
 | 
			
		||||
 | 
			
		||||
	cr.save ()
 | 
			
		||||
	cr.translate (0.4, 0)
 | 
			
		||||
	render_arrow (cr)
 | 
			
		||||
	cr.restore ()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local render_led = function (cr)
 | 
			
		||||
	render (cr)
 | 
			
		||||
 | 
			
		||||
	cr.save ()
 | 
			
		||||
	cr.translate (-0.3, -1.0)
 | 
			
		||||
	cr.rotate (math.atan2 (1, 1))
 | 
			
		||||
 | 
			
		||||
	render_radiation (cr)
 | 
			
		||||
 | 
			
		||||
	cr.restore ()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local render_photo = function (cr)
 | 
			
		||||
	render (cr)
 | 
			
		||||
 | 
			
		||||
	cr.save ()
 | 
			
		||||
	cr.translate (0.75, -2.05)
 | 
			
		||||
	cr.rotate (math.atan2 (-1, -1))
 | 
			
		||||
 | 
			
		||||
	render_radiation (cr)
 | 
			
		||||
 | 
			
		||||
	cr.restore ()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- Register the symbol
 | 
			
		||||
logdiag.register ("Diode", names, area, terminals, render)
 | 
			
		||||
logdiag.register ("Diode",      names,       area,     terminals, render)
 | 
			
		||||
logdiag.register ("DiodeZener", names_zener, area,     terminals, render_zener)
 | 
			
		||||
logdiag.register ("DiodeLED",   names_led,   area_rad, terminals, render_led)
 | 
			
		||||
logdiag.register ("DiodePhoto", names_photo, area_rad, terminals, render_photo)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,43 +1,45 @@
 | 
			
		||||
-- Symbol names
 | 
			
		||||
names_normal =
 | 
			
		||||
local names =
 | 
			
		||||
{
 | 
			
		||||
	en = "Inductor",
 | 
			
		||||
	cs = "Cívka"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
names_core =
 | 
			
		||||
local names_core =
 | 
			
		||||
{
 | 
			
		||||
	en = "Inductor with magnetic core",
 | 
			
		||||
	cs = "Cívka s magnetickým jádrem"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
-- Render area in base units (X1, Y1, X2, Y2)
 | 
			
		||||
area = {-2, -1, 2, 0}
 | 
			
		||||
local area = {-2, -1, 2, 0}
 | 
			
		||||
 | 
			
		||||
-- Terminals
 | 
			
		||||
terminals = {{-2, 0}, {2, 0}}
 | 
			
		||||
-- Terminal points
 | 
			
		||||
local terminals = {{-2, 0}, {2, 0}}
 | 
			
		||||
 | 
			
		||||
-- Rendering
 | 
			
		||||
render_normal = function (cr)
 | 
			
		||||
local render = function (cr)
 | 
			
		||||
	-- The arcs
 | 
			
		||||
	cr.arc (-1.5, 0, 0.5, math.pi, 0)
 | 
			
		||||
	cr.arc (-0.5, 0, 0.5, math.pi, 0)
 | 
			
		||||
	cr.arc (0.5, 0, 0.5, math.pi, 0)
 | 
			
		||||
	cr.arc (1.5, 0, 0.5, math.pi, 0)
 | 
			
		||||
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
render_core = function (cr)
 | 
			
		||||
	render_normal (cr)
 | 
			
		||||
local render_core = function (cr)
 | 
			
		||||
	render (cr)
 | 
			
		||||
 | 
			
		||||
	-- The core
 | 
			
		||||
	cr.move_to (-2, -1)
 | 
			
		||||
	cr.line_to (2, -1)
 | 
			
		||||
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- Register the symbols
 | 
			
		||||
logdiag.register ("Inductor",         names_normal, area, terminals, render_normal)
 | 
			
		||||
logdiag.register ("InductorWithCore", names_core,   area, terminals, render_core)
 | 
			
		||||
logdiag.register ("Inductor",         names,      area, terminals, render)
 | 
			
		||||
logdiag.register ("InductorWithCore", names_core, area, terminals, render_core)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,37 +1,99 @@
 | 
			
		||||
-- Symbol name
 | 
			
		||||
names =
 | 
			
		||||
local names =
 | 
			
		||||
{
 | 
			
		||||
	en = "Resistor",
 | 
			
		||||
	cs = "Rezistor"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
-- Render area in base units (X1, Y1, X2, Y2)
 | 
			
		||||
area = {-2, -0.5, 2, 0.5}
 | 
			
		||||
local names_adj =
 | 
			
		||||
{
 | 
			
		||||
	en = "Adjustable resistor",
 | 
			
		||||
	cs = "Nastavitelný rezistor"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
-- Terminals
 | 
			
		||||
terminals = {{-2, 0}, {2, 0}}
 | 
			
		||||
local names_pot =
 | 
			
		||||
{
 | 
			
		||||
	en = "Potentiometer",
 | 
			
		||||
	cs = "Potenciometr"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
-- Render area in base units (X1, Y1, X2, Y2)
 | 
			
		||||
local area     = {-2, -0.5, 2, 0.5}
 | 
			
		||||
local area_adj = {-2, -1.5, 2, 1}
 | 
			
		||||
local area_pot = {-2, -2, 2, 0.5}
 | 
			
		||||
 | 
			
		||||
-- Terminal points
 | 
			
		||||
local terminals     = {{-2, 0}, {2, 0}}
 | 
			
		||||
local terminals_pot = {{-2, 0}, {2, 0}, {2, -2}}
 | 
			
		||||
 | 
			
		||||
-- Rendering
 | 
			
		||||
render = function (cr)
 | 
			
		||||
local render = function (cr)
 | 
			
		||||
	-- The rectangle
 | 
			
		||||
	cr.move_to (-1.5, -0.5)
 | 
			
		||||
	cr.line_to (1.5, -0.5)
 | 
			
		||||
	cr.line_to (1.5, 0.5)
 | 
			
		||||
	cr.line_to (-1.5, 0.5)
 | 
			
		||||
	cr.line_to (-1.5, -0.5)
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
 | 
			
		||||
	-- The contacts
 | 
			
		||||
	-- The terminals
 | 
			
		||||
	cr.move_to (-2, 0)
 | 
			
		||||
	cr.line_to (-1.5, 0)
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
 | 
			
		||||
	cr.move_to (1.5, 0)
 | 
			
		||||
	cr.line_to (2, 0)
 | 
			
		||||
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local render_adj = function (cr)
 | 
			
		||||
	render (cr)
 | 
			
		||||
 | 
			
		||||
	-- The arrow
 | 
			
		||||
	cr.move_to (-1, 1)
 | 
			
		||||
	cr.line_to (1, -1)
 | 
			
		||||
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
 | 
			
		||||
	cr.save ()
 | 
			
		||||
	cr.translate (1.5, -1.5)
 | 
			
		||||
	cr.rotate (math.atan2 (1, 1))
 | 
			
		||||
 | 
			
		||||
	cr.move_to (0, 0)
 | 
			
		||||
	cr.line_to (0.3, 0.8)
 | 
			
		||||
	cr.line_to (-0.3, 0.8)
 | 
			
		||||
	cr.close_path ()
 | 
			
		||||
 | 
			
		||||
	cr.fill ()
 | 
			
		||||
	cr.restore ()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local render_pot = function (cr)
 | 
			
		||||
	render (cr)
 | 
			
		||||
 | 
			
		||||
	-- The contact
 | 
			
		||||
	cr.move_to (0, -2)
 | 
			
		||||
	cr.line_to (2, -2)
 | 
			
		||||
 | 
			
		||||
	-- The arrow
 | 
			
		||||
	cr.move_to (0, -2)
 | 
			
		||||
	cr.line_to (0, -1)
 | 
			
		||||
 | 
			
		||||
	cr.stroke ()
 | 
			
		||||
 | 
			
		||||
	cr.move_to (0, -0.5)
 | 
			
		||||
	cr.line_to (0.3, -1.3)
 | 
			
		||||
	cr.line_to (-0.3, -1.3)
 | 
			
		||||
	cr.close_path ()
 | 
			
		||||
 | 
			
		||||
	cr.fill ()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- Register the symbol
 | 
			
		||||
logdiag.register ("Resistor", names, area, terminals, render)
 | 
			
		||||
logdiag.register ("Resistor",
 | 
			
		||||
	names,     area,     terminals,     render)
 | 
			
		||||
logdiag.register ("ResistorAdjustable",
 | 
			
		||||
	names_adj, area_adj, terminals,     render_adj)
 | 
			
		||||
logdiag.register ("Potentiometer",
 | 
			
		||||
	names_pot, area_pot, terminals_pot, render_pot)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -32,8 +32,8 @@ struct _LdWindowMainPrivate
 | 
			
		||||
	LdDiagram *diagram;
 | 
			
		||||
	gchar *filename;
 | 
			
		||||
 | 
			
		||||
	GtkWidget *canvas_window;
 | 
			
		||||
	LdCanvas *canvas;
 | 
			
		||||
	GtkWidget *scrolled_window;
 | 
			
		||||
	LdDiagramView *view;
 | 
			
		||||
 | 
			
		||||
	GtkWidget *statusbar;
 | 
			
		||||
	guint statusbar_symbol_context_id;
 | 
			
		||||
@@ -59,7 +59,7 @@ static void update_title (LdWindowMain *self);
 | 
			
		||||
static void action_set_sensitive (LdWindowMain *self, const gchar *name,
 | 
			
		||||
	gboolean sensitive);
 | 
			
		||||
 | 
			
		||||
static void on_canvas_zoom_changed (LdCanvas *canvas,
 | 
			
		||||
static void on_view_zoom_changed (LdDiagramView *view,
 | 
			
		||||
	GParamSpec *pspec, LdWindowMain *self);
 | 
			
		||||
 | 
			
		||||
static void on_diagram_changed (LdDiagram *diagram, LdWindowMain *self);
 | 
			
		||||
@@ -71,6 +71,7 @@ static void on_diagram_selection_changed (LdDiagram *diagram,
 | 
			
		||||
static gchar *diagram_get_name (LdWindowMain *self);
 | 
			
		||||
static void diagram_set_filename (LdWindowMain *self, gchar *filename);
 | 
			
		||||
static void diagram_new (LdWindowMain *self);
 | 
			
		||||
static gboolean diagram_open (LdWindowMain *self, const gchar *filename);
 | 
			
		||||
static void diagram_save (LdWindowMain *self);
 | 
			
		||||
 | 
			
		||||
static GtkFileFilter *diagram_get_file_filter (void);
 | 
			
		||||
@@ -110,61 +111,61 @@ static void on_action_normal_size (GtkAction *action, LdWindowMain *self);
 | 
			
		||||
/* Actions for menus, toolbars, accelerators. */
 | 
			
		||||
static GtkActionEntry wm_action_entries[] =
 | 
			
		||||
{
 | 
			
		||||
	{"FileMenu", NULL, Q_("_File"), NULL, NULL, NULL},
 | 
			
		||||
		{"New", GTK_STOCK_NEW, Q_("_New"), "<Ctrl>N",
 | 
			
		||||
			Q_("Create a new diagram"),
 | 
			
		||||
	{"FileMenu", NULL, N_("_File"), NULL, NULL, NULL},
 | 
			
		||||
		{"New", GTK_STOCK_NEW, N_("_New"), "<Ctrl>N",
 | 
			
		||||
			N_("Create a new diagram"),
 | 
			
		||||
			G_CALLBACK (on_action_new)},
 | 
			
		||||
		{"Open", GTK_STOCK_OPEN, Q_("_Open..."), "<Ctrl>O",
 | 
			
		||||
			Q_("Open a diagram"),
 | 
			
		||||
		{"Open", GTK_STOCK_OPEN, N_("_Open..."), "<Ctrl>O",
 | 
			
		||||
			N_("Open a diagram"),
 | 
			
		||||
			G_CALLBACK (on_action_open)},
 | 
			
		||||
		{"Save", GTK_STOCK_SAVE, Q_("_Save"), "<Ctrl>S",
 | 
			
		||||
			Q_("Save the current diagram"),
 | 
			
		||||
		{"Save", GTK_STOCK_SAVE, N_("_Save"), "<Ctrl>S",
 | 
			
		||||
			N_("Save the current diagram"),
 | 
			
		||||
			G_CALLBACK (on_action_save)},
 | 
			
		||||
		{"SaveAs", GTK_STOCK_SAVE_AS, Q_("Save _As..."), "<Shift><Ctrl>S",
 | 
			
		||||
			Q_("Save the current diagram with another name"),
 | 
			
		||||
		{"SaveAs", GTK_STOCK_SAVE_AS, N_("Save _As..."), "<Shift><Ctrl>S",
 | 
			
		||||
			N_("Save the current diagram with another name"),
 | 
			
		||||
			G_CALLBACK (on_action_save_as)},
 | 
			
		||||
/*
 | 
			
		||||
 *		{"Export", NULL, Q_("_Export"), NULL,
 | 
			
		||||
 *			Q_("Export the diagram"),
 | 
			
		||||
 *		{"Export", NULL, N_("_Export"), NULL,
 | 
			
		||||
 *			N_("Export the diagram"),
 | 
			
		||||
 *			NULL},
 | 
			
		||||
 */
 | 
			
		||||
		{"Quit", GTK_STOCK_QUIT, Q_("_Quit"), "<Ctrl>Q",
 | 
			
		||||
			Q_("Quit the application"),
 | 
			
		||||
		{"Quit", GTK_STOCK_QUIT, N_("_Quit"), "<Ctrl>Q",
 | 
			
		||||
			N_("Quit the application"),
 | 
			
		||||
			G_CALLBACK (on_action_quit)},
 | 
			
		||||
 | 
			
		||||
	{"EditMenu", NULL, Q_("_Edit"), NULL, NULL, NULL},
 | 
			
		||||
		{"Undo", GTK_STOCK_UNDO, Q_("_Undo"), "<Ctrl>Z",
 | 
			
		||||
			Q_("Undo the last action"),
 | 
			
		||||
	{"EditMenu", NULL, N_("_Edit"), NULL, NULL, NULL},
 | 
			
		||||
		{"Undo", GTK_STOCK_UNDO, N_("_Undo"), "<Ctrl>Z",
 | 
			
		||||
			N_("Undo the last action"),
 | 
			
		||||
			G_CALLBACK (on_action_undo)},
 | 
			
		||||
		{"Redo", GTK_STOCK_REDO, Q_("_Redo"), "<Shift><Ctrl>Z",
 | 
			
		||||
			Q_("Redo the last undone action"),
 | 
			
		||||
		{"Redo", GTK_STOCK_REDO, N_("_Redo"), "<Shift><Ctrl>Z",
 | 
			
		||||
			N_("Redo the last undone action"),
 | 
			
		||||
			G_CALLBACK (on_action_redo)},
 | 
			
		||||
/*
 | 
			
		||||
 *		{"Cut", GTK_STOCK_CUT, Q_("Cu_t"), "<Ctrl>X", NULL, NULL},
 | 
			
		||||
 *		{"Copy", GTK_STOCK_COPY, Q_("_Copy"), "<Ctrl>C", NULL, NULL},
 | 
			
		||||
 *		{"Paste", GTK_STOCK_PASTE, Q_("_Paste"), "<Ctrl>V", NULL, NULL},
 | 
			
		||||
 *		{"Cut", GTK_STOCK_CUT, N_("Cu_t"), "<Ctrl>X", NULL, NULL},
 | 
			
		||||
 *		{"Copy", GTK_STOCK_COPY, N_("_Copy"), "<Ctrl>C", NULL, NULL},
 | 
			
		||||
 *		{"Paste", GTK_STOCK_PASTE, N_("_Paste"), "<Ctrl>V", NULL, NULL},
 | 
			
		||||
 */
 | 
			
		||||
		{"Delete", GTK_STOCK_DELETE, Q_("_Delete"), "Delete",
 | 
			
		||||
			Q_("Delete the contents of the selection"),
 | 
			
		||||
		{"Delete", GTK_STOCK_DELETE, N_("_Delete"), "Delete",
 | 
			
		||||
			N_("Delete the contents of the selection"),
 | 
			
		||||
			G_CALLBACK (on_action_delete)},
 | 
			
		||||
		{"SelectAll", GTK_STOCK_SELECT_ALL, Q_("Select _All"), "<Ctrl>A",
 | 
			
		||||
			Q_("Select all objects in the diagram"),
 | 
			
		||||
		{"SelectAll", GTK_STOCK_SELECT_ALL, N_("Select _All"), "<Ctrl>A",
 | 
			
		||||
			N_("Select all objects in the diagram"),
 | 
			
		||||
			G_CALLBACK (on_action_select_all)},
 | 
			
		||||
 | 
			
		||||
	{"ViewMenu", NULL, Q_("_View"), NULL, NULL, NULL},
 | 
			
		||||
		{"ZoomIn", GTK_STOCK_ZOOM_IN, Q_("_Zoom In"), "<Ctrl>plus",
 | 
			
		||||
			Q_("Zoom into the diagram"),
 | 
			
		||||
	{"ViewMenu", NULL, N_("_View"), NULL, NULL, NULL},
 | 
			
		||||
		{"ZoomIn", GTK_STOCK_ZOOM_IN, N_("_Zoom In"), "<Ctrl>plus",
 | 
			
		||||
			N_("Zoom into the diagram"),
 | 
			
		||||
			G_CALLBACK (on_action_zoom_in)},
 | 
			
		||||
		{"ZoomOut", GTK_STOCK_ZOOM_OUT, Q_("Zoom _Out"), "<Ctrl>minus",
 | 
			
		||||
			Q_("Zoom out of the diagram"),
 | 
			
		||||
		{"ZoomOut", GTK_STOCK_ZOOM_OUT, N_("Zoom _Out"), "<Ctrl>minus",
 | 
			
		||||
			N_("Zoom out of the diagram"),
 | 
			
		||||
			G_CALLBACK (on_action_zoom_out)},
 | 
			
		||||
		{"NormalSize", GTK_STOCK_ZOOM_100, Q_("_Normal Size"), "<Ctrl>0",
 | 
			
		||||
			Q_("Reset zoom level back to the default"),
 | 
			
		||||
		{"NormalSize", GTK_STOCK_ZOOM_100, N_("_Normal Size"), "<Ctrl>0",
 | 
			
		||||
			N_("Reset zoom level back to the default"),
 | 
			
		||||
			G_CALLBACK (on_action_normal_size)},
 | 
			
		||||
 | 
			
		||||
	{"HelpMenu", NULL, Q_("_Help"), NULL, NULL, NULL},
 | 
			
		||||
		{"About", GTK_STOCK_ABOUT, Q_("_About"), NULL,
 | 
			
		||||
			Q_("Show a dialog about this application"),
 | 
			
		||||
	{"HelpMenu", NULL, N_("_Help"), NULL, NULL, NULL},
 | 
			
		||||
		{"About", GTK_STOCK_ABOUT, N_("_About"), NULL,
 | 
			
		||||
			N_("Show a dialog about this application"),
 | 
			
		||||
			G_CALLBACK (on_action_about)}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@@ -173,13 +174,20 @@ static GtkActionEntry wm_action_entries[] =
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * ld_window_main_new:
 | 
			
		||||
 * @filename: (allow-none): a file to open.
 | 
			
		||||
 *
 | 
			
		||||
 * Create an instance.
 | 
			
		||||
 */
 | 
			
		||||
GtkWidget *
 | 
			
		||||
ld_window_main_new (void)
 | 
			
		||||
ld_window_main_new (const gchar *filename)
 | 
			
		||||
{
 | 
			
		||||
	return g_object_new (LD_TYPE_WINDOW_MAIN, NULL);
 | 
			
		||||
	GtkWidget *self;
 | 
			
		||||
	self = g_object_new (LD_TYPE_WINDOW_MAIN, NULL);
 | 
			
		||||
 | 
			
		||||
	if (filename)
 | 
			
		||||
		diagram_open (LD_WINDOW_MAIN (self), filename);
 | 
			
		||||
 | 
			
		||||
	return self;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
G_DEFINE_TYPE (LdWindowMain, ld_window_main, GTK_TYPE_WINDOW);
 | 
			
		||||
@@ -216,6 +224,8 @@ ld_window_main_init (LdWindowMain *self)
 | 
			
		||||
		G_CALLBACK (on_ui_proxy_disconnected), self);
 | 
			
		||||
 | 
			
		||||
	priv->action_group = gtk_action_group_new ("MainActions");
 | 
			
		||||
	gtk_action_group_set_translation_domain
 | 
			
		||||
		(priv->action_group, GETTEXT_DOMAIN);
 | 
			
		||||
	gtk_action_group_add_actions (priv->action_group, wm_action_entries,
 | 
			
		||||
		G_N_ELEMENTS (wm_action_entries), self);
 | 
			
		||||
	gtk_ui_manager_insert_action_group (priv->ui_manager,
 | 
			
		||||
@@ -226,7 +236,7 @@ ld_window_main_init (LdWindowMain *self)
 | 
			
		||||
		(priv->ui_manager, PROJECT_SHARE_DIR "gui/window-main.ui", &error);
 | 
			
		||||
	if (error)
 | 
			
		||||
	{
 | 
			
		||||
		g_message (_("Building UI failed: %s"), error->message);
 | 
			
		||||
		g_message ("building UI failed: %s", error->message);
 | 
			
		||||
		g_error_free (error);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -239,10 +249,12 @@ ld_window_main_init (LdWindowMain *self)
 | 
			
		||||
	gtk_toolbar_set_orientation (GTK_TOOLBAR (priv->library_toolbar),
 | 
			
		||||
		GTK_ORIENTATION_VERTICAL);
 | 
			
		||||
 | 
			
		||||
	priv->canvas = LD_CANVAS (ld_canvas_new ());
 | 
			
		||||
	priv->canvas_window = gtk_scrolled_window_new (NULL, NULL);
 | 
			
		||||
	gtk_container_add (GTK_CONTAINER (priv->canvas_window),
 | 
			
		||||
		GTK_WIDGET (priv->canvas));
 | 
			
		||||
	priv->view = LD_DIAGRAM_VIEW (ld_diagram_view_new ());
 | 
			
		||||
	priv->scrolled_window = gtk_scrolled_window_new (NULL, NULL);
 | 
			
		||||
	gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (priv->scrolled_window),
 | 
			
		||||
		GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
 | 
			
		||||
	gtk_container_add (GTK_CONTAINER (priv->scrolled_window),
 | 
			
		||||
		GTK_WIDGET (priv->view));
 | 
			
		||||
 | 
			
		||||
	priv->statusbar = gtk_statusbar_new ();
 | 
			
		||||
	priv->statusbar_menu_context_id = gtk_statusbar_get_context_id
 | 
			
		||||
@@ -254,7 +266,7 @@ ld_window_main_init (LdWindowMain *self)
 | 
			
		||||
	priv->hbox = gtk_hbox_new (FALSE, 0);
 | 
			
		||||
	gtk_box_pack_start (GTK_BOX (priv->hbox), priv->library_toolbar,
 | 
			
		||||
		FALSE, FALSE, 0);
 | 
			
		||||
	gtk_box_pack_start (GTK_BOX (priv->hbox), priv->canvas_window,
 | 
			
		||||
	gtk_box_pack_start (GTK_BOX (priv->hbox), priv->scrolled_window,
 | 
			
		||||
		TRUE, TRUE, 0);
 | 
			
		||||
 | 
			
		||||
	priv->vbox = gtk_vbox_new (FALSE, 0);
 | 
			
		||||
@@ -289,16 +301,16 @@ ld_window_main_init (LdWindowMain *self)
 | 
			
		||||
	priv->library = ld_library_new ();
 | 
			
		||||
	ld_library_load (priv->library, PROJECT_SHARE_DIR "library");
 | 
			
		||||
 | 
			
		||||
	ld_canvas_set_diagram (priv->canvas, priv->diagram);
 | 
			
		||||
	ld_canvas_set_library (priv->canvas, priv->library);
 | 
			
		||||
	ld_diagram_view_set_diagram (priv->view, priv->diagram);
 | 
			
		||||
	ld_diagram_view_set_library (priv->view, priv->library);
 | 
			
		||||
 | 
			
		||||
	g_signal_connect (priv->canvas, "notify::zoom",
 | 
			
		||||
		G_CALLBACK (on_canvas_zoom_changed), self);
 | 
			
		||||
	g_signal_connect (priv->view, "notify::zoom",
 | 
			
		||||
		G_CALLBACK (on_view_zoom_changed), self);
 | 
			
		||||
 | 
			
		||||
	ld_library_toolbar_set_library (LD_LIBRARY_TOOLBAR (priv->library_toolbar),
 | 
			
		||||
		priv->library);
 | 
			
		||||
	ld_library_toolbar_set_canvas (LD_LIBRARY_TOOLBAR (priv->library_toolbar),
 | 
			
		||||
		priv->canvas);
 | 
			
		||||
	ld_library_toolbar_set_view (LD_LIBRARY_TOOLBAR (priv->library_toolbar),
 | 
			
		||||
		priv->view);
 | 
			
		||||
 | 
			
		||||
	g_signal_connect_after (priv->library_toolbar, "symbol-selected",
 | 
			
		||||
		G_CALLBACK (on_symbol_selected), self);
 | 
			
		||||
@@ -314,7 +326,7 @@ ld_window_main_init (LdWindowMain *self)
 | 
			
		||||
	action_set_sensitive (self, "Delete", FALSE);
 | 
			
		||||
	action_set_sensitive (self, "NormalSize", FALSE);
 | 
			
		||||
 | 
			
		||||
	gtk_widget_grab_focus (GTK_WIDGET (priv->canvas));
 | 
			
		||||
	gtk_widget_grab_focus (GTK_WIDGET (priv->view));
 | 
			
		||||
 | 
			
		||||
	/* Realize the window. */
 | 
			
		||||
	gtk_widget_show_all (GTK_WIDGET (self));
 | 
			
		||||
@@ -485,7 +497,7 @@ diagram_get_name (LdWindowMain *self)
 | 
			
		||||
	g_return_val_if_fail (LD_IS_WINDOW_MAIN (self), NULL);
 | 
			
		||||
 | 
			
		||||
	if (self->priv->filename)
 | 
			
		||||
		return g_path_get_basename (self->priv->filename);
 | 
			
		||||
		return g_filename_display_basename (self->priv->filename);
 | 
			
		||||
	else
 | 
			
		||||
		return g_strdup (_("Unsaved Diagram"));
 | 
			
		||||
}
 | 
			
		||||
@@ -519,15 +531,16 @@ diagram_new (LdWindowMain *self)
 | 
			
		||||
{
 | 
			
		||||
	g_return_if_fail (LD_IS_WINDOW_MAIN (self));
 | 
			
		||||
 | 
			
		||||
	if (!may_close_diagram (self, "Save the changes to diagram \"%s\" before"
 | 
			
		||||
		" closing it and creating a new one?"))
 | 
			
		||||
	if (!may_close_diagram (self, _("Save the changes to diagram \"%s\" before"
 | 
			
		||||
		" closing it and creating a new one?")))
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	ld_diagram_clear (self->priv->diagram);
 | 
			
		||||
	ld_diagram_set_modified (self->priv->diagram, FALSE);
 | 
			
		||||
 | 
			
		||||
	/* TODO: Reset canvas view to the center. */
 | 
			
		||||
	ld_canvas_set_zoom (self->priv->canvas, 1);
 | 
			
		||||
	ld_diagram_view_set_x (self->priv->view, 0);
 | 
			
		||||
	ld_diagram_view_set_y (self->priv->view, 0);
 | 
			
		||||
	ld_diagram_view_set_zoom (self->priv->view, 1);
 | 
			
		||||
 | 
			
		||||
	diagram_set_filename (self, NULL);
 | 
			
		||||
}
 | 
			
		||||
@@ -563,10 +576,10 @@ diagram_save (LdWindowMain *self)
 | 
			
		||||
 | 
			
		||||
		message_dialog = gtk_message_dialog_new (GTK_WINDOW (self),
 | 
			
		||||
			GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
 | 
			
		||||
			"Failed to save the diagram");
 | 
			
		||||
			_("Failed to save the diagram"));
 | 
			
		||||
		gtk_message_dialog_format_secondary_text
 | 
			
		||||
			(GTK_MESSAGE_DIALOG (message_dialog),
 | 
			
		||||
			"Try again or save it under another name.");
 | 
			
		||||
			_("Try again or save it under another name."));
 | 
			
		||||
		gtk_dialog_run (GTK_DIALOG (message_dialog));
 | 
			
		||||
		gtk_widget_destroy (message_dialog);
 | 
			
		||||
	}
 | 
			
		||||
@@ -577,6 +590,41 @@ diagram_save (LdWindowMain *self)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * diagram_open:
 | 
			
		||||
 *
 | 
			
		||||
 * Open a diagram from a file.
 | 
			
		||||
 */
 | 
			
		||||
static gboolean
 | 
			
		||||
diagram_open (LdWindowMain *self, const gchar *filename)
 | 
			
		||||
{
 | 
			
		||||
	GError *error;
 | 
			
		||||
 | 
			
		||||
	error = NULL;
 | 
			
		||||
	ld_diagram_load_from_file (self->priv->diagram, filename, &error);
 | 
			
		||||
	if (error)
 | 
			
		||||
	{
 | 
			
		||||
		GtkWidget *message_dialog;
 | 
			
		||||
 | 
			
		||||
		g_warning ("loading failed: %s", error->message);
 | 
			
		||||
		g_error_free (error);
 | 
			
		||||
 | 
			
		||||
		message_dialog = gtk_message_dialog_new (GTK_WINDOW (self),
 | 
			
		||||
			GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
 | 
			
		||||
			_("Failed to open the file"));
 | 
			
		||||
		gtk_message_dialog_format_secondary_text
 | 
			
		||||
			(GTK_MESSAGE_DIALOG (message_dialog),
 | 
			
		||||
			_("The file is probably corrupted."));
 | 
			
		||||
		gtk_dialog_run (GTK_DIALOG (message_dialog));
 | 
			
		||||
		gtk_widget_destroy (message_dialog);
 | 
			
		||||
		return FALSE;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ld_diagram_set_modified (self->priv->diagram, FALSE);
 | 
			
		||||
	diagram_set_filename (self, g_strdup (filename));
 | 
			
		||||
	return TRUE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * diagram_get_file_filter:
 | 
			
		||||
 *
 | 
			
		||||
@@ -588,7 +636,7 @@ diagram_get_file_filter (void)
 | 
			
		||||
	GtkFileFilter *filter;
 | 
			
		||||
 | 
			
		||||
	filter = gtk_file_filter_new ();
 | 
			
		||||
	gtk_file_filter_set_name (filter, "Logdiag Diagrams");
 | 
			
		||||
	gtk_file_filter_set_name (filter, _("Logdiag Diagrams (*.ldd)"));
 | 
			
		||||
	gtk_file_filter_add_pattern (filter, "*.ldd");
 | 
			
		||||
	return filter;
 | 
			
		||||
}
 | 
			
		||||
@@ -605,11 +653,11 @@ diagram_show_open_dialog (LdWindowMain *self)
 | 
			
		||||
 | 
			
		||||
	g_return_if_fail (LD_IS_WINDOW_MAIN (self));
 | 
			
		||||
 | 
			
		||||
	if (!may_close_diagram (self, "Save the changes to diagram \"%s\" before"
 | 
			
		||||
		" closing it and opening another one?"))
 | 
			
		||||
	if (!may_close_diagram (self, _("Save the changes to diagram \"%s\" before"
 | 
			
		||||
		" closing it and opening another one?")))
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	dialog = gtk_file_chooser_dialog_new ("Open...", GTK_WINDOW (self),
 | 
			
		||||
	dialog = gtk_file_chooser_dialog_new (_("Open..."), GTK_WINDOW (self),
 | 
			
		||||
		GTK_FILE_CHOOSER_ACTION_OPEN,
 | 
			
		||||
		GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
 | 
			
		||||
		GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
 | 
			
		||||
@@ -620,33 +668,10 @@ diagram_show_open_dialog (LdWindowMain *self)
 | 
			
		||||
	if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
 | 
			
		||||
	{
 | 
			
		||||
		gchar *filename;
 | 
			
		||||
		GError *error;
 | 
			
		||||
 | 
			
		||||
		filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
 | 
			
		||||
 | 
			
		||||
		error = NULL;
 | 
			
		||||
		ld_diagram_load_from_file (self->priv->diagram, filename, &error);
 | 
			
		||||
		if (error)
 | 
			
		||||
		{
 | 
			
		||||
			GtkWidget *message_dialog;
 | 
			
		||||
 | 
			
		||||
			g_warning ("loading failed: %s", error->message);
 | 
			
		||||
			g_error_free (error);
 | 
			
		||||
 | 
			
		||||
			message_dialog = gtk_message_dialog_new (GTK_WINDOW (self),
 | 
			
		||||
				GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
 | 
			
		||||
				"Failed to open the file");
 | 
			
		||||
			gtk_message_dialog_format_secondary_text
 | 
			
		||||
				(GTK_MESSAGE_DIALOG (message_dialog),
 | 
			
		||||
				"The file is probably corrupted.");
 | 
			
		||||
			gtk_dialog_run (GTK_DIALOG (message_dialog));
 | 
			
		||||
			gtk_widget_destroy (message_dialog);
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			ld_diagram_set_modified (self->priv->diagram, FALSE);
 | 
			
		||||
			diagram_set_filename (self, filename);
 | 
			
		||||
		}
 | 
			
		||||
		diagram_open (self, filename);
 | 
			
		||||
		g_free (filename);
 | 
			
		||||
	}
 | 
			
		||||
	gtk_widget_destroy (dialog);
 | 
			
		||||
}
 | 
			
		||||
@@ -663,7 +688,7 @@ diagram_show_save_as_dialog (LdWindowMain *self)
 | 
			
		||||
 | 
			
		||||
	g_return_if_fail (LD_IS_WINDOW_MAIN (self));
 | 
			
		||||
 | 
			
		||||
	dialog = gtk_file_chooser_dialog_new ("Save As...", GTK_WINDOW (self),
 | 
			
		||||
	dialog = gtk_file_chooser_dialog_new (_("Save As..."), GTK_WINDOW (self),
 | 
			
		||||
		GTK_FILE_CHOOSER_ACTION_SAVE,
 | 
			
		||||
		GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
 | 
			
		||||
		GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
 | 
			
		||||
@@ -674,8 +699,8 @@ diagram_show_save_as_dialog (LdWindowMain *self)
 | 
			
		||||
 | 
			
		||||
	if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
 | 
			
		||||
	{
 | 
			
		||||
		diagram_set_filename (self, gtk_file_chooser_get_filename
 | 
			
		||||
			(GTK_FILE_CHOOSER (dialog)));
 | 
			
		||||
		diagram_set_filename (self,
 | 
			
		||||
			gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)));
 | 
			
		||||
		diagram_save (self);
 | 
			
		||||
	}
 | 
			
		||||
	gtk_widget_destroy (dialog);
 | 
			
		||||
@@ -716,9 +741,9 @@ may_close_diagram (LdWindowMain *self, const gchar *dialog_message)
 | 
			
		||||
		dialog_message, name);
 | 
			
		||||
	gtk_message_dialog_format_secondary_text
 | 
			
		||||
		(GTK_MESSAGE_DIALOG (message_dialog),
 | 
			
		||||
		"If you don't save, changes will be permanently lost.");
 | 
			
		||||
		_("If you don't save, changes will be permanently lost."));
 | 
			
		||||
	gtk_dialog_add_buttons (GTK_DIALOG (message_dialog),
 | 
			
		||||
		"Close _without Saving", GTK_RESPONSE_NO,
 | 
			
		||||
		_("Close _without Saving"), GTK_RESPONSE_NO,
 | 
			
		||||
		GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
 | 
			
		||||
		GTK_STOCK_SAVE, GTK_RESPONSE_YES,
 | 
			
		||||
		NULL);
 | 
			
		||||
@@ -756,7 +781,7 @@ may_quit (LdWindowMain *self)
 | 
			
		||||
	g_return_val_if_fail (LD_IS_WINDOW_MAIN (self), TRUE);
 | 
			
		||||
 | 
			
		||||
	return may_close_diagram (self,
 | 
			
		||||
		"Save the changes to diagram \"%s\" before closing?");
 | 
			
		||||
		_("Save the changes to diagram \"%s\" before closing?"));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -790,19 +815,20 @@ on_symbol_chosen (LdLibraryToolbar *toolbar, LdSymbol *symbol,
 | 
			
		||||
	diagram_symbol = ld_diagram_symbol_new (NULL);
 | 
			
		||||
	ld_diagram_symbol_set_class (diagram_symbol, klass);
 | 
			
		||||
 | 
			
		||||
	ld_canvas_add_object_begin (self->priv->canvas,
 | 
			
		||||
	ld_diagram_view_add_object_begin (self->priv->view,
 | 
			
		||||
		LD_DIAGRAM_OBJECT (diagram_symbol));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
on_canvas_zoom_changed (LdCanvas *canvas, GParamSpec *pspec, LdWindowMain *self)
 | 
			
		||||
on_view_zoom_changed (LdDiagramView *view, GParamSpec *pspec,
 | 
			
		||||
	LdWindowMain *self)
 | 
			
		||||
{
 | 
			
		||||
	action_set_sensitive (self, "ZoomIn",
 | 
			
		||||
		ld_canvas_can_zoom_in (self->priv->canvas));
 | 
			
		||||
		ld_diagram_view_can_zoom_in (self->priv->view));
 | 
			
		||||
	action_set_sensitive (self, "ZoomOut",
 | 
			
		||||
		ld_canvas_can_zoom_out (self->priv->canvas));
 | 
			
		||||
		ld_diagram_view_can_zoom_out (self->priv->view));
 | 
			
		||||
	action_set_sensitive (self, "NormalSize",
 | 
			
		||||
		ld_canvas_get_zoom (self->priv->canvas) != 1);
 | 
			
		||||
		ld_diagram_view_get_zoom (self->priv->view) != 1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
@@ -874,17 +900,17 @@ on_action_select_all (GtkAction *action, LdWindowMain *self)
 | 
			
		||||
static void
 | 
			
		||||
on_action_zoom_in (GtkAction *action, LdWindowMain *self)
 | 
			
		||||
{
 | 
			
		||||
	ld_canvas_zoom_in (self->priv->canvas);
 | 
			
		||||
	ld_diagram_view_zoom_in (self->priv->view);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
on_action_zoom_out (GtkAction *action, LdWindowMain *self)
 | 
			
		||||
{
 | 
			
		||||
	ld_canvas_zoom_out (self->priv->canvas);
 | 
			
		||||
	ld_diagram_view_zoom_out (self->priv->view);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
on_action_normal_size (GtkAction *action, LdWindowMain *self)
 | 
			
		||||
{
 | 
			
		||||
	ld_canvas_set_zoom (self->priv->canvas, 1);
 | 
			
		||||
	ld_diagram_view_set_zoom (self->priv->view, 1);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -47,7 +47,7 @@ struct _LdWindowMainClass
 | 
			
		||||
 | 
			
		||||
GType ld_window_main_get_type (void) G_GNUC_CONST;
 | 
			
		||||
 | 
			
		||||
GtkWidget *ld_window_main_new (void);
 | 
			
		||||
GtkWidget *ld_window_main_new (const gchar *filename);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
G_END_DECLS
 | 
			
		||||
 
 | 
			
		||||
@@ -9,6 +9,7 @@
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <gtk/gtk.h>
 | 
			
		||||
#include <locale.h>
 | 
			
		||||
 | 
			
		||||
#include "config.h"
 | 
			
		||||
 | 
			
		||||
@@ -18,25 +19,63 @@
 | 
			
		||||
int
 | 
			
		||||
main (int argc, char *argv[])
 | 
			
		||||
{
 | 
			
		||||
	GtkWidget *wnd;
 | 
			
		||||
	GError *error;
 | 
			
		||||
#ifdef _WIN32
 | 
			
		||||
	gchar *install_dir;
 | 
			
		||||
 | 
			
		||||
	install_dir = g_win32_get_package_installation_directory_of_module (NULL);
 | 
			
		||||
	if (install_dir)
 | 
			
		||||
	{
 | 
			
		||||
		g_chdir (install_dir);
 | 
			
		||||
		g_free (install_dir);
 | 
			
		||||
	}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_GETTEXT
 | 
			
		||||
	setlocale (LC_ALL, "");
 | 
			
		||||
 | 
			
		||||
	bindtextdomain (GETTEXT_DOMAIN, GETTEXT_DIRNAME);
 | 
			
		||||
	bind_textdomain_codeset (GETTEXT_DOMAIN, "UTF-8");
 | 
			
		||||
	textdomain (GETTEXT_DOMAIN);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	/* For custom command line arguments, see:
 | 
			
		||||
	 * http://git.gnome.org/browse/glade3/tree/src/main.c
 | 
			
		||||
	 */
 | 
			
		||||
	error = NULL;
 | 
			
		||||
	gtk_init_with_args (&argc, &argv,
 | 
			
		||||
		N_("[FILE] - Schematic editor"), NULL, GETTEXT_DOMAIN, &error);
 | 
			
		||||
	if (error)
 | 
			
		||||
	{
 | 
			
		||||
		g_warning ("%s", error->message);
 | 
			
		||||
		g_error_free (error);
 | 
			
		||||
		return 1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	gtk_init (&argc, &argv);
 | 
			
		||||
	gtk_window_set_default_icon_name (PROJECT_NAME);
 | 
			
		||||
	wnd = ld_window_main_new ();
 | 
			
		||||
	gtk_main ();
 | 
			
		||||
 | 
			
		||||
	/* TODO: Accept multiple files. */
 | 
			
		||||
	if (argc < 2)
 | 
			
		||||
		ld_window_main_new (NULL);
 | 
			
		||||
	else
 | 
			
		||||
	{
 | 
			
		||||
		gchar *arg_utf8, *arg_filename;
 | 
			
		||||
 | 
			
		||||
		arg_utf8 = g_locale_to_utf8 (argv[1], -1, NULL, NULL, &error);
 | 
			
		||||
		if (error)
 | 
			
		||||
		{
 | 
			
		||||
			g_warning ("%s", error->message);
 | 
			
		||||
			g_error_free (error);
 | 
			
		||||
			return 1;
 | 
			
		||||
		}
 | 
			
		||||
		arg_filename = g_filename_from_utf8 (arg_utf8, -1, NULL, NULL, &error);
 | 
			
		||||
		if (error)
 | 
			
		||||
		{
 | 
			
		||||
			g_warning ("%s", error->message);
 | 
			
		||||
			g_error_free (error);
 | 
			
		||||
			return 1;
 | 
			
		||||
		}
 | 
			
		||||
		ld_window_main_new (arg_filename);
 | 
			
		||||
		g_free (arg_filename);
 | 
			
		||||
		g_free (arg_utf8);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	gtk_main ();
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user