Merge with release
This commit is contained in:
commit
6247c1b792
|
@ -26,6 +26,7 @@ obj/
|
|||
uic/
|
||||
rcc/
|
||||
man/
|
||||
build/
|
||||
|
||||
# Ignore Coverity Scan Build Tool
|
||||
cov-int/
|
||||
|
|
|
@ -1,3 +1,96 @@
|
|||
# Version 0.3.1 Released April 24, 2015
|
||||
- [#263] Regression. Union tool doesn't work.
|
||||
- For tool Curve intersect axis fixed wrong calculation point in case with too small scene rect size.
|
||||
- Fixed crash if a seam allowance doesn't contain 0 points.
|
||||
- [#267] Error in the creation of obj files.
|
||||
- QMuParser. Bugfix for Bulkmode: Expressions with like "a=b, b*10" did not compute properly.
|
||||
- QMuParser. Fix for ParserTokenReader::ExtractOperatorToken incorrectly uses ValidInfixOprtChars().
|
||||
- Example of file name in dialog Save Layout appears only after user change format.
|
||||
- Fixed regression with removing loops in seam allowance.
|
||||
- Removed transparent field for a layout png file.
|
||||
|
||||
# Version 0.3.0 Released March 23, 2015
|
||||
- Fixed creation equidistant if points less than 4.
|
||||
- [#203], [#89], [#90] New Layout Editor.
|
||||
- To File/Preferences/Paths added path to export a layout.
|
||||
- [#223] Fixed removing stale lock file on Windows.
|
||||
- [#222], [#204], [#207], [#205], [#212], [#218], [#210], [#219], [#220], [#248] Minor changes in GUI.
|
||||
- [#230] Fixed hangs if curve path has not unique points.
|
||||
- [#196] Fixed crash Detail dialog.
|
||||
- [#208] Vertical bar for tool "Point from X and Y".
|
||||
- Fixed package (.dmg) for Mac OSX.
|
||||
- [#171] Show images for pen styles instead of just names.
|
||||
- [#74] Fold Line in pattern piece. Pattern format updated to version 0.1.3.
|
||||
- [#242] Tool Dialogs: Label at bottom doesn't update for empty lists.
|
||||
- [#217] Bug with mouse cursor.
|
||||
- Dynamic update tool property browser after applying options changes.
|
||||
- [#215] Drag a curve to edit it.
|
||||
- [#184] Delete button "Equal" in dialogs.
|
||||
- [#183] Message "Changes saved" in dialog Increments.
|
||||
- [#234] Fixed problem with formula editing in vtooloptionspropertybrowser and "," decimal separator .
|
||||
- Continue improving log system.
|
||||
- Close property browser when reset window.
|
||||
- [#241] Repeat last used tool.
|
||||
- [#253] Show detail information about standard measurements file in dialog Increments.
|
||||
- [#249] Set default base height and base size according base values in standard measurements file.
|
||||
- New localization language - Spanish.
|
||||
- Fixed bug with About Valentina dialog on Windows.
|
||||
- [#235] Delete point without confirmation / configurable.
|
||||
- Version for Mac OS support export to .ps, .eps.
|
||||
- New localization language - Finnish.
|
||||
|
||||
# Version 0.2.9 Released January 1, 2015
|
||||
- Export a layout to Wavefront .obj format.
|
||||
- New validation rules for point labels
|
||||
- Export layout in two new formats .ps and .eps.
|
||||
- Fixed support .svg format.
|
||||
- Support individual measurements.
|
||||
- Support mm, cm and inch units in patterns.
|
||||
- New math parser.
|
||||
- Support language independent measurements.
|
||||
- Apply button in tool dialog.
|
||||
- Multi lines formula fields.
|
||||
- Recent file list.
|
||||
- Support local separator for numbers in formulas.
|
||||
- Support Clang.
|
||||
- Support Undo/Redo.
|
||||
- Optimization parsing pattern file.
|
||||
- New logo.
|
||||
- Support zoom to original scaling and Zoom Fit Best.
|
||||
- Use Zoom Fit Best for pattern piece after selection.
|
||||
- Open patterns from list of command line arguments. File association with pattern file format (.val).
|
||||
- Additional chackings in tool dialog.
|
||||
- Visualization for draw tools.
|
||||
- Allow user fix broken formula.
|
||||
- All point labels must be unique.
|
||||
- Support gradation options (only for standard measurements).
|
||||
- Fix special line that join point and label.
|
||||
- Show path direction when selected.
|
||||
- Show tools buttons in two columns instead of three.
|
||||
- Show cursor if item can be moved.
|
||||
- Second way edit tool property.
|
||||
- Zoom under mouse pointer.
|
||||
- Auto creation label.
|
||||
- Show in tooltip parser error message.
|
||||
- Show curve foot if only curve is selected.
|
||||
- Option hide unused measurements in list.
|
||||
- New tool line intersect axis.
|
||||
- New tool arc(curve) intersect axis.
|
||||
- Save and restore last window position and size.
|
||||
- User manual.
|
||||
- Propose reopen files after crash.
|
||||
- Use form layout in tool dialog.
|
||||
- Support delete action if you select tool from label.
|
||||
- Button "Stop using tool".
|
||||
- Value for angle also can be formula.
|
||||
- Fixed disabling GUI after error.
|
||||
- Don't set scroll bars to minimum after creation layout.
|
||||
- Menu Help->Report Bug...
|
||||
- Option "Standard table" in dialog changed to better "Measurements".
|
||||
- Fixed tool cut curved path.
|
||||
- Menu Window->Close window.
|
||||
- Support creation and sending crash reports. Only for Windows and Mingw compiler.
|
||||
|
||||
# Version 0.2.2 Released February 11, 2014
|
||||
- Macros Q_DECL_NOEXCEPT_EXPR don't work in gcc 4.6.
|
||||
- Change in build dependency for deb package. Add new architecture for deb file.
|
||||
|
@ -5,7 +98,9 @@
|
|||
- Fix valentina.desktop.
|
||||
|
||||
# Version 0.2.1 Released December 8, 2013
|
||||
- Problem with compilation in console in Ubuntu.
|
||||
- Problem with compilation in console on Ubuntu.
|
||||
- Problem with compilation on windows with msvc.
|
||||
|
||||
# Version 0.2.0 Released October 29, 2013
|
||||
- First public release.
|
||||
|
||||
|
|
192
README.txt
192
README.txt
|
@ -1,96 +1,96 @@
|
|||
Pattern making program
|
||||
Author Roman Telezhynskyi <dismine(at)gmail.com>
|
||||
Copyright (C) 2013-2015 Valentina project
|
||||
Valentina Web page: http://www.valentina-project.org/
|
||||
Valentina user manual https://bitbucket.org/dismine/valentina/wiki/manual/Content
|
||||
Valentina main repository: https://bitbucket.org/dismine/valentina/overview
|
||||
Valentina mail list (forum) https://groups.google.com/forum/#!forum/valentina-project-list
|
||||
PPA for Ubuntu (develop): https://launchpad.net/~dismine/+archive/valentina-dev
|
||||
Help translate https://www.transifex.com/organization/valentina
|
||||
|
||||
Valentina
|
||||
==========
|
||||
Valentina is a cross-platform patternmaking program which allows designers
|
||||
to create and model patterns of clothing. This software allows pattern
|
||||
creation, using either standard sizing tables or an individual’s set of
|
||||
measurements. It blends new technologies with traditional methods to create
|
||||
a unique pattern making tool.
|
||||
|
||||
Supported Platforms
|
||||
===================
|
||||
The standalone binary packages support the following platforms:
|
||||
|
||||
Windows XP SP2 (32-bit) or later
|
||||
Ubuntu Linux 14.04 (32-bit/64-bit) or later
|
||||
OpenSUSE 13.02 (32-bit/64-bit) or later
|
||||
Fedora 20 (32-bit/64-bit) or later
|
||||
Mac OS X 10.7 (64-bit) or later
|
||||
|
||||
Building the sources requires Qt 5.2.0 or later.
|
||||
|
||||
Compiling Valentina
|
||||
====================
|
||||
Prerequisites:
|
||||
* Qt 5.2.0 or later (On Unix development packages needed)
|
||||
* mercurial (only for working with repository)
|
||||
* On Unix:
|
||||
- ccache
|
||||
- g++ (at least GCC 4.6 is needed and GCC 4.8 is recommended) or
|
||||
clang (clang 3.4 recommended)
|
||||
- xpdf package (tool pdftops).
|
||||
* On Windows:
|
||||
- MinGW
|
||||
- Xpdf is an open source viewer for Portable Document Format (PDF)
|
||||
files. Website http://www.foolabs.com/xpdf/. Put tool pdftops.exe
|
||||
in the same directory with Valentina's binary file.
|
||||
|
||||
The installed toolchains have to match the one Qt was compiled with.
|
||||
|
||||
You can build Valentina with
|
||||
|
||||
cd $SOURCE_DIRECTORY
|
||||
qmake Valentina.pro -r (or qmake-qt5, depending on your platform)
|
||||
make (or mingw32-make or nmake or jom, depending on your platform)
|
||||
|
||||
Note:In order to build and use Valentina, the PATH environment variable
|
||||
needs to be extended:
|
||||
|
||||
PATH - to locate qmake, moc and other Qt tools
|
||||
This is done by adding c:\Qt\%VERSION%\bin to the PATH variable.
|
||||
|
||||
For newer versions of Windows, PATH can be extended through the
|
||||
Control Panel|System|Advanced|Environment variables menu.
|
||||
|
||||
You may also need to ensure that the locations of your compiler and
|
||||
other build tools are listed in the PATH variable. This will depend on
|
||||
your choice of software development environment.
|
||||
|
||||
Unix systems:
|
||||
Default prefix for command "make install" is /usr. For using another
|
||||
prefix build with qmake command:
|
||||
|
||||
qmake PREFIX=/usr/local PREFIX_LIB=/usr/lib/i386-linux-gnu Valentina.pro -r
|
||||
|
||||
where /usr/local is a new prefix for installation binary files and /usr/lib/i386-linux-gnu is new prefix for install libraries.
|
||||
|
||||
More about creation installers read in articles:
|
||||
* How create Windows installer - https://bitbucket.org/dismine/valentina/wiki/developers/Creation_Windows_installer
|
||||
* How create debian package - https://bitbucket.org/dismine/valentina/wiki/developers/Creation_deb_package
|
||||
|
||||
LICENSING
|
||||
==========
|
||||
Valentina is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Valentina is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
See LICENSE_GPL.txt file for further information
|
||||
|
||||
Other components released under:
|
||||
* QMuParser - BSD license
|
||||
* VPropertyExplorer - LGPLv2.1 license
|
||||
Pattern making program
|
||||
Author Roman Telezhynskyi <dismine(at)gmail.com>
|
||||
Copyright (C) 2013-2015 Valentina project
|
||||
Valentina Web page: http://www.valentina-project.org/
|
||||
Valentina user manual https://bitbucket.org/dismine/valentina/wiki/manual/Content
|
||||
Valentina main repository: https://bitbucket.org/dismine/valentina/overview
|
||||
Valentina mail list (forum) https://groups.google.com/forum/#!forum/valentina-project-list
|
||||
PPA for Ubuntu (develop): https://launchpad.net/~dismine/+archive/valentina-dev
|
||||
Help translate https://www.transifex.com/organization/valentina
|
||||
|
||||
Valentina
|
||||
==========
|
||||
Valentina is a cross-platform patternmaking program which allows designers
|
||||
to create and model patterns of clothing. This software allows pattern
|
||||
creation, using either standard sizing tables or an individual’s set of
|
||||
measurements. It blends new technologies with traditional methods to create
|
||||
a unique pattern making tool.
|
||||
|
||||
Supported Platforms
|
||||
===================
|
||||
The standalone binary packages support the following platforms:
|
||||
|
||||
Windows XP SP2 (32-bit) or later
|
||||
Ubuntu Linux 14.04 (32-bit/64-bit) or later
|
||||
OpenSUSE 13.02 (32-bit/64-bit) or later
|
||||
Fedora 20 (32-bit/64-bit) or later
|
||||
Mac OS X 10.7 (64-bit) or later
|
||||
|
||||
Building the sources requires Qt 5.2.0 or later.
|
||||
|
||||
Compiling Valentina
|
||||
====================
|
||||
Prerequisites:
|
||||
* Qt 5.2.0 or later (On Unix development packages needed)
|
||||
* mercurial (only for working with repository)
|
||||
* On Unix:
|
||||
- ccache
|
||||
- g++ (at least GCC 4.6 is needed and GCC 4.8 is recommended) or
|
||||
clang (clang 3.4 recommended)
|
||||
- xpdf package (tool pdftops).
|
||||
* On Windows:
|
||||
- MinGW
|
||||
- Xpdf is an open source viewer for Portable Document Format (PDF)
|
||||
files. Website http://www.foolabs.com/xpdf/. Put tool pdftops.exe
|
||||
in the same directory with Valentina's binary file.
|
||||
|
||||
The installed toolchains have to match the one Qt was compiled with.
|
||||
|
||||
You can build Valentina with
|
||||
|
||||
cd $SOURCE_DIRECTORY
|
||||
qmake Valentina.pro -r (or qmake-qt5, depending on your platform)
|
||||
make (or mingw32-make or nmake or jom, depending on your platform)
|
||||
|
||||
Note:In order to build and use Valentina, the PATH environment variable
|
||||
needs to be extended:
|
||||
|
||||
PATH - to locate qmake, moc and other Qt tools
|
||||
This is done by adding c:\Qt\%VERSION%\bin to the PATH variable.
|
||||
|
||||
For newer versions of Windows, PATH can be extended through the
|
||||
Control Panel|System|Advanced|Environment variables menu.
|
||||
|
||||
You may also need to ensure that the locations of your compiler and
|
||||
other build tools are listed in the PATH variable. This will depend on
|
||||
your choice of software development environment.
|
||||
|
||||
Unix systems:
|
||||
Default prefix for command "make install" is /usr. For using another
|
||||
prefix build with qmake command:
|
||||
|
||||
qmake PREFIX=/usr/local PREFIX_LIB=/usr/lib/i386-linux-gnu Valentina.pro -r
|
||||
|
||||
where /usr/local is a new prefix for installation binary files and /usr/lib/i386-linux-gnu is new prefix for install libraries.
|
||||
|
||||
More about creation installers read in articles:
|
||||
* How create Windows installer - https://bitbucket.org/dismine/valentina/wiki/developers/Creation_Windows_installer
|
||||
* How create debian package - https://bitbucket.org/dismine/valentina/wiki/developers/Creation_deb_package
|
||||
|
||||
LICENSING
|
||||
==========
|
||||
Valentina is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Valentina is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
See LICENSE_GPL.txt file for further information
|
||||
|
||||
Other components released under:
|
||||
* QMuParser - BSD license
|
||||
* VPropertyExplorer - LGPLv2.1 license
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
win32{
|
||||
unset(QMAKE_COPY)
|
||||
# Because "copy" doesn't support files that containe plus sign (+) in name we will use xcopy instead.
|
||||
QMAKE_COPY = xcopy /y
|
||||
}
|
||||
|
||||
defineTest(minQtVersion) {
|
||||
maj = $$1
|
||||
min = $$2
|
||||
|
|
2
dist/debian/changelog
vendored
2
dist/debian/changelog
vendored
|
@ -1,4 +1,4 @@
|
|||
valentina (0.3.0) trusty; urgency=low
|
||||
valentina (0.3.1) trusty; urgency=low
|
||||
|
||||
* Auto build.
|
||||
|
||||
|
|
BIN
dist/macx/bin64/pdftops
vendored
Executable file
BIN
dist/macx/bin64/pdftops
vendored
Executable file
Binary file not shown.
2
dist/rpm/_service
vendored
2
dist/rpm/_service
vendored
|
@ -1,7 +1,7 @@
|
|||
<services>
|
||||
<service name="tar_scm">
|
||||
<param name="url">https://github.com/dismine/Valentina.git</param>
|
||||
<param name="versionprefix">0.3.0</param>
|
||||
<param name="versionprefix">0.3.1</param>
|
||||
<param name="filename">valentina</param>
|
||||
<param name="scm">git</param>
|
||||
<param name="versionformat">%at</param>
|
||||
|
|
41
dist/rpm/valentina.spec
vendored
41
dist/rpm/valentina.spec
vendored
|
@ -1,5 +1,9 @@
|
|||
Name:valentina
|
||||
|
||||
Requires(post): /sbin/ldconfig
|
||||
Requires(postun): /sbin/ldconfig
|
||||
BuildRequires: ccache
|
||||
|
||||
# Fedora specifics
|
||||
%if 0%{?fedora_version} > 0 || 0%{?rhel_version} > 0 || 0%{?centos_version} > 0
|
||||
BuildRequires: pkgconfig(Qt5Core)
|
||||
|
@ -11,7 +15,10 @@ BuildRequires: pkgconfig(Qt5Xml)
|
|||
BuildRequires: qt5-qtxmlpatterns-devel >= 5.2.0
|
||||
BuildRequires: qt5-qtsvg-devel >= 5.2.0
|
||||
BuildRequires: qt5-qttools-devel >= 5.2.0
|
||||
BuildRequires: ccache
|
||||
|
||||
Requires: qt5-qtsvg >= 5.2.0
|
||||
Requires: qt5-qtbase-gui >= 5.2.0
|
||||
Requires: qt5-qtxmlpatterns >= 5.2.0
|
||||
%endif
|
||||
|
||||
# SUSE Specifics
|
||||
|
@ -21,21 +28,31 @@ BuildRequires: libqt5-qttools
|
|||
BuildRequires: libQt5Svg-devel
|
||||
BuildRequires: libqt5-qtxmlpatterns-devel
|
||||
BuildRequires: libqt5-linguist-devel
|
||||
BuildRequires: ccache
|
||||
BuildRequires: update-desktop-files
|
||||
%endif
|
||||
|
||||
Version: 0.3.0
|
||||
Requires: poppler-utils
|
||||
|
||||
Version: 0.3.1
|
||||
Release: 0
|
||||
URL: https://bitbucket.org/dismine/valentina
|
||||
License: GPL-3.0+
|
||||
Source0: %{name}-%{version}.tar
|
||||
Requires: poppler-utils
|
||||
Group: Graphics
|
||||
Summary: Pattern Making Application
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
Packager: Roman Telezhinskyi <dismine@gmail.com>
|
||||
|
||||
# Disables debug packages and stripping of binaries:
|
||||
%global _enable_debug_package 0
|
||||
%global __debug_install_post %{nil}
|
||||
%global debug_package %{nil}
|
||||
%if 0%{?suse_version} >= 1320
|
||||
%global suse_insert_debug_package %{nil}
|
||||
%global _suse_insert_debug_package %{nil}
|
||||
%global _suse_insert_debug_package_seen %{nil}
|
||||
%endif
|
||||
|
||||
%description
|
||||
Valentina is a cross-platform patternmaking program which allows designers
|
||||
to create and model patterns of clothing. This software allows pattern
|
||||
|
@ -55,6 +72,7 @@ qmake-qt5 PREFIX=%{buildroot}%{_prefix} Valentina.pro -r
|
|||
%{__make} %{?jobs:-j %jobs}
|
||||
|
||||
%install
|
||||
export NO_DEBUGINFO_STRIP_DEBUG=true
|
||||
%{__make} install
|
||||
gzip -9c dist/debian/%{name}.1 > dist/debian/%{name}.1.gz &&
|
||||
%{__install} -Dm 644 dist/debian/%{name}.1.gz %{buildroot}%{_mandir}/man1/%{name}.1.gz
|
||||
|
@ -63,13 +81,19 @@ gzip -9c dist/debian/%{name}.1 > dist/debian/%{name}.1.gz &&
|
|||
%suse_update_desktop_file -r %{name} VectorGraphics
|
||||
%endif
|
||||
|
||||
%post -p /sbin/ldconfig
|
||||
|
||||
%postun -p /sbin/ldconfig
|
||||
|
||||
%files
|
||||
%defattr(-,root,root,-)
|
||||
%doc README.txt LICENSE_GPL.txt
|
||||
%doc %{_mandir}/man1/%{name}.1.gz
|
||||
%{_bindir}/*
|
||||
%{_libdir}/*
|
||||
%{_bindir}/valentina
|
||||
%{_libdir}/libvpropertyexplorer.so
|
||||
%{_libdir}/libvpropertyexplorer.so.*
|
||||
%{_libdir}/libqmuparser.so
|
||||
%{_libdir}/libqmuparser.so.*
|
||||
%{_datadir}/applications/%{name}.desktop
|
||||
%{_datadir}/pixmaps/*
|
||||
%dir %{_datadir}/%{name}
|
||||
|
@ -82,13 +106,8 @@ gzip -9c dist/debian/%{name}.1 > dist/debian/%{name}.1.gz &&
|
|||
%clean
|
||||
[ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot}
|
||||
|
||||
%post
|
||||
ldconfig
|
||||
|
||||
|
||||
%changelog
|
||||
* Mon Dec 22 2014 Roman Telezhinskyi
|
||||
- Initial build
|
||||
|
||||
|
||||
|
||||
|
|
BIN
dist/win/curl.exe
vendored
Normal file
BIN
dist/win/curl.exe
vendored
Normal file
Binary file not shown.
BIN
dist/win/dbghelp.dll
vendored
Normal file
BIN
dist/win/dbghelp.dll
vendored
Normal file
Binary file not shown.
BIN
dist/win/exchndl.dll
vendored
Executable file
BIN
dist/win/exchndl.dll
vendored
Executable file
Binary file not shown.
BIN
dist/win/mgwhelp.dll
vendored
Executable file
BIN
dist/win/mgwhelp.dll
vendored
Executable file
Binary file not shown.
BIN
dist/win/pdftops.exe
vendored
Normal file
BIN
dist/win/pdftops.exe
vendored
Normal file
Binary file not shown.
BIN
dist/win/symsrv.dll
vendored
Normal file
BIN
dist/win/symsrv.dll
vendored
Normal file
Binary file not shown.
1
dist/win/symsrv.yes
vendored
Normal file
1
dist/win/symsrv.yes
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
|
BIN
dist/win/valentina.ico
vendored
Normal file
BIN
dist/win/valentina.ico
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 31 KiB |
|
@ -1506,10 +1506,6 @@
|
|||
<source>Creation a layout</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>Finding best position for worpieces. Please, waite.</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Couldn't prepare data for creation layout</source>
|
||||
<translation type="unfinished"></translation>
|
||||
|
@ -1526,6 +1522,10 @@
|
|||
<source>Several workpieces left not arranged, but none of them match for paper</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>Finding best position for worpieces. Please, wait.</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DialogLayoutSettings</name>
|
||||
|
@ -2563,26 +2563,34 @@
|
|||
<source><html><head/><body><p>Do you really want union details?</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select first point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select second point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select another second point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select detail</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Union tool</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a first point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Workpiece should have at least two points and three objects</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a second point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a unique point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a detail</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a point on edge</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Functions</name>
|
||||
|
|
|
@ -1506,10 +1506,6 @@
|
|||
<source>Creation a layout</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>Finding best position for worpieces. Please, waite.</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Couldn't prepare data for creation layout</source>
|
||||
<translation type="unfinished"></translation>
|
||||
|
@ -1526,6 +1522,10 @@
|
|||
<source>Several workpieces left not arranged, but none of them match for paper</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>Finding best position for worpieces. Please, wait.</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DialogLayoutSettings</name>
|
||||
|
@ -2563,26 +2563,34 @@
|
|||
<source><html><head/><body><p>Do you really want union details?</p></body></html></source>
|
||||
<translation><html><head/><body><p>Opravdu chcete sjednotit detaily?</p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select first point</source>
|
||||
<translation>Vybrat první bod</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select second point</source>
|
||||
<translation>Vybrat druhý bod</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select another second point</source>
|
||||
<translation>Vybrat jiný druhý bod</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select detail</source>
|
||||
<translation>Vybrat detail</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Union tool</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a first point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Workpiece should have at least two points and three objects</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a second point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a unique point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a detail</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a point on edge</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Functions</name>
|
||||
|
@ -2807,7 +2815,7 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>&Pattern piece</source>
|
||||
<translation>&Díl střihu</translation>
|
||||
<translation>&Střih</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Measurements</source>
|
||||
|
|
|
@ -1506,10 +1506,6 @@
|
|||
<source>Creation a layout</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>Finding best position for worpieces. Please, waite.</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Couldn't prepare data for creation layout</source>
|
||||
<translation type="unfinished"></translation>
|
||||
|
@ -1526,6 +1522,10 @@
|
|||
<source>Several workpieces left not arranged, but none of them match for paper</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>Finding best position for worpieces. Please, wait.</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DialogLayoutSettings</name>
|
||||
|
@ -2563,26 +2563,34 @@
|
|||
<source><html><head/><body><p>Do you really want union details?</p></body></html></source>
|
||||
<translation><html><head/><body><p>Soll die Details wirklich vereinigt werden?</p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select first point</source>
|
||||
<translation>Ersten Punkt auswählen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select second point</source>
|
||||
<translation>Zweiten Punkt auswählen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select another second point</source>
|
||||
<translation>Einen anderen zweiten Punkt auswählen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select detail</source>
|
||||
<translation>Detail auswählen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Union tool</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a first point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Workpiece should have at least two points and three objects</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a second point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a unique point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a detail</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a point on edge</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Functions</name>
|
||||
|
@ -5876,14 +5884,6 @@ Sollen die Änderungen gespeichert werden?</translation>
|
|||
</context>
|
||||
<context>
|
||||
<name>VAbstractTool</name>
|
||||
<message>
|
||||
<source>Confirm the deletion.</source>
|
||||
<translation type="vanished">Löschen bestätigen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want delete?</source>
|
||||
<translation type="vanished">Wirklich löschen?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>black</source>
|
||||
<translation type="unfinished"></translation>
|
||||
|
|
|
@ -195,11 +195,11 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>Pattern Editing</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Editando Patrón</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Confirm item deletion</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Confrimar la eliminacion del objeto</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -1508,7 +1508,7 @@
|
|||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>Finding best position for worpieces. Please, waite.</p></body></html></source>
|
||||
<translation><html><head/><body><p>Encontrar la mejor posición para las piezas de trabajo. Por favor, espere.</p></body></html></translation>
|
||||
<translation type="vanished"><html><head/><body><p>Encontrar la mejor posición para las piezas de trabajo. Por favor, espere.</p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Couldn't prepare data for creation layout</source>
|
||||
|
@ -1526,6 +1526,10 @@
|
|||
<source>Several workpieces left not arranged, but none of them match for paper</source>
|
||||
<translation>Piezas de trabajo no están ordenadas, y no coinciden con el papel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>Finding best position for worpieces. Please, wait.</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DialogLayoutSettings</name>
|
||||
|
@ -2563,26 +2567,34 @@
|
|||
<source><html><head/><body><p>Do you really want union details?</p></body></html></source>
|
||||
<translation><html><head/><body><p>Realmente quiere detalles de la unión?</p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select first point</source>
|
||||
<translation>Selección primer punto </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select second point</source>
|
||||
<translation>Selección segundo punto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select another second point</source>
|
||||
<translation>Selección otro segundo punto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select detail</source>
|
||||
<translation>Selección de detalle</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Union tool</source>
|
||||
<translation>herramienta de unión</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a first point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Workpiece should have at least two points and three objects</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a second point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a unique point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a detail</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a point on edge</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Functions</name>
|
||||
|
@ -3477,17 +3489,17 @@ Quiere guardar los cambios?</translation>
|
|||
<message>
|
||||
<source>bustpoint_to_bustpoint</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>separación_pechos</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>halter_bustpoint_to_bustpoint</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>pecho-dercho_nuca_pecho-izquierdo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>neck_to_bustpoint</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>base_de_cuello_a_pecho</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>crotch_length</source>
|
||||
|
@ -3497,7 +3509,7 @@ Quiere guardar los cambios?</translation>
|
|||
<message>
|
||||
<source>rise_height</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>altura_de_tiro</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>shoulder_drop</source>
|
||||
|
@ -3652,7 +3664,7 @@ Quiere guardar los cambios?</translation>
|
|||
<message>
|
||||
<source>scye_depth</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>profundidad_sisa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>shoulder_and_arm_length</source>
|
||||
|
@ -3827,207 +3839,207 @@ Quiere guardar los cambios?</translation>
|
|||
<message>
|
||||
<source>hips_excluding_protruding_abdomen</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>caderas_excluyendo_abdomen_protuberante</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>girth_foot_instep</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>circunferencia_empeine_pie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>side_waist_to_floor</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>lateral_de_cintura_al_suelo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>front_waist_to_floor</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>frontal_de_cintura_al_suelo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>arc_through_groin_area</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>arco_a_través_de_la_ingle</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>waist_to_plane_seat</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>circunferencia_caderas_nalgas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>neck_to_radial_point</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>cuello_a_punto_radial</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>neck_to_third_finger</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>cuello_tercer_dedo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>neck_to_first_line_chest_circumference</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>del_cuello_a_primera_línea_contorno_de_pecho</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>front_waist_length</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>cintura_delantera</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>arc_through_shoulder_joint</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>arco_a_través_de_la_articulación_del_hombro</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>neck_to_back_line_chest_circumference</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>del_cuello_al_contorno_pecho_en espalda</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>waist_to_neck_side</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>cintura_a_base_cuello_espalda</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>arc_length_upper_body</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>arco_cuerpo_por_base_cuello_lateral</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>chest_width</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>ancho_de_pecho</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>anteroposterior_diameter_hands</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>diametro_anterioposterior_mano</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>height_clavicular_point</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>altura_punto_clavicular</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>height_armhole_slash</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>altura_sisa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>slash_shoulder_height</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>altura_hombro</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>half_girth_neck</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>medio_contorno_cuello</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>half_girth_neck_for_shirts</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Medio_contorno_cuello_para_camisetas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>half_girth_chest_first</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>medio_contorno_pecho_primero</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>half_girth_chest_second</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>medio_contorno_pecho_segundo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>half_girth_chest_third</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>medio_contorno_pecho_tercero</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>half_girth_waist</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>medio_contorno_pecho</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>half_girth_hips_considering_protruding_abdomen</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>medio_contorno_cadera_considerando_abdomen_prominente</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>half_girth_hips_excluding_protruding_abdomen</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>medio_contorno_cadera_excluyendo_abdomen_prominente</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>girth_knee_flexed_feet</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>contorno_rodila_agachado</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>neck_transverse_diameter</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>diámetro_transversal_cuello</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>front_slash_shoulder_height</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>altura_hombros_frontal</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>neck_to_front_waist_line</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>cuello_a_contorno_cintura_frontal</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>hand_vertical_diameter</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>diametro_vertical_mano</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>neck_to_knee_point</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>cuello_a_rodilla</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>waist_to_knee</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>cintura_a_rodilla</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>shoulder_height</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>altura_hombros</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>head_height</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>altura_cabeza</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>body_position</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>posición_del_cuerpo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>arc_behind_shoulder_girdle</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>arco_detras_cintura_escapular</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>neck_to_neck_base</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>de_cuello_a_base_cuello</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>depth_waist_first</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>profundidad_cintura_primera</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>depth_waist_second</source>
|
||||
<comment>Short measurement name. Don't use math symbols in name!!!!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>profundidad_cintura_segunda</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -4035,237 +4047,237 @@ Quiere guardar los cambios?</translation>
|
|||
<message>
|
||||
<source>Around fullest part of Head</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Contorno cabeza maximo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Around middle part of Neck</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Mitad del contorno de cuello</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Around Neck at base</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Contorno base de cuello</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Vertical Distance from Crown to Nape</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Distancia vertical de coronilla a nuca</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Front Neck Center over tape at Bustline to Front Waist Center</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Centro cuello delantero sobre línea de pecho a centro cintura frontal</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Back Neck Center to Back Waist Center</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Centro cuello espalda centro cintura espalda</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>NeckPoint to ShoulderTip</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>cuello punta hombro</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Armpit to Waist side</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Axila a lado cintura</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Around Body from middle of Shoulder length to BustPoint to Crotch up back to beginning point</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Alrededor del cuerpo por hombro medio pasando por pecho entrepierna y volver a hombro medio</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Around Arms and Torso, at bicep level parallel to floor, with arms hanging at the sides</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Alrededor de brazos y torso, a nivel bíceps, paralelo al suelo con brazos caidos</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Around Chest at Armfold level, will be parallel to floor across back, will not be parallel to floor across front chest</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Contorno pecho a la altura del cruce de brazos, paralelo al suelo en la espalda y no paralelo en el delantero</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Around fullest part of Bust, parallel to floor</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Contorno parte sobresaliente del pecho paralelo al suelo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Around Chest below the Bust, parallel to floor</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Contorno pecho bajo el busto paralelo al suelo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tie a string around smallest part of waist, keep string tied while taking meaasurements. Not usually parallel to floor for front waist or back waist.</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Contorno de cintura por la parte mas estrecha, no suele ser paralela al suelo.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Around HighHip, parallel to floor</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Contorno cadera alta paralelo suelo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Around Hip, parallel to floor</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Contorno cadera paralelo al suelo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Across Front UpperChest, smallest width from armscye to armscye</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Pecho delantero superior, menor distancia de sisa a sisa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Across Front Chest, from armfold to armfold</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Pecho delantero, de brazo a brazo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>From ShoulderTip to ShoulderTip, across Front</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Delantero punta hombro a punta hombro</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>From ShoulderTip to ShoulderTip, across Back</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Espalda punta hombro a punta hombro</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Across Back UpperChest, smallest width from armscye to armscye</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Pecho superior en espalda menor medida entre sisas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Across Back Chest, from armfold to armfold</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Pecho en espalda de brazo a brazo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Distance between BustPoints, across Chest</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Distancia entre busto por el pecho</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Distance from Bustpoint, behind neck, down to Bustpoint</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Distancia entre busto pasando por la nuca</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>From NeckPoint to BustPoint</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Distancia desde el busto hasta el cuello</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>From Front Waist Center, down to crotch, up to Back Waist Center</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Desde centro delantero cintura, pasando por la entrepierna al centro espalda cintura</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sit on hard chair, measure from side waist straight down to chair bottom</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Sentados en silla, medir desde lado derecho cintura hasta asiento de la silla</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Vertical Distance from NeckPoint level to ShoulderTip level</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Distancia vertical desde el cuello al hombro</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Degrees of angle from NeckPoint to ShoulderTip – requires goniometer</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Grados del ángulo desde el cuello al hombro, requiere gniómetro</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>ShoulderTip to Front Waist Center</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Punta del hombro a centro cintura delantero</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>ShoulderTip to Back Waist Center</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Punta del hombro a centro cintura espalda</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>NeckPoint straight down front chest to Waistline</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Desde parte derecha cuello bajando por el pecho a la cintura</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Back NeckPoint straight down back chest to Waistline</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Desde parte derecha cuello bajando por la espalda a la cintura</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>NeckPoint to NeckPoint through Front Neck Center</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>De punto a punto de cuello pasando por el centro del cuello</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>NeckPoint to NeckPoint across Nape</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>De punto a punto de cuello pasando por la nuca</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Front upper-bust arc</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Arco busto delantero</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Back UpperBust side to side</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Arco busto espalda</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Front Waist side to side</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Cintura delantera lado a lado</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Back Waist side to side</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Cintura espalda lado a lado</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Front UpperHip side to side</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>cadera superior delantero lado lado </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Back UpperHip side to side</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>cadera superior espalda lado lado </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Front Hip side to side</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>cadera delantero lado lado </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Back Hip side to side</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>cadera espalda lado lado </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>NeckPoint to Front ArmfoldPoint</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>cuello delantero a pliegue brazo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>NeckPoint to Back ArmfoldPoint</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>cuello espalda a pliegue brazo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>NeckPoint across Front Chest to Waist side</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>cuello atraves del pecho a lado cintura</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>NeckPoint across Back Chest to Waist side</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>cuello atraves de espalda a lado cintura</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Front Neck Center straight down to UpperChest line</source>
|
||||
|
@ -4510,7 +4522,7 @@ Quiere guardar los cambios?</translation>
|
|||
<message>
|
||||
<source>The distance from the front waist to floor</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Distancia delantera desde la cintura al suelo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Arc through groin area</source>
|
||||
|
@ -4675,7 +4687,7 @@ Quiere guardar los cambios?</translation>
|
|||
<message>
|
||||
<source>Body position</source>
|
||||
<comment>Full measurement description</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation type="unfinished">Posición del cuerpo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Arc behind the shoulder girdle</source>
|
||||
|
@ -4878,7 +4890,7 @@ Quiere guardar los cambios?</translation>
|
|||
<message>
|
||||
<source>Front upper-bust arc</source>
|
||||
<comment>Full measurement name</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation type="unfinished">Arco busto delantero</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Back UpperBust arc</source>
|
||||
|
@ -5013,17 +5025,17 @@ Quiere guardar los cambios?</translation>
|
|||
<message>
|
||||
<source>Arm length</source>
|
||||
<comment>Full measurement name</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Largo de brazo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hand width</source>
|
||||
<comment>Full measurement name</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Ancho de mano</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hand length</source>
|
||||
<comment>Full measurement name</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Largo de mano</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hand girth</source>
|
||||
|
@ -5343,7 +5355,7 @@ Quiere guardar los cambios?</translation>
|
|||
<message>
|
||||
<source>Body position</source>
|
||||
<comment>Full measurement name</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Posición del cuerpo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Arc behind shoulder girdle</source>
|
||||
|
@ -5877,14 +5889,6 @@ Quiere guardar los cambios?</translation>
|
|||
</context>
|
||||
<context>
|
||||
<name>VAbstractTool</name>
|
||||
<message>
|
||||
<source>Confirm the deletion.</source>
|
||||
<translation type="vanished">Confirmar borrado</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want delete?</source>
|
||||
<translation type="vanished">Realmente quiere borrarlo?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>black</source>
|
||||
<translation>negro</translation>
|
||||
|
@ -6473,7 +6477,7 @@ Quiere guardar los cambios?</translation>
|
|||
<name>main</name>
|
||||
<message>
|
||||
<source>Pattern making program.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Programa generando patrón</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Pattern file.</source>
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1506,10 +1506,6 @@
|
|||
<source>Creation a layout</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>Finding best position for worpieces. Please, waite.</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Couldn't prepare data for creation layout</source>
|
||||
<translation type="unfinished"></translation>
|
||||
|
@ -1526,6 +1522,10 @@
|
|||
<source>Several workpieces left not arranged, but none of them match for paper</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>Finding best position for worpieces. Please, wait.</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DialogLayoutSettings</name>
|
||||
|
@ -2563,26 +2563,34 @@
|
|||
<source><html><head/><body><p>Do you really want union details?</p></body></html></source>
|
||||
<translation><html><head/><body><p>Voulez-vous vraiment fusionner les propriétés ?</p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select first point</source>
|
||||
<translation>Choisir le premier point</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select second point</source>
|
||||
<translation>Choisir le deuxième point</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select another second point</source>
|
||||
<translation>Choisir un autre deuxième point</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select detail</source>
|
||||
<translation>Choisir les détails</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Union tool</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a first point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Workpiece should have at least two points and three objects</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a second point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a unique point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a detail</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a point on edge</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Functions</name>
|
||||
|
@ -5879,14 +5887,6 @@ Voulez-vous sauvegarder les changements ? </translation>
|
|||
</context>
|
||||
<context>
|
||||
<name>VAbstractTool</name>
|
||||
<message>
|
||||
<source>Confirm the deletion.</source>
|
||||
<translation type="vanished">Confirmer la suppression.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want delete?</source>
|
||||
<translation type="vanished">Voulez vous vraiment supprimer ? </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>black</source>
|
||||
<translation type="unfinished"></translation>
|
||||
|
|
|
@ -1506,10 +1506,6 @@
|
|||
<source>Creation a layout</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>Finding best position for worpieces. Please, waite.</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Couldn't prepare data for creation layout</source>
|
||||
<translation type="unfinished"></translation>
|
||||
|
@ -1526,6 +1522,10 @@
|
|||
<source>Several workpieces left not arranged, but none of them match for paper</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>Finding best position for worpieces. Please, wait.</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DialogLayoutSettings</name>
|
||||
|
@ -2563,26 +2563,34 @@
|
|||
<source><html><head/><body><p>Do you really want union details?</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select first point</source>
|
||||
<translation>לבחור נקודה ראשונה</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select second point</source>
|
||||
<translation>לבחור נקודה שנייה</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select another second point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select detail</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Union tool</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a first point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Workpiece should have at least two points and three objects</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a second point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a unique point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a detail</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a point on edge</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Functions</name>
|
||||
|
|
|
@ -1507,10 +1507,6 @@
|
|||
<source>Creation a layout</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>Finding best position for worpieces. Please, waite.</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Couldn't prepare data for creation layout</source>
|
||||
<translation type="unfinished"></translation>
|
||||
|
@ -1527,6 +1523,10 @@
|
|||
<source>Several workpieces left not arranged, but none of them match for paper</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>Finding best position for worpieces. Please, wait.</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DialogLayoutSettings</name>
|
||||
|
@ -2565,26 +2565,34 @@
|
|||
<source><html><head/><body><p>Do you really want union details?</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select first point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select second point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select another second point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select detail</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Union tool</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a first point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Workpiece should have at least two points and three objects</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a second point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a unique point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a detail</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a point on edge</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Functions</name>
|
||||
|
|
|
@ -1562,10 +1562,6 @@
|
|||
<source>Creation a layout</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>Finding best position for worpieces. Please, waite.</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Couldn't prepare data for creation layout</source>
|
||||
<translation type="unfinished"></translation>
|
||||
|
@ -1582,6 +1578,10 @@
|
|||
<source>Several workpieces left not arranged, but none of them match for paper</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>Finding best position for worpieces. Please, wait.</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DialogLayoutSettings</name>
|
||||
|
@ -2647,26 +2647,34 @@
|
|||
<source><html><head/><body><p>Do you really want union details?</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select first point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select second point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select another second point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select detail</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Union tool</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a first point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Workpiece should have at least two points and three objects</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a second point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a unique point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a detail</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a point on edge</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Functions</name>
|
||||
|
|
|
@ -1506,10 +1506,6 @@
|
|||
<source>Creation a layout</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>Finding best position for worpieces. Please, waite.</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Couldn't prepare data for creation layout</source>
|
||||
<translation type="unfinished"></translation>
|
||||
|
@ -1526,6 +1522,10 @@
|
|||
<source>Several workpieces left not arranged, but none of them match for paper</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>Finding best position for worpieces. Please, wait.</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DialogLayoutSettings</name>
|
||||
|
@ -2563,26 +2563,34 @@
|
|||
<source><html><head/><body><p>Do you really want union details?</p></body></html></source>
|
||||
<translation><html><head/><body><p>Wil je echt gezamenlijke details?</p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select first point</source>
|
||||
<translation>Selecteer eerste punt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select second point</source>
|
||||
<translation>Selecteer tweede punt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select another second point</source>
|
||||
<translation>Selecteer een ander tweede punt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select detail</source>
|
||||
<translation>Selecteer een detail</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Union tool</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a first point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Workpiece should have at least two points and three objects</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a second point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a unique point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a detail</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a point on edge</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Functions</name>
|
||||
|
@ -5875,14 +5883,6 @@ Do you want to save your changes?</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>VAbstractTool</name>
|
||||
<message>
|
||||
<source>Confirm the deletion.</source>
|
||||
<translation type="vanished">Bevestig de verwijdering.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want delete?</source>
|
||||
<translation type="vanished">Wil je echt verwijderen?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>black</source>
|
||||
<translation type="unfinished"></translation>
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
146
src/app/app.pro
146
src/app/app.pro
|
@ -242,9 +242,10 @@ unix{
|
|||
# Path to resources in app bundle
|
||||
RESOURCES_DIR = "Contents/Resources"
|
||||
FRAMEWORKS_DIR = "Contents/Frameworks"
|
||||
MACOS_DIR = "Contents/MacOS"
|
||||
# On macx we will use app bundle. Bundle doesn't need bin directory inside.
|
||||
# See issue #166: Creating OSX Homebrew (Mac OS X package manager) formula.
|
||||
target.path = $$PREFIX/
|
||||
target.path = $$MACOS_DIR
|
||||
|
||||
# Copy in bundle translation files.
|
||||
exists($${TRANSLATIONS_PATH}/valentina_ru_RU.qm){
|
||||
|
@ -341,6 +342,9 @@ unix{
|
|||
libraries.files += $${OUT_PWD}/../libs/qmuparser/$${DESTDIR}/libqmuparser.2.dylib
|
||||
libraries.files += $${OUT_PWD}/../libs/vpropertyexplorer/$${DESTDIR}/libvpropertyexplorer.1.dylib
|
||||
|
||||
# Utility pdftops need for saving a layout image to PS and EPS formates.
|
||||
xpdf.path = $$MACOS_DIR
|
||||
xpdf.files += $${PWD}/../../dist/macx/bin64/pdftops
|
||||
|
||||
# logo on macx.
|
||||
ICON = ../../dist/Valentina.icns
|
||||
|
@ -351,10 +355,148 @@ unix{
|
|||
|
||||
QMAKE_BUNDLE_DATA += \
|
||||
standard \
|
||||
libraries
|
||||
libraries \
|
||||
xpdf
|
||||
}
|
||||
}
|
||||
|
||||
# "make install" command for Windows.
|
||||
# Depend on nsis script and create installer in folder "package"
|
||||
win32{
|
||||
package.path = $${OUT_PWD}/package/valentina
|
||||
package.files += \
|
||||
$${OUT_PWD}/$${DESTDIR}/valentina.exe \
|
||||
$${OUT_PWD}/$${DESTDIR}/valentina.exe.dbg \
|
||||
$$PWD/../../dist/win/valentina.ico \
|
||||
$$PWD/../../dist/win/curl.exe \
|
||||
$$PWD/../../dist/win/exchndl.dll \
|
||||
$$PWD/../../dist/win/dbghelp.dll \
|
||||
$$PWD/../../dist/win/mgwhelp.dll \
|
||||
$$PWD/../../dist/win/symsrv.dll \
|
||||
$$PWD/../../dist/win/symsrv.yes \
|
||||
$$PWD/../../dist/win/pdftops.exe \
|
||||
$$PWD/../../AUTHORS.txt \
|
||||
$$PWD/../../LICENSE_GPL.txt \
|
||||
$$PWD/../../README.txt \
|
||||
$$PWD/../../ChangeLog.txt \
|
||||
$$PWD/../libs/qmuparser/LICENSE_BSD.txt \
|
||||
$${OUT_PWD}/../libs/qmuparser/$${DESTDIR}/qmuparser2.dll \
|
||||
$${OUT_PWD}/../libs/qmuparser/$${DESTDIR}/qmuparser2.dll.dbg \
|
||||
$${OUT_PWD}/../libs/vpropertyexplorer/$${DESTDIR}/vpropertyexplorer.dll \
|
||||
$${OUT_PWD}/../libs/vpropertyexplorer/$${DESTDIR}/vpropertyexplorer.dll.dbg \
|
||||
$$[QT_INSTALL_BINS]/icudt*.dll \ # Different name for different Qt releases
|
||||
$$[QT_INSTALL_BINS]/icuin*.dll \ # Different name for different Qt releases
|
||||
$$[QT_INSTALL_BINS]/icuuc*.dll \ # Different name for different Qt releases
|
||||
$$[QT_INSTALL_BINS]/Qt5Core.dll \
|
||||
$$[QT_INSTALL_BINS]/Qt5Gui.dll \
|
||||
$$[QT_INSTALL_BINS]/Qt5Network.dll \
|
||||
$$[QT_INSTALL_BINS]/Qt5PrintSupport.dll \
|
||||
$$[QT_INSTALL_BINS]/Qt5Svg.dll \
|
||||
$$[QT_INSTALL_BINS]/Qt5Widgets.dll \
|
||||
$$[QT_INSTALL_BINS]/Qt5Xml.dll \
|
||||
$$[QT_INSTALL_BINS]/Qt5XmlPatterns.dll \
|
||||
$$[QT_INSTALL_BINS]/libgcc_s_dw2-1.dll \
|
||||
$$[QT_INSTALL_BINS]/libstdc++-6.dll \
|
||||
$$[QT_INSTALL_BINS]/libwinpthread-1.dll
|
||||
INSTALLS += package
|
||||
|
||||
package_tables.path = $${OUT_PWD}/package/valentina/tables/standard
|
||||
package_tables.files += $${OUT_PWD}/$${DESTDIR}/tables/standard/GOST_man_ru.vst
|
||||
INSTALLS += package_tables
|
||||
|
||||
package_translations.path = $${OUT_PWD}/package/valentina/translations
|
||||
package_translations.files += \
|
||||
$$INSTALL_TRANSLATIONS \ # Valentina
|
||||
$$[QT_INSTALL_TRANSLATIONS]/qt_ar.qm \
|
||||
$$[QT_INSTALL_TRANSLATIONS]/qt_pl.qm \
|
||||
$$[QT_INSTALL_TRANSLATIONS]/qt_pt.qm \
|
||||
$$[QT_INSTALL_TRANSLATIONS]/qt_ru.qm \
|
||||
$$[QT_INSTALL_TRANSLATIONS]/qt_sk.qm \
|
||||
$$[QT_INSTALL_TRANSLATIONS]/qt_sl.qm \
|
||||
$$[QT_INSTALL_TRANSLATIONS]/qt_sv.qm \
|
||||
$$[QT_INSTALL_TRANSLATIONS]/qt_uk.qm \
|
||||
$$[QT_INSTALL_TRANSLATIONS]/qt_zh_CN.qm \
|
||||
$$[QT_INSTALL_TRANSLATIONS]/qt_zh_TW.qm \
|
||||
$$[QT_INSTALL_TRANSLATIONS]/qt_ca.qm \
|
||||
$$[QT_INSTALL_TRANSLATIONS]/qt_cs.qm \
|
||||
$$[QT_INSTALL_TRANSLATIONS]/qt_da.qm \
|
||||
$$[QT_INSTALL_TRANSLATIONS]/qt_de.qm \
|
||||
$$[QT_INSTALL_TRANSLATIONS]/qt_es.qm \
|
||||
$$[QT_INSTALL_TRANSLATIONS]/qt_fa.qm \
|
||||
$$[QT_INSTALL_TRANSLATIONS]/qt_fi.qm \
|
||||
$$[QT_INSTALL_TRANSLATIONS]/qt_fr.qm \
|
||||
$$[QT_INSTALL_TRANSLATIONS]/qt_gl.qm \
|
||||
$$[QT_INSTALL_TRANSLATIONS]/qt_he.qm \
|
||||
$$[QT_INSTALL_TRANSLATIONS]/qt_hu.qm \
|
||||
$$[QT_INSTALL_TRANSLATIONS]/qt_it.qm \
|
||||
$$[QT_INSTALL_TRANSLATIONS]/qt_ja.qm \
|
||||
$$[QT_INSTALL_TRANSLATIONS]/qt_ko.qm \
|
||||
$$[QT_INSTALL_TRANSLATIONS]/qt_lt.qm \
|
||||
$$[QT_INSTALL_TRANSLATIONS]/qtxmlpatterns_uk.qm \
|
||||
$$[QT_INSTALL_TRANSLATIONS]/qtxmlpatterns_ca.qm \
|
||||
$$[QT_INSTALL_TRANSLATIONS]/qtxmlpatterns_cs.qm \
|
||||
$$[QT_INSTALL_TRANSLATIONS]/qtxmlpatterns_de.qm \
|
||||
$$[QT_INSTALL_TRANSLATIONS]/qtxmlpatterns_hu.qm \
|
||||
$$[QT_INSTALL_TRANSLATIONS]/qtxmlpatterns_it.qm \
|
||||
$$[QT_INSTALL_TRANSLATIONS]/qtxmlpatterns_ja.qm \
|
||||
$$[QT_INSTALL_TRANSLATIONS]/qtxmlpatterns_ru.qm \
|
||||
$$[QT_INSTALL_TRANSLATIONS]/qtxmlpatterns_sk.qm
|
||||
INSTALLS += package_translations
|
||||
|
||||
package_bearer.path = $${OUT_PWD}/package/valentina/bearer
|
||||
package_bearer.files += \
|
||||
$$[QT_INSTALL_PLUGINS]/bearer/qgenericbearer.dll \
|
||||
$$[QT_INSTALL_PLUGINS]/bearer/qnativewifibearer.dll
|
||||
INSTALLS += package_bearer
|
||||
|
||||
package_iconengines.path = $${OUT_PWD}/package/valentina/iconengines
|
||||
package_iconengines.files += $$[QT_INSTALL_PLUGINS]/iconengines/qsvgicon.dll
|
||||
INSTALLS += package_iconengines
|
||||
|
||||
package_imageformats.path = $${OUT_PWD}/package/valentina/imageformats
|
||||
package_imageformats.files += \
|
||||
$$[QT_INSTALL_PLUGINS]/imageformats/qdds.dll \
|
||||
$$[QT_INSTALL_PLUGINS]/imageformats/qgif.dll \
|
||||
$$[QT_INSTALL_PLUGINS]/imageformats/qicns.dll \
|
||||
$$[QT_INSTALL_PLUGINS]/imageformats/qico.dll \
|
||||
$$[QT_INSTALL_PLUGINS]/imageformats/qjp2.dll \
|
||||
$$[QT_INSTALL_PLUGINS]/imageformats/qjpeg.dll \
|
||||
$$[QT_INSTALL_PLUGINS]/imageformats/qmng.dll \
|
||||
$$[QT_INSTALL_PLUGINS]/imageformats/qsvg.dll \
|
||||
$$[QT_INSTALL_PLUGINS]/imageformats/qtga.dll \
|
||||
$$[QT_INSTALL_PLUGINS]/imageformats/qtiff.dll \
|
||||
$$[QT_INSTALL_PLUGINS]/imageformats/qwbmp.dll \
|
||||
$$[QT_INSTALL_PLUGINS]/imageformats/qwebp.dll \
|
||||
INSTALLS += package_imageformats
|
||||
|
||||
package_platforms.path = $${OUT_PWD}/package/valentina/platforms
|
||||
package_platforms.files += $$[QT_INSTALL_PLUGINS]/platforms/qwindows.dll
|
||||
INSTALLS += package_platforms
|
||||
|
||||
package_printsupport.path = $${OUT_PWD}/package/valentina/printsupport
|
||||
package_printsupport.files += $$[QT_INSTALL_PLUGINS]/printsupport/windowsprintersupport.dll
|
||||
INSTALLS += package_printsupport
|
||||
|
||||
package_nsis.path = $${OUT_PWD}/package
|
||||
package_nsis.files += $$PWD/../../dist/win/nsis/valentina.nsi
|
||||
INSTALLS += package_nsis
|
||||
|
||||
package_nsis_headers.path = $${OUT_PWD}/package/headers
|
||||
package_nsis_headers.files += \
|
||||
$$PWD/../../dist/win/nsis/headers/fileassoc.nsh \
|
||||
$$PWD/../../dist/win/nsis/headers/fileversion.nsh
|
||||
INSTALLS += package_nsis_headers
|
||||
|
||||
# Do the packaging
|
||||
# First, mangle all of INSTALLS values. We depend on them.
|
||||
unset(MANGLED_INSTALLS)
|
||||
for(x, INSTALLS):MANGLED_INSTALLS += install_$${x}
|
||||
build_package.path = $${OUT_PWD}/package
|
||||
build_package.commands = \"C:/Program Files/NSIS/makensisw.exe\" \"$${OUT_PWD}/package/valentina.nsi\"
|
||||
build_package.depends = $${MANGLED_INSTALLS}
|
||||
INSTALLS += build_package
|
||||
}
|
||||
|
||||
# Some systems use special name for lrelease. For example opensuse 13.2 has lrelease-qt5.
|
||||
isEmpty(LRELEASE){
|
||||
LRELEASE = lrelease
|
||||
|
|
|
@ -236,7 +236,7 @@ void VContainer::ClearGObjects()
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VContainer::ClearCalculationGObjects()
|
||||
{
|
||||
if (d->gObjects.size()>0)
|
||||
if (not d->gObjects.isEmpty())
|
||||
{
|
||||
QVector<quint32> keys;
|
||||
QHash<quint32, QSharedPointer<VGObject> >::iterator i;
|
||||
|
@ -248,7 +248,8 @@ void VContainer::ClearCalculationGObjects()
|
|||
keys.append(i.key());
|
||||
}
|
||||
}
|
||||
if (keys.size()>0)
|
||||
// We can't delete objects in previous loop it will destroy the iterator.
|
||||
if (not keys.isEmpty())
|
||||
{
|
||||
for (int i = 0; i < keys.size(); ++i)
|
||||
{
|
||||
|
@ -324,7 +325,7 @@ template <typename key, typename val>
|
|||
quint32 VContainer::AddObject(QHash<key, val> &obj, val value)
|
||||
{
|
||||
SCASSERT(value != nullptr);
|
||||
quint32 id = getNextId();
|
||||
const quint32 id = getNextId();
|
||||
value->setId(id);
|
||||
obj[id] = value;
|
||||
return id;
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
</size>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Creation a layout</string>
|
||||
<string>Create a Layout</string>
|
||||
</property>
|
||||
<property name="windowIcon">
|
||||
<iconset resource="../../share/resources/icon.qrc">
|
||||
|
@ -45,7 +45,7 @@
|
|||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string><html><head/><body><p>Finding best position for worpieces. Please, waite.</p></body></html></string>
|
||||
<string><html><head/><body><p>Finding best position for worpieces. Please, wait.</p></body></html></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
|
|
@ -13,6 +13,10 @@
|
|||
<property name="windowTitle">
|
||||
<string>Creation a layout</string>
|
||||
</property>
|
||||
<property name="windowIcon">
|
||||
<iconset resource="../../share/resources/icon.qrc">
|
||||
<normaloff>:/icon/64x64/icon64x64.png</normaloff>:/icon/64x64/icon64x64.png</iconset>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_6">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||
|
@ -405,6 +409,13 @@
|
|||
<item row="1" column="2">
|
||||
<widget class="QComboBox" name="comboBoxLayoutUnit"/>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="text">
|
||||
<string notr="true">×2</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
|
@ -511,7 +522,7 @@
|
|||
</connection>
|
||||
</connections>
|
||||
<buttongroups>
|
||||
<buttongroup name="buttonGroup"/>
|
||||
<buttongroup name="buttonGroupPrinciple"/>
|
||||
<buttongroup name="buttonGroup"/>
|
||||
</buttongroups>
|
||||
</ui>
|
||||
|
|
|
@ -68,6 +68,7 @@ DialogSaveLayout::DialogSaveLayout(const QMap<QString, QString> &formates, int c
|
|||
connect(ui->lineEditPath, &QLineEdit::textChanged, this, &DialogSaveLayout::PathChanged);
|
||||
|
||||
ui->lineEditPath->setText(qApp->getSettings()->GetPathLayout());
|
||||
ShowExample();//Show example for current format.
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
|
|
|
@ -17,7 +17,11 @@
|
|||
</size>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Dialog</string>
|
||||
<string>Save Layout</string>
|
||||
</property>
|
||||
<property name="windowIcon">
|
||||
<iconset resource="../../share/resources/icon.qrc">
|
||||
<normaloff>:/icon/64x64/icon64x64.png</normaloff>:/icon/64x64/icon64x64.png</iconset>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
|
@ -102,7 +106,9 @@
|
|||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<resources>
|
||||
<include location="../../share/resources/icon.qrc"/>
|
||||
</resources>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
|
|
|
@ -13,6 +13,10 @@
|
|||
<property name="windowTitle">
|
||||
<string>Point intersect curve and axis</string>
|
||||
</property>
|
||||
<property name="windowIcon">
|
||||
<iconset resource="../../share/resources/icon.qrc">
|
||||
<normaloff>:/icon/64x64/icon64x64.png</normaloff>:/icon/64x64/icon64x64.png</iconset>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_9">
|
||||
|
|
|
@ -13,6 +13,10 @@
|
|||
<property name="windowTitle">
|
||||
<string>Point intersect line and axis</string>
|
||||
</property>
|
||||
<property name="windowIcon">
|
||||
<iconset resource="../../share/resources/icon.qrc">
|
||||
<normaloff>:/icon/64x64/icon64x64.png</normaloff>:/icon/64x64/icon64x64.png</iconset>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_9">
|
||||
|
|
|
@ -87,14 +87,32 @@ void DialogUnionDetails::UpdateList()
|
|||
*/
|
||||
bool DialogUnionDetails::CheckObject(const quint32 &id, const quint32 &idDetail) const
|
||||
{
|
||||
if (idDetail == 0)
|
||||
if (idDetail == NULL_ID)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
VDetail det = data->GetDetail(idDetail);
|
||||
const VDetail det = data->GetDetail(idDetail);
|
||||
return det.Containes(id);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
bool DialogUnionDetails::CheckDetail(const quint32 &idDetail) const
|
||||
{
|
||||
if (idDetail == NULL_ID)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
const VDetail det = data->GetDetail(idDetail);
|
||||
if (det.CountNode() >= 3 && det.listNodePoint().size() >= 2)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief ChoosedDetail help save information about detail and points on detail
|
||||
|
@ -106,13 +124,21 @@ bool DialogUnionDetails::CheckObject(const quint32 &id, const quint32 &idDetail)
|
|||
void DialogUnionDetails::ChoosedDetail(const quint32 &id, const SceneObject &type, quint32 &idDetail,
|
||||
int &index)
|
||||
{
|
||||
if (idDetail == 0)
|
||||
if (idDetail == NULL_ID)
|
||||
{
|
||||
if (type == SceneObject::Detail)
|
||||
{
|
||||
idDetail = id;
|
||||
emit ToolTip(tr("Select first point"));
|
||||
return;
|
||||
if (CheckDetail(id))
|
||||
{
|
||||
idDetail = id;
|
||||
emit ToolTip(tr("Select a first point"));
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
emit ToolTip(tr("Workpiece should have at least two points and three objects"));
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (CheckObject(id, idDetail) == false)
|
||||
|
@ -125,14 +151,14 @@ void DialogUnionDetails::ChoosedDetail(const quint32 &id, const SceneObject &typ
|
|||
{
|
||||
p1 = id;
|
||||
++numberP;
|
||||
emit ToolTip(tr("Select second point"));
|
||||
emit ToolTip(tr("Select a second point"));
|
||||
return;
|
||||
}
|
||||
if (numberP == 1)
|
||||
{
|
||||
if (id == p1)
|
||||
{
|
||||
emit ToolTip(tr("Select another second point"));
|
||||
emit ToolTip(tr("Select a unique point"));
|
||||
return;
|
||||
}
|
||||
VDetail d = data->GetDetail(idDetail);
|
||||
|
@ -154,13 +180,13 @@ void DialogUnionDetails::ChoosedDetail(const quint32 &id, const SceneObject &typ
|
|||
numberP = 0;
|
||||
p1 = 0;
|
||||
p2 = 0;
|
||||
emit ToolTip(tr("Select detail"));
|
||||
emit ToolTip(tr("Select a detail"));
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
emit ToolTip(tr("Select another second point"));
|
||||
emit ToolTip(tr("Select a point on edge"));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -84,6 +84,8 @@ private:
|
|||
quint32 p2;
|
||||
|
||||
bool CheckObject(const quint32 &id, const quint32 &idDetail) const;
|
||||
bool CheckDetail(const quint32 &idDetail) const;
|
||||
|
||||
void ChoosedDetail(const quint32 &id, const SceneObject &type, quint32 &idDetail,
|
||||
int &index);
|
||||
};
|
||||
|
|
|
@ -186,7 +186,7 @@ void VDetail::setId(const quint32 &id)
|
|||
bool VDetail::OnEdge(const quint32 &p1, const quint32 &p2) const
|
||||
{
|
||||
QVector<VNodeDetail> list = listNodePoint();
|
||||
if (list.size() < 3)
|
||||
if (list.size() < 2)
|
||||
{
|
||||
qDebug()<<"Not enough points.";
|
||||
return false;
|
||||
|
@ -289,10 +289,10 @@ VDetail VDetail::RemoveEdge(const quint32 &index) const
|
|||
VDetail det(*this);
|
||||
det.ClearNodes();
|
||||
|
||||
QVector<VNodeDetail> list = this->listNodePoint();
|
||||
quint32 edge = static_cast<quint32>(list.size());
|
||||
// Edge can be only segment. We ignore all curves inside segments.
|
||||
const quint32 edges = static_cast<quint32>(listNodePoint().size());
|
||||
quint32 k = 0;
|
||||
for (quint32 i=0; i<edge; ++i)
|
||||
for (quint32 i=0; i<edges; ++i)
|
||||
{
|
||||
if (i == index)
|
||||
{
|
||||
|
@ -304,20 +304,14 @@ VDetail VDetail::RemoveEdge(const quint32 &index) const
|
|||
VNodeDetail p1;
|
||||
VNodeDetail p2;
|
||||
this->NodeOnEdge(i, p1, p2);
|
||||
int j1 = this->indexOfNode(p1.getId());
|
||||
const int j1 = this->indexOfNode(p1.getId());
|
||||
int j2 = this->indexOfNode(p2.getId());
|
||||
if (j2 == 0)
|
||||
{
|
||||
j2 = this->CountNode()-1;
|
||||
if (j1 == j2)
|
||||
{
|
||||
det.append(this->at(j1));
|
||||
++k;
|
||||
continue;
|
||||
}
|
||||
j2 = this->CountNode();
|
||||
}
|
||||
for (int j=j1; j<j2; ++j)
|
||||
{
|
||||
{// Add "segment" except last point. Inside can be curves too.
|
||||
det.append(this->at(j));
|
||||
++k;
|
||||
}
|
||||
|
@ -462,15 +456,18 @@ QPainterPath VDetail::ContourPath(const VContainer *data) const
|
|||
// seam allowence
|
||||
if (getSeamAllowance() == true)
|
||||
{
|
||||
QPainterPath ekv;
|
||||
ekv.moveTo(pointsEkv.at(0));
|
||||
for (qint32 i = 1; i < pointsEkv.count(); ++i)
|
||||
if (not pointsEkv.isEmpty())
|
||||
{
|
||||
ekv.lineTo(pointsEkv.at(i));
|
||||
}
|
||||
QPainterPath ekv;
|
||||
ekv.moveTo(pointsEkv.at(0));
|
||||
for (qint32 i = 1; i < pointsEkv.count(); ++i)
|
||||
{
|
||||
ekv.lineTo(pointsEkv.at(i));
|
||||
}
|
||||
|
||||
path.addPath(ekv);
|
||||
path.setFillRule(Qt::WindingFill);
|
||||
path.addPath(ekv);
|
||||
path.setFillRule(Qt::WindingFill);
|
||||
}
|
||||
}
|
||||
|
||||
return path;
|
||||
|
|
|
@ -82,10 +82,10 @@ public:
|
|||
QVector<QPointF> SeamAllowancePoints(const VContainer *data) const;
|
||||
|
||||
QPainterPath ContourPath(const VContainer *data) const;
|
||||
QVector<VNodeDetail> listNodePoint()const;
|
||||
private:
|
||||
QSharedDataPointer<VDetailData> d;
|
||||
|
||||
QVector<VNodeDetail> listNodePoint()const;
|
||||
static int indexOfNode(const QVector<VNodeDetail> &list, const quint32 &id);
|
||||
|
||||
QPointF StartSegment(const VContainer *data, const int &i) const;
|
||||
|
|
|
@ -226,18 +226,6 @@ QPointF VSplinePath::CutSplinePath(qreal length, qint32 &p1, qint32 &p2, QPointF
|
|||
return QPointF();
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
qint32 VSplinePath::getMaxCountPoints() const
|
||||
{
|
||||
return d->maxCountPoints;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VSplinePath::setMaxCountPoints(const qint32 &value)
|
||||
{
|
||||
d->maxCountPoints = value;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
int VSplinePath::Segment(const QPointF &p) const
|
||||
{
|
||||
|
|
|
@ -173,18 +173,6 @@ public:
|
|||
*/
|
||||
QPointF CutSplinePath(qreal length, qint32 &p1, qint32 &p2, QPointF &spl1p2, QPointF &spl1p3, QPointF &spl2p2,
|
||||
QPointF &spl2p3) const;
|
||||
/**
|
||||
* @brief getMaxCountPoints return max count of points what can have spline path. This method use tool union detail.
|
||||
* Because cutting point can change position spline can have diffirent count of points. Need know max value. This
|
||||
* value stored from cuted spline path.
|
||||
* @return count.
|
||||
*/
|
||||
qint32 getMaxCountPoints() const;
|
||||
/**
|
||||
* @brief setMaxCountPoints set max count points from cuted spline path.
|
||||
* @param value max count.
|
||||
*/
|
||||
void setMaxCountPoints(const qint32 &value);
|
||||
|
||||
int Segment(const QPointF &p) const;
|
||||
private:
|
||||
|
|
|
@ -43,15 +43,15 @@ class VSplinePathData : public QSharedData
|
|||
public:
|
||||
|
||||
VSplinePathData()
|
||||
: path(QVector<VSplinePoint>()), kCurve(1), maxCountPoints(0)
|
||||
: path(QVector<VSplinePoint>()), kCurve(1)
|
||||
{}
|
||||
|
||||
VSplinePathData(qreal kCurve)
|
||||
: path(QVector<VSplinePoint>()), kCurve(kCurve), maxCountPoints(0)
|
||||
: path(QVector<VSplinePoint>()), kCurve(kCurve)
|
||||
{}
|
||||
|
||||
VSplinePathData(const VSplinePathData &splPath)
|
||||
: QSharedData(splPath), path(splPath.path), kCurve(splPath.kCurve), maxCountPoints(splPath.maxCountPoints)
|
||||
: QSharedData(splPath), path(splPath.path), kCurve(splPath.kCurve)
|
||||
{}
|
||||
|
||||
virtual ~VSplinePathData();
|
||||
|
@ -64,10 +64,6 @@ public:
|
|||
* @brief kCurve coefficient of curvature spline.
|
||||
*/
|
||||
qreal kCurve;
|
||||
/**
|
||||
* @brief maxCountPoints max count of points what can have spline path.
|
||||
*/
|
||||
qint32 maxCountPoints;
|
||||
};
|
||||
|
||||
VSplinePathData::~VSplinePathData()
|
||||
|
|
|
@ -82,12 +82,20 @@ int main(int argc, char *argv[])
|
|||
|
||||
QTranslator qtTranslator;
|
||||
#if defined(Q_OS_WIN)
|
||||
qtTranslator.load("qt_" + checkedLocale, QCoreApplication::applicationDirPath());
|
||||
qtTranslator.load("qt_" + checkedLocale, qApp->translationsPath());
|
||||
#else
|
||||
qtTranslator.load("qt_" + checkedLocale, QLibraryInfo::location(QLibraryInfo::TranslationsPath));
|
||||
#endif
|
||||
app.installTranslator(&qtTranslator);
|
||||
|
||||
QTranslator qtxmlTranslator;
|
||||
#if defined(Q_OS_WIN)
|
||||
qtxmlTranslator.load("qtxmlpatterns_" + checkedLocale, qApp->translationsPath());
|
||||
#else
|
||||
qtxmlTranslator.load("qtxmlpatterns_" + checkedLocale, QLibraryInfo::location(QLibraryInfo::TranslationsPath));
|
||||
#endif
|
||||
app.installTranslator(&qtxmlTranslator);
|
||||
|
||||
QTranslator appTranslator;
|
||||
appTranslator.load("valentina_" + checkedLocale, qApp->translationsPath());
|
||||
app.installTranslator(&appTranslator);
|
||||
|
|
|
@ -135,6 +135,15 @@ MainWindow::MainWindow(QWidget *parent)
|
|||
|
||||
setCurrentFile("");
|
||||
WindowsLocale();
|
||||
|
||||
#if defined(Q_OS_MAC)
|
||||
// On Mac deafault icon size is 32x32.
|
||||
ui->toolBarArrows->setIconSize(QSize(24, 24));
|
||||
ui->toolBarDraws->setIconSize(QSize(24, 24));
|
||||
ui->toolBarOption->setIconSize(QSize(24, 24));
|
||||
ui->toolBarStages->setIconSize(QSize(24, 24));
|
||||
ui->toolBarTools->setIconSize(QSize(24, 24));
|
||||
#endif
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
|
|
|
@ -78,6 +78,11 @@ TableWindow::TableWindow(QWidget *parent)
|
|||
connect(ui->actionSave, &QAction::triggered, this, &TableWindow::SaveLayout);
|
||||
connect(ui->actionLayout, &QAction::triggered, this, &TableWindow::Layout);
|
||||
connect(ui->listWidget, &QListWidget::currentRowChanged, this, &TableWindow::ShowPaper);
|
||||
|
||||
#if defined(Q_OS_MAC)
|
||||
// On Mac deafault icon size is 32x32.
|
||||
ui->toolBar->setIconSize(QSize(24, 24));
|
||||
#endif
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
|
@ -348,7 +353,7 @@ void TableWindow::PngFile(const QString &name, int i) const
|
|||
painter.setPen(QPen(Qt::black, qApp->toPixel(qApp->widthMainLine()), Qt::SolidLine, Qt::RoundCap,
|
||||
Qt::RoundJoin));
|
||||
painter.setBrush ( QBrush ( Qt::NoBrush ) );
|
||||
scenes.at(i)->render(&painter);
|
||||
scenes.at(i)->render(&painter, r, r);
|
||||
image.save(name);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -149,7 +149,10 @@ VToolCurveIntersectAxis *VToolCurveIntersectAxis::Create(const quint32 _id, cons
|
|||
QPointF VToolCurveIntersectAxis::FindPoint(const QPointF &point, qreal angle,
|
||||
const QSharedPointer<VAbstractCurve> &curve)
|
||||
{
|
||||
QLineF axis = VGObject::BuildAxis(point, angle, qApp->getCurrentScene()->sceneRect());
|
||||
QRectF rec = QRectF(0, 0, INT_MAX, INT_MAX);
|
||||
rec.translate(static_cast<qreal>(-INT_MAX/2), static_cast<qreal>(-INT_MAX/2));
|
||||
|
||||
const QLineF axis = VGObject::BuildAxis(point, angle, rec);
|
||||
QVector<QPointF> points = curve->IntersectLine(axis);
|
||||
|
||||
if (points.size() > 0)
|
||||
|
|
|
@ -197,9 +197,6 @@ VToolCutSplinePath* VToolCutSplinePath::Create(const quint32 _id, const QString
|
|||
splPath1->SetKCurve(splPath->GetKCurve());
|
||||
splPath2->SetKCurve(splPath->GetKCurve());
|
||||
|
||||
splPath1->setMaxCountPoints(splPath->CountPoint());
|
||||
splPath2->setMaxCountPoints(splPath->CountPoint());
|
||||
|
||||
if (typeCreation == Source::FromGui)
|
||||
{
|
||||
splPath1id = data->AddGObject(splPath1);
|
||||
|
|
|
@ -164,7 +164,6 @@ void VToolUnionDetails::AddToNewDetail(QObject *tool, VPattern *doc, VContainer
|
|||
|
||||
VPointF *p1 = new VPointF(spline->GetP1());
|
||||
BiasRotatePoint(p1, dx, dy, data->GeometricObject<VPointF>(pRotate)->toQPointF(), angle);
|
||||
//quint32 idP1 = data->AddGObject(p1);
|
||||
|
||||
VPointF p2 = VPointF(spline->GetP2());
|
||||
BiasRotatePoint(&p2, dx, dy, data->GeometricObject<VPointF>(pRotate)->toQPointF(), angle);
|
||||
|
@ -174,7 +173,6 @@ void VToolUnionDetails::AddToNewDetail(QObject *tool, VPattern *doc, VContainer
|
|||
|
||||
VPointF *p4 = new VPointF(spline->GetP4());
|
||||
BiasRotatePoint(p4, dx, dy, data->GeometricObject<VPointF>(pRotate)->toQPointF(), angle);
|
||||
//quint32 idP4 = data->AddGObject(p4);
|
||||
|
||||
VSpline *spl = new VSpline(*p1, p2.toQPointF(), p3.toQPointF(), *p4, spline->GetKcurve(), 0,
|
||||
Draw::Modeling);
|
||||
|
@ -201,7 +199,6 @@ void VToolUnionDetails::AddToNewDetail(QObject *tool, VPattern *doc, VContainer
|
|||
VSplinePath *path = new VSplinePath();
|
||||
path->setMode(Draw::Modeling);
|
||||
const QSharedPointer<VSplinePath> splinePath = data->GeometricObject<VSplinePath>(det.at(i).getId());
|
||||
qint32 k = splinePath->getMaxCountPoints();
|
||||
for (qint32 i = 1; i <= splinePath->Count(); ++i)
|
||||
{
|
||||
VSpline spline(splinePath->at(i-1).P(), splinePath->at(i).P(),
|
||||
|
@ -209,24 +206,16 @@ void VToolUnionDetails::AddToNewDetail(QObject *tool, VPattern *doc, VContainer
|
|||
splinePath->at(i).KAsm1(), splinePath->GetKCurve());
|
||||
|
||||
VPointF *p1 = new VPointF(spline.GetP1());
|
||||
BiasRotatePoint(p1, dx, dy, data->GeometricObject<VPointF>(pRotate)->toQPointF(),
|
||||
angle);
|
||||
//quint32 idP1 = data->AddGObject(p1);
|
||||
--k;
|
||||
BiasRotatePoint(p1, dx, dy, data->GeometricObject<VPointF>(pRotate)->toQPointF(), angle);
|
||||
|
||||
VPointF p2 = VPointF(spline.GetP2());
|
||||
BiasRotatePoint(&p2, dx, dy, data->GeometricObject<VPointF>(pRotate)->toQPointF(),
|
||||
angle);
|
||||
BiasRotatePoint(&p2, dx, dy, data->GeometricObject<VPointF>(pRotate)->toQPointF(), angle);
|
||||
|
||||
VPointF p3 = VPointF(spline.GetP3());
|
||||
BiasRotatePoint(&p3, dx, dy, data->GeometricObject<VPointF>(pRotate)->toQPointF(),
|
||||
angle);
|
||||
BiasRotatePoint(&p3, dx, dy, data->GeometricObject<VPointF>(pRotate)->toQPointF(), angle);
|
||||
|
||||
VPointF *p4 = new VPointF(spline.GetP4());
|
||||
BiasRotatePoint(p4, dx, dy, data->GeometricObject<VPointF>(pRotate)->toQPointF(),
|
||||
angle);
|
||||
//quint32 idP4 = data->AddGObject(p4);
|
||||
--k;
|
||||
BiasRotatePoint(p4, dx, dy, data->GeometricObject<VPointF>(pRotate)->toQPointF(), angle);
|
||||
|
||||
VSpline spl = VSpline(*p1, p2.toQPointF(), p3.toQPointF(), *p4, spline.GetKcurve());
|
||||
if (i==1)
|
||||
|
@ -239,11 +228,6 @@ void VToolUnionDetails::AddToNewDetail(QObject *tool, VPattern *doc, VContainer
|
|||
delete p4;
|
||||
delete p1;
|
||||
}
|
||||
while (k>=0)
|
||||
{
|
||||
data->getNextId();
|
||||
--k;
|
||||
}
|
||||
idObject = data->AddGObject(path);
|
||||
|
||||
VSplinePath *path1 = new VSplinePath(*path);
|
||||
|
@ -286,10 +270,10 @@ void VToolUnionDetails::UpdatePoints(const quint32 &idDetail, VContainer *data,
|
|||
VPointF *point = new VPointF(*data->GeometricObject<VPointF>(det.at(i).getId()));
|
||||
point->setMode(Draw::Modeling);
|
||||
BiasRotatePoint(point, dx, dy, data->GeometricObject<VPointF>(pRotate)->toQPointF(), angle);
|
||||
++idCount;
|
||||
++idCount;// For parent
|
||||
data->UpdateGObject(idDetail+idCount, point);
|
||||
|
||||
++idCount;
|
||||
++idCount;// For child
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -300,24 +284,25 @@ void VToolUnionDetails::UpdatePoints(const quint32 &idDetail, VContainer *data,
|
|||
const QSharedPointer<VArc> arc = data->GeometricObject<VArc>(det.at(i).getId());
|
||||
VPointF p1 = VPointF(arc->GetP1());
|
||||
BiasRotatePoint(&p1, dx, dy, data->GeometricObject<VPointF>(pRotate)->toQPointF(), angle);
|
||||
|
||||
VPointF p2 = VPointF(arc->GetP2());
|
||||
BiasRotatePoint(&p2, dx, dy, data->GeometricObject<VPointF>(pRotate)->toQPointF(), angle);
|
||||
|
||||
VPointF *center = new VPointF(arc->GetCenter());
|
||||
BiasRotatePoint(center, dx, dy, data->GeometricObject<VPointF>(pRotate)->toQPointF(),
|
||||
angle);
|
||||
|
||||
QLineF l1(center->toQPointF(), p1.toQPointF());
|
||||
QLineF l2(center->toQPointF(), p2.toQPointF());
|
||||
++idCount;
|
||||
center->setMode(Draw::Modeling);
|
||||
data->UpdateGObject(idDetail+idCount, center);
|
||||
|
||||
VArc *arc1 = new VArc(*center, arc->GetRadius(), arc->GetFormulaRadius(), l1.angle(),
|
||||
QString().setNum(l1.angle()), l2.angle(), QString().setNum(l2.angle()));
|
||||
arc1->setMode(Draw::Modeling);
|
||||
++idCount;
|
||||
++idCount;// For parent
|
||||
data->UpdateGObject(idDetail+idCount, arc1);
|
||||
|
||||
++idCount;
|
||||
++idCount;// For child
|
||||
delete center;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -329,8 +314,6 @@ void VToolUnionDetails::UpdatePoints(const quint32 &idDetail, VContainer *data,
|
|||
|
||||
VPointF *p1 = new VPointF(spline->GetP1());
|
||||
BiasRotatePoint(p1, dx, dy, data->GeometricObject<VPointF>(pRotate)->toQPointF(), angle);
|
||||
++idCount;
|
||||
data->UpdateGObject(idDetail+idCount, p1);
|
||||
|
||||
VPointF p2 = VPointF(spline->GetP2());
|
||||
BiasRotatePoint(&p2, dx, dy, data->GeometricObject<VPointF>(pRotate)->toQPointF(), angle);
|
||||
|
@ -340,16 +323,16 @@ void VToolUnionDetails::UpdatePoints(const quint32 &idDetail, VContainer *data,
|
|||
|
||||
VPointF *p4 = new VPointF(spline->GetP4());
|
||||
BiasRotatePoint(p4, dx, dy, data->GeometricObject<VPointF>(pRotate)->toQPointF(), angle);
|
||||
++idCount;
|
||||
data->UpdateGObject(idDetail+idCount, p4);
|
||||
|
||||
VSpline *spl = new VSpline(*p1, p2.toQPointF(), p3.toQPointF(), *p4, spline->GetKcurve(), 0,
|
||||
Draw::Modeling);
|
||||
|
||||
++idCount;
|
||||
++idCount;// For parent
|
||||
data->UpdateGObject(idDetail+idCount, spl);
|
||||
|
||||
++idCount;
|
||||
++idCount;// For child
|
||||
delete p1;
|
||||
delete p4;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -361,7 +344,6 @@ void VToolUnionDetails::UpdatePoints(const quint32 &idDetail, VContainer *data,
|
|||
path->setMode(Draw::Modeling);
|
||||
const QSharedPointer<VSplinePath> splinePath = data->GeometricObject<VSplinePath>(det.at(i).getId());
|
||||
SCASSERT(splinePath != nullptr);
|
||||
qint32 k = splinePath->getMaxCountPoints();
|
||||
for (qint32 i = 1; i <= splinePath->Count(); ++i)
|
||||
{
|
||||
VSpline spline(splinePath->at(i-1).P(), splinePath->at(i).P(),
|
||||
|
@ -371,9 +353,6 @@ void VToolUnionDetails::UpdatePoints(const quint32 &idDetail, VContainer *data,
|
|||
VPointF *p1 = new VPointF(spline.GetP1());
|
||||
BiasRotatePoint(p1, dx, dy, data->GeometricObject<VPointF>(pRotate)->toQPointF(),
|
||||
angle);
|
||||
++idCount;
|
||||
data->UpdateGObject(idDetail+idCount, p1);
|
||||
--k;
|
||||
|
||||
VPointF p2 = VPointF(spline.GetP2());
|
||||
BiasRotatePoint(&p2, dx, dy, data->GeometricObject<VPointF>(pRotate)->toQPointF(),
|
||||
|
@ -386,9 +365,6 @@ void VToolUnionDetails::UpdatePoints(const quint32 &idDetail, VContainer *data,
|
|||
VPointF *p4 = new VPointF(spline.GetP4());
|
||||
BiasRotatePoint(p4, dx, dy, data->GeometricObject<VPointF>(pRotate)->toQPointF(),
|
||||
angle);
|
||||
++idCount;
|
||||
data->UpdateGObject(idDetail+idCount, p4);
|
||||
--k;
|
||||
|
||||
VSpline spl = VSpline(*p1, p2.toQPointF(), p3.toQPointF(), *p4, spline.GetKcurve());
|
||||
if (i==1)
|
||||
|
@ -398,19 +374,14 @@ void VToolUnionDetails::UpdatePoints(const quint32 &idDetail, VContainer *data,
|
|||
}
|
||||
path->append(VSplinePoint(*p4, splinePath->at(i).KAsm1(), spl.GetAngle2(),
|
||||
splinePath->at(i).KAsm2(), spl.GetAngle2()+180));
|
||||
delete p1;
|
||||
delete p4;
|
||||
}
|
||||
|
||||
while (k>=0)
|
||||
{
|
||||
data->getNextId();
|
||||
--k;
|
||||
++idCount;
|
||||
}
|
||||
|
||||
++idCount;
|
||||
++idCount;//For parent
|
||||
data->UpdateGObject(idDetail+idCount, path);
|
||||
|
||||
++idCount;
|
||||
++idCount;// For child
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -511,6 +482,7 @@ VToolUnionDetails* VToolUnionDetails::Create(const quint32 _id, const VDetail &d
|
|||
doc->UpdateToolData(id, data);
|
||||
}
|
||||
}
|
||||
//First add tool to file
|
||||
VAbstractTool::AddRecord(id, Tool::UnionDetails, doc);
|
||||
if (parse == Document::FullParse)
|
||||
{
|
||||
|
@ -528,6 +500,7 @@ VToolUnionDetails* VToolUnionDetails::Create(const quint32 _id, const VDetail &d
|
|||
}
|
||||
|
||||
}
|
||||
//Then create new details
|
||||
VNodeDetail det1p1;
|
||||
VNodeDetail det1p2;
|
||||
d1.NodeOnEdge(indexD1, det1p1, det1p2);
|
||||
|
@ -550,28 +523,42 @@ VToolUnionDetails* VToolUnionDetails::Create(const quint32 _id, const VDetail &d
|
|||
point4.setX(point4.x()+dx);
|
||||
point4.setY(point4.y()+dy);
|
||||
|
||||
const qreal angle = QLineF(point4.toQPointF(), point3.toQPointF()).angleTo(QLineF(point1.toQPointF(),
|
||||
point2.toQPointF()));
|
||||
qint32 pointsD2 = 0; //Keeps count points second detail, what we already add.
|
||||
const QLineF p4p3 = QLineF(point4.toQPointF(), point3.toQPointF());
|
||||
const QLineF p1p2 = QLineF(point1.toQPointF(), point2.toQPointF());
|
||||
|
||||
// How many points do we need to skip?
|
||||
// If lengths of edges not equal we should left the second point of the second detail.
|
||||
qint32 skip;
|
||||
if (qFuzzyCompare(p1p2.length(), p4p3.length()))
|
||||
{
|
||||
skip = 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
skip = 1;
|
||||
}
|
||||
|
||||
const qreal angle = p4p3.angleTo(p1p2);
|
||||
qint32 pointsD2 = 0; //Keeps number points the second detail, what we have already added.
|
||||
|
||||
const qint32 countNodeD1 = d1.RemoveEdge(indexD1).CountNode();
|
||||
const qint32 countNodeD2 = d2.RemoveEdge(indexD2).CountNode();
|
||||
|
||||
if (typeCreation == Source::FromGui)
|
||||
{
|
||||
qint32 j = 0, i = 0;
|
||||
qint32 i = 0;
|
||||
VDetail newDetail;
|
||||
do
|
||||
{
|
||||
AddToNewDetail(unionDetails, doc, data, newDetail, d1.RemoveEdge(indexD1), i, id);
|
||||
++i;
|
||||
if (i > d1.indexOfNode(det1p1.getId()) && pointsD2 < d2.RemoveEdge(indexD2).CountNode()-2)
|
||||
if (i > d1.indexOfNode(det1p1.getId()) && pointsD2 < countNodeD2-2)
|
||||
{
|
||||
qint32 j = 0;
|
||||
FindIndexJ(pointsD2, d2, indexD2, j);
|
||||
do
|
||||
{
|
||||
FindJ(pointsD2, d2, indexD2, j);
|
||||
if (pointsD2 == d2.RemoveEdge(indexD2).CountNode() -2)
|
||||
{
|
||||
break;
|
||||
}
|
||||
if (j >= d2.RemoveEdge(indexD2).CountNode())
|
||||
if (j >= countNodeD2)
|
||||
{
|
||||
j=0;
|
||||
}
|
||||
|
@ -579,9 +566,9 @@ VToolUnionDetails* VToolUnionDetails::Create(const quint32 _id, const VDetail &d
|
|||
det1p1.getId(), angle);
|
||||
++pointsD2;
|
||||
++j;
|
||||
} while (pointsD2 < d2.RemoveEdge(indexD2).CountNode());
|
||||
} while (pointsD2 < countNodeD2-skip);
|
||||
}
|
||||
} while (i < d1.RemoveEdge(indexD1).CountNode());
|
||||
} while (i < countNodeD1);
|
||||
|
||||
newDetail.setName("Detail");
|
||||
newDetail.setWidth(d1.getWidth());
|
||||
|
@ -604,20 +591,17 @@ VToolUnionDetails* VToolUnionDetails::Create(const quint32 _id, const VDetail &d
|
|||
else
|
||||
{
|
||||
quint32 idCount = 0;
|
||||
qint32 j = 0, i = 0;
|
||||
qint32 i = 0;
|
||||
do
|
||||
{
|
||||
UpdatePoints(id, data, d1.RemoveEdge(indexD1), i, idCount);
|
||||
++i;
|
||||
if (i > d1.indexOfNode(det1p1.getId()) && pointsD2 < d2.RemoveEdge(indexD2).CountNode()-2)
|
||||
if (i > d1.indexOfNode(det1p1.getId()) && pointsD2 < countNodeD2-2)
|
||||
{
|
||||
qint32 j = 0;
|
||||
FindIndexJ(pointsD2, d2, indexD2, j);
|
||||
do
|
||||
{
|
||||
FindJ(pointsD2, d2, indexD2, j);
|
||||
if (pointsD2 == d2.RemoveEdge(indexD2).CountNode()-2)
|
||||
{
|
||||
break;
|
||||
}
|
||||
if (j >= d2.RemoveEdge(indexD2).CountNode())
|
||||
{
|
||||
j=0;
|
||||
|
@ -625,9 +609,9 @@ VToolUnionDetails* VToolUnionDetails::Create(const quint32 _id, const VDetail &d
|
|||
UpdatePoints(id, data, d2.RemoveEdge(indexD2), j, idCount, dx, dy, det1p1.getId(), angle);
|
||||
++pointsD2;
|
||||
++j;
|
||||
} while (pointsD2 < d2.RemoveEdge(indexD2).CountNode());
|
||||
} while (pointsD2 < countNodeD2-skip);
|
||||
}
|
||||
} while (i<d1.RemoveEdge(indexD1).CountNode());
|
||||
} while (i<countNodeD1);
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
@ -643,21 +627,23 @@ void VToolUnionDetails::PointsOnEdge(const VDetail &d, const quint32 &index, VPo
|
|||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolUnionDetails::FindJ(const qint32 &pointsD2, const VDetail &d2, const quint32 &indexD2, qint32 &j)
|
||||
void VToolUnionDetails::FindIndexJ(const qint32 &pointsD2, const VDetail &d2, const quint32 &indexD2, qint32 &j)
|
||||
{
|
||||
if (pointsD2 == 0)
|
||||
{
|
||||
VNodeDetail node1;
|
||||
VNodeDetail node2;
|
||||
d2.NodeOnEdge(indexD2, node1, node2);
|
||||
int k = d2.RemoveEdge(indexD2).indexOfNode(node2.getId());
|
||||
if (k == d2.RemoveEdge(indexD2).CountNode()-1)
|
||||
{
|
||||
const VDetail removedD2 = d2.RemoveEdge(indexD2);
|
||||
const int k = removedD2.indexOfNode(node2.getId());
|
||||
SCASSERT(k != -1)
|
||||
if (k == removedD2.CountNode()-1)
|
||||
{//We have last node in detail, we wil begin from 0
|
||||
j = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
j = d2.RemoveEdge(indexD2).indexOfNode(node2.getId())+1;
|
||||
{// Continue from next node
|
||||
j = k+1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -56,7 +56,7 @@ public:
|
|||
VMainGraphicsScene *scene, VPattern *doc, VContainer *data, const Document &parse,
|
||||
const Source &typeCreation);
|
||||
static void PointsOnEdge(const VDetail &d, const quint32 &index, VPointF &p1, VPointF &p2, VContainer *data);
|
||||
static void FindJ(const qint32 &pointsD2, const VDetail &d2, const quint32 &indexD2, qint32 &j);
|
||||
static void FindIndexJ(const qint32 &pointsD2, const VDetail &d2, const quint32 &indexD2, qint32 &j);
|
||||
static QVector<VDetail> GetDetailFromFile(VPattern *doc, const QDomElement &domElement);
|
||||
static const QString TagName;
|
||||
static const QString ToolType;
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
|
||||
extern const int MAJOR_VERSION = 0;
|
||||
extern const int MINOR_VERSION = 3;
|
||||
extern const int DEBUG_VERSION = 0;
|
||||
extern const int DEBUG_VERSION = 1;
|
||||
|
||||
extern const QString APP_VERSION(QStringLiteral("%1.%2.%3.%4").arg(MAJOR_VERSION).arg(MINOR_VERSION)
|
||||
.arg(DEBUG_VERSION).arg(LATEST_TAG_DISTANCE));
|
||||
|
|
|
@ -39,8 +39,8 @@ extern const QString APP_VERSION;
|
|||
|
||||
// Change version number in version.cpp too.
|
||||
|
||||
#define VER_FILEVERSION 0,3,0,0
|
||||
#define VER_FILEVERSION_STR "0.3.0.0\0"
|
||||
#define VER_FILEVERSION 0,3,1,0
|
||||
#define VER_FILEVERSION_STR "0.3.1.0\0"
|
||||
|
||||
#define VER_PRODUCTVERSION VER_FILEVERSION
|
||||
#define VER_PRODUCTVERSION_STR VER_FILEVERSION_STR
|
||||
|
|
|
@ -219,6 +219,7 @@
|
|||
<xs:attribute name="mx" type="xs:double"></xs:attribute>
|
||||
<xs:attribute name="my" type="xs:double"></xs:attribute>
|
||||
<xs:attribute name="type" type="xs:string"></xs:attribute>
|
||||
<xs:attribute name="reverse" type="xs:unsignedInt"></xs:attribute>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
|
|
|
@ -39,7 +39,7 @@ OBJECTS_DIR = obj
|
|||
|
||||
include(qmuparser.pri)
|
||||
|
||||
VERSION = 2.2.5
|
||||
VERSION = 2.2.6
|
||||
|
||||
# Set "make install" command for Unix-like systems.
|
||||
unix:!macx{
|
||||
|
|
|
@ -1044,9 +1044,18 @@ qreal QmuParserBase::ParseCmdCodeBulk(int nOffset, int nThreadID) const
|
|||
#endif
|
||||
continue;
|
||||
case cmASSIGN:
|
||||
// Bugfix for Bulkmode:
|
||||
// for details see:
|
||||
// https://groups.google.com/forum/embed/?place=forum/muparser-dev&showsearch=true&showpopout=true&
|
||||
// showtabs=false&parenturl=http://muparser.beltoforion.de/mup_forum.html&afterlogin&pli=1#!topic/
|
||||
// muparser-dev/szgatgoHTws
|
||||
--sidx;
|
||||
Stack[sidx] = *pTok->Oprt.ptr = Stack[sidx+1];
|
||||
Stack[sidx] = *(pTok->Oprt.ptr + nOffset) = Stack[sidx + 1];
|
||||
continue;
|
||||
// original code:
|
||||
//--sidx;
|
||||
//Stack[sidx] = *pTok->Oprt.ptr = Stack[sidx+1];
|
||||
//continue;
|
||||
case cmIF:
|
||||
if (qFuzzyCompare(Stack[sidx--]+1, 1+0))
|
||||
{
|
||||
|
|
|
@ -392,7 +392,7 @@ void QmuParserByteCode::AddAssignOp(qreal *a_pVar)
|
|||
|
||||
SToken tok;
|
||||
tok.Cmd = cmASSIGN;
|
||||
tok.Val.ptr = a_pVar;
|
||||
tok.Oprt.ptr = a_pVar;
|
||||
m_vRPN.push_back(tok);
|
||||
}
|
||||
|
||||
|
|
|
@ -56,6 +56,7 @@ QmuParserTester::QmuParserTester()
|
|||
AddTest ( &QmuParserTester::TestBinOprt );
|
||||
AddTest ( &QmuParserTester::TestException );
|
||||
AddTest ( &QmuParserTester::TestStrArg );
|
||||
AddTest ( &QmuParserTester::TestBulkMode );
|
||||
|
||||
QmuParserTester::c_iCount = 0;
|
||||
}
|
||||
|
@ -164,6 +165,44 @@ int QmuParserTester::TestStrArg()
|
|||
return iStat;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
int QmuParserTester::TestBulkMode()
|
||||
{
|
||||
int iStat = 0;
|
||||
qWarning() << "testing bulkmode...";
|
||||
|
||||
#define EQN_TEST_BULK(EXPR, R1, R2, R3, R4, PASS) \
|
||||
{ \
|
||||
double res[] = { R1, R2, R3, R4 }; \
|
||||
iStat += EqnTestBulk(EXPR, res, (PASS)); \
|
||||
}
|
||||
|
||||
// Bulk Variables for the test:
|
||||
// a: 1,2,3,4
|
||||
// b: 2,2,2,2
|
||||
// c: 3,3,3,3
|
||||
// d: 5,4,3,2
|
||||
EQN_TEST_BULK("a", 1, 1, 1, 1, false)
|
||||
EQN_TEST_BULK("a", 1, 2, 3, 4, true)
|
||||
EQN_TEST_BULK("b=a", 1, 2, 3, 4, true)
|
||||
EQN_TEST_BULK("b=a, b*10", 10, 20, 30, 40, true)
|
||||
EQN_TEST_BULK("b=a, b*10, a", 1, 2, 3, 4, true)
|
||||
EQN_TEST_BULK("a+b", 3, 4, 5, 6, true)
|
||||
EQN_TEST_BULK("c*(a+b)", 9, 12, 15, 18, true)
|
||||
#undef EQN_TEST_BULK
|
||||
|
||||
if (iStat == 0)
|
||||
{
|
||||
qWarning() << "passed";
|
||||
}
|
||||
else
|
||||
{
|
||||
qWarning() << "\n failed with " << iStat << " errors";
|
||||
}
|
||||
|
||||
return iStat;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
int QmuParserTester::TestBinOprt()
|
||||
{
|
||||
|
@ -172,16 +211,7 @@ int QmuParserTester::TestBinOprt()
|
|||
|
||||
// built in operators
|
||||
// xor operator
|
||||
//iStat += EqnTest("1 xor 2", 3, true);
|
||||
//iStat += EqnTest("a xor b", 3, true); // with a=1 and b=2
|
||||
//iStat += EqnTest("1 xor 2 xor 3", 0, true);
|
||||
//iStat += EqnTest("a xor b xor 3", 0, true); // with a=1 and b=2
|
||||
//iStat += EqnTest("a xor b xor c", 0, true); // with a=1 and b=2
|
||||
//iStat += EqnTest("(1 xor 2) xor 3", 0, true);
|
||||
//iStat += EqnTest("(a xor b) xor c", 0, true); // with a=1 and b=2
|
||||
//iStat += EqnTest("(a) xor (b) xor c", 0, true); // with a=1 and b=2
|
||||
//iStat += EqnTest("1 or 2"), 3, true;
|
||||
//iStat += EqnTest("a or b"), 3, true; // with a=1 and b=2
|
||||
|
||||
iStat += EqnTest ( "a++b", 3, true );
|
||||
iStat += EqnTest ( "a ++ b", 3, true );
|
||||
iStat += EqnTest ( "1++2", 3, true );
|
||||
|
@ -220,6 +250,7 @@ int QmuParserTester::TestBinOprt()
|
|||
iStat += EqnTest ( "2*(a=b)", 4, true );
|
||||
iStat += EqnTest ( "2*(a=b+1)", 6, true );
|
||||
iStat += EqnTest ( "(a=b+1)*2", 6, true );
|
||||
iStat += EqnTest ( "a=c, a*10", 30, true);
|
||||
|
||||
iStat += EqnTest ( "2^2^3", 256, true );
|
||||
iStat += EqnTest ( "1/2/3", 1.0 / 6.0, true );
|
||||
|
@ -1406,6 +1437,63 @@ int QmuParserTester::EqnTest ( const QString &a_str, double a_fRes, bool a_fPass
|
|||
return iRet;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/** \brief Test an expression in Bulk Mode. */
|
||||
int QmuParserTester::EqnTestBulk(const QString &a_str, double a_fRes[4], bool a_fPass)
|
||||
{
|
||||
QmuParserTester::c_iCount++;
|
||||
|
||||
// Define Bulk Variables
|
||||
int nBulkSize = 4;
|
||||
double vVariableA[] = { 1, 2, 3, 4 }; // variable values
|
||||
double vVariableB[] = { 2, 2, 2, 2 }; // variable values
|
||||
double vVariableC[] = { 3, 3, 3, 3 }; // variable values
|
||||
double vResults[] = { 0, 0, 0, 0 }; // variable values
|
||||
int iRet(0);
|
||||
|
||||
try
|
||||
{
|
||||
QmuParser p;
|
||||
p.DefineConst("const1", 1);
|
||||
p.DefineConst("const2", 2);
|
||||
p.DefineVar("a", vVariableA);
|
||||
p.DefineVar("b", vVariableB);
|
||||
p.DefineVar("c", vVariableC);
|
||||
|
||||
p.SetExpr(a_str);
|
||||
p.Eval(vResults, nBulkSize);
|
||||
|
||||
bool bCloseEnough(true);
|
||||
for (int i = 0; i < nBulkSize; ++i)
|
||||
{
|
||||
bCloseEnough &= (fabs(a_fRes[i] - vResults[i]) <= fabs(a_fRes[i] * 0.00001));
|
||||
}
|
||||
|
||||
iRet = ((bCloseEnough && a_fPass) || (!bCloseEnough && !a_fPass)) ? 0 : 1;
|
||||
if (iRet == 1)
|
||||
{
|
||||
qWarning() << "\n fail: " << a_str << " (incorrect result; expected: {" << a_fRes[0] << ","
|
||||
<< a_fRes[1] << "," << a_fRes[2] << "," << a_fRes[3] << "}" << " ;calculated: " << vResults[0]
|
||||
<< "," << vResults[1] << "," << vResults[2] << "," << vResults[3] << "}";
|
||||
}
|
||||
}
|
||||
catch (QmuParserError &e)
|
||||
{
|
||||
if (a_fPass)
|
||||
{
|
||||
qWarning() << "\n fail: " << e.GetExpr() << " : " << e.GetMsg();
|
||||
iRet = 1;
|
||||
}
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
qWarning() << "\n fail: " << a_str << " (unexpected exception)";
|
||||
iRet = 1; // exceptions other than ParserException are not allowed
|
||||
}
|
||||
|
||||
return iRet;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief Internal error in test class Test is going to be aborted.
|
||||
|
|
|
@ -63,6 +63,9 @@ private:
|
|||
double a_fVar2 );
|
||||
static int ThrowTest ( const QString &a_str, int a_iErrc, bool a_bFail = true );
|
||||
|
||||
// Test Bulkmode
|
||||
int EqnTestBulk(const QString &a_str, double a_fRes[4], bool a_fPass);
|
||||
|
||||
// Multiarg callbacks
|
||||
static qreal f1of1 ( qreal v )
|
||||
{
|
||||
|
@ -301,6 +304,8 @@ private:
|
|||
int TestStrArg();
|
||||
// cppcheck-suppress functionStatic
|
||||
int TestIfThenElse();
|
||||
// cppcheck-suppress functionStatic
|
||||
int TestBulkMode();
|
||||
|
||||
static void Q_NORETURN Abort();
|
||||
};
|
||||
|
|
|
@ -343,7 +343,8 @@ int QmuParserTokenReader::ExtractToken ( const QString &a_szCharSet, QString &a_
|
|||
int QmuParserTokenReader::ExtractOperatorToken ( QString &a_sTok, int a_iPos ) const
|
||||
{
|
||||
const std::wstring m_strFormulaStd = m_strFormula.toStdWString();
|
||||
const std::wstring oprtCharsStd = m_pParser->ValidInfixOprtChars().toStdWString();
|
||||
// Changed as per Issue 6: https://code.google.com/p/muparser/issues/detail?id=6
|
||||
const std::wstring oprtCharsStd = m_pParser->ValidOprtChars().toStdWString();
|
||||
|
||||
int iEnd = static_cast<int>( m_strFormulaStd.find_first_not_of ( oprtCharsStd, static_cast<std::size_t>(a_iPos) ) );
|
||||
if ( iEnd == static_cast<int>( string_type::npos ) )
|
||||
|
|
|
@ -219,6 +219,7 @@ QVector<QPointF> VAbstractDetail::Equidistant(const QVector<QPointF> &points, co
|
|||
//points in the middle of polyline
|
||||
ekvPoints<<EkvPoint(QLineF(p.at(i-1), p.at(i)), QLineF(p.at(i+1), p.at(i)), width);
|
||||
}
|
||||
ekvPoints = CheckLoops(ekvPoints);//Result path can contain loops
|
||||
return ekvPoints;
|
||||
}
|
||||
|
||||
|
@ -286,7 +287,6 @@ QVector<QPointF> VAbstractDetail::CorrectEquidistantPoints(const QVector<QPointF
|
|||
correctPoints.remove(i);
|
||||
}
|
||||
}
|
||||
correctPoints = CheckLoops(correctPoints);
|
||||
return correctPoints;
|
||||
}
|
||||
|
||||
|
|
|
@ -368,6 +368,9 @@ VPosition::CrossingType VPosition::Crossing(const VLayoutDetail &detail, const i
|
|||
return CrossingType::EdgeError;
|
||||
}
|
||||
|
||||
const QLineF gEdge = gContour.GlobalEdge(globalI);
|
||||
const QLineF dEdge = detail.Edge(detailI);
|
||||
|
||||
for (int i = 1; i <= globalEdgesCount; i++)
|
||||
{
|
||||
const QLineF globalEdge = gContour.GlobalEdge(i);
|
||||
|
@ -390,11 +393,9 @@ VPosition::CrossingType VPosition::Crossing(const VLayoutDetail &detail, const i
|
|||
}
|
||||
|
||||
QPointF xPoint;
|
||||
QLineF::IntersectType type = globalEdge.intersect(detailEdge, &xPoint);
|
||||
|
||||
if (type == QLineF::BoundedIntersection)
|
||||
if (globalEdge.intersect(detailEdge, &xPoint) == QLineF::BoundedIntersection)
|
||||
{
|
||||
if (TrueIntersection(gContour.GlobalEdge(globalI), detail.Edge(detailI), xPoint))
|
||||
if (TrueIntersection(gEdge, dEdge, xPoint))
|
||||
{
|
||||
return CrossingType::Intersection;
|
||||
}
|
||||
|
@ -645,11 +646,23 @@ void VPosition::Rotate(int increase)
|
|||
bool VPosition::TrueIntersection(const QLineF &gEdge, const QLineF &dEdge, const QPointF &p) const
|
||||
{
|
||||
const QPointF pX = RoundedPoint(p);
|
||||
const QPointF gP1 = RoundedPoint(gEdge.p1());
|
||||
const QPointF gP2 = RoundedPoint(gEdge.p2());
|
||||
const QPointF dP1 = RoundedPoint(dEdge.p1());
|
||||
const QPointF dP2 = RoundedPoint(dEdge.p2());
|
||||
return !(pX == gP1 || pX == gP2 || pX == dP1 || pX == dP2);
|
||||
|
||||
QPointF xPoint;
|
||||
if (gEdge.intersect(dEdge, &xPoint) == QLineF::NoIntersection)
|
||||
{
|
||||
const QPointF gP1 = RoundedPoint(gEdge.p1());
|
||||
const QPointF gP2 = RoundedPoint(gEdge.p2());
|
||||
const QPointF dP1 = RoundedPoint(dEdge.p1());
|
||||
const QPointF dP2 = RoundedPoint(dEdge.p2());
|
||||
|
||||
// If two edges are same line ignorring all intersection point that are equal to the start or the end point
|
||||
return !(pX == gP1 || pX == gP2 || pX == dP1 || pX == dP2);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Rotation case. Ignore intersection only in the point of edges intersection.
|
||||
return pX != RoundedPoint(xPoint);
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
|
|
|
@ -210,11 +210,12 @@ void VObjEngine::drawPolygon(const QPointF *points, int pointCount, PolygonDrawM
|
|||
|
||||
for (int i = 0; i < pointCount; ++i)
|
||||
{
|
||||
*stream << QString(" %1").arg(globalPointsCount - static_cast<unsigned int>(pointCount + i + 1));
|
||||
*stream << QString(" %1").arg(globalPointsCount - static_cast<unsigned int>(pointCount) + i + 1);
|
||||
}
|
||||
*stream << endl;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VObjEngine::drawPolygon(const QPoint *points, int pointCount, QPaintEngine::PolygonDrawMode mode)
|
||||
{
|
||||
QPaintEngine::drawPolygon(points, pointCount, mode);
|
||||
|
|
Loading…
Reference in New Issue
Block a user