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