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
|
# Project information
|
||||||
set (project_VERSION_MAJOR "0")
|
set (project_VERSION_MAJOR "0")
|
||||||
set (project_VERSION_MINOR "1")
|
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_MAJOR}")
|
||||||
set (project_VERSION "${project_VERSION}.${project_VERSION_MINOR}")
|
set (project_VERSION "${project_VERSION}.${project_VERSION_MINOR}")
|
||||||
@@ -94,14 +94,16 @@ find_package (Lua51 REQUIRED)
|
|||||||
find_package (JsonGlib REQUIRED)
|
find_package (JsonGlib REQUIRED)
|
||||||
|
|
||||||
# Localization
|
# Localization
|
||||||
find_package (Gettext)
|
find_package (Gettext REQUIRED)
|
||||||
if (GETTEXT_FOUND)
|
file (GLOB project_PO_FILES ${CMAKE_CURRENT_SOURCE_DIR}/po/*.po)
|
||||||
set (HAVE_GETTEXT true)
|
|
||||||
file (GLOB project_TRANSLATIONS ${CMAKE_CURRENT_SOURCE_DIR}/po/*.po)
|
|
||||||
GETTEXT_CREATE_TRANSLATIONS (
|
GETTEXT_CREATE_TRANSLATIONS (
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/po/${CMAKE_PROJECT_NAME}.pot
|
${CMAKE_CURRENT_SOURCE_DIR}/po/${CMAKE_PROJECT_NAME}.pot
|
||||||
ALL ${project_TRANSLATIONS})
|
ALL ${project_PO_FILES})
|
||||||
endif (GETTEXT_FOUND)
|
|
||||||
|
foreach (file ${project_PO_FILES})
|
||||||
|
get_filename_component (translation "${file}" NAME_WE)
|
||||||
|
list (APPEND project_TRANSLATIONS "${translation}")
|
||||||
|
endforeach (file)
|
||||||
|
|
||||||
# Documentation
|
# Documentation
|
||||||
# TODO: Add pregenerated docs to the tree
|
# TODO: Add pregenerated docs to the tree
|
||||||
@@ -117,7 +119,7 @@ set (liblogdiag_SOURCES
|
|||||||
liblogdiag/ld-diagram-object.c
|
liblogdiag/ld-diagram-object.c
|
||||||
liblogdiag/ld-diagram-symbol.c
|
liblogdiag/ld-diagram-symbol.c
|
||||||
liblogdiag/ld-diagram-connection.c
|
liblogdiag/ld-diagram-connection.c
|
||||||
liblogdiag/ld-canvas.c
|
liblogdiag/ld-diagram-view.c
|
||||||
liblogdiag/ld-library.c
|
liblogdiag/ld-library.c
|
||||||
liblogdiag/ld-library-toolbar.c
|
liblogdiag/ld-library-toolbar.c
|
||||||
liblogdiag/ld-symbol-category.c
|
liblogdiag/ld-symbol-category.c
|
||||||
@@ -134,7 +136,7 @@ set (liblogdiag_HEADERS
|
|||||||
liblogdiag/ld-diagram-object.h
|
liblogdiag/ld-diagram-object.h
|
||||||
liblogdiag/ld-diagram-symbol.h
|
liblogdiag/ld-diagram-symbol.h
|
||||||
liblogdiag/ld-diagram-connection.h
|
liblogdiag/ld-diagram-connection.h
|
||||||
liblogdiag/ld-canvas.h
|
liblogdiag/ld-diagram-view.h
|
||||||
liblogdiag/ld-library.h
|
liblogdiag/ld-library.h
|
||||||
liblogdiag/ld-library-toolbar.h
|
liblogdiag/ld-library-toolbar.h
|
||||||
liblogdiag/ld-symbol-category.h
|
liblogdiag/ld-symbol-category.h
|
||||||
@@ -218,6 +220,11 @@ include_directories (${GTK2_INCLUDE_DIRS}
|
|||||||
set (logdiag_LIBS ${GTK2_LIBRARIES}
|
set (logdiag_LIBS ${GTK2_LIBRARIES}
|
||||||
${JSON_GLIB_LIBRARIES} ${LUA_LIBRARIES})
|
${JSON_GLIB_LIBRARIES} ${LUA_LIBRARIES})
|
||||||
|
|
||||||
|
if (WIN32)
|
||||||
|
find_package (LibIntl REQUIRED)
|
||||||
|
list (APPEND logdiag_LIBS ${LIBINTL_LIBRARIES})
|
||||||
|
endif (WIN32)
|
||||||
|
|
||||||
# Build the library
|
# Build the library
|
||||||
add_library (liblogdiag STATIC ${liblogdiag_SOURCES} ${liblogdiag_HEADERS})
|
add_library (liblogdiag STATIC ${liblogdiag_SOURCES} ${liblogdiag_HEADERS})
|
||||||
set_target_properties (liblogdiag PROPERTIES OUTPUT_NAME logdiag)
|
set_target_properties (liblogdiag PROPERTIES OUTPUT_NAME logdiag)
|
||||||
@@ -258,7 +265,8 @@ if (WIN32)
|
|||||||
install (DIRECTORY
|
install (DIRECTORY
|
||||||
${WIN32_DEPENDS_PATH}/bin/
|
${WIN32_DEPENDS_PATH}/bin/
|
||||||
DESTINATION .
|
DESTINATION .
|
||||||
FILES_MATCHING PATTERN "*.dll")
|
FILES_MATCHING PATTERN "*.dll"
|
||||||
|
PATTERN "libgettext*" EXCLUDE)
|
||||||
install (DIRECTORY
|
install (DIRECTORY
|
||||||
${WIN32_DEPENDS_PATH}/etc/
|
${WIN32_DEPENDS_PATH}/etc/
|
||||||
DESTINATION etc)
|
DESTINATION etc)
|
||||||
@@ -268,9 +276,20 @@ if (WIN32)
|
|||||||
${WIN32_DEPENDS_PATH}/lib/gdk-pixbuf-2.0
|
${WIN32_DEPENDS_PATH}/lib/gdk-pixbuf-2.0
|
||||||
DESTINATION lib)
|
DESTINATION lib)
|
||||||
install (DIRECTORY
|
install (DIRECTORY
|
||||||
${WIN32_DEPENDS_PATH}/share/locale
|
${WIN32_DEPENDS_PATH}/share/themes/MS-Windows
|
||||||
${WIN32_DEPENDS_PATH}/share/themes
|
DESTINATION share/themes)
|
||||||
DESTINATION share)
|
|
||||||
|
# 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)
|
else (WIN32)
|
||||||
install (TARGETS logdiag DESTINATION bin)
|
install (TARGETS logdiag DESTINATION bin)
|
||||||
install (FILES share/logdiag.desktop DESTINATION share/applications)
|
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
|
# Don't install the documentation yet as we don't install any library
|
||||||
# install (DIRECTORY "${project_DOC_DIR}/html/"
|
# install (DIRECTORY "${project_DOC_DIR}/html/"
|
||||||
# DESTINATION share/gtk-doc/html/${CMAKE_PROJECT_NAME})
|
# 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)
|
endif (WIN32)
|
||||||
|
|
||||||
# CPack
|
# CPack
|
||||||
set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "Schematic editor")
|
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_PACKAGE_CONTACT "p.janouch@gmail.com")
|
||||||
set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
|
set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
|
||||||
set (CPACK_PACKAGE_VERSION_MAJOR ${project_VERSION_MAJOR})
|
set (CPACK_PACKAGE_VERSION_MAJOR ${project_VERSION_MAJOR})
|
||||||
@@ -302,11 +321,25 @@ set (CPACK_PACKAGE_FILE_NAME
|
|||||||
set (CPACK_PACKAGE_INSTALL_DIRECTORY
|
set (CPACK_PACKAGE_INSTALL_DIRECTORY
|
||||||
"${CMAKE_PROJECT_NAME} ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}")
|
"${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_INSTALLED_ICON_NAME "logdiag.exe")
|
||||||
set (CPACK_NSIS_CREATE_ICONS_EXTRA
|
set (CPACK_NSIS_CREATE_ICONS_EXTRA "
|
||||||
"CreateShortCut '\$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\logdiag.lnk' '\$INSTDIR\\\\logdiag.exe'")
|
CreateShortCut '\$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\logdiag.lnk' '\$INSTDIR\\\\logdiag.exe'")
|
||||||
set (CPACK_NSIS_DELETE_ICONS_EXTRA
|
set (CPACK_NSIS_DELETE_ICONS_EXTRA "
|
||||||
"Delete '\$SMPROGRAMS\\\\$MUI_TEMP\\\\logdiag.lnk'")
|
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
|
set (CPACK_DEBIAN_PACKAGE_DEPENDS
|
||||||
"libgtk2.0-0 (>= 2.12), libjson-glib-1.0-0 (>= 0.10.4), liblua5.1-0, librsvg2-common")
|
"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
|
Version 0.1.0
|
||||||
- The first release.
|
- The first release.
|
||||||
|
|
||||||
|
|||||||
29
README.md
29
README.md
@@ -1,7 +1,6 @@
|
|||||||
# logdiag
|
# logdiag
|
||||||
|
|
||||||
logdiag is a schematic editor written in GTK+. It focuses on simplicity,
|
logdiag is a schematic editor written in GTK+.
|
||||||
usability and openness.
|
|
||||||
|
|
||||||
__This software is considered to be alpha quality and cannot be recommended
|
__This software is considered to be alpha quality and cannot be recommended
|
||||||
for regular usage.__
|
for regular usage.__
|
||||||
@@ -44,3 +43,29 @@ Now you have two basic choices of installing the application:
|
|||||||
$ cpack -G DEB
|
$ cpack -G DEB
|
||||||
# dpkg -i logdiag-0.0-Linux-x86_64.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}/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}/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_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
|
set (pkg_gtk_md5
|
||||||
"a545c0ca1e6a312701d42a18e49572af"
|
"a545c0ca1e6a312701d42a18e49572af"
|
||||||
"2c712a8d7a652363241c0967098515db"
|
"2c712a8d7a652363241c0967098515db"
|
||||||
@@ -52,16 +53,17 @@ set (pkg_gtk_md5
|
|||||||
"bf4e34f1f175b88430159d33e01d0c49"
|
"bf4e34f1f175b88430159d33e01d0c49"
|
||||||
"2d90c71404be0de4e5f3259f63a3e278"
|
"2d90c71404be0de4e5f3259f63a3e278"
|
||||||
"bd6b3d8c35e06a00937db65887c6e287"
|
"bd6b3d8c35e06a00937db65887c6e287"
|
||||||
"b6f59b70eef0992df37f8db891d4b283")
|
"b6f59b70eef0992df37f8db891d4b283"
|
||||||
|
"09baff956ebd1c391c7f71e9bd768edd")
|
||||||
|
|
||||||
set (pkg_opensuse_root "http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_Factory/noarch")
|
set (pkg_opensuse_root "http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_Factory/noarch")
|
||||||
set (pkg_opensuse_urls
|
set (pkg_opensuse_urls
|
||||||
"${pkg_opensuse_root}/mingw32-libjson-glib-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-2.38.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_strip "usr/i686-pc-mingw32/sys-root/mingw")
|
||||||
set (pkg_opensuse_md5
|
set (pkg_opensuse_md5
|
||||||
"2ca72896a3888c9081104e16a996a234"
|
"df41a913984b865a46d234ad59703c8c"
|
||||||
"1c50ab8368b54f9ddf14dbca001477b9")
|
"13702ee3e22f79f42948ec5cbb6e23cb")
|
||||||
|
|
||||||
set (pkg_mingw_lua_root "http://sourceforge.net/projects/mingw-cross/files/%5BLIB%5D%20Lua")
|
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")
|
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
|
file (WRITE ${working_dir}/etc/gtk-2.0/gtkrc
|
||||||
"gtk-theme-name = \"MS-Windows\"")
|
"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_MODULE_FILE} ${gdk_pixbuf_libdir}/loaders.cache)
|
||||||
set (ENV{GDK_PIXBUF_MODULEDIR} ${gdk_pixbuf_libdir}/loaders)
|
set (ENV{GDK_PIXBUF_MODULEDIR} ${gdk_pixbuf_libdir}/loaders)
|
||||||
execute_process (COMMAND
|
execute_process (COMMAND
|
||||||
${working_dir}/bin/gdk-pixbuf-query-loaders --update-cache
|
${working_dir}/bin/gdk-pixbuf-query-loaders --update-cache
|
||||||
|
WORKING_DIRECTORY "${working_dir}"
|
||||||
RESULT_VARIABLE result)
|
RESULT_VARIABLE result)
|
||||||
if (result)
|
if (result)
|
||||||
message (FATAL_ERROR "gdk-pixbuf-query-loaders failed")
|
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_INCLUDE_DIR(GTK2_PANGO_INCLUDE_DIR pango/pango.h)
|
||||||
_GTK2_FIND_LIBRARY (GTK2_PANGO_LIBRARY pango false true)
|
_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_INCLUDE_DIR(GTK2_ATK_INCLUDE_DIR atk/atk.h)
|
||||||
_GTK2_FIND_LIBRARY (GTK2_ATK_LIBRARY atk false true)
|
_GTK2_FIND_LIBRARY (GTK2_ATK_LIBRARY atk false true)
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
#=============================================================================
|
#=============================================================================
|
||||||
# Copyright 2007-2009 Kitware, Inc.
|
# 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
|
# Redistribution and use in source and binary forms, with or without
|
||||||
# modification, are permitted provided that the following conditions are met:
|
# modification, are permitted provided that the following conditions are met:
|
||||||
@@ -41,7 +41,6 @@
|
|||||||
#=============================================================================
|
#=============================================================================
|
||||||
|
|
||||||
find_program (GETTEXT_MSGMERGE_EXECUTABLE msgmerge)
|
find_program (GETTEXT_MSGMERGE_EXECUTABLE msgmerge)
|
||||||
|
|
||||||
find_program (GETTEXT_MSGFMT_EXECUTABLE msgfmt)
|
find_program (GETTEXT_MSGFMT_EXECUTABLE msgfmt)
|
||||||
|
|
||||||
macro (GETTEXT_CREATE_TRANSLATIONS _potFile _firstPoFileArg)
|
macro (GETTEXT_CREATE_TRANSLATIONS _potFile _firstPoFileArg)
|
||||||
@@ -93,13 +92,8 @@ macro (GETTEXT_CREATE_TRANSLATIONS _potFile _firstPoFileArg)
|
|||||||
DEPENDS ${_gmoFiles})
|
DEPENDS ${_gmoFiles})
|
||||||
endmacro (GETTEXT_CREATE_TRANSLATIONS)
|
endmacro (GETTEXT_CREATE_TRANSLATIONS)
|
||||||
|
|
||||||
if (GETTEXT_MSGMERGE_EXECUTABLE AND GETTEXT_MSGFMT_EXECUTABLE)
|
include (FindPackageHandleStandardArgs)
|
||||||
set (GETTEXT_FOUND TRUE)
|
FIND_PACKAGE_HANDLE_STANDARD_ARGS (Gettext DEFAULT_MSG
|
||||||
else (GETTEXT_MSGMERGE_EXECUTABLE AND GETTEXT_MSGFMT_EXECUTABLE)
|
GETTEXT_MSGMERGE_EXECUTABLE 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)
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
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)
|
||||||
|
|
||||||
17
config.h.in
17
config.h.in
@@ -25,22 +25,15 @@
|
|||||||
#cmakedefine HAVE_SANE___RESTRICT
|
#cmakedefine HAVE_SANE___RESTRICT
|
||||||
#cmakedefine HAVE_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"
|
#define GETTEXT_DIRNAME "${CMAKE_INSTALL_PREFIX}/share/locale"
|
||||||
#else /* ! HAVE_GETTEXT */
|
#endif
|
||||||
#define _(s) (s)
|
|
||||||
#define N_(s1, s2, n) ((n) == 1 ? (s1) : (s2))
|
|
||||||
#endif /* ! HAVE_GETTEXT */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef HAVE_SANE___RESTRICT
|
#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
|
* SECTION:ld-diagram-object
|
||||||
* @short_description: A diagram object
|
* @short_description: A diagram object
|
||||||
* @see_also: #LdDiagram, #LdCanvas
|
* @see_also: #LdDiagram, #LdDiagramView
|
||||||
*
|
*
|
||||||
* #LdDiagramObject represents an object in an #LdDiagram.
|
* #LdDiagramObject represents an object in an #LdDiagram.
|
||||||
*/
|
*/
|
||||||
@@ -25,10 +25,12 @@
|
|||||||
/*
|
/*
|
||||||
* LdDiagramObjectPrivate:
|
* LdDiagramObjectPrivate:
|
||||||
* @storage: storage for object parameters.
|
* @storage: storage for object parameters.
|
||||||
|
* @lock_history: lock emitting of changes.
|
||||||
*/
|
*/
|
||||||
struct _LdDiagramObjectPrivate
|
struct _LdDiagramObjectPrivate
|
||||||
{
|
{
|
||||||
JsonObject *storage;
|
JsonObject *storage;
|
||||||
|
gboolean lock_history;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct _SetParamActionData SetParamActionData;
|
typedef struct _SetParamActionData SetParamActionData;
|
||||||
@@ -309,7 +311,10 @@ ld_diagram_object_get_data_warn:
|
|||||||
|
|
||||||
ld_diagram_object_get_data_default:
|
ld_diagram_object_get_data_default:
|
||||||
g_param_value_set_default (pspec, data);
|
g_param_value_set_default (pspec, data);
|
||||||
|
|
||||||
|
self->priv->lock_history = TRUE;
|
||||||
g_object_set_property (G_OBJECT (self), name, data);
|
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;
|
SetParamActionData *action_data;
|
||||||
JsonObject *storage;
|
JsonObject *storage;
|
||||||
const gchar *name;
|
const gchar *name;
|
||||||
JsonNode *node;
|
JsonNode *new_node, *old_node;
|
||||||
|
|
||||||
g_return_if_fail (LD_IS_DIAGRAM_OBJECT (self));
|
g_return_if_fail (LD_IS_DIAGRAM_OBJECT (self));
|
||||||
g_return_if_fail (G_IS_VALUE (data));
|
g_return_if_fail (G_IS_VALUE (data));
|
||||||
@@ -337,24 +342,32 @@ ld_diagram_object_set_data_for_param (LdDiagramObject *self,
|
|||||||
storage = ld_diagram_object_get_storage (self);
|
storage = ld_diagram_object_get_storage (self);
|
||||||
name = g_param_spec_get_name (pspec);
|
name = g_param_spec_get_name (pspec);
|
||||||
|
|
||||||
|
if (!self->priv->lock_history)
|
||||||
|
{
|
||||||
action_data = g_slice_new (SetParamActionData);
|
action_data = g_slice_new (SetParamActionData);
|
||||||
action_data->self = g_object_ref (self);
|
action_data->self = g_object_ref (self);
|
||||||
action_data->param_name = g_strdup (g_param_spec_get_name (pspec));
|
action_data->param_name = g_strdup (g_param_spec_get_name (pspec));
|
||||||
|
|
||||||
node = json_object_get_member (storage, name);
|
old_node = json_object_get_member (storage, name);
|
||||||
action_data->old_node = node ? json_node_copy (node) : NULL;
|
action_data->old_node = old_node ? json_node_copy (old_node) : NULL;
|
||||||
|
}
|
||||||
|
|
||||||
node = json_node_new (JSON_NODE_VALUE);
|
new_node = json_node_new (JSON_NODE_VALUE);
|
||||||
json_node_set_value (node, data);
|
json_node_set_value (new_node, data);
|
||||||
action_data->new_node = json_node_copy (node);
|
|
||||||
|
|
||||||
json_object_set_member (storage, name, node);
|
if (!self->priv->lock_history)
|
||||||
|
action_data->new_node = json_node_copy (new_node);
|
||||||
|
|
||||||
|
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,
|
action = ld_undo_action_new (on_set_param_undo, on_set_param_redo,
|
||||||
on_set_param_destroy, action_data);
|
on_set_param_destroy, action_data);
|
||||||
ld_diagram_object_changed (self, action);
|
ld_diagram_object_changed (self, action);
|
||||||
g_object_unref (action);
|
g_object_unref (action);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
on_set_param_undo (gpointer user_data)
|
on_set_param_undo (gpointer user_data)
|
||||||
|
|||||||
@@ -23,7 +23,8 @@
|
|||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
PROP_0,
|
PROP_0,
|
||||||
PROP_CLASS
|
PROP_CLASS,
|
||||||
|
PROP_ROTATION
|
||||||
};
|
};
|
||||||
|
|
||||||
static void ld_diagram_symbol_get_property (GObject *object, guint property_id,
|
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.",
|
"The class of this symbol.",
|
||||||
"", G_PARAM_READWRITE);
|
"", G_PARAM_READWRITE);
|
||||||
g_object_class_install_property (object_class, PROP_CLASS, pspec);
|
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
|
static void
|
||||||
@@ -70,6 +81,7 @@ ld_diagram_symbol_get_property (GObject *object, guint property_id,
|
|||||||
switch (property_id)
|
switch (property_id)
|
||||||
{
|
{
|
||||||
case PROP_CLASS:
|
case PROP_CLASS:
|
||||||
|
case PROP_ROTATION:
|
||||||
ld_diagram_object_get_data_for_param (self, value, pspec);
|
ld_diagram_object_get_data_for_param (self, value, pspec);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -87,6 +99,7 @@ ld_diagram_symbol_set_property (GObject *object, guint property_id,
|
|||||||
switch (property_id)
|
switch (property_id)
|
||||||
{
|
{
|
||||||
case PROP_CLASS:
|
case PROP_CLASS:
|
||||||
|
case PROP_ROTATION:
|
||||||
ld_diagram_object_set_data_for_param (self, value, pspec);
|
ld_diagram_object_set_data_for_param (self, value, pspec);
|
||||||
break;
|
break;
|
||||||
default:
|
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_return_if_fail (LD_IS_DIAGRAM_SYMBOL (self));
|
||||||
g_object_set (self, "class", klass, NULL);
|
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;
|
GType ld_diagram_symbol_get_type (void) G_GNUC_CONST;
|
||||||
|
|
||||||
LdDiagramSymbol *ld_diagram_symbol_new (JsonObject *storage);
|
LdDiagramSymbol *ld_diagram_symbol_new (JsonObject *storage);
|
||||||
gchar *ld_diagram_symbol_get_class (LdDiagramSymbol *self);
|
gchar *ld_diagram_symbol_get_class (LdDiagramSymbol *self);
|
||||||
void ld_diagram_symbol_set_class (LdDiagramSymbol *self, const gchar *klass);
|
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
|
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
|
* SECTION:ld-diagram
|
||||||
* @short_description: A model for diagrams
|
* @short_description: A model for diagrams
|
||||||
* @see_also: #LdCanvas
|
* @see_also: #LdDiagramView
|
||||||
*
|
*
|
||||||
* #LdDiagram is a model used for storing diagrams.
|
* #LdDiagram is a model used for storing diagrams.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -61,25 +61,25 @@ struct _SymbolMenuData
|
|||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
CANVAS_HANDLER_EXPOSE,
|
VIEW_HANDLER_EXPOSE,
|
||||||
CANVAS_HANDLER_MOTION_NOTIFY,
|
VIEW_HANDLER_MOTION_NOTIFY,
|
||||||
CANVAS_HANDLER_BUTTON_PRESS,
|
VIEW_HANDLER_BUTTON_PRESS,
|
||||||
CANVAS_HANDLER_BUTTON_RELEASE,
|
VIEW_HANDLER_BUTTON_RELEASE,
|
||||||
CANVAS_HANDLER_COUNT
|
VIEW_HANDLER_COUNT
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* LdLibraryToolbarPrivate:
|
* LdLibraryToolbarPrivate:
|
||||||
* @library: a library object assigned to this canvas as a model.
|
* @library: a library object assigned as a model.
|
||||||
* @canvas: a canvas object for showing symbol menus.
|
* @view: a view widget for showing symbol menus.
|
||||||
* @canvas_handlers: signal handlers that hook the canvas.
|
* @view_handlers: signal handlers that hook the view.
|
||||||
* @symbol_menu: data related to menus.
|
* @symbol_menu: data related to menus.
|
||||||
*/
|
*/
|
||||||
struct _LdLibraryToolbarPrivate
|
struct _LdLibraryToolbarPrivate
|
||||||
{
|
{
|
||||||
LdLibrary *library;
|
LdLibrary *library;
|
||||||
LdCanvas *canvas;
|
LdDiagramView *view;
|
||||||
gulong canvas_handlers[CANVAS_HANDLER_COUNT];
|
gulong view_handlers[VIEW_HANDLER_COUNT];
|
||||||
SymbolMenuData symbol_menu;
|
SymbolMenuData symbol_menu;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -87,7 +87,7 @@ enum
|
|||||||
{
|
{
|
||||||
PROP_0,
|
PROP_0,
|
||||||
PROP_LIBRARY,
|
PROP_LIBRARY,
|
||||||
PROP_CANVAS
|
PROP_VIEW
|
||||||
};
|
};
|
||||||
|
|
||||||
static void ld_library_toolbar_get_property (GObject *object, guint property_id,
|
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,
|
static void on_category_toggle (GtkToggleButton *toggle_button,
|
||||||
gpointer user_data);
|
gpointer user_data);
|
||||||
|
|
||||||
static inline void block_canvas_handlers (LdLibraryToolbar *self);
|
static inline void block_view_handlers (LdLibraryToolbar *self);
|
||||||
static inline void unblock_canvas_handlers (LdLibraryToolbar *self);
|
static inline void unblock_view_handlers (LdLibraryToolbar *self);
|
||||||
static inline void disconnect_canvas_handlers (LdLibraryToolbar *self);
|
static inline void disconnect_view_handlers (LdLibraryToolbar *self);
|
||||||
static gboolean on_canvas_exposed (GtkWidget *widget,
|
static gboolean on_view_exposed (GtkWidget *widget,
|
||||||
GdkEventExpose *event, gpointer user_data);
|
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);
|
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);
|
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);
|
GdkEventButton *event, gpointer user_data);
|
||||||
|
|
||||||
|
|
||||||
@@ -138,22 +138,22 @@ ld_library_toolbar_class_init (LdLibraryToolbarClass *klass)
|
|||||||
/**
|
/**
|
||||||
* LdLibraryToolbar:library:
|
* 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",
|
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);
|
LD_TYPE_LIBRARY, G_PARAM_READWRITE);
|
||||||
g_object_class_install_property (object_class, PROP_LIBRARY, pspec);
|
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",
|
pspec = g_param_spec_object ("view", "View",
|
||||||
"The canvas misused for showing symbol menus.",
|
"The view widget misused for showing symbol menus.",
|
||||||
LD_TYPE_CANVAS, G_PARAM_READWRITE);
|
LD_TYPE_DIAGRAM_VIEW, G_PARAM_READWRITE);
|
||||||
g_object_class_install_property (object_class, PROP_CANVAS, pspec);
|
g_object_class_install_property (object_class, PROP_VIEW, pspec);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* LdLibraryToolbar::symbol-chosen:
|
* LdLibraryToolbar::symbol-chosen:
|
||||||
@@ -218,7 +218,7 @@ ld_library_toolbar_dispose (GObject *gobject)
|
|||||||
self = LD_LIBRARY_TOOLBAR (gobject);
|
self = LD_LIBRARY_TOOLBAR (gobject);
|
||||||
|
|
||||||
ld_library_toolbar_set_library (self, NULL);
|
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. */
|
/* Chain up to the parent class. */
|
||||||
G_OBJECT_CLASS (ld_library_toolbar_parent_class)->dispose (gobject);
|
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:
|
case PROP_LIBRARY:
|
||||||
g_value_set_object (value, ld_library_toolbar_get_library (self));
|
g_value_set_object (value, ld_library_toolbar_get_library (self));
|
||||||
break;
|
break;
|
||||||
case PROP_CANVAS:
|
case PROP_VIEW:
|
||||||
g_value_set_object (value, ld_library_toolbar_get_canvas (self));
|
g_value_set_object (value, ld_library_toolbar_get_view (self));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
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_toolbar_set_library (self,
|
||||||
LD_LIBRARY (g_value_get_object (value)));
|
LD_LIBRARY (g_value_get_object (value)));
|
||||||
break;
|
break;
|
||||||
case PROP_CANVAS:
|
case PROP_VIEW:
|
||||||
ld_library_toolbar_set_canvas (self,
|
ld_library_toolbar_set_view (self,
|
||||||
LD_CANVAS (g_value_get_object (value)));
|
LD_DIAGRAM_VIEW (g_value_get_object (value)));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||||
@@ -281,7 +281,7 @@ ld_library_toolbar_new (void)
|
|||||||
/**
|
/**
|
||||||
* ld_library_toolbar_set_library:
|
* ld_library_toolbar_set_library:
|
||||||
* @self: an #LdLibraryToolbar object.
|
* @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.
|
* 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:
|
* ld_library_toolbar_get_library:
|
||||||
* @self: an #LdLibraryToolbar object.
|
* @self: an #LdLibraryToolbar object.
|
||||||
*
|
*
|
||||||
* Get the #LdLibrary object assigned to this toolbar.
|
* Return value: (transfer none): the #LdLibrary object
|
||||||
* The reference count on the library is not incremented.
|
* assigned to the toolbar.
|
||||||
*/
|
*/
|
||||||
LdLibrary *
|
LdLibrary *
|
||||||
ld_library_toolbar_get_library (LdLibraryToolbar *self)
|
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.
|
* @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
|
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_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);
|
disconnect_view_handlers (self);
|
||||||
g_object_unref (self->priv->canvas);
|
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]
|
self->priv->view_handlers[VIEW_HANDLER_EXPOSE]
|
||||||
= g_signal_connect (canvas, "expose-event",
|
= g_signal_connect (view, "expose-event",
|
||||||
G_CALLBACK (on_canvas_exposed), self);
|
G_CALLBACK (on_view_exposed), self);
|
||||||
self->priv->canvas_handlers[CANVAS_HANDLER_MOTION_NOTIFY]
|
self->priv->view_handlers[VIEW_HANDLER_MOTION_NOTIFY]
|
||||||
= g_signal_connect (canvas, "motion-notify-event",
|
= g_signal_connect (view, "motion-notify-event",
|
||||||
G_CALLBACK (on_canvas_motion_notify), self);
|
G_CALLBACK (on_view_motion_notify), self);
|
||||||
self->priv->canvas_handlers[CANVAS_HANDLER_BUTTON_PRESS]
|
self->priv->view_handlers[VIEW_HANDLER_BUTTON_PRESS]
|
||||||
= g_signal_connect (canvas, "button-press-event",
|
= g_signal_connect (view, "button-press-event",
|
||||||
G_CALLBACK (on_canvas_button_press), self);
|
G_CALLBACK (on_view_button_press), self);
|
||||||
self->priv->canvas_handlers[CANVAS_HANDLER_BUTTON_RELEASE]
|
self->priv->view_handlers[VIEW_HANDLER_BUTTON_RELEASE]
|
||||||
= g_signal_connect (canvas, "button-release-event",
|
= g_signal_connect (view, "button-release-event",
|
||||||
G_CALLBACK (on_canvas_button_release), self);
|
G_CALLBACK (on_view_button_release), self);
|
||||||
|
|
||||||
block_canvas_handlers (self);
|
block_view_handlers (self);
|
||||||
g_object_ref (canvas);
|
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.
|
* @self: an #LdLibraryToolbar object.
|
||||||
*
|
*
|
||||||
* Get the #LdLibrary object assigned to this toolbar.
|
* Return value: (transfer none): the #LdDiagramView widget
|
||||||
* The reference count on the canvas is not incremented.
|
* assigned to the toolbar.
|
||||||
*/
|
*/
|
||||||
LdCanvas *
|
LdDiagramView *
|
||||||
ld_library_toolbar_get_canvas (LdLibraryToolbar *self)
|
ld_library_toolbar_get_view (LdLibraryToolbar *self)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (LD_IS_LIBRARY_TOOLBAR (self), NULL);
|
g_return_val_if_fail (LD_IS_LIBRARY_TOOLBAR (self), NULL);
|
||||||
return self->priv->canvas;
|
return self->priv->view;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
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 (button), img);
|
||||||
gtk_container_add (GTK_CONTAINER (item), button);
|
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);
|
g_object_set (button, "can-focus", FALSE, NULL);
|
||||||
|
|
||||||
/* Assign the category to the toggle button. */
|
/* 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));
|
g_return_if_fail (LD_IS_LIBRARY_TOOLBAR (self));
|
||||||
data = &self->priv->symbol_menu;
|
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);
|
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;
|
gint i;
|
||||||
|
|
||||||
block_canvas_handlers (self);
|
block_view_handlers (self);
|
||||||
|
|
||||||
g_object_unref (data->active_button);
|
g_object_unref (data->active_button);
|
||||||
data->active_button = NULL;
|
data->active_button = NULL;
|
||||||
@@ -559,7 +559,7 @@ on_category_toggle (GtkToggleButton *toggle_button, gpointer user_data)
|
|||||||
g_free (data->items);
|
g_free (data->items);
|
||||||
data->items = NULL;
|
data->items = NULL;
|
||||||
|
|
||||||
gtk_grab_remove (GTK_WIDGET (self->priv->canvas));
|
gtk_grab_remove (GTK_WIDGET (self->priv->view));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -568,12 +568,12 @@ on_category_toggle (GtkToggleButton *toggle_button, gpointer user_data)
|
|||||||
gint x, y, menu_width;
|
gint x, y, menu_width;
|
||||||
|
|
||||||
g_return_if_fail (gtk_widget_translate_coordinates (GTK_WIDGET
|
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_y = y;
|
||||||
data->menu_height = GTK_WIDGET (toggle_button)->allocation.height;
|
data->menu_height = GTK_WIDGET (toggle_button)->allocation.height;
|
||||||
|
|
||||||
unblock_canvas_handlers (self);
|
unblock_view_handlers (self);
|
||||||
|
|
||||||
data->active_button = toggle_button;
|
data->active_button = toggle_button;
|
||||||
g_object_ref (data->active_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
|
item->scale = data->menu_height * 0.5
|
||||||
/ MAX (ABS (area.y), ABS (area.y + area.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->width = data->menu_height * 0.5 + item->scale * area.width;
|
||||||
item->dx = item->width * 0.5 + item->scale
|
item->dx = item->width * 0.5 + item->scale
|
||||||
* (area.width * 0.5 - ABS (area.x + area.width));
|
* (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;
|
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);
|
redraw_symbol_menu (self);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define DEFINE_CANVAS_HANDLER_FUNC(name) \
|
#define DEFINE_VIEW_HANDLER_FUNC(name) \
|
||||||
static inline void \
|
static inline void \
|
||||||
name ## _canvas_handlers (LdLibraryToolbar *self) \
|
name ## _view_handlers (LdLibraryToolbar *self) \
|
||||||
{ \
|
{ \
|
||||||
gint i; \
|
gint i; \
|
||||||
g_return_if_fail (LD_IS_CANVAS (self->priv->canvas)); \
|
g_return_if_fail (LD_IS_DIAGRAM_VIEW (self->priv->view)); \
|
||||||
for (i = 0; i < CANVAS_HANDLER_COUNT; i++) \
|
for (i = 0; i < VIEW_HANDLER_COUNT; i++) \
|
||||||
g_signal_handler_ ## name (self->priv->canvas, \
|
g_signal_handler_ ## name (self->priv->view, \
|
||||||
self->priv->canvas_handlers[i]); \
|
self->priv->view_handlers[i]); \
|
||||||
}
|
}
|
||||||
|
|
||||||
DEFINE_CANVAS_HANDLER_FUNC (block)
|
DEFINE_VIEW_HANDLER_FUNC (block)
|
||||||
DEFINE_CANVAS_HANDLER_FUNC (unblock)
|
DEFINE_VIEW_HANDLER_FUNC (unblock)
|
||||||
DEFINE_CANVAS_HANDLER_FUNC (disconnect)
|
DEFINE_VIEW_HANDLER_FUNC (disconnect)
|
||||||
|
|
||||||
static gboolean
|
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;
|
cairo_t *cr;
|
||||||
LdLibraryToolbar *self;
|
LdLibraryToolbar *self;
|
||||||
@@ -658,6 +660,14 @@ on_canvas_exposed (GtkWidget *widget, GdkEventExpose *event, gpointer user_data)
|
|||||||
{
|
{
|
||||||
SymbolMenuItem *item;
|
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;
|
item = data->items + i;
|
||||||
cairo_save (cr);
|
cairo_save (cr);
|
||||||
|
|
||||||
@@ -682,7 +692,8 @@ on_canvas_exposed (GtkWidget *widget, GdkEventExpose *event, gpointer user_data)
|
|||||||
x += item->width;
|
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_set_source_rgb (cr, 0, 0, 0);
|
||||||
cairo_stroke (cr);
|
cairo_stroke (cr);
|
||||||
|
|
||||||
@@ -691,7 +702,7 @@ on_canvas_exposed (GtkWidget *widget, GdkEventExpose *event, gpointer user_data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
on_canvas_motion_notify (GtkWidget *widget, GdkEventMotion *event,
|
on_view_motion_notify (GtkWidget *widget, GdkEventMotion *event,
|
||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
LdLibraryToolbar *self;
|
LdLibraryToolbar *self;
|
||||||
@@ -704,7 +715,7 @@ on_canvas_motion_notify (GtkWidget *widget, GdkEventMotion *event,
|
|||||||
if (widget->window != event->window
|
if (widget->window != event->window
|
||||||
|| event->x < 0 || event->y < data->menu_y
|
|| event->x < 0 || event->y < data->menu_y
|
||||||
|| event->y >= data->menu_y + data->menu_height)
|
|| 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++)
|
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)
|
if (data->active_item != at_cursor)
|
||||||
{
|
{
|
||||||
emit_symbol_signal (self, LD_LIBRARY_TOOLBAR_GET_CLASS (self)
|
emit_symbol_signal (self, LD_LIBRARY_TOOLBAR_GET_CLASS (self)
|
||||||
@@ -732,7 +743,7 @@ on_canvas_motion_notify_end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
on_canvas_button_press (GtkWidget *widget, GdkEventButton *event,
|
on_view_button_press (GtkWidget *widget, GdkEventButton *event,
|
||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
LdLibraryToolbar *self;
|
LdLibraryToolbar *self;
|
||||||
@@ -753,7 +764,7 @@ on_canvas_button_press (GtkWidget *widget, GdkEventButton *event,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
on_canvas_button_release (GtkWidget *widget, GdkEventButton *event,
|
on_view_button_release (GtkWidget *widget, GdkEventButton *event,
|
||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
LdLibraryToolbar *self;
|
LdLibraryToolbar *self;
|
||||||
|
|||||||
@@ -59,9 +59,9 @@ GtkWidget *ld_library_toolbar_new (void);
|
|||||||
void ld_library_toolbar_set_library (LdLibraryToolbar *self,
|
void ld_library_toolbar_set_library (LdLibraryToolbar *self,
|
||||||
LdLibrary *library);
|
LdLibrary *library);
|
||||||
LdLibrary *ld_library_toolbar_get_library (LdLibraryToolbar *self);
|
LdLibrary *ld_library_toolbar_get_library (LdLibraryToolbar *self);
|
||||||
void ld_library_toolbar_set_canvas (LdLibraryToolbar *self,
|
void ld_library_toolbar_set_view (LdLibraryToolbar *self,
|
||||||
LdCanvas *canvas);
|
LdDiagramView *view);
|
||||||
LdCanvas *ld_library_toolbar_get_canvas (LdLibraryToolbar *self);
|
LdDiagramView *ld_library_toolbar_get_view (LdLibraryToolbar *self);
|
||||||
|
|
||||||
|
|
||||||
G_END_DECLS
|
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_restore (lua_State *L);
|
||||||
static int ld_lua_cairo_get_line_width (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_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_move_to (lua_State *L);
|
||||||
static int ld_lua_cairo_line_to (lua_State *L);
|
static int ld_lua_cairo_line_to (lua_State *L);
|
||||||
static int ld_lua_cairo_curve_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_fill_preserve (lua_State *L);
|
||||||
static int ld_lua_cairo_clip (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_clip_preserve (lua_State *L);
|
||||||
|
static int ld_lua_cairo_show_text (lua_State *L);
|
||||||
|
|
||||||
|
|
||||||
static luaL_Reg ld_lua_logdiag_lib[] =
|
static luaL_Reg ld_lua_logdiag_lib[] =
|
||||||
@@ -122,6 +126,9 @@ static luaL_Reg ld_lua_cairo_table[] =
|
|||||||
{"restore", ld_lua_cairo_restore},
|
{"restore", ld_lua_cairo_restore},
|
||||||
{"get_line_width", ld_lua_cairo_get_line_width},
|
{"get_line_width", ld_lua_cairo_get_line_width},
|
||||||
{"set_line_width", ld_lua_cairo_set_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},
|
{"move_to", ld_lua_cairo_move_to},
|
||||||
{"line_to", ld_lua_cairo_line_to},
|
{"line_to", ld_lua_cairo_line_to},
|
||||||
{"curve_to", ld_lua_cairo_curve_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},
|
{"fill_preserve", ld_lua_cairo_fill_preserve},
|
||||||
{"clip", ld_lua_cairo_clip},
|
{"clip", ld_lua_cairo_clip},
|
||||||
{"clip_preserve", ld_lua_cairo_clip_preserve},
|
{"clip_preserve", ld_lua_cairo_clip_preserve},
|
||||||
|
{"show_text", ld_lua_cairo_show_text},
|
||||||
{NULL, NULL}
|
{NULL, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -649,15 +657,21 @@ get_cairo_scale (cairo_t *cr)
|
|||||||
return dx;
|
return dx;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define LD_LUA_CAIRO_TRIVIAL(name) \
|
#define LD_LUA_CAIRO_BEGIN(name) \
|
||||||
static int \
|
static int \
|
||||||
ld_lua_cairo_ ## name (lua_State *L) \
|
ld_lua_cairo_ ## name (lua_State *L) \
|
||||||
{ \
|
{ \
|
||||||
LdLuaDrawData *data; \
|
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)); \
|
data = lua_touserdata (L, lua_upvalueindex (1)); \
|
||||||
cairo_ ## name (data->cr); \
|
cairo_ ## name (data->cr); \
|
||||||
return 0; \
|
LD_LUA_CAIRO_END (0)
|
||||||
}
|
|
||||||
|
|
||||||
LD_LUA_CAIRO_TRIVIAL (new_path)
|
LD_LUA_CAIRO_TRIVIAL (new_path)
|
||||||
LD_LUA_CAIRO_TRIVIAL (new_sub_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)
|
||||||
LD_LUA_CAIRO_TRIVIAL (clip_preserve)
|
LD_LUA_CAIRO_TRIVIAL (clip_preserve)
|
||||||
|
|
||||||
static int
|
LD_LUA_CAIRO_BEGIN (save)
|
||||||
ld_lua_cairo_save (lua_State *L)
|
|
||||||
{
|
|
||||||
LdLuaDrawData *data;
|
|
||||||
|
|
||||||
data = lua_touserdata (L, lua_upvalueindex (1));
|
data = lua_touserdata (L, lua_upvalueindex (1));
|
||||||
if (data->save_count + 1)
|
if (data->save_count + 1)
|
||||||
{
|
{
|
||||||
data->save_count++;
|
data->save_count++;
|
||||||
cairo_save (data->cr);
|
cairo_save (data->cr);
|
||||||
}
|
}
|
||||||
return 0;
|
LD_LUA_CAIRO_END (0)
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
ld_lua_cairo_restore (lua_State *L)
|
|
||||||
{
|
|
||||||
LdLuaDrawData *data;
|
|
||||||
|
|
||||||
|
LD_LUA_CAIRO_BEGIN (restore)
|
||||||
data = lua_touserdata (L, lua_upvalueindex (1));
|
data = lua_touserdata (L, lua_upvalueindex (1));
|
||||||
if (data->save_count)
|
if (data->save_count)
|
||||||
{
|
{
|
||||||
data->save_count--;
|
data->save_count--;
|
||||||
cairo_restore (data->cr);
|
cairo_restore (data->cr);
|
||||||
}
|
}
|
||||||
return 0;
|
LD_LUA_CAIRO_END (0)
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
ld_lua_cairo_get_line_width (lua_State *L)
|
|
||||||
{
|
|
||||||
LdLuaDrawData *data;
|
|
||||||
|
|
||||||
|
LD_LUA_CAIRO_BEGIN (get_line_width)
|
||||||
data = lua_touserdata (L, lua_upvalueindex (1));
|
data = lua_touserdata (L, lua_upvalueindex (1));
|
||||||
lua_pushnumber (L, cairo_get_line_width (data->cr)
|
lua_pushnumber (L, cairo_get_line_width (data->cr)
|
||||||
* get_cairo_scale (data->cr));
|
* get_cairo_scale (data->cr));
|
||||||
return 1;
|
LD_LUA_CAIRO_END (1)
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
ld_lua_cairo_set_line_width (lua_State *L)
|
|
||||||
{
|
|
||||||
LdLuaDrawData *data;
|
|
||||||
|
|
||||||
|
LD_LUA_CAIRO_BEGIN (set_line_width)
|
||||||
data = lua_touserdata (L, lua_upvalueindex (1));
|
data = lua_touserdata (L, lua_upvalueindex (1));
|
||||||
cairo_set_line_width (data->cr, luaL_checknumber (L, 1)
|
cairo_set_line_width (data->cr, luaL_checknumber (L, 1)
|
||||||
/ get_cairo_scale (data->cr));
|
/ get_cairo_scale (data->cr));
|
||||||
return 0;
|
LD_LUA_CAIRO_END (0)
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
LD_LUA_CAIRO_BEGIN (translate)
|
||||||
ld_lua_cairo_move_to (lua_State *L)
|
lua_Number x, y;
|
||||||
{
|
|
||||||
LdLuaDrawData *data;
|
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;
|
lua_Number x, y;
|
||||||
|
|
||||||
data = lua_touserdata (L, lua_upvalueindex (1));
|
data = lua_touserdata (L, lua_upvalueindex (1));
|
||||||
@@ -732,13 +753,9 @@ ld_lua_cairo_move_to (lua_State *L)
|
|||||||
y = luaL_checknumber (L, 2);
|
y = luaL_checknumber (L, 2);
|
||||||
|
|
||||||
cairo_move_to (data->cr, x, y);
|
cairo_move_to (data->cr, x, y);
|
||||||
return 0;
|
LD_LUA_CAIRO_END (0)
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
LD_LUA_CAIRO_BEGIN (line_to)
|
||||||
ld_lua_cairo_line_to (lua_State *L)
|
|
||||||
{
|
|
||||||
LdLuaDrawData *data;
|
|
||||||
lua_Number x, y;
|
lua_Number x, y;
|
||||||
|
|
||||||
data = lua_touserdata (L, lua_upvalueindex (1));
|
data = lua_touserdata (L, lua_upvalueindex (1));
|
||||||
@@ -747,13 +764,9 @@ ld_lua_cairo_line_to (lua_State *L)
|
|||||||
y = luaL_checknumber (L, 2);
|
y = luaL_checknumber (L, 2);
|
||||||
|
|
||||||
cairo_line_to (data->cr, x, y);
|
cairo_line_to (data->cr, x, y);
|
||||||
return 0;
|
LD_LUA_CAIRO_END (0)
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
LD_LUA_CAIRO_BEGIN (curve_to)
|
||||||
ld_lua_cairo_curve_to (lua_State *L)
|
|
||||||
{
|
|
||||||
LdLuaDrawData *data;
|
|
||||||
lua_Number x1, y1, x2, y2, x3, y3;
|
lua_Number x1, y1, x2, y2, x3, y3;
|
||||||
|
|
||||||
data = lua_touserdata (L, lua_upvalueindex (1));
|
data = lua_touserdata (L, lua_upvalueindex (1));
|
||||||
@@ -766,13 +779,9 @@ ld_lua_cairo_curve_to (lua_State *L)
|
|||||||
y3 = luaL_checknumber (L, 6);
|
y3 = luaL_checknumber (L, 6);
|
||||||
|
|
||||||
cairo_curve_to (data->cr, x1, y1, x2, y2, x3, y3);
|
cairo_curve_to (data->cr, x1, y1, x2, y2, x3, y3);
|
||||||
return 0;
|
LD_LUA_CAIRO_END (0)
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
LD_LUA_CAIRO_BEGIN (arc)
|
||||||
ld_lua_cairo_arc (lua_State *L)
|
|
||||||
{
|
|
||||||
LdLuaDrawData *data;
|
|
||||||
lua_Number xc, yc, radius, angle1, angle2;
|
lua_Number xc, yc, radius, angle1, angle2;
|
||||||
|
|
||||||
data = lua_touserdata (L, lua_upvalueindex (1));
|
data = lua_touserdata (L, lua_upvalueindex (1));
|
||||||
@@ -784,13 +793,9 @@ ld_lua_cairo_arc (lua_State *L)
|
|||||||
angle2 = luaL_checknumber (L, 5);
|
angle2 = luaL_checknumber (L, 5);
|
||||||
|
|
||||||
cairo_arc (data->cr, xc, yc, radius, angle1, angle2);
|
cairo_arc (data->cr, xc, yc, radius, angle1, angle2);
|
||||||
return 0;
|
LD_LUA_CAIRO_END (0)
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
LD_LUA_CAIRO_BEGIN (arc_negative)
|
||||||
ld_lua_cairo_arc_negative (lua_State *L)
|
|
||||||
{
|
|
||||||
LdLuaDrawData *data;
|
|
||||||
lua_Number xc, yc, radius, angle1, angle2;
|
lua_Number xc, yc, radius, angle1, angle2;
|
||||||
|
|
||||||
data = lua_touserdata (L, lua_upvalueindex (1));
|
data = lua_touserdata (L, lua_upvalueindex (1));
|
||||||
@@ -802,6 +807,36 @@ ld_lua_cairo_arc_negative (lua_State *L)
|
|||||||
angle2 = luaL_checknumber (L, 5);
|
angle2 = luaL_checknumber (L, 5);
|
||||||
|
|
||||||
cairo_arc_negative (data->cr, xc, yc, radius, angle1, angle2);
|
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
|
* SECTION:ld-symbol
|
||||||
* @short_description: A 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
|
* All implementations of this abstract class are required to use
|
||||||
* cairo_save() and cairo_restore() when drawing to store the state.
|
* 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_POINT_ARRAY (ld_point_array_get_type ())
|
||||||
#define LD_TYPE_RECTANGLE (ld_rectangle_get_type ())
|
#define LD_TYPE_RECTANGLE (ld_rectangle_get_type ())
|
||||||
|
|
||||||
typedef struct _LdPoint LdPoint;
|
|
||||||
typedef struct _LdPointArray LdPointArray;
|
|
||||||
typedef struct _LdRectangle LdRectangle;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* LdPoint:
|
* LdPoint:
|
||||||
@@ -30,10 +26,11 @@ typedef struct _LdRectangle LdRectangle;
|
|||||||
*
|
*
|
||||||
* Defines a point.
|
* Defines a point.
|
||||||
*/
|
*/
|
||||||
struct _LdPoint
|
typedef struct
|
||||||
{
|
{
|
||||||
gdouble x, y;
|
gdouble x, y;
|
||||||
};
|
}
|
||||||
|
LdPoint;
|
||||||
|
|
||||||
GType ld_point_get_type (void) G_GNUC_CONST;
|
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.
|
* Defines an array of points.
|
||||||
*/
|
*/
|
||||||
struct _LdPointArray
|
typedef struct
|
||||||
{
|
{
|
||||||
LdPoint *points;
|
LdPoint *points;
|
||||||
guint length;
|
guint length;
|
||||||
guint size;
|
guint size;
|
||||||
};
|
}
|
||||||
|
LdPointArray;
|
||||||
|
|
||||||
GType ld_point_array_get_type (void) G_GNUC_CONST;
|
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.
|
* Defines a rectangle.
|
||||||
*/
|
*/
|
||||||
struct _LdRectangle
|
typedef struct
|
||||||
{
|
{
|
||||||
gdouble x, y;
|
gdouble x, y;
|
||||||
gdouble width, height;
|
gdouble width, height;
|
||||||
};
|
}
|
||||||
|
LdRectangle;
|
||||||
|
|
||||||
GType ld_rectangle_get_type (void) G_GNUC_CONST;
|
GType ld_rectangle_get_type (void) G_GNUC_CONST;
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
#include "ld-diagram-connection.h"
|
#include "ld-diagram-connection.h"
|
||||||
#include "ld-diagram.h"
|
#include "ld-diagram.h"
|
||||||
|
|
||||||
#include "ld-canvas.h"
|
#include "ld-diagram-view.h"
|
||||||
#include "ld-library-toolbar.h"
|
#include "ld-library-toolbar.h"
|
||||||
|
|
||||||
#include "ld-lua.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 ""
|
msgstr ""
|
||||||
"Project-Id-Version: logdiag \n"
|
"Project-Id-Version: logdiag \n"
|
||||||
"Report-Msgid-Bugs-To: \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"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -17,7 +17,183 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
#: ../src/window-main.c:102
|
#: ../src/ld-window-main.c:114
|
||||||
#, c-format
|
msgid "_File"
|
||||||
msgid "Building UI failed: %s"
|
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 ""
|
msgstr ""
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ if [ "$MAJOR" != "" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Finally make the template
|
# 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" \
|
--package-name="$PACKAGE" --package-version="$VERSION" \
|
||||||
--copyright-holder="Přemysl Janouch"
|
--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
|
-- Symbol name
|
||||||
names =
|
local names =
|
||||||
{
|
{
|
||||||
en = "AND",
|
en = "AND",
|
||||||
cs = "AND"
|
cs = "AND"
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Render area in base units (X1, Y1, X2, Y2)
|
-- Render area in base units (X1, Y1, X2, Y2)
|
||||||
area = {-4, -2, 5, 2}
|
local area = {-4, -2, 5, 2}
|
||||||
|
|
||||||
-- Terminals
|
-- Terminal points
|
||||||
terminals = {{-4, -1}, {-4, 1}, {5, 0}}
|
local terminals = {{-4, -1}, {-4, 1}, {5, 0}}
|
||||||
|
|
||||||
-- Rendering
|
-- Rendering
|
||||||
render = function (cr)
|
local render = function (cr)
|
||||||
-- The main shape
|
-- The main shape
|
||||||
cr.move_to (-2, -2)
|
cr.move_to (-2, -2)
|
||||||
cr.line_to (1, -2)
|
cr.line_to (1, -2)
|
||||||
cr.arc (1, 0, 2, math.pi * 1.5, math.pi * 0.5)
|
cr.arc (1, 0, 2, math.pi * 1.5, math.pi * 0.5)
|
||||||
cr.line_to (-2, 2)
|
cr.line_to (-2, 2)
|
||||||
cr.close_path ()
|
cr.close_path ()
|
||||||
cr.stroke ()
|
|
||||||
|
|
||||||
-- The contacts
|
-- The terminals
|
||||||
cr.move_to (-4, -1)
|
cr.move_to (-4, -1)
|
||||||
cr.line_to (-2, -1)
|
cr.line_to (-2, -1)
|
||||||
cr.stroke ()
|
|
||||||
|
|
||||||
cr.move_to (-4, 1)
|
cr.move_to (-4, 1)
|
||||||
cr.line_to (-2, 1)
|
cr.line_to (-2, 1)
|
||||||
cr.stroke ()
|
|
||||||
|
|
||||||
cr.move_to (3, 0)
|
cr.move_to (3, 0)
|
||||||
cr.line_to (5, 0)
|
cr.line_to (5, 0)
|
||||||
|
|
||||||
cr.stroke ()
|
cr.stroke ()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -1,37 +1,35 @@
|
|||||||
-- Symbol name
|
-- Symbol name
|
||||||
names =
|
local names =
|
||||||
{
|
{
|
||||||
en = "NOT",
|
en = "NOT",
|
||||||
cs = "NOT"
|
cs = "NOT"
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Render area in base units (X1, Y1, X2, Y2)
|
-- Render area in base units (X1, Y1, X2, Y2)
|
||||||
area = {-4, -2, 4, 2}
|
local area = {-4, -2, 4, 2}
|
||||||
|
|
||||||
-- Terminals
|
-- Terminal points
|
||||||
terminals = {{-4, 0}, {4, 0}}
|
local terminals = {{-4, 0}, {4, 0}}
|
||||||
|
|
||||||
-- Rendering
|
-- Rendering
|
||||||
render = function (cr)
|
local render = function (cr)
|
||||||
-- The triangle
|
-- The triangle
|
||||||
cr.move_to (-2, -2)
|
cr.move_to (-2, -2)
|
||||||
cr.line_to (2, 0)
|
cr.line_to (2, 0)
|
||||||
cr.line_to (-2, 2)
|
cr.line_to (-2, 2)
|
||||||
cr.close_path ()
|
cr.close_path ()
|
||||||
cr.stroke ()
|
|
||||||
|
|
||||||
-- The circle
|
-- The circle
|
||||||
cr.new_sub_path ()
|
cr.new_sub_path ()
|
||||||
cr.arc (2.25, 0, 0.25, 0, 2 * math.pi)
|
cr.arc (2.25, 0, 0.25, 0, 2 * math.pi)
|
||||||
cr.stroke ()
|
|
||||||
|
|
||||||
-- The contacts
|
-- The terminals
|
||||||
cr.move_to (-4, 0)
|
cr.move_to (-4, 0)
|
||||||
cr.line_to (-2, 0)
|
cr.line_to (-2, 0)
|
||||||
cr.stroke ()
|
|
||||||
|
|
||||||
cr.move_to (2.5, 0)
|
cr.move_to (2.5, 0)
|
||||||
cr.line_to (4, 0)
|
cr.line_to (4, 0)
|
||||||
|
|
||||||
cr.stroke ()
|
cr.stroke ()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
-- Symbol name
|
-- Symbol name
|
||||||
names =
|
local names =
|
||||||
{
|
{
|
||||||
en = "OR",
|
en = "OR",
|
||||||
cs = "OR"
|
cs = "OR"
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Render area in base units (X1, Y1, X2, Y2)
|
-- Render area in base units (X1, Y1, X2, Y2)
|
||||||
area = {-4, -2, 5, 2}
|
local area = {-4, -2, 5, 2}
|
||||||
|
|
||||||
-- Terminals
|
-- Terminal points
|
||||||
terminals = {{-4, -1}, {-4, 1}, {5, 0}}
|
local terminals = {{-4, -1}, {-4, 1}, {5, 0}}
|
||||||
|
|
||||||
-- Rendering
|
-- Rendering
|
||||||
render = function (cr)
|
local render = function (cr)
|
||||||
-- The main shape
|
-- The main shape
|
||||||
cr.move_to (-2, -2)
|
cr.move_to (-2, -2)
|
||||||
cr.line_to (0, -2)
|
cr.line_to (0, -2)
|
||||||
@@ -22,7 +22,7 @@ render = function (cr)
|
|||||||
cr.curve_to (-1, 1, -1, -1, -2, -2)
|
cr.curve_to (-1, 1, -1, -1, -2, -2)
|
||||||
cr.stroke ()
|
cr.stroke ()
|
||||||
|
|
||||||
-- The contacts
|
-- The terminals
|
||||||
cr.save ()
|
cr.save ()
|
||||||
|
|
||||||
-- Crop the contacts according to
|
-- Crop the contacts according to
|
||||||
@@ -36,12 +36,11 @@ render = function (cr)
|
|||||||
|
|
||||||
cr.move_to (-4, -1)
|
cr.move_to (-4, -1)
|
||||||
cr.line_to (-1, -1)
|
cr.line_to (-1, -1)
|
||||||
cr.stroke ()
|
|
||||||
|
|
||||||
cr.move_to (-4, 1)
|
cr.move_to (-4, 1)
|
||||||
cr.line_to (-1, 1)
|
cr.line_to (-1, 1)
|
||||||
cr.stroke ()
|
|
||||||
|
|
||||||
|
cr.stroke ()
|
||||||
cr.restore ()
|
cr.restore ()
|
||||||
|
|
||||||
cr.move_to (3, 0)
|
cr.move_to (3, 0)
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
-- Symbol name
|
-- Symbol name
|
||||||
names =
|
local names =
|
||||||
{
|
{
|
||||||
en = "Power source",
|
en = "Cell",
|
||||||
cs = "Zdroj napětí"
|
cs = "Článek"
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Render area in base units (X1, Y1, X2, Y2)
|
-- Render area in base units (X1, Y1, X2, Y2)
|
||||||
area = {-1, -2, 1, 2}
|
local area = {-1, -2, 1, 2}
|
||||||
|
|
||||||
-- Terminals
|
-- Terminal points
|
||||||
terminals = {{-1, 0}, {1, 0}}
|
local terminals = {{-1, 0}, {1, 0}}
|
||||||
|
|
||||||
-- Rendering
|
-- Rendering
|
||||||
render = function (cr)
|
local render = function (cr)
|
||||||
-- The vertical lines
|
-- The vertical lines
|
||||||
cr.move_to (-0.2, -1)
|
cr.move_to (-0.2, -1)
|
||||||
cr.line_to (-0.2, 1)
|
cr.line_to (-0.2, 1)
|
||||||
@@ -20,7 +20,7 @@ render = function (cr)
|
|||||||
cr.move_to (0.2, -2)
|
cr.move_to (0.2, -2)
|
||||||
cr.line_to (0.2, 2)
|
cr.line_to (0.2, 2)
|
||||||
|
|
||||||
-- The contacts
|
-- The terminals
|
||||||
cr.move_to (-1, 0)
|
cr.move_to (-1, 0)
|
||||||
cr.line_to (-0.2, 0)
|
cr.line_to (-0.2, 0)
|
||||||
|
|
||||||
@@ -31,6 +31,6 @@ render = function (cr)
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- Register the symbol
|
-- Register the symbol
|
||||||
logdiag.register ("PowerSource", names, area, terminals, render)
|
logdiag.register ("Cell", names, area, terminals, render)
|
||||||
|
|
||||||
|
|
||||||
@@ -1,18 +1,18 @@
|
|||||||
-- Symbol name
|
-- Symbol name
|
||||||
names =
|
local names =
|
||||||
{
|
{
|
||||||
en = "Ground",
|
en = "Ground",
|
||||||
cs = "Zem"
|
cs = "Zem"
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Render area in base units (X1, Y1, X2, Y2)
|
-- Render area in base units (X1, Y1, X2, Y2)
|
||||||
area = {-1, -1, 1, 2}
|
local area = {-1, -1, 1, 2}
|
||||||
|
|
||||||
-- Terminals
|
-- Terminal points
|
||||||
terminals = {{0, -1}}
|
local terminals = {{0, -1}}
|
||||||
|
|
||||||
-- Rendering
|
-- Rendering
|
||||||
render = function (cr)
|
local render = function (cr)
|
||||||
-- The vertical line
|
-- The vertical line
|
||||||
cr.move_to (0, -1)
|
cr.move_to (0, -1)
|
||||||
cr.line_to (0, 0.5)
|
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
|
-- Symbol name
|
||||||
names =
|
local names =
|
||||||
{
|
{
|
||||||
en = "Lamp",
|
en = "Lamp",
|
||||||
cs = "Světelný zdroj"
|
cs = "Světelný zdroj"
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Render area in base units (X1, Y1, X2, Y2)
|
-- Render area in base units (X1, Y1, X2, Y2)
|
||||||
area = {-2, -1, 2, 1}
|
local area = {-2, -1, 2, 1}
|
||||||
|
|
||||||
-- Terminals
|
-- Terminal points
|
||||||
terminals = {{-2, 0}, {2, 0}}
|
local terminals = {{-2, 0}, {2, 0}}
|
||||||
|
|
||||||
-- Rendering
|
-- Rendering
|
||||||
render = function (cr)
|
local render = function (cr)
|
||||||
-- The circle
|
-- The circle
|
||||||
cr.save ()
|
cr.save ()
|
||||||
|
|
||||||
@@ -25,16 +25,17 @@ render = function (cr)
|
|||||||
|
|
||||||
cr.move_to (1, -1)
|
cr.move_to (1, -1)
|
||||||
cr.line_to (-1, 1)
|
cr.line_to (-1, 1)
|
||||||
cr.stroke ()
|
|
||||||
|
|
||||||
|
cr.stroke ()
|
||||||
cr.restore ()
|
cr.restore ()
|
||||||
|
|
||||||
-- The contacts
|
-- The terminals
|
||||||
cr.move_to (-2, 0)
|
cr.move_to (-2, 0)
|
||||||
cr.line_to (-1, 0)
|
cr.line_to (-1, 0)
|
||||||
|
|
||||||
cr.move_to (1, 0)
|
cr.move_to (1, 0)
|
||||||
cr.line_to (2, 0)
|
cr.line_to (2, 0)
|
||||||
|
|
||||||
cr.stroke ()
|
cr.stroke ()
|
||||||
end
|
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
|
-- Symbol name
|
||||||
names =
|
local names =
|
||||||
{
|
{
|
||||||
en = "Switch",
|
en = "Switch",
|
||||||
cs = "Spínač"
|
cs = "Spínač"
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Render area in base units (X1, Y1, X2, Y2)
|
-- Render area in base units (X1, Y1, X2, Y2)
|
||||||
area = {-2, -1.5, 2, 0}
|
local area = {-2, -1.5, 2, 0}
|
||||||
|
|
||||||
-- Terminals
|
-- Terminal points
|
||||||
terminals = {{-2, 0}, {2, 0}}
|
local terminals = {{-2, 0}, {2, 0}}
|
||||||
|
|
||||||
-- Rendering
|
-- Rendering
|
||||||
render_normal = function (cr)
|
local render = function (cr)
|
||||||
-- The switch contact
|
-- The switch contact
|
||||||
cr.move_to (1.3, -1.3)
|
cr.move_to (1.3, -1.3)
|
||||||
cr.line_to (-1, 0)
|
cr.line_to (-1, 0)
|
||||||
|
|
||||||
-- The contacts
|
-- The terminals
|
||||||
cr.move_to (-2, 0)
|
cr.move_to (-2, 0)
|
||||||
cr.line_to (-1, 0)
|
cr.line_to (-1, 0)
|
||||||
|
|
||||||
@@ -28,6 +28,6 @@ render_normal = function (cr)
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- Register the symbol
|
-- 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
|
-- Symbol name
|
||||||
names =
|
local names =
|
||||||
{
|
{
|
||||||
en = "Capacitor",
|
en = "Capacitor",
|
||||||
cs = "Kondenzátor"
|
cs = "Kondenzátor"
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Render area in base units (X1, Y1, X2, Y2)
|
local names_polar =
|
||||||
area = {-2, -1, 2, 1}
|
{
|
||||||
|
en = "Polarized capacitor",
|
||||||
|
cs = "Polarizovaný kondenzátor"
|
||||||
|
}
|
||||||
|
|
||||||
-- Terminals
|
-- Render area in base units (X1, Y1, X2, Y2)
|
||||||
terminals = {{-2, 0}, {2, 0}}
|
local area = {-2, -1, 2, 1}
|
||||||
|
local area_polar = {-2, -1.5, 2, 1}
|
||||||
|
|
||||||
|
-- Terminal points
|
||||||
|
local terminals = {{-2, 0}, {2, 0}}
|
||||||
|
|
||||||
-- Rendering
|
-- Rendering
|
||||||
render = function (cr)
|
local render = function (cr)
|
||||||
-- The vertical lines
|
-- The vertical lines
|
||||||
cr.move_to (-0.2, -1)
|
cr.move_to (-0.2, -1)
|
||||||
cr.line_to (-0.2, 1)
|
cr.line_to (-0.2, 1)
|
||||||
cr.stroke ()
|
|
||||||
|
|
||||||
cr.move_to (0.2, -1)
|
cr.move_to (0.2, -1)
|
||||||
cr.line_to (0.2, 1)
|
cr.line_to (0.2, 1)
|
||||||
cr.stroke ()
|
|
||||||
|
|
||||||
-- The contacts
|
-- The terminals
|
||||||
cr.move_to (-2, 0)
|
cr.move_to (-2, 0)
|
||||||
cr.line_to (-0.2, 0)
|
cr.line_to (-0.2, 0)
|
||||||
cr.stroke ()
|
|
||||||
|
|
||||||
cr.move_to (0.2, 0)
|
cr.move_to (0.2, 0)
|
||||||
cr.line_to (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 ()
|
cr.stroke ()
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Register the symbol
|
-- 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
|
-- Symbol names
|
||||||
names =
|
local names =
|
||||||
{
|
{
|
||||||
en = "Diode",
|
en = "Diode",
|
||||||
cs = "Dioda"
|
cs = "Dioda"
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Render area in base units (X1, Y1, X2, Y2)
|
local names_zener =
|
||||||
area = {-2, -1, 2, 1}
|
{
|
||||||
|
en = "Zener diode",
|
||||||
|
cs = "Zenerova dioda"
|
||||||
|
}
|
||||||
|
|
||||||
-- Terminals
|
local names_led =
|
||||||
terminals = {{-2, 0}, {2, 0}}
|
{
|
||||||
|
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
|
-- Rendering
|
||||||
render = function (cr)
|
local render = function (cr)
|
||||||
-- The triangle
|
-- The triangle
|
||||||
cr.move_to (-1, -1)
|
cr.move_to (-1, -1)
|
||||||
cr.line_to (1, 0)
|
cr.line_to (1, 0)
|
||||||
cr.line_to (-1, 1)
|
cr.line_to (-1, 1)
|
||||||
cr.line_to (-1, -1)
|
cr.line_to (-1, -1)
|
||||||
cr.stroke ()
|
|
||||||
|
|
||||||
-- The vertical line
|
-- The vertical line
|
||||||
cr.move_to (1, 1)
|
cr.move_to (1, 1)
|
||||||
cr.line_to (1, -1)
|
cr.line_to (1, -1)
|
||||||
cr.stroke ()
|
|
||||||
|
|
||||||
-- The contacts
|
-- The terminals
|
||||||
cr.move_to (-2, 0)
|
cr.move_to (-2, 0)
|
||||||
cr.line_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.stroke ()
|
||||||
|
|
||||||
cr.move_to (1, 0)
|
cr.move_to (-0.3, -0.7)
|
||||||
cr.line_to (2, 0)
|
cr.line_to (0, -1.5)
|
||||||
cr.stroke ()
|
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
|
end
|
||||||
|
|
||||||
-- Register the symbol
|
-- 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
|
-- Symbol names
|
||||||
names_normal =
|
local names =
|
||||||
{
|
{
|
||||||
en = "Inductor",
|
en = "Inductor",
|
||||||
cs = "Cívka"
|
cs = "Cívka"
|
||||||
}
|
}
|
||||||
|
|
||||||
names_core =
|
local names_core =
|
||||||
{
|
{
|
||||||
en = "Inductor with magnetic core",
|
en = "Inductor with magnetic core",
|
||||||
cs = "Cívka s magnetickým jádrem"
|
cs = "Cívka s magnetickým jádrem"
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Render area in base units (X1, Y1, X2, Y2)
|
-- Render area in base units (X1, Y1, X2, Y2)
|
||||||
area = {-2, -1, 2, 0}
|
local area = {-2, -1, 2, 0}
|
||||||
|
|
||||||
-- Terminals
|
-- Terminal points
|
||||||
terminals = {{-2, 0}, {2, 0}}
|
local terminals = {{-2, 0}, {2, 0}}
|
||||||
|
|
||||||
-- Rendering
|
-- Rendering
|
||||||
render_normal = function (cr)
|
local render = function (cr)
|
||||||
-- The arcs
|
-- The arcs
|
||||||
cr.arc (-1.5, 0, 0.5, math.pi, 0)
|
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 (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.arc (1.5, 0, 0.5, math.pi, 0)
|
||||||
|
|
||||||
cr.stroke ()
|
cr.stroke ()
|
||||||
end
|
end
|
||||||
|
|
||||||
render_core = function (cr)
|
local render_core = function (cr)
|
||||||
render_normal (cr)
|
render (cr)
|
||||||
|
|
||||||
-- The core
|
-- The core
|
||||||
cr.move_to (-2, -1)
|
cr.move_to (-2, -1)
|
||||||
cr.line_to (2, -1)
|
cr.line_to (2, -1)
|
||||||
|
|
||||||
cr.stroke ()
|
cr.stroke ()
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Register the symbols
|
-- Register the symbols
|
||||||
logdiag.register ("Inductor", names_normal, area, terminals, render_normal)
|
logdiag.register ("Inductor", names, area, terminals, render)
|
||||||
logdiag.register ("InductorWithCore", names_core, area, terminals, render_core)
|
logdiag.register ("InductorWithCore", names_core, area, terminals, render_core)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,37 +1,99 @@
|
|||||||
-- Symbol name
|
-- Symbol name
|
||||||
names =
|
local names =
|
||||||
{
|
{
|
||||||
en = "Resistor",
|
en = "Resistor",
|
||||||
cs = "Rezistor"
|
cs = "Rezistor"
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Render area in base units (X1, Y1, X2, Y2)
|
local names_adj =
|
||||||
area = {-2, -0.5, 2, 0.5}
|
{
|
||||||
|
en = "Adjustable resistor",
|
||||||
|
cs = "Nastavitelný rezistor"
|
||||||
|
}
|
||||||
|
|
||||||
-- Terminals
|
local names_pot =
|
||||||
terminals = {{-2, 0}, {2, 0}}
|
{
|
||||||
|
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
|
-- Rendering
|
||||||
render = function (cr)
|
local render = function (cr)
|
||||||
-- The rectangle
|
-- The rectangle
|
||||||
cr.move_to (-1.5, -0.5)
|
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.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.move_to (-2, 0)
|
||||||
cr.line_to (-1.5, 0)
|
cr.line_to (-1.5, 0)
|
||||||
cr.stroke ()
|
|
||||||
|
|
||||||
cr.move_to (1.5, 0)
|
cr.move_to (1.5, 0)
|
||||||
cr.line_to (2, 0)
|
cr.line_to (2, 0)
|
||||||
|
|
||||||
cr.stroke ()
|
cr.stroke ()
|
||||||
end
|
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
|
-- 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;
|
LdDiagram *diagram;
|
||||||
gchar *filename;
|
gchar *filename;
|
||||||
|
|
||||||
GtkWidget *canvas_window;
|
GtkWidget *scrolled_window;
|
||||||
LdCanvas *canvas;
|
LdDiagramView *view;
|
||||||
|
|
||||||
GtkWidget *statusbar;
|
GtkWidget *statusbar;
|
||||||
guint statusbar_symbol_context_id;
|
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,
|
static void action_set_sensitive (LdWindowMain *self, const gchar *name,
|
||||||
gboolean sensitive);
|
gboolean sensitive);
|
||||||
|
|
||||||
static void on_canvas_zoom_changed (LdCanvas *canvas,
|
static void on_view_zoom_changed (LdDiagramView *view,
|
||||||
GParamSpec *pspec, LdWindowMain *self);
|
GParamSpec *pspec, LdWindowMain *self);
|
||||||
|
|
||||||
static void on_diagram_changed (LdDiagram *diagram, 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 gchar *diagram_get_name (LdWindowMain *self);
|
||||||
static void diagram_set_filename (LdWindowMain *self, gchar *filename);
|
static void diagram_set_filename (LdWindowMain *self, gchar *filename);
|
||||||
static void diagram_new (LdWindowMain *self);
|
static void diagram_new (LdWindowMain *self);
|
||||||
|
static gboolean diagram_open (LdWindowMain *self, const gchar *filename);
|
||||||
static void diagram_save (LdWindowMain *self);
|
static void diagram_save (LdWindowMain *self);
|
||||||
|
|
||||||
static GtkFileFilter *diagram_get_file_filter (void);
|
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. */
|
/* Actions for menus, toolbars, accelerators. */
|
||||||
static GtkActionEntry wm_action_entries[] =
|
static GtkActionEntry wm_action_entries[] =
|
||||||
{
|
{
|
||||||
{"FileMenu", NULL, Q_("_File"), NULL, NULL, NULL},
|
{"FileMenu", NULL, N_("_File"), NULL, NULL, NULL},
|
||||||
{"New", GTK_STOCK_NEW, Q_("_New"), "<Ctrl>N",
|
{"New", GTK_STOCK_NEW, N_("_New"), "<Ctrl>N",
|
||||||
Q_("Create a new diagram"),
|
N_("Create a new diagram"),
|
||||||
G_CALLBACK (on_action_new)},
|
G_CALLBACK (on_action_new)},
|
||||||
{"Open", GTK_STOCK_OPEN, Q_("_Open..."), "<Ctrl>O",
|
{"Open", GTK_STOCK_OPEN, N_("_Open..."), "<Ctrl>O",
|
||||||
Q_("Open a diagram"),
|
N_("Open a diagram"),
|
||||||
G_CALLBACK (on_action_open)},
|
G_CALLBACK (on_action_open)},
|
||||||
{"Save", GTK_STOCK_SAVE, Q_("_Save"), "<Ctrl>S",
|
{"Save", GTK_STOCK_SAVE, N_("_Save"), "<Ctrl>S",
|
||||||
Q_("Save the current diagram"),
|
N_("Save the current diagram"),
|
||||||
G_CALLBACK (on_action_save)},
|
G_CALLBACK (on_action_save)},
|
||||||
{"SaveAs", GTK_STOCK_SAVE_AS, Q_("Save _As..."), "<Shift><Ctrl>S",
|
{"SaveAs", GTK_STOCK_SAVE_AS, N_("Save _As..."), "<Shift><Ctrl>S",
|
||||||
Q_("Save the current diagram with another name"),
|
N_("Save the current diagram with another name"),
|
||||||
G_CALLBACK (on_action_save_as)},
|
G_CALLBACK (on_action_save_as)},
|
||||||
/*
|
/*
|
||||||
* {"Export", NULL, Q_("_Export"), NULL,
|
* {"Export", NULL, N_("_Export"), NULL,
|
||||||
* Q_("Export the diagram"),
|
* N_("Export the diagram"),
|
||||||
* NULL},
|
* NULL},
|
||||||
*/
|
*/
|
||||||
{"Quit", GTK_STOCK_QUIT, Q_("_Quit"), "<Ctrl>Q",
|
{"Quit", GTK_STOCK_QUIT, N_("_Quit"), "<Ctrl>Q",
|
||||||
Q_("Quit the application"),
|
N_("Quit the application"),
|
||||||
G_CALLBACK (on_action_quit)},
|
G_CALLBACK (on_action_quit)},
|
||||||
|
|
||||||
{"EditMenu", NULL, Q_("_Edit"), NULL, NULL, NULL},
|
{"EditMenu", NULL, N_("_Edit"), NULL, NULL, NULL},
|
||||||
{"Undo", GTK_STOCK_UNDO, Q_("_Undo"), "<Ctrl>Z",
|
{"Undo", GTK_STOCK_UNDO, N_("_Undo"), "<Ctrl>Z",
|
||||||
Q_("Undo the last action"),
|
N_("Undo the last action"),
|
||||||
G_CALLBACK (on_action_undo)},
|
G_CALLBACK (on_action_undo)},
|
||||||
{"Redo", GTK_STOCK_REDO, Q_("_Redo"), "<Shift><Ctrl>Z",
|
{"Redo", GTK_STOCK_REDO, N_("_Redo"), "<Shift><Ctrl>Z",
|
||||||
Q_("Redo the last undone action"),
|
N_("Redo the last undone action"),
|
||||||
G_CALLBACK (on_action_redo)},
|
G_CALLBACK (on_action_redo)},
|
||||||
/*
|
/*
|
||||||
* {"Cut", GTK_STOCK_CUT, Q_("Cu_t"), "<Ctrl>X", NULL, NULL},
|
* {"Cut", GTK_STOCK_CUT, N_("Cu_t"), "<Ctrl>X", NULL, NULL},
|
||||||
* {"Copy", GTK_STOCK_COPY, Q_("_Copy"), "<Ctrl>C", NULL, NULL},
|
* {"Copy", GTK_STOCK_COPY, N_("_Copy"), "<Ctrl>C", NULL, NULL},
|
||||||
* {"Paste", GTK_STOCK_PASTE, Q_("_Paste"), "<Ctrl>V", NULL, NULL},
|
* {"Paste", GTK_STOCK_PASTE, N_("_Paste"), "<Ctrl>V", NULL, NULL},
|
||||||
*/
|
*/
|
||||||
{"Delete", GTK_STOCK_DELETE, Q_("_Delete"), "Delete",
|
{"Delete", GTK_STOCK_DELETE, N_("_Delete"), "Delete",
|
||||||
Q_("Delete the contents of the selection"),
|
N_("Delete the contents of the selection"),
|
||||||
G_CALLBACK (on_action_delete)},
|
G_CALLBACK (on_action_delete)},
|
||||||
{"SelectAll", GTK_STOCK_SELECT_ALL, Q_("Select _All"), "<Ctrl>A",
|
{"SelectAll", GTK_STOCK_SELECT_ALL, N_("Select _All"), "<Ctrl>A",
|
||||||
Q_("Select all objects in the diagram"),
|
N_("Select all objects in the diagram"),
|
||||||
G_CALLBACK (on_action_select_all)},
|
G_CALLBACK (on_action_select_all)},
|
||||||
|
|
||||||
{"ViewMenu", NULL, Q_("_View"), NULL, NULL, NULL},
|
{"ViewMenu", NULL, N_("_View"), NULL, NULL, NULL},
|
||||||
{"ZoomIn", GTK_STOCK_ZOOM_IN, Q_("_Zoom In"), "<Ctrl>plus",
|
{"ZoomIn", GTK_STOCK_ZOOM_IN, N_("_Zoom In"), "<Ctrl>plus",
|
||||||
Q_("Zoom into the diagram"),
|
N_("Zoom into the diagram"),
|
||||||
G_CALLBACK (on_action_zoom_in)},
|
G_CALLBACK (on_action_zoom_in)},
|
||||||
{"ZoomOut", GTK_STOCK_ZOOM_OUT, Q_("Zoom _Out"), "<Ctrl>minus",
|
{"ZoomOut", GTK_STOCK_ZOOM_OUT, N_("Zoom _Out"), "<Ctrl>minus",
|
||||||
Q_("Zoom out of the diagram"),
|
N_("Zoom out of the diagram"),
|
||||||
G_CALLBACK (on_action_zoom_out)},
|
G_CALLBACK (on_action_zoom_out)},
|
||||||
{"NormalSize", GTK_STOCK_ZOOM_100, Q_("_Normal Size"), "<Ctrl>0",
|
{"NormalSize", GTK_STOCK_ZOOM_100, N_("_Normal Size"), "<Ctrl>0",
|
||||||
Q_("Reset zoom level back to the default"),
|
N_("Reset zoom level back to the default"),
|
||||||
G_CALLBACK (on_action_normal_size)},
|
G_CALLBACK (on_action_normal_size)},
|
||||||
|
|
||||||
{"HelpMenu", NULL, Q_("_Help"), NULL, NULL, NULL},
|
{"HelpMenu", NULL, N_("_Help"), NULL, NULL, NULL},
|
||||||
{"About", GTK_STOCK_ABOUT, Q_("_About"), NULL,
|
{"About", GTK_STOCK_ABOUT, N_("_About"), NULL,
|
||||||
Q_("Show a dialog about this application"),
|
N_("Show a dialog about this application"),
|
||||||
G_CALLBACK (on_action_about)}
|
G_CALLBACK (on_action_about)}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -173,13 +174,20 @@ static GtkActionEntry wm_action_entries[] =
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* ld_window_main_new:
|
* ld_window_main_new:
|
||||||
|
* @filename: (allow-none): a file to open.
|
||||||
*
|
*
|
||||||
* Create an instance.
|
* Create an instance.
|
||||||
*/
|
*/
|
||||||
GtkWidget *
|
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);
|
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);
|
G_CALLBACK (on_ui_proxy_disconnected), self);
|
||||||
|
|
||||||
priv->action_group = gtk_action_group_new ("MainActions");
|
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,
|
gtk_action_group_add_actions (priv->action_group, wm_action_entries,
|
||||||
G_N_ELEMENTS (wm_action_entries), self);
|
G_N_ELEMENTS (wm_action_entries), self);
|
||||||
gtk_ui_manager_insert_action_group (priv->ui_manager,
|
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);
|
(priv->ui_manager, PROJECT_SHARE_DIR "gui/window-main.ui", &error);
|
||||||
if (error)
|
if (error)
|
||||||
{
|
{
|
||||||
g_message (_("Building UI failed: %s"), error->message);
|
g_message ("building UI failed: %s", error->message);
|
||||||
g_error_free (error);
|
g_error_free (error);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -239,10 +249,12 @@ ld_window_main_init (LdWindowMain *self)
|
|||||||
gtk_toolbar_set_orientation (GTK_TOOLBAR (priv->library_toolbar),
|
gtk_toolbar_set_orientation (GTK_TOOLBAR (priv->library_toolbar),
|
||||||
GTK_ORIENTATION_VERTICAL);
|
GTK_ORIENTATION_VERTICAL);
|
||||||
|
|
||||||
priv->canvas = LD_CANVAS (ld_canvas_new ());
|
priv->view = LD_DIAGRAM_VIEW (ld_diagram_view_new ());
|
||||||
priv->canvas_window = gtk_scrolled_window_new (NULL, NULL);
|
priv->scrolled_window = gtk_scrolled_window_new (NULL, NULL);
|
||||||
gtk_container_add (GTK_CONTAINER (priv->canvas_window),
|
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (priv->scrolled_window),
|
||||||
GTK_WIDGET (priv->canvas));
|
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 = gtk_statusbar_new ();
|
||||||
priv->statusbar_menu_context_id = gtk_statusbar_get_context_id
|
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);
|
priv->hbox = gtk_hbox_new (FALSE, 0);
|
||||||
gtk_box_pack_start (GTK_BOX (priv->hbox), priv->library_toolbar,
|
gtk_box_pack_start (GTK_BOX (priv->hbox), priv->library_toolbar,
|
||||||
FALSE, FALSE, 0);
|
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);
|
TRUE, TRUE, 0);
|
||||||
|
|
||||||
priv->vbox = gtk_vbox_new (FALSE, 0);
|
priv->vbox = gtk_vbox_new (FALSE, 0);
|
||||||
@@ -289,16 +301,16 @@ ld_window_main_init (LdWindowMain *self)
|
|||||||
priv->library = ld_library_new ();
|
priv->library = ld_library_new ();
|
||||||
ld_library_load (priv->library, PROJECT_SHARE_DIR "library");
|
ld_library_load (priv->library, PROJECT_SHARE_DIR "library");
|
||||||
|
|
||||||
ld_canvas_set_diagram (priv->canvas, priv->diagram);
|
ld_diagram_view_set_diagram (priv->view, priv->diagram);
|
||||||
ld_canvas_set_library (priv->canvas, priv->library);
|
ld_diagram_view_set_library (priv->view, priv->library);
|
||||||
|
|
||||||
g_signal_connect (priv->canvas, "notify::zoom",
|
g_signal_connect (priv->view, "notify::zoom",
|
||||||
G_CALLBACK (on_canvas_zoom_changed), self);
|
G_CALLBACK (on_view_zoom_changed), self);
|
||||||
|
|
||||||
ld_library_toolbar_set_library (LD_LIBRARY_TOOLBAR (priv->library_toolbar),
|
ld_library_toolbar_set_library (LD_LIBRARY_TOOLBAR (priv->library_toolbar),
|
||||||
priv->library);
|
priv->library);
|
||||||
ld_library_toolbar_set_canvas (LD_LIBRARY_TOOLBAR (priv->library_toolbar),
|
ld_library_toolbar_set_view (LD_LIBRARY_TOOLBAR (priv->library_toolbar),
|
||||||
priv->canvas);
|
priv->view);
|
||||||
|
|
||||||
g_signal_connect_after (priv->library_toolbar, "symbol-selected",
|
g_signal_connect_after (priv->library_toolbar, "symbol-selected",
|
||||||
G_CALLBACK (on_symbol_selected), self);
|
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, "Delete", FALSE);
|
||||||
action_set_sensitive (self, "NormalSize", 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. */
|
/* Realize the window. */
|
||||||
gtk_widget_show_all (GTK_WIDGET (self));
|
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);
|
g_return_val_if_fail (LD_IS_WINDOW_MAIN (self), NULL);
|
||||||
|
|
||||||
if (self->priv->filename)
|
if (self->priv->filename)
|
||||||
return g_path_get_basename (self->priv->filename);
|
return g_filename_display_basename (self->priv->filename);
|
||||||
else
|
else
|
||||||
return g_strdup (_("Unsaved Diagram"));
|
return g_strdup (_("Unsaved Diagram"));
|
||||||
}
|
}
|
||||||
@@ -519,15 +531,16 @@ diagram_new (LdWindowMain *self)
|
|||||||
{
|
{
|
||||||
g_return_if_fail (LD_IS_WINDOW_MAIN (self));
|
g_return_if_fail (LD_IS_WINDOW_MAIN (self));
|
||||||
|
|
||||||
if (!may_close_diagram (self, "Save the changes to diagram \"%s\" before"
|
if (!may_close_diagram (self, _("Save the changes to diagram \"%s\" before"
|
||||||
" closing it and creating a new one?"))
|
" closing it and creating a new one?")))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ld_diagram_clear (self->priv->diagram);
|
ld_diagram_clear (self->priv->diagram);
|
||||||
ld_diagram_set_modified (self->priv->diagram, FALSE);
|
ld_diagram_set_modified (self->priv->diagram, FALSE);
|
||||||
|
|
||||||
/* TODO: Reset canvas view to the center. */
|
ld_diagram_view_set_x (self->priv->view, 0);
|
||||||
ld_canvas_set_zoom (self->priv->canvas, 1);
|
ld_diagram_view_set_y (self->priv->view, 0);
|
||||||
|
ld_diagram_view_set_zoom (self->priv->view, 1);
|
||||||
|
|
||||||
diagram_set_filename (self, NULL);
|
diagram_set_filename (self, NULL);
|
||||||
}
|
}
|
||||||
@@ -563,10 +576,10 @@ diagram_save (LdWindowMain *self)
|
|||||||
|
|
||||||
message_dialog = gtk_message_dialog_new (GTK_WINDOW (self),
|
message_dialog = gtk_message_dialog_new (GTK_WINDOW (self),
|
||||||
GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
|
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_format_secondary_text
|
||||||
(GTK_MESSAGE_DIALOG (message_dialog),
|
(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_dialog_run (GTK_DIALOG (message_dialog));
|
||||||
gtk_widget_destroy (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:
|
* diagram_get_file_filter:
|
||||||
*
|
*
|
||||||
@@ -588,7 +636,7 @@ diagram_get_file_filter (void)
|
|||||||
GtkFileFilter *filter;
|
GtkFileFilter *filter;
|
||||||
|
|
||||||
filter = gtk_file_filter_new ();
|
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");
|
gtk_file_filter_add_pattern (filter, "*.ldd");
|
||||||
return filter;
|
return filter;
|
||||||
}
|
}
|
||||||
@@ -605,11 +653,11 @@ diagram_show_open_dialog (LdWindowMain *self)
|
|||||||
|
|
||||||
g_return_if_fail (LD_IS_WINDOW_MAIN (self));
|
g_return_if_fail (LD_IS_WINDOW_MAIN (self));
|
||||||
|
|
||||||
if (!may_close_diagram (self, "Save the changes to diagram \"%s\" before"
|
if (!may_close_diagram (self, _("Save the changes to diagram \"%s\" before"
|
||||||
" closing it and opening another one?"))
|
" closing it and opening another one?")))
|
||||||
return;
|
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_FILE_CHOOSER_ACTION_OPEN,
|
||||||
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
|
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
|
||||||
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
|
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)
|
if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
|
||||||
{
|
{
|
||||||
gchar *filename;
|
gchar *filename;
|
||||||
GError *error;
|
|
||||||
|
|
||||||
filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
|
filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
|
||||||
|
diagram_open (self, filename);
|
||||||
error = NULL;
|
g_free (filename);
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
gtk_widget_destroy (dialog);
|
gtk_widget_destroy (dialog);
|
||||||
}
|
}
|
||||||
@@ -663,7 +688,7 @@ diagram_show_save_as_dialog (LdWindowMain *self)
|
|||||||
|
|
||||||
g_return_if_fail (LD_IS_WINDOW_MAIN (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_FILE_CHOOSER_ACTION_SAVE,
|
||||||
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
|
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
|
||||||
GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
|
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)
|
if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
|
||||||
{
|
{
|
||||||
diagram_set_filename (self, gtk_file_chooser_get_filename
|
diagram_set_filename (self,
|
||||||
(GTK_FILE_CHOOSER (dialog)));
|
gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)));
|
||||||
diagram_save (self);
|
diagram_save (self);
|
||||||
}
|
}
|
||||||
gtk_widget_destroy (dialog);
|
gtk_widget_destroy (dialog);
|
||||||
@@ -716,9 +741,9 @@ may_close_diagram (LdWindowMain *self, const gchar *dialog_message)
|
|||||||
dialog_message, name);
|
dialog_message, name);
|
||||||
gtk_message_dialog_format_secondary_text
|
gtk_message_dialog_format_secondary_text
|
||||||
(GTK_MESSAGE_DIALOG (message_dialog),
|
(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),
|
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_CANCEL, GTK_RESPONSE_CANCEL,
|
||||||
GTK_STOCK_SAVE, GTK_RESPONSE_YES,
|
GTK_STOCK_SAVE, GTK_RESPONSE_YES,
|
||||||
NULL);
|
NULL);
|
||||||
@@ -756,7 +781,7 @@ may_quit (LdWindowMain *self)
|
|||||||
g_return_val_if_fail (LD_IS_WINDOW_MAIN (self), TRUE);
|
g_return_val_if_fail (LD_IS_WINDOW_MAIN (self), TRUE);
|
||||||
|
|
||||||
return may_close_diagram (self,
|
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);
|
diagram_symbol = ld_diagram_symbol_new (NULL);
|
||||||
ld_diagram_symbol_set_class (diagram_symbol, klass);
|
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));
|
LD_DIAGRAM_OBJECT (diagram_symbol));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
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",
|
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",
|
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",
|
action_set_sensitive (self, "NormalSize",
|
||||||
ld_canvas_get_zoom (self->priv->canvas) != 1);
|
ld_diagram_view_get_zoom (self->priv->view) != 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -874,17 +900,17 @@ on_action_select_all (GtkAction *action, LdWindowMain *self)
|
|||||||
static void
|
static void
|
||||||
on_action_zoom_in (GtkAction *action, LdWindowMain *self)
|
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
|
static void
|
||||||
on_action_zoom_out (GtkAction *action, LdWindowMain *self)
|
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
|
static void
|
||||||
on_action_normal_size (GtkAction *action, LdWindowMain *self)
|
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;
|
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
|
G_END_DECLS
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
|
#include <locale.h>
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
@@ -18,25 +19,63 @@
|
|||||||
int
|
int
|
||||||
main (int argc, char *argv[])
|
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, "");
|
setlocale (LC_ALL, "");
|
||||||
|
|
||||||
bindtextdomain (GETTEXT_DOMAIN, GETTEXT_DIRNAME);
|
bindtextdomain (GETTEXT_DOMAIN, GETTEXT_DIRNAME);
|
||||||
bind_textdomain_codeset (GETTEXT_DOMAIN, "UTF-8");
|
bind_textdomain_codeset (GETTEXT_DOMAIN, "UTF-8");
|
||||||
textdomain (GETTEXT_DOMAIN);
|
textdomain (GETTEXT_DOMAIN);
|
||||||
#endif
|
|
||||||
|
|
||||||
/* For custom command line arguments, see:
|
error = NULL;
|
||||||
* http://git.gnome.org/browse/glade3/tree/src/main.c
|
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);
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user