diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/ChangeLog.txt valentina-0.3.0+44+201504011727~ubuntu14.10.1/ChangeLog.txt --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/ChangeLog.txt 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/ChangeLog.txt 2015-04-01 17:27:18.000000000 +0000 @@ -1,3 +1,85 @@ +# 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 +87,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. + diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/debian/bzr-builder.manifest valentina-0.3.0+44+201504011727~ubuntu14.10.1/debian/bzr-builder.manifest --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/debian/bzr-builder.manifest 2015-03-23 12:46:27.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/debian/bzr-builder.manifest 2015-04-01 17:27:23.000000000 +0000 @@ -1,3 +1,3 @@ -# bzr-builder format 0.3 deb-version {debupstream}+43+201503231246 -lp:valentina revid:git-v1:a3438a7bb55bd04fc6af6e87073d9a4c69077f49 -merge packaging lp:~dismine/valentina/debian revid:dismine@gmail.com-20150323124006-6a7uj665itb6u1d2 +# bzr-builder format 0.3 deb-version {debupstream}+44+201504011727 +lp:valentina revid:git-v1:0d91b28eb9adf5ef2f79df6474570bed35517a2a +merge packaging lp:~dismine/valentina/debian revid:dismine@gmail.com-20150401171724-07igdi0cehaa89wi diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/debian/changelog valentina-0.3.0+44+201504011727~ubuntu14.10.1/debian/changelog --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/debian/changelog 2015-03-23 12:46:27.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/debian/changelog 2015-04-01 17:27:23.000000000 +0000 @@ -1,8 +1,8 @@ -valentina (0.3.0+43+201503231246~ubuntu14.10.1) utopic; urgency=low +valentina (0.3.0+44+201504011727~ubuntu14.10.1) utopic; urgency=low * Auto build. - -- Roman Mon, 23 Mar 2015 12:46:27 +0000 + -- Roman Wed, 01 Apr 2015 17:27:23 +0000 valentina (0.3.0) trusty; urgency=low diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/debian/control valentina-0.3.0+44+201504011727~ubuntu14.10.1/debian/control --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/debian/control 2015-03-23 12:46:26.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/debian/control 2015-04-01 17:27:21.000000000 +0000 @@ -3,20 +3,20 @@ Priority: optional Maintainer: Roman Telezhynskyi Build-Depends: debhelper (>= 8.0.0), - qtbase5-dev (>= 5.2.1), - libqt5svg5-dev (>= 5.2.1), + qtbase5-dev (>= 5.0.0), + libqt5svg5-dev (>= 5.0.0), ccache, g++ (>= 4.6.0), - qt5-default (>= 5.2.1), - qttools5-dev-tools (>= 5.2.1), - libqt5xmlpatterns5-dev (>= 5.2.1) + qt5-default (>= 5.0.0), + qttools5-dev-tools (>= 5.0.0), + libqt5xmlpatterns5-dev (>= 5.0.0) Standards-Version: 3.9.5 Homepage: http://www.valentina-project.org/ Vcs-Browser: https://bitbucket.org/dismine/valentina Package: valentina Architecture: i386 amd64 -Depends: libc6 (>= 2.4), libgcc1 (>= 1:4.1.1), libqt5core5a (>= 5.2.0), libqt5gui5 (>= 5.2.0) | libqt5gui5-gles (>= 5.2.0), libqt5printsupport5 (>= 5.2.0), libqt5svg5 (>= 5.2.0), libqt5widgets5 (>= 5.2.0), libqt5xml5 (>= 5.2.0), libqt5xmlpatterns5 (>= 5.2.0), libstdc++6 (>= 4.6), xpdf +Depends: libc6 (>= 2.4), libgcc1 (>= 1:4.1.1), libqt5core5a (>= 5.0.0), libqt5gui5 (>= 5.0.0) | libqt5gui5-gles (>= 5.0.0), libqt5printsupport5 (>= 5.0.0), libqt5svg5 (>= 5.0.0), libqt5widgets5 (>= 5.0.0), libqt5xml5 (>= 5.0.0), libqt5xmlpatterns5 (>= 5.0.0), libstdc++6 (>= 4.6), xpdf Description: Pattern making program. Valentina is a cross-platform patternmaking program which allows designers to create and model patterns of clothing. This software allows pattern diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/dist/debian/changelog valentina-0.3.0+44+201504011727~ubuntu14.10.1/dist/debian/changelog --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/dist/debian/changelog 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/dist/debian/changelog 2015-04-01 17:27:18.000000000 +0000 @@ -1,4 +1,4 @@ -valentina (0.2.9) trusty; urgency=low +valentina (0.3.0) trusty; urgency=low * Auto build. diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/dist/debian/control valentina-0.3.0+44+201504011727~ubuntu14.10.1/dist/debian/control --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/dist/debian/control 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/dist/debian/control 2015-04-01 17:27:18.000000000 +0000 @@ -3,20 +3,20 @@ Priority: optional Maintainer: Roman Telezhynskyi Build-Depends: debhelper (>= 8.0.0), - qtbase5-dev (>= 5.2.1), - libqt5svg5-dev (>= 5.2.1), + qtbase5-dev (>= 5.0.0), + libqt5svg5-dev (>= 5.0.0), ccache, g++ (>= 4.6.0), - qt5-default (>= 5.2.1), - qttools5-dev-tools (>= 5.2.1), - libqt5xmlpatterns5-dev (>= 5.2.1) + qt5-default (>= 5.0.0), + qttools5-dev-tools (>= 5.0.0), + libqt5xmlpatterns5-dev (>= 5.0.0) Standards-Version: 3.9.5 Homepage: http://www.valentina-project.org/ Vcs-Browser: https://bitbucket.org/dismine/valentina Package: valentina Architecture: i386 amd64 -Depends: libc6 (>= 2.4), libgcc1 (>= 1:4.1.1), libqt5core5a (>= 5.2.0), libqt5gui5 (>= 5.2.0) | libqt5gui5-gles (>= 5.2.0), libqt5printsupport5 (>= 5.2.0), libqt5svg5 (>= 5.2.0), libqt5widgets5 (>= 5.2.0), libqt5xml5 (>= 5.2.0), libqt5xmlpatterns5 (>= 5.2.0), libstdc++6 (>= 4.6), xpdf +Depends: libc6 (>= 2.4), libgcc1 (>= 1:4.1.1), libqt5core5a (>= 5.0.0), libqt5gui5 (>= 5.0.0) | libqt5gui5-gles (>= 5.0.0), libqt5printsupport5 (>= 5.0.0), libqt5svg5 (>= 5.0.0), libqt5widgets5 (>= 5.0.0), libqt5xml5 (>= 5.0.0), libqt5xmlpatterns5 (>= 5.0.0), libstdc++6 (>= 4.6), xpdf Description: Pattern making program. Valentina is a cross-platform patternmaking program which allows designers to create and model patterns of clothing. This software allows pattern diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/dist/rpm/_service valentina-0.3.0+44+201504011727~ubuntu14.10.1/dist/rpm/_service --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/dist/rpm/_service 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/dist/rpm/_service 2015-04-01 17:27:18.000000000 +0000 @@ -1,7 +1,7 @@ https://github.com/dismine/Valentina.git - 0.2.8 + 0.3.0 valentina git %at diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/dist/rpm/valentina.spec valentina-0.3.0+44+201504011727~ubuntu14.10.1/dist/rpm/valentina.spec --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/dist/rpm/valentina.spec 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/dist/rpm/valentina.spec 2015-04-01 17:27:18.000000000 +0000 @@ -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) @@ -8,10 +12,13 @@ BuildRequires: pkgconfig(Qt5PrintSupport) BuildRequires: pkgconfig(Qt5Widgets) 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 +BuildRequires: qt5-qtxmlpatterns-devel >= 5.0.0 +BuildRequires: qt5-qtsvg-devel >= 5.0.0 +BuildRequires: qt5-qttools-devel >= 5.0.0 + +Requires: qt5-qtsvg >= 5.0.0 +Requires: qt5-qtbase-gui >= 5.0.0 +Requires: qt5-qtxmlpatterns >= 5.0.0 %endif # SUSE Specifics @@ -21,21 +28,31 @@ BuildRequires: libQt5Svg-devel BuildRequires: libqt5-qtxmlpatterns-devel BuildRequires: libqt5-linguist-devel -BuildRequires: ccache BuildRequires: update-desktop-files %endif -Version: 0.2.9 +Requires: poppler-utils + +Version: 0.3.0 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 +# 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 @@ %{__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 @@ %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 @@ %clean [ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot} -%post -ldconfig - %changelog * Mon Dec 22 2014 Roman Telezhinskyi - Initial build - - diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/README.txt valentina-0.3.0+44+201504011727~ubuntu14.10.1/README.txt --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/README.txt 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/README.txt 2015-04-01 17:27:18.000000000 +0000 @@ -1,96 +1,96 @@ -Pattern making program -Author Roman Telezhynskyi -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 \ No newline at end of file +Pattern making program +Author Roman Telezhynskyi +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 diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/share/translations/valentina_cs_CZ.ts valentina-0.3.0+44+201504011727~ubuntu14.10.1/share/translations/valentina_cs_CZ.ts --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/share/translations/valentina_cs_CZ.ts 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/share/translations/valentina_cs_CZ.ts 2015-04-01 17:27:18.000000000 +0000 @@ -193,6 +193,14 @@ After each crash Valentina collect information that may help us fix a problem. We do not collect any personal information. Find more about what <a href="https://bitbucket.org/dismine/valentina/wiki/manual/Crash_reports">kind of information</a> we collect. Po každém pádu Valentina sbírá informace, které nám mohou pomoci problém opravit. Nesbíráme žádné osobní údaje. Podívejte se, jaký <a href="https://bitbucket.org/dismine/valentina/wiki/manual/Crash_reports">typ informací</a> sbíráme. + + Pattern Editing + + + + Confirm item deletion + + DelTool @@ -253,10 +261,6 @@ DialogAlongLine - Point along line - Bod podél čáry - - Length Délka @@ -265,10 +269,6 @@ Vložit proměnnou do vzorce - Calculate value - Vypočítat hodnotu - - Value of length Hodnota délky @@ -372,10 +372,6 @@ Vložit proměnnou do vzorce - Calculate value - Vypočítat hodnotu - - Value of radius Hodnota poloměru @@ -456,10 +452,6 @@ Proměnné - Value of angle of line. - Hodnota úhlu čáry. - - Error Chyba @@ -479,10 +471,6 @@ DialogBisector - Bisector - Osa souměrnosti úhlu - - Length Délka @@ -491,10 +479,6 @@ Vložit označenou proměnnou do vzorce - Calculate value - Vypočítat hodnotu - - Value of length Hodnota délky @@ -598,18 +582,10 @@ DialogCurveIntersectAxis - Curve intersect axis - Osa průsečíku křivky - - Angle Úhel - Calculate value - Vypočítat hodnotu - - Value of angle Hodnota úhlu @@ -622,10 +598,6 @@ Bod osy - First point of line - První bod čáry - - Curve Křivka @@ -701,18 +673,10 @@ DialogCutArc - Cut arc - Vyjmout oblouk - - Length Délka - Calculate value - Vypočítat hodnotu - - Value of length Hodnota délky @@ -729,10 +693,6 @@ Oblouk - Selected curve - Vybraná křivka - - Point label Štítek bodu @@ -792,18 +752,10 @@ DialogCutSpline - Cut curve - Vyjmout úhel - - Length Délka - Calculate value - Vypočítat hodnotu - - Value of length Hodnota délky @@ -879,18 +831,10 @@ DialogCutSplinePath - Cut curve path - Vyjmout cestu křivky - - Length Délka - Calculate value - Vypočítat hodnotu - - Value of length Hodnota délky @@ -1033,10 +977,6 @@ Vložit proměnnou do vzorce - Calculate value - Vypočítat hodnotu - - Value of first angle Hodnota prvního úhlu @@ -1092,18 +1032,10 @@ DialogEndLine - Point in the end of a line - Bod na konci čáry - - Length Délka - Calculate value - Vypočítat hodnotu - - Value of length Hodnota délky @@ -1191,10 +1123,6 @@ DialogHeight - Height - Výška - - Point label Štítek bodu @@ -1622,10 +1550,6 @@ - ... - ... - - Rotate workpiece @@ -1685,10 +1609,6 @@ DialogLine - Line - Čára - - First point První bod @@ -1720,10 +1640,6 @@ DialogLineIntersect - Intersection of lines - Průsečík čar - - Point label Štítek bodu @@ -1763,18 +1679,10 @@ DialogLineIntersectAxis - Line intersect axis - Osa průsečíku čáry - - Angle Úhel - Calculate value - Vypočítat hodnotu - - Value of angle Hodnota úhlu @@ -1905,10 +1813,6 @@ DialogNormal - Normal - Kolmice - - Length Délka @@ -1917,10 +1821,6 @@ Vložit proměnnou do vzorce - Calculate value - Vypočítat hodnotu - - Value of length Hodnota délky @@ -2186,10 +2086,6 @@ DialogPointOfContact - Point of contact - Bod dotyku - - Radius Poloměr @@ -2198,10 +2094,6 @@ Vložit proměnnou do vzorce - Calculate value - Vypočítat hodnotu - - Value of radius Hodnota poloměru @@ -2281,34 +2173,18 @@ DialogPointOfIntersection - Point of intersection - Bod průsečíku - - Point label Štítek bodu - vertical point - svislý bod - - First point of angle První bod úhlu - horizontal point - vodorovný bod - - Second point of angle Druhý bod úhlu - Select point horizontally - Vybrat bod vodorovně - - Point from X and Y of two other points @@ -2328,10 +2204,6 @@ DialogShoulderPoint - Point of shoulder - Bod ramene - - Length Délka @@ -2340,10 +2212,6 @@ Vložit proměnnou do vzorce - Calculate value - Vypočítat hodnotu - - Value of length Hodnota délky @@ -2462,10 +2330,6 @@ DialogSpline - Curve - Křivka - - First point První bod @@ -2618,10 +2482,6 @@ DialogTriangle - Triangle - Trojúhelník - - Point label Štítek bodu @@ -2700,33 +2560,53 @@ DialogUnionDetails - Union details - Sjednotit detaily - - <html><head/><body><p>Do you really want union details?</p></body></html> <html><head/><body><p>Opravdu chcete sjednotit detaily?</p></body></html> Select first point - Vybrat první bod + Vybrat první bod Select second point - Vybrat druhý bod + Vybrat druhý bod Select another second point - Vybrat jiný druhý bod + Vybrat jiný druhý bod Select detail - Vybrat detail + Vybrat detail Union tool + + Select a first point + + + + Workpiece should have at least two points and three objects + + + + Select a second point + + + + Select a unique point + + + + Select a detail + + + + Select a point on edge + + Functions @@ -2882,14 +2762,6 @@ Bod podél pravého úhlu - Special point on shoulder. - Zvláštní bod na rameni. - - - Tool triangle. - Nástroj trojúhelník. - - Perpendicular point along line Bod v pravém úhlu podél čáry @@ -2898,14 +2770,6 @@ Bod podél osy úhlu - Point at intersection of arc and line. - Bod v průsečíku oblouku a čáry. - - - Tool to make point from x & y of two other points. - Nástroj na vytvoření bodu z x a y dvou jiných bodů. - - Point at distance and angle Bod ve vzdálenosti a úhlu @@ -2914,10 +2778,6 @@ Bod ve vzdálenosti podél čáry - Point of intersection line and axis - Bod průsečíku čáry a úhlu - - ... ... @@ -2946,22 +2806,6 @@ Křivka - Curve tool. - Nástroj křivky. - - - Tool for path curve. - Nástroj pro křivku cesty. - - - Tool for segmenting a curve. - Nástroj pro rozdělení křivky. - - - Tool segment a pathed curve. - Nástroj pro rozdělení cesty křivky. - - Tools for creating arcs. Nástroje na vytváření oblouků. @@ -2970,14 +2814,6 @@ Oblouk - Arc tool. - Nástroj oblouku. - - - Cut arc tool. - Nástroj pro vyjmutí oblouku. - - Tools for creating details. Nástroje pro vytváření detailů. @@ -2986,14 +2822,6 @@ Detail - Tool new detail. - Nástroj pro nový detail. - - - Tool for union two details. - Nástroj pro spojení dvou detailů. - - &File &Soubor @@ -3324,10 +3152,6 @@ Vybrat první bod osy - Select point vertically - Vybrat bod svisle - - Select detail Vybrat detail @@ -5961,22 +5785,6 @@ Uložit rozvržení - Next - Další - - - Next detail - Další detail - - - Turn - Otočit - - - Turn the detail 90 degrees - Otočit detail o 90 stupňů - - Stop Zastavit @@ -5985,26 +5793,6 @@ Zastavit kladení - Enlarge letter - Zvětšit list - - - Enlarge the length of the sheet - Zvětšit délku listu - - - Reduce sheet - Zmenšit list - - - Reduce the length of the sheet - Zmenšit délku listu - - - Mirroring - Zrcadlení - - Zoom In Přiblížit @@ -6013,18 +5801,6 @@ Oddálit - 0 details left. - Zbylo 0 detailů. - - - Collisions not found. - Kolize nenalezeny. - - - %1 details left. - Zbylo %1 detailů. - - untitled bez názvu @@ -6049,10 +5825,6 @@ Soubory EPS (*.eps) - Collisions found. - Kolize nalezeny. - - Creating file '%1' failed! %2 Vytvoření souboru '%1' se nezdařilo! %2 @@ -6074,6 +5846,21 @@ + Utils::CheckableMessageBox + + Do not ask again + + + + Do not &ask again + + + + Do not &show again + + + + VAbstractConverter Error creation backup file: %1. @@ -6116,11 +5903,11 @@ VAbstractTool Confirm the deletion. - Potvrďte smazání. + Potvrďte smazání. Do you really want delete? - Opravdu chcete smazat? + Opravdu chcete smazat? black @@ -6150,6 +5937,14 @@ yellow + + Confirm deletion + + + + Do you really want to delete? + + VApplication diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/share/translations/valentina_de_DE.ts valentina-0.3.0+44+201504011727~ubuntu14.10.1/share/translations/valentina_de_DE.ts --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/share/translations/valentina_de_DE.ts 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/share/translations/valentina_de_DE.ts 2015-04-01 17:27:18.000000000 +0000 @@ -193,6 +193,14 @@ After each crash Valentina collect information that may help us fix a problem. We do not collect any personal information. Find more about what <a href="https://bitbucket.org/dismine/valentina/wiki/manual/Crash_reports">kind of information</a> we collect. Nach jedem Absturz stellt Valentina Informationen zusammen, die helfen können, das Problem zu beheben. Es werden keine persönlichen Daten übertragen. Finde mehr darüber heraus, <a href="https://bitbucket.org/dismine/valentina/wiki/manual/Crash_reports">welche Information</a> übertragen werden. + + Pattern Editing + + + + Confirm item deletion + + DelTool @@ -253,10 +261,6 @@ DialogAlongLine - Point along line - Punkt auf einer Linie - - Length Länge @@ -265,10 +269,6 @@ Variable in die Formel einfügen - Calculate value - Wert berechnen - - Value of length Berechnete Länge @@ -372,10 +372,6 @@ Variable in die Formel einfügen - Calculate value - Wert berechnen - - Value of radius Wert des Radius @@ -456,10 +452,6 @@ Variablen - Value of angle of line. - Wert des Linenwinkels. - - Error Fehler @@ -479,10 +471,6 @@ DialogBisector - Bisector - Winkelhalbierende - - Length Länge @@ -491,10 +479,6 @@ Markierte Variable in die Formel einfügen - Calculate value - Wert berechnen - - Value of length Wert der Länge @@ -598,18 +582,10 @@ DialogCurveIntersectAxis - Curve intersect axis - Laufender Schnittpunkt auf Kurve - - Angle Winkel - Calculate value - Wert berechnen - - Value of angle Berecheter Winkel @@ -697,18 +673,10 @@ DialogCutArc - Cut arc - Kreisbogen - - Length Länge - Calculate value - Wert berechnen - - Value of length Wert der Länge @@ -725,10 +693,6 @@ Bogen - Selected curve - Ausgewählte Kurve - - Point label Bezeichnung des Punktes @@ -788,18 +752,10 @@ DialogCutSpline - Cut curve - Kurvensegment - - Length Länge - Calculate value - Wert berechnen - - Value of length Berechnete Länge @@ -875,18 +831,10 @@ DialogCutSplinePath - Cut curve path - Pfadsegment - - Length Länge - Calculate value - Wert berechnen - - Value of length Wert der Länge @@ -1029,10 +977,6 @@ Variable in die Formel einfügen - Calculate value - Wert berechnen - - Value of first angle Wert des ersten Winkels @@ -1088,18 +1032,10 @@ DialogEndLine - Point in the end of a line - Punkt mit Abstand und Winkel - - Length Länge - Calculate value - Wert berechnen - - Value of length Wert der Länge @@ -1614,10 +1550,6 @@ - ... - ... - - Rotate workpiece @@ -1677,10 +1609,6 @@ DialogLine - Line - Linie - - First point Erster Punkt @@ -1712,10 +1640,6 @@ DialogLineIntersect - Intersection of lines - Schnittpunkt von Linien - - Point label Bezeichnung des Punktes @@ -1755,18 +1679,10 @@ DialogLineIntersectAxis - Line intersect axis - Laufender Schnittpunkt auf Linie - - Angle Winkel - Calculate value - Wert berechnen - - Value of angle Berechneter Winkel @@ -1897,10 +1813,6 @@ DialogNormal - Normal - Normale - - Length Länge @@ -1909,10 +1821,6 @@ Variable in die Formel einfügen - Calculate value - Wert berechnen - - Value of length Wert der Länge @@ -2178,10 +2086,6 @@ DialogPointOfContact - Point of contact - Kontaktpunkt - - Radius Radius @@ -2190,10 +2094,6 @@ Variable in die Formel einfügen - Calculate value - Wert berechnen - - Value of radius Wert des Radius @@ -2273,34 +2173,18 @@ DialogPointOfIntersection - Point of intersection - Punkt aus Koordinaten - - Point label Bezeichnung des Punktes - vertical point - vertikaler Punkt - - First point of angle Punkt der ersten Schenkelgeraden - horizontal point - horizontaler Punkt - - Second point of angle Scheitel des Winkels - Select point horizontally - Wähle Punkt horizontal - - Point from X and Y of two other points @@ -2320,10 +2204,6 @@ DialogShoulderPoint - Point of shoulder - Spezieller Punkt an der Schulter - - Length Länge @@ -2332,10 +2212,6 @@ Variable in die Formel einfügen - Calculate value - Wert berechnen - - Value of length Wert der Länge @@ -2454,10 +2330,6 @@ DialogSpline - Curve - Kurve - - First point Erster Punkt @@ -2610,10 +2482,6 @@ DialogTriangle - Triangle - Dreieck - - Point label Bezeichnung des Punktes @@ -2692,33 +2560,53 @@ DialogUnionDetails - Union details - Details vereinigen - - <html><head/><body><p>Do you really want union details?</p></body></html> <html><head/><body><p>Soll die Details wirklich vereinigt werden?</p></body></html> Select first point - Ersten Punkt auswählen + Ersten Punkt auswählen Select second point - Zweiten Punkt auswählen + Zweiten Punkt auswählen Select another second point - Einen anderen zweiten Punkt auswählen + Einen anderen zweiten Punkt auswählen Select detail - Detail auswählen + Detail auswählen Union tool + + Select a first point + + + + Workpiece should have at least two points and three objects + + + + Select a second point + + + + Select a unique point + + + + Select a detail + + + + Select a point on edge + + Functions @@ -2874,14 +2762,6 @@ Punkt auf einer Normalen - Special point on shoulder. - Spezieller Punkt an der Schulter. - - - Tool triangle. - Werkzeug Dreieck. - - Perpendicular point along line Lotfußpunkt auf einer Linie @@ -2890,14 +2770,6 @@ Punkt entlang einer Winkelhalbierenden - Point at intersection of arc and line. - Schnittpunkt eines Bogens und einer Linie. - - - Tool to make point from x & y of two other points. - Werkzeug zum Erstellen eines Punktes aus den x- und y-Koordinaten zweier anderer Punkte. - - Point at distance and angle Punkt mit Abstand und Winkel @@ -2906,10 +2778,6 @@ Punkt in einer Distanz auf einer Linie - Point of intersection line and axis - Laufender Schnittpunkt auf Linie - - ... ... @@ -2938,22 +2806,6 @@ Kurve - Curve tool. - Kurvenverkzeug. - - - Tool for path curve. - Pfad-Werkzeug. - - - Tool for segmenting a curve. - Werkzeug zur Kurvensegmentierung. - - - Tool segment a pathed curve. - Werkzeug zur Pfadsegmentierung. - - Tools for creating arcs. Werkzeuge zur Bogenerzeugung. @@ -2962,14 +2814,6 @@ Bogen - Arc tool. - Bogenwerkzeug. - - - Cut arc tool. - Kreisbogenwerkzeug. - - Tools for creating details. Werkzeuge zur Detailerzeugung. @@ -2978,14 +2822,6 @@ Detail - Tool new detail. - Werkzeug neues Detail. - - - Tool for union two details. - Werkzeug zum zusammenfügen zweier Details. - - &File &Datei @@ -5948,22 +5784,6 @@ Layout speichern - Next - Weiter - - - Next detail - Nächstes Detail - - - Turn - Drehen - - - Turn the detail 90 degrees - Detail um 90° drehen - - Stop Stop @@ -5972,26 +5792,6 @@ Legen stoppen - Enlarge letter - Buchstaben vergrößern - - - Enlarge the length of the sheet - Länge des Blattes verlängern - - - Reduce sheet - Seite verkleinern - - - Reduce the length of the sheet - Die Länge der Seite verkleinern - - - Mirroring - Spiegeln - - Zoom In Vergrößern @@ -6000,18 +5800,6 @@ Verkleinern - 0 details left. - 0 Details übrig. - - - Collisions not found. - Kollisionen nicht gefunden. - - - %1 details left. - %1 Details übrig. - - untitled unbenannt @@ -6036,10 +5824,6 @@ EPS Dateien (*.eps) - Collisions found. - Kollisionen gefunden. - - Creating file '%1' failed! %2 Fehler beim anlegen von Datei '%1'! "%2' @@ -6061,6 +5845,21 @@ + Utils::CheckableMessageBox + + Do not ask again + + + + Do not &ask again + + + + Do not &show again + + + + VAbstractConverter Error creation backup file: %1. @@ -6103,11 +5902,11 @@ VAbstractTool Confirm the deletion. - Löschen bestätigen. + Löschen bestätigen. Do you really want delete? - Wirklich löschen? + Wirklich löschen? black @@ -6137,6 +5936,14 @@ yellow + + Confirm deletion + + + + Do you really want to delete? + + VApplication diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/share/translations/valentina_es_ES.ts valentina-0.3.0+44+201504011727~ubuntu14.10.1/share/translations/valentina_es_ES.ts --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/share/translations/valentina_es_ES.ts 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/share/translations/valentina_es_ES.ts 2015-04-01 17:27:18.000000000 +0000 @@ -191,6 +191,14 @@ After each crash Valentina collect information that may help us fix a problem. We do not collect any personal information. Find more about what <a href="https://bitbucket.org/dismine/valentina/wiki/manual/Crash_reports">kind of information</a> we collect. + kind of information <a href="https://bitbucket.org/dismine/valentina/wiki/manual/Crash_reports">kind of information</a> we collect. + + + Pattern Editing + + + + Confirm item deletion @@ -231,7 +239,7 @@ Built on %3 at %4 - + Construido sobre %3 y %4 Web site : %1 @@ -247,7 +255,7 @@ Build revision: - + Crear revisión: @@ -261,10 +269,6 @@ Insertar variable en la fórmula - Calculate value - Calcular valor - - Value of length Valor de la longitud @@ -346,11 +350,11 @@ Point at distance along line - + Punto de distancia a lo largo de la línea Line color - + Color de la línea @@ -368,10 +372,6 @@ Insertar variable en la fórmula - Calculate value - Calcular valor - - Value of radius Valor de los radios @@ -452,10 +452,6 @@ Variables - Value of angle of line. - Valor del ángulo de la línea - - Error Error @@ -469,16 +465,12 @@ Color - + Color DialogBisector - Bisector - Bisectriz - - Length Longitud @@ -487,10 +479,6 @@ Insertar variable marcada en la fórmula - Calculate value - Calcular valor - - Value of length Valor de la longitud @@ -584,28 +572,20 @@ Point along bisector - + Punto a lo largo del bisector Line color - + Color de la línea DialogCurveIntersectAxis - Curve intersect axis - Cruzar curva con eje - - Angle Ángulo - Calculate value - Calcular valor - - Value of angle Valor del ángulo @@ -618,10 +598,6 @@ Punto del eje - First point of line - Primer punto de línea - - Curve Curva @@ -683,32 +659,24 @@ Point intersect curve and axis - + Punto de intersección de la curva y el eje Axis Point - + Punto del eje Line color - + Color de la línea DialogCutArc - Cut arc - Cortar arco - - Length Longitud - Calculate value - Calcular valor - - Value of length Valor de la longitud @@ -725,10 +693,6 @@ Arco - Selected curve - Curva seleccionada - - Point label Etiqueta de punto @@ -774,32 +738,24 @@ Segment an arc - + Segmento de un arco Selected arc - + Arco seleccionado Color - + Color DialogCutSpline - Cut curve - Cortar curva - - Length Longitud - Calculate value - Calcular valor - - Value of length Valor de la longitud @@ -865,28 +821,20 @@ Segmenting a simple curve - + Segmentación de una curva simple Color - + Color DialogCutSplinePath - Cut curve path - Cortar trazado curvo - - Length Longitud - Calculate value - Calcular valor - - Value of length Valor de la longitud @@ -952,11 +900,11 @@ Segment a curved path - + Segmento de un trazado curvo Color - + Color @@ -967,7 +915,7 @@ Bias X - + Bies X cm @@ -975,7 +923,7 @@ Bias Y - + Bies Y Options @@ -987,7 +935,7 @@ Seam allowance - + Las costuras Width @@ -1003,7 +951,7 @@ Got wrong scene object. Ignore. - + Objeto equivocado en la escena. Ignorar. Reverse @@ -1011,7 +959,7 @@ Seam allowance tool - + Herramienta para las costuras @@ -1029,10 +977,6 @@ Introducir variable en la fórmula - Calculate value - Calcular valor - - Value of first angle Valor del primer ángulo @@ -1088,18 +1032,10 @@ DialogEndLine - Point in the end of a line - Punto en el final de una línea - - Length Longitud - Calculate value - Calcular valor - - Value of length Valor de la longitud @@ -1177,20 +1113,16 @@ Point at distance and angle - + Punto de distancia y ángulo Line color - + Color de la línea DialogHeight - Height - Altura - - Point label Etiqueta de punto @@ -1212,7 +1144,7 @@ Show line from first point to our point - + Mostrar línea desde primer punto hasta este punto Select first point of line @@ -1224,15 +1156,15 @@ Perpendicular point along line - + Punto Perpendicular a lo largo de la línea Base Point - + Punto base Line color - + Color de la línea @@ -1247,7 +1179,7 @@ Can't create record. - + No se puede crear registro. %1 - Base point @@ -1259,19 +1191,19 @@ %3 - Point along line %1_%2 - + %3 - Punto a lo largo de la línea %1_%2 %1 - Point of shoulder - + %1 - Punto de hombro %3 - normal to line %1_%2 - + %3 - normal a la línea %1_%2 %4 - bisector of angle %1_%2_%3 - + %4 - Bisectriz del ángulo %1_%2_%3 %5 - intersection of lines %1_%2 and %3_%4 @@ -1283,23 +1215,23 @@ Arc with center in point %1 - + Arco con centro en el punto %1 Curve point %1 - + Punto de curva %1 %4 - point of contact of arc with the center in point %1 and line %2_%3 - + %4 - punto de contacto de arco con el centro en el punto %1 y la línea %2_%3 Point of perpendicular from point %1 to line %2_%3 - + Punto de la perpendicular desde el punto %1 a la línea %2_%3 Triangle: axis %1_%2, points %3 and %4 - + Triángulo: ejes %1_%2, puntos %3 y %4 %1 - point of intersection %2 and %3 @@ -1307,23 +1239,23 @@ %1 - cut arc with center %2 - + %1 - corte del arco con el centro %2 %1 - cut curve %2_%3 - + %1 - corte de la curva %2_%3 %1 - cut curve path %2 - + %1 - corte del trazado curvo %2 %1 - point of intersection line %2_%3 and axis through point %4 - + %1 - punto de intersección de línea %2_%3 y el eje a través del punto %4 %1 - point of intersection curve and axis through point %2 - + %1 - punto de intersección de la curva y el eje a través del punto %2 @@ -1454,7 +1386,7 @@ Measurements use different units than pattern. This pattern required measurements in %1 - + Las mediciones utilizan diferentes unidades de patrón. Este patrón requiere mediciones en %1 Individual measurements (*.vit) @@ -1482,19 +1414,19 @@ Tables of Variables - + Tablas de variables Base size: %1 %3; Base height: %2 %3 - + Tamaño base: %1 %3; Altura base: %2 %3 Description: "%1" - + Descripción: "%1" Data successfully saved. - + Se han guardado los datos. @@ -1572,119 +1504,111 @@ DialogLayoutProgress Creation a layout - + Creación de un diseño <html><head/><body><p>Finding best position for worpieces. Please, waite.</p></body></html> - + <html><head/><body><p>Encontrar la mejor posición para las piezas de trabajo. Por favor, espere.</p></body></html> Couldn't prepare data for creation layout - + No se ha podido preparar los datos para la creación del diseño Critical error - + Error crítico Wrong paper size - + Medida de papel incorrecta Several workpieces left not arranged, but none of them match for paper - + Piezas de trabajo no están ordenadas, y no coinciden con el papel DialogLayoutSettings Creation a layout - + Creación de un diseño Paper size - + Medida de papel Templates: - + Plantillas: Width: - + Anchura: Height: - - - - ... - ... + Altura: Rotate workpiece - + Girar pieza de trabajo Rotate by - + Girar por degree - + grado Creation options - + Opciones de creación Layout width: - + Ancho de diseño: Shift length: - + Longitud de cambio: Principle of choosing the next workpiece - + Principio de la elección de la próxima pieza de trabajo Three groups: big, middle, small - + Tres grupos: grande, mediano, pequeño Two groups: big, small - + Dos grupos: grande, pequeño Descending area - + Área descendente Millimiters - Milímetros + Milímetros Centimeters - Centímetros + Centímetros Inches - + Pulgadas Pixels - + Píxeles DialogLine - Line - Línea - - First point Primer punto @@ -1706,20 +1630,16 @@ Line between points - + Línea entre puntos Line color - + Color de la línea DialogLineIntersect - Intersection of lines - Intersección de líneas - - Point label Etiqueta de punto @@ -1753,24 +1673,16 @@ Point at line intersection - + Punto de intersección en línea DialogLineIntersectAxis - Line intersect axis - Línea de intersección del eje - - Angle Ángulo - Calculate value - Calcular valor - - Value of angle Valor del ángulo @@ -1856,19 +1768,19 @@ Point intersect line and axis - + Punto de intersección de línea y eje Axis Point - + Punto del eje Second point of line - Segundo punto de línea + Segundo punto de la línea Line color - + Color de la línea @@ -1901,10 +1813,6 @@ DialogNormal - Normal - Normal - - Length Longitud @@ -1913,10 +1821,6 @@ Introducir variable en la fórmula - Calculate value - Calcular valor - - Value of length Valor de la longitud @@ -1994,19 +1898,19 @@ Point along perpendicular - + Punto a lo largo de la perpendicular First point of line - + Primer punto de la línea Second point of line - Segundo punto de línea + Segundo punto de la línea Line color - + Color de la línea @@ -2084,7 +1988,7 @@ Set - + Establecer Cancel @@ -2182,10 +2086,6 @@ DialogPointOfContact - Point of contact - Punto de contacto - - Radius Radios @@ -2194,10 +2094,6 @@ Introducir variable en la fórmula - Calculate value - Calcular valor - - Value of radius Valor del radio @@ -2215,7 +2111,7 @@ Select point of center of arc - Seleccionar punto del centro del arco + Seleccionar punto del centro del arco Top of the line @@ -2271,54 +2167,38 @@ Point at intersection of arc and line - + Punto de intersección del arco y la línea DialogPointOfIntersection - Point of intersection - Punto de intersección - - Point label Etiqueta de punto - vertical point - punto vertical - - First point of angle Primer punto del ángulo - horizontal point - punto horizontal - - Second point of angle Segundo punto del ángulo - Select point horizontally - Selecciona punto horizontal - - Point from X and Y of two other points - + Punto de X e Y de otros dos puntos X: vertical point - + X: punto vertical Y: horizontal point - + Y: punto horizontal Select point for Y value (horizontal) - + Seleccionar punto para el valor Y (horizontal) @@ -2332,10 +2212,6 @@ Introducir variable en la fórmula - Calculate value - Calcular valor - - Value of length Valor de la longitud @@ -2365,7 +2241,7 @@ Show line from first point to our point - + Mostrar línea desde primer punto hasta este punto Input data @@ -2417,11 +2293,11 @@ Special point on shoulder - + Punto especial en el hombro Line color - + Color de la línea @@ -2454,20 +2330,16 @@ DialogSpline - Curve - Curva - - First point Primer punto Length ratio of the first control point - + Proporción de la longitud del primer punto de control The angle of the first control point - + El ángulo del primer punto de control Second point @@ -2475,11 +2347,11 @@ Length ratio of the second control point - + Proporción de la longitud del segundo punto de control The angle of the second control point - + El ángulo del segundo punto de control Coefficient of curvature of the curve @@ -2491,11 +2363,11 @@ Simple curve - + Curva simple Color - + Color @@ -2510,19 +2382,19 @@ Length ratio of the first control point - + Proporción de la longitud del primer punto de control The angle of the first control point - + El ángulo del primer punto de control Length ratio of the second control point - + Proporción de la longitud del segundo punto de control The angle of the second control point - + El ángulo del segundo punto de control List of points @@ -2534,11 +2406,11 @@ Select point of curve path - + Seleccionar punto de trazado curvo Color - + Color @@ -2600,20 +2472,16 @@ Parser error: %1 - + Error en análisis: %1 Line Angle - + Ángulo de la línea DialogTriangle - Triangle - Triángulo - - Point label Etiqueta de punto @@ -2651,30 +2519,30 @@ Triangle tool - + Herramienta triángulo First point of the axis - + Primer punto del eje Second point of the axis - + Segundo punto del eje Second point of line - Segundo punto de línea + Segundo punto de línea DialogUndo Broken formula - + Fórmula equivocada Error while calculation formula. You can try undo last operation or fix broken formula. - + Error mientras se calculaba la fórmula. Puede deshacer la última operación o corregir la fórmula. &Undo @@ -2692,31 +2560,51 @@ DialogUnionDetails - Union details - Detalles de unión - - <html><head/><body><p>Do you really want union details?</p></body></html> - + <html><head/><body><p>Realmente quiere detalles de la unión?</p></body></html> Select first point - Selección primer punto + Selección primer punto Select second point - Selección segundo punto + Selección segundo punto Select another second point - Selección otro segundo punto + Selección otro segundo punto Select detail - Selección de detalle + Selección de detalle Union tool + herramienta de unión + + + Select a first point + + + + Workpiece should have at least two points and three objects + + + + Select a second point + + + + Select a unique point + + + + Select a detail + + + + Select a point on edge @@ -2852,7 +2740,7 @@ InternalStrings The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. - + El programa se facilita TAL CUAL, SIN GARANTÍA DE NINGÚN TIPO, INCLUYENDO LAS GARANTÍAS DE DISEÑO, COMERCIALIZACIÓN Y CONVENIENCIA PARA UN PROPÓSITO PARTICULAR. @@ -2871,31 +2759,23 @@ Point along perpendicular - - - - Tool triangle. - Herramienta triángulo + Punto a lo largo de la perpendicular Perpendicular point along line - + Punto Perpendicular a lo largo de la línea Point along bisector - + Punto a lo largo de la bisectriz Point at distance and angle - + Punto de distancia y ángulo Point at distance along line - - - - Point of intersection line and axis - Punto de intersección de línea y eje + Punto de distancia a lo largo de la línea ... @@ -2911,11 +2791,11 @@ Line between points - + Línea entre puntos Point at line intersection - + Punto de intersección en línea Tools for creating curves. @@ -2926,14 +2806,6 @@ Curva - Curve tool. - Herramienta curva. - - - Tool for path curve. - Herramienta para trazado curvo. - - Tools for creating arcs. Herramientas para crear arcos. @@ -2942,14 +2814,6 @@ Arco - Arc tool. - Herramienta arco. - - - Cut arc tool. - Herramienta cortar arco. - - Tools for creating details. Herramientas para crear detalles. @@ -2958,14 +2822,6 @@ Detalle - Tool new detail. - Herramienta nuevo detalle. - - - Tool for union two details. - Herramienta para unir dos detalles. - - &File &Archivo @@ -2987,23 +2843,23 @@ Toolbar files - + Archivos de la barra de herramientas ToolBar modes - + Modos de la barra de herramientas Toolbar pattern - + Patrón de la barra de herramientas Toolbar options - + Opciones de la barra de herramientas Toolbar tools - + Herramientas de la barra de herramientas Tool options @@ -3055,11 +2911,11 @@ Save &As... - + Guardar &Como... Save not yet saved pattern - + El patrón aún no se ha guardao Ctrl+Shift+S @@ -3131,11 +2987,11 @@ Export pattern (layout) - Exportar patrón (plantilla) + Exportar patrón (diseño) Create layout - Crear plantilla + Crear diseño Ctrl+L @@ -3171,15 +3027,15 @@ Zoom in - + Aumentar zoom zoom in - + aumentar zoom Zoom out - + Alejar zoom Edit pattern XML code @@ -3195,7 +3051,7 @@ Zoom fit best - + Encajar a mejor zoom Ctrl+= @@ -3240,7 +3096,8 @@ There is no way create individual measurements file independent on the pattern file. For opening pattern need keep both files: pattern and measurements. Do you want continue? - + No hay manera de crear mediciones individuales en un archivo independiente del archivo de patrones. +Para abrir patrón necesita tener abiertos ambos archivos. patrón y medidas.Quiere continuar? Select point @@ -3256,47 +3113,43 @@ Select first point of angle - + Selección primer punto del ángulo Select first point of first line - + Seleccionar primer punto de la primera línea Select first point curve - + Seleccionar primer punto de la curva Select simple curve - + Seleccionar curva simple Select point of center of arc - Seleccionar punto del centro del arco + Seleccionar punto del centro del arco Select point of curve path - + Seleccionar punto del trazado curvo Select curve path - + Seleccionar trazado cruzo Select points, arcs, curves clockwise. - + Seleccionar puntos, arcos, curvas a la derecha. Select base point - + Seleccionar punto base Select first point of axis - - - - Select point vertically - Selecciona punto horizontal + Seleccionar primer punto del eje Select detail @@ -3336,7 +3189,7 @@ /pattern.val - + /pattern.val Save as @@ -3352,7 +3205,7 @@ Error parsing file. - + Error analizando archivo. Error can't convert value. @@ -3364,7 +3217,7 @@ Error wrong id. - + Error en la identificación. Critical error! @@ -3372,11 +3225,11 @@ Error parsing file (std::bad_alloc). - + Error analizando archivo (std::bad_alloc). Bad id. - + Identificación incorrecta. File saved @@ -3388,7 +3241,7 @@ Unsaved change - + Cambios sin guardar The pattern has been modified. @@ -3434,7 +3287,7 @@ Valentina didn't shut down correctly. Do you want reopen files (%1) you had open? - + Valentina no se cerró correctamente. ¿Quieres volver a abrir archivos (1%) que había abierto? Reopen files. @@ -3458,79 +3311,79 @@ Special point on shoulder - + Punto especial en el hombro Triangle tool - + Herramienta triángulo Point at intersection of arc and line - + Punto de intersección del arco y la línea Point from X and Y of two other points - + Punto de X e Y de otros dos puntos Point intersect line and axis - + Punto de intersección de línea y eje Simple curve - + Curva simple Curved path - Trazado curvado + Trazado curvado Segmenting a simple curve - + Segmentación de una curva simple Segment a curved path - + Segmento de un trazado curvo Point intersect curve and axis - + Punto de intersección de la curva y el eje Segment an arc - + Segmento de un arco Point intersect arc and axis - + Punto de intersección del arco y el eje Seam allowance tool - + Herramienta para las costuras Union tool - + Herramienta de unión toolBar - Barra de herramientas + Barra de herramientas Last Tool - + Última herramienta Activate last used tool again - + Activar última herramienta usada de nuevo L - + L Select point for X value (vertical) - + Seleccionar punto para valor X (vertical) @@ -3548,102 +3401,102 @@ neck_base_girth Short measurement name. Don't use math symbols in name!!!! - + circunferencia_base_cuello head_and_neck_length Short measurement name. Don't use math symbols in name!!!! - + longitud_cabeza_y_cuello center_front_waist_length Short measurement name. Don't use math symbols in name!!!! - + longitud_cintura_central_delante center_back_waist_length Short measurement name. Don't use math symbols in name!!!! - + longitud_cintura_central_detrás shoulder_length Short measurement name. Don't use math symbols in name!!!! - + longitud_hombro side_waist_length Short measurement name. Don't use math symbols in name!!!! - + longitud_cintura_lateral trunk_length Short measurement name. Don't use math symbols in name!!!! - + longitud_tronco shoulder_girth Short measurement name. Don't use math symbols in name!!!! - + circunferencia_hombro upper_chest_girth Short measurement name. Don't use math symbols in name!!!! - + circunferencia_pecho_superior bust_girth Short measurement name. Don't use math symbols in name!!!! - + circunferencia_busto under_bust_girth Short measurement name. Don't use math symbols in name!!!! - + circunferencia_busto_inferior waist_girth Short measurement name. Don't use math symbols in name!!!! - + circunferencia_cintura high_hip_girth Short measurement name. Don't use math symbols in name!!!! - + circunferencia_cadera_arriba hip_girth Short measurement name. Don't use math symbols in name!!!! - + circunferencia_cadera upper_front_chest_width Short measurement name. Don't use math symbols in name!!!! - + anchura_pecho_superior front_chest_width Short measurement name. Don't use math symbols in name!!!! - + anchura_pecho_delante across_front_shoulder_width Short measurement name. Don't use math symbols in name!!!! - + anchura_traves_hombro_frontal across_back_shoulder_width Short measurement name. Don't use math symbols in name!!!! - + anchura_traves_hombro_detrás upper_back_width Short measurement name. Don't use math symbols in name!!!! - + anchura_espalda_superior back_width Short measurement name. Don't use math symbols in name!!!! - + anchura_espalda bustpoint_to_bustpoint @@ -3663,7 +3516,7 @@ crotch_length Short measurement name. Don't use math symbols in name!!!! - + longitud_entrepierna rise_height @@ -3673,152 +3526,152 @@ shoulder_drop Short measurement name. Don't use math symbols in name!!!! - + caída_hombro shoulder_slope_degrees Short measurement name. Don't use math symbols in name!!!! - + grados_pendiente_hombro front_shoulder_slope_length Short measurement name. Don't use math symbols in name!!!! - + longitud_pendiente_hombro_delante back_shoulder_slope_length Short measurement name. Don't use math symbols in name!!!! - + longitud_pendiente_hombro_detrás front_shoulder_to_waist_length Short measurement name. Don't use math symbols in name!!!! - + longitud_hombro_hasta_cintura_delante back_shoulder_to_waist_length Short measurement name. Don't use math symbols in name!!!! - + longitud_hombro_hasta_cintura_detrás front_neck_arc Short measurement name. Don't use math symbols in name!!!! - + arco_cuello_delante back_neck_arc Short measurement name. Don't use math symbols in name!!!! - + arco_cuello_detrás front_upper_chest_arc Short measurement name. Don't use math symbols in name!!!! - + arco_superior_cuello_delante back_upper_chest_arc Short measurement name. Don't use math symbols in name!!!! - + arco_superior_cuello_detrás front_waist_arc Short measurement name. Don't use math symbols in name!!!! - + arco_cintura_delante back_waist_arc Short measurement name. Don't use math symbols in name!!!! - + arco_cintura_detrás front_upper_hip_arc Short measurement name. Don't use math symbols in name!!!! - + arco_cadera_superior_delante back_upper_hip_arc Short measurement name. Don't use math symbols in name!!!! - + arco_cadera_superior_detrás front_hip_arc Short measurement name. Don't use math symbols in name!!!! - + arco_cadera_delante back_hip_arc Short measurement name. Don't use math symbols in name!!!! - + arco_cadera_detrás chest_slope Short measurement name. Don't use math symbols in name!!!! - + pendiente_pecho back_slope Short measurement name. Don't use math symbols in name!!!! - + pendiente_detrás front_waist_slope Short measurement name. Don't use math symbols in name!!!! - + pendiente_cintura_delante back_waist_slope Short measurement name. Don't use math symbols in name!!!! - + pendiente_cintura_detrás front_neck_to_upper_chest_height Short measurement name. Don't use math symbols in name!!!! - + altura_cuello_delante_hasta_pecho_superior front_neck_to_bust_height Short measurement name. Don't use math symbols in name!!!! - + anchura_cuello_delante_hasta_busto front_waist_to_upper_chest Short measurement name. Don't use math symbols in name!!!! - + delante_cintura_hasta_pecho_superior front_waist_to_lower_breast Short measurement name. Don't use math symbols in name!!!! - + delante_cintura_hasta_pecho_inferior back_waist_to_upper_chest Short measurement name. Don't use math symbols in name!!!! - + detrás_cintura_hast_pecho_superior strap_length Short measurement name. Don't use math symbols in name!!!! - + longitud_tirante armscye_girth Short measurement name. Don't use math symbols in name!!!! - + circunferencia_entremangas elbow_girth Short measurement name. Don't use math symbols in name!!!! - + circunferencia_codo upper_arm_girth Short measurement name. Don't use math symbols in name!!!! - + circunferencia_superior_brazo wrist_girth Short measurement name. Don't use math symbols in name!!!! - + circunferencia_muñeca scye_depth @@ -3828,172 +3681,172 @@ shoulder_and_arm_length Short measurement name. Don't use math symbols in name!!!! - + longitud_hombro_y_brazo underarm_length Short measurement name. Don't use math symbols in name!!!! - + longitud_axila cervicale_to_wrist_length Short measurement name. Don't use math symbols in name!!!! - + longitud_cuello_hasta_muñeca shoulder_to_elbow_length Short measurement name. Don't use math symbols in name!!!! - + longitud_hombro_hasta_codo arm_length Short measurement name. Don't use math symbols in name!!!! - + longitud_brazo hand_width Short measurement name. Don't use math symbols in name!!!! - + ancho_mano hand_length Short measurement name. Don't use math symbols in name!!!! - + longitud_mano hand_girth Short measurement name. Don't use math symbols in name!!!! - + circunferencia_mano thigh_girth Short measurement name. Don't use math symbols in name!!!! - + circunferencia_muslo mid_thigh_girth Short measurement name. Don't use math symbols in name!!!! - + circunferencia_muslo_medio knee_girth Short measurement name. Don't use math symbols in name!!!! - + circunferencia_rodilla calf_girth Short measurement name. Don't use math symbols in name!!!! - + circunferencia_pantorrila ankle_girth Short measurement name. Don't use math symbols in name!!!! - + circunferencia_tobillo knee_height Short measurement name. Don't use math symbols in name!!!! - + altura_rodilla ankle_height Short measurement name. Don't use math symbols in name!!!! - + altura_tobillo foot_width Short measurement name. Don't use math symbols in name!!!! - + ancho_pie foot_length Short measurement name. Don't use math symbols in name!!!! - + longitud_pie height Short measurement name. Don't use math symbols in name!!!! - + altura cervicale_height Short measurement name. Don't use math symbols in name!!!! - + altura_cuello cervicale_to_knee_height Short measurement name. Don't use math symbols in name!!!! - + altura_cuello_hasta_rodilla waist_height Short measurement name. Don't use math symbols in name!!!! - + altura_cintura high_hip_height Short measurement name. Don't use math symbols in name!!!! - + altura_cadera_alta hip_height Short measurement name. Don't use math symbols in name!!!! - + altura_cadera waist_to_hip_height Short measurement name. Don't use math symbols in name!!!! - + altura_cintura_hasta_cadera waist_to_knee_height Short measurement name. Don't use math symbols in name!!!! - + altura_cintura_hasta_rodilla crotch_height Short measurement name. Don't use math symbols in name!!!! - + altura_entrepierna size Short measurement name. Don't use math symbols in name!!!! - + tamaño height_front_neck_base_point Short measurement name. Don't use math symbols in name!!!! - + altura_delante_cuello_punto_partida height_base_neck_side_point Short measurement name. Don't use math symbols in name!!!! - + altura_detrás_cuello_punto_partida height_shoulder_point Short measurement name. Don't use math symbols in name!!!! - + altura_punto_hombro height_nipple_point Short measurement name. Don't use math symbols in name!!!! - + altura_punto_pezón height_back_angle_axilla Short measurement name. Don't use math symbols in name!!!! - + altura_ángulo_posterior_axila height_scapular_point Short measurement name. Don't use math symbols in name!!!! - + altura_punto_escapulario height_under_buttock_folds Short measurement name. Don't use math symbols in name!!!! - + altura_sobre_pliegue_nalga hips_excluding_protruding_abdomen @@ -4626,7 +4479,7 @@ Size Full measurement description - Tamaño + Tamaño Height of the point base of the neck in front @@ -5294,7 +5147,7 @@ Size Full measurement name - Tamaño + Tamaño Height front neck base point @@ -5573,11 +5426,11 @@ Path that use Valentina - + Directorios que usa Valentina Default - + Defecto Edit @@ -5589,7 +5442,7 @@ Path - + Directorio Individual measurements @@ -5601,11 +5454,11 @@ Standard measurements - + Medidas estándar Layout - + Diseño @@ -5650,7 +5503,7 @@ in inch - + in @@ -5861,7 +5714,7 @@ Parser error. Math parser error messages. - + Error en análisis Decimal separator is identic to function argument separator. @@ -5881,7 +5734,7 @@ The "$TOK$" operator must be preceeded by a closing bracket. Math parser error messages. Left untouched "$TOK$" - + El operador "$TOK$" tiene que estar precedido de paréntesis cerrados. @@ -5903,7 +5756,7 @@ SaveDetailOptions Save detail option - + Guardar opción de detalle @@ -5917,7 +5770,7 @@ TableWindow Create a layout - Crear una plantilla + Crear un diseño toolBar @@ -5929,15 +5782,7 @@ Save layout - Guardar plantilla - - - Next - Siguiente - - - Next detail - Detalle siguiente + Guardar diseño Stop @@ -5949,11 +5794,11 @@ Zoom In - + Aumentar zoom Zoom Out - + Alejar zoom untitled @@ -5993,10 +5838,25 @@ Layout pages - + Páginas de diseño Layout + Diseño + + + + Utils::CheckableMessageBox + + Do not ask again + + + + Do not &ask again + + + + Do not &show again @@ -6043,38 +5903,46 @@ VAbstractTool Confirm the deletion. - Confirmar borrado + Confirmar borrado Do you really want delete? - Realmente quiere borrarlo? + Realmente quiere borrarlo? black - + negro green - + verde blue - + azul dark red - + rojo oscuro dark green - + verde oscuro dark blue - + azul oscuro yellow + amarillo + + + Confirm deletion + + + + Do you really want to delete? @@ -6255,19 +6123,19 @@ Error parsing file. - + Error analizando archivo. Error can't convert value. - Error no se puede convertir valor. + Error no se puede convertir valor. Error empty parameter. - Error parámetro vacío. + Error parámetro vacío. Error wrong id. - + Error en la identificación. Critical error! @@ -6275,7 +6143,7 @@ Error parsing file (std::bad_alloc). - + Error analizando archivo (std::bad_alloc). Error creating or updating detail @@ -6450,11 +6318,11 @@ Point at distance and angle - + Punto de distancia y ángulo Line type - + Tipo de línea Length @@ -6466,7 +6334,7 @@ Point at distance along line - + Punto de distancia a lo largo de la línea Arc @@ -6502,27 +6370,27 @@ Perpendicular point along line - + Punto Perpendicular a lo largo de la línea Line between points - + Línea entre puntos Point at line intersection - + Punto de intersección en línea Point along perpendicular - + Punto a lo largo de la perpendicular Additional angle degrees - Grados adicionales de ángulo + Grados adicionales de ángulo Point at intersection of arc and line - + Punto de intersección del arco y la línea Tool to make point from x & y of two other points @@ -6530,7 +6398,7 @@ Special point on shoulder - + Punto especial en el hombro Curve tool @@ -6554,11 +6422,11 @@ Line color - + Color de la línea Color - + Color Point intersection curve and axis diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/share/translations/valentina_fi_FI.ts valentina-0.3.0+44+201504011727~ubuntu14.10.1/share/translations/valentina_fi_FI.ts --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/share/translations/valentina_fi_FI.ts 1970-01-01 00:00:00.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/share/translations/valentina_fi_FI.ts 2015-04-01 17:27:18.000000000 +0000 @@ -0,0 +1,6501 @@ + + + + + AddDet + + Add detail + Lisää yksityiskohta + + + + AddPatternPiece + + Add pattern piece %1 + Lisää kaava %1 + + + + AddToCalc + + Add object + Lisää objecti + + + + AddUnionDetails + + Add union details + Lisää unionin yksityiskohdat + + + + CommunityPage + + Server + Palvelin + + + Server name/IP + Palvelimen nimi/IP + + + Secure connection + Suojattu yhteys + + + Proxy settings + Välittävän palvelimen asetukset + + + Use Proxy + Käyttäjä välittäjäpalvelinta + + + Proxy address + Välittäjäpalvelimen osoite + + + Proxy port + Välittäjäpalvelimen portti + + + Proxy user + Välittäjäpalvelimen käyttäjätunnus + + + Proxy pass + Välittäjäpalvelimen salasana + + + User settings + Käyttäjän asetukset + + + User Name + Käyttäjätunnus + + + Save password + Tallenna salasana + + + Password + Salasana + + + + ConfigDialog + + Apply + Toteuta + + + &Cancel + &Peru + + + &Ok + %Ok + + + Config Dialog + Konfigurointi dialogi + + + Configuration + Asetukset + + + Pattern + Kaava + + + Community + Yhteisö + + + Paths + Polut + + + + ConfigurationPage + + Setup user interface language updated and will be used the next time start + Asetusten käyttöliittymän kieli päivitetty. Päivitys otetaan käyttöön uudelleen käynnistyksen jälkeen. + + + Default unit updated and will be used the next pattern creation + Oletusarvoinen yksikkö päivitetty ja otetaan käyttöön seuraavan kaavan luonnin yhteydessä + + + Save + Tallenna + + + Auto-save modified pattern + Tallenna automaattisesti muokattu kaava + + + min + min + + + Interval: + Väli: + + + Language + Kieli + + + GUI language + GUI kieli + + + Decimal separator parts + Desimaalierotin osat + + + With OS options (%1) + Käyttäen käyttöjärjestelmä asetusta (%1) + + + Default unit + Oletusarvoinen mittayksikkö + + + Centimeters + senttimetriä + + + Millimiters + millimetriä + + + Inches + tuumaa + + + Label language + Nimilappujen kieli + + + Send crash reports + Lähetä kaatumisraportteja + + + Send crash reports (recommended) + Lähetä kaatumisraportteja (suositus) + + + After each crash Valentina collect information that may help us fix a problem. We do not collect any personal information. Find more about what <a href="https://bitbucket.org/dismine/valentina/wiki/manual/Crash_reports">kind of information</a> we collect. + Valentina kerää tietoa jokaisesta ohjelman kaatumisesta. Ohjelma ei kerää henkilökohtaisia tietoja. Lisätietoa kerätystä <a href="https://bitbucket.org/dismine/valentina/wiki/manual/Crash_reports">tiedosta. </a> + + + Pattern Editing + + + + Confirm item deletion + + + + + DelTool + + Delete tool + Poistotyökalu + + + + DeleteDetail + + Delete tool + Poisto työkalu + + + + DeletePatternPiece + + Delete pattern piece %1 + Poista kaava %1 + + + + DialogAboutApp + + About Valentina + Tietoja Valentinasta + + + Valentina version + Valentina versio + + + Contributors + Avustajat + + + Built on %3 at %4 + Käännetty %3 klo %4 + + + Web site : %1 + Kotisivu: %1 + + + Warning + Varoitus + + + Cannot open your default browser + Oletus selaimen aukaiseminen epäonnistui + + + Build revision: + Käännös versio: + + + + DialogAlongLine + + Length + Pituus + + + Insert variable into the formula + Lisää muuttuja kaavaan + + + Value of length + Pituuden arvo + + + <html><head/><body><p>Show full calculation in message box</p></body></html> + <html><head/><body><p>Näytä koko laskenta ikkunassa</p></body></html> + + + Point label + Pistenimilappu + + + First point + Ensimmäinen piste + + + First point of line + Viivan ensimmäinen piste + + + Second point + Toinen piste + + + Second point of line + Viivan toinen piste + + + Type of line + Viivan tyyppi + + + Show line from first point to this point + Näytä viiva ensimmäisestä pisteestä tähän pisteeseen + + + Input data + Syöttötieto + + + Size and height + Koko ja korkeus + + + Measurements + Mitat + + + Increments + Lisäys + + + Length of lines + Viivan pituus + + + Length of arcs + Kaarenpituus + + + Length of curves + Käyrän pituus + + + Angle of lines + Viivojen kulma + + + Hide empty measurements + Piilota tyhjät mittaukset + + + Variables - Click twice to insert into formula + Muuttujat - Tuplaklikkaa muokataksesi matemaattistakaavaa + + + Select second point of line + Valitse viivan toinen piste + + + Point at distance along line + Piste viivaa pitkin + + + Line color + Viivan väri + + + + DialogArc + + Arc + Kaari + + + Radius + Säde + + + Insert variable into the formula + Lisää muuttuja kaavaan + + + Value of radius + Säteen arvo + + + <html><head/><body><p>Show full calculation in message box</p></body></html> + <html><head/><body><p>Näytä koko laskenta ikkunassa</p></body></html> + + + First angle + Ensimmäinen kulma + + + Insert variable into formula + Lisää muuttuja kaavaan + + + Value of first angle + Ensimmäisen kulman arvo + + + Second angle + Toinen kulma + + + Insert marked variable into formula + Lisää merkattu muuttuja matemaattiseen kaavaan + + + Value of second angle + Toisen kulma arvo + + + Center point + Keskipiste + + + Select point of center of arc + Valitse kaaren keskipiste + + + Input data + Lisää dataa + + + Size and height + Koko ja korkeus + + + Measurements + Mitat + + + Increments + Lisäys + + + Length of lines + Viivan pituus + + + Length of arcs + Kaarenpituus + + + Length of curves + Käyrän pituus + + + Angle of lines + Viivojen kulma + + + Hide empty measurements + Piilota tyhjät mittaukset + + + Variables + Muuttujat + + + Error + Virhe + + + Radius can't be negative + Säde ei voi olla negatiivinen + + + Angles equal + Yhtäsuuret kulmat + + + Color + Väri + + + + DialogBisector + + Length + Pituus + + + Insert marked variable into the formula + Lisää merkattu muuttuja matemaattiseen kaavaan + + + Value of length + Pituuden arvo + + + <html><head/><body><p>Show full calculation in message box</p></body></html> + <html><head/><body><p>Näytä koko laskenta ikkunassa</p></body></html> + + + Point label + Pistenimilappu + + + First point + Ensimmäinen piste + + + First point of angle + Kulman ensimmäinen piste + + + Second point + Toinen piste + + + Second point of angle + Kulman toinen piste + + + Third point + Kolmas piste + + + Third point of angle + Kulman kolmas piste + + + Type of line + Viivan tyyppi + + + Show line from second point to this point + Näytä viiva toisesta pisteestä tähän pisteeseen + + + Input data + Lisää dataa + + + Size and height + Koko ja korkeus + + + Measurements + Mitat + + + Increments + Lisäys + + + Length of lines + Viivan pituus + + + Length of arcs + Kaarenpituus + + + Length of curves + Käyrän pituus + + + Angle of lines + Viivojen kulma + + + Hide empty measurements + Piilota tyhjät mittaukset + + + Variables - Click twice to insert into formula + Muuttujat - Tuplaklikkaa muokataksesi matemaattistakaavaa + + + Select second point of angle + Valiste kulman toinen piste + + + Select third point of angle + Valitse kulman kolmas piste + + + Point along bisector + Piste puolikasta pitkin + + + Line color + Viivan väri + + + + DialogCurveIntersectAxis + + Angle + Kulma + + + Value of angle + Kulman arvo + + + <html><head/><body><p>Show full calculation in message box</p></body></html> + <html><head/><body><p>Näytä koko laskenta ikkunassa</p></body></html> + + + Axis point + Akselipiste + + + Curve + Käyrä + + + Point label + Pistenimilappu + + + Type of line + Viivan tyyppi + + + Show line from first point to this point + Näytä viiva ensimmäisestä pisteestä tähän pisteeseen + + + Input data + Lisää dataa + + + Size and height + Koko ja korkeus + + + Measurements + Mitat + + + Increments + Lisäys + + + Length of lines + Viivan pituus + + + Length of arcs + Kaarenpituus + + + Length of curves + Käyrän pituus + + + Angle of lines + Viivojen kulma + + + Hide empty measurements + Piilota tyhjät mittaukset + + + Variables + Muuttujat + + + Select axis point + Valitse Akselipiste + + + Point intersect curve and axis + Käyrän ja akselin leikkauspiste + + + Axis Point + Akselipiste + + + Line color + Viivan väri + + + + DialogCutArc + + Length + Pituus + + + Value of length + Pituuden arvo + + + _ + - + + + <html><head/><body><p>Show full calculation in message box</p></body></html> + <html><head/><body><p>Näytä koko laskenta ikkunassa</p></body></html> + + + Arc + Kaari + + + Point label + Pistenimilappu + + + Input data + Lisää dataa + + + Size and height + Koko ja korkeus + + + Measurements + Mitat + + + Increments + Lisäys + + + Length of lines + Viivan pituus + + + Length of arcs + Kaarenpituus + + + Length of curves + Käyrän pituus + + + Angle of lines + Viivojen kulma + + + Hide empty measurements + Piilota tyhjät mittaukset + + + Variables - Click twice to insert into formula + Muuttujat - Tuplaklikkaa muokataksesi matemaattistakaavaa + + + Segment an arc + Kaaren segmentti + + + Selected arc + Valitse kaari + + + Color + Väri + + + + DialogCutSpline + + Length + Pituus + + + Value of length + Pituuden arvo + + + _ + - + + + <html><head/><body><p>Show full calculation in message box</p></body></html> + <html><head/><body><p>Näytä koko laskenta ikkunassa</p></body></html> + + + Curve + Käyrä + + + Selected curve + Valitse käyrä + + + Point label + Pistenimilappu + + + Input data + Lisää dataa + + + Size and height + Koko ja korkeus + + + Measurements + Mitat + + + Increments + Lisäys + + + Length of lines + Viivan pituus + + + Length of arcs + Kaarenpituus + + + Length of curves + Käyrän pituus + + + Angle of lines + Viivojen kulma + + + Hide empty measurements + Piilota tyhjät mittaukset + + + Variables - Click twice to insert into formula + Muuttujat - Tuplaklikkaa muokataksesi matemaattistakaavaa + + + Segmenting a simple curve + Jaa segmentteihin yksinkertainen käyrä + + + Color + Väri + + + + DialogCutSplinePath + + Length + Pituus + + + Value of length + Pituuden arvo + + + _ + - + + + <html><head/><body><p>Show full calculation in message box</p></body></html> + <html><head/><body><p>Näytä koko laskenta ikkunassa</p></body></html> + + + Curve + Käyrä + + + Selected curve path + Valitse käyräpolku + + + Point label + Pistenimilappu + + + Input data + Lisää dataa + + + Size and height + Koko ja korkeus + + + Measurements + Mitat + + + Increments + Lisäys + + + Length of lines + Viivan pituus + + + Length of arcs + Kaarenpituus + + + Length of curves + Polun pituus + + + Angle of lines + Viivojen kulma + + + Hide empty measurements + Piilota tyhjät mittaukset + + + Variables - Click twice to insert into formula + Muuttujat - Tuplaklikkaa muokataksesi matemaattistakaavaa + + + Segment a curved path + Jaa käyrä segmentteihin + + + Color + Väri + + + + DialogDetail + + Detail + Yksityiskohta + + + Bias X + Vinouma X + + + cm + cm + + + Bias Y + Vinouma Y + + + Options + Asetukset + + + Name of detail + Yksityiskohdan nimi + + + Seam allowance + Saumavara + + + Width + Leveys + + + Closed + Suljettu + + + Delete + Poista + + + Got wrong scene object. Ignore. + Väärä kohde. Älä välitä. + + + Reverse + Käännä päinvastoin + + + Seam allowance tool + Saumavara työkalu + + + + DialogEditWrongFormula + + Edit formula + Muuta matemaattista kaavaa + + + Formula + Matemaattinen kaava + + + Insert variable into formula + Lisää muuttuja kaavaan + + + Value of first angle + Ensimmäisen kulman arvo + + + _ + _ + + + <html><head/><body><p>Show full calculation in message box</p></body></html> + <html><head/><body><p>Näytä koko laskenta ikkunassa</p></body></html> + + + Input data + Lisää dataa + + + Size and height + Koko ja korkeus + + + Measurements + Mitat + + + Increments + Lisäys + + + Length of lines + Viivan pituus + + + Length of arcs + Kaarenpituus + + + Length of curves + Polun pituus + + + Angle of lines + Viivojen kulma + + + Hide empty measurements + Piilota tyhjät mittaukset + + + Variables + Muuttujat + + + + DialogEndLine + + Length + Pituus + + + Value of length + Pituuden arvo + + + <html><head/><body><p>Show full calculation in message box</p></body></html> + <html><head/><body><p>Näytä koko laskenta ikkunassa</p></body></html> + + + Angle + Kulma + + + Value of angle + Kulman arvo + + + Base point + + + + First point of line + Viivan ensimmäinen piste + + + Point label + Pistenimilappu + + + Type of line + Viivan tyyppi + + + Show line from first point to this point + Näytä viiva ensimmäisestä pisteestä tähän pisteeseen + + + Input data + Lisää dataa + + + Size and height + Koko ja korkeus + + + Measurements + Mitat + + + Increments + Lisäys + + + Length of lines + Viivan pituus + + + Length of arcs + Kaarenpituus + + + Length of curves + Käyrän pituus + + + Angle of lines + Viivojen kulma + + + Hide empty measurements + Piilota tyhjät mittaukset + + + Variables + Muuttujat + + + Point at distance and angle + Piste viivaa pitkin + + + Line color + Viivan väri + + + + DialogHeight + + Point label + Pistenimilappu + + + Base point + + + + First point of line + Viivan ensimmäinen piste + + + Second point of line + Viivan toinen piste + + + Type of line + Viivan tyyppi + + + Show line from first point to our point + Näytä viiva ensimmäisestä pisteestä tähän pisteeseen + + + Select first point of line + Valitse viivan ensimmäinen piste + + + Select second point of line + Valitse viivan toinen piste + + + Perpendicular point along line + Kohtisuorapiste viivaa pitkin + + + Base Point + + + + Line color + Viivan väri + + + + DialogHistory + + History + Historia + + + Tool + Työkalu + + + Can't create record. + Ohjelma ei pystynyt luomaan tietuetta + + + %1 - Base point + + + + %1_%2 - Line from point %1 to point %2 + %1_%2 - Viiva pisteestä %1 pisteeseen %2 + + + %3 - Point along line %1_%2 + %3 - Piste viivaa %1_%2 pitkin + + + %1 - Point of shoulder + %1 - Olkapääpiste + + + %3 - normal to line %1_%2 + %3 - normaali viivaan %1_%2 + + + %4 - bisector of angle %1_%2_%3 + %4 - puolikkaan kulma %1_%2_%3 + + + %5 - intersection of lines %1_%2 and %3_%4 + %5 - viivojen leikkaus %1_%2 and %3_%4 + + + Curve %1_%2 + Käyrä %1_%2 + + + Arc with center in point %1 + Kaari jonka keskipiste on %1 + + + Curve point %1 + Käyrän piste %1 + + + %4 - point of contact of arc with the center in point %1 and line %2_%3 + %4 - Kaaren, jonka keskipiste on %1, kontaktipiste viivan %2_%3 kanssa + + + Point of perpendicular from point %1 to line %2_%3 + Kohtisuora viiva pisteestä %1 viivaan %2_%3 + + + Triangle: axis %1_%2, points %3 and %4 + Kolmio: akseli %1_%2, pisteissä %3 ja %4 + + + %1 - point of intersection %2 and %3 + %1 - leikkauspiste %2 ja %3 + + + %1 - cut arc with center %2 + %1 - leikkaa kaari keskipisteessä %2 + + + %1 - cut curve %2_%3 + %1 - Leikkaa käyrä %2_%3 + + + %1 - cut curve path %2 + %1 - Leikkaa käyrän polku %2 + + + %1 - point of intersection line %2_%3 and axis through point %4 + %1 - viivan %2_%3 ja akselin %4 + + + %1 - point of intersection curve and axis through point %2 + %1 - käyrän ja akselin leikkaus pisteessä %2 + + + + DialogIncrements + + Increments + Lisäys + + + Measurements + Mitat + + + Load another measurements table + Lataa toinen mittataulukko + + + Personal information + Henkilötiedot + + + Given name + Etunimi + + + Family name + Sukunimi + + + Birth date + Syntymäaika + + + Sex + Sukupuoli + + + Email + Sähköposti + + + Hide empty measurements + Piilota tyhjät mittaukset + + + Name + Nimi + + + The calculated value + Laskettu arvo + + + Base value + + + + In sizes + Koossa + + + In heights + Pituudessa + + + Description + Kuvaus + + + Lines + Viivat + + + Line + Viiva + + + Length + Pituus + + + Curves + Käyrä + + + Curve + Käyrä + + + Arcs + Kaaret + + + Arc + Kaari + + + File error. + Tiedostovirhe. + + + male + Mies + + + female + Nainen + + + Could not save GivenName + GivenName ei voitu tallentaa + + + Could not save FamilyName + FamilyName ei voitu tallentaa + + + Could not save Email + Email ei voitu tallentaa + + + Could not save Sex + Sex ei voitu tallentaa + + + Could not save BirthDate + BirthDate ei voitu tallentaa + + + Measurements use different units than pattern. This pattern required measurements in %1 + Mitat käyttävät eri mittayksikköjä kuin kaava. Tämä kaava vaatii mittayksiköksi %1 + + + Individual measurements (*.vit) + Yksilölliset mitat (*.vit) + + + Open file + Avaa tiedosto + + + Wrong units. + Väärät yksiköt. + + + Standard measurements (*.vst) + Standardi mitat (*.vst) + + + Name_%1 + Nimi_%1 + + + Can't save measurement + Mitoja ei voitu tallentaa + + + Tables of Variables + Muuttujien taulukko + + + Base size: %1 %3; Base height: %2 %3 + + + + Description: "%1" + Kuvaus: "%1" + + + Data successfully saved. + Tieto tallennettiin onnistuneesti. + + + + DialogIndividualMeasurements + + Individual measurements + Yksilölliset mitat + + + Pattern piece name + Kaavan osan nimi + + + Exist measurements + Olemassa olevat mitat + + + Path: + Polku: + + + Given name: + Etunimi: + + + Family name: + Sukunimi: + + + New measurements + Uudet mitat + + + Units: + Mittayksiköt: + + + Could not create measurements file + Mittatiedoston luominen epäonnistui + + + Please try again or change file + Kokeile uudestaan tai muuta tiedoston nimeä + + + File error. + Tiedosto virhe! + + + Individual measurements (*.vit) + Yksilölliset mitat (*.vit) + + + Open file + Avaa tiedosto + + + Where save measurements? + Minne mitat tallennetaan? + + + Centimeters + Senttimetriä + + + Millimiters + Millimetriä + + + Inches + Tuumaa + + + + DialogLayoutProgress + + Creation a layout + Luo sommittelu + + + <html><head/><body><p>Finding best position for worpieces. Please, waite.</p></body></html> + <html><head/><body><p>Etsitään parasta paikkaa kaavoille. Hetkinen</p></body></html> + + + Couldn't prepare data for creation layout + Ei voitu luoda dataa somittelun luomiseen + + + Critical error + Kriittinen virhe + + + Wrong paper size + Väärä paperin koko + + + Several workpieces left not arranged, but none of them match for paper + Useita osia ei voitu järjestää koska ne ei mahdu paperille + + + + DialogLayoutSettings + + Creation a layout + Luo sommittelu + + + Paper size + Paperin koko + + + Templates: + Mallit: + + + Width: + Leveys: + + + Height: + Korkeus: + + + Rotate workpiece + Käännä kaavaa + + + Rotate by + Käännä + + + degree + aste + + + Creation options + Luomisasetukset + + + Layout width: + Sommittelun leveys: + + + Shift length: + + + + Principle of choosing the next workpiece + Seuraavan kaavan valintaperiaate + + + Three groups: big, middle, small + Kolme ryhmää: iso, keskikokoinen, pieni + + + Two groups: big, small + Kaksi ryhmää: iso, pieni + + + Descending area + Laskeva alue + + + Millimiters + Millimetriä + + + Centimeters + Senttimetriä + + + Inches + Tuumaa + + + Pixels + Pikseliä + + + + DialogLine + + First point + Ensimmäinen piste + + + Second point + Toinen piste + + + Type of line + Viivan tyyppi + + + Show line from first point to this point + Näytä viiva ensimmäisestä pisteestä tähän pisteeseen + + + Select second point + Valitse toinen piste + + + Line between points + Pisteiden välinen viiva + + + Line color + Viivan väri + + + + DialogLineIntersect + + Point label + Pistenimilappu + + + First line + Ensimmäinen viiva + + + First point + Ensimmäinen piste + + + Second point + Toinen piste + + + Second line + Toinen viiva + + + Select second point of first line + Valitse ensimmäisen viivan toinen piste + + + Select first point of second line + Valitse toisen viivan ensimmäinen piste + + + Select second point of second line + Valitse toisen viivan toinen piste + + + Point at line intersection + Viivojen leikkauspiste + + + + DialogLineIntersectAxis + + Angle + Kulma + + + Value of angle + Kulman arvo + + + <html><head/><body><p>Show full calculation in message box</p></body></html> + <html><head/><body><p>Näytä koko laskenta ikkunassa</p></body></html> + + + Axis point + Akselipiste + + + First point of line + Viivan ensimmäinen piste + + + First line point + Viivan ensimmäinen piste + + + Second line point + Viivan toinen piste + + + Point label + Pistenimilappu + + + Type of line + Viivan tyyppi + + + Show line from first point to this point + Näytä viiva ensimmäisestä pisteestä tähän pisteeseen + + + Input data + Lisää dataa + + + Size and height + Koko ja korkeus + + + Measurements + Mitat + + + Increments + Lisäys + + + Length of lines + Viivan pituus + + + Length of arcs + Kaarenpituus + + + Length of curves + Käyrän pituus + + + Angle of lines + Viivojen kulma + + + Hide empty measurements + Piilota tyhjät mittaukset + + + Variables + Muuttujat + + + Select second point of line + Valitse viivan toinen piste + + + Select axis point + Valitse Akselipiste + + + Point intersect line and axis + Viivan ja akselin leikkauspiste + + + Axis Point + Akselipiste + + + Second point of line + Viivan toinen piste + + + Line color + Viivan väri + + + + DialogMeasurements + + Measurements + Mitat + + + <html><head/><body><p><span style=" font-size:18pt;">Please, choose pattern type.</span></p></body></html> + <html><head/><body><p><span style=" font-size:18pt;">Valitse kaavan tyyppi.</span></p></body></html> + + + Graduation + + + + Use for creation pattern standard measurement table + Luo kaava standardi mittoihin perustuen + + + Individual + Yksilö + + + Use for creation pattern individual measurements + Luo kaava yksilön mittoihin perustuen + + + + DialogNormal + + Length + Pituus + + + Insert variable into formula + Lisää muuttuja kaavaan + + + Value of length + Pituuden arvo + + + <html><head/><body><p>Show full calculation in message box</p></body></html> + <html><head/><body><p>Näytä koko laskenta ikkunassa</p></body></html> + + + Point label + Pistenimilappu + + + First point + Ensimmäinen piste + + + Second point + Toinen piste + + + Additional angle degrees + Kulman lisäasteet + + + Type of line + Viivan tyyppi + + + Show line from first point to this point + Näytä viiva ensimmäisestä pisteestä tähän pisteeseen + + + Input data + Lisää dataa + + + Size and height + Koko ja korkeus + + + Measurements + Mitat + + + Increments + Lisäys + + + Length of lines + Viivan pituus + + + Length of arcs + Kaarenpituus + + + Length of curves + Käyrän pituus + + + Angle of lines + Viivojen kulma + + + Hide empty measurements + Piilota tyhjät mittaukset + + + Variables - Click twice to insert into formula + Muuttujat - Tuplaklikkaa muokataksesi matemaattistakaavaa + + + Select second point of line + Valitse viivan toinen piste + + + Point along perpendicular + Piste kohtisuoraa pitkin + + + First point of line + Viivan ensimmäinen piste + + + Second point of line + Viivan toinen piste + + + Line color + Viivan väri + + + + DialogPatternProperties + + Pattern properties + Kaavan asetukset + + + Description + Kuvaus + + + Author name + Tekijän nimi + + + Pattern description + Kaavan kuvaus + + + For technical notes. + Muistiinpanoja. + + + Heights and Sizes + Pituudet ja koot + + + All heights (cm) + Kaikki pituudet (cm) + + + All sizes (cm) + Kaikki koot (cm) + + + + DialogPatternXmlEdit + + XML Editor + XML editori + + + Value : + Arvo: + + + Name : + Nimi : + + + <No selection> + <No selection> + + + Type : + Tyyppi : + + + Add attribute + Lisää attribuutti + + + Add son + + + + Remove attribute + Poista attribuutti + + + Remove node + Poista solmu + + + Set + Aseta + + + Cancel + Peruuta + + + Apply changes + Lisää muutokset + + + Undo last + Peru edellinen + + + Immediate apply + Lisää heti + + + Base selection + + + + All pattern pieces + Kaikki kaavan osat + + + No changes + Ei muutoksia + + + Cannot delete previously created node + Edellistä solmua ei voitu poistaa + + + No changes left + Ei muutoksia jäljellä + + + Cannot undo change + Ei voi perua muutosta + + + <no value> + <ei arvoa> + + + Unchanged + Ei muutettu + + + Cannot delete previously created attribute + Edellistä attribuuttia ei voitu poistaa + + + Node Name + Solmun nimi + + + Name: + Nmi: + + + Node Value (may be empty) + Solmun arvo (voi olla tyhjä) + + + Value: + Arvo: + + + Attribute Name + Attribuutin nimi + + + Attribute Value + Attribuutin arvo + + + No selection + Ei valintaa + + + Root node + Juurisolmu + + + Node + Solmu + + + Attribute + Attribuutti + + + + DialogPointOfContact + + Radius + Säde + + + Insert variable into formula + Lisää muuttuja kaavaan + + + Value of radius + Säteen arvo + + + <html><head/><body><p>Show full calculation in message box</p></body></html> + <html><head/><body><p>Näytä koko laskenta ikkunassa</p></body></html> + + + Point label + Pistenimilappu + + + Center of arc + Kaaren keskipiste + + + Select point of center of arc + Valitse kaaren keskipiste + + + Top of the line + Viivan yläosa + + + End of the line + Viiva päätepiste + + + Input data + Lisää dataa + + + Size and height + Koko ja korkeus + + + Measurements + Mitat + + + Increments + Lisäys + + + Length of lines + Viivojen pituus + + + Length of arcs + Kaarien pituus + + + Length of curves + Käyrän pituus + + + Angle of lines + Viivojen kulma + + + Hide empty measurements + Piilota tyhjät mittaukset + + + Variables - Click twice to insert into formula. + Muuttujat - Tuplaklikkaa muokataksesi matemaattistakaavaa + + + Select second point of line + Valitse viivan toinen piste + + + Point at intersection of arc and line + Kaaren ja viivan leikkauspiste + + + + DialogPointOfIntersection + + Point label + Pistenimilappu + + + First point of angle + Kulman ensimmäinen piste + + + Second point of angle + Kulman toinen piste + + + Point from X and Y of two other points + + + + X: vertical point + X: pystysuora piste + + + Y: horizontal point + Y: vaakasuora piste + + + Select point for Y value (horizontal) + Valitse piste Y arvolle (vaakasuora) + + + + DialogShoulderPoint + + Length + Pituus + + + Insert variable into formula + Lisää muuttuja kaavaan + + + Value of length + Pituuden arvo + + + <html><head/><body><p>Show full calculation in message box</p></body></html> + <html><head/><body><p>Näytä koko laskenta ikkunassa</p></body></html> + + + Point label + Pistenimilappu + + + First point + Ensimmäinen piste + + + Second point + Toinen piste + + + Third point + Kolmas piste + + + Type of line + Viivan tyyppi + + + Show line from first point to our point + Näytä viiva ensimmäisestä pisteestä tähän pisteeseen + + + Input data + Lisää dataa + + + Size and height + Koko ja korkeus + + + Measurements + Mitat + + + Increments + Lisäys + + + Length of lines + Viivan pituus + + + Length of arcs + Kaarien pituus + + + Length of curves + Käyrän pituus + + + Angle of lines + Viivojen kulma + + + Hide empty measurements + Piilota tyhjät mittaukset + + + Variables - Click twice to insert into formula + Muuttujat - Tuplaklikkaa muokataksesi matemaattistakaavaa + + + Select first point of line + Valitse viivan ensimmäinen piste + + + Select second point of line + Valitse viivan toinen piste + + + Special point on shoulder + Olkapään erityispiste + + + Line color + Viivan väri + + + + DialogSinglePoint + + Single point + Toinen piste + + + Coordinates on the sheet + Arkin koordinaatit + + + Coordinates + Koordinaatit + + + Y coordinate + Y koordinaatti + + + X coordinate + X koordinaatti + + + Point label + Pistenimilappu + + + + DialogSpline + + First point + Ensimmäinen piste + + + Length ratio of the first control point + Ensimmäisen kontrollipisteen pituussuhde + + + The angle of the first control point + Ensimmäisen kontrollipisteen kulma + + + Second point + Toinen piste + + + Length ratio of the second control point + Toisen kontrollipisteen pituussuhde + + + The angle of the second control point + Toisen kontrollipisteen kulma + + + Coefficient of curvature of the curve + Käyrän kaarevuuden kerroin + + + Select last point of curve + Valitse käyrän viimeinen piste + + + Simple curve + Yksinkertainen käyrä + + + Color + Väri + + + + DialogSplinePath + + Curved path + Mutkikas käyrä + + + Point of curve + Käyrän piste + + + Length ratio of the first control point + Ensimmäisen kontrollipisteen pituussuhde + + + The angle of the first control point + Ensimmäisen kontrollipisteen kulma + + + Length ratio of the second control point + Toisen kontrollipisteen pituussuhde + + + The angle of the second control point + Toisen kontrollipisteen kulma + + + List of points + Lista pisteistä + + + Coefficient of curvature of the curve + Käyrän kaarevuuden kerroin + + + Select point of curve path + Valitse käyrän piste + + + Color + Väri + + + + DialogStandardMeasurements + + Standard table + Standardi taulukko + + + Pattern piece name + Kaavan osan nimi + + + Standard measurements table + Standardi mittataulukko + + + File error. + Tiedostovirhe. + + + + DialogTool + + Error + Virhe + + + Empty field + Tyhjä sarake + + + Value can't be 0 + Arvo ei voi olla 0 + + + Value + Arvo + + + Height + Pituus + + + Size + Koko + + + Line length + Viivan pituus + + + Arc length + Kaaren pituus + + + Curve length + Käyrän pituus + + + Parser error: %1 + Jäsentämis virhe: %1 + + + Line Angle + Viiva kulma + + + + DialogTriangle + + Point label + Pistenimilappu + + + First point of axis + Viivan ensimmäinen piste + + + First point of line + Viivan ensimmäinen piste + + + Second point of axis + Viivan toinen piste + + + First point + Ensimmäinen piste + + + Second point + Toinen piste + + + Select second point of axis + Valitse akselin toinen piste + + + Select first point + Valitse ensimmäinen piste + + + Select second point + Valitse toinen piste + + + Triangle tool + Kolmio työkalu + + + First point of the axis + Akselin ensimmäinen piste + + + Second point of the axis + Akselin toinen piste + + + Second point of line + Viivan toinen piste + + + + DialogUndo + + Broken formula + Virheellinen matemaattinen kaava + + + Error while calculation formula. You can try undo last operation or fix broken formula. + Virhe kaava laskemisessa. Yritä perua viimeisin komento tai korjaa matemaattinen kaava + + + &Undo + &Peru + + + &Fix formula + &Korjaa matemaattinen kaava + + + &Cancel + &Peru + + + + DialogUnionDetails + + <html><head/><body><p>Do you really want union details?</p></body></html> + <html><head/><body><p>Haluatko todella unionin yksityiskohdat?</p></body></html> + + + Select first point + Valitse ensimmäinen piste + + + Select second point + Valitse toinen piste + + + Select another second point + Valitse eri toinen piste + + + Select detail + Valitse yksityiskohta + + + Union tool + Unioni työkalu + + + Select a first point + + + + Workpiece should have at least two points and three objects + + + + Select a second point + + + + Select a unique point + + + + Select a detail + + + + Select a point on edge + + + + + Functions + + sin + sine function + sin + + + cos + cosine function + cos + + + tan + tangens function + tan + + + asin + arcus sine function + asin + + + acos + arcus cosine function + acos + + + atan + arcus tangens function + atan + + + sinh + hyperbolic sine function + sinh + + + cosh + hyperbolic cosine + cosh + + + tanh + hyperbolic tangens function + tanh + + + asinh + hyperbolic arcus sine function + asinh + + + acosh + hyperbolic arcus tangens function + acosh + + + atanh + hyperbolic arcur tangens function + atanh + + + log2 + logarithm to the base 2 + log2 + + + log10 + logarithm to the base 10 + log10 + + + log + logarithm to the base 10 + log + + + ln + logarithm to base e (2.71828...) + ln + + + exp + e raised to the power of x + exp + + + sqrt + square root of a value + sqrt + + + sign + sign function -1 if x<0; 1 if x>0 + sign + + + rint + round to nearest integer + rint + + + abs + absolute value + abs + + + min + min of all arguments + min + + + max + max of all arguments + max + + + sum + sum of all arguments + sum + + + avg + mean value of all arguments + avg + + + + InternalStrings + + The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + Ohjelma on saatavilla sellaisena kuin se on ilman mitään takuita, mukaan lukien suunnitelun, kaupallisuuden tai tiettyyn tarkoitukseen sopivuuden suhteen. + + + + MainWindow + + Valentina + Valentina + + + Tools for creating points. + Työkaluja pisteiden luomiseen. + + + Point + Piste + + + Point along perpendicular + Piste kohtisuoraa pitkin + + + Perpendicular point along line + Kohtisuorapiste viivaa pitkin + + + Point along bisector + Piste puolikasta pitkin + + + Point at distance and angle + Piste viivaa pitkin + + + Point at distance along line + Piste viivaa pitkin + + + ... + ... + + + Tools for creating lines. + Työkaluja viivojen luomiseen. + + + Line + Viiva + + + Line between points + Pisteiden välinen viiva + + + Point at line intersection + Viivojen leikkauspiste + + + Tools for creating curves. + Työkaluja käyrien luomiseen. + + + Curve + Käyrä + + + Tools for creating arcs. + Työkaluja kaarien luomiseen. + + + Arc + Kaari + + + Tools for creating details. + Työkaluja yksityiskohtien luomiseen. + + + Detail + Yksityiskohta + + + &File + &Tiedosto + + + &Help + &Apua + + + &Pattern piece + &Kaavan osa + + + Measurements + Mitat + + + Window + Ikkuna + + + Toolbar files + Tiedostojen työkalupalkki + + + ToolBar modes + Moodien työkalupalkki + + + Toolbar pattern + Kaava työkalupalkki + + + Toolbar options + Asetus työkalupalkki + + + Toolbar tools + Työkalujen työkalupalkki + + + Tool options + Työkalu asetukset + + + New + Uusi + + + &New + &Uusi + + + Create a new pattern + Luo uusi kaava + + + Ctrl+N + Ctrl+N + + + Open + Avaa + + + &Open + &Avaa + + + Open file with pattern + Avaa tiedosto kaavan kanssa + + + Save + Talenna + + + &Save + &Tallenna + + + Save pattern + Tallenna kaava + + + Ctrl+S + Ctrl+S + + + Save &As... + Tallenna &nimellä... + + + Save not yet saved pattern + Tallenna tallentamaton kaava + + + Ctrl+Shift+S + Ctrl+Shift+S + + + Draw + Piirrä + + + Draw mode + Piirtotila + + + Ctrl+W + Ctrl+W + + + Details + Yksityiskohdat + + + Details mode + Yksityiskohtatila + + + Ctrl+E + Ctrl+E + + + Pointer tools + Osointin työkalut + + + New pattern piece + Uusi kaavan osa + + + Add new pattern piece + Lisää uusi kaavan osa + + + Ctrl+Shift+N + Ctrl+Shift+N + + + Change the label of pattern piece + Muuta kaavan nimeä + + + Table of variables + Muuttujien taulukko + + + Tables of variables + Muuttujien taulukko + + + Ctrl+T + Ctrl+T + + + History + Historia + + + Ctrl+H + Ctrl+H + + + Export pattern (layout) + Vie kaava toiseen ohjelmaan (sommittelu) + + + Create layout + Luo sommittelu + + + Ctrl+L + Ctrl+L + + + About &Qt + Tietoja &Qt + + + &About Valentina + &Tietoja Valentinasta + + + E&xit + L&opeta + + + Exit the application + Lopeta ohjelma + + + Ctrl+Q + Ctrl+Q + + + Preferences + Asetukset + + + Pattern properties + Kaavan asetukset + + + Zoom in + Tarkenna + + + zoom in + tarkenna + + + Zoom out + Loitonna + + + Edit pattern XML code + Muuta kaavan XML koodia + + + Original zoom + Alkuperäinen tarkennus + + + Original Zoom + Alkuperäinen tarkennus + + + Zoom fit best + Tarkenna sopivasti + + + Ctrl+= + Ctrl+= + + + Stop + Lopeta + + + Stop using tool + Lopeta työkalun käyttö + + + Repot Bug... + Ilmoita ohjelmistovirheestä... + + + Report bug + Ilmoita ohjelmistovirheestä + + + Close window + Sulje ikkuna + + + Online help + Online apua + + + Show online help + Näytä online apu + + + Pattern piece %1 + Kaavan osa %1 + + + Individual measurements is under development + Yksilölliset mitat ovat kehityksen alla + + + There is no way create individual measurements file independent on the pattern file. +For opening pattern need keep both files: pattern and measurements. Do you want continue? + Ei ole mahdollista luoda mittatiedostoa ilma kaava tiedostoa. +Avataksesi kaava tarvitaan kaava ja mittatiedosto. Haluatko jatkaa? + + + Select point + Valitse piste + + + Select first point + Valitse ensimmäinen piste + + + Select first point of line + Valitse viivan ensimmäinen piste + + + Select first point of angle + Valitse kulman ensimmäinen piste + + + Select first point of first line + Valitse ensimmäisen viivan ensimmäinen piste + + + Select first point curve + Valitse ensimmäinen käyrän piste + + + Select simple curve + Valitse yksinkertainen käyrä + + + Select point of center of arc + Valitse kaaren keskipiste + + + Select point of curve path + Valitse käyrän piste + + + Select curve path + Valitse käyräpolku + + + Select points, arcs, curves clockwise. + Valitse pisteet, kaaret, käyrät myötäpäivään + + + Select base point + + + + Select first point of axis + Valitse akselin ensimmäinen piste + + + Select detail + Valitse yksityiskohta + + + Select arc + Valitse kaari + + + Select curve + Valitse käyrä + + + About Qt + Tietoja Qt:stä + + + Height: + Pituus: + + + Size: + Koko: + + + Pattern Piece: + Kaavan osa: + + + Pattern files (*.val) + Kaava tiedostot (*.val) + + + pattern + kaava + + + /pattern.val + /kaava.val + + + Save as + Talenna nimellä + + + Could not save file + Tiedostoa ei voitu tallentaa + + + Open file + Avaa tiedosto + + + Error parsing file. + Virhe tiedoston jäsennyksessä. + + + Error can't convert value. + Virhe: arvoa ei voi muuntaa + + + Error empty parameter. + Virhe: tyhjä parametri + + + Error wrong id. + Virhe: väärä id. + + + Critical error! + Kriittinen virhe! + + + Error parsing file (std::bad_alloc). + Virhe tiedoston (std::bad_alloc) jäsennyksessä + + + Bad id. + Väärä id. + + + File saved + Tiedosto tallennettu + + + untitled.val + nimetön.val + + + Unsaved change + Tallentamattomia muutoksia + + + The pattern has been modified. +Do you want to save your changes? + Kaavaa on muutettu +Haluatko tallentaa muutokset? + + + &Undo + &Peru + + + &Redo + &Tee uudelleen + + + Pattern piece: + Kaavan osa: + + + Enter a new label for the pattern piece. + Syötä uusi nimi kaavan osalle. + + + This file already opened in another window. + Tämä tiedosto on jo avattu toiseen ikkunaan. + + + Wrong units. + Väärät yksiköt. + + + Application doesn't support standard table with inches. + Ohjelma ei tue standardi tauluja tuuma koossa. + + + File error. + Tiedostovirhe. + + + File loaded + Tiedosto ladattu + + + Valentina didn't shut down correctly. Do you want reopen files (%1) you had open? + Valentina ei sulkeutunut oikein. Haluatko uudelleen avata tiedostot (%1)? + + + Reopen files. + Avaa uudelleen tiedosto. + + + The measurements file <br/><br/> <b>%1</b> <br/><br/> %3 + Mittatiedosto <br/><br/> <b>%1</b> <br/><br/> %3 + + + could not be found. Do you want to update the file location + Ei löytynyt. Haluatko päivittää tiedoston sijainnin? + + + Standard measurements (*.vst) + Standardi mitat (*.vst) + + + Individual measurements (*.vit) + Yksilölliset mitat (*.vit) + + + Special point on shoulder + Valitse olkapään erityispiste + + + Triangle tool + Kolmio työkalu + + + Point at intersection of arc and line + Kaaren ja viivan leikkauspiste + + + Point from X and Y of two other points + + + + Point intersect line and axis + Viivan ja akselin leikkauspiste + + + Simple curve + Yksinkertainen käyrä + + + Curved path + Mutkikas käyrä + + + Segmenting a simple curve + Jaa segmentteihin yksinkertainen käyrä + + + Segment a curved path + Jaa käyrä segmentteihin + + + Point intersect curve and axis + Kaaren ja akselin leikkauspiste + + + Segment an arc + Kaaren segmentti + + + Point intersect arc and axis + Kaaren ja akselin leikkauspiste + + + Seam allowance tool + Saumavara työkalu + + + Union tool + Unioni työkalu + + + toolBar + työkalupalkki + + + Last Tool + Viimeisin työkalu + + + Activate last used tool again + Aktivoi viimeksi käytetty työkalu uudestaan + + + L + L + + + Select point for X value (vertical) + Valitse piste arvolle X (pystysuora) + + + + Measurements + + head_girth + Short measurement name. Don't use math symbols in name!!!! + pään_ympärysmitta + + + mid_neck_girth + Short measurement name. Don't use math symbols in name!!!! + keski_kaulan_ympärysmitta + + + neck_base_girth + Short measurement name. Don't use math symbols in name!!!! + Kaulan_pohjan_ympärysmitta + + + head_and_neck_length + Short measurement name. Don't use math symbols in name!!!! + pään_ja_kaulan_pituus + + + center_front_waist_length + Short measurement name. Don't use math symbols in name!!!! + keski_etu_vyötärön_pituus + + + center_back_waist_length + Short measurement name. Don't use math symbols in name!!!! + keski_taka_vyötärön_pituus + + + shoulder_length + Short measurement name. Don't use math symbols in name!!!! + olkapään_pituus + + + side_waist_length + Short measurement name. Don't use math symbols in name!!!! + sivu_vyötärön_pituus + + + trunk_length + Short measurement name. Don't use math symbols in name!!!! + + + + shoulder_girth + Short measurement name. Don't use math symbols in name!!!! + olkapään_ympärysmitta + + + upper_chest_girth + Short measurement name. Don't use math symbols in name!!!! + ylä_rinan_ympärysmitta + + + bust_girth + Short measurement name. Don't use math symbols in name!!!! + rinnan_ympärysmitta + + + under_bust_girth + Short measurement name. Don't use math symbols in name!!!! + ala_rinnan_ympärysmitta + + + waist_girth + Short measurement name. Don't use math symbols in name!!!! + vyötärön_ympärysmitta + + + high_hip_girth + Short measurement name. Don't use math symbols in name!!!! + ylä_lonkan_ympärysmitta + + + hip_girth + Short measurement name. Don't use math symbols in name!!!! + lonkan_ympärysmitta + + + upper_front_chest_width + Short measurement name. Don't use math symbols in name!!!! + ylä_etu_rinnan_leveys + + + front_chest_width + Short measurement name. Don't use math symbols in name!!!! + etu_rinnan_leveys + + + across_front_shoulder_width + Short measurement name. Don't use math symbols in name!!!! + yli_etu_olkapään_leveys + + + across_back_shoulder_width + Short measurement name. Don't use math symbols in name!!!! + yli_taka_olkapään_leveys + + + upper_back_width + Short measurement name. Don't use math symbols in name!!!! + ylä_selän_leveys + + + back_width + Short measurement name. Don't use math symbols in name!!!! + selän_leveys + + + bustpoint_to_bustpoint + Short measurement name. Don't use math symbols in name!!!! + + + + halter_bustpoint_to_bustpoint + Short measurement name. Don't use math symbols in name!!!! + + + + neck_to_bustpoint + Short measurement name. Don't use math symbols in name!!!! + + + + crotch_length + Short measurement name. Don't use math symbols in name!!!! + haaran_pituus + + + rise_height + Short measurement name. Don't use math symbols in name!!!! + + + + shoulder_drop + Short measurement name. Don't use math symbols in name!!!! + olkapään_pudotus + + + shoulder_slope_degrees + Short measurement name. Don't use math symbols in name!!!! + olkapään_kulma_asteissa + + + front_shoulder_slope_length + Short measurement name. Don't use math symbols in name!!!! + etu_olkapaan_kulman_pituus + + + back_shoulder_slope_length + Short measurement name. Don't use math symbols in name!!!! + taka_olkapään_kulman_pituus + + + front_shoulder_to_waist_length + Short measurement name. Don't use math symbols in name!!!! + etu_olkapäästä_vyötäröön_pituus + + + back_shoulder_to_waist_length + Short measurement name. Don't use math symbols in name!!!! + taka_olkapäästä_vyötäröön_pituus + + + front_neck_arc + Short measurement name. Don't use math symbols in name!!!! + etu_kaulan_kaari + + + back_neck_arc + Short measurement name. Don't use math symbols in name!!!! + taka_kaulan_kaari + + + front_upper_chest_arc + Short measurement name. Don't use math symbols in name!!!! + etu_ylä_rinnan_kaari + + + back_upper_chest_arc + Short measurement name. Don't use math symbols in name!!!! + taka_ylä_rinnan_kaari + + + front_waist_arc + Short measurement name. Don't use math symbols in name!!!! + etu_vyötärö_kaari + + + back_waist_arc + Short measurement name. Don't use math symbols in name!!!! + taka_vyötärö_kaari + + + front_upper_hip_arc + Short measurement name. Don't use math symbols in name!!!! + etu_ylä_lonkan_kaari + + + back_upper_hip_arc + Short measurement name. Don't use math symbols in name!!!! + taka_ylä_lonkan_kaari + + + front_hip_arc + Short measurement name. Don't use math symbols in name!!!! + etu_lonkan_kaari + + + back_hip_arc + Short measurement name. Don't use math symbols in name!!!! + taka_lonkan_kaari + + + chest_slope + Short measurement name. Don't use math symbols in name!!!! + rinnan_kaarevuus + + + back_slope + Short measurement name. Don't use math symbols in name!!!! + selän_kaarevuus + + + front_waist_slope + Short measurement name. Don't use math symbols in name!!!! + etu_vyötärön_kaarevuus + + + back_waist_slope + Short measurement name. Don't use math symbols in name!!!! + taka_vyötärön_kaarevuus + + + front_neck_to_upper_chest_height + Short measurement name. Don't use math symbols in name!!!! + etu_niskasta_ylä_rintaan_pituus + + + front_neck_to_bust_height + Short measurement name. Don't use math symbols in name!!!! + etu_kaulasta_rintaan + + + front_waist_to_upper_chest + Short measurement name. Don't use math symbols in name!!!! + etu_vyötäröstä_ylä_rintaan + + + front_waist_to_lower_breast + Short measurement name. Don't use math symbols in name!!!! + etu_vyötäröstä_ala_rintaan + + + back_waist_to_upper_chest + Short measurement name. Don't use math symbols in name!!!! + taka_vyötäröstä_ylä_rintaan + + + strap_length + Short measurement name. Don't use math symbols in name!!!! + + + + armscye_girth + Short measurement name. Don't use math symbols in name!!!! + olkapään_ympärysmitta + + + elbow_girth + Short measurement name. Don't use math symbols in name!!!! + kyynärpään_ympärysmitta + + + upper_arm_girth + Short measurement name. Don't use math symbols in name!!!! + ylä_käsivarren_ympärysmitta + + + wrist_girth + Short measurement name. Don't use math symbols in name!!!! + ranteen_ympärysmitta + + + scye_depth + Short measurement name. Don't use math symbols in name!!!! + + + + shoulder_and_arm_length + Short measurement name. Don't use math symbols in name!!!! + olkapään_ja_käden_pituus + + + underarm_length + Short measurement name. Don't use math symbols in name!!!! + kainalon_pituus + + + cervicale_to_wrist_length + Short measurement name. Don't use math symbols in name!!!! + + + + shoulder_to_elbow_length + Short measurement name. Don't use math symbols in name!!!! + olkapäästä_kyynärpäähän + + + arm_length + Short measurement name. Don't use math symbols in name!!!! + käsivarren_pituus + + + hand_width + Short measurement name. Don't use math symbols in name!!!! + käden_leveys + + + hand_length + Short measurement name. Don't use math symbols in name!!!! + käden_pituus + + + hand_girth + Short measurement name. Don't use math symbols in name!!!! + käden_ympärysmitta + + + thigh_girth + Short measurement name. Don't use math symbols in name!!!! + reiden_ympärysmitta + + + mid_thigh_girth + Short measurement name. Don't use math symbols in name!!!! + keski_reiden_ympärysmitta + + + knee_girth + Short measurement name. Don't use math symbols in name!!!! + polven_ympärysmitta + + + calf_girth + Short measurement name. Don't use math symbols in name!!!! + pohkeen_ympärysmitta + + + ankle_girth + Short measurement name. Don't use math symbols in name!!!! + nilkan_ympärysmitta + + + knee_height + Short measurement name. Don't use math symbols in name!!!! + polven_pituus + + + ankle_height + Short measurement name. Don't use math symbols in name!!!! + nilkan_pituus + + + foot_width + Short measurement name. Don't use math symbols in name!!!! + jalkaterän_leveys + + + foot_length + Short measurement name. Don't use math symbols in name!!!! + jalkaterän_pituus + + + height + Short measurement name. Don't use math symbols in name!!!! + pituus + + + cervicale_height + Short measurement name. Don't use math symbols in name!!!! + + + + cervicale_to_knee_height + Short measurement name. Don't use math symbols in name!!!! + + + + waist_height + Short measurement name. Don't use math symbols in name!!!! + vyötärön_korkeus + + + high_hip_height + Short measurement name. Don't use math symbols in name!!!! + ylä_lonkan_pituus + + + hip_height + Short measurement name. Don't use math symbols in name!!!! + lonkan_pituus + + + waist_to_hip_height + Short measurement name. Don't use math symbols in name!!!! + vyötäröstä_lonkkaan + + + waist_to_knee_height + Short measurement name. Don't use math symbols in name!!!! + vyötäröstä_polveen + + + crotch_height + Short measurement name. Don't use math symbols in name!!!! + haaran_pituus + + + size + Short measurement name. Don't use math symbols in name!!!! + koko + + + height_front_neck_base_point + Short measurement name. Don't use math symbols in name!!!! + + + + height_base_neck_side_point + Short measurement name. Don't use math symbols in name!!!! + + + + height_shoulder_point + Short measurement name. Don't use math symbols in name!!!! + + + + height_nipple_point + Short measurement name. Don't use math symbols in name!!!! + + + + height_back_angle_axilla + Short measurement name. Don't use math symbols in name!!!! + + + + height_scapular_point + Short measurement name. Don't use math symbols in name!!!! + + + + height_under_buttock_folds + Short measurement name. Don't use math symbols in name!!!! + + + + hips_excluding_protruding_abdomen + Short measurement name. Don't use math symbols in name!!!! + + + + girth_foot_instep + Short measurement name. Don't use math symbols in name!!!! + + + + side_waist_to_floor + Short measurement name. Don't use math symbols in name!!!! + + + + front_waist_to_floor + Short measurement name. Don't use math symbols in name!!!! + + + + arc_through_groin_area + Short measurement name. Don't use math symbols in name!!!! + + + + waist_to_plane_seat + Short measurement name. Don't use math symbols in name!!!! + + + + neck_to_radial_point + Short measurement name. Don't use math symbols in name!!!! + + + + neck_to_third_finger + Short measurement name. Don't use math symbols in name!!!! + + + + neck_to_first_line_chest_circumference + Short measurement name. Don't use math symbols in name!!!! + + + + front_waist_length + Short measurement name. Don't use math symbols in name!!!! + + + + arc_through_shoulder_joint + Short measurement name. Don't use math symbols in name!!!! + + + + neck_to_back_line_chest_circumference + Short measurement name. Don't use math symbols in name!!!! + + + + waist_to_neck_side + Short measurement name. Don't use math symbols in name!!!! + + + + arc_length_upper_body + Short measurement name. Don't use math symbols in name!!!! + + + + chest_width + Short measurement name. Don't use math symbols in name!!!! + rinnan_leveys + + + anteroposterior_diameter_hands + Short measurement name. Don't use math symbols in name!!!! + + + + height_clavicular_point + Short measurement name. Don't use math symbols in name!!!! + + + + height_armhole_slash + Short measurement name. Don't use math symbols in name!!!! + + + + slash_shoulder_height + Short measurement name. Don't use math symbols in name!!!! + + + + half_girth_neck + Short measurement name. Don't use math symbols in name!!!! + + + + half_girth_neck_for_shirts + Short measurement name. Don't use math symbols in name!!!! + + + + half_girth_chest_first + Short measurement name. Don't use math symbols in name!!!! + + + + half_girth_chest_second + Short measurement name. Don't use math symbols in name!!!! + + + + half_girth_chest_third + Short measurement name. Don't use math symbols in name!!!! + + + + half_girth_waist + Short measurement name. Don't use math symbols in name!!!! + + + + half_girth_hips_considering_protruding_abdomen + Short measurement name. Don't use math symbols in name!!!! + + + + half_girth_hips_excluding_protruding_abdomen + Short measurement name. Don't use math symbols in name!!!! + + + + girth_knee_flexed_feet + Short measurement name. Don't use math symbols in name!!!! + + + + neck_transverse_diameter + Short measurement name. Don't use math symbols in name!!!! + + + + front_slash_shoulder_height + Short measurement name. Don't use math symbols in name!!!! + + + + neck_to_front_waist_line + Short measurement name. Don't use math symbols in name!!!! + + + + hand_vertical_diameter + Short measurement name. Don't use math symbols in name!!!! + + + + neck_to_knee_point + Short measurement name. Don't use math symbols in name!!!! + + + + waist_to_knee + Short measurement name. Don't use math symbols in name!!!! + + + + shoulder_height + Short measurement name. Don't use math symbols in name!!!! + + + + head_height + Short measurement name. Don't use math symbols in name!!!! + + + + body_position + Short measurement name. Don't use math symbols in name!!!! + + + + arc_behind_shoulder_girdle + Short measurement name. Don't use math symbols in name!!!! + + + + neck_to_neck_base + Short measurement name. Don't use math symbols in name!!!! + + + + depth_waist_first + Short measurement name. Don't use math symbols in name!!!! + + + + depth_waist_second + Short measurement name. Don't use math symbols in name!!!! + + + + + MeasurementsDescriptions + + Around fullest part of Head + Full measurement description + + + + Around middle part of Neck + Full measurement description + + + + Around Neck at base + Full measurement description + + + + Vertical Distance from Crown to Nape + Full measurement description + + + + Front Neck Center over tape at Bustline to Front Waist Center + Full measurement description + + + + Back Neck Center to Back Waist Center + Full measurement description + + + + NeckPoint to ShoulderTip + Full measurement description + + + + Armpit to Waist side + Full measurement description + + + + Around Body from middle of Shoulder length to BustPoint to Crotch up back to beginning point + Full measurement description + + + + Around Arms and Torso, at bicep level parallel to floor, with arms hanging at the sides + Full measurement description + + + + Around Chest at Armfold level, will be parallel to floor across back, will not be parallel to floor across front chest + Full measurement description + + + + Around fullest part of Bust, parallel to floor + Full measurement description + + + + Around Chest below the Bust, parallel to floor + Full measurement description + + + + 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. + Full measurement description + + + + Around HighHip, parallel to floor + Full measurement description + + + + Around Hip, parallel to floor + Full measurement description + + + + Across Front UpperChest, smallest width from armscye to armscye + Full measurement description + + + + Across Front Chest, from armfold to armfold + Full measurement description + + + + From ShoulderTip to ShoulderTip, across Front + Full measurement description + + + + From ShoulderTip to ShoulderTip, across Back + Full measurement description + + + + Across Back UpperChest, smallest width from armscye to armscye + Full measurement description + + + + Across Back Chest, from armfold to armfold + Full measurement description + + + + Distance between BustPoints, across Chest + Full measurement description + + + + Distance from Bustpoint, behind neck, down to Bustpoint + Full measurement description + + + + From NeckPoint to BustPoint + Full measurement description + + + + From Front Waist Center, down to crotch, up to Back Waist Center + Full measurement description + + + + Sit on hard chair, measure from side waist straight down to chair bottom + Full measurement description + + + + Vertical Distance from NeckPoint level to ShoulderTip level + Full measurement description + + + + Degrees of angle from NeckPoint to ShoulderTip – requires goniometer + Full measurement description + + + + ShoulderTip to Front Waist Center + Full measurement description + + + + ShoulderTip to Back Waist Center + Full measurement description + + + + NeckPoint straight down front chest to Waistline + Full measurement description + + + + Back NeckPoint straight down back chest to Waistline + Full measurement description + + + + NeckPoint to NeckPoint through Front Neck Center + Full measurement description + + + + NeckPoint to NeckPoint across Nape + Full measurement description + + + + Front upper-bust arc + Full measurement description + + + + Back UpperBust side to side + Full measurement description + + + + Front Waist side to side + Full measurement description + + + + Back Waist side to side + Full measurement description + + + + Front UpperHip side to side + Full measurement description + + + + Back UpperHip side to side + Full measurement description + + + + Front Hip side to side + Full measurement description + + + + Back Hip side to side + Full measurement description + + + + NeckPoint to Front ArmfoldPoint + Full measurement description + + + + NeckPoint to Back ArmfoldPoint + Full measurement description + + + + NeckPoint across Front Chest to Waist side + Full measurement description + + + + NeckPoint across Back Chest to Waist side + Full measurement description + + + + Front Neck Center straight down to UpperChest line + Full measurement description + + + + Front Neck Center straight down to Bust line + Full measurement description + + + + Front Upper chest waist + Full measurement description + + + + Front waist to lower breast + Full measurement description + + + + Back waist to upper chest + Full measurement description + + + + Strap length + Full measurement description + + + + Around Armscye + Full measurement description + Kainalon ympäri + + + Around Elbow with elbow bent + Full measurement description + Kyynärpään ympäri kyynärpää taivutettuna + + + Around UpperArm + Full measurement description + + + + Around Wrist + Full measurement description + + + + Nape straight down to UnderBust line (same as Back UpperBust height) + Full measurement description + + + + NeckPoint to ShoulderTip to Wrist, with elbow bent and hand on hip + Full measurement description + + + + Armpit to Wrist, with arm straight and hanging at side + Full measurement description + + + + Nape to Wrist, with elbow bent and hand on hip + Full measurement description + + + + ShoulderTip to Elbow, with elbow bent and hand on hip + Full measurement description + + + + ShoulderTip to Wrist, with elbow bent and hand on hip + Full measurement description + + + + Hand side to side + Full measurement description + + + + Hand Middle Finger tip to wrist + Full measurement description + + + + Around Hand + Full measurement description + Käden ympäri + + + Around Thigh + Full measurement description + Reiden ympäri + + + Around MidThigh + Full measurement description + + + + Around Knee + Full measurement description + Polven ympäri + + + Around Calf + Full measurement description + Pohkeen ympäri + + + Around Ankle + Full measurement description + Nilkan ympäri + + + Knee to Floor + Full measurement description + Polvesta lattiaan + + + Ankle to Floor + Full measurement description + Nilkasta lattiaan + + + Widest part of Foot side to side + Full measurement description + + + + Tip of Longest Toe straight to back of heel + Full measurement description + + + + Top of head to floor + Full measurement description + + + + Nape to Floor + Full measurement description + + + + Nape to Knee + Full measurement description + + + + Waist side to floor + Full measurement description + + + + HighHip side to Floor + Full measurement description + + + + Hip side to Floor + Full measurement description + + + + Waist side to Hip + Full measurement description + + + + Waist side to Knee + Full measurement description + + + + Crotch to Floor along inside leg + Full measurement description + + + + Size + Full measurement description + Koko + + + Height of the point base of the neck in front + Full measurement description + + + + Height of the base of the neck side point + Full measurement description + + + + The height of the shoulder point + Full measurement description + + + + Height nipple point + Full measurement description + + + + Height back angle axilla + Full measurement description + + + + Height scapular point + Full measurement description + + + + Height under buttock folds + Full measurement description + + + + Hips excluding protruding abdomen + Full measurement description + + + + Girth foot instep + Full measurement description + + + + The distance from the side waist to floor + Full measurement description + + + + The distance from the front waist to floor + Full measurement description + + + + Arc through groin area + Full measurement description + + + + The distance from the waist to the plane seat + Full measurement description + + + + The distance from the base of the neck to the side of the radial point + Full measurement description + + + + Distance from the base of the neck side point to the end of the third finger + Full measurement description + + + + The distance from the base of the neck to the side of the first line in front of chest circumference + Full measurement description + + + + The distance from the base of the neck to the waist side front (waist length in the front) + Full measurement description + + + + Arc through the highest point of the shoulder joint + Full measurement description + + + + The distance from the base of the neck to the back line of chest circumference of the first and the second based on ledge vanes + Full measurement description + + + + The distance from the waist to the back base of the neck side point + Full measurement description + + + + Arc length of the upper body through the base of the neck side point + Full measurement description + + + + Chest width + Full measurement description + Rinnan leveys + + + Anteroposterior diameter of the hands + Full measurement description + + + + Height clavicular point + Full measurement description + + + + The distance from the point to the cervical level of the posterior angle of the front armpit (underarm height oblique) + Full measurement description + + + + Slash shoulder height + Full measurement description + + + + Half girth neck + Full measurement description + Puolet kaulan ympärysmitasta + + + Half girth neck for shirts + Full measurement description + Puolet kaulan ympärysmitasta paitoihin + + + Half girth chest first + Full measurement description + Puolet rinnan ympärysmitasta 1 + + + Half girth chest second + Full measurement description + Puolet rinnan ympärysmitasta 2 + + + Half girth chest third + Full measurement description + Puolet rinnan ympärysmitasta 3 + + + Half girth waist + Full measurement description + Puolet vyötärön ympärysmitasta + + + Half girth hips considering protruding abdomen + Full measurement description + + + + Half girth hips excluding protruding abdomen + Full measurement description + + + + Girth knee flexed feet + Full measurement description + + + + Neck transverse diameter + Full measurement description + + + + Front slash shoulder height + Full measurement description + + + + The distance from the base of the neck to the waist line front + Full measurement description + + + + Hand vertical diameter + Full measurement description + + + + Distance from neck to knee point + Full measurement description + + + + The distance from the waist to the knee + Full measurement description + + + + Shoulder height + Full measurement description + + + + Head height + Full measurement description + Pään pituus + + + Body position + Full measurement description + Kehon sijainti + + + Arc behind the shoulder girdle + Full measurement description + + + + Distance from neck point to point on the base of the neck side neck girth measurement line + Full measurement description + + + + Depth waist first + Full measurement description + + + + Depth waist second + Full measurement description + + + + + MeasurementsFullNames + + Head girth + Full measurement name + Pään ympärysmitta + + + Mid-neck girth + Full measurement name + Keski kaulan ympärysmitta + + + Neck Base girth + Full measurement name + Kaulan pohjan ympärysmitta + + + Head and Neck length + Full measurement name + Pään ja kaulan pituus + + + Front Center length + Full measurement name + Etu keskustan pituus + + + Back Center length + Full measurement name + Taka keskustan pituus + + + Shoulder length + Full measurement name + Olkapään pituus + + + Side Waist length + Full measurement name + Sivu vyötärön pituus + + + Trunk length + Full measurement name + + + + Shoulder girth + Full measurement name + Olkapään ympärysmitta + + + Upper Chest girth + Full measurement name + Ylä rinnan ympärysmitta + + + Bust girth + Full measurement name + Rinnan ympärysmitta + + + Under Bust girth + Full measurement name + Ala rinnan ympärysmitta + + + Waist girth + Full measurement name + Vyötärön ympärysmitta + + + HighHip girth + Full measurement name + Ylä lonkan ympärysmitta + + + Hip girth + Full measurement name + Lonkan ympärysmitta + + + Front Upper Chest width + Full measurement name + Etu ylä rinnan pituus + + + Front Chest width + Full measurement name + Etu rinnan leveys + + + Front Across Shoulder width + Full measurement name + Etu olkapäästä olkapäähän leveys + + + Back Across Shoulder width + Full measurement name + Taka olkapäästä olkapäähän leveys + + + Back Upper Chest width + Full measurement name + Taka ylä rinnan leveys + + + Back Chest width + Full measurement name + Taka rinnan leveys + + + BustPoint to BustPoint + Full measurement name + + + + Halter Bustpoint to Bustpoint + Full measurement name + + + + NeckPoint to BustPoint + Full measurement name + + + + Crotch length + Full measurement name + Haaran pituus + + + Rise height + Full measurement name + + + + Shoulder Drop + Full measurement name + Olkapään pudotus + + + Shoulder Slope degrees + Full measurement name + + + + Front Shoulder Balance + Full measurement name + + + + Back Shoulder Balance + Full measurement name + + + + Front Full Length + Full measurement name + + + + Back Full Length + Full measurement name + + + + Front Neck arc + Full measurement name + + + + Back Neck arc + Full measurement name + + + + Front upper-bust arc + Full measurement name + + + + Back UpperBust arc + Full measurement name + + + + Front Waist arc + Full measurement name + + + + Back Waist arc + Full measurement name + + + + Front UpperHip arc + Full measurement name + + + + Back UpperHip arc + Full measurement name + + + + Front Hip arc + Full measurement name + + + + Back Hip arc + Full measurement name + + + + Chest Balance + Full measurement name + + + + Back Balance + Full measurement name + + + + Front Waist Balance + Full measurement name + + + + Back Waist Balance + Full measurement name + + + + Front UpperChest height + Full measurement name + + + + Bust height + Full measurement name + + + + Front Upper chest waist + Full measurement name + + + + Front waist to lower breast + Full measurement name + + + + Back waist to upper chest + Full measurement name + + + + Strap length + Full measurement name + + + + Armscye Girth + Full measurement name + + + + Elbow Girth + Full measurement name + + + + Upperarm Girth + Full measurement name + + + + Wrist girth + Full measurement name + + + + Armscye depth + Full measurement name + + + + Shoulder and Arm length + Full measurement name + + + + Underarm length + Full measurement name + + + + Nape to wrist length + Full measurement name + + + + Elbow length + Full measurement name + + + + Arm length + Full measurement name + + + + Hand width + Full measurement name + + + + Hand length + Full measurement name + + + + Hand girth + Full measurement name + + + + Thigh girth + Full measurement name + + + + Midthigh girth + Full measurement name + + + + Knee girth + Full measurement name + + + + Calf girth + Full measurement name + + + + Ankle girth + Full measurement name + + + + Knee height + Full measurement name + + + + Ankle height + Full measurement name + + + + Foot width + Full measurement name + + + + Foot length + Full measurement name + + + + Total Height + Full measurement name + + + + Nape height + Full measurement name + + + + Nape to knee height + Full measurement name + + + + Waist height + Full measurement name + + + + HighHip height + Full measurement name + + + + Hip height + Full measurement name + + + + Waist to Hip height + Full measurement name + + + + Waist to Knee height + Full measurement name + + + + Crotch height/Inseam + Full measurement name + + + + Size + Full measurement name + Koko + + + Height front neck base point + Full measurement name + + + + Height base neck side point + Full measurement name + + + + Height shoulder point + Full measurement name + + + + Height nipple point + Full measurement name + + + + Height back angle axilla + Full measurement name + + + + Height scapular point + Full measurement name + + + + Height under buttock folds + Full measurement name + + + + Hips excluding protruding abdomen + Full measurement name + + + + Girth foot instep + Full measurement name + + + + Side waist to floor + Full measurement name + + + + Front waist to floor + Full measurement name + + + + Arc through groin area + Full measurement name + + + + Waist to plane seat + Full measurement name + + + + Neck to radial point + Full measurement name + + + + Neck to third finger + Full measurement name + + + + Neck to first line chest circumference + Full measurement name + + + + Front waist length + Full measurement name + + + + Arc through shoulder joint + Full measurement name + + + + Neck to back line chest circumference + Full measurement name + + + + Waist to neck side + Full measurement name + + + + Arc length upper body + Full measurement name + + + + Chest width + Full measurement name + Rinnan leveys + + + Anteroposterior diameter hands + Full measurement name + + + + Height clavicular point + Full measurement name + + + + Height armhole slash + Full measurement name + + + + Slash shoulder height + Full measurement name + + + + Half girth neck + Full measurement name + Puolet kaulan ympärysmitasta + + + Half girth neck for shirts + Full measurement name + Puolet kaulan ympärysmitasta paitoihin + + + Half girth chest first + Full measurement name + Puolet rinnan ympärysmitasta 1 + + + Half girth chest second + Full measurement name + Puolet rinnan ympärysmitasta 2 + + + Half girth chest third + Full measurement name + Puolet rinnan ympärysmitasta 3 + + + Half girth waist + Full measurement name + Puolet vyötärön ympärysmitasta + + + Half girth hips considering protruding abdomen + Full measurement name + + + + Half girth hips excluding protruding abdomen + Full measurement name + + + + Girth knee flexed feet + Full measurement name + + + + Neck transverse diameter + Full measurement name + + + + Front slash shoulder height + Full measurement name + + + + Neck to front waist line + Full measurement name + + + + Hand vertical diameter + Full measurement name + + + + Neck to knee point + Full measurement name + + + + Waist to knee + Full measurement name + + + + Shoulder height + Full measurement name + + + + Head height + Full measurement name + Pään pituus + + + Body position + Full measurement name + Kehon sijainti + + + Arc behind shoulder girdle + Full measurement name + + + + Neck to neck base + Full measurement name + + + + Depth waist first + Full measurement name + + + + Depth waist second + Full measurement name + + + + + MoveLabel + + Move point label + Siirrä pistenimilappu + + + + MoveSPoint + + Move single point + Siirrä yksi piste + + + + MoveSpline + + Move spline + Siirrä splini + + + + MoveSplinePath + + Move spline path + Siirrä splinipolku + + + + PathPage + + Open Directory + Avaa kansio + + + Path that use Valentina + Valentinan käyttämä polku + + + Default + Oletus + + + Edit + Muokkaa + + + Type + Tyyppi + + + Path + Polku + + + Individual measurements + Yksilölliset mitat + + + Patterns + Kaavat + + + Standard measurements + Standardi mitat + + + Layout + Sommittelu + + + + PatternPage + + User + Käyttäjä + + + User name + Käyttäjätunnus + + + Graphical output + Graafinen tulos + + + Use antialiasing + Käytä pehmennystä + + + Undo + Peru + + + Count steps (0 - no limit) + Laske vaiheet (0 - ei rajaa) + + + + PostfixOperators + + cm + centimeter + cm + + + mm + millimeter + mm + + + in + inch + tuuma + + + + QCoreApplication + + Based on Qt %1 (%2, %3 bit) + Käännetty käyttäen Qt %1 (%2, %3 bit) + + + + QObject + + Create new pattern piece to start working. + Aloita luomalla uusi kaava. + + + Add node + Lisää solmu + + + Move detail + Siirrä yksityiskohta + + + mm + m + + + cm + cm + + + inch + tuuma + + + Property + The text that appears in the first column header + Ominaisuus + + + Value + The text that appears in the second column header + Arvo + + + px + pikseliä + + + + QmuParserErrorMsg + + Unexpected token "$TOK$" found at position $POS$. + Math parser error messages. Left untouched "$TOK$" and $POS$ + Odottomaton ilmimuoto "$TOK$" paikassa $POS$. + + + Internal error + Math parser error messages. + Sisäinen virhe + + + Invalid function-, variable- or constant name: "$TOK$". + Math parser error messages. Left untouched "$TOK$" + Väärä funktio, muuttuja tai vakio nimeltä: "$TOK$". + + + Invalid binary operator identifier: "$TOK$". + Math parser error messages. Left untouched "$TOK$" + Väärä binäärinen operaatio: "$TOK$". + + + Invalid infix operator identifier: "$TOK$". + Math parser error messages. Left untouched "$TOK$" + Väärä infix operaattori: "$TOK$". + + + Invalid postfix operator identifier: "$TOK$". + Math parser error messages. Left untouched "$TOK$" + Väärä postfix operaattori: "$TOK$". + + + Invalid pointer to callback function. + Math parser error messages. + Väärä osoitin palautus funktioon. + + + Expression is empty. + Math parser error messages. + + + + Invalid pointer to variable. + Math parser error messages. + + + + Unexpected operator "$TOK$" found at position $POS$ + Math parser error messages. Left untouched "$TOK$" and $POS$ + + + + Unexpected end of expression at position $POS$ + Math parser error messages. Left untouched $POS$ + + + + Unexpected argument separator at position $POS$ + Math parser error messages. Left untouched $POS$ + + + + Unexpected parenthesis "$TOK$" at position $POS$ + Math parser error messages. Left untouched "$TOK$" and $POS$ + + + + Unexpected function "$TOK$" at position $POS$ + Math parser error messages. Left untouched "$TOK$" and $POS$ + + + + Unexpected value "$TOK$" found at position $POS$ + Math parser error messages. Left untouched "$TOK$" and $POS$ + + + + Unexpected variable "$TOK$" found at position $POS$ + Math parser error messages. Left untouched "$TOK$" and $POS$ + + + + Function arguments used without a function (position: $POS$) + Math parser error messages. Left untouched $POS$ + + + + Missing parenthesis + Math parser error messages. + Sulkeet puuttuvat + + + Too many parameters for function "$TOK$" at expression position $POS$ + Math parser error messages. Left untouched "$TOK$" and $POS$ + + + + Too few parameters for function "$TOK$" at expression position $POS$ + Math parser error messages. Left untouched "$TOK$" and $POS$ + + + + Divide by zero + Math parser error messages. + Nollalla jakaminen + + + Domain error + Math parser error messages. + Domain virhe + + + Name conflict + Math parser error messages. + Nimikonflikti + + + Invalid value for operator priority (must be greater or equal to zero). + Math parser error messages. + Väärä operaattorin prioriteetti arvo (täytyy olla suurempi tai yhtä suuri kuin nolla) + + + user defined binary operator "$TOK$" conflicts with a built in operator. + Math parser error messages. Left untouched "$TOK$" + Käyttäjän asettama binääri operaattori "$TOK$" on konfliktissa ohjelman operaattorin kanssa. + + + Unexpected string token found at position $POS$. + Math parser error messages. Left untouched $POS$ + + + + Unterminated string starting at position $POS$. + Math parser error messages. Left untouched $POS$ + + + + String function called with a non string type of argument. + Math parser error messages. + + + + String value used where a numerical argument is expected. + Math parser error messages. + + + + No suitable overload for operator "$TOK$" at position $POS$. + Math parser error messages. Left untouched "$TOK$" and $POS$ + + + + Function result is a string. + Math parser error messages. + Funktion tulos on tekstiä + + + Parser error. + Math parser error messages. + Jäsentämis virhe. + + + Decimal separator is identic to function argument separator. + Math parser error messages. + + + + If-then-else operator is missing an else clause + Math parser error messages. Do not translate operator name. + + + + Misplaced colon at position $POS$ + Math parser error messages. Left untouched $POS$ + + + + The "$TOK$" operator must be preceeded by a closing bracket. + Math parser error messages. Left untouched "$TOK$" + + + + + RenamePP + + Rename pattern piece + + + + + STDescriptions + + Standard figures of men 1st group, chest 100 cm + Standard table description + + + + + SaveDetailOptions + + Save detail option + Tallenna yksityiskohtan asetus + + + + SaveToolOptions + + Save tool option + Tallenna työkalun asetus + + + + TableWindow + + Create a layout + Luo sommittelu + + + toolBar + työkalupalkki + + + Save + Talenna + + + Save layout + Tallenna sommittelu + + + Stop + Lopeta + + + Stop laying + Lopeta sommitelu + + + Zoom In + Tarkenna + + + Zoom Out + Loitonna + + + untitled + nimetön + + + Svg files (*.svg) + Svg tiedostot (*.svg) + + + PDF files (*.pdf) + PDF tiedostot (*.pdf) + + + Images (*.png) + Kuvat (*.png) + + + PS files (*.ps) + PS tiedostot (*.ps) + + + EPS files (*.eps) + EPS tiedostot (*.eps) + + + Creating file '%1' failed! %2 + Tiedoston '%1' luonti epäonnistui! %2 + + + Critical error! + Kriittinen virhe! + + + Wavefront OBJ (*.obj) + Wavefront OBJ (*.obj) + + + Layout pages + Sommittelu sivut + + + Layout + Sommittelu + + + + Utils::CheckableMessageBox + + Do not ask again + + + + Do not &ask again + + + + Do not &show again + + + + + VAbstractConverter + + Error creation backup file: %1. + Virhe varmuuskopio %1 tiedoston luonnissa. + + + Couldn't get version information. + Versiotietoja ei voitu palattaa + + + Too many tags <%1> in file. + Liian monta merkkiä <%1> tiedostossa + + + Version "%1" invalid. + Versio "%1" väärä. + + + Version "0.0.0" invalid. + Versio "0.0.0" väärä. + + + Invalid version. Minimum supported version is %1 + Väärä versio. Pienin tuettu versio on %1 + + + Invalid version. Maximum supported version is %1 + Väärä versio. Suurin tuettu versio on %1 + + + Error no unique id. + Virhe: id ei ole yksikäsitteinen + + + Could not change version. + Versiota ei voitu vaihtaa + + + + VAbstractTool + + black + musta + + + green + vihreä + + + blue + sininen + + + dark red + tummanpunainen + + + dark green + tummanvihreä + + + dark blue + tummansininen + + + yellow + keltainen + + + Confirm deletion + + + + Do you really want to delete? + + + + + VApplication + + Error parsing file. Program will be terminated. + Jäsentämis virhe tiedostossa. Ohjelma lopetetaan. + + + Error bad id. Program will be terminated. + Väärä id. Ohjelma lopetetaan. + + + Error can't convert value. Program will be terminated. + Arvoa ei voi muuttaa. Ohjelma lopetetaan. + + + Error empty parameter. Program will be terminated. + Tyhjä parametri. Ohjelma lopetetaan. + + + Error wrong id. Program will be terminated. + Väärä id. Ohjelma lopetetaan. + + + Something's wrong!! + Joku on vialla!! + + + + VContainer + + Can't find object + Objektia ei löydy + + + Can't cast object + Ei voi luoda objektia + + + Can't find object. Type mismatch. + Objektia ei löydy. Tyypin yhteensopimattomuus. + + + + VDomDocument + + Can't convert toUInt parameter + Ei voi muuntaa toUInt parametriä + + + Can't convert toBool parameter + Ei voi muuntaa toBool parametriä + + + Got empty parameter + Tyhjä parametri + + + Can't convert toDouble parameter + Ei voinut muuntaa toDouble parametriä + + + Can't open file %1: +%2. + Tiedostoa %1 ei voitu avata: +%2 + + + Can't open schema file %1: +%2. + Skeematiedostoa %1 ei voitu avata. +%2. + + + Could not load schema file. + Skeematiedostoa ei voitu avata. + + + Validation error file %3 in line %1 column %2 + Tarkastus virhe tiedostossa %3 rivillä %1 kohdassa %2 + + + Parsing error file %3 in line %1 column %2 + Jäsentämis virhe tiedostossa %3 rivillä %1 kohdassa %2 + + + Couldn't get node + Solmua ei voitu palauttaa + + + Got wrong parameter id. Need only id > 0. + Väärä parametri id. Täytyy olla id > 0 + + + This id is not unique. + Tämä id ei ole yksikäsitteinen + + + Could not copy temp file to document file + Tilapäistiedostoa ei voitu kopioida dokumenttiin + + + Could not remove document file + Dokumenttitiedostoa ei voitu poistaa + + + + VDrawTool + + Edit wrong formula + Muutit väärää kaavaa + + + Options + Asetukset + + + Delete + Poista + + + + VException + + Critical error! + Kriittinen virhe! + + + + VFormula + + Error + Virhe + + + + VFormulaProperty + + Value + Arvo + + + Formula + Matemaattinen kaava + + + + VPE::VBoolProperty + + True + Tosi + + + False + Epätosi + + + + VPE::VFileEditWidget + + Directory + Kansio + + + Open File + Avaa Tiedosto + + + + VPattern + + Can't find tool in table. + Työkalua ei löydy taulukosta + + + Error no unique id. + Virhe: id ei ole yksikäsitteinen + + + Error parsing file. + Virhe tiedoston jäsennyksessä. + + + Error can't convert value. + Virhe: arvoa ei voi muuntaa + + + Error empty parameter. + Virhe: tyhjä parametri + + + Error wrong id. + Virhe: väärä id. + + + Critical error! + Kriittinen virhe! + + + Error parsing file (std::bad_alloc). + Virhe tiedoston (std::bad_alloc) jäsennyksessä + + + Error creating or updating detail + Virhe luodessa tai päivittäessä yksityiskohtaa + + + Error creating or updating single point + Virhe luodessa tai päivittäessä yksi piste + + + Error creating or updating point of end line + Virhe luodessa tai päivittäessä päätepiste + + + Error creating or updating point along line + Virhe luodessa tai päivittäessä piste viivalla + + + Error creating or updating point of shoulder + Virhe luodessa tai päivittäessä olkapääpiste + + + Error creating or updating point of normal + Virhe luodessa tai päivittäessä normaalipiste + + + Error creating or updating point of bisector + Virhe luodessa tai päivittäessä jakopiste + + + Error creating or updating point of lineintersection + Virhe luodessa tai päivittäessä viivojen leikkaus + + + Error creating or updating point of contact + Virhe luodessa tai päivittäessä kontaktipiste + + + Error creating or updating modeling point + Virhe luodessa tai päivittäessä mallinnuspiste + + + Error creating or updating height + Virhe luodessa tai päivittäessä pituus + + + Error creating or updating triangle + Virhe luodessa tai päivittäessä kolmio + + + Error creating or updating point of intersection + Virhe luodessa tai päivittäessä leikkauspiste + + + Error creating or updating cut spline point + Virhe luodessa tai päivittäessä leikatessa splinipiste + + + Error creating or updating cut spline path point + Virhe luodessa tai päivittäessä leikatessa polun piste + + + Error creating or updating cut arc point + Virhe luodessa tai päivittäessä kaaren leikkauspiste + + + Error creating or updating point of intersection line and axis + Virhe luodessa tai päivittäessä akselin ja viivan leikkauspiste + + + Error creating or updating point of intersection curve and axis + Virhe luodessa tai päivittäessä akselin ja käyrän leikkauspiste + + + Error creating or updating line + Virhe luodessa tai päivittäessä viivaa + + + Error creating or updating simple curve + Virhe luodessa tai päivittäessä yksinkertaista viivaa + + + Error creating or updating curve path + Virhe luodessa tai päivittäessä käyräpolku + + + Error creating or updating modeling simple curve + Virhe luodessa tai päivittäessä yksinkertaista mallinnus käyrää + + + Error creating or updating modeling curve path + Virhe luodessa tai päivittäessä mallinnus käyrää + + + Error creating or updating simple arc + Virhe luodessa tai päivittäessä yksinkertaista kaarta + + + Error creating or updating modeling arc + Virhe luodessa tai päivittäessä mallinnuskaarta + + + Error creating or updating union details + Virhe luodessa tai päivittäessä unioni yksityiskohtaa + + + File error. + Tiedostovirhe. + + + + VPatternConverter + + Unexpected version "%1". + Yllättävä versio "%1". + + + Error restoring backup file: %1. + Virhe palauttaessa varmuuskopio tiedostoa: %1. + + + + VSplinePath + + Not enough points to create the spline. + Pisteitä ei ole tarpeeksi splinin luomiseen + + + This spline does not exist. + Tämä splini ei ole olemassa + + + Can't cut spline path with one point + Slinipolkua ei voi leikata yhdellä pisteellä + + + + VTableGraphicsView + + can't find detail + Yksityiskohtaa ei löytynyt + + + detail found + Yksityiskohta löytyi + + + + VToolDetail + + Options + Asetukset + + + Delete + Poista + + + + VToolOptionsPropertyBrowser + + Base point + + + + Point label + Pistenimilappu + + + Position + Sijainti + + + Point at distance and angle + Piste viivaa pitkin + + + Line type + Viivan tyyppi + + + Length + Pituus + + + Angle + Kulma + + + Point at distance along line + Piste viivaa pitkin + + + Arc + Kaari + + + Radius + Säde + + + First angle + Ensimmäinen kulma + + + Second angle + Toinen kulma + + + Point along bisector + Piste puolikasta pitkin + + + Cut arc tool + Leikkaa kaari työkalu + + + Tool for segmenting a curve + Työkalu käyrän segmentointiin + + + Tool segment a pathed curve + Työkalu polun segmentointiin + + + Perpendicular point along line + Kohtisuorapiste viivaa pitkin + + + Line between points + Pisteiden välinen viiva + + + Point at line intersection + Viivojen leikkauspiste + + + Point along perpendicular + Piste kohtisuoraa pitkin + + + Additional angle degrees + Kulman lisäasteet + + + Point at intersection of arc and line + Kaaren ja viivan leikkauspiste + + + Tool to make point from x & y of two other points + + + + Special point on shoulder + Olkapään erityispiste + + + Curve tool + Käyrä työkalu + + + Curve factor + Käyrän kerroin + + + Tool for path curve + Työkalu käyrälle + + + Tool triangle + Kolmiotyökalu + + + Point intersection line and axis + + + + Line color + Viivan väri + + + Color + Väri + + + Point intersection curve and axis + + + + + Variables + + Line_ + Left symbol _ in name + Viiva_ + + + AngleLine_ + Left symbol _ in name + KulmaViiva_ + + + Arc_ + Left symbol _ in name + Kaari_ + + + Spl_ + Left symbol _ in name + Spl_ + + + SplPath + Do not add symbol _ to the end of name + SplPath + + + + VisToolCurveIntersectAxis + + <b>Intersection curve and axis</b>: angle = %1°; <b>Shift</b> - sticking angle, <b>Enter</b> - finish creation + + + + + VisToolEndLine + + <b>Point at distance and angle</b>: angle = %1°; <b>Shift</b> - sticking angle, <b>Enter</b> - finish creation + + + + + VisToolLineIntersectAxis + + <b>Intersection line and axis</b>: angle = %1°; <b>Shift</b> - sticking angle, <b>Enter</b> - finish creation + + + + + VisToolSplinePath + + <b>Curved path</b>: select three or more points + + + + <b>Curved path</b>: select three or more points, <b>Enter</b> - finish creation + + + + + main + + Pattern making program. + Kaavan luonti ohjelma. + + + Pattern file. + Kaava tiedosto. + + + diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/share/translations/valentina_fr_FR.ts valentina-0.3.0+44+201504011727~ubuntu14.10.1/share/translations/valentina_fr_FR.ts --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/share/translations/valentina_fr_FR.ts 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/share/translations/valentina_fr_FR.ts 2015-04-01 17:27:18.000000000 +0000 @@ -193,6 +193,14 @@ After each crash Valentina collect information that may help us fix a problem. We do not collect any personal information. Find more about what <a href="https://bitbucket.org/dismine/valentina/wiki/manual/Crash_reports">kind of information</a> we collect. Après chaque plantage Valentina collecte des informations qui pourront nous être utile a la résolutions du problème. Nous ne collectons pas d'informations personnelles. En savoir plus sur <a href="https://bitbucket.org/dismine/valentina/wiki/manual/Crash_reports">genre d'informations</a>que nous collectons. + + Pattern Editing + + + + Confirm item deletion + + DelTool @@ -253,10 +261,6 @@ DialogAlongLine - Point along line - Point le long d'une ligne - - Length Longueur @@ -265,10 +269,6 @@ Ajouter une variable dans la formule - Calculate value - Calculer valeur - - Value of length Longueur @@ -278,7 +278,7 @@ Point label - Désignation du point + Nom du point First point @@ -354,7 +354,7 @@ Line color - + Couleur du trait @@ -372,10 +372,6 @@ Ajouter une variable dans la formule - Calculate value - Calculer la valeur - - Value of radius Rayon @@ -456,10 +452,6 @@ Variables - Value of angle of line. - valeur de l'Angle de la ligne. - - Error Erreur @@ -473,16 +465,12 @@ Color - + Couleur DialogBisector - Bisector - Bissectrice - - Length Longueur @@ -491,10 +479,6 @@ Ajouter les variables sélectionnées dans la formule - Calculate value - Calculer valeur - - Value of length Longueur @@ -504,7 +488,7 @@ Point label - Désignation du point + Nom du point First point @@ -592,24 +576,16 @@ Line color - + Couleur de la ligne DialogCurveIntersectAxis - Curve intersect axis - Intersection courbe, axe - - Angle Angle - Calculate value - Calculer la valeur - - Value of angle Valeur de l'angle @@ -622,16 +598,12 @@ point d'axe - First point of line - Premier point de la ligne - - Curve courbe Point label - Désignation du point + Nom du point Type of line @@ -695,24 +667,16 @@ Line color - + Couleur de la ligne DialogCutArc - Cut arc - Couper l'arc - - Length longueur - Calculate value - Calculer valeur - - Value of length Longueur @@ -729,12 +693,8 @@ Arc - Selected curve - Courbe selectionnée - - Point label - Désignation du point + Nom du point Input data @@ -786,24 +746,16 @@ Color - + Couleur DialogCutSpline - Cut curve - Couper la courbe - - Length Longueur - Calculate value - Calculer valeur - - Value of length Longueur @@ -825,7 +777,7 @@ Point label - Désignation du point + Nom du point Input data @@ -873,24 +825,16 @@ Color - + Couleur DialogCutSplinePath - Cut curve path - Couper le chemin de la courbe - - Length Longueur - Calculate value - Calculer valeur - - Value of length Longueur @@ -912,7 +856,7 @@ Point label - Désignation du point + Nom du point Input data @@ -960,7 +904,7 @@ Color - + Couleur @@ -1033,10 +977,6 @@ Insérer une variable dans la formule - Calculate value - Valeur calculée - - Value of first angle Valeur du premier angle @@ -1092,18 +1032,10 @@ DialogEndLine - Point in the end of a line - Point en fin de ligne - - Length Longueur - Calculate value - Valeur calculée - - Value of length Longueur @@ -1129,7 +1061,7 @@ Point label - Désignation du point + Nom du point Type of line @@ -1185,18 +1117,14 @@ Line color - + Couleur du trait DialogHeight - Height - Stature - - Point label - Désignation du point + Nom du point Base point @@ -1236,7 +1164,7 @@ Line color - + Couleur du trait @@ -1486,7 +1414,7 @@ Tables of Variables - + Tableaux des variables Base size: %1 %3; Base height: %2 %3 @@ -1517,15 +1445,15 @@ Path: - Chemin: + Chemin : Given name: - Prénom: + Prénom : Family name: - Nom de famille: + Nom de famille : New measurements @@ -1533,7 +1461,7 @@ Units: - Unités: + Unité : Could not create measurements file @@ -1622,10 +1550,6 @@ - ... - ... - - Rotate workpiece @@ -1685,10 +1609,6 @@ DialogLine - Line - Ligne - - First point Premier point @@ -1720,12 +1640,8 @@ DialogLineIntersect - Intersection of lines - Intersection des lignes - - Point label - Désignation du point + Nom du point First line @@ -1763,18 +1679,10 @@ DialogLineIntersectAxis - Line intersect axis - Intersection ligne, axe - - Angle Angle - Calculate value - Calcule la valeur - - Value of angle Valeur de l'angle @@ -1800,7 +1708,7 @@ Point label - Désignation du point + Nom du point Type of line @@ -1905,10 +1813,6 @@ DialogNormal - Normal - Normal - - Length Longueur @@ -1917,10 +1821,6 @@ Ajouter une variable dans la formule - Calculate value - Calculer la valeur - - Value of length Longueur @@ -1930,7 +1830,7 @@ Point label - Désignation du point + Nom du point First point @@ -2186,10 +2086,6 @@ DialogPointOfContact - Point of contact - Point de contact - - Radius Rayon @@ -2198,10 +2094,6 @@ Ajouter une variable dans la formule - Calculate value - Calculer valeur - - Value of radius Rayon @@ -2211,7 +2103,7 @@ Point label - Désignation du point + Nom du point Center of arc @@ -2281,34 +2173,18 @@ DialogPointOfIntersection - Point of intersection - Point d'intersection - - Point label - Désignation du point - - - vertical point - Point vertical + Nom du point First point of angle Premier point de l'angle - horizontal point - point horizontal - - Second point of angle Second point de l'angle - Select point horizontally - Choisir le point horizontalement - - Point from X and Y of two other points @@ -2328,10 +2204,6 @@ DialogShoulderPoint - Point of shoulder - Point d'épaule - - Length Longueur @@ -2340,10 +2212,6 @@ Ajouter une variable dans la formule - Calculate value - Calculer valeur - - Value of length Longueur @@ -2353,7 +2221,7 @@ Point label - Désignation du point + Nom du point First point @@ -2456,16 +2324,12 @@ Point label - Désignation du point + Nom du point DialogSpline - Curve - Courbe - - First point Premier point @@ -2503,7 +2367,7 @@ Color - + Couleur @@ -2546,7 +2410,7 @@ Color - + Couleur @@ -2618,12 +2482,8 @@ DialogTriangle - Triangle - Triangle - - Point label - Désignation du point + Nom du point First point of axis @@ -2700,33 +2560,53 @@ DialogUnionDetails - Union details - Détail d'union - - <html><head/><body><p>Do you really want union details?</p></body></html> <html><head/><body><p>Voulez-vous vraiment fusionner les propriétés ?</p></body></html> Select first point - Choisir le premier point + Choisir le premier point Select second point - Choisir le deuxième point + Choisir le deuxième point Select another second point - Choisir un autre deuxième point + Choisir un autre deuxième point Select detail - Choisir les détails + Choisir les détails Union tool + + Select a first point + + + + Workpiece should have at least two points and three objects + + + + Select a second point + + + + Select a unique point + + + + Select a detail + + + + Select a point on edge + + Functions @@ -2883,14 +2763,6 @@ Point le long d'une perpendiculaire - Special point on shoulder. - Point spécial d'épaule. - - - Tool triangle. - Outil triangle. - - Perpendicular point along line Point perpendiculaire le long d'une ligne @@ -2899,14 +2771,6 @@ point le long d'une bissectrice - Point at intersection of arc and line. - Point à l'intersection d'un arc et d'une ligne. - - - Tool to make point from x & y of two other points. - Créer un nouveau point à partir des coordonnées x & y de deux points différents. - - Point at distance and angle Point à distance et angle @@ -2915,10 +2779,6 @@ Point à distance le long d'un ligne - Point of intersection line and axis - Point à l'intersection d'un axe et d'une ligne - - ... ... @@ -2948,22 +2808,6 @@ Courbe - Curve tool. - Outils courbe. - - - Tool for path curve. - Outil pour chemin de courbe. - - - Tool for segmenting a curve. - Outil pour segmenter une courbe. - - - Tool segment a pathed curve. - Outil segment d'une courbe le long d'un chemin. - - Tools for creating arcs. Outils pour créer des arcs. @@ -2972,14 +2816,6 @@ Arc - Arc tool. - Outil arc. - - - Cut arc tool. - Outil Coupe Arc. - - Tools for creating details. Outils pour créer des détails. @@ -2988,14 +2824,6 @@ Détail - Tool new detail. - Outil nouveau détail. - - - Tool for union two details. - outil d'union de deux détails. - - &File &Fichier @@ -3137,7 +2965,7 @@ Change the label of pattern piece - Changer la désignation de l'élément de patron + Renommer l'élément de patron Table of variables @@ -3270,8 +3098,8 @@ There is no way create individual measurements file independent on the pattern file. For opening pattern need keep both files: pattern and measurements. Do you want continue? - Il n'est pas possible de créer des mesures individuelles indépendament dufichier patron. -Pour ouvrir un patron vous devez garder les deux fichiers: patron et mesures. Voulez-vous continuer? + Il n'est pas possible de créer des mesures individuelles indépendamment du fichier patron. +Pour ouvrir un patron vous devez garder les deux fichiers : patron et mesures. Voulez-vous continuer? Select point @@ -3326,10 +3154,6 @@ Choisir le premier point de l'axe - Select point vertically - Choisir le point verticallement - - Select detail Choisir les détails @@ -3441,7 +3265,7 @@ Enter a new label for the pattern piece. - Saisir une nouvelle désignation pour cet élément de patron. + Saisir un nouveau nom pour cet élément de patron. This file already opened in another window. @@ -5963,22 +5787,6 @@ Enregistrer la mise en page - Next - Suivant - - - Next detail - Détail suivant - - - Turn - Tourner - - - Turn the detail 90 degrees - Tourne le détail de 90 degrés - - Stop Arrêter @@ -5987,26 +5795,6 @@ Arrêter la mise en page - Enlarge letter - Grossier la lettre - - - Enlarge the length of the sheet - Augmenter la longueur de la feuille - - - Reduce sheet - Réduire la feuille - - - Reduce the length of the sheet - Réduire la longueur de la feuille - - - Mirroring - Mise en miroir - - Zoom In Zoom avant @@ -6015,18 +5803,6 @@ Zoom arrière - 0 details left. - 0 détails restant. - - - Collisions not found. - Collisions non trouvées. - - - %1 details left. - %1 détails restant(s). - - untitled sans titre @@ -6051,10 +5827,6 @@ Fichiers EPS (*.eps) - Collisions found. - Collisions trouvées. - - Creating file '%1' failed! %2 Création du fichier '%1' Raté ! %2 @@ -6076,6 +5848,21 @@ + Utils::CheckableMessageBox + + Do not ask again + + + + Do not &ask again + + + + Do not &show again + + + + VAbstractConverter Error creation backup file: %1. @@ -6118,11 +5905,11 @@ VAbstractTool Confirm the deletion. - Confirmer la suppression. + Confirmer la suppression. Do you really want delete? - Voulez vous vraiment supprimer ? + Voulez vous vraiment supprimer ? black @@ -6152,6 +5939,14 @@ yellow + + Confirm deletion + + + + Do you really want to delete? + + VApplication @@ -6518,7 +6313,7 @@ Point label - Désignation du point + Nom du point Position @@ -6635,7 +6430,7 @@ Color - + Couleur Point intersection curve and axis diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/share/translations/valentina_he_IL.ts valentina-0.3.0+44+201504011727~ubuntu14.10.1/share/translations/valentina_he_IL.ts --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/share/translations/valentina_he_IL.ts 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/share/translations/valentina_he_IL.ts 2015-04-01 17:27:18.000000000 +0000 @@ -193,6 +193,14 @@ After each crash Valentina collect information that may help us fix a problem. We do not collect any personal information. Find more about what <a href="https://bitbucket.org/dismine/valentina/wiki/manual/Crash_reports">kind of information</a> we collect. + + Pattern Editing + + + + Confirm item deletion + + DelTool @@ -261,10 +269,6 @@ - Calculate value - לחשב ערך - - Value of length ערך האורך @@ -368,10 +372,6 @@ - Calculate value - לחשב ערך - - Value of radius ערך הרדיוס @@ -479,10 +479,6 @@ - Calculate value - לחשב ערך - - Value of length ערך האורך @@ -681,10 +677,6 @@ אורך - Calculate value - לחשב ערך - - Value of length ערך האורך @@ -764,10 +756,6 @@ אורך - Calculate value - לחשב ערך - - Value of length ערך האורך @@ -847,10 +835,6 @@ אורך - Calculate value - לחשב ערך - - Value of length ערך האורך @@ -1052,10 +1036,6 @@ אורך - Calculate value - לחשב ערך - - Value of length ערך האורך @@ -1629,10 +1609,6 @@ DialogLine - Line - קו - - First point נקודה ראשונה @@ -1664,10 +1640,6 @@ DialogLineIntersect - Intersection of lines - הצטלבות של קווים - - Point label תווית הנקודה @@ -1849,10 +1821,6 @@ - Calculate value - לחשב ערך - - Value of length ערך האורך @@ -2126,10 +2094,6 @@ - Calculate value - לחשב ערך - - Value of radius ערך הרדיוס @@ -2248,10 +2212,6 @@ - Calculate value - לחשב ערך - - Value of length ערך האורך @@ -2370,10 +2330,6 @@ DialogSpline - Curve - עקומה - - First point נקודה ראשונה @@ -2609,22 +2565,38 @@ Select first point - לבחור נקודה ראשונה + לבחור נקודה ראשונה Select second point - לבחור נקודה שנייה + לבחור נקודה שנייה + + + Union tool + - Select another second point + Select a first point - Select detail + Workpiece should have at least two points and three objects - Union tool + Select a second point + + + + Select a unique point + + + + Select a detail + + + + Select a point on edge @@ -5864,6 +5836,21 @@ + Utils::CheckableMessageBox + + Do not ask again + + + + Do not &ask again + + + + Do not &show again + + + + VAbstractConverter Error creation backup file: %1. @@ -5905,14 +5892,6 @@ VAbstractTool - Confirm the deletion. - - - - Do you really want delete? - - - black @@ -5940,6 +5919,14 @@ yellow + + Confirm deletion + + + + Do you really want to delete? + + VApplication diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/share/translations/valentina_id_ID.ts valentina-0.3.0+44+201504011727~ubuntu14.10.1/share/translations/valentina_id_ID.ts --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/share/translations/valentina_id_ID.ts 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/share/translations/valentina_id_ID.ts 2015-04-01 17:27:18.000000000 +0000 @@ -193,6 +193,14 @@ After each crash Valentina collect information that may help us fix a problem. We do not collect any personal information. Find more about what <a href="https://bitbucket.org/dismine/valentina/wiki/manual/Crash_reports">kind of information</a> we collect. Setelah setiap kerusakan Valentina mengumpulkan informasi yang dapat membantu kami memperbaiki suatu masalah. Kami tidak mengumpulkan informasi pribadi apapun. Temukan lebih lanjut tentang apa <a href="https://bitbucket.org/dismine/valentina/wiki/manual/Crash_reports"> jenis informasi </a> kami kumpulkan. + + Pattern Editing + + + + Confirm item deletion + + DelTool @@ -253,10 +261,6 @@ DialogAlongLine - Point along line - Titik di sepanjang garis - - Length panjang @@ -265,10 +269,6 @@ Masukkan variabel ke dalam rumus - Calculate value - Hitung nilai - - Value of length Nilai panjang @@ -373,10 +373,6 @@ sisipkan variabel ke dalam formula - Calculate value - hitung nilai - - Value of radius nilai radius @@ -457,10 +453,6 @@ variabel - Value of angle of line. - nilai sudut garis - - Error @@ -488,10 +480,6 @@ sisipkan variabel yang ditandai ke dalam rumus - Calculate value - hitung nilai - - Value of length nilai panjang @@ -595,18 +583,10 @@ DialogCurveIntersectAxis - Curve intersect axis - sumbu perpotongan kurva - - Angle sudut - Calculate value - Hitung nilai - - Value of angle nilai dari sudut @@ -619,10 +599,6 @@ titik sumbu - First point of line - Titik pertama dari baris - - Curve kurva @@ -698,18 +674,10 @@ DialogCutArc - Cut arc - potong busur - - Length panjang - Calculate value - Hitung nilai - - Value of length Nilai panjang @@ -726,10 +694,6 @@ busur - Selected curve - kurva yang telah dipilih - - Point label label titik @@ -789,18 +753,10 @@ DialogCutSpline - Cut curve - potong kurva - - Length panjang - Calculate value - Hitung nilai - - Value of length Nilai panjang @@ -876,18 +832,10 @@ DialogCutSplinePath - Cut curve path - potong jalur curva - - Length panjang - Calculate value - Hitung nilai - - Value of length Nilai panjang @@ -1030,10 +978,6 @@ sisipkan variabel ke dalam rumus - Calculate value - Hitung nilai - - Value of first angle nilai dari sudut pertama @@ -2622,23 +2566,31 @@ - Select first point + Union tool - Select second point + Select a first point - Select another second point + Workpiece should have at least two points and three objects - Select detail + Select a second point - Union tool + Select a unique point + + + + Select a detail + + + + Select a point on edge @@ -5879,6 +5831,21 @@ + Utils::CheckableMessageBox + + Do not ask again + + + + Do not &ask again + + + + Do not &show again + + + + VAbstractConverter Error creation backup file: %1. @@ -5920,14 +5887,6 @@ VAbstractTool - Confirm the deletion. - - - - Do you really want delete? - - - black @@ -5955,6 +5914,14 @@ yellow + + Confirm deletion + + + + Do you really want to delete? + + VApplication diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/share/translations/valentina_it_IT.ts valentina-0.3.0+44+201504011727~ubuntu14.10.1/share/translations/valentina_it_IT.ts --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/share/translations/valentina_it_IT.ts 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/share/translations/valentina_it_IT.ts 2015-04-01 17:27:18.000000000 +0000 @@ -193,6 +193,14 @@ After each crash Valentina collect information that may help us fix a problem. We do not collect any personal information. Find more about what <a href="https://bitbucket.org/dismine/valentina/wiki/manual/Crash_reports">kind of information</a> we collect. + + Pattern Editing + + + + Confirm item deletion + + DelTool @@ -2640,23 +2648,31 @@ - Select first point + Union tool - Select second point + Select a first point - Select another second point + Workpiece should have at least two points and three objects - Select detail + Select a second point - Union tool + Select a unique point + + + + Select a detail + + + + Select a point on edge @@ -5900,6 +5916,21 @@ + Utils::CheckableMessageBox + + Do not ask again + + + + Do not &ask again + + + + Do not &show again + + + + VAbstractConverter Error creation backup file: %1. @@ -5941,14 +5972,6 @@ VAbstractTool - Confirm the deletion. - - - - Do you really want delete? - - - black @@ -5976,6 +5999,14 @@ yellow + + Confirm deletion + + + + Do you really want to delete? + + VApplication diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/share/translations/valentina_nl_NL.ts valentina-0.3.0+44+201504011727~ubuntu14.10.1/share/translations/valentina_nl_NL.ts --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/share/translations/valentina_nl_NL.ts 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/share/translations/valentina_nl_NL.ts 2015-04-01 17:27:18.000000000 +0000 @@ -193,6 +193,14 @@ After each crash Valentina collect information that may help us fix a problem. We do not collect any personal information. Find more about what <a href="https://bitbucket.org/dismine/valentina/wiki/manual/Crash_reports">kind of information</a> we collect. Na elke crash zal Valentina informatie verzamelen dat ons kan helpen het probleem op te lossen. Wij verzamelen geen persoonlijke informatie. Hier vind u wat wij aan informatie verzamelen :<ahref="https://bitbucket.org/dismine/valentina/wiki/manual/Crash_reports">". + + Pattern Editing + + + + Confirm item deletion + + DelTool @@ -253,10 +261,6 @@ DialogAlongLine - Point along line - Punt langs de lijn - - Length Lengte @@ -265,10 +269,6 @@ Voeg variabele info in de formule - Calculate value - Bereken waarde - - Value of length Lengtewaarde @@ -372,10 +372,6 @@ Voeg variabele info in de formule - Calculate value - Bereken waarde - - Value of radius Waarde van de straal @@ -456,10 +452,6 @@ Variabelen - Value of angle of line. - Waarde van hoek van de lijn - - Error Error @@ -479,10 +471,6 @@ DialogBisector - Bisector - Bisector - - Length Lengte @@ -491,10 +479,6 @@ Voeg gemarkeerde variabele info in de formule - Calculate value - Bereken waarde - - Value of length Lengtewaarde @@ -598,18 +582,10 @@ DialogCurveIntersectAxis - Curve intersect axis - Kromming doorkruist as - - Angle Hoek - Calculate value - Bereken waarde - - Value of angle Waarde van hoek @@ -622,10 +598,6 @@ As punt - First point of line - Eerste punt van de lijn - - Curve Kromming @@ -701,18 +673,10 @@ DialogCutArc - Cut arc - Knip boog - - Length Lengte - Calculate value - Bereken waarde - - Value of length Lengtewaarde @@ -729,10 +693,6 @@ Boog - Selected curve - Geselecteerde kromming - - Point label Punt label @@ -792,18 +752,10 @@ DialogCutSpline - Cut curve - Knip kromming - - Length Lengte - Calculate value - Bereken waarde - - Value of length Lengtewaarde @@ -879,18 +831,10 @@ DialogCutSplinePath - Cut curve path - Knip kromming - - Length Lengte - Calculate value - Bereken waarde - - Value of length Lengtewaarde @@ -1033,10 +977,6 @@ Voeg variabele info in de formule - Calculate value - Bereken waarde - - Value of first angle Waarde van eerste hoek @@ -1092,18 +1032,10 @@ DialogEndLine - Point in the end of a line - Punt aan het einde van een lijn - - Length Lengte - Calculate value - Bereken waarde - - Value of length Lengtewaarde @@ -1191,10 +1123,6 @@ DialogHeight - Height - Hoogte - - Point label Punt label @@ -1622,10 +1550,6 @@ - ... - ... - - Rotate workpiece @@ -1685,10 +1609,6 @@ DialogLine - Line - Lijn - - First point Eerste punt @@ -1720,10 +1640,6 @@ DialogLineIntersect - Intersection of lines - Kruispunt van lijnen - - Point label Punt label @@ -1763,18 +1679,10 @@ DialogLineIntersectAxis - Line intersect axis - Lijn kruist de as - - Angle Hoek - Calculate value - Bereken waarde - - Value of angle Waarde van hoek @@ -1905,10 +1813,6 @@ DialogNormal - Normal - Normaal - - Length Lengte @@ -1917,10 +1821,6 @@ Voeg variabele info in de formule - Calculate value - Bereken waarde - - Value of length Lengtewaarde @@ -2186,10 +2086,6 @@ DialogPointOfContact - Point of contact - Contactpunt - - Radius Straal @@ -2198,10 +2094,6 @@ Voeg variabele info in de formule - Calculate value - Bereken waarde - - Value of radius Waarde van de straal @@ -2281,34 +2173,18 @@ DialogPointOfIntersection - Point of intersection - Kruispunt - - Point label Punt label - vertical point - Verticaal punt - - First point of angle Eerste punt van hoek - horizontal point - Horizontaal punt - - Second point of angle Tweede punt van hoek - Select point horizontally - Selecteer punt horzontaal - - Point from X and Y of two other points @@ -2328,10 +2204,6 @@ DialogShoulderPoint - Point of shoulder - Schouderpunt - - Length Lengte @@ -2340,10 +2212,6 @@ Voeg variabele info in de formule - Calculate value - Bereken waarde - - Value of length Lengtewaarde @@ -2462,10 +2330,6 @@ DialogSpline - Curve - Kromming - - First point Eerste punt @@ -2618,10 +2482,6 @@ DialogTriangle - Triangle - Driehoek - - Point label Punt label @@ -2700,33 +2560,53 @@ DialogUnionDetails - Union details - Gezamenlijke details - - <html><head/><body><p>Do you really want union details?</p></body></html> <html><head/><body><p>Wil je echt gezamenlijke details?</p></body></html> Select first point - Selecteer eerste punt + Selecteer eerste punt Select second point - Selecteer tweede punt + Selecteer tweede punt Select another second point - Selecteer een ander tweede punt + Selecteer een ander tweede punt Select detail - Selecteer een detail + Selecteer een detail Union tool + + Select a first point + + + + Workpiece should have at least two points and three objects + + + + Select a second point + + + + Select a unique point + + + + Select a detail + + + + Select a point on edge + + Functions @@ -2882,14 +2762,6 @@ Punt voor haakse hoek - Special point on shoulder. - Speciaal punt op schouder - - - Tool triangle. - Driehoek gereedschap - - Perpendicular point along line Haakse hoek punt langs lijn @@ -2898,14 +2770,6 @@ Punt langs bisector - Point at intersection of arc and line. - Kruispunt van boog en lijn - - - Tool to make point from x & y of two other points. - Gereedschap om een punt te maken van X & Y van twee andere punten - - Point at distance and angle Punt op afstand en hoek @@ -2914,10 +2778,6 @@ Punt op afstand langs lijn - Point of intersection line and axis - Kruispunt tussen lijn en as - - ... ... @@ -2946,22 +2806,6 @@ Kromming - Curve tool. - Krommingsgereedschap - - - Tool for path curve. - Gereedschap voorkrommingspad - - - Tool for segmenting a curve. - Gereedschap om een kromming in segmenten te delen - - - Tool segment a pathed curve. - Gereedschap segmenteerd een krommingspad - - Tools for creating arcs. Gereedschap voor het maken van bogen @@ -2970,14 +2814,6 @@ Boog - Arc tool. - Boog gereedschap - - - Cut arc tool. - Knip een boog gereedschap - - Tools for creating details. Gereedschap om details te maken @@ -2986,14 +2822,6 @@ Detail - Tool new detail. - Gereedschap nieuw detail - - - Tool for union two details. - Gereedschap om twee details te verenigen. - - &File &Bestand @@ -3323,10 +3151,6 @@ Selecteer eerste punt van de as - Select point vertically - Selecteer punt verticaal - - Select detail Selecteer een detail @@ -5959,22 +5783,6 @@ Sla opmaak op - Next - Volgende - - - Next detail - Volgend detail - - - Turn - Omdraaien - - - Turn the detail 90 degrees - Draai het detail 90 graden - - Stop Stop @@ -5983,26 +5791,6 @@ Stop plaatsen - Enlarge letter - Vergroot letter - - - Enlarge the length of the sheet - Vergroot de lengte van het werkblad - - - Reduce sheet - Verklein werkblad - - - Reduce the length of the sheet - Verklein de lengte van het werkblad - - - Mirroring - Spiegelen - - Zoom In Inzoomen @@ -6011,18 +5799,6 @@ Uitzoomen - 0 details left. - 0 details over. - - - Collisions not found. - Conflicten niet gevonden - - - %1 details left. - %1 details over - - untitled Niet betiteld @@ -6047,10 +5823,6 @@ EPS bestanden (*.eps) - Collisions found. - Conflicten gevonden - - Creating file '%1' failed! %2 Bestand '%1' gefaald te maken! %2 @@ -6072,6 +5844,21 @@ + Utils::CheckableMessageBox + + Do not ask again + + + + Do not &ask again + + + + Do not &show again + + + + VAbstractConverter Error creation backup file: %1. @@ -6114,11 +5901,11 @@ VAbstractTool Confirm the deletion. - Bevestig de verwijdering. + Bevestig de verwijdering. Do you really want delete? - Wil je echt verwijderen? + Wil je echt verwijderen? black @@ -6148,6 +5935,14 @@ yellow + + Confirm deletion + + + + Do you really want to delete? + + VApplication diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/share/translations/valentina_ru_RU.ts valentina-0.3.0+44+201504011727~ubuntu14.10.1/share/translations/valentina_ru_RU.ts --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/share/translations/valentina_ru_RU.ts 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/share/translations/valentina_ru_RU.ts 2015-04-01 17:27:18.000000000 +0000 @@ -201,6 +201,14 @@ With OS options (.) С параметров ОС (.) + + Pattern Editing + Редактирование выкройки + + + Confirm item deletion + Подтвердите удаление елемента + DelTool @@ -3233,19 +3241,19 @@ Select first point - Выберить первую точку + Выберить первую точку Select second point - Выберить вторую точку + Выберить вторую точку Select another second point - Выберите другую точку + Выберите другую точку Select detail - Выберить деталь + Выберить деталь Union details @@ -3259,6 +3267,30 @@ Union tool Инструмент объединения деталей + + Select a first point + Выберить первую точку + + + Workpiece should have at least two points and three objects + Деталь должна иметь по крайней мере две точки и три объекты + + + Select a second point + Выберить вторую точку + + + Select a unique point + Выберить уникальную точку + + + Select a detail + Выберить деталь + + + Select a point on edge + Выберите точку на ребре + Functions @@ -7740,6 +7772,21 @@ + Utils::CheckableMessageBox + + Do not ask again + Не спрашивать снова + + + Do not &ask again + Не &спрашивать снова + + + Do not &show again + Не по&казывать снова + + + VAbstractConverter Error creation backup file: %1. @@ -7789,11 +7836,11 @@ VAbstractTool Confirm the deletion. - Подтвердить удаление. + Подтвердить удаление. Do you really want delete? - Вы точно хотите удалить? + Вы точно хотите удалить? black @@ -7823,6 +7870,14 @@ yellow желтый + + Confirm deletion + Подтвердите удаление + + + Do you really want to delete? + Вы точно хотите удалить? + VApplication diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/share/translations/valentina.ts valentina-0.3.0+44+201504011727~ubuntu14.10.1/share/translations/valentina.ts --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/share/translations/valentina.ts 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/share/translations/valentina.ts 2015-04-01 17:27:18.000000000 +0000 @@ -193,6 +193,14 @@ After each crash Valentina collect information that may help us fix a problem. We do not collect any personal information. Find more about what <a href="https://bitbucket.org/dismine/valentina/wiki/manual/Crash_reports">kind of information</a> we collect. + + Pattern Editing + + + + Confirm item deletion + + DelTool @@ -2556,23 +2564,31 @@ - Select first point + Union tool - Select second point + Select a first point - Select another second point + Workpiece should have at least two points and three objects - Select detail + Select a second point - Union tool + Select a unique point + + + + Select a detail + + + + Select a point on edge @@ -5812,6 +5828,21 @@ + Utils::CheckableMessageBox + + Do not ask again + + + + Do not &ask again + + + + Do not &show again + + + + VAbstractConverter Error creation backup file: %1. @@ -5853,14 +5884,6 @@ VAbstractTool - Confirm the deletion. - - - - Do you really want delete? - - - black @@ -5888,6 +5911,14 @@ yellow + + Confirm deletion + + + + Do you really want to delete? + + VApplication diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/share/translations/valentina_uk_UA.ts valentina-0.3.0+44+201504011727~ubuntu14.10.1/share/translations/valentina_uk_UA.ts --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/share/translations/valentina_uk_UA.ts 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/share/translations/valentina_uk_UA.ts 2015-04-01 17:27:18.000000000 +0000 @@ -197,6 +197,14 @@ With OS options (.) З параметрів ОС (.) + + Pattern Editing + Редагування лекала + + + Confirm item deletion + Підтвердіть видалення об'єкту + DelTool @@ -3013,19 +3021,19 @@ Select first point - Виберість першу точку + Виберість першу точку Select second point - Виберіть другу точку + Виберіть другу точку Select another second point - Виберіть іншу точку + Виберіть іншу точку Select detail - Виберіть деталь + Виберіть деталь Union details @@ -3039,6 +3047,30 @@ Union tool Інструмент об'єднання + + Select a first point + Виберість першу точку + + + Workpiece should have at least two points and three objects + Деталь повинна мати принаймні дві точки і три об'єкти + + + Select a second point + Виберіть другу точку + + + Select a unique point + Виберіть унікальну точку + + + Select a detail + Виберіть деталь + + + Select a point on edge + Виберіть точку на ребрі + Functions @@ -6697,6 +6729,21 @@ + Utils::CheckableMessageBox + + Do not ask again + Не питати знову + + + Do not &ask again + Не &питати знову + + + Do not &show again + Не по&казувати знову + + + VAbstractConverter Error creation backup file: %1. @@ -6746,11 +6793,11 @@ VAbstractTool Confirm the deletion. - Підтвердіть видалення. + Підтвердіть видалення. Do you really want delete? - Ви дійсно хочете видалити? + Ви дійсно хочете видалити? black @@ -6780,6 +6827,14 @@ yellow жовтий + + Confirm deletion + Підтвердіть видалення + + + Do you really want to delete? + Ви дійсно хочете видалити? + VApplication diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/share/translations.pro valentina-0.3.0+44+201504011727~ubuntu14.10.1/share/translations.pro --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/share/translations.pro 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/share/translations.pro 2015-04-01 17:27:18.000000000 +0000 @@ -38,4 +38,5 @@ translations/valentina_it_IT.ts \ translations/valentina_nl_NL.ts \ translations/valentina_id_ID.ts \ - translations/valentina_es_ES.ts + translations/valentina_es_ES.ts \ + translations/valentina_fi_FI.ts diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/app.pro valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/app.pro --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/app.pro 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/app.pro 2015-04-01 17:27:18.000000000 +0000 @@ -46,6 +46,7 @@ # Suport subdirectories. Just better project code tree. include(app.pri) +include(../utils/utils.pri) # This include path help promoute VMainGraphicsView on main window. Without it compiler can't find path to custom view INCLUDEPATH += "$${PWD}/widgets" @@ -193,7 +194,8 @@ $${TRANSLATIONS_PATH}/valentina_it_IT.qm \ $${TRANSLATIONS_PATH}/valentina_nl_NL.qm \ $${TRANSLATIONS_PATH}/valentina_id_ID.qm \ - $${TRANSLATIONS_PATH}/valentina_es_ES.qm + $${TRANSLATIONS_PATH}/valentina_es_ES.qm \ + $${TRANSLATIONS_PATH}/valentina_fi_FI.qm # Set "make install" command for Unix-like systems. unix{ @@ -326,6 +328,14 @@ QMAKE_BUNDLE_DATA += TRANSLATION_es_ES } + exists($${TRANSLATIONS_PATH}/valentina_fi_FI.qm){ + TRANSLATION_fi_FI.files += \ + $${TRANSLATIONS_PATH}/valentina_fi_FI.qm \ + $${TRANSLATIONS_PATH}/Localizable.strings + TRANSLATION_fi_FI.path = "$$RESOURCES_DIR/translations/fi_FI.lproj" + QMAKE_BUNDLE_DATA += TRANSLATION_fi_FI + } + # Symlinks also good names for copying. Make will take origin file and copy them with using symlink name. # For bundle this names more then enough. We don't need care much about libraries versions. libraries.path = $$FRAMEWORKS_DIR diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/container/vcontainer.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/container/vcontainer.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/container/vcontainer.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/container/vcontainer.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -27,13 +27,14 @@ *************************************************************************/ #include "vcontainer.h" -#include #include "../core/vapplication.h" #include "../geometry/varc.h" #include "../geometry/vsplinepath.h" +#include "../../utils/logging.h" + #include #include -#include +#include Q_LOGGING_CATEGORY(vCon, "v.container") @@ -210,7 +211,7 @@ */ void VContainer::Clear() { - qCDebug(vCon)<<"Clearing container data."; + qCDebug(vCon, "Clearing container data."); _id = NULL_ID; d->details.clear(); @@ -236,7 +237,7 @@ //--------------------------------------------------------------------------------------------------------------------- void VContainer::ClearCalculationGObjects() { - if (d->gObjects.size()>0) + if (not d->gObjects.isEmpty()) { QVector keys; QHash >::iterator i; @@ -248,7 +249,8 @@ 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 +326,7 @@ quint32 VContainer::AddObject(QHash &obj, val value) { SCASSERT(value != nullptr); - quint32 id = getNextId(); + const quint32 id = getNextId(); value->setId(id); obj[id] = value; return id; diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/core/core.pri valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/core/core.pri --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/core/core.pri 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/core/core.pri 2015-04-01 17:27:18.000000000 +0000 @@ -4,9 +4,13 @@ HEADERS += \ $$PWD/vapplication.h \ $$PWD/undoevent.h \ - $$PWD/vsettings.h + $$PWD/vsettings.h \ + $$PWD/qcommandlineoption.h \ + $$PWD/qcommandlineparser.h SOURCES += \ $$PWD/vapplication.cpp \ $$PWD/undoevent.cpp \ - $$PWD/vsettings.cpp + $$PWD/vsettings.cpp \ + $$PWD/qcommandlineoption.cpp \ + $$PWD/qcommandlineparser.cpp diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/core/qcommandlineoption.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/core/qcommandlineoption.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/core/qcommandlineoption.cpp 1970-01-01 00:00:00.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/core/qcommandlineoption.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -0,0 +1,390 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Laszlo Papp +** Copyright (C) 2013 David Faure +** Contact: http://www.qt.io/licensing/ +** +** $QT_BEGIN_LICENSE:LGPL21$ +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qcommandlineoption.h" + +#include + +#if QT_VERSION < QT_VERSION_CHECK(5, 2, 0) + +#ifdef Q_CC_GNU + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Weffc++" +#endif + +class QCommandLineOptionPrivate : public QSharedData +{ +public: + inline QCommandLineOptionPrivate() + : hidden(false) + { } + + void setNames(const QStringList &nameList); + + //! The list of names used for this option. + QStringList names; + + //! The documentation name for the value, if one is expected + //! Example: "-o " means valueName == "file" + QString valueName; + + //! The description used for this option. + QString description; + + //! The list of default values used for this option. + QStringList defaultValues; + + //! Show or hide in --help + bool hidden; +}; + +#ifdef Q_CC_GNU + #pragma GCC diagnostic pop +#endif + +/*! + \since 5.2 + \class QCommandLineOption + \brief The QCommandLineOption class defines a possible command-line option. + \inmodule QtCore + \ingroup shared + \ingroup tools + + This class is used to describe an option on the command line. It allows + different ways of defining the same option with multiple aliases possible. + It is also used to describe how the option is used - it may be a flag (e.g. \c{-v}) + or take a value (e.g. \c{-o file}). + + Examples: + \snippet code/src_corelib_tools_qcommandlineoption.cpp 0 + + \sa QCommandLineParser +*/ + +/*! + \fn QCommandLineOption &QCommandLineOption::operator=(QCommandLineOption &&other) + + Move-assigns \a other to this QCommandLineOption instance. + + \since 5.2 +*/ + +/*! + Constructs a command line option object with the name \a name. + + The name can be either short or long. If the name is one character in + length, it is considered a short name. Option names must not be empty, + must not start with a dash or a slash character, must not contain a \c{=} + and cannot be repeated. + + \sa setDescription(), setValueName(), setDefaultValues() +*/ +QCommandLineOption::QCommandLineOption(const QString &name) + : d(new QCommandLineOptionPrivate) +{ + d->setNames(QStringList(name)); +} + +/*! + Constructs a command line option object with the names \a names. + + This overload allows to set multiple names for the option, for instance + \c{o} and \c{output}. + + The names can be either short or long. Any name in the list that is one + character in length is a short name. Option names must not be empty, + must not start with a dash or a slash character, must not contain a \c{=} + and cannot be repeated. + + \sa setDescription(), setValueName(), setDefaultValues() +*/ +QCommandLineOption::QCommandLineOption(const QStringList &names) + : d(new QCommandLineOptionPrivate) +{ + d->setNames(names); +} + +/*! + Constructs a command line option object with the given arguments. + + The name of the option is set to \a name. + The name can be either short or long. If the name is one character in + length, it is considered a short name. Option names must not be empty, + must not start with a dash or a slash character, must not contain a \c{=} + and cannot be repeated. + + The description is set to \a description. It is customary to add a "." + at the end of the description. + + In addition, the \a valueName can be set if the option expects a value. + The default value for the option is set to \a defaultValue. + + In Qt versions before 5.4, this constructor was \c explicit. In Qt 5.4 + and later, it no longer is and can be used for C++11-style uniform + initialization: + + \snippet code/src_corelib_tools_qcommandlineoption.cpp cxx11-init + + \sa setDescription(), setValueName(), setDefaultValues() +*/ +QCommandLineOption::QCommandLineOption(const QString &name, const QString &description, + const QString &valueName, + const QString &defaultValue) + : d(new QCommandLineOptionPrivate) +{ + d->setNames(QStringList(name)); + setValueName(valueName); + setDescription(description); + setDefaultValue(defaultValue); +} + +/*! + Constructs a command line option object with the given arguments. + + This overload allows to set multiple names for the option, for instance + \c{o} and \c{output}. + + The names of the option are set to \a names. + The names can be either short or long. Any name in the list that is one + character in length is a short name. Option names must not be empty, + must not start with a dash or a slash character, must not contain a \c{=} + and cannot be repeated. + + The description is set to \a description. It is customary to add a "." + at the end of the description. + + In addition, the \a valueName can be set if the option expects a value. + The default value for the option is set to \a defaultValue. + + In Qt versions before 5.4, this constructor was \c explicit. In Qt 5.4 + and later, it no longer is and can be used for C++11-style uniform + initialization: + + \snippet code/src_corelib_tools_qcommandlineoption.cpp cxx11-init-list + + \sa setDescription(), setValueName(), setDefaultValues() +*/ +QCommandLineOption::QCommandLineOption(const QStringList &names, const QString &description, + const QString &valueName, + const QString &defaultValue) + : d(new QCommandLineOptionPrivate) +{ + d->setNames(names); + setValueName(valueName); + setDescription(description); + setDefaultValue(defaultValue); +} + +/*! + Constructs a QCommandLineOption object that is a copy of the QCommandLineOption + object \a other. + + \sa operator=() +*/ +QCommandLineOption::QCommandLineOption(const QCommandLineOption &other) + : d(other.d) +{ +} + +/*! + Destroys the command line option object. +*/ +QCommandLineOption::~QCommandLineOption() +{ +} + +/*! + Makes a copy of the \a other object and assigns it to this QCommandLineOption + object. +*/ +QCommandLineOption &QCommandLineOption::operator=(const QCommandLineOption &other) +{ + d = other.d; + return *this; +} + +/*! + \fn void QCommandLineOption::swap(QCommandLineOption &other) + + Swaps option \a other with this option. This operation is very + fast and never fails. +*/ + +/*! + Returns the names set for this option. + */ +QStringList QCommandLineOption::names() const +{ + return d->names; +} + +void QCommandLineOptionPrivate::setNames(const QStringList &nameList) +{ + QStringList newNames; + newNames.reserve(nameList.size()); + if (nameList.isEmpty()) + qWarning("QCommandLineOption: Options must have at least one name"); + foreach (const QString &name, nameList) { + if (name.isEmpty()) { + qWarning("QCommandLineOption: Option names cannot be empty"); + } else { + const QChar c = name.at(0); + if (c == QLatin1Char('-')) + qWarning("QCommandLineOption: Option names cannot start with a '-'"); + else if (c == QLatin1Char('/')) + qWarning("QCommandLineOption: Option names cannot start with a '/'"); + else if (name.contains(QLatin1Char('='))) + qWarning("QCommandLineOption: Option names cannot contain a '='"); + else + newNames.append(name); + } + } + // commit + names.swap(newNames); +} + +/*! + Sets the name of the expected value, for the documentation, to \a valueName. + + Options without a value assigned have a boolean-like behavior: + either the user specifies --option or they don't. + + Options with a value assigned need to set a name for the expected value, + for the documentation of the option in the help output. An option with names \c{o} and \c{output}, + and a value name of \c{file} will appear as \c{-o, --output }. + + Call QCommandLineParser::value() if you expect the option to be present + only once, and QCommandLineParser::values() if you expect that option + to be present multiple times. + + \sa valueName() + */ +void QCommandLineOption::setValueName(const QString &valueName) +{ + d->valueName = valueName; +} + +/*! + Returns the name of the expected value. + + If empty, the option doesn't take a value. + + \sa setValueName() + */ +QString QCommandLineOption::valueName() const +{ + return d->valueName; +} + +/*! + Sets the description used for this option to \a description. + + It is customary to add a "." at the end of the description. + + The description is used by QCommandLineParser::showHelp(). + + \sa description() + */ +void QCommandLineOption::setDescription(const QString &description) +{ + d->description = description; +} + +/*! + Returns the description set for this option. + + \sa setDescription() + */ +QString QCommandLineOption::description() const +{ + return d->description; +} + +/*! + Sets the default value used for this option to \a defaultValue. + + The default value is used if the user of the application does not specify + the option on the command line. + + If \a defaultValue is empty, the option has no default values. + + \sa defaultValues() setDefaultValues() + */ +void QCommandLineOption::setDefaultValue(const QString &defaultValue) +{ + QStringList newDefaultValues; + if (!defaultValue.isEmpty()) { + newDefaultValues.reserve(1); + newDefaultValues << defaultValue; + } + // commit: + d->defaultValues.swap(newDefaultValues); +} + +/*! + Sets the list of default values used for this option to \a defaultValues. + + The default values are used if the user of the application does not specify + the option on the command line. + + \sa defaultValues() setDefaultValue() + */ +void QCommandLineOption::setDefaultValues(const QStringList &defaultValues) +{ + d->defaultValues = defaultValues; +} + +/*! + Returns the default values set for this option. + + \sa setDefaultValues() + */ +QStringList QCommandLineOption::defaultValues() const +{ + return d->defaultValues; +} + +/*! + Sets whether to hide this option in the user-visible help output. + + All options are visible by default. Setting \a hidden to true for + a particular option makes it internal, i.e. not listed in the help output. + + \since 5.6 + \sa isHidden + */ +void QCommandLineOption::setHidden(bool hide) +{ + d->hidden = hide; +} + +/*! + Returns true if this option is omitted from the help output, + false if the option is listed. + + \since 5.6 + \sa setHidden() + */ +bool QCommandLineOption::isHidden() const +{ + return d->hidden; +} +#endif //QT_VERSION < QT_VERSION_CHECK(5, 2, 0) diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/core/qcommandlineoption.h valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/core/qcommandlineoption.h --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/core/qcommandlineoption.h 1970-01-01 00:00:00.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/core/qcommandlineoption.h 2015-04-01 17:27:18.000000000 +0000 @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Laszlo Papp +** Contact: http://www.qt.io/licensing/ +** +** $QT_BEGIN_LICENSE:LGPL21$ +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCOMMANDLINEOPTION_H +#define QCOMMANDLINEOPTION_H + +#include +#include +#include + +#if QT_VERSION < QT_VERSION_CHECK(5, 2, 0) + +#ifdef Q_CC_GNU + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Weffc++" +#endif + +class QCommandLineOptionPrivate; + +class QCommandLineOption +{ +public: + explicit QCommandLineOption(const QString &name); + explicit QCommandLineOption(const QStringList &names); + /*implicit*/ QCommandLineOption(const QString &name, const QString &description, + const QString &valueName = QString(), + const QString &defaultValue = QString()); + /*implicit*/ QCommandLineOption(const QStringList &names, const QString &description, + const QString &valueName = QString(), + const QString &defaultValue = QString()); + QCommandLineOption(const QCommandLineOption &other); + + ~QCommandLineOption(); + + QCommandLineOption &operator=(const QCommandLineOption &other); +#ifdef Q_COMPILER_RVALUE_REFS + inline QCommandLineOption &operator=(QCommandLineOption &&other) + { qSwap(d, other.d); return *this; } +#endif + + inline void swap(QCommandLineOption &other) + { qSwap(d, other.d); } + + QStringList names() const; + + void setValueName(const QString &name); + QString valueName() const; + + void setDescription(const QString &description); + QString description() const; + + void setDefaultValue(const QString &defaultValue); + void setDefaultValues(const QStringList &defaultValues); + QStringList defaultValues() const; + + void setHidden(bool hidden); + bool isHidden() const; + +private: + QSharedDataPointer d; +}; + +#ifdef Q_CC_GNU + #pragma GCC diagnostic pop +#endif + +Q_DECLARE_SHARED(QCommandLineOption) + +#endif //QT_VERSION < QT_VERSION_CHECK(5, 2, 0) + +#endif // QCOMMANDLINEOPTION_H diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/core/qcommandlineparser.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/core/qcommandlineparser.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/core/qcommandlineparser.cpp 1970-01-01 00:00:00.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/core/qcommandlineparser.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -0,0 +1,1119 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Laszlo Papp +** Copyright (C) 2013 David Faure +** Contact: http://www.qt.io/licensing/ +** +** $QT_BEGIN_LICENSE:LGPL21$ +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qcommandlineparser.h" + +#include +#include +#include +#include +#if defined(Q_OS_WIN) && !defined(QT_BOOTSTRAPPED) && !defined(Q_OS_WINCE) && !defined(Q_OS_WINRT) +# include +#endif +#include +#include + +#if QT_VERSION < QT_VERSION_CHECK(5, 2, 0) + +typedef QHash NameHash_t; + +#ifdef Q_CC_GNU + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Weffc++" + #pragma GCC diagnostic ignored "-Wswitch-default" + #pragma GCC diagnostic ignored "-Wsuggest-attribute=noreturn" +#endif + +class QCommandLineParserPrivate +{ +public: + inline QCommandLineParserPrivate() + : singleDashWordOptionMode(QCommandLineParser::ParseAsCompactedShortOptions), + optionsAfterPositionalArgumentsMode(QCommandLineParser::ParseAsOptions), + builtinVersionOption(false), + builtinHelpOption(false), + needsParsing(true) + { } + + bool parse(const QStringList &args); + void checkParsed(const char *method); + QStringList aliases(const QString &name) const; + QString helpText() const; + bool registerFoundOption(const QString &optionName); + bool parseOptionValue(const QString &optionName, const QString &argument, + QStringList::const_iterator *argumentIterator, + QStringList::const_iterator argsEnd); + + //! Error text set when parse() returns false + QString errorText; + + //! The command line options used for parsing + QList commandLineOptionList; + + //! Hash mapping option names to their offsets in commandLineOptionList and optionArgumentList. + NameHash_t nameHash; + + //! Option values found (only for options with a value) + QHash optionValuesHash; + + //! Names of options found on the command line. + QStringList optionNames; + + //! Arguments which did not belong to any option. + QStringList positionalArgumentList; + + //! Names of options which were unknown. + QStringList unknownOptionNames; + + //! Application description + QString description; + + //! Documentation for positional arguments + struct PositionalArgumentDefinition + { + QString name; + QString description; + QString syntax; + }; + QVector positionalArgumentDefinitions; + + //! The parsing mode for "-abc" + QCommandLineParser::SingleDashWordOptionMode singleDashWordOptionMode; + + //! How to parse "arg -option" + QCommandLineParser::OptionsAfterPositionalArgumentsMode optionsAfterPositionalArgumentsMode; + + //! Whether addVersionOption was called + bool builtinVersionOption; + + //! Whether addHelpOption was called + bool builtinHelpOption; + + //! True if parse() needs to be called + bool needsParsing; +}; + +QStringList QCommandLineParserPrivate::aliases(const QString &optionName) const +{ + const NameHash_t::const_iterator it = nameHash.find(optionName); + if (it == nameHash.end()) { + qWarning("QCommandLineParser: option not defined: \"%s\"", qPrintable(optionName)); + return QStringList(); + } + return commandLineOptionList.at(*it).names(); +} + +/*! + \since 5.2 + \class QCommandLineParser + \inmodule QtCore + \ingroup tools + + \brief The QCommandLineParser class provides a means for handling the + command line options. + + QCoreApplication provides the command-line arguments as a simple list of strings. + QCommandLineParser provides the ability to define a set of options, parse the + command-line arguments, and store which options have actually been used, as + well as option values. + + Any argument that isn't an option (i.e. doesn't start with a \c{-}) is stored + as a "positional argument". + + The parser handles short names, long names, more than one name for the same + option, and option values. + + Options on the command line are recognized as starting with a single or + double \c{-} character(s). + The option \c{-} (single dash alone) is a special case, often meaning standard + input, and not treated as an option. The parser will treat everything after the + option \c{--} (double dash) as positional arguments. + + Short options are single letters. The option \c{v} would be specified by + passing \c{-v} on the command line. In the default parsing mode, short options + can be written in a compact form, for instance \c{-abc} is equivalent to \c{-a -b -c}. + The parsing mode for can be set to ParseAsLongOptions, in which case \c{-abc} + will be parsed as the long option \c{abc}. + + Long options are more than one letter long and cannot be compacted together. + The long option \c{verbose} would be passed as \c{--verbose} or \c{-verbose}. + + Passing values to options can be done using the assignment operator: \c{-v=value} + \c{--verbose=value}, or a space: \c{-v value} \c{--verbose value}, i.e. the next + argument is used as value (even if it starts with a \c{-}). + + The parser does not support optional values - if an option is set to + require a value, one must be present. If such an option is placed last + and has no value, the option will be treated as if it had not been + specified. + + The parser does not automatically support negating or disabling long options + by using the format \c{--disable-option} or \c{--no-option}. However, it is + possible to handle this case explicitly by making an option with \c{no-option} + as one of its names, and handling the option explicitly. + + Example: + \snippet code/src_corelib_tools_qcommandlineparser_main.cpp 0 + + If your compiler supports the C++11 standard, the three addOption() calls in + the above example can be simplified: + \snippet code/src_corelib_tools_qcommandlineparser_main.cpp cxx11 + + Known limitation: the parsing of Qt options inside QCoreApplication and subclasses + happens before QCommandLineParser exists, so it can't take it into account. This + means any option value that looks like a builtin Qt option, will be treated by + QCoreApplication as a builtin Qt option. Example: \c{--profile -reverse} will + lead to QGuiApplication seeing the -reverse option set, and removing it from + QCoreApplication::arguments() before QCommandLineParser defines the \c{profile} + option and parses the command line. + + \section2 How to Use QCommandLineParser in Complex Applications + + In practice, additional error checking needs to be performed on the positional + arguments and option values. For example, ranges of numbers should be checked. + + It is then advisable to introduce a function to do the command line parsing + which takes a struct or class receiving the option values returning an + enumeration representing the result. The dnslookup example of the QtNetwork + module illustrates this: + + \snippet dnslookup.h 0 + + \snippet dnslookup.cpp 0 + + In the main function, help should be printed to the standard output if the help option + was passed and the application should return the exit code 0. + + If an error was detected, the error message should be printed to the standard + error output and the application should return an exit code other than 0. + + \snippet dnslookup.cpp 1 + + A special case to consider here are GUI applications on Windows and mobile + platforms. These applications may not use the standard output or error channels + since the output is either discarded or not accessible. + + On Windows, QCommandLineParser uses message boxes to display usage information + and errors if no console window can be obtained. + + For other platforms, it is recommended to display help texts and error messages + using a QMessageBox. To preserve the formatting of the help text, rich text + with \c
 elements should be used:
+
+    \code
+
+    switch (parseCommandLine(parser, &query, &errorMessage)) {
+    case CommandLineOk:
+        break;
+    case CommandLineError:
+        QMessageBox::warning(0, QGuiApplication::applicationDisplayName(),
+                             "

" + errorMessage + "

"
+                             + parser.helpText() + "
"); + return 1; + case CommandLineVersionRequested: + QMessageBox::information(0, QGuiApplication::applicationDisplayName(), + QGuiApplication::applicationDisplayName() + ' ' + + QCoreApplication::applicationVersion()); + return 0; + case CommandLineHelpRequested: + QMessageBox::warning(0, QGuiApplication::applicationDisplayName(), + "
"
+                             + parser.helpText() + "
"); + return 0; + } + \endcode + + However, this does not apply to the dnslookup example, because it is a + console application. + + \sa QCommandLineOption, QCoreApplication +*/ + +/*! + Constructs a command line parser object. +*/ +QCommandLineParser::QCommandLineParser() + : d(new QCommandLineParserPrivate) +{ +} + +/*! + Destroys the command line parser object. +*/ +QCommandLineParser::~QCommandLineParser() +{ + delete d; +} + +/*! + \enum QCommandLineParser::SingleDashWordOptionMode + + This enum describes the way the parser interprets command-line + options that use a single dash followed by multiple letters, as as \c{-abc}. + + \value ParseAsCompactedShortOptions \c{-abc} is interpreted as \c{-a -b -c}, + i.e. as three short options that have been compacted on the command-line, + if none of the options take a value. If \c{a} takes a value, then it + is interpreted as \c{-a bc}, i.e. the short option \c{a} followed by the value \c{bc}. + This is typically used in tools that behave like compilers, in order + to handle options such as \c{-DDEFINE=VALUE} or \c{-I/include/path}. + This is the default parsing mode. New applications are recommended to + use this mode. + + \value ParseAsLongOptions \c{-abc} is interpreted as \c{--abc}, + i.e. as the long option named \c{abc}. This is how Qt's own tools + (uic, rcc...) have always been parsing arguments. This mode should be + used for preserving compatibility in applications that were parsing + arguments in such a way. + + \sa setSingleDashWordOptionMode() +*/ + +/*! + Sets the parsing mode to \a singleDashWordOptionMode. + This must be called before process() or parse(). +*/ +void QCommandLineParser::setSingleDashWordOptionMode(QCommandLineParser::SingleDashWordOptionMode singleDashWordOptionMode) +{ + d->singleDashWordOptionMode = singleDashWordOptionMode; +} + +/*! + \enum QCommandLineParser::OptionsAfterPositionalArgumentsMode + + This enum describes the way the parser interprets options that + occur after positional arguments. + + \value ParseAsOptions \c{application argument --opt -t} is interpreted as setting + the options \c{opt} and \c{t}, just like \c{application --opt -t argument} would do. + This is the default parsing mode. In order to specify that \c{--opt} and \c{-t} + are positional arguments instead, the user can use \c{--}, as in + \c{application argument -- --opt -t}. + + \value ParseAsPositionalArguments \c{application argument --opt} is interpreted as + having two positional arguments, \c{argument} and \c{--opt}. + This mode is useful for executables that aim to launch other executables + (e.g. wrappers, debugging tools, etc.) or that support internal commands + followed by options for the command. \c{argument} is the name of the command, + and all options occurring after it can be collected and parsed by another + command line parser, possibly in another executable. + + \sa setOptionsAfterPositionalArgumentsMode() + + \since 5.5 +*/ + +/*! + Sets the parsing mode to \a parsingMode. + This must be called before process() or parse(). + \since 5.5 +*/ +void QCommandLineParser::setOptionsAfterPositionalArgumentsMode(QCommandLineParser::OptionsAfterPositionalArgumentsMode parsingMode) +{ + d->optionsAfterPositionalArgumentsMode = parsingMode; +} + +/*! + Adds the option \a option to look for while parsing. + + Returns \c true if adding the option was successful; otherwise returns \c false. + + Adding the option fails if there is no name attached to the option, or + the option has a name that clashes with an option name added before. + */ +bool QCommandLineParser::addOption(const QCommandLineOption &option) +{ + QStringList optionNames = option.names(); + + if (!optionNames.isEmpty()) { + foreach (const QString &name, optionNames) { + if (d->nameHash.contains(name)) + return false; + } + + d->commandLineOptionList.append(option); + + const int offset = d->commandLineOptionList.size() - 1; + foreach (const QString &name, optionNames) + d->nameHash.insert(name, offset); + + return true; + } + + return false; +} + +/*! + \since 5.4 + + Adds the options to look for while parsing. The options are specified by + the parameter \a options. + + Returns \c true if adding all of the options was successful; otherwise + returns \c false. + + See the documentation for addOption() for when this function may fail. +*/ +bool QCommandLineParser::addOptions(const QList &options) +{ + // should be optimized (but it's no worse than what was possible before) + bool result = true; + for (QList::const_iterator it = options.begin(), end = options.end(); it != end; ++it) + result &= addOption(*it); + return result; +} + +/*! + Adds the \c{-v} / \c{--version} option, which displays the version string of the application. + + This option is handled automatically by QCommandLineParser. + + You can set the actual version string by using QCoreApplication::setApplicationVersion(). + + Returns the option instance, which can be used to call isSet(). +*/ +QCommandLineOption QCommandLineParser::addVersionOption() +{ + QCommandLineOption opt(QStringList() << QStringLiteral("v") << QStringLiteral("version"), tr("Displays version information.")); + addOption(opt); + d->builtinVersionOption = true; + return opt; +} + +/*! + Adds the help option (\c{-h}, \c{--help} and \c{-?} on Windows) + This option is handled automatically by QCommandLineParser. + + Remember to use setApplicationDescription to set the application description, + which will be displayed when this option is used. + + Example: + \snippet code/src_corelib_tools_qcommandlineparser_main.cpp 0 + + Returns the option instance, which can be used to call isSet(). +*/ +QCommandLineOption QCommandLineParser::addHelpOption() +{ + QCommandLineOption opt(QStringList() +#ifdef Q_OS_WIN + << QStringLiteral("?") +#endif + << QStringLiteral("h") + << QStringLiteral("help"), tr("Displays this help.")); + addOption(opt); + d->builtinHelpOption = true; + return opt; +} + +/*! + Sets the application \a description shown by helpText(). +*/ +void QCommandLineParser::setApplicationDescription(const QString &description) +{ + d->description = description; +} + +/*! + Returns the application description set in setApplicationDescription(). +*/ +QString QCommandLineParser::applicationDescription() const +{ + return d->description; +} + +/*! + Defines an additional argument to the application, for the benefit of the help text. + + The argument \a name and \a description will appear under the \c{Arguments:} section + of the help. If \a syntax is specified, it will be appended to the Usage line, otherwise + the \a name will be appended. + + Example: + \snippet code/src_corelib_tools_qcommandlineparser.cpp 2 + + \sa addHelpOption(), helpText() +*/ +void QCommandLineParser::addPositionalArgument(const QString &name, const QString &description, const QString &syntax) +{ + QCommandLineParserPrivate::PositionalArgumentDefinition arg; + arg.name = name; + arg.description = description; + arg.syntax = syntax.isEmpty() ? name : syntax; + d->positionalArgumentDefinitions.append(arg); +} + +/*! + Clears the definitions of additional arguments from the help text. + + This is only needed for the special case of tools which support multiple commands + with different options. Once the actual command has been identified, the options + for this command can be defined, and the help text for the command can be adjusted + accordingly. + + Example: + \snippet code/src_corelib_tools_qcommandlineparser.cpp 3 +*/ +void QCommandLineParser::clearPositionalArguments() +{ + d->positionalArgumentDefinitions.clear(); +} + +/*! + Parses the command line \a arguments. + + Most programs don't need to call this, a simple call to process() is enough. + + parse() is more low-level, and only does the parsing. The application will have to + take care of the error handling, using errorText() if parse() returns \c false. + This can be useful for instance to show a graphical error message in graphical programs. + + Calling parse() instead of process() can also be useful in order to ignore unknown + options temporarily, because more option definitions will be provided later on + (depending on one of the arguments), before calling process(). + + Don't forget that \a arguments must start with the name of the executable (ignored, though). + + Returns \c false in case of a parse error (unknown option or missing value); returns \c true otherwise. + + \sa process() +*/ +bool QCommandLineParser::parse(const QStringList &arguments) +{ + return d->parse(arguments); +} + +/*! + Returns a translated error text for the user. + This should only be called when parse() returns \c false. +*/ +QString QCommandLineParser::errorText() const +{ + if (!d->errorText.isEmpty()) + return d->errorText; + if (d->unknownOptionNames.count() == 1) + return tr("Unknown option '%1'.").arg(d->unknownOptionNames.first()); + if (d->unknownOptionNames.count() > 1) + return tr("Unknown options: %1.").arg(d->unknownOptionNames.join(QStringLiteral(", "))); + return QString(); +} + +enum MessageType { UsageMessage, ErrorMessage }; + +#if defined(Q_OS_WIN) && !defined(QT_BOOTSTRAPPED) && !defined(Q_OS_WINCE) && !defined(Q_OS_WINRT) +// Return whether to use a message box. Use handles if a console can be obtained +// or we are run with redirected handles (for example, by QProcess). +static inline bool displayMessageBox() +{ + if (GetConsoleWindow()) + return false; + STARTUPINFO startupInfo; + startupInfo.cb = sizeof(STARTUPINFO); + GetStartupInfo(&startupInfo); + return !(startupInfo.dwFlags & STARTF_USESTDHANDLES); +} +#endif // Q_OS_WIN && !QT_BOOTSTRAPPED && !Q_OS_WIN && !Q_OS_WINRT + +static void showParserMessage(const QString &message, MessageType type) +{ +#if defined(Q_OS_WIN) && !defined(QT_BOOTSTRAPPED) && !defined(Q_OS_WINCE) && !defined(Q_OS_WINRT) + if (displayMessageBox()) { + const UINT flags = MB_OK | MB_TOPMOST | MB_SETFOREGROUND + | (type == UsageMessage ? MB_ICONINFORMATION : MB_ICONERROR); + QString title; + if (QCoreApplication::instance()) + title = QCoreApplication::instance()->property("applicationDisplayName").toString(); + if (title.isEmpty()) + title = QCoreApplication::applicationName(); + MessageBoxW(0, reinterpret_cast(message.utf16()), + reinterpret_cast(title.utf16()), flags); + return; + } +#endif // Q_OS_WIN && !QT_BOOTSTRAPPED && !Q_OS_WIN && !Q_OS_WINRT + fputs(qPrintable(message), type == UsageMessage ? stdout : stderr); +} + +/*! + Processes the command line \a arguments. + + In addition to parsing the options (like parse()), this function also handles the builtin + options and handles errors. + + The builtin options are \c{--version} if addVersionOption was called and \c{--help} if addHelpOption was called. + + When invoking one of these options, or when an error happens (for instance an unknown option was + passed), the current process will then stop, using the exit() function. + + \sa QCoreApplication::arguments(), parse() + */ +void QCommandLineParser::process(const QStringList &arguments) +{ + if (!d->parse(arguments)) { + showParserMessage(errorText() + QLatin1Char('\n'), ErrorMessage); + ::exit(EXIT_FAILURE); + } + + if (d->builtinVersionOption && isSet(QStringLiteral("version"))) + showVersion(); + + if (d->builtinHelpOption && isSet(QStringLiteral("help"))) + showHelp(EXIT_SUCCESS); +} + +/*! + \overload + + The command line is obtained from the QCoreApplication instance \a app. + */ +void QCommandLineParser::process(const QCoreApplication &app) +{ + // QCoreApplication::arguments() is static, but the app instance must exist so we require it as parameter + Q_UNUSED(app); + process(QCoreApplication::arguments()); +} + +void QCommandLineParserPrivate::checkParsed(const char *method) +{ + if (needsParsing) + qWarning("QCommandLineParser: call process() or parse() before %s", method); +} + +/*! + \internal + Looks up the option \a optionName (found on the command line) and register it as found. + Returns \c true on success. + */ +bool QCommandLineParserPrivate::registerFoundOption(const QString &optionName) +{ + if (nameHash.contains(optionName)) { + optionNames.append(optionName); + return true; + } else { + unknownOptionNames.append(optionName); + return false; + } +} + +/*! + \internal + \brief Parse the value for a given option, if it was defined to expect one. + + The value is taken from the next argument, or after the equal sign in \a argument. + + \param optionName the short option name + \param argument the argument from the command line currently parsed. Only used for -k=value parsing. + \param argumentIterator iterator to the currently parsed argument. Incremented if the next argument contains the value. + \param argsEnd args.end(), to check if ++argumentIterator goes out of bounds + Returns \c true on success. + */ +bool QCommandLineParserPrivate::parseOptionValue(const QString &optionName, const QString &argument, + QStringList::const_iterator *argumentIterator, QStringList::const_iterator argsEnd) +{ + const QLatin1Char assignChar('='); + const NameHash_t::const_iterator nameHashIt = nameHash.constFind(optionName); + if (nameHashIt != nameHash.constEnd()) { + const int assignPos = argument.indexOf(assignChar); + const NameHash_t::mapped_type optionOffset = *nameHashIt; + const bool withValue = !commandLineOptionList.at(optionOffset).valueName().isEmpty(); + if (withValue) { + if (assignPos == -1) { + ++(*argumentIterator); + if (*argumentIterator == argsEnd) { + errorText = QCommandLineParser::tr("Missing value after '%1'.").arg(argument); + return false; + } + optionValuesHash[optionOffset].append(*(*argumentIterator)); + } else { + optionValuesHash[optionOffset].append(argument.mid(assignPos + 1)); + } + } else { + if (assignPos != -1) { + errorText = QCommandLineParser::tr("Unexpected value after '%1'.").arg(argument.left(assignPos)); + return false; + } + } + } + return true; +} + +/*! + \internal + + Parse the list of arguments \a args, and fills in + optionNames, optionValuesHash, unknownOptionNames, positionalArguments, and errorText. + + Any results from a previous parse operation are removed. + + The parser will not look for further options once it encounters the option + \c{--}; this does not include when \c{--} follows an option that requires a value. + */ +bool QCommandLineParserPrivate::parse(const QStringList &args) +{ + needsParsing = false; + bool error = false; + + const QString doubleDashString(QStringLiteral("--")); + const QLatin1Char dashChar('-'); + const QLatin1Char assignChar('='); + + bool forcePositional = false; + errorText.clear(); + positionalArgumentList.clear(); + optionNames.clear(); + unknownOptionNames.clear(); + optionValuesHash.clear(); + + if (args.isEmpty()) { + qWarning("QCommandLineParser: argument list cannot be empty, it should contain at least the executable name"); + return false; + } + + QStringList::const_iterator argumentIterator = args.begin(); + ++argumentIterator; // skip executable name + + for (; argumentIterator != args.end() ; ++argumentIterator) { + QString argument = *argumentIterator; + + if (forcePositional) { + positionalArgumentList.append(argument); + } else if (argument.startsWith(doubleDashString)) { + if (argument.length() > 2) { + QString optionName = argument.mid(2).section(assignChar, 0, 0); + if (registerFoundOption(optionName)) { + if (!parseOptionValue(optionName, argument, &argumentIterator, args.end())) + error = true; + } else { + error = true; + } + } else { + forcePositional = true; + } + } else if (argument.startsWith(dashChar)) { + if (argument.size() == 1) { // single dash ("stdin") + positionalArgumentList.append(argument); + continue; + } + switch (singleDashWordOptionMode) { + case QCommandLineParser::ParseAsCompactedShortOptions: + { + QString optionName; + bool valueFound = false; + for (int pos = 1 ; pos < argument.size(); ++pos) { + optionName = argument.mid(pos, 1); + if (!registerFoundOption(optionName)) { + error = true; + } else { + const NameHash_t::const_iterator nameHashIt = nameHash.constFind(optionName); + Q_ASSERT(nameHashIt != nameHash.constEnd()); // checked by registerFoundOption + const NameHash_t::mapped_type optionOffset = *nameHashIt; + const bool withValue = !commandLineOptionList.at(optionOffset).valueName().isEmpty(); + if (withValue) { + if (pos + 1 < argument.size()) { + if (argument.at(pos + 1) == assignChar) + ++pos; + optionValuesHash[optionOffset].append(argument.mid(pos + 1)); + valueFound = true; + } + break; + } + if (pos + 1 < argument.size() && argument.at(pos + 1) == assignChar) + break; + } + } + if (!valueFound && !parseOptionValue(optionName, argument, &argumentIterator, args.end())) + error = true; + break; + } + case QCommandLineParser::ParseAsLongOptions: + { + const QString optionName = argument.mid(1).section(assignChar, 0, 0); + if (registerFoundOption(optionName)) { + if (!parseOptionValue(optionName, argument, &argumentIterator, args.end())) + error = true; + } else { + error = true; + } + break; + } + } + } else { + positionalArgumentList.append(argument); + if (optionsAfterPositionalArgumentsMode == QCommandLineParser::ParseAsPositionalArguments) + forcePositional = true; + } + if (argumentIterator == args.end()) + break; + } + return !error; +} + +/*! + Checks whether the option \a name was passed to the application. + + Returns \c true if the option \a name was set, false otherwise. + + The name provided can be any long or short name of any option that was + added with \c addOption(). All the options names are treated as being + equivalent. If the name is not recognized or that option was not present, + false is returned. + + Example: + \snippet code/src_corelib_tools_qcommandlineparser.cpp 0 + */ + +bool QCommandLineParser::isSet(const QString &name) const +{ + d->checkParsed("isSet"); + if (d->optionNames.contains(name)) + return true; + const QStringList aliases = d->aliases(name); + foreach (const QString &optionName, d->optionNames) { + if (aliases.contains(optionName)) + return true; + } + return false; +} + +/*! + Returns the option value found for the given option name \a optionName, or + an empty string if not found. + + The name provided can be any long or short name of any option that was + added with \c addOption(). All the option names are treated as being + equivalent. If the name is not recognized or that option was not present, an + empty string is returned. + + For options found by the parser, the last value found for + that option is returned. If the option wasn't specified on the command line, + the default value is returned. + + An empty string is returned if the option does not take a value. + + \sa values(), QCommandLineOption::setDefaultValue(), QCommandLineOption::setDefaultValues() + */ + +QString QCommandLineParser::value(const QString &optionName) const +{ + d->checkParsed("value"); + const QStringList valueList = values(optionName); + + if (!valueList.isEmpty()) + return valueList.last(); + + return QString(); +} + +/*! + Returns a list of option values found for the given option name \a + optionName, or an empty list if not found. + + The name provided can be any long or short name of any option that was + added with \c addOption(). All the options names are treated as being + equivalent. If the name is not recognized or that option was not present, an + empty list is returned. + + For options found by the parser, the list will contain an entry for + each time the option was encountered by the parser. If the option wasn't + specified on the command line, the default values are returned. + + An empty list is returned if the option does not take a value. + + \sa value(), QCommandLineOption::setDefaultValue(), QCommandLineOption::setDefaultValues() + */ + +QStringList QCommandLineParser::values(const QString &optionName) const +{ + d->checkParsed("values"); + const NameHash_t::const_iterator it = d->nameHash.find(optionName); + if (it != d->nameHash.end()) { + const int optionOffset = *it; + QStringList values = d->optionValuesHash.value(optionOffset); + if (values.isEmpty()) + values = d->commandLineOptionList.at(optionOffset).defaultValues(); + return values; + } + + qWarning("QCommandLineParser: option not defined: \"%s\"", qPrintable(optionName)); + return QStringList(); +} + +/*! + \overload + Checks whether the \a option was passed to the application. + + Returns \c true if the \a option was set, false otherwise. + + This is the recommended way to check for options with no values. + + Example: + \snippet code/src_corelib_tools_qcommandlineparser.cpp 1 +*/ +bool QCommandLineParser::isSet(const QCommandLineOption &option) const +{ + // option.names() might be empty if the constructor failed + return !option.names().isEmpty() && isSet(option.names().first()); +} + +/*! + \overload + Returns the option value found for the given \a option, or + an empty string if not found. + + For options found by the parser, the last value found for + that option is returned. If the option wasn't specified on the command line, + the default value is returned. + + An empty string is returned if the option does not take a value. + + \sa values(), QCommandLineOption::setDefaultValue(), QCommandLineOption::setDefaultValues() +*/ +QString QCommandLineParser::value(const QCommandLineOption &option) const +{ + return value(option.names().first()); +} + +/*! + \overload + Returns a list of option values found for the given \a option, + or an empty list if not found. + + For options found by the parser, the list will contain an entry for + each time the option was encountered by the parser. If the option wasn't + specified on the command line, the default values are returned. + + An empty list is returned if the option does not take a value. + + \sa value(), QCommandLineOption::setDefaultValue(), QCommandLineOption::setDefaultValues() +*/ +QStringList QCommandLineParser::values(const QCommandLineOption &option) const +{ + return values(option.names().first()); +} + +/*! + Returns a list of positional arguments. + + These are all of the arguments that were not recognized as part of an + option. + */ + +QStringList QCommandLineParser::positionalArguments() const +{ + d->checkParsed("positionalArguments"); + return d->positionalArgumentList; +} + +/*! + Returns a list of option names that were found. + + This returns a list of all the recognized option names found by the + parser, in the order in which they were found. For any long options + that were in the form {--option=value}, the value part will have been + dropped. + + The names in this list do not include the preceding dash characters. + Names may appear more than once in this list if they were encountered + more than once by the parser. + + Any entry in the list can be used with \c value() or with + \c values() to get any relevant option values. + */ + +QStringList QCommandLineParser::optionNames() const +{ + d->checkParsed("optionNames"); + return d->optionNames; +} + +/*! + Returns a list of unknown option names. + + This list will include both long an short name options that were not + recognized. For any long options that were in the form {--option=value}, + the value part will have been dropped and only the long name is added. + + The names in this list do not include the preceding dash characters. + Names may appear more than once in this list if they were encountered + more than once by the parser. + + \sa optionNames() + */ + +QStringList QCommandLineParser::unknownOptionNames() const +{ + d->checkParsed("unknownOptionNames"); + return d->unknownOptionNames; +} + +/*! + Displays the version information from QCoreApplication::applicationVersion(), + and exits the application. + This is automatically triggered by the --version option, but can also + be used to display the version when not using process(). + The exit code is set to EXIT_SUCCESS (0). + + \sa addVersionOption() + \since 5.4 +*/ +Q_NORETURN void QCommandLineParser::showVersion() +{ + showParserMessage(QCoreApplication::applicationName() + QLatin1Char(' ') + + QCoreApplication::applicationVersion() + QLatin1Char('\n'), + UsageMessage); + ::exit(EXIT_SUCCESS); +} + +/*! + Displays the help information, and exits the application. + This is automatically triggered by the --help option, but can also + be used to display the help when the user is not invoking the + application correctly. + The exit code is set to \a exitCode. It should be set to 0 if the + user requested to see the help, and to any other value in case of + an error. + + \sa helpText() +*/ +Q_NORETURN void QCommandLineParser::showHelp(int exitCode) +{ + showParserMessage(d->helpText(), UsageMessage); + ::exit(exitCode); +} + +/*! + Returns a string containing the complete help information. + + \sa showHelp() +*/ +QString QCommandLineParser::helpText() const +{ + return d->helpText(); +} + +static QString wrapText(const QString &names, int longestOptionNameString, const QString &description) +{ + const QLatin1Char nl('\n'); + QString text = QStringLiteral(" ") + names.leftJustified(longestOptionNameString) + QLatin1Char(' '); + const int indent = text.length(); + int lineStart = 0; + int lastBreakable = -1; + const int max = 79 - indent; + int x = 0; + const int len = description.length(); + + for (int i = 0; i < len; ++i) { + ++x; + const QChar c = description.at(i); + if (c.isSpace()) + lastBreakable = i; + + int breakAt = -1; + int nextLineStart = -1; + if (x > max && lastBreakable != -1) { + // time to break and we know where + breakAt = lastBreakable; + nextLineStart = lastBreakable + 1; + } else if ((x > max - 1 && lastBreakable == -1) || i == len - 1) { + // time to break but found nowhere [-> break here], or end of last line + breakAt = i + 1; + nextLineStart = breakAt; + } else if (c == nl) { + // forced break + breakAt = i; + nextLineStart = i + 1; + } + + if (breakAt != -1) { + const int numChars = breakAt - lineStart; + //qDebug() << "breakAt=" << description.at(breakAt) << "breakAtSpace=" << breakAtSpace << lineStart << "to" << breakAt << description.mid(lineStart, numChars); + if (lineStart > 0) + text += QString(indent, QLatin1Char(' ')); + text += description.midRef(lineStart, numChars) + nl; + x = 0; + lastBreakable = -1; + lineStart = nextLineStart; + if (lineStart < len && description.at(lineStart).isSpace()) + ++lineStart; // don't start a line with a space + i = lineStart; + } + } + + return text; +} + +QString QCommandLineParserPrivate::helpText() const +{ + const QLatin1Char nl('\n'); + QString text; + const QString exeName = QCoreApplication::instance()->arguments().first(); + QString usage = exeName; + if (!commandLineOptionList.isEmpty()) { + usage += QLatin1Char(' '); + usage += QCommandLineParser::tr("[options]"); + } + foreach (const PositionalArgumentDefinition &arg, positionalArgumentDefinitions) { + usage += QLatin1Char(' '); + usage += arg.syntax; + } + text += QCommandLineParser::tr("Usage: %1").arg(usage) + nl; + if (!description.isEmpty()) + text += description + nl; + text += nl; + if (!commandLineOptionList.isEmpty()) + text += QCommandLineParser::tr("Options:") + nl; + QStringList optionNameList; + int longestOptionNameString = 0; + foreach (const QCommandLineOption &option, commandLineOptionList) { + QStringList optionNames; + foreach (const QString &optionName, option.names()) { + if (optionName.length() == 1) + optionNames.append(QLatin1Char('-') + optionName); + else + optionNames.append(QStringLiteral("--") + optionName); + } + QString optionNamesString = optionNames.join(QStringLiteral(", ")); + if (!option.valueName().isEmpty()) + optionNamesString += QStringLiteral(" <") + option.valueName() + QLatin1Char('>'); + optionNameList.append(optionNamesString); + longestOptionNameString = qMax(longestOptionNameString, optionNamesString.length()); + } + ++longestOptionNameString; + for (int i = 0; i < commandLineOptionList.count(); ++i) { + const QCommandLineOption &option = commandLineOptionList.at(i); + if (option.isHidden()) + continue; + text += wrapText(optionNameList.at(i), longestOptionNameString, option.description()); + } + if (!positionalArgumentDefinitions.isEmpty()) { + if (!commandLineOptionList.isEmpty()) + text += nl; + text += QCommandLineParser::tr("Arguments:") + nl; + foreach (const PositionalArgumentDefinition &arg, positionalArgumentDefinitions) { + text += wrapText(arg.name, longestOptionNameString, arg.description); + } + } + return text; +} + +#ifdef Q_CC_GNU + #pragma GCC diagnostic pop +#endif + +#endif //QT_VERSION < QT_VERSION_CHECK(5, 2, 0) diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/core/qcommandlineparser.h valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/core/qcommandlineparser.h --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/core/qcommandlineparser.h 1970-01-01 00:00:00.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/core/qcommandlineparser.h 2015-04-01 17:27:18.000000000 +0000 @@ -0,0 +1,101 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Laszlo Papp +** Contact: http://www.qt.io/licensing/ +** +** $QT_BEGIN_LICENSE:LGPL21$ +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCOMMANDLINEPARSER_H +#define QCOMMANDLINEPARSER_H + +#include +#include +#include +#include "qcommandlineoption.h" + +#if QT_VERSION < QT_VERSION_CHECK(5, 2, 0) + +class QCommandLineParserPrivate; +class QCoreApplication; + +#ifdef Q_CC_GNU + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Weffc++" +#endif + +class QCommandLineParser +{ + Q_DECLARE_TR_FUNCTIONS(QCommandLineParser) +public: + QCommandLineParser(); + ~QCommandLineParser(); + + enum SingleDashWordOptionMode { + ParseAsCompactedShortOptions, + ParseAsLongOptions + }; + void setSingleDashWordOptionMode(SingleDashWordOptionMode parsingMode); + + enum OptionsAfterPositionalArgumentsMode { + ParseAsOptions, + ParseAsPositionalArguments + }; + void setOptionsAfterPositionalArgumentsMode(OptionsAfterPositionalArgumentsMode mode); + + bool addOption(const QCommandLineOption &commandLineOption); + bool addOptions(const QList &options); + + QCommandLineOption addVersionOption(); + QCommandLineOption addHelpOption(); + void setApplicationDescription(const QString &description); + QString applicationDescription() const; + void addPositionalArgument(const QString &name, const QString &description, const QString &syntax = QString()); + void clearPositionalArguments(); + + void process(const QStringList &arguments); + void process(const QCoreApplication &app); + + bool parse(const QStringList &arguments); + QString errorText() const; + + bool isSet(const QString &name) const; + QString value(const QString &name) const; + QStringList values(const QString &name) const; + + bool isSet(const QCommandLineOption &option) const; + QString value(const QCommandLineOption &option) const; + QStringList values(const QCommandLineOption &option) const; + + QStringList positionalArguments() const; + QStringList optionNames() const; + QStringList unknownOptionNames() const; + + Q_NORETURN void showVersion(); + Q_NORETURN void showHelp(int exitCode = 0); + QString helpText() const; + +private: + Q_DISABLE_COPY(QCommandLineParser) + + QCommandLineParserPrivate * const d; +}; + +#ifdef Q_CC_GNU + #pragma GCC diagnostic pop +#endif + +#endif //QT_VERSION < QT_VERSION_CHECK(5, 2, 0) + +#endif // QCOMMANDLINEPARSER_H diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/core/vapplication.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/core/vapplication.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/core/vapplication.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/core/vapplication.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -35,6 +35,7 @@ #include "vmaingraphicsview.h" #include "../container/calculator.h" #include "../version.h" +#include "../../utils/logging.h" #include #include @@ -46,7 +47,6 @@ #include #include #include -#include #include #include #include @@ -180,7 +180,7 @@ //--------------------------------------------------------------------------------------------------------------------- VApplication::~VApplication() { - qCDebug(vApp)<<"Application closing."; + qCDebug(vApp, "Application closing."); qInstallMessageHandler(0); // Resore the message handler delete out; @@ -199,31 +199,31 @@ */ void VApplication::NewValentina(const QString &fileName) { - qCDebug(vApp)<<"Open new detached process."; + qCDebug(vApp, "Open new detached process."); if (fileName.isEmpty()) { - qCDebug(vApp)<<"New process without arguments. program ="<applicationFilePath(); + qCDebug(vApp, "New process without arguments. program = %s", qApp->applicationFilePath().toUtf8().constData()); // Path can contain spaces. if (QProcess::startDetached("\""+qApp->applicationFilePath()+"\"")) { - qCDebug(vApp)<<"The process was started successfully."; + qCDebug(vApp, "The process was started successfully."); } else { - qCWarning(vApp)<<"Could not run process. The operation timed out or an error occurred."; + qCWarning(vApp, "Could not run process. The operation timed out or an error occurred."); } } else { const QString run = QString("\"%1\" \"%2\"").arg(qApp->applicationFilePath()).arg(fileName); - qCDebug(vApp)<<"New process with arguments. program ="<setStaleLockTime(0); if (TryLock(logLock)) { - qCDebug(vApp) << "Log file"<error(); + qCDebug(vApp, "Failed to lock %s", LogPath().toUtf8().constData()); + qCDebug(vApp, "Error type: %d", logLock->error()); } } else { delete log; log = nullptr; - qCDebug(vApp) << "Error opening log file '" << LogPath() << "'. All debug output redirected to console."; + qCDebug(vApp, "Error opening log file \'%s\'. All debug output redirected to console.", + LogPath().toUtf8().constData()); } } @@ -496,27 +497,27 @@ const QStringList allFiles = logsDir.entryList(QDir::NoDotAndDotDot | QDir::Files); if (allFiles.isEmpty() == false) { - qCDebug(vApp) << "Clearing old logs"; + qCDebug(vApp, "Clearing old logs"); for (int i = 0; i < allFiles.size(); ++i) { QFileInfo info(allFiles.at(i)); QLockFile *lock = new QLockFile(info.absoluteFilePath() + ".lock"); if (TryLock(lock)) { - qCDebug(vApp) << "Locked file"<getSettings()->GetOsSeparator() ? setLocale(QLocale::system()) : setLocale(QLocale(QLocale::C)); - qCDebug(vDialog)<<"Showing variables."; + qCDebug(vDialog, "Showing variables."); if (qApp->patternType() == MeasurementsType::Individual) { - qCDebug(vDialog)<<"Pattern with individual measurements."; + qCDebug(vDialog, "Pattern with individual measurements."); const QString filePath = doc->MPath(); try { @@ -668,7 +668,7 @@ */ void DialogIncrements::clickedToolButtonAdd() { - qCDebug(vDialog)<<"Add new increment"; + qCDebug(vDialog, "Add new increment"); ui->tableWidgetIncrement->setFocus(Qt::OtherFocusReason); ui->tableWidgetIncrement->blockSignals(true); qint32 currentRow = ui->tableWidgetIncrement->rowCount(); @@ -738,7 +738,7 @@ qint32 row = item->row(); QTableWidgetItem *itemName = ui->tableWidgetIncrement->item(row, 0); - qCDebug(vDialog)<<"Remove increment"<text(); + qCDebug(vDialog, "Remove increment %s", itemName->text().toUtf8().constData()); data->RemoveIncrement(itemName->text()); quint32 id = qvariant_cast(itemName->data(Qt::UserRole)); @@ -750,7 +750,7 @@ } else { - qCDebug(vDialog)<<"Could not find object with id"<createElement(VPattern::TagIncrement); doc->SetAttribute(element, VDomDocument::AttrId, id); @@ -812,47 +812,47 @@ */ void DialogIncrements::IncrementChanged ( qint32 row, qint32 column ) { - qCDebug(vDialog)<<"Increment changed."; + qCDebug(vDialog, "Increment changed."); const QTableWidgetItem *itemName = ui->tableWidgetIncrement->item(row, 0); const QTableWidgetItem *item = ui->tableWidgetIncrement->item(row, column); const quint32 id = qvariant_cast(itemName->data(Qt::UserRole)); QDomElement domElement = doc->elementById(id); if (domElement.isElement() == false) { - qCDebug(vDialog)<<"Cant't find increment with id = "<row = row; switch (column) { case 0: // VPattern::IncrementName - qCDebug(vDialog)<<"Changed name to"<text(); + qCDebug(vDialog, "Changed name to %s", item->text().toUtf8().constData()); doc->SetAttribute(domElement, VPattern::IncrementName, item->text()); data->ClearVariables(VarType::Increment); this->column = 2; emit FullUpdateTree(Document::LiteParse); break; case 2: // VPattern::IncrementBase - qCDebug(vDialog)<<"Changed base to"<text(); + qCDebug(vDialog, "Changed base to %s", item->text().toUtf8().constData()); doc->SetAttribute(domElement, VPattern::IncrementBase, item->text()); this->column = 3; emit FullUpdateTree(Document::LiteParse); break; case 3: // VPattern::IncrementKsize - qCDebug(vDialog)<<"Changed ksize to"<text(); + qCDebug(vDialog, "Changed ksize to %s", item->text().toUtf8().constData()); doc->SetAttribute(domElement, VPattern::IncrementKsize, item->text()); this->column = 4; emit FullUpdateTree(Document::LiteParse); break; case 4: // VPattern::IncrementKgrowth - qCDebug(vDialog)<<"Changed kheight to"<text(); + qCDebug(vDialog, "Changed kheight to %s", item->text().toUtf8().constData()); doc->SetAttribute(domElement, VPattern::IncrementKgrowth, item->text()); this->column = 5; emit FullUpdateTree(Document::LiteParse); break; case 5: // VPattern::IncrementDescription { - qCDebug(vDialog)<<"Changed description to"<text(); + qCDebug(vDialog, "Changed description to %s", item->text().toUtf8().constData()); doc->SetAttribute(domElement, VPattern::IncrementDescription, item->text()); QSharedPointer incr = data->GetVariable(itemName->text()); incr->SetDescription(item->text()); @@ -873,7 +873,7 @@ //--------------------------------------------------------------------------------------------------------------------- void DialogIncrements::MeasurementChanged(qint32 row, qint32 column) { - qCDebug(vDialog)<<"Measurement changed."; + qCDebug(vDialog, "Measurement changed."); switch (column) { case 2:// value column @@ -887,7 +887,7 @@ QDomElement domElement = list.at(0).toElement(); if (domElement.isElement() == false) { - qCDebug(vDialog)<<"Can't find measurement "<SetBase(0); item->setText("0"); - qCDebug(vDialog)<<"Can't convert toDouble measurement value"<SetBase(base); } - qCDebug(vDialog)<<"Changed value to"<patternUnit(), m->MUnit()); diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/dialogs/app/dialogsavelayout.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/dialogs/app/dialogsavelayout.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/dialogs/app/dialogsavelayout.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/dialogs/app/dialogsavelayout.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -68,6 +68,7 @@ connect(ui->lineEditPath, &QLineEdit::textChanged, this, &DialogSaveLayout::PathChanged); ui->lineEditPath->setText(qApp->getSettings()->GetPathLayout()); + ShowExample();//Show example for current format. } //--------------------------------------------------------------------------------------------------------------------- diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/dialogs/app/dialogstandardmeasurements.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/dialogs/app/dialogstandardmeasurements.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/dialogs/app/dialogstandardmeasurements.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/dialogs/app/dialogstandardmeasurements.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -28,14 +28,15 @@ #include "dialogstandardmeasurements.h" #include "ui_dialogstandardmeasurements.h" -#include -#include -#include #include "../../xml/vstandardmeasurements.h" #include "../../core/vapplication.h" #include "../../core/vsettings.h" #include "../../container/vcontainer.h" -#include +#include "../../utils/logging.h" + +#include +#include +#include Q_LOGGING_CATEGORY(vStMeasur, "v.st.measurements") @@ -63,7 +64,7 @@ connect(bCansel, &QPushButton::clicked, this, &DialogStandardMeasurements::DialogRejected); } - qCDebug(vStMeasur)<<"Pattern piece name"<<_name; + qCDebug(vStMeasur, "Pattern piece name %s", _name.toUtf8().constData()); ui->lineEditName->setText(_name); LoadStandardTables(); @@ -150,7 +151,7 @@ //--------------------------------------------------------------------------------------------------------------------- void DialogStandardMeasurements::LoadStandardTables() { - qCDebug(vStMeasur)<<"Loading standard table."; + qCDebug(vStMeasur, "Loading standard table."); QStringList filters{"*.vst"}; //Use standard path to standard measurements const QString path = qApp->getSettings()->GetPathStandardMeasurements(); @@ -161,13 +162,13 @@ const QStringList allFiles = tablesDir.entryList(QDir::NoDotAndDotDot | QDir::Files); if (allFiles.isEmpty() == true) { - qCDebug(vStMeasur)<<"Can't find standard measurements in path"<comboBoxTables->clear(); CheckState(); return; } - qCDebug(vStMeasur)<<"Was found"<comboBoxTables->addItem(desc, QVariant(fi.absoluteFilePath())); } } } catch (VException &e) { - qCDebug(vStMeasur)<<"File error."< #include #include #include #include -#include "../../core/vapplication.h" #include #include -#include Q_DECLARE_LOGGING_CATEGORY(vDialog) diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/dialogs/tools/dialoguniondetails.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/dialogs/tools/dialoguniondetails.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/dialogs/tools/dialoguniondetails.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/dialogs/tools/dialoguniondetails.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -87,15 +87,33 @@ */ 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 * @param id id selected object @@ -106,13 +124,21 @@ 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 @@ { 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 @@ 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; } } diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/dialogs/tools/dialoguniondetails.h valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/dialogs/tools/dialoguniondetails.h --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/dialogs/tools/dialoguniondetails.h 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/dialogs/tools/dialoguniondetails.h 2015-04-01 17:27:18.000000000 +0000 @@ -84,6 +84,8 @@ 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); }; diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/geometry/vdetail.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/geometry/vdetail.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/geometry/vdetail.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/geometry/vdetail.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -186,7 +186,7 @@ bool VDetail::OnEdge(const quint32 &p1, const quint32 &p2) const { QVector list = listNodePoint(); - if (list.size() < 3) + if (list.size() < 2) { qDebug()<<"Not enough points."; return false; @@ -289,10 +289,10 @@ VDetail det(*this); det.ClearNodes(); - QVector list = this->listNodePoint(); - quint32 edge = static_cast(list.size()); + // Edge can be only segment. We ignore all curves inside segments. + const quint32 edges = static_cast(listNodePoint().size()); quint32 k = 0; - for (quint32 i=0; iNodeOnEdge(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; jat(j)); ++k; } @@ -462,15 +456,18 @@ // 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; diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/geometry/vdetail.h valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/geometry/vdetail.h --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/geometry/vdetail.h 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/geometry/vdetail.h 2015-04-01 17:27:18.000000000 +0000 @@ -82,10 +82,10 @@ QVector SeamAllowancePoints(const VContainer *data) const; QPainterPath ContourPath(const VContainer *data) const; + QVector listNodePoint()const; private: QSharedDataPointer d; - QVector listNodePoint()const; static int indexOfNode(const QVector &list, const quint32 &id); QPointF StartSegment(const VContainer *data, const int &i) const; diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/geometry/vsplinepath.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/geometry/vsplinepath.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/geometry/vsplinepath.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/geometry/vsplinepath.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -227,18 +227,6 @@ } //--------------------------------------------------------------------------------------------------------------------- -qint32 VSplinePath::getMaxCountPoints() const -{ - return d->maxCountPoints; -} - -//--------------------------------------------------------------------------------------------------------------------- -void VSplinePath::setMaxCountPoints(const qint32 &value) -{ - d->maxCountPoints = value; -} - -//--------------------------------------------------------------------------------------------------------------------- int VSplinePath::Segment(const QPointF &p) const { int index = -1; diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/geometry/vsplinepath.h valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/geometry/vsplinepath.h --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/geometry/vsplinepath.h 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/geometry/vsplinepath.h 2015-04-01 17:27:18.000000000 +0000 @@ -173,18 +173,6 @@ */ 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: diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/geometry/vsplinepath_p.h valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/geometry/vsplinepath_p.h --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/geometry/vsplinepath_p.h 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/geometry/vsplinepath_p.h 2015-04-01 17:27:18.000000000 +0000 @@ -43,15 +43,15 @@ public: VSplinePathData() - : path(QVector()), kCurve(1), maxCountPoints(0) + : path(QVector()), kCurve(1) {} VSplinePathData(qreal kCurve) - : path(QVector()), kCurve(kCurve), maxCountPoints(0) + : path(QVector()), 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 @@ * @brief kCurve coefficient of curvature spline. */ qreal kCurve; - /** - * @brief maxCountPoints max count of points what can have spline path. - */ - qint32 maxCountPoints; }; VSplinePathData::~VSplinePathData() diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/main.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/main.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/main.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/main.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -35,7 +35,11 @@ #include #include #include -#include +#if QT_VERSION < QT_VERSION_CHECK(5, 2, 0) +# include "../core/qcommandlineparser.h" +#else +# include +#endif #include #include @@ -48,7 +52,7 @@ Q_INIT_RESOURCE(theme); Q_INIT_RESOURCE(flags); - QT_REQUIRE_VERSION(argc, argv, "5.2.0"); + QT_REQUIRE_VERSION(argc, argv, "5.0.0"); VApplication app(argc, argv); diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/mainwindow.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/mainwindow.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/mainwindow.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/mainwindow.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -44,6 +44,7 @@ #include "vtooloptionspropertybrowser.h" #include "options.h" #include "../libs/ifc/xml/vpatternconverter.h" +#include "../../utils/logging.h" #include #include @@ -60,7 +61,6 @@ #include #include #include -#include #include Q_LOGGING_CATEGORY(vMainWindow, "v.mainwindow") @@ -143,30 +143,30 @@ */ void MainWindow::ActionNewPP() { - qCDebug(vMainWindow)<<"New PP."; + qCDebug(vMainWindow, "New PP."); QString patternPieceName = QString(tr("Pattern piece %1")).arg(comboBoxDraws->count()+1); - qCDebug(vMainWindow)<<"Generated PP name:"<count() == 0) { - qCDebug(vMainWindow)<<"First PP"; + qCDebug(vMainWindow, "First PP"); DialogMeasurements measurements(this); if (measurements.exec() == QDialog::Rejected) { - qCDebug(vMainWindow)<<"Creation PP was canceled"; + qCDebug(vMainWindow, "Creation PP was canceled"); return; } if (measurements.type() == MeasurementsType::Standard) { - qCDebug(vMainWindow)<<"PP with standard measurements"; + qCDebug(vMainWindow, "PP with standard measurements"); qApp->setPatternType(MeasurementsType::Standard); DialogStandardMeasurements stMeasurements(pattern, patternPieceName, this); if (stMeasurements.exec() == QDialog::Accepted) { patternPieceName = stMeasurements.name(); - qCDebug(vMainWindow)<<"PP name:"<count(); + qCDebug(vMainWindow, "PP count %d", comboBoxDraws->count()); patternPieceName = PatternPieceName(patternPieceName); - qCDebug(vMainWindow)<<"PP name:"<MPath(); } if (doc->appendPP(patternPieceName) == false) { - qCDebug(vMainWindow)<<"Error creating pattern piece with the name "<blockSignals(true); @@ -761,6 +761,7 @@ */ void MainWindow::tableClosed() { + ui->actionDetails->setChecked(true); show(); } @@ -825,7 +826,7 @@ */ void MainWindow::closeEvent(QCloseEvent *event) { - qCDebug(vMainWindow)<<"Closing main window"; + qCDebug(vMainWindow, "Closing main window"); if (MaybeSave()) { FileClosedCorrect(); @@ -835,7 +836,7 @@ } else { - qCDebug(vMainWindow)<<"Closing canceled."; + qCDebug(vMainWindow, "Closing canceled."); event->ignore(); } } @@ -1044,10 +1045,10 @@ */ void MainWindow::CancelTool() { - qCDebug(vMainWindow)<<"Canceling tool."; + qCDebug(vMainWindow, "Canceling tool."); delete dialogTool; dialogTool = nullptr; - qCDebug(vMainWindow)<<"Dialog closed."; + qCDebug(vMainWindow, "Dialog closed."); switch ( currentTool ) { case Tool::Arrow: @@ -1141,7 +1142,7 @@ */ void MainWindow::ArrowTool() { - qCDebug(vMainWindow)<<"Arrow tool."; + qCDebug(vMainWindow, "Arrow tool."); CancelTool(); ui->actionArrowTool->setChecked(true); ui->actionStopTool->setEnabled(false); @@ -1151,7 +1152,7 @@ ui->view->setCursor(cur); helpLabel->setText(""); ui->view->setShowToolOptions(true); - qCDebug(vMainWindow)<<"Enabled arrow tool."; + qCDebug(vMainWindow, "Enabled arrow tool."); } //--------------------------------------------------------------------------------------------------------------------- @@ -1217,7 +1218,7 @@ { if (checked) { - qCDebug(vMainWindow)<<"Show draw scene"; + qCDebug(vMainWindow, "Show draw scene"); ui->actionDetails->setChecked(false); SaveCurrentScene(); @@ -1255,11 +1256,12 @@ { if (checked) { - qCDebug(vMainWindow)<<"Show details scene"; + qCDebug(vMainWindow, "Show details scene"); ui->actionDraw->setChecked(false); SaveCurrentScene(); currentScene = sceneDetails; + ui->view->itemClicked(nullptr); ui->view->setScene(sceneDetails); disconnect(ui->view, &VMainGraphicsView::NewFactor, sceneDraw, &VMainGraphicsScene::SetFactor); RestoreCurrentScene(); @@ -1378,7 +1380,7 @@ */ void MainWindow::Open() { - qCDebug(vMainWindow)<<"Openning new file."; + qCDebug(vMainWindow, "Openning new file."); const QString filter(tr("Pattern files (*.val)")); //Get list last open files const QStringList files = qApp->getSettings()->GetRecentFileList(); @@ -1392,7 +1394,7 @@ //Absolute path to last open file dir = QFileInfo(files.first()).absolutePath(); } - qCDebug(vMainWindow)<<"Run QFileDialog::getOpenFileName: dir ="<actionDetails->setChecked(false); ui->actionDraw->setChecked(true); ui->actionDraw->setEnabled(false); - qCDebug(vMainWindow)<<"Returned to Draw mode."; + qCDebug(vMainWindow, "Returned to Draw mode."); setCurrentFile(QString()); pattern->Clear(); - qCDebug(vMainWindow)<<"Clearing pattern."; + qCDebug(vMainWindow, "Clearing pattern."); doc->clear(); - qCDebug(vMainWindow)<<"Clearing scenes."; + qCDebug(vMainWindow, "Clearing scenes."); sceneDraw->clear(); sceneDetails->clear(); ArrowTool(); @@ -1499,7 +1501,7 @@ { autofile.remove(); } - qCDebug(vMainWindow)<<"File"<ClearPropertyBrowser(); try @@ -1995,7 +1997,7 @@ */ bool MainWindow::SavePattern(const QString &fileName, QString &error) { - qCDebug(vMainWindow)<<"Saving pattern file"<SaveDocument(fileName, error); if (result) @@ -2004,13 +2006,13 @@ { setCurrentFile(fileName); helpLabel->setText(tr("File saved")); - qCDebug(vMainWindow)<<"File"<isWindowModified() == true) { @@ -2039,7 +2041,7 @@ */ void MainWindow::setCurrentFile(const QString &fileName) { - qCDebug(vMainWindow)<<"Set current name to \""<getUndoStack()->setClean(); @@ -2050,7 +2052,7 @@ } else { - qCDebug(vMainWindow)<<"Updating recent file list."; + qCDebug(vMainWindow, "Updating recent file list."); QStringList files = qApp->getSettings()->GetRecentFileList(); files.removeAll(fileName); files.prepend(fileName); @@ -2062,7 +2064,7 @@ qApp->getSettings()->SetRecentFileList(files); UpdateRecentFileActions(); - qCDebug(vMainWindow)<<"Updating restore file list."; + qCDebug(vMainWindow, "Updating restore file list."); QStringList restoreFiles = qApp->getSettings()->GetRestoreFileList(); restoreFiles.removeAll(fileName); restoreFiles.prepend(fileName); @@ -2089,7 +2091,7 @@ */ void MainWindow::ReadSettings() { - qCDebug(vMainWindow)<<"Reading settings."; + qCDebug(vMainWindow, "Reading settings."); restoreGeometry(qApp->getSettings()->GetGeometry()); restoreState(qApp->getSettings()->GetWindowState()); @@ -2140,7 +2142,7 @@ //--------------------------------------------------------------------------------------------------------------------- void MainWindow::UpdateRecentFileActions() { - qCDebug(vMainWindow)<<"Updating recent file actions."; + qCDebug(vMainWindow, "Updating recent file actions."); const QStringList files = qApp->getSettings()->GetRecentFileList(); const int numRecentFiles = qMin(files.size(), static_cast(MaxRecentFiles)); @@ -2321,7 +2323,7 @@ //--------------------------------------------------------------------------------------------------------------------- void MainWindow::PropertyBrowser() { - qCDebug(vMainWindow)<<"Initialization property browser."; + qCDebug(vMainWindow, "Initialization property browser."); toolOptions = new VToolOptionsPropertyBrowser(ui->dockWidgetToolOptions); connect(ui->view, &VMainGraphicsView::itemClicked, toolOptions, &VToolOptionsPropertyBrowser::itemClicked); @@ -2393,7 +2395,7 @@ { const qint32 autoTime = qApp->getSettings()->GetAutosaveTime(); autoSaveTimer->start(autoTime*60000); - qCDebug(vMainWindow)<<"Autosaving each"<setAutoSaveTimer(autoSaveTimer); } @@ -2447,7 +2449,7 @@ */ void MainWindow::LoadPattern(const QString &fileName) { - qCDebug(vMainWindow)<<"Loading new file"<setStaleLockTime(0); if (VApplication::TryLock(lock)) { - qCDebug(vMainWindow) << "Pattern file"<error(); + qCDebug(vMainWindow, "Failed to lock %s", fileName.toUtf8().constData()); + qCDebug(vMainWindow, "Error type: %d", lock->error()); if (lock->error() == QLockFile::LockFailedError) { - qCCritical(vMainWindow) << tr("This file already opened in another window."); + qCCritical(vMainWindow, "%s", tr("This file already opened in another window.").toUtf8().constData()); Clear(); return; } @@ -2518,7 +2520,7 @@ { QMessageBox::critical(this, tr("Wrong units."), tr("Application doesn't support standard table with inches.")); - qCDebug(vMainWindow)<<"Application doesn't support standard table with inches."; + qCDebug(vMainWindow, "Application doesn't support standard table with inches."); Clear(); return; } @@ -2554,7 +2556,7 @@ PatternWasModified(!patternModified); } helpLabel->setText(tr("File loaded")); - qCDebug(vMainWindow)<<"File loaded."; + qCDebug(vMainWindow, "File loaded."); qApp->setOpeningPattern();// End opening file @@ -2609,7 +2611,7 @@ const QStringList files = GetUnlokedRestoreFileList(); if (files.size() > 0) { - qCDebug(vMainWindow)<<"Reopen files after crash."; + qCDebug(vMainWindow, "Reopen files after crash."); QStringList restoreFiles; for (int i = 0; i < files.size(); ++i) @@ -2630,7 +2632,7 @@ QMessageBox::Yes); if (reply == QMessageBox::Yes) { - qCDebug(vMainWindow)<<"User said Yes."; + qCDebug(vMainWindow, "User said Yes."); for (int i = 0; i < restoreFiles.size(); ++i) { @@ -2644,8 +2646,9 @@ } else { - qCDebug(vMainWindow) << "Could not copy "<flags/Ukraine.png flags/UnitedStates.png flags/Spain.png + flags/Finland.png diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vdrawtool.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vdrawtool.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vdrawtool.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vdrawtool.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -113,7 +113,7 @@ //--------------------------------------------------------------------------------------------------------------------- void VDrawTool::SaveDialogChange() { - qCDebug(vTool)<<"Saving tool options after using dialog"; + qCDebug(vTool, "Saving tool options after using dialog"); QDomElement oldDomElement = doc->elementById(id); if (oldDomElement.isElement()) { @@ -126,7 +126,7 @@ } else { - qCDebug(vTool)<<"Can't find tool with id ="<< id << Q_FUNC_INFO; + qCDebug(vTool, "Can't find tool with id = %u", id); } } @@ -156,7 +156,7 @@ } else { - qCDebug(vTool)<<"Can't find tool with id ="<< id << Q_FUNC_INFO; + qCDebug(vTool, "Can't find tool with id = %u", id); } } @@ -183,7 +183,7 @@ } else { - qCDebug(vTool)<<"Can't find tool with id ="<< id << Q_FUNC_INFO; + qCDebug(vTool, "Can't find tool with id = %u", id); } } diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtoolalongline.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtoolalongline.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtoolalongline.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtoolalongline.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -328,6 +328,7 @@ connect(point, &VToolAlongLine::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem); connect(scene, &VMainGraphicsScene::NewFactor, point, &VToolAlongLine::SetFactor); connect(scene, &VMainGraphicsScene::DisableItem, point, &VToolAlongLine::Disable); + connect(scene, &VMainGraphicsScene::EnableToolMove, point, &VToolAlongLine::EnableToolMove); doc->AddTool(id, point); doc->IncrementReferens(firstPointId); doc->IncrementReferens(secondPointId); diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtoolbisector.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtoolbisector.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtoolbisector.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtoolbisector.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -209,6 +209,7 @@ connect(point, &VToolPoint::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem); connect(scene, &VMainGraphicsScene::NewFactor, point, &VToolBisector::SetFactor); connect(scene, &VMainGraphicsScene::DisableItem, point, &VToolBisector::Disable); + connect(scene, &VMainGraphicsScene::EnableToolMove, point, &VToolBisector::EnableToolMove); doc->AddTool(id, point); doc->IncrementReferens(firstPointId); doc->IncrementReferens(secondPointId); diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtoolcurveintersectaxis.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtoolcurveintersectaxis.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtoolcurveintersectaxis.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtoolcurveintersectaxis.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -136,6 +136,7 @@ connect(point, &VToolPoint::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem); connect(scene, &VMainGraphicsScene::NewFactor, point, &VToolCurveIntersectAxis::SetFactor); connect(scene, &VMainGraphicsScene::DisableItem, point, &VToolCurveIntersectAxis::Disable); + connect(scene, &VMainGraphicsScene::EnableToolMove, point, &VToolCurveIntersectAxis::EnableToolMove); doc->AddTool(id, point); doc->IncrementReferens(basePointId); doc->IncrementReferens(curveId); @@ -148,7 +149,10 @@ QPointF VToolCurveIntersectAxis::FindPoint(const QPointF &point, qreal angle, const QSharedPointer &curve) { - QLineF axis = VGObject::BuildAxis(point, angle, qApp->getCurrentScene()->sceneRect()); + QRectF rec = QRectF(0, 0, INT_MAX, INT_MAX); + rec.translate(-INT_MAX/2, -INT_MAX/2); + + const QLineF axis = VGObject::BuildAxis(point, angle, rec); QVector points = curve->IntersectLine(axis); if (points.size() > 0) diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtoolcutarc.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtoolcutarc.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtoolcutarc.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtoolcutarc.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -174,6 +174,7 @@ connect(point, &VToolPoint::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem); connect(scene, &VMainGraphicsScene::NewFactor, point, &VToolCutArc::SetFactor); connect(scene, &VMainGraphicsScene::DisableItem, point, &VToolCutArc::Disable); + connect(scene, &VMainGraphicsScene::EnableToolMove, point, &VToolCutArc::EnableToolMove); doc->AddTool(id, point); doc->AddTool(arc1id, point); doc->AddTool(arc2id, point); diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtoolcutspline.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtoolcutspline.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtoolcutspline.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtoolcutspline.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -183,6 +183,7 @@ connect(point, &VToolPoint::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem); connect(scene, &VMainGraphicsScene::NewFactor, point, &VToolCutSpline::SetFactor); connect(scene, &VMainGraphicsScene::DisableItem, point, &VToolCutSpline::Disable); + connect(scene, &VMainGraphicsScene::EnableToolMove, point, &VToolCutSpline::EnableToolMove); doc->AddTool(id, point); doc->AddTool(spl1id, point); doc->AddTool(spl2id, point); diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtoolcutsplinepath.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtoolcutsplinepath.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtoolcutsplinepath.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtoolcutsplinepath.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -197,9 +197,6 @@ splPath1->SetKCurve(splPath->GetKCurve()); splPath2->SetKCurve(splPath->GetKCurve()); - splPath1->setMaxCountPoints(splPath->CountPoint()); - splPath2->setMaxCountPoints(splPath->CountPoint()); - if (typeCreation == Source::FromGui) { splPath1id = data->AddGObject(splPath1); @@ -231,6 +228,7 @@ connect(point, &VToolPoint::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem); connect(scene, &VMainGraphicsScene::NewFactor, point, &VToolCutSplinePath::SetFactor); connect(scene, &VMainGraphicsScene::DisableItem, point, &VToolCutSplinePath::Disable); + connect(scene, &VMainGraphicsScene::EnableToolMove, point, &VToolCutSplinePath::EnableToolMove); doc->AddTool(id, point); doc->AddTool(splPath1id, point); doc->AddTool(splPath2id, point); diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtoolendline.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtoolendline.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtoolendline.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtoolendline.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -173,6 +173,7 @@ connect(point, &VToolPoint::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem); connect(scene, &VMainGraphicsScene::NewFactor, point, &VToolEndLine::SetFactor); connect(scene, &VMainGraphicsScene::DisableItem, point, &VToolEndLine::Disable); + connect(scene, &VMainGraphicsScene::EnableToolMove, point, &VToolEndLine::EnableToolMove); doc->AddTool(id, point); doc->IncrementReferens(basePointId); return point; diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtoolheight.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtoolheight.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtoolheight.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtoolheight.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -169,6 +169,7 @@ connect(point, &VToolPoint::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem); connect(scene, &VMainGraphicsScene::NewFactor, point, &VToolHeight::SetFactor); connect(scene, &VMainGraphicsScene::DisableItem, point, &VToolHeight::Disable); + connect(scene, &VMainGraphicsScene::EnableToolMove, point, &VToolHeight::EnableToolMove); doc->AddTool(id, point); doc->IncrementReferens(basePointId); doc->IncrementReferens(p1LineId); diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtoollineintersectaxis.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtoollineintersectaxis.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtoollineintersectaxis.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtoollineintersectaxis.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -148,6 +148,7 @@ connect(point, &VToolPoint::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem); connect(scene, &VMainGraphicsScene::NewFactor, point, &VToolLineIntersectAxis::SetFactor); connect(scene, &VMainGraphicsScene::DisableItem, point, &VToolLineIntersectAxis::Disable); + connect(scene, &VMainGraphicsScene::EnableToolMove, point, &VToolLineIntersectAxis::EnableToolMove); doc->AddTool(id, point); doc->IncrementReferens(basePointId); doc->IncrementReferens(firstPointId); diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtoollineintersect.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtoollineintersect.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtoollineintersect.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtoollineintersect.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -176,6 +176,7 @@ connect(point, &VToolLineIntersect::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem); connect(scene, &VMainGraphicsScene::NewFactor, point, &VToolLineIntersect::SetFactor); connect(scene, &VMainGraphicsScene::DisableItem, point, &VToolLineIntersect::Disable); + connect(scene, &VMainGraphicsScene::EnableToolMove, point, &VToolLineIntersect::EnableToolMove); doc->AddTool(id, point); doc->IncrementReferens(p1Line1Id); doc->IncrementReferens(p2Line1Id); diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtoolnormal.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtoolnormal.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtoolnormal.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtoolnormal.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -169,6 +169,7 @@ connect(point, &VToolNormal::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem); connect(scene, &VMainGraphicsScene::NewFactor, point, &VToolNormal::SetFactor); connect(scene, &VMainGraphicsScene::DisableItem, point, &VToolNormal::Disable); + connect(scene, &VMainGraphicsScene::EnableToolMove, point, &VToolNormal::EnableToolMove); doc->AddTool(id, point); doc->IncrementReferens(firstPointId); doc->IncrementReferens(secondPointId); diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtoolpoint.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtoolpoint.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtoolpoint.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtoolpoint.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -27,12 +27,13 @@ *************************************************************************/ #include "vtoolpoint.h" -#include -#include +#include "../../utils/logging.h" #include "../../geometry/vpointf.h" #include "../../visualization/vgraphicssimpletextitem.h" #include "../../undocommands/movelabel.h" +#include + Q_LOGGING_CATEGORY(vToolPoint, "v.toolPoint") const QString VToolPoint::TagName = QStringLiteral("point"); @@ -53,6 +54,7 @@ namePoint = new VGraphicsSimpleTextItem(this); connect(namePoint, &VGraphicsSimpleTextItem::ShowContextMenu, this, &VToolPoint::ShowContextMenu); connect(namePoint, &VGraphicsSimpleTextItem::DeleteTool, this, &VToolPoint::DeleteFromLabel); + connect(namePoint, &VGraphicsSimpleTextItem::PointChoosed, this, &VToolPoint::PointChoosed); lineName = new QGraphicsLineItem(this); connect(namePoint, &VGraphicsSimpleTextItem::NameChangePosition, this, &VToolPoint::NameChangePosition); this->setBrush(QBrush(Qt::NoBrush)); @@ -88,7 +90,8 @@ } catch (const VExceptionBadId &e) { - qCDebug(vToolPoint)<<"Error!"<<"Couldn't get point name."<setFlag(QGraphicsItem::ItemIsMovable, move); +} + +//--------------------------------------------------------------------------------------------------------------------- +void VToolPoint::PointChoosed() +{ + emit ChoosedTool(id, SceneObject::Point); +} + +//--------------------------------------------------------------------------------------------------------------------- /** * @brief mouseReleaseEvent handle mouse release events. * @param event mouse release event. @@ -202,7 +217,7 @@ { if (event->button() == Qt::LeftButton) { - emit ChoosedTool(id, SceneObject::Point); + PointChoosed(); } QGraphicsEllipseItem::mouseReleaseEvent(event); } diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtoolpoint.h valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtoolpoint.h --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtoolpoint.h 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtoolpoint.h 2015-04-01 17:27:18.000000000 +0000 @@ -59,6 +59,8 @@ virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event); void Disable(bool disable); void DeleteFromLabel(); + virtual void EnableToolMove(bool move); + void PointChoosed(); protected: /** @brief radius radius circle. */ qreal radius; diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtoolpointofcontact.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtoolpointofcontact.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtoolpointofcontact.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtoolpointofcontact.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -106,15 +106,35 @@ return p1; break; case 2: - if (QLineF(firstPoint, p1).length() <= QLineF(firstPoint, p2).length()) + { + const bool flagP1 = VGObject::PointInSegment (p1, firstPoint, secondPoint); + const bool flagP2 = VGObject::PointInSegment (p2, firstPoint, secondPoint); + if ((flagP1 == true && flagP2 == true) || + (flagP1 == false && flagP2 == false)/*In case we have something wrong*/) { - return p1; + // We don't have options for choosing correct point. Use closest to segment first point. + if (QLineF(firstPoint, p1).length() <= QLineF(firstPoint, p2).length()) + { + return p1; + } + else + { + return p2; + } } else - { - return p2; + { // In this case we have one real and one theoretical intersection. + if (flagP1) + { + return p1; + } + else + { + return p2; + } } break; + } default: qDebug() << "Unxpected value" << res; return QPointF(); @@ -210,6 +230,7 @@ connect(point, &VToolPointOfContact::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem); connect(scene, &VMainGraphicsScene::NewFactor, point, &VToolPointOfContact::SetFactor); connect(scene, &VMainGraphicsScene::DisableItem, point, &VToolPointOfContact::Disable); + connect(scene, &VMainGraphicsScene::EnableToolMove, point, &VToolPointOfContact::EnableToolMove); doc->AddTool(id, point); doc->IncrementReferens(center); doc->IncrementReferens(firstPointId); diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtoolpointofintersection.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtoolpointofintersection.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtoolpointofintersection.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtoolpointofintersection.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -151,6 +151,7 @@ connect(point, &VToolPointOfIntersection::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem); connect(scene, &VMainGraphicsScene::NewFactor, point, &VToolPointOfIntersection::SetFactor); connect(scene, &VMainGraphicsScene::DisableItem, point, &VToolPointOfIntersection::Disable); + connect(scene, &VMainGraphicsScene::EnableToolMove, point, &VToolPointOfIntersection::EnableToolMove); doc->AddTool(id, point); doc->IncrementReferens(firstPointId); doc->IncrementReferens(secondPointId); diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtoolshoulderpoint.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtoolshoulderpoint.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtoolshoulderpoint.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtoolshoulderpoint.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -213,6 +213,7 @@ connect(point, &VToolShoulderPoint::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem); connect(scene, &VMainGraphicsScene::NewFactor, point, &VToolShoulderPoint::SetFactor); connect(scene, &VMainGraphicsScene::DisableItem, point, &VToolShoulderPoint::Disable); + connect(scene, &VMainGraphicsScene::EnableToolMove, point, &VToolShoulderPoint::EnableToolMove); doc->AddTool(id, point); doc->IncrementReferens(p1Line); doc->IncrementReferens(p2Line); diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtoolsinglepoint.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtoolsinglepoint.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtoolsinglepoint.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtoolsinglepoint.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -350,4 +350,5 @@ void VToolSinglePoint::EnableToolMove(bool move) { this->setFlag(QGraphicsItem::ItemIsMovable, move); + VToolPoint::EnableToolMove(move); } diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtooltriangle.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtooltriangle.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/drawTools/vtooltriangle.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/drawTools/vtooltriangle.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -162,6 +162,7 @@ connect(point, &VToolTriangle::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem); connect(scene, &VMainGraphicsScene::NewFactor, point, &VToolTriangle::SetFactor); connect(scene, &VMainGraphicsScene::DisableItem, point, &VToolTriangle::Disable); + connect(scene, &VMainGraphicsScene::EnableToolMove, point, &VToolTriangle::EnableToolMove); doc->AddTool(id, point); doc->IncrementReferens(axisP1Id); doc->IncrementReferens(axisP2Id); diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/vabstracttool.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/vabstracttool.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/vabstracttool.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/vabstracttool.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -329,7 +329,7 @@ //--------------------------------------------------------------------------------------------------------------------- void VAbstractTool::SaveOption(QSharedPointer &obj) { - qCDebug(vTool)<<"Saving tool options"; + qCDebug(vTool, "Saving tool options"); QDomElement oldDomElement = doc->elementById(id); if (oldDomElement.isElement()) { @@ -343,7 +343,7 @@ } else { - qCDebug(vTool)<<"Can't find tool with id ="<< id << Q_FUNC_INFO; + qCDebug(vTool, "Can't find tool with id = %u", id); } } diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/vdatatool.h valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/vdatatool.h --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/vdatatool.h 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/vdatatool.h 2015-04-01 17:27:18.000000000 +0000 @@ -30,7 +30,7 @@ #define VDATATOOL_H #include "../container/vcontainer.h" -#include +#include "../../utils/logging.h" Q_DECLARE_LOGGING_CATEGORY(vTool) diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/vtooluniondetails.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/vtooluniondetails.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/tools/vtooluniondetails.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/tools/vtooluniondetails.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -164,7 +164,6 @@ VPointF *p1 = new VPointF(spline->GetP1()); BiasRotatePoint(p1, dx, dy, data->GeometricObject(pRotate)->toQPointF(), angle); - //quint32 idP1 = data->AddGObject(p1); VPointF p2 = VPointF(spline->GetP2()); BiasRotatePoint(&p2, dx, dy, data->GeometricObject(pRotate)->toQPointF(), angle); @@ -174,7 +173,6 @@ VPointF *p4 = new VPointF(spline->GetP4()); BiasRotatePoint(p4, dx, dy, data->GeometricObject(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 @@ VSplinePath *path = new VSplinePath(); path->setMode(Draw::Modeling); const QSharedPointer splinePath = data->GeometricObject(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 @@ splinePath->at(i).KAsm1(), splinePath->GetKCurve()); VPointF *p1 = new VPointF(spline.GetP1()); - BiasRotatePoint(p1, dx, dy, data->GeometricObject(pRotate)->toQPointF(), - angle); - //quint32 idP1 = data->AddGObject(p1); - --k; + BiasRotatePoint(p1, dx, dy, data->GeometricObject(pRotate)->toQPointF(), angle); VPointF p2 = VPointF(spline.GetP2()); - BiasRotatePoint(&p2, dx, dy, data->GeometricObject(pRotate)->toQPointF(), - angle); + BiasRotatePoint(&p2, dx, dy, data->GeometricObject(pRotate)->toQPointF(), angle); VPointF p3 = VPointF(spline.GetP3()); - BiasRotatePoint(&p3, dx, dy, data->GeometricObject(pRotate)->toQPointF(), - angle); + BiasRotatePoint(&p3, dx, dy, data->GeometricObject(pRotate)->toQPointF(), angle); VPointF *p4 = new VPointF(spline.GetP4()); - BiasRotatePoint(p4, dx, dy, data->GeometricObject(pRotate)->toQPointF(), - angle); - //quint32 idP4 = data->AddGObject(p4); - --k; + BiasRotatePoint(p4, dx, dy, data->GeometricObject(pRotate)->toQPointF(), angle); VSpline spl = VSpline(*p1, p2.toQPointF(), p3.toQPointF(), *p4, spline.GetKcurve()); if (i==1) @@ -239,11 +228,6 @@ delete p4; delete p1; } - while (k>=0) - { - data->getNextId(); - --k; - } idObject = data->AddGObject(path); VSplinePath *path1 = new VSplinePath(*path); @@ -286,10 +270,10 @@ VPointF *point = new VPointF(*data->GeometricObject(det.at(i).getId())); point->setMode(Draw::Modeling); BiasRotatePoint(point, dx, dy, data->GeometricObject(pRotate)->toQPointF(), angle); - ++idCount; + ++idCount;// For parent data->UpdateGObject(idDetail+idCount, point); - ++idCount; + ++idCount;// For child } } break; @@ -300,24 +284,24 @@ const QSharedPointer arc = data->GeometricObject(det.at(i).getId()); VPointF p1 = VPointF(arc->GetP1()); BiasRotatePoint(&p1, dx, dy, data->GeometricObject(pRotate)->toQPointF(), angle); + VPointF p2 = VPointF(arc->GetP2()); BiasRotatePoint(&p2, dx, dy, data->GeometricObject(pRotate)->toQPointF(), angle); + VPointF *center = new VPointF(arc->GetCenter()); BiasRotatePoint(center, dx, dy, data->GeometricObject(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 } } break; @@ -329,8 +313,6 @@ VPointF *p1 = new VPointF(spline->GetP1()); BiasRotatePoint(p1, dx, dy, data->GeometricObject(pRotate)->toQPointF(), angle); - ++idCount; - data->UpdateGObject(idDetail+idCount, p1); VPointF p2 = VPointF(spline->GetP2()); BiasRotatePoint(&p2, dx, dy, data->GeometricObject(pRotate)->toQPointF(), angle); @@ -340,16 +322,14 @@ VPointF *p4 = new VPointF(spline->GetP4()); BiasRotatePoint(p4, dx, dy, data->GeometricObject(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 } } break; @@ -361,7 +341,6 @@ path->setMode(Draw::Modeling); const QSharedPointer splinePath = data->GeometricObject(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 +350,6 @@ VPointF *p1 = new VPointF(spline.GetP1()); BiasRotatePoint(p1, dx, dy, data->GeometricObject(pRotate)->toQPointF(), angle); - ++idCount; - data->UpdateGObject(idDetail+idCount, p1); - --k; VPointF p2 = VPointF(spline.GetP2()); BiasRotatePoint(&p2, dx, dy, data->GeometricObject(pRotate)->toQPointF(), @@ -386,9 +362,6 @@ VPointF *p4 = new VPointF(spline.GetP4()); BiasRotatePoint(p4, dx, dy, data->GeometricObject(pRotate)->toQPointF(), angle); - ++idCount; - data->UpdateGObject(idDetail+idCount, p4); - --k; VSpline spl = VSpline(*p1, p2.toQPointF(), p3.toQPointF(), *p4, spline.GetKcurve()); if (i==1) @@ -400,17 +373,10 @@ splinePath->at(i).KAsm2(), spl.GetAngle2()+180)); } - while (k>=0) - { - data->getNextId(); - --k; - ++idCount; - } - - ++idCount; + ++idCount;//For parent data->UpdateGObject(idDetail+idCount, path); - ++idCount; + ++idCount;// For child } } break; @@ -511,6 +477,7 @@ doc->UpdateToolData(id, data); } } + //First add tool to file VAbstractTool::AddRecord(id, Tool::UnionDetails, doc); if (parse == Document::FullParse) { @@ -528,6 +495,7 @@ } } + //Then create new details VNodeDetail det1p1; VNodeDetail det1p2; d1.NodeOnEdge(indexD1, det1p1, det1p2); @@ -550,28 +518,42 @@ 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 +561,9 @@ 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 +586,17 @@ 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 +604,9 @@ 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 GetDetailFromFile(VPattern *doc, const QDomElement &domElement); static const QString TagName; static const QString ToolType; diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/undocommands/adddet.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/undocommands/adddet.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/undocommands/adddet.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/undocommands/adddet.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -45,7 +45,7 @@ // cppcheck-suppress unusedFunction void AddDet::undo() { - qCDebug(vUndo)<<"Undo."; + qCDebug(vUndo, "Undo."); QDomElement element; if (doc->GetActivNodeElement(VPattern::TagDetails, element)) @@ -55,19 +55,19 @@ { if (element.removeChild(domElement).isNull()) { - qCDebug(vUndo)<<"Can't delete node"; + qCDebug(vUndo, "Can't delete node"); return; } } else { - qCDebug(vUndo)<<"Can't get node by id = "<GetActivNodeElement(VPattern::TagDetails, element)) @@ -86,7 +86,7 @@ } else { - qCDebug(vUndo)<<"Can't find tag"<GetActivNodeElement(VPattern::TagModeling, modelingElement)) @@ -54,19 +54,19 @@ { if (modelingElement.removeChild(domElement).isNull()) { - qCDebug(vUndo)<<"Can't delete node."; + qCDebug(vUndo, "Can't delete node."); return; } } else { - qCDebug(vUndo)<<"Can't get node by id = "<GetActivNodeElement(VPattern::TagModeling, modelingElement)) @@ -83,7 +83,7 @@ } else { - qCDebug(vUndo)<<"Can't find tag"<CountPP() <= 1) { @@ -64,7 +64,7 @@ //--------------------------------------------------------------------------------------------------------------------- void AddPatternPiece::redo() { - qCDebug(vUndo)<<"Redo."; + qCDebug(vUndo, "Redo."); if (doc->CountPP() == 0 && mPath.isEmpty() == false) { diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/undocommands/addtocalc.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/undocommands/addtocalc.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/undocommands/addtocalc.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/undocommands/addtocalc.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -48,7 +48,7 @@ //--------------------------------------------------------------------------------------------------------------------- void AddToCalc::undo() { - qCDebug(vUndo)<<"Undo."; + qCDebug(vUndo, "Undo."); doc->ChangeActivPP(nameActivDraw);//Without this user will not see this change doc->setCursor(cursor); @@ -61,19 +61,19 @@ { if (calcElement.removeChild(domElement).isNull()) { - qCDebug(vUndo)<<"Can't delete node."; + qCDebug(vUndo, "Can't delete node."); return; } } else { - qCDebug(vUndo)<<"Can't get tool by id = "< 0) @@ -88,7 +88,7 @@ //--------------------------------------------------------------------------------------------------------------------- void AddToCalc::redo() { - qCDebug(vUndo)<<"Redo."; + qCDebug(vUndo, "Redo."); doc->ChangeActivPP(nameActivDraw);//Without this user will not see this change doc->setCursor(cursor); @@ -110,14 +110,14 @@ } else { - qCDebug(vUndo)<<"Can not find the element after which you want to insert."; + qCDebug(vUndo, "Can not find the element after which you want to insert."); return; } } } else { - qCDebug(vUndo)<<"Can't find tag Calculation."; + qCDebug(vUndo, "Can't find tag Calculation."); return; } RedoFullParsing(); diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/undocommands/adduniondetails.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/undocommands/adduniondetails.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/undocommands/adduniondetails.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/undocommands/adduniondetails.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -44,7 +44,7 @@ //--------------------------------------------------------------------------------------------------------------------- void AddUnionDetails::undo() { - qCDebug(vUndo)<<"Undo."; + qCDebug(vUndo, "Undo."); QDomElement modelingElement; if (doc->GetActivNodeElement(VPattern::TagModeling, modelingElement)) @@ -54,19 +54,19 @@ { if (modelingElement.removeChild(domElement).isNull()) { - qCDebug(vUndo)<<"Can't delete node."; + qCDebug(vUndo, "Can't delete node."); return; } } else { - qCDebug(vUndo)<<"Can't get node by id = "<GetActivNodeElement(VPattern::TagModeling, modelingElement)) @@ -84,7 +84,7 @@ } else { - qCDebug(vUndo)<<"Can't find tag"<elementById(nodeId); if (domElement.isElement()) @@ -94,7 +94,7 @@ } else { - qCDebug(vUndo)<<"Can't get detail by id = "<documentElement(); QDomNode previousPP = doc->GetPPElement(previousPPName); @@ -64,7 +64,7 @@ //--------------------------------------------------------------------------------------------------------------------- void DeletePatternPiece::redo() { - qCDebug(vUndo)<<"Redo."; + qCDebug(vUndo, "Redo."); QDomElement rootElement = doc->documentElement(); QDomElement patternPiece = doc->GetPPElement(namePP); diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/undocommands/deltool.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/undocommands/deltool.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/undocommands/deltool.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/undocommands/deltool.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -50,7 +50,7 @@ //--------------------------------------------------------------------------------------------------------------------- void DelTool::undo() { - qCDebug(vUndo)<<"Undo."; + qCDebug(vUndo, "Undo."); UndoDeleteAfterSibling(parentNode, siblingId); emit NeedFullParsing(); @@ -61,7 +61,7 @@ //--------------------------------------------------------------------------------------------------------------------- void DelTool::redo() { - qCDebug(vUndo)<<"Redo."; + qCDebug(vUndo, "Redo."); //Keep first! doc->SetCurrentPP(nameActivDraw);//Without this user will not see this change diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/undocommands/movedetail.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/undocommands/movedetail.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/undocommands/movedetail.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/undocommands/movedetail.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -50,7 +50,7 @@ } else { - qCDebug(vUndo)<<"Can't find detail with id ="<elementById(nodeId); if (domElement.isElement()) @@ -76,7 +76,7 @@ } else { - qCDebug(vUndo)<<"Can't find detail with id ="<elementById(nodeId); if (domElement.isElement()) @@ -102,7 +102,7 @@ } else { - qCDebug(vUndo)<<"Can't find detail with id ="<elementById(id); @@ -52,12 +52,12 @@ oldMx = qApp->toPixel(doc->GetParametrDouble(domElement, VAbstractTool::AttrMx, "0.0")); oldMy = qApp->toPixel(doc->GetParametrDouble(domElement, VAbstractTool::AttrMy, "0.0")); - qCDebug(vUndo)<<"Label old Mx"<getNewMx(); newMy = moveCommand->getNewMy(); - qCDebug(vUndo)<<"Label new Mx"<elementById(nodeId); if (domElement.isElement()) @@ -127,7 +127,7 @@ } else { - qCDebug(vUndo)<<"Can't find point with id ="<elementById(id); @@ -52,12 +52,12 @@ oldX = qApp->toPixel(doc->GetParametrDouble(domElement, VAbstractTool::AttrX, "0.0")); oldY = qApp->toPixel(doc->GetParametrDouble(domElement, VAbstractTool::AttrY, "0.0")); - qCDebug(vUndo)<<"SPoint oldX"<getSPointId(); - qCDebug(vUndo)<<"Mergin."; + qCDebug(vUndo, "Mergin."); if (id != nodeId) { - qCDebug(vUndo)<<"Merging canceled."; + qCDebug(vUndo, "Merging canceled."); return false; } - qCDebug(vUndo)<<"Mergin undo."; + qCDebug(vUndo, "Mergin undo."); newX = moveCommand->getNewX(); newY = moveCommand->getNewY(); - qCDebug(vUndo)<<"SPoint newX"<elementById(nodeId); if (domElement.isElement()) @@ -129,7 +129,7 @@ } else { - qCDebug(vUndo)<<"Can't find spoint with id ="<elementById(nodeId); if (domElement.isElement()) @@ -75,7 +75,7 @@ } else { - qCDebug(vUndo)<<"Can't find detail with id ="<elementById(nodeId); if (domElement.isElement()) @@ -112,7 +112,7 @@ } else { - qCDebug(vUndo)<<"Can't find detail with id ="<elementById(nodeId); if (domElement.isElement()) @@ -57,7 +57,7 @@ } else { - qCDebug(vUndo)<<"Can't find tool with id ="<elementById(nodeId); if (domElement.isElement()) @@ -76,7 +76,7 @@ } else { - qCDebug(vUndo)<<"Can't find tool with id ="< #include -#include + +#include "../../utils/logging.h" #include "../xml/vpattern.h" Q_DECLARE_LOGGING_CATEGORY(vUndo) diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/version.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/version.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/version.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/version.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -32,8 +32,8 @@ #include extern const int MAJOR_VERSION = 0; -extern const int MINOR_VERSION = 2; -extern const int DEBUG_VERSION = 9; +extern const int MINOR_VERSION = 3; +extern const int DEBUG_VERSION = 0; extern const QString APP_VERSION(QStringLiteral("%1.%2.%3.%4").arg(MAJOR_VERSION).arg(MINOR_VERSION) .arg(DEBUG_VERSION).arg(LATEST_TAG_DISTANCE)); diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/version.h valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/version.h --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/version.h 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/version.h 2015-04-01 17:27:18.000000000 +0000 @@ -39,8 +39,8 @@ // Change version number in version.cpp too. -#define VER_FILEVERSION 0,2,9,0 -#define VER_FILEVERSION_STR "0.2.9.0\0" +#define VER_FILEVERSION 0,3,0,0 +#define VER_FILEVERSION_STR "0.3.0.0\0" #define VER_PRODUCTVERSION VER_FILEVERSION #define VER_PRODUCTVERSION_STR VER_FILEVERSION_STR diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/visualization/vgraphicssimpletextitem.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/visualization/vgraphicssimpletextitem.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/visualization/vgraphicssimpletextitem.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/visualization/vgraphicssimpletextitem.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -122,9 +122,12 @@ */ void VGraphicsSimpleTextItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event) { - this->setBrush(Qt::green); + if (flags() & QGraphicsItem::ItemIsMovable) + { + this->setBrush(Qt::green); - VApplication::setOverrideCursor(cursorArrowOpenHand, 1, 1); + VApplication::setOverrideCursor(cursorArrowOpenHand, 1, 1); + } QGraphicsSimpleTextItem::hoverEnterEvent(event); } @@ -136,10 +139,13 @@ void VGraphicsSimpleTextItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) { Q_UNUSED(event); - this->setBrush(Qt::black); + if (flags() & QGraphicsItem::ItemIsMovable) + { + this->setBrush(Qt::black); - //Disable cursor-arrow-openhand - VApplication::restoreOverrideCursor(cursorArrowOpenHand); + //Disable cursor-arrow-openhand + VApplication::restoreOverrideCursor(cursorArrowOpenHand); + } QGraphicsSimpleTextItem::hoverLeaveEvent(event); } @@ -156,9 +162,12 @@ //--------------------------------------------------------------------------------------------------------------------- void VGraphicsSimpleTextItem::mousePressEvent(QGraphicsSceneMouseEvent *event) { - if (event->button() == Qt::LeftButton && event->type() != QEvent::GraphicsSceneMouseDoubleClick) + if (flags() & QGraphicsItem::ItemIsMovable) { - VApplication::setOverrideCursor(cursorArrowCloseHand, 1, 1); + if (event->button() == Qt::LeftButton && event->type() != QEvent::GraphicsSceneMouseDoubleClick) + { + VApplication::setOverrideCursor(cursorArrowCloseHand, 1, 1); + } } QGraphicsSimpleTextItem::mousePressEvent(event); } @@ -166,10 +175,17 @@ //--------------------------------------------------------------------------------------------------------------------- void VGraphicsSimpleTextItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { - if (event->button() == Qt::LeftButton && event->type() != QEvent::GraphicsSceneMouseDoubleClick) + if (flags() & QGraphicsItem::ItemIsMovable) + { + if (event->button() == Qt::LeftButton && event->type() != QEvent::GraphicsSceneMouseDoubleClick) + { + //Disable cursor-arrow-closehand + VApplication::restoreOverrideCursor(cursorArrowCloseHand); + } + } + else { - //Disable cursor-arrow-closehand - VApplication::restoreOverrideCursor(cursorArrowCloseHand); + emit PointChoosed(); } QGraphicsSimpleTextItem::mouseReleaseEvent(event); } diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/visualization/vgraphicssimpletextitem.h valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/visualization/vgraphicssimpletextitem.h --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/visualization/vgraphicssimpletextitem.h 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/visualization/vgraphicssimpletextitem.h 2015-04-01 17:27:18.000000000 +0000 @@ -61,6 +61,7 @@ */ void ShowContextMenu(QGraphicsSceneContextMenuEvent *event); void DeleteTool(); + void PointChoosed(); protected: QVariant itemChange ( GraphicsItemChange change, const QVariant &value ); virtual void hoverEnterEvent ( QGraphicsSceneHoverEvent *event ); diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/visualization/visualization.h valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/visualization/visualization.h --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/visualization/visualization.h 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/visualization/visualization.h 2015-04-01 17:27:18.000000000 +0000 @@ -31,9 +31,10 @@ #include #include + #include "../core/vapplication.h" #include "../widgets/vmaingraphicsscene.h" -#include +#include "../../utils/logging.h" Q_DECLARE_LOGGING_CATEGORY(vVis) diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/xml/vpattern.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/xml/vpattern.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/app/xml/vpattern.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/app/xml/vpattern.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -300,17 +300,17 @@ */ void VPattern::Parse(const Document &parse) { - qCDebug(vXML)<<"Parsing pattern."; + qCDebug(vXML, "Parsing pattern."); switch (parse) { case Document::FullParse: - qCDebug(vXML)<<"Full parse."; + qCDebug(vXML, "Full parse."); break; case Document::LiteParse: - qCDebug(vXML)<<"Lite parse."; + qCDebug(vXML, "Lite parse."); break; case Document::LitePPParse: - qCDebug(vXML)<<"Lite pattern piece parse."; + qCDebug(vXML, "Lite pattern piece parse."); break; default: break; @@ -332,7 +332,7 @@ switch (tags.indexOf(domElement.tagName())) { case 0: // TagDraw - qCDebug(vXML)<<"Tag draw."; + qCDebug(vXML, "Tag draw."); if (parse == Document::FullParse) { if (nameActivPP.isEmpty()) @@ -352,29 +352,29 @@ ParseDrawElement(domElement, parse); break; case 1: // TagIncrements - qCDebug(vXML)<<"Tag increments."; + qCDebug(vXML, "Tag increments."); ParseIncrementsElement(domElement); break; case 2: // TagAuthor - qCDebug(vXML)<<"Tag author."; + qCDebug(vXML, "Tag author."); break; case 3: // TagDescription - qCDebug(vXML)<<"Tag description."; + qCDebug(vXML, "Tag description."); break; case 4: // TagNotes - qCDebug(vXML)<<"Tag notes."; + qCDebug(vXML, "Tag notes."); break; case 5: // TagMeasurements - qCDebug(vXML)<<"Tag measurements."; + qCDebug(vXML, "Tag measurements."); break; case 6: // TagVersion - qCDebug(vXML)<<"Tag version."; + qCDebug(vXML, "Tag version."); break; case 7: // TagGradation - qCDebug(vXML)<<"Tag gradation."; + qCDebug(vXML, "Tag gradation."); break; default: - qCDebug(vXML)<<"Wrong tag name"< 1)//don't need upadate data if we have only one pattern piece { - qCDebug(vXML)<<"Setting current data"; - qCDebug(vXML)<<"Current PP name"<getData(); - qCDebug(vXML)<<"Data successfully updated."; + qCDebug(vXML, "Data successfully updated."); } else { - qCDebug(vXML)<<"List of tools is empty!"; + qCDebug(vXML, "List of tools is empty!"); } } } @@ -776,7 +777,7 @@ Parse(parse); break; case Document::FullParse: - qCWarning(vXML)<<"Lite parsing doesn't support full parsing"; + qCWarning(vXML, "Lite parsing doesn't support full parsing"); break; default: break; @@ -836,13 +837,13 @@ // Restore name current pattern piece nameActivPP = namePP; - qCDebug(vXML)<<"Current pattern piece"<getSceneView()); VAbstractTool::NewSceneRect(sceneDetail, qApp->getSceneView()); - qCDebug(vXML)<<"Scene size updated."; + qCDebug(vXML, "Scene size updated."); } //--------------------------------------------------------------------------------------------------------------------- @@ -906,20 +907,20 @@ switch (tags.indexOf(domElement.tagName())) { case 0: // TagCalculation - qCDebug(vXML)<<"Tag calculation."; + qCDebug(vXML, "Tag calculation."); data->ClearCalculationGObjects(); ParseDrawMode(domElement, parse, Draw::Calculation); break; case 1: // TagModeling - qCDebug(vXML)<<"Tag modeling."; + qCDebug(vXML, "Tag modeling."); ParseDrawMode(domElement, parse, Draw::Modeling); break; case 2: // TagDetails - qCDebug(vXML)<<"Tag details."; + qCDebug(vXML, "Tag details."); ParseDetails(domElement, parse); break; default: - qCDebug(vXML)<<"Wrong tag name"; + qCDebug(vXML, "Wrong tag name"); break; } } @@ -959,27 +960,27 @@ switch (tags.indexOf(domElement.tagName())) { case 0: // TagPoint - qCDebug(vXML)<<"Tag point."; + qCDebug(vXML, "Tag point."); ParsePointElement(scene, domElement, parse, domElement.attribute(AttrType, "")); break; case 1: // TagLine - qCDebug(vXML)<<"Tag line."; + qCDebug(vXML, "Tag line."); ParseLineElement(scene, domElement, parse); break; case 2: // TagSpline - qCDebug(vXML)<<"Tag spline."; + qCDebug(vXML, "Tag spline."); ParseSplineElement(scene, domElement, parse, domElement.attribute(AttrType, "")); break; case 3: // TagArc - qCDebug(vXML)<<"Tag arc."; + qCDebug(vXML, "Tag arc."); ParseArcElement(scene, domElement, parse, domElement.attribute(AttrType, "")); break; case 4: // TagTools - qCDebug(vXML)<<"Tag tools."; + qCDebug(vXML, "Tag tools."); ParseToolsElement(scene, domElement, parse, domElement.attribute(AttrType, "")); break; default: - qCDebug(vXML)<<"Wrong tag name"; + qCDebug(vXML, "Wrong tag name"); break; } } @@ -1856,7 +1857,7 @@ switch (splines.indexOf(type)) { case 0: //VToolSpline::ToolType - qCDebug(vXML)<<"VToolSpline."; + qCDebug(vXML, "VToolSpline."); try { ToolsCommonAttributes(domElement, id); @@ -1881,7 +1882,7 @@ } break; case 1: //VToolSplinePath::ToolType - qCDebug(vXML)<<"VToolSplinePath."; + qCDebug(vXML, "VToolSplinePath."); try { ToolsCommonAttributes(domElement, id); @@ -1928,7 +1929,7 @@ } break; case 2: //VNodeSpline::ToolType - qCDebug(vXML)<<"VNodeSpline."; + qCDebug(vXML, "VNodeSpline."); try { SplinesCommonAttributes(domElement, id, idObject, idTool); @@ -1946,7 +1947,7 @@ } break; case 3: //VNodeSplinePath::ToolType - qCDebug(vXML)<<"VNodeSplinePath."; + qCDebug(vXML, "VNodeSplinePath."); try { SplinesCommonAttributes(domElement, id, idObject, idTool); @@ -1964,7 +1965,7 @@ } break; default: - qCDebug(vXML) << "Illegal spline type in VDomDocument::ParseSplineElement()."; + qCDebug(vXML, "Illegal spline type in VDomDocument::ParseSplineElement()."); break; } } @@ -2487,7 +2488,7 @@ } ++i; } - qCDebug(vXML)<<"Point label:"<IsUnique(name) == false); - qCDebug(vXML)<<"Point label:"<(type); + qCDebug(vXML, "Got unknow type %d", static_cast(type)); return QString(); } diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/libs/ifc/exception/vexception.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/libs/ifc/exception/vexception.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/libs/ifc/exception/vexception.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/libs/ifc/exception/vexception.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -27,11 +27,12 @@ *************************************************************************/ #include "vexception.h" +#include "../../../utils/logging.h" + #include #include #include #include -#include Q_LOGGING_CATEGORY(vExcep, "v.excep") @@ -102,7 +103,8 @@ #ifndef QT_NO_CURSOR QApplication::restoreOverrideCursor(); #endif - qCDebug(vExcep)<<"Critical error!"< + diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/libs/ifc/xml/vdomdocument.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/libs/ifc/xml/vdomdocument.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/libs/ifc/xml/vdomdocument.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/libs/ifc/xml/vdomdocument.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -425,7 +425,7 @@ */ void VDomDocument::ValidateXML(const QString &schema, const QString &fileName) { - qCDebug(vXML)<<"Validation xml file"< #include -#include #include #include "ifcdef.h" +#include "../../../utils/logging.h" Q_DECLARE_LOGGING_CATEGORY(vXML) diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/libs/qmuparser/qmuparserbase.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/libs/qmuparser/qmuparserbase.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/libs/qmuparser/qmuparserbase.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/libs/qmuparser/qmuparserbase.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -1044,9 +1044,18 @@ #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)) { diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/libs/qmuparser/qmuparserbytecode.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/libs/qmuparser/qmuparserbytecode.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/libs/qmuparser/qmuparserbytecode.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/libs/qmuparser/qmuparserbytecode.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -392,7 +392,7 @@ SToken tok; tok.Cmd = cmASSIGN; - tok.Val.ptr = a_pVar; + tok.Oprt.ptr = a_pVar; m_vRPN.push_back(tok); } diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/libs/qmuparser/qmuparser.pro valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/libs/qmuparser/qmuparser.pro --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/libs/qmuparser/qmuparser.pro 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/libs/qmuparser/qmuparser.pro 2015-04-01 17:27:18.000000000 +0000 @@ -39,7 +39,7 @@ include(qmuparser.pri) -VERSION = 2.2.5 +VERSION = 2.2.6 # Set "make install" command for Unix-like systems. unix:!macx{ diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/libs/qmuparser/qmuparsertest.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/libs/qmuparser/qmuparsertest.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/libs/qmuparser/qmuparsertest.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/libs/qmuparser/qmuparsertest.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -56,6 +56,7 @@ AddTest ( &QmuParserTester::TestBinOprt ); AddTest ( &QmuParserTester::TestException ); AddTest ( &QmuParserTester::TestStrArg ); + AddTest ( &QmuParserTester::TestBulkMode ); QmuParserTester::c_iCount = 0; } @@ -165,6 +166,44 @@ } //--------------------------------------------------------------------------------------------------------------------- +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() { int iStat = 0; @@ -172,16 +211,7 @@ // 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 @@ 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 ); @@ -1404,6 +1435,63 @@ } 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; } //--------------------------------------------------------------------------------------------------------------------- diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/libs/qmuparser/qmuparsertest.h valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/libs/qmuparser/qmuparsertest.h --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/libs/qmuparser/qmuparsertest.h 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/libs/qmuparser/qmuparsertest.h 2015-04-01 17:27:18.000000000 +0000 @@ -63,6 +63,9 @@ 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 @@ int TestStrArg(); // cppcheck-suppress functionStatic int TestIfThenElse(); + // cppcheck-suppress functionStatic + int TestBulkMode(); static void Q_NORETURN Abort(); }; diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/libs/qmuparser/qmuparsertokenreader.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/libs/qmuparser/qmuparsertokenreader.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/libs/qmuparser/qmuparsertokenreader.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/libs/qmuparser/qmuparsertokenreader.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -343,7 +343,8 @@ 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( m_strFormulaStd.find_first_not_of ( oprtCharsStd, static_cast(a_iPos) ) ); if ( iEnd == static_cast( string_type::npos ) ) diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/libs/vlayout/vlayoutdef.h valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/libs/vlayout/vlayoutdef.h --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/libs/vlayout/vlayoutdef.h 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/libs/vlayout/vlayoutdef.h 2015-04-01 17:27:18.000000000 +0000 @@ -48,16 +48,20 @@ //#define LAYOUT_DEBUG // Enable debug mode +// This block help rule debug mode. Don't turn all options at the same time! #ifdef LAYOUT_DEBUG -# define SHOW_VERTICES // Show contour vertices -# define SHOW_DIRECTION // Show contour direction -# define ARRANGED_DETAILS // Show already arranged details -//# define SHOW_CANDIDATE -//# define SHOW_ROTATION -//# define SHOW_COMBINE -//# define SHOW_MIRROR -//# define SHOW_CANDIDATE_BEST -//# define SHOW_BEST +// Nice looking +# define SHOW_VERTICES // Show contour vertices +# define SHOW_DIRECTION // Show contour direction +# define ARRANGED_DETAILS // Show already arranged details + +// Debugging +# define SHOW_CANDIDATE // Show each position +# define SHOW_ROTATION // For each position show rotation part +# define SHOW_COMBINE // For each position show edge combine part +# define SHOW_MIRROR // For each position show mirror part +//# define SHOW_CANDIDATE_BEST // For only correct positions that pass checks +//# define SHOW_BEST // Show only best position for workpiece #endif//LAYOUT_DEBUG #endif // VLAYOUTDEF_H diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/libs/vlayout/vposition.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/libs/vlayout/vposition.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/libs/vlayout/vposition.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/libs/vlayout/vposition.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -147,10 +147,10 @@ QPainter paint; paint.begin(&frameImage); - paint.setPen(QPen(Qt::darkRed, 10, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin)); + paint.setPen(QPen(Qt::darkRed, 15, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin)); paint.drawRect(QRectF(contour.GetWidth()/2, contour.GetHeight()/2, contour.GetWidth(), contour.GetHeight())); - paint.setPen(QPen(Qt::black, 3, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin)); + paint.setPen(QPen(Qt::black, 6, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin)); QPainterPath p; if (contour.GetContour().isEmpty()) { @@ -166,7 +166,7 @@ } #ifdef SHOW_CANDIDATE - paint.setPen(QPen(Qt::darkGreen, 3, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin)); + paint.setPen(QPen(Qt::darkGreen, 6, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin)); p = DrawContour(detail.GetLayoutAllowencePoints()); p.translate(contour.GetWidth()/2, contour.GetHeight()/2); paint.drawPath(p); @@ -176,7 +176,7 @@ #endif #ifdef ARRANGED_DETAILS - paint.setPen(QPen(Qt::blue, 1, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin)); + paint.setPen(QPen(Qt::blue, 2, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin)); p = DrawDetails(details); p.translate(contour.GetWidth()/2, contour.GetHeight()/2); paint.drawPath(p); diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/libs/vobj/vobjengine.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/libs/vobj/vobjengine.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/libs/vobj/vobjengine.cpp 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/libs/vobj/vobjengine.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -210,11 +210,12 @@ for (int i = 0; i < pointCount; ++i) { - *stream << QString(" %1").arg(globalPointsCount - static_cast(pointCount + i + 1)); + *stream << QString(" %1").arg(globalPointsCount - static_cast(pointCount) + i + 1); } *stream << endl; } +//--------------------------------------------------------------------------------------------------------------------- void VObjEngine::drawPolygon(const QPoint *points, int pointCount, QPaintEngine::PolygonDrawMode mode) { QPaintEngine::drawPolygon(points, pointCount, mode); diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/test/test.pro valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/test/test.pro --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/test/test.pro 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/test/test.pro 2015-04-01 17:27:18.000000000 +0000 @@ -1,3 +1,4 @@ TEMPLATE = subdirs CONFIG += ordered -SUBDIRS = ParserTest +SUBDIRS = ParserTest \ + ValentinaTest diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/test/ValentinaTest/qttestmainlambda.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/test/ValentinaTest/qttestmainlambda.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/test/ValentinaTest/qttestmainlambda.cpp 1970-01-01 00:00:00.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/test/ValentinaTest/qttestmainlambda.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -0,0 +1,46 @@ +/************************************************************************ + ** + ** @file qttestmainlambda.cpp + ** @author Roman Telezhynskyi + ** @date 31 3, 2015 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentine project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2015 Valentina project + ** All Rights Reserved. + ** + ** 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. + ** + ** You should have received a copy of the GNU General Public License + ** along with Valentina. If not, see . + ** + *************************************************************************/ + +#include + +#include "tst_test.h" + +int main(int argc, char** argv) +{ + int status = 0; + auto ASSERT_TEST = [&status, argc, argv](QObject* obj) + { + status |= QTest::qExec(obj, argc, argv); + delete obj; + }; + + ASSERT_TEST(new Test()); + //ASSERT_TEST(new Test2()); + + return status; +} diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/test/ValentinaTest/tst_test.cpp valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/test/ValentinaTest/tst_test.cpp --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/test/ValentinaTest/tst_test.cpp 1970-01-01 00:00:00.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/test/ValentinaTest/tst_test.cpp 2015-04-01 17:27:18.000000000 +0000 @@ -0,0 +1,46 @@ +/************************************************************************ + ** + ** @file tst_test.cpp + ** @author Roman Telezhynskyi + ** @date 31 3, 2015 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentine project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2015 Valentina project + ** All Rights Reserved. + ** + ** 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. + ** + ** You should have received a copy of the GNU General Public License + ** along with Valentina. If not, see . + ** + *************************************************************************/ + +#include "tst_test.h" + +Test::Test() +{ +} + +void Test::initTestCase() +{ +} + +void Test::cleanupTestCase() +{ +} + +void Test::testCase1() +{ + QVERIFY2(true, "Failure"); +} diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/test/ValentinaTest/tst_test.h valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/test/ValentinaTest/tst_test.h --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/test/ValentinaTest/tst_test.h 1970-01-01 00:00:00.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/test/ValentinaTest/tst_test.h 2015-04-01 17:27:18.000000000 +0000 @@ -0,0 +1,48 @@ +/************************************************************************ + ** + ** @file tst_test.cpp + ** @author Roman Telezhynskyi + ** @date 31 3, 2015 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentine project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2015 Valentina project + ** All Rights Reserved. + ** + ** 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. + ** + ** You should have received a copy of the GNU General Public License + ** along with Valentina. If not, see . + ** + *************************************************************************/ + +#ifndef TST_TEST_H +#define TST_TEST_H + +#include +#include + +class Test : public QObject +{ + Q_OBJECT + +public: + Test(); + +private Q_SLOTS: + void initTestCase(); + void cleanupTestCase(); + void testCase1(); +}; + +#endif // TST_TEST_H diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/test/ValentinaTest/ValentinaTest.pro valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/test/ValentinaTest/ValentinaTest.pro --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/test/ValentinaTest/ValentinaTest.pro 1970-01-01 00:00:00.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/test/ValentinaTest/ValentinaTest.pro 2015-04-01 17:27:18.000000000 +0000 @@ -0,0 +1,30 @@ +#------------------------------------------------- +# +# Project created by QtCreator 2015-03-31T17:27:03 +# +#------------------------------------------------- + +QT += testlib + +QT -= gui + +TARGET = tst_test +CONFIG += console +CONFIG -= app_bundle + +TEMPLATE = app + +# Use out-of-source builds (shadow builds) +CONFIG -= debug_and_release debug_and_release_target + +# We use C++11 standard +CONFIG += c++11 + +DEFINES += SRCDIR=\\\"$$PWD/\\\" + +SOURCES += \ + qttestmainlambda.cpp \ + tst_test.cpp + +HEADERS += \ + tst_test.h diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/utils/logging.h valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/utils/logging.h --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/utils/logging.h 1970-01-01 00:00:00.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/utils/logging.h 2015-04-01 17:27:18.000000000 +0000 @@ -0,0 +1,100 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc. +** Contact: http://www.qt-project.org/legal +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +****************************************************************************/ + +#ifndef LOGGING_H +#define LOGGING_H + +#include + +#if QT_VERSION < QT_VERSION_CHECK(5, 2, 0) + +// +// Qt < 5.2 didn't feature categorized logging: +// Just enable qCWarning, qCCritical, but disable qCDebug +// +class QLoggingCategory +{ + Q_DISABLE_COPY(QLoggingCategory) +public: + explicit QLoggingCategory(const char *category) : name(category) {} + ~QLoggingCategory(); + + bool isDebugEnabled() const { return false; } + bool isWarningEnabled() const { return true; } + bool isCriticalEnabled() const { return true; } + + const char *categoryName() const { return name; } + + QLoggingCategory &operator()() { return *this; } + +private: + const char *name; +}; + +#define Q_DECLARE_LOGGING_CATEGORY(name) \ + extern QLoggingCategory &name(); + +// relies on QLoggingCategory(QString) being thread safe! +#define Q_LOGGING_CATEGORY(name, string) \ + QLoggingCategory &name() \ + { \ + static QLoggingCategory category(string); \ + return category; \ + } + +#if QT_VERSION > QT_VERSION_CHECK(5, 0, 0) + +// +// Qt 5.0, 5.1 do have already support for categories in QMessageLogger +// + +#define qCDebug(category, ...) \ + for (bool q_category_enabled = category().isDebugEnabled(); q_category_enabled; q_category_enabled = false) \ + QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO, category().categoryName()).debug(__VA_ARGS__) +#define qCWarning(category, ...) \ + for (bool q_category_enabled = category().isWarningEnabled(); q_category_enabled; q_category_enabled = false) \ + QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO, category().categoryName()).warning(__VA_ARGS__) +#define qCCritical(category, ...) \ + for (bool q_category_enabled = category().isCriticalEnabled(); q_category_enabled; q_category_enabled = false) \ + QMessageLogger(__FILE__, __LINE__, Q_FUNC_QT_VERSION < 0x053000INFO, \ + category().categoryName()).critical(__VA_ARGS__) +# endif // QT_VERSION > QT_VERSION_CHECK(5, 0, 0) + +#else // QT_VERSION < QT_VERSION_CHECK(5, 2, 0) + +#include + +#if QT_VERSION < QT_VERSION_CHECK(5, 3, 0) + +// printf style for qCDebug was only added in Qt 5.3 + +#undef qCDebug +#undef qCWarning +#undef qCCritical + +#define qCDebug(category, ...) \ + for (bool q_category_enabled = category().isDebugEnabled(); q_category_enabled; q_category_enabled = false) \ + QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO, category().categoryName()).debug(__VA_ARGS__) +#define qCWarning(category, ...) \ + for (bool q_category_enabled = category().isWarningEnabled(); q_category_enabled; q_category_enabled = false) \ + QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO, category().categoryName()).warning(__VA_ARGS__) +#define qCCritical(category, ...) \ + for (bool q_category_enabled = category().isCriticalEnabled(); q_category_enabled; q_category_enabled = false) \ + QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO, category().categoryName()).critical(__VA_ARGS__) + +#endif // QT_VERSION < QT_VERSION_CHECK(5, 3, 0) + +#endif // QT_VERSION < QT_VERSION_CHECK(5, 2, 0) + +#endif // LOGGING_H diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/utils/utils.pri valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/utils/utils.pri --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/src/utils/utils.pri 1970-01-01 00:00:00.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/src/utils/utils.pri 2015-04-01 17:27:18.000000000 +0000 @@ -0,0 +1,2 @@ +HEADERS += \ + $$PWD/logging.h diff -Nru valentina-0.3.0+43+201503231246~ubuntu14.10.1/Valentina.pro valentina-0.3.0+44+201504011727~ubuntu14.10.1/Valentina.pro --- valentina-0.3.0+43+201503231246~ubuntu14.10.1/Valentina.pro 2015-03-23 12:46:24.000000000 +0000 +++ valentina-0.3.0+44+201504011727~ubuntu14.10.1/Valentina.pro 2015-04-01 17:27:18.000000000 +0000 @@ -1,9 +1,9 @@ include(Valentina.pri) -#Check if Qt version >= 5.2.0 +#Check if Qt version >= 5.0.0 !minQtVersion(5, 2, 0) { message("Cannot build Valentina with Qt version $${QT_VERSION}.") - error("Use at least Qt 5.2.0.") + error("Use at least Qt 5.0.0.") } TEMPLATE = subdirs