diff --git a/.gitignore b/.gitignore index 5d9b867b54e4..e106734fd10f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ *~ # Seamly2D lock files -*.lock +*.locked # Seamly2D and SeamlyMe makes reserve copy of each pattern file before conversion to higher version. *(v*).val* diff --git a/share/img/image_menu_icon.svg b/share/img/image_menu_icon.svg new file mode 100644 index 000000000000..572210c17fec --- /dev/null +++ b/share/img/image_menu_icon.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/share/translations/seamly2d_cs_CZ.ts b/share/translations/seamly2d_cs_CZ.ts index ad85567a4322..c78dfabb9bcd 100644 --- a/share/translations/seamly2d_cs_CZ.ts +++ b/share/translations/seamly2d_cs_CZ.ts @@ -5073,7 +5073,7 @@ p, li { white-space: pre-wrap; } FvUpdater - + Feed download failed: %1. @@ -5238,7 +5238,7 @@ Do you want to download it? - + %1 - Base point %1 - Základní bod @@ -5441,7 +5441,7 @@ Do you want to download it? - + Group color @@ -5518,7 +5518,7 @@ Do you want to download it? - + Name Název @@ -6350,40 +6350,40 @@ Apply settings anyway? Seamly2D - + Tools for creating points. Nástroje na vytváření bodů. - - + + - + Point Bod - + Tools for creating lines. Nástroje na vytváření čar. - - + + - - + + Line Čára - + Tools for creating curves. Nástroje na vytváření křivek. - - + + Curve Křivka @@ -6394,14 +6394,14 @@ Apply settings anyway? Nástroje na vytváření oblouků. - - + + Arc Oblouk - + &File &Soubor @@ -6412,12 +6412,12 @@ Apply settings anyway? - + Measurements Míry - + New Nový @@ -6448,7 +6448,7 @@ Apply settings anyway? - + Save Uložit @@ -6463,7 +6463,7 @@ Apply settings anyway? Uložit střih - + Save &As... Uložit j&ako... @@ -6473,19 +6473,19 @@ Apply settings anyway? Uložit dosud neuložený střih - - + + Details Detaily - + Pointer tools Nástroje ukazovátka - - + + History Historie @@ -6505,27 +6505,27 @@ Apply settings anyway? &Ukončit - + Preferences Předvolby - + Report bug Nahlásit chybu - + Show online help Zobrazit nápovědu na internetu - + About Qt O Qt - + Save as Uložit jako @@ -6535,17 +6535,17 @@ Apply settings anyway? Nepodařilo se uložit soubor - + - - + + Open file Otevřít soubor - + Error parsing file. Chyba při zpracování souboru. @@ -6577,46 +6577,46 @@ Apply settings anyway? Chybný identifikátor. - + File saved Soubor uložen - + untitled.sm2d Bez názvu.sm2d - + The pattern has been modified. Do you want to save your changes? Střih byl změněn. Chcete uložit své změny? - - + + &Undo &Zpět - - + + &Redo &Znovu - + This file already opened in another window. Tento soubor je již otevřen v jiném okně. - + Wrong units. Nesprávné jednotky. - + File loaded Soubor nahrán @@ -6631,26 +6631,26 @@ Chcete uložit své změny? Znovu otevřít soubory. - - + + - + Layout Rozvržení - + Settings - - + + Print - + Print tiled PDF @@ -6660,7 +6660,7 @@ Chcete uložit své změny? - + Print preview @@ -6670,70 +6670,82 @@ Chcete uložit své změny? - + Export As... - + - + Layout mode - + Unsaved changes - + Measurements loaded - + You can't export empty scene. - - + + Measurement file contains invalid known measurement(s). - - + + Measurement file has unknown format. - + Measurement files types have not match. - + Couldn't sync measurements. - + Couldn't update measurements. - + + Images will not be saved + + + + + Please note that the images can not be saved and that they are not affected by the undo and redo functions in the current version of the software. + +You may want to take a screenshot of the image properties dialog before closing the software to be able to recreate identically the image when opening the software again. + + + + The measurements file '%1' could not be found. - + Loading measurements file @@ -6769,12 +6781,12 @@ Chcete uložit své změny? - + Print an original layout - + Preview tiled PDF @@ -6784,7 +6796,7 @@ Chcete uložit své změny? - + Measurements unloaded @@ -6794,7 +6806,7 @@ Chcete uložit své změny? - + New pattern @@ -6809,7 +6821,7 @@ Chcete uložit své změny? - + Save... @@ -6819,7 +6831,7 @@ Chcete uložit své změny? - + Locking file @@ -6851,29 +6863,29 @@ Chcete uložit své změny? - + Operations - + Close pattern - + Tool pointer - + Original zoom - + Height: Výška: @@ -6883,12 +6895,12 @@ Chcete uložit své změny? - + The measurements file <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? - + Measurements were changed. Do you want to sync measurements now? @@ -6898,12 +6910,12 @@ Chcete uložit své změny? - + Measurements have been synced - + The document has no write permissions. @@ -6923,12 +6935,12 @@ Chcete uložit své změny? - + read only - + Load Individual @@ -6983,37 +6995,37 @@ Chcete uložit své změny? - - + + Individual measurements Individuální míry - - + + Multisize measurements - + Pattern files Soubory se střihy - + Wiki - + Forum - + Name Název @@ -7028,17 +7040,17 @@ Chcete uložit své změny? Vzorec - + You can't use Layout mode yet. - + Application doesn't support multisize table with inches. - + Couldn't set size. Need a file with multisize measurements. @@ -7048,7 +7060,7 @@ Chcete uložit své změny? - + Preview @@ -7079,13 +7091,13 @@ Chcete uložit své změny? - - + + Piece - + Utilities @@ -7121,8 +7133,8 @@ Chcete uložit své změny? - - + + Group Manager @@ -7137,7 +7149,7 @@ Chcete uložit své změny? - + Points Toolbar @@ -7187,36 +7199,36 @@ Chcete uložit své změny? - - + + Line between 2 Points (Alt+L) - + Tools for performing operations on objects - + Rotate Selected Objects (R) - - + + Export Draft Blocks (E, D) - + Tools for adding pattern pieces. - + Add Details @@ -7227,17 +7239,17 @@ Chcete uložit své změny? - + Unite 2 Pieces (U) - + View Toolbar - + Draft @@ -7300,7 +7312,7 @@ Chcete uložit své změny? - + Mirror by Line @@ -7467,7 +7479,7 @@ Chcete uložit své změny? - + Fit All @@ -7493,7 +7505,7 @@ Chcete uložit své změny? - + Shortcuts @@ -7518,7 +7530,7 @@ Chcete uložit své změny? - + Load multisize @@ -7844,7 +7856,7 @@ Chcete uložit své změny? - + Calculator @@ -7865,7 +7877,7 @@ Chcete uložit své změny? - + Export Draft Blocks @@ -7880,7 +7892,7 @@ Chcete uložit své změny? - + Seam Allowance @@ -7910,12 +7922,12 @@ Chcete uložit své změny? - + Measurement file doesn't include all the required measurements. - + <b>Tool::Operations - Create Group:</b> Select one or more objects - Hold <b>%1</b> for multiple selection, Press <b>ENTER</b> to finish group creation @@ -7945,13 +7957,13 @@ Chcete uložit své změny? - + Draft Block: - + Rotate @@ -7981,7 +7993,13 @@ Chcete uložit své změny? - + + + Import Image + + + + Piece mode @@ -7991,8 +8009,8 @@ Chcete uložit své změny? - - + + Pattern Pieces @@ -8007,7 +8025,7 @@ Chcete uložit své změny? - + Name: Název: @@ -8027,7 +8045,7 @@ Chcete uložit své změny? - + You don't have any pieces to export. Please, include at least one piece in layout. @@ -8042,7 +8060,7 @@ Chcete uložit své změny? - + <b>Tool::Piece - Add New Pattern Piece:</b> Select main path of objects clockwise. @@ -8062,146 +8080,146 @@ Chcete uložit své změny? - + <b>Tool::Details - Union:</b> Select pattern piece - + Draft block %1 - + Draft Block %1 - - + + Point - On Bisector (O, B) - - + + Point - Length to Line (P, S) - - + + Point - Intersect Arc and Line (A, L) - - + + Point - Intersect Axis and Triangle (X, T) - - + + Point - Intersect XY (X, Y) - - + + Point - Intersect Line and Perpendicular (L, P) - - + + Point - Intersect Line and Axis (L, X) - - + + Point - On Perpendicular (O, P) - - + + Point - Length and Angle (L, A) - - + + Point - On Line (O, L) - - + + Point - Midpoint on Line (Shift+O, Shift+L) - - + + Point - Intersect Lines (I, L) - - + + Curve - Interactive (Alt+C) - - + + Spline - Interactive (Alt+S) - - + + Curve - Fixed (Alt+Shift+C) - - + + Spline - Fixed (Alt+Shift+S) - + Point - On Spline (O, S) - + Point - Intersect Curves (I, C) - - + + Point - Intersect Curve and Axis (C, X) - + Point - On Curve (O, C) - + Arc - Radius and Angles (Alt+A) - + Point - On Arc (O, A) @@ -8232,90 +8250,101 @@ Chcete uložit své změny? - + Arc - Radius and Length (Alt+Shift+A) - - + + Arc - Elliptical (Alt+E) - - + + Mirror Objects by Line (M, L) - - + + Mirror Objects by Axis (M, A) - - + + Move Objects (Alt+M) - - + + True Darts (T, D) - - + + Add New Pattern Piece (N, P) - - + + Add Anchor Point (A, P) - - + + Insert Nodes (I, N) - - + + Add Internal Path (I, P) - - + + Tools for inserting or modifying images. + + + + + + Import Image (Alt + I) + + + + + Export Pieces (E, P) - + New Print Layout (N, L) - + Export Layout (E, L) - + Contains information about custom and internal variables - + Alt+M @@ -8629,12 +8658,12 @@ Chcete uložit své změny? - + Activate last used tool (Ctrl+Shift+L) - + Zoom to Selected (Ctrl+Right) @@ -8659,7 +8688,27 @@ Chcete uložit své změny? - + + Images tools + + + + + Delete + Smazat + + + + Align + + + + + Lock + + + + Zoom to point (Ctrl + Alt + P) @@ -8669,12 +8718,17 @@ Chcete uložit své změny? - + + Alt+I + + + + Please provide additional measurements: %1 - + <b>Tool::Point - Midpoint on Line</b>: Select first point @@ -8824,7 +8878,52 @@ Chcete uložit své změny? - + + + Can't read image + + + + + + Could not read the image. + + + + + It may be corrupted... + + + + + It may be corrupted or empty... + + + + + Confirm deletion + Potvrdit smazání + + + + Do you really want to delete? + Opravdu chcete smazat? + + + + + + + Images + + + + + Open Image File + + + + Zoom to Point @@ -8834,7 +8933,7 @@ Chcete uložit své změny? - + Intersect Arc and Line @@ -8844,8 +8943,8 @@ Chcete uložit své změny? - - + + Add Objects to Group (G) @@ -8856,7 +8955,7 @@ Chcete uložit své změny? - + Add Group Objects @@ -8866,7 +8965,7 @@ Chcete uložit své změny? - + Can not save file. @@ -8883,36 +8982,36 @@ Chcete uložit své změny? - + Ctrl+E - + untitled bez názvu - + Failed to lock. This file already opened in another window. Expect collisions when running 2 copies of the program. - + Pen Toolbar - + Toolbars - - + + - - + + File exception. @@ -8925,12 +9024,12 @@ Chcete uložit své změny? - + pattern střih - + Base name used for new points. Press enter to temporarily add it to the list. @@ -11818,7 +11917,7 @@ Press enter to temporarily add it to the list. Upravit - + Open Directory Otevřít adresář @@ -11833,7 +11932,12 @@ Press enter to temporarily add it to the list. - + + My Images + + + + My Patterns @@ -12137,12 +12241,12 @@ Press enter to temporarily add it to the list. QObject - + Create new pattern piece to start working. Začněte vytvořením nového dílu střihu. - + mm mm @@ -12179,12 +12283,12 @@ Press enter to temporarily add it to the list. - + Changes applied. - + Wrong tag name '%1'. @@ -12542,6 +12646,19 @@ Press enter to temporarily add it to the list. + + ResizeHandlesItem + + + Press <b>CTRL</b> to scale around the center - <b> Aspect ratio locked </b> + + + + + Press <b>CTRL</b> to scale around the center, <b>SHIFT</b> to scale uniformly. + + + SavePieceOptions @@ -13331,12 +13448,12 @@ When unchecked the period is used. - + F2 - + Point Bod @@ -13726,6 +13843,21 @@ When unchecked the period is used. E, D + + + Images + + + + + Import Image + + + + + Alt + I + + Pattern Piece @@ -13943,8 +14075,8 @@ When unchecked the period is used. Nápověda - - + + Keyboard Shortcuts @@ -13954,7 +14086,7 @@ When unchecked the period is used. - + Shift+P @@ -13964,7 +14096,7 @@ When unchecked the period is used. - + Export PDF @@ -14922,7 +15054,7 @@ load in SeamlyME as usual. Tool - + First point První bod @@ -15152,7 +15284,7 @@ load in SeamlyME as usual. Nelze najít nástroj v tabulce. - + Error creating or updating group @@ -15779,7 +15911,7 @@ load in SeamlyME as usual. VCommonSettings - + measurements @@ -15801,11 +15933,16 @@ load in SeamlyME as usual. + images + + + + label templates - + bodyscans @@ -16646,7 +16783,7 @@ load in SeamlyME as usual. VToolLine - + Length Délka @@ -17469,7 +17606,7 @@ load in SeamlyME as usual. Čára_ - + Center point Středový bod diff --git a/share/translations/seamly2d_de_DE.ts b/share/translations/seamly2d_de_DE.ts index 8da1dd90cfe0..ff0744ad5235 100644 --- a/share/translations/seamly2d_de_DE.ts +++ b/share/translations/seamly2d_de_DE.ts @@ -5075,7 +5075,7 @@ p, li { white-space: pre-wrap; } FvUpdater - + Feed download failed: %1. Feed download ist fehlgeschlagen: %1. @@ -5241,7 +5241,7 @@ for writing Unbekanntes Objekt - + %1 - Base point %1 - Startpunkt @@ -5444,7 +5444,7 @@ for writing Gruppenobjekt entfernen - + Group color @@ -5521,7 +5521,7 @@ for writing - + Name Bezeichnung @@ -6356,40 +6356,40 @@ Apply settings anyway? Seamly2D - + Tools for creating points. Werkzeuge zum Erstellen von Punkten. - - + + - + Point Punkt - + Tools for creating lines. Werkzeuge zur Linienerzeugung. - - + + - - + + Line Linie - + Tools for creating curves. Werkzeuge zur Kurvenerzeugung. - - + + Curve Kurve @@ -6400,14 +6400,14 @@ Apply settings anyway? Werkzeuge zur Bogenerzeugung. - - + + Arc Bogen - + &File &Datei @@ -6418,12 +6418,12 @@ Apply settings anyway? - + Measurements Maße - + New Neu @@ -6454,7 +6454,7 @@ Apply settings anyway? - + Save Speichern @@ -6469,7 +6469,7 @@ Apply settings anyway? Schnittmuster speichern - + Save &As... Speichern &als... @@ -6479,19 +6479,19 @@ Apply settings anyway? Noch nicht gespeichertes Schnittmuster speichern - - + + Details Details - + Pointer tools Zeigewerkzeuge - - + + History Chronik @@ -6511,27 +6511,27 @@ Apply settings anyway? Be&enden - + Preferences Einstellungen - + Report bug Programmfehler melden - + Show online help Onlinehilfe anzeigen - + About Qt Über Qt - + Save as Speichern als @@ -6541,17 +6541,17 @@ Apply settings anyway? Datei konnte nicht gespeichert werden - + - - + + Open file Datei öffnen - + Error parsing file. Fehler beim Auswerten der Datei. @@ -6583,46 +6583,46 @@ Apply settings anyway? Ungültige ID. - + File saved Datei gespeichert - + untitled.sm2d unbenannt.sm2d - + The pattern has been modified. Do you want to save your changes? Das Schnittmuster wurde geändert. Sollen die Änderungen gespeichert werden? - - + + &Undo &Rückgängig - - + + &Redo &Wiederholen - + This file already opened in another window. Diese Datei ist bereits in einem anderen Fenster geöffnet. - + Wrong units. Falsche Einheiten. - + File loaded Datei geladen @@ -6637,26 +6637,26 @@ Sollen die Änderungen gespeichert werden? Dateien erneut öffnen. - - + + - + Layout Layout - + Settings Einstellungen - - + + Print Drucken - + Print tiled PDF PDF Kachelblätter drucken @@ -6666,7 +6666,7 @@ Sollen die Änderungen gespeichert werden? Teilen und drucken eines Layouts in kleinere Seiten (für normale Drucker) - + Print preview Druckvorschau @@ -6676,70 +6676,82 @@ Sollen die Änderungen gespeichert werden? Druckvorschau mit Originallayout - + Export As... Exportieren als... - + - + Layout mode Layoutmodus - + Unsaved changes Ungespeicherte Änderungen - + Measurements loaded Maße geladen - + You can't export empty scene. Du kannst kein leeres Layout exportieren. - - + + Measurement file contains invalid known measurement(s). Die Maßdatei enthält ungültige bekannte Maße. - - + + Measurement file has unknown format. Maßdatei hat ein unbekanntes Format. - + Measurement files types have not match. Die Maßdatei Arten stimmen nicht überein. - + Couldn't sync measurements. Maße konnten nicht synchronisiert werden. - + Couldn't update measurements. Maße konnten nicht aktualisiert werden. - + + Images will not be saved + + + + + Please note that the images can not be saved and that they are not affected by the undo and redo functions in the current version of the software. + +You may want to take a screenshot of the image properties dialog before closing the software to be able to recreate identically the image when opening the software again. + + + + The measurements file '%1' could not be found. Die Maßdatei '%1' konnte nicht gefunden werden. - + Loading measurements file Lädt Maßdatei @@ -6775,12 +6787,12 @@ Sollen die Änderungen gespeichert werden? Bitte stelle eine Eingabedatei zur Verfügung. - + Print an original layout Ein originales Layout drucken - + Preview tiled PDF Vorschau der PDF Kachelblätter @@ -6790,7 +6802,7 @@ Sollen die Änderungen gespeichert werden? Druckvorschau gekacheltes Layout - + Measurements unloaded Geladene Maße gelöscht @@ -6800,7 +6812,7 @@ Sollen die Änderungen gespeichert werden? Maße konnten nicht gelöscht werden, einige werden im Schnittteil verwendet. - + New pattern Neues Schnittmuster @@ -6815,7 +6827,7 @@ Sollen die Änderungen gespeichert werden? Maße erstellen/bearbeiten - + Save... Speichern... @@ -6825,7 +6837,7 @@ Sollen die Änderungen gespeichert werden? Nicht Speichern - + Locking file @@ -6857,29 +6869,29 @@ Sollen die Änderungen gespeichert werden? Ein unbekannter Fehler ist aufgetreten, zum Beispiel hat eine volle Festplatten Partition verhindert, dass die Sperrdatei geschrieben werden konnte. - + Operations Arbeitsabläufe - + Close pattern Schnittmuster schließen - + Tool pointer Werkzeug Anzeiger - + Original zoom Original zoom - + Height: Körperhöhe: @@ -6889,12 +6901,12 @@ Sollen die Änderungen gespeichert werden? Größe: - + The measurements file <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? Die Maßdateien <br/><br/> <b>%1</b> <br/><br/> konnten nicht gefunden werden. Möchtest Du den Speicherort aktualisieren? - + Measurements were changed. Do you want to sync measurements now? Die Maße wurden geändert. Sollen die Maße jetzt synchronisiert werden? @@ -6904,12 +6916,12 @@ Sollen die Änderungen gespeichert werden? Gradierung unterstützt Zoll nicht - + Measurements have been synced Maße wurden synchronisiert - + The document has no write permissions. Das Dokument hat keine Schreibberechtigung. @@ -6929,12 +6941,12 @@ Sollen die Änderungen gespeichert werden? Die Datei kann nicht gesichert werden - + read only Nur lesen - + Load Individual Individuell laden @@ -6989,37 +7001,37 @@ Sollen die Änderungen gespeichert werden? Maße löschen, wenn sie nicht in einer Schnittmusterdatei benutzt werden - - + + Individual measurements Individuelle Maße - - + + Multisize measurements Mehrgrößen Maße - + Pattern files Schnittmusterdateien - + Wiki Wiki - + Forum Forum - + Name Bezeichnung @@ -7034,17 +7046,17 @@ Sollen die Änderungen gespeichert werden? Formel - + You can't use Layout mode yet. Layoutmodus kann noch nicht genutzt werden. - + Application doesn't support multisize table with inches. Die Anwendung unterstütz' keine Mehrgrößentabellen in Zoll. - + Couldn't set size. Need a file with multisize measurements. Größe kann nicht eingestellt werden. Mindestens eine Mehrgrößenmaßdatei ist notwendig. @@ -7054,7 +7066,7 @@ Sollen die Änderungen gespeichert werden? Körperhöhe kann nicht eingestellt werden. Mindestens eine Mehrgrößenmaßdatei muß vorhanden sein. - + Preview Vorschau @@ -7085,13 +7097,13 @@ Sollen die Änderungen gespeichert werden? - - + + Piece Stück - + Utilities Dienstprogramme @@ -7127,8 +7139,8 @@ Sollen die Änderungen gespeichert werden? - - + + Group Manager Gruppen Manager @@ -7143,7 +7155,7 @@ Sollen die Änderungen gespeichert werden? Werkzeuge Symbolleiste - + Points Toolbar Punkte Symbolleiste @@ -7193,36 +7205,36 @@ Sollen die Änderungen gespeichert werden? Werkzeugpalette - - + + Line between 2 Points (Alt+L) Linie zwischen 2 Punkten (Alt+L) - + Tools for performing operations on objects Werkzeuge um Operationen an Objektion durchzuführen - + Rotate Selected Objects (R) Ausgewählte Objekte drehen (R) - - + + Export Draft Blocks (E, D) Entwurfsblöcke (E, D) exportieren - + Tools for adding pattern pieces. Werkzeuge um Schnittteile hinzuzufügen. - + Add Details Detail hinzufügen @@ -7233,17 +7245,17 @@ Sollen die Änderungen gespeichert werden? - + Unite 2 Pieces (U) 2 Teile zusammenführen (U) - + View Toolbar Ansicht Symbolleiste - + Draft Entwurf @@ -7306,7 +7318,7 @@ Sollen die Änderungen gespeichert werden? - + Mirror by Line Spiegeln an einer Linie @@ -7473,7 +7485,7 @@ Sollen die Änderungen gespeichert werden? Herauszoomen (Strg+-) - + Fit All Alles passend @@ -7499,7 +7511,7 @@ Sollen die Änderungen gespeichert werden? Schließen - + Shortcuts Verknüpfungen @@ -7524,7 +7536,7 @@ Sollen die Änderungen gespeichert werden? Kontrollpunkte und Kurvenrichtung umschalten (V, C) - + Load multisize Mehrgrößen laden @@ -7850,7 +7862,7 @@ Sollen die Änderungen gespeichert werden? - + Calculator Taschenrechner @@ -7871,7 +7883,7 @@ Sollen die Änderungen gespeichert werden? - + Export Draft Blocks Exportiere Entwurfsblöcke @@ -7886,7 +7898,7 @@ Sollen die Änderungen gespeichert werden? Export - + Seam Allowance Nahtzugabe @@ -7916,12 +7928,12 @@ Sollen die Änderungen gespeichert werden? Strg+I - + Measurement file doesn't include all the required measurements. Maßdatei beinhaltet nicht alle erforderlichen Maße. - + <b>Tool::Operations - Create Group:</b> Select one or more objects - Hold <b>%1</b> for multiple selection, Press <b>ENTER</b> to finish group creation <b>Werkzeug::Operationen - Gruppe erstellen:</b> Wähle ein oder mehrere Opbjekte aus - Halten b>%1</b>für Mehrfachauswahl, mit <>ENTER </b> die Gruppenerstellung abschließen @@ -7946,13 +7958,13 @@ Sollen die Änderungen gespeichert werden? <b>Werkzeug::Operationenen Abnäher korrigieren:</b> wähle den ersten Basispunkt - + Draft Block: Entwurfsblock: - + Rotate Drehen @@ -7982,7 +7994,13 @@ Sollen die Änderungen gespeichert werden? Schnittteile exportieren - + + + Import Image + + + + Piece mode Schnittteil Modus @@ -7992,8 +8010,8 @@ Sollen die Änderungen gespeichert werden? Schnitteilmodus kann noch nicht genutzt werden, Erstelle mindestens ein Schnittteil. - - + + Pattern Pieces Schnittteile @@ -8008,7 +8026,7 @@ Sollen die Änderungen gespeichert werden? Layoutmodus kann nicht genutzt werden, mindestens ein Schnittteil ins Layout aufnehmen. - + Name: Bezeichnung: @@ -8028,7 +8046,7 @@ Sollen die Änderungen gespeichert werden? Die Aktion kann nicht abgeschlossen werden, da der Name des Entwurfsblocks bereits existiert. - + You don't have any pieces to export. Please, include at least one piece in layout. Es gibt kein Schnittteil zum exportieren, mindestens ein Schnittteil ins Layout übernehmen. @@ -8043,7 +8061,7 @@ Sollen die Änderungen gespeichert werden? Schnittteile können nicht exportiert werden. - + <b>Tool::Piece - Add New Pattern Piece:</b> Select main path of objects clockwise. <b>Werkzeug: Schnittteil - Neues Schnittteil hinzufügen</b> Hauptpfad der Objekte im Uhrzeigersinn auswählen. @@ -8063,146 +8081,146 @@ Sollen die Änderungen gespeichert werden? <b>Werkzeug::Schnitteil-Knoten einfügen:</b> wähle ein oder mehrere Objekte aus, Halten <b>%1</b> für Mehrfachauswahl,<b>ENTER >um Auswahl zu bestätigen - + <b>Tool::Details - Union:</b> Select pattern piece <b>Werkzeug: Details Vereinigung /b> wähle ein Schnittteil - + Draft block %1 Entwurfsblock %1 - + Draft Block %1 Entwurfsblock %1 - - + + Point - On Bisector (O, B) Punkt - Auf Winkelhalbierender (O, B) - - + + Point - Length to Line (P, S) Punkt - Länge zur Linie (P, S) - - + + Point - Intersect Arc and Line (A, L) Punkt - Schneidet Bogen und Linie (A, U) - - + + Point - Intersect Axis and Triangle (X, T) Point - Schneidet Achse und Dreieck (X, T) - - + + Point - Intersect XY (X, Y) Punkt - Schneidet XY - - + + Point - Intersect Line and Perpendicular (L, P) Point - Schneidet Linie und Senkrechte (L, P) - - + + Point - Intersect Line and Axis (L, X) Punkt - Schneidet Linie und Achse (L, X) - - + + Point - On Perpendicular (O, P) Punkt - Auf einer Senkrechten (O, P) - - + + Point - Length and Angle (L, A) Punkt - Länge und Winkel (L, A) - - + + Point - On Line (O, L) Punkt - Auf einer Linie (O, L) - - + + Point - Midpoint on Line (Shift+O, Shift+L) Punkt - Mittelpunkt auf einer Linie (Umschalt+O, Umschalt+L) - - + + Point - Intersect Lines (I, L) Punkt - Schneidet Linien (I, L) - - + + Curve - Interactive (Alt+C) Kurve - Interaktiv (Alt+C) - - + + Spline - Interactive (Alt+S) Spline - Interaktiv (Alt+S) - - + + Curve - Fixed (Alt+Shift+C) Kurve - Fixiert (Alt+Umschalt+C) - - + + Spline - Fixed (Alt+Shift+S) Spline - Fixiert (Alt+Umschalt+S) - + Point - On Spline (O, S) Punkt - Auf einer Spline ( O, S) - + Point - Intersect Curves (I, C) Punkt - Schneidet Kurven (I, C) - - + + Point - Intersect Curve and Axis (C, X) Punkt - Schneidet Kurve und Achse (C, X) - + Point - On Curve (O, C) Punkt - Auf einer Kurve (O, C) - + Arc - Radius and Angles (Alt+A) Bogen - Radius uns Winkel (Alt+A) - + Point - On Arc (O, A) Punkt - Auf Bogen (O, A) @@ -8233,90 +8251,101 @@ Sollen die Änderungen gespeichert werden? - + Arc - Radius and Length (Alt+Shift+A) Bogen - Radius und Länge (Alt+Umschalt+A) - - + + Arc - Elliptical (Alt+E) Bogen - Elliptisch (Alt+E) - - + + Mirror Objects by Line (M, L) Objekte an einer Linie spiegeln (M, L) - - + + Mirror Objects by Axis (M, A) Objekte an einer Achse spiegeln (M, A) - - + + Move Objects (Alt+M) Objekte bewegen (Alt-M) - - + + True Darts (T, D) Abnäherlängen ausgleichen (T;D) - - + + Add New Pattern Piece (N, P) Neues Schnittteil hinzufügen (N, P) - - + + Add Anchor Point (A, P) Ankerpunkt hinzufügen (A, P) - - + + Insert Nodes (I, N) Füge Knoten ein (I, N) - - + + Add Internal Path (I, P) Unterverzeichnis hinzufügen (I, P) - - + + Tools for inserting or modifying images. + + + + + + Import Image (Alt + I) + + + + + Export Pieces (E, P) Schnittteile exportieren (E, P) - + New Print Layout (N, L) Neues Drucklayout (N, L) - + Export Layout (E, L) Layout exportieren (E, L) - + Contains information about custom and internal variables - + Alt+M Alt+M @@ -8625,12 +8654,12 @@ Sollen die Änderungen gespeichert werden? Alt+Umschalt+A - + Activate last used tool (Ctrl+Shift+L) Letztes benutztes Werkzeug aktivieren Strg+Umschalt+L) - + Zoom to Selected (Ctrl+Right) Zoom zur Auswahl (Ctrl+Rechts) @@ -8655,7 +8684,27 @@ Sollen die Änderungen gespeichert werden? - + + Images tools + + + + + Delete + Löschen + + + + Align + + + + + Lock + + + + Zoom to point (Ctrl + Alt + P) Zoom zum Punkt (Strg + Alt + P) @@ -8665,12 +8714,17 @@ Sollen die Änderungen gespeichert werden? Strg+Alt+P - + + Alt+I + + + + Please provide additional measurements: %1 Bitte gib zusätzliche Maße an: %1 - + <b>Tool::Point - Midpoint on Line</b>: Select first point <b>Werkzeug: Punkt - Mittelpunkt auf der Linie :</b> Wähle den ersten Punkt @@ -8820,7 +8874,52 @@ Sollen die Änderungen gespeichert werden? <b>Werkzeug:l::Bogen - Elliptisch:</b> Wähle den Mittelpunkt des Ellipsenbogens - + + + Can't read image + + + + + + Could not read the image. + + + + + It may be corrupted... + + + + + It may be corrupted or empty... + + + + + Confirm deletion + Löschvorgang bestätigen + + + + Do you really want to delete? + Möchtest Du wirklich löschen? + + + + + + + Images + Bilder + + + + Open Image File + + + + Zoom to Point Zoom zum Punkt @@ -8830,7 +8929,7 @@ Sollen die Änderungen gespeichert werden? Punkt: - + Intersect Arc and Line Schneidet Bogen und Linie @@ -8840,8 +8939,8 @@ Sollen die Änderungen gespeichert werden? Schneidet Kurve & Achse - - + + Add Objects to Group (G) Objekte zur Gruppe hinzufügen (G) @@ -8852,7 +8951,7 @@ Sollen die Änderungen gespeichert werden? Objekte zur Gruppe hinzufügen - + Add Group Objects Gruppen Objekt hinzufügen @@ -8862,7 +8961,7 @@ Sollen die Änderungen gespeichert werden? Gruppe ist gesperrt. Entsperren um Objekte hinzuzufügen - + Can not save file. Datei kann nicht gesichert werden. @@ -8879,36 +8978,36 @@ Sollen die Änderungen gespeichert werden? Sperren ist fehlgeschlagen. Datei mit diesem Namen ist in einem anderen Fenster geöffnet. - + Ctrl+E Strg+E - + untitled unbenannt - + Failed to lock. This file already opened in another window. Expect collisions when running 2 copies of the program. Sperren fehlgeschlagen. Diese Datei ist bereits in einem anderen Fenster geöffnet. Bei Anwendung von 2 Programmkopien kommt es zu Konflikten. - + Pen Toolbar Stift-Symbolleiste - + Toolbars Symbolleisten - - + + - - + + File exception. Dateiausnahme. @@ -8921,22 +9020,22 @@ Sollen die Änderungen gespeichert werden? Ausnahme exportieren. - + pattern Schnittmuster - + L, P L, P - + <b>Tool::Operations - Rotation:</b> Select one or more objects - Hold <b>%1</b> for multiple selection, Press <b>ENTER</b> to confirm selection <b>Werkzeug::Operationen - Drehung:</b> Wähle ein oder mehrere Opbjekte aus - Halten <b>%1</b> für Mehrfachauswahl, mit <b>ENTER</b> die Auswahl bestätigen - + Base name used for new points. Press enter to temporarily add it to the list. Basisname, der für neue Punkte verwendet wird. @@ -11826,7 +11925,7 @@ Drücken Sie die Eingabetaste, um ihn vorübergehend in die Liste aufzunehmen.Bearbeiten - + Open Directory Verzeichnis öffnen @@ -11841,7 +11940,12 @@ Drücken Sie die Eingabetaste, um ihn vorübergehend in die Liste aufzunehmen.Meine Mehrgrößen Maße - + + My Images + + + + My Patterns Meine Schnittmuster @@ -12145,12 +12249,12 @@ Drücken Sie die Eingabetaste, um ihn vorübergehend in die Liste aufzunehmen. QObject - + Create new pattern piece to start working. Erstelle ein neues Schnittteil, um mit der Arbeit zu beginnen. - + mm mm @@ -12187,12 +12291,12 @@ Drücken Sie die Eingabetaste, um ihn vorübergehend in die Liste aufzunehmen.knoten hinzufügen - + Changes applied. Änderungen übernommen. - + Wrong tag name '%1'. Falscher Symbolname '%1'. @@ -12550,6 +12654,19 @@ Drücken Sie die Eingabetaste, um ihn vorübergehend in die Liste aufzunehmen.Schnittteil umbenennen + + ResizeHandlesItem + + + Press <b>CTRL</b> to scale around the center - <b> Aspect ratio locked </b> + + + + + Press <b>CTRL</b> to scale around the center, <b>SHIFT</b> to scale uniformly. + + + SavePieceOptions @@ -13334,12 +13451,12 @@ You can change this setting in the Seamly2D preferences. - + F2 F2 - + Point Punkt @@ -13729,6 +13846,21 @@ You can change this setting in the Seamly2D preferences. E, D E, D + + + Images + Bilder + + + + Import Image + + + + + Alt + I + + Pattern Piece @@ -13946,8 +14078,8 @@ You can change this setting in the Seamly2D preferences. Hilfe - - + + Keyboard Shortcuts Tastaturkurzbefehle @@ -13957,7 +14089,7 @@ You can change this setting in the Seamly2D preferences. K - + Shift+P Umschalt+P @@ -13967,7 +14099,7 @@ You can change this setting in the Seamly2D preferences. T - + Export PDF PDF exportieren @@ -14936,7 +15068,7 @@ wie gewohnt in SeamlyME laden können. Tool - + First point Erster Punkt @@ -15166,7 +15298,7 @@ wie gewohnt in SeamlyME laden können. Werkzeug kann in der Tabelle nicht gefunden werden. - + Error creating or updating group Fehler beim Anlegen oder Aktualisieren der Gruppe @@ -15796,7 +15928,7 @@ wie gewohnt in SeamlyME laden können. VCommonSettings - + measurements Maße @@ -15818,11 +15950,16 @@ wie gewohnt in SeamlyME laden können. + images + + + + label templates etikett_vorlagen - + bodyscans körperscans @@ -16662,7 +16799,7 @@ wie gewohnt in SeamlyME laden können. VToolLine - + Length Länge @@ -17485,7 +17622,7 @@ wie gewohnt in SeamlyME laden können. Linie_ - + Center point Mittelpunkt diff --git a/share/translations/seamly2d_el_GR.ts b/share/translations/seamly2d_el_GR.ts index 87e06c134a2b..6da8c488a46e 100644 --- a/share/translations/seamly2d_el_GR.ts +++ b/share/translations/seamly2d_el_GR.ts @@ -5073,7 +5073,7 @@ p, li { white-space: pre-wrap; } FvUpdater - + Feed download failed: %1. Η λήψη της φόρτωσης απέτυχε: %1. @@ -5238,7 +5238,7 @@ Do you want to download it? - + %1 - Base point %1 - Βασικό σημείο @@ -5441,7 +5441,7 @@ Do you want to download it? - + Group color @@ -5518,7 +5518,7 @@ Do you want to download it? - + Name Όνομα @@ -6350,40 +6350,40 @@ Apply settings anyway? Seamly2D - + Tools for creating points. Εργαλεία για δημιουργία σημείων. - - + + - + Point Σημείο - + Tools for creating lines. Εργαλεία για δημιουργία γραμμών. - - + + - - + + Line Γραμμή - + Tools for creating curves. Εργαλεία για δημιουργία καμπύλων. - - + + Curve Καμπύλη @@ -6394,14 +6394,14 @@ Apply settings anyway? Εργαλεία για δημιουργία τόξων. - - + + Arc Τόξο - + &File &Αρχείο @@ -6412,12 +6412,12 @@ Apply settings anyway? - + Measurements Μετρήσεις - + New Νέο @@ -6448,7 +6448,7 @@ Apply settings anyway? - + Save Αποθήκευση @@ -6463,7 +6463,7 @@ Apply settings anyway? Αποθήκευση πατρόν - + Save &As... Αποθήκευση &ως... @@ -6473,19 +6473,19 @@ Apply settings anyway? Το πατρόν δεν έχει αποθηκευθεί ακόμα - - + + Details Λεπτομέρειες - + Pointer tools Εργαλεία δείκτη - - + + History Ιστορικό @@ -6505,27 +6505,27 @@ Apply settings anyway? Έ&ξοδος - + Preferences Προτιμήσεις - + Report bug Αναφορά σφάλματος - + Show online help Εμφάνιση βοήθειας online - + About Qt Σχετικά με το Qt - + Save as Αποθήκευση ως @@ -6535,17 +6535,17 @@ Apply settings anyway? Δεν είναι δυνατή η αποθήκευση αρχείου - + - - + + Open file Άνοιγμα αρχείου - + Error parsing file. Σφάλμα κατά την ανάλυση του αρχείου. @@ -6577,46 +6577,46 @@ Apply settings anyway? Κακή ταυτότητα. - + File saved Αποθηκευμένο αρχείο - + untitled.sm2d Ανώνυμο.sm2d - + The pattern has been modified. Do you want to save your changes? Το πατρόν έχει τροποποιηθεί. Θέλετε να αποθηκελυσετε τις αλλαγές; - - + + &Undo &Αναίρεση - - + + &Redo &Ακύρωση αναίρεσης - + This file already opened in another window. Αυτό το αρχείο είναι ήδη ανοιχτό σε ένα άλλο παράθυρο. - + Wrong units. Λανθασμένες μονάδες. - + File loaded Το αρχείο φορτώθηκε @@ -6631,26 +6631,26 @@ Do you want to save your changes? Άνοιγμα αρχείων εκ νέου. - - + + - + Layout Τοποθέτηση - + Settings Ρυθμίσεις - - + + Print Εκτύπωση - + Print tiled PDF Εκτύπωση τεμαχισμένου PDF @@ -6660,7 +6660,7 @@ Do you want to save your changes? Διαχωρισμός και εκτύπωση της διάταξης σε μικρότερες σελίδες (για κανονικούς εκτυπωτές) - + Print preview Προεπισκόπιση εκτύπωσης @@ -6670,70 +6670,82 @@ Do you want to save your changes? Προεπισκόπιση εκτύπωσης της αρχικής τοποθέτησης - + Export As... Εξαγωγή ως... - + - + Layout mode Λειτουργία τοποθέτησης - + Unsaved changes Αλλαγές χωρίς αποθήκευση - + Measurements loaded Οι μετρήσεις φορτώθηκαν - + You can't export empty scene. Δεν μπορείς να εξάγεις άδεια σκηνή. - - + + Measurement file contains invalid known measurement(s). Το αρχείο μετρήσεων περιλαμβάνει μη έγκυρες γνωστές μετρήσεις. - - + + Measurement file has unknown format. Το αρχείο μετρήσεων είναι άγνωστης μορφής. - + Measurement files types have not match. - + Couldn't sync measurements. Δεν ήταν δυνατός ο συγχρονισμός των μετρήσεων. - + Couldn't update measurements. Δεν ήταν δυνατή η ενημέρωση των μετρήσεων. - + + Images will not be saved + + + + + Please note that the images can not be saved and that they are not affected by the undo and redo functions in the current version of the software. + +You may want to take a screenshot of the image properties dialog before closing the software to be able to recreate identically the image when opening the software again. + + + + The measurements file '%1' could not be found. Το αρχείο μετρήσεων '%1' δε βρέθηκε. - + Loading measurements file Φόρτωση αρχείου μετρήσεων @@ -6769,12 +6781,12 @@ Do you want to save your changes? Παρακαλώ, δώστε ένα αρχείο εισόδου. - + Print an original layout Εκτύπωση μίας αρχικής διάταξης - + Preview tiled PDF Προεπισκόπιση τεμαχισμένου PDF @@ -6784,7 +6796,7 @@ Do you want to save your changes? Προεπισκόπηση εκτύπωσης τεμαχισμένης διάταξης - + Measurements unloaded @@ -6794,7 +6806,7 @@ Do you want to save your changes? - + New pattern Νέο πατρόν @@ -6809,7 +6821,7 @@ Do you want to save your changes? Δημιουργία/Επεξεργασία μετρήσεων - + Save... Αποθήκευση... @@ -6819,7 +6831,7 @@ Do you want to save your changes? Χωρίς αποθήκευση - + Locking file @@ -6851,29 +6863,29 @@ Do you want to save your changes? Παρουσιάστηκε άγνωστο σφάλμα, για παράδειγμα μία πλήρης διχοτόμηση εμπόδισε την εγγραφή του αρχείου κλειδώματος. - + Operations Λειτουργίες - + Close pattern Κλείσιμο πατρόν - + Tool pointer Εργαλείο δείκτη - + Original zoom Αρχικό zoom - + Height: Ύψος: @@ -6883,12 +6895,12 @@ Do you want to save your changes? Μέγεθος: - + The measurements file <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? - + Measurements were changed. Do you want to sync measurements now? Έγινε αλλαγή των μετρήσεων. Θέλετε να συγχρονίσετε τις μετρήσεις τώρα; @@ -6898,12 +6910,12 @@ Do you want to save your changes? - + Measurements have been synced Οι μετρήσεις συγχρονίστηκαν - + The document has no write permissions. @@ -6923,12 +6935,12 @@ Do you want to save your changes? Δεν ήταν δυνατή η αποθήκευση του αρχείου - + read only μόνο για ανάγνωση - + Load Individual Φόρτωση Ατομικών @@ -6983,37 +6995,37 @@ Do you want to save your changes? - - + + Individual measurements Ατομικές μετρήσεις - - + + Multisize measurements - + Pattern files Αρχεία πατρόν - + Wiki - + Forum Φόρουμ - + Name Όνομα @@ -7028,17 +7040,17 @@ Do you want to save your changes? Φόρμουλα - + You can't use Layout mode yet. - + Application doesn't support multisize table with inches. - + Couldn't set size. Need a file with multisize measurements. @@ -7048,7 +7060,7 @@ Do you want to save your changes? - + Preview @@ -7079,13 +7091,13 @@ Do you want to save your changes? - - + + Piece - + Utilities @@ -7121,8 +7133,8 @@ Do you want to save your changes? - - + + Group Manager @@ -7137,7 +7149,7 @@ Do you want to save your changes? - + Points Toolbar @@ -7187,36 +7199,36 @@ Do you want to save your changes? - - + + Line between 2 Points (Alt+L) - + Tools for performing operations on objects - + Rotate Selected Objects (R) - - + + Export Draft Blocks (E, D) - + Tools for adding pattern pieces. - + Add Details @@ -7227,17 +7239,17 @@ Do you want to save your changes? - + Unite 2 Pieces (U) - + View Toolbar - + Draft @@ -7300,7 +7312,7 @@ Do you want to save your changes? - + Mirror by Line @@ -7467,7 +7479,7 @@ Do you want to save your changes? - + Fit All @@ -7493,7 +7505,7 @@ Do you want to save your changes? - + Shortcuts @@ -7518,7 +7530,7 @@ Do you want to save your changes? - + Load multisize @@ -7844,7 +7856,7 @@ Do you want to save your changes? - + Calculator @@ -7865,7 +7877,7 @@ Do you want to save your changes? - + Export Draft Blocks @@ -7880,7 +7892,7 @@ Do you want to save your changes? Εξαγωγή - + Seam Allowance @@ -7910,12 +7922,12 @@ Do you want to save your changes? - + Measurement file doesn't include all the required measurements. - + <b>Tool::Operations - Create Group:</b> Select one or more objects - Hold <b>%1</b> for multiple selection, Press <b>ENTER</b> to finish group creation @@ -7945,13 +7957,13 @@ Do you want to save your changes? - + Draft Block: - + Rotate @@ -7981,7 +7993,13 @@ Do you want to save your changes? - + + + Import Image + + + + Piece mode @@ -7991,8 +8009,8 @@ Do you want to save your changes? - - + + Pattern Pieces @@ -8007,7 +8025,7 @@ Do you want to save your changes? - + Name: Όνομα: @@ -8027,7 +8045,7 @@ Do you want to save your changes? - + You don't have any pieces to export. Please, include at least one piece in layout. @@ -8042,7 +8060,7 @@ Do you want to save your changes? - + <b>Tool::Piece - Add New Pattern Piece:</b> Select main path of objects clockwise. @@ -8062,146 +8080,146 @@ Do you want to save your changes? - + <b>Tool::Details - Union:</b> Select pattern piece - + Draft block %1 - + Draft Block %1 - - + + Point - On Bisector (O, B) - - + + Point - Length to Line (P, S) - - + + Point - Intersect Arc and Line (A, L) - - + + Point - Intersect Axis and Triangle (X, T) - - + + Point - Intersect XY (X, Y) - - + + Point - Intersect Line and Perpendicular (L, P) - - + + Point - Intersect Line and Axis (L, X) - - + + Point - On Perpendicular (O, P) - - + + Point - Length and Angle (L, A) - - + + Point - On Line (O, L) - - + + Point - Midpoint on Line (Shift+O, Shift+L) - - + + Point - Intersect Lines (I, L) - - + + Curve - Interactive (Alt+C) - - + + Spline - Interactive (Alt+S) - - + + Curve - Fixed (Alt+Shift+C) - - + + Spline - Fixed (Alt+Shift+S) - + Point - On Spline (O, S) - + Point - Intersect Curves (I, C) - - + + Point - Intersect Curve and Axis (C, X) - + Point - On Curve (O, C) - + Arc - Radius and Angles (Alt+A) - + Point - On Arc (O, A) @@ -8232,90 +8250,101 @@ Do you want to save your changes? - + Arc - Radius and Length (Alt+Shift+A) - - + + Arc - Elliptical (Alt+E) - - + + Mirror Objects by Line (M, L) - - + + Mirror Objects by Axis (M, A) - - + + Move Objects (Alt+M) - - + + True Darts (T, D) - - + + Add New Pattern Piece (N, P) - - + + Add Anchor Point (A, P) - - + + Insert Nodes (I, N) - - + + Add Internal Path (I, P) - - + + Tools for inserting or modifying images. + + + + + + Import Image (Alt + I) + + + + + Export Pieces (E, P) - + New Print Layout (N, L) - + Export Layout (E, L) - + Contains information about custom and internal variables - + Alt+M @@ -8629,12 +8658,12 @@ Do you want to save your changes? - + Activate last used tool (Ctrl+Shift+L) - + Zoom to Selected (Ctrl+Right) @@ -8659,7 +8688,27 @@ Do you want to save your changes? - + + Images tools + + + + + Delete + Διαγραφή + + + + Align + + + + + Lock + + + + Zoom to point (Ctrl + Alt + P) @@ -8669,12 +8718,17 @@ Do you want to save your changes? - + + Alt+I + + + + Please provide additional measurements: %1 - + <b>Tool::Point - Midpoint on Line</b>: Select first point @@ -8824,7 +8878,52 @@ Do you want to save your changes? - + + + Can't read image + + + + + + Could not read the image. + + + + + It may be corrupted... + + + + + It may be corrupted or empty... + + + + + Confirm deletion + Επικύρωση διαγραφής + + + + Do you really want to delete? + Θέλετε σίγουρα να κάνετε διαγραφή; + + + + + + + Images + Εικόνες + + + + Open Image File + + + + Zoom to Point @@ -8834,7 +8933,7 @@ Do you want to save your changes? Σημείο: - + Intersect Arc and Line @@ -8844,8 +8943,8 @@ Do you want to save your changes? - - + + Add Objects to Group (G) @@ -8856,7 +8955,7 @@ Do you want to save your changes? - + Add Group Objects @@ -8866,7 +8965,7 @@ Do you want to save your changes? - + Can not save file. @@ -8883,36 +8982,36 @@ Do you want to save your changes? - + Ctrl+E - + untitled ανώνυμο - + Failed to lock. This file already opened in another window. Expect collisions when running 2 copies of the program. - + Pen Toolbar - + Toolbars - - + + - - + + File exception. @@ -8925,12 +9024,12 @@ Do you want to save your changes? - + pattern - + Base name used for new points. Press enter to temporarily add it to the list. @@ -11818,7 +11917,7 @@ Press enter to temporarily add it to the list. Επεξεργασία - + Open Directory Άνοιγμα φακέλου @@ -11833,7 +11932,12 @@ Press enter to temporarily add it to the list. - + + My Images + + + + My Patterns Πατρόν μου @@ -12137,12 +12241,12 @@ Press enter to temporarily add it to the list. QObject - + Create new pattern piece to start working. Δημιουργήστε νέο κομμάτι πατρόν για να ξεκινήσετε να δουλεύετε. - + mm χιλ @@ -12179,12 +12283,12 @@ Press enter to temporarily add it to the list. προσθήκη κόμβου - + Changes applied. Οι αλλαγές εφαρμόστηκαν. - + Wrong tag name '%1'. @@ -12542,6 +12646,19 @@ Press enter to temporarily add it to the list. μετονομασία κομματιού πατρόν + + ResizeHandlesItem + + + Press <b>CTRL</b> to scale around the center - <b> Aspect ratio locked </b> + + + + + Press <b>CTRL</b> to scale around the center, <b>SHIFT</b> to scale uniformly. + + + SavePieceOptions @@ -13331,12 +13448,12 @@ When unchecked the period is used. - + F2 - + Point Σημείο @@ -13726,6 +13843,21 @@ When unchecked the period is used. E, D + + + Images + Εικόνες + + + + Import Image + + + + + Alt + I + + Pattern Piece @@ -13943,8 +14075,8 @@ When unchecked the period is used. Βοήθεια - - + + Keyboard Shortcuts @@ -13954,7 +14086,7 @@ When unchecked the period is used. - + Shift+P @@ -13964,7 +14096,7 @@ When unchecked the period is used. - + Export PDF @@ -14923,7 +15055,7 @@ load in SeamlyME as usual. Tool - + First point Πρώτο σημείο @@ -15153,7 +15285,7 @@ load in SeamlyME as usual. Δεν είναι δυνατή η εύρεση του εργαλείου στον πίνακα. - + Error creating or updating group @@ -15780,7 +15912,7 @@ load in SeamlyME as usual. VCommonSettings - + measurements μετρήσεις @@ -15802,11 +15934,16 @@ load in SeamlyME as usual. + images + + + + label templates - + bodyscans @@ -16645,7 +16782,7 @@ load in SeamlyME as usual. VToolLine - + Length Μήκος @@ -17468,7 +17605,7 @@ load in SeamlyME as usual. Γραμμή_ - + Center point Κεντρικό σημείο diff --git a/share/translations/seamly2d_en_CA.ts b/share/translations/seamly2d_en_CA.ts index cb81ebb92fb8..a3187324b476 100644 --- a/share/translations/seamly2d_en_CA.ts +++ b/share/translations/seamly2d_en_CA.ts @@ -5073,7 +5073,7 @@ p, li { white-space: pre-wrap; } FvUpdater - + Feed download failed: %1. Feed download failed: %1. @@ -5238,7 +5238,7 @@ Do you want to download it? - + %1 - Base point %1 - Base point @@ -5441,7 +5441,7 @@ Do you want to download it? - + Group color @@ -5518,7 +5518,7 @@ Do you want to download it? - + Name Name @@ -6353,40 +6353,40 @@ Apply settings anyway? Seamly2D - + Tools for creating points. Tools for creating points. - - + + - + Point Point - + Tools for creating lines. Tools for creating lines. - - + + - - + + Line Line - + Tools for creating curves. Tools for creating curves. - - + + Curve Curve @@ -6397,14 +6397,14 @@ Apply settings anyway? Tools for creating arcs. - - + + Arc Arc - + &File &File @@ -6415,12 +6415,12 @@ Apply settings anyway? - + Measurements Measurements - + New New @@ -6451,7 +6451,7 @@ Apply settings anyway? - + Save Save @@ -6466,7 +6466,7 @@ Apply settings anyway? Save pattern - + Save &As... Save &As... @@ -6476,19 +6476,19 @@ Apply settings anyway? Save not yet saved pattern - - + + Details Details - + Pointer tools Pointer tools - - + + History History @@ -6508,27 +6508,27 @@ Apply settings anyway? E&xit - + Preferences Preferences - + Report bug Report bug - + Show online help Show online help - + About Qt About Qt - + Save as Save as @@ -6538,17 +6538,17 @@ Apply settings anyway? Could not save file - + - - + + Open file Open file - + Error parsing file. Error parsing file. @@ -6580,46 +6580,46 @@ Apply settings anyway? Bad id. - + File saved File saved - + untitled.sm2d untitled.sm2d - + The pattern has been modified. Do you want to save your changes? The pattern has been modified. Do you want to save your changes? - - + + &Undo &Undo - - + + &Redo &Redo - + This file already opened in another window. This file already opened in another window. - + Wrong units. Wrong units. - + File loaded File loaded @@ -6634,26 +6634,26 @@ Do you want to save your changes? Reopen files. - - + + - + Layout Layout - + Settings Settings - - + + Print Print - + Print tiled PDF Print tiled PDF @@ -6663,7 +6663,7 @@ Do you want to save your changes? Split and print a layout into smaller pages (for regular printers) - + Print preview Print preview @@ -6673,70 +6673,82 @@ Do you want to save your changes? Print preview original layout - + Export As... Export As... - + - + Layout mode Layout mode - + Unsaved changes Unsaved changes - + Measurements loaded Measurements loaded - + You can't export empty scene. You can't export empty scene. - - + + Measurement file contains invalid known measurement(s). Measurement file contains invalid known measurement(s). - - + + Measurement file has unknown format. Measurement file has unknown format. - + Measurement files types have not match. Measurement files types have not match. - + Couldn't sync measurements. Couldn't sync measurements. - + Couldn't update measurements. Couldn't update measurements. - + + Images will not be saved + + + + + Please note that the images can not be saved and that they are not affected by the undo and redo functions in the current version of the software. + +You may want to take a screenshot of the image properties dialog before closing the software to be able to recreate identically the image when opening the software again. + + + + The measurements file '%1' could not be found. The measurements file '%1' could not be found. - + Loading measurements file Loading measurements file @@ -6772,12 +6784,12 @@ Do you want to save your changes? Please, provide one input file. - + Print an original layout Print an original layout - + Preview tiled PDF Preview tiled PDF @@ -6787,7 +6799,7 @@ Do you want to save your changes? Print preview tiled layout - + Measurements unloaded Measurements unloaded @@ -6797,7 +6809,7 @@ Do you want to save your changes? Couldn't unload measurements. Some of them are used in the pattern. - + New pattern New pattern @@ -6812,7 +6824,7 @@ Do you want to save your changes? Create/Edit measurements - + Save... Save... @@ -6822,7 +6834,7 @@ Do you want to save your changes? Don't Save - + Locking file @@ -6854,29 +6866,29 @@ Do you want to save your changes? Unknown error happened, for instance a full partition prevented writing out the lock file. - + Operations Operations - + Close pattern Close pattern - + Tool pointer Tool pointer - + Original zoom Original zoom - + Height: Height: @@ -6886,12 +6898,12 @@ Do you want to save your changes? Size: - + The measurements file <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? The measurements file <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? - + Measurements were changed. Do you want to sync measurements now? Measurements were changed. Do you want to sync measurements now? @@ -6901,12 +6913,12 @@ Do you want to save your changes? Gradation doesn't support inches - + Measurements have been synced Measurements have been synced - + The document has no write permissions. The document has no write permissions. @@ -6926,12 +6938,12 @@ Do you want to save your changes? Could not save the file - + read only read only - + Load Individual Load Individual @@ -6986,37 +6998,37 @@ Do you want to save your changes? Unload measurements if they were not used in a pattern file - - + + Individual measurements Individual measurements - - + + Multisize measurements Multisize measurements - + Pattern files Pattern files - + Wiki Wiki - + Forum Forum - + Name Name @@ -7031,17 +7043,17 @@ Do you want to save your changes? Formula - + You can't use Layout mode yet. You can't use Layout mode yet. - + Application doesn't support multisize table with inches. - + Couldn't set size. Need a file with multisize measurements. @@ -7051,7 +7063,7 @@ Do you want to save your changes? - + Preview @@ -7082,13 +7094,13 @@ Do you want to save your changes? - - + + Piece - + Utilities @@ -7124,8 +7136,8 @@ Do you want to save your changes? - - + + Group Manager @@ -7140,7 +7152,7 @@ Do you want to save your changes? - + Points Toolbar @@ -7190,36 +7202,36 @@ Do you want to save your changes? - - + + Line between 2 Points (Alt+L) - + Tools for performing operations on objects - + Rotate Selected Objects (R) - - + + Export Draft Blocks (E, D) - + Tools for adding pattern pieces. - + Add Details @@ -7230,17 +7242,17 @@ Do you want to save your changes? - + Unite 2 Pieces (U) - + View Toolbar - + Draft @@ -7303,7 +7315,7 @@ Do you want to save your changes? - + Mirror by Line @@ -7470,7 +7482,7 @@ Do you want to save your changes? - + Fit All @@ -7496,7 +7508,7 @@ Do you want to save your changes? - + Shortcuts @@ -7521,7 +7533,7 @@ Do you want to save your changes? - + Load multisize @@ -7847,7 +7859,7 @@ Do you want to save your changes? - + Calculator @@ -7868,7 +7880,7 @@ Do you want to save your changes? - + Export Draft Blocks @@ -7883,7 +7895,7 @@ Do you want to save your changes? Export - + Seam Allowance @@ -7913,12 +7925,12 @@ Do you want to save your changes? - + Measurement file doesn't include all the required measurements. - + <b>Tool::Operations - Create Group:</b> Select one or more objects - Hold <b>%1</b> for multiple selection, Press <b>ENTER</b> to finish group creation @@ -7948,13 +7960,13 @@ Do you want to save your changes? - + Draft Block: - + Rotate @@ -7984,7 +7996,13 @@ Do you want to save your changes? - + + + Import Image + + + + Piece mode @@ -7994,8 +8012,8 @@ Do you want to save your changes? - - + + Pattern Pieces @@ -8010,7 +8028,7 @@ Do you want to save your changes? - + Name: Name: @@ -8030,7 +8048,7 @@ Do you want to save your changes? - + You don't have any pieces to export. Please, include at least one piece in layout. @@ -8045,7 +8063,7 @@ Do you want to save your changes? - + <b>Tool::Piece - Add New Pattern Piece:</b> Select main path of objects clockwise. @@ -8065,146 +8083,146 @@ Do you want to save your changes? - + <b>Tool::Details - Union:</b> Select pattern piece - + Draft block %1 - + Draft Block %1 - - + + Point - On Bisector (O, B) - - + + Point - Length to Line (P, S) - - + + Point - Intersect Arc and Line (A, L) - - + + Point - Intersect Axis and Triangle (X, T) - - + + Point - Intersect XY (X, Y) - - + + Point - Intersect Line and Perpendicular (L, P) - - + + Point - Intersect Line and Axis (L, X) - - + + Point - On Perpendicular (O, P) - - + + Point - Length and Angle (L, A) - - + + Point - On Line (O, L) - - + + Point - Midpoint on Line (Shift+O, Shift+L) - - + + Point - Intersect Lines (I, L) - - + + Curve - Interactive (Alt+C) - - + + Spline - Interactive (Alt+S) - - + + Curve - Fixed (Alt+Shift+C) - - + + Spline - Fixed (Alt+Shift+S) - + Point - On Spline (O, S) - + Point - Intersect Curves (I, C) - - + + Point - Intersect Curve and Axis (C, X) - + Point - On Curve (O, C) - + Arc - Radius and Angles (Alt+A) - + Point - On Arc (O, A) @@ -8235,90 +8253,101 @@ Do you want to save your changes? - + Arc - Radius and Length (Alt+Shift+A) - - + + Arc - Elliptical (Alt+E) - - + + Mirror Objects by Line (M, L) - - + + Mirror Objects by Axis (M, A) - - + + Move Objects (Alt+M) - - + + True Darts (T, D) - - + + Add New Pattern Piece (N, P) - - + + Add Anchor Point (A, P) - - + + Insert Nodes (I, N) - - + + Add Internal Path (I, P) - - + + Tools for inserting or modifying images. + + + + + + Import Image (Alt + I) + + + + + Export Pieces (E, P) - + New Print Layout (N, L) - + Export Layout (E, L) - + Contains information about custom and internal variables - + Alt+M @@ -8632,12 +8661,12 @@ Do you want to save your changes? - + Activate last used tool (Ctrl+Shift+L) - + Zoom to Selected (Ctrl+Right) @@ -8662,7 +8691,27 @@ Do you want to save your changes? - + + Images tools + + + + + Delete + Delete + + + + Align + + + + + Lock + + + + Zoom to point (Ctrl + Alt + P) @@ -8672,12 +8721,17 @@ Do you want to save your changes? - + + Alt+I + + + + Please provide additional measurements: %1 - + <b>Tool::Point - Midpoint on Line</b>: Select first point @@ -8827,7 +8881,52 @@ Do you want to save your changes? - + + + Can't read image + + + + + + Could not read the image. + + + + + It may be corrupted... + + + + + It may be corrupted or empty... + + + + + Confirm deletion + Confirm deletion + + + + Do you really want to delete? + Do you really want to delete? + + + + + + + Images + Images + + + + Open Image File + + + + Zoom to Point @@ -8837,7 +8936,7 @@ Do you want to save your changes? Point: - + Intersect Arc and Line @@ -8847,8 +8946,8 @@ Do you want to save your changes? - - + + Add Objects to Group (G) @@ -8859,7 +8958,7 @@ Do you want to save your changes? - + Add Group Objects @@ -8869,7 +8968,7 @@ Do you want to save your changes? - + Can not save file. @@ -8886,36 +8985,36 @@ Do you want to save your changes? - + Ctrl+E - + untitled untitled - + Failed to lock. This file already opened in another window. Expect collisions when running 2 copies of the program. - + Pen Toolbar - + Toolbars - - + + - - + + File exception. @@ -8928,12 +9027,12 @@ Do you want to save your changes? - + pattern - + Base name used for new points. Press enter to temporarily add it to the list. @@ -11821,7 +11920,7 @@ Press enter to temporarily add it to the list. Edit - + Open Directory Open Directory @@ -11836,7 +11935,12 @@ Press enter to temporarily add it to the list. My Multisize Measurements - + + My Images + + + + My Patterns My Patterns @@ -12140,12 +12244,12 @@ Press enter to temporarily add it to the list. QObject - + Create new pattern piece to start working. Create new pattern piece to start working. - + mm mm @@ -12182,12 +12286,12 @@ Press enter to temporarily add it to the list. add node - + Changes applied. Changes applied. - + Wrong tag name '%1'. Wrong tag name '%1'. @@ -12545,6 +12649,19 @@ Press enter to temporarily add it to the list. rename pattern piece + + ResizeHandlesItem + + + Press <b>CTRL</b> to scale around the center - <b> Aspect ratio locked </b> + + + + + Press <b>CTRL</b> to scale around the center, <b>SHIFT</b> to scale uniformly. + + + SavePieceOptions @@ -13334,12 +13451,12 @@ When unchecked the period is used. - + F2 - + Point Point @@ -13729,6 +13846,21 @@ When unchecked the period is used. E, D + + + Images + Images + + + + Import Image + + + + + Alt + I + + Pattern Piece @@ -13946,8 +14078,8 @@ When unchecked the period is used. Help - - + + Keyboard Shortcuts @@ -13957,7 +14089,7 @@ When unchecked the period is used. - + Shift+P @@ -13967,7 +14099,7 @@ When unchecked the period is used. - + Export PDF @@ -14926,7 +15058,7 @@ load in SeamlyME as usual. Tool - + First point First point @@ -15156,7 +15288,7 @@ load in SeamlyME as usual. Can't find tool in table. - + Error creating or updating group Error creating or updating group @@ -15783,7 +15915,7 @@ load in SeamlyME as usual. VCommonSettings - + measurements measurements @@ -15805,11 +15937,16 @@ load in SeamlyME as usual. + images + + + + label templates - + bodyscans @@ -16650,7 +16787,7 @@ load in SeamlyME as usual. VToolLine - + Length Length @@ -17473,7 +17610,7 @@ load in SeamlyME as usual. Line_ - + Center point Center point diff --git a/share/translations/seamly2d_en_GB.ts b/share/translations/seamly2d_en_GB.ts index 942647fd6e8e..9ac5b937ff84 100644 --- a/share/translations/seamly2d_en_GB.ts +++ b/share/translations/seamly2d_en_GB.ts @@ -5073,7 +5073,7 @@ p, li { white-space: pre-wrap; } FvUpdater - + Feed download failed: %1. @@ -5238,7 +5238,7 @@ Do you want to download it? - + %1 - Base point %1 - Base point @@ -5441,7 +5441,7 @@ Do you want to download it? - + Group color @@ -5518,7 +5518,7 @@ Do you want to download it? - + Name Name @@ -6353,40 +6353,40 @@ Apply settings anyway? - + Tools for creating points. - - + + - + Point Point - + Tools for creating lines. - - + + - - + + Line Line - + Tools for creating curves. - - + + Curve Curve @@ -6397,14 +6397,14 @@ Apply settings anyway? - - + + Arc Arc - + &File @@ -6415,12 +6415,12 @@ Apply settings anyway? - + Measurements Measurements - + New @@ -6451,7 +6451,7 @@ Apply settings anyway? - + Save @@ -6466,7 +6466,7 @@ Apply settings anyway? - + Save &As... @@ -6476,19 +6476,19 @@ Apply settings anyway? - - + + Details Details - + Pointer tools - - + + History History @@ -6508,27 +6508,27 @@ Apply settings anyway? - + Preferences Preferences - + Report bug - + Show online help - + About Qt - + Save as @@ -6538,17 +6538,17 @@ Apply settings anyway? Could not save file - + - - + + Open file - + Error parsing file. @@ -6580,46 +6580,46 @@ Apply settings anyway? - + File saved - + untitled.sm2d - + The pattern has been modified. Do you want to save your changes? The pattern has been modified. Do you want to save your changes? - - + + &Undo - - + + &Redo - + This file already opened in another window. - + Wrong units. - + File loaded @@ -6634,26 +6634,26 @@ Do you want to save your changes? - - + + - + Layout Layout - + Settings - - + + Print Print - + Print tiled PDF @@ -6663,7 +6663,7 @@ Do you want to save your changes? - + Print preview @@ -6673,70 +6673,82 @@ Do you want to save your changes? - + Export As... - + - + Layout mode - + Unsaved changes - + Measurements loaded - + You can't export empty scene. - - + + Measurement file contains invalid known measurement(s). - - + + Measurement file has unknown format. - + Measurement files types have not match. - + Couldn't sync measurements. - + Couldn't update measurements. - + + Images will not be saved + + + + + Please note that the images can not be saved and that they are not affected by the undo and redo functions in the current version of the software. + +You may want to take a screenshot of the image properties dialog before closing the software to be able to recreate identically the image when opening the software again. + + + + The measurements file '%1' could not be found. - + Loading measurements file @@ -6772,12 +6784,12 @@ Do you want to save your changes? - + Print an original layout - + Preview tiled PDF @@ -6787,7 +6799,7 @@ Do you want to save your changes? - + Measurements unloaded @@ -6797,7 +6809,7 @@ Do you want to save your changes? - + New pattern @@ -6812,7 +6824,7 @@ Do you want to save your changes? - + Save... @@ -6822,7 +6834,7 @@ Do you want to save your changes? - + Locking file @@ -6854,29 +6866,29 @@ Do you want to save your changes? - + Operations Operations - + Close pattern - + Tool pointer - + Original zoom - + Height: Height: @@ -6886,12 +6898,12 @@ Do you want to save your changes? Size: - + The measurements file <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? - + Measurements were changed. Do you want to sync measurements now? @@ -6901,12 +6913,12 @@ Do you want to save your changes? - + Measurements have been synced - + The document has no write permissions. @@ -6926,12 +6938,12 @@ Do you want to save your changes? - + read only - + Load Individual @@ -6986,37 +6998,37 @@ Do you want to save your changes? - - + + Individual measurements - - + + Multisize measurements - + Pattern files - + Wiki - + Forum - + Name Name @@ -7031,17 +7043,17 @@ Do you want to save your changes? Formula - + You can't use Layout mode yet. - + Application doesn't support multisize table with inches. - + Couldn't set size. Need a file with multisize measurements. @@ -7051,7 +7063,7 @@ Do you want to save your changes? - + Preview @@ -7082,13 +7094,13 @@ Do you want to save your changes? - - + + Piece - + Utilities @@ -7124,8 +7136,8 @@ Do you want to save your changes? - - + + Group Manager @@ -7140,7 +7152,7 @@ Do you want to save your changes? - + Points Toolbar @@ -7190,36 +7202,36 @@ Do you want to save your changes? - - + + Line between 2 Points (Alt+L) - + Tools for performing operations on objects - + Rotate Selected Objects (R) - - + + Export Draft Blocks (E, D) - + Tools for adding pattern pieces. - + Add Details @@ -7230,17 +7242,17 @@ Do you want to save your changes? - + Unite 2 Pieces (U) - + View Toolbar - + Draft @@ -7303,7 +7315,7 @@ Do you want to save your changes? - + Mirror by Line @@ -7470,7 +7482,7 @@ Do you want to save your changes? - + Fit All @@ -7496,7 +7508,7 @@ Do you want to save your changes? - + Shortcuts @@ -7521,7 +7533,7 @@ Do you want to save your changes? - + Load multisize @@ -7847,7 +7859,7 @@ Do you want to save your changes? - + Calculator @@ -7868,7 +7880,7 @@ Do you want to save your changes? - + Export Draft Blocks @@ -7883,7 +7895,7 @@ Do you want to save your changes? Export - + Seam Allowance @@ -7913,12 +7925,12 @@ Do you want to save your changes? - + Measurement file doesn't include all the required measurements. - + <b>Tool::Operations - Create Group:</b> Select one or more objects - Hold <b>%1</b> for multiple selection, Press <b>ENTER</b> to finish group creation @@ -7948,13 +7960,13 @@ Do you want to save your changes? - + Draft Block: - + Rotate @@ -7984,7 +7996,13 @@ Do you want to save your changes? - + + + Import Image + + + + Piece mode @@ -7994,8 +8012,8 @@ Do you want to save your changes? - - + + Pattern Pieces @@ -8010,7 +8028,7 @@ Do you want to save your changes? - + Name: Name: @@ -8030,7 +8048,7 @@ Do you want to save your changes? - + You don't have any pieces to export. Please, include at least one piece in layout. @@ -8045,7 +8063,7 @@ Do you want to save your changes? - + <b>Tool::Piece - Add New Pattern Piece:</b> Select main path of objects clockwise. @@ -8065,146 +8083,146 @@ Do you want to save your changes? - + <b>Tool::Details - Union:</b> Select pattern piece - + Draft block %1 - + Draft Block %1 - - + + Point - On Bisector (O, B) - - + + Point - Length to Line (P, S) - - + + Point - Intersect Arc and Line (A, L) - - + + Point - Intersect Axis and Triangle (X, T) - - + + Point - Intersect XY (X, Y) - - + + Point - Intersect Line and Perpendicular (L, P) - - + + Point - Intersect Line and Axis (L, X) - - + + Point - On Perpendicular (O, P) - - + + Point - Length and Angle (L, A) - - + + Point - On Line (O, L) - - + + Point - Midpoint on Line (Shift+O, Shift+L) - - + + Point - Intersect Lines (I, L) - - + + Curve - Interactive (Alt+C) - - + + Spline - Interactive (Alt+S) - - + + Curve - Fixed (Alt+Shift+C) - - + + Spline - Fixed (Alt+Shift+S) - + Point - On Spline (O, S) - + Point - Intersect Curves (I, C) - - + + Point - Intersect Curve and Axis (C, X) - + Point - On Curve (O, C) - + Arc - Radius and Angles (Alt+A) - + Point - On Arc (O, A) @@ -8235,90 +8253,101 @@ Do you want to save your changes? - + Arc - Radius and Length (Alt+Shift+A) - - + + Arc - Elliptical (Alt+E) - - + + Mirror Objects by Line (M, L) - - + + Mirror Objects by Axis (M, A) - - + + Move Objects (Alt+M) - - + + True Darts (T, D) - - + + Add New Pattern Piece (N, P) - - + + Add Anchor Point (A, P) - - + + Insert Nodes (I, N) - - + + Add Internal Path (I, P) - - + + Tools for inserting or modifying images. + + + + + + Import Image (Alt + I) + + + + + Export Pieces (E, P) - + New Print Layout (N, L) - + Export Layout (E, L) - + Contains information about custom and internal variables - + Alt+M @@ -8632,12 +8661,12 @@ Do you want to save your changes? - + Activate last used tool (Ctrl+Shift+L) - + Zoom to Selected (Ctrl+Right) @@ -8662,7 +8691,27 @@ Do you want to save your changes? - + + Images tools + + + + + Delete + Delete + + + + Align + + + + + Lock + + + + Zoom to point (Ctrl + Alt + P) @@ -8672,12 +8721,17 @@ Do you want to save your changes? - + + Alt+I + + + + Please provide additional measurements: %1 - + <b>Tool::Point - Midpoint on Line</b>: Select first point @@ -8827,7 +8881,52 @@ Do you want to save your changes? - + + + Can't read image + + + + + + Could not read the image. + + + + + It may be corrupted... + + + + + It may be corrupted or empty... + + + + + Confirm deletion + + + + + Do you really want to delete? + + + + + + + + Images + + + + + Open Image File + + + + Zoom to Point @@ -8837,7 +8936,7 @@ Do you want to save your changes? Point: - + Intersect Arc and Line @@ -8847,8 +8946,8 @@ Do you want to save your changes? - - + + Add Objects to Group (G) @@ -8859,7 +8958,7 @@ Do you want to save your changes? - + Add Group Objects @@ -8869,7 +8968,7 @@ Do you want to save your changes? - + Can not save file. @@ -8886,36 +8985,36 @@ Do you want to save your changes? - + Ctrl+E - + untitled untitled - + Failed to lock. This file already opened in another window. Expect collisions when running 2 copies of the program. - + Pen Toolbar - + Toolbars - - + + - - + + File exception. @@ -8928,12 +9027,12 @@ Do you want to save your changes? - + pattern - + Base name used for new points. Press enter to temporarily add it to the list. @@ -11821,7 +11920,7 @@ Press enter to temporarily add it to the list. Edit - + Open Directory Open Directory @@ -11836,7 +11935,12 @@ Press enter to temporarily add it to the list. My Multisize Measurements - + + My Images + + + + My Patterns @@ -12140,12 +12244,12 @@ Press enter to temporarily add it to the list. QObject - + Create new pattern piece to start working. - + mm @@ -12182,12 +12286,12 @@ Press enter to temporarily add it to the list. - + Changes applied. - + Wrong tag name '%1'. @@ -12545,6 +12649,19 @@ Press enter to temporarily add it to the list. rename pattern piece + + ResizeHandlesItem + + + Press <b>CTRL</b> to scale around the center - <b> Aspect ratio locked </b> + + + + + Press <b>CTRL</b> to scale around the center, <b>SHIFT</b> to scale uniformly. + + + SavePieceOptions @@ -13334,12 +13451,12 @@ When unchecked the period is used. - + F2 - + Point Point @@ -13729,6 +13846,21 @@ When unchecked the period is used. E, D + + + Images + + + + + Import Image + + + + + Alt + I + + Pattern Piece @@ -13946,8 +14078,8 @@ When unchecked the period is used. - - + + Keyboard Shortcuts @@ -13957,7 +14089,7 @@ When unchecked the period is used. - + Shift+P @@ -13967,7 +14099,7 @@ When unchecked the period is used. - + Export PDF @@ -14926,7 +15058,7 @@ load in SeamlyME as usual. Tool - + First point First point @@ -15156,7 +15288,7 @@ load in SeamlyME as usual. - + Error creating or updating group @@ -15783,7 +15915,7 @@ load in SeamlyME as usual. VCommonSettings - + measurements @@ -15805,11 +15937,16 @@ load in SeamlyME as usual. + images + + + + label templates - + bodyscans @@ -16650,7 +16787,7 @@ load in SeamlyME as usual. VToolLine - + Length Length @@ -17473,7 +17610,7 @@ load in SeamlyME as usual. Line_ - + Center point Center point diff --git a/share/translations/seamly2d_en_IN.ts b/share/translations/seamly2d_en_IN.ts index ef92456937fc..1d8f39f2e56c 100644 --- a/share/translations/seamly2d_en_IN.ts +++ b/share/translations/seamly2d_en_IN.ts @@ -5073,7 +5073,7 @@ p, li { white-space: pre-wrap; } FvUpdater - + Feed download failed: %1. Feed download failed: %1. @@ -5238,7 +5238,7 @@ Do you want to download it? - + %1 - Base point %1 - Base point @@ -5441,7 +5441,7 @@ Do you want to download it? - + Group color @@ -5518,7 +5518,7 @@ Do you want to download it? - + Name Name @@ -6353,40 +6353,40 @@ Apply settings anyway? Seamly2D - + Tools for creating points. Tools for creating points. - - + + - + Point Point - + Tools for creating lines. Tools for creating lines. - - + + - - + + Line Line - + Tools for creating curves. Tools for creating curves. - - + + Curve Curve @@ -6397,14 +6397,14 @@ Apply settings anyway? Tools for creating arcs. - - + + Arc Arc - + &File &File @@ -6415,12 +6415,12 @@ Apply settings anyway? - + Measurements Measurements - + New New @@ -6451,7 +6451,7 @@ Apply settings anyway? - + Save Save @@ -6466,7 +6466,7 @@ Apply settings anyway? Save pattern - + Save &As... Save &As... @@ -6476,19 +6476,19 @@ Apply settings anyway? Save not yet saved pattern - - + + Details Details - + Pointer tools Pointer tools - - + + History History @@ -6508,27 +6508,27 @@ Apply settings anyway? E&xit - + Preferences Preferences - + Report bug Report bug - + Show online help Show online help - + About Qt About Qt - + Save as Save as @@ -6538,17 +6538,17 @@ Apply settings anyway? Could not save file - + - - + + Open file Open file - + Error parsing file. Error parsing file. @@ -6580,46 +6580,46 @@ Apply settings anyway? Bad id. - + File saved File saved - + untitled.sm2d untitled.sm2d - + The pattern has been modified. Do you want to save your changes? The pattern has been modified. Do you want to save your changes? - - + + &Undo &Undo - - + + &Redo &Redo - + This file already opened in another window. This file already opened in another window. - + Wrong units. Wrong units. - + File loaded File loaded @@ -6634,26 +6634,26 @@ Do you want to save your changes? Reopen files. - - + + - + Layout Layout - + Settings Settings - - + + Print Print - + Print tiled PDF Print tiled PDF @@ -6663,7 +6663,7 @@ Do you want to save your changes? Split and print a layout into smaller pages (for regular printers) - + Print preview Print preview @@ -6673,70 +6673,82 @@ Do you want to save your changes? Print preview original layout - + Export As... Export As... - + - + Layout mode Layout mode - + Unsaved changes Unsaved changes - + Measurements loaded Measurements loaded - + You can't export empty scene. You can't export empty scene. - - + + Measurement file contains invalid known measurement(s). Measurement file contains invalid known measurement(s). - - + + Measurement file has unknown format. Measurement file has unknown format. - + Measurement files types have not match. Measurement files types have not match. - + Couldn't sync measurements. Couldn't sync measurements. - + Couldn't update measurements. Couldn't update measurements. - + + Images will not be saved + + + + + Please note that the images can not be saved and that they are not affected by the undo and redo functions in the current version of the software. + +You may want to take a screenshot of the image properties dialog before closing the software to be able to recreate identically the image when opening the software again. + + + + The measurements file '%1' could not be found. The measurements file '%1' could not be found. - + Loading measurements file Loading measurements file @@ -6772,12 +6784,12 @@ Do you want to save your changes? Please, provide one input file. - + Print an original layout Print an original layout - + Preview tiled PDF Preview tiled PDF @@ -6787,7 +6799,7 @@ Do you want to save your changes? Print preview tiled layout - + Measurements unloaded Measurements unloaded @@ -6797,7 +6809,7 @@ Do you want to save your changes? Couldn't unload measurements. Some of them are used in the pattern. - + New pattern New pattern @@ -6812,7 +6824,7 @@ Do you want to save your changes? Create/Edit measurements - + Save... Save... @@ -6822,7 +6834,7 @@ Do you want to save your changes? Don't Save - + Locking file @@ -6854,29 +6866,29 @@ Do you want to save your changes? Unknown error happened, for instance a full partition prevented writing out the lock file. - + Operations Operations - + Close pattern Close pattern - + Tool pointer Tool pointer - + Original zoom Original zoom - + Height: Height: @@ -6886,12 +6898,12 @@ Do you want to save your changes? Size: - + The measurements file <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? The measurements file <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? - + Measurements were changed. Do you want to sync measurements now? Measurements were changed. Do you want to sync measurements now? @@ -6901,12 +6913,12 @@ Do you want to save your changes? Gradation doesn't support inches - + Measurements have been synced Measurements have been synced - + The document has no write permissions. The document has no write permissions. @@ -6926,12 +6938,12 @@ Do you want to save your changes? Could not save the file - + read only read only - + Load Individual Load Individual @@ -6986,37 +6998,37 @@ Do you want to save your changes? Unload measurements if they were not used in a pattern file - - + + Individual measurements Individual measurements - - + + Multisize measurements Multisize measurements - + Pattern files Pattern files - + Wiki Wiki - + Forum Forum - + Name Name @@ -7031,17 +7043,17 @@ Do you want to save your changes? Formula - + You can't use Layout mode yet. You can't use Layout mode yet. - + Application doesn't support multisize table with inches. - + Couldn't set size. Need a file with multisize measurements. @@ -7051,7 +7063,7 @@ Do you want to save your changes? - + Preview @@ -7082,13 +7094,13 @@ Do you want to save your changes? - - + + Piece - + Utilities @@ -7124,8 +7136,8 @@ Do you want to save your changes? - - + + Group Manager @@ -7140,7 +7152,7 @@ Do you want to save your changes? - + Points Toolbar @@ -7190,36 +7202,36 @@ Do you want to save your changes? - - + + Line between 2 Points (Alt+L) - + Tools for performing operations on objects - + Rotate Selected Objects (R) - - + + Export Draft Blocks (E, D) - + Tools for adding pattern pieces. - + Add Details @@ -7230,17 +7242,17 @@ Do you want to save your changes? - + Unite 2 Pieces (U) - + View Toolbar - + Draft @@ -7303,7 +7315,7 @@ Do you want to save your changes? - + Mirror by Line @@ -7470,7 +7482,7 @@ Do you want to save your changes? - + Fit All @@ -7496,7 +7508,7 @@ Do you want to save your changes? - + Shortcuts @@ -7521,7 +7533,7 @@ Do you want to save your changes? - + Load multisize @@ -7847,7 +7859,7 @@ Do you want to save your changes? - + Calculator @@ -7868,7 +7880,7 @@ Do you want to save your changes? - + Export Draft Blocks @@ -7883,7 +7895,7 @@ Do you want to save your changes? Export - + Seam Allowance @@ -7913,12 +7925,12 @@ Do you want to save your changes? - + Measurement file doesn't include all the required measurements. - + <b>Tool::Operations - Create Group:</b> Select one or more objects - Hold <b>%1</b> for multiple selection, Press <b>ENTER</b> to finish group creation @@ -7948,13 +7960,13 @@ Do you want to save your changes? - + Draft Block: - + Rotate @@ -7984,7 +7996,13 @@ Do you want to save your changes? - + + + Import Image + + + + Piece mode @@ -7994,8 +8012,8 @@ Do you want to save your changes? - - + + Pattern Pieces @@ -8010,7 +8028,7 @@ Do you want to save your changes? - + Name: Name: @@ -8030,7 +8048,7 @@ Do you want to save your changes? - + You don't have any pieces to export. Please, include at least one piece in layout. @@ -8045,7 +8063,7 @@ Do you want to save your changes? - + <b>Tool::Piece - Add New Pattern Piece:</b> Select main path of objects clockwise. @@ -8065,146 +8083,146 @@ Do you want to save your changes? - + <b>Tool::Details - Union:</b> Select pattern piece - + Draft block %1 - + Draft Block %1 - - + + Point - On Bisector (O, B) - - + + Point - Length to Line (P, S) - - + + Point - Intersect Arc and Line (A, L) - - + + Point - Intersect Axis and Triangle (X, T) - - + + Point - Intersect XY (X, Y) - - + + Point - Intersect Line and Perpendicular (L, P) - - + + Point - Intersect Line and Axis (L, X) - - + + Point - On Perpendicular (O, P) - - + + Point - Length and Angle (L, A) - - + + Point - On Line (O, L) - - + + Point - Midpoint on Line (Shift+O, Shift+L) - - + + Point - Intersect Lines (I, L) - - + + Curve - Interactive (Alt+C) - - + + Spline - Interactive (Alt+S) - - + + Curve - Fixed (Alt+Shift+C) - - + + Spline - Fixed (Alt+Shift+S) - + Point - On Spline (O, S) - + Point - Intersect Curves (I, C) - - + + Point - Intersect Curve and Axis (C, X) - + Point - On Curve (O, C) - + Arc - Radius and Angles (Alt+A) - + Point - On Arc (O, A) @@ -8235,90 +8253,101 @@ Do you want to save your changes? - + Arc - Radius and Length (Alt+Shift+A) - - + + Arc - Elliptical (Alt+E) - - + + Mirror Objects by Line (M, L) - - + + Mirror Objects by Axis (M, A) - - + + Move Objects (Alt+M) - - + + True Darts (T, D) - - + + Add New Pattern Piece (N, P) - - + + Add Anchor Point (A, P) - - + + Insert Nodes (I, N) - - + + Add Internal Path (I, P) - - + + Tools for inserting or modifying images. + + + + + + Import Image (Alt + I) + + + + + Export Pieces (E, P) - + New Print Layout (N, L) - + Export Layout (E, L) - + Contains information about custom and internal variables - + Alt+M @@ -8632,12 +8661,12 @@ Do you want to save your changes? - + Activate last used tool (Ctrl+Shift+L) - + Zoom to Selected (Ctrl+Right) @@ -8662,7 +8691,27 @@ Do you want to save your changes? - + + Images tools + + + + + Delete + Delete + + + + Align + + + + + Lock + + + + Zoom to point (Ctrl + Alt + P) @@ -8672,12 +8721,17 @@ Do you want to save your changes? - + + Alt+I + + + + Please provide additional measurements: %1 - + <b>Tool::Point - Midpoint on Line</b>: Select first point @@ -8827,7 +8881,52 @@ Do you want to save your changes? - + + + Can't read image + + + + + + Could not read the image. + + + + + It may be corrupted... + + + + + It may be corrupted or empty... + + + + + Confirm deletion + Confirm deletion + + + + Do you really want to delete? + Do you really want to delete? + + + + + + + Images + Images + + + + Open Image File + + + + Zoom to Point @@ -8837,7 +8936,7 @@ Do you want to save your changes? Point: - + Intersect Arc and Line @@ -8847,8 +8946,8 @@ Do you want to save your changes? - - + + Add Objects to Group (G) @@ -8859,7 +8958,7 @@ Do you want to save your changes? - + Add Group Objects @@ -8869,7 +8968,7 @@ Do you want to save your changes? - + Can not save file. @@ -8886,36 +8985,36 @@ Do you want to save your changes? - + Ctrl+E - + untitled untitled - + Failed to lock. This file already opened in another window. Expect collisions when running 2 copies of the program. - + Pen Toolbar - + Toolbars - - + + - - + + File exception. @@ -8928,12 +9027,12 @@ Do you want to save your changes? - + pattern - + Base name used for new points. Press enter to temporarily add it to the list. @@ -11821,7 +11920,7 @@ Press enter to temporarily add it to the list. Edit - + Open Directory Open Directory @@ -11836,7 +11935,12 @@ Press enter to temporarily add it to the list. My Multisize Measurements - + + My Images + + + + My Patterns My Patterns @@ -12140,12 +12244,12 @@ Press enter to temporarily add it to the list. QObject - + Create new pattern piece to start working. Create new pattern piece to start working. - + mm mm @@ -12182,12 +12286,12 @@ Press enter to temporarily add it to the list. add node - + Changes applied. Changes applied. - + Wrong tag name '%1'. Wrong tag name '%1'. @@ -12545,6 +12649,19 @@ Press enter to temporarily add it to the list. rename pattern piece + + ResizeHandlesItem + + + Press <b>CTRL</b> to scale around the center - <b> Aspect ratio locked </b> + + + + + Press <b>CTRL</b> to scale around the center, <b>SHIFT</b> to scale uniformly. + + + SavePieceOptions @@ -13334,12 +13451,12 @@ When unchecked the period is used. - + F2 - + Point Point @@ -13729,6 +13846,21 @@ When unchecked the period is used. E, D + + + Images + Images + + + + Import Image + + + + + Alt + I + + Pattern Piece @@ -13946,8 +14078,8 @@ When unchecked the period is used. Help - - + + Keyboard Shortcuts @@ -13957,7 +14089,7 @@ When unchecked the period is used. - + Shift+P @@ -13967,7 +14099,7 @@ When unchecked the period is used. - + Export PDF @@ -14926,7 +15058,7 @@ load in SeamlyME as usual. Tool - + First point First point @@ -15156,7 +15288,7 @@ load in SeamlyME as usual. Can't find tool in table. - + Error creating or updating group Error creating or updating group @@ -15783,7 +15915,7 @@ load in SeamlyME as usual. VCommonSettings - + measurements measurements @@ -15805,11 +15937,16 @@ load in SeamlyME as usual. + images + + + + label templates - + bodyscans @@ -16650,7 +16787,7 @@ load in SeamlyME as usual. VToolLine - + Length Length @@ -17473,7 +17610,7 @@ load in SeamlyME as usual. Line_ - + Center point Center point diff --git a/share/translations/seamly2d_en_US.ts b/share/translations/seamly2d_en_US.ts index 771a5e45a007..e14a5dd1e146 100644 --- a/share/translations/seamly2d_en_US.ts +++ b/share/translations/seamly2d_en_US.ts @@ -5073,7 +5073,7 @@ p, li { white-space: pre-wrap; } FvUpdater - + Feed download failed: %1. @@ -5238,7 +5238,7 @@ Do you want to download it? - + %1 - Base point %1 - Base point @@ -5441,7 +5441,7 @@ Do you want to download it? - + Group color @@ -5518,7 +5518,7 @@ Do you want to download it? - + Name Name @@ -6353,40 +6353,40 @@ Apply settings anyway? - + Tools for creating points. - - + + - + Point Point - + Tools for creating lines. - - + + - - + + Line Line - + Tools for creating curves. - - + + Curve Curve @@ -6397,14 +6397,14 @@ Apply settings anyway? - - + + Arc Arc - + &File @@ -6415,12 +6415,12 @@ Apply settings anyway? - + Measurements Measurements - + New @@ -6451,7 +6451,7 @@ Apply settings anyway? - + Save @@ -6466,7 +6466,7 @@ Apply settings anyway? - + Save &As... @@ -6476,19 +6476,19 @@ Apply settings anyway? - - + + Details Details - + Pointer tools - - + + History History @@ -6508,27 +6508,27 @@ Apply settings anyway? - + Preferences Preferences - + Report bug - + Show online help - + About Qt - + Save as @@ -6538,17 +6538,17 @@ Apply settings anyway? Could not save file - + - - + + Open file - + Error parsing file. @@ -6580,46 +6580,46 @@ Apply settings anyway? - + File saved - + untitled.sm2d - + The pattern has been modified. Do you want to save your changes? The pattern has been modified. Do you want to save your changes? - - + + &Undo - - + + &Redo - + This file already opened in another window. - + Wrong units. - + File loaded @@ -6634,26 +6634,26 @@ Do you want to save your changes? - - + + - + Layout Layout - + Settings - - + + Print Print - + Print tiled PDF @@ -6663,7 +6663,7 @@ Do you want to save your changes? - + Print preview @@ -6673,70 +6673,82 @@ Do you want to save your changes? - + Export As... - + - + Layout mode - + Unsaved changes - + Measurements loaded - + You can't export empty scene. - - + + Measurement file contains invalid known measurement(s). - - + + Measurement file has unknown format. - + Measurement files types have not match. - + Couldn't sync measurements. - + Couldn't update measurements. - + + Images will not be saved + + + + + Please note that the images can not be saved and that they are not affected by the undo and redo functions in the current version of the software. + +You may want to take a screenshot of the image properties dialog before closing the software to be able to recreate identically the image when opening the software again. + + + + The measurements file '%1' could not be found. - + Loading measurements file @@ -6772,12 +6784,12 @@ Do you want to save your changes? - + Print an original layout - + Preview tiled PDF @@ -6787,7 +6799,7 @@ Do you want to save your changes? - + Measurements unloaded @@ -6797,7 +6809,7 @@ Do you want to save your changes? - + New pattern @@ -6812,7 +6824,7 @@ Do you want to save your changes? - + Save... @@ -6822,7 +6834,7 @@ Do you want to save your changes? - + Locking file @@ -6854,29 +6866,29 @@ Do you want to save your changes? - + Operations Operations - + Close pattern - + Tool pointer - + Original zoom - + Height: Height: @@ -6886,12 +6898,12 @@ Do you want to save your changes? Size: - + The measurements file <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? - + Measurements were changed. Do you want to sync measurements now? @@ -6901,12 +6913,12 @@ Do you want to save your changes? - + Measurements have been synced - + The document has no write permissions. @@ -6926,12 +6938,12 @@ Do you want to save your changes? - + read only - + Load Individual @@ -6986,37 +6998,37 @@ Do you want to save your changes? - - + + Individual measurements - - + + Multisize measurements - + Pattern files - + Wiki - + Forum - + Name Name @@ -7031,17 +7043,17 @@ Do you want to save your changes? Formula - + You can't use Layout mode yet. - + Application doesn't support multisize table with inches. - + Couldn't set size. Need a file with multisize measurements. @@ -7051,7 +7063,7 @@ Do you want to save your changes? - + Preview @@ -7082,13 +7094,13 @@ Do you want to save your changes? - - + + Piece - + Utilities @@ -7124,8 +7136,8 @@ Do you want to save your changes? - - + + Group Manager @@ -7140,7 +7152,7 @@ Do you want to save your changes? - + Points Toolbar @@ -7190,36 +7202,36 @@ Do you want to save your changes? - - + + Line between 2 Points (Alt+L) - + Tools for performing operations on objects - + Rotate Selected Objects (R) - - + + Export Draft Blocks (E, D) - + Tools for adding pattern pieces. - + Add Details @@ -7230,17 +7242,17 @@ Do you want to save your changes? - + Unite 2 Pieces (U) - + View Toolbar - + Draft @@ -7303,7 +7315,7 @@ Do you want to save your changes? - + Mirror by Line @@ -7470,7 +7482,7 @@ Do you want to save your changes? - + Fit All @@ -7496,7 +7508,7 @@ Do you want to save your changes? - + Shortcuts @@ -7521,7 +7533,7 @@ Do you want to save your changes? - + Load multisize @@ -7847,7 +7859,7 @@ Do you want to save your changes? - + Calculator @@ -7868,7 +7880,7 @@ Do you want to save your changes? - + Export Draft Blocks @@ -7883,7 +7895,7 @@ Do you want to save your changes? Export - + Seam Allowance @@ -7913,12 +7925,12 @@ Do you want to save your changes? - + Measurement file doesn't include all the required measurements. - + <b>Tool::Operations - Create Group:</b> Select one or more objects - Hold <b>%1</b> for multiple selection, Press <b>ENTER</b> to finish group creation @@ -7948,13 +7960,13 @@ Do you want to save your changes? - + Draft Block: - + Rotate @@ -7984,7 +7996,13 @@ Do you want to save your changes? - + + + Import Image + + + + Piece mode @@ -7994,8 +8012,8 @@ Do you want to save your changes? - - + + Pattern Pieces @@ -8010,7 +8028,7 @@ Do you want to save your changes? - + Name: Name: @@ -8030,7 +8048,7 @@ Do you want to save your changes? - + You don't have any pieces to export. Please, include at least one piece in layout. @@ -8045,7 +8063,7 @@ Do you want to save your changes? - + <b>Tool::Piece - Add New Pattern Piece:</b> Select main path of objects clockwise. @@ -8065,146 +8083,146 @@ Do you want to save your changes? - + <b>Tool::Details - Union:</b> Select pattern piece - + Draft block %1 - + Draft Block %1 - - + + Point - On Bisector (O, B) - - + + Point - Length to Line (P, S) - - + + Point - Intersect Arc and Line (A, L) - - + + Point - Intersect Axis and Triangle (X, T) - - + + Point - Intersect XY (X, Y) - - + + Point - Intersect Line and Perpendicular (L, P) - - + + Point - Intersect Line and Axis (L, X) - - + + Point - On Perpendicular (O, P) - - + + Point - Length and Angle (L, A) - - + + Point - On Line (O, L) - - + + Point - Midpoint on Line (Shift+O, Shift+L) - - + + Point - Intersect Lines (I, L) - - + + Curve - Interactive (Alt+C) - - + + Spline - Interactive (Alt+S) - - + + Curve - Fixed (Alt+Shift+C) - - + + Spline - Fixed (Alt+Shift+S) - + Point - On Spline (O, S) - + Point - Intersect Curves (I, C) - - + + Point - Intersect Curve and Axis (C, X) - + Point - On Curve (O, C) - + Arc - Radius and Angles (Alt+A) - + Point - On Arc (O, A) @@ -8235,90 +8253,101 @@ Do you want to save your changes? - + Arc - Radius and Length (Alt+Shift+A) - - + + Arc - Elliptical (Alt+E) - - + + Mirror Objects by Line (M, L) - - + + Mirror Objects by Axis (M, A) - - + + Move Objects (Alt+M) - - + + True Darts (T, D) - - + + Add New Pattern Piece (N, P) - - + + Add Anchor Point (A, P) - - + + Insert Nodes (I, N) - - + + Add Internal Path (I, P) - - + + Tools for inserting or modifying images. + + + + + + Import Image (Alt + I) + + + + + Export Pieces (E, P) - + New Print Layout (N, L) - + Export Layout (E, L) - + Contains information about custom and internal variables - + Alt+M @@ -8632,12 +8661,12 @@ Do you want to save your changes? - + Activate last used tool (Ctrl+Shift+L) - + Zoom to Selected (Ctrl+Right) @@ -8662,7 +8691,27 @@ Do you want to save your changes? - + + Images tools + + + + + Delete + Delete + + + + Align + + + + + Lock + + + + Zoom to point (Ctrl + Alt + P) @@ -8672,12 +8721,17 @@ Do you want to save your changes? - + + Alt+I + + + + Please provide additional measurements: %1 - + <b>Tool::Point - Midpoint on Line</b>: Select first point @@ -8827,7 +8881,52 @@ Do you want to save your changes? - + + + Can't read image + + + + + + Could not read the image. + + + + + It may be corrupted... + + + + + It may be corrupted or empty... + + + + + Confirm deletion + + + + + Do you really want to delete? + + + + + + + + Images + + + + + Open Image File + + + + Zoom to Point @@ -8837,7 +8936,7 @@ Do you want to save your changes? Point: - + Intersect Arc and Line @@ -8847,8 +8946,8 @@ Do you want to save your changes? - - + + Add Objects to Group (G) @@ -8859,7 +8958,7 @@ Do you want to save your changes? - + Add Group Objects @@ -8869,7 +8968,7 @@ Do you want to save your changes? - + Can not save file. @@ -8886,36 +8985,36 @@ Do you want to save your changes? - + Ctrl+E - + untitled untitled - + Failed to lock. This file already opened in another window. Expect collisions when running 2 copies of the program. - + Pen Toolbar - + Toolbars - - + + - - + + File exception. @@ -8928,12 +9027,12 @@ Do you want to save your changes? - + pattern - + Base name used for new points. Press enter to temporarily add it to the list. @@ -11821,7 +11920,7 @@ Press enter to temporarily add it to the list. Edit - + Open Directory Open Directory @@ -11836,7 +11935,12 @@ Press enter to temporarily add it to the list. My Multisize Measurements - + + My Images + + + + My Patterns @@ -12140,12 +12244,12 @@ Press enter to temporarily add it to the list. QObject - + Create new pattern piece to start working. - + mm @@ -12182,12 +12286,12 @@ Press enter to temporarily add it to the list. - + Changes applied. - + Wrong tag name '%1'. @@ -12545,6 +12649,19 @@ Press enter to temporarily add it to the list. rename pattern piece + + ResizeHandlesItem + + + Press <b>CTRL</b> to scale around the center - <b> Aspect ratio locked </b> + + + + + Press <b>CTRL</b> to scale around the center, <b>SHIFT</b> to scale uniformly. + + + SavePieceOptions @@ -13334,12 +13451,12 @@ When unchecked the period is used. - + F2 - + Point Point @@ -13729,6 +13846,21 @@ When unchecked the period is used. E, D + + + Images + + + + + Import Image + + + + + Alt + I + + Pattern Piece @@ -13946,8 +14078,8 @@ When unchecked the period is used. - - + + Keyboard Shortcuts @@ -13957,7 +14089,7 @@ When unchecked the period is used. - + Shift+P @@ -13967,7 +14099,7 @@ When unchecked the period is used. - + Export PDF @@ -14926,7 +15058,7 @@ load in SeamlyME as usual. Tool - + First point First point @@ -15156,7 +15288,7 @@ load in SeamlyME as usual. - + Error creating or updating group @@ -15783,7 +15915,7 @@ load in SeamlyME as usual. VCommonSettings - + measurements @@ -15805,11 +15937,16 @@ load in SeamlyME as usual. + images + + + + label templates - + bodyscans @@ -16650,7 +16787,7 @@ load in SeamlyME as usual. VToolLine - + Length Length @@ -17473,7 +17610,7 @@ load in SeamlyME as usual. Line_ - + Center point Center point diff --git a/share/translations/seamly2d_es_ES.ts b/share/translations/seamly2d_es_ES.ts index 3aa482fe78d1..cad78fd02e2b 100644 --- a/share/translations/seamly2d_es_ES.ts +++ b/share/translations/seamly2d_es_ES.ts @@ -5114,7 +5114,7 @@ p, li { white-space: pre-wrap; } FvUpdater - + Feed download failed: %1. Falló la descarga de entrega: %1. @@ -5282,7 +5282,7 @@ Do you want to download it? Objeto desconocido - + %1 - Base point %1 - Punto base @@ -5485,7 +5485,7 @@ Do you want to download it? Eliminar Objeto de Grupo - + Group color @@ -5562,7 +5562,7 @@ Do you want to download it? - + Name Nombre @@ -6397,40 +6397,40 @@ Apply settings anyway? Seamly2D - + Tools for creating points. Herramientas para la creación de puntos. - - + + - + Point Punto - + Tools for creating lines. Herramientas para crear líneas. - - + + - - + + Line Línea - + Tools for creating curves. Herramientas para crear curvas. - - + + Curve Curva @@ -6441,14 +6441,14 @@ Apply settings anyway? Herramientas para crear arcos. - - + + Arc Arco - + &File &Archivo @@ -6459,12 +6459,12 @@ Apply settings anyway? - + Measurements Medidas - + New Nuevo @@ -6495,7 +6495,7 @@ Apply settings anyway? - + Save Guardar @@ -6510,7 +6510,7 @@ Apply settings anyway? Guardar patrón - + Save &As... Guardar &Como... @@ -6520,19 +6520,19 @@ Apply settings anyway? El patrón aún no se ha guardao - - + + Details Detalles - + Pointer tools Herramientas de puntero - - + + History Historia @@ -6552,27 +6552,27 @@ Apply settings anyway? &Salida - + Preferences Preferencias - + Report bug Informar de un error - + Show online help Mostrar ayuda en línea - + About Qt Sobre Qt - + Save as Guardar como @@ -6582,17 +6582,17 @@ Apply settings anyway? El archivo no se ha guardado - + - - + + Open file Abrir archivo - + Error parsing file. Error al analizar el archivo. @@ -6624,46 +6624,46 @@ Apply settings anyway? Identificación incorrecta. - + File saved Archivo guardado - + untitled.sm2d Sin título.sm2d - + The pattern has been modified. Do you want to save your changes? El patrón ha sido modificado. ¿Quiere guardar los cambios? - - + + &Undo &Deshacer - - + + &Redo &Rehacer - + This file already opened in another window. Este archivo ha sido abierto en otra ventana. - + Wrong units. Unidades no son válidas. - + File loaded Archivo cargado @@ -6678,26 +6678,26 @@ Do you want to save your changes? Volver a abrir archivos. - - + + - + Layout Maquetación - + Settings Ajustes - - + + Print Imprimir - + Print tiled PDF Imprimir PDF dividido en cuadrículas @@ -6707,7 +6707,7 @@ Do you want to save your changes? Imprime el maquetación dividido en hojas pequeñas (para impresoras normales) - + Print preview Previsualizar la impresión @@ -6717,70 +6717,82 @@ Do you want to save your changes? Vista previa de impresión del maquetación original - + Export As... Exportar como... - + - + Layout mode Modo maquetación - + Unsaved changes Cambios sin guardar - + Measurements loaded Medidas cargadas - + You can't export empty scene. No puede exportar una escena vacía. - - + + Measurement file contains invalid known measurement(s). El archivo de medidas contiene medidas requeridas no válidas. - - + + Measurement file has unknown format. El archivo de medidas tiene un formato desconocido. - + Measurement files types have not match. Los tipos de archivo de medidas no coinciden. - + Couldn't sync measurements. No se pudo sincronizar las medidas. - + Couldn't update measurements. No se pudieron actualizar las medidas. - + + Images will not be saved + + + + + Please note that the images can not be saved and that they are not affected by the undo and redo functions in the current version of the software. + +You may want to take a screenshot of the image properties dialog before closing the software to be able to recreate identically the image when opening the software again. + + + + The measurements file '%1' could not be found. No se ha podido encontrar el archivo de medidas '%1'. - + Loading measurements file Cargando archivo de medidas @@ -6816,12 +6828,12 @@ Do you want to save your changes? Por favor, proporcione un fichero de entrada. - + Print an original layout Imprimir un maquetación original - + Preview tiled PDF Vista previa de PDF dividido en cuadrículas @@ -6831,7 +6843,7 @@ Do you want to save your changes? Vista previa de impresión del maquetación dividido en cuadrículas - + Measurements unloaded Medidas descargadas @@ -6841,7 +6853,7 @@ Do you want to save your changes? No se pudieron descargar las medidas. Algunas de ellas están utilizadas en el patrón. - + New pattern Nuevo patrón @@ -6856,7 +6868,7 @@ Do you want to save your changes? Crear/Editar medidas - + Save... Guardar... @@ -6866,7 +6878,7 @@ Do you want to save your changes? No guardar - + Locking file @@ -6898,29 +6910,29 @@ Do you want to save your changes? Se produjo un error desconocido, por ejemplo una parte llena impedía escribir el archivo de bloqueo. - + Operations Operaciones - + Close pattern Cerrar patrón - + Tool pointer Herramienta de Puntero - + Original zoom Zoom original - + Height: Altura: @@ -6930,12 +6942,12 @@ Do you want to save your changes? Talla: - + The measurements file <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? El archivo de medidas <br/><br/> <b>%1</b> <br/><br/> podría no ser encontrado. ¿Quiere actualizar la ubicación del archivo? - + Measurements were changed. Do you want to sync measurements now? Las medidas estaban cambiadas. ¿Quiere sincronizar las medidas ahora? @@ -6945,12 +6957,12 @@ Do you want to save your changes? El escalonado no spoorta pulgadas - + Measurements have been synced Las medidas han sido sincronizadas - + The document has no write permissions. El documento no tiene permisos de escritura. @@ -6970,12 +6982,12 @@ Do you want to save your changes? No se puede guardar archivo - + read only sólo lectura - + Load Individual Cargar medidas individuales @@ -7030,37 +7042,37 @@ Do you want to save your changes? Descargar medidas si éstas no se utilizaron en un archivo de patrón - - + + Individual measurements Medidas individuales - - + + Multisize measurements Medidas Multitalla - + Pattern files Archivos de patrones - + Wiki Wikipedia - + Forum Foro - + Name Nombre @@ -7075,17 +7087,17 @@ Do you want to save your changes? Fórmula - + You can't use Layout mode yet. Aún no puede usar el modo Maquetación. - + Application doesn't support multisize table with inches. La aplicación no admite tablas de varios tallas en pulgadas. - + Couldn't set size. Need a file with multisize measurements. No se pudo establecer la talla. Necesita un archivo con las medidas multitalla. @@ -7095,7 +7107,7 @@ Do you want to save your changes? No se pudo establecer la altura. Necesita un archivo con las medidas multitalla. - + Preview Previsualización @@ -7126,13 +7138,13 @@ Do you want to save your changes? - - + + Piece Pieza - + Utilities Utilidades @@ -7168,8 +7180,8 @@ Do you want to save your changes? - - + + Group Manager Administrador de Grupos @@ -7184,7 +7196,7 @@ Do you want to save your changes? Barra de Caja de Herramientas - + Points Toolbar Barra de Herramientas de Puntos @@ -7234,36 +7246,36 @@ Do you want to save your changes? Caja de Herramientas - - + + Line between 2 Points (Alt+L) Línea entre 2 puntos (Alt+L) - + Tools for performing operations on objects Herramientas para realizar operaciones de objetos - + Rotate Selected Objects (R) Girar Objetos Seleccionados (R) - - + + Export Draft Blocks (E, D) Exportar Bloques de Borrador (E, D) - + Tools for adding pattern pieces. Herramientas para agregar piezas de patrón. - + Add Details Añadir Detalles @@ -7274,17 +7286,17 @@ Do you want to save your changes? - + Unite 2 Pieces (U) Unir 2 Piezas (U) - + View Toolbar Vista de Barra de Herramientas - + Draft Borrador @@ -7347,7 +7359,7 @@ Do you want to save your changes? - + Mirror by Line Reflejar por Línea @@ -7509,7 +7521,7 @@ Do you want to save your changes? Fuera - + Fit All Ajustar todo @@ -7530,7 +7542,7 @@ Do you want to save your changes? Cerrar - + Shortcuts Atajos @@ -7555,7 +7567,7 @@ Do you want to save your changes? Alternar puntos de control y dirección de curva (V, C) - + Load multisize Cargar multitalla @@ -7881,7 +7893,7 @@ Do you want to save your changes? - + Calculator Calculadora @@ -7902,7 +7914,7 @@ Do you want to save your changes? - + Export Draft Blocks Exportar bloques de borrador @@ -7917,7 +7929,7 @@ Do you want to save your changes? Exportar - + Seam Allowance Márgenes de costura @@ -7947,12 +7959,12 @@ Do you want to save your changes? Ctrl+I - + Measurement file doesn't include all the required measurements. El archivo de medidas no incluye todas las medidas requeridas. - + <b>Tool::Operations - Create Group:</b> Select one or more objects - Hold <b>%1</b> for multiple selection, Press <b>ENTER</b> to finish group creation <b>Herramienta::Operaciones - Crear Grupo:</b> Seleccione uno o más objetos - Para seleccionar varios objetos Mantenga presionado <b>%1</b>Para finalizar la creación del grupo presione<b>ENTER</b> @@ -7982,13 +7994,13 @@ Do you want to save your changes? <b>Herramienta::Operaciones - Pinzas Correctas:</b> Seleccione el primer punto de la línea básica - + Draft Block: Bolque de borrador: - + Rotate Rotar @@ -8018,7 +8030,13 @@ Do you want to save your changes? Exportar Piezas de Patrón - + + + Import Image + + + + Piece mode Modo pieza @@ -8028,8 +8046,8 @@ Do you want to save your changes? Aún no puede usar el modo Pieza. Por favor, cree al menos una pieza del patrón. - - + + Pattern Pieces Piezas de Patrón @@ -8044,7 +8062,7 @@ Do you want to save your changes? Aún no puede usar el modo Maquetación. Por favor, incluya al menos una pieza del patrón al maquetación. - + Name: Nombre: @@ -8064,7 +8082,7 @@ Do you want to save your changes? La acción no se puede completar porque el nombre del Bloque de Borrador ya existe. - + You don't have any pieces to export. Please, include at least one piece in layout. No tiene piezas para exportar. Por favor, incluya al menos una pieza en el maquetación. @@ -8079,7 +8097,7 @@ Do you want to save your changes? No se pueden exportar piezas. - + <b>Tool::Piece - Add New Pattern Piece:</b> Select main path of objects clockwise. <b>Herramienta::Pieza - Añadir Nueva Pieza de Patrón:</b> Seleccione la ruta principal de los objetos en el sentido de las agujas del reloj. @@ -8099,146 +8117,146 @@ Do you want to save your changes? <b>Herramienta::Pieza - Insertar Nodos:</b>Seleccione uno o más objetos: mantenga presionado <b>%1</b> para selecciónar varios objetos. Presione <b>ENTER</b> para confirmar la selección - + <b>Tool::Details - Union:</b> Select pattern piece <b>Herramienta::Detalles - Unión:</b> Seleccione pieza del patrón - + Draft block %1 Bloque de maquetación %1 - + Draft Block %1 Bloque de Maquetación %1 - - + + Point - On Bisector (O, B) Punto - En la bisectriz (O, B) - - + + Point - Length to Line (P, S) Punto - Longitud a Línea (P, S) - - + + Point - Intersect Arc and Line (A, L) Punto - Intersección Arco y Línea (A, L) - - + + Point - Intersect Axis and Triangle (X, T) Punto - Intersección Eje y Triángulo (X, T) - - + + Point - Intersect XY (X, Y) Punto - Intersección XY (X, Y) - - + + Point - Intersect Line and Perpendicular (L, P) Punto - Línea Intersección y Perpendicular (L, P) - - + + Point - Intersect Line and Axis (L, X) Punto - Intersección Línea y Eje (L, X) - - + + Point - On Perpendicular (O, P) Punto - En el perpendicular (O, P) - - + + Point - Length and Angle (L, A) Punto - Longitud y Ángulo (L, A) - - + + Point - On Line (O, L) Punto - En Línea (O, L) - - + + Point - Midpoint on Line (Shift+O, Shift+L) Punto - Punto Medio de Línea (Mayúsculas+O, Mayúsculas+L) - - + + Point - Intersect Lines (I, L) Punto - Intersección de Líneas (I, L) - - + + Curve - Interactive (Alt+C) Curva - Interactiva (Alt+C) - - + + Spline - Interactive (Alt+S) Spline - Interactivo (Alt+S) - - + + Curve - Fixed (Alt+Shift+C) Curva - Fija (Alt+Mayúsculas+C) - - + + Spline - Fixed (Alt+Shift+S) Spline - Fijo (Alt+Mayúsculas+S) - + Point - On Spline (O, S) Punto - En Spline (O, S) - + Point - Intersect Curves (I, C) Punto - Intersección de Curvas (I, C) - - + + Point - Intersect Curve and Axis (C, X) Punto - Intersección Curva y Eje (C, X) - + Point - On Curve (O, C) Punto - En curva (O, C) - + Arc - Radius and Angles (Alt+A) Arco - Radio y Ángulos (Alt+A) - + Point - On Arc (O, A) Punto - En Arco (O, A) @@ -8269,90 +8287,101 @@ Do you want to save your changes? - + Arc - Radius and Length (Alt+Shift+A) Arco - Radio y Longitud (Alt+Mayúsculas+A) - - + + Arc - Elliptical (Alt+E) Arco - Elíptico (Alt+E) - - + + Mirror Objects by Line (M, L) Reflejar Objetos por Línea (M, L) - - + + Mirror Objects by Axis (M, A) Reflejar Objetos por Eje (M, A) - - + + Move Objects (Alt+M) Mover Objetos (Alt+M) - - + + True Darts (T, D) Pinzas Correctos (T, D) - - + + Add New Pattern Piece (N, P) Aañadir Nueva Pieza de Patrón (N, P) - - + + Add Anchor Point (A, P) Añadir Punto de Anclaje (A, P) - - + + Insert Nodes (I, N) Insertar Nodos (I, N) - - + + Add Internal Path (I, P) Añadirr Ruta Interna (I, P) - - + + Tools for inserting or modifying images. + + + + + + Import Image (Alt + I) + + + + + Export Pieces (E, P) Exportar Piezas (E, P) - + New Print Layout (N, L) Nuevo maquetación de Impresión (N, L) - + Export Layout (E, L) Exportar Maquetación (E, L) - + Contains information about custom and internal variables - + Alt+M Alt+M @@ -8666,12 +8695,12 @@ Do you want to save your changes? Alt+Mayúsculas+A - + Activate last used tool (Ctrl+Shift+L) Activar la última herramienta utilizada (Control+Mayúsculas+L) - + Zoom to Selected (Ctrl+Right) Zoom a seleccionado (Control+Derecha) @@ -8696,7 +8725,27 @@ Do you want to save your changes? - + + Images tools + + + + + Delete + Eliminar + + + + Align + + + + + Lock + + + + Zoom to point (Ctrl + Alt + P) Zoom al punto (Control + Alt + P) @@ -8706,12 +8755,17 @@ Do you want to save your changes? Ctrl+Alt+P - + + Alt+I + + + + Please provide additional measurements: %1 Por favor, proporcione medidas adicionales: %1 - + <b>Tool::Point - Midpoint on Line</b>: Select first point <b>Herramienta::Punto - Punto Medio en Línea</b>: Seleccione el primer punto @@ -8861,7 +8915,52 @@ Do you want to save your changes? <b>Herramienta::Arco - Elíptico:</b> Seleccione el punto del centro del arco elíptico - + + + Can't read image + + + + + + Could not read the image. + + + + + It may be corrupted... + + + + + It may be corrupted or empty... + + + + + Confirm deletion + Confirmar la eliminación + + + + Do you really want to delete? + ¿Realmente quiere eliminarlo? + + + + + + + Images + Imágenes + + + + Open Image File + + + + Zoom to Point Zoom al punto @@ -8871,7 +8970,7 @@ Do you want to save your changes? Punto: - + Intersect Arc and Line Intersección de Arco y Línea @@ -8881,8 +8980,8 @@ Do you want to save your changes? Intersección Curva y Eje - - + + Add Objects to Group (G) Aañadir Objetos al Grupo (G) @@ -8893,7 +8992,7 @@ Do you want to save your changes? Aañadir Objetos al Grupo - + Add Group Objects Añadir Objetos de Grupo @@ -8903,7 +9002,7 @@ Do you want to save your changes? El grupo está bloqueado. Desbloquear para añadir objetos - + Can not save file. No se puede guardar el archivo. @@ -8920,46 +9019,46 @@ Do you want to save your changes? No se pudo bloquear. El archivo con este nombre está abierto en otra ventana. - + Ctrl+E Ctrl+E - + untitled No tiene título - + Failed to lock. This file already opened in another window. Expect collisions when running 2 copies of the program. Bloqueo fallido. Este archivo ya esta abierto en otra ventana.Pueden prodicirse errores al ejecutar 2 copias del programa. - + Pen Toolbar Barra de Herramientas del lápiz - + Zoom Out (Ctrl+-) Alejar (Control+-) - + Zoom to Fit All(Ctrl+=) Zoom para ajustar todo (Control+=) - + Toolbars Barras de Herramientas - - + + - - + + File exception. Excepción de archivo. @@ -8972,12 +9071,12 @@ Do you want to save your changes? Excepción de exportación. - + pattern patrón - + Base name used for new points. Press enter to temporarily add it to the list. @@ -11883,7 +11982,7 @@ actualización: Editar - + Open Directory Abrir Directorio @@ -11898,7 +11997,12 @@ actualización: Mis Medidas Multitalla - + + My Images + + + + My Patterns Mis Patrones @@ -12202,12 +12306,12 @@ actualización: QObject - + Create new pattern piece to start working. Crear nueva pieza de patrón para comenzar a trabajar. - + mm mm @@ -12245,12 +12349,12 @@ actualización: añadir nodo - + Changes applied. Cambios aplicados. - + Wrong tag name '%1'. Nombre de etiqueta incorrecto '%1'. @@ -12608,6 +12712,19 @@ actualización: Cambiar nombre de pieza del patrón + + ResizeHandlesItem + + + Press <b>CTRL</b> to scale around the center - <b> Aspect ratio locked </b> + + + + + Press <b>CTRL</b> to scale around the center, <b>SHIFT</b> to scale uniformly. + + + SavePieceOptions @@ -13397,12 +13514,12 @@ You can change this setting in the Seamly2D preferences. - + F2 F2 - + Point Punto @@ -13792,6 +13909,21 @@ You can change this setting in the Seamly2D preferences. E, D E, D + + + Images + Imágenes + + + + Import Image + + + + + Alt + I + + Pattern Piece @@ -14009,8 +14141,8 @@ You can change this setting in the Seamly2D preferences. Ayuda - - + + Keyboard Shortcuts Atajos de Teclado @@ -14020,7 +14152,7 @@ You can change this setting in the Seamly2D preferences. K - + Shift+P Mayúsculas+P @@ -14030,7 +14162,7 @@ You can change this setting in the Seamly2D preferences. T - + Export PDF Exportar PDF @@ -14996,7 +15128,7 @@ load in SeamlyME as usual. Tool - + First point Primer punto @@ -15226,7 +15358,7 @@ load in SeamlyME as usual. No se encuentra herramienta en la tabla. - + Error creating or updating group Error al crear o actualizar el grupo @@ -15853,7 +15985,7 @@ load in SeamlyME as usual. VCommonSettings - + measurements medidas @@ -15875,11 +16007,16 @@ load in SeamlyME as usual. + images + + + + label templates Plantillas de la etiqueta - + bodyscans escaneos corporales @@ -16720,7 +16857,7 @@ load in SeamlyME as usual. VToolLine - + Length Longitud @@ -17543,7 +17680,7 @@ load in SeamlyME as usual. Línea_ - + Center point Punto central diff --git a/share/translations/seamly2d_fi_FI.ts b/share/translations/seamly2d_fi_FI.ts index 17e609ca08ea..7e637e960868 100644 --- a/share/translations/seamly2d_fi_FI.ts +++ b/share/translations/seamly2d_fi_FI.ts @@ -5073,7 +5073,7 @@ p, li { white-space: pre-wrap; } FvUpdater - + Feed download failed: %1. @@ -5238,7 +5238,7 @@ Do you want to download it? - + %1 - Base point %1 - Alkupiste @@ -5441,7 +5441,7 @@ Do you want to download it? - + Group color @@ -5518,7 +5518,7 @@ Do you want to download it? - + Name Nimi @@ -6350,40 +6350,40 @@ Apply settings anyway? Seamly2D - + Tools for creating points. Työkaluja pisteiden luomiseen. - - + + - + Point Piste - + Tools for creating lines. Työkaluja viivojen luomiseen. - - + + - - + + Line Viiva - + Tools for creating curves. Työkaluja käyrien luomiseen. - - + + Curve Käyrä @@ -6394,14 +6394,14 @@ Apply settings anyway? Työkaluja kaarien luomiseen. - - + + Arc Kaari - + &File &Tiedosto @@ -6412,12 +6412,12 @@ Apply settings anyway? - + Measurements Mitat - + New Uusi @@ -6448,7 +6448,7 @@ Apply settings anyway? - + Save Talenna @@ -6463,7 +6463,7 @@ Apply settings anyway? Tallenna kaava - + Save &As... Tallenna &nimellä... @@ -6473,19 +6473,19 @@ Apply settings anyway? Tallenna tallentamaton kaava - - + + Details Yksityiskohdat - + Pointer tools Osointin työkalut - - + + History Historia @@ -6505,27 +6505,27 @@ Apply settings anyway? L&opeta - + Preferences Asetukset - + Report bug Ilmoita ohjelmistovirheestä - + Show online help Näytä online apu - + About Qt Tietoja Qt:stä - + Save as Talenna nimellä @@ -6535,17 +6535,17 @@ Apply settings anyway? Tiedostoa ei voitu tallentaa - + - - + + Open file Avaa tiedosto - + Error parsing file. Virhe tiedoston jäsennyksessä. @@ -6577,46 +6577,46 @@ Apply settings anyway? Väärä id. - + File saved Tiedosto tallennettu - + untitled.sm2d nimetön.sm2d - + The pattern has been modified. Do you want to save your changes? Kaavaa on muutettu Haluatko tallentaa muutokset? - - + + &Undo &Peru - - + + &Redo &Tee uudelleen - + This file already opened in another window. Tämä tiedosto on jo avattu toiseen ikkunaan. - + Wrong units. Väärät yksiköt. - + File loaded Tiedosto ladattu @@ -6631,26 +6631,26 @@ Haluatko tallentaa muutokset? Avaa uudelleen tiedosto. - - + + - + Layout Sommittelu - + Settings - - + + Print - + Print tiled PDF @@ -6660,7 +6660,7 @@ Haluatko tallentaa muutokset? - + Print preview @@ -6670,70 +6670,82 @@ Haluatko tallentaa muutokset? - + Export As... - + - + Layout mode - + Unsaved changes - + Measurements loaded - + You can't export empty scene. - - + + Measurement file contains invalid known measurement(s). - - + + Measurement file has unknown format. - + Measurement files types have not match. - + Couldn't sync measurements. - + Couldn't update measurements. - + + Images will not be saved + + + + + Please note that the images can not be saved and that they are not affected by the undo and redo functions in the current version of the software. + +You may want to take a screenshot of the image properties dialog before closing the software to be able to recreate identically the image when opening the software again. + + + + The measurements file '%1' could not be found. - + Loading measurements file @@ -6769,12 +6781,12 @@ Haluatko tallentaa muutokset? - + Print an original layout - + Preview tiled PDF @@ -6784,7 +6796,7 @@ Haluatko tallentaa muutokset? - + Measurements unloaded @@ -6794,7 +6806,7 @@ Haluatko tallentaa muutokset? - + New pattern @@ -6809,7 +6821,7 @@ Haluatko tallentaa muutokset? - + Save... @@ -6819,7 +6831,7 @@ Haluatko tallentaa muutokset? - + Locking file @@ -6851,29 +6863,29 @@ Haluatko tallentaa muutokset? - + Operations - + Close pattern - + Tool pointer - + Original zoom - + Height: Korkeus: @@ -6883,12 +6895,12 @@ Haluatko tallentaa muutokset? - + The measurements file <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? - + Measurements were changed. Do you want to sync measurements now? @@ -6898,12 +6910,12 @@ Haluatko tallentaa muutokset? - + Measurements have been synced - + The document has no write permissions. @@ -6923,12 +6935,12 @@ Haluatko tallentaa muutokset? - + read only - + Load Individual @@ -6983,37 +6995,37 @@ Haluatko tallentaa muutokset? - - + + Individual measurements Yksilölliset mitat - - + + Multisize measurements - + Pattern files Kaava tiedostot - + Wiki - + Forum - + Name Nimi @@ -7028,17 +7040,17 @@ Haluatko tallentaa muutokset? Matemaattinen kaava - + You can't use Layout mode yet. - + Application doesn't support multisize table with inches. - + Couldn't set size. Need a file with multisize measurements. @@ -7048,7 +7060,7 @@ Haluatko tallentaa muutokset? - + Preview @@ -7079,13 +7091,13 @@ Haluatko tallentaa muutokset? - - + + Piece - + Utilities @@ -7121,8 +7133,8 @@ Haluatko tallentaa muutokset? - - + + Group Manager @@ -7137,7 +7149,7 @@ Haluatko tallentaa muutokset? - + Points Toolbar @@ -7187,36 +7199,36 @@ Haluatko tallentaa muutokset? - - + + Line between 2 Points (Alt+L) - + Tools for performing operations on objects - + Rotate Selected Objects (R) - - + + Export Draft Blocks (E, D) - + Tools for adding pattern pieces. - + Add Details @@ -7227,17 +7239,17 @@ Haluatko tallentaa muutokset? - + Unite 2 Pieces (U) - + View Toolbar - + Draft @@ -7300,7 +7312,7 @@ Haluatko tallentaa muutokset? - + Mirror by Line @@ -7467,7 +7479,7 @@ Haluatko tallentaa muutokset? - + Fit All @@ -7493,7 +7505,7 @@ Haluatko tallentaa muutokset? - + Shortcuts @@ -7518,7 +7530,7 @@ Haluatko tallentaa muutokset? - + Load multisize @@ -7844,7 +7856,7 @@ Haluatko tallentaa muutokset? - + Calculator @@ -7865,7 +7877,7 @@ Haluatko tallentaa muutokset? - + Export Draft Blocks @@ -7880,7 +7892,7 @@ Haluatko tallentaa muutokset? - + Seam Allowance @@ -7910,12 +7922,12 @@ Haluatko tallentaa muutokset? - + Measurement file doesn't include all the required measurements. - + <b>Tool::Operations - Create Group:</b> Select one or more objects - Hold <b>%1</b> for multiple selection, Press <b>ENTER</b> to finish group creation @@ -7945,13 +7957,13 @@ Haluatko tallentaa muutokset? - + Draft Block: - + Rotate @@ -7981,7 +7993,13 @@ Haluatko tallentaa muutokset? - + + + Import Image + + + + Piece mode @@ -7991,8 +8009,8 @@ Haluatko tallentaa muutokset? - - + + Pattern Pieces @@ -8007,7 +8025,7 @@ Haluatko tallentaa muutokset? - + Name: Nmi: @@ -8027,7 +8045,7 @@ Haluatko tallentaa muutokset? - + You don't have any pieces to export. Please, include at least one piece in layout. @@ -8042,7 +8060,7 @@ Haluatko tallentaa muutokset? - + <b>Tool::Piece - Add New Pattern Piece:</b> Select main path of objects clockwise. @@ -8062,146 +8080,146 @@ Haluatko tallentaa muutokset? - + <b>Tool::Details - Union:</b> Select pattern piece - + Draft block %1 - + Draft Block %1 - - + + Point - On Bisector (O, B) - - + + Point - Length to Line (P, S) - - + + Point - Intersect Arc and Line (A, L) - - + + Point - Intersect Axis and Triangle (X, T) - - + + Point - Intersect XY (X, Y) - - + + Point - Intersect Line and Perpendicular (L, P) - - + + Point - Intersect Line and Axis (L, X) - - + + Point - On Perpendicular (O, P) - - + + Point - Length and Angle (L, A) - - + + Point - On Line (O, L) - - + + Point - Midpoint on Line (Shift+O, Shift+L) - - + + Point - Intersect Lines (I, L) - - + + Curve - Interactive (Alt+C) - - + + Spline - Interactive (Alt+S) - - + + Curve - Fixed (Alt+Shift+C) - - + + Spline - Fixed (Alt+Shift+S) - + Point - On Spline (O, S) - + Point - Intersect Curves (I, C) - - + + Point - Intersect Curve and Axis (C, X) - + Point - On Curve (O, C) - + Arc - Radius and Angles (Alt+A) - + Point - On Arc (O, A) @@ -8232,90 +8250,101 @@ Haluatko tallentaa muutokset? - + Arc - Radius and Length (Alt+Shift+A) - - + + Arc - Elliptical (Alt+E) - - + + Mirror Objects by Line (M, L) - - + + Mirror Objects by Axis (M, A) - - + + Move Objects (Alt+M) - - + + True Darts (T, D) - - + + Add New Pattern Piece (N, P) - - + + Add Anchor Point (A, P) - - + + Insert Nodes (I, N) - - + + Add Internal Path (I, P) - - + + Tools for inserting or modifying images. + + + + + + Import Image (Alt + I) + + + + + Export Pieces (E, P) - + New Print Layout (N, L) - + Export Layout (E, L) - + Contains information about custom and internal variables - + Alt+M @@ -8629,12 +8658,12 @@ Haluatko tallentaa muutokset? - + Activate last used tool (Ctrl+Shift+L) - + Zoom to Selected (Ctrl+Right) @@ -8659,7 +8688,27 @@ Haluatko tallentaa muutokset? - + + Images tools + + + + + Delete + Poista + + + + Align + + + + + Lock + + + + Zoom to point (Ctrl + Alt + P) @@ -8669,12 +8718,17 @@ Haluatko tallentaa muutokset? - + + Alt+I + + + + Please provide additional measurements: %1 - + <b>Tool::Point - Midpoint on Line</b>: Select first point @@ -8824,7 +8878,52 @@ Haluatko tallentaa muutokset? - + + + Can't read image + + + + + + Could not read the image. + + + + + It may be corrupted... + + + + + It may be corrupted or empty... + + + + + Confirm deletion + Varmista poistaminen + + + + Do you really want to delete? + Haluatko todella poistaa? + + + + + + + Images + + + + + Open Image File + + + + Zoom to Point @@ -8834,7 +8933,7 @@ Haluatko tallentaa muutokset? - + Intersect Arc and Line @@ -8844,8 +8943,8 @@ Haluatko tallentaa muutokset? - - + + Add Objects to Group (G) @@ -8856,7 +8955,7 @@ Haluatko tallentaa muutokset? - + Add Group Objects @@ -8866,7 +8965,7 @@ Haluatko tallentaa muutokset? - + Can not save file. @@ -8883,36 +8982,36 @@ Haluatko tallentaa muutokset? - + Ctrl+E - + untitled nimetön - + Failed to lock. This file already opened in another window. Expect collisions when running 2 copies of the program. - + Pen Toolbar - + Toolbars - - + + - - + + File exception. @@ -8925,12 +9024,12 @@ Haluatko tallentaa muutokset? - + pattern kaava - + Base name used for new points. Press enter to temporarily add it to the list. @@ -11818,7 +11917,7 @@ Press enter to temporarily add it to the list. Muokkaa - + Open Directory Avaa kansio @@ -11833,7 +11932,12 @@ Press enter to temporarily add it to the list. - + + My Images + + + + My Patterns @@ -12137,12 +12241,12 @@ Press enter to temporarily add it to the list. QObject - + Create new pattern piece to start working. Aloita luomalla uusi kaava. - + mm m @@ -12179,12 +12283,12 @@ Press enter to temporarily add it to the list. - + Changes applied. - + Wrong tag name '%1'. @@ -12542,6 +12646,19 @@ Press enter to temporarily add it to the list. + + ResizeHandlesItem + + + Press <b>CTRL</b> to scale around the center - <b> Aspect ratio locked </b> + + + + + Press <b>CTRL</b> to scale around the center, <b>SHIFT</b> to scale uniformly. + + + SavePieceOptions @@ -13331,12 +13448,12 @@ When unchecked the period is used. - + F2 - + Point Piste @@ -13726,6 +13843,21 @@ When unchecked the period is used. E, D + + + Images + + + + + Import Image + + + + + Alt + I + + Pattern Piece @@ -13943,8 +14075,8 @@ When unchecked the period is used. - - + + Keyboard Shortcuts @@ -13954,7 +14086,7 @@ When unchecked the period is used. - + Shift+P @@ -13964,7 +14096,7 @@ When unchecked the period is used. - + Export PDF @@ -14922,7 +15054,7 @@ load in SeamlyME as usual. Tool - + First point Ensimmäinen piste @@ -15152,7 +15284,7 @@ load in SeamlyME as usual. Työkalua ei löydy taulukosta. - + Error creating or updating group @@ -15779,7 +15911,7 @@ load in SeamlyME as usual. VCommonSettings - + measurements @@ -15801,11 +15933,16 @@ load in SeamlyME as usual. + images + + + + label templates - + bodyscans @@ -16646,7 +16783,7 @@ load in SeamlyME as usual. VToolLine - + Length Pituus @@ -17469,7 +17606,7 @@ load in SeamlyME as usual. Viiva_ - + Center point Keskipiste diff --git a/share/translations/seamly2d_fr_FR.ts b/share/translations/seamly2d_fr_FR.ts index be5c6ff2e685..5ff503ec813a 100644 --- a/share/translations/seamly2d_fr_FR.ts +++ b/share/translations/seamly2d_fr_FR.ts @@ -5073,7 +5073,7 @@ p, li { white-space: pre-wrap; } FvUpdater - + Feed download failed: %1. Flux de téléchargement interrompu: %1. @@ -5238,7 +5238,7 @@ Possibly the file is already being downloaded. - + %1 - Base point %1 - Point de départ @@ -5441,7 +5441,7 @@ Possibly the file is already being downloaded. - + Group color @@ -5518,7 +5518,7 @@ Possibly the file is already being downloaded. - + Name Nom @@ -6353,40 +6353,40 @@ Apply settings anyway? Seamly2D - + Tools for creating points. Outils pour créer des points. - - + + - + Point Point - + Tools for creating lines. Outil pour créer des lignes. - - + + - - + + Line Ligne - + Tools for creating curves. Outil pour créer des courbes. - - + + Curve Courbe @@ -6397,14 +6397,14 @@ Apply settings anyway? Outils pour créer des arcs. - - + + Arc Arc - + &File &Fichier @@ -6415,12 +6415,12 @@ Apply settings anyway? - + Measurements Mesures - + New Nouveau @@ -6451,7 +6451,7 @@ Apply settings anyway? - + Save Enregistrer @@ -6466,7 +6466,7 @@ Apply settings anyway? Enregistrer le patron - + Save &As... Enregistrer &sous... @@ -6476,19 +6476,19 @@ Apply settings anyway? Enregistrer le patron en cours - - + + Details Isolation - + Pointer tools Outil pointeur - - + + History Historique @@ -6508,27 +6508,27 @@ Apply settings anyway? &Quitter - + Preferences Préférences - + Report bug rapport de plantage - + Show online help Afficher l'aide en ligne - + About Qt À propos de Qt - + Save as Enregistrer sous @@ -6538,17 +6538,17 @@ Apply settings anyway? le fichier n'a pas pu etre enregistré - + - - + + Open file Ouvrir fichier - + Error parsing file. Erreur d'interprétation de fichier. @@ -6580,46 +6580,46 @@ Apply settings anyway? Mauvais id. - + File saved Fichier sauvegardé - + untitled.sm2d sanstitre.sm2d - + The pattern has been modified. Do you want to save your changes? Le patron a été changé. Voulez-vous sauvegarder les changements? - - + + &Undo &Annuler - - + + &Redo &Rétablir - + This file already opened in another window. Ce fichier est déjà ouvert dans une autre fenêtre. - + Wrong units. Mauvaises unités de mesure. - + File loaded Fichier chargé @@ -6634,26 +6634,26 @@ Voulez-vous sauvegarder les changements? Re-ouvrir fichier. - - + + - + Layout Plan de coupe - + Settings Paramètres - - + + Print Imprimer - + Print tiled PDF Imprimer PDF trié et assemblé @@ -6663,7 +6663,7 @@ Voulez-vous sauvegarder les changements? Découpe et imprime le plan de coupe en pages plus petite (imprimantes courantes) - + Print preview Aperçu d'impression @@ -6673,70 +6673,82 @@ Voulez-vous sauvegarder les changements? Enregistre l'aperçu du plan de coupe original - + Export As... Exporter en... - + - + Layout mode Mode plan de coupe - + Unsaved changes Changements non enregistrés - + Measurements loaded Mesures chargées - + You can't export empty scene. Impossible d'exporter un fichier vide. - - + + Measurement file contains invalid known measurement(s). Le tableau de mesure contient une ou plusieur valeurs connuse vides. - - + + Measurement file has unknown format. Le tableau de mesure est de format inconnu. - + Measurement files types have not match. Les tableaux de mesure ne correspondent pas. - + Couldn't sync measurements. Impossible de synchroniser les mensurations. - + Couldn't update measurements. Impossible de mettre à jour les mensurations. - + + Images will not be saved + + + + + Please note that the images can not be saved and that they are not affected by the undo and redo functions in the current version of the software. + +You may want to take a screenshot of the image properties dialog before closing the software to be able to recreate identically the image when opening the software again. + + + + The measurements file '%1' could not be found. Le tableau de mesure '%1' est introuvable. - + Loading measurements file Lecture du tableau de mesure @@ -6772,12 +6784,12 @@ Voulez-vous sauvegarder les changements? Merci de choisir un fichier. - + Print an original layout Imprime le plan de coupe original - + Preview tiled PDF Aperçu du PDF trié et assemblé @@ -6787,7 +6799,7 @@ Voulez-vous sauvegarder les changements? Imprime le plan de coupe trié et assemblé - + Measurements unloaded Mensurations oubliées @@ -6797,7 +6809,7 @@ Voulez-vous sauvegarder les changements? Impossible d'oublier les mensurations. Certaines d'entre elles sont utilisées dans le patron courant. - + New pattern Nouveau patron @@ -6812,7 +6824,7 @@ Voulez-vous sauvegarder les changements? Créer/éditer un tableau de mesure - + Save... Sauvegarder ... @@ -6822,7 +6834,7 @@ Voulez-vous sauvegarder les changements? Ne pas sauvegarder - + Locking file @@ -6854,29 +6866,29 @@ Voulez-vous sauvegarder les changements? Une erreur inconnue s'est produite, par exemple une partition pleine empêche d'écrire le fichier en lecture seule. - + Operations Opérations - + Close pattern Fermer le patron - + Tool pointer Pointeur - + Original zoom Zoom par défaut - + Height: Stature: @@ -6886,12 +6898,12 @@ Voulez-vous sauvegarder les changements? Taille : - + The measurements file <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? Le tableau de mesure <br/><br/> <b>%1</b> <br/><br/>est introuvable. Voulez-vous le rechercher? - + Measurements were changed. Do you want to sync measurements now? @@ -6901,12 +6913,12 @@ Voulez-vous sauvegarder les changements? - + Measurements have been synced - + The document has no write permissions. @@ -6926,12 +6938,12 @@ Voulez-vous sauvegarder les changements? - + read only Lecture seule - + Load Individual @@ -6986,37 +6998,37 @@ Voulez-vous sauvegarder les changements? - - + + Individual measurements Mesures individuelles - - + + Multisize measurements - + Pattern files Fichier de patron - + Wiki - + Forum - + Name Nom @@ -7031,17 +7043,17 @@ Voulez-vous sauvegarder les changements? Formule - + You can't use Layout mode yet. - + Application doesn't support multisize table with inches. - + Couldn't set size. Need a file with multisize measurements. @@ -7051,7 +7063,7 @@ Voulez-vous sauvegarder les changements? - + Preview @@ -7082,13 +7094,13 @@ Voulez-vous sauvegarder les changements? - - + + Piece - + Utilities @@ -7124,8 +7136,8 @@ Voulez-vous sauvegarder les changements? - - + + Group Manager @@ -7140,7 +7152,7 @@ Voulez-vous sauvegarder les changements? - + Points Toolbar @@ -7190,36 +7202,36 @@ Voulez-vous sauvegarder les changements? - - + + Line between 2 Points (Alt+L) - + Tools for performing operations on objects - + Rotate Selected Objects (R) - - + + Export Draft Blocks (E, D) - + Tools for adding pattern pieces. - + Add Details @@ -7230,17 +7242,17 @@ Voulez-vous sauvegarder les changements? - + Unite 2 Pieces (U) - + View Toolbar - + Draft @@ -7303,7 +7315,7 @@ Voulez-vous sauvegarder les changements? - + Mirror by Line @@ -7470,7 +7482,7 @@ Voulez-vous sauvegarder les changements? - + Fit All @@ -7496,7 +7508,7 @@ Voulez-vous sauvegarder les changements? - + Shortcuts @@ -7521,7 +7533,7 @@ Voulez-vous sauvegarder les changements? - + Load multisize @@ -7847,7 +7859,7 @@ Voulez-vous sauvegarder les changements? - + Calculator @@ -7868,7 +7880,7 @@ Voulez-vous sauvegarder les changements? - + Export Draft Blocks @@ -7883,7 +7895,7 @@ Voulez-vous sauvegarder les changements? Exporter - + Seam Allowance @@ -7913,12 +7925,12 @@ Voulez-vous sauvegarder les changements? - + Measurement file doesn't include all the required measurements. - + <b>Tool::Operations - Create Group:</b> Select one or more objects - Hold <b>%1</b> for multiple selection, Press <b>ENTER</b> to finish group creation @@ -7948,13 +7960,13 @@ Voulez-vous sauvegarder les changements? - + Draft Block: - + Rotate @@ -7984,7 +7996,13 @@ Voulez-vous sauvegarder les changements? - + + + Import Image + + + + Piece mode @@ -7994,8 +8012,8 @@ Voulez-vous sauvegarder les changements? - - + + Pattern Pieces @@ -8010,7 +8028,7 @@ Voulez-vous sauvegarder les changements? - + Name: @@ -8030,7 +8048,7 @@ Voulez-vous sauvegarder les changements? - + You don't have any pieces to export. Please, include at least one piece in layout. @@ -8045,7 +8063,7 @@ Voulez-vous sauvegarder les changements? - + <b>Tool::Piece - Add New Pattern Piece:</b> Select main path of objects clockwise. @@ -8065,146 +8083,146 @@ Voulez-vous sauvegarder les changements? - + <b>Tool::Details - Union:</b> Select pattern piece - + Draft block %1 - + Draft Block %1 - - + + Point - On Bisector (O, B) - - + + Point - Length to Line (P, S) - - + + Point - Intersect Arc and Line (A, L) - - + + Point - Intersect Axis and Triangle (X, T) - - + + Point - Intersect XY (X, Y) - - + + Point - Intersect Line and Perpendicular (L, P) - - + + Point - Intersect Line and Axis (L, X) - - + + Point - On Perpendicular (O, P) - - + + Point - Length and Angle (L, A) - - + + Point - On Line (O, L) - - + + Point - Midpoint on Line (Shift+O, Shift+L) - - + + Point - Intersect Lines (I, L) - - + + Curve - Interactive (Alt+C) - - + + Spline - Interactive (Alt+S) - - + + Curve - Fixed (Alt+Shift+C) - - + + Spline - Fixed (Alt+Shift+S) - + Point - On Spline (O, S) - + Point - Intersect Curves (I, C) - - + + Point - Intersect Curve and Axis (C, X) - + Point - On Curve (O, C) - + Arc - Radius and Angles (Alt+A) - + Point - On Arc (O, A) @@ -8235,90 +8253,101 @@ Voulez-vous sauvegarder les changements? - + Arc - Radius and Length (Alt+Shift+A) - - + + Arc - Elliptical (Alt+E) - - + + Mirror Objects by Line (M, L) - - + + Mirror Objects by Axis (M, A) - - + + Move Objects (Alt+M) - - + + True Darts (T, D) - - + + Add New Pattern Piece (N, P) - - + + Add Anchor Point (A, P) - - + + Insert Nodes (I, N) - - + + Add Internal Path (I, P) - - + + Tools for inserting or modifying images. + + + + + + Import Image (Alt + I) + + + + + Export Pieces (E, P) - + New Print Layout (N, L) - + Export Layout (E, L) - + Contains information about custom and internal variables - + Alt+M @@ -8632,12 +8661,12 @@ Voulez-vous sauvegarder les changements? - + Activate last used tool (Ctrl+Shift+L) - + Zoom to Selected (Ctrl+Right) @@ -8662,7 +8691,27 @@ Voulez-vous sauvegarder les changements? - + + Images tools + + + + + Delete + Supprimer + + + + Align + + + + + Lock + + + + Zoom to point (Ctrl + Alt + P) @@ -8672,12 +8721,17 @@ Voulez-vous sauvegarder les changements? - + + Alt+I + + + + Please provide additional measurements: %1 - + <b>Tool::Point - Midpoint on Line</b>: Select first point @@ -8827,7 +8881,52 @@ Voulez-vous sauvegarder les changements? - + + + Can't read image + + + + + + Could not read the image. + + + + + It may be corrupted... + + + + + It may be corrupted or empty... + + + + + Confirm deletion + Confirmer la suppression + + + + Do you really want to delete? + Voulez vous vraiment supprimer? + + + + + + + Images + Images + + + + Open Image File + + + + Zoom to Point @@ -8837,7 +8936,7 @@ Voulez-vous sauvegarder les changements? Point : - + Intersect Arc and Line @@ -8847,8 +8946,8 @@ Voulez-vous sauvegarder les changements? - - + + Add Objects to Group (G) @@ -8859,7 +8958,7 @@ Voulez-vous sauvegarder les changements? - + Add Group Objects @@ -8869,7 +8968,7 @@ Voulez-vous sauvegarder les changements? - + Can not save file. @@ -8886,36 +8985,36 @@ Voulez-vous sauvegarder les changements? - + Ctrl+E - + untitled sans titre - + Failed to lock. This file already opened in another window. Expect collisions when running 2 copies of the program. - + Pen Toolbar - + Toolbars - - + + - - + + File exception. @@ -8928,12 +9027,12 @@ Voulez-vous sauvegarder les changements? - + pattern patron - + Base name used for new points. Press enter to temporarily add it to the list. @@ -11821,7 +11920,7 @@ Press enter to temporarily add it to the list. - + Open Directory Ouvrir un dossier @@ -11836,7 +11935,12 @@ Press enter to temporarily add it to the list. - + + My Images + + + + My Patterns @@ -12140,12 +12244,12 @@ Press enter to temporarily add it to the list. QObject - + Create new pattern piece to start working. créer un nouvel élément de patron pour commencer. - + mm mm @@ -12182,12 +12286,12 @@ Press enter to temporarily add it to the list. Ajouter un nœud - + Changes applied. Changements appliqués. - + Wrong tag name '%1'. Mauvais nom de tag '%1'. @@ -12545,6 +12649,19 @@ Press enter to temporarily add it to the list. renommer la pièce de patron + + ResizeHandlesItem + + + Press <b>CTRL</b> to scale around the center - <b> Aspect ratio locked </b> + + + + + Press <b>CTRL</b> to scale around the center, <b>SHIFT</b> to scale uniformly. + + + SavePieceOptions @@ -13340,12 +13457,12 @@ Vous pouvez modifier ce paramètre dans les préférences de Seamly2D. - + F2 - + Point Point @@ -13735,6 +13852,21 @@ Vous pouvez modifier ce paramètre dans les préférences de Seamly2D.E, D + + + Images + Images + + + + Import Image + + + + + Alt + I + + Pattern Piece @@ -13952,8 +14084,8 @@ Vous pouvez modifier ce paramètre dans les préférences de Seamly2D.Aide - - + + Keyboard Shortcuts @@ -13963,7 +14095,7 @@ Vous pouvez modifier ce paramètre dans les préférences de Seamly2D.K - + Shift+P @@ -13973,7 +14105,7 @@ Vous pouvez modifier ce paramètre dans les préférences de Seamly2D. - + Export PDF @@ -14932,7 +15064,7 @@ load in SeamlyME as usual. Tool - + First point Premier point @@ -15162,7 +15294,7 @@ load in SeamlyME as usual. L'outil n'a pas été trouvé dans la table. - + Error creating or updating group Erreur lors de la création ou la mise à jour du groupe @@ -15789,7 +15921,7 @@ load in SeamlyME as usual. VCommonSettings - + measurements mesures @@ -15811,11 +15943,16 @@ load in SeamlyME as usual. + images + + + + label templates - + bodyscans @@ -16655,7 +16792,7 @@ load in SeamlyME as usual. VToolLine - + Length Longueur @@ -17478,7 +17615,7 @@ load in SeamlyME as usual. Ligne_ - + Center point Point central diff --git a/share/translations/seamly2d_he_IL.ts b/share/translations/seamly2d_he_IL.ts index e7ca5f1fe335..e206d1325bc8 100644 --- a/share/translations/seamly2d_he_IL.ts +++ b/share/translations/seamly2d_he_IL.ts @@ -5073,7 +5073,7 @@ p, li { white-space: pre-wrap; } FvUpdater - + Feed download failed: %1. @@ -5238,7 +5238,7 @@ Do you want to download it? - + %1 - Base point @@ -5441,7 +5441,7 @@ Do you want to download it? - + Group color @@ -5518,7 +5518,7 @@ Do you want to download it? - + Name @@ -6350,40 +6350,40 @@ Apply settings anyway? ולנטינה - + Tools for creating points. - - + + - + Point נקודה - + Tools for creating lines. כלים ליצירת קווים. - - + + - - + + Line קו - + Tools for creating curves. - - + + Curve עקומה @@ -6394,14 +6394,14 @@ Apply settings anyway? - - + + Arc - + &File @@ -6412,12 +6412,12 @@ Apply settings anyway? - + Measurements - + New חדש @@ -6448,7 +6448,7 @@ Apply settings anyway? - + Save שמור @@ -6463,7 +6463,7 @@ Apply settings anyway? שמירת תבנית - + Save &As... @@ -6473,19 +6473,19 @@ Apply settings anyway? - - + + Details - + Pointer tools - - + + History @@ -6505,27 +6505,27 @@ Apply settings anyway? - + Preferences - + Report bug - + Show online help - + About Qt - + Save as שמירה בשם @@ -6535,17 +6535,17 @@ Apply settings anyway? - + - - + + Open file - + Error parsing file. @@ -6577,45 +6577,45 @@ Apply settings anyway? - + File saved - + untitled.sm2d - + The pattern has been modified. Do you want to save your changes? - - + + &Undo - - + + &Redo - + This file already opened in another window. - + Wrong units. - + File loaded @@ -6630,26 +6630,26 @@ Do you want to save your changes? - - + + - + Layout - + Settings - - + + Print - + Print tiled PDF @@ -6659,7 +6659,7 @@ Do you want to save your changes? - + Print preview @@ -6669,70 +6669,82 @@ Do you want to save your changes? - + Export As... - + - + Layout mode - + Unsaved changes - + Measurements loaded - + You can't export empty scene. - - + + Measurement file contains invalid known measurement(s). - - + + Measurement file has unknown format. - + Measurement files types have not match. - + Couldn't sync measurements. - + Couldn't update measurements. - + + Images will not be saved + + + + + Please note that the images can not be saved and that they are not affected by the undo and redo functions in the current version of the software. + +You may want to take a screenshot of the image properties dialog before closing the software to be able to recreate identically the image when opening the software again. + + + + The measurements file '%1' could not be found. - + Loading measurements file @@ -6768,12 +6780,12 @@ Do you want to save your changes? - + Print an original layout - + Preview tiled PDF @@ -6783,7 +6795,7 @@ Do you want to save your changes? - + Measurements unloaded @@ -6793,7 +6805,7 @@ Do you want to save your changes? - + New pattern @@ -6808,7 +6820,7 @@ Do you want to save your changes? - + Save... @@ -6818,7 +6830,7 @@ Do you want to save your changes? - + Locking file @@ -6850,29 +6862,29 @@ Do you want to save your changes? - + Operations - + Close pattern - + Tool pointer - + Original zoom - + Height: @@ -6882,12 +6894,12 @@ Do you want to save your changes? - + The measurements file <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? - + Measurements were changed. Do you want to sync measurements now? @@ -6897,12 +6909,12 @@ Do you want to save your changes? - + Measurements have been synced - + The document has no write permissions. @@ -6922,12 +6934,12 @@ Do you want to save your changes? - + read only - + Load Individual @@ -6982,37 +6994,37 @@ Do you want to save your changes? - - + + Individual measurements - - + + Multisize measurements - + Pattern files - + Wiki - + Forum - + Name @@ -7027,17 +7039,17 @@ Do you want to save your changes? - + You can't use Layout mode yet. - + Application doesn't support multisize table with inches. - + Couldn't set size. Need a file with multisize measurements. @@ -7047,7 +7059,7 @@ Do you want to save your changes? - + Preview @@ -7078,13 +7090,13 @@ Do you want to save your changes? - - + + Piece - + Utilities @@ -7120,8 +7132,8 @@ Do you want to save your changes? - - + + Group Manager @@ -7136,7 +7148,7 @@ Do you want to save your changes? - + Points Toolbar @@ -7186,36 +7198,36 @@ Do you want to save your changes? - - + + Line between 2 Points (Alt+L) - + Tools for performing operations on objects - + Rotate Selected Objects (R) - - + + Export Draft Blocks (E, D) - + Tools for adding pattern pieces. - + Add Details @@ -7226,17 +7238,17 @@ Do you want to save your changes? - + Unite 2 Pieces (U) - + View Toolbar - + Draft @@ -7299,7 +7311,7 @@ Do you want to save your changes? - + Mirror by Line @@ -7466,7 +7478,7 @@ Do you want to save your changes? - + Fit All @@ -7492,7 +7504,7 @@ Do you want to save your changes? - + Shortcuts @@ -7517,7 +7529,7 @@ Do you want to save your changes? - + Load multisize @@ -7843,7 +7855,7 @@ Do you want to save your changes? - + Calculator @@ -7864,7 +7876,7 @@ Do you want to save your changes? - + Export Draft Blocks @@ -7879,7 +7891,7 @@ Do you want to save your changes? - + Seam Allowance @@ -7909,12 +7921,12 @@ Do you want to save your changes? - + Measurement file doesn't include all the required measurements. - + <b>Tool::Operations - Create Group:</b> Select one or more objects - Hold <b>%1</b> for multiple selection, Press <b>ENTER</b> to finish group creation @@ -7944,13 +7956,13 @@ Do you want to save your changes? - + Draft Block: - + Rotate @@ -7980,7 +7992,13 @@ Do you want to save your changes? - + + + Import Image + + + + Piece mode @@ -7990,8 +8008,8 @@ Do you want to save your changes? - - + + Pattern Pieces @@ -8006,7 +8024,7 @@ Do you want to save your changes? - + Name: @@ -8026,7 +8044,7 @@ Do you want to save your changes? - + You don't have any pieces to export. Please, include at least one piece in layout. @@ -8041,7 +8059,7 @@ Do you want to save your changes? - + <b>Tool::Piece - Add New Pattern Piece:</b> Select main path of objects clockwise. @@ -8061,146 +8079,146 @@ Do you want to save your changes? - + <b>Tool::Details - Union:</b> Select pattern piece - + Draft block %1 - + Draft Block %1 - - + + Point - On Bisector (O, B) - - + + Point - Length to Line (P, S) - - + + Point - Intersect Arc and Line (A, L) - - + + Point - Intersect Axis and Triangle (X, T) - - + + Point - Intersect XY (X, Y) - - + + Point - Intersect Line and Perpendicular (L, P) - - + + Point - Intersect Line and Axis (L, X) - - + + Point - On Perpendicular (O, P) - - + + Point - Length and Angle (L, A) - - + + Point - On Line (O, L) - - + + Point - Midpoint on Line (Shift+O, Shift+L) - - + + Point - Intersect Lines (I, L) - - + + Curve - Interactive (Alt+C) - - + + Spline - Interactive (Alt+S) - - + + Curve - Fixed (Alt+Shift+C) - - + + Spline - Fixed (Alt+Shift+S) - + Point - On Spline (O, S) - + Point - Intersect Curves (I, C) - - + + Point - Intersect Curve and Axis (C, X) - + Point - On Curve (O, C) - + Arc - Radius and Angles (Alt+A) - + Point - On Arc (O, A) @@ -8231,90 +8249,101 @@ Do you want to save your changes? - + Arc - Radius and Length (Alt+Shift+A) - - + + Arc - Elliptical (Alt+E) - - + + Mirror Objects by Line (M, L) - - + + Mirror Objects by Axis (M, A) - - + + Move Objects (Alt+M) - - + + True Darts (T, D) - - + + Add New Pattern Piece (N, P) - - + + Add Anchor Point (A, P) - - + + Insert Nodes (I, N) - - + + Add Internal Path (I, P) - - + + Tools for inserting or modifying images. + + + + + + Import Image (Alt + I) + + + + + Export Pieces (E, P) - + New Print Layout (N, L) - + Export Layout (E, L) - + Contains information about custom and internal variables - + Alt+M @@ -8628,12 +8657,12 @@ Do you want to save your changes? - + Activate last used tool (Ctrl+Shift+L) - + Zoom to Selected (Ctrl+Right) @@ -8658,7 +8687,27 @@ Do you want to save your changes? - + + Images tools + + + + + Delete + למחוק + + + + Align + + + + + Lock + + + + Zoom to point (Ctrl + Alt + P) @@ -8668,12 +8717,17 @@ Do you want to save your changes? - + + Alt+I + + + + Please provide additional measurements: %1 - + <b>Tool::Point - Midpoint on Line</b>: Select first point @@ -8823,7 +8877,52 @@ Do you want to save your changes? - + + + Can't read image + + + + + + Could not read the image. + + + + + It may be corrupted... + + + + + It may be corrupted or empty... + + + + + Confirm deletion + + + + + Do you really want to delete? + + + + + + + + Images + + + + + Open Image File + + + + Zoom to Point @@ -8833,7 +8932,7 @@ Do you want to save your changes? - + Intersect Arc and Line @@ -8843,8 +8942,8 @@ Do you want to save your changes? - - + + Add Objects to Group (G) @@ -8855,7 +8954,7 @@ Do you want to save your changes? - + Add Group Objects @@ -8865,7 +8964,7 @@ Do you want to save your changes? - + Can not save file. @@ -8882,36 +8981,36 @@ Do you want to save your changes? - + Ctrl+E - + untitled - + Failed to lock. This file already opened in another window. Expect collisions when running 2 copies of the program. - + Pen Toolbar - + Toolbars - - + + - - + + File exception. @@ -8924,12 +9023,12 @@ Do you want to save your changes? - + pattern - + Base name used for new points. Press enter to temporarily add it to the list. @@ -11817,7 +11916,7 @@ Press enter to temporarily add it to the list. - + Open Directory @@ -11832,7 +11931,12 @@ Press enter to temporarily add it to the list. - + + My Images + + + + My Patterns @@ -12136,12 +12240,12 @@ Press enter to temporarily add it to the list. QObject - + Create new pattern piece to start working. - + mm @@ -12178,12 +12282,12 @@ Press enter to temporarily add it to the list. - + Changes applied. - + Wrong tag name '%1'. @@ -12541,6 +12645,19 @@ Press enter to temporarily add it to the list. + + ResizeHandlesItem + + + Press <b>CTRL</b> to scale around the center - <b> Aspect ratio locked </b> + + + + + Press <b>CTRL</b> to scale around the center, <b>SHIFT</b> to scale uniformly. + + + SavePieceOptions @@ -13330,12 +13447,12 @@ When unchecked the period is used. - + F2 - + Point נקודה @@ -13725,6 +13842,21 @@ When unchecked the period is used. E, D + + + Images + + + + + Import Image + + + + + Alt + I + + Pattern Piece @@ -13942,8 +14074,8 @@ When unchecked the period is used. - - + + Keyboard Shortcuts @@ -13953,7 +14085,7 @@ When unchecked the period is used. - + Shift+P @@ -13963,7 +14095,7 @@ When unchecked the period is used. - + Export PDF @@ -14921,7 +15053,7 @@ load in SeamlyME as usual. Tool - + First point נקודה ראשונה @@ -15151,7 +15283,7 @@ load in SeamlyME as usual. - + Error creating or updating group @@ -15778,7 +15910,7 @@ load in SeamlyME as usual. VCommonSettings - + measurements @@ -15800,11 +15932,16 @@ load in SeamlyME as usual. + images + + + + label templates - + bodyscans @@ -16643,7 +16780,7 @@ load in SeamlyME as usual. VToolLine - + Length אורך @@ -17466,7 +17603,7 @@ load in SeamlyME as usual. - + Center point נקודת מרכז diff --git a/share/translations/seamly2d_id_ID.ts b/share/translations/seamly2d_id_ID.ts index 3abe5f2a7a28..40a0770c7701 100644 --- a/share/translations/seamly2d_id_ID.ts +++ b/share/translations/seamly2d_id_ID.ts @@ -5073,7 +5073,7 @@ p, li { white-space: pre-wrap; } FvUpdater - + Feed download failed: %1. @@ -5238,7 +5238,7 @@ Do you want to download it? - + %1 - Base point @@ -5441,7 +5441,7 @@ Do you want to download it? - + Group color @@ -5518,7 +5518,7 @@ Do you want to download it? - + Name Nama @@ -6350,40 +6350,40 @@ Apply settings anyway? - + Tools for creating points. - - + + - + Point - + Tools for creating lines. - - + + - - + + Line - + Tools for creating curves. - - + + Curve kurva @@ -6394,14 +6394,14 @@ Apply settings anyway? - - + + Arc busur - + &File @@ -6412,12 +6412,12 @@ Apply settings anyway? - + Measurements pengukuran - + New @@ -6448,7 +6448,7 @@ Apply settings anyway? - + Save Simpan @@ -6463,7 +6463,7 @@ Apply settings anyway? - + Save &As... @@ -6473,19 +6473,19 @@ Apply settings anyway? - - + + Details - + Pointer tools - - + + History @@ -6505,27 +6505,27 @@ Apply settings anyway? - + Preferences - + Report bug - + Show online help - + About Qt - + Save as @@ -6535,17 +6535,17 @@ Apply settings anyway? - + - - + + Open file Buka File - + Error parsing file. @@ -6577,46 +6577,46 @@ Apply settings anyway? - + File saved File telah disimpan - + untitled.sm2d tanpajudul.sm2d - + The pattern has been modified. Do you want to save your changes? Pola telah dimodiikasi Apakah anda ingin menyimpan perubahan anda? - - + + &Undo - - + + &Redo - + This file already opened in another window. - + Wrong units. - + File loaded @@ -6631,26 +6631,26 @@ Apakah anda ingin menyimpan perubahan anda? - - + + - + Layout - + Settings - - + + Print - + Print tiled PDF @@ -6660,7 +6660,7 @@ Apakah anda ingin menyimpan perubahan anda? - + Print preview @@ -6670,70 +6670,82 @@ Apakah anda ingin menyimpan perubahan anda? - + Export As... - + - + Layout mode - + Unsaved changes - + Measurements loaded - + You can't export empty scene. - - + + Measurement file contains invalid known measurement(s). - - + + Measurement file has unknown format. - + Measurement files types have not match. - + Couldn't sync measurements. - + Couldn't update measurements. - + + Images will not be saved + + + + + Please note that the images can not be saved and that they are not affected by the undo and redo functions in the current version of the software. + +You may want to take a screenshot of the image properties dialog before closing the software to be able to recreate identically the image when opening the software again. + + + + The measurements file '%1' could not be found. - + Loading measurements file @@ -6769,12 +6781,12 @@ Apakah anda ingin menyimpan perubahan anda? - + Print an original layout - + Preview tiled PDF @@ -6784,7 +6796,7 @@ Apakah anda ingin menyimpan perubahan anda? - + Measurements unloaded @@ -6794,7 +6806,7 @@ Apakah anda ingin menyimpan perubahan anda? - + New pattern @@ -6809,7 +6821,7 @@ Apakah anda ingin menyimpan perubahan anda? - + Save... @@ -6819,7 +6831,7 @@ Apakah anda ingin menyimpan perubahan anda? - + Locking file @@ -6851,29 +6863,29 @@ Apakah anda ingin menyimpan perubahan anda? - + Operations - + Close pattern - + Tool pointer - + Original zoom - + Height: @@ -6883,12 +6895,12 @@ Apakah anda ingin menyimpan perubahan anda? - + The measurements file <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? - + Measurements were changed. Do you want to sync measurements now? @@ -6898,12 +6910,12 @@ Apakah anda ingin menyimpan perubahan anda? - + Measurements have been synced - + The document has no write permissions. @@ -6923,12 +6935,12 @@ Apakah anda ingin menyimpan perubahan anda? - + read only - + Load Individual @@ -6983,37 +6995,37 @@ Apakah anda ingin menyimpan perubahan anda? - - + + Individual measurements - - + + Multisize measurements - + Pattern files - + Wiki - + Forum - + Name Nama @@ -7028,17 +7040,17 @@ Apakah anda ingin menyimpan perubahan anda? rumus - + You can't use Layout mode yet. - + Application doesn't support multisize table with inches. - + Couldn't set size. Need a file with multisize measurements. @@ -7048,7 +7060,7 @@ Apakah anda ingin menyimpan perubahan anda? - + Preview @@ -7079,13 +7091,13 @@ Apakah anda ingin menyimpan perubahan anda? - - + + Piece - + Utilities @@ -7121,8 +7133,8 @@ Apakah anda ingin menyimpan perubahan anda? - - + + Group Manager @@ -7137,7 +7149,7 @@ Apakah anda ingin menyimpan perubahan anda? - + Points Toolbar @@ -7187,36 +7199,36 @@ Apakah anda ingin menyimpan perubahan anda? - - + + Line between 2 Points (Alt+L) - + Tools for performing operations on objects - + Rotate Selected Objects (R) - - + + Export Draft Blocks (E, D) - + Tools for adding pattern pieces. - + Add Details @@ -7227,17 +7239,17 @@ Apakah anda ingin menyimpan perubahan anda? - + Unite 2 Pieces (U) - + View Toolbar - + Draft @@ -7300,7 +7312,7 @@ Apakah anda ingin menyimpan perubahan anda? - + Mirror by Line @@ -7467,7 +7479,7 @@ Apakah anda ingin menyimpan perubahan anda? - + Fit All @@ -7493,7 +7505,7 @@ Apakah anda ingin menyimpan perubahan anda? - + Shortcuts @@ -7518,7 +7530,7 @@ Apakah anda ingin menyimpan perubahan anda? - + Load multisize @@ -7844,7 +7856,7 @@ Apakah anda ingin menyimpan perubahan anda? - + Calculator @@ -7865,7 +7877,7 @@ Apakah anda ingin menyimpan perubahan anda? - + Export Draft Blocks @@ -7880,7 +7892,7 @@ Apakah anda ingin menyimpan perubahan anda? - + Seam Allowance @@ -7910,12 +7922,12 @@ Apakah anda ingin menyimpan perubahan anda? - + Measurement file doesn't include all the required measurements. - + <b>Tool::Operations - Create Group:</b> Select one or more objects - Hold <b>%1</b> for multiple selection, Press <b>ENTER</b> to finish group creation @@ -7945,13 +7957,13 @@ Apakah anda ingin menyimpan perubahan anda? - + Draft Block: - + Rotate @@ -7981,7 +7993,13 @@ Apakah anda ingin menyimpan perubahan anda? - + + + Import Image + + + + Piece mode @@ -7991,8 +8009,8 @@ Apakah anda ingin menyimpan perubahan anda? - - + + Pattern Pieces @@ -8007,7 +8025,7 @@ Apakah anda ingin menyimpan perubahan anda? - + Name: @@ -8027,7 +8045,7 @@ Apakah anda ingin menyimpan perubahan anda? - + You don't have any pieces to export. Please, include at least one piece in layout. @@ -8042,7 +8060,7 @@ Apakah anda ingin menyimpan perubahan anda? - + <b>Tool::Piece - Add New Pattern Piece:</b> Select main path of objects clockwise. @@ -8062,146 +8080,146 @@ Apakah anda ingin menyimpan perubahan anda? - + <b>Tool::Details - Union:</b> Select pattern piece - + Draft block %1 - + Draft Block %1 - - + + Point - On Bisector (O, B) - - + + Point - Length to Line (P, S) - - + + Point - Intersect Arc and Line (A, L) - - + + Point - Intersect Axis and Triangle (X, T) - - + + Point - Intersect XY (X, Y) - - + + Point - Intersect Line and Perpendicular (L, P) - - + + Point - Intersect Line and Axis (L, X) - - + + Point - On Perpendicular (O, P) - - + + Point - Length and Angle (L, A) - - + + Point - On Line (O, L) - - + + Point - Midpoint on Line (Shift+O, Shift+L) - - + + Point - Intersect Lines (I, L) - - + + Curve - Interactive (Alt+C) - - + + Spline - Interactive (Alt+S) - - + + Curve - Fixed (Alt+Shift+C) - - + + Spline - Fixed (Alt+Shift+S) - + Point - On Spline (O, S) - + Point - Intersect Curves (I, C) - - + + Point - Intersect Curve and Axis (C, X) - + Point - On Curve (O, C) - + Arc - Radius and Angles (Alt+A) - + Point - On Arc (O, A) @@ -8232,90 +8250,101 @@ Apakah anda ingin menyimpan perubahan anda? - + Arc - Radius and Length (Alt+Shift+A) - - + + Arc - Elliptical (Alt+E) - - + + Mirror Objects by Line (M, L) - - + + Mirror Objects by Axis (M, A) - - + + Move Objects (Alt+M) - - + + True Darts (T, D) - - + + Add New Pattern Piece (N, P) - - + + Add Anchor Point (A, P) - - + + Insert Nodes (I, N) - - + + Add Internal Path (I, P) - - + + Tools for inserting or modifying images. + + + + + + Import Image (Alt + I) + + + + + Export Pieces (E, P) - + New Print Layout (N, L) - + Export Layout (E, L) - + Contains information about custom and internal variables - + Alt+M @@ -8629,12 +8658,12 @@ Apakah anda ingin menyimpan perubahan anda? - + Activate last used tool (Ctrl+Shift+L) - + Zoom to Selected (Ctrl+Right) @@ -8659,7 +8688,27 @@ Apakah anda ingin menyimpan perubahan anda? - + + Images tools + + + + + Delete + hapus + + + + Align + + + + + Lock + + + + Zoom to point (Ctrl + Alt + P) @@ -8669,12 +8718,17 @@ Apakah anda ingin menyimpan perubahan anda? - + + Alt+I + + + + Please provide additional measurements: %1 - + <b>Tool::Point - Midpoint on Line</b>: Select first point @@ -8824,7 +8878,52 @@ Apakah anda ingin menyimpan perubahan anda? - + + + Can't read image + + + + + + Could not read the image. + + + + + It may be corrupted... + + + + + It may be corrupted or empty... + + + + + Confirm deletion + + + + + Do you really want to delete? + + + + + + + + Images + + + + + Open Image File + + + + Zoom to Point @@ -8834,7 +8933,7 @@ Apakah anda ingin menyimpan perubahan anda? - + Intersect Arc and Line @@ -8844,8 +8943,8 @@ Apakah anda ingin menyimpan perubahan anda? - - + + Add Objects to Group (G) @@ -8856,7 +8955,7 @@ Apakah anda ingin menyimpan perubahan anda? - + Add Group Objects @@ -8866,7 +8965,7 @@ Apakah anda ingin menyimpan perubahan anda? - + Can not save file. @@ -8883,36 +8982,36 @@ Apakah anda ingin menyimpan perubahan anda? - + Ctrl+E - + untitled - + Failed to lock. This file already opened in another window. Expect collisions when running 2 copies of the program. - + Pen Toolbar - + Toolbars - - + + - - + + File exception. @@ -8925,12 +9024,12 @@ Apakah anda ingin menyimpan perubahan anda? - + pattern pola - + Base name used for new points. Press enter to temporarily add it to the list. @@ -11818,7 +11917,7 @@ Press enter to temporarily add it to the list. - + Open Directory @@ -11833,7 +11932,12 @@ Press enter to temporarily add it to the list. - + + My Images + + + + My Patterns @@ -12137,12 +12241,12 @@ Press enter to temporarily add it to the list. QObject - + Create new pattern piece to start working. - + mm @@ -12179,12 +12283,12 @@ Press enter to temporarily add it to the list. - + Changes applied. - + Wrong tag name '%1'. @@ -12542,6 +12646,19 @@ Press enter to temporarily add it to the list. + + ResizeHandlesItem + + + Press <b>CTRL</b> to scale around the center - <b> Aspect ratio locked </b> + + + + + Press <b>CTRL</b> to scale around the center, <b>SHIFT</b> to scale uniformly. + + + SavePieceOptions @@ -13331,12 +13448,12 @@ When unchecked the period is used. - + F2 - + Point @@ -13726,6 +13843,21 @@ When unchecked the period is used. E, D + + + Images + + + + + Import Image + + + + + Alt + I + + Pattern Piece @@ -13943,8 +14075,8 @@ When unchecked the period is used. - - + + Keyboard Shortcuts @@ -13954,7 +14086,7 @@ When unchecked the period is used. - + Shift+P @@ -13964,7 +14096,7 @@ When unchecked the period is used. - + Export PDF @@ -14922,7 +15054,7 @@ load in SeamlyME as usual. Tool - + First point Titik pertama @@ -15152,7 +15284,7 @@ load in SeamlyME as usual. - + Error creating or updating group @@ -15779,7 +15911,7 @@ load in SeamlyME as usual. VCommonSettings - + measurements @@ -15801,11 +15933,16 @@ load in SeamlyME as usual. + images + + + + label templates - + bodyscans @@ -16644,7 +16781,7 @@ load in SeamlyME as usual. VToolLine - + Length panjang @@ -17467,7 +17604,7 @@ load in SeamlyME as usual. - + Center point Titik tengah diff --git a/share/translations/seamly2d_it_IT.ts b/share/translations/seamly2d_it_IT.ts index 5072da9239dd..b0072ffb9789 100644 --- a/share/translations/seamly2d_it_IT.ts +++ b/share/translations/seamly2d_it_IT.ts @@ -5073,7 +5073,7 @@ p, li { white-space: pre-wrap; } FvUpdater - + Feed download failed: %1. Download fallito: %1. @@ -5238,7 +5238,7 @@ Do you want to download it? - + %1 - Base point %1 - Punto base @@ -5441,7 +5441,7 @@ Do you want to download it? - + Group color @@ -5518,7 +5518,7 @@ Do you want to download it? - + Name Nome @@ -6353,40 +6353,40 @@ Apply settings anyway? Seamly2D - + Tools for creating points. Strumenti per creare punti. - - + + - + Point Punto - + Tools for creating lines. Strumenti per creare linee. - - + + - - + + Line Linea - + Tools for creating curves. Strumenti per creare curve. - - + + Curve Curva @@ -6397,14 +6397,14 @@ Apply settings anyway? Strumenti per creare archi. - - + + Arc Arco - + &File &File @@ -6415,12 +6415,12 @@ Apply settings anyway? - + Measurements Misure - + New Nuovo @@ -6451,7 +6451,7 @@ Apply settings anyway? - + Save Salva @@ -6466,7 +6466,7 @@ Apply settings anyway? Salva modello - + Save &As... Salva &Come... @@ -6476,19 +6476,19 @@ Apply settings anyway? Salva il modello non ancora salvato - - + + Details Dettagli - + Pointer tools Strumenti cursore - - + + History Storia @@ -6508,27 +6508,27 @@ Apply settings anyway? U&scita - + Preferences Preferenze - + Report bug Segnalazione bug - + Show online help Mostra aiuto online - + About Qt About Qt - + Save as Salva come @@ -6538,17 +6538,17 @@ Apply settings anyway? Impossibile salvare il file - + - - + + Open file Apri il file - + Error parsing file. Errore di analisi del file. @@ -6580,46 +6580,46 @@ Apply settings anyway? Id cattivo. - + File saved File salvato - + untitled.sm2d senzatitolo.sm2d - + The pattern has been modified. Do you want to save your changes? Il pattern è stato modifcato. Vuoi salvare i cambiamenti? - - + + &Undo &Undo - - + + &Redo &Redo - + This file already opened in another window. Questo file è già aperto in un'altra finestra. - + Wrong units. Unità sbagliate. - + File loaded File caricato @@ -6634,26 +6634,26 @@ Vuoi salvare i cambiamenti? Riapri i file. - - + + - + Layout Layout - + Settings Impostazioni - - + + Print Stampa - + Print tiled PDF Stampa PDF @@ -6663,7 +6663,7 @@ Vuoi salvare i cambiamenti? Dividi e salva un layout in pagine più piccole (per stampanti normali) - + Print preview Anteprima di stampa @@ -6673,70 +6673,82 @@ Vuoi salvare i cambiamenti? Anteprima di stampa del layout originale - + Export As... Esporta Come... - + - + Layout mode Modalità layout - + Unsaved changes Modifiche non salvate - + Measurements loaded Misure caricate - + You can't export empty scene. Non puoi esportare il pannello vuoto. - - + + Measurement file contains invalid known measurement(s). Il file delle misure contiene misura(e) note come invalide. - - + + Measurement file has unknown format. Il file delle misure ha un formato sconosciuto. - + Measurement files types have not match. Le tipologie dei file di misurazione non hanno corrispondenze. - + Couldn't sync measurements. Impossibile sincronizzare le misure. - + Couldn't update measurements. Impossibile aggiornare le misure. - + + Images will not be saved + + + + + Please note that the images can not be saved and that they are not affected by the undo and redo functions in the current version of the software. + +You may want to take a screenshot of the image properties dialog before closing the software to be able to recreate identically the image when opening the software again. + + + + The measurements file '%1' could not be found. Il file delle misure '%1' non si trova. - + Loading measurements file File delle misure in carica @@ -6772,12 +6784,12 @@ Vuoi salvare i cambiamenti? Si prega di fornire un di input. - + Print an original layout Stampa un layout originale - + Preview tiled PDF Anteprima di stampa PDF @@ -6787,7 +6799,7 @@ Vuoi salvare i cambiamenti? Anteprima di stampa del layout piastrellato - + Measurements unloaded Misure scaricate @@ -6797,7 +6809,7 @@ Vuoi salvare i cambiamenti? Impossibile scaricare misure. Alcune di queste sono utilizzate nel cartamodello. - + New pattern Nuovo pattern @@ -6812,7 +6824,7 @@ Vuoi salvare i cambiamenti? Crea/modifica misure - + Save... Salva... @@ -6822,7 +6834,7 @@ Vuoi salvare i cambiamenti? Non salvare - + Locking file @@ -6854,29 +6866,29 @@ Vuoi salvare i cambiamenti? Si è verificato un errore sconosciuto, come ad esempio il fallimento di una partizione completa durante la trascrizione di un file bloccato. - + Operations Operazioni - + Close pattern Chiudi pezzo - + Tool pointer - + Original zoom Zoom originale - + Height: Altezza: @@ -6886,12 +6898,12 @@ Vuoi salvare i cambiamenti? Taglia: - + The measurements file <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? Il file delle misure <br/><br/> <b>%1</b> <br/><br/> non è stato trovato. Vuoi aggiornare la posizione del file? - + Measurements were changed. Do you want to sync measurements now? @@ -6901,12 +6913,12 @@ Vuoi salvare i cambiamenti? - + Measurements have been synced - + The document has no write permissions. @@ -6926,12 +6938,12 @@ Vuoi salvare i cambiamenti? - + read only - + Load Individual @@ -6986,37 +6998,37 @@ Vuoi salvare i cambiamenti? - - + + Individual measurements Misure individuali - - + + Multisize measurements - + Pattern files File Modello - + Wiki - + Forum - + Name Nome @@ -7031,17 +7043,17 @@ Vuoi salvare i cambiamenti? Formula - + You can't use Layout mode yet. - + Application doesn't support multisize table with inches. - + Couldn't set size. Need a file with multisize measurements. @@ -7051,7 +7063,7 @@ Vuoi salvare i cambiamenti? - + Preview @@ -7082,13 +7094,13 @@ Vuoi salvare i cambiamenti? - - + + Piece - + Utilities @@ -7124,8 +7136,8 @@ Vuoi salvare i cambiamenti? - - + + Group Manager @@ -7140,7 +7152,7 @@ Vuoi salvare i cambiamenti? - + Points Toolbar @@ -7190,36 +7202,36 @@ Vuoi salvare i cambiamenti? - - + + Line between 2 Points (Alt+L) - + Tools for performing operations on objects - + Rotate Selected Objects (R) - - + + Export Draft Blocks (E, D) - + Tools for adding pattern pieces. - + Add Details @@ -7230,17 +7242,17 @@ Vuoi salvare i cambiamenti? - + Unite 2 Pieces (U) - + View Toolbar - + Draft @@ -7303,7 +7315,7 @@ Vuoi salvare i cambiamenti? - + Mirror by Line @@ -7470,7 +7482,7 @@ Vuoi salvare i cambiamenti? - + Fit All @@ -7496,7 +7508,7 @@ Vuoi salvare i cambiamenti? - + Shortcuts @@ -7521,7 +7533,7 @@ Vuoi salvare i cambiamenti? - + Load multisize @@ -7847,7 +7859,7 @@ Vuoi salvare i cambiamenti? - + Calculator @@ -7868,7 +7880,7 @@ Vuoi salvare i cambiamenti? - + Export Draft Blocks @@ -7883,7 +7895,7 @@ Vuoi salvare i cambiamenti? Esporta - + Seam Allowance @@ -7913,12 +7925,12 @@ Vuoi salvare i cambiamenti? - + Measurement file doesn't include all the required measurements. - + <b>Tool::Operations - Create Group:</b> Select one or more objects - Hold <b>%1</b> for multiple selection, Press <b>ENTER</b> to finish group creation @@ -7948,13 +7960,13 @@ Vuoi salvare i cambiamenti? - + Draft Block: - + Rotate @@ -7984,7 +7996,13 @@ Vuoi salvare i cambiamenti? - + + + Import Image + + + + Piece mode @@ -7994,8 +8012,8 @@ Vuoi salvare i cambiamenti? - - + + Pattern Pieces @@ -8010,7 +8028,7 @@ Vuoi salvare i cambiamenti? - + Name: Nome: @@ -8030,7 +8048,7 @@ Vuoi salvare i cambiamenti? - + You don't have any pieces to export. Please, include at least one piece in layout. @@ -8045,7 +8063,7 @@ Vuoi salvare i cambiamenti? - + <b>Tool::Piece - Add New Pattern Piece:</b> Select main path of objects clockwise. @@ -8065,146 +8083,146 @@ Vuoi salvare i cambiamenti? - + <b>Tool::Details - Union:</b> Select pattern piece - + Draft block %1 - + Draft Block %1 - - + + Point - On Bisector (O, B) - - + + Point - Length to Line (P, S) - - + + Point - Intersect Arc and Line (A, L) - - + + Point - Intersect Axis and Triangle (X, T) - - + + Point - Intersect XY (X, Y) - - + + Point - Intersect Line and Perpendicular (L, P) - - + + Point - Intersect Line and Axis (L, X) - - + + Point - On Perpendicular (O, P) - - + + Point - Length and Angle (L, A) - - + + Point - On Line (O, L) - - + + Point - Midpoint on Line (Shift+O, Shift+L) - - + + Point - Intersect Lines (I, L) - - + + Curve - Interactive (Alt+C) - - + + Spline - Interactive (Alt+S) - - + + Curve - Fixed (Alt+Shift+C) - - + + Spline - Fixed (Alt+Shift+S) - + Point - On Spline (O, S) - + Point - Intersect Curves (I, C) - - + + Point - Intersect Curve and Axis (C, X) - + Point - On Curve (O, C) - + Arc - Radius and Angles (Alt+A) - + Point - On Arc (O, A) @@ -8235,90 +8253,101 @@ Vuoi salvare i cambiamenti? - + Arc - Radius and Length (Alt+Shift+A) - - + + Arc - Elliptical (Alt+E) - - + + Mirror Objects by Line (M, L) - - + + Mirror Objects by Axis (M, A) - - + + Move Objects (Alt+M) - - + + True Darts (T, D) - - + + Add New Pattern Piece (N, P) - - + + Add Anchor Point (A, P) - - + + Insert Nodes (I, N) - - + + Add Internal Path (I, P) - - + + Tools for inserting or modifying images. + + + + + + Import Image (Alt + I) + + + + + Export Pieces (E, P) - + New Print Layout (N, L) - + Export Layout (E, L) - + Contains information about custom and internal variables - + Alt+M @@ -8632,12 +8661,12 @@ Vuoi salvare i cambiamenti? - + Activate last used tool (Ctrl+Shift+L) - + Zoom to Selected (Ctrl+Right) @@ -8662,7 +8691,27 @@ Vuoi salvare i cambiamenti? - + + Images tools + + + + + Delete + Elimina + + + + Align + + + + + Lock + + + + Zoom to point (Ctrl + Alt + P) @@ -8672,12 +8721,17 @@ Vuoi salvare i cambiamenti? - + + Alt+I + + + + Please provide additional measurements: %1 - + <b>Tool::Point - Midpoint on Line</b>: Select first point @@ -8827,7 +8881,52 @@ Vuoi salvare i cambiamenti? - + + + Can't read image + + + + + + Could not read the image. + + + + + It may be corrupted... + + + + + It may be corrupted or empty... + + + + + Confirm deletion + Conferma cancellazione + + + + Do you really want to delete? + Vuoi veramente cancellare? + + + + + + + Images + Immagini + + + + Open Image File + + + + Zoom to Point @@ -8837,7 +8936,7 @@ Vuoi salvare i cambiamenti? Punto: - + Intersect Arc and Line @@ -8847,8 +8946,8 @@ Vuoi salvare i cambiamenti? - - + + Add Objects to Group (G) @@ -8859,7 +8958,7 @@ Vuoi salvare i cambiamenti? - + Add Group Objects @@ -8869,7 +8968,7 @@ Vuoi salvare i cambiamenti? - + Can not save file. @@ -8886,36 +8985,36 @@ Vuoi salvare i cambiamenti? - + Ctrl+E - + untitled senza titolo - + Failed to lock. This file already opened in another window. Expect collisions when running 2 copies of the program. - + Pen Toolbar - + Toolbars - - + + - - + + File exception. @@ -8928,12 +9027,12 @@ Vuoi salvare i cambiamenti? - + pattern modello - + Base name used for new points. Press enter to temporarily add it to the list. @@ -11821,7 +11920,7 @@ Press enter to temporarily add it to the list. Modifica - + Open Directory Apri Cartella @@ -11836,7 +11935,12 @@ Press enter to temporarily add it to the list. - + + My Images + + + + My Patterns @@ -12140,12 +12244,12 @@ Press enter to temporarily add it to the list. QObject - + Create new pattern piece to start working. Crea nuovo pezzo di cartamodello per iniziare a lavorare. - + mm mm @@ -12182,12 +12286,12 @@ Press enter to temporarily add it to the list. Aggiungi nodo - + Changes applied. Modifiche applicate. - + Wrong tag name '%1'. @@ -12545,6 +12649,19 @@ Press enter to temporarily add it to the list. Rinomina la parte di cartamodello + + ResizeHandlesItem + + + Press <b>CTRL</b> to scale around the center - <b> Aspect ratio locked </b> + + + + + Press <b>CTRL</b> to scale around the center, <b>SHIFT</b> to scale uniformly. + + + SavePieceOptions @@ -13334,12 +13451,12 @@ When unchecked the period is used. - + F2 - + Point Punto @@ -13729,6 +13846,21 @@ When unchecked the period is used. E, D + + + Images + Immagini + + + + Import Image + + + + + Alt + I + + Pattern Piece @@ -13946,8 +14078,8 @@ When unchecked the period is used. Aiuto - - + + Keyboard Shortcuts @@ -13957,7 +14089,7 @@ When unchecked the period is used. - + Shift+P @@ -13967,7 +14099,7 @@ When unchecked the period is used. - + Export PDF @@ -14926,7 +15058,7 @@ load in SeamlyME as usual. Tool - + First point Primo punto @@ -15156,7 +15288,7 @@ load in SeamlyME as usual. Impossibile trovare strumento sulla tavola. - + Error creating or updating group @@ -15783,7 +15915,7 @@ load in SeamlyME as usual. VCommonSettings - + measurements Misure @@ -15805,11 +15937,16 @@ load in SeamlyME as usual. + images + + + + label templates - + bodyscans @@ -16648,7 +16785,7 @@ load in SeamlyME as usual. VToolLine - + Length Lunghezza @@ -17471,7 +17608,7 @@ load in SeamlyME as usual. Linea_ - + Center point Punto centrale diff --git a/share/translations/seamly2d_nl_NL.ts b/share/translations/seamly2d_nl_NL.ts index f223de1f045c..930daf4dcfad 100644 --- a/share/translations/seamly2d_nl_NL.ts +++ b/share/translations/seamly2d_nl_NL.ts @@ -5078,7 +5078,7 @@ p, li { white-space: pre-wrap; } FvUpdater - + Feed download failed: %1. Doorstroming van download is mislukt: %1. @@ -5243,7 +5243,7 @@ Do you want to download it? - + %1 - Base point %1 - Basis punt @@ -5446,7 +5446,7 @@ Do you want to download it? - + Group color @@ -5523,7 +5523,7 @@ Do you want to download it? - + Name Naam @@ -6358,40 +6358,40 @@ Apply settings anyway? Seamly2D - + Tools for creating points. Gereedschap om punten te maken. - - + + - + Point Punt - + Tools for creating lines. Gereedschap om lijnen te maken. - - + + - - + + Line Lijn - + Tools for creating curves. Gereedschap om krommes te maken. - - + + Curve Kromme @@ -6402,14 +6402,14 @@ Apply settings anyway? Gereedschap voor het maken van bogen. - - + + Arc Boog - + &File &Bestand @@ -6420,12 +6420,12 @@ Apply settings anyway? - + Measurements Maten - + New Nieuw @@ -6456,7 +6456,7 @@ Apply settings anyway? - + Save Opslaan @@ -6471,7 +6471,7 @@ Apply settings anyway? Opslaan patroon - + Save &As... Opslaan &als... @@ -6481,19 +6481,19 @@ Apply settings anyway? Sla nog niet opgeslagen patroon op - - + + Details Details - + Pointer tools Aanwijzer gereedschap - - + + History Geschiedenis @@ -6513,27 +6513,27 @@ Apply settings anyway? E&xit - + Preferences Voorkeuren - + Report bug Rapporteer fout - + Show online help Toon online help - + About Qt Over Qt - + Save as Opslaan als @@ -6543,17 +6543,17 @@ Apply settings anyway? Kon bestand niet opslaan - + - - + + Open file Open bestand - + Error parsing file. Fout bij uitpakken bestand. @@ -6585,46 +6585,46 @@ Apply settings anyway? Slechte id. - + File saved Bestand opgeslagen - + untitled.sm2d zonder titel.sm2d - + The pattern has been modified. Do you want to save your changes? Het patroon is aangepast. Wil je de veranderingen opslaan? - - + + &Undo &Ongedaan maken - - + + &Redo &Opnieuw doen - + This file already opened in another window. Dit bestand is al geopend in een ander raamwerk. - + Wrong units. Verkeerde eenheden. - + File loaded Bestand geladen @@ -6639,26 +6639,26 @@ Wil je de veranderingen opslaan? Heropen bestanden. - - + + - + Layout Opmaak - + Settings Instellingen - - + + Print Afdrukken - + Print tiled PDF Druk papierfomaatindeling PDF af @@ -6668,7 +6668,7 @@ Wil je de veranderingen opslaan? Verdeel en sla een opmaak op in kleinere pagina's ( voor normale printers) - + Print preview Druk voorbeeldweergave af @@ -6678,70 +6678,82 @@ Wil je de veranderingen opslaan? Druk voorbeeldweergave van originele opmaak af - + Export As... Export als... - + - + Layout mode Opmaak modus - + Unsaved changes Niet opgeslagen veranderingen - + Measurements loaded Maten geladen - + You can't export empty scene. U kunt geen lege beelden exporteren. - - + + Measurement file contains invalid known measurement(s). Maten bestand bevat ongeldige bekende ma(a)t(en). - - + + Measurement file has unknown format. Maten bestand heeft een onbekende indeling. - + Measurement files types have not match. Maten bestanden types komen niet overeen. - + Couldn't sync measurements. Kan maten niet synchroniseren. - + Couldn't update measurements. Kan maten niet bijwerken. - + + Images will not be saved + + + + + Please note that the images can not be saved and that they are not affected by the undo and redo functions in the current version of the software. + +You may want to take a screenshot of the image properties dialog before closing the software to be able to recreate identically the image when opening the software again. + + + + The measurements file '%1' could not be found. Het maten bestand '%1' kon niet gevonden worden. - + Loading measurements file Laden maten bestand @@ -6777,12 +6789,12 @@ Wil je de veranderingen opslaan? Alsublieft, verstrek éen invoer bestand. - + Print an original layout Druk een originele opmaak af - + Preview tiled PDF Bekijk vooraf papierformaatindeling PDF @@ -6792,7 +6804,7 @@ Wil je de veranderingen opslaan? Druk voorbeeldweergave papierformaatindeling opmaak af - + Measurements unloaded Maten niet geladen @@ -6802,7 +6814,7 @@ Wil je de veranderingen opslaan? kan maten niet ontladen. Sommigen worden gebruikt in het patroon. - + New pattern Nieuw patroon @@ -6817,7 +6829,7 @@ Wil je de veranderingen opslaan? Creër/verander maten - + Save... Sla op... @@ -6827,7 +6839,7 @@ Wil je de veranderingen opslaan? Niet opslaan - + Locking file @@ -6859,29 +6871,29 @@ Wil je de veranderingen opslaan? Onbekende fout gebeurd, bijvoorbeeld een volledige partitie voorkomt het schrijven uit het vergrendelingsbestand. - + Operations Bewerkingen - + Close pattern Sluit patroon - + Tool pointer Gereedschap aanwijzer - + Original zoom Originele zoom - + Height: Hoogte: @@ -6891,12 +6903,12 @@ Wil je de veranderingen opslaan? Maat: - + The measurements file <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? Het maten bestand<br/><br/> <b>%1</b> <br/><br/> kon niet gevonden worden. Wil je de bestanden locatie bijwerken? - + Measurements were changed. Do you want to sync measurements now? Maten zijn gewijzigd. Wil je ze nu synchroniseren? @@ -6906,12 +6918,12 @@ Wil je de veranderingen opslaan? Graderen ondersteunt geen inches - + Measurements have been synced Maten zijn gesynchroniseerd - + The document has no write permissions. Dit document kan niet gewijzigd worden. @@ -6931,12 +6943,12 @@ Wil je de veranderingen opslaan? Het bestand is niet bewaard - + read only alleen lezen - + Load Individual Laad individueel @@ -6991,37 +7003,37 @@ Wil je de veranderingen opslaan? Laad maten niet als ze niet gebruikt worden in een patroon-bestand - - + + Individual measurements Individuele maten - - + + Multisize measurements Multimaten maten - + Pattern files Patroonbestanden - + Wiki Wiki - + Forum Forum - + Name Naam @@ -7036,17 +7048,17 @@ Wil je de veranderingen opslaan? Formule - + You can't use Layout mode yet. Je kunt Layout mode nog niet gebruiken. - + Application doesn't support multisize table with inches. Applicatie ondersteunt niet het meerdere maten tabel met inches. - + Couldn't set size. Need a file with multisize measurements. Kon de maat niet vaststellen. Heb een bestand nodig met meerdere maten metingen. @@ -7056,7 +7068,7 @@ Wil je de veranderingen opslaan? Kon de hoogte niet vaststellen. Heb een bestand nodig met meerdere maten metingen. - + Preview Voorbeeldweergave @@ -7087,13 +7099,13 @@ Wil je de veranderingen opslaan? - - + + Piece Patroondeel - + Utilities Hulpmiddelen @@ -7129,8 +7141,8 @@ Wil je de veranderingen opslaan? - - + + Group Manager Groepenbeheer @@ -7145,7 +7157,7 @@ Wil je de veranderingen opslaan? Werkbalk Gereedschappen - + Points Toolbar Werkbalk Punten @@ -7195,36 +7207,36 @@ Wil je de veranderingen opslaan? Gereedschapskist - - + + Line between 2 Points (Alt+L) Lijn tussen 2 Punten (Alt+L) - + Tools for performing operations on objects Gereedschap om bewerkingen uit te voeren op groepen objecten - + Rotate Selected Objects (R) Draai geselecteerde objecten (R) - - + + Export Draft Blocks (E, D) Exporteer Tekenblok (E,D) - + Tools for adding pattern pieces. Gereedschap om Patroondelen toe te voegen. - + Add Details Voeg Details toe @@ -7235,17 +7247,17 @@ Wil je de veranderingen opslaan? - + Unite 2 Pieces (U) Verenig 2 Patroondelen (U) - + View Toolbar Werkbalk Bekijk - + Draft Teken @@ -7308,7 +7320,7 @@ Wil je de veranderingen opslaan? - + Mirror by Line Spiegel over Lijn @@ -7475,7 +7487,7 @@ Wil je de veranderingen opslaan? Uitzoomen (Ctrl+-) - + Fit All Toon Alles @@ -7501,7 +7513,7 @@ Wil je de veranderingen opslaan? Afsluiten - + Shortcuts Sneltoetsen @@ -7526,7 +7538,7 @@ Wil je de veranderingen opslaan? Draai controlepunten en richting Kromme om (V, C) - + Load multisize Laad meerdere maten in @@ -7852,7 +7864,7 @@ Wil je de veranderingen opslaan? - + Calculator Rekenmachine @@ -7873,7 +7885,7 @@ Wil je de veranderingen opslaan? - + Export Draft Blocks Exporteer Tekenblok @@ -7888,7 +7900,7 @@ Wil je de veranderingen opslaan? Exporteer - + Seam Allowance Naadtoeslag @@ -7918,12 +7930,12 @@ Wil je de veranderingen opslaan? Ctrl+I - + Measurement file doesn't include all the required measurements. Matenbestand bevat niet alle benodigde maten. - + <b>Tool::Operations - Create Group:</b> Select one or more objects - Hold <b>%1</b> for multiple selection, Press <b>ENTER</b> to finish group creation <b>Gereedschap::Bewerkingen - Maak Groep:</b> Kies een of meer objecten - Druk <b>%1</b> voor meervoudige selectie, Druk <b>ENTER</b> om de aanmaak van de groep af te sluiten @@ -7953,13 +7965,13 @@ Wil je de veranderingen opslaan? <b>Gereedschap::Bewerkingen - Echte Figuurnaden:</b> Kies het eerste punt van de basislijn - + Draft Block: Tekenblok: - + Rotate Draaiing @@ -7989,7 +8001,13 @@ Wil je de veranderingen opslaan? Exporteer patroondelen - + + + Import Image + + + + Piece mode Patroondeel modus @@ -7999,8 +8017,8 @@ Wil je de veranderingen opslaan? U kunt de Patroondeel modus nog niet gebruiken. Maak eerst tenminste één patroondeel. - - + + Pattern Pieces Patroondelen @@ -8015,7 +8033,7 @@ Wil je de veranderingen opslaan? U kunt de Opmaak modus nog niet gebruiken. Maak eerst tenminste één patroondeel. - + Name: Naam: @@ -8035,7 +8053,7 @@ Wil je de veranderingen opslaan? De opdracht kan niet worden uitgevoerd omdat de naam van het tekenblok al bestaat. - + You don't have any pieces to export. Please, include at least one piece in layout. U hebt nog geen patroondelen om uit te voeren. Voeg tenminste één patroondeel toe aan de Opmaak. @@ -8050,7 +8068,7 @@ Wil je de veranderingen opslaan? Kan patroondelen niet exporteren. - + <b>Tool::Piece - Add New Pattern Piece:</b> Select main path of objects clockwise. <b>Gereedschap::Patroondeel - Voeg een nieuw Patroondeel toe:</b> Selecteer een pad van objecten met de klok mee. @@ -8070,146 +8088,146 @@ Wil je de veranderingen opslaan? <b>Gereedschap::Patroondeel - Voeg kernpunten toe:</b> Druk <b>%1</b> voor meervoudige selectie. Druk <b>ENTER</b> om de selectie te bevestigen - + <b>Tool::Details - Union:</b> Select pattern piece <b>Gereedschap::Patroondeel - Vereniging:</b> Selecteer een patroondeel - + Draft block %1 Tekenblok %1 - + Draft Block %1 Tekenblok %1 - - + + Point - On Bisector (O, B) Punt - Op Bisectrice (O, B) - - + + Point - Length to Line (P, S) Punt - Lengte tot Lijn (P, S) - - + + Point - Intersect Arc and Line (A, L) Punt - Snijpunt As en Lijn (A, L) - - + + Point - Intersect Axis and Triangle (X, T) Punt - Snijpunt As en Driehoek (X, T) - - + + Point - Intersect XY (X, Y) Punt - snijpunt XY (X, Y) - - + + Point - Intersect Line and Perpendicular (L, P) Punt - Snijpunt Lijn en Loodrechte (L, P) - - + + Point - Intersect Line and Axis (L, X) Punt - Snijpunt Lijn en As (L, X) - - + + Point - On Perpendicular (O, P) Punt - Op Loodrechte (O, P) - - + + Point - Length and Angle (L, A) Punt - Lengte en Hoek (L, A) - - + + Point - On Line (O, L) Punt - Op Lijn (O, L) - - + + Point - Midpoint on Line (Shift+O, Shift+L) Punt - Middelpunt op Lijn (Shift+O, Shift+L) - - + + Point - Intersect Lines (I, L) Punt - Snijpunt Lijnen (I, L) - - + + Curve - Interactive (Alt+C) Kromme - Interactief (Alt+C) - - + + Spline - Interactive (Alt+S) Spline - Interactief (Alt+S) - - + + Curve - Fixed (Alt+Shift+C) Kromme - Vast (A;lt+Shift+C) - - + + Spline - Fixed (Alt+Shift+S) Spline - Vast (Alt+Shift+S) - + Point - On Spline (O, S) Punt - Op Spline (O, S) - + Point - Intersect Curves (I, C) Punt - Snijpunte Krommes (I, C) - - + + Point - Intersect Curve and Axis (C, X) Punt - Snijpunte Kromme en As (C, X) - + Point - On Curve (O, C) Punt - Op Kromme (O, C) - + Arc - Radius and Angles (Alt+A) Boog - Straal en Hoeken (Alt+A) - + Point - On Arc (O, A) Punt - Op Boog (O, A) @@ -8240,90 +8258,101 @@ Wil je de veranderingen opslaan? - + Arc - Radius and Length (Alt+Shift+A) Boog - Straal en Lengte (Alt+Shift+A) - - + + Arc - Elliptical (Alt+E) Boog - Ellipsvormig (Alt+E) - - + + Mirror Objects by Line (M, L) Spiegel Objecten over LIjn (M, L) - - + + Mirror Objects by Axis (M, A) Spiegel Objecten over As (M, A) - - + + Move Objects (Alt+M) Verplaats Objecten (Alt+M) - - + + True Darts (T, D) Echte Figuurnaden (T, D) - - + + Add New Pattern Piece (N, P) Voeg nieuw Patroondeel toe (N, P) - - + + Add Anchor Point (A, P) Voeg Ankerpunt toe (A, P) - - + + Insert Nodes (I, N) Voeg kernpunten in (I, N) - - + + Add Internal Path (I, P) Voeg binnenpad toe (I, P) - - + + Tools for inserting or modifying images. + + + + + + Import Image (Alt + I) + + + + + Export Pieces (E, P) Exporteer Patroondelen (E, P) - + New Print Layout (N, L) Nieuwe afdrukopmaak (N, L) - + Export Layout (E, L) Exporteer Opmaak (E, L) - + Contains information about custom and internal variables - + Alt+M Alt+M @@ -8637,12 +8666,12 @@ Wil je de veranderingen opslaan? Alt+Shift+A - + Activate last used tool (Ctrl+Shift+L) Gebruik Laatstgebruikte Gereedschap (Ctrl+Shift+L) - + Zoom to Selected (Ctrl+Right) Zoom in op geselecteerd object (Ctrl+Rechts) @@ -8667,7 +8696,27 @@ Wil je de veranderingen opslaan? - + + Images tools + + + + + Delete + + + + + Align + + + + + Lock + + + + Zoom to point (Ctrl + Alt + P) Zoom in op punt (Ctrl+Alt+P) @@ -8677,12 +8726,17 @@ Wil je de veranderingen opslaan? Ctrl+Alt+P - + + Alt+I + + + + Please provide additional measurements: %1 Voeg extra maten toe: %1 - + <b>Tool::Point - Midpoint on Line</b>: Select first point <b>Gereedschap::Punt - Middelpunt op Lijn</b>: Kies eerste punt @@ -8832,7 +8886,52 @@ Wil je de veranderingen opslaan? <b>Gereedschap::Boog - Ellipsvormig:</b> Kies middelpunt van ellispvormige boog - + + + Can't read image + + + + + + Could not read the image. + + + + + It may be corrupted... + + + + + It may be corrupted or empty... + + + + + Confirm deletion + Bevestig verwijdering + + + + Do you really want to delete? + Wil je dit echt verwijderen? + + + + + + + Images + Afbeeldingen + + + + Open Image File + + + + Zoom to Point Zoom in op Punt @@ -8842,7 +8941,7 @@ Wil je de veranderingen opslaan? Punt: - + Intersect Arc and Line Snijpunt Boog en Lijn @@ -8852,8 +8951,8 @@ Wil je de veranderingen opslaan? Snijpunt Kromme & As - - + + Add Objects to Group (G) @@ -8864,7 +8963,7 @@ Wil je de veranderingen opslaan? - + Add Group Objects @@ -8874,7 +8973,7 @@ Wil je de veranderingen opslaan? - + Can not save file. @@ -8891,36 +8990,36 @@ Wil je de veranderingen opslaan? - + Ctrl+E Ctrl+E - + untitled zonder titel - + Failed to lock. This file already opened in another window. Expect collisions when running 2 copies of the program. Kon bestand niet exclusief openen. Dit bestand wordt al gebruikt in een ander venster. Verwacht botsingen als er twee copieën van het programma draaien. - + Pen Toolbar Werkbalk Pen - + Toolbars Werkbalken - - + + - - + + File exception. @@ -8933,12 +9032,12 @@ Wil je de veranderingen opslaan? - + pattern patroon - + Base name used for new points. Press enter to temporarily add it to the list. @@ -11826,7 +11925,7 @@ Press enter to temporarily add it to the list. Bewerk - + Open Directory Open Map @@ -11841,7 +11940,12 @@ Press enter to temporarily add it to the list. Mijn Multimaten Maten - + + My Images + + + + My Patterns Mijn patronen @@ -12145,12 +12249,12 @@ Press enter to temporarily add it to the list. QObject - + Create new pattern piece to start working. Maak een nieuw patroondeel om te gaan werken. - + mm mm @@ -12187,12 +12291,12 @@ Press enter to temporarily add it to the list. voeg kernpunt toe - + Changes applied. Wijzigingen zijn toegepast. - + Wrong tag name '%1'. Verkeerde naam label ' %1'. @@ -12550,6 +12654,19 @@ Press enter to temporarily add it to the list. hernoem patroondeel + + ResizeHandlesItem + + + Press <b>CTRL</b> to scale around the center - <b> Aspect ratio locked </b> + + + + + Press <b>CTRL</b> to scale around the center, <b>SHIFT</b> to scale uniformly. + + + SavePieceOptions @@ -13339,12 +13456,12 @@ When unchecked the period is used. - + F2 F2 - + Point Punt @@ -13734,6 +13851,21 @@ When unchecked the period is used. E, D E, D + + + Images + Afbeeldingen + + + + Import Image + + + + + Alt + I + + Pattern Piece @@ -13951,8 +14083,8 @@ When unchecked the period is used. Help - - + + Keyboard Shortcuts @@ -13962,7 +14094,7 @@ When unchecked the period is used. K - + Shift+P Shift+P @@ -13972,7 +14104,7 @@ When unchecked the period is used. T - + Export PDF Exporteer PDF @@ -14936,7 +15068,7 @@ load in SeamlyME as usual. Tool - + First point Eerste punt @@ -15166,7 +15298,7 @@ load in SeamlyME as usual. Kan gereedschap niet vinden in tabel. - + Error creating or updating group Fout bij het maken of bijwerken van groep @@ -15793,7 +15925,7 @@ load in SeamlyME as usual. VCommonSettings - + measurements maten @@ -15815,11 +15947,16 @@ load in SeamlyME as usual. + images + + + + label templates labelsjablonen - + bodyscans @@ -16660,7 +16797,7 @@ load in SeamlyME as usual. VToolLine - + Length Lengte @@ -17483,7 +17620,7 @@ load in SeamlyME as usual. Lijn_ - + Center point Middelste punt diff --git a/share/translations/seamly2d_pt_BR.ts b/share/translations/seamly2d_pt_BR.ts index 2f7ebb4a6300..cb5569a96531 100644 --- a/share/translations/seamly2d_pt_BR.ts +++ b/share/translations/seamly2d_pt_BR.ts @@ -5073,7 +5073,7 @@ p, li { white-space: pre-wrap; } FvUpdater - + Feed download failed: %1. @@ -5238,7 +5238,7 @@ Do you want to download it? - + %1 - Base point %1 - ponto base @@ -5441,7 +5441,7 @@ Do you want to download it? - + Group color @@ -5518,7 +5518,7 @@ Do you want to download it? - + Name Nome @@ -6350,40 +6350,40 @@ Apply settings anyway? - + Tools for creating points. - - + + - + Point - + Tools for creating lines. - - + + - - + + Line Linha - + Tools for creating curves. - - + + Curve Curva @@ -6394,14 +6394,14 @@ Apply settings anyway? - - + + Arc Arco - + &File @@ -6412,12 +6412,12 @@ Apply settings anyway? - + Measurements Medidas - + New @@ -6448,7 +6448,7 @@ Apply settings anyway? - + Save Salvar @@ -6463,7 +6463,7 @@ Apply settings anyway? - + Save &As... @@ -6473,19 +6473,19 @@ Apply settings anyway? - - + + Details Detalhes - + Pointer tools - - + + History Histórico @@ -6505,27 +6505,27 @@ Apply settings anyway? - + Preferences Preferências - + Report bug - + Show online help - + About Qt - + Save as @@ -6535,17 +6535,17 @@ Apply settings anyway? - + - - + + Open file Abrir arquivo - + Error parsing file. @@ -6577,45 +6577,45 @@ Apply settings anyway? - + File saved Arquivo Salvo - + untitled.sm2d - + The pattern has been modified. Do you want to save your changes? - - + + &Undo - - + + &Redo - + This file already opened in another window. - + Wrong units. - + File loaded Arquivo carregado @@ -6630,26 +6630,26 @@ Do you want to save your changes? - - + + - + Layout - + Settings Configurações - - + + Print - + Print tiled PDF @@ -6659,7 +6659,7 @@ Do you want to save your changes? - + Print preview @@ -6669,70 +6669,82 @@ Do you want to save your changes? - + Export As... - + - + Layout mode - + Unsaved changes - + Measurements loaded - + You can't export empty scene. - - + + Measurement file contains invalid known measurement(s). - - + + Measurement file has unknown format. - + Measurement files types have not match. - + Couldn't sync measurements. - + Couldn't update measurements. - + + Images will not be saved + + + + + Please note that the images can not be saved and that they are not affected by the undo and redo functions in the current version of the software. + +You may want to take a screenshot of the image properties dialog before closing the software to be able to recreate identically the image when opening the software again. + + + + The measurements file '%1' could not be found. - + Loading measurements file @@ -6768,12 +6780,12 @@ Do you want to save your changes? - + Print an original layout - + Preview tiled PDF @@ -6783,7 +6795,7 @@ Do you want to save your changes? - + Measurements unloaded @@ -6793,7 +6805,7 @@ Do you want to save your changes? - + New pattern Novo molde @@ -6808,7 +6820,7 @@ Do you want to save your changes? - + Save... @@ -6818,7 +6830,7 @@ Do you want to save your changes? - + Locking file @@ -6850,29 +6862,29 @@ Do you want to save your changes? - + Operations - + Close pattern - + Tool pointer - + Original zoom - + Height: Altura: @@ -6882,12 +6894,12 @@ Do you want to save your changes? Tamanho: - + The measurements file <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? - + Measurements were changed. Do you want to sync measurements now? @@ -6897,12 +6909,12 @@ Do you want to save your changes? - + Measurements have been synced - + The document has no write permissions. @@ -6922,12 +6934,12 @@ Do you want to save your changes? - + read only - + Load Individual @@ -6982,37 +6994,37 @@ Do you want to save your changes? - - + + Individual measurements Medidas individuais - - + + Multisize measurements - + Pattern files - + Wiki - + Forum - + Name Nome @@ -7027,17 +7039,17 @@ Do you want to save your changes? Fórmula - + You can't use Layout mode yet. - + Application doesn't support multisize table with inches. - + Couldn't set size. Need a file with multisize measurements. @@ -7047,7 +7059,7 @@ Do you want to save your changes? - + Preview @@ -7078,13 +7090,13 @@ Do you want to save your changes? - - + + Piece - + Utilities @@ -7120,8 +7132,8 @@ Do you want to save your changes? - - + + Group Manager @@ -7136,7 +7148,7 @@ Do you want to save your changes? - + Points Toolbar @@ -7186,36 +7198,36 @@ Do you want to save your changes? - - + + Line between 2 Points (Alt+L) - + Tools for performing operations on objects - + Rotate Selected Objects (R) - - + + Export Draft Blocks (E, D) - + Tools for adding pattern pieces. - + Add Details @@ -7226,17 +7238,17 @@ Do you want to save your changes? - + Unite 2 Pieces (U) - + View Toolbar - + Draft @@ -7299,7 +7311,7 @@ Do you want to save your changes? - + Mirror by Line @@ -7466,7 +7478,7 @@ Do you want to save your changes? - + Fit All @@ -7492,7 +7504,7 @@ Do you want to save your changes? - + Shortcuts @@ -7517,7 +7529,7 @@ Do you want to save your changes? - + Load multisize @@ -7843,7 +7855,7 @@ Do you want to save your changes? - + Calculator @@ -7864,7 +7876,7 @@ Do you want to save your changes? - + Export Draft Blocks @@ -7879,7 +7891,7 @@ Do you want to save your changes? Exportar - + Seam Allowance @@ -7909,12 +7921,12 @@ Do you want to save your changes? - + Measurement file doesn't include all the required measurements. - + <b>Tool::Operations - Create Group:</b> Select one or more objects - Hold <b>%1</b> for multiple selection, Press <b>ENTER</b> to finish group creation @@ -7944,13 +7956,13 @@ Do you want to save your changes? - + Draft Block: - + Rotate @@ -7980,7 +7992,13 @@ Do you want to save your changes? - + + + Import Image + + + + Piece mode @@ -7990,8 +8008,8 @@ Do you want to save your changes? - - + + Pattern Pieces @@ -8006,7 +8024,7 @@ Do you want to save your changes? - + Name: Nome: @@ -8026,7 +8044,7 @@ Do you want to save your changes? - + You don't have any pieces to export. Please, include at least one piece in layout. @@ -8041,7 +8059,7 @@ Do you want to save your changes? - + <b>Tool::Piece - Add New Pattern Piece:</b> Select main path of objects clockwise. @@ -8061,146 +8079,146 @@ Do you want to save your changes? - + <b>Tool::Details - Union:</b> Select pattern piece - + Draft block %1 - + Draft Block %1 - - + + Point - On Bisector (O, B) - - + + Point - Length to Line (P, S) - - + + Point - Intersect Arc and Line (A, L) - - + + Point - Intersect Axis and Triangle (X, T) - - + + Point - Intersect XY (X, Y) - - + + Point - Intersect Line and Perpendicular (L, P) - - + + Point - Intersect Line and Axis (L, X) - - + + Point - On Perpendicular (O, P) - - + + Point - Length and Angle (L, A) - - + + Point - On Line (O, L) - - + + Point - Midpoint on Line (Shift+O, Shift+L) - - + + Point - Intersect Lines (I, L) - - + + Curve - Interactive (Alt+C) - - + + Spline - Interactive (Alt+S) - - + + Curve - Fixed (Alt+Shift+C) - - + + Spline - Fixed (Alt+Shift+S) - + Point - On Spline (O, S) - + Point - Intersect Curves (I, C) - - + + Point - Intersect Curve and Axis (C, X) - + Point - On Curve (O, C) - + Arc - Radius and Angles (Alt+A) - + Point - On Arc (O, A) @@ -8231,90 +8249,101 @@ Do you want to save your changes? - + Arc - Radius and Length (Alt+Shift+A) - - + + Arc - Elliptical (Alt+E) - - + + Mirror Objects by Line (M, L) - - + + Mirror Objects by Axis (M, A) - - + + Move Objects (Alt+M) - - + + True Darts (T, D) - - + + Add New Pattern Piece (N, P) - - + + Add Anchor Point (A, P) - - + + Insert Nodes (I, N) - - + + Add Internal Path (I, P) - - + + Tools for inserting or modifying images. + + + + + + Import Image (Alt + I) + + + + + Export Pieces (E, P) - + New Print Layout (N, L) - + Export Layout (E, L) - + Contains information about custom and internal variables - + Alt+M @@ -8628,12 +8657,12 @@ Do you want to save your changes? - + Activate last used tool (Ctrl+Shift+L) - + Zoom to Selected (Ctrl+Right) @@ -8658,7 +8687,27 @@ Do you want to save your changes? - + + Images tools + + + + + Delete + Excluir + + + + Align + + + + + Lock + + + + Zoom to point (Ctrl + Alt + P) @@ -8668,12 +8717,17 @@ Do you want to save your changes? - + + Alt+I + + + + Please provide additional measurements: %1 - + <b>Tool::Point - Midpoint on Line</b>: Select first point @@ -8823,7 +8877,52 @@ Do you want to save your changes? - + + + Can't read image + + + + + + Could not read the image. + + + + + It may be corrupted... + + + + + It may be corrupted or empty... + + + + + Confirm deletion + + + + + Do you really want to delete? + + + + + + + + Images + Imagens + + + + Open Image File + + + + Zoom to Point @@ -8833,7 +8932,7 @@ Do you want to save your changes? Ponto: - + Intersect Arc and Line @@ -8843,8 +8942,8 @@ Do you want to save your changes? - - + + Add Objects to Group (G) @@ -8855,7 +8954,7 @@ Do you want to save your changes? - + Add Group Objects @@ -8865,7 +8964,7 @@ Do you want to save your changes? - + Can not save file. @@ -8882,36 +8981,36 @@ Do you want to save your changes? - + Ctrl+E - + untitled sem título - + Failed to lock. This file already opened in another window. Expect collisions when running 2 copies of the program. - + Pen Toolbar - + Toolbars - - + + - - + + File exception. @@ -8924,12 +9023,12 @@ Do you want to save your changes? - + pattern molde - + Base name used for new points. Press enter to temporarily add it to the list. @@ -11817,7 +11916,7 @@ Press enter to temporarily add it to the list. Editar - + Open Directory @@ -11832,7 +11931,12 @@ Press enter to temporarily add it to the list. - + + My Images + + + + My Patterns @@ -12136,12 +12240,12 @@ Press enter to temporarily add it to the list. QObject - + Create new pattern piece to start working. - + mm mm @@ -12178,12 +12282,12 @@ Press enter to temporarily add it to the list. - + Changes applied. - + Wrong tag name '%1'. @@ -12541,6 +12645,19 @@ Press enter to temporarily add it to the list. + + ResizeHandlesItem + + + Press <b>CTRL</b> to scale around the center - <b> Aspect ratio locked </b> + + + + + Press <b>CTRL</b> to scale around the center, <b>SHIFT</b> to scale uniformly. + + + SavePieceOptions @@ -13330,12 +13447,12 @@ When unchecked the period is used. - + F2 - + Point @@ -13725,6 +13842,21 @@ When unchecked the period is used. E, D + + + Images + Imagens + + + + Import Image + + + + + Alt + I + + Pattern Piece @@ -13942,8 +14074,8 @@ When unchecked the period is used. - - + + Keyboard Shortcuts @@ -13953,7 +14085,7 @@ When unchecked the period is used. - + Shift+P @@ -13963,7 +14095,7 @@ When unchecked the period is used. - + Export PDF @@ -14921,7 +15053,7 @@ load in SeamlyME as usual. Tool - + First point Primeiro ponto @@ -15151,7 +15283,7 @@ load in SeamlyME as usual. - + Error creating or updating group @@ -15778,7 +15910,7 @@ load in SeamlyME as usual. VCommonSettings - + measurements @@ -15800,11 +15932,16 @@ load in SeamlyME as usual. + images + + + + label templates - + bodyscans @@ -16643,7 +16780,7 @@ load in SeamlyME as usual. VToolLine - + Length Comprimento @@ -17466,7 +17603,7 @@ load in SeamlyME as usual. Linha_ - + Center point Ponto central diff --git a/share/translations/seamly2d_ro_RO.ts b/share/translations/seamly2d_ro_RO.ts index 64abefdc00dd..f6d36ae43d16 100644 --- a/share/translations/seamly2d_ro_RO.ts +++ b/share/translations/seamly2d_ro_RO.ts @@ -5073,7 +5073,7 @@ p, li { white-space: pre-wrap; } FvUpdater - + Feed download failed: %1. @@ -5238,7 +5238,7 @@ Do you want to download it? - + %1 - Base point %1 Punct de bază @@ -5441,7 +5441,7 @@ Do you want to download it? - + Group color @@ -5518,7 +5518,7 @@ Do you want to download it? - + Name Nume @@ -6350,40 +6350,40 @@ Apply settings anyway? Seamly2D - + Tools for creating points. Instrumente pentru crearea de puncte. - - + + - + Point Punct - + Tools for creating lines. Instrumente pentru crearea de linii. - - + + - - + + Line Linie - + Tools for creating curves. Instrumente pentru crearea curbe. - - + + Curve Curbură @@ -6394,14 +6394,14 @@ Apply settings anyway? Instrumente pentru crearea de arce. - - + + Arc Curbura - + &File & Fișier @@ -6412,12 +6412,12 @@ Apply settings anyway? - + Measurements Măsurători - + New Nou @@ -6448,7 +6448,7 @@ Apply settings anyway? - + Save Salvează @@ -6463,7 +6463,7 @@ Apply settings anyway? Salvează tipar - + Save &As... Salvează &Ca și..... @@ -6473,19 +6473,19 @@ Apply settings anyway? Salvează tiparul care încă nu este salvat - - + + Details Detalii - + Pointer tools Instrumente indicator - - + + History Decurs @@ -6505,27 +6505,27 @@ Apply settings anyway? E&xit - + Preferences Preferințe - + Report bug Raportează o eroare - + Show online help Arată ajutorul online - + About Qt Despre Qt - + Save as Salvează ca și @@ -6535,17 +6535,17 @@ Apply settings anyway? Fișierul nu a putut fii salvat - + - - + + Open file Deschide fișier - + Error parsing file. @@ -6577,45 +6577,45 @@ Apply settings anyway? - + File saved - + untitled.sm2d - + The pattern has been modified. Do you want to save your changes? - - + + &Undo &Anulare - - + + &Redo - + This file already opened in another window. - + Wrong units. Unități de măsură greșite. - + File loaded @@ -6630,26 +6630,26 @@ Do you want to save your changes? - - + + - + Layout - + Settings - - + + Print - + Print tiled PDF @@ -6659,7 +6659,7 @@ Do you want to save your changes? - + Print preview @@ -6669,70 +6669,82 @@ Do you want to save your changes? - + Export As... - + - + Layout mode - + Unsaved changes - + Measurements loaded - + You can't export empty scene. - - + + Measurement file contains invalid known measurement(s). - - + + Measurement file has unknown format. - + Measurement files types have not match. - + Couldn't sync measurements. - + Couldn't update measurements. - + + Images will not be saved + + + + + Please note that the images can not be saved and that they are not affected by the undo and redo functions in the current version of the software. + +You may want to take a screenshot of the image properties dialog before closing the software to be able to recreate identically the image when opening the software again. + + + + The measurements file '%1' could not be found. - + Loading measurements file @@ -6768,12 +6780,12 @@ Do you want to save your changes? - + Print an original layout - + Preview tiled PDF @@ -6783,7 +6795,7 @@ Do you want to save your changes? - + Measurements unloaded @@ -6793,7 +6805,7 @@ Do you want to save your changes? - + New pattern @@ -6808,7 +6820,7 @@ Do you want to save your changes? - + Save... @@ -6818,7 +6830,7 @@ Do you want to save your changes? - + Locking file @@ -6850,29 +6862,29 @@ Do you want to save your changes? - + Operations - + Close pattern - + Tool pointer - + Original zoom - + Height: Înălțime: @@ -6882,12 +6894,12 @@ Do you want to save your changes? - + The measurements file <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? - + Measurements were changed. Do you want to sync measurements now? @@ -6897,12 +6909,12 @@ Do you want to save your changes? - + Measurements have been synced - + The document has no write permissions. @@ -6922,12 +6934,12 @@ Do you want to save your changes? - + read only - + Load Individual @@ -6982,37 +6994,37 @@ Do you want to save your changes? - - + + Individual measurements Măsuri individuale - - + + Multisize measurements - + Pattern files Fișiere tipar - + Wiki - + Forum - + Name Nume @@ -7027,17 +7039,17 @@ Do you want to save your changes? Formula - + You can't use Layout mode yet. - + Application doesn't support multisize table with inches. - + Couldn't set size. Need a file with multisize measurements. @@ -7047,7 +7059,7 @@ Do you want to save your changes? - + Preview @@ -7078,13 +7090,13 @@ Do you want to save your changes? - - + + Piece - + Utilities @@ -7120,8 +7132,8 @@ Do you want to save your changes? - - + + Group Manager @@ -7136,7 +7148,7 @@ Do you want to save your changes? - + Points Toolbar @@ -7186,36 +7198,36 @@ Do you want to save your changes? - - + + Line between 2 Points (Alt+L) - + Tools for performing operations on objects - + Rotate Selected Objects (R) - - + + Export Draft Blocks (E, D) - + Tools for adding pattern pieces. - + Add Details @@ -7226,17 +7238,17 @@ Do you want to save your changes? - + Unite 2 Pieces (U) - + View Toolbar - + Draft @@ -7299,7 +7311,7 @@ Do you want to save your changes? - + Mirror by Line @@ -7466,7 +7478,7 @@ Do you want to save your changes? - + Fit All @@ -7492,7 +7504,7 @@ Do you want to save your changes? - + Shortcuts @@ -7517,7 +7529,7 @@ Do you want to save your changes? - + Load multisize @@ -7843,7 +7855,7 @@ Do you want to save your changes? - + Calculator @@ -7864,7 +7876,7 @@ Do you want to save your changes? - + Export Draft Blocks @@ -7879,7 +7891,7 @@ Do you want to save your changes? - + Seam Allowance @@ -7909,12 +7921,12 @@ Do you want to save your changes? - + Measurement file doesn't include all the required measurements. - + <b>Tool::Operations - Create Group:</b> Select one or more objects - Hold <b>%1</b> for multiple selection, Press <b>ENTER</b> to finish group creation @@ -7944,13 +7956,13 @@ Do you want to save your changes? - + Draft Block: - + Rotate @@ -7980,7 +7992,13 @@ Do you want to save your changes? - + + + Import Image + + + + Piece mode @@ -7990,8 +8008,8 @@ Do you want to save your changes? - - + + Pattern Pieces @@ -8006,7 +8024,7 @@ Do you want to save your changes? - + Name: @@ -8026,7 +8044,7 @@ Do you want to save your changes? - + You don't have any pieces to export. Please, include at least one piece in layout. @@ -8041,7 +8059,7 @@ Do you want to save your changes? - + <b>Tool::Piece - Add New Pattern Piece:</b> Select main path of objects clockwise. @@ -8061,146 +8079,146 @@ Do you want to save your changes? - + <b>Tool::Details - Union:</b> Select pattern piece - + Draft block %1 - + Draft Block %1 - - + + Point - On Bisector (O, B) - - + + Point - Length to Line (P, S) - - + + Point - Intersect Arc and Line (A, L) - - + + Point - Intersect Axis and Triangle (X, T) - - + + Point - Intersect XY (X, Y) - - + + Point - Intersect Line and Perpendicular (L, P) - - + + Point - Intersect Line and Axis (L, X) - - + + Point - On Perpendicular (O, P) - - + + Point - Length and Angle (L, A) - - + + Point - On Line (O, L) - - + + Point - Midpoint on Line (Shift+O, Shift+L) - - + + Point - Intersect Lines (I, L) - - + + Curve - Interactive (Alt+C) - - + + Spline - Interactive (Alt+S) - - + + Curve - Fixed (Alt+Shift+C) - - + + Spline - Fixed (Alt+Shift+S) - + Point - On Spline (O, S) - + Point - Intersect Curves (I, C) - - + + Point - Intersect Curve and Axis (C, X) - + Point - On Curve (O, C) - + Arc - Radius and Angles (Alt+A) - + Point - On Arc (O, A) @@ -8231,90 +8249,101 @@ Do you want to save your changes? - + Arc - Radius and Length (Alt+Shift+A) - - + + Arc - Elliptical (Alt+E) - - + + Mirror Objects by Line (M, L) - - + + Mirror Objects by Axis (M, A) - - + + Move Objects (Alt+M) - - + + True Darts (T, D) - - + + Add New Pattern Piece (N, P) - - + + Add Anchor Point (A, P) - - + + Insert Nodes (I, N) - - + + Add Internal Path (I, P) - - + + Tools for inserting or modifying images. + + + + + + Import Image (Alt + I) + + + + + Export Pieces (E, P) - + New Print Layout (N, L) - + Export Layout (E, L) - + Contains information about custom and internal variables - + Alt+M @@ -8628,12 +8657,12 @@ Do you want to save your changes? - + Activate last used tool (Ctrl+Shift+L) - + Zoom to Selected (Ctrl+Right) @@ -8658,7 +8687,27 @@ Do you want to save your changes? - + + Images tools + + + + + Delete + Șterge + + + + Align + + + + + Lock + + + + Zoom to point (Ctrl + Alt + P) @@ -8668,12 +8717,17 @@ Do you want to save your changes? - + + Alt+I + + + + Please provide additional measurements: %1 - + <b>Tool::Point - Midpoint on Line</b>: Select first point @@ -8823,7 +8877,52 @@ Do you want to save your changes? - + + + Can't read image + + + + + + Could not read the image. + + + + + It may be corrupted... + + + + + It may be corrupted or empty... + + + + + Confirm deletion + + + + + Do you really want to delete? + + + + + + + + Images + + + + + Open Image File + + + + Zoom to Point @@ -8833,7 +8932,7 @@ Do you want to save your changes? - + Intersect Arc and Line @@ -8843,8 +8942,8 @@ Do you want to save your changes? - - + + Add Objects to Group (G) @@ -8855,7 +8954,7 @@ Do you want to save your changes? - + Add Group Objects @@ -8865,7 +8964,7 @@ Do you want to save your changes? - + Can not save file. @@ -8882,36 +8981,36 @@ Do you want to save your changes? - + Ctrl+E - + untitled - + Failed to lock. This file already opened in another window. Expect collisions when running 2 copies of the program. - + Pen Toolbar - + Toolbars - - + + - - + + File exception. @@ -8924,12 +9023,12 @@ Do you want to save your changes? - + pattern model - + Base name used for new points. Press enter to temporarily add it to the list. @@ -11817,7 +11916,7 @@ Press enter to temporarily add it to the list. - + Open Directory @@ -11832,7 +11931,12 @@ Press enter to temporarily add it to the list. - + + My Images + + + + My Patterns @@ -12136,12 +12240,12 @@ Press enter to temporarily add it to the list. QObject - + Create new pattern piece to start working. - + mm @@ -12178,12 +12282,12 @@ Press enter to temporarily add it to the list. - + Changes applied. - + Wrong tag name '%1'. @@ -12541,6 +12645,19 @@ Press enter to temporarily add it to the list. + + ResizeHandlesItem + + + Press <b>CTRL</b> to scale around the center - <b> Aspect ratio locked </b> + + + + + Press <b>CTRL</b> to scale around the center, <b>SHIFT</b> to scale uniformly. + + + SavePieceOptions @@ -13330,12 +13447,12 @@ When unchecked the period is used. - + F2 - + Point Punct @@ -13725,6 +13842,21 @@ When unchecked the period is used. E, D + + + Images + + + + + Import Image + + + + + Alt + I + + Pattern Piece @@ -13942,8 +14074,8 @@ When unchecked the period is used. - - + + Keyboard Shortcuts @@ -13953,7 +14085,7 @@ When unchecked the period is used. - + Shift+P @@ -13963,7 +14095,7 @@ When unchecked the period is used. - + Export PDF @@ -14921,7 +15053,7 @@ load in SeamlyME as usual. Tool - + First point Primul Punct @@ -15151,7 +15283,7 @@ load in SeamlyME as usual. - + Error creating or updating group @@ -15778,7 +15910,7 @@ load in SeamlyME as usual. VCommonSettings - + measurements @@ -15800,11 +15932,16 @@ load in SeamlyME as usual. + images + + + + label templates - + bodyscans @@ -16643,7 +16780,7 @@ load in SeamlyME as usual. VToolLine - + Length Lungime @@ -17466,7 +17603,7 @@ load in SeamlyME as usual. - + Center point Punct central diff --git a/share/translations/seamly2d_ru_RU.ts b/share/translations/seamly2d_ru_RU.ts index 97da7f2d9253..f9325404c567 100644 --- a/share/translations/seamly2d_ru_RU.ts +++ b/share/translations/seamly2d_ru_RU.ts @@ -5099,7 +5099,7 @@ p, li { white-space: pre-wrap; } FvUpdater - + Feed download failed: %1. Ошибка скачивания: %1. @@ -5267,7 +5267,7 @@ Do you want to download it? Неизвестный объект - + %1 - Base point %1 - Базовая точка @@ -5470,7 +5470,7 @@ Do you want to download it? Удалить Группу Объектов - + Group color @@ -5547,7 +5547,7 @@ Do you want to download it? - + Name Название @@ -6383,40 +6383,40 @@ Apply settings anyway? Seamly2D - + Tools for creating points. Инструменты для создания точек. - - + + - + Point Точка - + Tools for creating lines. Инструменты создания линий. - - + + - - + + Line Линия - + Tools for creating curves. Инструменты создания кривых. - - + + Curve Кривая @@ -6427,14 +6427,14 @@ Apply settings anyway? Инструменты создания дуг. - - + + Arc Дуга - + &File &Файл @@ -6445,12 +6445,12 @@ Apply settings anyway? - + Measurements Мерки - + New Новый @@ -6481,7 +6481,7 @@ Apply settings anyway? - + Save Сохранить @@ -6496,7 +6496,7 @@ Apply settings anyway? Сохранить выкройку - + Save &As... Сохранить &как... @@ -6506,19 +6506,19 @@ Apply settings anyway? Сохранить еще не сохраненную выкройку - - + + Details Детали - + Pointer tools Инструмент указатель - - + + History История @@ -6538,27 +6538,27 @@ Apply settings anyway? &Выход - + Preferences Свойства - + Report bug Сообщить об ошибке - + Show online help Показать справку - + About Qt Про Qt - + Save as Сохранить как @@ -6568,17 +6568,17 @@ Apply settings anyway? Не удалось сохранить файл - + - - + + Open file Открыть файл - + Error parsing file. Ошибка парсинга файла. @@ -6610,7 +6610,7 @@ Apply settings anyway? Неправильный идентификатор. - + File saved Файл сохранен @@ -6621,29 +6621,29 @@ Do you want to save your changes? Выкройка была изменена. Хотите сохранить изменения? - - + + &Undo &Отменить - - + + &Redo &Вернуть - + This file already opened in another window. Этот файл уже открыт в другом окне. - + Wrong units. Неправильные единицы измерения. - + File loaded Файл загружен @@ -6658,26 +6658,26 @@ Do you want to save your changes? Повторно открыть файлы. - - + + - + Layout Макет - + Settings Настройки - - + + Print Печать - + Print tiled PDF Печать плиткой в PDF @@ -6687,7 +6687,7 @@ Do you want to save your changes? Разделить и распечатать макет на страницы меньшего размера.(для обычных принтеров) - + Print preview Предварительный просмотр @@ -6697,70 +6697,82 @@ Do you want to save your changes? Предварительный просмотр исходного макета - + Export As... Экспортировать как... - + - + Layout mode Режим макета - + Unsaved changes Несохранённые изменения - + Measurements loaded Мерки загружены - + You can't export empty scene. Невозможно экспортировать пустую сцену. - - + + Measurement file contains invalid known measurement(s). Файл мерок содержит неправильные мерки. - - + + Measurement file has unknown format. Неизвестный формат файла мерок. - + Measurement files types have not match. Типы файлов мерок не соответствуют. - + Couldn't sync measurements. Невозможно синхронизировать мерки. - + Couldn't update measurements. Невозможно обновить мерки. - + + Images will not be saved + + + + + Please note that the images can not be saved and that they are not affected by the undo and redo functions in the current version of the software. + +You may want to take a screenshot of the image properties dialog before closing the software to be able to recreate identically the image when opening the software again. + + + + The measurements file '%1' could not be found. Файл мерок «%1» не может быть найден. - + Loading measurements file Загрузка файла мерок @@ -6796,12 +6808,12 @@ Do you want to save your changes? Необходимо указать один входной файл. - + Print an original layout Распечатать оригинальный макет - + Preview tiled PDF Просмотр печати плиткой в PDF @@ -6811,7 +6823,7 @@ Do you want to save your changes? Предварительный просмотр плиткой - + Measurements unloaded Мерки сброшены @@ -6821,7 +6833,7 @@ Do you want to save your changes? Невозможно сбросить мерки. Некоторые из них используются в выкройке. - + New pattern Новая выкройка @@ -6836,7 +6848,7 @@ Do you want to save your changes? Создать/Изменить мерки - + Save... Сохранить... @@ -6846,7 +6858,7 @@ Do you want to save your changes? Не сохранять - + Locking file @@ -6878,29 +6890,29 @@ Do you want to save your changes? Произошла неизвестная ошибка, например, полностью заполненный раздел предотвращает запись файла блокировки. - + Operations Операции - + Close pattern Закрыть выкройку - + Tool pointer Инструмент указатель - + Original zoom Начальный масштаб - + Height: Высота: @@ -6910,12 +6922,12 @@ Do you want to save your changes? Размер: - + The measurements file <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? Файл меток <br/><br/> <b>%1</b> <br/><br/> не найден. Хотите обновить данные о местоположении файла? - + Measurements were changed. Do you want to sync measurements now? Мрки были изменены. Хотите обновить мерки сейчас? @@ -6925,12 +6937,12 @@ Do you want to save your changes? Градация не поддерживает дюймы - + Measurements have been synced Мерки обновлены - + The document has no write permissions. Документ не имеет прав на запись. @@ -6950,12 +6962,12 @@ Do you want to save your changes? Не удалось сохранить файл - + read only только для чтения - + Load Individual Загрузить индивидуальные @@ -7010,37 +7022,37 @@ Do you want to save your changes? Сбросить мерки, если они не используются в файле выкройки - - + + Individual measurements Индивидуальные мерки - - + + Multisize measurements Мультиразмерные мерки - + Pattern files Файлы выкроек - + Wiki Wikipedia - + Forum Форум - + Name Имя @@ -7055,17 +7067,17 @@ Do you want to save your changes? Формула - + You can't use Layout mode yet. Сейчас невозможно использовать режим макета. - + Application doesn't support multisize table with inches. Программа не поддерживает мультиразмерные таблицы в дюймах. - + Couldn't set size. Need a file with multisize measurements. Не удалось установить размер. Нужен файл с мультиразмерными измерениями. @@ -7075,7 +7087,7 @@ Do you want to save your changes? Не удалось установить высоту. Нужен файл с мультиразмерными измерениями. - + Preview Предварительный просмотр @@ -7106,13 +7118,13 @@ Do you want to save your changes? - - + + Piece Деталь - + Utilities Утилиты @@ -7148,8 +7160,8 @@ Do you want to save your changes? - - + + Group Manager Управление группой @@ -7164,7 +7176,7 @@ Do you want to save your changes? Панель инструментов «Коробка Инструментов » - + Points Toolbar Панель инструментов «Точки» @@ -7214,36 +7226,36 @@ Do you want to save your changes? Коробка инструментов - - + + Line between 2 Points (Alt+L) Линия между двумя точками (Alt+L) - + Tools for performing operations on objects Инструменты для выполнения операций с объектами - + Rotate Selected Objects (R) Поворот выбранных объектов (R) - - + + Export Draft Blocks (E, D) Экспорт блоков чертежа (E, D) - + Tools for adding pattern pieces. Инструменты для добавления деталей выкройки. - + Add Details Добавить подробности @@ -7254,17 +7266,17 @@ Do you want to save your changes? - + Unite 2 Pieces (U) Объединение 2 деталей (U) - + View Toolbar Вид панели инструментов - + Draft Чертёж @@ -7327,7 +7339,7 @@ Do you want to save your changes? - + Mirror by Line Отражение по Линии @@ -7494,7 +7506,7 @@ Do you want to save your changes? Уменьшить (Ctrl+-) - + Fit All Масштабировать всё @@ -7520,7 +7532,7 @@ Do you want to save your changes? Закрыть - + Shortcuts Ярлыки @@ -7545,7 +7557,7 @@ Do you want to save your changes? Переключить контрольные точки и направление кривой (V, C) - + Load multisize Загрузить мультиразмер @@ -7871,7 +7883,7 @@ Do you want to save your changes? - + Calculator Калькулятор @@ -7892,7 +7904,7 @@ Do you want to save your changes? - + Export Draft Blocks Экспорировать блоки чертежа @@ -7907,7 +7919,7 @@ Do you want to save your changes? Экспорт - + Seam Allowance Прибавки на швы @@ -7937,12 +7949,12 @@ Do you want to save your changes? Ctrl+I - + Measurement file doesn't include all the required measurements. Файл мерок не содержит всех необходимых измерений. - + <b>Tool::Operations - Create Group:</b> Select one or more objects - Hold <b>%1</b> for multiple selection, Press <b>ENTER</b> to finish group creation <b>Инструмент::Операции – Создать группу:</b> выберите один или несколько объектов – удержите клавишу <b>%1</b> при выборе нескольких объектов. Нажмите <b>ENTER</b>, чтобы завершить создание группы @@ -7972,13 +7984,13 @@ Do you want to save your changes? <b>Инструмент::Операции – Правильная вытачка:</b> выберите первую точку линии основы - + Draft Block: Блок Чертежа: - + Rotate Вращение @@ -8008,7 +8020,13 @@ Do you want to save your changes? Экспортировать Деталь выкройки - + + + Import Image + + + + Piece mode Режим Деталь @@ -8018,8 +8036,8 @@ Do you want to save your changes? Вы пока не можете использовать режим "Деталь". Пожалуйста, создайте хотя бы одну выкройку. - - + + Pattern Pieces Детали Выкройки @@ -8034,7 +8052,7 @@ Do you want to save your changes? Вы пока не можете использовать режим Макета. Пожалуйста, добавьте в макет хотя бы одну выкройку. - + Name: Название: @@ -8054,7 +8072,7 @@ Do you want to save your changes? Действие не может быть выполнено, поскольку имя чертежа уже существует. - + You don't have any pieces to export. Please, include at least one piece in layout. У вас нет деталей для экспорта. Пожалуйста, добавьте хотя бы одну деталь в макет. @@ -8069,7 +8087,7 @@ Do you want to save your changes? Невозможно экспортировать детали. - + <b>Tool::Piece - Add New Pattern Piece:</b> Select main path of objects clockwise. <b>Инструмент::Операции – Добавить новую деталь выкройки:</b> выберите основной контур из объектов по часовой стрелке. @@ -8089,146 +8107,146 @@ Do you want to save your changes? <b>Инструмент::Деталь – Вставить узлы:</b> выберите один или несколько объектов – удержите клавишу <b>%1</b> при выборе нескольких объектов. Нажмите <b>ENTER</b> для подтверждения выбора - + <b>Tool::Details - Union:</b> Select pattern piece <b>Инструмент:: Объединение Деталей:</b> Выберите деталь выкройки - + Draft block %1 Блок Чертежа %1 - + Draft Block %1 Блок Чертежа %1 - - + + Point - On Bisector (O, B) Точка - на Биссектрисе (O, B) - - + + Point - Length to Line (P, S) Точка - в доль линии (P, S) - - + + Point - Intersect Arc and Line (A, L) Точка — Пересечения Дуги и Линии (A, L) - - + + Point - Intersect Axis and Triangle (X, T) Точка — Пересечения Оси и Треугольника (X, T) - - + + Point - Intersect XY (X, Y) Точка на пересечении осей XY (X, Y) - - + + Point - Intersect Line and Perpendicular (L, P) Точка - Пересечения Линии и Перпендикуляра (L, P) - - + + Point - Intersect Line and Axis (L, X) Точка - Пересечения Линии и Оси (L, X) - - + + Point - On Perpendicular (O, P) Точка - на Перпендикуляре (O, P) - - + + Point - Length and Angle (L, A) Точка - на Расстоянии и под Углом (L, A) - - + + Point - On Line (O, L) Точка - на Линии (O, L) - - + + Point - Midpoint on Line (Shift+O, Shift+L) Точка - по середине Линии (Shift+O, Shift+L) - - + + Point - Intersect Lines (I, L) Точка - на Пересечении линий (I, L) - - + + Curve - Interactive (Alt+C) Кривая - Интерактивная (Alt+C) - - + + Spline - Interactive (Alt+S) Интерактивный сплайн (Alt+S) - - + + Curve - Fixed (Alt+Shift+C) Кривая - Фиксированная (Alt+Shift+C) - - + + Spline - Fixed (Alt+Shift+S) Сплайн - Фиксированный (Alt+Shift+S) - + Point - On Spline (O, S) Точка - на сплайне (O, S) - + Point - Intersect Curves (I, C) Точка Пересечения Кривых (I, C) - - + + Point - Intersect Curve and Axis (C, X) Точка Пересечения Кривой и Оси (C, X) - + Point - On Curve (O, C) Точка на Кривой (O, C) - + Arc - Radius and Angles (Alt+A) Дуга - радиус и углы (Alt+A) - + Point - On Arc (O, A) Точка на Дуге (O, A) @@ -8259,90 +8277,101 @@ Do you want to save your changes? - + Arc - Radius and Length (Alt+Shift+A) Дуга - Радиус и Длина (Alt+Shift+A) - - + + Arc - Elliptical (Alt+E) Эллиптическая Дуга (Alt+E) - - + + Mirror Objects by Line (M, L) Отражение по Линии (M, L) - - + + Mirror Objects by Axis (M, A) Отражение по Оси (M, A) - - + + Move Objects (Alt+M) Переместить Объекты (M, A) - - + + True Darts (T, D) Правильная вытачка (T, D) - - + + Add New Pattern Piece (N, P) Добавить новую Деталь выкройки(N, P) - - + + Add Anchor Point (A, P) Добавить шпильку (A, P) - - + + Insert Nodes (I, N) Вставить узлы (I, N) - - + + Add Internal Path (I, P) Добавить Внутренний контур (I, P) - - + + Tools for inserting or modifying images. + + + + + + Import Image (Alt + I) + + + + + Export Pieces (E, P) Экспортировать детали (E, P) - + New Print Layout (N, L) Новый макет печати (N, L) - + Export Layout (E, L) Экспортировать Макет (E, L) - + Contains information about custom and internal variables - + Alt+M Alt+M @@ -8656,12 +8685,12 @@ Do you want to save your changes? Alt+Shift+A - + Activate last used tool (Ctrl+Shift+L) Активировать последний использованный инструмент (Ctrl+Shift+L) - + Zoom to Selected (Ctrl+Right) Приблизить выбранное (Ctrl+Вправо) @@ -8686,7 +8715,27 @@ Do you want to save your changes? - + + Images tools + + + + + Delete + Удалить + + + + Align + + + + + Lock + + + + Zoom to point (Ctrl + Alt + P) Приблизить к точке (Ctrl + Alt + P) @@ -8696,12 +8745,17 @@ Do you want to save your changes? Ctrl+Alt+P - + + Alt+I + + + + Please provide additional measurements: %1 Укажите дополнительные мерки: %1 - + <b>Tool::Point - Midpoint on Line</b>: Select first point <b>Инструмент::Точка — на середине линии</b>: выберите первую точку @@ -8851,7 +8905,52 @@ Do you want to save your changes? <b>Инструмент::Дуга — Эллиптическая:</b> Выберите точку центра эллиптической дуги - + + + Can't read image + + + + + + Could not read the image. + + + + + It may be corrupted... + + + + + It may be corrupted or empty... + + + + + Confirm deletion + Подтвердите удаление + + + + Do you really want to delete? + Вы точно хотите удалить? + + + + + + + Images + Изображения + + + + Open Image File + + + + Zoom to Point Зум до точки @@ -8861,7 +8960,7 @@ Do you want to save your changes? Точка: - + Intersect Arc and Line Пересечение Дуги и Линии @@ -8871,8 +8970,8 @@ Do you want to save your changes? Пересечение кривой и оси - - + + Add Objects to Group (G) Добавить объект в группу (G) @@ -8883,7 +8982,7 @@ Do you want to save your changes? Добавить объект в группу - + Add Group Objects Добавить Группу Объектов @@ -8893,7 +8992,7 @@ Do you want to save your changes? Группа заблокирована. Разблокируйте, чтобы добавлять объекты - + Can not save file. Не удалось сохранить файл. @@ -8910,36 +9009,36 @@ Do you want to save your changes? Не удалось заблокировать. Файл с таким именем открыт в другом окне. - + Ctrl+E Ctrl+E - + untitled без названия - + Failed to lock. This file already opened in another window. Expect collisions when running 2 copies of the program. Не удалось заблокировать. Этот файл уже открыт в другом окне. Возможна коллизия при запуске двух копий программы. - + Pen Toolbar Панель инструментов «Перо» - + Toolbars Коробка инструментов - - + + - - + + File exception. Исключение из файла. @@ -8952,17 +9051,17 @@ Do you want to save your changes? Исключение экспорта. - + pattern выкройка - + untitled.sm2d безымянный.sm2d - + Base name used for new points. Press enter to temporarily add it to the list. @@ -11853,7 +11952,7 @@ Press enter to temporarily add it to the list. Редактировать - + Open Directory Открыть директорию @@ -11868,7 +11967,12 @@ Press enter to temporarily add it to the list. Мои мультиразмерные мерки - + + My Images + + + + My Patterns Мои выкройки @@ -12172,12 +12276,12 @@ Press enter to temporarily add it to the list. QObject - + Create new pattern piece to start working. Создайте новую выкройку для начала работы. - + mm мм @@ -12214,12 +12318,12 @@ Press enter to temporarily add it to the list. добавить узел - + Changes applied. Изменения применены. - + Wrong tag name '%1'. Неверное название метки «%1». @@ -12577,6 +12681,19 @@ Press enter to temporarily add it to the list. переименовать деталь выкройки + + ResizeHandlesItem + + + Press <b>CTRL</b> to scale around the center - <b> Aspect ratio locked </b> + + + + + Press <b>CTRL</b> to scale around the center, <b>SHIFT</b> to scale uniformly. + + + SavePieceOptions @@ -13366,12 +13483,12 @@ When unchecked the period is used. - + F2 F2 - + Point Точка @@ -13761,6 +13878,21 @@ When unchecked the period is used. E, D E, D + + + Images + Изображения + + + + Import Image + + + + + Alt + I + + Pattern Piece @@ -13978,8 +14110,8 @@ When unchecked the period is used. Помощь - - + + Keyboard Shortcuts Горячие клавиши @@ -13989,7 +14121,7 @@ When unchecked the period is used. K - + Shift+P Shift+P @@ -13999,7 +14131,7 @@ When unchecked the period is used. T - + Export PDF Экспортировать PDF @@ -14964,7 +15096,7 @@ load in SeamlyME as usual. Tool - + First point Первая точка @@ -15194,7 +15326,7 @@ load in SeamlyME as usual. Невозможно найти инструмент в таблице. - + Error creating or updating group Ошибка создания или обновления группы @@ -15821,7 +15953,7 @@ load in SeamlyME as usual. VCommonSettings - + measurements Мерки @@ -15843,11 +15975,16 @@ load in SeamlyME as usual. + images + + + + label templates Шаблоны метки - + bodyscans бодискан @@ -16688,7 +16825,7 @@ load in SeamlyME as usual. VToolLine - + Length Длина @@ -17511,7 +17648,7 @@ load in SeamlyME as usual. Линия_ - + Center point Центральная точка diff --git a/share/translations/seamly2d_uk_UA.ts b/share/translations/seamly2d_uk_UA.ts index 454a160ae475..c92f63015bd4 100644 --- a/share/translations/seamly2d_uk_UA.ts +++ b/share/translations/seamly2d_uk_UA.ts @@ -5073,7 +5073,7 @@ p, li { white-space: pre-wrap; } FvUpdater - + Feed download failed: %1. Завантаження feed зазнало невдачі: %1. @@ -5238,7 +5238,7 @@ Do you want to download it? - + %1 - Base point %1 - Базова точка @@ -5441,7 +5441,7 @@ Do you want to download it? - + Group color @@ -5518,7 +5518,7 @@ Do you want to download it? - + Name імя @@ -6353,40 +6353,40 @@ Apply settings anyway? Seamly2D - + Tools for creating points. Інструмент створення точок. - - + + - + Point Точка - + Tools for creating lines. Інструменти для створення ліній. - - + + - - + + Line Лінія - + Tools for creating curves. Інструменти для створення кривих. - - + + Curve Крива @@ -6397,14 +6397,14 @@ Apply settings anyway? Інструменти для створення дуг. - - + + Arc Дуга - + &File &Файл @@ -6415,12 +6415,12 @@ Apply settings anyway? - + Measurements Мірки - + New Новий @@ -6451,7 +6451,7 @@ Apply settings anyway? - + Save Зберегти @@ -6466,7 +6466,7 @@ Apply settings anyway? Зберегти лекало - + Save &As... Зберегти &як... @@ -6476,19 +6476,19 @@ Apply settings anyway? Зберегти ще не збережене лекало - - + + Details Деталь - + Pointer tools Інструмент вказівник - - + + History Історія @@ -6508,27 +6508,27 @@ Apply settings anyway? &Вихід - + Preferences Властивості - + Report bug Повідомити про помилку - + Show online help Показати довідку - + About Qt Про Qt - + Save as Зберегти як @@ -6538,17 +6538,17 @@ Apply settings anyway? Не вдалося зберегти файл - + - - + + Open file Відкрити файл - + Error parsing file. Помилка парсингу файла. @@ -6580,45 +6580,45 @@ Apply settings anyway? Поганий id. - + File saved Файл збережено - + untitled.sm2d безімений.sm2d - + The pattern has been modified. Do you want to save your changes? Лекало було змінено. Ви хочете зберегти ваші зміни? - - + + &Undo &Відмінити - - + + &Redo &Повторити - + This file already opened in another window. Цей файл вже відкрито в іншому вікні. - + Wrong units. Неправильні одиниці виміру. - + File loaded Файл завантажено @@ -6633,26 +6633,26 @@ Do you want to save your changes? Відкрити знову файли. - - + + - + Layout Розкладка - + Settings Налаштування - - + + Print Друк - + Print tiled PDF Друк PDF плиткою @@ -6662,7 +6662,7 @@ Do you want to save your changes? Розділити і надрукувати розкладку на сторінках меншого розміру (для звичайних принтерів) - + Print preview Попередній перегляд @@ -6672,70 +6672,82 @@ Do you want to save your changes? Попередній перегляд оригінальної розкладки - + Export As... Експортувати як... - + - + Layout mode Режим розкладки - + Unsaved changes Незбережені зміни - + Measurements loaded Мірки завантажено - + You can't export empty scene. Ви не можете експортувати пусту сцену. - - + + Measurement file contains invalid known measurement(s). Файл мірок містить недійсні відомі мірки. - - + + Measurement file has unknown format. Файл мірок має невідомий формат. - + Measurement files types have not match. Типи файлів мірок не співпадають. - + Couldn't sync measurements. Не вдалося синхронізувати мірки. - + Couldn't update measurements. Не вдалося оновити мірки. - + + Images will not be saved + + + + + Please note that the images can not be saved and that they are not affected by the undo and redo functions in the current version of the software. + +You may want to take a screenshot of the image properties dialog before closing the software to be able to recreate identically the image when opening the software again. + + + + The measurements file '%1' could not be found. Файл мірок '%1' не вдалося знайти. - + Loading measurements file Завантаження файлу мірок @@ -6771,12 +6783,12 @@ Do you want to save your changes? Будь ласка, надайте один вхідний файл. - + Print an original layout Друк оригінальної розкладки - + Preview tiled PDF Попередній перегляд PDF плиткою @@ -6786,7 +6798,7 @@ Do you want to save your changes? Попередній перегляд розкладки плиткою - + Measurements unloaded Мірки вивантажено @@ -6796,7 +6808,7 @@ Do you want to save your changes? Не вдалося вивантажити мірки. Деякі з них використовуються у лекалі. - + New pattern Нове лекало @@ -6811,7 +6823,7 @@ Do you want to save your changes? Створити/Редагувати мірки - + Save... Зберегти... @@ -6821,7 +6833,7 @@ Do you want to save your changes? Не зберігати - + Locking file @@ -6853,29 +6865,29 @@ Do you want to save your changes? Сталася невідома помилка, наприклад переповнення розділу попередило запис lock файлу. - + Operations Операції - + Close pattern Закрити викрійку - + Tool pointer Вказівник - + Original zoom Початковий масштаб - + Height: Висота: @@ -6885,12 +6897,12 @@ Do you want to save your changes? Розмір: - + The measurements file <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? Файл мірок <br/><br/> <b>%1</b> <br/><br/> не вдалося знайти. Ви хочете оновити місце знаходження? - + Measurements were changed. Do you want to sync measurements now? Мірки були змінені. Бажаєте синхронізувати мірки зараз? @@ -6900,12 +6912,12 @@ Do you want to save your changes? Програма не підтримує стандарнту таблицю з дюймами - + Measurements have been synced Мірки було синхронізовано - + The document has no write permissions. Документ не має прав на запис. @@ -6925,12 +6937,12 @@ Do you want to save your changes? Не вдалося зберегти файл - + read only тільки читання - + Load Individual Завантажити індивідуальні @@ -6985,37 +6997,37 @@ Do you want to save your changes? Вивантажити мірки якщо вони не були використані в лекалі - - + + Individual measurements Індивідуальні мірки - - + + Multisize measurements Стандартні мірки - + Pattern files Файли лекал - + Wiki Вікі - + Forum Форум - + Name Ім'я @@ -7030,17 +7042,17 @@ Do you want to save your changes? Формула - + You can't use Layout mode yet. Ви не можете використовувати Режим розкладки зараз. - + Application doesn't support multisize table with inches. - + Couldn't set size. Need a file with multisize measurements. @@ -7050,7 +7062,7 @@ Do you want to save your changes? - + Preview @@ -7081,13 +7093,13 @@ Do you want to save your changes? - - + + Piece - + Utilities @@ -7123,8 +7135,8 @@ Do you want to save your changes? - - + + Group Manager @@ -7139,7 +7151,7 @@ Do you want to save your changes? - + Points Toolbar @@ -7189,36 +7201,36 @@ Do you want to save your changes? - - + + Line between 2 Points (Alt+L) - + Tools for performing operations on objects - + Rotate Selected Objects (R) - - + + Export Draft Blocks (E, D) - + Tools for adding pattern pieces. - + Add Details @@ -7229,17 +7241,17 @@ Do you want to save your changes? - + Unite 2 Pieces (U) - + View Toolbar - + Draft @@ -7302,7 +7314,7 @@ Do you want to save your changes? - + Mirror by Line @@ -7469,7 +7481,7 @@ Do you want to save your changes? - + Fit All @@ -7495,7 +7507,7 @@ Do you want to save your changes? - + Shortcuts @@ -7520,7 +7532,7 @@ Do you want to save your changes? - + Load multisize @@ -7846,7 +7858,7 @@ Do you want to save your changes? - + Calculator @@ -7867,7 +7879,7 @@ Do you want to save your changes? - + Export Draft Blocks @@ -7882,7 +7894,7 @@ Do you want to save your changes? Експорт - + Seam Allowance @@ -7912,12 +7924,12 @@ Do you want to save your changes? - + Measurement file doesn't include all the required measurements. - + <b>Tool::Operations - Create Group:</b> Select one or more objects - Hold <b>%1</b> for multiple selection, Press <b>ENTER</b> to finish group creation @@ -7947,13 +7959,13 @@ Do you want to save your changes? - + Draft Block: - + Rotate @@ -7983,7 +7995,13 @@ Do you want to save your changes? - + + + Import Image + + + + Piece mode @@ -7993,8 +8011,8 @@ Do you want to save your changes? - - + + Pattern Pieces @@ -8009,7 +8027,7 @@ Do you want to save your changes? - + Name: Імя: @@ -8029,7 +8047,7 @@ Do you want to save your changes? - + You don't have any pieces to export. Please, include at least one piece in layout. @@ -8044,7 +8062,7 @@ Do you want to save your changes? - + <b>Tool::Piece - Add New Pattern Piece:</b> Select main path of objects clockwise. @@ -8064,146 +8082,146 @@ Do you want to save your changes? - + <b>Tool::Details - Union:</b> Select pattern piece - + Draft block %1 - + Draft Block %1 - - + + Point - On Bisector (O, B) - - + + Point - Length to Line (P, S) - - + + Point - Intersect Arc and Line (A, L) - - + + Point - Intersect Axis and Triangle (X, T) - - + + Point - Intersect XY (X, Y) - - + + Point - Intersect Line and Perpendicular (L, P) - - + + Point - Intersect Line and Axis (L, X) - - + + Point - On Perpendicular (O, P) - - + + Point - Length and Angle (L, A) - - + + Point - On Line (O, L) - - + + Point - Midpoint on Line (Shift+O, Shift+L) - - + + Point - Intersect Lines (I, L) - - + + Curve - Interactive (Alt+C) - - + + Spline - Interactive (Alt+S) - - + + Curve - Fixed (Alt+Shift+C) - - + + Spline - Fixed (Alt+Shift+S) - + Point - On Spline (O, S) - + Point - Intersect Curves (I, C) - - + + Point - Intersect Curve and Axis (C, X) - + Point - On Curve (O, C) - + Arc - Radius and Angles (Alt+A) - + Point - On Arc (O, A) @@ -8234,90 +8252,101 @@ Do you want to save your changes? - + Arc - Radius and Length (Alt+Shift+A) - - + + Arc - Elliptical (Alt+E) - - + + Mirror Objects by Line (M, L) - - + + Mirror Objects by Axis (M, A) - - + + Move Objects (Alt+M) - - + + True Darts (T, D) - - + + Add New Pattern Piece (N, P) - - + + Add Anchor Point (A, P) - - + + Insert Nodes (I, N) - - + + Add Internal Path (I, P) - - + + Tools for inserting or modifying images. + + + + + + Import Image (Alt + I) + + + + + Export Pieces (E, P) - + New Print Layout (N, L) - + Export Layout (E, L) - + Contains information about custom and internal variables - + Alt+M @@ -8631,12 +8660,12 @@ Do you want to save your changes? - + Activate last used tool (Ctrl+Shift+L) - + Zoom to Selected (Ctrl+Right) @@ -8661,7 +8690,27 @@ Do you want to save your changes? - + + Images tools + + + + + Delete + Видалити + + + + Align + + + + + Lock + + + + Zoom to point (Ctrl + Alt + P) @@ -8671,12 +8720,17 @@ Do you want to save your changes? - + + Alt+I + + + + Please provide additional measurements: %1 - + <b>Tool::Point - Midpoint on Line</b>: Select first point @@ -8826,7 +8880,52 @@ Do you want to save your changes? - + + + Can't read image + + + + + + Could not read the image. + + + + + It may be corrupted... + + + + + It may be corrupted or empty... + + + + + Confirm deletion + Підтвердіть видалення + + + + Do you really want to delete? + Ви дійсно хочете видалити? + + + + + + + Images + Зображення + + + + Open Image File + + + + Zoom to Point @@ -8836,7 +8935,7 @@ Do you want to save your changes? Точка: - + Intersect Arc and Line @@ -8846,8 +8945,8 @@ Do you want to save your changes? - - + + Add Objects to Group (G) @@ -8858,7 +8957,7 @@ Do you want to save your changes? - + Add Group Objects @@ -8868,7 +8967,7 @@ Do you want to save your changes? - + Can not save file. @@ -8885,36 +8984,36 @@ Do you want to save your changes? - + Ctrl+E Ctrl+E - + untitled без імені - + Failed to lock. This file already opened in another window. Expect collisions when running 2 copies of the program. - + Pen Toolbar - + Toolbars - - + + - - + + File exception. @@ -8927,12 +9026,12 @@ Do you want to save your changes? - + pattern лекало - + Base name used for new points. Press enter to temporarily add it to the list. @@ -11820,7 +11919,7 @@ Press enter to temporarily add it to the list. Редагувати - + Open Directory Відкрити директорію @@ -11835,7 +11934,12 @@ Press enter to temporarily add it to the list. Мої стандартні мірки - + + My Images + + + + My Patterns Мої лекала @@ -12139,12 +12243,12 @@ Press enter to temporarily add it to the list. QObject - + Create new pattern piece to start working. Створіть нове креслення для початку роботи. - + mm мм @@ -12181,12 +12285,12 @@ Press enter to temporarily add it to the list. додати вузол - + Changes applied. Зміни застосовано. - + Wrong tag name '%1'. Не правильне ім'я тегу '%1'. @@ -12544,6 +12648,19 @@ Press enter to temporarily add it to the list. перейменувати лекало + + ResizeHandlesItem + + + Press <b>CTRL</b> to scale around the center - <b> Aspect ratio locked </b> + + + + + Press <b>CTRL</b> to scale around the center, <b>SHIFT</b> to scale uniformly. + + + SavePieceOptions @@ -13333,12 +13450,12 @@ When unchecked the period is used. - + F2 - + Point Точка @@ -13728,6 +13845,21 @@ When unchecked the period is used. E, D + + + Images + Зображення + + + + Import Image + + + + + Alt + I + + Pattern Piece @@ -13945,8 +14077,8 @@ When unchecked the period is used. Допомога - - + + Keyboard Shortcuts @@ -13956,7 +14088,7 @@ When unchecked the period is used. - + Shift+P @@ -13966,7 +14098,7 @@ When unchecked the period is used. - + Export PDF @@ -14925,7 +15057,7 @@ load in SeamlyME as usual. Tool - + First point Перша точка @@ -15155,7 +15287,7 @@ load in SeamlyME as usual. Не можу знайти інструмент в таблиці. - + Error creating or updating group Помилка створення чи оновлення групи @@ -15782,7 +15914,7 @@ load in SeamlyME as usual. VCommonSettings - + measurements мірки @@ -15804,11 +15936,16 @@ load in SeamlyME as usual. + images + + + + label templates - + bodyscans @@ -16648,7 +16785,7 @@ load in SeamlyME as usual. VToolLine - + Length Довжина @@ -17471,7 +17608,7 @@ load in SeamlyME as usual. Лінія_ - + Center point Точка центру diff --git a/share/translations/seamly2d_zh_CN.ts b/share/translations/seamly2d_zh_CN.ts index fd778c87eed3..8ab67f4615d1 100644 --- a/share/translations/seamly2d_zh_CN.ts +++ b/share/translations/seamly2d_zh_CN.ts @@ -5073,7 +5073,7 @@ p, li { white-space: pre-wrap; } FvUpdater - + Feed download failed: %1. @@ -5238,7 +5238,7 @@ Do you want to download it? - + %1 - Base point @@ -5441,7 +5441,7 @@ Do you want to download it? - + Group color @@ -5518,7 +5518,7 @@ Do you want to download it? - + Name @@ -6350,40 +6350,40 @@ Apply settings anyway? - + Tools for creating points. - - + + - + Point - + Tools for creating lines. - - + + - - + + Line 线 - + Tools for creating curves. - - + + Curve @@ -6394,14 +6394,14 @@ Apply settings anyway? - - + + Arc - + &File @@ -6412,12 +6412,12 @@ Apply settings anyway? - + Measurements 尺寸 - + New @@ -6448,7 +6448,7 @@ Apply settings anyway? - + Save 保存 @@ -6463,7 +6463,7 @@ Apply settings anyway? - + Save &As... @@ -6473,19 +6473,19 @@ Apply settings anyway? - - + + Details - + Pointer tools - - + + History @@ -6505,27 +6505,27 @@ Apply settings anyway? - + Preferences - + Report bug - + Show online help - + About Qt - + Save as @@ -6535,17 +6535,17 @@ Apply settings anyway? - + - - + + Open file 打开文件 - + Error parsing file. @@ -6577,45 +6577,45 @@ Apply settings anyway? - + File saved - + untitled.sm2d - + The pattern has been modified. Do you want to save your changes? - - + + &Undo - - + + &Redo - + This file already opened in another window. 这个文件已经在别的窗李打开的. - + Wrong units. - + File loaded @@ -6630,26 +6630,26 @@ Do you want to save your changes? - - + + - + Layout - + Settings - - + + Print - + Print tiled PDF @@ -6659,7 +6659,7 @@ Do you want to save your changes? - + Print preview @@ -6669,70 +6669,82 @@ Do you want to save your changes? - + Export As... - + - + Layout mode - + Unsaved changes - + Measurements loaded - + You can't export empty scene. - - + + Measurement file contains invalid known measurement(s). - - + + Measurement file has unknown format. - + Measurement files types have not match. - + Couldn't sync measurements. - + Couldn't update measurements. - + + Images will not be saved + + + + + Please note that the images can not be saved and that they are not affected by the undo and redo functions in the current version of the software. + +You may want to take a screenshot of the image properties dialog before closing the software to be able to recreate identically the image when opening the software again. + + + + The measurements file '%1' could not be found. - + Loading measurements file @@ -6768,12 +6780,12 @@ Do you want to save your changes? - + Print an original layout - + Preview tiled PDF @@ -6783,7 +6795,7 @@ Do you want to save your changes? - + Measurements unloaded @@ -6793,7 +6805,7 @@ Do you want to save your changes? - + New pattern @@ -6808,7 +6820,7 @@ Do you want to save your changes? - + Save... 保存... @@ -6818,7 +6830,7 @@ Do you want to save your changes? 不保存 - + Locking file @@ -6850,29 +6862,29 @@ Do you want to save your changes? - + Operations - + Close pattern - + Tool pointer - + Original zoom - + Height: @@ -6882,12 +6894,12 @@ Do you want to save your changes? - + The measurements file <br/><br/> <b>%1</b> <br/><br/> could not be found. Do you want to update the file location? - + Measurements were changed. Do you want to sync measurements now? @@ -6897,12 +6909,12 @@ Do you want to save your changes? - + Measurements have been synced - + The document has no write permissions. @@ -6922,12 +6934,12 @@ Do you want to save your changes? - + read only - + Load Individual @@ -6982,37 +6994,37 @@ Do you want to save your changes? - - + + Individual measurements - - + + Multisize measurements - + Pattern files - + Wiki - + Forum - + Name @@ -7027,17 +7039,17 @@ Do you want to save your changes? - + You can't use Layout mode yet. - + Application doesn't support multisize table with inches. - + Couldn't set size. Need a file with multisize measurements. @@ -7047,7 +7059,7 @@ Do you want to save your changes? - + Preview @@ -7078,13 +7090,13 @@ Do you want to save your changes? - - + + Piece - + Utilities @@ -7120,8 +7132,8 @@ Do you want to save your changes? - - + + Group Manager @@ -7136,7 +7148,7 @@ Do you want to save your changes? - + Points Toolbar @@ -7186,36 +7198,36 @@ Do you want to save your changes? - - + + Line between 2 Points (Alt+L) - + Tools for performing operations on objects - + Rotate Selected Objects (R) - - + + Export Draft Blocks (E, D) - + Tools for adding pattern pieces. - + Add Details @@ -7226,17 +7238,17 @@ Do you want to save your changes? - + Unite 2 Pieces (U) - + View Toolbar - + Draft @@ -7299,7 +7311,7 @@ Do you want to save your changes? - + Mirror by Line @@ -7466,7 +7478,7 @@ Do you want to save your changes? - + Fit All @@ -7492,7 +7504,7 @@ Do you want to save your changes? - + Shortcuts @@ -7517,7 +7529,7 @@ Do you want to save your changes? - + Load multisize @@ -7843,7 +7855,7 @@ Do you want to save your changes? - + Calculator @@ -7864,7 +7876,7 @@ Do you want to save your changes? - + Export Draft Blocks @@ -7879,7 +7891,7 @@ Do you want to save your changes? - + Seam Allowance @@ -7909,12 +7921,12 @@ Do you want to save your changes? - + Measurement file doesn't include all the required measurements. - + <b>Tool::Operations - Create Group:</b> Select one or more objects - Hold <b>%1</b> for multiple selection, Press <b>ENTER</b> to finish group creation @@ -7944,13 +7956,13 @@ Do you want to save your changes? - + Draft Block: - + Rotate @@ -7980,7 +7992,13 @@ Do you want to save your changes? - + + + Import Image + + + + Piece mode @@ -7990,8 +8008,8 @@ Do you want to save your changes? - - + + Pattern Pieces @@ -8006,7 +8024,7 @@ Do you want to save your changes? - + Name: @@ -8026,7 +8044,7 @@ Do you want to save your changes? - + You don't have any pieces to export. Please, include at least one piece in layout. @@ -8041,7 +8059,7 @@ Do you want to save your changes? - + <b>Tool::Piece - Add New Pattern Piece:</b> Select main path of objects clockwise. @@ -8061,146 +8079,146 @@ Do you want to save your changes? - + <b>Tool::Details - Union:</b> Select pattern piece - + Draft block %1 - + Draft Block %1 - - + + Point - On Bisector (O, B) - - + + Point - Length to Line (P, S) - - + + Point - Intersect Arc and Line (A, L) - - + + Point - Intersect Axis and Triangle (X, T) - - + + Point - Intersect XY (X, Y) - - + + Point - Intersect Line and Perpendicular (L, P) - - + + Point - Intersect Line and Axis (L, X) - - + + Point - On Perpendicular (O, P) - - + + Point - Length and Angle (L, A) - - + + Point - On Line (O, L) - - + + Point - Midpoint on Line (Shift+O, Shift+L) - - + + Point - Intersect Lines (I, L) - - + + Curve - Interactive (Alt+C) - - + + Spline - Interactive (Alt+S) - - + + Curve - Fixed (Alt+Shift+C) - - + + Spline - Fixed (Alt+Shift+S) - + Point - On Spline (O, S) - + Point - Intersect Curves (I, C) - - + + Point - Intersect Curve and Axis (C, X) - + Point - On Curve (O, C) - + Arc - Radius and Angles (Alt+A) - + Point - On Arc (O, A) @@ -8231,90 +8249,101 @@ Do you want to save your changes? - + Arc - Radius and Length (Alt+Shift+A) - - + + Arc - Elliptical (Alt+E) - - + + Mirror Objects by Line (M, L) - - + + Mirror Objects by Axis (M, A) - - + + Move Objects (Alt+M) - - + + True Darts (T, D) - - + + Add New Pattern Piece (N, P) - - + + Add Anchor Point (A, P) - - + + Insert Nodes (I, N) - - + + Add Internal Path (I, P) - - + + Tools for inserting or modifying images. + + + + + + Import Image (Alt + I) + + + + + Export Pieces (E, P) - + New Print Layout (N, L) - + Export Layout (E, L) - + Contains information about custom and internal variables - + Alt+M @@ -8628,12 +8657,12 @@ Do you want to save your changes? - + Activate last used tool (Ctrl+Shift+L) - + Zoom to Selected (Ctrl+Right) @@ -8658,7 +8687,27 @@ Do you want to save your changes? - + + Images tools + + + + + Delete + 删除 + + + + Align + + + + + Lock + + + + Zoom to point (Ctrl + Alt + P) @@ -8668,12 +8717,17 @@ Do you want to save your changes? - + + Alt+I + + + + Please provide additional measurements: %1 - + <b>Tool::Point - Midpoint on Line</b>: Select first point @@ -8823,7 +8877,52 @@ Do you want to save your changes? - + + + Can't read image + + + + + + Could not read the image. + + + + + It may be corrupted... + + + + + It may be corrupted or empty... + + + + + Confirm deletion + + + + + Do you really want to delete? + + + + + + + + Images + + + + + Open Image File + + + + Zoom to Point @@ -8833,7 +8932,7 @@ Do you want to save your changes? - + Intersect Arc and Line @@ -8843,8 +8942,8 @@ Do you want to save your changes? - - + + Add Objects to Group (G) @@ -8855,7 +8954,7 @@ Do you want to save your changes? - + Add Group Objects @@ -8865,7 +8964,7 @@ Do you want to save your changes? - + Can not save file. @@ -8882,36 +8981,36 @@ Do you want to save your changes? - + Ctrl+E - + untitled - + Failed to lock. This file already opened in another window. Expect collisions when running 2 copies of the program. - + Pen Toolbar - + Toolbars - - + + - - + + File exception. @@ -8924,12 +9023,12 @@ Do you want to save your changes? - + pattern 样板 - + Base name used for new points. Press enter to temporarily add it to the list. @@ -11817,7 +11916,7 @@ Press enter to temporarily add it to the list. - + Open Directory @@ -11832,7 +11931,12 @@ Press enter to temporarily add it to the list. - + + My Images + + + + My Patterns @@ -12136,12 +12240,12 @@ Press enter to temporarily add it to the list. QObject - + Create new pattern piece to start working. - + mm @@ -12178,12 +12282,12 @@ Press enter to temporarily add it to the list. - + Changes applied. - + Wrong tag name '%1'. @@ -12541,6 +12645,19 @@ Press enter to temporarily add it to the list. + + ResizeHandlesItem + + + Press <b>CTRL</b> to scale around the center - <b> Aspect ratio locked </b> + + + + + Press <b>CTRL</b> to scale around the center, <b>SHIFT</b> to scale uniformly. + + + SavePieceOptions @@ -13330,12 +13447,12 @@ When unchecked the period is used. - + F2 - + Point @@ -13725,6 +13842,21 @@ When unchecked the period is used. E, D + + + Images + + + + + Import Image + + + + + Alt + I + + Pattern Piece @@ -13942,8 +14074,8 @@ When unchecked the period is used. 帮助 - - + + Keyboard Shortcuts @@ -13953,7 +14085,7 @@ When unchecked the period is used. - + Shift+P @@ -13963,7 +14095,7 @@ When unchecked the period is used. - + Export PDF @@ -14921,7 +15053,7 @@ load in SeamlyME as usual. Tool - + First point 第一点 @@ -15151,7 +15283,7 @@ load in SeamlyME as usual. - + Error creating or updating group @@ -15778,7 +15910,7 @@ load in SeamlyME as usual. VCommonSettings - + measurements @@ -15800,11 +15932,16 @@ load in SeamlyME as usual. + images + + + + label templates - + bodyscans @@ -16643,7 +16780,7 @@ load in SeamlyME as usual. VToolLine - + Length 长度 @@ -17466,7 +17603,7 @@ load in SeamlyME as usual. - + Center point diff --git a/src/app/seamly2d/core/vtooloptionspropertybrowser.cpp b/src/app/seamly2d/core/vtooloptionspropertybrowser.cpp index e04479ac797e..63cd8b5dd00d 100644 --- a/src/app/seamly2d/core/vtooloptionspropertybrowser.cpp +++ b/src/app/seamly2d/core/vtooloptionspropertybrowser.cpp @@ -117,7 +117,7 @@ void VToolOptionsPropertyBrowser::clearPropertyBrowser() void VToolOptionsPropertyBrowser::showItemOptions(QGraphicsItem *item) { // This check helps to find missing tools in the switch - Q_STATIC_ASSERT_X(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 53, "Not all tools were used in switch."); + Q_STATIC_ASSERT_X(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 54, "Not all tools were used in switch."); switch (item->type()) { @@ -244,7 +244,7 @@ void VToolOptionsPropertyBrowser::updateOptions() } // This check helps to find missing tools in the switch - Q_STATIC_ASSERT_X(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 53, "Not all tools were used in switch."); + Q_STATIC_ASSERT_X(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 54, "Not all tools were used in switch."); switch (currentItem->type()) { @@ -389,7 +389,7 @@ void VToolOptionsPropertyBrowser::userChangedData(VPE::VProperty *property) } // This check helps to find missing tools in the switch - Q_STATIC_ASSERT_X(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 53, "Not all tools were used in switch."); + Q_STATIC_ASSERT_X(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 54, "Not all tools were used in switch."); switch (currentItem->type()) { @@ -510,6 +510,11 @@ void VToolOptionsPropertyBrowser::itemClicked(QGraphicsItem *item) { return; } + + if(item->type() == QGraphicsItem::UserType + static_cast(Tool::BackgroundImage)) + { + item = nullptr; + } } if (currentItem == item && item != nullptr) diff --git a/src/app/seamly2d/dialogs/configpages/preferencespathpage.cpp b/src/app/seamly2d/dialogs/configpages/preferencespathpage.cpp index a60864428d22..ff102b18426e 100644 --- a/src/app/seamly2d/dialogs/configpages/preferencespathpage.cpp +++ b/src/app/seamly2d/dialogs/configpages/preferencespathpage.cpp @@ -102,6 +102,7 @@ void PreferencesPathPage::Apply() settings->setMultisizePath(ui->pathTable->item(3, 1)->text()); settings->SetPathLayout(ui->pathTable->item(4, 1)->text()); settings->SetPathLabelTemplate(ui->pathTable->item(5, 1)->text()); + settings->setImageFilePath(ui->pathTable->item(6, 1)->text()); } //--------------------------------------------------------------------------------------------------------------------- @@ -133,6 +134,9 @@ void PreferencesPathPage::defaultPath() case 5: // label templates path = VSettings::getDefaultLabelTemplatePath(); break; + case 6: // images + path = VSettings::getDefaultImageFilePath(); + break; default: break; } @@ -170,6 +174,9 @@ void PreferencesPathPage::editPath() case 5: // label templates path = qApp->Seamly2DSettings()->getLabelTemplatePath(); break; + case 6: // images + path = qApp->Seamly2DSettings()->getImageFilePath(); + break; default: break; } @@ -207,7 +214,7 @@ void PreferencesPathPage::editPath() //--------------------------------------------------------------------------------------------------------------------- void PreferencesPathPage::initializeTable() { - ui->pathTable->setRowCount(6); + ui->pathTable->setRowCount(7); ui->pathTable->setColumnCount(2); const VSettings *settings = qApp->Seamly2DSettings(); @@ -266,6 +273,15 @@ void PreferencesPathPage::initializeTable() ui->pathTable->setItem(5, 1, item); } + { + QTableWidgetItem *item = new QTableWidgetItem(tr("My Images")); + item->setIcon(QIcon("://icon/32x32/add_image.png")); + ui->pathTable->setItem(6, 0, item); + item = new QTableWidgetItem(settings->getImageFilePath()); + item->setToolTip(settings->getImageFilePath()); + ui->pathTable->setItem(6, 1, item); + } + ui->pathTable->verticalHeader()->setDefaultSectionSize(20); ui->pathTable->resizeColumnsToContents(); ui->pathTable->resizeRowsToContents(); diff --git a/src/app/seamly2d/dialogs/groups_widget.cpp b/src/app/seamly2d/dialogs/groups_widget.cpp index 6e5c63998216..a2b509b10d88 100644 --- a/src/app/seamly2d/dialogs/groups_widget.cpp +++ b/src/app/seamly2d/dialogs/groups_widget.cpp @@ -740,7 +740,7 @@ QT_WARNING_DISABLE_GCC("-Wswitch-default") void GroupsWidget::addGroupItem(const quint32 &toolId, const quint32 &objId, const Tool &tooltype) { // This check helps to find missing tools in the switch - Q_STATIC_ASSERT_X(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 53, "Not all tools were used in history."); + Q_STATIC_ASSERT_X(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 54, "Not all tools were used in history."); QString iconFileName = ""; QString objName = tr("Unknown Object"); @@ -762,6 +762,7 @@ void GroupsWidget::addGroupItem(const quint32 &toolId, const quint32 &objId, con case Tool::Cut: case Tool::Midpoint: // Same as Tool::AlongLine, but tool will never have such type case Tool::ArcIntersectAxis: // Same as Tool::CurveIntersectAxis, but tool will never have such type + case Tool::BackgroundImage: case Tool::LAST_ONE_DO_NOT_USE: Q_UNREACHABLE(); //-V501 break; diff --git a/src/app/seamly2d/dialogs/history_dialog.cpp b/src/app/seamly2d/dialogs/history_dialog.cpp index 7805931cfcac..61c302c95a43 100644 --- a/src/app/seamly2d/dialogs/history_dialog.cpp +++ b/src/app/seamly2d/dialogs/history_dialog.cpp @@ -270,7 +270,7 @@ QT_WARNING_DISABLE_GCC("-Wswitch-default") RowData HistoryDialog::record(const VToolRecord &tool) { // This check helps to find missed tools in the switch - Q_STATIC_ASSERT_X(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 53, "Not all tools were used in history."); + Q_STATIC_ASSERT_X(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 54, "Not all tools were used in history."); RowData rowData; const quint32 &toolId = tool.getId(); @@ -293,6 +293,7 @@ RowData HistoryDialog::record(const VToolRecord &tool) case Tool::Cut: case Tool::Midpoint:// Same as Tool::AlongLine, but tool will never has such type case Tool::ArcIntersectAxis:// Same as Tool::CurveIntersectAxis, but tool will never has such type + case Tool::BackgroundImage: case Tool::LAST_ONE_DO_NOT_USE: Q_UNREACHABLE(); //-V501 break; diff --git a/src/app/seamly2d/dialogs/shortcuts_dialog.cpp b/src/app/seamly2d/dialogs/shortcuts_dialog.cpp index 2b53229695c7..8b94935ee4e6 100644 --- a/src/app/seamly2d/dialogs/shortcuts_dialog.cpp +++ b/src/app/seamly2d/dialogs/shortcuts_dialog.cpp @@ -260,6 +260,13 @@ ShortcutsDialog::ShortcutsDialog(QWidget *parent) .arg(tr("True Darts")).arg(tr("T, D")) //12 & 13 .arg(tr("Export Draft Blocks")).arg(tr("E, D")); //14 & 15 + const QString images = QString("" + "" + "" + "
%1
%2 %3
") + .arg(tr("Images")) //1 + .arg(tr("Import Image")).arg(tr("Alt + I")); //2 & 3 + const QString pattern = QString("" "" "" @@ -335,7 +342,7 @@ ShortcutsDialog::ShortcutsDialog(QWidget *parent) .arg(tr("Keyboard Shortcuts")).arg(tr("K")); //2 & 3 ui->shortcuts_TextBrowser->setHtml(file + edit + view + measurements + tools + points + line + curves + - arcs + operations + pattern + details + layout + history + utilities + help); + arcs + operations + images + pattern + details + layout + history + utilities + help); //Limit dialog height to 80% of screen size setMaximumHeight(qRound(QGuiApplication::primaryScreen()->availableGeometry().height() * .8)); diff --git a/src/app/seamly2d/mainwindow.cpp b/src/app/seamly2d/mainwindow.cpp index c0c257c461fe..e2159da9176a 100644 --- a/src/app/seamly2d/mainwindow.cpp +++ b/src/app/seamly2d/mainwindow.cpp @@ -6,8 +6,8 @@ ** @brief ** @copyright ** This source code is part of the Seamly2D project, a pattern making - ** program to create and model patterns of clothing. - ** Copyright (C) 2017-2023 Seamly2D project + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2013-2022 Seamly2D project ** All Rights Reserved. ** ** Seamly2D is free software: you can redistribute it and/or modify @@ -55,6 +55,7 @@ #include "mainwindow.h" #include "ui_mainwindow.h" + #include "../vgeometry/vspline.h" #include "../ifc/exception/vexceptionobjecterror.h" #include "../ifc/exception/vexceptionconversionerror.h" @@ -86,8 +87,11 @@ #include "tools/nodeDetails/anchorpoint_tool.h" #include "tools/union_tool.h" #include "dialogs/dialogs.h" - +#include "../vpropertyexplorer/checkablemessagebox.h" #include "../vtools/undocommands/addgroup.h" +#include "../tools/image_item.h" +#include "dialogs/calculator_dialog.h" +#include "dialogs/decimalchart_dialog.h" #include "../vtools/undocommands/label/showpointname.h" #include "../vpatterndb/vpiecepath.h" #include "../qmuparser/qmuparsererror.h" @@ -115,6 +119,8 @@ #include #include #include +#include +#include #include #if defined(Q_OS_MAC) @@ -195,8 +201,9 @@ MainWindow::MainWindow(QWidget *parent) recentFileActs[i] = nullptr; } - CreateActions(); - InitScenes(); + createActions(); + initializeScenes(); + doc = new VPattern(pattern, &mode, draftScene, pieceScene); connect(doc, &VPattern::ClearMainWindow, this, &MainWindow::Clear); connect(doc, &VPattern::patternChanged, this, &MainWindow::patternChangesWereSaved); @@ -219,28 +226,28 @@ MainWindow::MainWindow(QWidget *parent) qApp->setCurrentDocument(doc); qApp->setCurrentData(pattern); + initializeDocksContain(); + createMenus(); + initializeDraftToolBar(); + initializePointNameToolBar(); + initializeModesToolBar(); + initializeToolButtons(); showMaximized(); - InitDocksContain(); - CreateMenus(); - initDraftToolBar(); - initPointNameToolBar(); - initModesToolBar(); - InitToolButtons(); initPenToolBar(); helpLabel = new QLabel(QObject::tr("Create new pattern piece to start working.")); ui->statusBar->addWidget(helpLabel); - initToolsToolBar(); + initializeToolsToolBar(); connect(qApp->getUndoStack(), &QUndoStack::cleanChanged, this, &MainWindow::patternChangesWereSaved); - InitAutoSave(); + initializeAutoSave(); ui->draft_ToolBox->setCurrentIndex(0); ReadSettings(); - initToolBarVisibility(); + initializeToolBarVisibility(); setCurrentFile(""); WindowsLocale(); @@ -317,9 +324,9 @@ void MainWindow::addDraftBlock(const QString &blockName) if (draftBlockComboBox->count() == 0) { - draftScene->InitOrigins(); + draftScene->initializeOrigins(); draftScene->enablePiecesMode(qApp->Seamly2DSettings()->getShowControlPoints()); - pieceScene->InitOrigins(); + pieceScene->initializeOrigins(); } draftBlockComboBox->blockSignals(true); @@ -383,7 +390,7 @@ QPointF MainWindow::draftBlockStartPosition() const } //--------------------------------------------------------------------------------------------------------------------- -void MainWindow::InitScenes() +void MainWindow::initializeScenes() { draftScene = new VMainGraphicsScene(this); currentScene = draftScene; @@ -526,7 +533,8 @@ bool MainWindow::loadMeasurements(const QString &fileName) try { qApp->setPatternType(measurements->Type()); - initStatusBar(); + initializeStatusToolBar(); + pattern->ClearVariables(VarType::Measurement); measurements->readMeasurements(); } @@ -844,6 +852,10 @@ void MainWindow::ClosedPiecesDialogWithApply(int result) ui->anchorPoint_ToolButton->setEnabled(true); ui->internalPath_ToolButton->setEnabled(true); ui->insertNodes_ToolButton->setEnabled(true); + ui->importImage_ToolButton->setEnabled(true); + ui->anchorPoint_Action->setEnabled(true); + ui->internalPath_Action->setEnabled(true); + ui->images_Action->setEnabled(true); ui->anchorPoint_Action->setEnabled(true); ui->internalPath_Action->setEnabled(true); ui->insertNodes_Action->setEnabled(true); @@ -1625,6 +1637,204 @@ void MainWindow::ClosedInsertNodesDialog(int result) doc->LiteParseTree(Document::LiteParse); } +//--------------------------------------------------------------------------------------------------------------------- +void MainWindow::handleImportImage() +{ + qCDebug(vMainWindow, "Add Image"); + ui->draft_ToolBox->setCurrentWidget(ui->backgroundImage_Page); + ui->importImage_ToolButton->setChecked(true); + + QString filename = getImageFilename(); + qCDebug(vMainWindow, "Image filename: %s", qUtf8Printable(filename)); + + DraftImage image; + QFileInfo f(filename); + if (filename.isEmpty()) + { + ui->importImage_ToolButton->setChecked(false); + return; + } + image.name = f.baseName(); + image.filename = filename; + image.units = qApp->patternUnit(); + + addImage(image); +} + +void MainWindow::addImage(DraftImage image) +{ + static bool firstImportImage = false; + QImageReader imageReader(image.filename); + + image.id = VContainer::getNextId(); + + if(!imageReader.canRead()) + { + qCDebug(vMainWindow, "Can't read image"); + QMessageBox::critical(this, tr("Can't read image"), tr("Could not read the image.") + "\n" + tr("It may be corrupted..."), QMessageBox::Ok); + return; + } + + image.pixmap = QPixmap::fromImageReader(&imageReader); + + if(image.pixmap.isNull()) + { + qCDebug(vMainWindow, "Can't read image"); + QMessageBox::critical(this, tr("Can't read image"), tr("Could not read the image.") + "\n" + tr("It may be corrupted or empty..."), QMessageBox::Ok); + return; + } + + if (image.width == 0 || image.height == 0) + { + image.width = image.pixmap.width(); + image.height = image.pixmap.height(); + } + + ImageItem *item = new ImageItem(doc, image); + doc->addBackgroundImage(image.id, item); + draftScene->addItem(item); + //Need error dialog + + //connect(this, &MainWindow::EnableImageSelection, item, &ImageItem::enableSelection); + //connect(this, &MainWindow::EnableImageHover, item, &ImageItem::enableHovering); + + connect(item, &ImageItem::deleteImage, this, &MainWindow::handleDeleteImage); + //connect(item, &ImageItem::imageSelected, this, &MainWindow::handleImageSelected); + connect(item, &ImageItem::setStatusMessage, this, &MainWindow::setStatusMessage); + + ui->importImage_ToolButton->setChecked(false); + + if(!firstImportImage) + { + qCDebug(vMainWindow, "Inside first import image"); + InfoUnsavedImages(&firstImportImage); + } +} + +//--------------------------------------------------------------------------------------------------------------------- +void MainWindow::handleDeleteImage(quint32 id) +{ + qCDebug(vMainWindow, "delete Image"); + bool deleteConfirmed = true; + + if (qApp->Settings()->getConfirmItemDelete()) + { + Utils::CheckableMessageBox msgBox(qApp->getMainWindow()); + msgBox.setWindowTitle(tr("Confirm deletion")); + msgBox.setText(tr("Do you really want to delete?")); + msgBox.setStandardButtons(QDialogButtonBox::Yes | QDialogButtonBox::No); + msgBox.setDefaultButton(QDialogButtonBox::No); + msgBox.setIconPixmap(QApplication::style()->standardIcon(QStyle::SP_MessageBoxQuestion).pixmap(32, 32) ); + + int dialogResult = msgBox.exec(); + + if (dialogResult != QDialog::Accepted) + { + deleteConfirmed = false; + } + + qApp->Settings()->setConfirmItemDelete(not msgBox.isChecked()); + + } + + if (deleteConfirmed) + { + ImageItem *item = doc->getBackgroundImage(id); + if (item) + { + doc->removeBackgroundImage(id); + item->deleteImageItem(); + } + } +} + +//--------------------------------------------------------------------------------------------------------------------- +void MainWindow::handleImageSelected(quint32 id) +{ + ImageItem *item = doc->getBackgroundImage(id); + if (item) + { + // May be useful in the development of the background-image feature + } +} + +//-------------------------------------------------------------------------------------------------------------------- +void MainWindow::setStatusMessage(QString message) +{ + helpLabel->setText(message); +} + +//--------------------------------------------------------------------------------------------------------------------- +void MainWindow::handleLockImage(bool state) +{ + qCDebug(vMainWindow, "lock Image = %s", state ? "True" : "False"); +} + +//--------------------------------------------------------------------------------------------------------------------- +void MainWindow::handleAlignImage() +{ + qCDebug(vMainWindow, "align Image"); +} + +//--------------------------------------------------------------------------------------------------------------------- +void MainWindow::handleLockImageAspect(bool state) +{ + qCDebug(vMainWindow, "lock Image Aspect= %s", state ? "True" : "False"); +} + +//--------------------------------------------------------------------------------------------------------------------- +void MainWindow::updateImage(DraftImage image) +{ + qCDebug(vMainWindow, "Id = %d", image.id); + qCDebug(vMainWindow, "Name = %s", qUtf8Printable(image.name)); + qCDebug(vMainWindow, "Filename = %s", qUtf8Printable(image.filename)); + qCDebug(vMainWindow, "lock Image = %s", image.locked ? "True" : "False"); + qCDebug(vMainWindow, "Anchor = %d", static_cast(image.anchor)); + qCDebug(vMainWindow, "Xpos = %f", image.xPos); + qCDebug(vMainWindow, "YPos = %f", image.yPos); + qCDebug(vMainWindow, "Width = %f", image.width); + qCDebug(vMainWindow, "Height = %f", image.height); + qCDebug(vMainWindow, "lock Image Aspect = %s", image.aspectLocked ? "True" : "False"); + qCDebug(vMainWindow, "Units = %d", static_cast(image.units)); + qCDebug(vMainWindow, "Rotation = %f", image.rotation); + qCDebug(vMainWindow, "Visible = %s", image.visible ? "True" : "False"); + qCDebug(vMainWindow, "Opacity = %f", image.opacity); + qCDebug(vMainWindow, "Order = %d\n", static_cast(image.order)); + + ImageItem *item = static_cast(qApp->getCurrentScene()->focusItem()); + if (item) + { + item->setImage(image); + } +} + + +//--------------------------------------------------------------------------------------------------------------------- +QString MainWindow::getImageFilename() +{ + const QString filter = tr("Images") + QLatin1String(" (*.bmp *.jpg *.png *.svg *.tf);;") + + "BMP" + QLatin1String(" (*.bmp);;") + + "JPG" + QLatin1String(" (*.jpg);;") + + "PNG" + QLatin1String(" (*.png);;") + + "SVG" + QLatin1String(" (*.svg);;") + + "TIF" + QLatin1String(" (*.tf)"); + + const QString path = qApp->Seamly2DSettings()->getImageFilePath(); + + bool usedNotExistedDir = false; + QDir directory(path); + if (!directory.exists()) + { + usedNotExistedDir = directory.mkpath("."); + } + + const QString filename = QFileDialog::getOpenFileName(this, tr("Open Image File"), path, filter, nullptr, + QFileDialog::DontUseNativeDialog); + + return filename; +} + +//Pieces //--------------------------------------------------------------------------------------------------------------------- /** * @brief handleUnionTool handler for Union tool. @@ -1740,7 +1950,7 @@ void MainWindow::showEvent(QShowEvent *event) { return; } - // do your init stuff here + // do your initialize stuff here MinimumScrollBar(); @@ -1912,7 +2122,6 @@ void MainWindow::LoadIndividual() const QString dir = qApp->Seamly2DSettings()->getIndividualSizePath(); bool usedNotExistedDir = false; - QDir directory(dir); if (!directory.exists()) @@ -2033,7 +2242,7 @@ void MainWindow::UnloadMeasurements() watcher->removePath(AbsoluteMPath(qApp->getFilePath(), doc->MPath())); if (qApp->patternType() == MeasurementsType::Multisize) { - initStatusBar(); + initializeStatusToolBar(); } qApp->setPatternType(MeasurementsType::Unknown); doc->SetMPath(QString()); @@ -2170,9 +2379,9 @@ void MainWindow::OpenAt(QAction *where) //--------------------------------------------------------------------------------------------------------------------- /** - * @brief initStatusBar initialize horizontal bar for presenting status information + * @brief initializeStatusToolBar initialize horizontal bar for presenting status information */ -void MainWindow::initStatusBar() +void MainWindow::initializeStatusToolBar() { if (!mouseCoordinates.isNull()) { @@ -2244,7 +2453,7 @@ QComboBox *MainWindow::SetGradationList(QLabel *label, const QStringList &list) } //--------------------------------------------------------------------------------------------------------------------- -void MainWindow::initModesToolBar() +void MainWindow::initializeModesToolBar() { leftGoToStage = new QLabel(this); leftGoToStage->setPixmap(QPixmap("://icon/24x24/fast_forward_left_to_right_arrow.png")); @@ -2255,11 +2464,12 @@ void MainWindow::initModesToolBar() ui->mode_ToolBar->insertWidget(ui->layoutMode_Action, rightGoToStage); } + //--------------------------------------------------------------------------------------------------------------------- /** - * @brief initPointNameToolBar enable Point Name toolbar. + * @brief initializePointNameToolBar enable Point Name toolbar. */ -void MainWindow::initPointNameToolBar() +void MainWindow::initializePointNameToolBar() { fontComboBox = new QFontComboBox ; fontComboBox->setCurrentFont(qApp->Seamly2DSettings()->getPointNameFont()); @@ -2347,9 +2557,9 @@ void MainWindow::initBasePointComboBox() //--------------------------------------------------------------------------------------------------------------------- /** - * @brief initDraftToolBar enable draw toolbar. + * @brief initializeDraftToolBar enable draw toolbar. */ -void MainWindow::initDraftToolBar() +void MainWindow::initializeDraftToolBar() { draftBlockLabel = new QLabel(tr("Draft Block:")); ui->draft_ToolBar->addWidget(draftBlockLabel); @@ -2378,7 +2588,7 @@ void MainWindow::initDraftToolBar() } //--------------------------------------------------------------------------------------------------------------------- -void MainWindow::initToolsToolBar() +void MainWindow::initializeToolsToolBar() { /*First we will try use Standard Shortcuts from Qt, but because keypad "-" and "+" not the same keys like in main keypad, shortcut Ctrl+"-" or "+" from keypad will not working with standard shortcut (QKeySequence::ZoomIn or @@ -2458,7 +2668,7 @@ void MainWindow::initToolsToolBar() } -void MainWindow::initToolBarVisibility() +void MainWindow::initializeToolBarVisibility() { updateToolBarVisibility(); connect(ui->tools_ToolBox_ToolBar, &QToolBar::visibilityChanged, this, [this](bool visible) @@ -2609,21 +2819,29 @@ void MainWindow::zoomScaleChanged(qreal scale) //--------------------------------------------------------------------------------------------------------------------- void MainWindow::zoomToSelected() { + QGraphicsItem *item = qApp->getCurrentScene()->focusItem(); + QRectF rect; + if (qApp->getCurrentScene() == draftScene) { - ui->view->zoomToRect(doc->ActiveDrawBoundingRect()); + if ((item != nullptr) && (item->type() == QGraphicsItem::UserType + static_cast(Tool::BackgroundImage))) + { + rect = item->boundingRect(); + rect.translate(item->scenePos()); + ui->view->zoomToRect(rect); + } + else + { + ui->view->zoomToRect(doc->ActiveDrawBoundingRect()); + } } else if (qApp->getCurrentScene() == pieceScene) { - QGraphicsItem *item = qApp->getCurrentScene()->focusItem(); + if ((item != nullptr) && (item->type() == QGraphicsItem::UserType + static_cast(Tool::Piece))) { - if ((item != nullptr) && (item->type() == QGraphicsItem::UserType + static_cast(Tool::Piece))) - { - QRectF rect; - rect = item->boundingRect(); - rect.translate(item->scenePos()); - ui->view->zoomToRect(rect); - } + rect = item->boundingRect(); + rect.translate(item->scenePos()); + ui->view->zoomToRect(rect); } } } @@ -2726,12 +2944,12 @@ void MainWindow::zoomToPoint(const QString &pointName) } //--------------------------------------------------------------------------------------------------------------------- -void MainWindow::InitToolButtons() +void MainWindow::initializeToolButtons() { connect(ui->arrowPointer_ToolButton, &QToolButton::clicked, this, &MainWindow::handleArrowTool); // This check helps to find missed tools - Q_STATIC_ASSERT_X(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 53, "Check if all tools were connected."); + Q_STATIC_ASSERT_X(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 54, "Check if all tools were connected."); connect(ui->pointAtDistanceAngle_ToolButton, &QToolButton::clicked, this, &MainWindow::handlePointAtDistanceAngleTool); @@ -2783,7 +3001,8 @@ void MainWindow::InitToolButtons() connect(ui->exportPiecesAs_ToolButton, &QToolButton::clicked, this, &MainWindow::exportPiecesAs); connect(ui->ellipticalArc_ToolButton, &QToolButton::clicked, this, &MainWindow::handleEllipticalArcTool); connect(ui->anchorPoint_ToolButton, &QToolButton::clicked, this, &MainWindow::handleAnchorPointTool); - connect(ui->insertNodes_ToolButton, &QToolButton::clicked, this, &MainWindow::handleInsertNodesTool); + connect(ui->importImage_ToolButton, &QToolButton::clicked, this, &MainWindow::handleImportImage); + connect(ui->insertNodes_ToolButton, &QToolButton::clicked, this, &MainWindow::handleInsertNodesTool); } void MainWindow::handlePointsMenu() @@ -3221,6 +3440,29 @@ void MainWindow::handleLayoutMenu() } } +void MainWindow::handleImagesMenu() +{ + qCDebug(vMainWindow, "Images Menu selected. \n"); + + + QMenu menu; + + QAction *action_ImportImage = menu.addAction(QIcon(":/icon/32x32/add_image.png"), tr("Import Image") + "\tAlt+ I"); + + QAction *selectedAction = menu.exec(QCursor::pos()); + + if(selectedAction == nullptr) + { + return; + } + else if (selectedAction == action_ImportImage) + { + ui->draft_ToolBox->setCurrentWidget(ui->backgroundImage_Page); + ui->importImage_ToolButton->setChecked(true); + handleImportImage(); + } +} + //--------------------------------------------------------------------------------------------------------------------- /** * @brief mouseMove save mouse position and show user. @@ -3243,7 +3485,7 @@ QT_WARNING_DISABLE_GCC("-Wswitch-default") void MainWindow::CancelTool() { // This check helps to find missed tools in the switch - Q_STATIC_ASSERT_X(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 53, "Not all tools were handled."); + Q_STATIC_ASSERT_X(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 54, "Not all tools were handled."); qCDebug(vMainWindow, "Canceling tool."); dialogTool.clear(); @@ -3283,6 +3525,7 @@ void MainWindow::CancelTool() case Tool::NodeElArc: case Tool::NodeSpline: case Tool::NodeSplinePath: + case Tool::BackgroundImage: Q_UNREACHABLE(); //-V501 //Nothing to do here because we can't create this tool from main window. break; @@ -3445,6 +3688,7 @@ void MainWindow::handleArrowTool(bool checked) emit EnableSplinePathSelection(false); emit EnableNodeLabelSelection(true); emit EnableNodePointSelection(true); + emit EnableImageSelection(true); emit enablePieceSelection(true);// Disable when done with pattern piece visualization // Hovering @@ -3457,6 +3701,7 @@ void MainWindow::handleArrowTool(bool checked) emit EnableSplinePathHover(true); emit EnableNodeLabelHover(true); emit EnableNodePointHover(true); + emit EnableImageHover(true); emit enablePieceHover(true); ui->view->allowRubberBand(true); @@ -4144,6 +4389,7 @@ void MainWindow::Clear() ui->editCurrent_Action->setEnabled(false); setToolsEnabled(false); + qApp->setPatternUnit(Unit::Cm); qApp->setPatternType(MeasurementsType::Unknown); @@ -4152,6 +4398,7 @@ void MainWindow::Clear() #endif CleanLayout(); pieceList.clear(); // don't move to CleanLayout() + doc->clearBackgroundImageMap(); qApp->getUndoStack()->clear(); toolProperties->clearPropertyBrowser(); toolProperties->itemClicked(nullptr); @@ -4465,6 +4712,7 @@ void MainWindow::setWidgetsEnabled(bool enable) //Now we don't want allow user call context menu draftScene->setToolsDisabled(!enable, doc->getActiveDraftBlockName()); ui->view->setEnabled(enable); + } //--------------------------------------------------------------------------------------------------------------------- @@ -4705,7 +4953,7 @@ void MainWindow::setToolsEnabled(bool enable) } // This check helps to find missed tools - Q_STATIC_ASSERT_X(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 53, "Not all tools were handled."); + Q_STATIC_ASSERT_X(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 54, "Not all tools were handled."); //Toolbox Drafting Tools //Points @@ -4761,6 +5009,9 @@ void MainWindow::setToolsEnabled(bool enable) ui->internalPath_ToolButton->setEnabled(draftTools & (pattern->DataPieces()->size() > 0)); ui->insertNodes_ToolButton->setEnabled(draftTools & (pattern->DataPieces()->size() > 0)); + //Images + ui->importImage_ToolButton->setEnabled(draftTools); + //Details ui->unitePieces_ToolButton->setEnabled(pieceTools); ui->exportPiecesAs_ToolButton->setEnabled(pieceTools); @@ -4778,6 +5029,7 @@ void MainWindow::setToolsEnabled(bool enable) ui->pieces_Action->setEnabled(draftTools); ui->details_Action->setEnabled(pieceTools); ui->layout_Action->setEnabled(layoutTools); + ui->images_Action->setEnabled(layoutTools); //Menu Actions //Points @@ -4830,9 +5082,14 @@ void MainWindow::setToolsEnabled(bool enable) //Piece ui->addPiece_Action->setEnabled(draftTools); ui->anchorPoint_Action->setEnabled(draftTools & (pattern->DataPieces()->size() > 0)); + ui->internalPath_Action->setEnabled(draftTools & (pattern->DataPieces()->size() > 0)); + ui->images_Action->setEnabled(draftTools); ui->internalPath_Action->setEnabled(draftTools & (pattern->DataPieces()->size() > 0)); ui->insertNodes_Action->setEnabled(draftTools & (pattern->DataPieces()->size() > 0)); + // Images + ui->importImage_Action->setEnabled(draftTools); + //Details ui->union_Action->setEnabled(pieceTools); ui->exportPieces_Action->setEnabled(pieceTools); @@ -5060,6 +5317,32 @@ bool MainWindow::MaybeSave() } return true; } +//--------------------------------------------------------------------------------------------------------------------- +/** + * @brief InfoUnsavedImages is called when the user imports his first image. + */ +void MainWindow::InfoUnsavedImages(bool *firstImportImage) +{ + if (guiEnabled) + { + QScopedPointer messageBox(new QMessageBox(QMessageBox::Information, + tr("Images will not be saved"), + tr("Please note that the images can not be saved and that they are not affected " + "by the undo and redo functions in the current version of the software.\n\n" + "You may want to take a screenshot of the image properties dialog before closing the software " + "to be able to recreate identically the image when opening the software again."), + QMessageBox::NoButton, + this,Qt::Sheet)); + + messageBox->setWindowModality(Qt::ApplicationModal); + messageBox->setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint + & ~Qt::WindowMaximizeButtonHint + & ~Qt::WindowMinimizeButtonHint); + + messageBox->exec(); + *firstImportImage = true; + } +} //--------------------------------------------------------------------------------------------------------------------- void MainWindow::UpdateRecentFileActions() @@ -5084,7 +5367,7 @@ void MainWindow::UpdateRecentFileActions() } //--------------------------------------------------------------------------------------------------------------------- -void MainWindow::CreateMenus() +void MainWindow::createMenus() { //Add last 5 most recent projects to file menu. for (int i = 0; i < MaxRecentFiles; ++i) @@ -5183,7 +5466,7 @@ QT_WARNING_DISABLE_GCC("-Wswitch-default") void MainWindow::LastUsedTool() { // This check helps to find missed tools in the switch - Q_STATIC_ASSERT_X(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 53, "Not all tools were handled."); + Q_STATIC_ASSERT_X(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 54, "Not all tools were handled."); if (currentTool == lastUsedTool) { @@ -5209,6 +5492,7 @@ void MainWindow::LastUsedTool() case Tool::NodeElArc: case Tool::NodeSpline: case Tool::NodeSplinePath: + case Tool::BackgroundImage: Q_UNREACHABLE(); //-V501 //Nothing to do here because we can't create this tool from main window. break; @@ -5417,7 +5701,7 @@ void MainWindow::AddDocks() splitDockWidget(ui->toolProperties_DockWidget, ui->layoutPages_DockWidget, Qt::Vertical); } //--------------------------------------------------------------------------------------------------------------------- -void MainWindow::InitDocksContain() +void MainWindow::initializeDocksContain() { setTabPosition(Qt::RightDockWidgetArea, QTabWidget::West); setTabPosition(Qt::LeftDockWidgetArea, QTabWidget::East); @@ -5451,7 +5735,7 @@ bool MainWindow::startNewSeamly2D(const QString &fileName) const } //--------------------------------------------------------------------------------------------------------------------- -void MainWindow::CreateActions() +void MainWindow::createActions() { ui->setupUi(this); @@ -5907,6 +6191,18 @@ void MainWindow::CreateActions() handleInsertNodesTool(true); }); + //Tools-> Images submenu actions + + connect(ui->importImage_Action, &QAction::triggered, this, [this] + { + ui->draft_ToolBox->setCurrentWidget(ui->backgroundImage_Page); + ui->importImage_ToolButton->setChecked(true); + handleImportImage(); + }); + //connect(ui->deleteImage_Action, &QAction::triggered, this, &MainWindow::handleDeleteImage); + //connect(ui->lockImage_Action, &QAction::triggered, this, &MainWindow::handleLockImage); + //connect(ui->alignImage_Action, &QAction::triggered, this, &MainWindow::handleAlignImage); + //Tools->Layout submenu actions connect(ui->newPrintLayout_Action, &QAction::triggered, this, [this] { @@ -6057,10 +6353,11 @@ void MainWindow::CreateActions() connect(ui->details_Action, &QAction::triggered, this, &MainWindow::handlePatternPiecesMenu); connect(ui->pieces_Action, &QAction::triggered, this, &MainWindow::handlePieceMenu); connect(ui->layout_Action, &QAction::triggered, this, &MainWindow::handleLayoutMenu); + connect(ui->images_Action, &QAction::triggered, this, &MainWindow::handleImagesMenu); } //--------------------------------------------------------------------------------------------------------------------- -void MainWindow::InitAutoSave() +void MainWindow::initializeAutoSave() { //Autosaving file each 1 minutes delete autoSaveTimer; @@ -6273,7 +6570,8 @@ bool MainWindow::LoadPattern(const QString &fileName, const QString& customMeasu if (qApp->patternType() == MeasurementsType::Unknown) {// Show toolbar only if was not uploaded any measurements. - initStatusBar(); + + initializeStatusToolBar(); } } @@ -6372,9 +6670,9 @@ void MainWindow::ToolBarStyles() void MainWindow::resetOrigins() { - draftScene->InitOrigins(); + draftScene->initializeOrigins(); draftScene->setOriginsVisible(true); - pieceScene->InitOrigins(); + pieceScene->initializeOrigins(); pieceScene->setOriginsVisible(true); } @@ -6426,7 +6724,7 @@ void MainWindow::Preferences() if (guard->exec() == QDialog::Accepted) { - InitAutoSave(); + initializeAutoSave(); } } } @@ -7455,6 +7753,7 @@ void MainWindow::ToolSelectPoint() const emit EnableElArcSelection(false); emit EnableSplineSelection(false); emit EnableSplinePathSelection(false); + emit EnableImageSelection(false); // Hovering emit EnableLabelHover(true); @@ -7464,6 +7763,7 @@ void MainWindow::ToolSelectPoint() const emit EnableElArcHover(false); emit EnableSplineHover(false); emit EnableSplinePathHover(false); + emit EnableImageHover(false); ui->view->allowRubberBand(false); } @@ -7493,6 +7793,7 @@ void MainWindow::ToolSelectSpline() const emit EnableElArcSelection(false); emit EnableSplineSelection(false); emit EnableSplinePathSelection(false); + emit EnableImageSelection(false); // Hovering emit EnableLabelHover(false); @@ -7502,6 +7803,7 @@ void MainWindow::ToolSelectSpline() const emit EnableElArcHover(false); emit EnableSplineHover(true); emit EnableSplinePathHover(false); + emit EnableImageHover(false); emit ItemsSelection(SelectionType::ByMouseRelease); @@ -7519,6 +7821,7 @@ void MainWindow::ToolSelectSplinePath() const emit EnableElArcSelection(false); emit EnableSplineSelection(false); emit EnableSplinePathSelection(false); + emit EnableImageSelection(false); // Hovering emit EnableLabelHover(false); @@ -7528,6 +7831,7 @@ void MainWindow::ToolSelectSplinePath() const emit EnableElArcHover(false); emit EnableSplineHover(false); emit EnableSplinePathHover(true); + emit EnableImageHover(false); emit ItemsSelection(SelectionType::ByMouseRelease); @@ -7545,6 +7849,7 @@ void MainWindow::ToolSelectArc() const emit EnableElArcSelection(false); emit EnableSplineSelection(false); emit EnableSplinePathSelection(false); + emit EnableImageSelection(false); // Hovering emit EnableLabelHover(false); @@ -7554,6 +7859,7 @@ void MainWindow::ToolSelectArc() const emit EnableElArcHover(false); emit EnableSplineHover(false); emit EnableSplinePathHover(false); + emit EnableImageHover(false); emit ItemsSelection(SelectionType::ByMouseRelease); @@ -7571,6 +7877,7 @@ void MainWindow::ToolSelectPointArc() const emit EnableElArcSelection(false); emit EnableSplineSelection(false); emit EnableSplinePathSelection(false); + emit EnableImageSelection(false); // Hovering emit EnableLabelHover(true); @@ -7580,6 +7887,7 @@ void MainWindow::ToolSelectPointArc() const emit EnableElArcHover(false); emit EnableSplineHover(false); emit EnableSplinePathHover(false); + emit EnableImageHover(false); emit ItemsSelection(SelectionType::ByMouseRelease); @@ -7597,6 +7905,7 @@ void MainWindow::ToolSelectCurve() const emit EnableElArcSelection(false); emit EnableSplineSelection(false); emit EnableSplinePathSelection(false); + emit EnableImageSelection(false); // Hovering emit EnableLabelHover(false); @@ -7606,6 +7915,7 @@ void MainWindow::ToolSelectCurve() const emit EnableElArcHover(true); emit EnableSplineHover(true); emit EnableSplinePathHover(true); + emit EnableImageHover(false); emit ItemsSelection(SelectionType::ByMouseRelease); @@ -7623,6 +7933,7 @@ void MainWindow::selectAllDraftObjectsTool() const emit EnableElArcSelection(false); emit EnableSplineSelection(false); emit EnableSplinePathSelection(false); + emit EnableImageSelection(false); // Hovering emit EnableLabelHover(true); @@ -7632,6 +7943,7 @@ void MainWindow::selectAllDraftObjectsTool() const emit EnableElArcHover(true); emit EnableSplineHover(true); emit EnableSplinePathHover(true); + emit EnableImageHover(false); emit ItemsSelection(SelectionType::ByMouseRelease); @@ -7649,6 +7961,7 @@ void MainWindow::ToolSelectOperationObjects() const emit EnableElArcSelection(true); emit EnableSplineSelection(true); emit EnableSplinePathSelection(true); + emit EnableImageSelection(false); // Hovering emit EnableLabelHover(true); @@ -7658,6 +7971,7 @@ void MainWindow::ToolSelectOperationObjects() const emit EnableElArcHover(true); emit EnableSplineHover(true); emit EnableSplinePathHover(true); + emit EnableImageHover(false); emit ItemsSelection(SelectionType::ByMouseRelease); diff --git a/src/app/seamly2d/mainwindow.h b/src/app/seamly2d/mainwindow.h index 55585ee22ef9..c406c4921796 100644 --- a/src/app/seamly2d/mainwindow.h +++ b/src/app/seamly2d/mainwindow.h @@ -6,8 +6,8 @@ ** @brief ** @copyright ** This source code is part of the Seamly2D project, a pattern making - ** program to create and model patterns of clothing. - ** Copyright (C) 2017-2023 Seamly2D project + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2013-2022 Seamly2D project ** All Rights Reserved. ** ** Seamly2D is free software: you can redistribute it and/or modify @@ -60,6 +60,7 @@ #include "core/vcmdexport.h" #include "../vmisc/vlockguard.h" +#include #include #include @@ -87,6 +88,10 @@ class LayoutToolBox; class QToolButton; class QDoubleSpinBox; class QFontComboBox; + +class DraftImage; +class ImageItem; + class MouseCoordinates; class PenToolBar; @@ -133,8 +138,8 @@ public slots: void EnableSplinePathSelection(bool enable) const; void EnableNodeLabelSelection(bool enable) const; void EnableNodePointSelection(bool enable) const; + void EnableImageSelection(bool enable) const; void enablePieceSelection(bool enable) const; - void EnableLabelHover(bool enable) const; void EnablePointHover(bool enable) const; void EnableLineHover(bool enable) const; @@ -144,6 +149,7 @@ public slots: void EnableSplinePathHover(bool enable) const; void EnableNodeLabelHover(bool enable) const; void EnableNodePointHover(bool enable) const; + void EnableImageHover(bool enable) const; void enablePieceHover(bool enable) const; void signalZoomToAreaActive(bool enable) const; @@ -228,6 +234,19 @@ private slots: void handleAnchorPointTool(bool checked); void handleInsertNodesTool(bool checked); + void handleImportImage(); + void addImage(DraftImage image); + + void handleDeleteImage(quint32 id); + void handleImageSelected(quint32 id); + void handleLockImage(bool state); + void handleAlignImage(); + void updateImage(DraftImage image); + void handleLockImageAspect(bool state); + void setStatusMessage(QString message); + QString getImageFilename(); + + void handlePatternPieceTool(bool checked); void handleUnionTool(bool checked); @@ -340,6 +359,7 @@ private slots: std::shared_ptr> lock; QDoubleSpinBox *zoomScaleSpinBox; + PenToolBar *m_penToolBar; //!< for selecting the current pen PenToolBar *m_penReset; QComboBox *m_zoomToPointComboBox; @@ -347,18 +367,19 @@ private slots: void SetDefaultHeight(); void SetDefaultSize(); - void initStatusBar(); - void initModesToolBar(); - void initDraftToolBar(); - void initPointNameToolBar(); - void initBasePointComboBox(); - void initToolsToolBar(); - void initToolBarVisibility(); + void initializeStatusToolBar(); + void initializeModesToolBar(); + void initializeDraftToolBar(); + void initializePointNameToolBar(); + void initializeToolsToolBar(); + void initializeToolBarVisibility(); void initPenToolBar(); - void initPropertyEditor(); + void initPropertyEditor(); + void initBasePointComboBox(); + void updateToolBarVisibility(); void setToolBarVisibility(QToolBar *toolbar, bool visible); - void InitToolButtons(); + void initializeToolButtons(); void handlePointsMenu(); void handleLinesMenu(); @@ -411,13 +432,17 @@ private slots: void WriteSettings(); bool MaybeSave(); + void InfoUnsavedImages(bool * firstImportImage); void UpdateRecentFileActions(); - void CreateMenus(); - void CreateActions(); - void InitAutoSave(); + + void createMenus(); + void createActions(); + void initializeAutoSave(); + QString PatternPieceName(const QString &text); + QString CheckPathToMeasurements(const QString &patternPath, const QString &path); + QComboBox *SetGradationList(QLabel *label, const QStringList &list); QString createDraftBlockName(const QString &text); QString checkPathToMeasurements(const QString &patternPath, const QString &path); - QComboBox *SetGradationList(QLabel *label, const QStringList &list); void changeDraftBlock(int index, bool zoomBestFit = true); /** * @brief EndVisualization try show dialog after and working with tool visualization. @@ -428,7 +453,7 @@ private slots: void UpdateSizesList(const QStringList &list); void AddDocks(); - void InitDocksContain(); + void initializeDocksContain(); bool startNewSeamly2D(const QString &fileName = QString())const; void FileClosedCorrect(); QStringList GetUnlokedRestoreFileList()const; @@ -436,7 +461,7 @@ private slots: void addDraftBlock(const QString &blockName); QPointF draftBlockStartPosition() const; - void InitScenes(); + void initializeScenes(); QSharedPointer openMeasurementFile(const QString &fileName); bool loadMeasurements(const QString &fileName); diff --git a/src/app/seamly2d/mainwindow.ui b/src/app/seamly2d/mainwindow.ui index 81880d337e58..0b3414939fc4 100644 --- a/src/app/seamly2d/mainwindow.ui +++ b/src/app/seamly2d/mainwindow.ui @@ -64,7 +64,7 @@ 0 0 1100 - 22 + 21 @@ -308,6 +308,16 @@ + + + Images + + + + :/toolicon/32x32/image_menu_icon.png:/toolicon/32x32/image_menu_icon.png + + + @@ -317,6 +327,7 @@ + @@ -450,7 +461,7 @@ 220 - 113 + 127 @@ -538,7 +549,7 @@ 220 - 40 + 46 @@ -601,6 +612,7 @@ + @@ -678,7 +690,7 @@ - true + false Operations ToolBar @@ -750,1514 +762,1567 @@ TopToolBarArea - - - true - - - - - - - - - - 140 - 524 - - - - - 524287 - 524287 - - - - false - - - Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea - - - Toolbox - - - 1 - - - - - 0 - 500 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - 6 - - - 6 - - - 6 - - - 6 - - - - - false - - - Tool pointer - - - ... - - - - :/icon/32x32/arrow_cursor.png:/icon/32x32/arrow_cursor.png - - - - 32 - 32 - - - - true - - - - - - - - 124 - 0 - - - - 0 - - - - - true - - - - 0 - 0 - 124 - 461 - - - - - 1 - 0 - - - - - 124 - 0 - - - - - 16777215 - 16777215 - - - - - 10 - - - - - - - 4 - - - 4 - - - - - 0 - 0 - 118 - 288 - - - - - 0 - 0 - - - - - 118 - 0 - - - - - 16777215 - 16777215 - - - - Tools for creating points. - - - - :/toolicon/32x32/points_toolbox.png:/toolicon/32x32/points_toolbox.png - - - Point - - - Point - - - - QFormLayout::AllNonFixedFieldsGrow - - - 4 - - - 8 - - - 8 - - - 8 - - - 8 - - - - - false - - - Point - On Bisector (O, B) - - - ... - - - - :/toolicon/32x32/bisector.png:/toolicon/32x32/bisector.png - - - - 32 - 32 - - - - true - - - - - - - false - - - Point - Length to Line (P, S) - - - ... - - - - :/toolicon/32x32/shoulder.png:/toolicon/32x32/shoulder.png - - - - 32 - 32 - - - - true - - - - - - - false - - - Point - Intersect Arc and Line (A, L) - - - ... - - - - :/toolicon/32x32/point_intersect_arc_line.png:/toolicon/32x32/point_intersect_arc_line.png - - - - 32 - 32 - - - - true - - - - - - - false - - - Point - Intersect Axis and Triangle (X, T) - - - ... - - - - :/toolicon/32x32/triangle.png:/toolicon/32x32/triangle.png - - - - 32 - 32 - - - - true - - - - - - - false - - - Point - Intersect XY (X, Y) - - - ... - - - - :/toolicon/32x32/point_intersectxy_icon.png:/toolicon/32x32/point_intersectxy_icon.png - - - - 32 - 32 - - - - true - - - - - - - false - - - Point - Intersect Line and Perpendicular (L, P) - - - ... - - - - :/toolicon/32x32/height.png:/toolicon/32x32/height.png - - - - 32 - 32 - - - - true - - - - - - - false - - - Point - Intersect Line and Axis (L, X) - - - ... - - - - :/toolicon/32x32/line_intersect_axis.png:/toolicon/32x32/line_intersect_axis.png - - - - 32 - 32 - - - - true - - - - - - - false - - - Point - On Perpendicular (O, P) - - - ... - - - - :/toolicon/32x32/normal.png:/toolicon/32x32/normal.png - - - - 32 - 32 - - - - true - - - - - - - false - - - Point - Length and Angle (L, A) - - - ... - - - - :/toolicon/32x32/segment.png:/toolicon/32x32/segment.png - - - - 32 - 32 - - - - true - - - - - - - false - - - Point - On Line (O, L) - - - ... - - - - :/toolicon/32x32/along_line.png:/toolicon/32x32/along_line.png - - - - 32 - 32 - - - - true - - - - - - - false - - - Point - Midpoint on Line (Shift+O, Shift+L) - - - ... - - - - :/toolicon/32x32/midpoint.png:/toolicon/32x32/midpoint.png - - - - 32 - 32 - - - - true - - - - - - - - - 0 - 0 - 124 - 58 - - - - - 0 - 0 - - - - Tools for creating lines. - - - - :/toolicon/32x32/lines_toolbox.png:/toolicon/32x32/lines_toolbox.png - - - Line - - - Line - - - - 4 - - - 8 - - - 8 - - - 8 - - - 8 - - - - - false - - - Line between 2 Points (Alt+L) - - - ... - - - - :/toolicon/32x32/line.png:/toolicon/32x32/line.png - - - - 32 - 32 - - - - true - - - - - - - false - - - Point - Intersect Lines (I, L) - - - ... - - - - :/toolicon/32x32/intersect.png:/toolicon/32x32/intersect.png - - - - 32 - 32 - - - - true - - - - - - - - - 0 - 0 - 124 - 196 - - - - - 0 - 0 - - - - - 118 - 0 - - - - Tools for creating curves. - - - - :/toolicon/32x32/spline_toolboxs.png:/toolicon/32x32/spline_toolboxs.png - - - Curve - - - Curve - - - - 4 - - - 8 - - - 8 - - - 8 - - - 8 - - - - - false - - - Curve - Interactive (Alt+C) - - - ... - - - - :/toolicon/32x32/spline.png:/toolicon/32x32/spline.png - - - - 32 - 32 - - - - true - - - - - - - false - - - Spline - Interactive (Alt+S) - - - ... - - - - :/toolicon/32x32/splinePath.png:/toolicon/32x32/splinePath.png - - - - 32 - 32 - - - - true - - - - - - - false - - - Curve - Fixed (Alt+Shift+C) - - - ... - - - - :/toolicon/32x32/cubic_bezier.png:/toolicon/32x32/cubic_bezier.png - - - - 32 - 32 - - - - true - - - - - - - false - - - Spline - Fixed (Alt+Shift+S) - - - ... - - - - :/toolicon/32x32/cubic_bezier_path.png:/toolicon/32x32/cubic_bezier_path.png - - - - 32 - 32 - - - - true - - - - - - - false - - - Point - On Spline (O, S) - - - ... - - - - :/toolicon/32x32/splinePath_cut_point.png:/toolicon/32x32/splinePath_cut_point.png - - - - 32 - 32 - - - - true - - - - - - - false - - - Point - Intersect Curves (I, C) - - - ... - - - - :/toolicon/32x32/intersection_curves.png:/toolicon/32x32/intersection_curves.png - - - - 32 - 32 - - - - true - - - - - - - false - - - Point - Intersect Curve and Axis (C, X) - - - ... - - - - :/toolicon/32x32/curve_intersect_axis.png:/toolicon/32x32/curve_intersect_axis.png - - - - 32 - 32 - - - - true - - - - - - - false - - - Point - On Curve (O, C) - - - ... - - - - :/toolicon/32x32/spline_cut_point.png:/toolicon/32x32/spline_cut_point.png - - - - 32 - 32 - - - - true - - - - - - - - - 0 - 0 - 124 - 226 - - - - - 0 - 0 - - - - Tools for creating arcs. - - - - :/toolicon/32x32/arcs_toolbox.png:/toolicon/32x32/arcs_toolbox.png - - - Arc - - - Arc - - - - 4 - - - 8 - - - 8 - - - 8 - - - 8 - - - - - false - - - Arc - Radius and Angles (Alt+A) - - - ... - - - - :/toolicon/32x32/arc.png:/toolicon/32x32/arc.png - - - - 32 - 32 - - - - true - - - - - - - false - - - Point - On Arc (O, A) - - - ... - - - - :/toolicon/32x32/arc_cut.png:/toolicon/32x32/arc_cut.png - - - - 32 - 32 - - - - true - - - - - - - false - - - Point - Intersect Arc and Axis (A, X) - - - ... - - - - :/toolicon/32x32/arc_intersect_axis.png:/toolicon/32x32/arc_intersect_axis.png - - - - 32 - 32 - - - - true - - - - - - - false - - - Point - Intersect Arcs (I, A) - - - ... - - - - :/toolicon/32x32/point_of_intersection_arcs.png:/toolicon/32x32/point_of_intersection_arcs.png - - - - 32 - 32 - - - - true - - - - - - - false - - - Point - Intersect Circles (Shift+I, Shift+C) - - - ... - - - - :/toolicon/32x32/point_of_intersection_circles.png:/toolicon/32x32/point_of_intersection_circles.png - - - - 32 - 32 - - - - true - - - - - - - false - - - Point - Intersect Circle and Tangent (C, T) - - - ... - - - - :/toolicon/32x32/point_from_circle_and_tangent.png:/toolicon/32x32/point_from_circle_and_tangent.png - - - - 32 - 32 - - - - true - - - - - - - false - - - Point - Intersect Arc and Tangent (A, T) - - - ... - - - - :/toolicon/32x32/point_from_arc_and_tangent.png:/toolicon/32x32/point_from_arc_and_tangent.png - - - - 32 - 32 - - - - true - - - - - - - false - - - Arc - Radius and Length (Alt+Shift+A) - - - ... - - - - :/toolicon/32x32/arc_with_length.png:/toolicon/32x32/arc_with_length.png - - - - 32 - 32 - - - - true - - - - - - - false - - - Arc - Elliptical (Alt+E) - - - ... - - - - :/toolicon/32x32/el_arc.png:/toolicon/32x32/el_arc.png - - - - 32 - 32 - - - - true - - - - - - - - - 0 - 0 - 124 - 287 - - - - Tools for performing operations on objects - - - - :/toolicon/32x32/operations_toolbox.png:/toolicon/32x32/operations_toolbox.png - - - Operations - - - Operations - - - - 4 - - - 8 - - - 8 - - - 8 - - - 8 - - - - - false - - - Add Objects to Group (G) - - - ... - - - - :/toolicon/32x32/group.png:/toolicon/32x32/group.png - - - - 32 - 32 - - - - true - - - - - - - false - - - Rotate Selected Objects (R) - - - ... - - - - :/toolicon/32x32/rotation.png:/toolicon/32x32/rotation.png - - - - 32 - 32 - - - - true - - - - - - - false - - - Mirror Objects by Line (M, L) - - - ... - - - - :/toolicon/32x32/mirror_by_line.png:/toolicon/32x32/mirror_by_line.png - - - - 32 - 32 - - - - true - - - - - - - false - - - Mirror Objects by Axis (M, A) - - - ... - - - - :/toolicon/32x32/mirror_by_axis.png:/toolicon/32x32/mirror_by_axis.png - - - - 32 - 32 - - - - true - - - - - - - false - - - Move Objects (Alt+M) - - - ... - - - - :/toolicon/32x32/move.png:/toolicon/32x32/move.png - - - - 32 - 32 - - - - true - - - - - - - false - - - True Darts (T, D) - - - ... - - - - :/toolicon/32x32/true_darts.png:/toolicon/32x32/true_darts.png - - - - 32 - 32 - - - - true - - - - - - - false - - - Export Draft Blocks (E, D) - - - ... - - - - :/toolicon/32x32/export.png:/toolicon/32x32/export.png - - - - 32 - 32 - - - - true - - - - - - - - - 0 - 0 - 124 - 96 - - - - - 0 - 0 - - - - Tools for adding pattern pieces. - - - - :/toolicon/32x32/patternpiece_toolbox.png:/toolicon/32x32/patternpiece_toolbox.png - - - Piece - - - Add Details - - - - 4 + + + true + + + + + + + + + + 158 + 530 + + + + + 524287 + 524287 + + + + false + + + Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea + + + Toolbox + + + 1 + + + + + 0 + 500 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 6 + + + 6 + + + 6 + + + 6 + + + + + false + + + Tool pointer + + + ... + + + + :/icon/32x32/arrow_cursor.png:/icon/32x32/arrow_cursor.png + + + + 32 + 32 + + + + true + + + + + + + + 124 + 0 + + + + 0 + + + + + + + true - - 8 + + + 1 + 0 + - - 8 + + + 124 + 0 + - - 8 + + + 16777215 + 16777215 + - - 8 + + + 10 + - - - - false - - - Add New Pattern Piece (N, P) - - - ... - - - - :/toolicon/32x32/new_piece.png:/toolicon/32x32/new_piece.png - - - - 32 - 32 - - - - true - - - - - - - false - - - Add Anchor Point (A, P) - - - ... - - - - :/toolicon/32x32/anchor_point.png:/toolicon/32x32/anchor_point.png - - - - 32 - 32 - - - - true - - - - - - - false - - - Insert Nodes (I, N) - - - ... - - - - :/toolicon/32x32/insert_nodes_icon.png:/toolicon/32x32/insert_nodes_icon.png - - - - 32 - 32 - - - - true - - - - - - - false - - - Add Internal Path (I, P) - - - ... - - - - :/toolicon/32x32/path.png:/toolicon/32x32/path.png - - - - 32 - 32 - - - - true - - - - - - + + + + + 6 + + + 4 + + + + + -15 + 0 + 118 + 288 + + + + + 0 + 0 + + + + + 118 + 0 + + + + + 16777215 + 16777215 + + + + Tools for creating points. + + + + :/toolicon/32x32/points_toolbox.png:/toolicon/32x32/points_toolbox.png + + + Point + + + Point + + + + QFormLayout::AllNonFixedFieldsGrow + + + 4 + + + 8 + + + 8 + + + 8 + + + 8 + + + + + false + + + Point - On Bisector (O, B) + + + ... + + + + :/toolicon/32x32/bisector.png:/toolicon/32x32/bisector.png + + + + 32 + 32 + + + + true + + + + + + + false + + + Point - Length to Line (P, S) + + + ... + + + + :/toolicon/32x32/shoulder.png:/toolicon/32x32/shoulder.png + + + + 32 + 32 + + + + true + + + + + + + false + + + Point - Intersect Arc and Line (A, L) + + + ... + + + + :/toolicon/32x32/point_of_contact.png:/toolicon/32x32/point_of_contact.png + + + + 32 + 32 + + + + true + + + + + + + false + + + Point - Intersect Axis and Triangle (X, T) + + + ... + + + + :/toolicon/32x32/triangle.png:/toolicon/32x32/triangle.png + + + + 32 + 32 + + + + true + + + + + + + false + + + Point - Intersect XY (X, Y) + + + ... + + + + :/toolicon/32x32/point_intersectxy_icon.png:/toolicon/32x32/point_intersectxy_icon.png + + + + 32 + 32 + + + + true + + + + + + + false + + + Point - Intersect Line and Perpendicular (L, P) + + + ... + + + + :/toolicon/32x32/height.png:/toolicon/32x32/height.png + + + + 32 + 32 + + + + true + + + + + + + false + + + Point - Intersect Line and Axis (L, X) + + + ... + + + + :/toolicon/32x32/line_intersect_axis.png:/toolicon/32x32/line_intersect_axis.png + + + + 32 + 32 + + + + true + + + + + + + false + + + Point - On Perpendicular (O, P) + + + ... + + + + :/toolicon/32x32/normal.png:/toolicon/32x32/normal.png + + + + 32 + 32 + + + + true + + + + + + + false + + + Point - Length and Angle (L, A) + + + ... + + + + :/toolicon/32x32/segment.png:/toolicon/32x32/segment.png + + + + 32 + 32 + + + + true + + + + + + + false + + + Point - On Line (O, L) + + + ... + + + + :/toolicon/32x32/along_line.png:/toolicon/32x32/along_line.png + + + + 32 + 32 + + + + true + + + + + + + false + + + Point - Midpoint on Line (Shift+O, Shift+L) + + + ... + + + + :/toolicon/32x32/midpoint.png:/toolicon/32x32/midpoint.png + + + + 32 + 32 + + + + true + + + + + + + + + 0 + 0 + 124 + 58 + + + + + 0 + 0 + + + + Tools for creating lines. + + + + :/toolicon/32x32/lines_toolbox.png:/toolicon/32x32/lines_toolbox.png + + + Line + + + Line + + + + 4 + + + 8 + + + 8 + + + 8 + + + 8 + + + + + false + + + Line between 2 Points (Alt+L) + + + ... + + + + :/toolicon/32x32/line.png:/toolicon/32x32/line.png + + + + 32 + 32 + + + + true + + + + + + + false + + + Point - Intersect Lines (I, L) + + + ... + + + + :/toolicon/32x32/intersect.png:/toolicon/32x32/intersect.png + + + + 32 + 32 + + + + true + + + + + + + + + 0 + 0 + 124 + 196 + + + + + 0 + 0 + + + + + 118 + 0 + + + + Tools for creating curves. + + + + :/toolicon/32x32/spline_toolboxs.png:/toolicon/32x32/spline_toolboxs.png + + + Curve + + + Curve + + + + 4 + + + 8 + + + 8 + + + 8 + + + 8 + + + + + false + + + Curve - Interactive (Alt+C) + + + ... + + + + :/toolicon/32x32/spline.png:/toolicon/32x32/spline.png + + + + 32 + 32 + + + + true + + + + + + + false + + + Spline - Interactive (Alt+S) + + + ... + + + + :/toolicon/32x32/splinePath.png:/toolicon/32x32/splinePath.png + + + + 32 + 32 + + + + true + + + + + + + false + + + Curve - Fixed (Alt+Shift+C) + + + ... + + + + :/toolicon/32x32/cubic_bezier.png:/toolicon/32x32/cubic_bezier.png + + + + 32 + 32 + + + + true + + + + + + + false + + + Spline - Fixed (Alt+Shift+S) + + + ... + + + + :/toolicon/32x32/cubic_bezier_path.png:/toolicon/32x32/cubic_bezier_path.png + + + + 32 + 32 + + + + true + + + + + + + false + + + Point - On Spline (O, S) + + + ... + + + + :/toolicon/32x32/splinePath_cut_point.png:/toolicon/32x32/splinePath_cut_point.png + + + + 32 + 32 + + + + true + + + + + + + false + + + Point - Intersect Curves (I, C) + + + ... + + + + :/toolicon/32x32/intersection_curves.png:/toolicon/32x32/intersection_curves.png + + + + 32 + 32 + + + + true + + + + + + + false + + + Point - Intersect Curve and Axis (C, X) + + + ... + + + + :/toolicon/32x32/curve_intersect_axis.png:/toolicon/32x32/curve_intersect_axis.png + + + + 32 + 32 + + + + true + + + + + + + false + + + Point - On Curve (O, C) + + + ... + + + + :/toolicon/32x32/spline_cut_point.png:/toolicon/32x32/spline_cut_point.png + + + + 32 + 32 + + + + true + + + + + + + + + 0 + 0 + 103 + 226 + + + + + 0 + 0 + + + + Tools for creating arcs. + + + + :/toolicon/32x32/arcs_toolbox.png:/toolicon/32x32/arcs_toolbox.png + + + Arc + + + Arc + + + + 4 + + + 8 + + + 8 + + + 8 + + + 8 + + + + + false + + + Arc - Radius and Angles (Alt+A) + + + ... + + + + :/toolicon/32x32/arc.png:/toolicon/32x32/arc.png + + + + 32 + 32 + + + + true + + + + + + + false + + + Point - On Arc (O, A) + + + ... + + + + :/toolicon/32x32/arc_cut.png:/toolicon/32x32/arc_cut.png + + + + 32 + 32 + + + + true + + + + + + + false + + + Point - Intersect Arc and Axis (A, X) + + + ... + + + + :/toolicon/32x32/arc_intersect_axis.png:/toolicon/32x32/arc_intersect_axis.png + + + + 32 + 32 + + + + true + + + + + + + false + + + Point - Intersect Arcs (I, A) + + + ... + + + + :/toolicon/32x32/point_of_intersection_arcs.png:/toolicon/32x32/point_of_intersection_arcs.png + + + + 32 + 32 + + + + true + + + + + + + false + + + Point - Intersect Circles (Shift+I, Shift+C) + + + ... + + + + :/toolicon/32x32/point_of_intersection_circles.png:/toolicon/32x32/point_of_intersection_circles.png + + + + 32 + 32 + + + + true + + + + + + + false + + + Point - Intersect Circle and Tangent (C, T) + + + ... + + + + :/toolicon/32x32/point_from_circle_and_tangent.png:/toolicon/32x32/point_from_circle_and_tangent.png + + + + 32 + 32 + + + + true + + + + + + + false + + + Point - Intersect Arc and Tangent (A, T) + + + ... + + + + :/toolicon/32x32/point_from_arc_and_tangent.png:/toolicon/32x32/point_from_arc_and_tangent.png + + + + 32 + 32 + + + + true + + + + + + + false + + + Arc - Radius and Length (Alt+Shift+A) + + + ... + + + + :/toolicon/32x32/arc_with_length.png:/toolicon/32x32/arc_with_length.png + + + + 32 + 32 + + + + true + + + + + + + false + + + Arc - Elliptical (Alt+E) + + + ... + + + + :/toolicon/32x32/el_arc.png:/toolicon/32x32/el_arc.png + + + + 32 + 32 + + + + true + + + + + + + + + 0 + 0 + 124 + 180 + + + + Tools for performing operations on objects + + + + :/toolicon/32x32/operations_toolbox.png:/toolicon/32x32/operations_toolbox.png + + + Operations + + + Operations + + + + 4 + + + 8 + + + 8 + + + 8 + + + 8 + + + + + false + + + Add Objects to Group (G) + + + ... + + + + :/toolicon/32x32/group.png:/toolicon/32x32/group.png + + + + 32 + 32 + + + + true + + + + + + + false + + + Rotate Selected Objects (R) + + + ... + + + + :/toolicon/32x32/rotation.png:/toolicon/32x32/rotation.png + + + + 32 + 32 + + + + true + + + + + + + false + + + Mirror Objects by Line (M, L) + + + ... + + + + :/toolicon/32x32/mirror_by_line.png:/toolicon/32x32/mirror_by_line.png + + + + 32 + 32 + + + + true + + + + + + + false + + + Mirror Objects by Axis (M, A) + + + ... + + + + :/toolicon/32x32/mirror_by_axis.png:/toolicon/32x32/mirror_by_axis.png + + + + 32 + 32 + + + + true + + + + + + + false + + + Move Objects (Alt+M) + + + ... + + + + :/toolicon/32x32/move.png:/toolicon/32x32/move.png + + + + 32 + 32 + + + + true + + + + + + + false + + + True Darts (T, D) + + + ... + + + + :/toolicon/32x32/true_darts.png:/toolicon/32x32/true_darts.png + + + + 32 + 32 + + + + true + + + + + + + false + + + Export Draft Blocks (E, D) + + + ... + + + + :/toolicon/32x32/export.png:/toolicon/32x32/export.png + + + + 32 + 32 + + + + true + + + + + + + + + 0 + 0 + 124 + 96 + + + + + 0 + 0 + + + + Tools for adding pattern pieces. + + + + :/toolicon/32x32/patternpiece_toolbox.png:/toolicon/32x32/patternpiece_toolbox.png + + + Piece + + + Add Details + + + + 4 + + + 8 + + + 8 + + + 8 + + + 8 + + + + + false + + + Add New Pattern Piece (N, P) + + + ... + + + + :/toolicon/32x32/new_piece.png:/toolicon/32x32/new_piece.png + + + + 32 + 32 + + + + true + + + + + + + false + + + Add Anchor Point (A, P) + + + ... + + + + :/toolicon/32x32/anchor_point.png:/toolicon/32x32/anchor_point.png + + + + 32 + 32 + + + + true + + + + + + + false + + + Insert Nodes (I, N) + + + ... + + + + :/toolicon/32x32/insert_nodes_icon.png:/toolicon/32x32/insert_nodes_icon.png + + + + 32 + 32 + + + + true + + + + + + + false + + + Add Internal Path (I, P) + + + ... + + + + :/toolicon/32x32/path.png:/toolicon/32x32/path.png + + + + 32 + 32 + + + + true + + + + + + + + + 0 + 0 + 124 + 60 + + + + + 0 + 0 + + + + Tools for inserting or modifying images. + + + + :/toolicon/32x32/image_menu_icon.png:/toolicon/32x32/image_menu_icon.png + + + Images + + + Images + + + + + + false + + + Import Image (Alt + I) + + + ... + + + + :/icon/32x32/add_image.png:/icon/32x32/add_image.png + + + + 32 + 32 + + + + true + + + + + + + + @@ -2309,8 +2374,8 @@ 0 0 - 120 - 82 + 98 + 28 @@ -2443,8 +2508,8 @@ 0 0 - 120 - 82 + 101 + 54 @@ -2630,8 +2695,7 @@ false - - .. + Save &As... @@ -3602,8 +3666,7 @@ false - - .. + Original zoom @@ -3675,8 +3738,7 @@ - - .. + Wiki @@ -3749,8 +3811,7 @@ false - - .. + Print @@ -3767,8 +3828,7 @@ false - - .. + Print tiled PDF @@ -3785,8 +3845,7 @@ false - - .. + Print preview @@ -3803,8 +3862,7 @@ false - - .. + Preview tiled PDF @@ -4578,6 +4636,45 @@ Export + + + false + + + + :/toolicon/32x32/image_menu_icon.png:/toolicon/32x32/image_menu_icon.png + + + Images tools + + + + + + :/icon/32x32/trashcan.png:/icon/32x32/trashcan.png + + + Delete + + + + + + :/icon/32x32/alignment.png:/icon/32x32/alignment.png + + + Align + + + + + + :/icon/32x32/lock_on.png:/icon/32x32/lock_on.png + + + Lock + + true @@ -4635,6 +4732,24 @@ Ctrl+Alt+P + + + false + + + + :/icon/32x32/add_image.png:/icon/32x32/add_image.png + + + Import Image + + + Import Image (Alt + I) + + + Alt+I + + diff --git a/src/app/seamly2d/seamly2d.pro b/src/app/seamly2d/seamly2d.pro index 9e49dbe59d87..b6e8b787d612 100644 --- a/src/app/seamly2d/seamly2d.pro +++ b/src/app/seamly2d/seamly2d.pro @@ -221,6 +221,16 @@ DEPENDPATH += $$PWD/../../libs/vtools win32:!win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/vtools/$${DESTDIR}/vtools.lib else:unix|win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/vtools/$${DESTDIR}/libvtools.a +#Tools static library (depend on VWidgets, VMisc, VPatternDB) +unix|win32: LIBS += -L$$OUT_PWD/../../libs/tools/$${DESTDIR}/ -ltools + +INCLUDEPATH += $$PWD/../../libs/tools +INCLUDEPATH += $$OUT_PWD/../../libs/tools/$${UI_DIR} # For UI files +DEPENDPATH += $$PWD/../../libs/tools + +win32:!win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/tools/$${DESTDIR}/tools.lib +else:unix|win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/tools/$${DESTDIR}/libtools.a + #VWidgets static library unix|win32: LIBS += -L$$OUT_PWD/../../libs/vwidgets/$${DESTDIR}/ -lvwidgets diff --git a/src/app/seamly2d/share/resources/cursor.qrc b/src/app/seamly2d/share/resources/cursor.qrc index 5a415a9c02ea..16071b48338d 100644 --- a/src/app/seamly2d/share/resources/cursor.qrc +++ b/src/app/seamly2d/share/resources/cursor.qrc @@ -84,6 +84,8 @@ cursor/group_cursor@2x.png cursor/insert_nodes_cursor.png cursor/insert_nodes_cursor@2x.png + cursor/arrow_resize_cursor.png + cursor/arrow_resize_cursor@2x.png cursor/point_intersect_arc_line_cursor.png cursor/point_intersect_arc_line_cursor@2x.png diff --git a/src/app/seamly2d/share/resources/cursor/arrow_resize_cursor.png b/src/app/seamly2d/share/resources/cursor/arrow_resize_cursor.png new file mode 100644 index 000000000000..76169197ee99 Binary files /dev/null and b/src/app/seamly2d/share/resources/cursor/arrow_resize_cursor.png differ diff --git a/src/app/seamly2d/share/resources/cursor/arrow_resize_cursor@2x.png b/src/app/seamly2d/share/resources/cursor/arrow_resize_cursor@2x.png new file mode 100644 index 000000000000..fa6f5b14148a Binary files /dev/null and b/src/app/seamly2d/share/resources/cursor/arrow_resize_cursor@2x.png differ diff --git a/src/app/seamly2d/share/resources/toolicon.qrc b/src/app/seamly2d/share/resources/toolicon.qrc index e311d254f3df..391ed0f71f12 100644 --- a/src/app/seamly2d/share/resources/toolicon.qrc +++ b/src/app/seamly2d/share/resources/toolicon.qrc @@ -77,8 +77,6 @@ toolicon/32x32/path@2x.png toolicon/32x32/circles_toolbox.png toolicon/32x32/patternpiece_toolbox.png - toolicon/32x32/images@2x_toolbox.png - toolicon/32x32/images_toolbox.png toolicon/32x32/layout_toolbox.png toolicon/32x32/details_toolbox.png toolicon/32x32/points_toolbox.png @@ -102,6 +100,7 @@ toolicon/32x32/insert_nodes_icon@2x.png toolicon/32x32/point_basepoint_icon.png toolicon/32x32/point_basepoint_icon@2x.png + toolicon/32x32/image_menu_icon.png toolicon/32x32/point_intersect_arc_line.png toolicon/32x32/point_intersect_arc_line@2x.png diff --git a/src/app/seamly2d/share/resources/toolicon/32x32/image_menu_icon.png b/src/app/seamly2d/share/resources/toolicon/32x32/image_menu_icon.png new file mode 100644 index 000000000000..71dc01d7d299 Binary files /dev/null and b/src/app/seamly2d/share/resources/toolicon/32x32/image_menu_icon.png differ diff --git a/src/app/seamly2d/share/resources/toolicon/32x32/images@2x_toolbox.png b/src/app/seamly2d/share/resources/toolicon/32x32/images@2x_toolbox.png deleted file mode 100644 index 565cbb049025..000000000000 Binary files a/src/app/seamly2d/share/resources/toolicon/32x32/images@2x_toolbox.png and /dev/null differ diff --git a/src/app/seamly2d/share/resources/toolicon/32x32/images_toolbox.png b/src/app/seamly2d/share/resources/toolicon/32x32/images_toolbox.png deleted file mode 100644 index 23c65b4d9cfa..000000000000 Binary files a/src/app/seamly2d/share/resources/toolicon/32x32/images_toolbox.png and /dev/null differ diff --git a/src/app/seamly2d/xml/vpattern.cpp b/src/app/seamly2d/xml/vpattern.cpp index e7d2c862d8a3..45a98480e5db 100644 --- a/src/app/seamly2d/xml/vpattern.cpp +++ b/src/app/seamly2d/xml/vpattern.cpp @@ -3932,10 +3932,12 @@ void VPattern::PrepareForParse(const Document &parse) if (parse == Document::FullParse) { TestUniqueId(); + foreach (ImageItem *item, getBackgroundImageMap().values()) {draftScene->removeItem(item);} draftScene->clear(); - draftScene->InitOrigins(); + foreach (ImageItem *item, getBackgroundImageMap().values()) {draftScene->addItem(item);} + draftScene->initializeOrigins(); pieceScene->clear(); - pieceScene->InitOrigins(); + pieceScene->initializeOrigins(); data->ClearForFullParse(); activeDraftBlock.clear(); patternPieces.clear(); @@ -3973,7 +3975,7 @@ QT_WARNING_DISABLE_GCC("-Wswitch-default") QRectF VPattern::ActiveDrawBoundingRect() const { // This check helps to find missed tools in the switch - Q_STATIC_ASSERT_X(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 53, "Not all tools were used."); + Q_STATIC_ASSERT_X(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 54, "Not all tools were used."); QRectF rect; @@ -3992,6 +3994,7 @@ QRectF VPattern::ActiveDrawBoundingRect() const case Tool::Cut: case Tool::Midpoint:// Same as Tool::AlongLine, but tool will never has such type case Tool::ArcIntersectAxis:// Same as Tool::CurveIntersectAxis, but tool will never has such type + case Tool::BackgroundImage: case Tool::LAST_ONE_DO_NOT_USE: Q_UNREACHABLE(); break; diff --git a/src/libs/fervor/fvupdater.cpp b/src/libs/fervor/fvupdater.cpp index 1c583f8d065a..0237063211b7 100644 --- a/src/libs/fervor/fvupdater.cpp +++ b/src/libs/fervor/fvupdater.cpp @@ -23,7 +23,10 @@ **************************************************************************/ /*************************************************************************************************** + ** @file fvupdater.cpp ** + ** @brief + ** @copyright ** Copyright (c) 2012 Linas Valiukas and others. ** ** Permission is hereby granted, free of charge, to any person obtaining a copy of this @@ -86,7 +89,7 @@ QPointer FvUpdater::m_Instance; FvUpdater *FvUpdater::sharedUpdater() { static QMutex mutex; if (m_Instance.isNull()) { - mutex.lock(); + mutex.lock(); m_Instance = new FvUpdater; mutex.unlock(); } @@ -97,7 +100,7 @@ FvUpdater *FvUpdater::sharedUpdater() { //--------------------------------------------------------------------------------------------------------------------- void FvUpdater::drop() { static QMutex mutex; - mutex.lock(); + mutex.lock(); delete m_Instance; mutex.unlock(); } diff --git a/src/libs/ifc/xml/vabstractpattern.cpp b/src/libs/ifc/xml/vabstractpattern.cpp index 13fc78516b09..8048d34f6c24 100644 --- a/src/libs/ifc/xml/vabstractpattern.cpp +++ b/src/libs/ifc/xml/vabstractpattern.cpp @@ -28,8 +28,15 @@ ** @author Roman Telezhynskyi ** @date 15 6, 2015 ** + ** @author Douglas S Caskey + ** @date 7.31.2022 + ** ** @brief ** @copyright + ** This source code is part of the Seamly2D project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2013-2022 Seamly2D project + ** All Rights Reserved. ** This source code is part of the Valentina project, a pattern making ** program, whose allow create and modeling patterns of clothing. ** Copyright (C) 2015 Valentina project @@ -52,33 +59,32 @@ #include "vabstractpattern.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - #include "vdomdocument.h" #include "vpatternconverter.h" #include "vtoolrecord.h" #include "../exception/vexceptionemptyparameter.h" #include "../exception/vexceptionobjecterror.h" #include "../exception/vexceptionconversionerror.h" -#include "../ifc/exception/vexceptionbadid.h" #include "../ifc/ifcdef.h" +#include "../ifc/exception/vexceptionbadid.h" +#include "../qmuparser/qmutokenparser.h" #include "../vmisc/vabstractapplication.h" -#include "../vmisc/vcommonsettings.h" #include "../vpatterndb/vcontainer.h" #include "../vpatterndb/vpiecenode.h" -#include "../qmuparser/qmutokenparser.h" #include "../vtools/tools/vdatatool.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + class QDomElement; const QString VAbstractPattern::TagPattern = QStringLiteral("pattern"); @@ -118,6 +124,21 @@ const QString VAbstractPattern::TagNodes = QStringLiteral("nodes" const QString VAbstractPattern::TagNode = QStringLiteral("node"); const QString VAbstractPattern::TagLine = QStringLiteral("line"); +const QString VAbstractPattern::TagDraftImages = QStringLiteral("draftImages"); +const QString VAbstractPattern::AttrId = QStringLiteral("id"); +const QString VAbstractPattern::AttrFilename = QStringLiteral("filename"); +const QString VAbstractPattern::AttrLocked = QStringLiteral("locked"); +const QString VAbstractPattern::AttrAnchor = QStringLiteral("anchor"); +const QString VAbstractPattern::AttrXPos = QStringLiteral("xPos"); +const QString VAbstractPattern::AttrYPos = QStringLiteral("yPos"); +const QString VAbstractPattern::AttrHeight = QStringLiteral("height"); +const QString VAbstractPattern::AttrXScale = QStringLiteral("xScale"); +const QString VAbstractPattern::AttrYScale = QStringLiteral("yScale"); +const QString VAbstractPattern::AttrAspectLocked = QStringLiteral("aspectLocked"); +const QString VAbstractPattern::AttrUnits = QStringLiteral("units"); +const QString VAbstractPattern::AttrOpacity = QStringLiteral("opacity"); +const QString VAbstractPattern::AttrOrder = QStringLiteral("order"); + const QString VAbstractPattern::AttrName = QStringLiteral("name"); const QString VAbstractPattern::AttrVisible = QStringLiteral("visible"); const QString VAbstractPattern::AttrGroupLocked = QStringLiteral("locked"); @@ -1718,7 +1739,7 @@ QDomElement VAbstractPattern::CheckTagExists(const QString &tag) { const QStringList tags = QStringList() << TagUnit << TagImage << TagDescription << TagNotes << TagGradation << TagPatternName << TagPatternNum << TagCompanyName - << TagCustomerName << TagPatternLabel; + << TagCustomerName << TagPatternLabel << TagDraftImages; switch (tags.indexOf(tag)) { case 1: //TagImage @@ -1758,6 +1779,9 @@ QDomElement VAbstractPattern::CheckTagExists(const QString &tag) case 9: // TagPatternLabel element = createElement(TagPatternLabel); break; + case 10: // TagDraftImages + element = createElement(TagDraftImages); + break; case 0: //TagUnit (Mandatory tag) default: return QDomElement(); @@ -1854,7 +1878,7 @@ QVector VAbstractPattern::ListPointExpressions() const // Check if new tool doesn't bring new attribute with a formula. // If no just increment a number. // If new tool bring absolutely new type and has formula(s) create new method to cover it. - Q_STATIC_ASSERT(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 53); + Q_STATIC_ASSERT(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 54); QVector expressions; const QDomNodeList list = elementsByTagName(TagPoint); @@ -1880,7 +1904,7 @@ QVector VAbstractPattern::ListArcExpressions() const // Check if new tool doesn't bring new attribute with a formula. // If no just increment number. // If new tool bring absolutely new type and has formula(s) create new method to cover it. - Q_STATIC_ASSERT(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 53); + Q_STATIC_ASSERT(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 54); QVector expressions; const QDomNodeList list = elementsByTagName(TagArc); @@ -1904,7 +1928,7 @@ QVector VAbstractPattern::ListElArcExpressions() const // Check if new tool doesn't bring new attribute with a formula. // If no just increment number. // If new tool bring absolutely new type and has formula(s) create new method to cover it. - Q_STATIC_ASSERT(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 53); + Q_STATIC_ASSERT(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 54); QVector expressions; const QDomNodeList list = elementsByTagName(TagElArc); @@ -1937,7 +1961,7 @@ QVector VAbstractPattern::ListPathPointExpressions() const // Check if new tool doesn't bring new attribute with a formula. // If no just increment number. // If new tool bring absolutely new type and has formula(s) create new method to cover it. - Q_STATIC_ASSERT(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 53); + Q_STATIC_ASSERT(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 54); QVector expressions; const QDomNodeList list = elementsByTagName(AttrPathPoint); @@ -1975,7 +1999,7 @@ QVector VAbstractPattern::ListOperationExpressions() const // Check if new tool doesn't bring new attribute with a formula. // If no just increment number. // If new tool bring absolutely new type and has formula(s) create new method to cover it. - Q_STATIC_ASSERT(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 53); + Q_STATIC_ASSERT(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 54); QVector expressions; const QDomNodeList list = elementsByTagName(TagOperation); @@ -1997,7 +2021,7 @@ QVector VAbstractPattern::ListNodesExpressions(const QDomElement // Check if new tool doesn't bring new attribute with a formula. // If no just increment number. // If new tool bring absolutely new type and has formula(s) create new method to cover it. - Q_STATIC_ASSERT(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 53); + Q_STATIC_ASSERT(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 54); QVector expressions; @@ -2020,7 +2044,7 @@ QVector VAbstractPattern::ListPathExpressions() const // Check if new tool doesn't bring new attribute with a formula. // If no just increment number. // If new tool bring absolutely new type and has formula(s) create new method to cover it. - Q_STATIC_ASSERT(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 53); + Q_STATIC_ASSERT(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 54); QVector expressions; const QDomNodeList list = elementsByTagName(TagPath); @@ -2058,7 +2082,7 @@ QVector VAbstractPattern::ListPieceExpressions() const // Check if new tool doesn't bring new attribute with a formula. // If no just increment number. // If new tool bring absolutely new type and has formula(s) create new method to cover it. - Q_STATIC_ASSERT(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 53); + Q_STATIC_ASSERT(static_cast(Tool::LAST_ONE_DO_NOT_USE) == 54); QVector expressions; const QDomNodeList list = elementsByTagName(TagPiece); @@ -3104,3 +3128,32 @@ QString VAbstractPattern::useGroupLineWeight(quint32 toolId, QString weight) return weight; } } + + +QMap VAbstractPattern::getBackgroundImageMap() +{ + return m_imageMap; +} + + +void VAbstractPattern::addBackgroundImage(qint32 id, ImageItem *item) +{ + m_imageMap.insert(id, item); +} + + +void VAbstractPattern::removeBackgroundImage(qint32 id) +{ + m_imageMap.remove(id); +} + + +ImageItem* VAbstractPattern::getBackgroundImage(qint32 id) +{ + return m_imageMap.value(id); +} + +void VAbstractPattern::clearBackgroundImageMap() +{ + m_imageMap.clear(); +} diff --git a/src/libs/ifc/xml/vabstractpattern.h b/src/libs/ifc/xml/vabstractpattern.h index 9a716e0d0b81..2ab69bd6a13c 100644 --- a/src/libs/ifc/xml/vabstractpattern.h +++ b/src/libs/ifc/xml/vabstractpattern.h @@ -69,6 +69,7 @@ #include "vtoolrecord.h" #include "../vmisc/def.h" #include "../vwidgets/pen_toolbar.h" +#include "../../tools/image_item.h" class QDomElement; class VPiecePath; @@ -174,6 +175,12 @@ class VAbstractPattern : public QObject, public VDomDocument QStringList getPatternPieces() const; + QMap getBackgroundImageMap(); + ImageItem * getBackgroundImage(qint32 id); + void addBackgroundImage(qint32 id, ImageItem *item); + void removeBackgroundImage(qint32 id); + void clearBackgroundImageMap(); + QMap GetGradationHeights() const; void SetGradationHeights(const QMap &options); @@ -310,6 +317,21 @@ class VAbstractPattern : public QObject, public VDomDocument static const QString TagNode; static const QString TagLine; + static const QString TagDraftImages; + static const QString AttrId; + static const QString AttrFilename; + static const QString AttrLocked; + static const QString AttrAnchor; + static const QString AttrXPos; + static const QString AttrYPos; + static const QString AttrHeight; + static const QString AttrXScale; + static const QString AttrYScale ; + static const QString AttrAspectLocked; + static const QString AttrUnits; + static const QString AttrOpacity; + static const QString AttrOrder; + static const QString AttrName; static const QString AttrVisible; static const QString AttrGroupLocked; @@ -494,6 +516,9 @@ public slots: /** @brief patternPieces list of patern pieces names for combobox*/ QStringList patternPieces; + /** @brief m_imageMap stores the image items and their id*/ + QMap m_imageMap{}; + /** @brief modified keep state of the document for cases that do not cover QUndoStack*/ mutable bool modified; diff --git a/src/libs/libs.pri b/src/libs/libs.pri index 8ea9dc411076..316176f39052 100644 --- a/src/libs/libs.pri +++ b/src/libs/libs.pri @@ -1,6 +1,9 @@ #VTools static library INCLUDEPATH += $${PWD}/vtools +#Tools static library +INCLUDEPATH += $${PWD}/tools + #VWidgets static library INCLUDEPATH += $${PWD}/vwidgets @@ -10,7 +13,7 @@ INCLUDEPATH += $${PWD}/vformat #VPatternDB static library INCLUDEPATH += $${PWD}/vpatterndb -# Fervor static library +#Fervor static library INCLUDEPATH += $${PWD}/fervor #VMisc static library @@ -19,7 +22,7 @@ INCLUDEPATH += $${PWD}/vmisc #VGeometry static library INCLUDEPATH += $${PWD}/vgeometry -# IFC static library +#IFC static library INCLUDEPATH += $${PWD}/ifc #VLayout static library @@ -31,5 +34,5 @@ INCLUDEPATH += $${PWD}/qmuparser #VPropertyExplorer static library INCLUDEPATH += $${PWD}/vpropertyexplorer -#VTools static library +#VTest static library INCLUDEPATH += $${PWD}/vtest diff --git a/src/libs/libs.pro b/src/libs/libs.pro index 9a96086d92fa..4c42bf15982f 100644 --- a/src/libs/libs.pro +++ b/src/libs/libs.pro @@ -14,4 +14,5 @@ SUBDIRS = \ vtools \ vformat \ fervor \ - vtest + vtest \ + tools diff --git a/src/libs/tools/image_dialog.cpp b/src/libs/tools/image_dialog.cpp new file mode 100644 index 000000000000..37b95228692d --- /dev/null +++ b/src/libs/tools/image_dialog.cpp @@ -0,0 +1,814 @@ +/****************************************************************************** + ** @file image_dialog.cpp + ** @author DS Caskey + ** @date Jun 3, 2022 + ** + ** @brief + ** @copyright + ** This source code is part of the Seamly2D project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2013-2022 Seamly2D project + ** All Rights Reserved. + ** + ** Seamly2D 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. + ** + ** Seamly2D 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 Seamly2D. If not, see . + ** + *****************************************************************************/ + +#include "image_dialog.h" +#include "ui_image_dialog.h" + + +#include "../ifc/xml/vabstractpattern.h" +#include "../ifc/xml/vdomdocument.h" +#include "../qmuparser/qmudef.h" +#include "../vmisc/vabstractapplication.h" +//#include "../vmisc/vcommonsettings.h" +#include "../vmisc/vsettings.h" +#include "../vpatterndb/vcontainer.h" +#include "../vpatterndb/vtranslatevars.h" +#include "../vtools/tools/drawTools/operation/vabstractoperation.h" +#include "../vtools/visualization/visualization.h" +#include "../vtools/visualization/line/operation/vistoolmove.h" +#include "../vwidgets/vabstractmainwindow.h" +#include "../vwidgets/vmaingraphicsscene.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + + +//--------------------------------------------------------------------------------------------------------------------- +ImageDialog::ImageDialog(DraftImage image, qreal minDimension, qreal maxDimension) + : ui(new Ui::ImageDialog) + , m_image(image) + , m_pixmapWidth(image.pixmap.width()) + , m_pixmapHeight(image.pixmap.height()) + , m_maxDimension(maxDimension) + , m_minDimension(minDimension) + , m_minOpacity(5) + , m_flagName(true) +{ + ui->setupUi(this); + setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); + + updateUnits(); + + setXScale(m_image.width / m_pixmapWidth * 100); + setYScale(m_image.height / m_pixmapHeight * 100); + + updateImage(); + + connect(ui->name_LineEdit, &QLineEdit::textChanged, this, &ImageDialog::nameChanged); + connect(ui->xPosition_DoubleSpinBox, QOverload::of(&QDoubleSpinBox::valueChanged), + this, &ImageDialog::xPosChanged); + connect(ui->yPosition_DoubleSpinBox, QOverload::of(&QDoubleSpinBox::valueChanged), + this, &ImageDialog::yPosChanged); + connect(ui->width_DoubleSpinBox, QOverload::of(&QDoubleSpinBox::valueChanged), + this, &ImageDialog::widthChanged); + connect(ui->height_DoubleSpinBox, QOverload::of(&QDoubleSpinBox::valueChanged), + this, &ImageDialog::heightChanged); + connect(ui->xScale_DoubleSpinBox, QOverload::of(&QDoubleSpinBox::valueChanged), + this, &ImageDialog::xScaleChanged); + connect(ui->yScale_DoubleSpinBox, QOverload::of(&QDoubleSpinBox::valueChanged), + this, &ImageDialog::yScaleChanged); + connect(ui->rotation_DoubleSpinBox, QOverload::of(&QDoubleSpinBox::valueChanged), + this, &ImageDialog::rotationChanged); + connect(ui->aspectLocked_ToolButton, &QToolButton::clicked, this, &ImageDialog::lockAspectChanged); + connect(ui->units_ToolButton, &QToolButton::clicked, this, &ImageDialog::unitsChanged); + connect(ui->lockImage_ToolButton, &QCheckBox::toggled, this, &ImageDialog::lockChanged); + connect(ui->opacity_DoubleSpinBox, QOverload::of(&QDoubleSpinBox::valueChanged), + this, &ImageDialog::opacityChanged); + connect(ui->buttonBox, &QDialogButtonBox::clicked, this, &ImageDialog::dialogApply); +} + +//--------------------------------------------------------------------------------------------------------------------- +ImageDialog::~ImageDialog() +{ + delete ui; +} + +//--------------------------------------------------------------------------------------------------------------------- +DraftImage ImageDialog::getImage() const +{ + return m_image; +} + +void ImageDialog::setImage(DraftImage image) +{ + m_image = image; + updateImage(); +} + +void ImageDialog::updateImage() +{ + blockSignals(true); + ui->idText_Label->setNum(static_cast(m_image.id)); + ui->name_LineEdit->setText(m_image.name); + ui->lockImage_ToolButton->setChecked(m_image.locked); + setXPos(m_image.xPos); + setYPos(m_image.yPos); + setWidth(m_image.width); + setHeight(m_image.height); + setAspectLocked(m_image.aspectLocked); + setRotation(m_image.rotation); + setVisibility(m_image.visible); + setOpacity(m_image.opacity); + enableWidgets(); + blockSignals(false); + + qDebug("Id = %d", m_image.id); + qDebug("Name = %s", qUtf8Printable(m_image.name)); + qDebug("Filename = %s", qUtf8Printable(m_image.filename)); + qDebug("lock Image = %s", m_image.locked ? "True" : "False"); + qDebug("Anchor = %d", static_cast(m_image.anchor)); + qDebug("Xpos = %f", m_image.xPos); + qDebug("YPos = %f", m_image.yPos); + qDebug("Width = %f", m_image.width); + qDebug("Height = %f", m_image.height); + qDebug("lock Image Aspect = %s", m_image.aspectLocked ? "True" : "False"); + qDebug("Units = %d", static_cast(m_image.units)); + qDebug("Rotation = %f", m_image.rotation); + qDebug("Visible = %s", m_image.visible ? "True" : "False"); + qDebug("Opacity = %f", m_image.opacity); + qDebug("Order = %d\n", static_cast(m_image.order)); +} + +void ImageDialog::enableWidgets() +{ + ui->name_LineEdit->setEnabled(!m_image.locked); + ui->lockImage_ToolButton->setEnabled(true); + ui->xPosition_DoubleSpinBox->setEnabled(!m_image.locked); + ui->yPosition_DoubleSpinBox->setEnabled(!m_image.locked); + ui->width_DoubleSpinBox->setEnabled(!m_image.locked); + ui->height_DoubleSpinBox->setEnabled(!m_image.locked); + ui->xScale_DoubleSpinBox->setEnabled(!m_image.locked); + ui->yScale_DoubleSpinBox->setEnabled(!m_image.locked); + ui->aspectLocked_ToolButton->setEnabled(!m_image.locked); + ui->units_ToolButton->setEnabled(!m_image.locked); + ui->rotation_DoubleSpinBox->setEnabled(!m_image.locked); + ui->opacity_DoubleSpinBox->setEnabled(!m_image.locked); +} +//--------------------------------------------------------------------------------------------------------------------- +QString ImageDialog::getName() const +{ + return m_image.name; +} + +//--------------------------------------------------------------------------------------------------------------------- +void ImageDialog::setName(const QString &name) +{ + m_image.name = name; + ui->name_LineEdit->setText(name); +} + +//--------------------------------------------------------------------------------------------------------------------- +Position ImageDialog::getOriginPoint() const +{ + return m_image.origin; +} + +//--------------------------------------------------------------------------------------------------------------------- +void ImageDialog::setOriginPoint(const int &index) +{ + Q_UNUSED(index); +} + +//--------------------------------------------------------------------------------------------------------------------- +qreal ImageDialog::getXPos() const +{ + return m_image.xPos; +} + +//--------------------------------------------------------------------------------------------------------------------- +void ImageDialog::setXPos(const qreal &value) +{ + ui->xPosition_DoubleSpinBox->blockSignals(true); + m_image.xPos = value; + if (m_image.units == Unit::Px) + { + ui->xPosition_DoubleSpinBox->setValue(value); + } + else + { + ui->xPosition_DoubleSpinBox->setValue(qApp->fromPixel(value)); + } + ui->xPosition_DoubleSpinBox->blockSignals(false); +} + +//--------------------------------------------------------------------------------------------------------------------- +qreal ImageDialog::getYPos() const +{ + return m_image.yPos; +} + +//--------------------------------------------------------------------------------------------------------------------- +void ImageDialog::setYPos(const qreal &value) +{ + ui->yPosition_DoubleSpinBox->blockSignals(true); + m_image.yPos = value; + if (m_image.units == Unit::Px) + { + ui->yPosition_DoubleSpinBox->setValue(value); + } + else + { + ui->yPosition_DoubleSpinBox->setValue(qApp->fromPixel(value)); + } + ui->yPosition_DoubleSpinBox->blockSignals(true); +} + +//--------------------------------------------------------------------------------------------------------------------- +qreal ImageDialog::getWidth() const +{ + return m_image.width; +} + +//--------------------------------------------------------------------------------------------------------------------- +void ImageDialog::setWidth(const qreal &value) +{ + ui->yPosition_DoubleSpinBox->blockSignals(true); + + m_image.width = value; + + if (m_image.units == Unit::Px) + { + if (ui->width_DoubleSpinBox->value() != value) {ui->width_DoubleSpinBox->setValue(value);}; + } + else + { + if (ui->width_DoubleSpinBox->value() != qApp->fromPixel(value)) {ui->width_DoubleSpinBox->setValue(qApp->fromPixel(value));}; + } + + ui->yPosition_DoubleSpinBox->blockSignals(false); +} + +//--------------------------------------------------------------------------------------------------------------------- +qreal ImageDialog::getHeight() const +{ + return m_image.height; +} + +//--------------------------------------------------------------------------------------------------------------------- +void ImageDialog::setHeight(const qreal &value) +{ + ui->height_DoubleSpinBox->blockSignals(true); + + m_image.height = value; + if (m_image.units == Unit::Px) + { + if (ui->height_DoubleSpinBox->value() != value) {ui->height_DoubleSpinBox->setValue(value);}; + } + else + { + if (ui->height_DoubleSpinBox->value() != qApp->fromPixel(value)) {ui->height_DoubleSpinBox->setValue(qApp->fromPixel(value));}; + } + + ui->height_DoubleSpinBox->blockSignals(false); +} + +//--------------------------------------------------------------------------------------------------------------------- +qreal ImageDialog::getXScale() const +{ + return m_xScale; +} +//--------------------------------------------------------------------------------------------------------------------- +void ImageDialog::setXScale(const qreal &scale) +{ + ui->xScale_DoubleSpinBox->blockSignals(true); + m_xScale = scale; + if (ui->xScale_DoubleSpinBox->value() != scale) {ui->xScale_DoubleSpinBox->setValue(scale);}; + ui->xScale_DoubleSpinBox->blockSignals(false); +} + +//--------------------------------------------------------------------------------------------------------------------- +qreal ImageDialog::getYScale() const +{ + return m_yScale; +} + +//--------------------------------------------------------------------------------------------------------------------- +void ImageDialog::setYScale(const qreal &scale) +{ + ui->yScale_DoubleSpinBox->blockSignals(true); + m_yScale = scale; + if (ui->yScale_DoubleSpinBox->value() != scale) {ui->yScale_DoubleSpinBox->setValue(scale);}; + ui->yScale_DoubleSpinBox->blockSignals(false); +} + +//--------------------------------------------------------------------------------------------------------------------- +bool ImageDialog::isAspectLocked() const +{ + return m_image.aspectLocked; +} + +//--------------------------------------------------------------------------------------------------------------------- +void ImageDialog::setAspectLocked(const bool &checked) +{ + ui->aspectLocked_ToolButton->blockSignals(true); + m_image.aspectLocked = checked; + ui->aspectLocked_ToolButton->setChecked(checked); + ui->aspectLocked_ToolButton->blockSignals(false); +} + +//--------------------------------------------------------------------------------------------------------------------- +bool ImageDialog::isLocked() const +{ + return m_image.locked; +} + +//--------------------------------------------------------------------------------------------------------------------- +void ImageDialog::setLocked(const bool &checked) +{ + ui->lockImage_ToolButton->blockSignals(true); + m_image.locked = checked; + ui->lockImage_ToolButton->setChecked(checked); + ui->lockImage_ToolButton->blockSignals(false); +} + +//--------------------------------------------------------------------------------------------------------------------- +qreal ImageDialog::getRotation() const +{ + return m_image.rotation; +} + +//--------------------------------------------------------------------------------------------------------------------- +void ImageDialog::setRotation(const qreal &angle) +{ + ui->rotation_DoubleSpinBox->blockSignals(true); + m_image.rotation = angle; + ui->rotation_DoubleSpinBox->setValue(angle); + ui->rotation_DoubleSpinBox->blockSignals(false); +} + +//--------------------------------------------------------------------------------------------------------------------- +bool ImageDialog::isVisible() const +{ + return m_image.visible; +} + +//--------------------------------------------------------------------------------------------------------------------- +void ImageDialog::setVisibility(const bool &checked) +{ + m_image.visible = checked; +} + +//--------------------------------------------------------------------------------------------------------------------- +qreal ImageDialog::getOpacity() const +{ + return m_image.opacity; +} + +//--------------------------------------------------------------------------------------------------------------------- +void ImageDialog::setOpacity(const qreal &opacity) +{ + ui->opacity_DoubleSpinBox->blockSignals(true); + m_image.opacity = opacity; + ui->opacity_DoubleSpinBox->setValue(opacity); + ui->opacity_DoubleSpinBox->blockSignals(false); +} + +//--------------------------------------------------------------------------------------------------------------------- +void ImageDialog::nameChanged(const QString &name) +{ + QPushButton *bOk = ui->buttonBox->button(QDialogButtonBox::Ok); + SCASSERT(bOk != nullptr) + bOk->setEnabled(true); + + QPalette palette = ui->name_LineEdit->palette(); + palette.setColor(ui->name_Label->foregroundRole(), Qt::black); + //alette.setColor(ui->name_LineEdit->foregroundRole(), Qt::black); + + if (name.isEmpty()) + { + bOk->setEnabled(false); + palette.setColor(ui->name_Label->foregroundRole(), Qt::red); + //palette.setColor(ui->name_LineEdit->foregroundRole(), Qt::red); + } + else + { + if (m_image.name != name) + { + QRegularExpression rx(NameRegExp()); + //if (!rx.match(name).hasMatch() || !VContainer::IsUnique(name)) + if (!VContainer::IsUnique(name)) + { + bOk->setEnabled(false); + palette.setColor(ui->name_Label->foregroundRole(), Qt::red); + //palette.setColor(ui->name_LineEdit->foregroundRole(), Qt::red); + } + else + { + setName(name); + } + } + } + ui->name_Label->setPalette(palette); + //ui->name_LineEdit->setPalette(palette); +} + +//--------------------------------------------------------------------------------------------------------------------- +void ImageDialog::originChanged(const QString &text) +{ + Q_UNUSED(text); + blockSignals(true); + blockSignals(false); + emit imageUpdated(m_image); +} + +//--------------------------------------------------------------------------------------------------------------------- +void ImageDialog::alignmentChanged() +{ + +} + +//--------------------------------------------------------------------------------------------------------------------- +void ImageDialog::xPosChanged(qreal value) +{ + blockSignals(true); + if (m_image.units == Unit::Px) + { + m_image.xPos = value; + } + else + { + m_image.xPos = qApp->toPixel(value); + } + blockSignals(false); + emit imageUpdated(m_image); +} + +//--------------------------------------------------------------------------------------------------------------------- +void ImageDialog::yPosChanged(qreal value) +{ + blockSignals(true); + if (m_image.units == Unit::Px) + { + m_image.yPos = value; + } + else + { + m_image.yPos = qApp->toPixel(value); + } + blockSignals(false); + emit imageUpdated(m_image); +} + +//--------------------------------------------------------------------------------------------------------------------- +void ImageDialog::widthChanged(qreal width) +{ + blockSignals(true); + qreal oldWidth = m_image.width; + qreal height = m_image.height; + + if (m_image.units != Unit::Px) + { + width = qApp->toPixel(width); + } + + width = width < m_minDimension ? m_minDimension : width; + width = width > m_maxDimension ? m_maxDimension : width; + + if (m_image.aspectLocked) + { + height = m_image.height * width / oldWidth; + + if (height > m_maxDimension) + { + width = m_maxDimension * oldWidth / m_image.height; + height = m_maxDimension; + } + else if (height < m_minDimension) + { + width = m_minDimension * oldWidth / m_image.height; + height = m_minDimension; + } + } + + setWidth(width); + setXScale(m_image.width / m_pixmapWidth * 100); + setHeight(height); + setYScale(m_image.height / m_pixmapHeight * 100); + + blockSignals(false); + emit imageUpdated(m_image); +} + +//--------------------------------------------------------------------------------------------------------------------- +void ImageDialog::heightChanged(qreal height) +{ + blockSignals(true); + qreal oldHeight = m_image.height; + qreal width = m_image.width; + + if (m_image.units != Unit::Px) + { + height = qApp->toPixel(height); + } + + height = height < m_minDimension ? m_minDimension : height; + height = height > m_maxDimension ? m_maxDimension : height; + + if (m_image.aspectLocked) + { + width = m_image.width * height / oldHeight; + + if (width > m_maxDimension) + { + height = m_maxDimension * oldHeight / m_image.width; + width = m_maxDimension; + } + else if (width < m_minDimension) + { + height = m_minDimension * oldHeight / m_image.width; + width = m_minDimension; + } + } + + setWidth(width); + setXScale(m_image.width / m_pixmapWidth * 100); + setHeight(height); + setYScale(m_image.height / m_pixmapHeight * 100); + + blockSignals(false); + emit imageUpdated(m_image); +} + +//--------------------------------------------------------------------------------------------------------------------- +void ImageDialog::xScaleChanged(qreal xScale) +{ + blockSignals(true); + qreal oldYScale = m_xScale; + qreal yScale = m_yScale; + + qreal maxXScale = m_maxDimension / m_pixmapWidth * 100; + qreal minXScale = m_minDimension / m_pixmapWidth * 100; + qreal maxYScale = m_maxDimension / m_pixmapHeight * 100; + qreal minYScale = m_minDimension / m_pixmapHeight * 100; + + xScale = xScale < minXScale ? minXScale : xScale; + xScale = xScale > maxXScale ? maxXScale : xScale; + + if (m_image.aspectLocked) + { + yScale = m_yScale * xScale / oldYScale; + if (yScale > maxYScale) + { + xScale = maxYScale * oldYScale / m_yScale; + yScale = maxYScale; + } + else if (yScale < minYScale) + { + xScale = minYScale * oldYScale / m_yScale; + yScale = minYScale; + } + } + + setXScale(xScale); + setWidth(m_pixmapWidth * m_xScale / 100); + setYScale(yScale); + setHeight(m_pixmapHeight * m_yScale / 100); + + blockSignals(false); + emit imageUpdated(m_image); +} + +//--------------------------------------------------------------------------------------------------------------------- +void ImageDialog::yScaleChanged(qreal scale) +{ + blockSignals(true); + qreal oldXScale = m_yScale; + qreal xScale = m_xScale; + + qreal maxXScale = m_maxDimension / m_pixmapWidth * 100; + qreal minXScale = m_minDimension / m_pixmapWidth * 100; + qreal maxYScale = m_maxDimension / m_pixmapHeight * 100; + qreal minYScale = m_minDimension / m_pixmapHeight * 100; + + scale = scale < minYScale ? minYScale : scale; + scale = scale > maxYScale ? maxYScale : scale; + + if (m_image.aspectLocked) + { + xScale = m_xScale * scale / oldXScale; + if (xScale > maxXScale) + { + scale = maxXScale * oldXScale / m_xScale; + xScale = maxXScale; + } + else if (xScale < minXScale) + { + scale = minXScale * oldXScale / m_xScale; + xScale = minXScale; + } + } + + setYScale(scale); + setHeight(m_pixmapHeight * m_yScale / 100); + setXScale(xScale); + setWidth(m_pixmapWidth * m_xScale / 100); + + blockSignals(false); + emit imageUpdated(m_image); +} + +//--------------------------------------------------------------------------------------------------------------------- +void ImageDialog::lockChanged(bool checked) +{ + blockSignals(true); + m_image.locked = checked; + ui->lockImage_ToolButton->setChecked(m_image.locked); + enableWidgets(); + blockSignals(false); + emit lockClicked(m_image.locked); +} + +//--------------------------------------------------------------------------------------------------------------------- +void ImageDialog::lockAspectChanged(bool checked) +{ + blockSignals(true); + m_image.aspectLocked = checked; + ui->aspectLocked_ToolButton->setChecked(m_image.aspectLocked); + blockSignals(false); + emit lockAspectClicked(m_image.aspectLocked); +} + + +//--------------------------------------------------------------------------------------------------------------------- +void ImageDialog::updateSpinboxesRanges() +{ + if (m_image.units == Unit::Px) + { + ui->width_DoubleSpinBox->setMinimum(m_minDimension); + ui->height_DoubleSpinBox->setMinimum(m_minDimension); + + ui->xScale_DoubleSpinBox->setMinimum(m_minDimension / m_pixmapWidth * 100); + ui->yScale_DoubleSpinBox->setMinimum(m_minDimension / m_pixmapHeight * 100); + + ui->width_DoubleSpinBox->setMaximum(m_maxDimension); + ui->height_DoubleSpinBox->setMaximum(m_maxDimension); + + ui->xScale_DoubleSpinBox->setMaximum(m_maxDimension / m_pixmapWidth * 100); + ui->yScale_DoubleSpinBox->setMaximum(m_maxDimension / m_pixmapHeight * 100); + + } + else + { + ui->width_DoubleSpinBox->setMinimum(qApp->fromPixel(m_minDimension)); + ui->height_DoubleSpinBox->setMinimum(qApp->fromPixel(m_minDimension)); + + ui->xScale_DoubleSpinBox->setMinimum(qApp->fromPixel(m_minDimension / m_pixmapWidth * 100)); + ui->yScale_DoubleSpinBox->setMinimum(qApp->fromPixel(m_minDimension / m_pixmapHeight * 100)); + + ui->width_DoubleSpinBox->setMaximum(qApp->fromPixel(m_maxDimension)); + ui->height_DoubleSpinBox->setMaximum(qApp->fromPixel(m_maxDimension)); + + ui->xScale_DoubleSpinBox->setMaximum(qApp->fromPixel(m_maxDimension / m_pixmapWidth * 100)); + ui->yScale_DoubleSpinBox->setMaximum(qApp->fromPixel(m_maxDimension / m_pixmapHeight * 100)); + } +} + +//--------------------------------------------------------------------------------------------------------------------- +void ImageDialog::unitsChanged() +{ + blockSignals(true); + qreal tempHeight = m_image.height; + qreal tempWidth = m_image.width; + qreal tempXPos = m_image.xPos; + qreal tempYPos = m_image.yPos; + + if (m_image.units != Unit::Px) + { + m_image.units = Unit::Px; + updateUnits(); + + ui->width_DoubleSpinBox->setValue(tempWidth); + ui->height_DoubleSpinBox->setValue(tempHeight); + ui->xPosition_DoubleSpinBox->setValue(tempXPos); + ui->yPosition_DoubleSpinBox->setValue(tempYPos); + } + else + { + m_image.units = qApp->patternUnit(); + updateUnits(); + + ui->width_DoubleSpinBox->setValue(qApp->fromPixel(tempWidth)); + ui->height_DoubleSpinBox->setValue(qApp->fromPixel(tempHeight)); + ui->xPosition_DoubleSpinBox->setValue(qApp->fromPixel(tempXPos)); + ui->yPosition_DoubleSpinBox->setValue(qApp->fromPixel(tempYPos)); + } + blockSignals(false); + emit imageUpdated(m_image); +} + +//--------------------------------------------------------------------------------------------------------------------- +void ImageDialog::rotationChanged(qreal angle) +{ + blockSignals(true); + m_image.rotation = angle; + blockSignals(false); + emit imageUpdated(m_image); +} + +//--------------------------------------------------------------------------------------------------------------------- +void ImageDialog::visibilityChanged(bool checked) +{ + blockSignals(true); + m_image.visible = checked; + blockSignals(false); + emit imageUpdated(m_image); +} + +//--------------------------------------------------------------------------------------------------------------------- +void ImageDialog::opacityChanged(qreal opacity) +{ + blockSignals(true); + if (opacity < m_minOpacity){ + m_image.opacity = m_minOpacity; + } + else{ + m_image.opacity = opacity; + } + blockSignals(false); + emit imageUpdated(m_image); +} + +void ImageDialog::updateUnits() +{ + switch (m_image.units) + { + case Unit::Cm: + ui->units_ToolButton->setIcon(QIcon("://icon/32x32/units_cm_on.png")); + setSuffix("cm"); + setDecimals(2); + break; + + case Unit::Mm: + ui->units_ToolButton->setIcon(QIcon("://icon/32x32/units_mm_on.png")); + setSuffix("mm"); + setDecimals(2); + break; + + case Unit::Inch: + ui->units_ToolButton->setIcon(QIcon("://icon/32x32/units_in_on.png")); + setSuffix("in"); + setDecimals(3); + break; + + case Unit::Px: + ui->units_ToolButton->setIcon(QIcon("://icon/32x32/units_px_on.png")); + setSuffix("px"); + setDecimals(0); + default: + break; + } +} + +void ImageDialog::setSuffix(QString suffix) +{ + ui->xPosition_DoubleSpinBox->setSuffix(suffix); + ui->yPosition_DoubleSpinBox->setSuffix(suffix); + ui->width_DoubleSpinBox->setSuffix(suffix); + ui->height_DoubleSpinBox->setSuffix(suffix); +} + +void ImageDialog::setDecimals(int precision) +{ + ui->xPosition_DoubleSpinBox->setDecimals(precision); + ui->yPosition_DoubleSpinBox->setDecimals(precision); + ui->width_DoubleSpinBox->setDecimals(precision); + ui->height_DoubleSpinBox->setDecimals(precision); +} + + +void ImageDialog::dialogApply(QAbstractButton *button) +{ + if (ui->buttonBox->buttonRole(button) == QDialogButtonBox::ApplyRole) + { + updateImage(); + emit applyClicked(m_image); + } +} diff --git a/src/libs/tools/image_dialog.h b/src/libs/tools/image_dialog.h new file mode 100644 index 000000000000..bd01a5ed1a73 --- /dev/null +++ b/src/libs/tools/image_dialog.h @@ -0,0 +1,146 @@ +/****************************************************************************** + ** @file image_dialog.h + ** @author DS Caskey + ** @date Jun 3, 2022 + ** + ** @brief + ** @copyright + ** This source code is part of the Seamly2D project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2013-2022 Seamly2D project + ** All Rights Reserved. + ** + ** Seamly2D 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. + ** + ** Seamly2D 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 Seamly2D. If not, see . + ** + *****************************************************************************/ + +#ifndef IMAGE_DIALOG_H +#define IMAGE_DIALOG_H + +#include "../vmisc/def.h" +#include "../vtools/dialogs/tools/dialogtool.h" +#include "../vtools/tools/drawTools/operation/vabstractoperation.h" + +#include +#include +#include +#include +#include +#include +#include + +namespace Ui +{ + class ImageDialog; +} + +class ImageDialog : public QDialog +{ + Q_OBJECT + +public: + explicit ImageDialog(DraftImage image, qreal minDimension, qreal maxDimension); + virtual ~ImageDialog(); + + DraftImage getImage() const; + void setImage(DraftImage image); + void updateImage(); + void enableWidgets(); + + QString getName() const; + void setName(const QString &name); + + Position getOriginPoint() const; + void setOriginPoint(const int &index); + + qreal getXPos() const; + void setXPos(const qreal &value); + + qreal getYPos() const; + void setYPos(const qreal &value); + + qreal getWidth() const; + void setWidth(const qreal &value); + + qreal getHeight() const; + void setHeight(const qreal &value); + + qreal getXScale() const; + void setXScale(const qreal &value); + + qreal getYScale() const; + void setYScale(const qreal &value); + + bool isAspectLocked() const; + void setAspectLocked(const bool &state); + + bool isLocked() const; + void setLocked(const bool &state); + + qreal getRotation() const; + void setRotation(const qreal &value); + + bool isVisible() const; + void setVisibility(const bool &checked); + + qreal getOpacity() const; + void setOpacity(const qreal &opacity); + +private slots: + void nameChanged(const QString &name); + void originChanged(const QString &text); + void lockChanged(bool checked); + void alignmentChanged(); + void xPosChanged(qreal value); + void yPosChanged(qreal value); + void widthChanged(qreal width); + void heightChanged(qreal height); + void xScaleChanged(qreal value); + void yScaleChanged(qreal value); + void lockAspectChanged(bool checked); + void unitsChanged(); + void rotationChanged(qreal value); + void visibilityChanged(bool checked); + void opacityChanged(qreal value); + + void updateUnits(); + void updateSpinboxesRanges(); + + void setSuffix(QString suffix); + void setDecimals(int precision); + + void dialogApply(QAbstractButton *button); + +signals: + void lockClicked(bool state); + //void alignClicked(); + void lockAspectClicked(bool state); + void imageUpdated(DraftImage image); + void applyClicked(DraftImage image); + +private: + Q_DISABLE_COPY(ImageDialog) + Ui::ImageDialog *ui; + DraftImage m_image; + qreal m_pixmapWidth; + qreal m_pixmapHeight; + qreal m_maxDimension; + qreal m_minDimension; + qreal m_minOpacity; + qreal m_xScale; + qreal m_yScale; + bool m_flagName; +}; + +#endif // IMAGE_DIALOG_H diff --git a/src/libs/tools/image_dialog.ui b/src/libs/tools/image_dialog.ui new file mode 100644 index 000000000000..d0bb6a69339e --- /dev/null +++ b/src/libs/tools/image_dialog.ui @@ -0,0 +1,1167 @@ + + + ImageDialog + + + true + + + + 0 + 0 + 350 + 600 + + + + + 0 + 0 + + + + + 350 + 600 + + + + + 350 + 600 + + + + Image Properties + + + + :/icons/win.icon.theme/16x16/actions/preferences-other.png:/icons/win.icon.theme/16x16/actions/preferences-other.png + + + false + + + + + + + 0 + 0 + + + + + 328 + 85 + + + + + 16777215 + 16777215 + + + + + true + + + + Selection + + + + + + Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + 0 + 0 + + + + + 100 + 10 + + + + + 9 + false + + + + Id: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 100 + 10 + + + + + 9 + false + + + + Id + + + + + + + + 0 + 0 + + + + + 100 + 10 + + + + + 16777215 + 16777215 + + + + + 9 + false + + + + Name: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 9 + false + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 0 + 0 + + + + + 100 + 10 + + + + + 9 + false + + + + Lock Image: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + false + + + + + + + QToolButton:checked { + background-color: #f0f0f0; +} +QToolButton:!checked { + background-color: #f0f0f0; +} + + + + ... + + + + :/icon/32x32/lock_off.png + :/icon/32x32/lock_on.png:/icon/32x32/lock_off.png + + + true + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + + true + + + + Geometry + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 0 + 0 + + + + + 100 + 0 + + + + + 9 + false + + + + Qt::LeftToRight + + + Unit: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + Switch between px and pattern units + + + QToolButton:checked { + background-color: #f0f0f0; +} +QToolButton:!checked { + background-color: #f0f0f0; +} + + + + PX + + + + :/icon/32x32/units_in_on.png + :/icon/32x32/units_px_on.png + :/icon/32x32/units_in_on.png + :/icon/32x32/units_px_on.png:/icon/32x32/units_in_on.png + + + + 20 + 20 + + + + false + + + false + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Qt::Horizontal + + + + + + + Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + 0 + 0 + + + + + 100 + 10 + + + + + 9 + false + + + + X Position: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 75 + 0 + + + + + false + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + false + + + px + + + 0 + + + -16000.000000000000000 + + + 16000.000000000000000 + + + + + + + + 0 + 0 + + + + + 100 + 10 + + + + + 9 + false + + + + Y Position: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 75 + 0 + + + + + false + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + false + + + px + + + 0 + + + -16000.000000000000000 + + + 16000.000000000000000 + + + + + + + + + Qt::Horizontal + + + + + + + QLayout::SetDefaultConstraint + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 0 + 0 + + + + + 100 + 20 + + + + + 16777215 + 16777215 + + + + + 9 + false + + + + Lock Aspect Ratio: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + Lock aspect ratio + + + QToolButton:checked { + background-color: #f0f0f0; +} +QToolButton:!checked { + background-color: #f0f0f0; +} + + + + ... + + + + :/icon/32x32/lock_off.png + :/icon/32x32/lock_on.png:/icon/32x32/lock_off.png + + + + 20 + 20 + + + + true + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + 0 + 0 + + + + + 100 + 20 + + + + + 9 + false + + + + Width: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 75 + 0 + + + + + false + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + false + + + px + + + 0 + + + 0.000000000000000 + + + 99999.000000000000000 + + + + + + + + 0 + 0 + + + + + 100 + 10 + + + + + 9 + false + + + + Height: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 75 + 0 + + + + + false + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + false + + + px + + + 0 + + + 0.000000000000000 + + + 99999.000000000000000 + + + + + + + + 0 + 0 + + + + + 100 + 10 + + + + + 9 + false + + + + X Scale: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 75 + 0 + + + + + false + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + false + + + % + + + 2 + + + 99999.000000000000000 + + + + + + + + 0 + 0 + + + + + 100 + 10 + + + + + 9 + false + + + + Y Scale: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 75 + 0 + + + + + false + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + false + + + % + + + 2 + + + 99999.000000000000000 + + + + + + + + + + + Qt::Horizontal + + + + + + + Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + 0 + 0 + + + + + 100 + 10 + + + + + 9 + false + + + + Rotation: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 75 + 0 + + + + + false + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + false + + + ° + + + 3 + + + -360.000000000000000 + + + 360.000000000000000 + + + 1.000000000000000 + + + + + + + + + + + + + true + + + + Attributes + + + + 7 + + + + + Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + 0 + 0 + + + + + 100 + 10 + + + + + 9 + false + + + + Opacity: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 75 + 0 + + + + + false + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + % + + + 0 + + + 0.000000000000000 + + + 100.000000000000000 + + + + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + + + + buttonBox + accepted() + ImageDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + ImageDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/src/libs/tools/image_item.cpp b/src/libs/tools/image_item.cpp new file mode 100644 index 000000000000..ee9da89b001f --- /dev/null +++ b/src/libs/tools/image_item.cpp @@ -0,0 +1,631 @@ +/****************************************************************************** + ** @file image_item.cpp + ** @author DS Caskey + ** @date May 29, 2022 + ** + ** @brief + ** @copyright + ** This source code is part of the Seamly2D project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2013-2022 Seamly2D project + ** All Rights Reserved. + ** + ** Seamly2D 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. + ** + ** Seamly2D 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 Seamly2D. If not, see . + ** + *****************************************************************************/ + +#include "image_item.h" +#include "image_dialog.h" + +#include "vmaingraphicsscene.h" +#include "vmaingraphicsview.h" +#include "global.h" +#include "../vmisc/vcommonsettings.h" +#include "../vwidgets/resize_handle.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//--------------------------------------------------------------------------------------------------------------------- +/** + * @brief ImageItem default constructor. + * @param parent parent object. + */ +ImageItem::ImageItem(VAbstractPattern *doc, DraftImage image, QGraphicsItem *parent) + : QGraphicsItem(parent) + , m_doc(doc) + , m_offset(QPointF(0.0, 0.0)) + , m_boundingRect(QRectF()) + , m_handleRect(QRectF()) + , m_actualRect(QRectF()) + , m_resizeHandles() + , m_resizePosition() + , m_rotateLine() + , m_angleHandle() + , m_angle() + , m_mousePressed(false) + , m_isHovered(false) + , m_selectionType(SelectionType::ByMouseRelease) + , m_transformationMode(Qt::SmoothTransformation) + , m_image(image) + , m_pixmapWidth() + , m_pixmapHeight() + , m_selectable(true) + , m_minDimension(16) + , m_maxDimension(60000) +{ + initializeItem(); + + m_boundingRect = QRectF(m_image.xPos, m_image.yPos, m_image.xPos + m_image.width, m_image.yPos + m_image.height); + m_handleRect = m_boundingRect.adjusted(HANDLE_SIZE/2, HANDLE_SIZE/2, -HANDLE_SIZE/2, -HANDLE_SIZE/2); + + if (m_image.order == 0) + { + qreal minZValue = maxImageZvalue+1; + foreach (ImageItem *item, m_doc->getBackgroundImageMap().values()) + { + minZValue = qMin(minZValue, item->m_image.order); + } + m_image.order = minZValue-1; + moveToTop(); + } + + updateImage(); + + m_resizeHandles = new ResizeHandlesItem(this, m_minDimension, m_maxDimension); + m_resizeHandles->setLockAspectRatio(m_image.aspectLocked); + m_resizeHandles->setParentRotation(m_image.rotation); + m_resizeHandles->parentIsLocked(m_image.locked); + m_resizeHandles->setVisible(m_image.locked); + connect(m_resizeHandles, &ResizeHandlesItem::sizeChanged, this, &ImageItem::updateFromHandles); + connect(m_resizeHandles, &ResizeHandlesItem::setStatusMessage, this, [this](QString message) {emit setStatusMessage(message);}); +} + + +//--------------------------------------------------------------------------------------------------------------------- +QRectF ImageItem::boundingRect() const +{ + return m_boundingRect; +} + + +void ImageItem::setPixmap(const QPixmap &pixmap) +{ + prepareGeometryChange(); + + m_image.pixmap = pixmap; + + m_pixmapWidth = pixmap.width(); + m_pixmapHeight = pixmap.height(); + m_image.width = pixmap.width(); + m_image.height = pixmap.height(); + + m_boundingRect = QRectF(m_image.xPos, m_image.yPos, m_image.xPos + m_pixmapWidth, m_image.yPos + m_pixmapHeight); + + m_handleRect = m_boundingRect.adjusted(HANDLE_SIZE/2, HANDLE_SIZE/2, -HANDLE_SIZE/2, -HANDLE_SIZE/2); +} + +DraftImage ImageItem::getImage() +{ + return m_image; +} + +void ImageItem::setImage(DraftImage image) +{ + m_image = image; +} + +void ImageItem::updateImage() +{ + prepareGeometryChange(); + + setTransformOriginPoint(m_boundingRect.topLeft()); + setRotation(m_image.rotation); + + setPos(m_image.xPos - m_boundingRect.topLeft().x(), m_image.yPos - m_boundingRect.topLeft().y()); + + m_boundingRect.setSize(QSizeF(m_image.width, m_image.height)); + + setVisible(m_image.visible); + setOpacity(m_image.opacity/100); + + setLock(m_image.locked); + + setZValue(m_image.order); + + emit imageUpdated(m_image); +} + +void ImageItem::setLock(bool checked) +{ + m_image.locked = checked; + if (m_image.locked) + { + setAcceptedMouseButtons(Qt::RightButton); + emit setStatusMessage(""); + } + else + { + setAcceptedMouseButtons(Qt::LeftButton | Qt::RightButton); + } + setFlag(QGraphicsItem::ItemIsMovable, !m_image.locked); + //enableSelection(!m_image.locked); +} + + +//--------------------------------------------------------------------------------------------------------------------- +void ImageItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) +{ + Q_UNUSED(option) + Q_UNUSED(widget) + + if (isSelected()) + { + painter->save(); + painter->setPen(QPen(Qt::black, 1, Qt::DashLine)); + painter->drawRect(m_boundingRect); + painter->restore(); + } + + if (!m_image.locked && m_isHovered) + { + painter->save(); + QColor color = QColor(qApp->Settings()->getTertiarySupportColor()); + color.setAlpha(20); + painter->setPen(QPen(Qt::black, 2, Qt::DashLine)); + painter->setBrush(color); + painter->drawRect(m_boundingRect); + painter->restore(); + } + + painter->setRenderHint(QPainter::SmoothPixmapTransform, (m_transformationMode == Qt::SmoothTransformation)); + painter->drawPixmap(m_boundingRect.x(), m_boundingRect.y(), m_image.width, m_image.height, m_image.pixmap); +} + +//--------------------------------------------------------------------------------------------------------------------- +void ImageItem::enableSelection(bool enable) +{ + m_selectable = enable; + setFlag(QGraphicsItem::ItemIsSelectable, enable); +} + + +//--------------------------------------------------------------------------------------------------------------------- +void ImageItem::enableHovering(bool enable) +{ + Q_UNUSED(enable); +} + +//--------------------------------------------------------------------------------------------------------------------- +/** + * @brief hoverEnterEvent handle hover enter events. + * @param event hover enter event. + */ +void ImageItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event) +{ + m_isHovered = true; + if (m_selectable && flags() & QGraphicsItem::ItemIsMovable) + { + SetItemOverrideCursor(this, cursorArrowOpenHand, 1, 1); + } + else + { + setCursor(qApp->getSceneView()->viewport()->cursor()); + } + + if (!m_image.locked) + { + m_resizeHandles->show(); + showImageStatusMessage(); + } + + QGraphicsItem::hoverEnterEvent(event); +} + +//--------------------------------------------------------------------------------------------------------------------- +/** + * @brief hoverLeaveEvent handle hover leave events. + * @param event hover leave event. + */ +void ImageItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) +{ + m_isHovered = false; + if (flags() & QGraphicsItem::ItemIsMovable) + { + setCursor(QCursor()); + } + + if(!m_image.locked) + { + emit setStatusMessage(""); + m_resizeHandles->hide(); + } + + QGraphicsItem::hoverLeaveEvent(event); +} + + +void ImageItem::hoverMoveEvent(QGraphicsSceneHoverEvent *event) +{ + if (!m_image.locked) + { + showImageStatusMessage(); + } + QGraphicsItem::hoverMoveEvent(event); +} + + +//--------------------------------------------------------------------------------------------------------------------- +/** + * @brief contextMenuEvent handle context menu events. + * @param event context menu event. + */ +void ImageItem::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) +{ + if (!m_selectable) + { + return; + } + + QMenu menu; + QAction *actionProperties = menu.addAction(QIcon::fromTheme("preferences-other"), tr("Properties")); + + QAction *actionLock = menu.addAction(tr("Lock")); + if (m_image.locked){ + actionLock->setIcon(QIcon("://icon/32x32/lock_on.png")); + } + else{ + actionLock->setIcon(QIcon("://icon/32x32/lock_off.png")); + } + actionLock->setCheckable(true); + actionLock->setChecked(m_image.locked); + + // QAction *actionShow = menu.addAction(QIcon("://icon/32x32/visible_on.png"), tr("Show")); + // actionShow->setCheckable(true); + // actionShow->setChecked(m_image.visible); + // actionShow->setEnabled(!m_image.locked); + + QAction *actionSeparator = new QAction(this); + actionSeparator->setSeparator(true); + menu.addAction(actionSeparator); + + QMenu *orderMenu; + orderMenu = menu.addMenu(tr("Order")); + QAction *actionMoveTop = orderMenu->addAction(tr("Bring to top")); + QAction *actionMoveUp = orderMenu->addAction(tr("Move up")); + QAction *actionMoveDn = orderMenu->addAction(tr("Move down")); + QAction *actionMoveBottom = orderMenu->addAction(tr("Send to bottom")); + + actionMoveTop->setEnabled(!m_image.locked); + actionMoveUp->setEnabled(!m_image.locked); + actionMoveDn->setEnabled(!m_image.locked); + actionMoveBottom->setEnabled(!m_image.locked); + + //actionMoveTop->setShortcut(QKeySequence(Qt::ControlModifier + Qt::Key_Home)); + //actionMoveUp->setShortcut(QKeySequence(Qt::ControlModifier + Qt::Key_PageUp)); + //actionMoveDn->setShortcut(QKeySequence(Qt::ControlModifier + Qt::Key_PageDown)); + //actionMoveBottom->setShortcut(QKeySequence(Qt::ControlModifier + Qt::Key_End)); + + actionSeparator = new QAction(this); + actionSeparator->setSeparator(true); + menu.addAction(actionSeparator); + + QAction *actionDelete = menu.addAction(QIcon("://icon/32x32/trashcan.png"), tr("Delete")); + actionDelete->setEnabled(!m_image.locked); + + QAction *selectedAction = menu.exec(event->screenPos()); + + if (selectedAction == actionProperties) + { + ImageDialog *dialog = new ImageDialog(m_image, m_minDimension, m_maxDimension); + connect(dialog, &ImageDialog::applyClicked, this, &ImageItem::updateImageAndHandles); + + if (dialog->exec() == QDialog::Accepted) + { + updateImageAndHandles(dialog->getImage()); + } + } + else if (selectedAction == actionLock) + { + m_image.locked = !m_image.locked; + updateImageAndHandles(m_image); + } + // else if (selectedAction == actionShow) + // { + // SetVisible(selectedAction->isChecked()); + // } + else if (selectedAction == actionDelete) + { + if (!m_image.locked) + { + emit deleteImage(m_image.id); + } + } + + else if (selectedAction == actionMoveTop) + { + moveToTop(); + } + else if (selectedAction == actionMoveUp) + { + moveUp(); + } + else if (selectedAction == actionMoveDn) + { + moveDown(); + } + else if (selectedAction == actionMoveBottom) + { + moveToBottom(); + } + + emit showContextMenu(event); +} + + +//--------------------------------------------------------------------------------------------------------------------- +void ImageItem::mousePressEvent(QGraphicsSceneMouseEvent *event) +{ + if (!m_selectable) + { + event->ignore(); + return; + } + + // Special for not selectable item first need to call standard mousePressEvent then accept event + //QGraphicsItem::mousePressEvent(event); + + // Somehow clicking on non selectable object does not clear previous selections. + if (not (flags() & ItemIsSelectable) && scene()) + { + scene()->clearSelection(); + } + m_mousePressed = true; + + if (flags() & QGraphicsItem::ItemIsMovable) + { + if (event->button() == Qt::LeftButton && event->type() != QEvent::GraphicsSceneMouseDoubleClick) + { + SetItemOverrideCursor(this, cursorArrowCloseHand, 1, 1); + m_offset = event->pos() - m_boundingRect.topLeft(); + } + } + if (m_selectionType == SelectionType::ByMouseRelease) + { + event->accept(); // This help for non selectable items still receive mouseReleaseEvent events + } + else + { + if (event->button() == Qt::LeftButton && event->type() != QEvent::GraphicsSceneMouseDoubleClick) + { + emit imageSelected(m_image.id); + event->accept(); + } + } +} + +void ImageItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) +{ + prepareGeometryChange(); + + if (flags() & QGraphicsItem::ItemIsMovable && event->buttons() & Qt::LeftButton) + { + m_image.xPos = mapToScene(event->pos() - m_offset).x(); + m_image.yPos = mapToScene(event->pos() - m_offset).y(); + + showImageStatusMessage(); + updateImage(); + scene()->update(); + } +} + +//--------------------------------------------------------------------------------------------------------------------- +void ImageItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) +{ + if (flags() & QGraphicsItem::ItemIsMovable) + { + if (event->button() == Qt::LeftButton && event->type() != QEvent::GraphicsSceneMouseDoubleClick) + { + SetItemOverrideCursor(this, cursorArrowOpenHand, 1, 1); + } + } + + if (m_selectionType == SelectionType::ByMouseRelease) + { + emit imageSelected(m_image.id); + } + + m_mousePressed = false; + + QGraphicsItem::mouseReleaseEvent(event); +} + +//--------------------------------------------------------------------------------------------------------------------- +void ImageItem::keyReleaseEvent(QKeyEvent *event) +{ + switch (event->key()) + { + case Qt::Key_Delete: + if (!m_image.locked && isSelected()) + { + emit deleteImage(m_image.id); + } + default: + break; + } + QGraphicsItem::keyReleaseEvent (event); +} + +void ImageItem::initializeItem() +{ + setFlag(QGraphicsItem::ItemIsMovable, true); + setFlag(QGraphicsItem::ItemSendsGeometryChanges, true); + setFlag(QGraphicsItem::ItemIsFocusable, true); // For keyboard input focus + setFlag(QGraphicsItem::ItemIsSelectable, false); + setAcceptHoverEvents(true); + //enableSelection(false); +} + +void ImageItem::updateFromHandles(QRectF rect) +{ + prepareGeometryChange(); + + m_image.xPos = mapToScene(rect.topLeft()).x(); + m_image.yPos = mapToScene(rect.topLeft()).y(); + m_image.width = rect.width(); + m_image.height = rect.height(); + + m_boundingRect.setTopLeft(rect.topLeft()); + + updateImage(); + scene()->update(); +} + + +void ImageItem::updateImageAndHandles(DraftImage image) +{ + m_image = image; + updateImage(); + m_resizeHandles->setParentRect(m_boundingRect); + m_resizeHandles->setLockAspectRatio(m_image.aspectLocked); + m_resizeHandles->setParentRotation(m_image.rotation); + m_resizeHandles->parentIsLocked(m_image.locked); + m_resizeHandles->setVisible(m_image.locked); +} + +void ImageItem::deleteImageItem() +{ + moveToBottom(); //so that there is no gap in zValue + scene()->removeItem(this); + deleteLater(); +} + +void ImageItem::moveToBottom() +{ + qreal minZValue = m_image.order; + foreach (ImageItem *item, m_doc->getBackgroundImageMap().values()) + { + if (item != this && item->m_image.order < m_image.order) + { + minZValue = qMin(minZValue, item->m_image.order); + item->m_image.order++; + item->updateImage(); + } + } + m_image.order = minZValue; + updateImage(); +} + + +void ImageItem::moveToTop() +{ + foreach (ImageItem *item, m_doc->getBackgroundImageMap().values()) + { + if (item != this && item->m_image.order > m_image.order) + { + item->m_image.order--; + item->updateImage(); + } + } + m_image.order = maxImageZvalue; + updateImage(); +} + +void ImageItem::moveUp() +{ + if (m_image.order == maxImageZvalue) + { + return; + } + + foreach (ImageItem *item, m_doc->getBackgroundImageMap().values()) + { + if (item->m_image.order == m_image.order + 1) + { + item->m_image.order--; + item->updateImage(); + } + } + m_image.order ++; + updateImage(); +} + + +void ImageItem::moveDown() +{ + if (m_image.order == maxImageZvalue-m_doc->getBackgroundImageMap().values().size()+1) + { + return; + } + + foreach (ImageItem *item, m_doc->getBackgroundImageMap().values()) + { + if (item->m_image.order == m_image.order - 1) + { + item->m_image.order++; + item->updateImage(); + } + } + m_image.order --; + updateImage(); +} + + +void ImageItem::showImageStatusMessage() +{ + QString width; + QString height; + QString posX; + QString posY; + + if (m_image.units == Unit::Px) + { + width = QString::number(m_image.width); + height = QString::number(m_image.height); + posX = QString::number(m_image.xPos); + posY = QString::number(m_image.yPos); + } + else + { + width = QString::number(qApp->fromPixel(m_image.width)); + height = QString::number(qApp->fromPixel(m_image.height)); + posX = QString::number(qApp->fromPixel(m_image.xPos)); + posY = QString::number(qApp->fromPixel(m_image.yPos)); + } + + QString message = QString(tr("Image (%7): Size(%2%1, %3%1); Pos(%4%1, %5%1); Rot(%6°)%8")) + .arg(UnitsToStr(m_image.units)) + .arg(width) + .arg(height) + .arg(posX) + .arg(posY) + .arg(m_image.rotation) + .arg(m_image.name) + .arg(!m_image.aspectLocked ? "" : tr(" - Aspect ratio locked")); + + emit setStatusMessage(message); +} diff --git a/src/libs/tools/image_item.h b/src/libs/tools/image_item.h new file mode 100644 index 000000000000..3792133615ca --- /dev/null +++ b/src/libs/tools/image_item.h @@ -0,0 +1,132 @@ +/****************************************************************************** + ** @file image_item.h + ** @author DS Caskey + ** @date May 29, 2022 + ** + ** @brief + ** @copyright + ** This source code is part of the Seamly2D project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2013-2022 Seamly2D project + ** All Rights Reserved. + ** + ** Seamly2D 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. + ** + ** Seamly2D 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 Seamly2D. If not, see . + ** + *****************************************************************************/ + +#ifndef IMAGE_ITEM_H +#define IMAGE_ITEM_H + +#include + +#include "../vmisc/def.h" +#include "../vwidgets/resize_handle.h" +#include "../vmisc/vabstractapplication.h" + +#include +#include +#include +#include +#include +#include +#include + +class ResizeHandlesItem; + +/** + * @brief The ImageItem class pointer label. + */ +class ImageItem : public QObject, public QGraphicsItem +{ + Q_OBJECT + Q_INTERFACES(QGraphicsItem) + +public: + explicit ImageItem(VAbstractPattern *doc, DraftImage image, QGraphicsItem *parent = nullptr); + virtual ~ImageItem() = default; + + virtual int type() const override {return Type;} + enum {Type = UserType + static_cast(Tool::BackgroundImage)}; + + virtual QRectF boundingRect() const override; + + virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, + QWidget *widget = nullptr) override; + + static constexpr qreal maxImageZvalue = -100; + + void moveToBottom(); + void moveToTop(); + void moveUp(); + void moveDown(); + + + DraftImage getImage(); + void setImage(DraftImage image); + void updateImage(); + void updateImageAndHandles(DraftImage image); + + void setLock(bool checked); + + void enableSelection(bool enable); + void enableHovering(bool enable); + + void deleteImageItem(); + +signals: + void imageUpdated(DraftImage image); + void showContextMenu(QGraphicsSceneContextMenuEvent *event); + void deleteImage(quint32 id); + void imageSelected(quint32 id); + void setStatusMessage(QString message); + +protected: + virtual void hoverEnterEvent (QGraphicsSceneHoverEvent *event) override; + virtual void hoverMoveEvent (QGraphicsSceneHoverEvent *event) override; + virtual void hoverLeaveEvent (QGraphicsSceneHoverEvent *event) override; + virtual void contextMenuEvent (QGraphicsSceneContextMenuEvent *event) override; + virtual void mousePressEvent(QGraphicsSceneMouseEvent *event) override; + virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override; + virtual void mouseReleaseEvent (QGraphicsSceneMouseEvent *event) override; + virtual void keyReleaseEvent (QKeyEvent *event) override; + +private: + VAbstractPattern *m_doc; + QPointF m_offset; + QRectF m_boundingRect; + QRectF m_handleRect; + QRectF m_actualRect; + ResizeHandlesItem *m_resizeHandles; + Position m_resizePosition; + QLineF m_rotateLine; + QPolygonF m_angleHandle; + qreal m_angle; + bool m_mousePressed; + bool m_isHovered; + SelectionType m_selectionType; + bool m_transformationMode; + DraftImage m_image; + qreal m_pixmapWidth; + qreal m_pixmapHeight; + bool m_selectable; + qreal m_minDimension; + qreal m_maxDimension; + + void initializeItem(); + void updateFromHandles(QRectF rect); + void setPixmap(const QPixmap &pixmap); + void showImageStatusMessage(); +}; + +#endif // IMAGE_ITEM_H diff --git a/src/libs/tools/stable.cpp b/src/libs/tools/stable.cpp new file mode 100644 index 000000000000..b841317d4c63 --- /dev/null +++ b/src/libs/tools/stable.cpp @@ -0,0 +1,53 @@ +/*************************************************************************** + * * + * Copyright (C) 2017 Seamly, LLC * + * * + * https://github.com/fashionfreedom/seamly2d * + * * + *************************************************************************** + ** + ** Seamly2D 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. + ** + ** Seamly2D 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 Seamly2D. If not, see . + ** + ************************************************************************** + + ************************************************************************ + ** + ** @file stable.cpp + ** @author Roman Telezhynskyi + ** @date November 15, 2013 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentine project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2013-2015 Seamly2D project + ** All Rights Reserved. + ** + ** Seamly2D 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. + ** + ** Seamly2D 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 Seamly2D. If not, see . + ** + *************************************************************************/ + +// Build the precompiled headers. +#include "stable.h" diff --git a/src/libs/tools/stable.h b/src/libs/tools/stable.h new file mode 100644 index 000000000000..7259d1900bd0 --- /dev/null +++ b/src/libs/tools/stable.h @@ -0,0 +1,100 @@ +/*************************************************************************** + * * + * Copyright (C) 2017 Seamly, LLC * + * * + * https://github.com/fashionfreedom/seamly2d * + * * + *************************************************************************** + ** + ** Seamly2D 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. + ** + ** Seamly2D 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 Seamly2D. If not, see . + ** + ************************************************************************** + + ************************************************************************ + ** + ** @file stable.h + ** @author Roman Telezhynskyi + ** @date November 15, 2013 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentine project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2013-2015 Seamly2D project + ** All Rights Reserved. + ** + ** Seamly2D 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. + ** + ** Seamly2D 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 Seamly2D. If not, see . + ** + *************************************************************************/ + +#ifndef STABLE_H +#define STABLE_H + +/* Add C includes here */ + +#if defined __cplusplus +/* Add C++ includes here */ +#include + +/*In all cases we need include core header for getting defined values*/ +//#ifdef QT_CORE_LIB +//# include +//#endif + +#ifdef QT_GUI_LIB +# include +#endif + +#ifdef QT_XML_LIB +# include +#endif + +//In Windows you can't use same header in all modes. +#if !defined(Q_OS_WIN) +# ifdef QT_WIDGETS_LIB +# include +# endif + +# ifdef QT_SVG_LIB +# include +# endif + +# ifdef QT_PRINTSUPPORT_LIB +# include +# endif + + //Build doesn't work, if include this headers on Windows. +# ifdef QT_XMLPATTERNS_LIB +# include +# endif + +# ifdef QT_NETWORK_LIB +# include +# endif +#endif/*Q_OS_WIN*/ + +#endif /*__cplusplus*/ + +#endif // STABLE_H diff --git a/src/libs/tools/tools.pri b/src/libs/tools/tools.pri new file mode 100644 index 000000000000..d519078ee02d --- /dev/null +++ b/src/libs/tools/tools.pri @@ -0,0 +1,16 @@ +# ADD TO EACH PATH $$PWD VARIABLE!!!!!! +# This need for correct working file translations.pro + +HEADERS += \ + $$PWD/image_dialog.h \ + $$PWD/stable.h \ + $$PWD/image_item.h + +SOURCES += \ + $$PWD/image_dialog.cpp \ + $$PWD/image_item.cpp + +FORMS += \ + $$PWD/image_dialog.ui + +*msvc*:SOURCES += $$PWD/stable.cpp diff --git a/src/libs/tools/tools.pro b/src/libs/tools/tools.pro new file mode 100644 index 000000000000..9b6e69205887 --- /dev/null +++ b/src/libs/tools/tools.pro @@ -0,0 +1,77 @@ +#------------------------------------------------- +# +# Project created by QtCreator 2015-06-16T18:05:56 +# +#------------------------------------------------- + +# File with common stuff for whole project +message("Entering tools.pro") +include(../../../common.pri) + +QT += widgets xml printsupport + +# Name of the library +TARGET = tools + +# We want create library +TEMPLATE = lib + +CONFIG += \ + staticlib \# Making static library + c++11 # We use C++11 standard + +# Use out-of-source builds (shadow builds) +CONFIG -= debug_and_release debug_and_release_target + +# Since Qt 5.4.0 the source code location is recorded only in debug builds. +# We need this information also in release builds. For this need define QT_MESSAGELOGCONTEXT. +DEFINES += QT_MESSAGELOGCONTEXT + +include(tools.pri) + +# This is static library so no need in "make install" + +# directory for executable file +DESTDIR = bin + +# files created moc +MOC_DIR = moc + +# objecs files +OBJECTS_DIR = obj + +# Directory for files created rcc +#RCC_DIR = rcc + +# Directory for files created uic +UI_DIR = uic + +# Set using ccache. Function enable_ccache() defined in common.pri. +$$enable_ccache() + +INCLUDEPATH += $$PWD/../vpatterndb + +include(warnings.pri) + +CONFIG(release, debug|release){ + # Release mode + !*msvc*:CONFIG += silent + DEFINES += V_NO_ASSERT + !unix:*g++*{ + QMAKE_CXXFLAGS += -fno-omit-frame-pointer # Need for exchndl.dll + } + + noDebugSymbols{ # For enable run qmake with CONFIG+=noDebugSymbols + # do nothing + } else { + !macx:!*msvc*{ + # Turn on debug symbols in release mode on Unix systems. + # On Mac OS X temporarily disabled. TODO: find way how to strip binary file. + QMAKE_CXXFLAGS_RELEASE += -g -gdwarf-3 + QMAKE_CFLAGS_RELEASE += -g -gdwarf-3 + QMAKE_LFLAGS_RELEASE = + } + } +} + +include (../libs.pri) diff --git a/src/libs/tools/warnings.pri b/src/libs/tools/warnings.pri new file mode 100644 index 000000000000..9c069161b5e5 --- /dev/null +++ b/src/libs/tools/warnings.pri @@ -0,0 +1,81 @@ +#Turn on compilers warnings. +unix { + *g++*{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${UI_DIR}" \ + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + # -isystem "$${OUT_PWD}/$${RCC_DIR}" \ + $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } + + noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer + # do nothing + } else { + CONFIG(debug, debug|release){ + # Debug mode + #gcc’s 4.8.0 Address Sanitizer + #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ + QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_LFLAGS += -fsanitize=address + } + } + + gccUbsan{ # For enable run qmake with CONFIG+=gccUbsan + CONFIG(debug, debug|release){ + # Debug mode + #gcc’s 4.9.0 Undefined Behavior Sanitizer (ubsan) + QMAKE_CXXFLAGS += -fsanitize=undefined + QMAKE_CFLAGS += -fsanitize=undefined + QMAKE_LFLAGS += -fsanitize=undefined + } + } + } + + *clang*{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } + + # -isystem key works only for headers. In some cases it's not enough. But we can't delete these warnings and + # want them in global list. Compromise decision delete them from local list. + QMAKE_CXXFLAGS -= \ + -Wundefined-reinterpret-cast + } + + *-icc-*{ + QMAKE_CXXFLAGS += \ + -isystem "$${OUT_PWD}/$${UI_DIR}" \ + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + $$ICC_DEBUG_CXXFLAGS + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } + } +} else { # Windows + *g++*{ + QMAKE_CXXFLAGS += $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } + } + + *msvc*{ + QMAKE_CXXFLAGS += $$MSVC_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -WX + } + } +} diff --git a/src/libs/vmisc/def.cpp b/src/libs/vmisc/def.cpp index 346050062ad8..ef2763dc8731 100644 --- a/src/libs/vmisc/def.cpp +++ b/src/libs/vmisc/def.cpp @@ -1,37 +1,16 @@ -/*************************************************************************** - * * - * Copyright (C) 2017 Seamly, LLC * - * * - * https://github.com/fashionfreedom/seamly2d * - * * - *************************************************************************** - ** - ** Seamly2D 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. - ** - ** Seamly2D 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 Seamly2D. If not, see . - ** - ************************************************************************** - - ************************************************************************ - ** +/************************************************************************ ** @file def.cpp ** @author Roman Telezhynskyi ** @date 11 6, 2015 ** + ** @author DS Caskey + ** @date Jul 31, 2022 + ** ** @brief ** @copyright - ** This source code is part of the Valentine project, a pattern making + ** This source code is part of the Seamly2D project, a pattern making ** program, whose allow create and modeling patterns of clothing. - ** Copyright (C) 2015 Seamly2D project + ** Copyright (C) 2013-2022 Seamly2D project ** All Rights Reserved. ** ** Seamly2D is free software: you can redistribute it and/or modify @@ -51,6 +30,8 @@ #include "def.h" +#include "vabstractapplication.h" + #include #include #include @@ -80,8 +61,6 @@ #include #include -#include "vabstractapplication.h" - //functions const QString degTorad_F = QStringLiteral("degTorad"); const QString radTodeg_F = QStringLiteral("radTodeg"); @@ -191,6 +170,7 @@ const QStringList labelTemplatePlaceholders = QStringList() << pl_size const QString cursorArrowOpenHand = QStringLiteral("://cursor/cursor-arrow-openhand.png"); const QString cursorArrowCloseHand = QStringLiteral("://cursor/cursor-arrow-closehand.png"); +const QString cursorResizeArrow = QStringLiteral("://cursor/arrow_resize_cursor.png"); // From documantation: If you use QStringLiteral you should avoid declaring the same literal in multiple places: This // furthermore blows up the binary sizes. diff --git a/src/libs/vmisc/def.h b/src/libs/vmisc/def.h index e485a40f3b10..6f62559db589 100644 --- a/src/libs/vmisc/def.h +++ b/src/libs/vmisc/def.h @@ -1,12 +1,14 @@ /************************************************************************ - ** ** @file def.h ** @author Roman Telezhynskyi ** @date 11 4, 2015 ** + ** @author Douglas S Caskey + ** @date 7.31.2022 + ** ** @brief ** @copyright - ** This source code is part of the Valentine project, a pattern making + ** This source code is part of the Seamly2D project, a pattern making ** program, whose allow create and modeling patterns of clothing. ** Copyright (C) 2013 - 2022 Seamly2D project ** All Rights Reserved. @@ -37,6 +39,7 @@ #include #include #include +#include #include #ifdef Q_OS_WIN #include @@ -57,6 +60,21 @@ class QGraphicsItem; #define SceneSize 50000 +#define HANDLE_SIZE 12 + +enum class Position : char +{ + TopLeft = 0, + Top, + TopRight, + Right, + BottomRight, + Bottom, + BottomLeft, + Left, + Center +}; + enum class PaperSizeFormat : char { A0 = 0, A1, A2, @@ -139,6 +157,52 @@ enum class PieceNodeAngle : unsigned char BySecondEdgeRightAngle }; +struct DraftImage +{ + DraftImage() + : id(0), + name(""), + filename(""), + pixmap(), + locked(false), + origin(Position::Center), + anchor(0), + xPos(0.0), + yPos(0.0), + width(0.0), + height(0.0), + aspectLocked(false), + units(Unit::Px), + rotation(0.0), + visible(true), + opacity(100.0), + order(0) + {} + + quint32 id; + QString name; + QString filename; + QPixmap pixmap; + bool locked; + Position origin; + quint32 anchor; + qreal xPos; + qreal yPos; + qreal width; + qreal height; + qreal xScale; + qreal yScale; + bool aspectLocked; + Unit units; + qreal rotation; + bool visible; + qreal opacity; + qreal order; +}; + +Q_DECLARE_METATYPE(DraftImage) +Q_DECLARE_TYPEINFO(DraftImage, Q_MOVABLE_TYPE); + enum class NotchType : unsigned char { Slit = 0, // Default @@ -232,6 +296,7 @@ enum class Tool : ToolVisHolderType EllipticalArc, AnchorPoint, InsertNodes, + BackgroundImage, LAST_ONE_DO_NOT_USE //add new stuffs above this, this constant must be last and never used }; @@ -290,6 +355,8 @@ enum class Vis : ToolVisHolderType TextGraphicsItem, ScenePoint, ArrowedLineItem, + BackgroundImageItem, + ResizeHandlesItem, LAST_ONE_DO_NOT_USE //add new types above this, this constant must be last and never used }; @@ -452,6 +519,7 @@ extern const QStringList labelTemplatePlaceholders; extern const QString cursorArrowOpenHand; extern const QString cursorArrowCloseHand; +extern const QString cursorResizeArrow; extern const QString degreeSymbol; extern const QString trueStr; diff --git a/src/libs/vmisc/def.h~RF9f2c13d.TMP b/src/libs/vmisc/def.h~RF9f2c13d.TMP new file mode 100644 index 000000000000..45cc766f4aaa --- /dev/null +++ b/src/libs/vmisc/def.h~RF9f2c13d.TMP @@ -0,0 +1,734 @@ +/*************************************************************************** + * * + * Copyright (C) 2017 Seamly, LLC * + * * + * https://github.com/fashionfreedom/seamly2d * + * * + *************************************************************************** + ** + ** Seamly2D 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. + ** + ** Seamly2D 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 Seamly2D. If not, see . + ** + ************************************************************************** + + ************************************************************************ + ** + ** @file def.h + ** @author Roman Telezhynskyi + ** @date 11 4, 2015 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentine project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2015 Seamly2D project + ** All Rights Reserved. + ** + ** Seamly2D 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. + ** + ** Seamly2D 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 Seamly2D. If not, see . + ** + *************************************************************************/ + +#ifndef DEF_H +#define DEF_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef Q_OS_WIN + #include +#endif /* Q_OS_WIN */ + +#include "debugbreak.h" + +template class QSharedPointer; + +#ifdef Q_CC_MSVC + #include +#endif /* Q_CC_MSVC */ + +class QComboBox; +class QMarginsF; +class VTranslateMeasurements; +class QGraphicsItem; + +#define SceneSize 50000 + +enum class handleType : char +{ + TopLeft = 0, + Top, + TopRight, + Right, + BottomRight, + Bottom, + BottomLeft, + Left, + Center +}; + +enum class LayoutExportFormat : char +{ + SVG = 0, + PDF = 1, + PDFTiled = 2, + PNG = 3, + JPG = 4, + BMP = 5, + PPM = 6, + OBJ = 7, /* Wavefront OBJ*/ + PS = 8, + EPS = 9, + DXF_AC1006_Flat = 10, /* R10. */ + DXF_AC1009_Flat = 11, /* R11 & R12. */ + DXF_AC1012_Flat = 12, /* R13. */ + DXF_AC1014_Flat = 13, /* R14. */ + DXF_AC1015_Flat = 14, /* ACAD 2000. */ + DXF_AC1018_Flat = 15, /* ACAD 2004. */ + DXF_AC1021_Flat = 16, /* ACAD 2007. */ + DXF_AC1024_Flat = 17, /* ACAD 2010. */ + DXF_AC1027_Flat = 18, /* ACAD 2013. */ + DXF_AC1006_AAMA = 19, /* R10. */ + DXF_AC1009_AAMA = 20, /* R11 & R12. */ + DXF_AC1012_AAMA = 21, /* R13. */ + DXF_AC1014_AAMA = 22, /* R14. */ + DXF_AC1015_AAMA = 23, /* ACAD 2000. */ + DXF_AC1018_AAMA = 24, /* ACAD 2004. */ + DXF_AC1021_AAMA = 25, /* ACAD 2007. */ + DXF_AC1024_AAMA = 26, /* ACAD 2010. */ + DXF_AC1027_AAMA = 27, /* ACAD 2013. */ + DXF_AC1006_ASTM = 28, /* R10. */ + DXF_AC1009_ASTM = 29, /* R11 & R12. */ + DXF_AC1012_ASTM = 30, /* R13. */ + DXF_AC1014_ASTM = 31, /* R14. */ + DXF_AC1015_ASTM = 32, /* ACAD 2000. */ + DXF_AC1018_ASTM = 33, /* ACAD 2004. */ + DXF_AC1021_ASTM = 34, /* ACAD 2007. */ + DXF_AC1024_ASTM = 35, /* ACAD 2010. */ + DXF_AC1027_ASTM = 36, /* ACAD 2013. */ + TIF = 37, /* TIFF */ + COUNT /*Use only for validation*/ +}; + +enum class NodeDetail : char { Contour, Modeling }; +enum class SceneObject : char { Point, Line, Spline, Arc, ElArc, SplinePath, Detail, Unknown }; +enum class MeasurementsType : char { Multisize, Individual , Unknown}; +enum class Unit : char { Mm = 0, Cm, Inch, Px, LAST_UNIT_DO_NOT_USE}; +enum class Source : char { FromGui, FromFile, FromTool }; +enum class NodeUsage : bool {NotInUse = false, InUse = true}; +enum class SelectionType : bool {ByMousePress, ByMouseRelease}; + +enum class PageOrientation : bool {Portrait = true, Landscape = false}; + +enum class PieceNodeAngle : unsigned char +{ + ByLength = 0, + ByPointsIntersection, + ByFirstEdgeSymmetry, + BySecondEdgeSymmetry, + ByFirstEdgeRightAngle, + BySecondEdgeRightAngle +}; + +struct DraftImage +{ + DraftImage() + : id(0), + name(""), + filename(""), + pixmap(), + locked(false), + origin(Handle::Center), + anchor(0), + xPos(0.0), + yPos(0.0), + width(0.0), + height(0.0), + xScale(100.0), + yScale(100.0), + aspectLocked(true), + units(Unit::Px), + rotation(0.0), + visible(true), + opacity(100.0), + order(0) + {} + + quint32 id; + QString name; + QString filename; + QPixmap pixmap; + bool locked; + Handle origin; + quint32 anchor; + qreal xPos; + qreal yPos; + qreal width; + qreal height; + qreal xScale; + qreal yScale; + bool aspectLocked; + Unit units; + qreal rotation; + bool visible; + qreal opacity; + qreal order; +}; + +Q_DECLARE_METATYPE(DraftImage) +Q_DECLARE_TYPEINFO(DraftImage, Q_MOVABLE_TYPE); + +enum class NotchType : unsigned char +{ + Slit = 0, // Default + TNotch, + VInternal, + VExternal, + UNotch, + Castle, + Diamond +}; + +QString notchTypeToString(NotchType type); +NotchType stringToNotchType(const QString &value); + +enum class NotchSubType : unsigned char +{ + Straightforward = 0, // Default + Bisector, + Intersection +}; + +QString notchSubTypeToString(NotchSubType type); +NotchSubType stringToNotchSubType(const QString &value); + + +Unit StrToUnits(const QString &unit); +QString UnitsToStr(const Unit &unit, const bool translate = false); + + +enum class PiecePathIncludeType : unsigned char +{ + AsMainPath = 0, + AsCustomSA = 1 +}; + +enum class PiecePathType : unsigned char {PiecePath = 0, CustomSeamAllowance = 1, InternalPath = 2, Unknown = 3}; + +typedef int ToolVisHolderType; +enum class Tool : ToolVisHolderType +{ + Arrow, + SinglePoint, + DoublePoint, + LinePoint, + AbstractSpline, + Cut, + BasePoint, + EndLine, + Line, + AlongLine, + ShoulderPoint, + Normal, + Bisector, + LineIntersect, + Spline, + CubicBezier, + CutSpline, + CutArc, + Arc, + ArcWithLength, + SplinePath, + CubicBezierPath, + CutSplinePath, + PointOfContact, + Piece, + InternalPath, + NodePoint, + NodeArc, + NodeElArc, + NodeSpline, + NodeSplinePath, + Height, + Triangle, + LineIntersectAxis, + PointOfIntersectionArcs, + PointOfIntersectionCircles, + PointOfIntersectionCurves, + CurveIntersectAxis, + ArcIntersectAxis, + PointOfIntersection, + PointFromCircleAndTangent, + PointFromArcAndTangent, + TrueDarts, + UnionDetails, + Group, + Rotation, + MirrorByLine, + MirrorByAxis, + Move, + Midpoint, + EllipticalArc, + Pin, + InsertNode, + LAST_ONE_DO_NOT_USE //add new stuffs above this, this constant must be last and never used +}; + +enum class Vis : ToolVisHolderType +{ + ControlPointSpline = static_cast(Tool::LAST_ONE_DO_NOT_USE), + GraphicsSimpleTextItem, + SimplePoint, + SimpleCurve, + ScaledLine, + ScaledEllipse, + Line, + Path, + Operation, + ToolAlongLine, + ToolArc, + ToolArcWithLength, + ToolBisector, + ToolCutArc, + ToolEndLine, + ToolHeight, + ToolLine, + ToolLineIntersect, + ToolNormal, + ToolPointOfContact, + ToolPointOfIntersection, + ToolPointOfIntersectionArcs, + ToolPointOfIntersectionCircles, + ToolPointOfIntersectionCurves, + ToolPointFromCircleAndTangent, + ToolPointFromArcAndTangent, + ToolShoulderPoint, + ToolSpline, + ToolCubicBezier, + ToolCubicBezierPath, + ToolTriangle, + ToolCutSpline, + ToolSplinePath, + ToolCutSplinePath, + ToolLineIntersectAxis, + ToolCurveIntersectAxis, + ToolTrueDarts, + ToolRotation, + ToolMirrorByLine, + ToolMirrorByAxis, + ToolMove, + ToolEllipticalArc, + ToolPiece, + ToolInternalPath, + ToolPin, + PiecePins, + NoBrush, + CurvePathItem, + GrainlineItem, + PieceItem, + TextGraphicsItem, + ScenePoint, + ArrowedLineItem, + ImageItem, + LAST_ONE_DO_NOT_USE //add new types above this, this constant must be last and never used +}; + +enum class VarType : char { Measurement, Increment, LineLength, CurveLength, CurveCLength, LineAngle, CurveAngle, + ArcRadius, Unknown }; + +static const int heightStep = 6; +enum class GHeights : unsigned char { ALL, + H50=50, H56=56, H62=62, H68=68, H74=74, H80=80, H86=86, H92=92, + H98=98, H104=104, H110=110, H116=116, H122=122, H128=128, H134=134, H140=140, + H146=146, H152=152, H158=158, H164=164, H170=170, H176=176, H182=182, H188=188, + H194=194, H200=200}; + +static const int sizeStep = 2; +enum class GSizes : unsigned char { ALL, + S22=22, S24=24, S26=26, S28=28, S30=30, S32=32, S34=34, S36=36, S38=38, S40=40, + S42=42, S44=44, S46=46, S48=48, S50=50, S52=52, S54=54, S56=56, S58=58, S60=60, + S62=62, S64=64, S66=66, S68=68, S70=70, S72=72 }; + +/* QImage supports a maximum of 32768x32768 px images (signed short). + * This follows from the condition: width * height * colordepth < INT_MAX (4 billion) -> 32768 * 32768 * 4 = 4 billion. + * The second condition is of course that malloc is able to allocate the requested memory. + * + * If you really need bigger images you will have to use another wrapper or split into multiple QImage's. + */ +#define QIMAGE_MAX 32768 + +/* + * This macros SCASSERT (for Stop and Continue Assert) will break into the debugger on the line of the assert and allow + * you to continue afterwards should you choose to. + * idea: Q_ASSERT no longer pauses debugger - http://qt-project.org/forums/viewthread/13148 + * Usefull links: + * 1. What's the difference between __PRETTY_FUNCTION__, __FUNCTION__, __func__? - + * https://stackoverflow.com/questions/4384765/whats-the-difference-between-pretty-function-function-func + * + * 2. Windows Predefined Macros - http://msdn.microsoft.com/library/b0084kay.aspx + * + * 3. Windows DebugBreak function - http://msdn.microsoft.com/en-us/library/ms679297%28VS.85%29.aspx + * + * 4. Continue to debug after failed assertion on Linux? [C/C++] - + * https://stackoverflow.com/questions/1721543/continue-to-debug-after-failed-assertion-on-linux-c-c + */ +#ifndef V_NO_ASSERT + +#define SCASSERT(cond) \ +{ \ + if (!(cond)) \ + { \ + qCritical("ASSERT: %s in %s (%s:%u)", \ + #cond, Q_FUNC_INFO , __FILE__, __LINE__); \ + debug_break(); \ + abort(); \ + } \ +} \ + +#else // define but disable this function if debugging is not set +#define SCASSERT(cond) qt_noop(); +#endif /* V_NO_ASSERT */ + +#ifndef __has_cpp_attribute +# define __has_cpp_attribute(x) 0 +#endif + +#if __cplusplus > 201402L && __has_cpp_attribute(fallthrough) +# define V_FALLTHROUGH [[fallthrough]]; +#elif defined(Q_CC_CLANG) && __cplusplus >= 201103L + /* clang's fallthrough annotations are only available starting in C++11. */ +# define V_FALLTHROUGH [[clang::fallthrough]]; +#elif defined(Q_CC_MSVC) + /* + * MSVC's __fallthrough annotations are checked by /analyze (Code Analysis): + * https://msdn.microsoft.com/en-us/library/ms235402%28VS.80%29.aspx + */ +# include +# define V_FALLTHROUGH __fallthrough; +#elif defined(Q_CC_GNU) && (__GNUC__ >= 7) +# define V_FALLTHROUGH [[gnu::fallthrough]]; +#else +# define V_FALLTHROUGH +#endif + +extern const QString LONG_OPTION_NO_HDPI_SCALING; +bool IsOptionSet(int argc, char *argv[], const char *option); +void InitHighDpiScaling(int argc, char *argv[]); + +// functions +extern const QString degTorad_F; +extern const QString radTodeg_F; +extern const QString sin_F; +extern const QString cos_F; +extern const QString tan_F; +extern const QString asin_F; +extern const QString acos_F; +extern const QString atan_F; +extern const QString sinh_F; +extern const QString cosh_F; +extern const QString tanh_F; +extern const QString asinh_F; +extern const QString acosh_F; +extern const QString atanh_F; +extern const QString sinD_F; +extern const QString cosD_F; +extern const QString tanD_F; +extern const QString asinD_F; +extern const QString acosD_F; +extern const QString atanD_F; +extern const QString log2_F; +extern const QString log10_F; +extern const QString log_F; +extern const QString ln_F; +extern const QString exp_F; +extern const QString sqrt_F; +extern const QString sign_F; +extern const QString rint_F; +extern const QString abs_F; +extern const QString min_F; +extern const QString max_F; +extern const QString sum_F; +extern const QString avg_F; +extern const QString fmod_F; + +extern const QStringList builInFunctions; + +// Postfix operators +extern const QString cm_Oprt; +extern const QString mm_Oprt; +extern const QString in_Oprt; + +extern const QStringList builInPostfixOperators; + +// Placeholders +extern const QString pl_size; +extern const QString pl_height; +extern const QString pl_date; +extern const QString pl_time; +extern const QString pl_patternName; +extern const QString pl_patternNumber; +extern const QString pl_author; +extern const QString pl_customer; +extern const QString pl_pExt; +extern const QString pl_pFileName; +extern const QString pl_mFileName; +extern const QString pl_mExt; +extern const QString pl_pLetter; +extern const QString pl_pAnnotation; +extern const QString pl_pOrientation; +extern const QString pl_pRotation; +extern const QString pl_pTilt; +extern const QString pl_pFoldPosition; +extern const QString pl_pName; +extern const QString pl_pQuantity; +extern const QString pl_mFabric; +extern const QString pl_mLining; +extern const QString pl_mInterfacing; +extern const QString pl_mInterlining; +extern const QString pl_wCut; +extern const QString pl_wOnFold; + +extern const QStringList labelTemplatePlaceholders; + +extern const QString cursorArrowOpenHand; +extern const QString cursorArrowCloseHand; + +extern const QString degreeSymbol; +extern const QString trueStr; +extern const QString falseStr; + +extern const QString strSlit; + +extern const QString strStraightforward; +extern const QString strBisector; +extern const QString strIntersection; + +extern const QString unitMM; +extern const QString unitCM; +extern const QString unitINCH; +extern const QString unitPX; + +void SetItemOverrideCursor(QGraphicsItem *item, const QString & pixmapPath, int hotX = -1, int hotY = -1); + +extern const qreal PrintDPI; + +Q_REQUIRED_RESULT double ToPixel(double val, const Unit &unit); +Q_REQUIRED_RESULT double FromPixel(double pix, const Unit &unit); + +Q_REQUIRED_RESULT qreal UnitConvertor(qreal value, const Unit &from, const Unit &to); +Q_REQUIRED_RESULT QMarginsF UnitConvertor(const QMarginsF &margins, const Unit &from, const Unit &to); + +void InitLanguages(QComboBox *combobox); +Q_REQUIRED_RESULT QStringList SupportedLocales(); + +Q_REQUIRED_RESULT QString StrippedName(const QString &fullFileName); +Q_REQUIRED_RESULT QString RelativeMPath(const QString &patternPath, const QString &absoluteMPath); +Q_REQUIRED_RESULT QString AbsoluteMPath(const QString &patternPath, const QString &relativeMPath); + +Q_REQUIRED_RESULT QSharedPointer PreparePrinter(const QPrinterInfo &info, + QPrinter::PrinterMode mode = QPrinter::ScreenResolution); + +QMarginsF GetMinPrinterFields(const QSharedPointer &printer); +QMarginsF GetPrinterFields(const QSharedPointer &printer); + +Q_REQUIRED_RESULT QPixmap darkenPixmap(const QPixmap &pixmap); + +void ShowInGraphicalShell(const QString &filePath); + +constexpr qreal accuracyPointOnLine = (0.1555/*mm*/ / 25.4) * 96.0; + +Q_REQUIRED_RESULT static inline bool VFuzzyComparePoints(const QPointF &p1, const QPointF &p2, + qreal accuracy = accuracyPointOnLine); + +static inline bool VFuzzyComparePoints(const QPointF &p1, const QPointF &p2, qreal accuracy) +{ + return QLineF(p1, p2).length() <= accuracy; +} + +Q_REQUIRED_RESULT static inline bool VFuzzyComparePossibleNulls(double p1, double p2); +static inline bool VFuzzyComparePossibleNulls(double p1, double p2) +{ + if(qFuzzyIsNull(p1)) + { + return qFuzzyIsNull(p2); + } + else if(qFuzzyIsNull(p2)) + { + return false; + } + else + { + return qFuzzyCompare(p1, p2); + } +} + +/** + * @brief The CustomSA struct contains record about custom seam allowanse (SA). + */ +struct CustomSARecord +{ + CustomSARecord() + : startPoint(0), + path(0), + endPoint(0), + reverse(false), + includeType(PiecePathIncludeType::AsCustomSA) + {} + + quint32 startPoint; + quint32 path; + quint32 endPoint; + bool reverse; + PiecePathIncludeType includeType; +}; + +Q_DECLARE_METATYPE(CustomSARecord) +Q_DECLARE_TYPEINFO(CustomSARecord, Q_MOVABLE_TYPE); + +/**************************************************************************** +** This file is derived from code bearing the following notice: +** The sole author of this file, Adam Higerd, has explicitly disclaimed all +** copyright interest and protection for the content within. This file has +** been placed in the public domain according to United States copyright +** statute and case law. In jurisdictions where this public domain dedication +** is not legally recognized, anyone who receives a copy of this file is +** permitted to use, modify, duplicate, and redistribute this file, in whole +** or in part, with no restrictions or conditions. In these jurisdictions, +** this file shall be copyright (C) 2006-2008 by Adam Higerd. +****************************************************************************/ + +#define QXT_DECLARE_PRIVATE(PUB) friend class PUB##Private; QxtPrivateInterface qxt_d; +#define QXT_DECLARE_PUBLIC(PUB) friend class PUB; +#define QXT_INIT_PRIVATE(PUB) qxt_d.setPublic(this); +#define QXT_D(PUB) PUB##Private& d = qxt_d() +#define QXT_P(PUB) PUB& p = qxt_p() + +template +class QxtPrivate +{ +public: + QxtPrivate(): qxt_p_ptr(nullptr) + {} + virtual ~QxtPrivate() + {} + inline void QXT_setPublic(PUB* pub) + { + qxt_p_ptr = pub; + } + +protected: + inline PUB& qxt_p() + { + return *qxt_p_ptr; + } + inline const PUB& qxt_p() const + { + return *qxt_p_ptr; + } + inline PUB* qxt_ptr() + { + return qxt_p_ptr; + } + inline const PUB* qxt_ptr() const + { + return qxt_p_ptr; + } + +private: + Q_DISABLE_COPY(QxtPrivate) + PUB* qxt_p_ptr; +}; + +template +class QxtPrivateInterface +{ + friend class QxtPrivate; +public: + QxtPrivateInterface() : pvt(new PVT) + {} + ~QxtPrivateInterface() + { + delete pvt; + } + + inline void setPublic(PUB* pub) + { + pvt->QXT_setPublic(pub); + } + inline PVT& operator()() + { + return *static_cast(pvt); + } + inline const PVT& operator()() const + { + return *static_cast(pvt); + } + inline PVT * operator->() + { + return static_cast(pvt); + } + inline const PVT * operator->() const + { + return static_cast(pvt); + } +private: + Q_DISABLE_COPY(QxtPrivateInterface) + QxtPrivate* pvt; +}; + +/* + Convert to a QSet +*/ +//--------------------------------------------------------------------------------------------------------------------- +template class C> +inline QSet convertToSet(const C &list) +{ + return QSet(list.begin(), list.end()); +} + +/* + Convert to a QSet +*/ +//--------------------------------------------------------------------------------------------------------------------- +template +inline QSet convertToSet(const C &list) +{ + return QSet(list.begin(), list.end()); +} + +/* + Convert to a QList +*/ +//--------------------------------------------------------------------------------------------------------------------- +template class C> +inline QList convertToList(const C &set) +{ + return QList(set.begin(), set.end()); +} +#endif // DEF_H diff --git a/src/libs/vmisc/share/resources/icon.qrc b/src/libs/vmisc/share/resources/icon.qrc index 78643eb16304..5e82da5462df 100644 --- a/src/libs/vmisc/share/resources/icon.qrc +++ b/src/libs/vmisc/share/resources/icon.qrc @@ -100,11 +100,27 @@ icon/32x32/wireframe@2x.png icon/32x32/find.png icon/32x32/calculator.png + icon/32x32/alignment.png + icon/32x32/lock_hover.png + icon/32x32/lock_off.png + icon/32x32/lock_on.png + icon/32x32/visible_hover.png + icon/32x32/visible_off.png + icon/32x32/visible_on.png + icon/32x32/horizontal_arrow.png + icon/32x32/vertical_arrow.png + icon/32x32/trashcan.png + icon/32x32/units_cm_hover.png + icon/32x32/units_cm_on.png + icon/32x32/units_in_hover.png + icon/32x32/units_in_on.png + icon/32x32/units_px_hover.png + icon/32x32/units_px_on.png + icon/32x32/pattern_label.png + icon/32x32/piece_label.png icon/32x32/seam_allowance.png icon/32x32/seam_allowance@2x.png icon/32x32/anchor_point@2x.png - icon/32x32/pattern_label.png - icon/32x32/piece_label.png icon/2d_shortcuts.png icon/logos/seamly_logo_32.png icon/32x32/clipboard_icon.png @@ -136,8 +152,6 @@ icon/64x64/rotation.png icon/32x32/add.png icon/32x32/remove.png - icon/32x32/visible_off.png - icon/32x32/visible_on.png icon/32x32/individual_size_file.png icon/32x32/multisize_size_file.png icon/32x32/seamly2d_file.png @@ -149,5 +163,9 @@ icon/body_scan.png icon/32x32/invert_selection.png icon/logos/seamly2d_vertical.png + icon/32x32/add_image.png + icon/32x32/add_image@2x.png + icon/32x32/units_mm_hover.png + icon/32x32/units_mm_on.png diff --git a/src/libs/vmisc/share/resources/icon/32x32/add_image.png b/src/libs/vmisc/share/resources/icon/32x32/add_image.png new file mode 100644 index 000000000000..a9ed26dbe257 Binary files /dev/null and b/src/libs/vmisc/share/resources/icon/32x32/add_image.png differ diff --git a/src/libs/vmisc/share/resources/icon/32x32/add_image@2x.png b/src/libs/vmisc/share/resources/icon/32x32/add_image@2x.png new file mode 100644 index 000000000000..d2e99371be98 Binary files /dev/null and b/src/libs/vmisc/share/resources/icon/32x32/add_image@2x.png differ diff --git a/src/libs/vmisc/share/resources/icon/32x32/alignment.png b/src/libs/vmisc/share/resources/icon/32x32/alignment.png new file mode 100644 index 000000000000..2999a105dac2 Binary files /dev/null and b/src/libs/vmisc/share/resources/icon/32x32/alignment.png differ diff --git a/src/libs/vmisc/share/resources/icon/32x32/horizontal_arrow.png b/src/libs/vmisc/share/resources/icon/32x32/horizontal_arrow.png new file mode 100644 index 000000000000..0411ec8f065a Binary files /dev/null and b/src/libs/vmisc/share/resources/icon/32x32/horizontal_arrow.png differ diff --git a/src/libs/vmisc/share/resources/icon/32x32/lock_hover.png b/src/libs/vmisc/share/resources/icon/32x32/lock_hover.png new file mode 100644 index 000000000000..79b2bf59c4a6 Binary files /dev/null and b/src/libs/vmisc/share/resources/icon/32x32/lock_hover.png differ diff --git a/src/libs/vmisc/share/resources/icon/32x32/trashcan.png b/src/libs/vmisc/share/resources/icon/32x32/trashcan.png new file mode 100644 index 000000000000..0e7d94f09c7c Binary files /dev/null and b/src/libs/vmisc/share/resources/icon/32x32/trashcan.png differ diff --git a/src/libs/vmisc/share/resources/icon/32x32/units_cm_hover.png b/src/libs/vmisc/share/resources/icon/32x32/units_cm_hover.png new file mode 100644 index 000000000000..8bd9b6bcf53a Binary files /dev/null and b/src/libs/vmisc/share/resources/icon/32x32/units_cm_hover.png differ diff --git a/src/libs/vmisc/share/resources/icon/32x32/units_cm_on.png b/src/libs/vmisc/share/resources/icon/32x32/units_cm_on.png new file mode 100644 index 000000000000..cbd93034e263 Binary files /dev/null and b/src/libs/vmisc/share/resources/icon/32x32/units_cm_on.png differ diff --git a/src/libs/vmisc/share/resources/icon/32x32/units_in_hover.png b/src/libs/vmisc/share/resources/icon/32x32/units_in_hover.png new file mode 100644 index 000000000000..44492573160f Binary files /dev/null and b/src/libs/vmisc/share/resources/icon/32x32/units_in_hover.png differ diff --git a/src/libs/vmisc/share/resources/icon/32x32/units_in_on.png b/src/libs/vmisc/share/resources/icon/32x32/units_in_on.png new file mode 100644 index 000000000000..885ea2bbd758 Binary files /dev/null and b/src/libs/vmisc/share/resources/icon/32x32/units_in_on.png differ diff --git a/src/libs/vmisc/share/resources/icon/32x32/units_mm_hover.png b/src/libs/vmisc/share/resources/icon/32x32/units_mm_hover.png new file mode 100644 index 000000000000..b16849f8f071 Binary files /dev/null and b/src/libs/vmisc/share/resources/icon/32x32/units_mm_hover.png differ diff --git a/src/libs/vmisc/share/resources/icon/32x32/units_mm_on.png b/src/libs/vmisc/share/resources/icon/32x32/units_mm_on.png new file mode 100644 index 000000000000..edf4e92544ba Binary files /dev/null and b/src/libs/vmisc/share/resources/icon/32x32/units_mm_on.png differ diff --git a/src/libs/vmisc/share/resources/icon/32x32/units_px_hover.png b/src/libs/vmisc/share/resources/icon/32x32/units_px_hover.png new file mode 100644 index 000000000000..6923343b6a26 Binary files /dev/null and b/src/libs/vmisc/share/resources/icon/32x32/units_px_hover.png differ diff --git a/src/libs/vmisc/share/resources/icon/32x32/units_px_on.png b/src/libs/vmisc/share/resources/icon/32x32/units_px_on.png new file mode 100644 index 000000000000..f52ae1157f44 Binary files /dev/null and b/src/libs/vmisc/share/resources/icon/32x32/units_px_on.png differ diff --git a/src/libs/vmisc/share/resources/icon/32x32/vertical_arrow.png b/src/libs/vmisc/share/resources/icon/32x32/vertical_arrow.png new file mode 100644 index 000000000000..7a30168a7f0a Binary files /dev/null and b/src/libs/vmisc/share/resources/icon/32x32/vertical_arrow.png differ diff --git a/src/libs/vmisc/share/resources/icon/32x32/visible_hover.png b/src/libs/vmisc/share/resources/icon/32x32/visible_hover.png new file mode 100644 index 000000000000..918b7a41a51d Binary files /dev/null and b/src/libs/vmisc/share/resources/icon/32x32/visible_hover.png differ diff --git a/src/libs/vmisc/share/resources/icon/svg/trashcan.svg b/src/libs/vmisc/share/resources/icon/svg/trashcan.svg new file mode 100644 index 000000000000..cb81a1404fd5 --- /dev/null +++ b/src/libs/vmisc/share/resources/icon/svg/trashcan.svg @@ -0,0 +1,89 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/src/libs/vmisc/share/resources/icon/svg/units_cm_hovered.svg b/src/libs/vmisc/share/resources/icon/svg/units_cm_hovered.svg new file mode 100644 index 000000000000..b18c646aa80c --- /dev/null +++ b/src/libs/vmisc/share/resources/icon/svg/units_cm_hovered.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + CM + diff --git a/src/libs/vmisc/share/resources/icon/svg/units_cm_on.svg b/src/libs/vmisc/share/resources/icon/svg/units_cm_on.svg new file mode 100644 index 000000000000..f39cc83b7355 --- /dev/null +++ b/src/libs/vmisc/share/resources/icon/svg/units_cm_on.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + CM + diff --git a/src/libs/vmisc/share/resources/icon/svg/units_generic_grey.svg b/src/libs/vmisc/share/resources/icon/svg/units_generic_grey.svg new file mode 100644 index 000000000000..5d58c862a212 --- /dev/null +++ b/src/libs/vmisc/share/resources/icon/svg/units_generic_grey.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/libs/vmisc/share/resources/icon/svg/units_generic_hovered.svg b/src/libs/vmisc/share/resources/icon/svg/units_generic_hovered.svg new file mode 100644 index 000000000000..250a9771693b --- /dev/null +++ b/src/libs/vmisc/share/resources/icon/svg/units_generic_hovered.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/libs/vmisc/share/resources/icon/svg/units_in_hovered.svg b/src/libs/vmisc/share/resources/icon/svg/units_in_hovered.svg new file mode 100644 index 000000000000..8ac4f2591868 --- /dev/null +++ b/src/libs/vmisc/share/resources/icon/svg/units_in_hovered.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + IN + diff --git a/src/libs/vmisc/share/resources/icon/svg/units_in_on.svg b/src/libs/vmisc/share/resources/icon/svg/units_in_on.svg new file mode 100644 index 000000000000..b86132b6b8c3 --- /dev/null +++ b/src/libs/vmisc/share/resources/icon/svg/units_in_on.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + IN + diff --git a/src/libs/vmisc/share/resources/icon/svg/units_mm_hovered.svg b/src/libs/vmisc/share/resources/icon/svg/units_mm_hovered.svg new file mode 100644 index 000000000000..4ce3c1ea301e --- /dev/null +++ b/src/libs/vmisc/share/resources/icon/svg/units_mm_hovered.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + MM + diff --git a/src/libs/vmisc/share/resources/icon/svg/units_mm_on.svg b/src/libs/vmisc/share/resources/icon/svg/units_mm_on.svg new file mode 100644 index 000000000000..9302ab9d09e5 --- /dev/null +++ b/src/libs/vmisc/share/resources/icon/svg/units_mm_on.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + MM + diff --git a/src/libs/vmisc/share/resources/icon/svg/units_px_hovered.svg b/src/libs/vmisc/share/resources/icon/svg/units_px_hovered.svg new file mode 100644 index 000000000000..b3d0af09a999 --- /dev/null +++ b/src/libs/vmisc/share/resources/icon/svg/units_px_hovered.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + PX + diff --git a/src/libs/vmisc/share/resources/icon/svg/units_px_on.svg b/src/libs/vmisc/share/resources/icon/svg/units_px_on.svg new file mode 100644 index 000000000000..b3d396935510 --- /dev/null +++ b/src/libs/vmisc/share/resources/icon/svg/units_px_on.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + PX + diff --git a/src/libs/vmisc/vcommonsettings.cpp b/src/libs/vmisc/vcommonsettings.cpp index 12df38f4dc58..f8d19024b32e 100644 --- a/src/libs/vmisc/vcommonsettings.cpp +++ b/src/libs/vmisc/vcommonsettings.cpp @@ -73,6 +73,7 @@ namespace { +const QString settingImagesPath = QStringLiteral("paths/images"); const QString settingPathsIndividualMeasurements = QStringLiteral("paths/individual_size_measurements"); const QString settingPathsMultisizeMeasurements = QStringLiteral("paths/multi_size_measurements"); const QString settingPathsTemplates = QStringLiteral("paths/templates"); @@ -492,7 +493,7 @@ void VCommonSettings::setBodyScansPath(const QString &value) //--------------------------------------------------------------------------------------------------------------------- QString VCommonSettings::getDefaultLabelTemplatePath() { - return QDir::homePath() + QLatin1String("/seamly2d/") + tr("label templates"); + return QDir::homePath() + QLatin1String("/seamly2d/") + tr("images"); } //--------------------------------------------------------------------------------------------------------------------- @@ -507,6 +508,24 @@ void VCommonSettings::SetPathLabelTemplate(const QString &text) setValue(settingPathsLabelTemplate, text); } +//--------------------------------------------------------------------------------------------------------------------- +QString VCommonSettings::getDefaultImageFilePath() +{ + return QDir::homePath() + QLatin1String("/seamly2d/") + tr("label templates"); +} + +//--------------------------------------------------------------------------------------------------------------------- +QString VCommonSettings::getImageFilePath() const +{ + return value(settingImagesPath, getDefaultImageFilePath()).toString(); +} + +//--------------------------------------------------------------------------------------------------------------------- +void VCommonSettings::setImageFilePath(const QString &text) +{ + setValue(settingImagesPath, text); +} + //--------------------------------------------------------------------------------------------------------------------- QString VCommonSettings::getDefaultPatternTemplate() const { diff --git a/src/libs/vmisc/vcommonsettings.h b/src/libs/vmisc/vcommonsettings.h index f40ba73ea24e..8ca94f4540d9 100644 --- a/src/libs/vmisc/vcommonsettings.h +++ b/src/libs/vmisc/vcommonsettings.h @@ -101,6 +101,10 @@ class VCommonSettings : public QSettings QString getLabelTemplatePath() const; void SetPathLabelTemplate(const QString &value); + static QString getDefaultImageFilePath(); + QString getImageFilePath() const; + void setImageFilePath(const QString &value); + QString getDefaultPatternTemplate() const; void setDefaultPatternTemplate(const QString &text); diff --git a/src/libs/vmisc/vlockguard.h b/src/libs/vmisc/vlockguard.h index b3772187d9ba..2253e7cd8dbd 100644 --- a/src/libs/vmisc/vlockguard.h +++ b/src/libs/vmisc/vlockguard.h @@ -170,7 +170,7 @@ bool VLockGuard::TryLock(const QString &lockName, int stale, int timeou { bool res = true; - lockFile = lockName + QLatin1String(".lock"); + lockFile = lockName + QLatin1String(".locked"); #if defined(Q_OS_UNIX) QFileInfo info(lockFile); lockFile = info.absolutePath() + QLatin1String("/.") + info.fileName(); diff --git a/src/libs/vtools/tools/drawTools/vtoolline.cpp b/src/libs/vtools/tools/drawTools/vtoolline.cpp index a573c4fdeafa..8b7b8d83f474 100644 --- a/src/libs/vtools/tools/drawTools/vtoolline.cpp +++ b/src/libs/vtools/tools/drawTools/vtoolline.cpp @@ -104,7 +104,6 @@ VToolLine::VToolLine(VAbstractPattern *doc, VContainer *data, quint32 id, quint3 this->m_lineWeight = lineWeight; //Line RefreshGeometry(); - this->setFlag(QGraphicsItem::ItemStacksBehindParent, true); this->setFlag(QGraphicsItem::ItemIsFocusable, true);// For keyboard input focus this->setAcceptHoverEvents(true); diff --git a/src/libs/vtools/vtools.pri b/src/libs/vtools/vtools.pri index 464204b7384f..8b8e3cf9e5bd 100644 --- a/src/libs/vtools/vtools.pri +++ b/src/libs/vtools/vtools.pri @@ -4,10 +4,9 @@ include(visualization/visualization.pri) include(undocommands/undocommands.pri) # ADD TO EACH PATH $$PWD VARIABLE!!!!!! -# This need for corect working file translations.pro +# This need for correct working file translations.pro HEADERS += \ $$PWD/stable.h *msvc*:SOURCES += $$PWD/stable.cpp - diff --git a/src/libs/vwidgets/resize_handle.cpp b/src/libs/vwidgets/resize_handle.cpp new file mode 100644 index 000000000000..43353f96ff78 --- /dev/null +++ b/src/libs/vwidgets/resize_handle.cpp @@ -0,0 +1,732 @@ +/****************************************************************************** + ** @file resize_handle.cpp + ** @author DS Caskey + ** @date Jul 2, 2022 + ** + ** @brief + ** @copyright + ** This source code is part of the Seamly2D project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2013-2022 Seamly2D project + ** All Rights Reserved. + ** + ** Seamly2D 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. + ** + ** Seamly2D 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 Seamly2D. If not, see . + ** + *****************************************************************************/ + +#include "resize_handle.h" + +#include "../vmisc/def.h" + +#include +#include +#include +#include +#include +#include +#include + +/** + * ResizeHandlesItem Constructor. + */ +ResizeHandlesItem::ResizeHandlesItem(QGraphicsItem *parent, qreal minDimension, qreal maxDimension) + : QGraphicsItem(parent) + , m_handleItems() + , m_parentRect() + , m_minDimension(minDimension) + , m_maxDimension(maxDimension) +{ + if (parentItem()) + { + m_parentRect = parentItem()->boundingRect(); + } + + m_handleItems.append(new HandleItem(Position::TopLeft, this)); + m_handleItems.append(new HandleItem(Position::Top, this)); + m_handleItems.append(new HandleItem(Position::TopRight, this)); + m_handleItems.append(new HandleItem(Position::Right, this)); + m_handleItems.append(new HandleItem(Position::BottomRight, this)); + m_handleItems.append(new HandleItem(Position::Bottom, this)); + m_handleItems.append(new HandleItem(Position::BottomLeft, this)); + m_handleItems.append(new HandleItem(Position::Left, this)); + + updateHandlePositions(); +} + + +/** + * @brief boundingRect get item's boundingrect. + * @return QRectF. + */ +QRectF ResizeHandlesItem::boundingRect() const +{ + //return m_parentRect; + return QRectF(0, 0, HANDLE_SIZE, HANDLE_SIZE); +} + +//------------------------------------------------------------------------------ +void ResizeHandlesItem::setParentRect(const QRectF & rect) +{ + m_parentRect = rect; + updateHandlePositions(); +} + + +//------------------------------------------------------------------------------ +void ResizeHandlesItem::setLockAspectRatio(bool lock) +{ + m_lockAspectRatio = lock; +} + +//------------------------------------------------------------------------------ +void ResizeHandlesItem::parentIsLocked(bool lock) +{ + m_parentIsLocked = lock; + qreal lock_size = qMax(m_parentRect.width(), m_parentRect.height()) / 30; + + foreach (HandleItem *handleItem, m_handleItems) + { + handleItem->setFlag(QGraphicsItem::ItemIgnoresTransformations, !lock); + handleItem->setAcceptedMouseButtons(lock ? Qt::NoButton : Qt::AllButtons); + handleItem->setRect(lock ? QRect(-lock_size / 2, -lock_size / 2, lock_size, lock_size) : QRect(-HANDLE_SIZE/2, -HANDLE_SIZE/2, HANDLE_SIZE, HANDLE_SIZE)); + } +} + + +//------------------------------------------------------------------------------ +void ResizeHandlesItem::setParentRotation(qreal rotation) +{ + m_parentRotation = rotation; +} + + +//------------------------------------------------------------------------------ +void ResizeHandlesItem::setLimitDimensions(qreal min, qreal max) +{ + m_minDimension = min; + m_maxDimension = max; +} + +/** + * @brief paint handle item painting. + * @param QPainter painter. + * @param QStyleOptionGraphicsItem option. + * @return void. + */ +void ResizeHandlesItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) +{ + Q_UNUSED(painter); + Q_UNUSED(option); + Q_UNUSED(widget); +} + +#define SET_POSITION(POS, VALUE) \ +void ResizeHandlesItem::set ## POS (VALUE value) \ +{ \ + m_parentRect.set ## POS (value); \ + updateHandlePositions(); \ +} \ + +SET_POSITION(Top, qreal) +SET_POSITION(Right, qreal) +SET_POSITION(Bottom, qreal) +SET_POSITION(Left, qreal) +SET_POSITION(TopLeft, const QPointF&) +SET_POSITION(TopRight, const QPointF&) +SET_POSITION(BottomRight, const QPointF&) +SET_POSITION(BottomLeft, const QPointF&) + +/** + * @brief updateHandlePositions update handle positions on new parent bounding rect. + * @return void. + */ +void ResizeHandlesItem::updateHandlePositions() +{ + foreach (HandleItem *item, m_handleItems) + { + item->setFlag(ItemSendsGeometryChanges, false); + + switch (item->position()) + { + case Position::TopLeft: + item->setPos(m_parentRect.topLeft()); + break; + case Position::Top: + item->setPos(m_parentRect.left() + m_parentRect.width() / 2 - 1, + m_parentRect.top()); + break; + case Position::TopRight: + item->setPos(m_parentRect.topRight()); + break; + case Position::Right: + item->setPos(m_parentRect.right(), + m_parentRect.top() + m_parentRect.height() / 2 - 1); + break; + case Position::BottomRight: + item->setPos(m_parentRect.bottomRight()); + break; + case Position::Bottom: + item->setPos(m_parentRect.left() + m_parentRect.width() / 2 - 1, + m_parentRect.bottom()); + break; + case Position::BottomLeft: + item->setPos(m_parentRect.bottomLeft()); + break; + case Position::Left: + item->setPos(m_parentRect.left(), + m_parentRect.top() + m_parentRect.height() / 2 - 1); + break; + case Position::Center: + break; + } + + item->setFlag(ItemSendsGeometryChanges, true); + } + + emit sizeChanged(m_parentRect); +} + +/** + * HandleItem Constructor. + */ +ResizeHandlesItem::HandleItem::HandleItem(Position position, ResizeHandlesItem* parent) + : QGraphicsRectItem(-HANDLE_SIZE/2, -HANDLE_SIZE/2, HANDLE_SIZE, HANDLE_SIZE, parent) + , m_parent(parent) + , m_handlePosition(position) + , m_isHovered(false) + , m_minDimension(parent->m_minDimension) + , m_maxDimension(parent->m_maxDimension) +{ + this->setBrush(QBrush(Qt::lightGray)); + this->setFlag(QGraphicsItem::ItemIsMovable, true); + this->setFlag(QGraphicsItem::ItemSendsGeometryChanges, true); + this->setFlag(QGraphicsItem::ItemIsFocusable, true); // For keyboard input focus + this->setFlag(QGraphicsItem::ItemIgnoresTransformations, !m_parent->m_parentIsLocked); + + setAcceptHoverEvents(true); +} + +/** + * @brief position get handle position on the parent boundingrect. + * @return Position + */ +Position ResizeHandlesItem::HandleItem::position() const +{ + return m_handlePosition; +} + +/** + * @brief paint handle item painting. + * @param QPainter painter. + * @param QStyleOptionGraphicsItem option. + * @return void. + */ +void ResizeHandlesItem::HandleItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) +{ + Q_UNUSED(option); + Q_UNUSED(widget); + + if (!m_parent->m_parentIsLocked) + { + painter->setPen(QPen(Qt::white, 1, Qt::SolidLine)); + painter->setBrush(m_isHovered ? QColor(Qt::red) : QColor(Qt::darkGray)); + painter->drawEllipse(boundingRect()); + } + else + { + QPixmap pixmap("://icon/32x32/lock_off.png"); + painter->drawPixmap(boundingRect().toRect(), pixmap); + } +} + +/** + * @brief itemChange handle item change. + * @param change change. + * @param value value. + * @return value. + */ +QVariant ResizeHandlesItem::HandleItem::itemChange(GraphicsItemChange change, const QVariant &value) +{ + QVariant returnValue = value; + + if (change == ItemPositionChange) + { + returnValue = limitPosition(value.toPointF()); + return returnValue; + } + else if (change == ItemPositionHasChanged) + { + QPointF pos = value.toPointF(); + + switch (m_handlePosition) + { + case Position::TopLeft: + if (QGuiApplication::keyboardModifiers() & Qt::ControlModifier) + { + qreal xdiff = m_parent->m_parentRect.left() - pos.x(); + qreal ydiff = m_parent->m_parentRect.top() - pos.y(); + + if (m_parent->m_lockAspectRatio || QGuiApplication::keyboardModifiers() & Qt::ShiftModifier) + { + xdiff = ((m_parent->m_parentRect.bottom() + ydiff - pos.y()) * m_scalingFactor - m_parent->m_parentRect.width()) / 2; + pos.setX(m_parent->m_parentRect.left() - xdiff); + } + + m_parent->setBottom(m_parent->m_parentRect.bottom() + ydiff); + m_parent->setRight(m_parent->m_parentRect.right() + xdiff); + } + else if (m_parent->m_lockAspectRatio || QGuiApplication::keyboardModifiers() & Qt::ShiftModifier) + { + pos.setX(m_parent->m_parentRect.right() - (m_parent->m_parentRect.bottom() - pos.y()) * m_scalingFactor); + } + + m_parent->setTopLeft(pos); + + break; + + case Position::Top: + if (QGuiApplication::keyboardModifiers() & Qt::ControlModifier) + { + qreal ydiff = m_parent->m_parentRect.top() - pos.y(); + + if (m_parent->m_lockAspectRatio || QGuiApplication::keyboardModifiers() & Qt::ShiftModifier) + { + qreal xdiff = ((m_parent->m_parentRect.bottom() + ydiff - pos.y()) * m_scalingFactor - m_parent->m_parentRect.width()) / 2; + m_parent->setRight(m_parent->m_parentRect.right() + xdiff); + m_parent->setLeft(m_parent->m_parentRect.left() - xdiff); + } + + m_parent->setBottom(m_parent->m_parentRect.bottom() + ydiff); + } + else if (m_parent->m_lockAspectRatio || QGuiApplication::keyboardModifiers() & Qt::ShiftModifier) + { + pos.setX(m_parent->m_parentRect.left() + (m_parent->m_parentRect.bottom() - pos.y()) * m_scalingFactor); + m_parent->setRight(pos.x()); + } + + m_parent->setTop(pos.y()); + + break; + + case Position::TopRight: + if (QGuiApplication::keyboardModifiers() & Qt::ControlModifier) + { + qreal xdiff = pos.x() - m_parent->m_parentRect.right(); + qreal ydiff = m_parent->m_parentRect.top() - pos.y(); + + if (m_parent->m_lockAspectRatio || QGuiApplication::keyboardModifiers() & Qt::ShiftModifier) + { + xdiff = ((m_parent->m_parentRect.bottom() + ydiff - pos.y()) * m_scalingFactor - m_parent->m_parentRect.width()) / 2; + pos.setX(m_parent->m_parentRect.right() + xdiff); + } + + m_parent->setBottom(m_parent->m_parentRect.bottom() + ydiff); + m_parent->setLeft(m_parent->m_parentRect.left() - xdiff); + } + else if (m_parent->m_lockAspectRatio || QGuiApplication::keyboardModifiers() & Qt::ShiftModifier) + { + pos.setX(m_parent->m_parentRect.left() + (m_parent->m_parentRect.bottom() - pos.y()) * m_scalingFactor); + } + + m_parent->setTopRight(pos); + + break; + + case Position::Right: + if (QGuiApplication::keyboardModifiers() & Qt::ControlModifier) + { + qreal xdiff = pos.x() - m_parent->m_parentRect.right(); + + if (m_parent->m_lockAspectRatio || QGuiApplication::keyboardModifiers() & Qt::ShiftModifier) + { + qreal ydiff = ((pos.x() - m_parent->m_parentRect.left() + xdiff) / m_scalingFactor - m_parent->m_parentRect.height()) / 2; + m_parent->setBottom(m_parent->m_parentRect.bottom() + ydiff); + m_parent->setTop(m_parent->m_parentRect.top() - ydiff); + } + + m_parent->setLeft(m_parent->m_parentRect.left() - xdiff); + } + else if (m_parent->m_lockAspectRatio || QGuiApplication::keyboardModifiers() & Qt::ShiftModifier) + { + pos.setY(m_parent->m_parentRect.top() + (pos.x() - m_parent->m_parentRect.left()) / m_scalingFactor); + m_parent->setBottom(pos.y()); + } + + m_parent->setRight(pos.x()); + + break; + + case Position::BottomRight: + if (QGuiApplication::keyboardModifiers() & Qt::ControlModifier) + { + qreal xdiff = pos.x() - m_parent->m_parentRect.right(); + qreal ydiff = pos.y() - m_parent->m_parentRect.bottom(); + + if (m_parent->m_lockAspectRatio || QGuiApplication::keyboardModifiers() & Qt::ShiftModifier) + { + xdiff = ((pos.y() - m_parent->m_parentRect.top() + ydiff) * m_scalingFactor - m_parent->m_parentRect.width()) / 2; + pos.setX(m_parent->m_parentRect.right() + xdiff); + } + + m_parent->setTop(m_parent->m_parentRect.top() - ydiff); + m_parent->setLeft(m_parent->m_parentRect.left() - xdiff); + } + else if (m_parent->m_lockAspectRatio || QGuiApplication::keyboardModifiers() & Qt::ShiftModifier) + { + pos.setX(m_parent->m_parentRect.left() + (pos.y() - m_parent->m_parentRect.top()) * m_scalingFactor); + } + + m_parent->setBottomRight(pos); + + break; + + case Position::Bottom: + if (QGuiApplication::keyboardModifiers() & Qt::ControlModifier) + { + qreal ydiff = pos.y() - m_parent->m_parentRect.bottom(); + + if (m_parent->m_lockAspectRatio || QGuiApplication::keyboardModifiers() & Qt::ShiftModifier) + { + qreal xdiff = ((pos.y() - m_parent->m_parentRect.top() + ydiff) * m_scalingFactor - m_parent->m_parentRect.width()) / 2; + m_parent->setRight(m_parent->m_parentRect.right() + xdiff); + m_parent->setLeft(m_parent->m_parentRect.left() - xdiff); + } + + m_parent->setTop(m_parent->m_parentRect.top() - ydiff); + } + else if (m_parent->m_lockAspectRatio || QGuiApplication::keyboardModifiers() & Qt::ShiftModifier) + { + pos.setX(m_parent->m_parentRect.left() + (pos.y() - m_parent->m_parentRect.top()) * m_scalingFactor); + m_parent->setRight(pos.x()); + } + + m_parent->setBottom(pos.y()); + + break; + + case Position::BottomLeft: + if (QGuiApplication::keyboardModifiers() & Qt::ControlModifier) + { + qreal xdiff = m_parent->m_parentRect.left() - pos.x(); + qreal ydiff = pos.y() - m_parent->m_parentRect.bottom(); + + if (m_parent->m_lockAspectRatio || QGuiApplication::keyboardModifiers() & Qt::ShiftModifier) + { + xdiff = ((pos.y() - m_parent->m_parentRect.top() + ydiff) * m_scalingFactor - m_parent->m_parentRect.width()) / 2; + pos.setX(m_parent->m_parentRect.left() - xdiff); + } + + m_parent->setTop(m_parent->m_parentRect.top() - ydiff); + m_parent->setRight(m_parent->m_parentRect.right() + xdiff); + } + else if (m_parent->m_lockAspectRatio || QGuiApplication::keyboardModifiers() & Qt::ShiftModifier) + { + pos.setX(m_parent->m_parentRect.right() - (pos.y() - m_parent->m_parentRect.top()) * m_scalingFactor); + } + + m_parent->setBottomLeft(pos); + + break; + + case Position::Left: + if (QGuiApplication::keyboardModifiers() & Qt::ControlModifier) + { + qreal xdiff = m_parent->m_parentRect.left() - pos.x(); + + if (m_parent->m_lockAspectRatio || QGuiApplication::keyboardModifiers() & Qt::ShiftModifier) + { + qreal ydiff = ((m_parent->m_parentRect.right() + xdiff - pos.x()) / m_scalingFactor - m_parent->m_parentRect.height()) / 2; + m_parent->setBottom(m_parent->m_parentRect.bottom() + ydiff); + m_parent->setTop(m_parent->m_parentRect.top() - ydiff); + } + + m_parent->setRight(m_parent->m_parentRect.right() + xdiff); + } + else if (m_parent->m_lockAspectRatio || QGuiApplication::keyboardModifiers() & Qt::ShiftModifier) + { + pos.setY(m_parent->m_parentRect.top() + (m_parent->m_parentRect.right() - pos.x()) / m_scalingFactor); + m_parent->setBottom(pos.y()); + } + + m_parent->setLeft(pos.x()); + + break; + + case Position::Center: + break; + } + } + return QGraphicsItem::itemChange(change, value); +} + +/** + * @brief limitPosition limits the bounds of the minimum size of the bounding rect. + * @param QPointF newPos new position. + * @return QPointF limited new position. + */ +QPointF ResizeHandlesItem::HandleItem::limitPosition(const QPointF& newPos) +{ + QPointF point = pos(); + if (m_handlePosition == Position::TopLeft || + m_handlePosition == Position::BottomRight || + m_handlePosition == Position::TopRight || + m_handlePosition == Position::BottomLeft) + { + point.setX(newPos.x()); + point.setY(newPos.y()); + } + + if (m_handlePosition == Position::Top || m_handlePosition == Position::Bottom) + { + point.setY(newPos.y()); + } + + if (m_handlePosition == Position::Left || m_handlePosition == Position::Right) + { + point.setX(newPos.x()); + } + + bool isMovingTop = m_handlePosition == Position::Top || + m_handlePosition == Position::TopLeft || + m_handlePosition == Position::TopRight; + bool isMovingBottom = m_handlePosition == Position::Bottom || + m_handlePosition == Position::BottomLeft || + m_handlePosition == Position::BottomRight; + bool isMovingLeft = m_handlePosition == Position::Left || + m_handlePosition == Position::TopLeft || + m_handlePosition == Position::BottomLeft; + bool isMovingRight = m_handlePosition == Position::Right || + m_handlePosition == Position::TopRight || + m_handlePosition == Position::BottomRight; + + qreal height; + qreal width; + + if (isMovingTop) + { + height = m_parent->m_parentRect.bottom() - point.y(); + + if (height < m_minDimension) + { + point.setY(m_parent->m_parentRect.bottom() - m_minDimension); + } + else if (height > m_maxDimension) + { + point.setY(m_parent->m_parentRect.bottom() - m_maxDimension); + } + + if (m_parent->m_lockAspectRatio && m_scalingFactor < 1 && height * m_scalingFactor < m_minDimension) + { + point.setY(m_parent->m_parentRect.bottom() - m_minDimension / m_scalingFactor); + } + else if (m_parent->m_lockAspectRatio && m_scalingFactor > 1 && height * m_scalingFactor > m_maxDimension) + { + point.setY(m_parent->m_parentRect.bottom() - m_maxDimension / m_scalingFactor); + } + } + else if (isMovingBottom) + { + height = point.y() - m_parent->m_parentRect.top(); + + if (height < m_minDimension) + { + point.setY(m_parent->m_parentRect.top() + m_minDimension); + } + else if (height > m_maxDimension) + { + point.setY(m_parent->m_parentRect.top() + m_maxDimension); + } + + if (m_parent->m_lockAspectRatio && m_scalingFactor < 1 && height * m_scalingFactor < m_minDimension) + { + point.setY(m_parent->m_parentRect.top() + m_minDimension / m_scalingFactor); + } + else if (m_parent->m_lockAspectRatio && m_scalingFactor > 1 && height * m_scalingFactor > m_maxDimension) + { + point.setY(m_parent->m_parentRect.top() + m_maxDimension / m_scalingFactor); + } + } + + if (isMovingLeft) + { + width = m_parent->m_parentRect.right() - point.x(); + + if (width < m_minDimension) + { + point.setX(m_parent->m_parentRect.right() - m_minDimension); + } + else if (width > m_maxDimension) + { + point.setX(m_parent->m_parentRect.right() - m_maxDimension); + } + + if (m_parent->m_lockAspectRatio && m_scalingFactor > 1 && width / m_scalingFactor < m_minDimension) + { + point.setX(m_parent->m_parentRect.right() - m_minDimension * m_scalingFactor); + } + else if (m_parent->m_lockAspectRatio && m_scalingFactor < 1 && width / m_scalingFactor > m_maxDimension) + { + point.setX(m_parent->m_parentRect.right() - m_maxDimension * m_scalingFactor); + } + } + else if (isMovingRight) + { + width = point.x() - m_parent->m_parentRect.left(); + + if (width < m_minDimension) + { + point.setX(m_parent->m_parentRect.left() + m_minDimension); + } + else if (width > m_maxDimension) + { + point.setX(m_parent->m_parentRect.left() + m_maxDimension); + } + + if (m_parent->m_lockAspectRatio && m_scalingFactor > 1 && width / m_scalingFactor < m_minDimension) + { + point.setX(m_parent->m_parentRect.left() + m_minDimension * m_scalingFactor); + } + else if (m_parent->m_lockAspectRatio && m_scalingFactor < 1 && width / m_scalingFactor > m_maxDimension) + { + point.setX(m_parent->m_parentRect.left() + m_maxDimension * m_scalingFactor); + } + } + + return point; +} + +//--------------------------------------------------------------------------------------------------------------------- +/** + * @brief hoverEnterEvent handle hover enter events. + * @param event hover enter event. + */ +void ResizeHandlesItem::HandleItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event) +{ + m_isHovered = true; + + if (!m_parent->m_parentIsLocked) + { + QPixmap pixmap(cursorResizeArrow); + QTransform transform; + transform.rotate(m_parent->m_parentRotation + (static_cast(m_handlePosition) - 1) * 45); + pixmap = pixmap.transformed(transform); + QPointF offset = pixmap.rect().center(); + setCursor(QCursor(pixmap, offset.x(), offset.y())); + + QString message; + if(m_parent->m_lockAspectRatio) + { + message = tr("Press CTRL to scale around the center - Aspect ratio locked "); + } + else + { + message = tr("Press CTRL to scale around the center," + " SHIFT to scale uniformly."); + } + + emit m_parent->setStatusMessage(message); + } + + QGraphicsItem::hoverEnterEvent(event); +} + +//--------------------------------------------------------------------------------------------------------------------- +/** + * @brief hoverLeaveEvent handle hover leave events. + * @param event hover leave event. + */ +void ResizeHandlesItem::HandleItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) +{ + m_isHovered = false; + + if (!m_parent->m_parentIsLocked) + { + setCursor(QCursor(Qt::ArrowCursor)); + emit m_parent->setStatusMessage(""); + } + + QGraphicsItem::hoverLeaveEvent(event); +} + +//--------------------------------------------------------------------------------------------------------------------- +/** + * @brief mousePressEvent handle mouse press events. + * @param event mouse press event. + */ +//--------------------------------------------------------------------------------------------------------------------- +void ResizeHandlesItem::HandleItem::mousePressEvent(QGraphicsSceneMouseEvent *event) +{ + if (m_parent->m_parentIsLocked) + { + return; + } + + m_scalingFactor = m_parent->m_parentRect.width() / m_parent->m_parentRect.height(); + + QGraphicsItem::mousePressEvent(event); +} + +//--------------------------------------------------------------------------------------------------------------------- +/** + * @brief mouseMoveEvent handle mouse move events. + * @param event mouse move event. + */ +//--------------------------------------------------------------------------------------------------------------------- +void ResizeHandlesItem::HandleItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) +{ + if (m_parent->m_parentIsLocked) + { + return; + } + + QGraphicsItem::mouseMoveEvent(event); +} + + +//--------------------------------------------------------------------------------------------------------------------- +/** + * @brief mouseReleaseEvent handle mouse release events. + * @param event mouse release event. + */ +//--------------------------------------------------------------------------------------------------------------------- +void ResizeHandlesItem::HandleItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) +{ + if (m_parent->m_parentIsLocked) + { + return; + } + + if (event->button() == Qt::LeftButton && event->type() != QEvent::GraphicsSceneMouseDoubleClick) + { + } + //emit handleSelected(m_handlePosition, false); + + QGraphicsItem::mouseReleaseEvent(event); +} + +//--------------------------------------------------------------------------------------------------------------------- +/** + * @brief keyReleaseEvent handle key release events. + * @param event key release event. + */ +//--------------------------------------------------------------------------------------------------------------------- +void ResizeHandlesItem::HandleItem::keyReleaseEvent(QKeyEvent *event) +{ + if (m_parent->m_parentIsLocked) + { + return; + } + + QGraphicsItem::keyReleaseEvent(event); +} diff --git a/src/libs/vwidgets/resize_handle.h b/src/libs/vwidgets/resize_handle.h new file mode 100644 index 000000000000..be3c90671982 --- /dev/null +++ b/src/libs/vwidgets/resize_handle.h @@ -0,0 +1,116 @@ +/****************************************************************************** + ** @file resize_handle.h + ** @author DS Caskey + ** @date Jul 2, 2022 + ** + ** @brief + ** @copyright + ** This source code is part of the Seamly2D project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2013-2022 Seamly2D project + ** All Rights Reserved. + ** + ** Seamly2D 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. + ** + ** Seamly2D 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 Seamly2D. If not, see . + ** + *****************************************************************************/ + +#ifndef RESIZE_HANDLE_H +#define RESIZE_HANDLE_H + +#include "../vmisc/def.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +class ResizeHandlesItem : public QObject, public QGraphicsItem +{ + Q_OBJECT + Q_INTERFACES(QGraphicsItem) + +private: + class HandleItem : public QGraphicsRectItem + { + public: + HandleItem(Position position, ResizeHandlesItem *parent); + Position position() const; + + protected: + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override; + + virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value) Q_DECL_OVERRIDE; + virtual void hoverEnterEvent (QGraphicsSceneHoverEvent *event) Q_DECL_OVERRIDE; + virtual void hoverLeaveEvent (QGraphicsSceneHoverEvent *event) Q_DECL_OVERRIDE; + virtual void mousePressEvent(QGraphicsSceneMouseEvent *event) Q_DECL_OVERRIDE; + virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event) Q_DECL_OVERRIDE; + virtual void mouseReleaseEvent (QGraphicsSceneMouseEvent *event) Q_DECL_OVERRIDE; + virtual void keyReleaseEvent (QKeyEvent *event) Q_DECL_OVERRIDE; + + private: + QPointF limitPosition(const QPointF &newPos); + + ResizeHandlesItem *m_parent; + Position m_handlePosition; + bool m_isHovered; + qreal m_scalingFactor; + qreal m_minDimension; + qreal m_maxDimension; + }; + +public: + explicit ResizeHandlesItem(QGraphicsItem *parent = nullptr, qreal minDimension = 16, qreal maxDimension = 16000); + virtual ~ResizeHandlesItem() = default; + + virtual int type() const Q_DECL_OVERRIDE {return Type;} + enum {Type = UserType + static_cast(Vis::ResizeHandlesItem)}; + + QRectF boundingRect() const override; + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override; + void setTopLeft(const QPointF &pos); + void setTop(qreal y); + void setTopRight(const QPointF &pos); + void setRight(qreal x); + void setBottomRight(const QPointF &pos); + void setBottom(qreal y); + void setBottomLeft(const QPointF &pos); + void setLeft(qreal x); + void setParentRect(const QRectF &rect); + void setLockAspectRatio(bool lock); + void parentIsLocked(bool lock); + void setParentRotation(qreal rotation); + void setLimitDimensions(qreal min, qreal max); + + +signals: + void sizeChanged(QRectF rect); + void setStatusMessage(QString message); + +private: + void updateHandlePositions(); + + QList m_handleItems; + QRectF m_parentRect; + bool m_lockAspectRatio; + bool m_parentIsLocked; + qreal m_parentRotation; + qreal m_minDimension; + qreal m_maxDimension; +}; + +#endif //RESIZE_HANDLE_H diff --git a/src/libs/vwidgets/vmaingraphicsscene.cpp b/src/libs/vwidgets/vmaingraphicsscene.cpp index 6ad2ff5fe535..2c44272af94b 100644 --- a/src/libs/vwidgets/vmaingraphicsscene.cpp +++ b/src/libs/vwidgets/vmaingraphicsscene.cpp @@ -140,7 +140,7 @@ void VMainGraphicsScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) } //--------------------------------------------------------------------------------------------------------------------- -void VMainGraphicsScene::InitOrigins() +void VMainGraphicsScene::initializeOrigins() { origins.clear(); diff --git a/src/libs/vwidgets/vmaingraphicsscene.h b/src/libs/vwidgets/vmaingraphicsscene.h index 170f51fc9a26..d4acd9b6048c 100644 --- a/src/libs/vwidgets/vmaingraphicsscene.h +++ b/src/libs/vwidgets/vmaingraphicsscene.h @@ -85,7 +85,7 @@ class VMainGraphicsScene : public QGraphicsScene QPointF getScenePos() const; QRectF visibleItemsBoundingRect() const; - void InitOrigins(); + void initializeOrigins(); void setOriginsVisible(bool visible); public slots: diff --git a/src/libs/vwidgets/vmaingraphicsview.cpp b/src/libs/vwidgets/vmaingraphicsview.cpp index f12d8122fb6d..01b4c871a514 100644 --- a/src/libs/vwidgets/vmaingraphicsview.cpp +++ b/src/libs/vwidgets/vmaingraphicsview.cpp @@ -697,14 +697,10 @@ void VMainGraphicsView::mousePressEvent(QMouseEvent *event) } case Qt::MiddleButton: { - const QList list = items(event->pos()); - if (list.size() == 0) - {// Only when the user clicks on the scene background - m_ptStartPos = event->pos(); - QGraphicsView::setDragMode(QGraphicsView::ScrollHandDrag); - event->accept(); - viewport()->setCursor(Qt::ClosedHandCursor); - } + m_ptStartPos = event->pos(); + QGraphicsView::setDragMode(QGraphicsView::ScrollHandDrag); + event->accept(); + viewport()->setCursor(Qt::ClosedHandCursor); break; } default: @@ -730,7 +726,7 @@ void VMainGraphicsView::mouseMoveEvent(QMouseEvent *event) endPoint = event->pos(); if (!isRubberBandColorSet) { - if ( (endPoint.x() < startPoint.x()) | (endPoint.y() < startPoint.y()) ) + if ( (endPoint.x() < startPoint.x()) || (endPoint.y() < startPoint.y()) ) { setRubberBandColor(rubberBand, qApp->Settings()->getZoomRBNegativeColor()); } diff --git a/src/libs/vwidgets/vwidgets.pri b/src/libs/vwidgets/vwidgets.pri index 268c9c61abac..7d79faf93ebd 100644 --- a/src/libs/vwidgets/vwidgets.pri +++ b/src/libs/vwidgets/vwidgets.pri @@ -6,6 +6,7 @@ SOURCES += \ $$PWD/calculator/calculator.cpp \ $$PWD/color_combobox.cpp \ $$PWD/export_format_combobox.cpp \ + $$PWD/resize_handle.cpp \ $$PWD/fill_combobox.cpp \ $$PWD/group_tablewidgetitem.cpp \ $$PWD/linetype_combobox.cpp \ @@ -41,6 +42,7 @@ HEADERS += \ $$PWD/calculator/calculator.h \ $$PWD/color_combobox.h \ $$PWD/export_format_combobox.h \ + $$PWD/resize_handle.h \ $$PWD/fill_combobox.h \ $$PWD/group_tablewidgetitem.h \ $$PWD/linetype_combobox.h \
%1
%2 %3