From 1d60f3987f274a64e863ed03e596989e6945cde0 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Thu, 20 May 2021 09:12:04 +0300 Subject: [PATCH 01/20] Clean Puzzle's man page. --- dist/debian/puzzle.1 | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/dist/debian/puzzle.1 b/dist/debian/puzzle.1 index 27ff0a68f..3c04b8ad7 100644 --- a/dist/debian/puzzle.1 +++ b/dist/debian/puzzle.1 @@ -20,7 +20,7 @@ The filename of exported layout file. Use it to enable console export mode. .IP "-r, --rawLayout " Load pattern pieces form the raw layout data file. .IP "-f, --format " -Number corresponding to tiled pdf page template (default = 0, export mode with tiled pdf format): +Number corresponding to tiled pdf page template (default = 0, export mode with tiled pdf format): .IP "--bdxf" Export dxf in binary form. .IP "--text2paths" @@ -40,20 +40,16 @@ Tiled page top margin in current units like 3.0 (export mode). If not set will b .IP "--tiledbmargin " Tiled page bottom margin in current units like 3.0 (export mode). If not set will be used value default value 1 cm. .IP "--tiledLandscape" -Set tiled page orienatation to landscape (export mode). Default value if not set portrait. +Set tiled page orienatation to landscape (export mode). Default value if not set portrait. .IP "-t, --test" -Run the program in a test mode. The program in this mode loads a single layout file and silently quit without showing the main window. The key have priority before key 'exportFile'. +Run the program in a test mode. The program in this mode loads a single layout file and silently quit without showing the main window. The key have priority before key 'exportFile'. .IP "--no-scaling" -Disable high dpi scaling. Call this option if has problem with scaling (by default scaling enabled). Alternatively you can use the QT_AUTO_SCREEN_SCALE_FACTOR=0 environment variable. +Disable high dpi scaling. Call this option if has problem with scaling (by default scaling enabled). Alternatively you can use the QT_AUTO_SCREEN_SCALE_FACTOR=0 environment variable. .IP Arguments: .I filename \- the manual layout file. .SH AUTHOR .RI "This manual page was written by Roman Telezhynskyi <" dismine@gmail.com ">" -.SH "SEE ALSO" -.RB "Full " "User Manual" " is availiable in" -.UR https://bitbucket.org/dismine/valentina/wiki/manual/Content -.UE .BR valentina (1) From c8a7c1a898ac67a523193a66a11d19cb786ba829 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Thu, 20 May 2021 10:35:40 +0300 Subject: [PATCH 02/20] Deploy for Puzzle. --- dist/debian/menu | 1 + dist/debian/source/include-binaries | 3 + dist/debian/valentina.manpages | 1 + dist/debian/valentina.mime | 1 + dist/debian/valentina.sharedmimeinfo | 94 ++++++++++++++++++ ...tina-0.0.0_alpha(template_unstable).ebuild | 1 + dist/macx/layout.icns | Bin 0 -> 71635 bytes dist/macx/puzzle/Info.plist | 50 +++++++++- dist/puzzle.desktop | 14 +++ dist/rpm/valentina.spec | 9 +- dist/win/inno/valentina.iss | 13 +++ dist/win/layout.ico | Bin 0 -> 16958 bytes share/icons/128x128/apps/puzzle.png | Bin 0 -> 3130 bytes .../application-x-valentina-layout.png | Bin 0 -> 4553 bytes share/icons/256x256/apps/puzzle.png | Bin 0 -> 5766 bytes .../application-x-valentina-layout.png | Bin 0 -> 9755 bytes share/icons/48x48/apps/puzzle.png | Bin 0 -> 5045 bytes .../application-x-valentina-layout.png | Bin 0 -> 10416 bytes share/icons/512x512/apps/puzzle.png | Bin 0 -> 12094 bytes .../application-x-valentina-layout.png | Bin 0 -> 23323 bytes share/icons/64x64/apps/puzzle.png | Bin 0 -> 1504 bytes .../application-x-valentina-layout.png | Bin 0 -> 2180 bytes src/app/puzzle/puzzle.pro | 15 +-- src/app/valentina/valentina.pro | 44 ++++++-- 24 files changed, 218 insertions(+), 28 deletions(-) create mode 100644 dist/macx/layout.icns create mode 100644 dist/puzzle.desktop create mode 100644 dist/win/layout.ico create mode 100644 share/icons/128x128/apps/puzzle.png create mode 100644 share/icons/128x128/mimetypes/application-x-valentina-layout.png create mode 100644 share/icons/256x256/apps/puzzle.png create mode 100644 share/icons/256x256/mimetypes/application-x-valentina-layout.png create mode 100644 share/icons/48x48/apps/puzzle.png create mode 100644 share/icons/48x48/mimetypes/application-x-valentina-layout.png create mode 100644 share/icons/512x512/apps/puzzle.png create mode 100644 share/icons/512x512/mimetypes/application-x-valentina-layout.png create mode 100644 share/icons/64x64/apps/puzzle.png create mode 100644 share/icons/64x64/mimetypes/application-x-valentina-layout.png diff --git a/dist/debian/menu b/dist/debian/menu index 3addde6b9..3e2e6f89d 100644 --- a/dist/debian/menu +++ b/dist/debian/menu @@ -1,2 +1,3 @@ ?package(valentina): needs="X11" section="Applications/Graphics" title="Valentina" command="valentina" ?package(valentina): needs="X11" section="Applications/Data Management" title="Tape" command="tape" +?package(valentina): needs="X11" section="Applications/Data Management" title="Puzzle" command="puzzle" diff --git a/dist/debian/source/include-binaries b/dist/debian/source/include-binaries index 5f9e9000a..92ff0082c 100644 --- a/dist/debian/source/include-binaries +++ b/dist/debian/source/include-binaries @@ -1,10 +1,13 @@ debian/usr/share/pixmaps/valentina.png debian/usr/share/pixmaps/tape.png +debian/usr/share/pixmaps/puzzle.png debian/usr/share/pixmaps/application-x-valentina-pattern.png debian/usr/share/pixmaps/application-x-valentina-i-measurements.png debian/usr/share/pixmaps/application-x-valentina-s-measurements.png +debian/usr/share/pixmaps/application-x-valentina-layout.png debian/valentina/usr/bin/valentina debian/valentina/usr/bin/tape +debian/valentina/usr/bin/puzzle debian/valentina/usr/share/valentina/diagrams.rcc debian/valentina/usr/share/valentina/translations/measurements_p0_cs_CZ.qm debian/valentina/usr/share/valentina/translations/measurements_p0_de_DE.qm diff --git a/dist/debian/valentina.manpages b/dist/debian/valentina.manpages index e2540884d..ca51f67c3 100644 --- a/dist/debian/valentina.manpages +++ b/dist/debian/valentina.manpages @@ -1,2 +1,3 @@ debian/valentina.1 debian/tape.1 +debian/puzzle.1 diff --git a/dist/debian/valentina.mime b/dist/debian/valentina.mime index 94de3debe..b863ec357 100644 --- a/dist/debian/valentina.mime +++ b/dist/debian/valentina.mime @@ -1,3 +1,4 @@ application/x-valentina-pattern; valentina %s; nametemplate=%s.val; description="Valentina pattern" edit=valentina '%s'; priority=6 application/x-valentina-i-pattern; tape %s; nametemplate=%s.vit; description="Valentina individual measurments" edit=tape '%s'; priority=6 application/x-valentina-s-pattern; tape %s; nametemplate=%s.vst; description="Valentina standard measurments" edit=tape '%s'; priority=6 +application/x-valentina-layout; puzzle %s; nametemplate=%s.vlt; description="Valentina layout" edit=puzzle '%s'; priority=6 diff --git a/dist/debian/valentina.sharedmimeinfo b/dist/debian/valentina.sharedmimeinfo index 41bb06377..ac60d8b05 100644 --- a/dist/debian/valentina.sharedmimeinfo +++ b/dist/debian/valentina.sharedmimeinfo @@ -282,4 +282,98 @@ + + + <_comment>Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina раскладка + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina розкладка + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + Valentina layout + + + diff --git a/dist/ebuild/valentina-0.0.0_alpha(template_unstable).ebuild b/dist/ebuild/valentina-0.0.0_alpha(template_unstable).ebuild index e1721b09e..b5e2e5047 100644 --- a/dist/ebuild/valentina-0.0.0_alpha(template_unstable).ebuild +++ b/dist/ebuild/valentina-0.0.0_alpha(template_unstable).ebuild @@ -59,6 +59,7 @@ src_install() { doman dist/debian/${PN}.1 doman dist/debian/tape.1 + doman dist/debian/puzzle.1 cp dist/debian/valentina.sharedmimeinfo dist/debian/${PN}.xml || die insinto /usr/share/mime/packages diff --git a/dist/macx/layout.icns b/dist/macx/layout.icns new file mode 100644 index 0000000000000000000000000000000000000000..831979454b15a06949c706cd5255a93ece01f047 GIT binary patch literal 71635 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%0DK1g^2eb?Y!21ZmPUtW` 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 W!zM(NstVpyU-kARY`Ndh+J6I3n`Z9- literal 0 HcmV?d00001 diff --git a/dist/macx/puzzle/Info.plist b/dist/macx/puzzle/Info.plist index 5eaa2370b..b68500345 100755 --- a/dist/macx/puzzle/Info.plist +++ b/dist/macx/puzzle/Info.plist @@ -9,9 +9,9 @@ CFBundlePackageType APPL LSMinimumSystemVersion - 10.6 + 10.7 NSHumanReadableCopyright - © 2013-2020, Valentina project + © 2013-2021, Valentina project CFBundleSignature @TYPEINFO@ CFBundleExecutable @@ -19,11 +19,53 @@ CFBundleIdentifier io.bitbucket.valentinaproject.@EXECUTABLE@ CFBundleShortVersionString - 0.7.0 + 0.7.47 CFBundleVersion - 0.7.0.0 + 0.7.47.0 CFBundleInfoDictionaryVersion 6.0 + CFBundleDocumentTypes + + + CFBundleTypeRole + Editor + CFBundleTypeIconFile + layout.incs + LSItemContentTypes + + io.bitbucket.valentinaproject.vlt + + CFBundleTypeName + Valentina layout + LSHandlerRank + Owner + + + UTExportedTypeDeclarations + + + UTTypeConformsTo + + public.text + public.xml + + UTTypeDescription + Valentina layout + UTTypeIconFile + layout.icns + UTTypeIdentifier + io.bitbucket.valentinaproject.vlt + UTTypeTagSpecification + + public.filename-extension + + vlt + + public.mime-type + text/xml + + + NSRequiresAquaSystemAppearance diff --git a/dist/puzzle.desktop b/dist/puzzle.desktop new file mode 100644 index 000000000..b166d63fe --- /dev/null +++ b/dist/puzzle.desktop @@ -0,0 +1,14 @@ +[Desktop Entry] +Type=Application +Name=Puzzle +Exec=puzzle %F +Version=1.0 +GenericName=Valentina's layout editor +Comment=Create and edit layouts +Comment[uk]=Створюйте і редагуйте розкладки +Comment[ru]=Создавайте и редактируйте раскладку +Icon=puzzle +Terminal=false +MimeType=application/x-valentina-layout; +Categories=Qt;Utility;FileTools; +TryExec=puzzle diff --git a/dist/rpm/valentina.spec b/dist/rpm/valentina.spec index 328c78c10..f5cdb0b93 100644 --- a/dist/rpm/valentina.spec +++ b/dist/rpm/valentina.spec @@ -151,6 +151,9 @@ gzip -9c dist/debian/%{name}.1 > dist/debian/%{name}.1.gz && gzip -9c dist/debian/tape.1 > dist/debian/tape.1.gz && %{__install} -Dm 644 dist/debian/tape.1.gz %{buildroot}%{_mandir}/man1/tape.1.gz +gzip -9c dist/debian/puzzle.1 > dist/debian/puzzle.1.gz && +%{__install} -Dm 644 dist/debian/puzzle.1.gz %{buildroot}%{_mandir}/man1/puzzle.1.gz + cp dist/debian/valentina.sharedmimeinfo dist/debian/%{name}.xml && %{__install} -Dm 644 dist/debian/%{name}.xml %{buildroot}%{_datadir}/mime/packages/%{name}.xml @@ -160,6 +163,7 @@ cp dist/debian/valentina.mime dist/debian/%{name} && %if 0%{?suse_version} > 0 %suse_update_desktop_file -r %{name} Graphics VectorGraphics 2DGraphics %suse_update_desktop_file -r tape Utility Applet +%suse_update_desktop_file -r puzzle Utility Applet %endif %post @@ -194,8 +198,10 @@ fi %license LICENSE_GPL.txt %doc %{_mandir}/man1/%{name}.1* %doc %{_mandir}/man1/tape.1* +%doc %{_mandir}/man1/puzzle.1* %{_bindir}/valentina %{_bindir}/tape +%{_bindir}/puzzle %{_libdir}/libvpropertyexplorer.so %{_libdir}/libvpropertyexplorer.so.* %{_libdir}/libqmuparser.so @@ -208,6 +214,7 @@ fi %{_datadir}/mime/packages/%{name}.xml %{_datadir}/applications/%{name}.desktop %{_datadir}/applications/tape.desktop +%{_datadir}/applications/puzzle.desktop %dir %{_datadir}/icons/ %dir %{_datadir}/icons/hicolor/ @@ -242,7 +249,7 @@ fi %{_datadir}/%{name}/labels/*.xml %clean -rm -f dist/debian/%{name}.1.gz dist/debian/tape.1.gz dist/debian/%{name}.xml dist/debian/%{name} +rm -f dist/debian/%{name}.1.gz dist/debian/tape.1.gz dist/debian/puzzle.1.gz dist/debian/%{name}.xml dist/debian/%{name} [ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot} diff --git a/dist/win/inno/valentina.iss b/dist/win/inno/valentina.iss index 518b888b3..3340818cc 100644 --- a/dist/win/inno/valentina.iss +++ b/dist/win/inno/valentina.iss @@ -86,6 +86,7 @@ Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescrip Name: "fileassoc1"; Description: "{cm:CreateFileAssocVal}"; GroupDescription: "{cm:FileAssoc}" Name: "fileassoc2"; Description: "{cm:CreateFileAssocVit}"; GroupDescription: "{cm:FileAssoc}" Name: "fileassoc3"; Description: "{cm:CreateFileAssocVst}"; GroupDescription: "{cm:FileAssoc}" +Name: "fileassoc4"; Description: "{cm:CreateFileAssocVlt}"; GroupDescription: "{cm:FileAssoc}" Name: "deletesettings"; Description: "{cm:RemoveAnyExistingSettings}"; GroupDescription: "{cm:ManageSettings}"; Flags: unchecked [Types] @@ -161,6 +162,7 @@ Name: "lang_files\chinese"; Description: "Chinese (China)"; Types: full custom; ; Signing Source: ".\valentina\valentina.exe"; DestDir: "{app}"; Flags: ignoreversion sign Source: ".\valentina\tape.exe"; DestDir: "{app}"; Flags: ignoreversion sign +Source: ".\valentina\puzzle.exe"; DestDir: "{app}"; Flags: ignoreversion sign Source: ".\valentina\vpropertyexplorer.dll"; DestDir: "{app}"; Flags: ignoreversion sign Source: ".\valentina\qmuparser2.dll"; DestDir: "{app}"; Flags: ignoreversion sign ; Localizations @@ -249,6 +251,7 @@ Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChang Root: "HKCR"; Subkey: ".val"; ValueType: string; ValueName: ""; ValueData: "Valentina.Pattern"; Flags: uninsdeletevalue; Tasks: fileassoc1 Root: "HKCR"; Subkey: ".vit"; ValueType: string; ValueName: ""; ValueData: "Valentina.IndividualMeasurements"; Flags: uninsdeletevalue; Tasks: fileassoc2 Root: "HKCR"; Subkey: ".vst"; ValueType: string; ValueName: ""; ValueData: "Valentina.StandardMeasurements"; Flags: uninsdeletevalue; Tasks: fileassoc3 +Root: "HKCR"; Subkey: ".vlt"; ValueType: string; ValueName: ""; ValueData: "Valentina.Layout"; Flags: uninsdeletevalue; Tasks: fileassoc3 Root: "HKCR"; Subkey: "Valentina.Pattern"; ValueType: string; ValueData: "Valentina pattern file"; Flags: uninsdeletekey; Tasks: fileassoc1 Root: "HKCR"; Subkey: "Valentina.Pattern\DefaultIcon"; ValueType: string; ValueData: "{app}\pattern.ico,0"; Tasks: fileassoc1 @@ -262,6 +265,10 @@ Root: "HKCR"; Subkey: "Valentina.StandardMeasurements"; ValueType: string; Value Root: "HKCR"; Subkey: "Valentina.StandardMeasurements\DefaultIcon"; ValueType: string; ValueData: "{app}\s-measurements.ico,0"; Tasks: fileassoc3 Root: "HKCR"; Subkey: "Valentina.StandardMeasurements\shell\open\command"; ValueType: string; ValueData: """{app}\tape.exe"" ""%1"""; Tasks: fileassoc3 +Root: "HKCR"; Subkey: "Valentina.Layout"; ValueType: string; ValueData: "Valentina layout file"; Flags: uninsdeletekey; Tasks: fileassoc1 +Root: "HKCR"; Subkey: "Valentina.Layout\DefaultIcon"; ValueType: string; ValueData: "{app}\layout.ico,0"; Tasks: fileassoc1 +Root: "HKCR"; Subkey: "Valentina.Layout\shell\open\command"; ValueType: string; ValueData: """{app}\puzzle.exe"" ""%1"""; Tasks: fileassoc1 + [CustomMessages] FileAssoc = Create file associations english.FileAssoc = Create file associations @@ -287,6 +294,12 @@ russian.CreateFileAssocVst = *.vst (Мультиразмерный файл ме ukrainian.CreateFileAssocVst = *.vst (Мультирозмірний файл мірок) german.CreateFileAssocVst = *.vst (Multi-Size Maßdatei) +CreateFileAssocVlt = *.vlt (Layout file) +english.CreateFileAssocVlt = *.vlt (Layout file) +russian.CreateFileAssocVlt = *.vlt (Файл раскладки) +ukrainian.CreateFileAssocVlt = *.vlt (Файл роскладки) +german.CreateFileAssocVlt = *.vlt (Layoutdatei) + WarnRemoveOld = is installed at the moment. Remove old version? english.WarnRemoveOld = is installed at the moment. Remove old version? russian.WarnRemoveOld = установлена на данный момент. Удалить старую версию? diff --git a/dist/win/layout.ico b/dist/win/layout.ico new file mode 100644 index 0000000000000000000000000000000000000000..3888c30e008594c17914456052e84e6a05dd912b GIT binary patch literal 16958 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 literal 0 HcmV?d00001 diff --git a/share/icons/128x128/apps/puzzle.png b/share/icons/128x128/apps/puzzle.png new file mode 100644 index 0000000000000000000000000000000000000000..f28c66ef444471db9441e676e24155de72c591ad GIT binary patch literal 3130 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 literal 0 HcmV?d00001 diff --git a/share/icons/128x128/mimetypes/application-x-valentina-layout.png b/share/icons/128x128/mimetypes/application-x-valentina-layout.png new file mode 100644 index 0000000000000000000000000000000000000000..e424b5bb4ad43a23a2bc963b2ff9fe123f293acd GIT binary patch literal 4553 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 literal 0 HcmV?d00001 diff --git a/share/icons/256x256/apps/puzzle.png b/share/icons/256x256/apps/puzzle.png new file mode 100644 index 0000000000000000000000000000000000000000..d8b12f68b6cc37b5cce27e1d110f6714314de591 GIT binary patch literal 5766 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 VYip9%hwT{ybrl`uN=2LS{{bdNb-e%p literal 0 HcmV?d00001 diff --git a/share/icons/256x256/mimetypes/application-x-valentina-layout.png b/share/icons/256x256/mimetypes/application-x-valentina-layout.png new file mode 100644 index 0000000000000000000000000000000000000000..c71a5c413b1d31efac3830874d802b6defb5ed14 GIT binary patch literal 9755 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 O0A+c#C*`u{!T%3On@F+% literal 0 HcmV?d00001 diff --git a/share/icons/48x48/apps/puzzle.png b/share/icons/48x48/apps/puzzle.png new file mode 100644 index 0000000000000000000000000000000000000000..fe729270acc9a55056f845c1b72eb679ab31a1dd GIT binary patch literal 5045 zcmV;m6H4rfP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O3*tcHFRzh5vIEy##_Ym&5U#-a#+FKTs;WY?tli z<+)-@B~BoQiwi1d{ons?^FREATAc|omsC@-{Dc~+Yuprj{nYbUY&d_%$7`!}A)_W_SJqrE)>rPuS92cK zTM`uVVSA6Owa*IrpybD$`KuL9d@{e0`+Po?PqEDoOg`9xg z6uLTLGGWNKAM;b=-+av8LscZUyy*(LoGKhK)N=ZlUKm97ZMS$7{P^7Fw@?0~t{Uj3 zYA$TB*?vvYqrCf;KX&%?i(Ib|5|igW0V-nch%n-@fKB3~B(d4KEP@^j25Ly|d~h8L zNQ`bGqzm3BXR<3!*JezX)7M3poIVDdFhumpXKX`EVXP1${*yz&hg$S8#28b|v6xt6 zOFo4ZQ%X50$hGWq$T6p!bICQg;!7y8q>@W1wY2K02LoeGHP=#WZOxg+LXEi^{TolZ z>%NB`d+NEDUV9t3&j=%qH1a5;jyB!&6PTE3=2>Q)ZHZYR#R@B~wDKyeuD0>D?RVI5 zr=54%b+CsA#N#as|9p49?4v{ReeA|W`n zoZ8G*M^HqEkWp=8rl`d*VOZkgmN(nITkenSW@7mxySd*iXVi564a*r!_tkDMtTr{z zjbpJZ3RS1p6MeL=(u^xjlUn=N>%ULbr|V0W*~8E2@`$zBz)tu`#=c$VBs%ekRRj~n zK)=A2y|k4_ST5Bit?nLL?UIefti6MlGnKY;-t4+WU1V%_KWEH)?KNl^X@UK3jim3V zW}^@2(Z}3tt|2;CmbPb14ICHPN>}%GHEz4|9(%3UbyVKT>vgHCZ1bhZ)qb_6o$O|w zUOa8lZhMq6X_wG;$$m33$GA7KMnBP+xAf+}_PCn25*eCtESs5WB72Mt_Y6_uTKjCx zwwQ;n8&&q!^vOJ_kjcxOy2_)2dd}%`bx?h3huNn=Xq2_=Zfyng7? z?BJum>G6X;&F}X3M&sf1kl0p1`QB`w_cd6~;8Ksq?{?LRKl1LY1I@c3_}Fda!mhAP zQstQCM_0YXYnqs_jY>DpG$?hjG;VzK^4xe#GA_AjHrM3xKK1j=KMwu4u=%?3Pcwfn zv-w@RG?UqCeTi&o^opMswvQV6pj4C>^JYsp@~`-u5Fs5wD3EuXLjNeA`mI*PZ?OTM^{ zI+aCKTws})e3{9+7Ol@?V8N<*g)a@etn0~xto_smxz;fm9wSJKi=_%rabr$MgC+Mv zdZ=U)$q*Mp6$0c%tkVYjSV~qLwW|zj3bZh(PG(%A<_u$6a2(pm2875N1^XaIc*=BR z`?wp7xCBTU?mt)9RWT7Jv&Bv@bFS4ld&l=KMVPkzO5;zHJ>a_>Y9ElDbYc$5ax89| z^)nM18QmO*x!r|9m&3fdi_KJ1)VMq53Y3%QcTC6IA|;r4cIsC#^rsL=ZsPs)F(d!6n{`?~Ef+K1MBFo3T4AL-vb8z3TdO`UtC zM-9nC>UE^(2&UA#D0GL8ibHln$?wzJHDHO{Opgt&9;X{wYI4{r?OJvx$3uJy)uA-M zMobnh0ZUNz)iQ7=#58w3C_T}Gak2pnzR7`A-+X^A2m*jt$C@q_Da8S`c|}>v;oZ|=%|1#QRm#Dw z2{uJSB2DWCE(@T6ARewt+OGOg(qcfU#>P?g;DErXqd9DrP|fs_e6`DHb>a%OYxzQ^ zT6g3GhQyQw{>T2I62tUke3;8Yo@oVb_fthZC;6{=hFHeWrR>%r$a|VubL)3QpRHNtrD_%2S-OQD$k*s{L|G*mg}L*IAp=guWwzd!>$)@|e`| z%q?}osm@Md@TieYZ6X9dW>=B97IMNU6sD~?ui-@pCs|KeT^6JoWTKLC72rN+M|cI? zKIz$_A#YW;de$@Lld}Mi-mb7x1QDoS$4L{m95EDPkxab`Su6FZ*$HP_ZkihPY?x#q z3xdEf%|rNlYN^$%V6iKCGP)94r#_)3xvPo^pA*37d>O{&{WrM>0)skN5HCtqvRu5S zN0UXJ_`BxQIs**GFAvc?IR_WUm5*^}+3w;d=I;&t+Ro-XL))0ff_wEKNvQ3F5#)OX zsRbn$!2Iy>L3pD_F$8)^&T0DA10^LMBal$w^t16hb`b3fjFCO`fP;CIrlH)CkYYe0 z;2Q>?(J1LFTt_B(u!kfB8pMf#Kt$aOn2dU^G$HG@PZ+zRaFQb@+@p8%5cDb>#)&wB zSwO*6giNE(e0bRqIfD2?;2wqGul{(*u%zPeU_CK~v3^bPh3sk6K3XC3R;>0WByfL4h0PpwNi2v2Ezb z9WyTLbx15^ZY-vx*1-T~RZ>edYkHDlS4ustE=G5@NeA^DkLqLJ`nGk0 z)FR)pXVXg(~DhWN9O(nbK0u z(?VqBbI#4}OvXW0lXXvzhXShC8lXeLh7**N`r0iHYG_5t4IJ@Y>j1H{u0S3zZESx| z<3h!ZdJsaS2-Mh@Q}Lz3zIB4LrBLTvI{$bzn%|*9$I#UVMWZ<35m2v5;Sn>!{Lo5t zZ)kHFW*nMJTml+5O#)8J6H^ZBP{>oUZP>9EfL`aaQ10Y!05k6hrh{6#d7En~cAWaSJP`Aj zC7&*5^kgFj=<1~Cs5W8RMP$%S2_!HLkNlf%pl!G`FTx!ALa_P z3MriG4&PlHX5TMS%u88x9XHZ+$|OJ#I`480$(ts((tK5J^DLxUdV2mW<1He9aS3T3 zV(QDCBj_dOCn3!XDOJc@M5Q$D6dB)(smJxLn{On2q0XPRX?|6wRy!rY6;5eWm%rjJ zQ~o|l8lisrs%uNX$kdAYo)&pQGOcFqd0Rx?8n2RGYh{Lh9BH10>dPm$ryjKAGRO7O z;yS6(NMLO$#Nn*In9HRvFnRfYlSOl6R*PIRABpuf;w|x6mWi%~uT>x7dX*NHrY)Iz zEfav}+_vU*gxr249^~NR`PJL zKjaR68q<_y54VqH-@Qe=7h0 z0fcEoLr_UWLm+T+Z)Rz1WdHzpoPCiyNW(xJ#=oZ4ic|#6AmWgrI$023IBFG&P$AR` ztvZ-TU(lo>NpW!$Tni397OM^}&bm6d3WDGR#Ldk~(M3x9Us7lhdIfCf*>P-n0$I`^3CblvLt#;!%?>Nc_lj+2c3H1(!LN$(!laJTXr!6xvvBW2IzOu}8nnOrn5lavuKt>fMlwl)At4@lA6z#`- z{DZDvB$rIC5)^VQpaKn&>j(RT-`!gIiE%F}5(h#rj`J}Lgm-~P&2heu9j9>u1fPK` zz2&deftgRzYb`B$1oUnL7uPLK-UBXofPp7NG9_0E(&X}a;QfrgDGT)90^Ms~Z_Rz2 zJ^*RzDtQAO90DT+%3k+*cUOCF|DI{~_XBHCa-@!7$Ibu%00v@9M??Vs0RI60puMM) z00009a7bBm0013_0013_0gvVJWdHyG2XskIMF-^t6b2I>0;_Lo0009#Nkl1v-Y-!s9p>{V~4Q(&ekM_s5?L^v|dt%=|17~K=oM-0y=Ka0{VTBcz z)DnRPyPk|Y3Zw>Meq*}nAwX^r=4yLWG!T=g_ z13iFiumK{1zi?+wz4fHA{PWCFD-AXiuu~cUmEjxGO%Ia=G{p*4SKk-o0qn8>w9GX% z^a?2V3(;6fa-i>)3Z>E}v5rq&z<6l^Jd8~OIwk&%Mie9n_X(MOVCszt*{Q%LuLl5h z17?YgOjp%BF>B79#G1vcM_4j0#$TNd-2crDuiUWLAw;PQDuI@vHZp+1F?wTRX}l5O zJgiUydj|XJYSy$V4%>QQ74RM*YK!;ZFt`x4fD#I|kg73$`O5BmtKzWT0u}-jflO5O z+=X5F$!@3#>0&O!VLuHV4BVlJO;yhujox}HGy(D+-*o~}T5C$Vc4QRL`!_jY^l3(X zwM3&dFl!`hQ=kPtn~`o=+H|uUhz?{a_F41a09X9h*YU>yS(XC-A=mBr=EE`i55*e5 zahI$)drp0g*$;Sr3ijRkzj_|*1*{qX_R;Ol6_?wae>suXk1vqx*9P{C8D_qzsu5Zt z7nKqHF7edY7%jk(eneQT#`O5ZR6ik4CZzuVB`TZd6<(Ppu??1l>sJO7bF%Ci1 z0Oop-W_mgAUmIDHk6}dt$2V8cYXx3OyDwx@bY*zBE-e5sS$y-DWd?Y!>P5V?06I8> zB9_SlVD)itj|xZ6R^E#QX3GL_XO5$9TCWhfYdb$?UfkB$E8J@BP#M{PRCeIe*0LWi zZ9w;DZDL3Pc%Km^$*x2Q7jvO1tq^Jp()=Ah&B))Xjj+NB>;KbtGg0h)5Emeo00000 LNkvXXu0mjfzu>Ef literal 0 HcmV?d00001 diff --git a/share/icons/48x48/mimetypes/application-x-valentina-layout.png b/share/icons/48x48/mimetypes/application-x-valentina-layout.png new file mode 100644 index 0000000000000000000000000000000000000000..d85f939c2b471dca1fa513d5d47a2b54973993e7 GIT binary patch literal 10416 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 Date: Thu, 20 May 2021 10:41:39 +0300 Subject: [PATCH 03/20] Incorrect placement for the resource. --- Valentina.pro | 3 --- 1 file changed, 3 deletions(-) diff --git a/Valentina.pro b/Valentina.pro index 78c5ed24e..81ed324c7 100644 --- a/Valentina.pro +++ b/Valentina.pro @@ -53,6 +53,3 @@ unix { TEMPLATE = subdirs SUBDIRS = src - -RESOURCES += \ - src/app/puzzle/share/resources/puzzleicon.qrc From 81ed01e2818a1011924e0910125c773f4d71d7ce Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Thu, 20 May 2021 10:42:39 +0300 Subject: [PATCH 04/20] Add Puzzle source code to the localization list. This will include strings to valentina.ts file. --- share/translations/translations.pro | 2 ++ 1 file changed, 2 insertions(+) diff --git a/share/translations/translations.pro b/share/translations/translations.pro index 2a161330b..319265c17 100644 --- a/share/translations/translations.pro +++ b/share/translations/translations.pro @@ -10,6 +10,7 @@ TEMPLATE = app DEPENDPATH += \ ../../src/app/valentina \ ../../src/app/tape \ + ../../src/app/puzzle \ ../../src/libs/qmuparser \ ../../src/libs/vpropertyexplorer \ ../../src/libs/ifc \ @@ -25,6 +26,7 @@ DEPENDPATH += \ include(../../src/app/valentina/valentina.pri) include(../../src/app/tape/tape.pri) +include(../../src/app/tape/puzzle.pri) include(../../src/libs/qmuparser/qmuparser.pri) include(../../src/libs/vpropertyexplorer/vpropertyexplorer.pri) include(../../src/libs/ifc/ifc.pri) From d7041cc835664a61ca001226e69dec3d15e8009b Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Thu, 20 May 2021 11:48:47 +0300 Subject: [PATCH 05/20] Control length of a passmark for builtin seam allowance with global setting. #124 This case was not covered. (cherry picked from commit a5191ce7636a6320567a26c86c5004d450f0bc8c) --- src/libs/vpatterndb/vpassmark.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/libs/vpatterndb/vpassmark.cpp b/src/libs/vpatterndb/vpassmark.cpp index f7135acde..84d4ab4e0 100644 --- a/src/libs/vpatterndb/vpassmark.cpp +++ b/src/libs/vpatterndb/vpassmark.cpp @@ -831,12 +831,20 @@ QVector VPassmark::BuiltInSAPassmarkBaseLine(const VPiece &piece) const } else { - const QString errorMsg = QObject::tr("Cannot calculate a notch for point '%1' in piece '%2' with built in " - "seam allowance. User must manually provide length.") - .arg(m_data.nodeName, m_data.pieceName); - VAbstractApplication::VApp()->IsPedantic() ? throw VExceptionInvalidNotch(errorMsg) : - qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg; - return QVector(); + if (m_data.globalPassmarkLength > accuracyPointOnLine) + { + length = m_data.globalPassmarkLength; + } + else + { + const QString errorMsg = QObject::tr("Cannot calculate a notch for point '%1' in piece '%2' with built " + "in seam allowance. User must manually provide length.") + .arg(m_data.nodeName, m_data.pieceName); + VAbstractApplication::VApp()->IsPedantic() + ? throw VExceptionInvalidNotch(errorMsg) + : qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg; + return {}; + } } } From e15b370ed440a01f91fd964563535889f961f049 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Thu, 20 May 2021 16:52:14 +0300 Subject: [PATCH 06/20] Setup toolbar, set icons for actions. --- src/app/puzzle/vpmainwindow.ui | 54 ++++++++++++++++++++++++++++++++-- 1 file changed, 52 insertions(+), 2 deletions(-) diff --git a/src/app/puzzle/vpmainwindow.ui b/src/app/puzzle/vpmainwindow.ui index fd9e9a7d7..7d859a45c 100644 --- a/src/app/puzzle/vpmainwindow.ui +++ b/src/app/puzzle/vpmainwindow.ui @@ -81,12 +81,24 @@ + + true + + + Menu + + + Qt::ToolButtonTextUnderIcon + TopToolBarArea false + + + @@ -1531,7 +1543,7 @@ - toolBar + zoom Qt::ToolButtonTextUnderIcon @@ -1548,6 +1560,9 @@ + + + &Open @@ -1556,6 +1571,12 @@ + + true + + + + &Save @@ -1564,6 +1585,12 @@ + + true + + + + Save &As @@ -1572,11 +1599,17 @@ + + true + &Close Layout + + true + &Import Raw Layout Data @@ -1595,8 +1628,14 @@ Ctrl+Q + + QAction::QuitRole + + + + &New @@ -1608,11 +1647,20 @@ About &Qt + + QAction::AboutQtRole + + + + About &Puzzle + + QAction::AboutRole + @@ -1624,6 +1672,9 @@ Properties + + QAction::PreferencesRole + @@ -1715,7 +1766,6 @@ - From a0dba0ea25f5a0316b47576c8e14e6fd7999f608 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Thu, 20 May 2021 17:10:43 +0300 Subject: [PATCH 07/20] Review class VPApplication. --- src/app/puzzle/vpapplication.cpp | 50 +++++++++++++++++--------------- src/app/puzzle/vpapplication.h | 14 ++++----- src/app/puzzle/vpmainwindow.cpp | 15 +++++----- src/app/tape/mapplication.h | 1 - 4 files changed, 40 insertions(+), 40 deletions(-) diff --git a/src/app/puzzle/vpapplication.cpp b/src/app/puzzle/vpapplication.cpp index ef5d0abcd..0c9e16407 100644 --- a/src/app/puzzle/vpapplication.cpp +++ b/src/app/puzzle/vpapplication.cpp @@ -61,7 +61,7 @@ inline void noisyFailureMsgHandler(QtMsgType type, const QMessageLogContext &con // writing a multithreaded application and the error happens on // a non-GUI thread, you'll have to queue the message to the GUI QCoreApplication *instance = QCoreApplication::instance(); - const bool isGuiThread = instance && (QThread::currentThread() == instance->thread()); + const bool isGuiThread = (instance != nullptr) && (QThread::currentThread() == instance->thread()); if (not isGuiThread) { @@ -199,7 +199,7 @@ inline void noisyFailureMsgHandler(QtMsgType type, const QMessageLogContext &con if (type == QtWarningMsg || type == QtCriticalMsg || type == QtFatalMsg) { - if (qApp->IsAppInGUIMode()) + if (VPApplication::VApp()->IsAppInGUIMode()) { if (topWinAllowsPop) { @@ -234,9 +234,7 @@ inline void noisyFailureMsgHandler(QtMsgType type, const QMessageLogContext &con //--------------------------------------------------------------------------------------------------------------------- VPApplication::VPApplication(int &argc, char **argv) - :VAbstractApplication(argc, argv), - mainWindows(), - localServer(nullptr) + :VAbstractApplication(argc, argv) { setApplicationDisplayName(VER_PRODUCTNAME_STR); setApplicationName(VER_INTERNALNAME_STR); @@ -264,7 +262,7 @@ VPApplication::~VPApplication() * @return value that is returned from the receiver's event handler. */ // reimplemented from QApplication so we can throw exceptions in slots -bool VPApplication::notify(QObject *receiver, QEvent *event) +auto VPApplication::notify(QObject *receiver, QEvent *event) -> bool { try { @@ -325,13 +323,13 @@ bool VPApplication::notify(QObject *receiver, QEvent *event) /** * @brief IsAppInGUIMode little hack that allow to have access to application state from VAbstractApplication class. */ -bool VPApplication::IsAppInGUIMode() const +auto VPApplication::IsAppInGUIMode() const -> bool { return CommandLine()->IsGuiEnabled(); } //--------------------------------------------------------------------------------------------------------------------- -VPMainWindow *VPApplication::MainWindow() +auto VPApplication::MainWindow()-> VPMainWindow * { Clean(); if (mainWindows.isEmpty()) @@ -344,7 +342,7 @@ VPMainWindow *VPApplication::MainWindow() } //--------------------------------------------------------------------------------------------------------------------- -QList VPApplication::MainWindows() +auto VPApplication::MainWindows() -> QList { Clean(); QList list; @@ -356,7 +354,7 @@ QList VPApplication::MainWindows() } //--------------------------------------------------------------------------------------------------------------------- -VPMainWindow *VPApplication::NewMainWindow(const VPCommandLinePtr &cmd) +auto VPApplication::NewMainWindow(const VPCommandLinePtr &cmd) -> VPMainWindow * { VPMainWindow *puzzle = new VPMainWindow(cmd); mainWindows.prepend(puzzle); @@ -399,7 +397,7 @@ void VPApplication::InitOptions() } //--------------------------------------------------------------------------------------------------------------------- -const VTranslateVars *VPApplication::TrVars() +auto VPApplication::TrVars() -> const VTranslateVars * { return nullptr; } @@ -412,7 +410,7 @@ void VPApplication::OpenSettings() } //--------------------------------------------------------------------------------------------------------------------- -VPSettings *VPApplication::PuzzleSettings() +auto VPApplication::PuzzleSettings() -> VPSettings * { SCASSERT(settings != nullptr) return qobject_cast(settings); @@ -421,7 +419,7 @@ VPSettings *VPApplication::PuzzleSettings() //--------------------------------------------------------------------------------------------------------------------- void VPApplication::ActivateDarkMode() { - VPSettings *settings = qApp->PuzzleSettings(); + VPSettings *settings = VPApplication::VApp()->PuzzleSettings(); if (settings->GetDarkMode()) { QFile f(":qdarkstyle/style.qss"); @@ -498,14 +496,14 @@ void VPApplication::ProcessArguments(const VPCommandLinePtr &cmd) cmd.get()->parser.showHelp(V_EX_USAGE); } - if (args.count() > 1 && rawLayouts.size() > 0) + if (args.count() > 1 && not rawLayouts.isEmpty()) { qCCritical(pApp, "%s\n", - qPrintable(tr("Import raw layout data does not support penning several layout files."))); + qPrintable(tr("Import raw layout data does not support openning several layout files."))); cmd.get()->parser.showHelp(V_EX_USAGE); } - for (auto &arg : args) + for (const auto &arg : args) { NewMainWindow(cmd); if (not MainWindow()->LoadFile(arg)) @@ -518,7 +516,7 @@ void VPApplication::ProcessArguments(const VPCommandLinePtr &cmd) continue; } - if (rawLayouts.size() > 0) + if (not rawLayouts.isEmpty()) { MainWindow()->ImportRawLayouts(rawLayouts); } @@ -533,7 +531,7 @@ void VPApplication::ProcessArguments(const VPCommandLinePtr &cmd) } NewMainWindow(cmd); - if (rawLayouts.size() > 0) + if (not rawLayouts.isEmpty()) { // MainWindow()->New(); // prepare layout settings MainWindow()->ImportRawLayouts(rawLayouts); @@ -553,7 +551,7 @@ void VPApplication::ProcessCMD() } //--------------------------------------------------------------------------------------------------------------------- -bool VPApplication::event(QEvent *e) +auto VPApplication::event(QEvent *e) -> bool { switch(e->type()) { @@ -561,12 +559,12 @@ bool VPApplication::event(QEvent *e) // Mac specific). case QEvent::FileOpen: { - QFileOpenEvent *fileOpenEvent = static_cast(e); + auto *fileOpenEvent = static_cast(e); const QString macFileOpen = fileOpenEvent->file(); if(not macFileOpen.isEmpty()) { VPMainWindow *mw = MainWindow(); - if (mw) + if (mw != nullptr) { mw->LoadFile(macFileOpen); // open file in existing window } @@ -639,8 +637,14 @@ void VPApplication::Clean() } } -//-------------------------------------------------------------------------------------------- -VPCommandLinePtr VPApplication::CommandLine() const +//--------------------------------------------------------------------------------------------------------------------- +auto VPApplication::CommandLine() -> VPCommandLinePtr { return VPCommandLine::instance; } + +//--------------------------------------------------------------------------------------------------------------------- +VPApplication *VPApplication::VApp() +{ + return qobject_cast(QCoreApplication::instance()); +} diff --git a/src/app/puzzle/vpapplication.h b/src/app/puzzle/vpapplication.h index bc0ca4b6e..5f3f3cc3a 100644 --- a/src/app/puzzle/vpapplication.h +++ b/src/app/puzzle/vpapplication.h @@ -35,15 +35,9 @@ #include -class VPApplication;// use in define class VPMainWindow; class QLocalServer; -#if defined(qApp) -#undef qApp -#endif -#define qApp (static_cast(VAbstractApplication::instance())) - enum class SocketConnection : bool {Client = false, Server = true}; class VPApplication : public VAbstractApplication @@ -70,7 +64,9 @@ public: void ParseCommandLine(const SocketConnection &connection, const QStringList &arguments); void ProcessArguments(const VPCommandLinePtr &cmd); - VPCommandLinePtr CommandLine() const; + + static VPCommandLinePtr CommandLine(); + static VPApplication *VApp(); public slots: void ProcessCMD(); @@ -86,8 +82,8 @@ private slots: private: Q_DISABLE_COPY(VPApplication) - QList > mainWindows; - QLocalServer *localServer; + QList > mainWindows{}; + QLocalServer *localServer{nullptr}; void Clean(); }; diff --git a/src/app/puzzle/vpmainwindow.cpp b/src/app/puzzle/vpmainwindow.cpp index 6fb68568d..66757cd8a 100644 --- a/src/app/puzzle/vpmainwindow.cpp +++ b/src/app/puzzle/vpmainwindow.cpp @@ -89,7 +89,7 @@ VPMainWindow::VPMainWindow(const VPCommandLinePtr &cmd, QWidget *parent) : ui->setupUi(this); // init the tile factory - m_tileFactory = new VPTileFactory(m_layout, qApp->Settings()); + m_tileFactory = new VPTileFactory(m_layout, VPApplication::VApp()->Settings()); m_tileFactory->refreshTileInfos(); InitMenuBar(); @@ -665,7 +665,7 @@ void VPMainWindow::SetCheckBoxValue(QCheckBox *checkbox, bool value) void VPMainWindow::ReadSettings() { qCDebug(pWindow, "Reading settings."); - const VPSettings *settings = qApp->PuzzleSettings(); + const VPSettings *settings = VPApplication::VApp()->PuzzleSettings(); if (settings->status() == QSettings::NoError) { @@ -691,7 +691,7 @@ void VPMainWindow::ReadSettings() //--------------------------------------------------------------------------------------------------------------------- void VPMainWindow::WriteSettings() { - VPSettings *settings = qApp->PuzzleSettings(); + VPSettings *settings = VPApplication::VApp()->PuzzleSettings(); settings->SetGeometry(saveGeometry()); settings->SetWindowState(saveState()); settings->SetToolbarsState(saveState(APP_VERSION)); @@ -876,7 +876,7 @@ void VPMainWindow::on_actionOpen_triggered() const QString filter(tr("Layout files") + QLatin1String(" (*.vlt)")); //Get list last open files - QStringList recentFiles = qApp->PuzzleSettings()->GetRecentFileList(); + QStringList recentFiles = VPApplication::VApp()->PuzzleSettings()->GetRecentFileList(); QString dir; if (recentFiles.isEmpty()) { @@ -914,7 +914,7 @@ void VPMainWindow::on_actionOpen_triggered() { recentFiles.removeLast(); } - qApp->PuzzleSettings()->SetRecentFileList(recentFiles); + VPApplication::VApp()->PuzzleSettings()->SetRecentFileList(recentFiles); // updates the properties with the loaded data SetPropertiesData(); @@ -942,7 +942,7 @@ void VPMainWindow::on_actionSaveAs_triggered() // extension .vlt, check for empty file names etc. //Get list last open files - QStringList recentFiles = qApp->PuzzleSettings()->GetRecentFileList(); + QStringList recentFiles = VPApplication::VApp()->PuzzleSettings()->GetRecentFileList(); QString dir; if (recentFiles.isEmpty()) { @@ -1374,7 +1374,8 @@ void VPMainWindow::on_pushButtonSheetExport_clicked() QPainter painter; painter.begin(&generator); painter.setRenderHint(QPainter::Antialiasing, true); - painter.setPen(QPen(Qt::black, qApp->Settings()->WidthHairLine(), Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); + painter.setPen(QPen(Qt::black, VPApplication::VApp()->Settings()->WidthHairLine(), Qt::SolidLine, Qt::RoundCap, + Qt::RoundJoin)); painter.setBrush ( QBrush ( Qt::NoBrush ) ); m_graphicsView->GetScene()->render(&painter, r, r, Qt::IgnoreAspectRatio); painter.end(); diff --git a/src/app/tape/mapplication.h b/src/app/tape/mapplication.h index ff73c78b1..2e7010618 100644 --- a/src/app/tape/mapplication.h +++ b/src/app/tape/mapplication.h @@ -35,7 +35,6 @@ #include "../vmisc/vabstractapplication.h" #include "dialogs/dialogmdatabase.h" -class MApplication;// use in define class TMainWindow; class QLocalServer; From dc50d24439a62a7f7a71cda1fad6116d35917452 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Thu, 20 May 2021 18:33:53 +0300 Subject: [PATCH 08/20] Review class VPMainWindow. Setup initial state for a window. User must click New or Open before starting to use the window. --- src/app/puzzle/vpapplication.cpp | 8 +- src/app/puzzle/vpapplication.h | 1 + src/app/puzzle/vpmainwindow.cpp | 232 +++++++++++++++-- src/app/puzzle/vpmainwindow.h | 289 ++++++++++++---------- src/app/puzzle/vpmainwindow.ui | 41 ++- src/app/puzzle/vpsheet.h | 2 - src/app/tape/tmainwindow.cpp | 12 +- src/app/tape/tmainwindow.h | 3 - src/libs/vwidgets/vabstractmainwindow.cpp | 17 ++ src/libs/vwidgets/vabstractmainwindow.h | 4 +- 10 files changed, 424 insertions(+), 185 deletions(-) diff --git a/src/app/puzzle/vpapplication.cpp b/src/app/puzzle/vpapplication.cpp index 0c9e16407..0d3d0e39f 100644 --- a/src/app/puzzle/vpapplication.cpp +++ b/src/app/puzzle/vpapplication.cpp @@ -353,12 +353,18 @@ auto VPApplication::MainWindows() -> QList return list; } +//--------------------------------------------------------------------------------------------------------------------- +VPMainWindow *VPApplication::NewMainWindow() +{ + return NewMainWindow(VPCommandLinePtr()); +} + //--------------------------------------------------------------------------------------------------------------------- auto VPApplication::NewMainWindow(const VPCommandLinePtr &cmd) -> VPMainWindow * { VPMainWindow *puzzle = new VPMainWindow(cmd); mainWindows.prepend(puzzle); - if (cmd->IsGuiEnabled()) + if (not cmd->IsTestModeEnabled()) { puzzle->show(); } diff --git a/src/app/puzzle/vpapplication.h b/src/app/puzzle/vpapplication.h index 5f3f3cc3a..e66e98003 100644 --- a/src/app/puzzle/vpapplication.h +++ b/src/app/puzzle/vpapplication.h @@ -52,6 +52,7 @@ public: virtual bool IsAppInGUIMode() const override; VPMainWindow *MainWindow(); QList MainWindows(); + VPMainWindow *NewMainWindow(); VPMainWindow *NewMainWindow(const VPCommandLinePtr &cmd); void InitOptions(); diff --git a/src/app/puzzle/vpmainwindow.cpp b/src/app/puzzle/vpmainwindow.cpp index 66757cd8a..d944f3720 100644 --- a/src/app/puzzle/vpmainwindow.cpp +++ b/src/app/puzzle/vpmainwindow.cpp @@ -57,31 +57,31 @@ QT_WARNING_POP //--------------------------------------------------------------------------------------------------------------------- VPMainWindow::VPMainWindow(const VPCommandLinePtr &cmd, QWidget *parent) : - QMainWindow(parent), + VAbstractMainWindow(parent), ui(new Ui::VPMainWindow), m_cmd(cmd) { m_layout = new VPLayout(); // create a standard sheet - VPSheet *sheet = new VPSheet(m_layout); + auto *sheet = new VPSheet(m_layout); sheet->SetName(QObject::tr("Sheet 1")); m_layout->AddSheet(sheet); m_layout->SetFocusedSheet(); - // ----- for test purposes, to be removed------------------ - sheet->SetSheetMarginsConverted(1, 1, 1, 1); - sheet->SetSheetSizeConverted(84.1, 118.9); - sheet->SetPiecesGapConverted(1); +// // ----- for test purposes, to be removed------------------ +// sheet->SetSheetMarginsConverted(1, 1, 1, 1); +// sheet->SetSheetSizeConverted(84.1, 118.9); +// sheet->SetPiecesGapConverted(1); - m_layout->SetUnit(Unit::Cm); - m_layout->SetWarningSuperpositionOfPieces(true); - m_layout->SetTitle(QString("My Test Layout")); - m_layout->SetDescription(QString("Description of my Layout")); +// m_layout->SetUnit(Unit::Cm); +// m_layout->SetWarningSuperpositionOfPieces(true); +// m_layout->SetTitle(QString("My Test Layout")); +// m_layout->SetDescription(QString("Description of my Layout")); - m_layout->SetTilesSizeConverted(21,29.7); - m_layout->SetTilesOrientation(PageOrientation::Portrait); - m_layout->SetTilesMarginsConverted(1,1,1,1); +// m_layout->SetTilesSizeConverted(21,29.7); +// m_layout->SetTilesOrientation(PageOrientation::Portrait); +// m_layout->SetTilesMarginsConverted(1,1,1,1); // m_layout->SetShowTiles(true); // -------------------------------------------------------- @@ -92,7 +92,7 @@ VPMainWindow::VPMainWindow(const VPCommandLinePtr &cmd, QWidget *parent) : m_tileFactory = new VPTileFactory(m_layout, VPApplication::VApp()->Settings()); m_tileFactory->refreshTileInfos(); - InitMenuBar(); + SetupMenu(); InitProperties(); InitCarrousel(); @@ -102,9 +102,16 @@ VPMainWindow::VPMainWindow(const VPCommandLinePtr &cmd, QWidget *parent) : SetPropertiesData(); + UpdateWindowTitle(); ReadSettings(); - +#if defined(Q_OS_MAC) + // Mac OS Dock Menu + QMenu *menu = new QMenu(this); + connect(menu, &QMenu::aboutToShow, this, &VPMainWindow::AboutToShowDockMenu); + AboutToShowDockMenu(); + menu->setAsDockMenu(); +#endif //defined(Q_OS_MAC) } //--------------------------------------------------------------------------------------------------------------------- @@ -232,13 +239,17 @@ VPPiece* VPMainWindow::CreatePiece(const VLayoutPiece &rawPiece) } //--------------------------------------------------------------------------------------------------------------------- -void VPMainWindow::InitMenuBar() +void VPMainWindow::SetupMenu() { // most of the actions are connected through name convention (auto-connection) - // -------------------- connects the actions for the file menu + ui->actionNew->setShortcuts(QKeySequence::New); + ui->actionSave->setShortcuts(QKeySequence::Save); + ui->actionSaveAs->setShortcuts(QKeySequence::SaveAs); + connect(ui->actionExit, &QAction::triggered, this, &VPMainWindow::close); + ui->actionExit->setShortcuts(QKeySequence::Quit); // -------------------- connects the actions for the edit menu // TODO : initialise the undo / redo @@ -410,6 +421,7 @@ void VPMainWindow::InitPropertyTabLayout() void VPMainWindow::InitCarrousel() { m_carrousel = new VPCarrousel(m_layout, ui->dockWidgetCarrousel); + m_carrousel->setDisabled(true); ui->dockWidgetCarrousel->setWidget(m_carrousel); connect(ui->dockWidgetCarrousel, QOverload::of(&QDockWidget::dockLocationChanged), this, @@ -578,6 +590,7 @@ void VPMainWindow::SetPropertyTabLayoutData() void VPMainWindow::InitMainGraphics() { m_graphicsView = new VPMainGraphicsView(m_layout, m_tileFactory, this); + m_graphicsView->setDisabled(true); ui->centralWidget->layout()->addWidget(m_graphicsView); m_graphicsView->RefreshLayout(); @@ -594,10 +607,7 @@ void VPMainWindow::InitZoomToolBar() delete m_doubleSpinBoxScale; } - if (m_mouseCoordinate != nullptr) - { - delete m_mouseCoordinate; - } + delete m_mouseCoordinate; // connect the zoom buttons and shortcuts to the slots QList zoomInShortcuts; @@ -625,12 +635,13 @@ void VPMainWindow::InitZoomToolBar() // defined the scale ui->toolBarZoom->addSeparator(); - QLabel* zoomScale = new QLabel(tr("Scale:"), this); + auto* zoomScale = new QLabel(tr("Scale:"), this); ui->toolBarZoom->addWidget(zoomScale); m_doubleSpinBoxScale = new QDoubleSpinBox(this); m_doubleSpinBoxScale->setDecimals(1); m_doubleSpinBoxScale->setSuffix("%"); + m_doubleSpinBoxScale->setDisabled(true); on_ScaleChanged(m_graphicsView->transform().m11()); connect(m_doubleSpinBoxScale.data(), QOverload::of(&QDoubleSpinBox::valueChanged), this, [this](double d){m_graphicsView->Zoom(d/100.0);}); @@ -661,6 +672,62 @@ void VPMainWindow::SetCheckBoxValue(QCheckBox *checkbox, bool value) checkbox->blockSignals(false); } +//--------------------------------------------------------------------------------------------------------------------- +void VPMainWindow::UpdateWindowTitle() +{ + QString showName; + bool isFileWritable = true; + if (not curFile.isEmpty()) + { +#ifdef Q_OS_WIN32 + qt_ntfs_permission_lookup++; // turn checking on +#endif /*Q_OS_WIN32*/ + isFileWritable = QFileInfo(curFile).isWritable(); +#ifdef Q_OS_WIN32 + qt_ntfs_permission_lookup--; // turn it off again +#endif /*Q_OS_WIN32*/ + showName = StrippedName(curFile); + } + else + { + showName = tr("untitled %1.vlt").arg(VPApplication::VApp()->MainWindows().size()+1); + } + + showName += QLatin1String("[*]"); + + if (lIsReadOnly || not isFileWritable) + { + showName += QStringLiteral(" (") + tr("read only") + QChar(')'); + } + + setWindowTitle(showName); + setWindowFilePath(curFile); + +#if defined(Q_OS_MAC) + static QIcon fileIcon = QIcon(QCoreApplication::applicationDirPath() + + QLatin1String("/../Resources/layout.icns")); + QIcon icon; + if (not curFile.isEmpty()) + { + if (not isWindowModified()) + { + icon = fileIcon; + } + else + { + static QIcon darkIcon; + + if (darkIcon.isNull()) + { + darkIcon = QIcon(darkenPixmap(fileIcon.pixmap(16, 16))); + } + icon = darkIcon; + } + } + setWindowIcon(icon); +#endif //defined(Q_OS_MAC) +} + //--------------------------------------------------------------------------------------------------------------------- void VPMainWindow::ReadSettings() { @@ -673,6 +740,9 @@ void VPMainWindow::ReadSettings() restoreState(settings->GetWindowState()); restoreState(settings->GetToolbarsState(), APP_VERSION); + // Text under tool buton icon + ToolBarStyles(); + ui->dockWidgetProperties->setVisible(settings->IsDockWidgetPropertiesActive()); ui->dockWidgetPropertiesContents->setVisible(settings->IsDockWidgetPropertiesContentsActive()); @@ -828,6 +898,42 @@ void VPMainWindow::generateTiledPdf(QString fileName) } } +//--------------------------------------------------------------------------------------------------------------------- +void VPMainWindow::CreateWindowMenu(QMenu *menu) +{ + SCASSERT(menu != nullptr) + + QAction *action = menu->addAction(tr("&New Window")); + connect(action, &QAction::triggered, this, []() + { + VPApplication::VApp()->NewMainWindow()->activateWindow(); + }); + action->setMenuRole(QAction::NoRole); + menu->addSeparator(); + + const QList windows = VPApplication::VApp()->MainWindows(); + for (int i = 0; i < windows.count(); ++i) + { + VPMainWindow *window = windows.at(i); + + QString title = QStringLiteral("%1. %2").arg(i+1).arg(window->windowTitle()); + const int index = title.lastIndexOf(QLatin1String("[*]")); + if (index != -1) + { + window->isWindowModified() ? title.replace(index, 3, QChar('*')) : title.replace(index, 3, QString()); + } + + QAction *action = menu->addAction(title, this, &VPMainWindow::ShowWindow); + action->setData(i); + action->setCheckable(true); + action->setMenuRole(QAction::NoRole); + if (window->isActiveWindow()) + { + action->setChecked(true); + } + } +} + //--------------------------------------------------------------------------------------------------------------------- void VPMainWindow::on_actionNew_triggered() @@ -868,6 +974,27 @@ void VPMainWindow::closeEvent(QCloseEvent *event) } } +//--------------------------------------------------------------------------------------------------------------------- +void VPMainWindow::changeEvent(QEvent *event) +{ + if (event->type() == QEvent::LanguageChange) + { + WindowsLocale(); + + // retranslate designer form (single inheritance approach) + ui->retranslateUi(this); + } + + // remember to call base class implementation + QMainWindow::changeEvent(event); +} + +//--------------------------------------------------------------------------------------------------------------------- +QStringList VPMainWindow::RecentFileList() const +{ + return VPApplication::VApp()->PuzzleSettings()->GetRecentFileList(); +} + //--------------------------------------------------------------------------------------------------------------------- void VPMainWindow::on_actionOpen_triggered() { @@ -1538,3 +1665,64 @@ void VPMainWindow::on_MouseMoved(const QPointF &scenePos) .arg(UnitsToStr(m_layout->GetUnit(), true))); } } + +//--------------------------------------------------------------------------------------------------------------------- +void VPMainWindow::ShowWindow() const +{ + if (auto *action = qobject_cast(sender())) + { + const QVariant v = action->data(); + if (v.canConvert()) + { + const int offset = qvariant_cast(v); + const QList windows = VPApplication::VApp()->MainWindows(); + windows.at(offset)->raise(); + windows.at(offset)->activateWindow(); + } + } +} + +//--------------------------------------------------------------------------------------------------------------------- +void VPMainWindow::Preferences() +{ + // Calling constructor of the dialog take some time. Because of this user have time to call the dialog twice. +// static QPointer guard;// Prevent any second run +// if (guard.isNull()) +// { +// QGuiApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); +// auto *preferences = new DialogPuzzlePreferences(this); +// // QScopedPointer needs to be sure any exception will never block guard +// QScopedPointer dlg(preferences); +// guard = preferences; +// // Must be first +// connect(dlg.data(), &DialogPuzzlePreferences::UpdateProperties, this, &VPMainWindow::WindowsLocale); +// connect(dlg.data(), &DialogPuzzlePreferences::UpdateProperties, this, &VPMainWindow::ToolBarStyles); +// QGuiApplication::restoreOverrideCursor(); +// dlg->exec(); + // } +} + +//--------------------------------------------------------------------------------------------------------------------- +void VPMainWindow::ToolBarStyles() +{ + ToolBarStyle(ui->mainToolBar); + ToolBarStyle(ui->toolBarZoom); +} + +//--------------------------------------------------------------------------------------------------------------------- +#if defined(Q_OS_MAC) +void VPMainWindow::AboutToShowDockMenu() +{ + if (QMenu *menu = qobject_cast(sender())) + { + menu->clear(); + CreateWindowMenu(menu); + + menu->addSeparator(); + + QAction *actionPreferences = menu->addAction(tr("Preferences")); + actionPreferences->setMenuRole(QAction::NoRole); + connect(actionPreferences, &QAction::triggered, this, &VPMainWindow::Preferences); + } +} +#endif //defined(Q_OS_MAC) diff --git a/src/app/puzzle/vpmainwindow.h b/src/app/puzzle/vpmainwindow.h index 1862bc126..a26bda72b 100644 --- a/src/app/puzzle/vpmainwindow.h +++ b/src/app/puzzle/vpmainwindow.h @@ -42,13 +42,14 @@ #include "vptilefactory.h" #include "vpcommandline.h" #include "../vlayout/vlayoutdef.h" +#include "../vwidgets/vabstractmainwindow.h" namespace Ui { class VPMainWindow; } -class VPMainWindow : public QMainWindow +class VPMainWindow : public VAbstractMainWindow { Q_OBJECT @@ -90,142 +91,9 @@ public slots: void on_actionNew_triggered(); protected: - enum { MaxRecentFiles = 5 }; - virtual void closeEvent(QCloseEvent *event) override; - -private: - Q_DISABLE_COPY(VPMainWindow) - Ui::VPMainWindow *ui; - - VPCarrousel *m_carrousel{nullptr}; - VPMainGraphicsView *m_graphicsView{nullptr}; - - VPCommandLinePtr m_cmd; - - VPLayout *m_layout{nullptr}; - QListm_selectedPieces{QList()}; - - VPTileFactory *m_tileFactory{nullptr}; - - /** - * @brief spin box with the scale factor of the graphic view - */ - QPointer m_doubleSpinBoxScale{nullptr}; - - /** - * @brief mouseCoordinate pointer to label who show mouse coordinate. - */ - QLabel* m_mouseCoordinate{nullptr}; - - /** - * @brief CreatePiece creates a piece from the given VLayoutPiece data - * @param rawPiece the raw piece data - */ - VPPiece* CreatePiece(const VLayoutPiece &rawPiece); - - /** - * @brief InitMenuBar Inits the menu bar (File, Edit, Help ...) - */ - void InitMenuBar(); - - /** - * @brief InitProperties Init the properties - */ - void InitProperties(); - - /** - * @brief InitPropertyTabCurrentPiece Inits the current piece tab in the properties - */ - void InitPropertyTabCurrentPiece(); - - /** - * @brief InitPropertyTabCurrentSheet Inits the current sheet tab in the properties; - */ - void InitPropertyTabCurrentSheet(); - - /** - * @brief InitPropertyTabLayout Inits the layout tab in the properties - */ - void InitPropertyTabLayout(); - - /** - * @brief InitPropertyTabTiles Inits the tiles tab in the properties - */ - void InitPropertyTabTiles(); - - /** - * @brief InitCarrousel Inits the carrousel - */ - void InitCarrousel(); - - /** - * @brief InitMainGraphics Initialises the puzzle main graphics - */ - void InitMainGraphics(); - - /** - * @brief InitToolBar Initialises the tool bar - */ - void InitZoomToolBar(); - - /** - * @brief SetPropertiesData Sets the values of UI elements - * in all the property tabs to the values saved in m_layout - */ - void SetPropertiesData(); - - /** - * @brief SetPropertyTabCurrentPieceData Sets the values of UI elements - * in the Current Piece Tab to the values saved in m_layout - */ - void SetPropertyTabCurrentPieceData(); - - /** - * @brief SetPropertyTabSheetData Sets the values of UI elements - * in the Sheet Tab to the values saved in focused sheet - */ - void SetPropertyTabSheetData(); - - /** - * @brief SetPropertyTabTilesData Sets the values of UI elements - * in the Tiles Tab to the values saved in m_layout - */ - void SetPropertyTabTilesData(); - - /** - * @brief SetPropertyTabLayoutData Sets the values of UI elements - * in the Layout Tab to the values saved in m_layout - */ - void SetPropertyTabLayoutData(); - - /** - * @brief SetDoubleSpinBoxValue sets the given spinbox to the given value. - * the signals are blocked before changing the value and unblocked after - * @param spinBox pointer to spinbox - * @param value spinbox value - */ - void SetDoubleSpinBoxValue(QDoubleSpinBox *spinBox, qreal value); - - /** - * @brief SetCheckBoxValue sets the given checkbox to the given value. - * the signals are blocked before changing the value and unblocked after - * @param checkbox pointer to checkbox - * @param value checkbox value - */ - void SetCheckBoxValue(QCheckBox *checkbox, bool value); - - void ReadSettings(); - void WriteSettings(); - - bool MaybeSave(); - - /** - * @brief generateTiledPdf Generates the tiled Pdf in the given filename - * @param fileName output file name - */ - void generateTiledPdf(QString fileName); - + virtual void changeEvent(QEvent* event) override; + virtual QStringList RecentFileList() const override; private slots: /** @@ -521,6 +389,155 @@ private slots: * @param scenePos position mouse. */ void on_MouseMoved(const QPointF &scenePos); + + void ShowWindow() const; + void Preferences(); + void ToolBarStyles(); + +#if defined(Q_OS_MAC) + void AboutToShowDockMenu(); +#endif //defined(Q_OS_MAC) + +private: + Q_DISABLE_COPY(VPMainWindow) + Ui::VPMainWindow *ui; + + VPCarrousel *m_carrousel{nullptr}; + VPMainGraphicsView *m_graphicsView{nullptr}; + + VPCommandLinePtr m_cmd; + + VPLayout *m_layout{nullptr}; + QListm_selectedPieces{QList()}; + + VPTileFactory *m_tileFactory{nullptr}; + + /** + * @brief spin box with the scale factor of the graphic view + */ + QPointer m_doubleSpinBoxScale{nullptr}; + + /** + * @brief mouseCoordinate pointer to label who show mouse coordinate. + */ + QLabel* m_mouseCoordinate{nullptr}; + + QString curFile{}; + + bool isInitialized{false}; + bool lIsReadOnly{false}; + + /** + * @brief CreatePiece creates a piece from the given VLayoutPiece data + * @param rawPiece the raw piece data + */ + VPPiece* CreatePiece(const VLayoutPiece &rawPiece); + + /** + * @brief InitMenuBar Inits the menu bar (File, Edit, Help ...) + */ + void SetupMenu(); + + /** + * @brief InitProperties Init the properties + */ + void InitProperties(); + + /** + * @brief InitPropertyTabCurrentPiece Inits the current piece tab in the properties + */ + void InitPropertyTabCurrentPiece(); + + /** + * @brief InitPropertyTabCurrentSheet Inits the current sheet tab in the properties; + */ + void InitPropertyTabCurrentSheet(); + + /** + * @brief InitPropertyTabLayout Inits the layout tab in the properties + */ + void InitPropertyTabLayout(); + + /** + * @brief InitPropertyTabTiles Inits the tiles tab in the properties + */ + void InitPropertyTabTiles(); + + /** + * @brief InitCarrousel Inits the carrousel + */ + void InitCarrousel(); + + /** + * @brief InitMainGraphics Initialises the puzzle main graphics + */ + void InitMainGraphics(); + + /** + * @brief InitToolBar Initialises the tool bar + */ + void InitZoomToolBar(); + + /** + * @brief SetPropertiesData Sets the values of UI elements + * in all the property tabs to the values saved in m_layout + */ + void SetPropertiesData(); + + /** + * @brief SetPropertyTabCurrentPieceData Sets the values of UI elements + * in the Current Piece Tab to the values saved in m_layout + */ + void SetPropertyTabCurrentPieceData(); + + /** + * @brief SetPropertyTabSheetData Sets the values of UI elements + * in the Sheet Tab to the values saved in focused sheet + */ + void SetPropertyTabSheetData(); + + /** + * @brief SetPropertyTabTilesData Sets the values of UI elements + * in the Tiles Tab to the values saved in m_layout + */ + void SetPropertyTabTilesData(); + + /** + * @brief SetPropertyTabLayoutData Sets the values of UI elements + * in the Layout Tab to the values saved in m_layout + */ + void SetPropertyTabLayoutData(); + + /** + * @brief SetDoubleSpinBoxValue sets the given spinbox to the given value. + * the signals are blocked before changing the value and unblocked after + * @param spinBox pointer to spinbox + * @param value spinbox value + */ + void SetDoubleSpinBoxValue(QDoubleSpinBox *spinBox, qreal value); + + /** + * @brief SetCheckBoxValue sets the given checkbox to the given value. + * the signals are blocked before changing the value and unblocked after + * @param checkbox pointer to checkbox + * @param value checkbox value + */ + void SetCheckBoxValue(QCheckBox *checkbox, bool value); + + void UpdateWindowTitle(); + + void ReadSettings(); + void WriteSettings(); + + bool MaybeSave(); + + /** + * @brief generateTiledPdf Generates the tiled Pdf in the given filename + * @param fileName output file name + */ + void generateTiledPdf(QString fileName); + + void CreateWindowMenu(QMenu *menu); }; #endif // VPMAINWINDOW_H diff --git a/src/app/puzzle/vpmainwindow.ui b/src/app/puzzle/vpmainwindow.ui index 7d859a45c..418a562cf 100644 --- a/src/app/puzzle/vpmainwindow.ui +++ b/src/app/puzzle/vpmainwindow.ui @@ -175,6 +175,9 @@ + + false + 0 @@ -1561,7 +1564,8 @@ - + + .. &Open @@ -1572,10 +1576,11 @@ - true + false - + + .. &Save @@ -1586,10 +1591,11 @@ - true + false - + + .. Save &As @@ -1600,7 +1606,7 @@ - true + false &Close Layout @@ -1608,7 +1614,7 @@ - true + false &Import Raw Layout Data @@ -1634,7 +1640,8 @@ - + + .. &New @@ -1653,7 +1660,8 @@ - + + .. About &Puzzle @@ -1669,6 +1677,9 @@ true + + false + Properties @@ -1677,6 +1688,9 @@ + + false + .. @@ -1686,6 +1700,9 @@ + + false + .. @@ -1695,6 +1712,9 @@ + + false + .. @@ -1704,6 +1724,9 @@ + + false + .. diff --git a/src/app/puzzle/vpsheet.h b/src/app/puzzle/vpsheet.h index 5558b0a94..ecbefc919 100644 --- a/src/app/puzzle/vpsheet.h +++ b/src/app/puzzle/vpsheet.h @@ -70,8 +70,6 @@ class VPSheet : public QObject { Q_OBJECT public: - - explicit VPSheet(VPLayout* layout); ~VPSheet(); diff --git a/src/app/tape/tmainwindow.cpp b/src/app/tape/tmainwindow.cpp index e93e86962..fc9b63a8f 100644 --- a/src/app/tape/tmainwindow.cpp +++ b/src/app/tape/tmainwindow.cpp @@ -388,13 +388,6 @@ bool TMainWindow::LoadFile(const QString &path) return true; } -//--------------------------------------------------------------------------------------------------------------------- -void TMainWindow::ShowToolTip(const QString &toolTip) -{ - Q_UNUSED(toolTip) - // do nothing -} - //--------------------------------------------------------------------------------------------------------------------- void TMainWindow::FileNew() { @@ -597,7 +590,7 @@ void TMainWindow::changeEvent(QEvent *event) { if (event->type() == QEvent::LanguageChange) { - VAbstractApplication::VApp()->Settings()->GetOsSeparator() ? setLocale(QLocale()) : setLocale(QLocale::c()); + WindowsLocale(); // retranslate designer form (single inheritance approach) ui->retranslateUi(this); @@ -2410,7 +2403,6 @@ void TMainWindow::SetupMenu() m_separatorAct->setVisible(false); ui->menuFile->insertAction(ui->actionPreferences, m_separatorAct ); - connect(ui->actionQuit, &QAction::triggered, this, &TMainWindow::close); ui->actionQuit->setShortcuts(QKeySequence::Quit); @@ -3653,7 +3645,7 @@ void TMainWindow::CreateWindowMenu(QMenu *menu) window->isWindowModified() ? title.replace(index, 3, QChar('*')) : title.replace(index, 3, QString()); } - QAction *action = menu->addAction(title, this, SLOT(ShowWindow())); + QAction *action = menu->addAction(title, this, &TMainWindow::ShowWindow); action->setData(i); action->setCheckable(true); action->setMenuRole(QAction::NoRole); diff --git a/src/app/tape/tmainwindow.h b/src/app/tape/tmainwindow.h index d8040d6f3..6fa275b0d 100644 --- a/src/app/tape/tmainwindow.h +++ b/src/app/tape/tmainwindow.h @@ -65,9 +65,6 @@ public: bool LoadFile(const QString &path); -public slots: - virtual void ShowToolTip(const QString &toolTip) override; - protected: virtual void closeEvent(QCloseEvent *event) override; virtual void changeEvent(QEvent* event) override; diff --git a/src/libs/vwidgets/vabstractmainwindow.cpp b/src/libs/vwidgets/vabstractmainwindow.cpp index ff5616f33..c4c259f86 100644 --- a/src/libs/vwidgets/vabstractmainwindow.cpp +++ b/src/libs/vwidgets/vabstractmainwindow.cpp @@ -134,6 +134,13 @@ VAbstractMainWindow::VAbstractMainWindow(QWidget *parent) } } +//--------------------------------------------------------------------------------------------------------------------- +void VAbstractMainWindow::ShowToolTip(const QString &toolTip) +{ + Q_UNUSED(toolTip) + // do nothing +} + //--------------------------------------------------------------------------------------------------------------------- bool VAbstractMainWindow::ContinueFormatRewrite(const QString ¤tFormatVersion, const QString &maxFormatVersion) @@ -197,6 +204,16 @@ QString VAbstractMainWindow::CSVFilePath() return fileName; } +//--------------------------------------------------------------------------------------------------------------------- +void VAbstractMainWindow::ExportToCSVData(const QString &fileName, bool withHeader, int mib, const QChar &separator) +{ + Q_UNUSED(fileName) + Q_UNUSED(withHeader) + Q_UNUSED(mib) + Q_UNUSED(separator) + // do nothing +} + //--------------------------------------------------------------------------------------------------------------------- void VAbstractMainWindow::UpdateRecentFileActions() { diff --git a/src/libs/vwidgets/vabstractmainwindow.h b/src/libs/vwidgets/vabstractmainwindow.h index ad0e4e526..070201708 100644 --- a/src/libs/vwidgets/vabstractmainwindow.h +++ b/src/libs/vwidgets/vabstractmainwindow.h @@ -45,7 +45,7 @@ public: virtual ~VAbstractMainWindow() Q_DECL_EQ_DEFAULT; public slots: - virtual void ShowToolTip(const QString &toolTip)=0; + virtual void ShowToolTip(const QString &toolTip); virtual void UpdateVisibilityGroups(); virtual void UpdateDetailsList(); virtual void ZoomFitBestCurrent(); @@ -66,7 +66,7 @@ protected: QString CSVFilePath(); - virtual void ExportToCSVData(const QString &fileName, bool withHeader, int mib, const QChar &separator)=0; + virtual void ExportToCSVData(const QString &fileName, bool withHeader, int mib, const QChar &separator); virtual QStringList RecentFileList() const =0; void UpdateRecentFileActions(); From 5f607008ac0d5216b0385a35e0124ec56e2eb0f3 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Fri, 21 May 2021 10:54:58 +0300 Subject: [PATCH 09/20] Return to initial concept. --- src/app/puzzle/vpmainwindow.cpp | 33 +++++++++++++++------------------ src/app/puzzle/vpmainwindow.h | 2 +- src/app/puzzle/vpmainwindow.ui | 23 +++++++++++++---------- 3 files changed, 29 insertions(+), 29 deletions(-) diff --git a/src/app/puzzle/vpmainwindow.cpp b/src/app/puzzle/vpmainwindow.cpp index d944f3720..82319768a 100644 --- a/src/app/puzzle/vpmainwindow.cpp +++ b/src/app/puzzle/vpmainwindow.cpp @@ -61,8 +61,6 @@ VPMainWindow::VPMainWindow(const VPCommandLinePtr &cmd, QWidget *parent) : ui(new Ui::VPMainWindow), m_cmd(cmd) { - m_layout = new VPLayout(); - // create a standard sheet auto *sheet = new VPSheet(m_layout); sheet->SetName(QObject::tr("Sheet 1")); @@ -70,19 +68,19 @@ VPMainWindow::VPMainWindow(const VPCommandLinePtr &cmd, QWidget *parent) : m_layout->SetFocusedSheet(); // // ----- for test purposes, to be removed------------------ -// sheet->SetSheetMarginsConverted(1, 1, 1, 1); -// sheet->SetSheetSizeConverted(84.1, 118.9); -// sheet->SetPiecesGapConverted(1); + sheet->SetSheetMarginsConverted(1, 1, 1, 1); + sheet->SetSheetSizeConverted(84.1, 118.9); + sheet->SetPiecesGapConverted(1); -// m_layout->SetUnit(Unit::Cm); -// m_layout->SetWarningSuperpositionOfPieces(true); -// m_layout->SetTitle(QString("My Test Layout")); -// m_layout->SetDescription(QString("Description of my Layout")); + m_layout->SetUnit(Unit::Cm); + m_layout->SetWarningSuperpositionOfPieces(true); + m_layout->SetTitle(QString("My Test Layout")); + m_layout->SetDescription(QString("Description of my Layout")); -// m_layout->SetTilesSizeConverted(21,29.7); -// m_layout->SetTilesOrientation(PageOrientation::Portrait); -// m_layout->SetTilesMarginsConverted(1,1,1,1); -// m_layout->SetShowTiles(true); + m_layout->SetTilesSizeConverted(21,29.7); + m_layout->SetTilesOrientation(PageOrientation::Portrait); + m_layout->SetTilesMarginsConverted(1,1,1,1); + m_layout->SetShowTiles(true); // -------------------------------------------------------- @@ -212,7 +210,10 @@ void VPMainWindow::ImportRawLayouts(const QStringList &rawLayouts) //--------------------------------------------------------------------------------------------------------------------- void VPMainWindow::InitZoom() { - m_graphicsView->ZoomFitBest(); + if (m_graphicsView != nullptr) + { + m_graphicsView->ZoomFitBest(); + } } //--------------------------------------------------------------------------------------------------------------------- @@ -260,7 +261,6 @@ void VPMainWindow::SetupMenu() // Add dock properties action QAction* actionDockWidgetToolOptions = ui->dockWidgetProperties->toggleViewAction(); ui->menuWindows->addAction(actionDockWidgetToolOptions); - } //--------------------------------------------------------------------------------------------------------------------- @@ -421,7 +421,6 @@ void VPMainWindow::InitPropertyTabLayout() void VPMainWindow::InitCarrousel() { m_carrousel = new VPCarrousel(m_layout, ui->dockWidgetCarrousel); - m_carrousel->setDisabled(true); ui->dockWidgetCarrousel->setWidget(m_carrousel); connect(ui->dockWidgetCarrousel, QOverload::of(&QDockWidget::dockLocationChanged), this, @@ -590,7 +589,6 @@ void VPMainWindow::SetPropertyTabLayoutData() void VPMainWindow::InitMainGraphics() { m_graphicsView = new VPMainGraphicsView(m_layout, m_tileFactory, this); - m_graphicsView->setDisabled(true); ui->centralWidget->layout()->addWidget(m_graphicsView); m_graphicsView->RefreshLayout(); @@ -641,7 +639,6 @@ void VPMainWindow::InitZoomToolBar() m_doubleSpinBoxScale = new QDoubleSpinBox(this); m_doubleSpinBoxScale->setDecimals(1); m_doubleSpinBoxScale->setSuffix("%"); - m_doubleSpinBoxScale->setDisabled(true); on_ScaleChanged(m_graphicsView->transform().m11()); connect(m_doubleSpinBoxScale.data(), QOverload::of(&QDoubleSpinBox::valueChanged), this, [this](double d){m_graphicsView->Zoom(d/100.0);}); diff --git a/src/app/puzzle/vpmainwindow.h b/src/app/puzzle/vpmainwindow.h index a26bda72b..9f25b8ae3 100644 --- a/src/app/puzzle/vpmainwindow.h +++ b/src/app/puzzle/vpmainwindow.h @@ -407,7 +407,7 @@ private: VPCommandLinePtr m_cmd; - VPLayout *m_layout{nullptr}; + VPLayout *m_layout{new VPLayout()}; QListm_selectedPieces{QList()}; VPTileFactory *m_tileFactory{nullptr}; diff --git a/src/app/puzzle/vpmainwindow.ui b/src/app/puzzle/vpmainwindow.ui index 418a562cf..468c4b6bc 100644 --- a/src/app/puzzle/vpmainwindow.ui +++ b/src/app/puzzle/vpmainwindow.ui @@ -176,7 +176,7 @@ - false + true @@ -231,6 +231,9 @@ + + true + @@ -1576,7 +1579,7 @@ - false + true @@ -1591,7 +1594,7 @@ - false + true @@ -1606,7 +1609,7 @@ - false + true &Close Layout @@ -1614,7 +1617,7 @@ - false + true &Import Raw Layout Data @@ -1678,7 +1681,7 @@ true - false + true Properties @@ -1689,7 +1692,7 @@ - false + true @@ -1701,7 +1704,7 @@ - false + true @@ -1713,7 +1716,7 @@ - false + true @@ -1725,7 +1728,7 @@ - false + true From e1b9fbaccdc8e0c2c820a41fe178e62d5dabd773 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Fri, 21 May 2021 11:25:43 +0300 Subject: [PATCH 10/20] One application, many windows. --- src/app/puzzle/vpapplication.cpp | 12 ++++++------ src/app/puzzle/vpmainwindow.cpp | 33 +++++++++----------------------- src/app/puzzle/vpmainwindow.h | 7 ------- src/app/puzzle/vpmainwindow.ui | 15 +++------------ 4 files changed, 18 insertions(+), 49 deletions(-) diff --git a/src/app/puzzle/vpapplication.cpp b/src/app/puzzle/vpapplication.cpp index 0d3d0e39f..d7ab56eec 100644 --- a/src/app/puzzle/vpapplication.cpp +++ b/src/app/puzzle/vpapplication.cpp @@ -334,9 +334,7 @@ auto VPApplication::MainWindow()-> VPMainWindow * Clean(); if (mainWindows.isEmpty()) { - VPCommandLinePtr cmd; - VPCommandLine::ProcessInstance(cmd, QStringList()); - NewMainWindow(VPCommandLinePtr()); + NewMainWindow(); } return mainWindows[0]; } @@ -354,15 +352,17 @@ auto VPApplication::MainWindows() -> QList } //--------------------------------------------------------------------------------------------------------------------- -VPMainWindow *VPApplication::NewMainWindow() +auto VPApplication::NewMainWindow() -> VPMainWindow * { - return NewMainWindow(VPCommandLinePtr()); + VPCommandLinePtr cmd; + VPCommandLine::ProcessInstance(cmd, {ConstFirst(VPApplication::arguments())}); + return NewMainWindow(cmd); } //--------------------------------------------------------------------------------------------------------------------- auto VPApplication::NewMainWindow(const VPCommandLinePtr &cmd) -> VPMainWindow * { - VPMainWindow *puzzle = new VPMainWindow(cmd); + auto *puzzle = new VPMainWindow(cmd); mainWindows.prepend(puzzle); if (not cmd->IsTestModeEnabled()) { diff --git a/src/app/puzzle/vpmainwindow.cpp b/src/app/puzzle/vpmainwindow.cpp index 82319768a..2ea07d45e 100644 --- a/src/app/puzzle/vpmainwindow.cpp +++ b/src/app/puzzle/vpmainwindow.cpp @@ -260,7 +260,14 @@ void VPMainWindow::SetupMenu() // Add dock properties action QAction* actionDockWidgetToolOptions = ui->dockWidgetProperties->toggleViewAction(); - ui->menuWindows->addAction(actionDockWidgetToolOptions); + ui->menuEdit->addAction(actionDockWidgetToolOptions); + + // Window + connect(ui->menuWindow, &QMenu::aboutToShow, this, [this]() + { + ui->menuWindow->clear(); + CreateWindowMenu(ui->menuWindow); + }); } //--------------------------------------------------------------------------------------------------------------------- @@ -935,16 +942,7 @@ void VPMainWindow::CreateWindowMenu(QMenu *menu) //--------------------------------------------------------------------------------------------------------------------- void VPMainWindow::on_actionNew_triggered() { - // just for test purpuses, to be removed: - QMessageBox msgBox; - msgBox.setText("TODO VPMainWindow::New"); - int ret = msgBox.exec(); - - Q_UNUSED(ret); - - // TODO - - + VPApplication::VApp()->NewMainWindow(); } //--------------------------------------------------------------------------------------------------------------------- @@ -1119,19 +1117,6 @@ void VPMainWindow::on_actionImportRawLayout_triggered() } -//--------------------------------------------------------------------------------------------------------------------- -void VPMainWindow::on_actionCloseLayout_triggered() -{ - // just for test purpuses, to be removed: - QMessageBox msgBox; - msgBox.setText("TODO VPMainWindow::CloseLayout"); - int ret = msgBox.exec(); - - Q_UNUSED(ret); - - // TODO -} - //--------------------------------------------------------------------------------------------------------------------- void VPMainWindow::on_actionAboutQt_triggered() { diff --git a/src/app/puzzle/vpmainwindow.h b/src/app/puzzle/vpmainwindow.h index 9f25b8ae3..ded4ace04 100644 --- a/src/app/puzzle/vpmainwindow.h +++ b/src/app/puzzle/vpmainwindow.h @@ -124,13 +124,6 @@ private slots: */ void on_actionImportRawLayout_triggered(); - /** - * @brief on_actionCloseLayout_triggered When the menu action - * File > Close Layout is triggered. - * The slot is automatically connected through name convention. - */ - void on_actionCloseLayout_triggered(); - /** * @brief on_actionAboutQt_triggered When the menu action Help > About Qt * is triggered. diff --git a/src/app/puzzle/vpmainwindow.ui b/src/app/puzzle/vpmainwindow.ui index 468c4b6bc..ecd727620 100644 --- a/src/app/puzzle/vpmainwindow.ui +++ b/src/app/puzzle/vpmainwindow.ui @@ -61,11 +61,10 @@ - + - &Windows + &Window - @@ -77,7 +76,7 @@ - + @@ -1607,14 +1606,6 @@ Ctrl+Shift+S - - - true - - - &Close Layout - - true From 9c05894dacdd4e5020826f83e9334bd07feb913d Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Fri, 21 May 2021 11:52:29 +0300 Subject: [PATCH 11/20] Move a "scale" spinner to separate tool bar. --- src/app/puzzle/vpmainwindow.cpp | 21 ++++++++++++--------- src/app/puzzle/vpmainwindow.h | 5 +++++ src/app/puzzle/vpmainwindow.ui | 20 +++++++++++++++++--- 3 files changed, 34 insertions(+), 12 deletions(-) diff --git a/src/app/puzzle/vpmainwindow.cpp b/src/app/puzzle/vpmainwindow.cpp index 2ea07d45e..27fb1ded2 100644 --- a/src/app/puzzle/vpmainwindow.cpp +++ b/src/app/puzzle/vpmainwindow.cpp @@ -97,6 +97,7 @@ VPMainWindow::VPMainWindow(const VPCommandLinePtr &cmd, QWidget *parent) : InitMainGraphics(); InitZoomToolBar(); + InitScaleToolBar(); SetPropertiesData(); @@ -637,27 +638,29 @@ void VPMainWindow::InitZoomToolBar() zoomFitBestShortcuts.append(QKeySequence(Qt::ControlModifier + Qt::Key_Equal)); ui->actionZoomFitBest->setShortcuts(zoomFitBestShortcuts); connect(ui->actionZoomFitBest, &QAction::triggered, m_graphicsView, &VPMainGraphicsView::ZoomFitBest); +} - // defined the scale - ui->toolBarZoom->addSeparator(); +//--------------------------------------------------------------------------------------------------------------------- +void VPMainWindow::InitScaleToolBar() +{ auto* zoomScale = new QLabel(tr("Scale:"), this); - ui->toolBarZoom->addWidget(zoomScale); + ui->toolBarScale->addWidget(zoomScale); m_doubleSpinBoxScale = new QDoubleSpinBox(this); m_doubleSpinBoxScale->setDecimals(1); - m_doubleSpinBoxScale->setSuffix("%"); + m_doubleSpinBoxScale->setSuffix(QChar('%')); on_ScaleChanged(m_graphicsView->transform().m11()); connect(m_doubleSpinBoxScale.data(), QOverload::of(&QDoubleSpinBox::valueChanged), this, [this](double d){m_graphicsView->Zoom(d/100.0);}); - ui->toolBarZoom->addWidget(m_doubleSpinBoxScale); + ui->toolBarScale->addWidget(m_doubleSpinBoxScale); // define the mouse position - ui->toolBarZoom->addSeparator(); + ui->toolBarScale->addSeparator(); - m_mouseCoordinate = new QLabel(QString("0, 0 (%1)").arg(UnitsToStr(m_layout->GetUnit(), true))); - ui->toolBarZoom->addWidget(m_mouseCoordinate); - ui->toolBarZoom->addSeparator(); + m_mouseCoordinate = new QLabel(QStringLiteral("0, 0 (%1)").arg(UnitsToStr(m_layout->GetUnit(), true))); + ui->toolBarScale->addWidget(m_mouseCoordinate); + ui->toolBarScale->addSeparator(); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/puzzle/vpmainwindow.h b/src/app/puzzle/vpmainwindow.h index ded4ace04..10bc7ece3 100644 --- a/src/app/puzzle/vpmainwindow.h +++ b/src/app/puzzle/vpmainwindow.h @@ -471,6 +471,11 @@ private: */ void InitZoomToolBar(); + /** + * @brief InitScaleToolBar Initialises the scale tool bar + */ + void InitScaleToolBar(); + /** * @brief SetPropertiesData Sets the values of UI elements * in all the property tabs to the values saved in m_layout diff --git a/src/app/puzzle/vpmainwindow.ui b/src/app/puzzle/vpmainwindow.ui index ecd727620..f984cdb6f 100644 --- a/src/app/puzzle/vpmainwindow.ui +++ b/src/app/puzzle/vpmainwindow.ui @@ -99,7 +99,6 @@ - @@ -1134,7 +1133,7 @@ 0 0 356 - 717 + 706 @@ -1422,7 +1421,7 @@ 0 0 356 - 717 + 706 @@ -1564,6 +1563,21 @@ + + + + Scale + + + Qt::AllToolBarAreas + + + BottomToolBarArea + + + false + + From 67fc4b75395a521ce9a8581c02ef4ab465427949 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Fri, 21 May 2021 12:03:26 +0300 Subject: [PATCH 12/20] Label for tooltip. --- src/app/puzzle/vpmainwindow.cpp | 12 +++++++++++- src/app/puzzle/vpmainwindow.h | 4 ++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/app/puzzle/vpmainwindow.cpp b/src/app/puzzle/vpmainwindow.cpp index 27fb1ded2..c9be83a3c 100644 --- a/src/app/puzzle/vpmainwindow.cpp +++ b/src/app/puzzle/vpmainwindow.cpp @@ -59,7 +59,8 @@ QT_WARNING_POP VPMainWindow::VPMainWindow(const VPCommandLinePtr &cmd, QWidget *parent) : VAbstractMainWindow(parent), ui(new Ui::VPMainWindow), - m_cmd(cmd) + m_cmd(cmd), + m_statusLabel(new QLabel(this)) { // create a standard sheet auto *sheet = new VPSheet(m_layout); @@ -90,6 +91,9 @@ VPMainWindow::VPMainWindow(const VPCommandLinePtr &cmd, QWidget *parent) : m_tileFactory = new VPTileFactory(m_layout, VPApplication::VApp()->Settings()); m_tileFactory->refreshTileInfos(); + // init status bar + statusBar()->addPermanentWidget(m_statusLabel, 1); + SetupMenu(); InitProperties(); InitCarrousel(); @@ -948,6 +952,12 @@ void VPMainWindow::on_actionNew_triggered() VPApplication::VApp()->NewMainWindow(); } +//--------------------------------------------------------------------------------------------------------------------- +void VPMainWindow::ShowToolTip(const QString &toolTip) +{ + m_statusLabel->setText(toolTip); +} + //--------------------------------------------------------------------------------------------------------------------- void VPMainWindow::closeEvent(QCloseEvent *event) { diff --git a/src/app/puzzle/vpmainwindow.h b/src/app/puzzle/vpmainwindow.h index 10bc7ece3..b2f68435e 100644 --- a/src/app/puzzle/vpmainwindow.h +++ b/src/app/puzzle/vpmainwindow.h @@ -90,6 +90,8 @@ public slots: */ void on_actionNew_triggered(); + virtual void ShowToolTip(const QString &toolTip) override; + protected: virtual void closeEvent(QCloseEvent *event) override; virtual void changeEvent(QEvent* event) override; @@ -415,6 +417,8 @@ private: */ QLabel* m_mouseCoordinate{nullptr}; + QLabel* m_statusLabel{nullptr}; + QString curFile{}; bool isInitialized{false}; From d10355b400ec069efd636eefb7a73c8de1467faf Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Fri, 21 May 2021 17:17:22 +0300 Subject: [PATCH 13/20] File > Save functions. --- src/app/puzzle/vpmainwindow.cpp | 194 ++++++++++++++++++---- src/app/puzzle/vpmainwindow.h | 14 +- src/app/puzzle/xml/vplayoutfilewriter.cpp | 12 -- src/app/puzzle/xml/vplayoutfilewriter.h | 8 +- src/app/tape/tmainwindow.cpp | 43 +---- src/app/valentina/mainwindow.cpp | 47 +----- src/libs/vmisc/vcommonsettings.cpp | 22 +++ src/libs/vmisc/vcommonsettings.h | 6 +- src/libs/vwidgets/vabstractmainwindow.cpp | 48 ++++++ src/libs/vwidgets/vabstractmainwindow.h | 2 + 10 files changed, 260 insertions(+), 136 deletions(-) diff --git a/src/app/puzzle/vpmainwindow.cpp b/src/app/puzzle/vpmainwindow.cpp index c9be83a3c..e11aa5020 100644 --- a/src/app/puzzle/vpmainwindow.cpp +++ b/src/app/puzzle/vpmainwindow.cpp @@ -45,6 +45,12 @@ #include "../vwidgets/vmaingraphicsscene.h" #include "vpsheet.h" +#if QT_VERSION < QT_VERSION_CHECK(5, 12, 0) +#include "../vmisc/backport/qscopeguard.h" +#else +#include +#endif + #include QT_WARNING_PUSH @@ -157,16 +163,50 @@ bool VPMainWindow::LoadFile(QString path) } //--------------------------------------------------------------------------------------------------------------------- -bool VPMainWindow::SaveFile(const QString &path) +void VPMainWindow::LayoutWasSaved(bool saved) +{ + setWindowModified(!saved); + not lIsReadOnly ? ui->actionSave->setEnabled(!saved): ui->actionSave->setEnabled(false); +} + +//--------------------------------------------------------------------------------------------------------------------- +void VPMainWindow::SetCurrentFile(const QString &fileName) +{ + curFile = fileName; + if (not curFile.isEmpty()) + { + auto settings = VPApplication::VApp()->PuzzleSettings(); + QStringList files = settings->GetRecentFileList(); + files.removeAll(fileName); + files.prepend(fileName); + while (files.size() > MaxRecentFiles) + { + files.removeLast(); + } + settings->SetRecentFileList(files); + UpdateRecentFileActions(); + } + + UpdateWindowTitle(); +} + +//--------------------------------------------------------------------------------------------------------------------- +auto VPMainWindow::SaveLayout(const QString &path, QString &error) -> bool { QFile file(path); file.open(QIODevice::WriteOnly); - VPLayoutFileWriter *fileWriter = new VPLayoutFileWriter(); - fileWriter->WriteFile(m_layout, &file); + VPLayoutFileWriter fileWriter; + fileWriter.WriteFile(m_layout, &file); - // TODO / FIXME : better return value and error handling + if (fileWriter.hasError()) + { + error = tr("Fail to create layout."); + return false; + } + SetCurrentFile(path); + LayoutWasSaved(true); return true; } @@ -1058,47 +1098,143 @@ void VPMainWindow::on_actionOpen_triggered() } //--------------------------------------------------------------------------------------------------------------------- -void VPMainWindow::on_actionSave_triggered() +bool VPMainWindow::on_actionSave_triggered() { - // just for test purpuses, to be removed: - QMessageBox msgBox; - msgBox.setText("TODO VPMainWindow::Save"); - int ret = msgBox.exec(); + if (curFile.isEmpty() || lIsReadOnly) + { + return on_actionSaveAs_triggered(); + } - Q_UNUSED(ret); + if (m_curFileFormatVersion < VLayoutConverter::LayoutMaxVer + && not ContinueFormatRewrite(m_curFileFormatVersionStr, VLayoutConverter::LayoutMaxVerStr)) + { + return false; + } - // TODO + if (not CheckFilePermissions(curFile, this)) + { + return false; + } + + QString error; + if (not SaveLayout(curFile, error)) + { + QMessageBox messageBox; + messageBox.setIcon(QMessageBox::Warning); + messageBox.setText(tr("Could not save the file")); + messageBox.setDefaultButton(QMessageBox::Ok); + messageBox.setDetailedText(error); + messageBox.setStandardButtons(QMessageBox::Ok); + messageBox.exec(); + return false; + } + + m_curFileFormatVersion = VLayoutConverter::LayoutMaxVer; + m_curFileFormatVersionStr = VLayoutConverter::LayoutMaxVerStr; + + return true; } //--------------------------------------------------------------------------------------------------------------------- -void VPMainWindow::on_actionSaveAs_triggered() +bool VPMainWindow::on_actionSaveAs_triggered() { - // TODO / FIXME : See valentina how the save is done over there. we need to add the - // extension .vlt, check for empty file names etc. + QString filters = tr("Layout files") + QStringLiteral(" (*.vlt)"); + QString suffix = QStringLiteral("vlt"); + QString fName = tr("layout") + QChar('.') + suffix; - //Get list last open files - QStringList recentFiles = VPApplication::VApp()->PuzzleSettings()->GetRecentFileList(); QString dir; - if (recentFiles.isEmpty()) + if (curFile.isEmpty()) { - dir = QDir::homePath(); + dir = VPApplication::VApp()->PuzzleSettings()->GetPathLayouts(); } else { - //Absolute path to last open file - dir = QFileInfo(recentFiles.first()).absolutePath(); + dir = QFileInfo(curFile).absolutePath(); } - QString filters(tr("Layout files") + QLatin1String("(*.vlt)")); - QString fileName = QFileDialog::getSaveFileName(this, tr("Save as"), - dir + QLatin1String("/") + tr("Layout") + QLatin1String(".vlt"), - filters, nullptr -#ifdef Q_OS_LINUX - , QFileDialog::DontUseNativeDialog -#endif - ); + bool usedNotExistedDir = false; + QDir directory(dir); + if (not directory.exists()) + { + usedNotExistedDir = directory.mkpath(QChar('.')); + } - SaveFile(fileName); + QString fileName = QFileDialog::getSaveFileName(this, tr("Save as"), dir + QChar('/') + fName, filters, nullptr, + VAbstractApplication::VApp()->NativeFileDialog()); + + auto RemoveTempDir = qScopeGuard([usedNotExistedDir, dir]() + { + if (usedNotExistedDir) + { + QDir(dir).rmpath(QChar('.')); + } + }); + + if (fileName.isEmpty()) + { + return false; + } + + QFileInfo f( fileName ); + if (f.suffix().isEmpty() && f.suffix() != suffix) + { + fileName += QChar('.') + suffix; + } + + if (QFileInfo::exists(fileName) && curFile != fileName) + { + // Temporary try to lock the file before saving + VLockGuard tmp(fileName); + if (not tmp.IsLocked()) + { + qCCritical(pWindow, "%s", + qUtf8Printable(tr("Failed to lock. This file already opened in another window."))); + return false; + } + } + + // Need for restoring previous state in case of failure +// const bool readOnly = m_layout->IsReadOnly(); + +// m_layout->SetReadOnly(false); + lIsReadOnly = false; + + QString error; + bool result = SaveLayout(fileName, error); + if (not result) + { + QMessageBox messageBox; + messageBox.setIcon(QMessageBox::Warning); + messageBox.setInformativeText(tr("Could not save file")); + messageBox.setDefaultButton(QMessageBox::Ok); + messageBox.setDetailedText(error); + messageBox.setStandardButtons(QMessageBox::Ok); + messageBox.exec(); + + // Restore previous state +// m_layout->SetReadOnly(readOnly); +// lIsReadOnly = readOnly; + return false; + } + + m_curFileFormatVersion = VLayoutConverter::LayoutMaxVer; + m_curFileFormatVersionStr = VLayoutConverter::LayoutMaxVerStr; + +// UpdatePadlock(false); + UpdateWindowTitle(); + + if (curFile == fileName && not lock.isNull()) + { + lock->Unlock(); + } + VlpCreateLock(lock, fileName); + if (not lock->IsLocked()) + { + qCCritical(pWindow, "%s", qUtf8Printable(tr("Failed to lock. This file already opened in another window. " + "Expect collissions when run 2 copies of the program."))); + return false; + } + return true; } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/puzzle/vpmainwindow.h b/src/app/puzzle/vpmainwindow.h index b2f68435e..7644939be 100644 --- a/src/app/puzzle/vpmainwindow.h +++ b/src/app/puzzle/vpmainwindow.h @@ -43,6 +43,7 @@ #include "vpcommandline.h" #include "../vlayout/vlayoutdef.h" #include "../vwidgets/vabstractmainwindow.h" +#include "../vmisc/vlockguard.h" namespace Ui { @@ -65,12 +66,15 @@ public: */ bool LoadFile(QString path); + void LayoutWasSaved(bool saved); + void SetCurrentFile(const QString &fileName); + /** - * @brief SaveFile Saves the current layout to the layout file of given path + * @brief SaveLayout Saves the current layout to the layout file of given path * @param path path to layout file * @return true if success */ - bool SaveFile(const QString &path); + bool SaveLayout(const QString &path, QString &error); /** * @brief ImportRawLayouts The function imports the raw layouts of given paths @@ -110,14 +114,14 @@ private slots: * triggered. * The slot is automatically connected through name convention. */ - void on_actionSave_triggered(); + bool on_actionSave_triggered(); /** * @brief on_actionSaveAs_triggered When the menu action File > Save As * is triggered. * The slot is automatically connected through name convention. */ - void on_actionSaveAs_triggered(); + bool on_actionSaveAs_triggered(); /** * @brief on_actionImportRawLayout_triggered When the menu action @@ -424,6 +428,8 @@ private: bool isInitialized{false}; bool lIsReadOnly{false}; + QSharedPointer> lock{nullptr}; + /** * @brief CreatePiece creates a piece from the given VLayoutPiece data * @param rawPiece the raw piece data diff --git a/src/app/puzzle/xml/vplayoutfilewriter.cpp b/src/app/puzzle/xml/vplayoutfilewriter.cpp index 5f2295f41..3991483d5 100644 --- a/src/app/puzzle/xml/vplayoutfilewriter.cpp +++ b/src/app/puzzle/xml/vplayoutfilewriter.cpp @@ -34,18 +34,6 @@ #include "vplayoutliterals.h" #include "../ifc/xml/vlayoutconverter.h" -//--------------------------------------------------------------------------------------------------------------------- -VPLayoutFileWriter::VPLayoutFileWriter() -{ - -} - -//--------------------------------------------------------------------------------------------------------------------- -VPLayoutFileWriter::~VPLayoutFileWriter() -{ - -} - //--------------------------------------------------------------------------------------------------------------------- void VPLayoutFileWriter::WriteFile(VPLayout *layout, QFile *file) { diff --git a/src/app/puzzle/xml/vplayoutfilewriter.h b/src/app/puzzle/xml/vplayoutfilewriter.h index 4498277c4..2836c5186 100644 --- a/src/app/puzzle/xml/vplayoutfilewriter.h +++ b/src/app/puzzle/xml/vplayoutfilewriter.h @@ -31,6 +31,7 @@ #include #include +#include #include "../vmisc/literals.h" @@ -43,14 +44,14 @@ class QMarginsF; class VPLayoutFileWriter : public QXmlStreamWriter { + Q_DECLARE_TR_FUNCTIONS(VPLayoutFileWriter) public: - VPLayoutFileWriter(); - ~VPLayoutFileWriter(); + VPLayoutFileWriter()= default; + ~VPLayoutFileWriter()= default; void WriteFile(VPLayout *layout, QFile *file); private: - void WriteLayout(VPLayout *layout); void WriteProperties(VPLayout *layout); void WriteUnplacePiecesList(VPLayout *layout); @@ -69,7 +70,6 @@ private: template void SetAttribute(const QString &name, const char (&value)[N]); - }; //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/tape/tmainwindow.cpp b/src/app/tape/tmainwindow.cpp index fc9b63a8f..4670eeeb7 100644 --- a/src/app/tape/tmainwindow.cpp +++ b/src/app/tape/tmainwindow.cpp @@ -775,48 +775,9 @@ bool TMainWindow::FileSave() return false; } -#ifdef Q_OS_WIN32 - qt_ntfs_permission_lookup++; // turn checking on -#endif /*Q_OS_WIN32*/ - const bool isFileWritable = QFileInfo(curFile).isWritable(); -#ifdef Q_OS_WIN32 - qt_ntfs_permission_lookup--; // turn it off again -#endif /*Q_OS_WIN32*/ - if (not isFileWritable) + if (not CheckFilePermissions(curFile, this)) { - QMessageBox messageBox(this); - messageBox.setIcon(QMessageBox::Question); - messageBox.setText(tr("The measurements document has no write permissions.")); - messageBox.setInformativeText(tr("Do you want to change the premissions?")); - messageBox.setStandardButtons(QMessageBox::Yes | QMessageBox::Cancel); - messageBox.setDefaultButton(QMessageBox::Yes); - - if (messageBox.exec() == QMessageBox::Yes) - { -#ifdef Q_OS_WIN32 - qt_ntfs_permission_lookup++; // turn checking on -#endif /*Q_OS_WIN32*/ - bool changed = QFile::setPermissions(curFile, - QFileInfo(curFile).permissions() | QFileDevice::WriteUser); -#ifdef Q_OS_WIN32 - qt_ntfs_permission_lookup--; // turn it off again -#endif /*Q_OS_WIN32*/ - - if (not changed) - { - messageBox.setIcon(QMessageBox::Warning); - messageBox.setText(tr("Cannot set permissions for %1 to writable.").arg(curFile)); - messageBox.setInformativeText(tr("Could not save the file.")); - messageBox.setStandardButtons(QMessageBox::Ok); - messageBox.setDefaultButton(QMessageBox::Ok); - messageBox.exec(); - return false; - } - } - else - { - return false; - } + return false; } QString error; diff --git a/src/app/valentina/mainwindow.cpp b/src/app/valentina/mainwindow.cpp index 1cb786c75..409f5c84f 100644 --- a/src/app/valentina/mainwindow.cpp +++ b/src/app/valentina/mainwindow.cpp @@ -3253,52 +3253,9 @@ bool MainWindow::on_actionSave_triggered() return false; } -#ifdef Q_OS_WIN32 - qt_ntfs_permission_lookup++; // turn checking on -#endif /*Q_OS_WIN32*/ - const bool isFileWritable = QFileInfo(VAbstractValApplication::VApp()->GetPatternPath()).isWritable(); -#ifdef Q_OS_WIN32 - qt_ntfs_permission_lookup--; // turn it off again -#endif /*Q_OS_WIN32*/ - if (not isFileWritable) + if (not CheckFilePermissions(VAbstractValApplication::VApp()->GetPatternPath(), this)) { - QMessageBox messageBox(this); - messageBox.setIcon(QMessageBox::Question); - messageBox.setText(tr("The document has no write permissions.")); - messageBox.setInformativeText(tr("Do you want to change the premissions?")); - messageBox.setStandardButtons(QMessageBox::Yes | QMessageBox::Cancel); - messageBox.setDefaultButton(QMessageBox::Yes); - - if (messageBox.exec() == QMessageBox::Yes) - { -#ifdef Q_OS_WIN32 - qt_ntfs_permission_lookup++; // turn checking on -#endif /*Q_OS_WIN32*/ - bool changed = - QFile::setPermissions(VAbstractValApplication::VApp()->GetPatternPath(), - QFileInfo(VAbstractValApplication::VApp() - ->GetPatternPath()).permissions() | QFileDevice::WriteUser); -#ifdef Q_OS_WIN32 - qt_ntfs_permission_lookup--; // turn it off again -#endif /*Q_OS_WIN32*/ - - if (not changed) - { - QMessageBox messageBox(this); - messageBox.setIcon(QMessageBox::Warning); - messageBox.setText(tr("Cannot set permissions for %1 to writable.") - .arg(VAbstractValApplication::VApp()->GetPatternPath())); - messageBox.setInformativeText(tr("Could not save the file.")); - messageBox.setDefaultButton(QMessageBox::Ok); - messageBox.setStandardButtons(QMessageBox::Ok); - messageBox.exec(); - return false; - } - } - else - { - return false; - } + return false; } QString error; diff --git a/src/libs/vmisc/vcommonsettings.cpp b/src/libs/vmisc/vcommonsettings.cpp index 1aa73dc8d..b7425823b 100644 --- a/src/libs/vmisc/vcommonsettings.cpp +++ b/src/libs/vmisc/vcommonsettings.cpp @@ -73,6 +73,7 @@ namespace { Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsIndividualMeasurements, (QLatin1String("paths/individual_measurements"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsMultisizeMeasurements, (QLatin1String("paths/standard_measurements"))) +Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsLayouts, (QLatin1String("paths/layouts"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsPattern, (QLatin1String("paths/pattern"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsTemplates, (QLatin1String("paths/templates"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsLabelTemplate, (QLatin1String("paths/labels"))) @@ -406,6 +407,27 @@ void VCommonSettings::SetPathMultisizeMeasurements(const QString &value) settings.sync(); } +//--------------------------------------------------------------------------------------------------------------------- +QString VCommonSettings::GetDefPathLayouts() +{ + return QDir::homePath() + QLatin1String("/valentina/") + tr("layouts"); +} + +//--------------------------------------------------------------------------------------------------------------------- +QString VCommonSettings::GetPathLayouts() const +{ + QSettings settings(this->format(), this->scope(), this->organizationName(), *commonIniFilename); + return settings.value(*settingPathsLayouts, GetDefPathLayouts()).toString(); +} + +//--------------------------------------------------------------------------------------------------------------------- +void VCommonSettings::SetPathLayouts(const QString &value) +{ + QSettings settings(this->format(), this->scope(), this->organizationName(), *commonIniFilename); + settings.setValue(*settingPathsLayouts, value); + settings.sync(); +} + //--------------------------------------------------------------------------------------------------------------------- QString VCommonSettings::GetDefPathPattern() { diff --git a/src/libs/vmisc/vcommonsettings.h b/src/libs/vmisc/vcommonsettings.h index 6c4f90897..7ff8d4666 100644 --- a/src/libs/vmisc/vcommonsettings.h +++ b/src/libs/vmisc/vcommonsettings.h @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ ** ** @file vcommonsettings.h ** @author Roman Telezhynskyi @@ -68,6 +68,10 @@ public: QString GetPathMultisizeMeasurements() const; void SetPathMultisizeMeasurements(const QString &value); + static QString GetDefPathLayouts(); + QString GetPathLayouts() const; + void SetPathLayouts(const QString &value); + static QString GetDefPathPattern(); QString GetPathPattern() const; void SetPathPattern(const QString &value); diff --git a/src/libs/vwidgets/vabstractmainwindow.cpp b/src/libs/vwidgets/vabstractmainwindow.cpp index c4c259f86..230528307 100644 --- a/src/libs/vwidgets/vabstractmainwindow.cpp +++ b/src/libs/vwidgets/vabstractmainwindow.cpp @@ -236,6 +236,54 @@ void VAbstractMainWindow::UpdateRecentFileActions() m_separatorAct->setVisible(numRecentFiles>0); } +//--------------------------------------------------------------------------------------------------------------------- +auto VAbstractMainWindow::CheckFilePermissions(const QString &path, QWidget *messageBoxParent) -> bool +{ +#ifdef Q_OS_WIN32 + qt_ntfs_permission_lookup++; // turn checking on +#endif /*Q_OS_WIN32*/ + const bool isFileWritable = QFileInfo(path).isWritable(); +#ifdef Q_OS_WIN32 + qt_ntfs_permission_lookup--; // turn it off again +#endif /*Q_OS_WIN32*/ + if (not isFileWritable) + { + QMessageBox messageBox(messageBoxParent); + messageBox.setIcon(QMessageBox::Question); + messageBox.setText(tr("The measurements document has no write permissions.")); + messageBox.setInformativeText(tr("Do you want to change the premissions?")); + messageBox.setStandardButtons(QMessageBox::Yes | QMessageBox::Cancel); + messageBox.setDefaultButton(QMessageBox::Yes); + + if (messageBox.exec() == QMessageBox::Yes) + { +#ifdef Q_OS_WIN32 + qt_ntfs_permission_lookup++; // turn checking on +#endif /*Q_OS_WIN32*/ + bool changed = QFile::setPermissions(path, QFileInfo(path).permissions() | QFileDevice::WriteUser); +#ifdef Q_OS_WIN32 + qt_ntfs_permission_lookup--; // turn it off again +#endif /*Q_OS_WIN32*/ + + if (not changed) + { + messageBox.setIcon(QMessageBox::Warning); + messageBox.setText(tr("Cannot set permissions for %1 to writable.").arg(path)); + messageBox.setInformativeText(tr("Could not save the file.")); + messageBox.setStandardButtons(QMessageBox::Ok); + messageBox.setDefaultButton(QMessageBox::Ok); + messageBox.exec(); + return false; + } + } + else + { + return false; + } + } + return true; +} + //--------------------------------------------------------------------------------------------------------------------- void VAbstractMainWindow::WindowsLocale() { diff --git a/src/libs/vwidgets/vabstractmainwindow.h b/src/libs/vwidgets/vabstractmainwindow.h index 070201708..ee803c5a8 100644 --- a/src/libs/vwidgets/vabstractmainwindow.h +++ b/src/libs/vwidgets/vabstractmainwindow.h @@ -71,6 +71,8 @@ protected: virtual QStringList RecentFileList() const =0; void UpdateRecentFileActions(); + static bool CheckFilePermissions(const QString &path, QWidget *messageBoxParent=nullptr) ; + private: Q_DISABLE_COPY(VAbstractMainWindow) }; From 6efa26ffe3f28751517f72558ecef7ae533e3dbf Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Fri, 21 May 2021 18:08:37 +0300 Subject: [PATCH 14/20] File > Open Layout. --- src/app/puzzle/vpmainwindow.cpp | 111 ++++++++++++++-------- src/app/puzzle/vpmainwindow.h | 2 + src/app/puzzle/xml/vplayoutfilereader.cpp | 15 +-- src/app/puzzle/xml/vplayoutfilereader.h | 6 +- src/app/tape/mapplication.cpp | 2 +- src/app/tape/tmainwindow.cpp | 96 +++---------------- src/app/tape/tmainwindow.h | 2 - src/app/valentina/mainwindow.cpp | 69 +------------- src/app/valentina/mainwindow.h | 2 - src/libs/vwidgets/vabstractmainwindow.cpp | 81 +++++++++++++++- src/libs/vwidgets/vabstractmainwindow.h | 4 +- 11 files changed, 176 insertions(+), 214 deletions(-) diff --git a/src/app/puzzle/vpmainwindow.cpp b/src/app/puzzle/vpmainwindow.cpp index e11aa5020..7ec36522b 100644 --- a/src/app/puzzle/vpmainwindow.cpp +++ b/src/app/puzzle/vpmainwindow.cpp @@ -131,11 +131,50 @@ VPMainWindow::~VPMainWindow() } //--------------------------------------------------------------------------------------------------------------------- -bool VPMainWindow::LoadFile(QString path) +auto VPMainWindow::CurrentFile() const -> QString { + return curFile; +} + +//--------------------------------------------------------------------------------------------------------------------- +auto VPMainWindow::LoadFile(QString path) -> bool +{ + if (not QFileInfo::exists(path)) + { + qCCritical(pWindow, "%s", qUtf8Printable(tr("File '%1' doesn't exist!").arg(path))); + if (m_cmd->IsTestModeEnabled()) + { + qApp->exit(V_EX_NOINPUT); + } + return false; + } + + // Check if file already opened + QList list = VPApplication::VApp()->MainWindows(); + auto w = std::find_if(list.begin(), list.end(), + [path](VPMainWindow *window) { return window->CurrentFile() == path; }); + if (w != list.end()) + { + (*w)->activateWindow(); + close(); + return false; + } + + VlpCreateLock(lock, path); + + if (not lock->IsLocked()) + { + if (not IgnoreLocking(lock->GetLockError(), path, m_cmd->IsGuiEnabled())) + { + return false; + } + } + try { VLayoutConverter converter(path); + m_curFileFormatVersion = converter.GetCurrentFormatVersion(); + m_curFileFormatVersionStr = converter.GetFormatVersionStr(); path = converter.Convert(); } catch (VException &e) @@ -148,16 +187,32 @@ bool VPMainWindow::LoadFile(QString path) QFile file(path); file.open(QIODevice::ReadOnly); - QScopedPointer fileReader(new VPLayoutFileReader()); + VPLayoutFileReader fileReader; if(m_layout == nullptr) { m_layout = new VPLayout(); } - fileReader->ReadFile(m_layout, &file); + fileReader.ReadFile(m_layout, &file); - // TODO / FIXME : better return value and error handling + if (fileReader.hasError()) + { + qCCritical(pWindow, "%s\n\n%s", qUtf8Printable(tr("File error.")), + qUtf8Printable(tr("Unable to read a layout file"))); + lock.reset(); + + if (m_cmd->IsTestModeEnabled()) + { + qApp->exit(V_EX_NOINPUT); + } + return false; + } + + // updates the properties with the loaded data + SetPropertiesData(); + + // TODO : update the Carrousel and the QGraphicView return true; } @@ -1049,52 +1104,28 @@ void VPMainWindow::on_actionOpen_triggered() qCDebug(pWindow, "Openning puzzle layout file."); const QString filter(tr("Layout files") + QLatin1String(" (*.vlt)")); + //Use standard path to individual measurements + const QString pathTo = VPApplication::VApp()->PuzzleSettings()->GetPathLayouts(); - //Get list last open files - QStringList recentFiles = VPApplication::VApp()->PuzzleSettings()->GetRecentFileList(); - QString dir; - if (recentFiles.isEmpty()) + bool usedNotExistedDir = false; + QDir directory(pathTo); + if (not directory.exists()) { - dir = QDir::homePath(); - } - else - { - //Absolute path to last open file - dir = QFileInfo(recentFiles.first()).absolutePath(); - } - qCDebug(pWindow, "Run QFileDialog::getOpenFileName: dir = %s.", qUtf8Printable(dir)); - const QString filePath = QFileDialog::getOpenFileName(this, tr("Open file"), dir, filter, nullptr); - - if (filePath.isEmpty()) - { - return; + usedNotExistedDir = directory.mkpath(QChar('.')); } + const QString mPath = QFileDialog::getOpenFileName(this, tr("Open file"), pathTo, filter, nullptr, + VAbstractApplication::VApp()->NativeFileDialog()); - // TODO : if m_layout == nullptr, open in current window - // otherwise open in new window - - // TODO : if layout file has a lock, warning message - - - if(!LoadFile(filePath)) + if (not mPath.isEmpty()) { - return; + VPApplication::VApp()->NewMainWindow()->LoadFile(mPath); } - // Updates the list of recent files - recentFiles.removeAll(filePath); - recentFiles.prepend(filePath); - while (recentFiles.size() > MaxRecentFiles) + if (usedNotExistedDir) { - recentFiles.removeLast(); + QDir(pathTo).rmpath(QChar('.')); } - VPApplication::VApp()->PuzzleSettings()->SetRecentFileList(recentFiles); - - // updates the properties with the loaded data - SetPropertiesData(); - - // TODO : update the Carrousel and the QGraphicView } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/puzzle/vpmainwindow.h b/src/app/puzzle/vpmainwindow.h index 7644939be..b93e8dcfa 100644 --- a/src/app/puzzle/vpmainwindow.h +++ b/src/app/puzzle/vpmainwindow.h @@ -58,6 +58,8 @@ public: explicit VPMainWindow(const VPCommandLinePtr &cmd, QWidget *parent = nullptr); virtual ~VPMainWindow(); + QString CurrentFile() const; + /** * @brief LoadFile Loads the layout file of given path in m_layout. * This function doesn't update the gui. diff --git a/src/app/puzzle/xml/vplayoutfilereader.cpp b/src/app/puzzle/xml/vplayoutfilereader.cpp index ac5cea16d..4936a44ef 100644 --- a/src/app/puzzle/xml/vplayoutfilereader.cpp +++ b/src/app/puzzle/xml/vplayoutfilereader.cpp @@ -33,19 +33,6 @@ #include "../ifc/exception/vexception.h" #include "../ifc/exception/vexceptionconversionerror.h" -//--------------------------------------------------------------------------------------------------------------------- -VPLayoutFileReader::VPLayoutFileReader() -{ - -} - -//--------------------------------------------------------------------------------------------------------------------- -VPLayoutFileReader::~VPLayoutFileReader() -{ - // TODO -} - - //--------------------------------------------------------------------------------------------------------------------- bool VPLayoutFileReader::ReadFile(VPLayout *layout, QFile *file) { @@ -56,7 +43,7 @@ bool VPLayoutFileReader::ReadFile(VPLayout *layout, QFile *file) ReadLayout(layout); } - return !error(); + return hasError(); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/puzzle/xml/vplayoutfilereader.h b/src/app/puzzle/xml/vplayoutfilereader.h index 7ed40f1a8..f7b2b8d59 100644 --- a/src/app/puzzle/xml/vplayoutfilereader.h +++ b/src/app/puzzle/xml/vplayoutfilereader.h @@ -39,8 +39,8 @@ class VPLayoutFileReader : public QXmlStreamReader { Q_DECLARE_TR_FUNCTIONS(VPLayoutFileReader) public: - VPLayoutFileReader(); - ~VPLayoutFileReader(); + VPLayoutFileReader()=default; + ~VPLayoutFileReader()=default; bool ReadFile(VPLayout *layout, QFile *file); @@ -64,7 +64,7 @@ private: static QString ReadAttributeEmptyString(const QXmlStreamAttributes &attribs, const QString &name); static bool ReadAttributeBool(const QXmlStreamAttributes &attribs, const QString &name, const QString &defValue); static qreal ReadAttributeDouble(const QXmlStreamAttributes &attribs, const QString &name, - const QString &defValue); + const QString &defValue); }; #endif // VPLAYOUTFILEREADER_H diff --git a/src/app/tape/mapplication.cpp b/src/app/tape/mapplication.cpp index 592dbd0b8..bf14c3907 100644 --- a/src/app/tape/mapplication.cpp +++ b/src/app/tape/mapplication.cpp @@ -374,7 +374,7 @@ bool MApplication::IsTestMode() const */ bool MApplication::IsAppInGUIMode() const { - return IsTestMode(); + return not IsTestMode(); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/tape/tmainwindow.cpp b/src/app/tape/tmainwindow.cpp index 4670eeeb7..94854b3ff 100644 --- a/src/app/tape/tmainwindow.cpp +++ b/src/app/tape/tmainwindow.cpp @@ -278,21 +278,20 @@ bool TMainWindow::LoadFile(const QString &path) // Check if file already opened const QList list = MApplication::VApp()->MainWindows(); - for (auto w : list) + auto w = std::find_if(list.begin(), list.end(), + [path](TMainWindow *window) { return window->CurrentFile() == path; }); + if (w != list.end()) { - if (w->CurrentFile() == path) - { - w->activateWindow(); - close(); - return false; - } + (*w)->activateWindow(); + close(); + return false; } VlpCreateLock(lock, path); if (not lock->IsLocked()) { - if (not IgnoreLocking(lock->GetLockError(), path)) + if (not IgnoreLocking(lock->GetLockError(), path, MApplication::VApp()->IsAppInGUIMode())) { return false; } @@ -3478,21 +3477,20 @@ bool TMainWindow::LoadFromExistingFile(const QString &path) // Check if file already opened const QList list = MApplication::VApp()->MainWindows(); - for (auto w : list) + auto w = std::find_if(list.begin(), list.end(), + [path](TMainWindow *window) { return window->CurrentFile() == path; }); + if (w != list.end()) { - if (w->CurrentFile() == path) - { - w->activateWindow(); - close(); - return false; - } + (*w)->activateWindow(); + close(); + return false; } VlpCreateLock(lock, path); if (not lock->IsLocked()) { - if (not IgnoreLocking(lock->GetLockError(), path)) + if (not IgnoreLocking(lock->GetLockError(), path, MApplication::VApp()->IsAppInGUIMode())) { return false; } @@ -3617,72 +3615,6 @@ void TMainWindow::CreateWindowMenu(QMenu *menu) } } -//--------------------------------------------------------------------------------------------------------------------- -bool TMainWindow::IgnoreLocking(int error, const QString &path) -{ - QMessageBox::StandardButton answer = QMessageBox::Abort; - if (not MApplication::VApp()->IsTestMode()) - { - switch(error) - { - case QLockFile::LockFailedError: - answer = QMessageBox::warning(this, tr("Locking file"), - tr("This file already opened in another window. Ignore if you want " - "to continue (not recommended, can cause a data corruption)."), - QMessageBox::Abort|QMessageBox::Ignore, QMessageBox::Abort); - break; - case QLockFile::PermissionError: - answer = QMessageBox::question(this, tr("Locking file"), - tr("The lock file could not be created, for lack of permissions. " - "Ignore if you want to continue (not recommended, can cause " - "a data corruption)."), - QMessageBox::Abort|QMessageBox::Ignore, QMessageBox::Abort); - break; - case QLockFile::UnknownError: - answer = QMessageBox::question(this, tr("Locking file"), - tr("Unknown error happened, for instance a full partition " - "prevented writing out the lock file. Ignore if you want to " - "continue (not recommended, can cause a data corruption)."), - QMessageBox::Abort|QMessageBox::Ignore, QMessageBox::Abort); - break; - default: - answer = QMessageBox::Abort; - break; - } - } - - if (answer == QMessageBox::Abort) - { - qCDebug(tMainWindow, "Failed to lock %s", qUtf8Printable(path)); - qCDebug(tMainWindow, "Error type: %d", error); - if (MApplication::VApp()->IsTestMode()) - { - switch(error) - { - case QLockFile::LockFailedError: - qCCritical(tMainWindow, "%s", - qUtf8Printable(tr("This file already opened in another window."))); - break; - case QLockFile::PermissionError: - qCCritical(tMainWindow, "%s", - qUtf8Printable(tr("The lock file could not be created, for lack of permissions."))); - break; - case QLockFile::UnknownError: - qCCritical(tMainWindow, "%s", - qUtf8Printable(tr("Unknown error happened, for instance a full partition " - "prevented writing out the lock file."))); - break; - default: - break; - } - - qApp->exit(V_EX_NOINPUT); - } - return false; - } - return true; -} - //--------------------------------------------------------------------------------------------------------------------- void TMainWindow::HackDimensionBaseValue() { diff --git a/src/app/tape/tmainwindow.h b/src/app/tape/tmainwindow.h index 6fa275b0d..cd8bdf11b 100644 --- a/src/app/tape/tmainwindow.h +++ b/src/app/tape/tmainwindow.h @@ -228,8 +228,6 @@ private: void CreateWindowMenu(QMenu *menu); - bool IgnoreLocking(int error, const QString &path); - template void HackWidget(T **widget); void HackDimensionBaseValue(); diff --git a/src/app/valentina/mainwindow.cpp b/src/app/valentina/mainwindow.cpp index 409f5c84f..ce4f302b7 100644 --- a/src/app/valentina/mainwindow.cpp +++ b/src/app/valentina/mainwindow.cpp @@ -5282,7 +5282,7 @@ bool MainWindow::LoadPattern(QString fileName, const QString& customMeasureFile) } else { - if (not IgnoreLocking(lock->GetLockError(), fileName)) + if (not IgnoreLocking(lock->GetLockError(), fileName, VApplication::IsGUIMode())) { return false; } @@ -6390,73 +6390,6 @@ void MainWindow::UpdateWindowTitle() #endif //defined(Q_OS_MAC) } -//--------------------------------------------------------------------------------------------------------------------- -bool MainWindow::IgnoreLocking(int error, const QString &path) -{ - QMessageBox::StandardButton answer = QMessageBox::Abort; - if (VApplication::IsGUIMode()) - { - switch(error) - { - case QLockFile::LockFailedError: - answer = QMessageBox::warning(this, tr("Locking file"), - tr("This file already opened in another window. Ignore if you want " - "to continue (not recommended, can cause a data corruption)."), - QMessageBox::Abort|QMessageBox::Ignore, QMessageBox::Abort); - break; - case QLockFile::PermissionError: - answer = QMessageBox::question(this, tr("Locking file"), - tr("The lock file could not be created, for lack of permissions. " - "Ignore if you want to continue (not recommended, can cause " - "a data corruption)."), - QMessageBox::Abort|QMessageBox::Ignore, QMessageBox::Abort); - break; - case QLockFile::UnknownError: - answer = QMessageBox::question(this, tr("Locking file"), - tr("Unknown error happened, for instance a full partition prevented " - "writing out the lock file. Ignore if you want to continue (not " - "recommended, can cause a data corruption)."), - QMessageBox::Abort|QMessageBox::Ignore, QMessageBox::Abort); - break; - default: - answer = QMessageBox::Abort; - break; - } - } - - if (answer == QMessageBox::Abort) - { - qCDebug(vMainWindow, "Failed to lock %s", qUtf8Printable(path)); - qCDebug(vMainWindow, "Error type: %d", error); - Clear(); - if (not VApplication::IsGUIMode()) - { - switch(error) - { - case QLockFile::LockFailedError: - qCCritical(vMainWindow, "%s", - qUtf8Printable(tr("This file already opened in another window."))); - break; - case QLockFile::PermissionError: - qCCritical(vMainWindow, "%s", - qUtf8Printable(tr("The lock file could not be created, for lack of permissions."))); - break; - case QLockFile::UnknownError: - qCCritical(vMainWindow, "%s", - qUtf8Printable(tr("Unknown error happened, for instance a full partition prevented " - "writing out the lock file."))); - break; - default: - break; - } - - qApp->exit(V_EX_NOINPUT); - } - return false; - } - return true; -} - //--------------------------------------------------------------------------------------------------------------------- void MainWindow::ToolSelectPoint() { diff --git a/src/app/valentina/mainwindow.h b/src/app/valentina/mainwindow.h index 487f564b4..ed8049af7 100644 --- a/src/app/valentina/mainwindow.h +++ b/src/app/valentina/mainwindow.h @@ -392,8 +392,6 @@ private: void UpdateWindowTitle(); - bool IgnoreLocking(int error, const QString &path); - void ToolSelectPoint(); void ToolSelectPointByPress(); void ToolSelectPointByRelease(); diff --git a/src/libs/vwidgets/vabstractmainwindow.cpp b/src/libs/vwidgets/vabstractmainwindow.cpp index 230528307..f4c2f3de5 100644 --- a/src/libs/vwidgets/vabstractmainwindow.cpp +++ b/src/libs/vwidgets/vabstractmainwindow.cpp @@ -31,18 +31,31 @@ #include "../vmisc/vabstractapplication.h" #include "../vmisc/compatibility.h" #include "../vmisc/def.h" +#include "../vmisc/vsysexits.h" #include "dialogs/dialogexporttocsv.h" +#include "../vwidgets/vmaingraphicsview.h" #include #include #include #include +#include +#include #if defined(Q_OS_MAC) -#include "../vwidgets/vmaingraphicsview.h" #include #endif +#include + +QT_WARNING_PUSH +QT_WARNING_DISABLE_CLANG("-Wmissing-prototypes") +QT_WARNING_DISABLE_INTEL(1418) + +Q_LOGGING_CATEGORY(abstactMainWindow, "abs.MainWindow") + +QT_WARNING_POP + namespace { //--------------------------------------------------------------------------------------------------------------------- @@ -284,6 +297,72 @@ auto VAbstractMainWindow::CheckFilePermissions(const QString &path, QWidget *mes return true; } +//--------------------------------------------------------------------------------------------------------------------- +bool VAbstractMainWindow::IgnoreLocking(int error, const QString &path, bool guiMode) +{ + QMessageBox::StandardButton answer = QMessageBox::Abort; + if (guiMode) + { + switch(error) + { + case QLockFile::LockFailedError: + answer = QMessageBox::warning(this, tr("Locking file"), + tr("This file already opened in another window. Ignore if you want " + "to continue (not recommended, can cause a data corruption)."), + QMessageBox::Abort|QMessageBox::Ignore, QMessageBox::Abort); + break; + case QLockFile::PermissionError: + answer = QMessageBox::question(this, tr("Locking file"), + tr("The lock file could not be created, for lack of permissions. " + "Ignore if you want to continue (not recommended, can cause " + "a data corruption)."), + QMessageBox::Abort|QMessageBox::Ignore, QMessageBox::Abort); + break; + case QLockFile::UnknownError: + answer = QMessageBox::question(this, tr("Locking file"), + tr("Unknown error happened, for instance a full partition " + "prevented writing out the lock file. Ignore if you want to " + "continue (not recommended, can cause a data corruption)."), + QMessageBox::Abort|QMessageBox::Ignore, QMessageBox::Abort); + break; + default: + answer = QMessageBox::Abort; + break; + } + } + + if (answer == QMessageBox::Abort) + { + qCDebug(abstactMainWindow, "Failed to lock %s", qUtf8Printable(path)); + qCDebug(abstactMainWindow, "Error type: %d", error); + if (not guiMode) + { + switch(error) + { + case QLockFile::LockFailedError: + qCCritical(abstactMainWindow, "%s", + qUtf8Printable(tr("This file already opened in another window."))); + break; + case QLockFile::PermissionError: + qCCritical(abstactMainWindow, "%s", + qUtf8Printable(tr("The lock file could not be created, for lack of permissions."))); + break; + case QLockFile::UnknownError: + qCCritical(abstactMainWindow, "%s", + qUtf8Printable(tr("Unknown error happened, for instance a full partition " + "prevented writing out the lock file."))); + break; + default: + break; + } + + qApp->exit(V_EX_NOINPUT); + } + return false; + } + return true; +} + //--------------------------------------------------------------------------------------------------------------------- void VAbstractMainWindow::WindowsLocale() { diff --git a/src/libs/vwidgets/vabstractmainwindow.h b/src/libs/vwidgets/vabstractmainwindow.h index ee803c5a8..424231817 100644 --- a/src/libs/vwidgets/vabstractmainwindow.h +++ b/src/libs/vwidgets/vabstractmainwindow.h @@ -71,7 +71,9 @@ protected: virtual QStringList RecentFileList() const =0; void UpdateRecentFileActions(); - static bool CheckFilePermissions(const QString &path, QWidget *messageBoxParent=nullptr) ; + static bool CheckFilePermissions(const QString &path, QWidget *messageBoxParent=nullptr); + + bool IgnoreLocking(int error, const QString &path, bool guiMode); private: Q_DISABLE_COPY(VAbstractMainWindow) From 05645ca7df843c0573cb9a6af5826c39868e2e24 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Fri, 21 May 2021 18:26:00 +0300 Subject: [PATCH 15/20] Recently Opened Files. --- src/app/puzzle/vpmainwindow.cpp | 31 ++++++++++++++++++++++- src/app/puzzle/vpmainwindow.ui | 45 ++++++++++++++++++--------------- 2 files changed, 55 insertions(+), 21 deletions(-) diff --git a/src/app/puzzle/vpmainwindow.cpp b/src/app/puzzle/vpmainwindow.cpp index 7ec36522b..9f89b2579 100644 --- a/src/app/puzzle/vpmainwindow.cpp +++ b/src/app/puzzle/vpmainwindow.cpp @@ -230,7 +230,7 @@ void VPMainWindow::SetCurrentFile(const QString &fileName) curFile = fileName; if (not curFile.isEmpty()) { - auto settings = VPApplication::VApp()->PuzzleSettings(); + auto *settings = VPApplication::VApp()->PuzzleSettings(); QStringList files = settings->GetRecentFileList(); files.removeAll(fileName); files.prepend(fileName); @@ -362,6 +362,35 @@ void VPMainWindow::SetupMenu() QAction* actionDockWidgetToolOptions = ui->dockWidgetProperties->toggleViewAction(); ui->menuEdit->addAction(actionDockWidgetToolOptions); + // File + m_recentFileActs.fill(nullptr); + for (auto & recentFileAct : m_recentFileActs) + { + auto *action = new QAction(this); + recentFileAct = action; + connect(action, &QAction::triggered, this, [this]() + { + if (auto *senderAction = qobject_cast(sender())) + { + const QString filePath = senderAction->data().toString(); + if (not filePath.isEmpty()) + { + LoadFile(filePath); + } + } + }); + ui->menuFile->insertAction(ui->actionPreferences, recentFileAct); + recentFileAct->setVisible(false); + } + + m_separatorAct = new QAction(this); + m_separatorAct->setSeparator(true); + m_separatorAct->setVisible(false); + ui->menuFile->insertAction(ui->actionPreferences, m_separatorAct); + + // Actions for recent files loaded by a puzzle window application. + UpdateRecentFileActions(); + // Window connect(ui->menuWindow, &QMenu::aboutToShow, this, [this]() { diff --git a/src/app/puzzle/vpmainwindow.ui b/src/app/puzzle/vpmainwindow.ui index f984cdb6f..bc329c0b6 100644 --- a/src/app/puzzle/vpmainwindow.ui +++ b/src/app/puzzle/vpmainwindow.ui @@ -14,7 +14,7 @@ Puzzle - + :/puzzleicon/64x64/logo.png:/puzzleicon/64x64/logo.png @@ -53,6 +53,8 @@ + + @@ -205,7 +207,7 @@ - + :/puzzleicon/64x64/iconCurrentPiece.png:/puzzleicon/64x64/iconCurrentPiece.png @@ -406,7 +408,7 @@ - + :/puzzleicon/64x64/iconRotate90Clockwise.png:/puzzleicon/64x64/iconRotate90Clockwise.png @@ -426,7 +428,7 @@ - + :/puzzleicon/64x64/iconRotate90Anticlockwise.png:/puzzleicon/64x64/iconRotate90Anticlockwise.png @@ -446,7 +448,7 @@ - + :/puzzleicon/64x64/iconRotateGrainlineVertical.png:/puzzleicon/64x64/iconRotateGrainlineVertical.png @@ -466,7 +468,7 @@ - + :/puzzleicon/64x64/iconRotateGrainlineHorizontal.png:/puzzleicon/64x64/iconRotateGrainlineHorizontal.png @@ -626,7 +628,7 @@ - + :/puzzleicon/64x64/iconLayout.png:/puzzleicon/64x64/iconLayout.png @@ -778,7 +780,7 @@ - + :/puzzleicon/64x64/iconPortrait.png:/puzzleicon/64x64/iconPortrait.png @@ -801,7 +803,7 @@ - + :/puzzleicon/64x64/iconLandscape.png:/puzzleicon/64x64/iconLandscape.png @@ -985,7 +987,7 @@ - + :/puzzleicon/64x64/iconGrainlineVertical.png:/puzzleicon/64x64/iconGrainlineVertical.png @@ -1005,7 +1007,7 @@ - + :/puzzleicon/64x64/iconGrainlineHorizontal.png:/puzzleicon/64x64/iconGrainlineHorizontal.png @@ -1091,7 +1093,7 @@ - + :/puzzleicon/64x64/iconTiles.png:/puzzleicon/64x64/iconTiles.png @@ -1133,7 +1135,7 @@ 0 0 356 - 706 + 700 @@ -1201,7 +1203,7 @@ - + :/puzzleicon/64x64/iconPortrait.png:/puzzleicon/64x64/iconPortrait.png @@ -1221,7 +1223,7 @@ - + :/puzzleicon/64x64/iconLandscape.png:/puzzleicon/64x64/iconLandscape.png @@ -1379,7 +1381,7 @@ - + :/puzzleicon/64x64/iconProperties.png:/puzzleicon/64x64/iconProperties.png @@ -1421,7 +1423,7 @@ 0 0 356 - 706 + 700 @@ -1746,6 +1748,11 @@ Zoom sheet + + + Preferences + + @@ -1795,8 +1802,6 @@ checkBoxLayoutWarningPiecesSuperposition checkBoxLayoutWarningPiecesOutOfBound - - - + From 06d19ace25f7baf0bb0ad8092a532b650d2d9e27 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Fri, 21 May 2021 20:51:46 +0300 Subject: [PATCH 16/20] Dialog File > Preferences. --- .../puzzlepreferencesconfigurationpage.cpp | 104 +++++++++ .../puzzlepreferencesconfigurationpage.h | 57 +++++ .../puzzlepreferencesconfigurationpage.ui | 117 ++++++++++ .../configpages/puzzlepreferencespathpage.cpp | 220 ++++++++++++++++++ .../configpages/puzzlepreferencespathpage.h | 62 +++++ .../configpages/puzzlepreferencespathpage.ui | 111 +++++++++ .../dialogs/dialogpuzzlepreferences.cpp | 160 +++++++++++++ .../puzzle/dialogs/dialogpuzzlepreferences.h | 71 ++++++ .../puzzle/dialogs/dialogpuzzlepreferences.ui | 159 +++++++++++++ src/app/puzzle/main.cpp | 5 + src/app/puzzle/puzzle.pri | 9 + src/app/puzzle/vpapplication.cpp | 3 +- src/app/puzzle/vpmainwindow.cpp | 51 ++-- src/app/puzzle/vpmainwindow.h | 8 +- .../configpages/tapepreferencespathpage.cpp | 16 +- .../tape/dialogs/dialogtapepreferences.cpp | 2 +- src/app/tape/mapplication.cpp | 1 + src/app/tape/tmainwindow.cpp | 14 +- src/app/tape/tmainwindow.h | 3 +- src/libs/vmisc/vcommonsettings.cpp | 22 -- src/libs/vmisc/vcommonsettings.h | 4 - 21 files changed, 1143 insertions(+), 56 deletions(-) create mode 100644 src/app/puzzle/dialogs/configpages/puzzlepreferencesconfigurationpage.cpp create mode 100644 src/app/puzzle/dialogs/configpages/puzzlepreferencesconfigurationpage.h create mode 100644 src/app/puzzle/dialogs/configpages/puzzlepreferencesconfigurationpage.ui create mode 100644 src/app/puzzle/dialogs/configpages/puzzlepreferencespathpage.cpp create mode 100644 src/app/puzzle/dialogs/configpages/puzzlepreferencespathpage.h create mode 100644 src/app/puzzle/dialogs/configpages/puzzlepreferencespathpage.ui create mode 100644 src/app/puzzle/dialogs/dialogpuzzlepreferences.cpp create mode 100644 src/app/puzzle/dialogs/dialogpuzzlepreferences.h create mode 100644 src/app/puzzle/dialogs/dialogpuzzlepreferences.ui diff --git a/src/app/puzzle/dialogs/configpages/puzzlepreferencesconfigurationpage.cpp b/src/app/puzzle/dialogs/configpages/puzzlepreferencesconfigurationpage.cpp new file mode 100644 index 000000000..f5c06d700 --- /dev/null +++ b/src/app/puzzle/dialogs/configpages/puzzlepreferencesconfigurationpage.cpp @@ -0,0 +1,104 @@ +/************************************************************************ + ** + ** @file puzzlepreferencesconfigurationpage.cpp + ** @author Roman Telezhynskyi + ** @date 21 5, 2021 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentina project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2021 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 "puzzlepreferencesconfigurationpage.h" +#include "ui_puzzlepreferencesconfigurationpage.h" +#include "../../vpapplication.h" + +//--------------------------------------------------------------------------------------------------------------------- +PuzzlePreferencesConfigurationPage::PuzzlePreferencesConfigurationPage(QWidget *parent) : + QWidget(parent), + ui(new Ui::PuzzlePreferencesConfigurationPage) +{ + ui->setupUi(this); + + InitLanguages(ui->langCombo); + connect(ui->langCombo, QOverload::of(&QComboBox::currentIndexChanged), this, [this]() + { + m_langChanged = true; + }); + + // Theme + ui->darkModeCheck->setChecked(VPApplication::VApp()->PuzzleSettings()->GetDarkMode()); + + // Native dialogs + ui->checkBoxDontUseNativeDialog->setChecked(VPApplication::VApp()->PuzzleSettings()->IsDontUseNativeDialog()); + + //----------------------- Toolbar + ui->toolBarStyleCheck->setChecked(VPApplication::VApp()->PuzzleSettings()->GetToolBarStyle()); +} + +//--------------------------------------------------------------------------------------------------------------------- +PuzzlePreferencesConfigurationPage::~PuzzlePreferencesConfigurationPage() +{ + delete ui; +} + +//--------------------------------------------------------------------------------------------------------------------- +QStringList PuzzlePreferencesConfigurationPage::Apply() +{ + QStringList preferences; + VPSettings *settings = VPApplication::VApp()->PuzzleSettings(); + + settings->SetToolBarStyle(ui->toolBarStyleCheck->isChecked()); + + if (settings->GetDarkMode() != ui->darkModeCheck->isChecked()) + { + settings->SetDarkMode(ui->darkModeCheck->isChecked()); + preferences.append(tr("dark mode")); + } + + if (settings->IsDontUseNativeDialog() != ui->checkBoxDontUseNativeDialog->isChecked()) + { + settings->SetDontUseNativeDialog(ui->checkBoxDontUseNativeDialog->isChecked()); + } + + if (m_langChanged) + { + const QString locale = qvariant_cast(ui->langCombo->currentData()); + settings->SetLocale(locale); + m_langChanged = false; + + VAbstractApplication::VApp()->LoadTranslation(locale); + qApp->processEvents();// force to call changeEvent + } + + return preferences; +} + +//--------------------------------------------------------------------------------------------------------------------- +void PuzzlePreferencesConfigurationPage::changeEvent(QEvent *event) +{ + if (event->type() == QEvent::LanguageChange) + { + // retranslate designer form (single inheritance approach) + ui->retranslateUi(this); + } + // remember to call base class implementation + QWidget::changeEvent(event); +} diff --git a/src/app/puzzle/dialogs/configpages/puzzlepreferencesconfigurationpage.h b/src/app/puzzle/dialogs/configpages/puzzlepreferencesconfigurationpage.h new file mode 100644 index 000000000..1656a2922 --- /dev/null +++ b/src/app/puzzle/dialogs/configpages/puzzlepreferencesconfigurationpage.h @@ -0,0 +1,57 @@ +/************************************************************************ + ** + ** @file puzzlepreferencesconfigurationpage.h + ** @author Roman Telezhynskyi + ** @date 21 5, 2021 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentina project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2021 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 PUZZLEPREFERENCESCONFIGURATIONPAGE_H +#define PUZZLEPREFERENCESCONFIGURATIONPAGE_H + +#include + +namespace Ui +{ + class PuzzlePreferencesConfigurationPage; +} + +class PuzzlePreferencesConfigurationPage : public QWidget +{ + Q_OBJECT + +public: + explicit PuzzlePreferencesConfigurationPage(QWidget *parent = nullptr); + virtual ~PuzzlePreferencesConfigurationPage(); + + QStringList Apply(); + +protected: + virtual void changeEvent(QEvent* event) override; + +private: + Q_DISABLE_COPY(PuzzlePreferencesConfigurationPage) + Ui::PuzzlePreferencesConfigurationPage *ui; + bool m_langChanged{false}; +}; + +#endif // PUZZLEPREFERENCESCONFIGURATIONPAGE_H diff --git a/src/app/puzzle/dialogs/configpages/puzzlepreferencesconfigurationpage.ui b/src/app/puzzle/dialogs/configpages/puzzlepreferencesconfigurationpage.ui new file mode 100644 index 000000000..7f10c762d --- /dev/null +++ b/src/app/puzzle/dialogs/configpages/puzzlepreferencesconfigurationpage.ui @@ -0,0 +1,117 @@ + + + PuzzlePreferencesConfigurationPage + + + + 0 + 0 + 505 + 548 + + + + Form + + + + + + true + + + + + 0 + 0 + 494 + 514 + + + + + + + Language + + + + QFormLayout::ExpandingFieldsGrow + + + + + GUI language: + + + + + + + + + + + + + Toolbar + + + + + + The text appears under the icon (recommended for beginners). + + + true + + + + + + + + + + User Interface + + + + + + Activate dark mode + + + + + + + Don't use the native file dialog + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + diff --git a/src/app/puzzle/dialogs/configpages/puzzlepreferencespathpage.cpp b/src/app/puzzle/dialogs/configpages/puzzlepreferencespathpage.cpp new file mode 100644 index 000000000..cc8a79429 --- /dev/null +++ b/src/app/puzzle/dialogs/configpages/puzzlepreferencespathpage.cpp @@ -0,0 +1,220 @@ +/************************************************************************ + ** + ** @file puzzlepreferencespathpage.cpp + ** @author Roman Telezhynskyi + ** @date 21 5, 2021 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentina project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2021 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 "puzzlepreferencespathpage.h" +#include "ui_puzzlepreferencespathpage.h" +#include "../../vpapplication.h" + +//--------------------------------------------------------------------------------------------------------------------- +PuzzlePreferencesPathPage::PuzzlePreferencesPathPage(QWidget *parent) : + QWidget(parent), + ui(new Ui::PuzzlePreferencesPathPage) +{ + ui->setupUi(this); + + InitTable(); + + connect(ui->pathTable, &QTableWidget::itemSelectionChanged, this, [this]() + { + ui->defaultButton->setEnabled(not ui->pathTable->selectedItems().isEmpty()); + ui->defaultButton->setDefault(false); + + ui->editButton->setEnabled(not ui->pathTable->selectedItems().isEmpty()); + ui->editButton->setDefault(true); + }); + + connect(ui->defaultButton, &QPushButton::clicked, this, &PuzzlePreferencesPathPage::DefaultPath); + connect(ui->editButton, &QPushButton::clicked, this, &PuzzlePreferencesPathPage::EditPath); +} + +//--------------------------------------------------------------------------------------------------------------------- +PuzzlePreferencesPathPage::~PuzzlePreferencesPathPage() +{ + delete ui; +} + +//--------------------------------------------------------------------------------------------------------------------- +void PuzzlePreferencesPathPage::Apply() +{ + VPSettings *settings = VPApplication::VApp()->PuzzleSettings(); + settings->SetPathIndividualMeasurements(ui->pathTable->item(0, 1)->text()); + settings->SetPathMultisizeMeasurements(ui->pathTable->item(1, 1)->text()); + settings->SetPathPattern(ui->pathTable->item(2, 1)->text()); + settings->SetPathTemplate(ui->pathTable->item(3, 1)->text()); + settings->SetPathManualLayouts(ui->pathTable->item(4, 1)->text()); +} + +//--------------------------------------------------------------------------------------------------------------------- +void PuzzlePreferencesPathPage::changeEvent(QEvent *event) +{ + if (event->type() == QEvent::LanguageChange) + { + // retranslate designer form (single inheritance approach) + ui->retranslateUi(this); + InitTable(); + } + // remember to call base class implementation + QWidget::changeEvent(event); +} + +//--------------------------------------------------------------------------------------------------------------------- +void PuzzlePreferencesPathPage::DefaultPath() +{ + const int row = ui->pathTable->currentRow(); + QTableWidgetItem *item = ui->pathTable->item(row, 1); + SCASSERT(item != nullptr) + + QString path; + switch (row) + { + case 0: // individual measurements + path = VCommonSettings::GetDefPathIndividualMeasurements(); + break; + case 1: // multisize measurements + path = VCommonSettings::GetDefPathMultisizeMeasurements(); + break; + case 2: // pattern path + path = VCommonSettings::GetDefPathPattern(); + break; + case 3: // templates + path = VCommonSettings::GetDefPathTemplate(); + break; + case 4: // layouts + path = VCommonSettings::GetDefPathManualLayouts(); + break; + default: + break; + } + + item->setText(path); + item->setToolTip(path); +} + +//--------------------------------------------------------------------------------------------------------------------- +void PuzzlePreferencesPathPage::EditPath() +{ + const int row = ui->pathTable->currentRow(); + QTableWidgetItem *item = ui->pathTable->item(row, 1); + SCASSERT(item != nullptr) + + QString path; + switch (row) + { + case 0: // individual measurements + path = VPApplication::VApp()->PuzzleSettings()->GetPathIndividualMeasurements(); + break; + case 1: // multisize measurements + path = VPApplication::VApp()->PuzzleSettings()->GetPathMultisizeMeasurements(); + path = VCommonSettings::PrepareMultisizeTables(path); + break; + case 2: // pattern path + path = VPApplication::VApp()->PuzzleSettings()->GetPathPattern(); + break; + case 3: // templates + path = VPApplication::VApp()->PuzzleSettings()->GetPathTemplate(); + break; + case 4: // layouts + path = VPApplication::VApp()->PuzzleSettings()->GetPathManualLayouts(); + break; + default: + break; + } + + bool usedNotExistedDir = false; + QDir directory(path); + if (not directory.exists()) + { + usedNotExistedDir = directory.mkpath(QChar('.')); + } + + const QString dir = QFileDialog::getExistingDirectory( + this, tr("Open Directory"), path, + VAbstractApplication::VApp()->NativeFileDialog(QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks)); + if (dir.isEmpty()) + { + if (usedNotExistedDir) + { + QDir(path).rmpath(QChar('.')); + } + + DefaultPath(); + return; + } + + item->setText(dir); + item->setToolTip(dir); +} + +//--------------------------------------------------------------------------------------------------------------------- +void PuzzlePreferencesPathPage::InitTable() +{ + ui->pathTable->clearContents(); + ui->pathTable->setRowCount(5); + ui->pathTable->setColumnCount(2); + + const VPSettings *settings = VPApplication::VApp()->PuzzleSettings(); + + { + ui->pathTable->setItem(0, 0, new QTableWidgetItem(tr("My Individual Measurements"))); + QTableWidgetItem *item = new QTableWidgetItem(settings->GetPathIndividualMeasurements()); + item->setToolTip(settings->GetPathIndividualMeasurements()); + ui->pathTable->setItem(0, 1, item); + } + + { + ui->pathTable->setItem(1, 0, new QTableWidgetItem(tr("My Multisize Measurements"))); + QTableWidgetItem *item = new QTableWidgetItem(settings->GetPathMultisizeMeasurements()); + item->setToolTip(settings->GetPathMultisizeMeasurements()); + ui->pathTable->setItem(1, 1, item); + } + + { + ui->pathTable->setItem(2, 0, new QTableWidgetItem(tr("My Patterns"))); + QTableWidgetItem *item = new QTableWidgetItem(settings->GetPathPattern()); + item->setToolTip(settings->GetPathPattern()); + ui->pathTable->setItem(2, 1, item); + } + + { + ui->pathTable->setItem(3, 0, new QTableWidgetItem(tr("My Templates"))); + QTableWidgetItem *item = new QTableWidgetItem(settings->GetPathTemplate()); + item->setToolTip(settings->GetPathTemplate()); + ui->pathTable->setItem(3, 1, item); + } + + { + ui->pathTable->setItem(4, 0, new QTableWidgetItem(tr("My Layouts"))); + QTableWidgetItem *item = new QTableWidgetItem(settings->GetPathManualLayouts()); + item->setToolTip(settings->GetPathManualLayouts()); + ui->pathTable->setItem(4, 1, item); + } + + ui->pathTable->verticalHeader()->setDefaultSectionSize(20); + ui->pathTable->resizeColumnsToContents(); + ui->pathTable->resizeRowsToContents(); + ui->pathTable->horizontalHeader()->setStretchLastSection(true); +} diff --git a/src/app/puzzle/dialogs/configpages/puzzlepreferencespathpage.h b/src/app/puzzle/dialogs/configpages/puzzlepreferencespathpage.h new file mode 100644 index 000000000..139208758 --- /dev/null +++ b/src/app/puzzle/dialogs/configpages/puzzlepreferencespathpage.h @@ -0,0 +1,62 @@ +/************************************************************************ + ** + ** @file puzzlepreferencespathpage.h + ** @author Roman Telezhynskyi + ** @date 21 5, 2021 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentina project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2021 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 PUZZLEPREFERENCESPATHPAGE_H +#define PUZZLEPREFERENCESPATHPAGE_H + +#include + +namespace Ui +{ + class PuzzlePreferencesPathPage; +} + +class PuzzlePreferencesPathPage : public QWidget +{ + Q_OBJECT + +public: + explicit PuzzlePreferencesPathPage(QWidget *parent = nullptr); + virtual ~PuzzlePreferencesPathPage(); + + void Apply(); + +protected: + virtual void changeEvent(QEvent* event) override; + +private slots: + void DefaultPath(); + void EditPath(); + +private: + Q_DISABLE_COPY(PuzzlePreferencesPathPage) + Ui::PuzzlePreferencesPathPage *ui; + + void InitTable(); +}; + +#endif // PUZZLEPREFERENCESPATHPAGE_H diff --git a/src/app/puzzle/dialogs/configpages/puzzlepreferencespathpage.ui b/src/app/puzzle/dialogs/configpages/puzzlepreferencespathpage.ui new file mode 100644 index 000000000..9c8da0ff1 --- /dev/null +++ b/src/app/puzzle/dialogs/configpages/puzzlepreferencespathpage.ui @@ -0,0 +1,111 @@ + + + PuzzlePreferencesPathPage + + + + 0 + 0 + 586 + 808 + + + + Form + + + + + + Paths that Valentina uses + + + + + + QAbstractItemView::NoEditTriggers + + + QAbstractItemView::SingleSelection + + + QAbstractItemView::SelectRows + + + false + + + true + + + false + + + + Type + + + + + Path + + + + + + + + + + + + + false + + + + 0 + 0 + + + + Default + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + false + + + + 0 + 0 + + + + Edit + + + + + + + + + + diff --git a/src/app/puzzle/dialogs/dialogpuzzlepreferences.cpp b/src/app/puzzle/dialogs/dialogpuzzlepreferences.cpp new file mode 100644 index 000000000..1691fbab3 --- /dev/null +++ b/src/app/puzzle/dialogs/dialogpuzzlepreferences.cpp @@ -0,0 +1,160 @@ +/************************************************************************ + ** + ** @file dialogpuzzlepreferences.cpp + ** @author Roman Telezhynskyi + ** @date 21 5, 2021 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentina project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2021 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 "dialogpuzzlepreferences.h" +#include "ui_dialogpuzzlepreferences.h" +#include "../vpapplication.h" +#include "configpages/puzzlepreferencesconfigurationpage.h" +#include "configpages/puzzlepreferencespathpage.h" + +#include +#include +#include + +//--------------------------------------------------------------------------------------------------------------------- +DialogPuzzlePreferences::DialogPuzzlePreferences(QWidget *parent) : + QDialog(parent), + ui(new Ui::DialogPuzzlePreferences), + m_configurationPage(new PuzzlePreferencesConfigurationPage), + m_pathPage(new PuzzlePreferencesPathPage) +{ + ui->setupUi(this); + +#if defined(Q_OS_MAC) + setWindowFlags(Qt::Window); +#endif + + VAbstractApplication::VApp()->Settings()->GetOsSeparator() ? setLocale(QLocale()) : setLocale(QLocale::c()); + + QPushButton *bOk = ui->buttonBox->button(QDialogButtonBox::Ok); + SCASSERT(bOk != nullptr) + connect(bOk, &QPushButton::clicked, this, &DialogPuzzlePreferences::Ok); + + QPushButton *bApply = ui->buttonBox->button(QDialogButtonBox::Apply); + SCASSERT(bApply != nullptr) + connect(bApply, &QPushButton::clicked, this, &DialogPuzzlePreferences::Apply); + + ui->pagesWidget->insertWidget(0, m_configurationPage); + ui->pagesWidget->insertWidget(1, m_pathPage); + + connect(ui->contentsWidget, &QListWidget::currentItemChanged, this, &DialogPuzzlePreferences::PageChanged); + ui->pagesWidget->setCurrentIndex(0); +} + +//--------------------------------------------------------------------------------------------------------------------- +DialogPuzzlePreferences::~DialogPuzzlePreferences() +{ + delete ui; +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogPuzzlePreferences::showEvent(QShowEvent *event) +{ + QDialog::showEvent( event ); + if ( event->spontaneous() ) + { + return; + } + + if (m_isInitialized) + { + return; + } + // do your init stuff here + + QSize sz = VAbstractApplication::VApp()->Settings()->GetPreferenceDialogSize(); + if (not sz.isEmpty()) + { + resize(sz); + } + + m_isInitialized = true;//first show windows are held +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogPuzzlePreferences::resizeEvent(QResizeEvent *event) +{ + Q_UNUSED(event) + // remember the size for the next time this dialog is opened, but only + // if widget was already initialized, which rules out the resize at + // dialog creating, which would + if (m_isInitialized) + { + VAbstractApplication::VApp()->Settings()->SetPreferenceDialogSize(size()); + } +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogPuzzlePreferences::changeEvent(QEvent *event) +{ + if (event->type() == QEvent::LanguageChange) + { + // retranslate designer form (single inheritance approach) + ui->retranslateUi(this); + } + // remember to call base class implementation + QDialog::changeEvent(event); +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogPuzzlePreferences::Apply() +{ + QStringList preferences; + + preferences += m_configurationPage->Apply(); + m_pathPage->Apply(); + + if (not preferences.isEmpty()) + { + const QString text = tr("Followed %n option(s) require restart to take effect: %1.", "", + preferences.size()).arg(preferences.join(QStringLiteral(", "))); + QMessageBox::information(this, QCoreApplication::applicationName(), text); + } + + VPApplication::VApp()->PuzzleSettings()->GetOsSeparator() ? setLocale(QLocale()) : setLocale(QLocale::c()); + emit UpdateProperties(); + setResult(QDialog::Accepted); +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogPuzzlePreferences::Ok() +{ + Apply(); + done(QDialog::Accepted); +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogPuzzlePreferences::PageChanged(QListWidgetItem *current, QListWidgetItem *previous) +{ + if (current == nullptr) + { + current = previous; + } + int rowIndex = ui->contentsWidget->row(current); + ui->pagesWidget->setCurrentIndex(rowIndex); +} diff --git a/src/app/puzzle/dialogs/dialogpuzzlepreferences.h b/src/app/puzzle/dialogs/dialogpuzzlepreferences.h new file mode 100644 index 000000000..487a558cc --- /dev/null +++ b/src/app/puzzle/dialogs/dialogpuzzlepreferences.h @@ -0,0 +1,71 @@ +/************************************************************************ + ** + ** @file dialogpuzzlepreferences.h + ** @author Roman Telezhynskyi + ** @date 21 5, 2021 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentina project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2021 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 DIALOGPUZZLEPREFERENCES_H +#define DIALOGPUZZLEPREFERENCES_H + +#include + +namespace Ui +{ + class DialogPuzzlePreferences; +} + +class PuzzlePreferencesConfigurationPage; +class PuzzlePreferencesPathPage; +class QListWidgetItem; + +class DialogPuzzlePreferences : public QDialog +{ + Q_OBJECT + +public: + explicit DialogPuzzlePreferences(QWidget *parent = nullptr); + virtual ~DialogPuzzlePreferences(); + +signals: + void UpdateProperties(); + +protected: + virtual void showEvent(QShowEvent *event) override; + virtual void resizeEvent(QResizeEvent *event) override; + virtual void changeEvent(QEvent* event) override; + +private slots: + void Apply(); + void Ok(); + void PageChanged(QListWidgetItem *current, QListWidgetItem *previous); + +private: + Q_DISABLE_COPY(DialogPuzzlePreferences) + Ui::DialogPuzzlePreferences *ui; + bool m_isInitialized{false}; + PuzzlePreferencesConfigurationPage *m_configurationPage; + PuzzlePreferencesPathPage *m_pathPage; +}; + +#endif // DIALOGPUZZLEPREFERENCES_H diff --git a/src/app/puzzle/dialogs/dialogpuzzlepreferences.ui b/src/app/puzzle/dialogs/dialogpuzzlepreferences.ui new file mode 100644 index 000000000..632f93440 --- /dev/null +++ b/src/app/puzzle/dialogs/dialogpuzzlepreferences.ui @@ -0,0 +1,159 @@ + + + DialogPuzzlePreferences + + + + 0 + 0 + 851 + 551 + + + + Puzzle preferences + + + + :/puzzleicon/64x64/logo.png:/puzzleicon/64x64/logo.png + + + + + + + + + 128 + 0 + + + + + 128 + 16777215 + + + + + 96 + 84 + + + + Qt::ElideMiddle + + + QListView::Static + + + 12 + + + QListView::IconMode + + + 0 + + + + Configuration + + + AlignCenter + + + + :/icon/config.png:/icon/config.png + + + ItemIsSelectable|ItemIsUserCheckable|ItemIsEnabled + + + + + Paths + + + AlignCenter + + + + :/icon/path_config.png:/icon/path_config.png + + + ItemIsSelectable|ItemIsUserCheckable|ItemIsEnabled + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + + + + buttonBox + accepted() + DialogPuzzlePreferences + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + DialogPuzzlePreferences + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/src/app/puzzle/main.cpp b/src/app/puzzle/main.cpp index f104053db..d282fe43a 100644 --- a/src/app/puzzle/main.cpp +++ b/src/app/puzzle/main.cpp @@ -53,6 +53,11 @@ int main(int argc, char *argv[]) #endif // defined(APPIMAGE) && defined(Q_OS_LINUX) Q_INIT_RESOURCE(puzzleicon); + Q_INIT_RESOURCE(theme); + Q_INIT_RESOURCE(icon); + Q_INIT_RESOURCE(schema); + Q_INIT_RESOURCE(flags); + Q_INIT_RESOURCE(style); QT_REQUIRE_VERSION(argc, argv, "5.4.0")// clazy:exclude=qstring-arg,qstring-allocations diff --git a/src/app/puzzle/puzzle.pri b/src/app/puzzle/puzzle.pri index fe479e253..9df2bc733 100644 --- a/src/app/puzzle/puzzle.pri +++ b/src/app/puzzle/puzzle.pri @@ -2,6 +2,9 @@ # This need for corect working file translations.pro SOURCES += \ + $$PWD/dialogs/configpages/puzzlepreferencesconfigurationpage.cpp \ + $$PWD/dialogs/configpages/puzzlepreferencespathpage.cpp \ + $$PWD/dialogs/dialogpuzzlepreferences.cpp \ $$PWD/dialogs/vpdialogabout.cpp \ $$PWD/main.cpp \ $$PWD/vpapplication.cpp \ @@ -29,6 +32,9 @@ SOURCES += \ *msvc*:SOURCES += $$PWD/stable.cpp HEADERS += \ + $$PWD/dialogs/configpages/puzzlepreferencesconfigurationpage.h \ + $$PWD/dialogs/configpages/puzzlepreferencespathpage.h \ + $$PWD/dialogs/dialogpuzzlepreferences.h \ $$PWD/dialogs/vpdialogabout.h \ $$PWD/stable.h \ $$PWD/vpapplication.h \ @@ -54,6 +60,9 @@ HEADERS += \ $$PWD/xml/vplayoutliterals.h FORMS += \ + $$PWD/dialogs/configpages/puzzlepreferencesconfigurationpage.ui \ + $$PWD/dialogs/configpages/puzzlepreferencespathpage.ui \ + $$PWD/dialogs/dialogpuzzlepreferences.ui \ $$PWD/dialogs/vpdialogabout.ui \ $$PWD/vpcarrousel.ui \ $$PWD/vpmainwindow.ui diff --git a/src/app/puzzle/vpapplication.cpp b/src/app/puzzle/vpapplication.cpp index d7ab56eec..d517136b3 100644 --- a/src/app/puzzle/vpapplication.cpp +++ b/src/app/puzzle/vpapplication.cpp @@ -340,7 +340,7 @@ auto VPApplication::MainWindow()-> VPMainWindow * } //--------------------------------------------------------------------------------------------------------------------- -auto VPApplication::MainWindows() -> QList +auto VPApplication::MainWindows() -> QList { Clean(); QList list; @@ -367,6 +367,7 @@ auto VPApplication::NewMainWindow(const VPCommandLinePtr &cmd) -> VPMainWindow * if (not cmd->IsTestModeEnabled()) { puzzle->show(); + puzzle->UpdateWindowTitle(); } puzzle->InitZoom(); return puzzle; diff --git a/src/app/puzzle/vpmainwindow.cpp b/src/app/puzzle/vpmainwindow.cpp index 9f89b2579..351c16465 100644 --- a/src/app/puzzle/vpmainwindow.cpp +++ b/src/app/puzzle/vpmainwindow.cpp @@ -44,6 +44,7 @@ #include "../ifc/exception/vexception.h" #include "../vwidgets/vmaingraphicsscene.h" #include "vpsheet.h" +#include "dialogs/dialogpuzzlepreferences.h" #if QT_VERSION < QT_VERSION_CHECK(5, 12, 0) #include "../vmisc/backport/qscopeguard.h" @@ -111,7 +112,6 @@ VPMainWindow::VPMainWindow(const VPCommandLinePtr &cmd, QWidget *parent) : SetPropertiesData(); - UpdateWindowTitle(); ReadSettings(); #if defined(Q_OS_MAC) @@ -825,7 +825,15 @@ void VPMainWindow::UpdateWindowTitle() } else { - showName = tr("untitled %1.vlt").arg(VPApplication::VApp()->MainWindows().size()+1); + int index = VPApplication::VApp()->MainWindows().indexOf(this); + if (index != -1) + { + showName = tr("untitled %1.vlt").arg(index+1); + } + else + { + showName = tr("untitled.vlt"); + } } showName += QLatin1String("[*]"); @@ -1111,10 +1119,11 @@ void VPMainWindow::changeEvent(QEvent *event) { if (event->type() == QEvent::LanguageChange) { - WindowsLocale(); - // retranslate designer form (single inheritance approach) ui->retranslateUi(this); + + WindowsLocale(); + UpdateWindowTitle(); } // remember to call base class implementation @@ -1134,7 +1143,7 @@ void VPMainWindow::on_actionOpen_triggered() const QString filter(tr("Layout files") + QLatin1String(" (*.vlt)")); //Use standard path to individual measurements - const QString pathTo = VPApplication::VApp()->PuzzleSettings()->GetPathLayouts(); + const QString pathTo = VPApplication::VApp()->PuzzleSettings()->GetPathManualLayouts(); bool usedNotExistedDir = false; QDir directory(pathTo); @@ -1205,7 +1214,7 @@ bool VPMainWindow::on_actionSaveAs_triggered() QString dir; if (curFile.isEmpty()) { - dir = VPApplication::VApp()->PuzzleSettings()->GetPathLayouts(); + dir = VPApplication::VApp()->PuzzleSettings()->GetPathManualLayouts(); } else { @@ -1874,23 +1883,23 @@ void VPMainWindow::ShowWindow() const } //--------------------------------------------------------------------------------------------------------------------- -void VPMainWindow::Preferences() +void VPMainWindow::on_actionPreferences_triggered() { // Calling constructor of the dialog take some time. Because of this user have time to call the dialog twice. -// static QPointer guard;// Prevent any second run -// if (guard.isNull()) -// { -// QGuiApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); -// auto *preferences = new DialogPuzzlePreferences(this); -// // QScopedPointer needs to be sure any exception will never block guard -// QScopedPointer dlg(preferences); -// guard = preferences; -// // Must be first -// connect(dlg.data(), &DialogPuzzlePreferences::UpdateProperties, this, &VPMainWindow::WindowsLocale); -// connect(dlg.data(), &DialogPuzzlePreferences::UpdateProperties, this, &VPMainWindow::ToolBarStyles); -// QGuiApplication::restoreOverrideCursor(); -// dlg->exec(); - // } + static QPointer guard;// Prevent any second run + if (guard.isNull()) + { + QGuiApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); + auto *preferences = new DialogPuzzlePreferences(this); + // QScopedPointer needs to be sure any exception will never block guard + QScopedPointer dlg(preferences); + guard = preferences; + // Must be first + connect(dlg.data(), &DialogPuzzlePreferences::UpdateProperties, this, &VPMainWindow::WindowsLocale); + connect(dlg.data(), &DialogPuzzlePreferences::UpdateProperties, this, &VPMainWindow::ToolBarStyles); + QGuiApplication::restoreOverrideCursor(); + dlg->exec(); + } } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/puzzle/vpmainwindow.h b/src/app/puzzle/vpmainwindow.h index b93e8dcfa..4fce42e92 100644 --- a/src/app/puzzle/vpmainwindow.h +++ b/src/app/puzzle/vpmainwindow.h @@ -89,6 +89,8 @@ public: */ void InitZoom(); + void UpdateWindowTitle(); + public slots: /** * @brief on_actionNew_triggered When the menu action File > New @@ -391,8 +393,10 @@ private slots: */ void on_MouseMoved(const QPointF &scenePos); + void on_actionPreferences_triggered(); + void ShowWindow() const; - void Preferences(); + void ToolBarStyles(); #if defined(Q_OS_MAC) @@ -534,8 +538,6 @@ private: */ void SetCheckBoxValue(QCheckBox *checkbox, bool value); - void UpdateWindowTitle(); - void ReadSettings(); void WriteSettings(); diff --git a/src/app/tape/dialogs/configpages/tapepreferencespathpage.cpp b/src/app/tape/dialogs/configpages/tapepreferencespathpage.cpp index 09edac40b..0b958396d 100644 --- a/src/app/tape/dialogs/configpages/tapepreferencespathpage.cpp +++ b/src/app/tape/dialogs/configpages/tapepreferencespathpage.cpp @@ -70,6 +70,7 @@ void TapePreferencesPathPage::Apply() settings->SetPathMultisizeMeasurements(ui->pathTable->item(1, 1)->text()); settings->SetPathPattern(ui->pathTable->item(2, 1)->text()); settings->SetPathTemplate(ui->pathTable->item(3, 1)->text()); + settings->SetPathManualLayouts(ui->pathTable->item(4, 1)->text()); } //--------------------------------------------------------------------------------------------------------------------- @@ -107,6 +108,9 @@ void TapePreferencesPathPage::DefaultPath() case 3: // templates path = VCommonSettings::GetDefPathTemplate(); break; + case 4: // layouts + path = VCommonSettings::GetDefPathManualLayouts(); + break; default: break; } @@ -138,6 +142,9 @@ void TapePreferencesPathPage::EditPath() case 3: // templates path = MApplication::VApp()->TapeSettings()->GetPathTemplate(); break; + case 4: // layouts + path = MApplication::VApp()->TapeSettings()->GetPathManualLayouts(); + break; default: break; } @@ -171,7 +178,7 @@ void TapePreferencesPathPage::EditPath() void TapePreferencesPathPage::InitTable() { ui->pathTable->clearContents(); - ui->pathTable->setRowCount(4); + ui->pathTable->setRowCount(5); ui->pathTable->setColumnCount(2); const VTapeSettings *settings = MApplication::VApp()->TapeSettings(); @@ -204,6 +211,13 @@ void TapePreferencesPathPage::InitTable() ui->pathTable->setItem(3, 1, item); } + { + ui->pathTable->setItem(4, 0, new QTableWidgetItem(tr("My Layouts"))); + QTableWidgetItem *item = new QTableWidgetItem(settings->GetPathManualLayouts()); + item->setToolTip(settings->GetPathManualLayouts()); + ui->pathTable->setItem(4, 1, item); + } + ui->pathTable->verticalHeader()->setDefaultSectionSize(20); ui->pathTable->resizeColumnsToContents(); ui->pathTable->resizeRowsToContents(); diff --git a/src/app/tape/dialogs/dialogtapepreferences.cpp b/src/app/tape/dialogs/dialogtapepreferences.cpp index 11cf0e732..8be017276 100644 --- a/src/app/tape/dialogs/dialogtapepreferences.cpp +++ b/src/app/tape/dialogs/dialogtapepreferences.cpp @@ -89,7 +89,7 @@ void DialogTapePreferences::showEvent(QShowEvent *event) // do your init stuff here QSize sz = VAbstractApplication::VApp()->Settings()->GetPreferenceDialogSize(); - if (sz.isEmpty() == false) + if (not sz.isEmpty()) { resize(sz); } diff --git a/src/app/tape/mapplication.cpp b/src/app/tape/mapplication.cpp index bf14c3907..584921b69 100644 --- a/src/app/tape/mapplication.cpp +++ b/src/app/tape/mapplication.cpp @@ -854,6 +854,7 @@ TMainWindow *MApplication::NewMainWindow() if (not MApplication::VApp()->IsTestMode()) { tape->show(); + tape->UpdateWindowTitle(); } return tape; } diff --git a/src/app/tape/tmainwindow.cpp b/src/app/tape/tmainwindow.cpp index 94854b3ff..8a5b6cee8 100644 --- a/src/app/tape/tmainwindow.cpp +++ b/src/app/tape/tmainwindow.cpp @@ -133,7 +133,7 @@ TMainWindow::TMainWindow(QWidget *parent) connect(gradation, &QTimer::timeout, this, &TMainWindow::GradationChanged); SetupMenu(); - UpdateWindowTitle(); + ReadSettings(); #if defined(Q_OS_MAC) @@ -594,6 +594,8 @@ void TMainWindow::changeEvent(QEvent *event) // retranslate designer form (single inheritance approach) ui->retranslateUi(this); + UpdateWindowTitle(); + InitMeasurementUnits(); if (mType == MeasurementsType::Multisize) @@ -3241,7 +3243,15 @@ void TMainWindow::UpdateWindowTitle() } else { - showName = tr("untitled %1").arg(MApplication::VApp()->MainWindows().size()+1); + int index = MApplication::VApp()->MainWindows().indexOf(this); + if (index != -1) + { + showName = tr("untitled %1").arg(index+1); + } + else + { + showName = tr("untitled"); + } mType == MeasurementsType::Multisize ? showName += QLatin1String(".vst") : showName += QLatin1String(".vit"); } diff --git a/src/app/tape/tmainwindow.h b/src/app/tape/tmainwindow.h index cd8bdf11b..2bb9436e1 100644 --- a/src/app/tape/tmainwindow.h +++ b/src/app/tape/tmainwindow.h @@ -65,6 +65,8 @@ public: bool LoadFile(const QString &path); + void UpdateWindowTitle(); + protected: virtual void closeEvent(QCloseEvent *event) override; virtual void changeEvent(QEvent* event) override; @@ -215,7 +217,6 @@ private: void MeasurementGUI(); void Controls(); void MFields(bool enabled); - void UpdateWindowTitle(); void ReadSettings(); void WriteSettings(); diff --git a/src/libs/vmisc/vcommonsettings.cpp b/src/libs/vmisc/vcommonsettings.cpp index b7425823b..1aa73dc8d 100644 --- a/src/libs/vmisc/vcommonsettings.cpp +++ b/src/libs/vmisc/vcommonsettings.cpp @@ -73,7 +73,6 @@ namespace { Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsIndividualMeasurements, (QLatin1String("paths/individual_measurements"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsMultisizeMeasurements, (QLatin1String("paths/standard_measurements"))) -Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsLayouts, (QLatin1String("paths/layouts"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsPattern, (QLatin1String("paths/pattern"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsTemplates, (QLatin1String("paths/templates"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsLabelTemplate, (QLatin1String("paths/labels"))) @@ -407,27 +406,6 @@ void VCommonSettings::SetPathMultisizeMeasurements(const QString &value) settings.sync(); } -//--------------------------------------------------------------------------------------------------------------------- -QString VCommonSettings::GetDefPathLayouts() -{ - return QDir::homePath() + QLatin1String("/valentina/") + tr("layouts"); -} - -//--------------------------------------------------------------------------------------------------------------------- -QString VCommonSettings::GetPathLayouts() const -{ - QSettings settings(this->format(), this->scope(), this->organizationName(), *commonIniFilename); - return settings.value(*settingPathsLayouts, GetDefPathLayouts()).toString(); -} - -//--------------------------------------------------------------------------------------------------------------------- -void VCommonSettings::SetPathLayouts(const QString &value) -{ - QSettings settings(this->format(), this->scope(), this->organizationName(), *commonIniFilename); - settings.setValue(*settingPathsLayouts, value); - settings.sync(); -} - //--------------------------------------------------------------------------------------------------------------------- QString VCommonSettings::GetDefPathPattern() { diff --git a/src/libs/vmisc/vcommonsettings.h b/src/libs/vmisc/vcommonsettings.h index 7ff8d4666..8f4a049d3 100644 --- a/src/libs/vmisc/vcommonsettings.h +++ b/src/libs/vmisc/vcommonsettings.h @@ -68,10 +68,6 @@ public: QString GetPathMultisizeMeasurements() const; void SetPathMultisizeMeasurements(const QString &value); - static QString GetDefPathLayouts(); - QString GetPathLayouts() const; - void SetPathLayouts(const QString &value); - static QString GetDefPathPattern(); QString GetPathPattern() const; void SetPathPattern(const QString &value); From a9711316ec94211a349e3deb326cea37aa14d5d8 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Fri, 21 May 2021 21:33:17 +0300 Subject: [PATCH 17/20] Refactoring. --- src/app/puzzle/vpmainwindow.cpp | 1 - src/libs/vmisc/vabstractapplication.cpp | 12 +++++------- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/app/puzzle/vpmainwindow.cpp b/src/app/puzzle/vpmainwindow.cpp index 351c16465..6b6cb0ac6 100644 --- a/src/app/puzzle/vpmainwindow.cpp +++ b/src/app/puzzle/vpmainwindow.cpp @@ -1077,7 +1077,6 @@ void VPMainWindow::CreateWindowMenu(QMenu *menu) } } - //--------------------------------------------------------------------------------------------------------------------- void VPMainWindow::on_actionNew_triggered() { diff --git a/src/libs/vmisc/vabstractapplication.cpp b/src/libs/vmisc/vabstractapplication.cpp index b64817bab..74e436254 100644 --- a/src/libs/vmisc/vabstractapplication.cpp +++ b/src/libs/vmisc/vabstractapplication.cpp @@ -153,16 +153,14 @@ QString VAbstractApplication::translationsPath(const QString &locale) const { return dir.absolutePath(); } - else - { + #if defined(APPIMAGE) && defined(Q_OS_LINUX) - /* Fix path to trasnaltions when run inside AppImage. */ - return AppImageRoot() + PKGDATADIR + trPath; + /* Fix path to trasnaltions when run inside AppImage. */ + return AppImageRoot() + PKGDATADIR + trPath; #else - return PKGDATADIR + trPath; + return PKGDATADIR + trPath; #endif // defined(APPIMAGE) && defined(Q_OS_LINUX) - } -#endif +#endif // Unix } //--------------------------------------------------------------------------------------------------------------------- From cf30ab06abd71ea5de98bd2a78e26c4a9f29dd9d Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Fri, 21 May 2021 21:34:50 +0300 Subject: [PATCH 18/20] Localization. --- share/translations/translations.pro | 2 +- share/translations/valentina.ts | 1038 ++++++++++++++++++++++-- share/translations/valentina_cs_CZ.ts | 1023 +++++++++++++++++++++++- share/translations/valentina_de_DE.ts | 1022 ++++++++++++++++++++++- share/translations/valentina_el_GR.ts | 1046 ++++++++++++++++++++++-- share/translations/valentina_en_CA.ts | 1026 +++++++++++++++++++++++- share/translations/valentina_en_IN.ts | 1026 +++++++++++++++++++++++- share/translations/valentina_en_US.ts | 1026 +++++++++++++++++++++++- share/translations/valentina_es_ES.ts | 1022 ++++++++++++++++++++++- share/translations/valentina_fi_FI.ts | 1062 ++++++++++++++++++++++-- share/translations/valentina_fr_FR.ts | 1038 ++++++++++++++++++++++-- share/translations/valentina_he_IL.ts | 1066 ++++++++++++++++++++++-- share/translations/valentina_id_ID.ts | 1065 ++++++++++++++++++++++-- share/translations/valentina_it_IT.ts | 1030 +++++++++++++++++++++++- share/translations/valentina_nl_NL.ts | 1022 ++++++++++++++++++++++- share/translations/valentina_pl_PL.ts | 1063 ++++++++++++++++++++++-- share/translations/valentina_pt_BR.ts | 1026 +++++++++++++++++++++++- share/translations/valentina_ro_RO.ts | 1067 +++++++++++++++++++++++-- share/translations/valentina_ru_RU.ts | 1023 +++++++++++++++++++++++- share/translations/valentina_uk_UA.ts | 1027 +++++++++++++++++++++++- share/translations/valentina_zh_CN.ts | 1063 ++++++++++++++++++++++-- 21 files changed, 19851 insertions(+), 932 deletions(-) diff --git a/share/translations/translations.pro b/share/translations/translations.pro index 319265c17..c343e6691 100644 --- a/share/translations/translations.pro +++ b/share/translations/translations.pro @@ -26,7 +26,7 @@ DEPENDPATH += \ include(../../src/app/valentina/valentina.pri) include(../../src/app/tape/tape.pri) -include(../../src/app/tape/puzzle.pri) +include(../../src/app/puzzle/puzzle.pri) include(../../src/libs/qmuparser/qmuparser.pri) include(../../src/libs/vpropertyexplorer/vpropertyexplorer.pri) include(../../src/libs/ifc/ifc.pri) diff --git a/share/translations/valentina.ts b/share/translations/valentina.ts index 36d73c707..ecd9811e8 100644 --- a/share/translations/valentina.ts +++ b/share/translations/valentina.ts @@ -1212,6 +1212,14 @@ Notes + + Alias1: + + + + Alias2: + + DialogCutArc @@ -4893,6 +4901,10 @@ Apply settings anyway? yyyy-MM-dd yyyy-MM-dd + + Passmark length: + + DialogPatternXmlEdit @@ -6090,6 +6102,22 @@ Apply settings anyway? Notes + + Curve 1 + + + + Alias1: + + + + Alias2: + + + + Curve 2 + + DialogPreferences @@ -6117,6 +6145,28 @@ Apply settings anyway? + + DialogPuzzlePreferences + + Puzzle preferences + + + + Configuration + Configuration + + + Paths + Paths + + + Followed %n option(s) require restart to take effect: %1. + + + + + + DialogRestrictDimension @@ -8478,7 +8528,7 @@ Do you want to save your changes? This file already opened in another window. - This file already opened in another window. + This file already opened in another window. Wrong units. @@ -8931,27 +8981,27 @@ Do you want to save your changes? Locking file - Locking file + Locking file This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). + This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). + The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). + Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). The lock file could not be created, for lack of permissions. - The lock file could not be created, for lack of permissions. + The lock file could not be created, for lack of permissions. Unknown error happened, for instance a full partition prevented writing out the lock file. - Unknown error happened, for instance a full partition prevented writing out the lock file. + Unknown error happened, for instance a full partition prevented writing out the lock file. Report Bug... @@ -9109,18 +9159,6 @@ Do you want to save your changes? Select main path objects clockwise. - - The document has no write permissions. - - - - Cannot set permissions for %1 to writable. - - - - Could not save the file. - - Could not save the file @@ -9537,10 +9575,6 @@ Do you want to save your changes? Update manual layout - - Do you want to change the premissions? - - Unable to prepare raw layout data. @@ -9589,6 +9623,10 @@ Do you want to save your changes? Couldn't set dimension C. File wasn't opened. + + Could not create recipe file. %1 + + MainWindowsNoGUI @@ -10337,6 +10375,111 @@ This option will take an affect after restart. + + Puzzle + + Export options can be used with single input file only. + Export options can be used with single input file only. + + + Valentina's manual layout editor. + + + + The manual layout file. + + + + + PuzzlePreferencesConfigurationPage + + Form + Form + + + Language + Language + + + GUI language: + GUI language: + + + Toolbar + Toolbar + + + The text appears under the icon (recommended for beginners). + The text appears under the icon (recommended for beginners). + + + User Interface + + + + Activate dark mode + + + + Don't use the native file dialog + + + + dark mode + + + + + PuzzlePreferencesPathPage + + Form + Form + + + Paths that Valentina uses + + + + Type + Type + + + Path + Path + + + Default + Default + + + Edit + Edit + + + Open Directory + Open Directory + + + My Individual Measurements + + + + My Multisize Measurements + + + + My Patterns + + + + My Templates + + + + My Layouts + + + QApplication @@ -10750,6 +10893,18 @@ This option will take an affect after restart. Piece '%1'. Grainline is not valid. + + Invalid global value for a passmark length. Piece '%1'. Length is less than minimal allowed. + + + + Unplaced pieces + + + + Sheet 1 + + QSaveFile @@ -11358,7 +11513,7 @@ This option will take an affect after restart. untitled - untitled + untitled <Empty> @@ -11595,27 +11750,27 @@ Do you want to save your changes? Locking file - Locking file + Locking file This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). + This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). + The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). + Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). The lock file could not be created, for lack of permissions. - The lock file could not be created, for lack of permissions. + The lock file could not be created, for lack of permissions. Unknown error happened, for instance a full partition prevented writing out the lock file. - Unknown error happened, for instance a full partition prevented writing out the lock file. + Unknown error happened, for instance a full partition prevented writing out the lock file. Export to CSV @@ -11661,18 +11816,6 @@ Do you want to save your changes? All files All files - - The measurements document has no write permissions. - - - - Cannot set permissions for %1 to writable. - - - - Could not save the file. - - Could not save the file @@ -11801,10 +11944,6 @@ Do you want to save your changes? <html><head/><body><p>Search measurements by term. </p><p>Prepend &quot;/r/&quot; to the front of the search string to search measurements by regex.</p></body></html> - - Do you want to change the premissions? - - Cannot read settings from a malformed .INI file. @@ -12822,6 +12961,10 @@ Do you want to save your changes? My Patterns + + My Layouts + + ToggleDetailInLayout @@ -13187,6 +13330,50 @@ Do you want to save your changes? Export to CSV Export to CSV + + The measurements document has no write permissions. + + + + Do you want to change the premissions? + + + + Cannot set permissions for %1 to writable. + + + + Could not save the file. + + + + Locking file + Locking file + + + This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). + This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). + + + The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). + The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). + + + Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). + Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). + + + This file already opened in another window. + This file already opened in another window. + + + The lock file could not be created, for lack of permissions. + The lock file could not be created, for lack of permissions. + + + Unknown error happened, for instance a full partition prevented writing out the lock file. + Unknown error happened, for instance a full partition prevented writing out the lock file. + VAbstractNode @@ -13968,6 +14155,34 @@ Do you want to save your changes? The dimension C base + + The filename of exported layout file. Use it to enable console export mode. + + + + The filename of layout file + + + + Load pattern pieces form the raw layout data file. + + + + The raw layout data file + + + + Number corresponding to output format (default = 0, export mode): <not defined> + + + + Number corresponding to tiled pdf page template (default = 0, export mode with tiled pdf format): <not defined> + + + + Run the program in a test mode. The program in this mode loads a single layout file and silently quit without showing the main window. The key have priority before key '%1'. + + VCommonSettings @@ -14277,6 +14492,18 @@ Do you want to save your changes? Creating file '%1' failed! %2 Creating file '%1' failed! %2 + + Can't create an flat dxf file. + + + + Can't create an AAMA dxf file. + + + + Can't create an ASTM dxf file. + + VLayoutPiece @@ -14455,6 +14682,114 @@ Do you want to save your changes? + + VPApplication + + Error parsing file. Program will be terminated. + Error parsing file. Program will be terminated. + + + Error bad id. Program will be terminated. + Error bad id. Program will be terminated. + + + Error can't convert value. Program will be terminated. + Error can't convert value. Program will be terminated. + + + Error empty parameter. Program will be terminated. + Error empty parameter. Program will be terminated. + + + Error wrong id. Program will be terminated. + Error wrong id. Program will be terminated. + + + Something's wrong!! + Something's wrong!! + + + Exception thrown: %1. Program will be terminated. + Exception thrown: %1. Program will be terminated. + + + Can't begin to listen for incoming connections on name '%1' + Can't begin to listen for incoming connections on name '%1' + + + Export mode doesn't support openning several files. + + + + Import raw layout data does not support openning several layout files. + + + + Please, provide one input file. + Please, provide one input file. + + + + VPCarrousel + + Pieces of + + + + + VPCarrouselPieceList + + Move to Sheet + + + + Delete + Delete + + + Remove from Sheet + + + + + VPDialogAbout + + About Puzzle + + + + Puzzle version + + + + Build revision: + Build revision: + + + This program is part of Valentina project. + This program is part of Valentina project. + + + Check For Updates + Check For Updates + + + Cannot open your default browser + Cannot open your default browser + + + Build revision: %1 + Build revision: %1 + + + Built on %1 at %2 + Built on %1 at %2 + + + Web site : %1 + Web site : %1 + + VPE::VBoolProperty @@ -14477,6 +14812,573 @@ Do you want to save your changes? Open File + + VPGraphicsPiece + + Move to + + + + Remove from Sheet + + + + + VPLayoutFileReader + + Piece List + + + + Piece + + + + Got empty attribute '%1' + + + + + VPMainWindow + + Puzzle + + + + &File + &File + + + &Edit + + + + &Window + + + + &Help + &Help + + + Menu + Menu + + + Piece Carrousel + + + + Properties + + + + Current piece properties + + + + Current piece + + + + Infos + + + + Name: + Name: + + + DummyName + + + + UUID: + + + + {7b2ce4ae-96f5-4905-bb34-405cb40ca208} + + + + Seamline + + + + Show Seamline + + + + Geometry + + + + Mirror piece + + + + Rotation + Rotation + + + Angle: + Angle: + + + Rotate the piece by 90° clockwise + + + + Rotate the piece by 90° anti-clockwise + + + + Rotate the piece so that the grainline is vertical + + + + Rotate the piece so that the grainline is horizontal + + + + Placement + + + + X: + + + + Y: + + + + No piece selected + + + + Multiple pieces selected + + + + Sheet properties + + + + Current sheet + + + + Name + + + + Format + + + + Template + + + + Width + Width + + + Length + Length + + + Orientation + + + + Portrait + + + + Landscape + + + + Remove unused length + + + + Margins + + + + Right: + Right: + + + Top: + Top: + + + Left: + Left: + + + Bottom: + Bottom: + + + Placement Grid + + + + Show Grid + + + + Column width + + + + Row height + + + + Control + + + + Follow grainline + + + + No + + + + Vertical grainline + + + + Horizontal grainline + + + + Pieces gap + + + + Sticky edges + + + + Export + Export + + + Export Sheet + + + + Tiles properties + + + + Tiled Pdf Export + + + + Show Tiles on sheet + + + + Export Tiled Pdf + + + + Layout properties + + + + Layout + Layout + + + Name + Name + + + Description + Description + + + Unit + + + + Warning superposition of pieces + + + + Warning pieces out of bound + + + + zoom + + + + Scale + + + + &Open + &Open + + + Ctrl+O + + + + &Save + &Save + + + Ctrl+S + + + + Save &As + + + + Ctrl+Shift+S + + + + &Import Raw Layout Data + + + + E&xit + E&xit + + + Ctrl+Q + + + + &New + &New + + + Ctrl+N + + + + About &Qt + About &Qt + + + About &Puzzle + + + + Zoom in + Zoom in + + + Zoom out + Zoom out + + + Zoom 1:1 + + + + Zoom fit best + Zoom fit best + + + Zoom sheet + + + + Preferences + Preferences + + + File '%1' doesn't exist! + File '%1' doesn't exist! + + + File error. + File error. + + + Unable to read a layout file + + + + Fail to create layout. + + + + Could not extract data from file '%1'. %2 + + + + Centimeters + Centimeters + + + Millimiters + Millimiters + + + Inches + Inches + + + Scale: + + + + untitled %1.vlt + + + + untitled.vlt + + + + read only + + + + Cannot read settings from a malformed .INI file. + + + + Cannot save settings. Access denied. + + + + Failed to open file, is it writable? + + + + &New Window + &New Window + + + Layout files + + + + Open file + Open file + + + Could not save the file + + + + layout + + + + Save as + Save as + + + Failed to lock. This file already opened in another window. + Failed to lock. This file already opened in another window. + + + Could not save file + Could not save file + + + Failed to lock. This file already opened in another window. Expect collissions when run 2 copies of the program. + Failed to lock. This file already opened in another window. Expect collissions when run 2 copies of the program. + + + Raw Layout files + + + + About Qt + About Qt + + + PDF Files + + + + SVG Files + + + + + VPSheet + + Letter + Letter + + + Legal + Legal + + + Tabloid + + + + Roll 24in + Roll 24in + + + Roll 30in + Roll 30in + + + Roll 36in + Roll 36in + + + Roll 42in + Roll 42in + + + Roll 44in + Roll 44in + + + Roll 48in + Roll 44in {48i?} + + + Roll 62in + Roll 44in {62i?} + + + Roll 72in + Roll 44in {72i?} + + + Custom + Custom + + + + VPTileFactory + + Grid ( %1 , %2 ) + + + + Page %1 of %2 + + + VPattern @@ -14765,6 +15667,10 @@ Do you want to save your changes? Value for final measurtement '%1' is infinite or NaN. Please, check your calculations. + + Unable to create record for final measurement '%1'. Error: %2 + + VPiece @@ -15016,6 +15922,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. There is no intersection with curve '%2' and axis through point '%3' with angle %4° + + Length + Length + + + Angle + Angle + + + Label + + + + Segment 1 + + + + Segment 2 + + VToolCut @@ -15898,6 +16824,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. Curves '%2' and '%3' have no point of intersection + + Label + + + + Curve 1 segment 1 + + + + Curve 1 segment 2 + + + + Curve 2 segment 1 + + + + Curve 2 segment 2 + + VToolRotation diff --git a/share/translations/valentina_cs_CZ.ts b/share/translations/valentina_cs_CZ.ts index 2a6506318..cdc14f842 100644 --- a/share/translations/valentina_cs_CZ.ts +++ b/share/translations/valentina_cs_CZ.ts @@ -1212,6 +1212,14 @@ Notes + + Alias1: + + + + Alias2: + + DialogCutArc @@ -4931,6 +4939,10 @@ Přesto použít nastavení? yyyy-MM-dd rrrr mm dd + + Passmark length: + + DialogPatternXmlEdit @@ -6116,6 +6128,22 @@ Přesto použít nastavení? Notes + + Curve 1 + + + + Alias1: + + + + Alias2: + + + + Curve 2 + + DialogPreferences @@ -6144,6 +6172,29 @@ Přesto použít nastavení? + + DialogPuzzlePreferences + + Puzzle preferences + + + + Configuration + Nastavení + + + Paths + Cesty + + + Followed %n option(s) require restart to take effect: %1. + + + + + + + DialogRestrictDimension @@ -8354,7 +8405,7 @@ Chcete uložit své změny? This file already opened in another window. - Tento soubor je již otevřen v jiném okně. + Tento soubor je již otevřen v jiném okně. Wrong units. @@ -8807,27 +8858,27 @@ Chcete uložit své změny? Locking file - Uzamyká se soubor + Uzamyká se soubor This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - Tento soubor je již otevřen v jiném okně. Nevšímejte si této zprávy, pokud chcete pokračovat (nedoporučuje se, může vést k poškození dat). + Tento soubor je již otevřen v jiném okně. Nevšímejte si této zprávy, pokud chcete pokračovat (nedoporučuje se, může vést k poškození dat). The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - Soubor se zámkem se nepodařilo vytvořit kvůli nedostatku oprávnění. Nevšímejte si této zprávy, pokud chcete pokračovat (nedoporučuje se, může vést k poškození dat). + Soubor se zámkem se nepodařilo vytvořit kvůli nedostatku oprávnění. Nevšímejte si této zprávy, pokud chcete pokračovat (nedoporučuje se, může vést k poškození dat). Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - Vyskytla se neznámá chyba. Například plný disk zabránil tomu, aby byl soubor se zámkem zapsán. Nevšímejte si této zprávy, pokud chcete pokračovat (nedoporučuje se, může vést k poškození dat). + Vyskytla se neznámá chyba. Například plný disk zabránil tomu, aby byl soubor se zámkem zapsán. Nevšímejte si této zprávy, pokud chcete pokračovat (nedoporučuje se, může vést k poškození dat). The lock file could not be created, for lack of permissions. - Soubor se zámkem se nepodařilo vytvořit kvůli nedostatku oprávnění. + Soubor se zámkem se nepodařilo vytvořit kvůli nedostatku oprávnění. Unknown error happened, for instance a full partition prevented writing out the lock file. - Vyskytla se neznámá chyba. Například plný disk zabránil tomu, aby byl soubor se zámkem zapsán. + Vyskytla se neznámá chyba. Například plný disk zabránil tomu, aby byl soubor se zámkem zapsán. Report Bug... @@ -8987,15 +9038,15 @@ Chcete uložit své změny? The document has no write permissions. - Dokument nemá žádná oprávnění k zápisu. + Dokument nemá žádná oprávnění k zápisu. Cannot set permissions for %1 to writable. - Nelze nastavit oprávnění pro %1 na zapisovatelný. + Nelze nastavit oprávnění pro %1 na zapisovatelný. Could not save the file. - Nepodařilo se uložit soubor. + Nepodařilo se uložit soubor. Could not save the file @@ -9419,7 +9470,7 @@ Chcete uložit své změny? Do you want to change the premissions? - Chcete změnit oprávnění? + Chcete změnit oprávnění? Unable to prepare raw layout data. @@ -9469,6 +9520,10 @@ Chcete uložit své změny? Couldn't set dimension C. File wasn't opened. + + Could not create recipe file. %1 + + MainWindowsNoGUI @@ -10206,6 +10261,111 @@ Tato volba se projeví po opětovném spuštění. Vykreslení scény + + Puzzle + + Export options can be used with single input file only. + Volby pro vyvedení lze použít jen s jedním vstupním souborem. + + + Valentina's manual layout editor. + + + + The manual layout file. + + + + + PuzzlePreferencesConfigurationPage + + Form + Formulář + + + Language + Jazyk + + + GUI language: + Jazyk rozhraní: + + + Toolbar + Nástrojový panel + + + The text appears under the icon (recommended for beginners). + Text se ukáže pod symbolem (doporučeno pro začátečníky). + + + User Interface + Uživatelské rozhraní + + + Activate dark mode + Zapnout tmavý vzhled + + + Don't use the native file dialog + + + + dark mode + Tmavý vzhled + + + + PuzzlePreferencesPathPage + + Form + Formulář + + + Paths that Valentina uses + Cesty, které používá Valentina + + + Type + Typ + + + Path + Cesta + + + Default + Výchozí + + + Edit + Upravit + + + Open Directory + Otevřít adresář + + + My Individual Measurements + Moje individuální rozměry + + + My Multisize Measurements + Moje vícevelikostní rozměry + + + My Patterns + Moje střihy + + + My Templates + Moje předlohy + + + My Layouts + Moje rozvržení + + QApplication @@ -10619,6 +10779,18 @@ Tato volba se projeví po opětovném spuštění. Piece '%1'. Grainline is not valid. + + Invalid global value for a passmark length. Piece '%1'. Length is less than minimal allowed. + + + + Unplaced pieces + + + + Sheet 1 + + QSaveFile @@ -11212,7 +11384,7 @@ Tato volba se projeví po opětovném spuštění. untitled - bez názvu + bez názvu <Empty> @@ -11449,27 +11621,27 @@ Chcete uložit změny? Locking file - Uzamyká se soubor + Uzamyká se soubor This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - Tento soubor je již otevřen v jiném okně. Nevšímejte si této zprávy, pokud chcete pokračovat (nedoporučuje se, může vést k poškození dat). + Tento soubor je již otevřen v jiném okně. Nevšímejte si této zprávy, pokud chcete pokračovat (nedoporučuje se, může vést k poškození dat). The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - Soubor se zámkem se nepodařilo vytvořit kvůli nedostatku oprávnění. Nevšímejte si této zprávy, pokud chcete pokračovat (nedoporučuje se, může vést k poškození dat). + Soubor se zámkem se nepodařilo vytvořit kvůli nedostatku oprávnění. Nevšímejte si této zprávy, pokud chcete pokračovat (nedoporučuje se, může vést k poškození dat). Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - Vyskytla se neznámá chyba. Například plný disk zabránil tomu, aby byl soubor se zámkem zapsán. Nevšímejte si této zprávy, pokud chcete pokračovat (nedoporučuje se, může vést k poškození dat). + Vyskytla se neznámá chyba. Například plný disk zabránil tomu, aby byl soubor se zámkem zapsán. Nevšímejte si této zprávy, pokud chcete pokračovat (nedoporučuje se, může vést k poškození dat). The lock file could not be created, for lack of permissions. - Soubor se zámkem se nepodařilo vytvořit kvůli nedostatku oprávnění. + Soubor se zámkem se nepodařilo vytvořit kvůli nedostatku oprávnění. Unknown error happened, for instance a full partition prevented writing out the lock file. - Vyskytla se neznámá chyba. Například plný disk zabránil tomu, aby byl soubor se zámkem zapsán. + Vyskytla se neznámá chyba. Například plný disk zabránil tomu, aby byl soubor se zámkem zapsán. Export to CSV @@ -11517,15 +11689,15 @@ Chcete uložit změny? The measurements document has no write permissions. - Dokument s rozměry nemá žádná oprávnění k zápisu. + Dokument s rozměry nemá žádná oprávnění k zápisu. Cannot set permissions for %1 to writable. - Nelze nastavit oprávnění pro %1 na zapisovatelný. + Nelze nastavit oprávnění pro %1 na zapisovatelný. Could not save the file. - Nepodařilo se uložit soubor. + Nepodařilo se uložit soubor. Could not save the file @@ -11669,7 +11841,7 @@ Chcete uložit změny? Do you want to change the premissions? - Chcete změnit oprávnění? + Chcete změnit oprávnění? Cannot read settings from a malformed .INI file. @@ -12629,6 +12801,10 @@ Chcete uložit změny? My Patterns Moje střihy + + My Layouts + Moje rozvržení + ToggleDetailInLayout @@ -12915,6 +13091,50 @@ Chcete uložit změny? Export to CSV Vyvést do CSV + + The measurements document has no write permissions. + Dokument s rozměry nemá žádná oprávnění k zápisu. + + + Do you want to change the premissions? + Chcete změnit oprávnění? + + + Cannot set permissions for %1 to writable. + Nelze nastavit oprávnění pro %1 na zapisovatelný. + + + Could not save the file. + Nepodařilo se uložit soubor. + + + Locking file + Uzamyká se soubor + + + This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). + Tento soubor je již otevřen v jiném okně. Nevšímejte si této zprávy, pokud chcete pokračovat (nedoporučuje se, může vést k poškození dat). + + + The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). + Soubor se zámkem se nepodařilo vytvořit kvůli nedostatku oprávnění. Nevšímejte si této zprávy, pokud chcete pokračovat (nedoporučuje se, může vést k poškození dat). + + + Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). + Vyskytla se neznámá chyba. Například plný disk zabránil tomu, aby byl soubor se zámkem zapsán. Nevšímejte si této zprávy, pokud chcete pokračovat (nedoporučuje se, může vést k poškození dat). + + + This file already opened in another window. + Tento soubor je již otevřen v jiném okně. + + + The lock file could not be created, for lack of permissions. + Soubor se zámkem se nepodařilo vytvořit kvůli nedostatku oprávnění. + + + Unknown error happened, for instance a full partition prevented writing out the lock file. + Vyskytla se neznámá chyba. Například plný disk zabránil tomu, aby byl soubor se zámkem zapsán. + VAbstractNode @@ -13704,6 +13924,34 @@ Chcete uložit změny? The dimension C base + + The filename of exported layout file. Use it to enable console export mode. + + + + The filename of layout file + + + + Load pattern pieces form the raw layout data file. + + + + The raw layout data file + + + + Number corresponding to output format (default = 0, export mode): <not defined> + + + + Number corresponding to tiled pdf page template (default = 0, export mode with tiled pdf format): <not defined> + + + + Run the program in a test mode. The program in this mode loads a single layout file and silently quit without showing the main window. The key have priority before key '%1'. + + VCommonSettings @@ -14006,6 +14254,18 @@ Chcete uložit změny? Creating file '%1' failed! %2 Vytvoření souboru '%1' se nezdařilo! %2 + + Can't create an flat dxf file. + + + + Can't create an AAMA dxf file. + + + + Can't create an ASTM dxf file. + + VLayoutPiece @@ -14180,6 +14440,114 @@ Chcete uložit změny? Značka okénko + + VPApplication + + Error parsing file. Program will be terminated. + Chyba při zpracování souboru. Program bude ukončen. + + + Error bad id. Program will be terminated. + Chyba. Špatný identifikátor. Program bude ukončen. + + + Error can't convert value. Program will be terminated. + Chyba. Nelze převést hodnotu. Program bude ukončen. + + + Error empty parameter. Program will be terminated. + Chyba. Prázdný parametr. Program bude ukončen. + + + Error wrong id. Program will be terminated. + Chyba. Špatný identifikátor. Program bude ukončen. + + + Something's wrong!! + Něco je špatně! + + + Exception thrown: %1. Program will be terminated. + Způsobena chyba: %1. Program bude ukončen. + + + Can't begin to listen for incoming connections on name '%1' + Nelze začít naslouchat příchozímu spojení '%1' + + + Export mode doesn't support openning several files. + + + + Import raw layout data does not support openning several layout files. + + + + Please, provide one input file. + Poskytněte, prosím, jeden vstupní soubor. + + + + VPCarrousel + + Pieces of + + + + + VPCarrouselPieceList + + Move to Sheet + + + + Delete + Smazat + + + Remove from Sheet + + + + + VPDialogAbout + + About Puzzle + + + + Puzzle version + + + + Build revision: + Revize sestavení: + + + This program is part of Valentina project. + Tento program je částí projektu Valentina. + + + Check For Updates + Zkontrolovat aktualizace + + + Cannot open your default browser + Nelze otevřít váš výchozí prohlížeč + + + Build revision: %1 + Revize sestavení: %1 + + + Built on %1 at %2 + Sestaveno %1 v %2 + + + Web site : %1 + Stránky: %1 + + VPE::VBoolProperty @@ -14202,6 +14570,573 @@ Chcete uložit změny? Otevřít soubor + + VPGraphicsPiece + + Move to + + + + Remove from Sheet + + + + + VPLayoutFileReader + + Piece List + + + + Piece + + + + Got empty attribute '%1' + + + + + VPMainWindow + + Puzzle + + + + &File + &Soubor + + + &Edit + + + + &Window + &Okno + + + &Help + &Nápověda + + + Menu + Nabídka + + + Piece Carrousel + + + + Properties + + + + Current piece properties + + + + Current piece + + + + Infos + + + + Name: + Název: + + + DummyName + + + + UUID: + + + + {7b2ce4ae-96f5-4905-bb34-405cb40ca208} + + + + Seamline + + + + Show Seamline + + + + Geometry + + + + Mirror piece + + + + Rotation + Otáčení + + + Angle: + Úhel: + + + Rotate the piece by 90° clockwise + + + + Rotate the piece by 90° anti-clockwise + + + + Rotate the piece so that the grainline is vertical + + + + Rotate the piece so that the grainline is horizontal + + + + Placement + + + + X: + + + + Y: + + + + No piece selected + + + + Multiple pieces selected + + + + Sheet properties + + + + Current sheet + + + + Name + + + + Format + + + + Template + + + + Width + Šířka + + + Length + Délka + + + Orientation + + + + Portrait + + + + Landscape + + + + Remove unused length + + + + Margins + Okraje + + + Right: + Pravý: + + + Top: + Nahoře: + + + Left: + Levý: + + + Bottom: + Dole: + + + Placement Grid + + + + Show Grid + + + + Column width + + + + Row height + + + + Control + Nastavení + + + Follow grainline + Následovat dráhu nitě + + + No + + + + Vertical grainline + + + + Horizontal grainline + + + + Pieces gap + + + + Sticky edges + + + + Export + Vyvést + + + Export Sheet + + + + Tiles properties + + + + Tiled Pdf Export + + + + Show Tiles on sheet + + + + Export Tiled Pdf + + + + Layout properties + + + + Layout + Rozvržení + + + Name + Název + + + Description + Popis + + + Unit + + + + Warning superposition of pieces + + + + Warning pieces out of bound + + + + zoom + + + + Scale + Měřítko + + + &Open + &Otevřít + + + Ctrl+O + Ctrl+O + + + &Save + &Uložit + + + Ctrl+S + + + + Save &As + + + + Ctrl+Shift+S + + + + &Import Raw Layout Data + + + + E&xit + &Ukončit + + + Ctrl+Q + + + + &New + &Nový + + + Ctrl+N + + + + About &Qt + O &Qt + + + About &Puzzle + + + + Zoom in + Přiblížit + + + Zoom out + Oddálit + + + Zoom 1:1 + + + + Zoom fit best + Přizpůsobit velikost oknu aplikace + + + Zoom sheet + + + + Preferences + Nastavení + + + File '%1' doesn't exist! + Soubor '%1' není! + + + File error. + Chyba souboru. + + + Unable to read a layout file + + + + Fail to create layout. + + + + Could not extract data from file '%1'. %2 + + + + Centimeters + Centimetry + + + Millimiters + Milimetry + + + Inches + Palce + + + Scale: + Měřítko: + + + untitled %1.vlt + + + + untitled.vlt + + + + read only + Pouze pro čtení + + + Cannot read settings from a malformed .INI file. + Nelze číst nastavení z poškozeného souboru .INI. + + + Cannot save settings. Access denied. + Nelze uložit nastavení. Přístup odepřen. + + + Failed to open file, is it writable? + + + + &New Window + &Nové okno + + + Layout files + + + + Open file + Otevřít soubor + + + Could not save the file + Nepodařilo se uložit soubor + + + layout + + + + Save as + Uložit jako + + + Failed to lock. This file already opened in another window. + Nepodařilo se uzamknout. Tento soubor je již otevřen v jiném okně. + + + Could not save file + Nepodařilo se uložit soubor + + + Failed to lock. This file already opened in another window. Expect collissions when run 2 copies of the program. + Nepodařilo se uzamknout. Tento soubor je již otevřen v jiném okně. Při zdvojeném vykonávání (dvě kopie programu) může dojít ke střetům. + + + Raw Layout files + + + + About Qt + O Qt + + + PDF Files + + + + SVG Files + + + + + VPSheet + + Letter + Dopis + + + Legal + Legal + + + Tabloid + + + + Roll 24in + Role 24 palců + + + Roll 30in + Role 30 palců + + + Roll 36in + Role 36 palců + + + Roll 42in + Role 42 palců + + + Roll 44in + Role 44 palců + + + Roll 48in + Role 48 palců + + + Roll 62in + Role 62 palců + + + Roll 72in + Role 72 palců + + + Custom + Vlastní + + + + VPTileFactory + + Grid ( %1 , %2 ) + Mřížka ( %1 , %2 ) + + + Page %1 of %2 + Strana %1 z %2 + + VPattern @@ -14490,6 +15425,10 @@ Chcete uložit změny? Value for final measurtement '%1' is infinite or NaN. Please, check your calculations. + + Unable to create record for final measurement '%1'. Error: %2 + + VPiece @@ -14752,6 +15691,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. There is no intersection with curve '%2' and axis through point '%3' with angle %4° Chyba při výpočtu bodu '%1'. Není tu žádný průsečík s křivkou '%2' a osou skrze bod '%3' s úhlem %4° + + Length + Délka + + + Angle + Úhel + + + Label + Popis + + + Segment 1 + + + + Segment 2 + + VToolCutArc @@ -15627,6 +16586,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. Curves '%2' and '%3' have no point of intersection Chyba při výpočtu bodu '%1'. Křivky '%2' a '%3' nemají žádný průsečík + + Label + Popis + + + Curve 1 segment 1 + + + + Curve 1 segment 2 + + + + Curve 2 segment 1 + + + + Curve 2 segment 2 + + VToolRotation diff --git a/share/translations/valentina_de_DE.ts b/share/translations/valentina_de_DE.ts index ac8bb5fc8..3b6cdd53a 100644 --- a/share/translations/valentina_de_DE.ts +++ b/share/translations/valentina_de_DE.ts @@ -1212,6 +1212,14 @@ Notes + + Alias1: + + + + Alias2: + + DialogCutArc @@ -4930,6 +4938,10 @@ Einstellungen trotzdem anwenden? yyyy-MM-dd yyyy-MM-dd + + Passmark length: + + DialogPatternXmlEdit @@ -6115,6 +6127,22 @@ Einstellungen trotzdem anwenden? Notes + + Curve 1 + + + + Alias1: + + + + Alias2: + + + + Curve 2 + + DialogPreferences @@ -6142,6 +6170,28 @@ Einstellungen trotzdem anwenden? + + DialogPuzzlePreferences + + Puzzle preferences + + + + Configuration + + + + Paths + + + + Followed %n option(s) require restart to take effect: %1. + + + + + + DialogRestrictDimension @@ -8351,7 +8401,7 @@ Sollen die Änderungen gespeichert werden? This file already opened in another window. - Diese Datei ist bereits geöffnet. + Diese Datei ist bereits geöffnet. Wrong units. @@ -8804,27 +8854,27 @@ Sollen die Änderungen gespeichert werden? Locking file - Datei wird gesperrt + Datei wird gesperrt This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - Diese Datei ist bereits in einem anderen Fenster geöffnet. Ignorieren Sie diese Nachricht, wenn Sie fortfahren wollen (nicht empfohlen, kann zu Datenverlust führen). + Diese Datei ist bereits in einem anderen Fenster geöffnet. Ignorieren Sie diese Nachricht, wenn Sie fortfahren wollen (nicht empfohlen, kann zu Datenverlust führen). The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - DIe Sperrdatei konnte aufgrund fehlender Berechtigungen nicht erstellt werden. Ignorieren Sie diese Nachricht, wenn Sie fortfahren wollen (nicht empfohlen, kann zu Datenverust führen). + DIe Sperrdatei konnte aufgrund fehlender Berechtigungen nicht erstellt werden. Ignorieren Sie diese Nachricht, wenn Sie fortfahren wollen (nicht empfohlen, kann zu Datenverust führen). Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - Ein unbekannter Fehler ist aufgetreten, zum Beispiel hat eine volle Festplatten-Partition verhindert, dass die Sperrdatei geschrieben werden konnte. Ignorieren Sie diese Nachricht, wenn Sie fortfahren wollen (nicht empfohlen, kann zu Datenverlust führen). + Ein unbekannter Fehler ist aufgetreten, zum Beispiel hat eine volle Festplatten-Partition verhindert, dass die Sperrdatei geschrieben werden konnte. Ignorieren Sie diese Nachricht, wenn Sie fortfahren wollen (nicht empfohlen, kann zu Datenverlust führen). The lock file could not be created, for lack of permissions. - Die Sperrdatei konnte aufgrund fehlender Berechtigungen nicht erstellt werden. + Die Sperrdatei konnte aufgrund fehlender Berechtigungen nicht erstellt werden. Unknown error happened, for instance a full partition prevented writing out the lock file. - Ein unbekannter Fehler ist aufgetreten, zum Beispiel hat eine volle Festplatten-Partition verhindert, dass die Sperrdatei geschrieben werden konnte. + Ein unbekannter Fehler ist aufgetreten, zum Beispiel hat eine volle Festplatten-Partition verhindert, dass die Sperrdatei geschrieben werden konnte. Report Bug... @@ -8984,15 +9034,15 @@ Sollen die Änderungen gespeichert werden? The document has no write permissions. - Dokument hat keine Schreibrechte. + Dokument hat keine Schreibrechte. Cannot set permissions for %1 to writable. - Berechtigungen für %1 können nicht auf beschreibbar gesetzt werden. + Berechtigungen für %1 können nicht auf beschreibbar gesetzt werden. Could not save the file. - Datei konnte nicht gespeichert werden. + Datei konnte nicht gespeichert werden. Could not save the file @@ -9416,7 +9466,7 @@ Sollen die Änderungen gespeichert werden? Do you want to change the premissions? - Wollen Sie die Berechtigung ändern ? + Wollen Sie die Berechtigung ändern ? Unable to prepare raw layout data. @@ -9466,6 +9516,10 @@ Sollen die Änderungen gespeichert werden? Couldn't set dimension C. File wasn't opened. + + Could not create recipe file. %1 + + MainWindowsNoGUI @@ -10203,6 +10257,111 @@ Diese Option wird nach einem Neustart aktiv. Szene berechnen + + Puzzle + + Export options can be used with single input file only. + Exportoptionen können nur mit einer Eingabedatei verwendet werden. + + + Valentina's manual layout editor. + + + + The manual layout file. + + + + + PuzzlePreferencesConfigurationPage + + Form + Form + + + Language + Sprache + + + GUI language: + Sprache der Benutzeroberfläche: + + + Toolbar + + + + The text appears under the icon (recommended for beginners). + + + + User Interface + Benutzeroberfläche + + + Activate dark mode + Dunklen Hintergrund aktivieren + + + Don't use the native file dialog + + + + dark mode + Dunkler Hintergrund + + + + PuzzlePreferencesPathPage + + Form + Form + + + Paths that Valentina uses + Pfade die Valentina benutzt + + + Type + Typ + + + Path + + + + Default + Standard + + + Edit + Bearbeiten + + + Open Directory + + + + My Individual Measurements + Meine Persönlichen Maße + + + My Multisize Measurements + Meine MultiMaß Masse + + + My Patterns + Meine Schnittmuster + + + My Templates + meine Vorlagen + + + My Layouts + Meine Layouts + + QApplication @@ -10616,6 +10775,18 @@ Diese Option wird nach einem Neustart aktiv. Piece '%1'. Grainline is not valid. + + Invalid global value for a passmark length. Piece '%1'. Length is less than minimal allowed. + + + + Unplaced pieces + + + + Sheet 1 + + QSaveFile @@ -11209,7 +11380,7 @@ Diese Option wird nach einem Neustart aktiv. untitled - ohne Titel + ohne Titel <Empty> @@ -11445,27 +11616,27 @@ Do you want to save your changes? Locking file - Datei wird gesperrt + Datei wird gesperrt This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - Diese Datei ist bereits in einem anderen Fenster geöffnet. Ignorieren Sie diese Nachricht, wenn Sie fortfahren wollen (nicht empfohlen, kann zu Datenverlust führen). + Diese Datei ist bereits in einem anderen Fenster geöffnet. Ignorieren Sie diese Nachricht, wenn Sie fortfahren wollen (nicht empfohlen, kann zu Datenverlust führen). The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - DIe Sperrdatei konnte aufgrund fehlender Berechtigungen nicht erstellt werden. Ignorieren Sie diese Nachricht, wenn Sie fortfahren wollen (nicht empfohlen, kann zu Datenverlust führen). + DIe Sperrdatei konnte aufgrund fehlender Berechtigungen nicht erstellt werden. Ignorieren Sie diese Nachricht, wenn Sie fortfahren wollen (nicht empfohlen, kann zu Datenverlust führen). Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - Ein unbekannter Fehler ist aufgetreten, zum Beispiel hat eine volle Festplattenpartition verhindert, dass die Sperrdatei geschrieben werden konnte. Ignorieren Sie diese Nachricht, wenn Sie fortfahren wollen (nicht empfohlen, kann zu Datenverlust führen). + Ein unbekannter Fehler ist aufgetreten, zum Beispiel hat eine volle Festplattenpartition verhindert, dass die Sperrdatei geschrieben werden konnte. Ignorieren Sie diese Nachricht, wenn Sie fortfahren wollen (nicht empfohlen, kann zu Datenverlust führen). The lock file could not be created, for lack of permissions. - Die Sperrdatei konnte aufgrund fehlender Berechtigungen nicht erstellt werden. + Die Sperrdatei konnte aufgrund fehlender Berechtigungen nicht erstellt werden. Unknown error happened, for instance a full partition prevented writing out the lock file. - Ein unbekannter Fehler ist aufgetreten, zum Beispiel hat eine volle Festplattenpartition verhindert, dass die Sperrdatei geschrieben werden konnte. + Ein unbekannter Fehler ist aufgetreten, zum Beispiel hat eine volle Festplattenpartition verhindert, dass die Sperrdatei geschrieben werden konnte. Export to CSV @@ -11513,15 +11684,15 @@ Do you want to save your changes? The measurements document has no write permissions. - Die Maß-Datei hat keine Schreibrechte. + Die Maß-Datei hat keine Schreibrechte. Cannot set permissions for %1 to writable. - Berechtigungen für %1 können nicht auf beschreibbar gesetzt werden. + Berechtigungen für %1 können nicht auf beschreibbar gesetzt werden. Could not save the file. - Datei konnte nicht gespeichert werden. + Datei konnte nicht gespeichert werden. Could not save the file @@ -11665,7 +11836,7 @@ Do you want to save your changes? Do you want to change the premissions? - Wollen Sie die Berechtigung ändern ? + Wollen Sie die Berechtigung ändern ? Cannot read settings from a malformed .INI file. @@ -12632,6 +12803,10 @@ Do you want to save your changes? My Patterns Meine Schnittmuster + + My Layouts + Meine Layouts + ToggleDetailInLayout @@ -12917,6 +13092,50 @@ Do you want to save your changes? Export to CSV Als CSV exportieren + + The measurements document has no write permissions. + Die Maß-Datei hat keine Schreibrechte. + + + Do you want to change the premissions? + Wollen Sie die Berechtigung ändern ? + + + Cannot set permissions for %1 to writable. + Berechtigungen für %1 können nicht auf beschreibbar gesetzt werden. + + + Could not save the file. + Datei konnte nicht gespeichert werden. + + + Locking file + Datei wird gesperrt + + + This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). + Diese Datei ist bereits in einem anderen Fenster geöffnet. Ignorieren Sie diese Nachricht, wenn Sie fortfahren wollen (nicht empfohlen, kann zu Datenverlust führen). + + + The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). + + + + Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). + + + + This file already opened in another window. + Diese Datei ist bereits geöffnet. + + + The lock file could not be created, for lack of permissions. + Die Sperrdatei konnte aufgrund fehlender Berechtigungen nicht erstellt werden. + + + Unknown error happened, for instance a full partition prevented writing out the lock file. + + VAbstractNode @@ -13698,6 +13917,34 @@ Do you want to save your changes? The dimension C base + + The filename of exported layout file. Use it to enable console export mode. + + + + The filename of layout file + + + + Load pattern pieces form the raw layout data file. + + + + The raw layout data file + + + + Number corresponding to output format (default = 0, export mode): <not defined> + + + + Number corresponding to tiled pdf page template (default = 0, export mode with tiled pdf format): <not defined> + + + + Run the program in a test mode. The program in this mode loads a single layout file and silently quit without showing the main window. The key have priority before key '%1'. + + VCommonSettings @@ -13999,6 +14246,18 @@ Do you want to save your changes? Creating file '%1' failed! %2 Fehler beim Erstellen der Datei '%1'! %2 + + Can't create an flat dxf file. + + + + Can't create an AAMA dxf file. + + + + Can't create an ASTM dxf file. + + VLayoutPiece @@ -14173,6 +14432,114 @@ Do you want to save your changes? Box Markierung + + VPApplication + + Error parsing file. Program will be terminated. + Fehler beim Verarbeiten der Datei. Das Programm wird geschlossen. + + + Error bad id. Program will be terminated. + Fehler - unbekannte ID. Das Programm wird geschlossen. + + + Error can't convert value. Program will be terminated. + Fehler - Wert kann nicht konvertiert werden. Das Programm wird geschlossen. + + + Error empty parameter. Program will be terminated. + Fehler - leerer Parameter. Das Programm wird geschlossen. + + + Error wrong id. Program will be terminated. + Fehler - falsche ID. Das Programm wird geschlossen. + + + Something's wrong!! + Etwas ist schiefgegangen! + + + Exception thrown: %1. Program will be terminated. + Ausnahme ausgelöst: %1. Programm wird beendet. + + + Can't begin to listen for incoming connections on name '%1' + Eingehende Verbindung '%1' kann nicht aufgefangen werden + + + Export mode doesn't support openning several files. + + + + Import raw layout data does not support openning several layout files. + + + + Please, provide one input file. + Bitte stellen Sie eine Eingabedatei zur Verfügung. + + + + VPCarrousel + + Pieces of + + + + + VPCarrouselPieceList + + Move to Sheet + + + + Delete + + + + Remove from Sheet + + + + + VPDialogAbout + + About Puzzle + + + + Puzzle version + + + + Build revision: + Build-Revision: + + + This program is part of Valentina project. + Dieses Programm ist Teil des Valentina-Projekts. + + + Check For Updates + Nach Updates suchen + + + Cannot open your default browser + Konnte den Standard-Browser nicht starten + + + Build revision: %1 + Build-Revision: %1 + + + Built on %1 at %2 + + + + Web site : %1 + Webseite: %1 + + VPE::VBoolProperty @@ -14195,6 +14562,573 @@ Do you want to save your changes? Datei öffnen + + VPGraphicsPiece + + Move to + + + + Remove from Sheet + + + + + VPLayoutFileReader + + Piece List + + + + Piece + + + + Got empty attribute '%1' + + + + + VPMainWindow + + Puzzle + + + + &File + &Datei + + + &Edit + + + + &Window + + + + &Help + &Hilfe + + + Menu + Menü + + + Piece Carrousel + + + + Properties + + + + Current piece properties + + + + Current piece + + + + Infos + + + + Name: + Name: + + + DummyName + + + + UUID: + + + + {7b2ce4ae-96f5-4905-bb34-405cb40ca208} + + + + Seamline + + + + Show Seamline + + + + Geometry + + + + Mirror piece + + + + Rotation + Drehung + + + Angle: + Winkel: + + + Rotate the piece by 90° clockwise + + + + Rotate the piece by 90° anti-clockwise + + + + Rotate the piece so that the grainline is vertical + + + + Rotate the piece so that the grainline is horizontal + + + + Placement + + + + X: + + + + Y: + + + + No piece selected + + + + Multiple pieces selected + + + + Sheet properties + + + + Current sheet + + + + Name + + + + Format + + + + Template + + + + Width + Breite + + + Length + Länge + + + Orientation + + + + Portrait + + + + Landscape + + + + Remove unused length + + + + Margins + + + + Right: + Rechts: + + + Top: + Oben: + + + Left: + Links: + + + Bottom: + Unten: + + + Placement Grid + + + + Show Grid + + + + Column width + + + + Row height + + + + Control + Steuerung + + + Follow grainline + Folge der Fadenlauf-Linie + + + No + + + + Vertical grainline + + + + Horizontal grainline + + + + Pieces gap + + + + Sticky edges + + + + Export + Export + + + Export Sheet + + + + Tiles properties + + + + Tiled Pdf Export + + + + Show Tiles on sheet + + + + Export Tiled Pdf + + + + Layout properties + + + + Layout + Layout + + + Name + + + + Description + Beschreibung + + + Unit + + + + Warning superposition of pieces + + + + Warning pieces out of bound + + + + zoom + + + + Scale + + + + &Open + &Öffnen + + + Ctrl+O + Strg+O + + + &Save + &Speichern + + + Ctrl+S + + + + Save &As + + + + Ctrl+Shift+S + + + + &Import Raw Layout Data + + + + E&xit + Valentina &beenden + + + Ctrl+Q + + + + &New + &Neu + + + Ctrl+N + + + + About &Qt + Über &Qt + + + About &Puzzle + + + + Zoom in + Vergrößern + + + Zoom out + Verkleinern + + + Zoom 1:1 + + + + Zoom fit best + In Ansicht einpassen + + + Zoom sheet + + + + Preferences + Einstellungen + + + File '%1' doesn't exist! + Datei '%1' existiert nicht! + + + File error. + Dateifehler. + + + Unable to read a layout file + + + + Fail to create layout. + + + + Could not extract data from file '%1'. %2 + + + + Centimeters + Zentimeter + + + Millimiters + Millimeter + + + Inches + + + + Scale: + Maßstab: + + + untitled %1.vlt + + + + untitled.vlt + + + + read only + schreibgeschützt + + + Cannot read settings from a malformed .INI file. + Kann Einstellungen nicht aus fehlerhafter .INI Datei lesen. + + + Cannot save settings. Access denied. + Kann Einstellungen nicht speichern. Zugriff verwehrt. + + + Failed to open file, is it writable? + + + + &New Window + &Neues Fenster + + + Layout files + + + + Open file + Datei öffnen + + + Could not save the file + Datei konnte nicht gespeichert werden + + + layout + + + + Save as + + + + Failed to lock. This file already opened in another window. + Fehler beim Sperren. Diese Datei ist bereits in einem anderen Fenster geöffnet. + + + Could not save file + + + + Failed to lock. This file already opened in another window. Expect collissions when run 2 copies of the program. + Fehler beim Sperren. Diese Datei ist bereits in einem anderen Fenster geöffnet. Bei zweifachem Ausführen kann es zu Konflikten kommen. + + + Raw Layout files + + + + About Qt + + + + PDF Files + + + + SVG Files + + + + + VPSheet + + Letter + Letter (US-Papiergröße) + + + Legal + Legal (US-Papiergröße) + + + Tabloid + Tablett + + + Roll 24in + Rolle 24 Zoll + + + Roll 30in + Rolle 30 Zoll + + + Roll 36in + Rolle 36 Zoll + + + Roll 42in + Rolle 42 Zoll + + + Roll 44in + Rolle 44 Zoll + + + Roll 48in + Rolle 44 Zoll {48 Zoll ?} + + + Roll 62in + Rolle 44 Zoll {62 Zoll ?} + + + Roll 72in + Rolle 44 Zoll {72 Zoll ?} + + + Custom + Benutzerdefiniert + + + + VPTileFactory + + Grid ( %1 , %2 ) + + + + Page %1 of %2 + + + VPattern @@ -14483,6 +15417,10 @@ Do you want to save your changes? Value for final measurtement '%1' is infinite or NaN. Please, check your calculations. + + Unable to create record for final measurement '%1'. Error: %2 + + VPiece @@ -14734,6 +15672,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. There is no intersection with curve '%2' and axis through point '%3' with angle %4° + + Length + Länge + + + Angle + Winkel + + + Label + Bezeichnung + + + Segment 1 + + + + Segment 2 + + VToolCutArc @@ -15577,6 +16535,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. Curves '%2' and '%3' have no point of intersection + + Label + Bezeichnung + + + Curve 1 segment 1 + + + + Curve 1 segment 2 + + + + Curve 2 segment 1 + + + + Curve 2 segment 2 + + VToolRotation diff --git a/share/translations/valentina_el_GR.ts b/share/translations/valentina_el_GR.ts index c25d0f722..b7df3fcad 100644 --- a/share/translations/valentina_el_GR.ts +++ b/share/translations/valentina_el_GR.ts @@ -1192,6 +1192,14 @@ Notes + + Alias1: + + + + Alias2: + + DialogCutArc @@ -4798,6 +4806,10 @@ Apply settings anyway? yyyy-MM-dd χχχχ-ΜΜ-ηη + + Passmark length: + + DialogPatternXmlEdit @@ -5975,6 +5987,22 @@ Apply settings anyway? Notes + + Curve 1 + + + + Alias1: + + + + Alias2: + + + + Curve 2 + + DialogPreferences @@ -6002,6 +6030,28 @@ Apply settings anyway? + + DialogPuzzlePreferences + + Puzzle preferences + + + + Configuration + + + + Paths + + + + Followed %n option(s) require restart to take effect: %1. + + + + + + DialogRestrictDimension @@ -8179,7 +8229,7 @@ Do you want to save your changes? This file already opened in another window. - Αυτό το αρχείο είναι ήδη ανοιχτό σε ένα άλλο παράθυρο. + Αυτό το αρχείο είναι ήδη ανοιχτό σε ένα άλλο παράθυρο. Wrong units. @@ -8616,27 +8666,15 @@ Do you want to save your changes? Locking file - Κλείδωμα αρχείου + Κλείδωμα αρχείου This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - Αυτό το αρχείο είναι ήδη ανοιχτό σε άλλο παράθυρο. Αγνοήστε αν θέλετε να συνεχίσετε (δε συνιστάται, μπορεί να προκαλέσει καταστροφή δεδομένων). - - - The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - The lock file could not be created, for lack of permissions. - + Αυτό το αρχείο είναι ήδη ανοιχτό σε άλλο παράθυρο. Αγνοήστε αν θέλετε να συνεχίσετε (δε συνιστάται, μπορεί να προκαλέσει καταστροφή δεδομένων). Unknown error happened, for instance a full partition prevented writing out the lock file. - Παρουσιάστηκε άγνωστο σφάλμα, για παράδειγμα μία πλήρης διχοτόμηση εμπόδισε την εγγραφή του αρχείου κλειδώματος. + Παρουσιάστηκε άγνωστο σφάλμα, για παράδειγμα μία πλήρης διχοτόμηση εμπόδισε την εγγραφή του αρχείου κλειδώματος. Report Bug... @@ -8778,17 +8816,9 @@ Do you want to save your changes? Select main path objects clockwise. - - The document has no write permissions. - - - - Cannot set permissions for %1 to writable. - - Could not save the file. - Could not save the file. + Could not save the file. Could not save the file @@ -9202,10 +9232,6 @@ Do you want to save your changes? Update manual layout - - Do you want to change the premissions? - - Unable to prepare raw layout data. @@ -9254,6 +9280,10 @@ Do you want to save your changes? Couldn't set dimension C. File wasn't opened. + + Could not create recipe file. %1 + + MainWindowsNoGUI @@ -9906,6 +9936,111 @@ This option will take an affect after restart. + + Puzzle + + Export options can be used with single input file only. + Οι επιλογές εξαγωγής μπορούν να χρησιμοποιηθούν μόνο με ένα αρχείο εισαγωγής. + + + Valentina's manual layout editor. + + + + The manual layout file. + + + + + PuzzlePreferencesConfigurationPage + + Form + + + + Language + Γλώσσα + + + GUI language: + + + + Toolbar + + + + The text appears under the icon (recommended for beginners). + + + + User Interface + + + + Activate dark mode + + + + Don't use the native file dialog + + + + dark mode + + + + + PuzzlePreferencesPathPage + + Form + + + + Paths that Valentina uses + Διαδρομές φακέλων που χρησιμοποιεί το Valentina + + + Type + Τύπος + + + Path + + + + Default + Προεπιλογή + + + Edit + Επεξεργασία + + + Open Directory + Άνοιγμα φακέλου + + + My Individual Measurements + + + + My Multisize Measurements + + + + My Patterns + Πατρόν μου + + + My Templates + Πρότυπά μου + + + My Layouts + Διατάξεις μου + + QCommandLineParser @@ -10296,6 +10431,18 @@ This option will take an affect after restart. Piece '%1'. Grainline is not valid. + + Invalid global value for a passmark length. Piece '%1'. Length is less than minimal allowed. + + + + Unplaced pieces + + + + Sheet 1 + + QmuParser @@ -10859,7 +11006,7 @@ This option will take an affect after restart. untitled - ανώνυμο + ανώνυμο <Empty> @@ -11076,27 +11223,15 @@ Do you want to save your changes? Locking file - Κλείδωμα αρχείου + Κλείδωμα αρχείου This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - Αυτό το αρχείο είναι ήδη ανοιχτό σε άλλο παράθυρο. Αγνοήστε αν θέλετε να συνεχίσετε (δε συνιστάται, μπορεί να προκαλέσει καταστροφή δεδομένων). - - - The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - The lock file could not be created, for lack of permissions. - + Αυτό το αρχείο είναι ήδη ανοιχτό σε άλλο παράθυρο. Αγνοήστε αν θέλετε να συνεχίσετε (δε συνιστάται, μπορεί να προκαλέσει καταστροφή δεδομένων). Unknown error happened, for instance a full partition prevented writing out the lock file. - Παρουσιάστηκε άγνωστο σφάλμα, για παράδειγμα μία πλήρης διχοτόμηση εμπόδισε την εγγραφή του αρχείου κλειδώματος. + Παρουσιάστηκε άγνωστο σφάλμα, για παράδειγμα μία πλήρης διχοτόμηση εμπόδισε την εγγραφή του αρχείου κλειδώματος. Export to CSV @@ -11142,17 +11277,9 @@ Do you want to save your changes? All files Όλα τα αρχεία - - The measurements document has no write permissions. - - - - Cannot set permissions for %1 to writable. - - Could not save the file. - Could not save the file. + Could not save the file. Could not save the file @@ -11282,10 +11409,6 @@ Do you want to save your changes? <html><head/><body><p>Search measurements by term. </p><p>Prepend &quot;/r/&quot; to the front of the search string to search measurements by regex.</p></body></html> - - Do you want to change the premissions? - - Cannot read settings from a malformed .INI file. @@ -12224,6 +12347,10 @@ Do you want to save your changes? My Patterns Πατρόν μου + + My Layouts + Διατάξεις μου + TogglePieceForceForbidFlipping @@ -12489,6 +12616,50 @@ Do you want to save your changes? Export to CSV Εξαγωγή σε CSV + + The measurements document has no write permissions. + + + + Do you want to change the premissions? + + + + Cannot set permissions for %1 to writable. + + + + Could not save the file. + + + + Locking file + Κλείδωμα αρχείου + + + This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). + Αυτό το αρχείο είναι ήδη ανοιχτό σε άλλο παράθυρο. Αγνοήστε αν θέλετε να συνεχίσετε (δε συνιστάται, μπορεί να προκαλέσει καταστροφή δεδομένων). + + + The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). + + + + Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). + + + + This file already opened in another window. + Αυτό το αρχείο είναι ήδη ανοιχτό σε ένα άλλο παράθυρο. + + + The lock file could not be created, for lack of permissions. + + + + Unknown error happened, for instance a full partition prevented writing out the lock file. + Παρουσιάστηκε άγνωστο σφάλμα, για παράδειγμα μία πλήρης διχοτόμηση εμπόδισε την εγγραφή του αρχείου κλειδώματος. + VAbstractNode @@ -13142,6 +13313,34 @@ Do you want to save your changes? The dimension C base + + The filename of exported layout file. Use it to enable console export mode. + + + + The filename of layout file + + + + Load pattern pieces form the raw layout data file. + + + + The raw layout data file + + + + Number corresponding to output format (default = 0, export mode): <not defined> + + + + Number corresponding to tiled pdf page template (default = 0, export mode with tiled pdf format): <not defined> + + + + Run the program in a test mode. The program in this mode loads a single layout file and silently quit without showing the main window. The key have priority before key '%1'. + + VCommonSettings @@ -13401,6 +13600,18 @@ Do you want to save your changes? Creating file '%1' failed! %2 Η δημιουργία αρχείου '%1' απέτυχε! %2 + + Can't create an flat dxf file. + + + + Can't create an AAMA dxf file. + + + + Can't create an ASTM dxf file. + + VLayoutPiece @@ -13575,6 +13786,114 @@ Do you want to save your changes? + + VPApplication + + Error parsing file. Program will be terminated. + + + + Error bad id. Program will be terminated. + Σφάλμα κακής ταυτότητας. Το πρόγραμμα θα τερματιστεί. + + + Error can't convert value. Program will be terminated. + Σφάλμα λόγω αδυναμίας μετατροπής της τιμής. Το πρόγραμμα θα τερματιστεί. + + + Error empty parameter. Program will be terminated. + Σφάλμα λόγω κενής παραμέτρου. Το πρόγραμμα θα τερματιστεί. + + + Error wrong id. Program will be terminated. + Σφάλμα λόγω λάθους ταυτότητας. Το πρόγραμμα θα τερματιστεί. + + + Something's wrong!! + Υπάρχει σφάλμα!! + + + Exception thrown: %1. Program will be terminated. + + + + Can't begin to listen for incoming connections on name '%1' + Δεν μπορεί να αρχίσει να ακούει τις εισερχόμενες συνδέσεις στο όνομα '%1' + + + Export mode doesn't support openning several files. + + + + Import raw layout data does not support openning several layout files. + + + + Please, provide one input file. + Παρακαλώ, δώστε ένα αρχείο εισόδου. + + + + VPCarrousel + + Pieces of + + + + + VPCarrouselPieceList + + Move to Sheet + + + + Delete + Διαγραφή + + + Remove from Sheet + + + + + VPDialogAbout + + About Puzzle + + + + Puzzle version + + + + Build revision: + Αναθεώρηση έκδοσης: + + + This program is part of Valentina project. + Αυτό το πρόγραμμα είναι μέρος του Valentina project. + + + Check For Updates + Έλεγχος για ενημερώσεις + + + Cannot open your default browser + Δεν είναι δυνατό το άνοιγμα του προεπιλεγμένου περιηγητή + + + Build revision: %1 + Αναθεώρηση έκδοσης: %1 + + + Built on %1 at %2 + + + + Web site : %1 + Ιστοσελίδα : %1 + + VPE::VBoolProperty @@ -13597,6 +13916,573 @@ Do you want to save your changes? Άνοιγμα αρχείου + + VPGraphicsPiece + + Move to + + + + Remove from Sheet + + + + + VPLayoutFileReader + + Piece List + + + + Piece + + + + Got empty attribute '%1' + + + + + VPMainWindow + + Puzzle + + + + &File + &Αρχείο + + + &Edit + + + + &Window + + + + &Help + &Βοήθεια + + + Menu + Μενού + + + Piece Carrousel + + + + Properties + + + + Current piece properties + + + + Current piece + + + + Infos + + + + Name: + Όνομα: + + + DummyName + + + + UUID: + + + + {7b2ce4ae-96f5-4905-bb34-405cb40ca208} + + + + Seamline + + + + Show Seamline + + + + Geometry + + + + Mirror piece + + + + Rotation + Περιστροφή + + + Angle: + Γωνία: + + + Rotate the piece by 90° clockwise + + + + Rotate the piece by 90° anti-clockwise + + + + Rotate the piece so that the grainline is vertical + + + + Rotate the piece so that the grainline is horizontal + + + + Placement + + + + X: + + + + Y: + + + + No piece selected + + + + Multiple pieces selected + + + + Sheet properties + + + + Current sheet + + + + Name + + + + Format + + + + Template + + + + Width + Φάρδος + + + Length + Μήκος + + + Orientation + + + + Portrait + + + + Landscape + + + + Remove unused length + + + + Margins + Περιθώρια + + + Right: + Δεξιά: + + + Top: + Επάνω: + + + Left: + Αριστερά: + + + Bottom: + Κάτω: + + + Placement Grid + + + + Show Grid + + + + Column width + + + + Row height + + + + Control + + + + Follow grainline + + + + No + + + + Vertical grainline + + + + Horizontal grainline + + + + Pieces gap + + + + Sticky edges + + + + Export + Εξαγωγή + + + Export Sheet + + + + Tiles properties + + + + Tiled Pdf Export + + + + Show Tiles on sheet + + + + Export Tiled Pdf + + + + Layout properties + + + + Layout + Τοποθέτηση + + + Name + Όνομα + + + Description + Περιγραφή + + + Unit + + + + Warning superposition of pieces + + + + Warning pieces out of bound + + + + zoom + + + + Scale + + + + &Open + &Άνοιγμα + + + Ctrl+O + + + + &Save + &Αποθήκευση + + + Ctrl+S + + + + Save &As + + + + Ctrl+Shift+S + + + + &Import Raw Layout Data + + + + E&xit + Έ&ξοδος + + + Ctrl+Q + + + + &New + &Νέο + + + Ctrl+N + + + + About &Qt + Σχετικά &Qt + + + About &Puzzle + + + + Zoom in + Μεγέθυνση + + + Zoom out + Σμίκρυνση + + + Zoom 1:1 + + + + Zoom fit best + Προσαρμογή zoom + + + Zoom sheet + + + + Preferences + Προτιμήσεις + + + File '%1' doesn't exist! + Το αρχείο '%1' δεν υπάρχει! + + + File error. + Σφάλμα στο αρχείο. + + + Unable to read a layout file + + + + Fail to create layout. + + + + Could not extract data from file '%1'. %2 + + + + Centimeters + Εκατοστά + + + Millimiters + Χιλιοστά + + + Inches + Ίντσες + + + Scale: + + + + untitled %1.vlt + + + + untitled.vlt + + + + read only + μόνο για ανάγνωση + + + Cannot read settings from a malformed .INI file. + + + + Cannot save settings. Access denied. + + + + Failed to open file, is it writable? + + + + &New Window + &Νέο παράθυρο + + + Layout files + + + + Open file + Άνοιγμα αρχείου + + + Could not save the file + Δεν ήταν δυνατή η αποθήκευση του αρχείου + + + layout + + + + Save as + Αποθήκευση ως + + + Failed to lock. This file already opened in another window. + Αποτυχία κλειδώματος. Το αρχείο έχει ήδη ανοιχτεί σε ένα άλλο παράθυρο. + + + Could not save file + Δεν είναι δυνατή η αποθήκευση αρχείου + + + Failed to lock. This file already opened in another window. Expect collissions when run 2 copies of the program. + Αποτυχία κλειδώματος. Αυτό το αρχείο έχει ήδη ανοιχτεί σε ένα άλλο παράθυρο. Αναμένετε συγκρούσεις όταν τρέχετε 2 αντίγραφα του προγράμματος. + + + Raw Layout files + + + + About Qt + Σχετικά με το Qt + + + PDF Files + + + + SVG Files + + + + + VPSheet + + Letter + Letter + + + Legal + Legal + + + Tabloid + + + + Roll 24in + Ρολό 24 ιντσών + + + Roll 30in + Ρολό 30 ιντσών + + + Roll 36in + Ρολό 36 ιντσών + + + Roll 42in + Ρολό 42 ιντσών + + + Roll 44in + Ρολό 44 ιντσών + + + Roll 48in + Ρολό 44 ιντσών {48i?} + + + Roll 62in + Ρολό 44 ιντσών {62i?} + + + Roll 72in + Ρολό 44 ιντσών {72i?} + + + Custom + Προσαρμογή + + + + VPTileFactory + + Grid ( %1 , %2 ) + + + + Page %1 of %2 + + + VPattern @@ -13885,6 +14771,10 @@ Do you want to save your changes? Value for final measurtement '%1' is infinite or NaN. Please, check your calculations. + + Unable to create record for final measurement '%1'. Error: %2 + + VPiece @@ -14124,6 +15014,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. There is no intersection with curve '%2' and axis through point '%3' with angle %4° + + Length + Μήκος + + + Angle + Γωνία + + + Label + + + + Segment 1 + + + + Segment 2 + + VToolCutArc @@ -14991,6 +15901,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. Curves '%2' and '%3' have no point of intersection + + Label + + + + Curve 1 segment 1 + + + + Curve 1 segment 2 + + + + Curve 2 segment 1 + + + + Curve 2 segment 2 + + VToolRotation diff --git a/share/translations/valentina_en_CA.ts b/share/translations/valentina_en_CA.ts index 6495e4d08..27f20af7b 100644 --- a/share/translations/valentina_en_CA.ts +++ b/share/translations/valentina_en_CA.ts @@ -1212,6 +1212,14 @@ Notes + + Alias1: + + + + Alias2: + + DialogCutArc @@ -4873,6 +4881,10 @@ Apply settings anyway? yyyy-MM-dd yyyy-MM-dd + + Passmark length: + + DialogPatternXmlEdit @@ -6058,6 +6070,22 @@ Apply settings anyway? Notes + + Curve 1 + + + + Alias1: + + + + Alias2: + + + + Curve 2 + + DialogPreferences @@ -6085,6 +6113,28 @@ Apply settings anyway? + + DialogPuzzlePreferences + + Puzzle preferences + + + + Configuration + Configuration + + + Paths + Paths + + + Followed %n option(s) require restart to take effect: %1. + + + + + + DialogRestrictDimension @@ -8294,7 +8344,7 @@ Do you want to save your changes? This file already opened in another window. - This file already opened in another window. + This file already opened in another window. Wrong units. @@ -8747,27 +8797,27 @@ Do you want to save your changes? Locking file - Locking file + Locking file This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). + This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). + The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). + Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). The lock file could not be created, for lack of permissions. - The lock file could not be created, for lack of permissions. + The lock file could not be created, for lack of permissions. Unknown error happened, for instance a full partition prevented writing out the lock file. - Unknown error happened, for instance a full partition prevented writing out the lock file. + Unknown error happened, for instance a full partition prevented writing out the lock file. Report Bug... @@ -8927,15 +8977,15 @@ Do you want to save your changes? The document has no write permissions. - The document has no write permissions. + The document has no write permissions. Cannot set permissions for %1 to writable. - Cannot set permissions for %1 to writable. + Cannot set permissions for %1 to writable. Could not save the file. - Could not save the file. + Could not save the file. Could not save the file @@ -9349,10 +9399,6 @@ Do you want to save your changes? Update manual layout - - Do you want to change the premissions? - - Unable to prepare raw layout data. @@ -9401,6 +9447,10 @@ Do you want to save your changes? Couldn't set dimension C. File wasn't opened. + + Could not create recipe file. %1 + + MainWindowsNoGUI @@ -10113,6 +10163,111 @@ This option will take an affect after restart. + + Puzzle + + Export options can be used with single input file only. + Export options can be used with single input file only. + + + Valentina's manual layout editor. + + + + The manual layout file. + + + + + PuzzlePreferencesConfigurationPage + + Form + Form + + + Language + Language + + + GUI language: + GUI language: + + + Toolbar + Toolbar + + + The text appears under the icon (recommended for beginners). + The text appears under the icon (recommended for beginners). + + + User Interface + + + + Activate dark mode + + + + Don't use the native file dialog + + + + dark mode + + + + + PuzzlePreferencesPathPage + + Form + Form + + + Paths that Valentina uses + Paths that Valentina uses + + + Type + Type + + + Path + Path + + + Default + Default + + + Edit + Edit + + + Open Directory + Open Directory + + + My Individual Measurements + My Individual Measurements + + + My Multisize Measurements + My Multisize Measurements + + + My Patterns + My Patterns + + + My Templates + My Templates + + + My Layouts + My Layouts + + QApplication @@ -10526,6 +10681,18 @@ This option will take an affect after restart. Piece '%1'. Grainline is not valid. + + Invalid global value for a passmark length. Piece '%1'. Length is less than minimal allowed. + + + + Unplaced pieces + + + + Sheet 1 + + QSaveFile @@ -11119,7 +11286,7 @@ This option will take an affect after restart. untitled - untitled + untitled <Empty> @@ -11356,27 +11523,27 @@ Do you want to save your changes? Locking file - Locking file + Locking file This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). + This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). + The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). + Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). The lock file could not be created, for lack of permissions. - The lock file could not be created, for lack of permissions. + The lock file could not be created, for lack of permissions. Unknown error happened, for instance a full partition prevented writing out the lock file. - Unknown error happened, for instance a full partition prevented writing out the lock file. + Unknown error happened, for instance a full partition prevented writing out the lock file. Export to CSV @@ -11424,15 +11591,15 @@ Do you want to save your changes? The measurements document has no write permissions. - The measurements document has no write permissions. + The measurements document has no write permissions. Cannot set permissions for %1 to writable. - Cannot set permissions for %1 to writable. + Cannot set permissions for %1 to writable. Could not save the file. - Could not save the file. + Could not save the file. Could not save the file @@ -11562,10 +11729,6 @@ Do you want to save your changes? <html><head/><body><p>Search measurements by term. </p><p>Prepend &quot;/r/&quot; to the front of the search string to search measurements by regex.</p></body></html> - - Do you want to change the premissions? - - Cannot read settings from a malformed .INI file. @@ -12512,6 +12675,10 @@ Do you want to save your changes? My Patterns My Patterns + + My Layouts + My Layouts + ToggleDetailInLayout @@ -12798,6 +12965,50 @@ Do you want to save your changes? Export to CSV Export to CSV + + The measurements document has no write permissions. + The measurements document has no write permissions. + + + Do you want to change the premissions? + + + + Cannot set permissions for %1 to writable. + Cannot set permissions for %1 to writable. + + + Could not save the file. + Could not save the file. + + + Locking file + Locking file + + + This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). + This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). + + + The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). + The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). + + + Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). + Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). + + + This file already opened in another window. + This file already opened in another window. + + + The lock file could not be created, for lack of permissions. + The lock file could not be created, for lack of permissions. + + + Unknown error happened, for instance a full partition prevented writing out the lock file. + Unknown error happened, for instance a full partition prevented writing out the lock file. + VAbstractNode @@ -13579,6 +13790,34 @@ Do you want to save your changes? The dimension C base + + The filename of exported layout file. Use it to enable console export mode. + + + + The filename of layout file + + + + Load pattern pieces form the raw layout data file. + + + + The raw layout data file + + + + Number corresponding to output format (default = 0, export mode): <not defined> + + + + Number corresponding to tiled pdf page template (default = 0, export mode with tiled pdf format): <not defined> + + + + Run the program in a test mode. The program in this mode loads a single layout file and silently quit without showing the main window. The key have priority before key '%1'. + + VCommonSettings @@ -13881,6 +14120,18 @@ Do you want to save your changes? Creating file '%1' failed! %2 Creating file '%1' failed! %2 + + Can't create an flat dxf file. + + + + Can't create an AAMA dxf file. + + + + Can't create an ASTM dxf file. + + VLayoutPiece @@ -14055,6 +14306,114 @@ Do you want to save your changes? + + VPApplication + + Error parsing file. Program will be terminated. + Error parsing file. Program will be terminated. + + + Error bad id. Program will be terminated. + Error bad id. Program will be terminated. + + + Error can't convert value. Program will be terminated. + Error can't convert value. Program will be terminated. + + + Error empty parameter. Program will be terminated. + Error empty parameter. Program will be terminated. + + + Error wrong id. Program will be terminated. + Error wrong id. Program will be terminated. + + + Something's wrong!! + Something's wrong!! + + + Exception thrown: %1. Program will be terminated. + Exception thrown: %1. Program will be terminated. + + + Can't begin to listen for incoming connections on name '%1' + Can't begin to listen for incoming connections on name '%1' + + + Export mode doesn't support openning several files. + + + + Import raw layout data does not support openning several layout files. + + + + Please, provide one input file. + Please, provide one input file. + + + + VPCarrousel + + Pieces of + + + + + VPCarrouselPieceList + + Move to Sheet + + + + Delete + Delete + + + Remove from Sheet + + + + + VPDialogAbout + + About Puzzle + + + + Puzzle version + + + + Build revision: + Build revision: + + + This program is part of Valentina project. + This program is part of Valentina project. + + + Check For Updates + Check For Updates + + + Cannot open your default browser + Cannot open your default browser + + + Build revision: %1 + Build revision: %1 + + + Built on %1 at %2 + Built on %1 at %2 + + + Web site : %1 + Web site : %1 + + VPE::VBoolProperty @@ -14077,6 +14436,573 @@ Do you want to save your changes? Open File + + VPGraphicsPiece + + Move to + + + + Remove from Sheet + + + + + VPLayoutFileReader + + Piece List + + + + Piece + + + + Got empty attribute '%1' + + + + + VPMainWindow + + Puzzle + + + + &File + &File + + + &Edit + + + + &Window + + + + &Help + &Help + + + Menu + Menu + + + Piece Carrousel + + + + Properties + + + + Current piece properties + + + + Current piece + + + + Infos + + + + Name: + Name: + + + DummyName + + + + UUID: + + + + {7b2ce4ae-96f5-4905-bb34-405cb40ca208} + + + + Seamline + + + + Show Seamline + + + + Geometry + + + + Mirror piece + + + + Rotation + Rotation + + + Angle: + Angle: + + + Rotate the piece by 90° clockwise + + + + Rotate the piece by 90° anti-clockwise + + + + Rotate the piece so that the grainline is vertical + + + + Rotate the piece so that the grainline is horizontal + + + + Placement + + + + X: + + + + Y: + + + + No piece selected + + + + Multiple pieces selected + + + + Sheet properties + + + + Current sheet + + + + Name + + + + Format + + + + Template + + + + Width + Width + + + Length + Length + + + Orientation + + + + Portrait + + + + Landscape + + + + Remove unused length + + + + Margins + + + + Right: + Right: + + + Top: + Top: + + + Left: + Left: + + + Bottom: + Bottom: + + + Placement Grid + + + + Show Grid + + + + Column width + + + + Row height + + + + Control + + + + Follow grainline + + + + No + + + + Vertical grainline + + + + Horizontal grainline + + + + Pieces gap + + + + Sticky edges + + + + Export + Export + + + Export Sheet + + + + Tiles properties + + + + Tiled Pdf Export + + + + Show Tiles on sheet + + + + Export Tiled Pdf + + + + Layout properties + + + + Layout + Layout + + + Name + Name + + + Description + Description + + + Unit + + + + Warning superposition of pieces + + + + Warning pieces out of bound + + + + zoom + + + + Scale + + + + &Open + &Open + + + Ctrl+O + + + + &Save + &Save + + + Ctrl+S + + + + Save &As + + + + Ctrl+Shift+S + + + + &Import Raw Layout Data + + + + E&xit + E&xit + + + Ctrl+Q + + + + &New + &New + + + Ctrl+N + + + + About &Qt + About &Qt + + + About &Puzzle + + + + Zoom in + Zoom in + + + Zoom out + Zoom out + + + Zoom 1:1 + + + + Zoom fit best + Zoom fit best + + + Zoom sheet + + + + Preferences + Preferences + + + File '%1' doesn't exist! + File '%1' doesn't exist! + + + File error. + File error. + + + Unable to read a layout file + + + + Fail to create layout. + + + + Could not extract data from file '%1'. %2 + + + + Centimeters + Centimeters + + + Millimiters + Millimiters + + + Inches + Inches + + + Scale: + + + + untitled %1.vlt + + + + untitled.vlt + + + + read only + read only + + + Cannot read settings from a malformed .INI file. + + + + Cannot save settings. Access denied. + + + + Failed to open file, is it writable? + + + + &New Window + &New Window + + + Layout files + + + + Open file + Open file + + + Could not save the file + Could not save the file + + + layout + + + + Save as + Save as + + + Failed to lock. This file already opened in another window. + Failed to lock. This file already opened in another window. + + + Could not save file + Could not save file + + + Failed to lock. This file already opened in another window. Expect collissions when run 2 copies of the program. + Failed to lock. This file already opened in another window. Expect collissions when run 2 copies of the program. + + + Raw Layout files + + + + About Qt + About Qt + + + PDF Files + + + + SVG Files + + + + + VPSheet + + Letter + Letter + + + Legal + Legal + + + Tabloid + + + + Roll 24in + Roll 24in + + + Roll 30in + Roll 30in + + + Roll 36in + Roll 36in + + + Roll 42in + Roll 42in + + + Roll 44in + Roll 44in + + + Roll 48in + Roll 44in {48i?} + + + Roll 62in + Roll 44in {62i?} + + + Roll 72in + Roll 44in {72i?} + + + Custom + Custom + + + + VPTileFactory + + Grid ( %1 , %2 ) + Grid ( %1 , %2 ) + + + Page %1 of %2 + Page %1 of %2 + + VPattern @@ -14365,6 +15291,10 @@ Do you want to save your changes? Value for final measurtement '%1' is infinite or NaN. Please, check your calculations. + + Unable to create record for final measurement '%1'. Error: %2 + + VPiece @@ -14623,6 +15553,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. There is no intersection with curve '%2' and axis through point '%3' with angle %4° + + Length + Length + + + Angle + Angle + + + Label + + + + Segment 1 + + + + Segment 2 + + VToolCutArc @@ -15498,6 +16448,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. Curves '%2' and '%3' have no point of intersection + + Label + + + + Curve 1 segment 1 + + + + Curve 1 segment 2 + + + + Curve 2 segment 1 + + + + Curve 2 segment 2 + + VToolRotation diff --git a/share/translations/valentina_en_IN.ts b/share/translations/valentina_en_IN.ts index b3cc537bd..d64d53aa1 100644 --- a/share/translations/valentina_en_IN.ts +++ b/share/translations/valentina_en_IN.ts @@ -1212,6 +1212,14 @@ Notes + + Alias1: + + + + Alias2: + + DialogCutArc @@ -4873,6 +4881,10 @@ Apply settings anyway? yyyy-MM-dd yyyy-MM-dd + + Passmark length: + + DialogPatternXmlEdit @@ -6058,6 +6070,22 @@ Apply settings anyway? Notes + + Curve 1 + + + + Alias1: + + + + Alias2: + + + + Curve 2 + + DialogPreferences @@ -6085,6 +6113,28 @@ Apply settings anyway? + + DialogPuzzlePreferences + + Puzzle preferences + + + + Configuration + Configuration + + + Paths + Paths + + + Followed %n option(s) require restart to take effect: %1. + + + + + + DialogRestrictDimension @@ -8294,7 +8344,7 @@ Do you want to save your changes? This file already opened in another window. - This file already opened in another window. + This file already opened in another window. Wrong units. @@ -8747,27 +8797,27 @@ Do you want to save your changes? Locking file - Locking file + Locking file This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). + This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). + The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). + Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). The lock file could not be created, for lack of permissions. - The lock file could not be created, for lack of permissions. + The lock file could not be created, for lack of permissions. Unknown error happened, for instance a full partition prevented writing out the lock file. - Unknown error happened, for instance a full partition prevented writing out the lock file. + Unknown error happened, for instance a full partition prevented writing out the lock file. Report Bug... @@ -8927,15 +8977,15 @@ Do you want to save your changes? The document has no write permissions. - The document has no write permissions. + The document has no write permissions. Cannot set permissions for %1 to writable. - Cannot set permissions for %1 to writable. + Cannot set permissions for %1 to writable. Could not save the file. - Could not save the file. + Could not save the file. Could not save the file @@ -9349,10 +9399,6 @@ Do you want to save your changes? Update manual layout - - Do you want to change the premissions? - - Unable to prepare raw layout data. @@ -9401,6 +9447,10 @@ Do you want to save your changes? Couldn't set dimension C. File wasn't opened. + + Could not create recipe file. %1 + + MainWindowsNoGUI @@ -10113,6 +10163,111 @@ This option will take an affect after restart. + + Puzzle + + Export options can be used with single input file only. + Export options can be used with single input file only. + + + Valentina's manual layout editor. + + + + The manual layout file. + + + + + PuzzlePreferencesConfigurationPage + + Form + Form + + + Language + Language + + + GUI language: + GUI language: + + + Toolbar + Toolbar + + + The text appears under the icon (recommended for beginners). + The text appears under the icon (recommended for beginners). + + + User Interface + + + + Activate dark mode + + + + Don't use the native file dialog + + + + dark mode + + + + + PuzzlePreferencesPathPage + + Form + Form + + + Paths that Valentina uses + Paths that Valentina uses + + + Type + Type + + + Path + Path + + + Default + Default + + + Edit + Edit + + + Open Directory + Open Directory + + + My Individual Measurements + My Individual Measurements + + + My Multisize Measurements + My Multisize Measurements + + + My Patterns + My Patterns + + + My Templates + My Templates + + + My Layouts + My Layouts + + QApplication @@ -10526,6 +10681,18 @@ This option will take an affect after restart. Piece '%1'. Grainline is not valid. + + Invalid global value for a passmark length. Piece '%1'. Length is less than minimal allowed. + + + + Unplaced pieces + + + + Sheet 1 + + QSaveFile @@ -11119,7 +11286,7 @@ This option will take an affect after restart. untitled - untitled + untitled <Empty> @@ -11356,27 +11523,27 @@ Do you want to save your changes? Locking file - Locking file + Locking file This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). + This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). + The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). + Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). The lock file could not be created, for lack of permissions. - The lock file could not be created, for lack of permissions. + The lock file could not be created, for lack of permissions. Unknown error happened, for instance a full partition prevented writing out the lock file. - Unknown error happened, for instance a full partition prevented writing out the lock file. + Unknown error happened, for instance a full partition prevented writing out the lock file. Export to CSV @@ -11424,15 +11591,15 @@ Do you want to save your changes? The measurements document has no write permissions. - The measurements document has no write permissions. + The measurements document has no write permissions. Cannot set permissions for %1 to writable. - Cannot set permissions for %1 to writable. + Cannot set permissions for %1 to writable. Could not save the file. - Could not save the file. + Could not save the file. Could not save the file @@ -11562,10 +11729,6 @@ Do you want to save your changes? <html><head/><body><p>Search measurements by term. </p><p>Prepend &quot;/r/&quot; to the front of the search string to search measurements by regex.</p></body></html> - - Do you want to change the premissions? - - Cannot read settings from a malformed .INI file. @@ -12512,6 +12675,10 @@ Do you want to save your changes? My Patterns My Patterns + + My Layouts + My Layouts + ToggleDetailInLayout @@ -12798,6 +12965,50 @@ Do you want to save your changes? Export to CSV Export to CSV + + The measurements document has no write permissions. + The measurements document has no write permissions. + + + Do you want to change the premissions? + + + + Cannot set permissions for %1 to writable. + Cannot set permissions for %1 to writable. + + + Could not save the file. + Could not save the file. + + + Locking file + Locking file + + + This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). + This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). + + + The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). + The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). + + + Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). + Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). + + + This file already opened in another window. + This file already opened in another window. + + + The lock file could not be created, for lack of permissions. + The lock file could not be created, for lack of permissions. + + + Unknown error happened, for instance a full partition prevented writing out the lock file. + Unknown error happened, for instance a full partition prevented writing out the lock file. + VAbstractNode @@ -13579,6 +13790,34 @@ Do you want to save your changes? The dimension C base + + The filename of exported layout file. Use it to enable console export mode. + + + + The filename of layout file + + + + Load pattern pieces form the raw layout data file. + + + + The raw layout data file + + + + Number corresponding to output format (default = 0, export mode): <not defined> + + + + Number corresponding to tiled pdf page template (default = 0, export mode with tiled pdf format): <not defined> + + + + Run the program in a test mode. The program in this mode loads a single layout file and silently quit without showing the main window. The key have priority before key '%1'. + + VCommonSettings @@ -13881,6 +14120,18 @@ Do you want to save your changes? Creating file '%1' failed! %2 Creating file '%1' failed! %2 + + Can't create an flat dxf file. + + + + Can't create an AAMA dxf file. + + + + Can't create an ASTM dxf file. + + VLayoutPiece @@ -14055,6 +14306,114 @@ Do you want to save your changes? + + VPApplication + + Error parsing file. Program will be terminated. + Error parsing file. Program will be terminated. + + + Error bad id. Program will be terminated. + Error bad id. Program will be terminated. + + + Error can't convert value. Program will be terminated. + Error can't convert value. Program will be terminated. + + + Error empty parameter. Program will be terminated. + Error empty parameter. Program will be terminated. + + + Error wrong id. Program will be terminated. + Error wrong id. Program will be terminated. + + + Something's wrong!! + Something's wrong!! + + + Exception thrown: %1. Program will be terminated. + Exception thrown: %1. Program will be terminated. + + + Can't begin to listen for incoming connections on name '%1' + Can't begin to listen for incoming connections on name '%1' + + + Export mode doesn't support openning several files. + + + + Import raw layout data does not support openning several layout files. + + + + Please, provide one input file. + Please, provide one input file. + + + + VPCarrousel + + Pieces of + + + + + VPCarrouselPieceList + + Move to Sheet + + + + Delete + Delete + + + Remove from Sheet + + + + + VPDialogAbout + + About Puzzle + + + + Puzzle version + + + + Build revision: + Build revision: + + + This program is part of Valentina project. + This program is part of Valentina project. + + + Check For Updates + Check For Updates + + + Cannot open your default browser + Cannot open your default browser + + + Build revision: %1 + Build revision: %1 + + + Built on %1 at %2 + Built on %1 at %2 + + + Web site : %1 + Web site : %1 + + VPE::VBoolProperty @@ -14077,6 +14436,573 @@ Do you want to save your changes? Open File + + VPGraphicsPiece + + Move to + + + + Remove from Sheet + + + + + VPLayoutFileReader + + Piece List + + + + Piece + + + + Got empty attribute '%1' + + + + + VPMainWindow + + Puzzle + + + + &File + &File + + + &Edit + + + + &Window + + + + &Help + &Help + + + Menu + Menu + + + Piece Carrousel + + + + Properties + + + + Current piece properties + + + + Current piece + + + + Infos + + + + Name: + Name: + + + DummyName + + + + UUID: + + + + {7b2ce4ae-96f5-4905-bb34-405cb40ca208} + + + + Seamline + + + + Show Seamline + + + + Geometry + + + + Mirror piece + + + + Rotation + Rotation + + + Angle: + Angle: + + + Rotate the piece by 90° clockwise + + + + Rotate the piece by 90° anti-clockwise + + + + Rotate the piece so that the grainline is vertical + + + + Rotate the piece so that the grainline is horizontal + + + + Placement + + + + X: + + + + Y: + + + + No piece selected + + + + Multiple pieces selected + + + + Sheet properties + + + + Current sheet + + + + Name + + + + Format + + + + Template + + + + Width + Width + + + Length + Length + + + Orientation + + + + Portrait + + + + Landscape + + + + Remove unused length + + + + Margins + + + + Right: + Right: + + + Top: + Top: + + + Left: + Left: + + + Bottom: + Bottom: + + + Placement Grid + + + + Show Grid + + + + Column width + + + + Row height + + + + Control + + + + Follow grainline + + + + No + + + + Vertical grainline + + + + Horizontal grainline + + + + Pieces gap + + + + Sticky edges + + + + Export + Export + + + Export Sheet + + + + Tiles properties + + + + Tiled Pdf Export + + + + Show Tiles on sheet + + + + Export Tiled Pdf + + + + Layout properties + + + + Layout + Layout + + + Name + Name + + + Description + Description + + + Unit + + + + Warning superposition of pieces + + + + Warning pieces out of bound + + + + zoom + + + + Scale + + + + &Open + &Open + + + Ctrl+O + + + + &Save + &Save + + + Ctrl+S + + + + Save &As + + + + Ctrl+Shift+S + + + + &Import Raw Layout Data + + + + E&xit + E&xit + + + Ctrl+Q + + + + &New + &New + + + Ctrl+N + + + + About &Qt + About &Qt + + + About &Puzzle + + + + Zoom in + Zoom in + + + Zoom out + Zoom out + + + Zoom 1:1 + + + + Zoom fit best + Zoom fit best + + + Zoom sheet + + + + Preferences + Preferences + + + File '%1' doesn't exist! + File '%1' doesn't exist! + + + File error. + File error. + + + Unable to read a layout file + + + + Fail to create layout. + + + + Could not extract data from file '%1'. %2 + + + + Centimeters + Centimeters + + + Millimiters + Millimiters + + + Inches + Inches + + + Scale: + + + + untitled %1.vlt + + + + untitled.vlt + + + + read only + read only + + + Cannot read settings from a malformed .INI file. + + + + Cannot save settings. Access denied. + + + + Failed to open file, is it writable? + + + + &New Window + &New Window + + + Layout files + + + + Open file + Open file + + + Could not save the file + Could not save the file + + + layout + + + + Save as + Save as + + + Failed to lock. This file already opened in another window. + Failed to lock. This file already opened in another window. + + + Could not save file + Could not save file + + + Failed to lock. This file already opened in another window. Expect collissions when run 2 copies of the program. + Failed to lock. This file already opened in another window. Expect collissions when run 2 copies of the program. + + + Raw Layout files + + + + About Qt + About Qt + + + PDF Files + + + + SVG Files + + + + + VPSheet + + Letter + Letter + + + Legal + Legal + + + Tabloid + + + + Roll 24in + Roll 24in + + + Roll 30in + Roll 30in + + + Roll 36in + Roll 36in + + + Roll 42in + Roll 42in + + + Roll 44in + Roll 44in + + + Roll 48in + Roll 44in {48i?} + + + Roll 62in + Roll 44in {62i?} + + + Roll 72in + Roll 44in {72i?} + + + Custom + Custom + + + + VPTileFactory + + Grid ( %1 , %2 ) + Grid ( %1 , %2 ) + + + Page %1 of %2 + Page %1 of %2 + + VPattern @@ -14365,6 +15291,10 @@ Do you want to save your changes? Value for final measurtement '%1' is infinite or NaN. Please, check your calculations. + + Unable to create record for final measurement '%1'. Error: %2 + + VPiece @@ -14623,6 +15553,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. There is no intersection with curve '%2' and axis through point '%3' with angle %4° + + Length + Length + + + Angle + Angle + + + Label + + + + Segment 1 + + + + Segment 2 + + VToolCutArc @@ -15498,6 +16448,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. Curves '%2' and '%3' have no point of intersection + + Label + + + + Curve 1 segment 1 + + + + Curve 1 segment 2 + + + + Curve 2 segment 1 + + + + Curve 2 segment 2 + + VToolRotation diff --git a/share/translations/valentina_en_US.ts b/share/translations/valentina_en_US.ts index 84eb86b4c..2f81af094 100644 --- a/share/translations/valentina_en_US.ts +++ b/share/translations/valentina_en_US.ts @@ -1212,6 +1212,14 @@ Notes + + Alias1: + + + + Alias2: + + DialogCutArc @@ -4873,6 +4881,10 @@ Apply settings anyway? yyyy-MM-dd yyyy-MM-dd + + Passmark length: + + DialogPatternXmlEdit @@ -6058,6 +6070,22 @@ Apply settings anyway? Notes + + Curve 1 + + + + Alias1: + + + + Alias2: + + + + Curve 2 + + DialogPreferences @@ -6085,6 +6113,28 @@ Apply settings anyway? + + DialogPuzzlePreferences + + Puzzle preferences + + + + Configuration + Configuration + + + Paths + Paths + + + Followed %n option(s) require restart to take effect: %1. + + + + + + DialogRestrictDimension @@ -8294,7 +8344,7 @@ Do you want to save your changes? This file already opened in another window. - This file already opened in another window. + This file already opened in another window. Wrong units. @@ -8747,27 +8797,27 @@ Do you want to save your changes? Locking file - Locking file + Locking file This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). + This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). + The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). + Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). The lock file could not be created, for lack of permissions. - The lock file could not be created, for lack of permissions. + The lock file could not be created, for lack of permissions. Unknown error happened, for instance a full partition prevented writing out the lock file. - Unknown error happened, for instance a full partition prevented writing out the lock file. + Unknown error happened, for instance a full partition prevented writing out the lock file. Report Bug... @@ -8927,15 +8977,15 @@ Do you want to save your changes? The document has no write permissions. - The document has no write permissions. + The document has no write permissions. Cannot set permissions for %1 to writable. - Cannot set permissions for %1 to writable. + Cannot set permissions for %1 to writable. Could not save the file. - Could not save the file. + Could not save the file. Could not save the file @@ -9349,10 +9399,6 @@ Do you want to save your changes? Update manual layout - - Do you want to change the premissions? - - Unable to prepare raw layout data. @@ -9401,6 +9447,10 @@ Do you want to save your changes? Couldn't set dimension C. File wasn't opened. + + Could not create recipe file. %1 + + MainWindowsNoGUI @@ -10113,6 +10163,111 @@ This option will take an affect after restart. + + Puzzle + + Export options can be used with single input file only. + Export options can be used with single input file only. + + + Valentina's manual layout editor. + + + + The manual layout file. + + + + + PuzzlePreferencesConfigurationPage + + Form + Form + + + Language + Language + + + GUI language: + GUI language: + + + Toolbar + Toolbar + + + The text appears under the icon (recommended for beginners). + The text appears under the icon (recommended for beginners). + + + User Interface + + + + Activate dark mode + + + + Don't use the native file dialog + + + + dark mode + + + + + PuzzlePreferencesPathPage + + Form + Form + + + Paths that Valentina uses + Paths that Valentina uses + + + Type + Type + + + Path + Path + + + Default + Default + + + Edit + Edit + + + Open Directory + Open Directory + + + My Individual Measurements + My Individual Measurements + + + My Multisize Measurements + My Multisize Measurements + + + My Patterns + My Patterns + + + My Templates + My Templates + + + My Layouts + My Layouts + + QApplication @@ -10526,6 +10681,18 @@ This option will take an affect after restart. Piece '%1'. Grainline is not valid. + + Invalid global value for a passmark length. Piece '%1'. Length is less than minimal allowed. + + + + Unplaced pieces + + + + Sheet 1 + + QSaveFile @@ -11119,7 +11286,7 @@ This option will take an affect after restart. untitled - untitled + untitled <Empty> @@ -11356,27 +11523,27 @@ Do you want to save your changes? Locking file - Locking file + Locking file This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). + This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). + The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). + Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). The lock file could not be created, for lack of permissions. - The lock file could not be created, for lack of permissions. + The lock file could not be created, for lack of permissions. Unknown error happened, for instance a full partition prevented writing out the lock file. - Unknown error happened, for instance a full partition prevented writing out the lock file. + Unknown error happened, for instance a full partition prevented writing out the lock file. Export to CSV @@ -11424,15 +11591,15 @@ Do you want to save your changes? The measurements document has no write permissions. - The measurements document has no write permissions. + The measurements document has no write permissions. Cannot set permissions for %1 to writable. - Cannot set permissions for %1 to writable. + Cannot set permissions for %1 to writable. Could not save the file. - Could not save the file. + Could not save the file. Could not save the file @@ -11562,10 +11729,6 @@ Do you want to save your changes? <html><head/><body><p>Search measurements by term. </p><p>Prepend &quot;/r/&quot; to the front of the search string to search measurements by regex.</p></body></html> - - Do you want to change the premissions? - - Cannot read settings from a malformed .INI file. @@ -12512,6 +12675,10 @@ Do you want to save your changes? My Patterns My Patterns + + My Layouts + My Layouts + ToggleDetailInLayout @@ -12798,6 +12965,50 @@ Do you want to save your changes? Export to CSV Export to CSV + + The measurements document has no write permissions. + The measurements document has no write permissions. + + + Do you want to change the premissions? + + + + Cannot set permissions for %1 to writable. + Cannot set permissions for %1 to writable. + + + Could not save the file. + Could not save the file. + + + Locking file + Locking file + + + This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). + This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). + + + The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). + The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). + + + Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). + Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). + + + This file already opened in another window. + This file already opened in another window. + + + The lock file could not be created, for lack of permissions. + The lock file could not be created, for lack of permissions. + + + Unknown error happened, for instance a full partition prevented writing out the lock file. + Unknown error happened, for instance a full partition prevented writing out the lock file. + VAbstractNode @@ -13579,6 +13790,34 @@ Do you want to save your changes? The dimension C base + + The filename of exported layout file. Use it to enable console export mode. + + + + The filename of layout file + + + + Load pattern pieces form the raw layout data file. + + + + The raw layout data file + + + + Number corresponding to output format (default = 0, export mode): <not defined> + + + + Number corresponding to tiled pdf page template (default = 0, export mode with tiled pdf format): <not defined> + + + + Run the program in a test mode. The program in this mode loads a single layout file and silently quit without showing the main window. The key have priority before key '%1'. + + VCommonSettings @@ -13881,6 +14120,18 @@ Do you want to save your changes? Creating file '%1' failed! %2 Creating file '%1' failed! %2 + + Can't create an flat dxf file. + + + + Can't create an AAMA dxf file. + + + + Can't create an ASTM dxf file. + + VLayoutPiece @@ -14055,6 +14306,114 @@ Do you want to save your changes? + + VPApplication + + Error parsing file. Program will be terminated. + Error parsing file. Program will be terminated. + + + Error bad id. Program will be terminated. + Error bad id. Program will be terminated. + + + Error can't convert value. Program will be terminated. + Error can't convert value. Program will be terminated. + + + Error empty parameter. Program will be terminated. + Error empty parameter. Program will be terminated. + + + Error wrong id. Program will be terminated. + Error wrong id. Program will be terminated. + + + Something's wrong!! + Something's wrong!! + + + Exception thrown: %1. Program will be terminated. + Exception thrown: %1. Program will be terminated. + + + Can't begin to listen for incoming connections on name '%1' + Can't begin to listen for incoming connections on name '%1' + + + Export mode doesn't support openning several files. + + + + Import raw layout data does not support openning several layout files. + + + + Please, provide one input file. + Please, provide one input file. + + + + VPCarrousel + + Pieces of + + + + + VPCarrouselPieceList + + Move to Sheet + + + + Delete + Delete + + + Remove from Sheet + + + + + VPDialogAbout + + About Puzzle + + + + Puzzle version + + + + Build revision: + Build revision: + + + This program is part of Valentina project. + This program is part of Valentina project. + + + Check For Updates + Check For Updates + + + Cannot open your default browser + Cannot open your default browser + + + Build revision: %1 + Build revision: %1 + + + Built on %1 at %2 + Built on %1 at %2 + + + Web site : %1 + Web site : %1 + + VPE::VBoolProperty @@ -14077,6 +14436,573 @@ Do you want to save your changes? Open File + + VPGraphicsPiece + + Move to + + + + Remove from Sheet + + + + + VPLayoutFileReader + + Piece List + + + + Piece + + + + Got empty attribute '%1' + + + + + VPMainWindow + + Puzzle + + + + &File + &File + + + &Edit + + + + &Window + + + + &Help + &Help + + + Menu + Menu + + + Piece Carrousel + + + + Properties + + + + Current piece properties + + + + Current piece + + + + Infos + + + + Name: + Name: + + + DummyName + + + + UUID: + + + + {7b2ce4ae-96f5-4905-bb34-405cb40ca208} + + + + Seamline + + + + Show Seamline + + + + Geometry + + + + Mirror piece + + + + Rotation + Rotation + + + Angle: + Angle: + + + Rotate the piece by 90° clockwise + + + + Rotate the piece by 90° anti-clockwise + + + + Rotate the piece so that the grainline is vertical + + + + Rotate the piece so that the grainline is horizontal + + + + Placement + + + + X: + + + + Y: + + + + No piece selected + + + + Multiple pieces selected + + + + Sheet properties + + + + Current sheet + + + + Name + + + + Format + + + + Template + + + + Width + Width + + + Length + Length + + + Orientation + + + + Portrait + + + + Landscape + + + + Remove unused length + + + + Margins + + + + Right: + Right: + + + Top: + Top: + + + Left: + Left: + + + Bottom: + Bottom: + + + Placement Grid + + + + Show Grid + + + + Column width + + + + Row height + + + + Control + + + + Follow grainline + + + + No + + + + Vertical grainline + + + + Horizontal grainline + + + + Pieces gap + + + + Sticky edges + + + + Export + Export + + + Export Sheet + + + + Tiles properties + + + + Tiled Pdf Export + + + + Show Tiles on sheet + + + + Export Tiled Pdf + + + + Layout properties + + + + Layout + Layout + + + Name + Name + + + Description + Description + + + Unit + + + + Warning superposition of pieces + + + + Warning pieces out of bound + + + + zoom + + + + Scale + + + + &Open + &Open + + + Ctrl+O + + + + &Save + &Save + + + Ctrl+S + + + + Save &As + + + + Ctrl+Shift+S + + + + &Import Raw Layout Data + + + + E&xit + E&xit + + + Ctrl+Q + + + + &New + &New + + + Ctrl+N + + + + About &Qt + About &Qt + + + About &Puzzle + + + + Zoom in + Zoom in + + + Zoom out + Zoom out + + + Zoom 1:1 + + + + Zoom fit best + Zoom fit best + + + Zoom sheet + + + + Preferences + Preferences + + + File '%1' doesn't exist! + File '%1' doesn't exist! + + + File error. + File error. + + + Unable to read a layout file + + + + Fail to create layout. + + + + Could not extract data from file '%1'. %2 + + + + Centimeters + Centimeters + + + Millimiters + Millimiters + + + Inches + Inches + + + Scale: + + + + untitled %1.vlt + + + + untitled.vlt + + + + read only + read only + + + Cannot read settings from a malformed .INI file. + + + + Cannot save settings. Access denied. + + + + Failed to open file, is it writable? + + + + &New Window + &New Window + + + Layout files + + + + Open file + Open file + + + Could not save the file + Could not save the file + + + layout + + + + Save as + Save as + + + Failed to lock. This file already opened in another window. + Failed to lock. This file already opened in another window. + + + Could not save file + Could not save file + + + Failed to lock. This file already opened in another window. Expect collissions when run 2 copies of the program. + Failed to lock. This file already opened in another window. Expect collissions when run 2 copies of the program. + + + Raw Layout files + + + + About Qt + About Qt + + + PDF Files + + + + SVG Files + + + + + VPSheet + + Letter + Letter + + + Legal + Legal + + + Tabloid + + + + Roll 24in + Roll 24in + + + Roll 30in + Roll 30in + + + Roll 36in + Roll 36in + + + Roll 42in + Roll 42in + + + Roll 44in + Roll 44in + + + Roll 48in + Roll 44in {48i?} + + + Roll 62in + Roll 44in {62i?} + + + Roll 72in + Roll 44in {72i?} + + + Custom + Custom + + + + VPTileFactory + + Grid ( %1 , %2 ) + Grid ( %1 , %2 ) + + + Page %1 of %2 + Page %1 of %2 + + VPattern @@ -14365,6 +15291,10 @@ Do you want to save your changes? Value for final measurtement '%1' is infinite or NaN. Please, check your calculations. + + Unable to create record for final measurement '%1'. Error: %2 + + VPiece @@ -14623,6 +15553,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. There is no intersection with curve '%2' and axis through point '%3' with angle %4° + + Length + Length + + + Angle + Angle + + + Label + + + + Segment 1 + + + + Segment 2 + + VToolCutArc @@ -15498,6 +16448,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. Curves '%2' and '%3' have no point of intersection + + Label + + + + Curve 1 segment 1 + + + + Curve 1 segment 2 + + + + Curve 2 segment 1 + + + + Curve 2 segment 2 + + VToolRotation diff --git a/share/translations/valentina_es_ES.ts b/share/translations/valentina_es_ES.ts index bb67d3091..6080ef3f4 100644 --- a/share/translations/valentina_es_ES.ts +++ b/share/translations/valentina_es_ES.ts @@ -1212,6 +1212,14 @@ Notes + + Alias1: + + + + Alias2: + + DialogCutArc @@ -4930,6 +4938,10 @@ Aplicar características de todos modos? yyyy-MM-dd yyyy-MM-dd + + Passmark length: + + DialogPatternXmlEdit @@ -6115,6 +6127,22 @@ Aplicar características de todos modos? Notes + + Curve 1 + + + + Alias1: + + + + Alias2: + + + + Curve 2 + + DialogPreferences @@ -6142,6 +6170,28 @@ Aplicar características de todos modos? + + DialogPuzzlePreferences + + Puzzle preferences + + + + Configuration + Configuración + + + Paths + + + + Followed %n option(s) require restart to take effect: %1. + + Para seguir %n opción(es) se requiere re-inicializar el programa: %1. + Para seguir %n opción(es) se requiere re-inicializar el programa: %1. + + + DialogRestrictDimension @@ -8351,7 +8401,7 @@ Quiere guardar los cambios? This file already opened in another window. - Este archivo ha sido abierto en otra ventana. + Este archivo ha sido abierto en otra ventana. Wrong units. @@ -8805,27 +8855,27 @@ el patrón. Locking file - Cerrando archivo + Cerrando archivo This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - Este archivo esta abierto en otra ventana. Si desea continuar: click en Ignorar (no recomendado puede causar datos erroneos). + Este archivo esta abierto en otra ventana. Si desea continuar: click en Ignorar (no recomendado puede causar datos erroneos). The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - Archivo bloqueado, no puede ser mostrado por falta de permisos. Si desea continuar apriete ignorar (no recomendado, puede causar errores). + Archivo bloqueado, no puede ser mostrado por falta de permisos. Si desea continuar apriete ignorar (no recomendado, puede causar errores). Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - Ocurrió un error desconocido, por ejemplo una partición llena evitando que se escriba el archivo de bloqueo. Ignorelo si desea continuar (no se recomienda, puede causar corrupción de datos). + Ocurrió un error desconocido, por ejemplo una partición llena evitando que se escriba el archivo de bloqueo. Ignorelo si desea continuar (no se recomienda, puede causar corrupción de datos). The lock file could not be created, for lack of permissions. - No se pudo crear el archivo de bloqueo, por falta de permisos. + No se pudo crear el archivo de bloqueo, por falta de permisos. Unknown error happened, for instance a full partition prevented writing out the lock file. - Ocurrió un error desconocido, por ejemplo, una partición completa impedido escribir el archivo de bloqueo. + Ocurrió un error desconocido, por ejemplo, una partición completa impedido escribir el archivo de bloqueo. Report Bug... @@ -8985,15 +9035,15 @@ el patrón. The document has no write permissions. - El documento no tiene permisos de escritura. + El documento no tiene permisos de escritura. Cannot set permissions for %1 to writable. - No se pueden establecer permisos para %1 para escribir. + No se pueden establecer permisos para %1 para escribir. Could not save the file. - No pudo guardarse el archivo. + No pudo guardarse el archivo. Could not save the file @@ -9417,7 +9467,7 @@ el patrón. Do you want to change the premissions? - ¿Quieres cambiar los permisos? + ¿Quieres cambiar los permisos? Unable to prepare raw layout data. @@ -9467,6 +9517,10 @@ el patrón. Couldn't set dimension C. File wasn't opened. + + Could not create recipe file. %1 + + MainWindowsNoGUI @@ -10204,6 +10258,111 @@ Esta opción surtirá efecto después de reiniciar. retratar una escena + + Puzzle + + Export options can be used with single input file only. + Las opciones de exportación solo puede usarse con un solo archivo de entrada. + + + Valentina's manual layout editor. + + + + The manual layout file. + + + + + PuzzlePreferencesConfigurationPage + + Form + + + + Language + Idioma + + + GUI language: + + + + Toolbar + Barra de herramientas + + + The text appears under the icon (recommended for beginners). + + + + User Interface + Interfaz de usuario + + + Activate dark mode + Activar el modo oscuro + + + Don't use the native file dialog + + + + dark mode + modo oscuro + + + + PuzzlePreferencesPathPage + + Form + + + + Paths that Valentina uses + Rutas que usa Valentina + + + Type + Tipo + + + Path + + + + Default + + + + Edit + Editar + + + Open Directory + + + + My Individual Measurements + Mis Medidas Individuales + + + My Multisize Measurements + Mis Medidas Multitalla + + + My Patterns + Mis Patrones + + + My Templates + Mis Plantillas + + + My Layouts + Mis Diseños + + QApplication @@ -10617,6 +10776,18 @@ Esta opción surtirá efecto después de reiniciar. Piece '%1'. Grainline is not valid. + + Invalid global value for a passmark length. Piece '%1'. Length is less than minimal allowed. + + + + Unplaced pieces + + + + Sheet 1 + + QSaveFile @@ -11210,7 +11381,7 @@ Esta opción surtirá efecto después de reiniciar. untitled - Sin título + Sin título <Empty> @@ -11447,27 +11618,27 @@ Quieres guardar los cambios? Locking file - Archivo de bloqueo + Archivo de bloqueo This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - Este archivo esta abierto en otra ventana. Si desea continuar: click en Ignorar (no recomendado puede causar datos erroneos). + Este archivo esta abierto en otra ventana. Si desea continuar: click en Ignorar (no recomendado puede causar datos erroneos). The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - Archivo bloqueado, no puede ser mostrado por falta de permisos. Si desea continuar apriete ignorar (no recomendado, puede causar errores). + Archivo bloqueado, no puede ser mostrado por falta de permisos. Si desea continuar apriete ignorar (no recomendado, puede causar errores). Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - Ocurrió un error desconocido, por ejemplo una partición llena evitando que se escriba el archivo de bloqueo. Ignorelo si desea continuar (no se recomienda, puede causar corrupción de datos). + Ocurrió un error desconocido, por ejemplo una partición llena evitando que se escriba el archivo de bloqueo. Ignorelo si desea continuar (no se recomienda, puede causar corrupción de datos). The lock file could not be created, for lack of permissions. - No se pudo crear el archivo de bloqueo, por falta de permisos. + No se pudo crear el archivo de bloqueo, por falta de permisos. Unknown error happened, for instance a full partition prevented writing out the lock file. - Ocurrió un error desconocido, por ejemplo, una partición completa impedido escribir el archivo de bloqueo. + Ocurrió un error desconocido, por ejemplo, una partición completa impedido escribir el archivo de bloqueo. Export to CSV @@ -11515,15 +11686,15 @@ Quieres guardar los cambios? The measurements document has no write permissions. - El documento de medidas no tiene escrito permisos. + El documento de medidas no tiene escrito permisos. Cannot set permissions for %1 to writable. - No se pueden establecer permisos para %1 para escribir. + No se pueden establecer permisos para %1 para escribir. Could not save the file. - No ha podido guardar el archivo. + No ha podido guardar el archivo. Could not save the file @@ -11667,7 +11838,7 @@ Quieres guardar los cambios? Do you want to change the premissions? - ¿Quieres cambiar los permisos? + ¿Quieres cambiar los permisos? Cannot read settings from a malformed .INI file. @@ -12634,6 +12805,10 @@ Quieres guardar los cambios? My Patterns Mis Patrones + + My Layouts + Mis Diseños + ToggleDetailInLayout @@ -12920,6 +13095,50 @@ Quieres guardar los cambios? Export to CSV Exportar a CSV + + The measurements document has no write permissions. + El documento de medidas no tiene escrito permisos. + + + Do you want to change the premissions? + ¿Quieres cambiar los permisos? + + + Cannot set permissions for %1 to writable. + No se pueden establecer permisos para %1 para escribir. + + + Could not save the file. + + + + Locking file + + + + This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). + Este archivo esta abierto en otra ventana. Si desea continuar: click en Ignorar (no recomendado puede causar datos erroneos). + + + The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). + Archivo bloqueado, no puede ser mostrado por falta de permisos. Si desea continuar apriete ignorar (no recomendado, puede causar errores). + + + Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). + Ocurrió un error desconocido, por ejemplo una partición llena evitando que se escriba el archivo de bloqueo. Ignorelo si desea continuar (no se recomienda, puede causar corrupción de datos). + + + This file already opened in another window. + Este archivo ha sido abierto en otra ventana. + + + The lock file could not be created, for lack of permissions. + No se pudo crear el archivo de bloqueo, por falta de permisos. + + + Unknown error happened, for instance a full partition prevented writing out the lock file. + Ocurrió un error desconocido, por ejemplo, una partición completa impedido escribir el archivo de bloqueo. + VAbstractNode @@ -13709,6 +13928,34 @@ Quieres guardar los cambios? The dimension C base + + The filename of exported layout file. Use it to enable console export mode. + + + + The filename of layout file + + + + Load pattern pieces form the raw layout data file. + + + + The raw layout data file + + + + Number corresponding to output format (default = 0, export mode): <not defined> + + + + Number corresponding to tiled pdf page template (default = 0, export mode with tiled pdf format): <not defined> + + + + Run the program in a test mode. The program in this mode loads a single layout file and silently quit without showing the main window. The key have priority before key '%1'. + + VCommonSettings @@ -14011,6 +14258,18 @@ Quieres guardar los cambios? Creating file '%1' failed! %2 ¡La creación del archivo '%1' falló! %2 + + Can't create an flat dxf file. + + + + Can't create an AAMA dxf file. + + + + Can't create an ASTM dxf file. + + VLayoutPiece @@ -14185,6 +14444,114 @@ Quieres guardar los cambios? Marca Caja + + VPApplication + + Error parsing file. Program will be terminated. + Error al procesar el archivo. El programa se terminará. + + + Error bad id. Program will be terminated. + Error de identificación. El programa se cerrará. + + + Error can't convert value. Program will be terminated. + Error al convertir valor. El programa se cerrará. + + + Error empty parameter. Program will be terminated. + Error de parámetro vacío. El programa se cerrará. + + + Error wrong id. Program will be terminated. + Error de identidad equivocada. El programa se cerrará. + + + Something's wrong!! + ¡¡Algo ha fallado!! + + + Exception thrown: %1. Program will be terminated. + Se ha lanzado una excepción: %1. El programa se terminará. + + + Can't begin to listen for incoming connections on name '%1' + No se puede comenzar a escuchar por conexiones entrantes en el nombre '%1' + + + Export mode doesn't support openning several files. + + + + Import raw layout data does not support openning several layout files. + + + + Please, provide one input file. + Por favor, proporcione un archivo de entrada. + + + + VPCarrousel + + Pieces of + + + + + VPCarrouselPieceList + + Move to Sheet + + + + Delete + + + + Remove from Sheet + + + + + VPDialogAbout + + About Puzzle + + + + Puzzle version + + + + Build revision: + Revisión de la construcción: + + + This program is part of Valentina project. + Este programa es parte del proyecto Valentina. + + + Check For Updates + Buscar actualizaciones + + + Cannot open your default browser + No se puede abrir su navegador predeterminado + + + Build revision: %1 + Revisión de la construcción: %1 + + + Built on %1 at %2 + Construido el %1 a la %2 + + + Web site : %1 + Sitio web: %1 + + VPE::VBoolProperty @@ -14207,6 +14574,573 @@ Quieres guardar los cambios? Abrir archivo + + VPGraphicsPiece + + Move to + + + + Remove from Sheet + + + + + VPLayoutFileReader + + Piece List + + + + Piece + + + + Got empty attribute '%1' + + + + + VPMainWindow + + Puzzle + + + + &File + &Archivo + + + &Edit + + + + &Window + &Ventana + + + &Help + &Ayuda + + + Menu + Menú + + + Piece Carrousel + + + + Properties + + + + Current piece properties + + + + Current piece + + + + Infos + + + + Name: + Nombre: + + + DummyName + + + + UUID: + + + + {7b2ce4ae-96f5-4905-bb34-405cb40ca208} + + + + Seamline + + + + Show Seamline + + + + Geometry + + + + Mirror piece + + + + Rotation + Rotación + + + Angle: + + + + Rotate the piece by 90° clockwise + + + + Rotate the piece by 90° anti-clockwise + + + + Rotate the piece so that the grainline is vertical + + + + Rotate the piece so that the grainline is horizontal + + + + Placement + + + + X: + + + + Y: + + + + No piece selected + + + + Multiple pieces selected + + + + Sheet properties + + + + Current sheet + + + + Name + + + + Format + + + + Template + + + + Width + Ancho + + + Length + Longitud + + + Orientation + + + + Portrait + + + + Landscape + + + + Remove unused length + + + + Margins + Margenes + + + Right: + Derecha: + + + Top: + + + + Left: + Izquierda: + + + Bottom: + + + + Placement Grid + + + + Show Grid + + + + Column width + + + + Row height + + + + Control + Control + + + Follow grainline + Seguir hilo de la tela + + + No + + + + Vertical grainline + + + + Horizontal grainline + + + + Pieces gap + + + + Sticky edges + + + + Export + Exportar + + + Export Sheet + + + + Tiles properties + + + + Tiled Pdf Export + + + + Show Tiles on sheet + + + + Export Tiled Pdf + + + + Layout properties + + + + Layout + Diseño + + + Name + Nombre + + + Description + Descripción + + + Unit + + + + Warning superposition of pieces + + + + Warning pieces out of bound + + + + zoom + + + + Scale + Escala + + + &Open + &Abrir + + + Ctrl+O + Ctrl+O + + + &Save + &Guardar + + + Ctrl+S + + + + Save &As + + + + Ctrl+Shift+S + + + + &Import Raw Layout Data + + + + E&xit + &Salida + + + Ctrl+Q + + + + &New + &Nuevo + + + Ctrl+N + + + + About &Qt + Sobre &Qt + + + About &Puzzle + + + + Zoom in + Aumentar zoom + + + Zoom out + Alejar zoom + + + Zoom 1:1 + + + + Zoom fit best + Encajar a mejor zoom + + + Zoom sheet + + + + Preferences + Preferencias + + + File '%1' doesn't exist! + ¡El archivo '%1' no existe! + + + File error. + Error en archivo. + + + Unable to read a layout file + + + + Fail to create layout. + + + + Could not extract data from file '%1'. %2 + + + + Centimeters + Centímetros + + + Millimiters + Milímetros + + + Inches + Pulgadas + + + Scale: + Escala: + + + untitled %1.vlt + + + + untitled.vlt + + + + read only + sólo lectura + + + Cannot read settings from a malformed .INI file. + No se puede leer la configuración desde un archivo .INI deforme. + + + Cannot save settings. Access denied. + No se puede guardar configuración. Acceso denegado. + + + Failed to open file, is it writable? + + + + &New Window + &Nueva Ventana + + + Layout files + + + + Open file + Abrir archivo + + + Could not save the file + + + + layout + + + + Save as + Guardar como + + + Failed to lock. This file already opened in another window. + + + + Could not save file + + + + Failed to lock. This file already opened in another window. Expect collissions when run 2 copies of the program. + + + + Raw Layout files + + + + About Qt + Sobre Qt + + + PDF Files + + + + SVG Files + + + + + VPSheet + + Letter + + + + Legal + Legal + + + Tabloid + Tabloide + + + Roll 24in + Rollo 44 pulg {72i?} {24i?} + + + Roll 30in + Rollo 44 pulg {72i?} {30i?} + + + Roll 36in + Rollo 44 pulg {72i?} {36i?} + + + Roll 42in + Rollo 44 pulg {72i?} {42i?} + + + Roll 44in + Rollo 44 pulg {72i?} {44i?} + + + Roll 48in + Rollo 44 pulg {48 i?} + + + Roll 62in + Rollo 44 pulg {62i?} + + + Roll 72in + Rollo 44 pulg {72i?} + + + Custom + Personalizado + + + + VPTileFactory + + Grid ( %1 , %2 ) + Cuadricula ( %1 , %2 ) + + + Page %1 of %2 + Pagina %1 de %2 + + VPattern @@ -14495,6 +15429,10 @@ Quieres guardar los cambios? Value for final measurtement '%1' is infinite or NaN. Please, check your calculations. Valor para medida final '%1' es infinito o no es un numero. Por favor, revise sus cálculos. + + Unable to create record for final measurement '%1'. Error: %2 + + VPiece @@ -14757,6 +15695,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. There is no intersection with curve '%2' and axis through point '%3' with angle %4° Error calculando el punto '%1'. No hay intersección con la curva '%2' y el eje a través del punto '%3' con el angulo %4° + + Length + Longitud + + + Angle + + + + Label + Etiqueta + + + Segment 1 + + + + Segment 2 + + VToolCutArc @@ -15632,6 +16590,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. Curves '%2' and '%3' have no point of intersection Error calculando el punto '%1'. Las curvas '%2' y '%3' no tienen punto de intersección + + Label + Etiqueta + + + Curve 1 segment 1 + + + + Curve 1 segment 2 + + + + Curve 2 segment 1 + + + + Curve 2 segment 2 + + VToolRotation diff --git a/share/translations/valentina_fi_FI.ts b/share/translations/valentina_fi_FI.ts index 5810d5847..02506f067 100644 --- a/share/translations/valentina_fi_FI.ts +++ b/share/translations/valentina_fi_FI.ts @@ -1072,6 +1072,14 @@ Notes + + Alias1: + + + + Alias2: + + DialogCutArc @@ -4286,6 +4294,10 @@ Apply settings anyway? Label language: + + Passmark length: + + DialogPatternXmlEdit @@ -5395,6 +5407,22 @@ Apply settings anyway? Notes + + Curve 1 + + + + Alias1: + + + + Alias2: + + + + Curve 2 + + DialogPreferences @@ -5422,6 +5450,28 @@ Apply settings anyway? + + DialogPuzzlePreferences + + Puzzle preferences + + + + Configuration + Asetukset + + + Paths + Polut + + + Followed %n option(s) require restart to take effect: %1. + + + + + + DialogRestrictDimension @@ -7475,7 +7525,7 @@ Haluatko tallentaa muutokset? This file already opened in another window. - Tämä tiedosto on jo avattu toiseen ikkunaan. + Tämä tiedosto on jo avattu toiseen ikkunaan. Wrong units. @@ -7793,30 +7843,6 @@ Haluatko tallentaa muutokset? Don't Save - - Locking file - - - - This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - The lock file could not be created, for lack of permissions. - - - - Unknown error happened, for instance a full partition prevented writing out the lock file. - - Point intersection curves @@ -7933,18 +7959,6 @@ Haluatko tallentaa muutokset? Select main path objects clockwise. - - The document has no write permissions. - - - - Cannot set permissions for %1 to writable. - - - - Could not save the file. - - Could not save the file @@ -8357,10 +8371,6 @@ Haluatko tallentaa muutokset? Update manual layout - - Do you want to change the premissions? - - Unable to prepare raw layout data. @@ -8409,6 +8419,10 @@ Haluatko tallentaa muutokset? Couldn't set dimension C. File wasn't opened. + + Could not create recipe file. %1 + + MainWindowsNoGUI @@ -9013,6 +9027,111 @@ This option will take an affect after restart. + + Puzzle + + Export options can be used with single input file only. + + + + Valentina's manual layout editor. + + + + The manual layout file. + + + + + PuzzlePreferencesConfigurationPage + + Form + + + + Language + Kieli + + + GUI language: + + + + Toolbar + + + + The text appears under the icon (recommended for beginners). + + + + User Interface + + + + Activate dark mode + + + + Don't use the native file dialog + + + + dark mode + + + + + PuzzlePreferencesPathPage + + Form + + + + Paths that Valentina uses + + + + Type + Tyyppi + + + Path + Polku + + + Default + Oletus + + + Edit + Muokkaa + + + Open Directory + Avaa kansio + + + My Individual Measurements + + + + My Multisize Measurements + + + + My Patterns + + + + My Templates + + + + My Layouts + + + QCoreApplication @@ -9364,6 +9483,18 @@ This option will take an affect after restart. Piece '%1'. Grainline is not valid. + + Invalid global value for a passmark length. Piece '%1'. Length is less than minimal allowed. + + + + Unplaced pieces + + + + Sheet 1 + + QmuParser @@ -9864,7 +9995,7 @@ This option will take an affect after restart. untitled - nimetön + nimetön Unsaved changes @@ -10038,30 +10169,6 @@ Do you want to save your changes? Don't Save - - Locking file - - - - This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - The lock file could not be created, for lack of permissions. - - - - Unknown error happened, for instance a full partition prevented writing out the lock file. - - Export to CSV @@ -10086,18 +10193,6 @@ Do you want to save your changes? All files - - The measurements document has no write permissions. - - - - Cannot set permissions for %1 to writable. - - - - Could not save the file. - - Could not save the file @@ -10226,10 +10321,6 @@ Do you want to save your changes? <html><head/><body><p>Search measurements by term. </p><p>Prepend &quot;/r/&quot; to the front of the search string to search measurements by regex.</p></body></html> - - Do you want to change the premissions? - - Cannot read settings from a malformed .INI file. @@ -11120,6 +11211,10 @@ Do you want to save your changes? My Patterns + + My Layouts + + TogglePieceForceForbidFlipping @@ -11391,6 +11486,50 @@ Do you want to save your changes? Export to CSV + + The measurements document has no write permissions. + + + + Do you want to change the premissions? + + + + Cannot set permissions for %1 to writable. + + + + Could not save the file. + + + + Locking file + + + + This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). + + + + The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). + + + + Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). + + + + This file already opened in another window. + Tämä tiedosto on jo avattu toiseen ikkunaan. + + + The lock file could not be created, for lack of permissions. + + + + Unknown error happened, for instance a full partition prevented writing out the lock file. + + VAbstractNode @@ -12032,6 +12171,34 @@ Do you want to save your changes? The dimension C base + + The filename of exported layout file. Use it to enable console export mode. + + + + The filename of layout file + + + + Load pattern pieces form the raw layout data file. + + + + The raw layout data file + + + + Number corresponding to output format (default = 0, export mode): <not defined> + + + + Number corresponding to tiled pdf page template (default = 0, export mode with tiled pdf format): <not defined> + + + + Run the program in a test mode. The program in this mode loads a single layout file and silently quit without showing the main window. The key have priority before key '%1'. + + VCommonSettings @@ -12330,6 +12497,18 @@ Do you want to save your changes? Creating file '%1' failed! %2 Tiedoston '%1' luonti epäonnistui! %2 + + Can't create an flat dxf file. + + + + Can't create an AAMA dxf file. + + + + Can't create an ASTM dxf file. + + VLayoutPiece @@ -12504,6 +12683,114 @@ Do you want to save your changes? + + VPApplication + + 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!! + + + Exception thrown: %1. Program will be terminated. + + + + Can't begin to listen for incoming connections on name '%1' + + + + Export mode doesn't support openning several files. + + + + Import raw layout data does not support openning several layout files. + + + + Please, provide one input file. + + + + + VPCarrousel + + Pieces of + + + + + VPCarrouselPieceList + + Move to Sheet + + + + Delete + Poista + + + Remove from Sheet + + + + + VPDialogAbout + + About Puzzle + + + + Puzzle version + + + + Build revision: + Käännös versio: + + + This program is part of Valentina project. + + + + Check For Updates + + + + Cannot open your default browser + Oletus selaimen aukaiseminen epäonnistui + + + Build revision: %1 + + + + Built on %1 at %2 + Käännetty %3 klo %2 {1 ?} + + + Web site : %1 + Kotisivu: %1 + + VPE::VBoolProperty @@ -12526,6 +12813,573 @@ Do you want to save your changes? Avaa Tiedosto + + VPGraphicsPiece + + Move to + + + + Remove from Sheet + + + + + VPLayoutFileReader + + Piece List + + + + Piece + + + + Got empty attribute '%1' + + + + + VPMainWindow + + Puzzle + + + + &File + &Tiedosto + + + &Edit + + + + &Window + + + + &Help + &Apua + + + Menu + + + + Piece Carrousel + + + + Properties + + + + Current piece properties + + + + Current piece + + + + Infos + + + + Name: + Nmi: + + + DummyName + + + + UUID: + + + + {7b2ce4ae-96f5-4905-bb34-405cb40ca208} + + + + Seamline + + + + Show Seamline + + + + Geometry + + + + Mirror piece + + + + Rotation + + + + Angle: + + + + Rotate the piece by 90° clockwise + + + + Rotate the piece by 90° anti-clockwise + + + + Rotate the piece so that the grainline is vertical + + + + Rotate the piece so that the grainline is horizontal + + + + Placement + + + + X: + + + + Y: + + + + No piece selected + + + + Multiple pieces selected + + + + Sheet properties + + + + Current sheet + + + + Name + + + + Format + + + + Template + + + + Width + Leveys + + + Length + Pituus + + + Orientation + + + + Portrait + + + + Landscape + + + + Remove unused length + + + + Margins + + + + Right: + + + + Top: + + + + Left: + + + + Bottom: + + + + Placement Grid + + + + Show Grid + + + + Column width + + + + Row height + + + + Control + + + + Follow grainline + + + + No + + + + Vertical grainline + + + + Horizontal grainline + + + + Pieces gap + + + + Sticky edges + + + + Export + + + + Export Sheet + + + + Tiles properties + + + + Tiled Pdf Export + + + + Show Tiles on sheet + + + + Export Tiled Pdf + + + + Layout properties + + + + Layout + Sommittelu + + + Name + Nimi + + + Description + Kuvaus + + + Unit + + + + Warning superposition of pieces + + + + Warning pieces out of bound + + + + zoom + + + + Scale + + + + &Open + &Avaa + + + Ctrl+O + + + + &Save + &Tallenna + + + Ctrl+S + + + + Save &As + + + + Ctrl+Shift+S + + + + &Import Raw Layout Data + + + + E&xit + L&opeta + + + Ctrl+Q + + + + &New + &Uusi + + + Ctrl+N + + + + About &Qt + Tietoja &Qt + + + About &Puzzle + + + + Zoom in + Tarkenna + + + Zoom out + Loitonna + + + Zoom 1:1 + + + + Zoom fit best + Tarkenna sopivasti + + + Zoom sheet + + + + Preferences + Asetukset + + + File '%1' doesn't exist! + + + + File error. + Tiedostovirhe. + + + Unable to read a layout file + + + + Fail to create layout. + + + + Could not extract data from file '%1'. %2 + + + + Centimeters + + + + Millimiters + + + + Inches + + + + Scale: + + + + untitled %1.vlt + + + + untitled.vlt + + + + read only + + + + Cannot read settings from a malformed .INI file. + + + + Cannot save settings. Access denied. + + + + Failed to open file, is it writable? + + + + &New Window + + + + Layout files + + + + Open file + Avaa tiedosto + + + Could not save the file + + + + layout + + + + Save as + Talenna nimellä + + + Failed to lock. This file already opened in another window. + + + + Could not save file + Tiedostoa ei voitu tallentaa + + + Failed to lock. This file already opened in another window. Expect collissions when run 2 copies of the program. + + + + Raw Layout files + + + + About Qt + Tietoja Qt:stä + + + PDF Files + + + + SVG Files + + + + + VPSheet + + Letter + + + + Legal + + + + Tabloid + + + + Roll 24in + + + + Roll 30in + + + + Roll 36in + + + + Roll 42in + + + + Roll 44in + + + + Roll 48in + + + + Roll 62in + + + + Roll 72in + + + + Custom + + + + + VPTileFactory + + Grid ( %1 , %2 ) + + + + Page %1 of %2 + + + VPattern @@ -12814,6 +13668,10 @@ Do you want to save your changes? Value for final measurtement '%1' is infinite or NaN. Please, check your calculations. + + Unable to create record for final measurement '%1'. Error: %2 + + VPiece @@ -13038,6 +13896,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. There is no intersection with curve '%2' and axis through point '%3' with angle %4° + + Length + Pituus + + + Angle + Kulma + + + Label + + + + Segment 1 + + + + Segment 2 + + VToolCutArc @@ -13813,6 +14691,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. Curves '%2' and '%3' have no point of intersection + + Label + + + + Curve 1 segment 1 + + + + Curve 1 segment 2 + + + + Curve 2 segment 1 + + + + Curve 2 segment 2 + + VToolRotation diff --git a/share/translations/valentina_fr_FR.ts b/share/translations/valentina_fr_FR.ts index c22443b19..1fe8f6d7d 100644 --- a/share/translations/valentina_fr_FR.ts +++ b/share/translations/valentina_fr_FR.ts @@ -1212,6 +1212,14 @@ Notes + + Alias1: + + + + Alias2: + + DialogCutArc @@ -4882,6 +4890,10 @@ Apply settings anyway? yyyy-MM-dd yyyy-MM-dd + + Passmark length: + + DialogPatternXmlEdit @@ -6067,6 +6079,22 @@ Apply settings anyway? Notes + + Curve 1 + + + + Alias1: + + + + Alias2: + + + + Curve 2 + + DialogPreferences @@ -6094,6 +6122,28 @@ Apply settings anyway? + + DialogPuzzlePreferences + + Puzzle preferences + + + + Configuration + Configuration + + + Paths + Chemins + + + Followed %n option(s) require restart to take effect: %1. + + + + + + DialogRestrictDimension @@ -8303,7 +8353,7 @@ Voulez-vous sauvegarder les changements? This file already opened in another window. - Ce fichier est déjà ouvert dans une autre fenêtre. + Ce fichier est déjà ouvert dans une autre fenêtre. Wrong units. @@ -8756,27 +8806,27 @@ Voulez-vous sauvegarder les changements? Locking file - Verrouiller le fichier (en lecture seule) + Verrouiller le fichier (en lecture seule) This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - Le fichier est déjà ouvert dans une autre fenêtre. Ignorer pour continuer (déconseillé car pouvant causer une corruption de données). + Le fichier est déjà ouvert dans une autre fenêtre. Ignorer pour continuer (déconseillé car pouvant causer une corruption de données). The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - Le fichier en lecture seule ne peut être créer par manque de permission. Ignorer pour continuer (déconseillé car pouvant causer une corruption de données). + Le fichier en lecture seule ne peut être créer par manque de permission. Ignorer pour continuer (déconseillé car pouvant causer une corruption de données). Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - Une erreur inconnue s'est produite, par exemple une partition pleine empêche d'écrire le fichier en lecture seule. Ignorer pour continuer (déconseillé car pouvant causer une corruption de données). + Une erreur inconnue s'est produite, par exemple une partition pleine empêche d'écrire le fichier en lecture seule. Ignorer pour continuer (déconseillé car pouvant causer une corruption de données). The lock file could not be created, for lack of permissions. - Le fichier en lecture seule ne peut être créer par manque de permission. + Le fichier en lecture seule ne peut être créer par manque de permission. Unknown error happened, for instance a full partition prevented writing out the lock file. - Une erreur inconnue s'est produite, par exemple une partition pleine empêche d'écrire le fichier en lecture seule. + Une erreur inconnue s'est produite, par exemple une partition pleine empêche d'écrire le fichier en lecture seule. Report Bug... @@ -8930,18 +8980,6 @@ Voulez-vous sauvegarder les changements? Select main path objects clockwise. - - The document has no write permissions. - - - - Cannot set permissions for %1 to writable. - - - - Could not save the file. - - Could not save the file @@ -9354,10 +9392,6 @@ Voulez-vous sauvegarder les changements? Update manual layout - - Do you want to change the premissions? - - Unable to prepare raw layout data. @@ -9406,6 +9440,10 @@ Voulez-vous sauvegarder les changements? Couldn't set dimension C. File wasn't opened. + + Could not create recipe file. %1 + + MainWindowsNoGUI @@ -10102,6 +10140,111 @@ This option will take an affect after restart. + + Puzzle + + Export options can be used with single input file only. + Les options d'export ne peuvent être utilisé qu'avec un fichier d'entrée simple. + + + Valentina's manual layout editor. + + + + The manual layout file. + + + + + PuzzlePreferencesConfigurationPage + + Form + Formulaire + + + Language + Langue + + + GUI language: + Langue de l'interface: + + + Toolbar + Barre d'outils + + + The text appears under the icon (recommended for beginners). + + + + User Interface + Thème de l'interface + + + Activate dark mode + Mode nuit + + + Don't use the native file dialog + + + + dark mode + Mode nuit + + + + PuzzlePreferencesPathPage + + Form + Formulaire + + + Paths that Valentina uses + + + + Type + Type + + + Path + Chemin + + + Default + + + + Edit + + + + Open Directory + Ouvrir un dossier + + + My Individual Measurements + + + + My Multisize Measurements + + + + My Patterns + + + + My Templates + + + + My Layouts + + + QApplication @@ -10515,6 +10658,18 @@ This option will take an affect after restart. Piece '%1'. Grainline is not valid. + + Invalid global value for a passmark length. Piece '%1'. Length is less than minimal allowed. + + + + Unplaced pieces + + + + Sheet 1 + + QSaveFile @@ -11108,7 +11263,7 @@ This option will take an affect after restart. untitled - sans titre + sans titre <Empty> @@ -11345,27 +11500,27 @@ Voulez-vous enregistrer les changements? Locking file - Verrouiller le fichier (lecture seule) + Verrouiller le fichier (lecture seule) This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - Le fichier est déjà ouvert dans une autre fenêtre. Ignorer pour continuer (déconseillé car pouvant causer une corruption de données). + Le fichier est déjà ouvert dans une autre fenêtre. Ignorer pour continuer (déconseillé car pouvant causer une corruption de données). The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - Le fichier en lecture seule ne peut être créer par manque de permission. Ignorer pour continuer (déconseillé car pouvant causer une corruption de données). + Le fichier en lecture seule ne peut être créer par manque de permission. Ignorer pour continuer (déconseillé car pouvant causer une corruption de données). Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - Une erreur inconnue s'est produite, par exemple une partition pleine empêche d'écrire le fichier en lecture seule. Ignorer pour continuer (déconseillé car pouvant causer une corruption de données). + Une erreur inconnue s'est produite, par exemple une partition pleine empêche d'écrire le fichier en lecture seule. Ignorer pour continuer (déconseillé car pouvant causer une corruption de données). The lock file could not be created, for lack of permissions. - Le fichier en lecture seule ne peut être créer par manque de permission. + Le fichier en lecture seule ne peut être créer par manque de permission. Unknown error happened, for instance a full partition prevented writing out the lock file. - Une erreur inconnue s'est produite, par exemple une partition pleine empêche d'écrire le fichier en lecture seule. + Une erreur inconnue s'est produite, par exemple une partition pleine empêche d'écrire le fichier en lecture seule. Export to CSV @@ -11411,18 +11566,6 @@ Voulez-vous enregistrer les changements? All files Tous les fichiers - - The measurements document has no write permissions. - - - - Cannot set permissions for %1 to writable. - - - - Could not save the file. - - Could not save the file @@ -11551,10 +11694,6 @@ Voulez-vous enregistrer les changements? <html><head/><body><p>Search measurements by term. </p><p>Prepend &quot;/r/&quot; to the front of the search string to search measurements by regex.</p></body></html> - - Do you want to change the premissions? - - Cannot read settings from a malformed .INI file. @@ -12501,6 +12640,10 @@ Voulez-vous enregistrer les changements? My Patterns + + My Layouts + + ToggleDetailInLayout @@ -12782,6 +12925,50 @@ Voulez-vous enregistrer les changements? Export to CSV Exporter vers CVS + + The measurements document has no write permissions. + + + + Do you want to change the premissions? + + + + Cannot set permissions for %1 to writable. + + + + Could not save the file. + + + + Locking file + + + + This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). + Le fichier est déjà ouvert dans une autre fenêtre. Ignorer pour continuer (déconseillé car pouvant causer une corruption de données). + + + The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). + Le fichier en lecture seule ne peut être créer par manque de permission. Ignorer pour continuer (déconseillé car pouvant causer une corruption de données). + + + Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). + + + + This file already opened in another window. + Ce fichier est déjà ouvert dans une autre fenêtre. + + + The lock file could not be created, for lack of permissions. + Le fichier en lecture seule ne peut être créer par manque de permission. + + + Unknown error happened, for instance a full partition prevented writing out the lock file. + Une erreur inconnue s'est produite, par exemple une partition pleine empêche d'écrire le fichier en lecture seule. + VAbstractNode @@ -13559,6 +13746,34 @@ Voulez-vous enregistrer les changements? The dimension C base + + The filename of exported layout file. Use it to enable console export mode. + + + + The filename of layout file + + + + Load pattern pieces form the raw layout data file. + + + + The raw layout data file + + + + Number corresponding to output format (default = 0, export mode): <not defined> + + + + Number corresponding to tiled pdf page template (default = 0, export mode with tiled pdf format): <not defined> + + + + Run the program in a test mode. The program in this mode loads a single layout file and silently quit without showing the main window. The key have priority before key '%1'. + + VCommonSettings @@ -13860,6 +14075,18 @@ Voulez-vous enregistrer les changements? Creating file '%1' failed! %2 Création du fichier '%1' A échoué ! %2 + + Can't create an flat dxf file. + + + + Can't create an AAMA dxf file. + + + + Can't create an ASTM dxf file. + + VLayoutPiece @@ -14034,6 +14261,114 @@ Voulez-vous enregistrer les changements? + + VPApplication + + Error parsing file. Program will be terminated. + Erreur d'interprétation du fichier. Fin du programme. + + + Error bad id. Program will be terminated. + Erreur d'identifiant. Fin du programme. + + + Error can't convert value. Program will be terminated. + Erreur : valeur non convertissable. Fin du programme. + + + Error empty parameter. Program will be terminated. + Erreur : paramètre vide. Fin du programme. + + + Error wrong id. Program will be terminated. + Erreur : mauvais identifiant. Fin du programme. + + + Something's wrong!! + + + + Exception thrown: %1. Program will be terminated. + + + + Can't begin to listen for incoming connections on name '%1' + Ne peut être à l'écoute des connexions entrantes de %1 + + + Export mode doesn't support openning several files. + + + + Import raw layout data does not support openning several layout files. + + + + Please, provide one input file. + Merci de choisir un fichier. + + + + VPCarrousel + + Pieces of + + + + + VPCarrouselPieceList + + Move to Sheet + + + + Delete + + + + Remove from Sheet + + + + + VPDialogAbout + + About Puzzle + + + + Puzzle version + + + + Build revision: + + + + This program is part of Valentina project. + Ce programme fait partie du projet Valentina. + + + Check For Updates + Vérifier les Mises à Jour + + + Cannot open your default browser + Impossible d'ouvrir votre navigateur par défaut + + + Build revision: %1 + N° de version : %1 + + + Built on %1 at %2 + Compilé le %1 à %2 + + + Web site : %1 + Site web : %1 + + VPE::VBoolProperty @@ -14056,6 +14391,573 @@ Voulez-vous enregistrer les changements? Ouvrir fichier + + VPGraphicsPiece + + Move to + + + + Remove from Sheet + + + + + VPLayoutFileReader + + Piece List + + + + Piece + + + + Got empty attribute '%1' + + + + + VPMainWindow + + Puzzle + + + + &File + &Fichier + + + &Edit + + + + &Window + + + + &Help + Aid&e + + + Menu + Menu + + + Piece Carrousel + + + + Properties + + + + Current piece properties + + + + Current piece + + + + Infos + + + + Name: + + + + DummyName + + + + UUID: + + + + {7b2ce4ae-96f5-4905-bb34-405cb40ca208} + + + + Seamline + + + + Show Seamline + + + + Geometry + + + + Mirror piece + + + + Rotation + Rotation + + + Angle: + Angle: + + + Rotate the piece by 90° clockwise + + + + Rotate the piece by 90° anti-clockwise + + + + Rotate the piece so that the grainline is vertical + + + + Rotate the piece so that the grainline is horizontal + + + + Placement + + + + X: + + + + Y: + + + + No piece selected + + + + Multiple pieces selected + + + + Sheet properties + + + + Current sheet + + + + Name + + + + Format + + + + Template + + + + Width + Largeur + + + Length + Longueur + + + Orientation + + + + Portrait + + + + Landscape + + + + Remove unused length + + + + Margins + + + + Right: + Droite: + + + Top: + Haut: + + + Left: + Gauche: + + + Bottom: + Bas: + + + Placement Grid + + + + Show Grid + + + + Column width + + + + Row height + + + + Control + + + + Follow grainline + + + + No + + + + Vertical grainline + + + + Horizontal grainline + + + + Pieces gap + + + + Sticky edges + + + + Export + Exporter + + + Export Sheet + + + + Tiles properties + + + + Tiled Pdf Export + + + + Show Tiles on sheet + + + + Export Tiled Pdf + + + + Layout properties + + + + Layout + Plan de coupe + + + Name + Nom + + + Description + Description du patron + + + Unit + + + + Warning superposition of pieces + + + + Warning pieces out of bound + + + + zoom + + + + Scale + + + + &Open + &Ouvrir + + + Ctrl+O + + + + &Save + &Sauver + + + Ctrl+S + + + + Save &As + + + + Ctrl+Shift+S + + + + &Import Raw Layout Data + + + + E&xit + &Quitter + + + Ctrl+Q + + + + &New + &Nouveau + + + Ctrl+N + + + + About &Qt + À propos de &Qt + + + About &Puzzle + + + + Zoom in + Zoom avant + + + Zoom out + Zoom arrière + + + Zoom 1:1 + + + + Zoom fit best + Zoom optimal + + + Zoom sheet + + + + Preferences + Préférences + + + File '%1' doesn't exist! + Le fichier '%1' n'existe pas! + + + File error. + Erreur de fichier. + + + Unable to read a layout file + + + + Fail to create layout. + + + + Could not extract data from file '%1'. %2 + + + + Centimeters + Centimètres + + + Millimiters + Millimètres + + + Inches + Pouces + + + Scale: + + + + untitled %1.vlt + + + + untitled.vlt + + + + read only + Lecture seule + + + Cannot read settings from a malformed .INI file. + + + + Cannot save settings. Access denied. + + + + Failed to open file, is it writable? + + + + &New Window + &Nouvelle Fenêtre + + + Layout files + + + + Open file + Ouvrir fichier + + + Could not save the file + + + + layout + + + + Save as + Enregistrer sous + + + Failed to lock. This file already opened in another window. + Impossible à verrouiller. Le fichier est déjà ouvert dans une autre fenêtre. + + + Could not save file + + + + Failed to lock. This file already opened in another window. Expect collissions when run 2 copies of the program. + Impossible à verrouiller. Le fichier est déjà ouvert dans une autre fenêtre. cela arrive quand 2 copie du programme, tournent. + + + Raw Layout files + + + + About Qt + À propos de Qt + + + PDF Files + + + + SVG Files + + + + + VPSheet + + Letter + Lettre + + + Legal + Légal + + + Tabloid + + + + Roll 24in + Roulleau 24 pouces + + + Roll 30in + Rouleau de 30po + + + Roll 36in + Rouleau de 36po + + + Roll 42in + Rouleau de 42po + + + Roll 44in + Rouleau de 44po + + + Roll 48in + Rouleau de 44po {48i?} + + + Roll 62in + Rouleau de 44po {62i?} + + + Roll 72in + Rouleau de 44po {72i?} + + + Custom + Personnalisé + + + + VPTileFactory + + Grid ( %1 , %2 ) + + + + Page %1 of %2 + + + VPattern @@ -14344,6 +15246,10 @@ Voulez-vous enregistrer les changements? Value for final measurtement '%1' is infinite or NaN. Please, check your calculations. + + Unable to create record for final measurement '%1'. Error: %2 + + VPiece @@ -14595,6 +15501,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. There is no intersection with curve '%2' and axis through point '%3' with angle %4° + + Length + Longueur + + + Angle + Angle + + + Label + + + + Segment 1 + + + + Segment 2 + + VToolCutArc @@ -15458,6 +16384,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. Curves '%2' and '%3' have no point of intersection + + Label + + + + Curve 1 segment 1 + + + + Curve 1 segment 2 + + + + Curve 2 segment 1 + + + + Curve 2 segment 2 + + VToolRotation diff --git a/share/translations/valentina_he_IL.ts b/share/translations/valentina_he_IL.ts index 3c2ae06a1..9f077cac1 100644 --- a/share/translations/valentina_he_IL.ts +++ b/share/translations/valentina_he_IL.ts @@ -805,6 +805,14 @@ Notes + + Alias1: + + + + Alias2: + + DialogCutArc @@ -3731,6 +3739,10 @@ Apply settings anyway? Label language: + + Passmark length: + + DialogPiecePath @@ -4661,6 +4673,22 @@ Apply settings anyway? Notes + + Curve 1 + + + + Alias1: + + + + Alias2: + + + + Curve 2 + + DialogPreferences @@ -4688,6 +4716,28 @@ Apply settings anyway? + + DialogPuzzlePreferences + + Puzzle preferences + + + + Configuration + + + + Paths + + + + Followed %n option(s) require restart to take effect: %1. + + + + + + DialogRestrictDimension @@ -6526,10 +6576,6 @@ Do you want to save your changes? Enter a new label for the pattern piece. - - This file already opened in another window. - - File error. @@ -6810,30 +6856,6 @@ Do you want to save your changes? Don't Save - - Locking file - - - - This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - The lock file could not be created, for lack of permissions. - - - - Unknown error happened, for instance a full partition prevented writing out the lock file. - - Point intersection curves @@ -6946,18 +6968,6 @@ Do you want to save your changes? Select main path objects clockwise. - - The document has no write permissions. - - - - Cannot set permissions for %1 to writable. - - - - Could not save the file. - - Could not save the file @@ -7370,10 +7380,6 @@ Do you want to save your changes? Update manual layout - - Do you want to change the premissions? - - Unable to prepare raw layout data. @@ -7422,6 +7428,10 @@ Do you want to save your changes? Couldn't set dimension C. File wasn't opened. + + Could not create recipe file. %1 + + MainWindowsNoGUI @@ -7940,6 +7950,111 @@ This option will take an affect after restart. + + Puzzle + + Export options can be used with single input file only. + + + + Valentina's manual layout editor. + + + + The manual layout file. + + + + + PuzzlePreferencesConfigurationPage + + Form + + + + Language + + + + GUI language: + + + + Toolbar + + + + The text appears under the icon (recommended for beginners). + + + + User Interface + + + + Activate dark mode + + + + Don't use the native file dialog + + + + dark mode + + + + + PuzzlePreferencesPathPage + + Form + + + + Paths that Valentina uses + + + + Type + + + + Path + + + + Default + + + + Edit + + + + Open Directory + + + + My Individual Measurements + + + + My Multisize Measurements + + + + My Patterns + + + + My Templates + + + + My Layouts + + + QCoreApplication @@ -8287,6 +8402,18 @@ This option will take an affect after restart. Piece '%1'. Grainline is not valid. + + Invalid global value for a passmark length. Piece '%1'. Length is less than minimal allowed. + + + + Unplaced pieces + + + + Sheet 1 + + QmuParser @@ -8909,30 +9036,6 @@ Do you want to save your changes? Don't Save - - Locking file - - - - This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - The lock file could not be created, for lack of permissions. - - - - Unknown error happened, for instance a full partition prevented writing out the lock file. - - Export to CSV @@ -8957,18 +9060,6 @@ Do you want to save your changes? All files - - The measurements document has no write permissions. - - - - Cannot set permissions for %1 to writable. - - - - Could not save the file. - - Could not save the file @@ -9097,10 +9188,6 @@ Do you want to save your changes? <html><head/><body><p>Search measurements by term. </p><p>Prepend &quot;/r/&quot; to the front of the search string to search measurements by regex.</p></body></html> - - Do you want to change the premissions? - - Cannot read settings from a malformed .INI file. @@ -9251,6 +9338,10 @@ Do you want to save your changes? Restrict first dimension + + untitled + + TabGrainline @@ -9910,6 +10001,10 @@ Do you want to save your changes? My Patterns + + My Layouts + + TogglePieceForceForbidFlipping @@ -10155,6 +10250,50 @@ Do you want to save your changes? Export to CSV + + The measurements document has no write permissions. + + + + Do you want to change the premissions? + + + + Cannot set permissions for %1 to writable. + + + + Could not save the file. + + + + Locking file + + + + This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). + + + + The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). + + + + Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). + + + + This file already opened in another window. + + + + The lock file could not be created, for lack of permissions. + + + + Unknown error happened, for instance a full partition prevented writing out the lock file. + + VAbstractNode @@ -10792,6 +10931,34 @@ Do you want to save your changes? The dimension C base + + The filename of exported layout file. Use it to enable console export mode. + + + + The filename of layout file + + + + Load pattern pieces form the raw layout data file. + + + + The raw layout data file + + + + Number corresponding to output format (default = 0, export mode): <not defined> + + + + Number corresponding to tiled pdf page template (default = 0, export mode with tiled pdf format): <not defined> + + + + Run the program in a test mode. The program in this mode loads a single layout file and silently quit without showing the main window. The key have priority before key '%1'. + + VCommonSettings @@ -11035,6 +11202,18 @@ Do you want to save your changes? Creating file '%1' failed! %2 + + Can't create an flat dxf file. + + + + Can't create an AAMA dxf file. + + + + Can't create an ASTM dxf file. + + VLayoutPiece @@ -11209,6 +11388,114 @@ Do you want to save your changes? + + VPApplication + + Error parsing file. Program will be terminated. + + + + Error bad id. Program will be terminated. + + + + Error can't convert value. Program will be terminated. + + + + Error empty parameter. Program will be terminated. + + + + Error wrong id. Program will be terminated. + + + + Something's wrong!! + + + + Exception thrown: %1. Program will be terminated. + + + + Can't begin to listen for incoming connections on name '%1' + + + + Export mode doesn't support openning several files. + + + + Import raw layout data does not support openning several layout files. + + + + Please, provide one input file. + + + + + VPCarrousel + + Pieces of + + + + + VPCarrouselPieceList + + Move to Sheet + + + + Delete + למחוק + + + Remove from Sheet + + + + + VPDialogAbout + + About Puzzle + + + + Puzzle version + + + + Build revision: + + + + This program is part of Valentina project. + + + + Check For Updates + + + + Cannot open your default browser + + + + Build revision: %1 + + + + Built on %1 at %2 + + + + Web site : %1 + + + VPE::VBoolProperty @@ -11231,6 +11518,573 @@ Do you want to save your changes? + + VPGraphicsPiece + + Move to + + + + Remove from Sheet + + + + + VPLayoutFileReader + + Piece List + + + + Piece + + + + Got empty attribute '%1' + + + + + VPMainWindow + + Puzzle + + + + &File + + + + &Edit + + + + &Window + + + + &Help + + + + Menu + + + + Piece Carrousel + + + + Properties + + + + Current piece properties + + + + Current piece + + + + Infos + + + + Name: + + + + DummyName + + + + UUID: + + + + {7b2ce4ae-96f5-4905-bb34-405cb40ca208} + + + + Seamline + + + + Show Seamline + + + + Geometry + + + + Mirror piece + + + + Rotation + + + + Angle: + + + + Rotate the piece by 90° clockwise + + + + Rotate the piece by 90° anti-clockwise + + + + Rotate the piece so that the grainline is vertical + + + + Rotate the piece so that the grainline is horizontal + + + + Placement + + + + X: + + + + Y: + + + + No piece selected + + + + Multiple pieces selected + + + + Sheet properties + + + + Current sheet + + + + Name + + + + Format + + + + Template + + + + Width + רוחב + + + Length + אורך + + + Orientation + + + + Portrait + + + + Landscape + + + + Remove unused length + + + + Margins + + + + Right: + + + + Top: + + + + Left: + + + + Bottom: + + + + Placement Grid + + + + Show Grid + + + + Column width + + + + Row height + + + + Control + + + + Follow grainline + + + + No + + + + Vertical grainline + + + + Horizontal grainline + + + + Pieces gap + + + + Sticky edges + + + + Export + + + + Export Sheet + + + + Tiles properties + + + + Tiled Pdf Export + + + + Show Tiles on sheet + + + + Export Tiled Pdf + + + + Layout properties + + + + Layout + + + + Name + + + + Description + + + + Unit + + + + Warning superposition of pieces + + + + Warning pieces out of bound + + + + zoom + + + + Scale + + + + &Open + + + + Ctrl+O + + + + &Save + + + + Ctrl+S + + + + Save &As + + + + Ctrl+Shift+S + + + + &Import Raw Layout Data + + + + E&xit + + + + Ctrl+Q + + + + &New + + + + Ctrl+N + + + + About &Qt + + + + About &Puzzle + + + + Zoom in + + + + Zoom out + + + + Zoom 1:1 + + + + Zoom fit best + + + + Zoom sheet + + + + Preferences + + + + File '%1' doesn't exist! + + + + File error. + + + + Unable to read a layout file + + + + Fail to create layout. + + + + Could not extract data from file '%1'. %2 + + + + Centimeters + סנטימטרים + + + Millimiters + מילימטר + + + Inches + + + + Scale: + + + + untitled %1.vlt + + + + untitled.vlt + + + + read only + + + + Cannot read settings from a malformed .INI file. + + + + Cannot save settings. Access denied. + + + + Failed to open file, is it writable? + + + + &New Window + + + + Layout files + + + + Open file + + + + Could not save the file + + + + layout + + + + Save as + שמירה בשם + + + Failed to lock. This file already opened in another window. + + + + Could not save file + + + + Failed to lock. This file already opened in another window. Expect collissions when run 2 copies of the program. + + + + Raw Layout files + + + + About Qt + + + + PDF Files + + + + SVG Files + + + + + VPSheet + + Letter + + + + Legal + + + + Tabloid + + + + Roll 24in + + + + Roll 30in + + + + Roll 36in + + + + Roll 42in + + + + Roll 44in + + + + Roll 48in + + + + Roll 62in + + + + Roll 72in + + + + Custom + + + + + VPTileFactory + + Grid ( %1 , %2 ) + + + + Page %1 of %2 + + + VPattern @@ -11500,6 +12354,10 @@ Do you want to save your changes? Value for final measurtement '%1' is infinite or NaN. Please, check your calculations. + + Unable to create record for final measurement '%1'. Error: %2 + + VPiece @@ -11720,6 +12578,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. There is no intersection with curve '%2' and axis through point '%3' with angle %4° + + Length + אורך + + + Angle + + + + Label + + + + Segment 1 + + + + Segment 2 + + VToolCutArc @@ -12455,6 +13333,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. Curves '%2' and '%3' have no point of intersection + + Label + + + + Curve 1 segment 1 + + + + Curve 1 segment 2 + + + + Curve 2 segment 1 + + + + Curve 2 segment 2 + + VToolRotation diff --git a/share/translations/valentina_id_ID.ts b/share/translations/valentina_id_ID.ts index 067f2a493..6443c44f0 100644 --- a/share/translations/valentina_id_ID.ts +++ b/share/translations/valentina_id_ID.ts @@ -1016,6 +1016,14 @@ Notes + + Alias1: + + + + Alias2: + + DialogCutArc @@ -4030,6 +4038,10 @@ Apply settings anyway? Label language: + + Passmark length: + + DialogPiecePath @@ -4984,6 +4996,22 @@ Apply settings anyway? Notes + + Curve 1 + + + + Alias1: + + + + Alias2: + + + + Curve 2 + + DialogPreferences @@ -5010,6 +5038,27 @@ Apply settings anyway? + + DialogPuzzlePreferences + + Puzzle preferences + + + + Configuration + Konfigurasi + + + Paths + + + + Followed %n option(s) require restart to take effect: %1. + + + + + DialogRestrictDimension @@ -6864,10 +6913,6 @@ Apakah anda ingin menyimpan perubahan anda? Enter a new label for the pattern piece. - - This file already opened in another window. - - File error. @@ -7148,30 +7193,6 @@ Apakah anda ingin menyimpan perubahan anda? Don't Save - - Locking file - - - - This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - The lock file could not be created, for lack of permissions. - - - - Unknown error happened, for instance a full partition prevented writing out the lock file. - - Point intersection curves @@ -7284,18 +7305,6 @@ Apakah anda ingin menyimpan perubahan anda? Select main path objects clockwise. - - The document has no write permissions. - - - - Cannot set permissions for %1 to writable. - - - - Could not save the file. - - Could not save the file @@ -7708,10 +7717,6 @@ Apakah anda ingin menyimpan perubahan anda? Update manual layout - - Do you want to change the premissions? - - Unable to prepare raw layout data. @@ -7760,6 +7765,10 @@ Apakah anda ingin menyimpan perubahan anda? Couldn't set dimension C. File wasn't opened. + + Could not create recipe file. %1 + + MainWindowsNoGUI @@ -8278,6 +8287,111 @@ This option will take an affect after restart. + + Puzzle + + Export options can be used with single input file only. + + + + Valentina's manual layout editor. + + + + The manual layout file. + + + + + PuzzlePreferencesConfigurationPage + + Form + + + + Language + Bahasa + + + GUI language: + + + + Toolbar + + + + The text appears under the icon (recommended for beginners). + + + + User Interface + + + + Activate dark mode + + + + Don't use the native file dialog + + + + dark mode + + + + + PuzzlePreferencesPathPage + + Form + + + + Paths that Valentina uses + + + + Type + + + + Path + + + + Default + + + + Edit + + + + Open Directory + + + + My Individual Measurements + + + + My Multisize Measurements + + + + My Patterns + + + + My Templates + + + + My Layouts + + + QCoreApplication @@ -8625,6 +8739,18 @@ This option will take an affect after restart. Piece '%1'. Grainline is not valid. + + Invalid global value for a passmark length. Piece '%1'. Length is less than minimal allowed. + + + + Unplaced pieces + + + + Sheet 1 + + QmuParser @@ -9247,30 +9373,6 @@ Do you want to save your changes? Don't Save - - Locking file - - - - This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - The lock file could not be created, for lack of permissions. - - - - Unknown error happened, for instance a full partition prevented writing out the lock file. - - Export to CSV @@ -9295,18 +9397,6 @@ Do you want to save your changes? All files - - The measurements document has no write permissions. - - - - Cannot set permissions for %1 to writable. - - - - Could not save the file. - - Could not save the file @@ -9435,10 +9525,6 @@ Do you want to save your changes? <html><head/><body><p>Search measurements by term. </p><p>Prepend &quot;/r/&quot; to the front of the search string to search measurements by regex.</p></body></html> - - Do you want to change the premissions? - - Cannot read settings from a malformed .INI file. @@ -9589,6 +9675,10 @@ Do you want to save your changes? Restrict first dimension + + untitled + + TabGrainline @@ -10290,6 +10380,10 @@ Do you want to save your changes? My Patterns + + My Layouts + + TogglePieceForceForbidFlipping @@ -10535,6 +10629,50 @@ Do you want to save your changes? Export to CSV + + The measurements document has no write permissions. + + + + Do you want to change the premissions? + + + + Cannot set permissions for %1 to writable. + + + + Could not save the file. + + + + Locking file + + + + This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). + + + + The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). + + + + Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). + + + + This file already opened in another window. + + + + The lock file could not be created, for lack of permissions. + + + + Unknown error happened, for instance a full partition prevented writing out the lock file. + + VAbstractNode @@ -11176,6 +11314,34 @@ Do you want to save your changes? The dimension C base + + The filename of exported layout file. Use it to enable console export mode. + + + + The filename of layout file + + + + Load pattern pieces form the raw layout data file. + + + + The raw layout data file + + + + Number corresponding to output format (default = 0, export mode): <not defined> + + + + Number corresponding to tiled pdf page template (default = 0, export mode with tiled pdf format): <not defined> + + + + Run the program in a test mode. The program in this mode loads a single layout file and silently quit without showing the main window. The key have priority before key '%1'. + + VCommonSettings @@ -11419,6 +11585,18 @@ Do you want to save your changes? Creating file '%1' failed! %2 + + Can't create an flat dxf file. + + + + Can't create an AAMA dxf file. + + + + Can't create an ASTM dxf file. + + VLayoutPiece @@ -11593,6 +11771,114 @@ Do you want to save your changes? + + VPApplication + + Error parsing file. Program will be terminated. + + + + Error bad id. Program will be terminated. + + + + Error can't convert value. Program will be terminated. + + + + Error empty parameter. Program will be terminated. + + + + Error wrong id. Program will be terminated. + + + + Something's wrong!! + + + + Exception thrown: %1. Program will be terminated. + + + + Can't begin to listen for incoming connections on name '%1' + + + + Export mode doesn't support openning several files. + + + + Import raw layout data does not support openning several layout files. + + + + Please, provide one input file. + + + + + VPCarrousel + + Pieces of + + + + + VPCarrouselPieceList + + Move to Sheet + + + + Delete + hapus + + + Remove from Sheet + + + + + VPDialogAbout + + About Puzzle + + + + Puzzle version + + + + Build revision: + + + + This program is part of Valentina project. + + + + Check For Updates + + + + Cannot open your default browser + Tidak dapat membuka peramban bawaan Anda + + + Build revision: %1 + + + + Built on %1 at %2 + Dibuat pada %3 at %2 {1 ?} + + + Web site : %1 + Situs web : %1 + + VPE::VBoolProperty @@ -11615,6 +11901,573 @@ Do you want to save your changes? + + VPGraphicsPiece + + Move to + + + + Remove from Sheet + + + + + VPLayoutFileReader + + Piece List + + + + Piece + + + + Got empty attribute '%1' + + + + + VPMainWindow + + Puzzle + + + + &File + + + + &Edit + + + + &Window + + + + &Help + + + + Menu + + + + Piece Carrousel + + + + Properties + + + + Current piece properties + + + + Current piece + + + + Infos + + + + Name: + + + + DummyName + + + + UUID: + + + + {7b2ce4ae-96f5-4905-bb34-405cb40ca208} + + + + Seamline + + + + Show Seamline + + + + Geometry + + + + Mirror piece + + + + Rotation + + + + Angle: + + + + Rotate the piece by 90° clockwise + + + + Rotate the piece by 90° anti-clockwise + + + + Rotate the piece so that the grainline is vertical + + + + Rotate the piece so that the grainline is horizontal + + + + Placement + + + + X: + + + + Y: + + + + No piece selected + + + + Multiple pieces selected + + + + Sheet properties + + + + Current sheet + + + + Name + + + + Format + + + + Template + + + + Width + lebar + + + Length + panjang + + + Orientation + + + + Portrait + + + + Landscape + + + + Remove unused length + + + + Margins + + + + Right: + + + + Top: + + + + Left: + + + + Bottom: + + + + Placement Grid + + + + Show Grid + + + + Column width + + + + Row height + + + + Control + + + + Follow grainline + + + + No + + + + Vertical grainline + + + + Horizontal grainline + + + + Pieces gap + + + + Sticky edges + + + + Export + + + + Export Sheet + + + + Tiles properties + + + + Tiled Pdf Export + + + + Show Tiles on sheet + + + + Export Tiled Pdf + + + + Layout properties + + + + Layout + + + + Name + Nama + + + Description + + + + Unit + + + + Warning superposition of pieces + + + + Warning pieces out of bound + + + + zoom + + + + Scale + + + + &Open + + + + Ctrl+O + + + + &Save + + + + Ctrl+S + + + + Save &As + + + + Ctrl+Shift+S + + + + &Import Raw Layout Data + + + + E&xit + + + + Ctrl+Q + + + + &New + + + + Ctrl+N + + + + About &Qt + + + + About &Puzzle + + + + Zoom in + + + + Zoom out + + + + Zoom 1:1 + + + + Zoom fit best + + + + Zoom sheet + + + + Preferences + + + + File '%1' doesn't exist! + + + + File error. + + + + Unable to read a layout file + + + + Fail to create layout. + + + + Could not extract data from file '%1'. %2 + + + + Centimeters + Centimeter + + + Millimiters + Milimeter + + + Inches + Inchi + + + Scale: + + + + untitled %1.vlt + + + + untitled.vlt + + + + read only + + + + Cannot read settings from a malformed .INI file. + + + + Cannot save settings. Access denied. + + + + Failed to open file, is it writable? + + + + &New Window + + + + Layout files + + + + Open file + Buka File + + + Could not save the file + + + + layout + + + + Save as + + + + Failed to lock. This file already opened in another window. + + + + Could not save file + + + + Failed to lock. This file already opened in another window. Expect collissions when run 2 copies of the program. + + + + Raw Layout files + + + + About Qt + + + + PDF Files + + + + SVG Files + + + + + VPSheet + + Letter + + + + Legal + + + + Tabloid + + + + Roll 24in + + + + Roll 30in + + + + Roll 36in + + + + Roll 42in + + + + Roll 44in + + + + Roll 48in + + + + Roll 62in + + + + Roll 72in + + + + Custom + + + + + VPTileFactory + + Grid ( %1 , %2 ) + + + + Page %1 of %2 + + + VPattern @@ -11884,6 +12737,10 @@ Do you want to save your changes? Value for final measurtement '%1' is infinite or NaN. Please, check your calculations. + + Unable to create record for final measurement '%1'. Error: %2 + + VPiece @@ -12104,6 +12961,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. There is no intersection with curve '%2' and axis through point '%3' with angle %4° + + Length + panjang + + + Angle + sudut + + + Label + + + + Segment 1 + + + + Segment 2 + + VToolCutArc @@ -12851,6 +13728,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. Curves '%2' and '%3' have no point of intersection + + Label + + + + Curve 1 segment 1 + + + + Curve 1 segment 2 + + + + Curve 2 segment 1 + + + + Curve 2 segment 2 + + VToolRotation diff --git a/share/translations/valentina_it_IT.ts b/share/translations/valentina_it_IT.ts index f2c308af4..aaa749b27 100644 --- a/share/translations/valentina_it_IT.ts +++ b/share/translations/valentina_it_IT.ts @@ -1208,6 +1208,14 @@ Notes + + Alias1: + + + + Alias2: + + DialogCutArc @@ -4919,6 +4927,10 @@ Applicare la configurazione comunque? yyyy-MM-dd aaaa-MM-gg + + Passmark length: + + DialogPatternXmlEdit @@ -6104,6 +6116,22 @@ Applicare la configurazione comunque? Notes + + Curve 1 + + + + Alias1: + + + + Alias2: + + + + Curve 2 + + DialogPreferences @@ -6131,6 +6159,28 @@ Applicare la configurazione comunque? + + DialogPuzzlePreferences + + Puzzle preferences + + + + Configuration + Configurazione + + + Paths + + + + Followed %n option(s) require restart to take effect: %1. + + + + + + DialogRestrictDimension @@ -8340,7 +8390,7 @@ Vuoi salvare i cambiamenti? This file already opened in another window. - Questo file è già aperto in un'altra finestra. + Questo file è già aperto in un'altra finestra. Wrong units. @@ -8793,27 +8843,27 @@ Vuoi salvare i cambiamenti? Locking file - File bloccato + File bloccato This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - Questo file è già aperto in un'altra finestra. Ignora se vuoi continuare (non consigliato, può provocare un danneggiamento dei dati). + Questo file è già aperto in un'altra finestra. Ignora se vuoi continuare (non consigliato, può provocare un danneggiamento dei dati). The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - Il file bloccato non può essere creato, per mancanza di autorizzazione. Ignora se vuoi continuare (scelta non consigliata, può causare un danneggiamento dei dati). + Il file bloccato non può essere creato, per mancanza di autorizzazione. Ignora se vuoi continuare (scelta non consigliata, può causare un danneggiamento dei dati). Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - Si è verificato un errore sconosciuto, come ad esempio il fallimento di una partizione completa durante la trascrizione di un file bloccato. Ignora se vuoi continuare (scelta non consigliata, può causare un danneggiamento dei dati). + Si è verificato un errore sconosciuto, come ad esempio il fallimento di una partizione completa durante la trascrizione di un file bloccato. Ignora se vuoi continuare (scelta non consigliata, può causare un danneggiamento dei dati). The lock file could not be created, for lack of permissions. - Il file bloccato non può essere creato, per mancanza di autorizzazione. + Il file bloccato non può essere creato, per mancanza di autorizzazione. Unknown error happened, for instance a full partition prevented writing out the lock file. - Si è verificato un errore sconosciuto, come ad esempio il fallimento di una partizione completa durante la trascrizione di un file bloccato. + Si è verificato un errore sconosciuto, come ad esempio il fallimento di una partizione completa durante la trascrizione di un file bloccato. Report Bug... @@ -8969,15 +9019,11 @@ Vuoi salvare i cambiamenti? The document has no write permissions. - Il documento è in sola lettura. - - - Cannot set permissions for %1 to writable. - + Il documento è in sola lettura. Could not save the file. - Impossibile salvare il file. + Impossibile salvare il file. Could not save the file @@ -9399,10 +9445,6 @@ Vuoi salvare i cambiamenti? Update manual layout - - Do you want to change the premissions? - - Unable to prepare raw layout data. @@ -9451,6 +9493,10 @@ Vuoi salvare i cambiamenti? Couldn't set dimension C. File wasn't opened. + + Could not create recipe file. %1 + + MainWindowsNoGUI @@ -10168,6 +10214,111 @@ Questa opzione sarà effettiva dopo il riavvio del programma. Render di scena + + Puzzle + + Export options can be used with single input file only. + Le opzioni di esportazione posso venire utilizzate solo con file di input singoli. + + + Valentina's manual layout editor. + + + + The manual layout file. + + + + + PuzzlePreferencesConfigurationPage + + Form + + + + Language + Lingua + + + GUI language: + Lingua di interfaccia: + + + Toolbar + + + + The text appears under the icon (recommended for beginners). + Il testo appare sotto l'icona. (raccomandato per i principianti). + + + User Interface + + + + Activate dark mode + + + + Don't use the native file dialog + + + + dark mode + + + + + PuzzlePreferencesPathPage + + Form + + + + Paths that Valentina uses + + + + Type + Tipo + + + Path + Percorso + + + Default + Default + + + Edit + Modifica + + + Open Directory + Apri Cartella + + + My Individual Measurements + Le mie misure individuali + + + My Multisize Measurements + Le mie misure multitaglia + + + My Patterns + I miei modelli + + + My Templates + I miei Modelli + + + My Layouts + I miei Layout + + QApplication @@ -10581,6 +10732,18 @@ Questa opzione sarà effettiva dopo il riavvio del programma. Piece '%1'. Grainline is not valid. + + Invalid global value for a passmark length. Piece '%1'. Length is less than minimal allowed. + + + + Unplaced pieces + + + + Sheet 1 + + QSaveFile @@ -11174,7 +11337,7 @@ Questa opzione sarà effettiva dopo il riavvio del programma. untitled - senza titolo + senza titolo <Empty> @@ -11411,27 +11574,27 @@ Vuoi salvare le tue modifiche? Locking file - File bloccato + File bloccato This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - Questo file è già aperto in un'altra finestra. Ignora se vuoi continuare (non consigliato, può provocare un danneggiamento dei dati). + Questo file è già aperto in un'altra finestra. Ignora se vuoi continuare (non consigliato, può provocare un danneggiamento dei dati). The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - Il file bloccato non può essere creato, per mancanza di autorizzazione. Ignora se vuoi continuare (scelta non consigliata, può causare un danneggiamento dei dati). + Il file bloccato non può essere creato, per mancanza di autorizzazione. Ignora se vuoi continuare (scelta non consigliata, può causare un danneggiamento dei dati). Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - Si è verificato un errore sconosciuto, come ad esempio il fallimento di una partizione completa durante la trascrizione di un file bloccato. Ignora se vuoi continuare (scelta non consigliata, può causare un danneggiamento dei dati). + Si è verificato un errore sconosciuto, come ad esempio il fallimento di una partizione completa durante la trascrizione di un file bloccato. Ignora se vuoi continuare (scelta non consigliata, può causare un danneggiamento dei dati). The lock file could not be created, for lack of permissions. - Il file bloccato non può essere creato, per mancanza di autorizzazione. + Il file bloccato non può essere creato, per mancanza di autorizzazione. Unknown error happened, for instance a full partition prevented writing out the lock file. - Si è verificato un errore sconosciuto, come ad esempio il fallimento di una partizione completa durante la trascrizione di un file bloccato. + Si è verificato un errore sconosciuto, come ad esempio il fallimento di una partizione completa durante la trascrizione di un file bloccato. Export to CSV @@ -11479,15 +11642,11 @@ Vuoi salvare le tue modifiche? The measurements document has no write permissions. - Il file di misure è in sola lettura. - - - Cannot set permissions for %1 to writable. - + Il file di misure è in sola lettura. Could not save the file. - Impossibile salvare il file. + Impossibile salvare il file. Could not save the file @@ -11617,10 +11776,6 @@ Vuoi salvare le tue modifiche? <html><head/><body><p>Search measurements by term. </p><p>Prepend &quot;/r/&quot; to the front of the search string to search measurements by regex.</p></body></html> - - Do you want to change the premissions? - - Cannot read settings from a malformed .INI file. @@ -12567,6 +12722,10 @@ Vuoi salvare le tue modifiche? My Patterns I miei modelli + + My Layouts + I miei Layout + ToggleDetailInLayout @@ -12848,6 +13007,50 @@ Vuoi salvare le tue modifiche? Export to CSV Esporta in CSV + + The measurements document has no write permissions. + Il file di misure è in sola lettura. + + + Do you want to change the premissions? + + + + Cannot set permissions for %1 to writable. + + + + Could not save the file. + Impossibile salvare il file. + + + Locking file + File bloccato + + + This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). + Questo file è già aperto in un'altra finestra. Ignora se vuoi continuare (non consigliato, può provocare un danneggiamento dei dati). + + + The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). + Il file bloccato non può essere creato, per mancanza di autorizzazione. Ignora se vuoi continuare (scelta non consigliata, può causare un danneggiamento dei dati). + + + Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). + Si è verificato un errore sconosciuto, come ad esempio il fallimento di una partizione completa durante la trascrizione di un file bloccato. Ignora se vuoi continuare (scelta non consigliata, può causare un danneggiamento dei dati). + + + This file already opened in another window. + Questo file è già aperto in un'altra finestra. + + + The lock file could not be created, for lack of permissions. + Il file bloccato non può essere creato, per mancanza di autorizzazione. + + + Unknown error happened, for instance a full partition prevented writing out the lock file. + Si è verificato un errore sconosciuto, come ad esempio il fallimento di una partizione completa durante la trascrizione di un file bloccato. + VAbstractNode @@ -13597,6 +13800,34 @@ Vuoi salvare le tue modifiche? The dimension C base + + The filename of exported layout file. Use it to enable console export mode. + + + + The filename of layout file + + + + Load pattern pieces form the raw layout data file. + + + + The raw layout data file + + + + Number corresponding to output format (default = 0, export mode): <not defined> + + + + Number corresponding to tiled pdf page template (default = 0, export mode with tiled pdf format): <not defined> + + + + Run the program in a test mode. The program in this mode loads a single layout file and silently quit without showing the main window. The key have priority before key '%1'. + + VCommonSettings @@ -13861,6 +14092,18 @@ Vuoi salvare le tue modifiche? Creating file '%1' failed! %2 Creare file '%1' respinto! %2 + + Can't create an flat dxf file. + + + + Can't create an AAMA dxf file. + + + + Can't create an ASTM dxf file. + + VLayoutPiece @@ -14035,6 +14278,114 @@ Vuoi salvare le tue modifiche? + + VPApplication + + Error parsing file. Program will be terminated. + + + + Error bad id. Program will be terminated. + + + + Error can't convert value. Program will be terminated. + Errore impossibile convertire errore. Il programma verrà interrotto. + + + Error empty parameter. Program will be terminated. + Errore parametro vuoto. Il programma verrà interrotto. + + + Error wrong id. Program will be terminated. + Errore id scorretto. Il programma verrà interrotto. + + + Something's wrong!! + Qualcosa non va!! + + + Exception thrown: %1. Program will be terminated. + Eccezione generata:%1. Il programma verrà terminato. + + + Can't begin to listen for incoming connections on name '%1' + Impossibile iniziare a registrare le connessioni in entrata sul nome '%1' + + + Export mode doesn't support openning several files. + + + + Import raw layout data does not support openning several layout files. + + + + Please, provide one input file. + + + + + VPCarrousel + + Pieces of + + + + + VPCarrouselPieceList + + Move to Sheet + + + + Delete + Elimina + + + Remove from Sheet + + + + + VPDialogAbout + + About Puzzle + + + + Puzzle version + + + + Build revision: + Costruisci revisione: + + + This program is part of Valentina project. + Questo programma è parte del progetto Valentina. + + + Check For Updates + Controlla gli aggiornamenti + + + Cannot open your default browser + Non è possibile aprire il browser predefinito + + + Build revision: %1 + Costruisci revisione: %1 + + + Built on %1 at %2 + Compilato il %1 alle %2 + + + Web site : %1 + Sito web : %1 + + VPE::VBoolProperty @@ -14057,6 +14408,573 @@ Vuoi salvare le tue modifiche? Apri file + + VPGraphicsPiece + + Move to + + + + Remove from Sheet + + + + + VPLayoutFileReader + + Piece List + + + + Piece + + + + Got empty attribute '%1' + + + + + VPMainWindow + + Puzzle + + + + &File + &File + + + &Edit + + + + &Window + + + + &Help + &Help + + + Menu + Menu + + + Piece Carrousel + + + + Properties + + + + Current piece properties + + + + Current piece + + + + Infos + + + + Name: + Nome: + + + DummyName + + + + UUID: + + + + {7b2ce4ae-96f5-4905-bb34-405cb40ca208} + + + + Seamline + + + + Show Seamline + + + + Geometry + + + + Mirror piece + + + + Rotation + Rotazione + + + Angle: + Angolo: + + + Rotate the piece by 90° clockwise + + + + Rotate the piece by 90° anti-clockwise + + + + Rotate the piece so that the grainline is vertical + + + + Rotate the piece so that the grainline is horizontal + + + + Placement + + + + X: + + + + Y: + + + + No piece selected + + + + Multiple pieces selected + + + + Sheet properties + + + + Current sheet + + + + Name + + + + Format + + + + Template + + + + Width + Larghezza + + + Length + Lunghezza + + + Orientation + + + + Portrait + + + + Landscape + + + + Remove unused length + + + + Margins + Margini + + + Right: + Destra: + + + Top: + Top: + + + Left: + Sinistra: + + + Bottom: + Fondo: + + + Placement Grid + + + + Show Grid + + + + Column width + + + + Row height + + + + Control + + + + Follow grainline + Rispetta drittofilo + + + No + + + + Vertical grainline + + + + Horizontal grainline + + + + Pieces gap + + + + Sticky edges + + + + Export + Esporta + + + Export Sheet + + + + Tiles properties + + + + Tiled Pdf Export + + + + Show Tiles on sheet + + + + Export Tiled Pdf + + + + Layout properties + + + + Layout + Layout + + + Name + + + + Description + Descrizione + + + Unit + + + + Warning superposition of pieces + + + + Warning pieces out of bound + + + + zoom + + + + Scale + + + + &Open + &Apri + + + Ctrl+O + + + + &Save + &Salva + + + Ctrl+S + + + + Save &As + + + + Ctrl+Shift+S + + + + &Import Raw Layout Data + + + + E&xit + U&scita + + + Ctrl+Q + + + + &New + &Nuovo + + + Ctrl+N + + + + About &Qt + About &Qt + + + About &Puzzle + + + + Zoom in + Ingrandire + + + Zoom out + Rimpicciolire + + + Zoom 1:1 + + + + Zoom fit best + Zoom migliore adattamento + + + Zoom sheet + + + + Preferences + Preferenze + + + File '%1' doesn't exist! + File '%1' non esiste! + + + File error. + + + + Unable to read a layout file + + + + Fail to create layout. + + + + Could not extract data from file '%1'. %2 + + + + Centimeters + Centimetri + + + Millimiters + Millimetri + + + Inches + Pollici + + + Scale: + Scala: + + + untitled %1.vlt + + + + untitled.vlt + + + + read only + Sola lettura + + + Cannot read settings from a malformed .INI file. + + + + Cannot save settings. Access denied. + Impossibile salvare le configurazioni. Accesso negato. + + + Failed to open file, is it writable? + + + + &New Window + &New Window + + + Layout files + + + + Open file + Apri il file + + + Could not save the file + Impossibile salvare il file + + + layout + + + + Save as + Salva come + + + Failed to lock. This file already opened in another window. + Impossibile bloccare. Questo file è già aperto in un'altra finestra. + + + Could not save file + Impossibile salvare il file + + + Failed to lock. This file already opened in another window. Expect collissions when run 2 copies of the program. + Impossibile bloccare. Questo file è già aperto in un altra finestra. Previsti conflitti quando 2 copie del programma sono in esecuzione. + + + Raw Layout files + + + + About Qt + About Qt + + + PDF Files + + + + SVG Files + + + + + VPSheet + + Letter + Lettera + + + Legal + Legale + + + Tabloid + + + + Roll 24in + Rotolo 24pollici + + + Roll 30in + Rotolo 30pollici + + + Roll 36in + Rotolo 36pollici + + + Roll 42in + Rotolo 42pollici + + + Roll 44in + Rotolo 44pollici + + + Roll 48in + Rotolo 44pollici {48i?} + + + Roll 62in + Rotolo 44pollici {62i?} + + + Roll 72in + Rotolo 44pollici {72i?} + + + Custom + Personalizzato + + + + VPTileFactory + + Grid ( %1 , %2 ) + Griglia ( %1 , %2 ) + + + Page %1 of %2 + Pagina %1 of %2 + + VPattern @@ -14345,6 +15263,10 @@ Vuoi salvare le tue modifiche? Value for final measurtement '%1' is infinite or NaN. Please, check your calculations. + + Unable to create record for final measurement '%1'. Error: %2 + + VPiece @@ -14599,6 +15521,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. There is no intersection with curve '%2' and axis through point '%3' with angle %4° + + Length + Lunghezza + + + Angle + + + + Label + Etichetta + + + Segment 1 + + + + Segment 2 + + VToolCutArc @@ -15466,6 +16408,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. Curves '%2' and '%3' have no point of intersection Errore di calcolazione del punto '%1'. Curve '%2' e '%3' non hanno alcun punto d'intersezione + + Label + Etichetta + + + Curve 1 segment 1 + + + + Curve 1 segment 2 + + + + Curve 2 segment 1 + + + + Curve 2 segment 2 + + VToolRotation diff --git a/share/translations/valentina_nl_NL.ts b/share/translations/valentina_nl_NL.ts index 2fd2207f4..a584b5574 100644 --- a/share/translations/valentina_nl_NL.ts +++ b/share/translations/valentina_nl_NL.ts @@ -1212,6 +1212,14 @@ Notes + + Alias1: + + + + Alias2: + + DialogCutArc @@ -4943,6 +4951,10 @@ Toch de instellingen aanpassen? yyyy-MM-dd yyyy-MM-dd + + Passmark length: + + DialogPatternXmlEdit @@ -6128,6 +6140,22 @@ Toch de instellingen aanpassen? Notes + + Curve 1 + + + + Alias1: + + + + Alias2: + + + + Curve 2 + + DialogPreferences @@ -6155,6 +6183,28 @@ Toch de instellingen aanpassen? + + DialogPuzzlePreferences + + Puzzle preferences + + + + Configuration + + + + Paths + Paden + + + Followed %n option(s) require restart to take effect: %1. + + Volgende optie vereist een herstart om geactiveerd te worden: %1. + Volgende %n optie(s) vereisen een herstart om geactiveerd te worden: %1. + + + DialogRestrictDimension @@ -8363,7 +8413,7 @@ Do you want to save your changes? This file already opened in another window. - Dit bestand is al geopend in een ander venster. + Dit bestand is al geopend in een ander venster. Wrong units. @@ -8816,27 +8866,27 @@ Do you want to save your changes? Locking file - Vergrendelingsbestand + Vergrendelingsbestand This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - Dit bestand is al geopend in een ander venster. Negeren als u wilt doorgaan (niet aanbevolen, kan leiden tot gegevensbeschadiging). + Dit bestand is al geopend in een ander venster. Negeren als u wilt doorgaan (niet aanbevolen, kan leiden tot gegevensbeschadiging). The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - Het vergrendelingsbestand kon niet worden aangemaakt, wegens het ontbreken van machtigingen. Negeren als u wilt doorgaan (niet aanbevolen, kan leiden tot gegevensbeschadiging). + Het vergrendelingsbestand kon niet worden aangemaakt, wegens het ontbreken van machtigingen. Negeren als u wilt doorgaan (niet aanbevolen, kan leiden tot gegevensbeschadiging). Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - Onbekende fout gebeurd, bijvoorbeeld een volledige partitie voorkomt het schrijven uit het vergrendelingsbestand. Negeren als u wilt doorgaan (niet aanbevolen, kan leiden tot gegevensbeschadiging). + Onbekende fout gebeurd, bijvoorbeeld een volledige partitie voorkomt het schrijven uit het vergrendelingsbestand. Negeren als u wilt doorgaan (niet aanbevolen, kan leiden tot gegevensbeschadiging). The lock file could not be created, for lack of permissions. - Het vergrendelingsbestand kon niet worden aangemaakt, wegens het ontbreken van machtigingen. + Het vergrendelingsbestand kon niet worden aangemaakt, wegens het ontbreken van machtigingen. Unknown error happened, for instance a full partition prevented writing out the lock file. - Onbekende fout gebeurd, bijvoorbeeld een volledige partitie voorkomt het schrijven uit het vergrendelingsbestand. + Onbekende fout gebeurd, bijvoorbeeld een volledige partitie voorkomt het schrijven uit het vergrendelingsbestand. Report Bug... @@ -8996,15 +9046,15 @@ Do you want to save your changes? The document has no write permissions. - Dit document kan niet gewijzigd worden. + Dit document kan niet gewijzigd worden. Cannot set permissions for %1 to writable. - Kan geen schrijftoestemming geven voor %1. + Kan geen schrijftoestemming geven voor %1. Could not save the file. - Het bestand is niet bewaard. + Het bestand is niet bewaard. Could not save the file @@ -9432,7 +9482,7 @@ Do you want to save your changes? Do you want to change the premissions? - Wens je de rechten te veranderen? + Wens je de rechten te veranderen? Unable to prepare raw layout data. @@ -9482,6 +9532,10 @@ Do you want to save your changes? Couldn't set dimension C. File wasn't opened. + + Could not create recipe file. %1 + + MainWindowsNoGUI @@ -10219,6 +10273,111 @@ Deze optie wordt actief na een herstart.. scene weergeven + + Puzzle + + Export options can be used with single input file only. + Exportopties kunnen worden gebruikt met slechts één invoerbestand. + + + Valentina's manual layout editor. + + + + The manual layout file. + + + + + PuzzlePreferencesConfigurationPage + + Form + Vorm + + + Language + Taal + + + GUI language: + GUI taal: + + + Toolbar + Werkbalk + + + The text appears under the icon (recommended for beginners). + De tekst verschijnt onder het icoon. (Aanbevolen voor beginners). + + + User Interface + Gebruikers Interface + + + Activate dark mode + Activeer donkere modus + + + Don't use the native file dialog + + + + dark mode + + + + + PuzzlePreferencesPathPage + + Form + Vorm + + + Paths that Valentina uses + Pad welke Valentina gebruikt + + + Type + Soort + + + Path + Pad + + + Default + + + + Edit + Verander + + + Open Directory + + + + My Individual Measurements + Mijn Individuele Maten + + + My Multisize Measurements + Mijn Multimaten Maten + + + My Patterns + Mijn patronen + + + My Templates + Mijn Sjablonen + + + My Layouts + Mijn opmaak + + QApplication @@ -10632,6 +10791,18 @@ Deze optie wordt actief na een herstart.. Piece '%1'. Grainline is not valid. + + Invalid global value for a passmark length. Piece '%1'. Length is less than minimal allowed. + + + + Unplaced pieces + + + + Sheet 1 + + QSaveFile @@ -11225,7 +11396,7 @@ Deze optie wordt actief na een herstart.. untitled - zonder titel + zonder titel <Empty> @@ -11462,27 +11633,27 @@ Wil je deze veranderingen opslaan? Locking file - Vergrendelingsbestand + Vergrendelingsbestand This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - Dit bestand is al geopend in een ander venster. Negeren als u wilt doorgaan (niet aanbevolen, kan leiden tot gegevensbeschadiging). + Dit bestand is al geopend in een ander venster. Negeren als u wilt doorgaan (niet aanbevolen, kan leiden tot gegevensbeschadiging). The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - Het vergrendelingsbestand kon niet worden aangemaakt, wegens het ontbreken van machtigingen. Negeren als u wilt doorgaan (niet aanbevolen, kan leiden tot gegevensbeschadiging). + Het vergrendelingsbestand kon niet worden aangemaakt, wegens het ontbreken van machtigingen. Negeren als u wilt doorgaan (niet aanbevolen, kan leiden tot gegevensbeschadiging). Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - Onbekende fout gebeurd, bijvoorbeeld een volledige partitie voorkomt het schrijven uit het vergrendelingsbestand. Negeren als u wilt doorgaan (niet aanbevolen, kan leiden tot gegevensbeschadiging). + Onbekende fout gebeurd, bijvoorbeeld een volledige partitie voorkomt het schrijven uit het vergrendelingsbestand. Negeren als u wilt doorgaan (niet aanbevolen, kan leiden tot gegevensbeschadiging). The lock file could not be created, for lack of permissions. - Het vergrendelingsbestand kon niet worden aangemaakt, wegens het ontbreken van machtigingen. + Het vergrendelingsbestand kon niet worden aangemaakt, wegens het ontbreken van machtigingen. Unknown error happened, for instance a full partition prevented writing out the lock file. - Onbekende fout gebeurd, bijvoorbeeld een volledige partitie voorkomt het schrijven uit het vergrendelingsbestand. + Onbekende fout gebeurd, bijvoorbeeld een volledige partitie voorkomt het schrijven uit het vergrendelingsbestand. Export to CSV @@ -11530,15 +11701,15 @@ Wil je deze veranderingen opslaan? The measurements document has no write permissions. - Het maten-dokument heeft geen schrijftoestemming. + Het maten-dokument heeft geen schrijftoestemming. Cannot set permissions for %1 to writable. - Kan geen toestemming geven voor %1 om te wijzigen. + Kan geen toestemming geven voor %1 om te wijzigen. Could not save the file. - Het bestand is niet bewaard. + Het bestand is niet bewaard. Could not save the file @@ -11682,7 +11853,7 @@ Wil je deze veranderingen opslaan? Do you want to change the premissions? - Wens je de rechten te veranderen? + Wens je de rechten te veranderen? Cannot read settings from a malformed .INI file. @@ -12649,6 +12820,10 @@ Wil je deze veranderingen opslaan? My Patterns Mijn patronen + + My Layouts + Mijn opmaak + ToggleDetailInLayout @@ -12935,6 +13110,50 @@ Wil je deze veranderingen opslaan? Export to CSV Exporteer naar CSV + + The measurements document has no write permissions. + Het maten-dokument heeft geen schrijftoestemming. + + + Do you want to change the premissions? + Wens je de rechten te veranderen? + + + Cannot set permissions for %1 to writable. + + + + Could not save the file. + Het bestand is niet bewaard. + + + Locking file + Vergrendelingsbestand + + + This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). + Dit bestand is al geopend in een ander venster. Negeren als u wilt doorgaan (niet aanbevolen, kan leiden tot gegevensbeschadiging). + + + The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). + Het vergrendelingsbestand kon niet worden aangemaakt, wegens het ontbreken van machtigingen. Negeren als u wilt doorgaan (niet aanbevolen, kan leiden tot gegevensbeschadiging). + + + Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). + Onbekende fout gebeurd, bijvoorbeeld een volledige partitie voorkomt het schrijven uit het vergrendelingsbestand. Negeren als u wilt doorgaan (niet aanbevolen, kan leiden tot gegevensbeschadiging). + + + This file already opened in another window. + Dit bestand is al geopend in een ander venster. + + + The lock file could not be created, for lack of permissions. + Het vergrendelingsbestand kon niet worden aangemaakt, wegens het ontbreken van machtigingen. + + + Unknown error happened, for instance a full partition prevented writing out the lock file. + Onbekende fout gebeurd, bijvoorbeeld een volledige partitie voorkomt het schrijven uit het vergrendelingsbestand. + VAbstractNode @@ -13724,6 +13943,34 @@ Wil je deze veranderingen opslaan? The dimension C base + + The filename of exported layout file. Use it to enable console export mode. + + + + The filename of layout file + + + + Load pattern pieces form the raw layout data file. + + + + The raw layout data file + + + + Number corresponding to output format (default = 0, export mode): <not defined> + + + + Number corresponding to tiled pdf page template (default = 0, export mode with tiled pdf format): <not defined> + + + + Run the program in a test mode. The program in this mode loads a single layout file and silently quit without showing the main window. The key have priority before key '%1'. + + VCommonSettings @@ -14026,6 +14273,18 @@ Wil je deze veranderingen opslaan? Creating file '%1' failed! %2 Bestand '%1' maken heeft gefaald! %2 + + Can't create an flat dxf file. + + + + Can't create an AAMA dxf file. + + + + Can't create an ASTM dxf file. + + VLayoutPiece @@ -14200,6 +14459,114 @@ Wil je deze veranderingen opslaan? Vierkant merkteken + + VPApplication + + Error parsing file. Program will be terminated. + Fout bij opsplitsen bestand. Programma wordt beëindigd. + + + Error bad id. Program will be terminated. + Fout slechte ID. Programma wordt beëindigd. + + + Error can't convert value. Program will be terminated. + Fout kan waarde niet omzetten. Programma wordt beëindigd. + + + Error empty parameter. Program will be terminated. + Fout lege parameter. Programma wordt beëindigd. + + + Error wrong id. Program will be terminated. + Fout verkeerde ID. Programma wordt beëindigd. + + + Something's wrong!! + Er gaat iets verkeerd!! + + + Exception thrown: %1. Program will be terminated. + Uitgeworpen uitzondering: %1. Programma wordt beëindigd. + + + Can't begin to listen for incoming connections on name '%1' + Kan niet beginnen met verwerken van inkomende connecties op naam '%1' + + + Export mode doesn't support openning several files. + + + + Import raw layout data does not support openning several layout files. + + + + Please, provide one input file. + + + + + VPCarrousel + + Pieces of + + + + + VPCarrouselPieceList + + Move to Sheet + + + + Delete + + + + Remove from Sheet + + + + + VPDialogAbout + + About Puzzle + + + + Puzzle version + + + + Build revision: + Herziene uitgave gebouwd: + + + This program is part of Valentina project. + Dit programma is een deel van het Valentina project. + + + Check For Updates + + + + Cannot open your default browser + Kan uw standaard browser niet openen + + + Build revision: %1 + Herziene uitgave gebouwd: %1 + + + Built on %1 at %2 + Gebouwd op %1 op %2 + + + Web site : %1 + Website: %1 + + VPE::VBoolProperty @@ -14222,6 +14589,573 @@ Wil je deze veranderingen opslaan? Open bestand + + VPGraphicsPiece + + Move to + + + + Remove from Sheet + + + + + VPLayoutFileReader + + Piece List + + + + Piece + + + + Got empty attribute '%1' + + + + + VPMainWindow + + Puzzle + + + + &File + &Bestand + + + &Edit + + + + &Window + &Venster + + + &Help + &Help + + + Menu + Menu + + + Piece Carrousel + + + + Properties + + + + Current piece properties + + + + Current piece + + + + Infos + + + + Name: + Naam: + + + DummyName + + + + UUID: + + + + {7b2ce4ae-96f5-4905-bb34-405cb40ca208} + + + + Seamline + + + + Show Seamline + + + + Geometry + + + + Mirror piece + + + + Rotation + Rotatie + + + Angle: + Hoek: + + + Rotate the piece by 90° clockwise + + + + Rotate the piece by 90° anti-clockwise + + + + Rotate the piece so that the grainline is vertical + + + + Rotate the piece so that the grainline is horizontal + + + + Placement + + + + X: + + + + Y: + + + + No piece selected + + + + Multiple pieces selected + + + + Sheet properties + + + + Current sheet + + + + Name + + + + Format + + + + Template + + + + Width + Breedte + + + Length + Lengte + + + Orientation + + + + Portrait + + + + Landscape + + + + Remove unused length + + + + Margins + Marges + + + Right: + Rechts: + + + Top: + Bovenaan: + + + Left: + Links: + + + Bottom: + Onderaan: + + + Placement Grid + + + + Show Grid + + + + Column width + + + + Row height + + + + Control + Controle + + + Follow grainline + Langs de recht-van-draad + + + No + + + + Vertical grainline + + + + Horizontal grainline + + + + Pieces gap + + + + Sticky edges + + + + Export + Export + + + Export Sheet + + + + Tiles properties + + + + Tiled Pdf Export + + + + Show Tiles on sheet + + + + Export Tiled Pdf + + + + Layout properties + + + + Layout + Opmaak + + + Name + Naam + + + Description + Beschrijving + + + Unit + + + + Warning superposition of pieces + + + + Warning pieces out of bound + + + + zoom + + + + Scale + Schaal + + + &Open + &Open + + + Ctrl+O + Ctrl+O + + + &Save + &Opslaan + + + Ctrl+S + + + + Save &As + + + + Ctrl+Shift+S + + + + &Import Raw Layout Data + + + + E&xit + E&xit + + + Ctrl+Q + + + + &New + &Nieuw + + + Ctrl+N + + + + About &Qt + Over &Qt + + + About &Puzzle + + + + Zoom in + Inzoomen + + + Zoom out + Uitzoomen + + + Zoom 1:1 + + + + Zoom fit best + Zoom naar best passend + + + Zoom sheet + + + + Preferences + Voorkeuren + + + File '%1' doesn't exist! + Bestand '%1' bestaat niet! + + + File error. + Bestandsfout. + + + Unable to read a layout file + + + + Fail to create layout. + + + + Could not extract data from file '%1'. %2 + + + + Centimeters + Centimeters + + + Millimiters + + + + Inches + Inches + + + Scale: + Schaal: + + + untitled %1.vlt + + + + untitled.vlt + + + + read only + alleen lezen + + + Cannot read settings from a malformed .INI file. + Kan instellingen niet inlezen wegens een niet-conform .INI-bestand. + + + Cannot save settings. Access denied. + Kan instellingen niet opslaan. Toegang geweigerd. + + + Failed to open file, is it writable? + + + + &New Window + &Nieuw Venster + + + Layout files + + + + Open file + Open bestand + + + Could not save the file + Het bestand is niet bewaard + + + layout + + + + Save as + Opslaan als + + + Failed to lock. This file already opened in another window. + Afsluiten is mislukt. Dit bestand is al geopend in een ander venster. + + + Could not save file + Kon bestand niet opslaan + + + Failed to lock. This file already opened in another window. Expect collissions when run 2 copies of the program. + Afsluiten is mislukt. Dit bestand is al geopend in een ander venster. Verwacht een conflict als 2 kopieën van het programma gaan lopen. + + + Raw Layout files + + + + About Qt + Over Qt + + + PDF Files + + + + SVG Files + + + + + VPSheet + + Letter + Letter + + + Legal + Legaal + + + Tabloid + Tablet + + + Roll 24in + Roll 44inch {72inch?} {24i?} + + + Roll 30in + Roll 44inch {72inch?} {30i?} + + + Roll 36in + Roll 44inch {72inch?} {36i?} + + + Roll 42in + Roll 44inch {72inch?} {42i?} + + + Roll 44in + Roll 44inch {72inch?} {44i?} + + + Roll 48in + Roll 44inch {48inch?} + + + Roll 62in + Roll 44inch {62inch?} + + + Roll 72in + Roll 44inch {72inch?} + + + Custom + Op maat + + + + VPTileFactory + + Grid ( %1 , %2 ) + Raster ( %1 , %2 ) + + + Page %1 of %2 + Pagina %1 van %2 + + VPattern @@ -14510,6 +15444,10 @@ Wil je deze veranderingen opslaan? Value for final measurtement '%1' is infinite or NaN. Please, check your calculations. Waarde voor de definitieve maten '%1' is oneindig of NaN. Controlleer uw berekeningen. + + Unable to create record for final measurement '%1'. Error: %2 + + VPiece @@ -14772,6 +15710,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. There is no intersection with curve '%2' and axis through point '%3' with angle %4° Fout berekenen punt '%1'. Er is geen kruispunt met de kromme '%2' en de aslijn door punt '%3' met hoek %4° + + Length + Lengte + + + Angle + Hoek + + + Label + Label + + + Segment 1 + + + + Segment 2 + + VToolCutArc @@ -15647,6 +16605,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. Curves '%2' and '%3' have no point of intersection Fout bij berekenen van punt '%1'. Krommen '%2' en '%3' hebben geen kruispunt + + Label + Label + + + Curve 1 segment 1 + + + + Curve 1 segment 2 + + + + Curve 2 segment 1 + + + + Curve 2 segment 2 + + VToolRotation diff --git a/share/translations/valentina_pl_PL.ts b/share/translations/valentina_pl_PL.ts index 2df7c9edb..b81367ae8 100644 --- a/share/translations/valentina_pl_PL.ts +++ b/share/translations/valentina_pl_PL.ts @@ -1212,6 +1212,14 @@ Notes + + Alias1: + + + + Alias2: + + DialogCutArc @@ -4522,6 +4530,10 @@ Apply settings anyway? Label language: Język etykiet: + + Passmark length: + + DialogPatternXmlEdit @@ -5555,6 +5567,22 @@ Apply settings anyway? Notes + + Curve 1 + + + + Alias1: + + + + Alias2: + + + + Curve 2 + + DialogPreferences @@ -5583,6 +5611,29 @@ Apply settings anyway? + + DialogPuzzlePreferences + + Puzzle preferences + + + + Configuration + + + + Paths + Ścieżki + + + Followed %n option(s) require restart to take effect: %1. + + + + + + + DialogRestrictDimension @@ -7568,7 +7619,7 @@ Do you want to save your changes? This file already opened in another window. - Plik ten otwarty jest w innym oknie. + Plik ten otwarty jest w innym oknie. File error. @@ -7882,30 +7933,6 @@ Do you want to save your changes? Don't Save Nie zapisuj - - Locking file - - - - This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - The lock file could not be created, for lack of permissions. - - - - Unknown error happened, for instance a full partition prevented writing out the lock file. - - Point intersection curves @@ -8026,18 +8053,6 @@ Do you want to save your changes? Select main path objects clockwise. - - The document has no write permissions. - - - - Cannot set permissions for %1 to writable. - - - - Could not save the file. - - Could not save the file @@ -8450,10 +8465,6 @@ Do you want to save your changes? Update manual layout - - Do you want to change the premissions? - - Unable to prepare raw layout data. @@ -8502,6 +8513,10 @@ Do you want to save your changes? Couldn't set dimension C. File wasn't opened. + + Could not create recipe file. %1 + + MainWindowsNoGUI @@ -9114,6 +9129,111 @@ This option will take an affect after restart. + + Puzzle + + Export options can be used with single input file only. + + + + Valentina's manual layout editor. + + + + The manual layout file. + + + + + PuzzlePreferencesConfigurationPage + + Form + + + + Language + Język + + + GUI language: + Język interfejsu: + + + Toolbar + Pasek narzędzi + + + The text appears under the icon (recommended for beginners). + Wyświetl napisy pod ikonkami (zalecane dla początkujących). + + + User Interface + + + + Activate dark mode + + + + Don't use the native file dialog + + + + dark mode + + + + + PuzzlePreferencesPathPage + + Form + + + + Paths that Valentina uses + Ścieżki używane przez program + + + Type + Typ + + + Path + Ścieżka + + + Default + Domyślny + + + Edit + Edytuj + + + Open Directory + Otwórz katalog + + + My Individual Measurements + Moje osobiste wymiary + + + My Multisize Measurements + + + + My Patterns + Moje wykroje + + + My Templates + Moje szablony + + + My Layouts + + + QApplication @@ -9483,6 +9603,18 @@ This option will take an affect after restart. Piece '%1'. Grainline is not valid. + + Invalid global value for a passmark length. Piece '%1'. Length is less than minimal allowed. + + + + Unplaced pieces + + + + Sheet 1 + + QmuParser @@ -10014,7 +10146,7 @@ This option will take an affect after restart. untitled - bez nazwy + bez nazwy <Empty> @@ -10220,30 +10352,6 @@ Do you want to save your changes? Don't Save Nie zapisuj - - Locking file - - - - This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - The lock file could not be created, for lack of permissions. - - - - Unknown error happened, for instance a full partition prevented writing out the lock file. - - Export to CSV Eksportuj do CSV @@ -10280,18 +10388,6 @@ Do you want to save your changes? All files Wszystkie pliki - - The measurements document has no write permissions. - - - - Cannot set permissions for %1 to writable. - - - - Could not save the file. - - Could not save the file @@ -10420,10 +10516,6 @@ Do you want to save your changes? <html><head/><body><p>Search measurements by term. </p><p>Prepend &quot;/r/&quot; to the front of the search string to search measurements by regex.</p></body></html> - - Do you want to change the premissions? - - Cannot read settings from a malformed .INI file. @@ -11366,6 +11458,10 @@ Do you want to save your changes? My Patterns Moje wykroje + + My Layouts + + TogglePieceForceForbidFlipping @@ -11631,6 +11727,50 @@ Do you want to save your changes? Export to CSV Eksportuj do CSV + + The measurements document has no write permissions. + + + + Do you want to change the premissions? + + + + Cannot set permissions for %1 to writable. + + + + Could not save the file. + + + + Locking file + + + + This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). + + + + The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). + + + + Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). + + + + This file already opened in another window. + Plik ten otwarty jest w innym oknie. + + + The lock file could not be created, for lack of permissions. + + + + Unknown error happened, for instance a full partition prevented writing out the lock file. + + VAbstractNode @@ -12272,6 +12412,34 @@ Do you want to save your changes? The dimension C base + + The filename of exported layout file. Use it to enable console export mode. + + + + The filename of layout file + + + + Load pattern pieces form the raw layout data file. + + + + The raw layout data file + + + + Number corresponding to output format (default = 0, export mode): <not defined> + + + + Number corresponding to tiled pdf page template (default = 0, export mode with tiled pdf format): <not defined> + + + + Run the program in a test mode. The program in this mode loads a single layout file and silently quit without showing the main window. The key have priority before key '%1'. + + VCommonSettings @@ -12519,6 +12687,18 @@ Do you want to save your changes? Creating file '%1' failed! %2 + + Can't create an flat dxf file. + + + + Can't create an AAMA dxf file. + + + + Can't create an ASTM dxf file. + + VLayoutPiece @@ -12693,6 +12873,114 @@ Do you want to save your changes? + + VPApplication + + Error parsing file. Program will be terminated. + + + + Error bad id. Program will be terminated. + + + + Error can't convert value. Program will be terminated. + + + + Error empty parameter. Program will be terminated. + + + + Error wrong id. Program will be terminated. + + + + Something's wrong!! + + + + Exception thrown: %1. Program will be terminated. + + + + Can't begin to listen for incoming connections on name '%1' + + + + Export mode doesn't support openning several files. + + + + Import raw layout data does not support openning several layout files. + + + + Please, provide one input file. + + + + + VPCarrousel + + Pieces of + + + + + VPCarrouselPieceList + + Move to Sheet + + + + Delete + Usuń + + + Remove from Sheet + + + + + VPDialogAbout + + About Puzzle + + + + Puzzle version + + + + Build revision: + Rewizja: + + + This program is part of Valentina project. + Ten program jest częścią projektu Valentina. + + + Check For Updates + Sprawdź aktualizacje + + + Cannot open your default browser + Nie mogę otworzyć domyślnej przeglądarki + + + Build revision: %1 + Rewizja: %1 + + + Built on %1 at %2 + Zdudowano %1 o %2 + + + Web site : %1 + Strona www : %1 + + VPE::VBoolProperty @@ -12715,6 +13003,573 @@ Do you want to save your changes? Otwórz plik + + VPGraphicsPiece + + Move to + + + + Remove from Sheet + + + + + VPLayoutFileReader + + Piece List + + + + Piece + + + + Got empty attribute '%1' + + + + + VPMainWindow + + Puzzle + + + + &File + &Plik + + + &Edit + + + + &Window + + + + &Help + P&omoc + + + Menu + + + + Piece Carrousel + + + + Properties + + + + Current piece properties + + + + Current piece + + + + Infos + + + + Name: + Nazwa: + + + DummyName + + + + UUID: + + + + {7b2ce4ae-96f5-4905-bb34-405cb40ca208} + + + + Seamline + + + + Show Seamline + + + + Geometry + + + + Mirror piece + + + + Rotation + + + + Angle: + Kąt: + + + Rotate the piece by 90° clockwise + + + + Rotate the piece by 90° anti-clockwise + + + + Rotate the piece so that the grainline is vertical + + + + Rotate the piece so that the grainline is horizontal + + + + Placement + + + + X: + + + + Y: + + + + No piece selected + + + + Multiple pieces selected + + + + Sheet properties + + + + Current sheet + + + + Name + + + + Format + + + + Template + + + + Width + Szerokość + + + Length + Długość + + + Orientation + + + + Portrait + + + + Landscape + + + + Remove unused length + + + + Margins + Marginesy + + + Right: + Prawy: + + + Top: + + + + Left: + Lewy: + + + Bottom: + + + + Placement Grid + + + + Show Grid + + + + Column width + + + + Row height + + + + Control + + + + Follow grainline + + + + No + + + + Vertical grainline + + + + Horizontal grainline + + + + Pieces gap + + + + Sticky edges + + + + Export + Eksport + + + Export Sheet + + + + Tiles properties + + + + Tiled Pdf Export + + + + Show Tiles on sheet + + + + Export Tiled Pdf + + + + Layout properties + + + + Layout + Układ + + + Name + Nazwa + + + Description + Opis + + + Unit + + + + Warning superposition of pieces + + + + Warning pieces out of bound + + + + zoom + + + + Scale + + + + &Open + &Otwórz + + + Ctrl+O + + + + &Save + &Save + + + Ctrl+S + + + + Save &As + + + + Ctrl+Shift+S + + + + &Import Raw Layout Data + + + + E&xit + + + + Ctrl+Q + + + + &New + &Nowy + + + Ctrl+N + + + + About &Qt + O &Qt + + + About &Puzzle + + + + Zoom in + Przybliż + + + Zoom out + Oddal + + + Zoom 1:1 + + + + Zoom fit best + Dopasuj przybliżenie + + + Zoom sheet + + + + Preferences + Ustawienia + + + File '%1' doesn't exist! + Plik '%1' nie istnieje! + + + File error. + + + + Unable to read a layout file + + + + Fail to create layout. + + + + Could not extract data from file '%1'. %2 + + + + Centimeters + Centymetry + + + Millimiters + Milimetry + + + Inches + Cale + + + Scale: + + + + untitled %1.vlt + + + + untitled.vlt + + + + read only + tylko do odczytu + + + Cannot read settings from a malformed .INI file. + + + + Cannot save settings. Access denied. + + + + Failed to open file, is it writable? + + + + &New Window + &Nowe okno + + + Layout files + + + + Open file + Otwórz plik + + + Could not save the file + + + + layout + + + + Save as + Zapisz jako + + + Failed to lock. This file already opened in another window. + + + + Could not save file + Nie można zapisać pliku + + + Failed to lock. This file already opened in another window. Expect collissions when run 2 copies of the program. + + + + Raw Layout files + + + + About Qt + O Qt + + + PDF Files + + + + SVG Files + + + + + VPSheet + + Letter + + + + Legal + + + + Tabloid + + + + Roll 24in + Rolka 24 cale + + + Roll 30in + Rolka 30 cali + + + Roll 36in + Rolka 36 cali + + + Roll 42in + Rolka 42 cale + + + Roll 44in + Rolka 44 cale + + + Roll 48in + Rolka 44 cale {48i?} + + + Roll 62in + Rolka 44 cale {62i?} + + + Roll 72in + Rolka 44 cale {72i?} + + + Custom + + + + + VPTileFactory + + Grid ( %1 , %2 ) + + + + Page %1 of %2 + + + VPattern @@ -12995,6 +13850,10 @@ Do you want to save your changes? Value for final measurtement '%1' is infinite or NaN. Please, check your calculations. + + Unable to create record for final measurement '%1'. Error: %2 + + VPiece @@ -13215,6 +14074,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. There is no intersection with curve '%2' and axis through point '%3' with angle %4° + + Length + Długość + + + Angle + Kąt + + + Label + Etykieta + + + Segment 1 + + + + Segment 2 + + VToolCutArc @@ -13986,6 +14865,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. Curves '%2' and '%3' have no point of intersection + + Label + Etykieta + + + Curve 1 segment 1 + + + + Curve 1 segment 2 + + + + Curve 2 segment 1 + + + + Curve 2 segment 2 + + VToolRotation diff --git a/share/translations/valentina_pt_BR.ts b/share/translations/valentina_pt_BR.ts index bcc6f64bc..999d92529 100644 --- a/share/translations/valentina_pt_BR.ts +++ b/share/translations/valentina_pt_BR.ts @@ -1212,6 +1212,14 @@ Notes + + Alias1: + + + + Alias2: + + DialogCutArc @@ -4927,6 +4935,10 @@ Aplicar configurações de qualquer forma? yyyy-MM-dd yyyy-MM-dd + + Passmark length: + + DialogPatternXmlEdit @@ -6112,6 +6124,22 @@ Aplicar configurações de qualquer forma? Notes + + Curve 1 + + + + Alias1: + + + + Alias2: + + + + Curve 2 + + DialogPreferences @@ -6139,6 +6167,28 @@ Aplicar configurações de qualquer forma? + + DialogPuzzlePreferences + + Puzzle preferences + + + + Configuration + Configuração + + + Paths + + + + Followed %n option(s) require restart to take effect: %1. + + + + + + DialogRestrictDimension @@ -8344,7 +8394,7 @@ Você quer salvar suas mudanças? This file already opened in another window. - Este arquivo já foi aberto em outra janela. + Este arquivo já foi aberto em outra janela. Wrong units. @@ -8797,27 +8847,27 @@ Você quer salvar suas mudanças? Locking file - Arquivo bloqueado + Arquivo bloqueado This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - Este arquivo já foi aberto em outra janela. Ignore caso deseje continuar (não recomendado, pode causar uma corrupção de dados). + Este arquivo já foi aberto em outra janela. Ignore caso deseje continuar (não recomendado, pode causar uma corrupção de dados). The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - Não foi possível criar o arquivo blequado, por falta de permissões. Ignore caso deseje continuar (não recomendado, pode causar uma corrupção de dados). + Não foi possível criar o arquivo blequado, por falta de permissões. Ignore caso deseje continuar (não recomendado, pode causar uma corrupção de dados). Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - Ocorreu um erro desconhecido, como por exemplo, uma partição cheia impediu a gravação do arquivo bloqueado. Ignore caso deseje continuar (não recomendado, pode causar uma corrupção de dados). + Ocorreu um erro desconhecido, como por exemplo, uma partição cheia impediu a gravação do arquivo bloqueado. Ignore caso deseje continuar (não recomendado, pode causar uma corrupção de dados). The lock file could not be created, for lack of permissions. - Não foi possível criar o arquivo blequado, por falta de permissões. + Não foi possível criar o arquivo blequado, por falta de permissões. Unknown error happened, for instance a full partition prevented writing out the lock file. - Ocorreu um erro desconhecido, como por exemplo, uma partição cheia impediu a gravação do arquivo bloqueado. + Ocorreu um erro desconhecido, como por exemplo, uma partição cheia impediu a gravação do arquivo bloqueado. Report Bug... @@ -8977,15 +9027,15 @@ Você quer salvar suas mudanças? The document has no write permissions. - O documento não tem permissões para gravação. + O documento não tem permissões para gravação. Cannot set permissions for %1 to writable. - Não é possível definir permissões para %1 para gravável. + Não é possível definir permissões para %1 para gravável. Could not save the file. - Não foi possível salvar o arquivo. + Não foi possível salvar o arquivo. Could not save the file @@ -9407,10 +9457,6 @@ Você quer salvar suas mudanças? Update manual layout - - Do you want to change the premissions? - - Unable to prepare raw layout data. @@ -9459,6 +9505,10 @@ Você quer salvar suas mudanças? Couldn't set dimension C. File wasn't opened. + + Could not create recipe file. %1 + + MainWindowsNoGUI @@ -10156,6 +10206,111 @@ Esta opção terá um efeito após o reinício. cena renderizada + + Puzzle + + Export options can be used with single input file only. + As opções de exportação podem ser usadas apenas com um único arquivo de entrada. + + + Valentina's manual layout editor. + + + + The manual layout file. + + + + + PuzzlePreferencesConfigurationPage + + Form + Forma + + + Language + Idioma + + + GUI language: + Linguagem GUI: + + + Toolbar + Barra de ferramentas + + + The text appears under the icon (recommended for beginners). + A legenda aparece sob o ícone. (recomendado para iniciantes). + + + User Interface + + + + Activate dark mode + + + + Don't use the native file dialog + + + + dark mode + + + + + PuzzlePreferencesPathPage + + Form + Forma + + + Paths that Valentina uses + Caminhos que Valentina usa + + + Type + Tipo + + + Path + Caminho + + + Default + Padrão + + + Edit + Editar + + + Open Directory + Abrir Diretório + + + My Individual Measurements + Minhas Medidas Individuais + + + My Multisize Measurements + + + + My Patterns + Meus Moldes + + + My Templates + Meus modelos + + + My Layouts + Meus Layouts + + QApplication @@ -10569,6 +10724,18 @@ Esta opção terá um efeito após o reinício. Piece '%1'. Grainline is not valid. + + Invalid global value for a passmark length. Piece '%1'. Length is less than minimal allowed. + + + + Unplaced pieces + + + + Sheet 1 + + QSaveFile @@ -11162,7 +11329,7 @@ Esta opção terá um efeito após o reinício. untitled - sem título + sem título <Empty> @@ -11399,27 +11566,27 @@ Deseja salvar suas mudanças? Locking file - Arquivo bloqueado + Arquivo bloqueado This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - Este arquivo já foi aberto em outra janela. Ignore se deseja continuar (não recomendado, pode causar uma corrupção de dados). + Este arquivo já foi aberto em outra janela. Ignore se deseja continuar (não recomendado, pode causar uma corrupção de dados). The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - Não foi possível criar o arquivo blequado, por falta de permissões. Ignore caso deseje continuar (não recomendado, pode causar uma corrupção de dados). + Não foi possível criar o arquivo blequado, por falta de permissões. Ignore caso deseje continuar (não recomendado, pode causar uma corrupção de dados). Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - Ocorreu um erro desconhecido, como por exemplo, uma partição cheia impediu a gravação do arquivo bloqueado. Ignore caso deseje continuar (não recomendado, pode causar uma corrupção de dados). + Ocorreu um erro desconhecido, como por exemplo, uma partição cheia impediu a gravação do arquivo bloqueado. Ignore caso deseje continuar (não recomendado, pode causar uma corrupção de dados). The lock file could not be created, for lack of permissions. - Não foi possível criar o arquivo blequado, por falta de permissões. + Não foi possível criar o arquivo blequado, por falta de permissões. Unknown error happened, for instance a full partition prevented writing out the lock file. - Ocorreu um erro desconhecido, como por exemplo, uma partição cheia impediu a gravação do arquivo bloqueado. + Ocorreu um erro desconhecido, como por exemplo, uma partição cheia impediu a gravação do arquivo bloqueado. Export to CSV @@ -11467,15 +11634,15 @@ Deseja salvar suas mudanças? The measurements document has no write permissions. - O documento de medidas não possui permissões de gravação. + O documento de medidas não possui permissões de gravação. Cannot set permissions for %1 to writable. - Não é possível definir permissões para %1 para gravável. + Não é possível definir permissões para %1 para gravável. Could not save the file. - Não foi possível salvar o arquivo. + Não foi possível salvar o arquivo. Could not save the file @@ -11617,10 +11784,6 @@ Deseja salvar suas mudanças? <html><head/><body><p>Search measurements by term. </p><p>Prepend &quot;/r/&quot; to the front of the search string to search measurements by regex.</p></body></html> - - Do you want to change the premissions? - - Cannot read settings from a malformed .INI file. @@ -12567,6 +12730,10 @@ Deseja salvar suas mudanças? My Patterns Meus Moldes + + My Layouts + Meus Layouts + ToggleDetailInLayout @@ -12849,6 +13016,50 @@ Deseja salvar suas mudanças? Export to CSV Exportar para CSV + + The measurements document has no write permissions. + O documento de medidas não possui permissões de gravação. + + + Do you want to change the premissions? + + + + Cannot set permissions for %1 to writable. + Não é possível definir permissões para %1 para gravável. + + + Could not save the file. + Não foi possível salvar o arquivo. + + + Locking file + Arquivo bloqueado + + + This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). + + + + The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). + Não foi possível criar o arquivo blequado, por falta de permissões. Ignore caso deseje continuar (não recomendado, pode causar uma corrupção de dados). + + + Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). + Ocorreu um erro desconhecido, como por exemplo, uma partição cheia impediu a gravação do arquivo bloqueado. Ignore caso deseje continuar (não recomendado, pode causar uma corrupção de dados). + + + This file already opened in another window. + Este arquivo já foi aberto em outra janela. + + + The lock file could not be created, for lack of permissions. + Não foi possível criar o arquivo blequado, por falta de permissões. + + + Unknown error happened, for instance a full partition prevented writing out the lock file. + Ocorreu um erro desconhecido, como por exemplo, uma partição cheia impediu a gravação do arquivo bloqueado. + VAbstractNode @@ -13598,6 +13809,34 @@ Deseja salvar suas mudanças? The dimension C base + + The filename of exported layout file. Use it to enable console export mode. + + + + The filename of layout file + + + + Load pattern pieces form the raw layout data file. + + + + The raw layout data file + + + + Number corresponding to output format (default = 0, export mode): <not defined> + + + + Number corresponding to tiled pdf page template (default = 0, export mode with tiled pdf format): <not defined> + + + + Run the program in a test mode. The program in this mode loads a single layout file and silently quit without showing the main window. The key have priority before key '%1'. + + VCommonSettings @@ -13884,6 +14123,18 @@ Deseja salvar suas mudanças? Creating file '%1' failed! %2 Criação do arquivo '%1' falhou! %2 + + Can't create an flat dxf file. + + + + Can't create an AAMA dxf file. + + + + Can't create an ASTM dxf file. + + VLayoutPiece @@ -14058,6 +14309,114 @@ Deseja salvar suas mudanças? + + VPApplication + + Error parsing file. Program will be terminated. + Erro ao analisar o arquivo. O programa será encerrado. + + + Error bad id. Program will be terminated. + Erro de identidade incorreta. O programa será encerrado. + + + Error can't convert value. Program will be terminated. + Erro impossível converter o valor. O programa será encerrado. + + + Error empty parameter. Program will be terminated. + Erro de parâmetro vazio. O programa será encerrado. + + + Error wrong id. Program will be terminated. + Erro de identidate errada. O programa será encerrado. + + + Something's wrong!! + Algo está errado!! + + + Exception thrown: %1. Program will be terminated. + Exceção jogada: %1. O programa será encerrado. + + + Can't begin to listen for incoming connections on name '%1' + Não é possível começar a ouvir conexões recebidas no nome '%1' + + + Export mode doesn't support openning several files. + + + + Import raw layout data does not support openning several layout files. + + + + Please, provide one input file. + Por favor, forneça um arquivo de entrada. + + + + VPCarrousel + + Pieces of + + + + + VPCarrouselPieceList + + Move to Sheet + + + + Delete + Excluir + + + Remove from Sheet + + + + + VPDialogAbout + + About Puzzle + + + + Puzzle version + + + + Build revision: + Versão revista: + + + This program is part of Valentina project. + Este programa é parte do projero Valentina. + + + Check For Updates + Checar atualizações + + + Cannot open your default browser + Não é possível abrir seu navegador padrão + + + Build revision: %1 + Criar revisão: %1 + + + Built on %1 at %2 + Construído de %1 a %2 + + + Web site : %1 + Web site: %1 + + VPE::VBoolProperty @@ -14080,6 +14439,573 @@ Deseja salvar suas mudanças? Abrir arquivo + + VPGraphicsPiece + + Move to + + + + Remove from Sheet + + + + + VPLayoutFileReader + + Piece List + + + + Piece + + + + Got empty attribute '%1' + + + + + VPMainWindow + + Puzzle + + + + &File + &Arquivo + + + &Edit + + + + &Window + + + + &Help + &Ajuda + + + Menu + Menu + + + Piece Carrousel + + + + Properties + + + + Current piece properties + + + + Current piece + + + + Infos + + + + Name: + Nome: + + + DummyName + + + + UUID: + + + + {7b2ce4ae-96f5-4905-bb34-405cb40ca208} + + + + Seamline + + + + Show Seamline + + + + Geometry + + + + Mirror piece + + + + Rotation + Rotação + + + Angle: + Ângulo: + + + Rotate the piece by 90° clockwise + + + + Rotate the piece by 90° anti-clockwise + + + + Rotate the piece so that the grainline is vertical + + + + Rotate the piece so that the grainline is horizontal + + + + Placement + + + + X: + + + + Y: + + + + No piece selected + + + + Multiple pieces selected + + + + Sheet properties + + + + Current sheet + + + + Name + + + + Format + + + + Template + + + + Width + Largura + + + Length + Comprimento + + + Orientation + + + + Portrait + + + + Landscape + + + + Remove unused length + + + + Margins + Margens + + + Right: + Direita: + + + Top: + Topo: + + + Left: + Esquerda: + + + Bottom: + Base: + + + Placement Grid + + + + Show Grid + + + + Column width + + + + Row height + + + + Control + Controle + + + Follow grainline + + + + No + + + + Vertical grainline + + + + Horizontal grainline + + + + Pieces gap + + + + Sticky edges + + + + Export + Exportar + + + Export Sheet + + + + Tiles properties + + + + Tiled Pdf Export + + + + Show Tiles on sheet + + + + Export Tiled Pdf + + + + Layout properties + + + + Layout + Layout + + + Name + Nome + + + Description + Descrição + + + Unit + + + + Warning superposition of pieces + + + + Warning pieces out of bound + + + + zoom + + + + Scale + + + + &Open + &Abrir + + + Ctrl+O + + + + &Save + &Salvar + + + Ctrl+S + + + + Save &As + + + + Ctrl+Shift+S + + + + &Import Raw Layout Data + + + + E&xit + S&air + + + Ctrl+Q + + + + &New + &Novo + + + Ctrl+N + + + + About &Qt + Sobre &Qt + + + About &Puzzle + + + + Zoom in + Ampliar + + + Zoom out + Reduzir + + + Zoom 1:1 + + + + Zoom fit best + Ajustar à janela + + + Zoom sheet + + + + Preferences + Preferências + + + File '%1' doesn't exist! + O arquivo '%1' não existe! + + + File error. + Erro de arquivo. + + + Unable to read a layout file + + + + Fail to create layout. + + + + Could not extract data from file '%1'. %2 + + + + Centimeters + + + + Millimiters + + + + Inches + Polegadas + + + Scale: + Escala: + + + untitled %1.vlt + + + + untitled.vlt + + + + read only + somente leitura + + + Cannot read settings from a malformed .INI file. + + + + Cannot save settings. Access denied. + + + + Failed to open file, is it writable? + + + + &New Window + &Nova Janela + + + Layout files + + + + Open file + Abrir arquivo + + + Could not save the file + Não foi possível salvar o arquivo + + + layout + + + + Save as + Salvar como + + + Failed to lock. This file already opened in another window. + Falha ao bloquear. Este arquivo já foi aberto em outra janela. + + + Could not save file + Não foi possível salvar o arquivo + + + Failed to lock. This file already opened in another window. Expect collissions when run 2 copies of the program. + Falha ao bloquear. Este arquivo já foi aberto em outra janela. Expectativa de colisão ao executar 2 cópias do programa. + + + Raw Layout files + + + + About Qt + Sobre Qt + + + PDF Files + + + + SVG Files + + + + + VPSheet + + Letter + Carta + + + Legal + Ofício + + + Tabloid + + + + Roll 24in + Rolo de 24" + + + Roll 30in + Rolo de 30" + + + Roll 36in + Rolo de 36" + + + Roll 42in + Rolo de 42" + + + Roll 44in + Rolo de 44" + + + Roll 48in + Rolo de 44" {481?} + + + Roll 62in + Rolo de 44" {62i?} + + + Roll 72in + Rolo de 44" {72i?} + + + Custom + Personalizado + + + + VPTileFactory + + Grid ( %1 , %2 ) + Grade ( %1, %2 ) + + + Page %1 of %2 + Página %1 de %2 + + VPattern @@ -14368,6 +15294,10 @@ Deseja salvar suas mudanças? Value for final measurtement '%1' is infinite or NaN. Please, check your calculations. + + Unable to create record for final measurement '%1'. Error: %2 + + VPiece @@ -14626,6 +15556,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. There is no intersection with curve '%2' and axis through point '%3' with angle %4° + + Length + Comprimento + + + Angle + Ângulo + + + Label + Rótulo + + + Segment 1 + + + + Segment 2 + + VToolCutArc @@ -15501,6 +16451,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. Curves '%2' and '%3' have no point of intersection + + Label + Rótulo + + + Curve 1 segment 1 + + + + Curve 1 segment 2 + + + + Curve 2 segment 1 + + + + Curve 2 segment 2 + + VToolRotation diff --git a/share/translations/valentina_ro_RO.ts b/share/translations/valentina_ro_RO.ts index 70a78abda..c940dc45d 100644 --- a/share/translations/valentina_ro_RO.ts +++ b/share/translations/valentina_ro_RO.ts @@ -1177,6 +1177,14 @@ Notes + + Alias1: + + + + Alias2: + + DialogCutArc @@ -4459,6 +4467,10 @@ Apply settings anyway? Label language: Limbă etichetă: + + Passmark length: + + DialogPatternXmlEdit @@ -5472,6 +5484,22 @@ Apply settings anyway? Notes + + Curve 1 + + + + Alias1: + + + + Alias2: + + + + Curve 2 + + DialogPreferences @@ -5500,6 +5528,29 @@ Apply settings anyway? + + DialogPuzzlePreferences + + Puzzle preferences + + + + Configuration + Configurație + + + Paths + Căi + + + Followed %n option(s) require restart to take effect: %1. + + + + + + + DialogRestrictDimension @@ -7527,10 +7578,6 @@ Do you want to save your changes? Enter a new label for the pattern piece. - - This file already opened in another window. - - Wrong units. Unități de măsură greșite. @@ -7827,30 +7874,6 @@ Do you want to save your changes? Don't Save - - Locking file - - - - This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - The lock file could not be created, for lack of permissions. - - - - Unknown error happened, for instance a full partition prevented writing out the lock file. - - Point intersection curves @@ -7967,18 +7990,6 @@ Do you want to save your changes? Select main path objects clockwise. - - The document has no write permissions. - - - - Cannot set permissions for %1 to writable. - - - - Could not save the file. - - Could not save the file @@ -8391,10 +8402,6 @@ Do you want to save your changes? Update manual layout - - Do you want to change the premissions? - - Unable to prepare raw layout data. @@ -8443,6 +8450,10 @@ Do you want to save your changes? Couldn't set dimension C. File wasn't opened. + + Could not create recipe file. %1 + + MainWindowsNoGUI @@ -8976,6 +8987,111 @@ This option will take an affect after restart. + + Puzzle + + Export options can be used with single input file only. + + + + Valentina's manual layout editor. + + + + The manual layout file. + + + + + PuzzlePreferencesConfigurationPage + + Form + + + + Language + Limba + + + GUI language: + Limbaj GUI: + + + Toolbar + Bară de instrumente + + + The text appears under the icon (recommended for beginners). + + + + User Interface + + + + Activate dark mode + + + + Don't use the native file dialog + + + + dark mode + + + + + PuzzlePreferencesPathPage + + Form + + + + Paths that Valentina uses + + + + Type + + + + Path + + + + Default + + + + Edit + + + + Open Directory + + + + My Individual Measurements + + + + My Multisize Measurements + + + + My Patterns + + + + My Templates + + + + My Layouts + + + QCoreApplication @@ -9323,6 +9439,18 @@ This option will take an affect after restart. Piece '%1'. Grainline is not valid. + + Invalid global value for a passmark length. Piece '%1'. Length is less than minimal allowed. + + + + Unplaced pieces + + + + Sheet 1 + + QmuParser @@ -9993,30 +10121,6 @@ Do you want to save your changes? Don't Save - - Locking file - - - - This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - The lock file could not be created, for lack of permissions. - - - - Unknown error happened, for instance a full partition prevented writing out the lock file. - - Export to CSV @@ -10041,18 +10145,6 @@ Do you want to save your changes? All files - - The measurements document has no write permissions. - - - - Cannot set permissions for %1 to writable. - - - - Could not save the file. - - Could not save the file @@ -10181,10 +10273,6 @@ Do you want to save your changes? <html><head/><body><p>Search measurements by term. </p><p>Prepend &quot;/r/&quot; to the front of the search string to search measurements by regex.</p></body></html> - - Do you want to change the premissions? - - Cannot read settings from a malformed .INI file. @@ -10335,6 +10423,10 @@ Do you want to save your changes? Restrict first dimension + + untitled + + TabGrainline @@ -11071,6 +11163,10 @@ Do you want to save your changes? My Patterns + + My Layouts + + TogglePieceForceForbidFlipping @@ -11316,6 +11412,50 @@ Do you want to save your changes? Export to CSV + + The measurements document has no write permissions. + + + + Do you want to change the premissions? + + + + Cannot set permissions for %1 to writable. + + + + Could not save the file. + + + + Locking file + + + + This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). + + + + The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). + + + + Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). + + + + This file already opened in another window. + + + + The lock file could not be created, for lack of permissions. + + + + Unknown error happened, for instance a full partition prevented writing out the lock file. + + VAbstractNode @@ -11957,6 +12097,34 @@ Do you want to save your changes? The dimension C base + + The filename of exported layout file. Use it to enable console export mode. + + + + The filename of layout file + + + + Load pattern pieces form the raw layout data file. + + + + The raw layout data file + + + + Number corresponding to output format (default = 0, export mode): <not defined> + + + + Number corresponding to tiled pdf page template (default = 0, export mode with tiled pdf format): <not defined> + + + + Run the program in a test mode. The program in this mode loads a single layout file and silently quit without showing the main window. The key have priority before key '%1'. + + VCommonSettings @@ -12204,6 +12372,18 @@ Do you want to save your changes? Creating file '%1' failed! %2 + + Can't create an flat dxf file. + + + + Can't create an AAMA dxf file. + + + + Can't create an ASTM dxf file. + + VLayoutPiece @@ -12378,6 +12558,114 @@ Do you want to save your changes? + + VPApplication + + Error parsing file. Program will be terminated. + + + + Error bad id. Program will be terminated. + + + + Error can't convert value. Program will be terminated. + + + + Error empty parameter. Program will be terminated. + + + + Error wrong id. Program will be terminated. + + + + Something's wrong!! + + + + Exception thrown: %1. Program will be terminated. + + + + Can't begin to listen for incoming connections on name '%1' + + + + Export mode doesn't support openning several files. + + + + Import raw layout data does not support openning several layout files. + + + + Please, provide one input file. + + + + + VPCarrousel + + Pieces of + + + + + VPCarrouselPieceList + + Move to Sheet + + + + Delete + Șterge + + + Remove from Sheet + + + + + VPDialogAbout + + About Puzzle + + + + Puzzle version + + + + Build revision: + Revizie Versiune: + + + This program is part of Valentina project. + Acest program face parte din proiectul Valentina. + + + Check For Updates + + + + Cannot open your default browser + Nu pot deschide browser-ul implicit + + + Build revision: %1 + Revizie Versiune: %1 + + + Built on %1 at %2 + Construit pe %1 la %2 + + + Web site : %1 + Site Web: %1 + + VPE::VBoolProperty @@ -12400,6 +12688,573 @@ Do you want to save your changes? + + VPGraphicsPiece + + Move to + + + + Remove from Sheet + + + + + VPLayoutFileReader + + Piece List + + + + Piece + + + + Got empty attribute '%1' + + + + + VPMainWindow + + Puzzle + + + + &File + & Fișier + + + &Edit + + + + &Window + + + + &Help + & Ajutor + + + Menu + + + + Piece Carrousel + + + + Properties + + + + Current piece properties + + + + Current piece + + + + Infos + + + + Name: + + + + DummyName + + + + UUID: + + + + {7b2ce4ae-96f5-4905-bb34-405cb40ca208} + + + + Seamline + + + + Show Seamline + + + + Geometry + + + + Mirror piece + + + + Rotation + + + + Angle: + Unghi: + + + Rotate the piece by 90° clockwise + + + + Rotate the piece by 90° anti-clockwise + + + + Rotate the piece so that the grainline is vertical + + + + Rotate the piece so that the grainline is horizontal + + + + Placement + + + + X: + + + + Y: + + + + No piece selected + + + + Multiple pieces selected + + + + Sheet properties + + + + Current sheet + + + + Name + + + + Format + + + + Template + + + + Width + Lățime + + + Length + Lungime + + + Orientation + + + + Portrait + + + + Landscape + + + + Remove unused length + + + + Margins + + + + Right: + + + + Top: + + + + Left: + + + + Bottom: + + + + Placement Grid + + + + Show Grid + + + + Column width + + + + Row height + + + + Control + + + + Follow grainline + + + + No + + + + Vertical grainline + + + + Horizontal grainline + + + + Pieces gap + + + + Sticky edges + + + + Export + + + + Export Sheet + + + + Tiles properties + + + + Tiled Pdf Export + + + + Show Tiles on sheet + + + + Export Tiled Pdf + + + + Layout properties + + + + Layout + + + + Name + Nume + + + Description + Descriere + + + Unit + + + + Warning superposition of pieces + + + + Warning pieces out of bound + + + + zoom + + + + Scale + + + + &Open + &Deschide + + + Ctrl+O + + + + &Save + &Salvează + + + Ctrl+S + + + + Save &As + + + + Ctrl+Shift+S + + + + &Import Raw Layout Data + + + + E&xit + E&xit + + + Ctrl+Q + + + + &New + & Nou + + + Ctrl+N + + + + About &Qt + Despre&Qt + + + About &Puzzle + + + + Zoom in + Mărește + + + Zoom out + Micșorează + + + Zoom 1:1 + + + + Zoom fit best + Zoom se potrivesc cel mai bine + + + Zoom sheet + + + + Preferences + Preferințe + + + File '%1' doesn't exist! + + + + File error. + Eroare de fișier. + + + Unable to read a layout file + + + + Fail to create layout. + + + + Could not extract data from file '%1'. %2 + + + + Centimeters + Centimetrii + + + Millimiters + Milimetrii + + + Inches + Inci + + + Scale: + + + + untitled %1.vlt + + + + untitled.vlt + + + + read only + + + + Cannot read settings from a malformed .INI file. + + + + Cannot save settings. Access denied. + + + + Failed to open file, is it writable? + + + + &New Window + + + + Layout files + + + + Open file + Deschide fișier + + + Could not save the file + + + + layout + + + + Save as + Salvează ca și + + + Failed to lock. This file already opened in another window. + + + + Could not save file + Fișierul nu a putut fii salvat + + + Failed to lock. This file already opened in another window. Expect collissions when run 2 copies of the program. + + + + Raw Layout files + + + + About Qt + Despre Qt + + + PDF Files + + + + SVG Files + + + + + VPSheet + + Letter + + + + Legal + + + + Tabloid + + + + Roll 24in + + + + Roll 30in + + + + Roll 36in + + + + Roll 42in + + + + Roll 44in + + + + Roll 48in + + + + Roll 62in + + + + Roll 72in + + + + Custom + + + + + VPTileFactory + + Grid ( %1 , %2 ) + + + + Page %1 of %2 + + + VPattern @@ -12669,6 +13524,10 @@ Do you want to save your changes? Value for final measurtement '%1' is infinite or NaN. Please, check your calculations. + + Unable to create record for final measurement '%1'. Error: %2 + + VPiece @@ -12889,6 +13748,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. There is no intersection with curve '%2' and axis through point '%3' with angle %4° + + Length + Lungime + + + Angle + Unghi + + + Label + + + + Segment 1 + + + + Segment 2 + + VToolCutArc @@ -13648,6 +14527,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. Curves '%2' and '%3' have no point of intersection + + Label + + + + Curve 1 segment 1 + + + + Curve 1 segment 2 + + + + Curve 2 segment 1 + + + + Curve 2 segment 2 + + VToolRotation diff --git a/share/translations/valentina_ru_RU.ts b/share/translations/valentina_ru_RU.ts index 72aba45ab..557e00887 100644 --- a/share/translations/valentina_ru_RU.ts +++ b/share/translations/valentina_ru_RU.ts @@ -1212,6 +1212,14 @@ Notes Заметки + + Alias1: + Псевдоним 1: + + + Alias2: + Псевдоним 2: + DialogCutArc @@ -4931,6 +4939,10 @@ Apply settings anyway? yyyy-MM-dd гггг-мм-дд + + Passmark length: + + DialogPatternXmlEdit @@ -6116,6 +6128,22 @@ Apply settings anyway? Notes Заметки + + Curve 1 + + + + Alias1: + Псевдоним 1: + + + Alias2: + Псевдоним 2: + + + Curve 2 + + DialogPreferences @@ -6144,6 +6172,29 @@ Apply settings anyway? + + DialogPuzzlePreferences + + Puzzle preferences + + + + Configuration + Настройки + + + Paths + + + + Followed %n option(s) require restart to take effect: %1. + + Следующий %n параметр требует перезапуск, чтобы вступить в силу: %1. + Следующие %n параметры требуют перезапуск, чтобы вступить в силу: %1. + Следующие %n параметров требуют перезапуск, чтобы вступить в силу: %1. + + + DialogRestrictDimension @@ -8353,7 +8404,7 @@ Do you want to save your changes? This file already opened in another window. - Этот файл уже открыт в другом окне. + Этот файл уже открыт в другом окне. Wrong units. @@ -8806,27 +8857,27 @@ Do you want to save your changes? Locking file - Блокировка файла + Блокировка файла This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - Этот файл уже открыт в другом окне. Игнорируйте, если вы хотите продолжить (не рекомендуется, может привести к повреждению данных). + Этот файл уже открыт в другом окне. Игнорируйте, если вы хотите продолжить (не рекомендуется, может привести к повреждению данных). The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - Файл блокировки не может быть создан из-за отсутствия разрешений. Игнорируйте, если вы хотите продолжить (не рекомендуется, может привести к повреждению данных). + Файл блокировки не может быть создан из-за отсутствия разрешений. Игнорируйте, если вы хотите продолжить (не рекомендуется, может привести к повреждению данных). Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - Произошла неизвестная ошибка, например, полностью заполненный раздел предотвращает запись файла блокировки. Игнорируйте, если вы хотите продолжить (не рекомендуется, может привести к повреждению данных). + Произошла неизвестная ошибка, например, полностью заполненный раздел предотвращает запись файла блокировки. Игнорируйте, если вы хотите продолжить (не рекомендуется, может привести к повреждению данных). The lock file could not be created, for lack of permissions. - Файл блокировки не может быть создан, не хватает прав доступа. + Файл блокировки не может быть создан, не хватает прав доступа. Unknown error happened, for instance a full partition prevented writing out the lock file. - Произошла неизвестная ошибка, например, полностью заполненный раздел предотвращает запись файла блокировки. + Произошла неизвестная ошибка, например, полностью заполненный раздел предотвращает запись файла блокировки. Report Bug... @@ -8986,15 +9037,15 @@ Do you want to save your changes? The document has no write permissions. - Документ не имеет прав на запись. + Документ не имеет прав на запись. Cannot set permissions for %1 to writable. - Невозможно установить разрешения для %1 для записи. + Невозможно установить разрешения для %1 для записи. Could not save the file. - Не удалось сохранить файл. + Не удалось сохранить файл. Could not save the file @@ -9418,7 +9469,7 @@ Do you want to save your changes? Do you want to change the premissions? - Вы хотите изменить настройки? + Вы хотите изменить настройки? Unable to prepare raw layout data. @@ -9468,6 +9519,10 @@ Do you want to save your changes? Couldn't set dimension C. File wasn't opened. + + Could not create recipe file. %1 + + MainWindowsNoGUI @@ -10205,6 +10260,111 @@ This option will take an affect after restart. рендер сцены + + Puzzle + + Export options can be used with single input file only. + Параметры экспорта могут использоваться только с одним входным файлом. + + + Valentina's manual layout editor. + + + + The manual layout file. + + + + + PuzzlePreferencesConfigurationPage + + Form + Форма + + + Language + Язык + + + GUI language: + Язык интерфейса: + + + Toolbar + Панель инструментов + + + The text appears under the icon (recommended for beginners). + Текст отображается под иконками (рекомендуется для начинающих). + + + User Interface + Пользовательский интерфейс + + + Activate dark mode + Активировать тёмный режим + + + Don't use the native file dialog + + + + dark mode + тёмный режим + + + + PuzzlePreferencesPathPage + + Form + Форма + + + Paths that Valentina uses + Пути, что использует Валентина + + + Type + Тип + + + Path + + + + Default + По умолчанию + + + Edit + + + + Open Directory + + + + My Individual Measurements + Мои индивидуальные мерки + + + My Multisize Measurements + Мои мультиразмерные мерки + + + My Patterns + Мои выкройки + + + My Templates + Мои шаблоны + + + My Layouts + Мои раскладки + + QApplication @@ -10618,6 +10778,18 @@ This option will take an affect after restart. Piece '%1'. Grainline is not valid. + + Invalid global value for a passmark length. Piece '%1'. Length is less than minimal allowed. + + + + Unplaced pieces + + + + Sheet 1 + + QSaveFile @@ -11211,7 +11383,7 @@ This option will take an affect after restart. untitled - безымянный + безымянный <Empty> @@ -11448,27 +11620,27 @@ Do you want to save your changes? Locking file - Файл блокировки + Файл блокировки This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - Этот файл уже открыт в другом окне. Игнорируйте, если вы хотите продолжить (не рекомендуется, может привести к повреждению данных). + Этот файл уже открыт в другом окне. Игнорируйте, если вы хотите продолжить (не рекомендуется, может привести к повреждению данных). The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - Файл блокировки не может быть создан из-за отсутствия разрешений. Игнорируйте, если вы хотите продолжить (не рекомендуется, может привести к повреждению данных). + Файл блокировки не может быть создан из-за отсутствия разрешений. Игнорируйте, если вы хотите продолжить (не рекомендуется, может привести к повреждению данных). Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - Произошла неизвестная ошибка, например, полностью заполненный раздел предотвращает запись файла блокировки. Игнорируйте, если вы хотите продолжить (не рекомендуется, может привести к повреждению данных). + Произошла неизвестная ошибка, например, полностью заполненный раздел предотвращает запись файла блокировки. Игнорируйте, если вы хотите продолжить (не рекомендуется, может привести к повреждению данных). The lock file could not be created, for lack of permissions. - Файл блокировки не может быть создан, не хватает прав доступа. + Файл блокировки не может быть создан, не хватает прав доступа. Unknown error happened, for instance a full partition prevented writing out the lock file. - Произошла неизвестная ошибка, например, полностью заполненный раздел предотвращает запись lock файла. + Произошла неизвестная ошибка, например, полностью заполненный раздел предотвращает запись lock файла. Export to CSV @@ -11516,15 +11688,15 @@ Do you want to save your changes? The measurements document has no write permissions. - Документ мерок не имеет прав на запись. + Документ мерок не имеет прав на запись. Cannot set permissions for %1 to writable. - Невозможно установить разрешения для %1 для записи. + Невозможно установить разрешения для %1 для записи. Could not save the file. - Не удалось сохранить файл. + Не удалось сохранить файл. Could not save the file @@ -11668,7 +11840,7 @@ Do you want to save your changes? Do you want to change the premissions? - Вы хотите изменить настройки? + Вы хотите изменить настройки? Cannot read settings from a malformed .INI file. @@ -12631,6 +12803,10 @@ Do you want to save your changes? My Patterns Мои выкройки + + My Layouts + Мои раскладки + ToggleDetailInLayout @@ -12917,6 +13093,50 @@ Do you want to save your changes? Export to CSV Экспорт в CSV + + The measurements document has no write permissions. + Документ мерок не имеет прав на запись. + + + Do you want to change the premissions? + Вы хотите изменить настройки? + + + Cannot set permissions for %1 to writable. + Невозможно установить разрешения для %1 для записи. + + + Could not save the file. + Не удалось сохранить файл. + + + Locking file + + + + This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). + Этот файл уже открыт в другом окне. Игнорируйте, если вы хотите продолжить (не рекомендуется, может привести к повреждению данных). + + + The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). + Файл блокировки не может быть создан из-за отсутствия разрешений. Игнорируйте, если вы хотите продолжить (не рекомендуется, может привести к повреждению данных). + + + Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). + Произошла неизвестная ошибка, например, полностью заполненный раздел предотвращает запись файла блокировки. Игнорируйте, если вы хотите продолжить (не рекомендуется, может привести к повреждению данных). + + + This file already opened in another window. + Этот файл уже открыт в другом окне. + + + The lock file could not be created, for lack of permissions. + Файл блокировки не может быть создан, не хватает прав доступа. + + + Unknown error happened, for instance a full partition prevented writing out the lock file. + + VAbstractNode @@ -13706,6 +13926,34 @@ Do you want to save your changes? The dimension C base + + The filename of exported layout file. Use it to enable console export mode. + + + + The filename of layout file + + + + Load pattern pieces form the raw layout data file. + + + + The raw layout data file + + + + Number corresponding to output format (default = 0, export mode): <not defined> + + + + Number corresponding to tiled pdf page template (default = 0, export mode with tiled pdf format): <not defined> + + + + Run the program in a test mode. The program in this mode loads a single layout file and silently quit without showing the main window. The key have priority before key '%1'. + + VCommonSettings @@ -14008,6 +14256,18 @@ Do you want to save your changes? Creating file '%1' failed! %2 Ошибка при создании файла «%1»! %2 + + Can't create an flat dxf file. + + + + Can't create an AAMA dxf file. + + + + Can't create an ASTM dxf file. + + VLayoutPiece @@ -14182,6 +14442,114 @@ Do you want to save your changes? П метка + + VPApplication + + Error parsing file. Program will be terminated. + + + + Error bad id. Program will be terminated. + + + + Error can't convert value. Program will be terminated. + + + + Error empty parameter. Program will be terminated. + + + + Error wrong id. Program will be terminated. + + + + Something's wrong!! + + + + Exception thrown: %1. Program will be terminated. + Программное исключение: %1. Работа программы будет завершена. + + + Can't begin to listen for incoming connections on name '%1' + Невозможно начать слушать входящие соединения с именем '%1' + + + Export mode doesn't support openning several files. + + + + Import raw layout data does not support openning several layout files. + + + + Please, provide one input file. + + + + + VPCarrousel + + Pieces of + + + + + VPCarrouselPieceList + + Move to Sheet + + + + Delete + Удалить + + + Remove from Sheet + + + + + VPDialogAbout + + About Puzzle + + + + Puzzle version + + + + Build revision: + Ревизия: + + + This program is part of Valentina project. + Эта программа является частью проекта Valentina. + + + Check For Updates + Проверить наличие обновлений + + + Cannot open your default browser + Невозможно открыть браузер по умолчанию + + + Build revision: %1 + Ревизия: %1 + + + Built on %1 at %2 + Собрано %1 в %2 + + + Web site : %1 + + + VPE::VBoolProperty @@ -14204,6 +14572,573 @@ Do you want to save your changes? Открыть файл + + VPGraphicsPiece + + Move to + + + + Remove from Sheet + + + + + VPLayoutFileReader + + Piece List + + + + Piece + + + + Got empty attribute '%1' + + + + + VPMainWindow + + Puzzle + + + + &File + &Файл + + + &Edit + + + + &Window + &Окно + + + &Help + &Помощь + + + Menu + Меню + + + Piece Carrousel + + + + Properties + + + + Current piece properties + + + + Current piece + + + + Infos + + + + Name: + + + + DummyName + + + + UUID: + + + + {7b2ce4ae-96f5-4905-bb34-405cb40ca208} + + + + Seamline + + + + Show Seamline + + + + Geometry + + + + Mirror piece + + + + Rotation + Поворот + + + Angle: + Угол: + + + Rotate the piece by 90° clockwise + + + + Rotate the piece by 90° anti-clockwise + + + + Rotate the piece so that the grainline is vertical + + + + Rotate the piece so that the grainline is horizontal + + + + Placement + + + + X: + + + + Y: + + + + No piece selected + + + + Multiple pieces selected + + + + Sheet properties + + + + Current sheet + + + + Name + + + + Format + + + + Template + + + + Width + Ширина + + + Length + Длина + + + Orientation + + + + Portrait + + + + Landscape + + + + Remove unused length + + + + Margins + Поля + + + Right: + Правое: + + + Top: + Верхнее: + + + Left: + Левое: + + + Bottom: + Нижнее: + + + Placement Grid + + + + Show Grid + + + + Column width + + + + Row height + + + + Control + Контроль + + + Follow grainline + Раскладка по долевой + + + No + + + + Vertical grainline + + + + Horizontal grainline + + + + Pieces gap + + + + Sticky edges + + + + Export + Экспорт + + + Export Sheet + + + + Tiles properties + + + + Tiled Pdf Export + + + + Show Tiles on sheet + + + + Export Tiled Pdf + + + + Layout properties + + + + Layout + Раскладка + + + Name + + + + Description + Описание + + + Unit + + + + Warning superposition of pieces + + + + Warning pieces out of bound + + + + zoom + + + + Scale + Масштаб + + + &Open + &Открыть + + + Ctrl+O + Ctrl+O + + + &Save + &Сохранить + + + Ctrl+S + + + + Save &As + + + + Ctrl+Shift+S + + + + &Import Raw Layout Data + + + + E&xit + &Выход + + + Ctrl+Q + + + + &New + &Новый + + + Ctrl+N + + + + About &Qt + + + + About &Puzzle + + + + Zoom in + Увеличить + + + Zoom out + Уменьшить + + + Zoom 1:1 + + + + Zoom fit best + Уместить + + + Zoom sheet + + + + Preferences + + + + File '%1' doesn't exist! + Файл «%1» не существует! + + + File error. + Ошибка файла. + + + Unable to read a layout file + + + + Fail to create layout. + + + + Could not extract data from file '%1'. %2 + + + + Centimeters + Сантиметры + + + Millimiters + Миллиметры + + + Inches + Дюймы + + + Scale: + Масштаб: + + + untitled %1.vlt + + + + untitled.vlt + + + + read only + только для чтения + + + Cannot read settings from a malformed .INI file. + + + + Cannot save settings. Access denied. + Невозможно сохранить настройки. Доступ запрещен. + + + Failed to open file, is it writable? + + + + &New Window + &Новое окно + + + Layout files + + + + Open file + Открыть файл + + + Could not save the file + Не удалось сохранить файл + + + layout + + + + Save as + Сохранить как + + + Failed to lock. This file already opened in another window. + Невозможно заблокировать. Этот файл уже открыт в другом окне. + + + Could not save file + + + + Failed to lock. This file already opened in another window. Expect collissions when run 2 copies of the program. + Невозможно заблокировать. Этот файл уже открыт в другом окне. Возможны конфликты, если одновременно запущено несколько экземпляров программы. + + + Raw Layout files + + + + About Qt + Про Qt + + + PDF Files + + + + SVG Files + + + + + VPSheet + + Letter + + + + Legal + Legal + + + Tabloid + + + + Roll 24in + Рулон 24 дюйма + + + Roll 30in + Рулон 30 дюймов + + + Roll 36in + Рулон 36 дюймов + + + Roll 42in + Рулон 42 дюйма + + + Roll 44in + Рулон 44 дюйма + + + Roll 48in + Рулон 44 дюйма {не 48 ли?} + + + Roll 62in + Рулон 44 дюйма {не 62 ли?} + + + Roll 72in + Рулон 44 дюйма {не 72 ли?} + + + Custom + + + + + VPTileFactory + + Grid ( %1 , %2 ) + Сетка ( %1 , %2 ) + + + Page %1 of %2 + Страница %1 из %2 + + VPattern @@ -14492,6 +15427,10 @@ Do you want to save your changes? Value for final measurtement '%1' is infinite or NaN. Please, check your calculations. + + Unable to create record for final measurement '%1'. Error: %2 + + VPiece @@ -14754,6 +15693,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. There is no intersection with curve '%2' and axis through point '%3' with angle %4° Ошибка при вычислении точки '%1'. Между кривой '%2' и осью через точку '%3' с углом %4° нет пересечений + + Length + Длина + + + Angle + Угол + + + Label + Метка + + + Segment 1 + + + + Segment 2 + + VToolCutArc @@ -15629,6 +16588,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. Curves '%2' and '%3' have no point of intersection Ошибка при вычислении точки '%1'. Кривые '%2' и '%3' не имеют точек пересечения + + Label + Метка + + + Curve 1 segment 1 + + + + Curve 1 segment 2 + + + + Curve 2 segment 1 + + + + Curve 2 segment 2 + + VToolRotation diff --git a/share/translations/valentina_uk_UA.ts b/share/translations/valentina_uk_UA.ts index 9d99c9d66..161f1ddae 100644 --- a/share/translations/valentina_uk_UA.ts +++ b/share/translations/valentina_uk_UA.ts @@ -1212,6 +1212,14 @@ Notes + + Alias1: + + + + Alias2: + + DialogCutArc @@ -4873,6 +4881,10 @@ Apply settings anyway? yyyy-MM-dd yyyy-MM-dd + + Passmark length: + + DialogPatternXmlEdit @@ -6058,6 +6070,22 @@ Apply settings anyway? Notes + + Curve 1 + + + + Alias1: + + + + Alias2: + + + + Curve 2 + + DialogPreferences @@ -6086,6 +6114,29 @@ Apply settings anyway? + + DialogPuzzlePreferences + + Puzzle preferences + + + + Configuration + Налаштування + + + Paths + Шляхи + + + Followed %n option(s) require restart to take effect: %1. + + + + + + + DialogRestrictDimension @@ -8295,7 +8346,7 @@ Do you want to save your changes? This file already opened in another window. - Цей файл вже відкрито в іншому вікні. + Цей файл вже відкрито в іншому вікні. Wrong units. @@ -8748,27 +8799,27 @@ Do you want to save your changes? Locking file - Блокування файлу + Блокування файлу This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - Цей файл вже відкритий в іншому вікні. Ігноруйте якщо ви хочете продовжити (не рекомендується, може призвести до втрати даних). + Цей файл вже відкритий в іншому вікні. Ігноруйте якщо ви хочете продовжити (не рекомендується, може призвести до втрати даних). The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - Не вдалося створити lock файл через відсутність дозволів. Ігноруйте якщо хочете продовжити (не рекомендується, може призвести до втрати даних). + Не вдалося створити lock файл через відсутність дозволів. Ігноруйте якщо хочете продовжити (не рекомендується, може призвести до втрати даних). Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - Сталася невідома помилка, наприклад переповнення розділу попередило запис lock файлу. Ігноруйте якщо бажаєте продовжити (не рекомендується, може призвести до втрати даних). + Сталася невідома помилка, наприклад переповнення розділу попередило запис lock файлу. Ігноруйте якщо бажаєте продовжити (не рекомендується, може призвести до втрати даних). The lock file could not be created, for lack of permissions. - Не вдалося створити lock файл через відсутність дозволів. + Не вдалося створити lock файл через відсутність дозволів. Unknown error happened, for instance a full partition prevented writing out the lock file. - Сталася невідома помилка, наприклад переповнення розділу попередило запис lock файлу. + Сталася невідома помилка, наприклад переповнення розділу попередило запис lock файлу. Report Bug... @@ -8928,15 +8979,15 @@ Do you want to save your changes? The document has no write permissions. - Документ не має прав на запис. + Документ не має прав на запис. Cannot set permissions for %1 to writable. - Не вдалося встановити права для %1 на запис. + Не вдалося встановити права для %1 на запис. Could not save the file. - Не вдалося зберегти файл. + Не вдалося зберегти файл. Could not save the file @@ -9350,10 +9401,6 @@ Do you want to save your changes? Update manual layout - - Do you want to change the premissions? - - Unable to prepare raw layout data. @@ -9402,6 +9449,10 @@ Do you want to save your changes? Couldn't set dimension C. File wasn't opened. + + Could not create recipe file. %1 + + MainWindowsNoGUI @@ -10114,6 +10165,111 @@ This option will take an affect after restart. + + Puzzle + + Export options can be used with single input file only. + Параметри експорту можуть використовуватися тільки з одним вхідним файлом. + + + Valentina's manual layout editor. + + + + The manual layout file. + + + + + PuzzlePreferencesConfigurationPage + + Form + Форма + + + Language + Мова + + + GUI language: + Мова інтерфейсу: + + + Toolbar + Панель інструментів + + + The text appears under the icon (recommended for beginners). + Текст відображається під іконкою (рекомендується для новачків). + + + User Interface + + + + Activate dark mode + + + + Don't use the native file dialog + + + + dark mode + + + + + PuzzlePreferencesPathPage + + Form + Форма + + + Paths that Valentina uses + Шляхи, що використовує Валентина + + + Type + Тип + + + Path + + + + Default + По замовчуванню + + + Edit + Редагувати + + + Open Directory + Відкрити директорію + + + My Individual Measurements + Мої індивідуальні мірки + + + My Multisize Measurements + Мої стандартні мірки + + + My Patterns + Мої лекала + + + My Templates + Мої шаблони + + + My Layouts + Мої розкладки + + QApplication @@ -10527,6 +10683,18 @@ This option will take an affect after restart. Piece '%1'. Grainline is not valid. + + Invalid global value for a passmark length. Piece '%1'. Length is less than minimal allowed. + + + + Unplaced pieces + + + + Sheet 1 + + QSaveFile @@ -11120,7 +11288,7 @@ This option will take an affect after restart. untitled - без імені + без імені <Empty> @@ -11357,27 +11525,27 @@ Do you want to save your changes? Locking file - Файл блокування + Файл блокування This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - Цей файл вже відкрит в іншому вікні. Ігноруйте, якщо бажаєте продовжити (не рекомендується, може призвести до пошкодження даних). + Цей файл вже відкрит в іншому вікні. Ігноруйте, якщо бажаєте продовжити (не рекомендується, може призвести до пошкодження даних). The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - Файл блокування не може бути створений через відсутність дозволу. Ігноруйте, якщо бажаєте продовжити (не рекомендується, може призвести до пошкодження даних). + Файл блокування не може бути створений через відсутність дозволу. Ігноруйте, якщо бажаєте продовжити (не рекомендується, може призвести до пошкодження даних). Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - Виникла невідома помилка, наприклад, повністю заповнений розділ заважає запису файлу блокування. Ігноруйте, якщо ви хочете продовжити (не рекомендується, може призвести до пошкодження даних). + Виникла невідома помилка, наприклад, повністю заповнений розділ заважає запису файлу блокування. Ігноруйте, якщо ви хочете продовжити (не рекомендується, може призвести до пошкодження даних). The lock file could not be created, for lack of permissions. - Файл блокування не може бути створений, не вистачає прав доступу. + Файл блокування не може бути створений, не вистачає прав доступу. Unknown error happened, for instance a full partition prevented writing out the lock file. - Виникла невідома помилка, наприклад, повністю заповнений розділ заважає запису файла блокування. + Виникла невідома помилка, наприклад, повністю заповнений розділ заважає запису файла блокування. Export to CSV @@ -11425,15 +11593,15 @@ Do you want to save your changes? The measurements document has no write permissions. - Документ мірок не має прав на запис. + Документ мірок не має прав на запис. Cannot set permissions for %1 to writable. - Не вдалося встановити права для %1 на запис. + Не вдалося встановити права для %1 на запис. Could not save the file. - Не вдалося зберегти файл. + Не вдалося зберегти файл. Could not save the file @@ -11563,10 +11731,6 @@ Do you want to save your changes? <html><head/><body><p>Search measurements by term. </p><p>Prepend &quot;/r/&quot; to the front of the search string to search measurements by regex.</p></body></html> - - Do you want to change the premissions? - - Cannot read settings from a malformed .INI file. @@ -12513,6 +12677,10 @@ Do you want to save your changes? My Patterns Мої лекала + + My Layouts + Мої розкладки + ToggleDetailInLayout @@ -12798,6 +12966,50 @@ Do you want to save your changes? Export to CSV Експортувати до CSV + + The measurements document has no write permissions. + Документ мірок не має прав на запис. + + + Do you want to change the premissions? + + + + Cannot set permissions for %1 to writable. + Не вдалося встановити права для %1 на запис. + + + Could not save the file. + Не вдалося зберегти файл. + + + Locking file + + + + This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). + + + + The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). + + + + Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). + + + + This file already opened in another window. + Цей файл вже відкрито в іншому вікні. + + + The lock file could not be created, for lack of permissions. + + + + Unknown error happened, for instance a full partition prevented writing out the lock file. + + VAbstractNode @@ -13579,6 +13791,34 @@ Do you want to save your changes? The dimension C base + + The filename of exported layout file. Use it to enable console export mode. + + + + The filename of layout file + + + + Load pattern pieces form the raw layout data file. + + + + The raw layout data file + + + + Number corresponding to output format (default = 0, export mode): <not defined> + + + + Number corresponding to tiled pdf page template (default = 0, export mode with tiled pdf format): <not defined> + + + + Run the program in a test mode. The program in this mode loads a single layout file and silently quit without showing the main window. The key have priority before key '%1'. + + VCommonSettings @@ -13880,6 +14120,18 @@ Do you want to save your changes? Creating file '%1' failed! %2 Створення файлу '%1' не вдалося! %2 + + Can't create an flat dxf file. + + + + Can't create an AAMA dxf file. + + + + Can't create an ASTM dxf file. + + VLayoutPiece @@ -14054,6 +14306,114 @@ Do you want to save your changes? + + VPApplication + + Error parsing file. Program will be terminated. + Помилка парсінгу файла. Програма буде закрита. + + + Error bad id. Program will be terminated. + Помилка неправильний id. Програма буде закрита. + + + Error can't convert value. Program will be terminated. + Помилка конвертації значення. Програма буде закрита. + + + Error empty parameter. Program will be terminated. + Помилка пустий параметр. Програма буде закрита. + + + Error wrong id. Program will be terminated. + Помилка неправильний id. Програма буде закрита. + + + Something's wrong!! + Щось не так!! + + + Exception thrown: %1. Program will be terminated. + + + + Can't begin to listen for incoming connections on name '%1' + Не вдається почати слухати вхідні з'єднання за іменем '%1' + + + Export mode doesn't support openning several files. + + + + Import raw layout data does not support openning several layout files. + + + + Please, provide one input file. + Будь ласка, надайте один вхідний файл. + + + + VPCarrousel + + Pieces of + + + + + VPCarrouselPieceList + + Move to Sheet + + + + Delete + Видалити + + + Remove from Sheet + + + + + VPDialogAbout + + About Puzzle + + + + Puzzle version + + + + Build revision: + Ревізія: + + + This program is part of Valentina project. + Ця програма є частиною проекту Valentina. + + + Check For Updates + Перевірити наявність оновлень + + + Cannot open your default browser + Не можу відкрити браузер по замовчуванню + + + Build revision: %1 + Ревізія: %1 + + + Built on %1 at %2 + Зібрано %1 в %2 + + + Web site : %1 + Веб сайт : %1 + + VPE::VBoolProperty @@ -14076,6 +14436,573 @@ Do you want to save your changes? Відкрити файл + + VPGraphicsPiece + + Move to + + + + Remove from Sheet + + + + + VPLayoutFileReader + + Piece List + + + + Piece + + + + Got empty attribute '%1' + + + + + VPMainWindow + + Puzzle + + + + &File + &Файл + + + &Edit + + + + &Window + + + + &Help + &Допомога + + + Menu + Меню + + + Piece Carrousel + + + + Properties + + + + Current piece properties + + + + Current piece + + + + Infos + + + + Name: + Імя: + + + DummyName + + + + UUID: + + + + {7b2ce4ae-96f5-4905-bb34-405cb40ca208} + + + + Seamline + + + + Show Seamline + + + + Geometry + + + + Mirror piece + + + + Rotation + Поворот + + + Angle: + Кут: + + + Rotate the piece by 90° clockwise + + + + Rotate the piece by 90° anti-clockwise + + + + Rotate the piece so that the grainline is vertical + + + + Rotate the piece so that the grainline is horizontal + + + + Placement + + + + X: + + + + Y: + + + + No piece selected + + + + Multiple pieces selected + + + + Sheet properties + + + + Current sheet + + + + Name + + + + Format + + + + Template + + + + Width + Ширина + + + Length + Довжина + + + Orientation + + + + Portrait + + + + Landscape + + + + Remove unused length + + + + Margins + + + + Right: + Праве: + + + Top: + Верхнє: + + + Left: + Ліве: + + + Bottom: + Нижнє: + + + Placement Grid + + + + Show Grid + + + + Column width + + + + Row height + + + + Control + + + + Follow grainline + + + + No + + + + Vertical grainline + + + + Horizontal grainline + + + + Pieces gap + + + + Sticky edges + + + + Export + Експорт + + + Export Sheet + + + + Tiles properties + + + + Tiled Pdf Export + + + + Show Tiles on sheet + + + + Export Tiled Pdf + + + + Layout properties + + + + Layout + Розкладка + + + Name + + + + Description + Опис + + + Unit + + + + Warning superposition of pieces + + + + Warning pieces out of bound + + + + zoom + + + + Scale + + + + &Open + &Відкрити + + + Ctrl+O + + + + &Save + &Зберегти + + + Ctrl+S + + + + Save &As + + + + Ctrl+Shift+S + + + + &Import Raw Layout Data + + + + E&xit + &Вихід + + + Ctrl+Q + + + + &New + &Новий + + + Ctrl+N + + + + About &Qt + Про &Qt + + + About &Puzzle + + + + Zoom in + Збільшити + + + Zoom out + Зменшити + + + Zoom 1:1 + + + + Zoom fit best + Помістити все + + + Zoom sheet + + + + Preferences + Властивості + + + File '%1' doesn't exist! + Файл '%1' не існує! + + + File error. + Помилка файла. + + + Unable to read a layout file + + + + Fail to create layout. + + + + Could not extract data from file '%1'. %2 + + + + Centimeters + Сантиметри + + + Millimiters + Міліметри + + + Inches + Дюйми + + + Scale: + + + + untitled %1.vlt + + + + untitled.vlt + + + + read only + тільки читання + + + Cannot read settings from a malformed .INI file. + + + + Cannot save settings. Access denied. + + + + Failed to open file, is it writable? + + + + &New Window + &Нове вікно + + + Layout files + + + + Open file + Відкрити файл + + + Could not save the file + Не вдалося зберегти файл + + + layout + + + + Save as + Зберегти як + + + Failed to lock. This file already opened in another window. + + + + Could not save file + Не вдалося зберегти файл + + + Failed to lock. This file already opened in another window. Expect collissions when run 2 copies of the program. + + + + Raw Layout files + + + + About Qt + Про Qt + + + PDF Files + + + + SVG Files + + + + + VPSheet + + Letter + Лист + + + Legal + Legal + + + Tabloid + + + + Roll 24in + Рулон 24 дюйми + + + Roll 30in + Рулон 30 дюймів + + + Roll 36in + Рулон 36 дюймів + + + Roll 42in + Рулон 42 дюйми + + + Roll 44in + Рулон 44 дюйми + + + Roll 48in + Рулон 44 дюйми {48i?} + + + Roll 62in + Рулон 44 дюйми {62i?} + + + Roll 72in + Рулон 44 дюйми {72i?} + + + Custom + + + + + VPTileFactory + + Grid ( %1 , %2 ) + Сітка ( %1 , %2 ) + + + Page %1 of %2 + Сторінка %1 з %2 + + VPattern @@ -14364,6 +15291,10 @@ Do you want to save your changes? Value for final measurtement '%1' is infinite or NaN. Please, check your calculations. + + Unable to create record for final measurement '%1'. Error: %2 + + VPiece @@ -14622,6 +15553,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. There is no intersection with curve '%2' and axis through point '%3' with angle %4° + + Length + Довжина + + + Angle + Кут + + + Label + + + + Segment 1 + + + + Segment 2 + + VToolCutArc @@ -15497,6 +16448,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. Curves '%2' and '%3' have no point of intersection + + Label + + + + Curve 1 segment 1 + + + + Curve 1 segment 2 + + + + Curve 2 segment 1 + + + + Curve 2 segment 2 + + VToolRotation diff --git a/share/translations/valentina_zh_CN.ts b/share/translations/valentina_zh_CN.ts index ef09ee6d2..bf8c968af 100644 --- a/share/translations/valentina_zh_CN.ts +++ b/share/translations/valentina_zh_CN.ts @@ -969,6 +969,14 @@ Notes + + Alias1: + + + + Alias2: + + DialogCutArc @@ -3879,6 +3887,10 @@ Apply settings anyway? yyyy-MM-dd 年年年年-月月-日日 + + Passmark length: + + DialogPiecePath @@ -4773,6 +4785,22 @@ Apply settings anyway? Notes + + Curve 1 + + + + Alias1: + + + + Alias2: + + + + Curve 2 + + DialogPreferences @@ -4799,6 +4827,27 @@ Apply settings anyway? + + DialogPuzzlePreferences + + Puzzle preferences + + + + Configuration + + + + Paths + 路径 + + + Followed %n option(s) require restart to take effect: %1. + + + + + DialogRestrictDimension @@ -6642,7 +6691,7 @@ Do you want to save your changes? This file already opened in another window. - 这个文件已经在别的窗李打开的. + 这个文件已经在别的窗李打开的. File error. @@ -6928,30 +6977,6 @@ Do you want to save your changes? Don't Save 不保存 - - Locking file - - - - This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - The lock file could not be created, for lack of permissions. - - - - Unknown error happened, for instance a full partition prevented writing out the lock file. - - Point intersection curves @@ -7064,18 +7089,6 @@ Do you want to save your changes? Select main path objects clockwise. - - The document has no write permissions. - - - - Cannot set permissions for %1 to writable. - - - - Could not save the file. - - Could not save the file @@ -7488,10 +7501,6 @@ Do you want to save your changes? Update manual layout - - Do you want to change the premissions? - - Unable to prepare raw layout data. @@ -7540,6 +7549,10 @@ Do you want to save your changes? Couldn't set dimension C. File wasn't opened. + + Could not create recipe file. %1 + + MainWindowsNoGUI @@ -8076,6 +8089,111 @@ This option will take an affect after restart. + + Puzzle + + Export options can be used with single input file only. + + + + Valentina's manual layout editor. + + + + The manual layout file. + + + + + PuzzlePreferencesConfigurationPage + + Form + + + + Language + 语言 + + + GUI language: + GUI语言: + + + Toolbar + 工具栏 + + + The text appears under the icon (recommended for beginners). + + + + User Interface + + + + Activate dark mode + + + + Don't use the native file dialog + + + + dark mode + + + + + PuzzlePreferencesPathPage + + Form + + + + Paths that Valentina uses + + + + Type + + + + Path + + + + Default + + + + Edit + + + + Open Directory + + + + My Individual Measurements + + + + My Multisize Measurements + + + + My Patterns + + + + My Templates + + + + My Layouts + + + QCoreApplication @@ -8423,6 +8541,18 @@ This option will take an affect after restart. Piece '%1'. Grainline is not valid. + + Invalid global value for a passmark length. Piece '%1'. Length is less than minimal allowed. + + + + Unplaced pieces + + + + Sheet 1 + + QmuParser @@ -9057,30 +9187,6 @@ Do you want to save your changes? Don't Save 不保存 - - Locking file - - - - This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). - - - - The lock file could not be created, for lack of permissions. - - - - Unknown error happened, for instance a full partition prevented writing out the lock file. - - Export to CSV @@ -9105,18 +9211,6 @@ Do you want to save your changes? All files - - The measurements document has no write permissions. - - - - Cannot set permissions for %1 to writable. - - - - Could not save the file. - - Could not save the file @@ -9245,10 +9339,6 @@ Do you want to save your changes? <html><head/><body><p>Search measurements by term. </p><p>Prepend &quot;/r/&quot; to the front of the search string to search measurements by regex.</p></body></html> - - Do you want to change the premissions? - - Cannot read settings from a malformed .INI file. @@ -9399,6 +9489,10 @@ Do you want to save your changes? Restrict first dimension + + untitled + + TabGrainline @@ -10115,6 +10209,10 @@ Do you want to save your changes? My Patterns + + My Layouts + + TogglePieceForceForbidFlipping @@ -10360,6 +10458,50 @@ Do you want to save your changes? Export to CSV + + The measurements document has no write permissions. + + + + Do you want to change the premissions? + + + + Cannot set permissions for %1 to writable. + + + + Could not save the file. + + + + Locking file + + + + This file already opened in another window. Ignore if you want to continue (not recommended, can cause a data corruption). + + + + The lock file could not be created, for lack of permissions. Ignore if you want to continue (not recommended, can cause a data corruption). + + + + Unknown error happened, for instance a full partition prevented writing out the lock file. Ignore if you want to continue (not recommended, can cause a data corruption). + + + + This file already opened in another window. + 这个文件已经在别的窗李打开的. + + + The lock file could not be created, for lack of permissions. + + + + Unknown error happened, for instance a full partition prevented writing out the lock file. + + VAbstractNode @@ -10997,6 +11139,34 @@ Do you want to save your changes? The dimension C base + + The filename of exported layout file. Use it to enable console export mode. + + + + The filename of layout file + + + + Load pattern pieces form the raw layout data file. + + + + The raw layout data file + + + + Number corresponding to output format (default = 0, export mode): <not defined> + + + + Number corresponding to tiled pdf page template (default = 0, export mode with tiled pdf format): <not defined> + + + + Run the program in a test mode. The program in this mode loads a single layout file and silently quit without showing the main window. The key have priority before key '%1'. + + VCommonSettings @@ -11240,6 +11410,18 @@ Do you want to save your changes? Creating file '%1' failed! %2 + + Can't create an flat dxf file. + + + + Can't create an AAMA dxf file. + + + + Can't create an ASTM dxf file. + + VLayoutPiece @@ -11414,6 +11596,114 @@ Do you want to save your changes? + + VPApplication + + Error parsing file. Program will be terminated. + + + + Error bad id. Program will be terminated. + + + + Error can't convert value. Program will be terminated. + + + + Error empty parameter. Program will be terminated. + + + + Error wrong id. Program will be terminated. + + + + Something's wrong!! + + + + Exception thrown: %1. Program will be terminated. + + + + Can't begin to listen for incoming connections on name '%1' + + + + Export mode doesn't support openning several files. + + + + Import raw layout data does not support openning several layout files. + + + + Please, provide one input file. + + + + + VPCarrousel + + Pieces of + + + + + VPCarrouselPieceList + + Move to Sheet + + + + Delete + 删除 + + + Remove from Sheet + + + + + VPDialogAbout + + About Puzzle + + + + Puzzle version + + + + Build revision: + + + + This program is part of Valentina project. + + + + Check For Updates + + + + Cannot open your default browser + + + + Build revision: %1 + + + + Built on %1 at %2 + + + + Web site : %1 + + + VPE::VBoolProperty @@ -11436,6 +11726,573 @@ Do you want to save your changes? 打开文件 + + VPGraphicsPiece + + Move to + + + + Remove from Sheet + + + + + VPLayoutFileReader + + Piece List + + + + Piece + + + + Got empty attribute '%1' + + + + + VPMainWindow + + Puzzle + + + + &File + + + + &Edit + + + + &Window + + + + &Help + + + + Menu + + + + Piece Carrousel + + + + Properties + + + + Current piece properties + + + + Current piece + + + + Infos + + + + Name: + + + + DummyName + + + + UUID: + + + + {7b2ce4ae-96f5-4905-bb34-405cb40ca208} + + + + Seamline + + + + Show Seamline + + + + Geometry + + + + Mirror piece + + + + Rotation + + + + Angle: + + + + Rotate the piece by 90° clockwise + + + + Rotate the piece by 90° anti-clockwise + + + + Rotate the piece so that the grainline is vertical + + + + Rotate the piece so that the grainline is horizontal + + + + Placement + + + + X: + + + + Y: + + + + No piece selected + + + + Multiple pieces selected + + + + Sheet properties + + + + Current sheet + + + + Name + + + + Format + + + + Template + + + + Width + 宽度 + + + Length + 长度 + + + Orientation + + + + Portrait + + + + Landscape + + + + Remove unused length + + + + Margins + + + + Right: + + + + Top: + + + + Left: + + + + Bottom: + + + + Placement Grid + + + + Show Grid + + + + Column width + + + + Row height + + + + Control + + + + Follow grainline + + + + No + + + + Vertical grainline + + + + Horizontal grainline + + + + Pieces gap + + + + Sticky edges + + + + Export + + + + Export Sheet + + + + Tiles properties + + + + Tiled Pdf Export + + + + Show Tiles on sheet + + + + Export Tiled Pdf + + + + Layout properties + + + + Layout + + + + Name + + + + Description + + + + Unit + + + + Warning superposition of pieces + + + + Warning pieces out of bound + + + + zoom + + + + Scale + + + + &Open + + + + Ctrl+O + + + + &Save + + + + Ctrl+S + + + + Save &As + + + + Ctrl+Shift+S + + + + &Import Raw Layout Data + + + + E&xit + + + + Ctrl+Q + + + + &New + + + + Ctrl+N + + + + About &Qt + + + + About &Puzzle + + + + Zoom in + + + + Zoom out + + + + Zoom 1:1 + + + + Zoom fit best + + + + Zoom sheet + + + + Preferences + + + + File '%1' doesn't exist! + + + + File error. + + + + Unable to read a layout file + + + + Fail to create layout. + + + + Could not extract data from file '%1'. %2 + + + + Centimeters + 公分 + + + Millimiters + 毫米 + + + Inches + 英寸 + + + Scale: + + + + untitled %1.vlt + + + + untitled.vlt + + + + read only + + + + Cannot read settings from a malformed .INI file. + + + + Cannot save settings. Access denied. + + + + Failed to open file, is it writable? + + + + &New Window + + + + Layout files + + + + Open file + 打开文件 + + + Could not save the file + + + + layout + + + + Save as + + + + Failed to lock. This file already opened in another window. + + + + Could not save file + + + + Failed to lock. This file already opened in another window. Expect collissions when run 2 copies of the program. + + + + Raw Layout files + + + + About Qt + + + + PDF Files + + + + SVG Files + + + + + VPSheet + + Letter + + + + Legal + + + + Tabloid + + + + Roll 24in + + + + Roll 30in + + + + Roll 36in + + + + Roll 42in + + + + Roll 44in + + + + Roll 48in + + + + Roll 62in + + + + Roll 72in + + + + Custom + + + + + VPTileFactory + + Grid ( %1 , %2 ) + + + + Page %1 of %2 + + + VPattern @@ -11705,6 +12562,10 @@ Do you want to save your changes? Value for final measurtement '%1' is infinite or NaN. Please, check your calculations. + + Unable to create record for final measurement '%1'. Error: %2 + + VPiece @@ -11925,6 +12786,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. There is no intersection with curve '%2' and axis through point '%3' with angle %4° + + Length + 长度 + + + Angle + + + + Label + + + + Segment 1 + + + + Segment 2 + + VToolCutArc @@ -12656,6 +13537,26 @@ Raw layout format compatibility error: actualFileVersion = %1 and fileVersion = Error calculating point '%1'. Curves '%2' and '%3' have no point of intersection + + Label + + + + Curve 1 segment 1 + + + + Curve 1 segment 2 + + + + Curve 2 segment 1 + + + + Curve 2 segment 2 + + VToolRotation From fcc221f53a8686d9a50d8152b263eb389b3d81d7 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Fri, 21 May 2021 21:41:56 +0300 Subject: [PATCH 19/20] Cppcheck warning. --- src/libs/vwidgets/vabstractmainwindow.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libs/vwidgets/vabstractmainwindow.cpp b/src/libs/vwidgets/vabstractmainwindow.cpp index f4c2f3de5..2fe16c266 100644 --- a/src/libs/vwidgets/vabstractmainwindow.cpp +++ b/src/libs/vwidgets/vabstractmainwindow.cpp @@ -255,6 +255,7 @@ auto VAbstractMainWindow::CheckFilePermissions(const QString &path, QWidget *mes #ifdef Q_OS_WIN32 qt_ntfs_permission_lookup++; // turn checking on #endif /*Q_OS_WIN32*/ + // cppcheck-suppress unreadVariable const bool isFileWritable = QFileInfo(path).isWritable(); #ifdef Q_OS_WIN32 qt_ntfs_permission_lookup--; // turn it off again From a05a66b2ae55d597db8b624303be47ef6a907722 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Sat, 22 May 2021 09:21:01 +0300 Subject: [PATCH 20/20] Fix build on Qt less than 5.6. --- src/app/puzzle/vpmainwindow.cpp | 4 ++++ src/app/tape/tmainwindow.cpp | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/app/puzzle/vpmainwindow.cpp b/src/app/puzzle/vpmainwindow.cpp index 6b6cb0ac6..0670f0eeb 100644 --- a/src/app/puzzle/vpmainwindow.cpp +++ b/src/app/puzzle/vpmainwindow.cpp @@ -1066,7 +1066,11 @@ void VPMainWindow::CreateWindowMenu(QMenu *menu) window->isWindowModified() ? title.replace(index, 3, QChar('*')) : title.replace(index, 3, QString()); } +#if QT_VERSION < QT_VERSION_CHECK(5, 6, 0) + QAction *action = menu->addAction(title, this, SLOT(ShowWindow())); +#else QAction *action = menu->addAction(title, this, &VPMainWindow::ShowWindow); +#endif //QT_VERSION < QT_VERSION_CHECK(5, 6, 0) action->setData(i); action->setCheckable(true); action->setMenuRole(QAction::NoRole); diff --git a/src/app/tape/tmainwindow.cpp b/src/app/tape/tmainwindow.cpp index 8a5b6cee8..bc54072b7 100644 --- a/src/app/tape/tmainwindow.cpp +++ b/src/app/tape/tmainwindow.cpp @@ -3614,7 +3614,11 @@ void TMainWindow::CreateWindowMenu(QMenu *menu) window->isWindowModified() ? title.replace(index, 3, QChar('*')) : title.replace(index, 3, QString()); } +#if QT_VERSION < QT_VERSION_CHECK(5, 6, 0) + QAction *action = menu->addAction(title, this, SLOT(ShowWindow())); +#else QAction *action = menu->addAction(title, this, &TMainWindow::ShowWindow); +#endif //QT_VERSION < QT_VERSION_CHECK(5, 6, 0) action->setData(i); action->setCheckable(true); action->setMenuRole(QAction::NoRole);