summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJabier Arraiza Cenoz <jabier.arraiza@marker.es>2016-10-25 21:31:28 +0000
committerjabiertxof <info@marker.es>2016-10-25 21:31:28 +0000
commit47afab8f225cffbcc94d49216c4382410a84ed47 (patch)
tree3e639a4b359de538b5bf037eb3e43d85f7b2673c
parentSome bug fixes and improvements (diff)
parentFix signals (diff)
downloadinkscape-47afab8f225cffbcc94d49216c4382410a84ed47.tar.gz
inkscape-47afab8f225cffbcc94d49216c4382410a84ed47.zip
Update to trunk
(bzr r15142.1.26)
-rw-r--r--po/ca.po3434
-rw-r--r--src/desktop-style.cpp10
-rw-r--r--src/desktop-style.h3
-rw-r--r--src/desktop.cpp1
-rw-r--r--src/extension/dbus/document-interface.cpp16
-rw-r--r--src/extension/internal/bluredge.cpp2
-rw-r--r--src/file.cpp12
-rw-r--r--src/object-set.cpp22
-rw-r--r--src/object-set.h127
-rw-r--r--src/path-chemistry.cpp171
-rw-r--r--src/path-chemistry.h13
-rw-r--r--src/selection-chemistry.cpp1105
-rw-r--r--src/selection-chemistry.h73
-rw-r--r--src/selection.cpp18
-rw-r--r--src/selection.h16
-rw-r--r--src/seltrans.cpp2
-rw-r--r--src/ui/clipboard.cpp187
-rw-r--r--src/ui/clipboard.h10
-rw-r--r--src/ui/dialog/export.cpp2
-rw-r--r--src/ui/dialog/layer-properties.cpp2
-rw-r--r--src/ui/dialog/livepatheffect-editor.cpp4
-rw-r--r--src/ui/dialog/transformation.cpp20
-rw-r--r--src/ui/interface.cpp16
-rw-r--r--src/ui/tools/box3d-tool.cpp2
-rw-r--r--src/ui/tools/eraser-tool.cpp14
-rw-r--r--src/ui/tools/freehand-base.cpp2
-rw-r--r--src/ui/tools/pen-tool.cpp2
-rw-r--r--src/ui/tools/pencil-tool.cpp2
-rw-r--r--src/ui/tools/rect-tool.cpp2
-rw-r--r--src/ui/tools/select-tool.cpp46
-rw-r--r--src/verbs.cpp114
-rw-r--r--src/widgets/select-toolbar.cpp2
-rw-r--r--testfiles/src/object-set-test.cpp2
33 files changed, 2793 insertions, 2661 deletions
diff --git a/po/ca.po b/po/ca.po
index facc1cf0c..14dec1b22 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -7,18 +7,17 @@
# Francesc Dorca <f.dorca@filnet.es>, 2003. Traducció sodipodi.
# Xavier Conde Rueda <xavi.conde@gmail.com>, 2004-2008.
# Joaquim Perez i Noguer <noguer@gmail.com>, 2008-2010.
-# Jordi Mas i Hernàndez, <jmas@softcatala.org>, 2015
+# Jordi Mas i Hernàndez, <jmas@softcatala.org>, 2015-2016
# Eulàlia Pagès, <eulaliapages@gmail.com>, 2015
# Xavier Beà, <xavier.bea@gmail.com>, 2015
# Carles Ferrando, <carles.ferrando@gmail.com>, 2015
#
-#: ../src/ui/dialog/clonetiler.cpp:1010
msgid ""
msgstr ""
"Project-Id-Version: inkscape\n"
"Report-Msgid-Bugs-To: inkscape-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2016-06-02 12:12+0200\n"
-"PO-Revision-Date: 2015-02-03 16:09-0500\n"
+"POT-Creation-Date: 2016-10-24 07:17+0200\n"
+"PO-Revision-Date: 2016-10-24 07:18+0200\n"
"Last-Translator: \n"
"Language-Team: Catalan <gnome@llistes.softcatala.org>\n"
"Language: ca\n"
@@ -26,7 +25,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 1.5.4\n"
+"X-Generator: Poedit 1.8.7.1\n"
#: ../inkscape.appdata.xml.in.h:1 ../inkscape.desktop.in.h:1
msgid "Inkscape"
@@ -42,6 +41,9 @@ msgid ""
"Illustrator, CorelDraw, or Xara X, using the W3C standard Scalable Vector "
"Graphics (SVG) file format."
msgstr ""
+"Un editor de gràfics vectorials de codi lliure, amb característiques "
+"similars a Illustrator, CorelDraw, o Xara X, utilitzant l'estàndard del W3C "
+"de gràfics vectorials escalables (SVG) com a format de fitxer."
#: ../inkscape.appdata.xml.in.h:4
msgid ""
@@ -51,11 +53,15 @@ msgid ""
"trace bitmaps and much more. We also aim to maintain a thriving user and "
"developer community by using open, community-oriented development."
msgstr ""
+"L'Inkscape té moltes funcionalitats SVG avançades (marcadors, clons, alfa, "
+"mescla, etc.). S'ha tingut molta cura en dissenyar la seva interfície "
+"d'usuari. És molt senzill editar nodes, i fer operacions complexes amb "
+"camins, o dibuixar mapes de bits. Mantenim també una comunitat d'usuaris i "
+"desenvolupadors activa al voltant del seu desenvolupament comunitari."
#: ../inkscape.appdata.xml.in.h:5
-#, fuzzy
msgid "Main application window"
-msgstr "Duplic_a la finestra"
+msgstr "Finestra principal de l'aplicació"
#: ../inkscape.desktop.in.h:3
msgid "Inkscape Vector Graphics Editor"
@@ -67,7 +73,7 @@ msgstr "Creeu i editeu imatges de gràfics de vectors escalables"
#: ../inkscape.desktop.in.h:5
msgid "image;editor;vector;drawing;"
-msgstr ""
+msgstr "imatge;editor;vector;dibuix;"
#: ../inkscape.desktop.in.h:6
msgid "New Drawing"
@@ -3391,1033 +3397,1033 @@ msgstr "Tela (mapa de bits)"
msgid "Old paint (bitmap)"
msgstr "Pintura vella (mapa de bits)"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:2
msgctxt "Symbol"
-msgid "AIGA Symbol Signs"
-msgstr "Símbols i signes AIGA"
+msgid "United States National Park Service Map Symbols"
+msgstr "Símbols de mapes del servei de parcs nacionals dels Estats Units"
-#. Symbols: ./AigaSymbols.svg
#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:3 ../share/symbols/symbols.h:4
-#: ../share/symbols/symbols.h:281 ../share/symbols/symbols.h:282
msgctxt "Symbol"
-msgid "Telephone"
-msgstr "Telèfon"
+msgid "Airport"
+msgstr "Aeroport"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:5 ../share/symbols/symbols.h:6
msgctxt "Symbol"
-msgid "Mail"
-msgstr "Correu"
+msgid "Amphitheatre"
+msgstr "Amfiteatre"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:7 ../share/symbols/symbols.h:8
msgctxt "Symbol"
-msgid "Currency Exchange"
-msgstr "Canvi de moneda"
+msgid "Bicycle Trail"
+msgstr "Camí de bicicletes"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:9 ../share/symbols/symbols.h:10
msgctxt "Symbol"
-msgid "Currency Exchange - Euro"
-msgstr "Canvi de moneda - Euros"
+msgid "Boat Launch"
+msgstr "Moll"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:11 ../share/symbols/symbols.h:12
msgctxt "Symbol"
-msgid "Cashier"
-msgstr "Caixer"
+msgid "Boat Tour"
+msgstr "Turisme fluvial"
-#. Symbols: ./AigaSymbols.svg
#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:13 ../share/symbols/symbols.h:14
-#: ../share/symbols/symbols.h:213 ../share/symbols/symbols.h:214
msgctxt "Symbol"
-msgid "First Aid"
-msgstr "Primers auxilis"
+msgid "Bus Stop"
+msgstr "Parada d'autobús"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:15 ../share/symbols/symbols.h:16
msgctxt "Symbol"
-msgid "Lost and Found"
-msgstr "Perdut i trobat"
+msgid "Campfire"
+msgstr "Foc de camp"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:17 ../share/symbols/symbols.h:18
msgctxt "Symbol"
-msgid "Coat Check"
-msgstr "Guarda-roba"
+msgid "Campground"
+msgstr "Càmping"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:19 ../share/symbols/symbols.h:20
msgctxt "Symbol"
-msgid "Baggage Lockers"
-msgstr "Casellers d'equipatge"
+msgid "CanoeAccess"
+msgstr "Accés amb canoa"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:21 ../share/symbols/symbols.h:22
msgctxt "Symbol"
-msgid "Escalator"
-msgstr "Escala mecànica"
+msgid "Crosscountry Ski Trail"
+msgstr "Pista d'esquí camp a través"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:23 ../share/symbols/symbols.h:24
msgctxt "Symbol"
-msgid "Escalator Down"
-msgstr "Escala mecànica avall"
+msgid "Downhill Skiing"
+msgstr "Esquí alpí"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:25 ../share/symbols/symbols.h:26
msgctxt "Symbol"
-msgid "Escalator Up"
-msgstr "Escala mecànica amunt"
+msgid "Drinking Water"
+msgstr "Aigua per beure"
+#. Symbols: ./MapSymbolsNPS.svg
#. Symbols: ./AigaSymbols.svg
#: ../share/symbols/symbols.h:27 ../share/symbols/symbols.h:28
+#: ../share/symbols/symbols.h:172 ../share/symbols/symbols.h:173
msgctxt "Symbol"
-msgid "Stairs"
-msgstr "Escales"
+msgid "First Aid"
+msgstr "Primers auxilis"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:29 ../share/symbols/symbols.h:30
msgctxt "Symbol"
-msgid "Stairs Down"
-msgstr "Escales avall"
+msgid "Fishing"
+msgstr "Pesca"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:31 ../share/symbols/symbols.h:32
msgctxt "Symbol"
-msgid "Stairs Up"
-msgstr "Escales amunt"
+msgid "Food Service"
+msgstr "Servei de restauració"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:33 ../share/symbols/symbols.h:34
msgctxt "Symbol"
-msgid "Elevator"
-msgstr "Ascensor"
+msgid "Four Wheel Drive Road"
+msgstr "Carretera per cotxes 4x4"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:35 ../share/symbols/symbols.h:36
msgctxt "Symbol"
-msgid "Toilets - Men"
-msgstr "Lavabo - hòmens"
+msgid "Gas Station"
+msgstr "Benzinera"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:37 ../share/symbols/symbols.h:38
msgctxt "Symbol"
-msgid "Toilets - Women"
-msgstr "Lavabo - dones"
+msgid "Golfing"
+msgstr "Golf"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:39 ../share/symbols/symbols.h:40
msgctxt "Symbol"
-msgid "Toilets"
-msgstr "Lavabo"
+msgid "Horseback Riding"
+msgstr "Cavalcada"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:41 ../share/symbols/symbols.h:42
msgctxt "Symbol"
-msgid "Nursery"
-msgstr "Guarderia"
+msgid "Hospital"
+msgstr "Hospital"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:43 ../share/symbols/symbols.h:44
msgctxt "Symbol"
-msgid "Drinking Fountain"
-msgstr "Font per beure"
+msgid "Ice Skating"
+msgstr "Esqui sobre gel"
+#. Symbols: ./MapSymbolsNPS.svg
#. Symbols: ./AigaSymbols.svg
#: ../share/symbols/symbols.h:45 ../share/symbols/symbols.h:46
+#: ../share/symbols/symbols.h:206 ../share/symbols/symbols.h:207
msgctxt "Symbol"
-msgid "Waiting Room"
-msgstr "Sala d'espera"
+msgid "Information"
+msgstr "Informació"
-#. Symbols: ./AigaSymbols.svg
#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:47 ../share/symbols/symbols.h:48
-#: ../share/symbols/symbols.h:231 ../share/symbols/symbols.h:232
msgctxt "Symbol"
-msgid "Information"
-msgstr "Informació"
+msgid "Litter Receptacle"
+msgstr "Recipient d'escombraries"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:49 ../share/symbols/symbols.h:50
msgctxt "Symbol"
-msgid "Hotel Information"
-msgstr "Informació de l'hotel"
+msgid "Lodging"
+msgstr "Allotjament"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:51 ../share/symbols/symbols.h:52
msgctxt "Symbol"
-msgid "Air Transportation"
-msgstr "Transport per aire"
+msgid "Marina"
+msgstr "Marina"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:53 ../share/symbols/symbols.h:54
msgctxt "Symbol"
-msgid "Heliport"
-msgstr "Heliport"
+msgid "Motorbike Trail"
+msgstr "Camí de motos"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:55 ../share/symbols/symbols.h:56
msgctxt "Symbol"
-msgid "Taxi"
-msgstr "Taxi"
+msgid "Radiator Water"
+msgstr "Radiador refrigerat per aigua"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:57 ../share/symbols/symbols.h:58
msgctxt "Symbol"
-msgid "Bus"
-msgstr "Autobús"
+msgid "Recycling"
+msgstr "Reciclatge"
+#. Symbols: ./MapSymbolsNPS.svg
#. Symbols: ./AigaSymbols.svg
#: ../share/symbols/symbols.h:59 ../share/symbols/symbols.h:60
+#: ../share/symbols/symbols.h:258 ../share/symbols/symbols.h:259
msgctxt "Symbol"
-msgid "Ground Transportation"
-msgstr "Transport terrestre"
+msgid "Parking"
+msgstr "Aparcament"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:61 ../share/symbols/symbols.h:62
msgctxt "Symbol"
-msgid "Rail Transportation"
-msgstr "Transport per tren"
+msgid "Pets On Leash"
+msgstr "Símbols de mascotes"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:63 ../share/symbols/symbols.h:64
msgctxt "Symbol"
-msgid "Water Transportation"
-msgstr "Transport d'aigua"
+msgid "Picnic Area"
+msgstr "Àrea de pícnic"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:65 ../share/symbols/symbols.h:66
msgctxt "Symbol"
-msgid "Car Rental"
-msgstr "Lloguer de cotxes"
+msgid "Post Office"
+msgstr "Oficina de correus"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:67 ../share/symbols/symbols.h:68
msgctxt "Symbol"
-msgid "Restaurant"
-msgstr "Restaurant"
+msgid "Ranger Station"
+msgstr "Estació de rangers"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:69 ../share/symbols/symbols.h:70
msgctxt "Symbol"
-msgid "Coffeeshop"
-msgstr "Cafeteria"
+msgid "RV Campground"
+msgstr "Càmping de caravanes"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:71 ../share/symbols/symbols.h:72
msgctxt "Symbol"
-msgid "Bar"
-msgstr "Bar"
+msgid "Restrooms"
+msgstr "Banys"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:73 ../share/symbols/symbols.h:74
msgctxt "Symbol"
-msgid "Shops"
-msgstr "Tendes"
+msgid "Sailing"
+msgstr "Navegació a vela"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:75 ../share/symbols/symbols.h:76
msgctxt "Symbol"
-msgid "Barber Shop - Beauty Salon"
-msgstr "Perruqueria - saló de bellesa"
+msgid "Sanitary Disposal Station"
+msgstr "Estació sanitària"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:77 ../share/symbols/symbols.h:78
msgctxt "Symbol"
-msgid "Barber Shop"
-msgstr "Perruqueria"
+msgid "Scuba Diving"
+msgstr "Submarinisme"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:79 ../share/symbols/symbols.h:80
msgctxt "Symbol"
-msgid "Beauty Salon"
-msgstr "Saló de bellesa"
+msgid "Self Guided Trail"
+msgstr "Ruta sense guia"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:81 ../share/symbols/symbols.h:82
msgctxt "Symbol"
-msgid "Ticket Purchase"
-msgstr "Compra d'entrades"
+msgid "Shelter"
+msgstr "Abric"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:83 ../share/symbols/symbols.h:84
msgctxt "Symbol"
-msgid "Baggage Check In"
-msgstr "Entrada d'equipatge"
+msgid "Showers"
+msgstr "Dutxes"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:85 ../share/symbols/symbols.h:86
msgctxt "Symbol"
-msgid "Baggage Claim"
-msgstr "Reclamació d'equipatges"
+msgid "Sledding"
+msgstr "Trineu"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:87 ../share/symbols/symbols.h:88
msgctxt "Symbol"
-msgid "Customs"
-msgstr "Duana"
+msgid "SnowmobileTrail"
+msgstr "Pista de motos de neu"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:89 ../share/symbols/symbols.h:90
msgctxt "Symbol"
-msgid "Immigration"
-msgstr "Immigració"
+msgid "Stable"
+msgstr "Estable"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:91 ../share/symbols/symbols.h:92
msgctxt "Symbol"
-msgid "Departing Flights"
-msgstr "Sortida de vols"
+msgid "Store"
+msgstr "Botiga"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:93 ../share/symbols/symbols.h:94
msgctxt "Symbol"
-msgid "Arriving Flights"
-msgstr "Arribada de vols"
+msgid "Swimming"
+msgstr "Natació"
+#. Symbols: ./MapSymbolsNPS.svg
#. Symbols: ./AigaSymbols.svg
#: ../share/symbols/symbols.h:95 ../share/symbols/symbols.h:96
+#: ../share/symbols/symbols.h:162 ../share/symbols/symbols.h:163
msgctxt "Symbol"
-msgid "Smoking"
-msgstr "Fumadors"
+msgid "Telephone"
+msgstr "Telèfon"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:97 ../share/symbols/symbols.h:98
msgctxt "Symbol"
-msgid "No Smoking"
-msgstr "No fumadors"
+msgid "Emergency Telephone"
+msgstr "Telèfon d'emergències"
-#. Symbols: ./AigaSymbols.svg
#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:99 ../share/symbols/symbols.h:100
-#: ../share/symbols/symbols.h:245 ../share/symbols/symbols.h:246
msgctxt "Symbol"
-msgid "Parking"
-msgstr "Aparcament"
+msgid "Trailhead"
+msgstr "Començament del camí"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:101 ../share/symbols/symbols.h:102
msgctxt "Symbol"
-msgid "No Parking"
-msgstr "Prohibit aparcar"
+msgid "Wheelchair Accessible"
+msgstr "Accessible amb cadira de rodes"
-#. Symbols: ./AigaSymbols.svg
+#. Symbols: ./MapSymbolsNPS.svg
#: ../share/symbols/symbols.h:103 ../share/symbols/symbols.h:104
msgctxt "Symbol"
-msgid "No Dogs"
-msgstr "Prohibits gossos"
-
-#. Symbols: ./AigaSymbols.svg
-#: ../share/symbols/symbols.h:105 ../share/symbols/symbols.h:106
-msgctxt "Symbol"
-msgid "No Entry"
-msgstr "Sense entrada"
-
-#. Symbols: ./AigaSymbols.svg
-#: ../share/symbols/symbols.h:107 ../share/symbols/symbols.h:108
-msgctxt "Symbol"
-msgid "Exit"
-msgstr "Sortida"
-
-#. Symbols: ./AigaSymbols.svg
-#: ../share/symbols/symbols.h:109 ../share/symbols/symbols.h:110
-msgctxt "Symbol"
-msgid "Fire Extinguisher"
-msgstr "Extintor d'incendis"
-
-#. Symbols: ./AigaSymbols.svg
-#: ../share/symbols/symbols.h:111 ../share/symbols/symbols.h:112
-msgctxt "Symbol"
-msgid "Right Arrow"
-msgstr "Fletxa dreta"
-
-#. Symbols: ./AigaSymbols.svg
-#: ../share/symbols/symbols.h:113 ../share/symbols/symbols.h:114
-msgctxt "Symbol"
-msgid "Forward and Right Arrow"
-msgstr "Endavant i fletxa a la dreta"
-
-#. Symbols: ./AigaSymbols.svg
-#: ../share/symbols/symbols.h:115 ../share/symbols/symbols.h:116
-msgctxt "Symbol"
-msgid "Up Arrow"
-msgstr "Fletxa ascendent"
-
-#. Symbols: ./AigaSymbols.svg
-#: ../share/symbols/symbols.h:117 ../share/symbols/symbols.h:118
-msgctxt "Symbol"
-msgid "Forward and Left Arrow"
-msgstr "Endavant i fletxa a l'esquerra"
-
-#. Symbols: ./AigaSymbols.svg
-#: ../share/symbols/symbols.h:119 ../share/symbols/symbols.h:120
-msgctxt "Symbol"
-msgid "Left Arrow"
-msgstr "Fletxa esquerra"
-
-#. Symbols: ./AigaSymbols.svg
-#: ../share/symbols/symbols.h:121 ../share/symbols/symbols.h:122
-msgctxt "Symbol"
-msgid "Left and Down Arrow"
-msgstr "Esquerra i fletxa cap avall"
-
-#. Symbols: ./AigaSymbols.svg
-#: ../share/symbols/symbols.h:123 ../share/symbols/symbols.h:124
-msgctxt "Symbol"
-msgid "Down Arrow"
-msgstr "Fletxa cap avall"
-
-#. Symbols: ./AigaSymbols.svg
-#: ../share/symbols/symbols.h:125 ../share/symbols/symbols.h:126
-msgctxt "Symbol"
-msgid "Right and Down Arrow"
-msgstr "Dreta i fletxa cap avall"
-
-#. Symbols: ./AigaSymbols.svg
-#: ../share/symbols/symbols.h:127 ../share/symbols/symbols.h:128
-msgctxt "Symbol"
-msgid "NPS Wheelchair Accessible - 1996"
-msgstr "Accessible amb cadira de rodes NPS - 1996"
-
-#. Symbols: ./AigaSymbols.svg
-#: ../share/symbols/symbols.h:129 ../share/symbols/symbols.h:130
-msgctxt "Symbol"
-msgid "NPS Wheelchair Accessible"
-msgstr "Accessible amb cadira de rodes NPS"
-
-#. Symbols: ./AigaSymbols.svg
-#: ../share/symbols/symbols.h:131 ../share/symbols/symbols.h:132
-msgctxt "Symbol"
-msgid "New Wheelchair Accessible"
-msgstr "Accessible amb cadira de rodes nova"
-
-#. Symbols: ./BalloonSymbols.svg
-#: ../share/symbols/symbols.h:133
-msgctxt "Symbol"
-msgid "Word Balloons"
-msgstr "Bafarada"
-
-#. Symbols: ./BalloonSymbols.svg
-#: ../share/symbols/symbols.h:134
-msgctxt "Symbol"
-msgid "Thought Balloon"
-msgstr "Bafarada pensant"
-
-#. Symbols: ./BalloonSymbols.svg
-#: ../share/symbols/symbols.h:135
-msgctxt "Symbol"
-msgid "Dream Speaking"
-msgstr "Bafarada somiant"
-
-#. Symbols: ./BalloonSymbols.svg
-#: ../share/symbols/symbols.h:136
-msgctxt "Symbol"
-msgid "Rounded Balloon"
-msgstr "Bafarada redona"
-
-#. Symbols: ./BalloonSymbols.svg
-#: ../share/symbols/symbols.h:137
-msgctxt "Symbol"
-msgid "Squared Balloon"
-msgstr "Bafarada quadrada"
-
-#. Symbols: ./BalloonSymbols.svg
-#: ../share/symbols/symbols.h:138
-msgctxt "Symbol"
-msgid "Over the Phone"
-msgstr "Al telèfon"
-
-#. Symbols: ./BalloonSymbols.svg
-#: ../share/symbols/symbols.h:139
-msgctxt "Symbol"
-msgid "Hip Balloon"
-msgstr "Bafarada a la moda"
-
-#. Symbols: ./BalloonSymbols.svg
-#: ../share/symbols/symbols.h:140
-msgctxt "Symbol"
-msgid "Circle Balloon"
-msgstr "Bafarada cercle"
+msgid "Wind Surfing"
+msgstr "Surf de vela"
-#. Symbols: ./BalloonSymbols.svg
-#: ../share/symbols/symbols.h:141
+#. Symbols: ./MapSymbolsNPS.svg
+#: ../share/symbols/symbols.h:105
msgctxt "Symbol"
-msgid "Exclaim Balloon"
-msgstr "Bafarada exclamació"
+msgid "Blank"
+msgstr "Negre"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:142
+#: ../share/symbols/symbols.h:106
msgctxt "Symbol"
msgid "Flow Chart Shapes"
msgstr "Diagrames de flux"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:143
+#: ../share/symbols/symbols.h:107
msgctxt "Symbol"
msgid "Process"
msgstr "Procés"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:144
+#: ../share/symbols/symbols.h:108
msgctxt "Symbol"
msgid "Input/Output"
msgstr "Entrada/Sortida"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:145
+#: ../share/symbols/symbols.h:109
msgctxt "Symbol"
msgid "Document"
msgstr "Document"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:146
+#: ../share/symbols/symbols.h:110
msgctxt "Symbol"
msgid "Manual Operation"
msgstr "Operació manual"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:147
+#: ../share/symbols/symbols.h:111
msgctxt "Symbol"
msgid "Preparation"
msgstr "Preparació"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:148
+#: ../share/symbols/symbols.h:112
msgctxt "Symbol"
msgid "Merge"
msgstr "Combina"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:149
+#: ../share/symbols/symbols.h:113
msgctxt "Symbol"
msgid "Decision"
msgstr "Decisió"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:150
+#: ../share/symbols/symbols.h:114
msgctxt "Symbol"
msgid "Magnetic Tape"
msgstr "Cinta magnètica"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:151
+#: ../share/symbols/symbols.h:115
msgctxt "Symbol"
msgid "Display"
msgstr "Visualització"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:152
+#: ../share/symbols/symbols.h:116
msgctxt "Symbol"
msgid "Auxiliary Operation"
msgstr "Operació auxiliar"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:153
+#: ../share/symbols/symbols.h:117
msgctxt "Symbol"
msgid "Manual Input"
msgstr "Entrada manual"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:154
+#: ../share/symbols/symbols.h:118
msgctxt "Symbol"
msgid "Extract"
msgstr "Extreu"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:155
+#: ../share/symbols/symbols.h:119
msgctxt "Symbol"
msgid "Terminal/Interrupt"
msgstr "Terminal / Interrupció"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:156
+#: ../share/symbols/symbols.h:120
msgctxt "Symbol"
msgid "Punched Card"
msgstr "Targeta perforada"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:157
+#: ../share/symbols/symbols.h:121
msgctxt "Symbol"
msgid "Punch Tape"
msgstr "Cinta perforada"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:158
+#: ../share/symbols/symbols.h:122
msgctxt "Symbol"
msgid "Online Storage"
msgstr "Emmagatzematge en línia"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:159
+#: ../share/symbols/symbols.h:123
msgctxt "Symbol"
msgid "Keying"
msgstr "Teclejant"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:160
+#: ../share/symbols/symbols.h:124
msgctxt "Symbol"
msgid "Sort"
msgstr "Ordena"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:161
+#: ../share/symbols/symbols.h:125
msgctxt "Symbol"
msgid "Connector"
msgstr "Connector"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:162
+#: ../share/symbols/symbols.h:126
msgctxt "Symbol"
msgid "Off-Page Connector"
msgstr "Connector fora de pàgina"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:163
+#: ../share/symbols/symbols.h:127
msgctxt "Symbol"
msgid "Transmittal Tape"
msgstr "Cinta de transmissió"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:164
+#: ../share/symbols/symbols.h:128
msgctxt "Symbol"
msgid "Communication Link"
msgstr "Enllaç de comunicació"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:165
+#: ../share/symbols/symbols.h:129
msgctxt "Symbol"
msgid "Collate"
msgstr "Col·lecciona"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:166
+#: ../share/symbols/symbols.h:130
msgctxt "Symbol"
msgid "Comment/Annotation"
msgstr "Comenta / anota"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:167
+#: ../share/symbols/symbols.h:131
msgctxt "Symbol"
msgid "Core"
msgstr "Nucli"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:168
+#: ../share/symbols/symbols.h:132
msgctxt "Symbol"
msgid "Predefined Process"
msgstr "Procés predefinit"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:169
+#: ../share/symbols/symbols.h:133
msgctxt "Symbol"
msgid "Magnetic Disk (Database)"
msgstr "Disc magnètic (base de dades)"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:170
+#: ../share/symbols/symbols.h:134
msgctxt "Symbol"
msgid "Magnetic Drum (Direct Access)"
msgstr "Tambor magnètic (accés directe)"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:171
+#: ../share/symbols/symbols.h:135
msgctxt "Symbol"
msgid "Offline Storage"
msgstr "Emmagatzematge fora de línia"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:172
+#: ../share/symbols/symbols.h:136
msgctxt "Symbol"
msgid "Logical Or"
msgstr "O lògica"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:173
+#: ../share/symbols/symbols.h:137
msgctxt "Symbol"
msgid "Logical And"
msgstr "I lògica"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:174
+#: ../share/symbols/symbols.h:138
msgctxt "Symbol"
msgid "Delay"
msgstr "Retard"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:175
+#: ../share/symbols/symbols.h:139
msgctxt "Symbol"
msgid "Loop Limit Begin"
msgstr "Inici del límit del bucle"
#. Symbols: ./FlowSymbols.svg
-#: ../share/symbols/symbols.h:176
+#: ../share/symbols/symbols.h:140
msgctxt "Symbol"
msgid "Loop Limit End"
msgstr "Final del límit del bucle"
+#. Symbols: ./BalloonSymbols.svg
+#: ../share/symbols/symbols.h:141
+msgctxt "Symbol"
+msgid "Word Balloons"
+msgstr "Bafarada"
+
+#. Symbols: ./BalloonSymbols.svg
+#: ../share/symbols/symbols.h:142
+msgctxt "Symbol"
+msgid "Thought Balloon"
+msgstr "Bafarada pensant"
+
+#. Symbols: ./BalloonSymbols.svg
+#: ../share/symbols/symbols.h:143
+msgctxt "Symbol"
+msgid "Dream Speaking"
+msgstr "Bafarada somiant"
+
+#. Symbols: ./BalloonSymbols.svg
+#: ../share/symbols/symbols.h:144
+msgctxt "Symbol"
+msgid "Rounded Balloon"
+msgstr "Bafarada redona"
+
+#. Symbols: ./BalloonSymbols.svg
+#: ../share/symbols/symbols.h:145
+msgctxt "Symbol"
+msgid "Squared Balloon"
+msgstr "Bafarada quadrada"
+
+#. Symbols: ./BalloonSymbols.svg
+#: ../share/symbols/symbols.h:146
+msgctxt "Symbol"
+msgid "Over the Phone"
+msgstr "Al telèfon"
+
+#. Symbols: ./BalloonSymbols.svg
+#: ../share/symbols/symbols.h:147
+msgctxt "Symbol"
+msgid "Hip Balloon"
+msgstr "Bafarada a la moda"
+
+#. Symbols: ./BalloonSymbols.svg
+#: ../share/symbols/symbols.h:148
+msgctxt "Symbol"
+msgid "Circle Balloon"
+msgstr "Bafarada cercle"
+
+#. Symbols: ./BalloonSymbols.svg
+#: ../share/symbols/symbols.h:149
+msgctxt "Symbol"
+msgid "Exclaim Balloon"
+msgstr "Bafarada exclamació"
+
#. Symbols: ./LogicSymbols.svg
-#: ../share/symbols/symbols.h:177
+#: ../share/symbols/symbols.h:150
msgctxt "Symbol"
msgid "Logic Symbols"
msgstr "Símbols lògics"
#. Symbols: ./LogicSymbols.svg
-#: ../share/symbols/symbols.h:178
+#: ../share/symbols/symbols.h:151
msgctxt "Symbol"
msgid "Xnor Gate"
msgstr "Porta XNOR"
#. Symbols: ./LogicSymbols.svg
-#: ../share/symbols/symbols.h:179
+#: ../share/symbols/symbols.h:152
msgctxt "Symbol"
msgid "Xor Gate"
msgstr "Porta XOR"
#. Symbols: ./LogicSymbols.svg
-#: ../share/symbols/symbols.h:180
+#: ../share/symbols/symbols.h:153
msgctxt "Symbol"
msgid "Nor Gate"
msgstr "Porta NOR"
#. Symbols: ./LogicSymbols.svg
-#: ../share/symbols/symbols.h:181
+#: ../share/symbols/symbols.h:154
msgctxt "Symbol"
msgid "Or Gate"
msgstr "Porta OR"
#. Symbols: ./LogicSymbols.svg
-#: ../share/symbols/symbols.h:182
+#: ../share/symbols/symbols.h:155
msgctxt "Symbol"
msgid "Nand Gate"
msgstr "Porta NAND"
#. Symbols: ./LogicSymbols.svg
-#: ../share/symbols/symbols.h:183
+#: ../share/symbols/symbols.h:156
msgctxt "Symbol"
msgid "And Gate"
msgstr "Porta AND"
#. Symbols: ./LogicSymbols.svg
-#: ../share/symbols/symbols.h:184
+#: ../share/symbols/symbols.h:157
msgctxt "Symbol"
msgid "Buffer"
msgstr "Memòria intermèdia"
#. Symbols: ./LogicSymbols.svg
-#: ../share/symbols/symbols.h:185
+#: ../share/symbols/symbols.h:158
msgctxt "Symbol"
msgid "Not Gate"
msgstr "Porta NOT"
#. Symbols: ./LogicSymbols.svg
-#: ../share/symbols/symbols.h:186
+#: ../share/symbols/symbols.h:159
msgctxt "Symbol"
msgid "Buffer Small"
msgstr "Memòria intermèdia petita"
#. Symbols: ./LogicSymbols.svg
-#: ../share/symbols/symbols.h:187
+#: ../share/symbols/symbols.h:160
msgctxt "Symbol"
msgid "Not Gate Small"
msgstr "Sense porta petita"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:188
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:161
msgctxt "Symbol"
-msgid "United States National Park Service Map Symbols"
-msgstr "Símbols de mapes del servei de parcs nacionals dels Estats Units"
+msgid "AIGA Symbol Signs"
+msgstr "Símbols i signes AIGA"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:189 ../share/symbols/symbols.h:190
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:164 ../share/symbols/symbols.h:165
msgctxt "Symbol"
-msgid "Airport"
-msgstr "Aeroport"
+msgid "Mail"
+msgstr "Correu"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:191 ../share/symbols/symbols.h:192
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:166 ../share/symbols/symbols.h:167
msgctxt "Symbol"
-msgid "Amphitheatre"
-msgstr "Amfiteatre"
+msgid "Currency Exchange"
+msgstr "Canvi de moneda"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:193 ../share/symbols/symbols.h:194
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:168 ../share/symbols/symbols.h:169
msgctxt "Symbol"
-msgid "Bicycle Trail"
-msgstr "Camí de bicicletes"
+msgid "Currency Exchange - Euro"
+msgstr "Canvi de moneda - Euros"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:195 ../share/symbols/symbols.h:196
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:170 ../share/symbols/symbols.h:171
msgctxt "Symbol"
-msgid "Boat Launch"
-msgstr "Moll"
+msgid "Cashier"
+msgstr "Caixer"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:197 ../share/symbols/symbols.h:198
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:174 ../share/symbols/symbols.h:175
msgctxt "Symbol"
-msgid "Boat Tour"
-msgstr "Turisme fluvial"
+msgid "Lost and Found"
+msgstr "Perdut i trobat"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:199 ../share/symbols/symbols.h:200
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:176 ../share/symbols/symbols.h:177
msgctxt "Symbol"
-msgid "Bus Stop"
-msgstr "Parada d'autobús"
+msgid "Coat Check"
+msgstr "Guarda-roba"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:201 ../share/symbols/symbols.h:202
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:178 ../share/symbols/symbols.h:179
msgctxt "Symbol"
-msgid "Campfire"
-msgstr "Foc de camp"
+msgid "Baggage Lockers"
+msgstr "Casellers d'equipatge"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:203 ../share/symbols/symbols.h:204
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:180 ../share/symbols/symbols.h:181
msgctxt "Symbol"
-msgid "Campground"
-msgstr "Càmping"
+msgid "Escalator"
+msgstr "Escala mecànica"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:205 ../share/symbols/symbols.h:206
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:182 ../share/symbols/symbols.h:183
msgctxt "Symbol"
-msgid "CanoeAccess"
-msgstr "Accés amb canoa"
+msgid "Escalator Down"
+msgstr "Escala mecànica avall"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:207 ../share/symbols/symbols.h:208
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:184 ../share/symbols/symbols.h:185
msgctxt "Symbol"
-msgid "Crosscountry Ski Trail"
-msgstr "Pista d'esquí camp a través"
+msgid "Escalator Up"
+msgstr "Escala mecànica amunt"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:209 ../share/symbols/symbols.h:210
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:186 ../share/symbols/symbols.h:187
msgctxt "Symbol"
-msgid "Downhill Skiing"
-msgstr "Esquí alpí"
+msgid "Stairs"
+msgstr "Escales"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:211 ../share/symbols/symbols.h:212
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:188 ../share/symbols/symbols.h:189
msgctxt "Symbol"
-msgid "Drinking Water"
-msgstr "Aigua per beure"
+msgid "Stairs Down"
+msgstr "Escales avall"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:215 ../share/symbols/symbols.h:216
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:190 ../share/symbols/symbols.h:191
msgctxt "Symbol"
-msgid "Fishing"
-msgstr "Pesca"
+msgid "Stairs Up"
+msgstr "Escales amunt"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:217 ../share/symbols/symbols.h:218
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:192 ../share/symbols/symbols.h:193
msgctxt "Symbol"
-msgid "Food Service"
-msgstr "Servei de restauració"
+msgid "Elevator"
+msgstr "Ascensor"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:219 ../share/symbols/symbols.h:220
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:194 ../share/symbols/symbols.h:195
msgctxt "Symbol"
-msgid "Four Wheel Drive Road"
-msgstr "Carretera per cotxes 4x4"
+msgid "Toilets - Men"
+msgstr "Lavabo - hòmens"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:221 ../share/symbols/symbols.h:222
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:196 ../share/symbols/symbols.h:197
msgctxt "Symbol"
-msgid "Gas Station"
-msgstr "Benzinera"
+msgid "Toilets - Women"
+msgstr "Lavabo - dones"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:223 ../share/symbols/symbols.h:224
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:198 ../share/symbols/symbols.h:199
msgctxt "Symbol"
-msgid "Golfing"
-msgstr "Golf"
+msgid "Toilets"
+msgstr "Lavabo"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:225 ../share/symbols/symbols.h:226
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:200 ../share/symbols/symbols.h:201
msgctxt "Symbol"
-msgid "Horseback Riding"
-msgstr "Cavalcada"
+msgid "Nursery"
+msgstr "Guarderia"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:227 ../share/symbols/symbols.h:228
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:202 ../share/symbols/symbols.h:203
msgctxt "Symbol"
-msgid "Hospital"
-msgstr "Hospital"
+msgid "Drinking Fountain"
+msgstr "Font per beure"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:229 ../share/symbols/symbols.h:230
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:204 ../share/symbols/symbols.h:205
msgctxt "Symbol"
-msgid "Ice Skating"
-msgstr "Esqui sobre gel"
+msgid "Waiting Room"
+msgstr "Sala d'espera"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:233 ../share/symbols/symbols.h:234
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:208 ../share/symbols/symbols.h:209
msgctxt "Symbol"
-msgid "Litter Receptacle"
-msgstr "Recipient d'escombraries"
+msgid "Hotel Information"
+msgstr "Informació de l'hotel"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:235 ../share/symbols/symbols.h:236
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:210 ../share/symbols/symbols.h:211
msgctxt "Symbol"
-msgid "Lodging"
-msgstr "Allotjament"
+msgid "Air Transportation"
+msgstr "Transport per aire"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:237 ../share/symbols/symbols.h:238
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:212 ../share/symbols/symbols.h:213
msgctxt "Symbol"
-msgid "Marina"
-msgstr "Marina"
+msgid "Heliport"
+msgstr "Heliport"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:239 ../share/symbols/symbols.h:240
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:214 ../share/symbols/symbols.h:215
msgctxt "Symbol"
-msgid "Motorbike Trail"
-msgstr "Camí de motos"
+msgid "Taxi"
+msgstr "Taxi"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:241 ../share/symbols/symbols.h:242
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:216 ../share/symbols/symbols.h:217
msgctxt "Symbol"
-msgid "Radiator Water"
-msgstr "Radiador refrigerat per aigua"
+msgid "Bus"
+msgstr "Autobús"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:243 ../share/symbols/symbols.h:244
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:218 ../share/symbols/symbols.h:219
msgctxt "Symbol"
-msgid "Recycling"
-msgstr "Reciclatge"
+msgid "Ground Transportation"
+msgstr "Transport terrestre"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:247 ../share/symbols/symbols.h:248
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:220 ../share/symbols/symbols.h:221
msgctxt "Symbol"
-msgid "Pets On Leash"
-msgstr "Símbols de mascotes"
+msgid "Rail Transportation"
+msgstr "Transport per tren"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:249 ../share/symbols/symbols.h:250
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:222 ../share/symbols/symbols.h:223
msgctxt "Symbol"
-msgid "Picnic Area"
-msgstr "Àrea de pícnic"
+msgid "Water Transportation"
+msgstr "Transport d'aigua"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:251 ../share/symbols/symbols.h:252
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:224 ../share/symbols/symbols.h:225
msgctxt "Symbol"
-msgid "Post Office"
-msgstr "Oficina de correus"
+msgid "Car Rental"
+msgstr "Lloguer de cotxes"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:253 ../share/symbols/symbols.h:254
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:226 ../share/symbols/symbols.h:227
msgctxt "Symbol"
-msgid "Ranger Station"
-msgstr "Estació de rangers"
+msgid "Restaurant"
+msgstr "Restaurant"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:255 ../share/symbols/symbols.h:256
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:228 ../share/symbols/symbols.h:229
msgctxt "Symbol"
-msgid "RV Campground"
-msgstr "Càmping de caravanes"
+msgid "Coffeeshop"
+msgstr "Cafeteria"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:257 ../share/symbols/symbols.h:258
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:230 ../share/symbols/symbols.h:231
msgctxt "Symbol"
-msgid "Restrooms"
-msgstr "Banys"
+msgid "Bar"
+msgstr "Bar"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:259 ../share/symbols/symbols.h:260
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:232 ../share/symbols/symbols.h:233
msgctxt "Symbol"
-msgid "Sailing"
-msgstr "Navegació a vela"
+msgid "Shops"
+msgstr "Tendes"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:261 ../share/symbols/symbols.h:262
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:234 ../share/symbols/symbols.h:235
msgctxt "Symbol"
-msgid "Sanitary Disposal Station"
-msgstr "Estació sanitària"
+msgid "Barber Shop - Beauty Salon"
+msgstr "Perruqueria - saló de bellesa"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:263 ../share/symbols/symbols.h:264
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:236 ../share/symbols/symbols.h:237
msgctxt "Symbol"
-msgid "Scuba Diving"
-msgstr "Submarinisme"
+msgid "Barber Shop"
+msgstr "Perruqueria"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:265 ../share/symbols/symbols.h:266
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:238 ../share/symbols/symbols.h:239
msgctxt "Symbol"
-msgid "Self Guided Trail"
-msgstr "Ruta sense guia"
+msgid "Beauty Salon"
+msgstr "Saló de bellesa"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:267 ../share/symbols/symbols.h:268
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:240 ../share/symbols/symbols.h:241
msgctxt "Symbol"
-msgid "Shelter"
-msgstr "Abric"
+msgid "Ticket Purchase"
+msgstr "Compra d'entrades"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:269 ../share/symbols/symbols.h:270
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:242 ../share/symbols/symbols.h:243
msgctxt "Symbol"
-msgid "Showers"
-msgstr "Dutxes"
+msgid "Baggage Check In"
+msgstr "Entrada d'equipatge"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:271 ../share/symbols/symbols.h:272
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:244 ../share/symbols/symbols.h:245
msgctxt "Symbol"
-msgid "Sledding"
-msgstr "Trineu"
+msgid "Baggage Claim"
+msgstr "Reclamació d'equipatges"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:273 ../share/symbols/symbols.h:274
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:246 ../share/symbols/symbols.h:247
msgctxt "Symbol"
-msgid "SnowmobileTrail"
-msgstr "Pista de motos de neu"
+msgid "Customs"
+msgstr "Duana"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:275 ../share/symbols/symbols.h:276
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:248 ../share/symbols/symbols.h:249
msgctxt "Symbol"
-msgid "Stable"
-msgstr "Estable"
+msgid "Immigration"
+msgstr "Immigració"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:277 ../share/symbols/symbols.h:278
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:250 ../share/symbols/symbols.h:251
msgctxt "Symbol"
-msgid "Store"
-msgstr "Botiga"
+msgid "Departing Flights"
+msgstr "Sortida de vols"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:279 ../share/symbols/symbols.h:280
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:252 ../share/symbols/symbols.h:253
msgctxt "Symbol"
-msgid "Swimming"
-msgstr "Natació"
+msgid "Arriving Flights"
+msgstr "Arribada de vols"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:283 ../share/symbols/symbols.h:284
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:254 ../share/symbols/symbols.h:255
msgctxt "Symbol"
-msgid "Emergency Telephone"
-msgstr "Telèfon d'emergències"
+msgid "Smoking"
+msgstr "Fumadors"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:285 ../share/symbols/symbols.h:286
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:256 ../share/symbols/symbols.h:257
msgctxt "Symbol"
-msgid "Trailhead"
-msgstr "Començament del camí"
+msgid "No Smoking"
+msgstr "No fumadors"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:287 ../share/symbols/symbols.h:288
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:260 ../share/symbols/symbols.h:261
msgctxt "Symbol"
-msgid "Wheelchair Accessible"
-msgstr "Accessible amb cadira de rodes"
+msgid "No Parking"
+msgstr "Prohibit aparcar"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:289 ../share/symbols/symbols.h:290
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:262 ../share/symbols/symbols.h:263
msgctxt "Symbol"
-msgid "Wind Surfing"
-msgstr "Surf de vela"
+msgid "No Dogs"
+msgstr "Prohibits gossos"
-#. Symbols: ./MapSymbolsNPS.svg
-#: ../share/symbols/symbols.h:291
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:264 ../share/symbols/symbols.h:265
msgctxt "Symbol"
-msgid "Blank"
-msgstr "Negre"
+msgid "No Entry"
+msgstr "Sense entrada"
+
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:266 ../share/symbols/symbols.h:267
+msgctxt "Symbol"
+msgid "Exit"
+msgstr "Sortida"
+
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:268 ../share/symbols/symbols.h:269
+msgctxt "Symbol"
+msgid "Fire Extinguisher"
+msgstr "Extintor d'incendis"
+
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:270 ../share/symbols/symbols.h:271
+msgctxt "Symbol"
+msgid "Right Arrow"
+msgstr "Fletxa dreta"
+
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:272 ../share/symbols/symbols.h:273
+msgctxt "Symbol"
+msgid "Forward and Right Arrow"
+msgstr "Endavant i fletxa a la dreta"
+
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:274 ../share/symbols/symbols.h:275
+msgctxt "Symbol"
+msgid "Up Arrow"
+msgstr "Fletxa ascendent"
+
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:276 ../share/symbols/symbols.h:277
+msgctxt "Symbol"
+msgid "Forward and Left Arrow"
+msgstr "Endavant i fletxa a l'esquerra"
+
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:278 ../share/symbols/symbols.h:279
+msgctxt "Symbol"
+msgid "Left Arrow"
+msgstr "Fletxa esquerra"
+
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:280 ../share/symbols/symbols.h:281
+msgctxt "Symbol"
+msgid "Left and Down Arrow"
+msgstr "Esquerra i fletxa cap avall"
+
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:282 ../share/symbols/symbols.h:283
+msgctxt "Symbol"
+msgid "Down Arrow"
+msgstr "Fletxa cap avall"
+
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:284 ../share/symbols/symbols.h:285
+msgctxt "Symbol"
+msgid "Right and Down Arrow"
+msgstr "Dreta i fletxa cap avall"
+
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:286 ../share/symbols/symbols.h:287
+msgctxt "Symbol"
+msgid "NPS Wheelchair Accessible - 1996"
+msgstr "Accessible amb cadira de rodes NPS - 1996"
+
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:288 ../share/symbols/symbols.h:289
+msgctxt "Symbol"
+msgid "NPS Wheelchair Accessible"
+msgstr "Accessible amb cadira de rodes NPS"
+
+#. Symbols: ./AigaSymbols.svg
+#: ../share/symbols/symbols.h:290 ../share/symbols/symbols.h:291
+msgctxt "Symbol"
+msgid "New Wheelchair Accessible"
+msgstr "Accessible amb cadira de rodes nova"
#: ../share/templates/templates.h:1
msgid "CD Label 120mmx120mm "
@@ -4473,16 +4479,16 @@ msgstr "Llenç de la tipografia de les directrius"
msgid "3D Box"
msgstr "Capsa 3D"
-#: ../src/color-profile.cpp:842
+#: ../src/color-profile.cpp:860
#, c-format
msgid "Color profiles directory (%s) is unavailable."
msgstr "El directori dels perfils de color (%s) no es troba disponible."
-#: ../src/color-profile.cpp:901 ../src/color-profile.cpp:918
+#: ../src/color-profile.cpp:932 ../src/color-profile.cpp:949
msgid "(invalid UTF-8 string)"
msgstr "(cadena UTF-8 no vàlida)"
-#: ../src/color-profile.cpp:903
+#: ../src/color-profile.cpp:934
msgctxt "Profile name"
msgid "None"
msgstr "Cap"
@@ -4513,11 +4519,11 @@ msgstr "Suprimeix la guia"
msgid "<b>Guideline</b>: %s"
msgstr "<b>Directrius</b>: %s"
-#: ../src/desktop.cpp:870
+#: ../src/desktop.cpp:875
msgid "No previous zoom."
msgstr "Cap ampliació anterior."
-#: ../src/desktop.cpp:891
+#: ../src/desktop.cpp:896
msgid "No next zoom."
msgstr "Cap ampliació següent."
@@ -4886,21 +4892,21 @@ msgstr "Múltiple de la mida de la graella"
msgid " to "
msgstr " a "
-#: ../src/document.cpp:531
+#: ../src/document.cpp:526
#, c-format
msgid "New document %d"
msgstr "Document nou %d"
-#: ../src/document.cpp:536
+#: ../src/document.cpp:531
#, c-format
msgid "Memory document %d"
msgstr "Document de memòria %d"
-#: ../src/document.cpp:565
+#: ../src/document.cpp:560
msgid "Memory document %1"
msgstr "Document de memòria %1"
-#: ../src/document.cpp:864
+#: ../src/document.cpp:859
#, c-format
msgid "Unnamed document %d"
msgstr "Document sense nom %d"
@@ -5056,7 +5062,7 @@ msgstr ""
"web de l'Inkscape o si teniu cap pregunta sobre aquesta extensió pregunteu-"
"ho a les llistes de correu."
-#: ../src/extension/implementation/script.cpp:1108
+#: ../src/extension/implementation/script.cpp:1111
msgid ""
"Inkscape has received additional data from the script executed. The script "
"did not return an error, but this may indicate the results will not be as "
@@ -5677,7 +5683,7 @@ msgstr "Llindar"
#: ../src/extension/internal/bitmap/threshold.cpp:40
#: ../src/extension/internal/bitmap/unsharpmask.cpp:46
-#: ../src/widgets/paintbucket-toolbar.cpp:147
+#: ../src/widgets/paintbucket-toolbar.cpp:148
msgid "Threshold:"
msgstr "Llindar:"
@@ -5977,7 +5983,7 @@ msgstr "Usa MS Unicode PUA (0xF020-0xF0FF) per als caràcters convertits"
#: ../src/extension/internal/emf-inout.cpp:3622
#: ../src/extension/internal/wmf-inout.cpp:3201
msgid "Compensate for PPT font bug"
-msgstr "Compensa l'error font PPT"
+msgstr "Compensa l'error de tipus de lletra PPT"
#: ../src/extension/internal/emf-inout.cpp:3623
#: ../src/extension/internal/wmf-inout.cpp:3202
@@ -6623,14 +6629,12 @@ msgid "Replace RGB by any color"
msgstr "Reemplaça RGB per qualsevol color"
#: ../src/extension/internal/filter/color.h:254
-#, fuzzy
msgid "Color Blindness"
-msgstr "Color de les línies guia"
+msgstr "Daltonisme"
#: ../src/extension/internal/filter/color.h:258
-#, fuzzy
msgid "Blindness type:"
-msgstr "Tipus de mescla:"
+msgstr "Tipus de daltonisme:"
#: ../src/extension/internal/filter/color.h:259
msgid "Rod monochromacy (atypical achromatopsia)"
@@ -6641,33 +6645,38 @@ msgid "Cone monochromacy (typical achromatopsia)"
msgstr ""
#: ../src/extension/internal/filter/color.h:261
+#, fuzzy
msgid "Green weak (deuteranomaly)"
-msgstr ""
+msgstr "Deuteranomalia (vermell-verd)"
#: ../src/extension/internal/filter/color.h:262
+#, fuzzy
msgid "Green blind (deuteranopia)"
-msgstr ""
+msgstr "Deuteranopia (insensible al verd)"
#: ../src/extension/internal/filter/color.h:263
+#, fuzzy
msgid "Red weak (protanomaly)"
-msgstr ""
+msgstr "Protanomalia (vermell-verd)"
#: ../src/extension/internal/filter/color.h:264
+#, fuzzy
msgid "Red blind (protanopia)"
-msgstr ""
+msgstr "Protanopia (insensible al vermell)"
#: ../src/extension/internal/filter/color.h:265
+#, fuzzy
msgid "Blue weak (tritanomaly)"
-msgstr ""
+msgstr "Tritanomalia (blau-groc)"
#: ../src/extension/internal/filter/color.h:266
+#, fuzzy
msgid "Blue blind (tritanopia)"
-msgstr ""
+msgstr "Tritanopia (insensible al blau)"
#: ../src/extension/internal/filter/color.h:286
-#, fuzzy
msgid "Simulate color blindness"
-msgstr "Simula l'estil d'una pintura a l'oli"
+msgstr "Simula el daltonisme"
#: ../src/extension/internal/filter/color.h:329
msgid "Color Shift"
@@ -6679,7 +6688,7 @@ msgstr "Maj (°)"
#: ../src/extension/internal/filter/color.h:340
msgid "Rotate and desaturate hue"
-msgstr "Alterna i desatura el to"
+msgstr "Alterna i dessatura el to"
#: ../src/extension/internal/filter/color.h:396
msgid "Harsh light"
@@ -6729,7 +6738,7 @@ msgstr "Discret"
#: ../src/extension/internal/filter/color.h:505 ../src/filter-enums.cpp:113
#: ../src/live_effects/lpe-interpolate_points.cpp:25
-#: ../src/live_effects/lpe-powerstroke.cpp:133
+#: ../src/live_effects/lpe-powerstroke.cpp:134
msgid "Linear"
msgstr "Lineal"
@@ -6912,7 +6921,7 @@ msgstr "Ombres"
#: ../src/extension/internal/filter/color.h:1119
#: ../src/extension/internal/filter/paint.h:356 ../src/filter-enums.cpp:33
-#: ../src/live_effects/effect.cpp:107
+#: ../src/live_effects/effect.cpp:108
#: ../src/live_effects/lpe-transform_2pts.cpp:40
#: ../src/ui/dialog/filter-effects-dialog.cpp:1048
#: ../src/widgets/gradient-toolbar.cpp:1159
@@ -7167,7 +7176,7 @@ msgid "Blur and displace edges of shapes and pictures"
msgstr "Difumina i substitueix les vores dels objectes i les imatges"
#: ../src/extension/internal/filter/distort.h:190
-#: ../src/live_effects/effect.cpp:142
+#: ../src/live_effects/effect.cpp:143
msgid "Roughen"
msgstr "Rugós"
@@ -7490,7 +7499,7 @@ msgstr "Dibuix"
#: ../src/extension/internal/filter/paint.h:496
#: ../src/extension/internal/filter/paint.h:590
#: ../src/extension/internal/filter/paint.h:976
-#: ../src/live_effects/effect.cpp:136 ../src/splivarot.cpp:2209
+#: ../src/live_effects/effect.cpp:137 ../src/splivarot.cpp:2209
msgid "Simplify"
msgstr "Simplifica"
@@ -7774,7 +7783,7 @@ msgstr "Fons"
#: ../src/extension/internal/filter/transparency.h:59
#: ../src/ui/dialog/filter-effects-dialog.cpp:2879
#: ../src/ui/dialog/input.cpp:1088 ../src/widgets/eraser-toolbar.cpp:133
-#: ../src/widgets/pencil-toolbar.cpp:141 ../src/widgets/spray-toolbar.cpp:389
+#: ../src/widgets/pencil-toolbar.cpp:140 ../src/widgets/spray-toolbar.cpp:389
#: ../src/widgets/tweak-toolbar.cpp:254 ../share/extensions/extrude.inx.h:2
#: ../share/extensions/triangle.inx.h:8
msgid "Mode:"
@@ -8027,15 +8036,15 @@ msgstr "Fitxer LaTex PSTricks"
msgid "LaTeX Print"
msgstr "Impressió LaTeX"
-#: ../src/extension/internal/odf.cpp:2141
+#: ../src/extension/internal/odf.cpp:2138
msgid "OpenDocument Drawing Output"
msgstr "Sortida del dibuix de l'OpenDocument"
-#: ../src/extension/internal/odf.cpp:2146
+#: ../src/extension/internal/odf.cpp:2143
msgid "OpenDocument drawing (*.odg)"
msgstr "Dibuix d'OpenDocument (*.odg)"
-#: ../src/extension/internal/odf.cpp:2147
+#: ../src/extension/internal/odf.cpp:2144
msgid "OpenDocument drawing file"
msgstr "Fitxer de dibuix d'OpenDocument"
@@ -8083,8 +8092,9 @@ msgstr ""
"fitxer SVG molt gran i un baix rendiment."
#: ../src/extension/internal/pdfinput/pdf-input.cpp:134
+#, fuzzy
msgid "Poppler/Cairo import"
-msgstr ""
+msgstr "Importació amb Poppler"
#: ../src/extension/internal/pdfinput/pdf-input.cpp:135
msgid ""
@@ -8094,9 +8104,8 @@ msgid ""
msgstr ""
#: ../src/extension/internal/pdfinput/pdf-input.cpp:136
-#, fuzzy
msgid "Internal import"
-msgstr "Port sèrie:"
+msgstr "Importació interna"
#: ../src/extension/internal/pdfinput/pdf-input.cpp:137
msgid ""
@@ -8356,44 +8365,44 @@ msgstr "Ha fallat l'autodetecció de format. El fitxer s'obrirà com a SVG."
msgid "default.svg"
msgstr "default.ca.svg"
-#: ../src/file.cpp:332
+#: ../src/file.cpp:338
msgid "Broken links have been changed to point to existing files."
msgstr ""
"Els enllaços trencats han estat modificats per què apuntin a un fitxer "
"existent."
-#: ../src/file.cpp:343 ../src/file.cpp:1278
+#: ../src/file.cpp:349 ../src/file.cpp:1292
#, c-format
msgid "Failed to load the requested file %s"
msgstr "No s'ha pogut carregar el fitxer demanat %s"
-#: ../src/file.cpp:369
+#: ../src/file.cpp:375
msgid "Document not saved yet. Cannot revert."
msgstr "No s'ha desat el document. És irreversible."
-#: ../src/file.cpp:375
+#: ../src/file.cpp:381
msgid "Changes will be lost! Are you sure you want to reload document %1?"
msgstr ""
"Es perdran els canvis. Esteu segur que voleu tornar a carregar el document "
"%s?"
-#: ../src/file.cpp:401
+#: ../src/file.cpp:407
msgid "Document reverted."
msgstr "S'ha recuperat el document anterior."
-#: ../src/file.cpp:403
+#: ../src/file.cpp:409
msgid "Document not reverted."
msgstr "No s'ha recuperat el document anterior."
-#: ../src/file.cpp:553
+#: ../src/file.cpp:559
msgid "Select file to open"
msgstr "Seleccioneu el fitxer per obrir"
-#: ../src/file.cpp:635
+#: ../src/file.cpp:641
msgid "Clean up document"
msgstr "Neteja el document"
-#: ../src/file.cpp:642
+#: ../src/file.cpp:648
#, c-format
msgid "Removed <b>%i</b> unused definition in &lt;defs&gt;."
msgid_plural "Removed <b>%i</b> unused definitions in &lt;defs&gt;."
@@ -8401,11 +8410,11 @@ msgstr[0] "S'ha esborrat <b>%i</b>definició sense fer servir a &lt;defs&gt;."
msgstr[1] ""
"S'han esborrat <b>%i</b>definicions sense fer servir a &lt;defs&gt;."
-#: ../src/file.cpp:647
+#: ../src/file.cpp:653
msgid "No unused definitions in &lt;defs&gt;."
msgstr "No hi ha definicions sense fer servir a &lt;defs&gt;."
-#: ../src/file.cpp:679
+#: ../src/file.cpp:687
#, c-format
msgid ""
"No Inkscape extension found to save document (%s). This may have been "
@@ -8414,12 +8423,12 @@ msgstr ""
"No s'ha trobat cap extensió de l'Inkscape per desar el document (%s). És "
"possible que es desconegui l'extensió del fitxer."
-#: ../src/file.cpp:680 ../src/file.cpp:688 ../src/file.cpp:696
-#: ../src/file.cpp:702 ../src/file.cpp:707
+#: ../src/file.cpp:688 ../src/file.cpp:698 ../src/file.cpp:707
+#: ../src/file.cpp:714 ../src/file.cpp:720
msgid "Document not saved."
msgstr "No s'ha desat el document."
-#: ../src/file.cpp:687
+#: ../src/file.cpp:697
#, c-format
msgid ""
"File %s is write protected. Please remove write protection and try again."
@@ -8427,54 +8436,54 @@ msgstr ""
"El fitxer %s està protegit contra escriptura. Traieu la protecció i torneu-"
"ho a provar."
-#: ../src/file.cpp:695
+#: ../src/file.cpp:706
#, c-format
msgid "File %s could not be saved."
msgstr "No s'ha pogut desar el fitxer %s."
-#: ../src/file.cpp:725 ../src/file.cpp:727
+#: ../src/file.cpp:739 ../src/file.cpp:741
msgid "Document saved."
msgstr "S'ha desat el document."
#. We are saving for the first time; create a unique default filename
-#: ../src/file.cpp:870 ../src/file.cpp:1437
+#: ../src/file.cpp:884 ../src/file.cpp:1451
msgid "drawing"
msgstr "Dibuix"
-#: ../src/file.cpp:875
+#: ../src/file.cpp:889
msgid "drawing-%1"
msgstr "dibuix-%1"
-#: ../src/file.cpp:892
+#: ../src/file.cpp:906
msgid "Select file to save a copy to"
msgstr "Seleccioneu el fitxer per desar-ne una còpia"
-#: ../src/file.cpp:894
+#: ../src/file.cpp:908
msgid "Select file to save to"
msgstr "Seleccioneu el fitxer per desar"
-#: ../src/file.cpp:999 ../src/file.cpp:1001
+#: ../src/file.cpp:1013 ../src/file.cpp:1015
msgid "No changes need to be saved."
msgstr "No hi ha cap canvi per desar."
-#: ../src/file.cpp:1020
+#: ../src/file.cpp:1034
msgid "Saving document..."
msgstr "S'està desant el document..."
-#: ../src/file.cpp:1275 ../src/ui/dialog/inkscape-preferences.cpp:1505
+#: ../src/file.cpp:1289 ../src/ui/dialog/inkscape-preferences.cpp:1505
#: ../src/ui/dialog/ocaldialogs.cpp:1244
msgid "Import"
msgstr "Importa"
-#: ../src/file.cpp:1325
+#: ../src/file.cpp:1339
msgid "Select file to import"
msgstr "Seleccioneu el fitxer per importar"
-#: ../src/file.cpp:1458
+#: ../src/file.cpp:1472
msgid "Select file to export to"
msgstr "Seleccioneu el fitxer per exportar"
-#: ../src/file.cpp:1711
+#: ../src/file.cpp:1725
msgid "Import Clip Art"
msgstr "Importa Clip Art"
@@ -8676,80 +8685,80 @@ msgstr "Punt de llum"
msgid "Spot Light"
msgstr "Punt de llum"
-#: ../src/gradient-chemistry.cpp:1580
+#: ../src/gradient-chemistry.cpp:1586
msgid "Invert gradient colors"
msgstr "Inverteix el degradat de colors"
-#: ../src/gradient-chemistry.cpp:1607
+#: ../src/gradient-chemistry.cpp:1613
msgid "Reverse gradient"
msgstr "Degradat invertit"
-#: ../src/gradient-chemistry.cpp:1621 ../src/widgets/gradient-selector.cpp:222
+#: ../src/gradient-chemistry.cpp:1627 ../src/widgets/gradient-selector.cpp:222
msgid "Delete swatch"
msgstr "Eliminar la mostra"
-#: ../src/gradient-drag.cpp:97 ../src/ui/tools/gradient-tool.cpp:90
+#: ../src/gradient-drag.cpp:95 ../src/ui/tools/gradient-tool.cpp:90
msgid "Linear gradient <b>start</b>"
msgstr "<b>Inici</b> del degradat lineal"
#. POINT_LG_BEGIN
-#: ../src/gradient-drag.cpp:98 ../src/ui/tools/gradient-tool.cpp:91
+#: ../src/gradient-drag.cpp:96 ../src/ui/tools/gradient-tool.cpp:91
msgid "Linear gradient <b>end</b>"
msgstr "<b>Final</b> del degradat lineal"
-#: ../src/gradient-drag.cpp:99 ../src/ui/tools/gradient-tool.cpp:92
+#: ../src/gradient-drag.cpp:97 ../src/ui/tools/gradient-tool.cpp:92
msgid "Linear gradient <b>mid stop</b>"
msgstr "<b>Punt mig</b> del degradat lineal"
-#: ../src/gradient-drag.cpp:100 ../src/ui/tools/gradient-tool.cpp:93
+#: ../src/gradient-drag.cpp:98 ../src/ui/tools/gradient-tool.cpp:93
msgid "Radial gradient <b>center</b>"
msgstr "<b>Centre</b> del degradat radial"
-#: ../src/gradient-drag.cpp:101 ../src/gradient-drag.cpp:102
+#: ../src/gradient-drag.cpp:99 ../src/gradient-drag.cpp:100
#: ../src/ui/tools/gradient-tool.cpp:94 ../src/ui/tools/gradient-tool.cpp:95
msgid "Radial gradient <b>radius</b>"
msgstr "<b>Radi</b> del degradat radial"
-#: ../src/gradient-drag.cpp:103 ../src/ui/tools/gradient-tool.cpp:96
+#: ../src/gradient-drag.cpp:101 ../src/ui/tools/gradient-tool.cpp:96
msgid "Radial gradient <b>focus</b>"
msgstr "<b>Focus</b> del degradat radial"
#. POINT_RG_FOCUS
-#: ../src/gradient-drag.cpp:104 ../src/gradient-drag.cpp:105
+#: ../src/gradient-drag.cpp:102 ../src/gradient-drag.cpp:103
#: ../src/ui/tools/gradient-tool.cpp:97 ../src/ui/tools/gradient-tool.cpp:98
msgid "Radial gradient <b>mid stop</b>"
msgstr "<b>Punt mig</b> del degradat radial"
-#: ../src/gradient-drag.cpp:106 ../src/ui/tools/mesh-tool.cpp:93
+#: ../src/gradient-drag.cpp:104 ../src/ui/tools/mesh-tool.cpp:93
msgid "Mesh gradient <b>corner</b>"
msgstr "<b>Angle</b> del degradat de la malla"
-#: ../src/gradient-drag.cpp:107 ../src/ui/tools/mesh-tool.cpp:94
+#: ../src/gradient-drag.cpp:105 ../src/ui/tools/mesh-tool.cpp:94
msgid "Mesh gradient <b>handle</b>"
msgstr "<b>Nansa</b> del degradat de la malla"
-#: ../src/gradient-drag.cpp:108 ../src/ui/tools/mesh-tool.cpp:95
+#: ../src/gradient-drag.cpp:106 ../src/ui/tools/mesh-tool.cpp:95
msgid "Mesh gradient <b>tensor</b>"
msgstr "<b>Tensor</b> del degradat de la malla"
-#: ../src/gradient-drag.cpp:565
+#: ../src/gradient-drag.cpp:563
msgid "Added patch row or column"
msgstr "Tros de fila o columna afegida"
-#: ../src/gradient-drag.cpp:798
+#: ../src/gradient-drag.cpp:796
msgid "Merge gradient handles"
msgstr "Mescla els punts de control del degradat"
#. we did an undoable action
-#: ../src/gradient-drag.cpp:1101
+#: ../src/gradient-drag.cpp:1099
msgid "Move gradient handle"
msgstr "Mou els punts de control del degradat"
-#: ../src/gradient-drag.cpp:1160 ../src/widgets/gradient-vector.cpp:834
+#: ../src/gradient-drag.cpp:1158 ../src/widgets/gradient-vector.cpp:834
msgid "Delete gradient stop"
msgstr "Suprimeix una fase del degradat"
-#: ../src/gradient-drag.cpp:1423
+#: ../src/gradient-drag.cpp:1420
#, c-format
msgid ""
"%s %d for: %s%s; drag with <b>Ctrl</b> to snap offset; click with <b>Ctrl"
@@ -8758,11 +8767,11 @@ msgstr ""
"%s %d per a:%s%s; arrossegueu amb <b>Ctrl</b> per ajustar el desplaçament; "
"feu clic amb <b>Ctrl+Alt</b> per suprimir la fase"
-#: ../src/gradient-drag.cpp:1427 ../src/gradient-drag.cpp:1434
+#: ../src/gradient-drag.cpp:1424 ../src/gradient-drag.cpp:1431
msgid " (stroke)"
msgstr " (traç)"
-#: ../src/gradient-drag.cpp:1431
+#: ../src/gradient-drag.cpp:1428
#, c-format
msgid ""
"%s for: %s%s; drag with <b>Ctrl</b> to snap angle, with <b>Ctrl+Alt</b> to "
@@ -8772,7 +8781,7 @@ msgstr ""
"+Alt</b> per conservar l'angle, amb <b>Ctrl+Maj</b> per escalar al voltant "
"del centre"
-#: ../src/gradient-drag.cpp:1439
+#: ../src/gradient-drag.cpp:1436
msgid ""
"Radial gradient <b>center</b> and <b>focus</b>; drag with <b>Shift</b> to "
"separate focus"
@@ -8780,7 +8789,7 @@ msgstr ""
"<b>Centre</b> i <b>focus</b> del degradat radial; arrossegueu amb <b>Maj</b> "
"per separar el focus"
-#: ../src/gradient-drag.cpp:1442
+#: ../src/gradient-drag.cpp:1439
#, c-format
msgid ""
"Gradient point shared by <b>%d</b> gradient; drag with <b>Shift</b> to "
@@ -8795,15 +8804,15 @@ msgstr[1] ""
"Punt de degradat compartit per <b>%d</b> degradats; arrossegueu amb <b>Maj</"
"b> per separar"
-#: ../src/gradient-drag.cpp:2364
+#: ../src/gradient-drag.cpp:2362
msgid "Move gradient handle(s)"
msgstr "Mou les nanses del degradat"
-#: ../src/gradient-drag.cpp:2398
+#: ../src/gradient-drag.cpp:2396
msgid "Move gradient mid stop(s)"
msgstr "Mou les fases mitges del degradat"
-#: ../src/gradient-drag.cpp:2687
+#: ../src/gradient-drag.cpp:2685
msgid "Delete gradient stop(s)"
msgstr "Suprimeix les fases del degradat"
@@ -9285,207 +9294,206 @@ msgstr "Coordenada Y de l'acoblador flotant"
msgid "Dock #%d"
msgstr "Acoblador #%d"
-#: ../src/libnrtype/FontFactory.cpp:636
+#: ../src/libnrtype/FontFactory.cpp:642
msgid "Ignoring font without family that will crash Pango"
msgstr ""
"S'ha ignorat una tipografia sense família que causaria un error en el Pango"
-#: ../src/live_effects/effect.cpp:99
+#: ../src/live_effects/effect.cpp:100
msgid "doEffect stack test"
msgstr "Test de la pila doEffect"
-#: ../src/live_effects/effect.cpp:100
+#: ../src/live_effects/effect.cpp:101
msgid "Angle bisector"
msgstr "Angle bisectriu"
-#: ../src/live_effects/effect.cpp:101
+#: ../src/live_effects/effect.cpp:102
msgid "Circle (by center and radius)"
msgstr "Cercle (donat un centre i un radi)"
-#: ../src/live_effects/effect.cpp:102
+#: ../src/live_effects/effect.cpp:103
msgid "Circle by 3 points"
msgstr "Cercle fet amb 3 punts"
-#: ../src/live_effects/effect.cpp:103
+#: ../src/live_effects/effect.cpp:104
msgid "Dynamic stroke"
msgstr "Traç dinàmic"
-#: ../src/live_effects/effect.cpp:104 ../share/extensions/extrude.inx.h:1
+#: ../src/live_effects/effect.cpp:105 ../share/extensions/extrude.inx.h:1
msgid "Extrude"
msgstr "Extrudir"
-#: ../src/live_effects/effect.cpp:105
+#: ../src/live_effects/effect.cpp:106
msgid "Lattice Deformation"
msgstr "Deformació reticular"
-#: ../src/live_effects/effect.cpp:106
+#: ../src/live_effects/effect.cpp:107
msgid "Line Segment"
msgstr "Segment de línia"
-#: ../src/live_effects/effect.cpp:108
+#: ../src/live_effects/effect.cpp:109
msgid "Parallel"
msgstr "Paral·lel"
-#: ../src/live_effects/effect.cpp:109
+#: ../src/live_effects/effect.cpp:110
msgid "Path length"
msgstr "Longitud del camí"
-#: ../src/live_effects/effect.cpp:110
+#: ../src/live_effects/effect.cpp:111
msgid "Perpendicular bisector"
msgstr "Bisectriu perpendicular"
-#: ../src/live_effects/effect.cpp:111
+#: ../src/live_effects/effect.cpp:112
msgid "Perspective path"
msgstr "Camí de perspectiva"
-#: ../src/live_effects/effect.cpp:112
+#: ../src/live_effects/effect.cpp:113
msgid "Recursive skeleton"
msgstr "Esquelet recursiu"
-#: ../src/live_effects/effect.cpp:113
+#: ../src/live_effects/effect.cpp:114
msgid "Tangent to curve"
msgstr "Tangent a la corba"
-#: ../src/live_effects/effect.cpp:114
+#: ../src/live_effects/effect.cpp:115
msgid "Text label"
msgstr "Etiqueta de text"
-#: ../src/live_effects/effect.cpp:115
+#: ../src/live_effects/effect.cpp:116
msgid "Fillet/Chamfer"
msgstr "Arrodonit/xamfrà"
#. 0.46
-#: ../src/live_effects/effect.cpp:118
+#: ../src/live_effects/effect.cpp:119
msgid "Bend"
msgstr "Corba"
-#: ../src/live_effects/effect.cpp:119
+#: ../src/live_effects/effect.cpp:120
msgid "Gears"
msgstr "Engranatge"
-#: ../src/live_effects/effect.cpp:120
+#: ../src/live_effects/effect.cpp:121
msgid "Pattern Along Path"
msgstr "Patró seguint un camí"
#. for historic reasons, this effect is called skeletal(strokes) in Inkscape:SVG
-#: ../src/live_effects/effect.cpp:121
+#: ../src/live_effects/effect.cpp:122
msgid "Stitch Sub-Paths"
msgstr "Cus els subcamins"
#. 0.47
-#: ../src/live_effects/effect.cpp:123
+#: ../src/live_effects/effect.cpp:124
msgid "VonKoch"
msgstr "VonKoch"
-#: ../src/live_effects/effect.cpp:124
+#: ../src/live_effects/effect.cpp:125
msgid "Knot"
msgstr "Nus"
-#: ../src/live_effects/effect.cpp:125
+#: ../src/live_effects/effect.cpp:126
msgid "Construct grid"
msgstr "Graella de construcció"
-#: ../src/live_effects/effect.cpp:126
+#: ../src/live_effects/effect.cpp:127
msgid "Spiro spline"
msgstr "Corba espiral"
-#: ../src/live_effects/effect.cpp:127
+#: ../src/live_effects/effect.cpp:128
msgid "Envelope Deformation"
msgstr "Deformació per embolcall"
-#: ../src/live_effects/effect.cpp:128
+#: ../src/live_effects/effect.cpp:129
msgid "Interpolate Sub-Paths"
msgstr "Interpola els subcamins"
-#: ../src/live_effects/effect.cpp:129
+#: ../src/live_effects/effect.cpp:130
msgid "Hatches (rough)"
msgstr "Tramat (rugós)"
-#: ../src/live_effects/effect.cpp:130
+#: ../src/live_effects/effect.cpp:131
msgid "Sketch"
msgstr "Esbós"
-#: ../src/live_effects/effect.cpp:131
+#: ../src/live_effects/effect.cpp:132
msgid "Ruler"
msgstr "Regle"
#. 0.91
-#: ../src/live_effects/effect.cpp:133
+#: ../src/live_effects/effect.cpp:134
msgid "Power stroke"
msgstr "Potència del traç"
-#: ../src/live_effects/effect.cpp:134
+#: ../src/live_effects/effect.cpp:135
msgid "Clone original path"
msgstr "Clona el camí original"
-#: ../src/live_effects/effect.cpp:137
+#: ../src/live_effects/effect.cpp:138
msgid "Lattice Deformation 2"
msgstr "Deformació reticular 2"
-#: ../src/live_effects/effect.cpp:138
+#: ../src/live_effects/effect.cpp:139
msgid "Perspective/Envelope"
msgstr "Perspectiva/embolcall"
-#: ../src/live_effects/effect.cpp:139
+#: ../src/live_effects/effect.cpp:140
msgid "Interpolate points"
msgstr "Punts interpolats"
-#: ../src/live_effects/effect.cpp:140
-#, fuzzy
+#: ../src/live_effects/effect.cpp:141
msgid "Transform by 2 points"
-msgstr "Transforma els degradats"
+msgstr "Transforma per 2 punts"
-#: ../src/live_effects/effect.cpp:141
+#: ../src/live_effects/effect.cpp:142
#: ../src/live_effects/lpe-show_handles.cpp:26
msgid "Show handles"
msgstr "Mostra les nanses"
-#: ../src/live_effects/effect.cpp:143 ../src/widgets/pencil-toolbar.cpp:118
+#: ../src/live_effects/effect.cpp:144 ../src/widgets/pencil-toolbar.cpp:117
msgid "BSpline"
msgstr "BSpline"
-#: ../src/live_effects/effect.cpp:144
+#: ../src/live_effects/effect.cpp:145
msgid "Join type"
msgstr "Tipus de junta"
-#: ../src/live_effects/effect.cpp:145
+#: ../src/live_effects/effect.cpp:146
msgid "Taper stroke"
msgstr "Traç afilat"
-#: ../src/live_effects/effect.cpp:146
+#: ../src/live_effects/effect.cpp:147
msgid "Mirror symmetry"
msgstr "Simetria especular"
-#: ../src/live_effects/effect.cpp:147
+#: ../src/live_effects/effect.cpp:148
msgid "Rotate copies"
msgstr "Gira les còpies"
#. Ponyscape -> Inkscape 0.92
-#: ../src/live_effects/effect.cpp:149
+#: ../src/live_effects/effect.cpp:150
msgid "Attach path"
msgstr "Camí de connexió"
-#: ../src/live_effects/effect.cpp:150
+#: ../src/live_effects/effect.cpp:151
msgid "Fill between strokes"
msgstr "Farciment entre els traços"
-#: ../src/live_effects/effect.cpp:151 ../src/selection-chemistry.cpp:2906
+#: ../src/live_effects/effect.cpp:152 ../src/selection-chemistry.cpp:2906
msgid "Fill between many"
msgstr "Farciment entremig"
-#: ../src/live_effects/effect.cpp:152
+#: ../src/live_effects/effect.cpp:153
msgid "Ellipse by 5 points"
msgstr "El·lipse per 5 punts"
-#: ../src/live_effects/effect.cpp:153
+#: ../src/live_effects/effect.cpp:154
msgid "Bounding Box"
msgstr "Capsa delimitadora"
-#: ../src/live_effects/effect.cpp:361
+#: ../src/live_effects/effect.cpp:362
msgid "Is visible?"
msgstr "És visible?"
-#: ../src/live_effects/effect.cpp:361
+#: ../src/live_effects/effect.cpp:362
msgid ""
"If unchecked, the effect remains applied to the object but is temporarily "
"disabled on canvas"
@@ -9493,22 +9501,22 @@ msgstr ""
"Si no està marcat, l'efecte romandrà en l'objecte però en el llenç es "
"desactivarà al cap d'un temps"
-#: ../src/live_effects/effect.cpp:386
+#: ../src/live_effects/effect.cpp:387
msgid "No effect"
msgstr "Cap efecte"
-#: ../src/live_effects/effect.cpp:498
+#: ../src/live_effects/effect.cpp:500
#, c-format
msgid "Please specify a parameter path for the LPE '%s' with %d mouse clicks"
msgstr ""
"Especifiqueu un paràmetre del camí per al «%s» LPE amb %d clics del ratolí"
-#: ../src/live_effects/effect.cpp:765
+#: ../src/live_effects/effect.cpp:783
#, c-format
msgid "Editing parameter <b>%s</b>."
msgstr "S'està editant el paràmetre <b>%s</b>."
-#: ../src/live_effects/effect.cpp:770
+#: ../src/live_effects/effect.cpp:788
msgid "None of the applied path effect's parameters can be edited on-canvas."
msgstr "Cap dels paràmetres de l'efecte del camí es pot editar en el llenç."
@@ -9582,7 +9590,7 @@ msgid "Path along which to bend the original path"
msgstr "Camí al llarg del qual es corba el camí original"
#: ../src/live_effects/lpe-bendpath.cpp:71
-#: ../src/live_effects/lpe-patternalongpath.cpp:74
+#: ../src/live_effects/lpe-patternalongpath.cpp:64
#: ../src/ui/dialog/export.cpp:285 ../src/ui/dialog/transformation.cpp:73
#: ../src/ui/widget/page-sizer.cpp:237
msgid "_Width:"
@@ -9609,10 +9617,9 @@ msgid "Rotates the original 90 degrees, before bending it along the bend path"
msgstr "Gira l'original 90 graus, abans d'encorbar-ho al llarg del camí"
#: ../src/live_effects/lpe-bendpath.cpp:178
-#: ../src/live_effects/lpe-patternalongpath.cpp:285
-#, fuzzy
+#: ../src/live_effects/lpe-patternalongpath.cpp:277
msgid "Change the width"
-msgstr "Canvia l'amplada del traç"
+msgstr "Canvia l'amplada"
#: ../src/live_effects/lpe-bounding-box.cpp:24
#: ../src/live_effects/lpe-clone-original.cpp:18
@@ -9644,23 +9651,23 @@ msgid "Change number of steps with CTRL pressed"
msgstr "Canvia el número de passos quan premeu Ctrl"
#: ../src/live_effects/lpe-bspline.cpp:31
-#: ../src/live_effects/lpe-simplify.cpp:33
+#: ../src/live_effects/lpe-simplify.cpp:32
#: ../src/live_effects/lpe-transform_2pts.cpp:43
msgid "Helper size:"
msgstr "Mida d'ajuda:"
#: ../src/live_effects/lpe-bspline.cpp:31
-#: ../src/live_effects/lpe-simplify.cpp:33
+#: ../src/live_effects/lpe-simplify.cpp:32
msgid "Helper size"
msgstr "Mida d'ajuda"
#: ../src/live_effects/lpe-bspline.cpp:32
msgid "Apply changes if weight = 0%"
-msgstr ""
+msgstr "Aplica els canvis si el el pes = 0%"
#: ../src/live_effects/lpe-bspline.cpp:33
msgid "Apply changes if weight > 0%"
-msgstr ""
+msgstr "Aplica els canvis si el el pes > 0%"
#: ../src/live_effects/lpe-bspline.cpp:34
#: ../src/live_effects/lpe-fillet-chamfer.cpp:56
@@ -9668,14 +9675,12 @@ msgid "Change only selected nodes"
msgstr "Canvia només els nodes seleccionats"
#: ../src/live_effects/lpe-bspline.cpp:35
-#, fuzzy
msgid "Change weight %:"
-msgstr "Canvieu el pes:"
+msgstr "Canvieu el % de pes:"
#: ../src/live_effects/lpe-bspline.cpp:35
-#, fuzzy
msgid "Change weight percent of the effect"
-msgstr "Canvieu el pes de l'efecte"
+msgstr "Canvieu el percentatge de pes de l'efecte"
#: ../src/live_effects/lpe-bspline.cpp:99
msgid "Default weight"
@@ -9686,14 +9691,12 @@ msgid "Make cusp"
msgstr "Fes una cúspide"
#: ../src/live_effects/lpe-bspline.cpp:148
-#, fuzzy
msgid "Change to default weight"
-msgstr "Pes predeterminat"
+msgstr "Canvia al pes predeterminat"
#: ../src/live_effects/lpe-bspline.cpp:154
-#, fuzzy
msgid "Change to 0 weight"
-msgstr "Canvieu el pes:"
+msgstr "Canvieu el pes a 0:"
#: ../src/live_effects/lpe-bspline.cpp:160
#: ../src/live_effects/lpe-fillet-chamfer.cpp:240
@@ -9718,6 +9721,63 @@ msgstr "Mida _Y:"
msgid "The size of the grid in Y direction."
msgstr "La mida de la graella en la direcció Y."
+#: ../src/live_effects/lpe-copy_rotate.cpp:65
+msgid "Origin"
+msgstr "Origen"
+
+#: ../src/live_effects/lpe-copy_rotate.cpp:65
+msgid "Origin of the rotation"
+msgstr "Origen de la rotació"
+
+#: ../src/live_effects/lpe-copy_rotate.cpp:66
+msgid "Starting:"
+msgstr "Inici:"
+
+#: ../src/live_effects/lpe-copy_rotate.cpp:66
+msgid "Angle of the first copy"
+msgstr "Angle de la primera còpia"
+
+#: ../src/live_effects/lpe-copy_rotate.cpp:67
+msgid "Rotation angle:"
+msgstr "Angle de rotació:"
+
+#: ../src/live_effects/lpe-copy_rotate.cpp:67
+msgid "Angle between two successive copies"
+msgstr "Angle entre dues còpies successives"
+
+#: ../src/live_effects/lpe-copy_rotate.cpp:68
+msgid "Number of copies:"
+msgstr "Nombre de còpies:"
+
+#: ../src/live_effects/lpe-copy_rotate.cpp:68
+msgid "Number of copies of the original path"
+msgstr "Nombre de còpies del camí original"
+
+#: ../src/live_effects/lpe-copy_rotate.cpp:69
+msgid "360º Copies"
+msgstr "Còpies 360º"
+
+#: ../src/live_effects/lpe-copy_rotate.cpp:69
+msgid "No rotation angle, fixed to 360º"
+msgstr "Sense angle de rotació, fixat a 360º"
+
+#: ../src/live_effects/lpe-copy_rotate.cpp:70
+#: ../src/live_effects/lpe-mirror_symmetry.cpp:73
+msgid "Fuse paths"
+msgstr "Fusiona camins"
+
+#: ../src/live_effects/lpe-copy_rotate.cpp:70
+msgid "Fuse paths by helper line, use fill-rule: evenodd for best result"
+msgstr ""
+
+#: ../src/live_effects/lpe-copy_rotate.cpp:431
+msgid "Adjust the starting angle"
+msgstr "Ajusta l'angle d'inici"
+
+#: ../src/live_effects/lpe-copy_rotate.cpp:437
+msgid "Adjust the rotation angle"
+msgstr "Ajusta l'angle de rotació"
+
#: ../src/live_effects/lpe-curvestitch.cpp:41
msgid "Stitch path:"
msgstr "Camí de punts:"
@@ -9883,7 +9943,7 @@ msgid "Reverses the second path order"
msgstr "Inverteix l'ordre del segon camí"
#: ../src/live_effects/lpe-fillet-chamfer.cpp:41
-#: ../src/widgets/text-toolbar.cpp:1788
+#: ../src/widgets/text-toolbar.cpp:1799
#: ../share/extensions/render_barcode_qrcode.inx.h:5
msgid "Auto"
msgstr "Automàtic"
@@ -9949,12 +10009,14 @@ msgid "Helper size with direction"
msgstr "Mida de l'ajuda amb direcció"
#: ../src/live_effects/lpe-fillet-chamfer.cpp:103
+#, fuzzy
msgid "IMPORTANT! New version soon..."
-msgstr ""
+msgstr "Novetats d'aquesta versió"
#: ../src/live_effects/lpe-fillet-chamfer.cpp:107
+#, fuzzy
msgid "Not compatible. Convert to path after."
-msgstr ""
+msgstr "Converteix un traç en camí"
#: ../src/live_effects/lpe-fillet-chamfer.cpp:165
#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:72
@@ -9977,24 +10039,21 @@ msgid "Inverse chamfer"
msgstr "Inverteix el xamfrà"
#: ../src/live_effects/lpe-fillet-chamfer.cpp:247
-#, fuzzy
msgid "Convert to fillet"
-msgstr "Converteix a Braille"
+msgstr "Arrodoneix"
#: ../src/live_effects/lpe-fillet-chamfer.cpp:254
#: ../src/live_effects/lpe-fillet-chamfer.cpp:278
-#, fuzzy
msgid "Convert to inverse fillet"
-msgstr "Converteix a Braille"
+msgstr "Inverteix l'arrodoniment"
#: ../src/live_effects/lpe-fillet-chamfer.cpp:270
-#, fuzzy
msgid "Convert to chamfer"
-msgstr "Converteix en guionets"
+msgstr "Xamfrà"
#: ../src/live_effects/lpe-fillet-chamfer.cpp:290
msgid "Knots and helper paths refreshed"
-msgstr ""
+msgstr "Nusos i camins d'ajuda refrescats"
#: ../src/live_effects/lpe-gears.cpp:214
msgid "_Teeth:"
@@ -10016,6 +10075,14 @@ msgstr ""
"Angle de pressió de les dents (típicament 20-25 graus). Relació de les dents "
"que no estan en contacte."
+#: ../src/live_effects/lpe-gears.cpp:216
+msgid "Min Radius:"
+msgstr "Radi mínim:"
+
+#: ../src/live_effects/lpe-gears.cpp:216
+msgid "Minimun radius, low values can be slow"
+msgstr "Radi mínim, els valors baixos poden ser lents"
+
#: ../src/live_effects/lpe-interpolate.cpp:30
msgid "Trajectory:"
msgstr "Trajectòria:"
@@ -10026,7 +10093,7 @@ msgstr "Camí al llarg del qual es creen passos intermedis."
#: ../src/live_effects/lpe-interpolate.cpp:31
msgid "Steps_:"
-msgstr "Passos:"
+msgstr "Passos_:"
#: ../src/live_effects/lpe-interpolate.cpp:31
msgid "Determines the number of steps from start to end path."
@@ -10047,32 +10114,32 @@ msgstr ""
"nodes de la trajectòria del camí."
#: ../src/live_effects/lpe-interpolate_points.cpp:26
-#: ../src/live_effects/lpe-powerstroke.cpp:134
+#: ../src/live_effects/lpe-powerstroke.cpp:135
msgid "CubicBezierFit"
msgstr "CubicBezierFit"
#: ../src/live_effects/lpe-interpolate_points.cpp:27
-#: ../src/live_effects/lpe-powerstroke.cpp:135
+#: ../src/live_effects/lpe-powerstroke.cpp:136
msgid "CubicBezierJohan"
msgstr "CubicBezierJohan"
#: ../src/live_effects/lpe-interpolate_points.cpp:28
-#: ../src/live_effects/lpe-powerstroke.cpp:136
+#: ../src/live_effects/lpe-powerstroke.cpp:137
msgid "SpiroInterpolator"
msgstr "SpiroInterpolator"
#: ../src/live_effects/lpe-interpolate_points.cpp:29
-#: ../src/live_effects/lpe-powerstroke.cpp:137
+#: ../src/live_effects/lpe-powerstroke.cpp:138
msgid "Centripetal Catmull-Rom"
msgstr "Centrípeta Catmull-Rom"
#: ../src/live_effects/lpe-interpolate_points.cpp:37
-#: ../src/live_effects/lpe-powerstroke.cpp:179
+#: ../src/live_effects/lpe-powerstroke.cpp:180
msgid "Interpolator type:"
msgstr "Tipus d'interpolació:"
#: ../src/live_effects/lpe-interpolate_points.cpp:38
-#: ../src/live_effects/lpe-powerstroke.cpp:179
+#: ../src/live_effects/lpe-powerstroke.cpp:180
msgid ""
"Determines which kind of interpolator will be used to interpolate between "
"stroke width along the path"
@@ -10081,21 +10148,21 @@ msgstr ""
"del traç del camí"
#: ../src/live_effects/lpe-jointype.cpp:31
-#: ../src/live_effects/lpe-powerstroke.cpp:166
+#: ../src/live_effects/lpe-powerstroke.cpp:167
#: ../src/live_effects/lpe-taperstroke.cpp:63
msgid "Beveled"
msgstr "Bisellat"
#: ../src/live_effects/lpe-jointype.cpp:32
#: ../src/live_effects/lpe-jointype.cpp:43
-#: ../src/live_effects/lpe-powerstroke.cpp:167
+#: ../src/live_effects/lpe-powerstroke.cpp:168
#: ../src/live_effects/lpe-taperstroke.cpp:64
#: ../src/widgets/star-toolbar.cpp:534
msgid "Rounded"
msgstr "Arrodonit"
#: ../src/live_effects/lpe-jointype.cpp:33
-#: ../src/live_effects/lpe-powerstroke.cpp:170
+#: ../src/live_effects/lpe-powerstroke.cpp:171
#: ../src/live_effects/lpe-taperstroke.cpp:65
msgid "Miter"
msgstr "Junta"
@@ -10103,41 +10170,38 @@ msgstr "Junta"
#: ../src/live_effects/lpe-jointype.cpp:34
#, fuzzy
msgid "Miter Clip"
-msgstr "Límit de la junta:"
+msgstr "Junta"
#. {LINEJOIN_EXTRP_MITER, N_("Extrapolated"), "extrapolated"}, // disabled because doesn't work well
#: ../src/live_effects/lpe-jointype.cpp:35
-#: ../src/live_effects/lpe-powerstroke.cpp:169
+#: ../src/live_effects/lpe-powerstroke.cpp:170
msgid "Extrapolated arc"
msgstr "Arc extrapolat"
#: ../src/live_effects/lpe-jointype.cpp:36
-#, fuzzy
msgid "Extrapolated arc Alt1"
-msgstr "Arc extrapolat"
+msgstr "Arc extrapolat Alt1"
#: ../src/live_effects/lpe-jointype.cpp:37
-#, fuzzy
msgid "Extrapolated arc Alt2"
-msgstr "Arc extrapolat"
+msgstr "Arc extrapolat Alt2"
#: ../src/live_effects/lpe-jointype.cpp:38
-#, fuzzy
msgid "Extrapolated arc Alt3"
-msgstr "Arc extrapolat"
+msgstr "Arc extrapolat Alt3"
#: ../src/live_effects/lpe-jointype.cpp:42
-#: ../src/live_effects/lpe-powerstroke.cpp:149
+#: ../src/live_effects/lpe-powerstroke.cpp:150
msgid "Butt"
msgstr "Punta"
#: ../src/live_effects/lpe-jointype.cpp:44
-#: ../src/live_effects/lpe-powerstroke.cpp:150
+#: ../src/live_effects/lpe-powerstroke.cpp:151
msgid "Square"
msgstr "Quadrat"
#: ../src/live_effects/lpe-jointype.cpp:45
-#: ../src/live_effects/lpe-powerstroke.cpp:152
+#: ../src/live_effects/lpe-powerstroke.cpp:153
msgid "Peak"
msgstr "Pic"
@@ -10157,20 +10221,20 @@ msgstr "Forma final del traç"
#. TRANSLATORS: The line join style specifies the shape to be used at the
#. corners of paths. It can be "miter", "round" or "bevel".
#: ../src/live_effects/lpe-jointype.cpp:56
-#: ../src/live_effects/lpe-powerstroke.cpp:182
+#: ../src/live_effects/lpe-powerstroke.cpp:183
#: ../src/widgets/stroke-style.cpp:288
msgid "Join:"
msgstr "Junta:"
#: ../src/live_effects/lpe-jointype.cpp:56
-#: ../src/live_effects/lpe-powerstroke.cpp:182
+#: ../src/live_effects/lpe-powerstroke.cpp:183
msgid "Determines the shape of the path's corners"
msgstr "Determina la forma de les cantonades del camí"
#. start_lean(_("Start path lean"), _("Start path lean"), "start_lean", &wr, this, 0.),
#. end_lean(_("End path lean"), _("End path lean"), "end_lean", &wr, this, 0.),
#: ../src/live_effects/lpe-jointype.cpp:59
-#: ../src/live_effects/lpe-powerstroke.cpp:183
+#: ../src/live_effects/lpe-powerstroke.cpp:184
#: ../src/live_effects/lpe-taperstroke.cpp:78
msgid "Miter limit:"
msgstr "Límit de la junta:"
@@ -10245,334 +10309,384 @@ msgstr "Arrossegueu per seleccionar l'encreuament, feu clic per invertir-lo"
msgid "Change knot crossing"
msgstr "Canvia l'encreuament de nusos"
-#: ../src/live_effects/lpe-lattice2.cpp:47
+#: ../src/live_effects/lpe-lattice2.cpp:46
#: ../src/live_effects/lpe-perspective-envelope.cpp:43
-#, fuzzy
msgid "Mirror movements in horizontal"
-msgstr "Mou els nodes horitzontalment"
+msgstr "Reflecteix els moviments horitzontalment"
-#: ../src/live_effects/lpe-lattice2.cpp:48
+#: ../src/live_effects/lpe-lattice2.cpp:47
#: ../src/live_effects/lpe-perspective-envelope.cpp:44
-#, fuzzy
msgid "Mirror movements in vertical"
-msgstr "Mou els nodes verticalment"
+msgstr "Reflecteix els moviments verticalment"
-#: ../src/live_effects/lpe-lattice2.cpp:49
+#: ../src/live_effects/lpe-lattice2.cpp:48
msgid "Update while moving knots (maybe slow)"
msgstr ""
-#: ../src/live_effects/lpe-lattice2.cpp:50
-#, fuzzy
+#: ../src/live_effects/lpe-lattice2.cpp:49
msgid "Control 0:"
-msgstr "Nansa de control 0:"
+msgstr "Control 0:"
-#: ../src/live_effects/lpe-lattice2.cpp:50
+#: ../src/live_effects/lpe-lattice2.cpp:49
msgid "Control 0 - <b>Ctrl+Alt+Click</b>: reset, <b>Ctrl</b>: move along axes"
msgstr ""
-#: ../src/live_effects/lpe-lattice2.cpp:51
-#, fuzzy
+#: ../src/live_effects/lpe-lattice2.cpp:50
msgid "Control 1:"
-msgstr "Nansa de control 1:"
+msgstr "Control 1:"
-#: ../src/live_effects/lpe-lattice2.cpp:51
+#: ../src/live_effects/lpe-lattice2.cpp:50
msgid "Control 1 - <b>Ctrl+Alt+Click</b>: reset, <b>Ctrl</b>: move along axes"
msgstr ""
-#: ../src/live_effects/lpe-lattice2.cpp:52
-#, fuzzy
+#: ../src/live_effects/lpe-lattice2.cpp:51
msgid "Control 2:"
-msgstr "Nansa de control 2:"
+msgstr "Control 2:"
-#: ../src/live_effects/lpe-lattice2.cpp:52
+#: ../src/live_effects/lpe-lattice2.cpp:51
msgid "Control 2 - <b>Ctrl+Alt+Click</b>: reset, <b>Ctrl</b>: move along axes"
msgstr ""
-#: ../src/live_effects/lpe-lattice2.cpp:53
-#, fuzzy
+#: ../src/live_effects/lpe-lattice2.cpp:52
msgid "Control 3:"
-msgstr "Nansa de control 3:"
+msgstr "Control 3:"
-#: ../src/live_effects/lpe-lattice2.cpp:53
+#: ../src/live_effects/lpe-lattice2.cpp:52
msgid "Control 3 - <b>Ctrl+Alt+Click</b>: reset, <b>Ctrl</b>: move along axes"
msgstr ""
-#: ../src/live_effects/lpe-lattice2.cpp:54
-#, fuzzy
+#: ../src/live_effects/lpe-lattice2.cpp:53
msgid "Control 4:"
-msgstr "Nansa de control 4:"
+msgstr "Control 4:"
-#: ../src/live_effects/lpe-lattice2.cpp:54
+#: ../src/live_effects/lpe-lattice2.cpp:53
msgid "Control 4 - <b>Ctrl+Alt+Click</b>: reset, <b>Ctrl</b>: move along axes"
msgstr ""
-#: ../src/live_effects/lpe-lattice2.cpp:55
-#, fuzzy
+#: ../src/live_effects/lpe-lattice2.cpp:54
msgid "Control 5:"
-msgstr "Nansa de control 5:"
+msgstr "Control 5:"
-#: ../src/live_effects/lpe-lattice2.cpp:55
+#: ../src/live_effects/lpe-lattice2.cpp:54
msgid "Control 5 - <b>Ctrl+Alt+Click</b>: reset, <b>Ctrl</b>: move along axes"
msgstr ""
-#: ../src/live_effects/lpe-lattice2.cpp:56
-#, fuzzy
+#: ../src/live_effects/lpe-lattice2.cpp:55
msgid "Control 6:"
-msgstr "Nansa de control 6:"
+msgstr "Control 6:"
-#: ../src/live_effects/lpe-lattice2.cpp:56
+#: ../src/live_effects/lpe-lattice2.cpp:55
msgid "Control 6 - <b>Ctrl+Alt+Click</b>: reset, <b>Ctrl</b>: move along axes"
msgstr ""
-#: ../src/live_effects/lpe-lattice2.cpp:57
-#, fuzzy
+#: ../src/live_effects/lpe-lattice2.cpp:56
msgid "Control 7:"
-msgstr "Nansa de control 7:"
+msgstr "Control 7:"
-#: ../src/live_effects/lpe-lattice2.cpp:57
+#: ../src/live_effects/lpe-lattice2.cpp:56
msgid "Control 7 - <b>Ctrl+Alt+Click</b>: reset, <b>Ctrl</b>: move along axes"
msgstr ""
-#: ../src/live_effects/lpe-lattice2.cpp:58
-#, fuzzy
+#: ../src/live_effects/lpe-lattice2.cpp:57
msgid "Control 8x9:"
-msgstr "Nansa de control 8x9:"
+msgstr "Control 8x9:"
-#: ../src/live_effects/lpe-lattice2.cpp:58
+#: ../src/live_effects/lpe-lattice2.cpp:57
msgid ""
"Control 8x9 - <b>Ctrl+Alt+Click</b>: reset, <b>Ctrl</b>: move along axes"
msgstr ""
-#: ../src/live_effects/lpe-lattice2.cpp:59
-#, fuzzy
+#: ../src/live_effects/lpe-lattice2.cpp:58
msgid "Control 10x11:"
-msgstr "Nansa de control 10x11:"
+msgstr "Control 10x11:"
-#: ../src/live_effects/lpe-lattice2.cpp:59
+#: ../src/live_effects/lpe-lattice2.cpp:58
#, fuzzy
msgid ""
"Control 10x11 - <b>Ctrl+Alt+Click</b>: reset, <b>Ctrl</b>: move along axes"
msgstr "Nansa de control 10x11 - Ctrl+Alt+Clic reiniciar"
-#: ../src/live_effects/lpe-lattice2.cpp:60
-#, fuzzy
+#: ../src/live_effects/lpe-lattice2.cpp:59
msgid "Control 12:"
-msgstr "Nansa de control 12:"
+msgstr "Control 12:"
-#: ../src/live_effects/lpe-lattice2.cpp:60
+#: ../src/live_effects/lpe-lattice2.cpp:59
msgid "Control 12 - <b>Ctrl+Alt+Click</b>: reset, <b>Ctrl</b>: move along axes"
msgstr ""
-#: ../src/live_effects/lpe-lattice2.cpp:61
-#, fuzzy
+#: ../src/live_effects/lpe-lattice2.cpp:60
msgid "Control 13:"
-msgstr "Nansa de control 13:"
+msgstr "Control 13:"
-#: ../src/live_effects/lpe-lattice2.cpp:61
+#: ../src/live_effects/lpe-lattice2.cpp:60
msgid "Control 13 - <b>Ctrl+Alt+Click</b>: reset, <b>Ctrl</b>: move along axes"
msgstr ""
-#: ../src/live_effects/lpe-lattice2.cpp:62
-#, fuzzy
+#: ../src/live_effects/lpe-lattice2.cpp:61
msgid "Control 14:"
-msgstr "Nansa de control 14:"
+msgstr "Control 14:"
-#: ../src/live_effects/lpe-lattice2.cpp:62
+#: ../src/live_effects/lpe-lattice2.cpp:61
msgid "Control 14 - <b>Ctrl+Alt+Click</b>: reset, <b>Ctrl</b>: move along axes"
msgstr ""
-#: ../src/live_effects/lpe-lattice2.cpp:63
-#, fuzzy
+#: ../src/live_effects/lpe-lattice2.cpp:62
msgid "Control 15:"
-msgstr "Nansa de control 15:"
+msgstr "Control 15:"
-#: ../src/live_effects/lpe-lattice2.cpp:63
+#: ../src/live_effects/lpe-lattice2.cpp:62
msgid "Control 15 - <b>Ctrl+Alt+Click</b>: reset, <b>Ctrl</b>: move along axes"
msgstr ""
-#: ../src/live_effects/lpe-lattice2.cpp:64
-#, fuzzy
+#: ../src/live_effects/lpe-lattice2.cpp:63
msgid "Control 16:"
-msgstr "Nansa de control 16:"
+msgstr "Control 16:"
-#: ../src/live_effects/lpe-lattice2.cpp:64
+#: ../src/live_effects/lpe-lattice2.cpp:63
msgid "Control 16 - <b>Ctrl+Alt+Click</b>: reset, <b>Ctrl</b>: move along axes"
msgstr ""
-#: ../src/live_effects/lpe-lattice2.cpp:65
-#, fuzzy
+#: ../src/live_effects/lpe-lattice2.cpp:64
msgid "Control 17:"
-msgstr "Nansa de control 17:"
+msgstr "Control 17:"
-#: ../src/live_effects/lpe-lattice2.cpp:65
+#: ../src/live_effects/lpe-lattice2.cpp:64
msgid "Control 17 - <b>Ctrl+Alt+Click</b>: reset, <b>Ctrl</b>: move along axes"
msgstr ""
-#: ../src/live_effects/lpe-lattice2.cpp:66
-#, fuzzy
+#: ../src/live_effects/lpe-lattice2.cpp:65
msgid "Control 18:"
-msgstr "Nansa de control 18:"
+msgstr "Control 18:"
-#: ../src/live_effects/lpe-lattice2.cpp:66
+#: ../src/live_effects/lpe-lattice2.cpp:65
msgid "Control 18 - <b>Ctrl+Alt+Click</b>: reset, <b>Ctrl</b>: move along axes"
msgstr ""
-#: ../src/live_effects/lpe-lattice2.cpp:67
-#, fuzzy
+#: ../src/live_effects/lpe-lattice2.cpp:66
msgid "Control 19:"
-msgstr "Nansa de control 19:"
+msgstr "Control 19:"
-#: ../src/live_effects/lpe-lattice2.cpp:67
+#: ../src/live_effects/lpe-lattice2.cpp:66
msgid "Control 19 - <b>Ctrl+Alt+Click</b>: reset, <b>Ctrl</b>: move along axes"
msgstr ""
-#: ../src/live_effects/lpe-lattice2.cpp:68
-#, fuzzy
+#: ../src/live_effects/lpe-lattice2.cpp:67
msgid "Control 20x21:"
-msgstr "Nansa de control 20x21:"
+msgstr "Control 20x21:"
-#: ../src/live_effects/lpe-lattice2.cpp:68
+#: ../src/live_effects/lpe-lattice2.cpp:67
#, fuzzy
msgid ""
"Control 20x21 - <b>Ctrl+Alt+Click</b>: reset, <b>Ctrl</b>: move along axes"
msgstr "Nansa de control 20x21 - Ctrl+Alt+Clic reiniciar"
-#: ../src/live_effects/lpe-lattice2.cpp:69
+#: ../src/live_effects/lpe-lattice2.cpp:68
#, fuzzy
msgid "Control 22x23:"
msgstr "Nansa de control 22x23:"
-#: ../src/live_effects/lpe-lattice2.cpp:69
+#: ../src/live_effects/lpe-lattice2.cpp:68
#, fuzzy
msgid ""
"Control 22x23 - <b>Ctrl+Alt+Click</b>: reset, <b>Ctrl</b>: move along axes"
msgstr "Nansa de control 22x23 - Ctrl+Alt+Clic reiniciar"
-#: ../src/live_effects/lpe-lattice2.cpp:70
+#: ../src/live_effects/lpe-lattice2.cpp:69
#, fuzzy
msgid "Control 24x26:"
msgstr "Nansa de control 24x26:"
-#: ../src/live_effects/lpe-lattice2.cpp:70
+#: ../src/live_effects/lpe-lattice2.cpp:69
#, fuzzy
msgid ""
"Control 24x26 - <b>Ctrl+Alt+Click</b>: reset, <b>Ctrl</b>: move along axes"
msgstr "Nansa de control 24x26 - Ctrl+Alt+Clic reiniciar"
-#: ../src/live_effects/lpe-lattice2.cpp:71
+#: ../src/live_effects/lpe-lattice2.cpp:70
#, fuzzy
msgid "Control 25x27:"
msgstr "Nansa de control 25x27:"
-#: ../src/live_effects/lpe-lattice2.cpp:71
+#: ../src/live_effects/lpe-lattice2.cpp:70
#, fuzzy
msgid ""
"Control 25x27 - <b>Ctrl+Alt+Click</b>: reset, <b>Ctrl</b>: move along axes"
msgstr "Nansa de control 25x27 - Ctrl+Alt+Clic reiniciar"
-#: ../src/live_effects/lpe-lattice2.cpp:72
+#: ../src/live_effects/lpe-lattice2.cpp:71
#, fuzzy
msgid "Control 28x30:"
msgstr "Nansa de control 28x30:"
-#: ../src/live_effects/lpe-lattice2.cpp:72
+#: ../src/live_effects/lpe-lattice2.cpp:71
#, fuzzy
msgid ""
"Control 28x30 - <b>Ctrl+Alt+Click</b>: reset, <b>Ctrl</b>: move along axes"
msgstr "Nansa de control 28x30 - Ctrl+Alt+Clic reiniciar"
-#: ../src/live_effects/lpe-lattice2.cpp:73
+#: ../src/live_effects/lpe-lattice2.cpp:72
#, fuzzy
msgid "Control 29x31:"
msgstr "Nansa de control 29x31:"
-#: ../src/live_effects/lpe-lattice2.cpp:73
+#: ../src/live_effects/lpe-lattice2.cpp:72
#, fuzzy
msgid ""
"Control 29x31 - <b>Ctrl+Alt+Click</b>: reset, <b>Ctrl</b>: move along axes"
msgstr "Nansa de control 29x31 - Ctrl+Alt+Clic reiniciar"
-#: ../src/live_effects/lpe-lattice2.cpp:74
+#: ../src/live_effects/lpe-lattice2.cpp:73
#, fuzzy
msgid "Control 32x33x34x35:"
msgstr "Nansa de control 32x33x34x35:"
-#: ../src/live_effects/lpe-lattice2.cpp:74
+#: ../src/live_effects/lpe-lattice2.cpp:73
#, fuzzy
msgid ""
"Control 32x33x34x35 - <b>Ctrl+Alt+Click</b>: reset, <b>Ctrl</b>: move along "
"axes"
msgstr "Nansa de control 32x33x34x35 - Ctrl+Alt+Clic reiniciar"
-#: ../src/live_effects/lpe-lattice2.cpp:239
+#: ../src/live_effects/lpe-lattice2.cpp:238
msgid "Reset grid"
msgstr "Reinicia la graella"
-#: ../src/live_effects/lpe-lattice2.cpp:271
-#: ../src/live_effects/lpe-lattice2.cpp:286
-#, fuzzy
+#: ../src/live_effects/lpe-lattice2.cpp:270
+#: ../src/live_effects/lpe-lattice2.cpp:285
msgid "Show Points"
-msgstr "Ordena els punts"
+msgstr "Mostra els punts"
-#: ../src/live_effects/lpe-lattice2.cpp:284
-#, fuzzy
+#: ../src/live_effects/lpe-lattice2.cpp:283
msgid "Hide Points"
-msgstr "Amaga els nodes"
+msgstr "Amaga els punts"
+
+#: ../src/live_effects/lpe-mirror_symmetry.cpp:35
+#, fuzzy
+msgid "Vertical Page Center"
+msgstr "Centre (vertical)"
+
+#: ../src/live_effects/lpe-mirror_symmetry.cpp:36
+#, fuzzy
+msgid "Horizontal Page Center"
+msgstr "Horitzontal centre"
+
+#: ../src/live_effects/lpe-mirror_symmetry.cpp:37
+#, fuzzy
+msgid "Free from reflection line"
+msgstr "Diccionari lliure d'informàtica en línia"
+
+#: ../src/live_effects/lpe-mirror_symmetry.cpp:38
+#, fuzzy
+msgid "X from middle knot"
+msgstr "Des del mig"
+
+#: ../src/live_effects/lpe-mirror_symmetry.cpp:39
+#, fuzzy
+msgid "Y from middle knot"
+msgstr "Des del mig"
+
+#: ../src/live_effects/lpe-mirror_symmetry.cpp:71
+#: ../src/widgets/spray-toolbar.cpp:388 ../src/widgets/tweak-toolbar.cpp:253
+msgid "Mode"
+msgstr "Mode"
+
+#: ../src/live_effects/lpe-mirror_symmetry.cpp:71
+#, fuzzy
+msgid "Symmetry move mode"
+msgstr "Sense simetria"
+
+#: ../src/live_effects/lpe-mirror_symmetry.cpp:72
+#, fuzzy
+msgid "Discard original path?"
+msgstr "Camí original:"
+
+#: ../src/live_effects/lpe-mirror_symmetry.cpp:72
+msgid "Check this to only keep the mirrored part of the path"
+msgstr ""
+
+#: ../src/live_effects/lpe-mirror_symmetry.cpp:73
+msgid "Fuse original and the reflection into a single path"
+msgstr ""
+
+#: ../src/live_effects/lpe-mirror_symmetry.cpp:74
+#, fuzzy
+msgid "Opposite fuse"
+msgstr "oposat"
+
+#: ../src/live_effects/lpe-mirror_symmetry.cpp:74
+#, fuzzy
+msgid "Picks the other side of the mirror as the original"
+msgstr "Els clons es traslladen seguint el mateix vector que l'original"
+
+#: ../src/live_effects/lpe-mirror_symmetry.cpp:75
+#, fuzzy
+msgid "Start mirror line"
+msgstr "No a l'inici de línia:"
-#: ../src/live_effects/lpe-patternalongpath.cpp:63
+#: ../src/live_effects/lpe-mirror_symmetry.cpp:76
+#, fuzzy
+msgid "End mirror line"
+msgstr "Fi de línia"
+
+#: ../src/live_effects/lpe-mirror_symmetry.cpp:353
+#, fuzzy
+msgid "Adjust the center"
+msgstr "Ajust:"
+
+#: ../src/live_effects/lpe-patternalongpath.cpp:53
#: ../share/extensions/pathalongpath.inx.h:10
msgid "Single"
msgstr "Únic"
-#: ../src/live_effects/lpe-patternalongpath.cpp:64
+#: ../src/live_effects/lpe-patternalongpath.cpp:54
#: ../share/extensions/pathalongpath.inx.h:11
msgid "Single, stretched"
msgstr "Únic, estirat"
-#: ../src/live_effects/lpe-patternalongpath.cpp:65
+#: ../src/live_effects/lpe-patternalongpath.cpp:55
#: ../share/extensions/pathalongpath.inx.h:12
msgid "Repeated"
msgstr "Repetit"
-#: ../src/live_effects/lpe-patternalongpath.cpp:66
+#: ../src/live_effects/lpe-patternalongpath.cpp:56
#: ../share/extensions/pathalongpath.inx.h:13
msgid "Repeated, stretched"
msgstr "Repetit, estirat"
-#: ../src/live_effects/lpe-patternalongpath.cpp:72
+#: ../src/live_effects/lpe-patternalongpath.cpp:62
msgid "Pattern source:"
msgstr "Font del patró:"
-#: ../src/live_effects/lpe-patternalongpath.cpp:72
+#: ../src/live_effects/lpe-patternalongpath.cpp:62
msgid "Path to put along the skeleton path"
msgstr "Camí a disposar sobre l'esquelet del camí"
-#: ../src/live_effects/lpe-patternalongpath.cpp:74
+#: ../src/live_effects/lpe-patternalongpath.cpp:64
msgid "Width of the pattern"
msgstr "Amplada del patró"
-#: ../src/live_effects/lpe-patternalongpath.cpp:75
+#: ../src/live_effects/lpe-patternalongpath.cpp:65
msgid "Pattern copies:"
msgstr "Còpies del patró:"
-#: ../src/live_effects/lpe-patternalongpath.cpp:75
+#: ../src/live_effects/lpe-patternalongpath.cpp:65
msgid "How many pattern copies to place along the skeleton path"
msgstr ""
"Quantitat de còpies del patró que es disposen sobre l'esquelet del camí"
-#: ../src/live_effects/lpe-patternalongpath.cpp:77
+#: ../src/live_effects/lpe-patternalongpath.cpp:67
msgid "Wid_th in units of length"
msgstr "_Amplada en unitats de longitud"
-#: ../src/live_effects/lpe-patternalongpath.cpp:78
+#: ../src/live_effects/lpe-patternalongpath.cpp:68
msgid "Scale the width of the pattern in units of its length"
msgstr "Escala l'amplada del patró en unitats de la seva longitud"
-#: ../src/live_effects/lpe-patternalongpath.cpp:80
+#: ../src/live_effects/lpe-patternalongpath.cpp:70
msgid "Spa_cing:"
msgstr "_Espaiat:"
-#: ../src/live_effects/lpe-patternalongpath.cpp:82
+#: ../src/live_effects/lpe-patternalongpath.cpp:72
#, no-c-format
msgid ""
"Space between copies of the pattern. Negative values allowed, but are "
@@ -10581,19 +10695,19 @@ msgstr ""
"Espai entre les còpies del patró. Es permeten valors negatius, però limitats "
"al -90% de l'amplada del patró."
-#: ../src/live_effects/lpe-patternalongpath.cpp:84
+#: ../src/live_effects/lpe-patternalongpath.cpp:74
msgid "No_rmal offset:"
msgstr "_Desplaçament normal:"
-#: ../src/live_effects/lpe-patternalongpath.cpp:85
+#: ../src/live_effects/lpe-patternalongpath.cpp:75
msgid "Tan_gential offset:"
msgstr "Desplaçament tan_gencial:"
-#: ../src/live_effects/lpe-patternalongpath.cpp:86
+#: ../src/live_effects/lpe-patternalongpath.cpp:76
msgid "Offsets in _unit of pattern size"
msgstr "Desplaçament en _unitats de la mida del patró"
-#: ../src/live_effects/lpe-patternalongpath.cpp:87
+#: ../src/live_effects/lpe-patternalongpath.cpp:77
msgid ""
"Spacing, tangential and normal offset are expressed as a ratio of width/"
"height"
@@ -10601,19 +10715,19 @@ msgstr ""
"L'espai amb desplaçament tangencial i normal s'expressa com a relació de "
"l'amplada i l'alçada"
-#: ../src/live_effects/lpe-patternalongpath.cpp:89
+#: ../src/live_effects/lpe-patternalongpath.cpp:79
msgid "Pattern is _vertical"
msgstr "El patró és _vertical"
-#: ../src/live_effects/lpe-patternalongpath.cpp:89
+#: ../src/live_effects/lpe-patternalongpath.cpp:79
msgid "Rotate pattern 90 deg before applying"
msgstr "Gira el patró 90 graus abans d'aplicar"
-#: ../src/live_effects/lpe-patternalongpath.cpp:91
+#: ../src/live_effects/lpe-patternalongpath.cpp:81
msgid "_Fuse nearby ends:"
msgstr "_Fusiona els extrems propers:"
-#: ../src/live_effects/lpe-patternalongpath.cpp:91
+#: ../src/live_effects/lpe-patternalongpath.cpp:81
msgid "Fuse ends closer than this number. 0 means don't fuse."
msgstr ""
"Fusiona els extrems que estiguin més a prop d'aquest número. 0 significa que "
@@ -10631,7 +10745,7 @@ msgstr "Deformació per embolcall"
#: ../src/live_effects/lpe-perspective-envelope.cpp:45
#, fuzzy
msgid "Overflow perspective"
-msgstr "Perspectiva"
+msgstr "_Perspectiva"
#: ../src/live_effects/lpe-perspective-envelope.cpp:46
msgid "Type"
@@ -10681,42 +10795,42 @@ msgstr "A baix dreta - Ctrl+Alt+Clic reiniciar"
msgid "Handles:"
msgstr "Nanses:"
-#: ../src/live_effects/lpe-powerstroke.cpp:132
+#: ../src/live_effects/lpe-powerstroke.cpp:133
msgid "CubicBezierSmooth"
msgstr "CubicBezierSmooth"
-#: ../src/live_effects/lpe-powerstroke.cpp:151
+#: ../src/live_effects/lpe-powerstroke.cpp:152
#: ../share/extensions/gcodetools_prepare_path_for_plasma.inx.h:13
msgid "Round"
msgstr "Arrodonit"
-#: ../src/live_effects/lpe-powerstroke.cpp:153
+#: ../src/live_effects/lpe-powerstroke.cpp:154
msgid "Zero width"
msgstr "Amplada zero"
-#: ../src/live_effects/lpe-powerstroke.cpp:171
-#: ../src/widgets/pencil-toolbar.cpp:112
+#: ../src/live_effects/lpe-powerstroke.cpp:172
+#: ../src/widgets/pencil-toolbar.cpp:111
msgid "Spiro"
msgstr "Espiral"
-#: ../src/live_effects/lpe-powerstroke.cpp:177
+#: ../src/live_effects/lpe-powerstroke.cpp:178
msgid "Offset points"
msgstr "Punts de desplaçament"
-#: ../src/live_effects/lpe-powerstroke.cpp:178
+#: ../src/live_effects/lpe-powerstroke.cpp:179
msgid "Sort points"
msgstr "Ordena els punts"
-#: ../src/live_effects/lpe-powerstroke.cpp:178
+#: ../src/live_effects/lpe-powerstroke.cpp:179
msgid "Sort offset points according to their time value along the curve"
msgstr "Ordena els punts desplaçats segons el seu valor al llarg de la corba"
-#: ../src/live_effects/lpe-powerstroke.cpp:180
+#: ../src/live_effects/lpe-powerstroke.cpp:181
#: ../share/extensions/fractalize.inx.h:3
msgid "Smoothness:"
msgstr "Suavitat:"
-#: ../src/live_effects/lpe-powerstroke.cpp:180
+#: ../src/live_effects/lpe-powerstroke.cpp:181
msgid ""
"Sets the smoothness for the CubicBezierJohan interpolator; 0 = linear "
"interpolation, 1 = smooth"
@@ -10724,24 +10838,24 @@ msgstr ""
"Estableix la suavitat del CubicBezierJohan interpolador; 0 = interpolació "
"lineal, 1 = suau"
-#: ../src/live_effects/lpe-powerstroke.cpp:181
+#: ../src/live_effects/lpe-powerstroke.cpp:182
msgid "Start cap:"
msgstr "Extremitat inicial:"
-#: ../src/live_effects/lpe-powerstroke.cpp:181
+#: ../src/live_effects/lpe-powerstroke.cpp:182
msgid "Determines the shape of the path's start"
msgstr "Determina la forma de l'inici del camí"
-#: ../src/live_effects/lpe-powerstroke.cpp:183
+#: ../src/live_effects/lpe-powerstroke.cpp:184
#: ../src/widgets/stroke-style.cpp:335
msgid "Maximum length of the miter (in units of stroke width)"
msgstr "Longitud màxima de la punxa (en unitats de l'amplada del traç)"
-#: ../src/live_effects/lpe-powerstroke.cpp:184
+#: ../src/live_effects/lpe-powerstroke.cpp:185
msgid "End cap:"
msgstr "Extremitat final:"
-#: ../src/live_effects/lpe-powerstroke.cpp:184
+#: ../src/live_effects/lpe-powerstroke.cpp:185
msgid "Determines the shape of the path's end"
msgstr "Determina la forma del final del camí"
@@ -10946,17 +11060,17 @@ msgstr "Per la mida màxima del segment"
#: ../src/live_effects/lpe-roughen.cpp:38
#, fuzzy
msgid "Along nodes"
-msgstr "Uneix els nodes"
+msgstr "Along"
#: ../src/live_effects/lpe-roughen.cpp:39
#, fuzzy
msgid "Rand"
-msgstr "Aleatòriament"
+msgstr "Rand"
#: ../src/live_effects/lpe-roughen.cpp:40
#, fuzzy
msgid "Retract"
-msgstr "Extreu"
+msgstr "Tanca"
#. initialise your parameters here:
#: ../src/live_effects/lpe-roughen.cpp:49
@@ -10988,14 +11102,12 @@ msgid "Global randomize"
msgstr "Aleatorietat global"
#: ../src/live_effects/lpe-roughen.cpp:61
-#, fuzzy
msgid "Handles"
-msgstr "Nanses:"
+msgstr "Nanses"
#: ../src/live_effects/lpe-roughen.cpp:61
-#, fuzzy
msgid "Handles options"
-msgstr "Posicions aleatòries"
+msgstr "Opcions de les nanses:"
#: ../src/live_effects/lpe-roughen.cpp:63
#: ../share/extensions/jitternodes.inx.h:5
@@ -11003,18 +11115,16 @@ msgid "Shift nodes"
msgstr "Canvia els nodes"
#: ../src/live_effects/lpe-roughen.cpp:65
-#, fuzzy
msgid "Fixed displacement"
-msgstr "Desplaçament X:"
+msgstr "Desplaçament fix:"
#: ../src/live_effects/lpe-roughen.cpp:65
msgid "Fixed displacement, 1/3 of segment length"
-msgstr ""
+msgstr "Desplaçament fix, 1/3 de la longitud del segment"
#: ../src/live_effects/lpe-roughen.cpp:67
-#, fuzzy
msgid "Spray Tool friendly"
-msgstr "Preferències de l'eina esprai"
+msgstr "Eina esprai amigable"
#: ../src/live_effects/lpe-roughen.cpp:67
msgid "For use with spray tool in copy mode"
@@ -11033,8 +11143,9 @@ msgid "<b>Extra roughen</b> Add a extra layer of rough"
msgstr "<b>Extra rugós</b> Afegeix una capa extra de rugositat"
#: ../src/live_effects/lpe-roughen.cpp:148
+#, fuzzy
msgid "<b>Options</b> Modify options to rough"
-msgstr ""
+msgstr "<b>Opcions de la partició</b>"
#: ../src/live_effects/lpe-ruler.cpp:25 ../share/extensions/measure.inx.h:27
#: ../share/extensions/restack.inx.h:16
@@ -11061,13 +11172,13 @@ msgstr "Cap"
#: ../src/live_effects/lpe-ruler.cpp:33
#: ../src/live_effects/lpe-transform_2pts.cpp:37
-#: ../src/ui/tools/measure-tool.cpp:756 ../src/widgets/arc-toolbar.cpp:319
+#: ../src/ui/tools/measure-tool.cpp:755 ../src/widgets/arc-toolbar.cpp:319
msgid "Start"
msgstr "Inici"
#: ../src/live_effects/lpe-ruler.cpp:34
#: ../src/live_effects/lpe-transform_2pts.cpp:38
-#: ../src/ui/tools/measure-tool.cpp:757 ../src/widgets/arc-toolbar.cpp:332
+#: ../src/ui/tools/measure-tool.cpp:756 ../src/widgets/arc-toolbar.cpp:332
msgid "End"
msgstr "Fi"
@@ -11175,40 +11286,39 @@ msgstr ""
"personalitzat que estiguis aplicant a l'objecte. Si això no és el que vols, "
"fes clic a cancel·la."
-#: ../src/live_effects/lpe-simplify.cpp:30
+#: ../src/live_effects/lpe-simplify.cpp:29
msgid "Steps:"
msgstr "Passos:"
-#: ../src/live_effects/lpe-simplify.cpp:30
+#: ../src/live_effects/lpe-simplify.cpp:29
msgid "Change number of simplify steps "
msgstr "Canvia el nombre de passos simplificats"
-#: ../src/live_effects/lpe-simplify.cpp:31
+#: ../src/live_effects/lpe-simplify.cpp:30
msgid "Roughly threshold:"
msgstr "Llindar poc definit:"
-#: ../src/live_effects/lpe-simplify.cpp:32
-#, fuzzy
+#: ../src/live_effects/lpe-simplify.cpp:31
msgid "Smooth angles:"
-msgstr "Suavitat:"
+msgstr "Suavitza els angles:"
-#: ../src/live_effects/lpe-simplify.cpp:32
+#: ../src/live_effects/lpe-simplify.cpp:31
msgid "Max degree difference on handles to perform a smooth"
msgstr ""
-#: ../src/live_effects/lpe-simplify.cpp:34
+#: ../src/live_effects/lpe-simplify.cpp:33
msgid "Paths separately"
msgstr "Camins per separat"
-#: ../src/live_effects/lpe-simplify.cpp:34
+#: ../src/live_effects/lpe-simplify.cpp:33
msgid "Simplifying paths (separately)"
msgstr "Simplificació dels camins (per separat)"
-#: ../src/live_effects/lpe-simplify.cpp:36
+#: ../src/live_effects/lpe-simplify.cpp:35
msgid "Just coalesce"
msgstr "Només la fusió"
-#: ../src/live_effects/lpe-simplify.cpp:36
+#: ../src/live_effects/lpe-simplify.cpp:35
msgid "Simplify just coalesce"
msgstr "Simplifica només la fusió"
@@ -11414,94 +11524,77 @@ msgid "End point of the taper"
msgstr "Punt final del fus"
#: ../src/live_effects/lpe-transform_2pts.cpp:31
-#, fuzzy
msgid "Elastic"
-msgstr "Plastilina"
+msgstr "Elàstic"
#: ../src/live_effects/lpe-transform_2pts.cpp:31
-#, fuzzy
msgid "Elastic transform mode"
-msgstr "Selecciona i transforma els objectes"
+msgstr "Mode de transformació elàstic"
#: ../src/live_effects/lpe-transform_2pts.cpp:32
-#, fuzzy
msgid "From original width"
-msgstr "Clona el camí original"
+msgstr "Des de l'amplada original"
#: ../src/live_effects/lpe-transform_2pts.cpp:33
-#, fuzzy
msgid "Lock length"
-msgstr "Bloca la capa"
+msgstr "Bloca la longitud"
#: ../src/live_effects/lpe-transform_2pts.cpp:33
-#, fuzzy
msgid "Lock length to current distance"
-msgstr "Bloca o desbloca la capa actual"
+msgstr "Bloca la longitud a la distància actual"
#: ../src/live_effects/lpe-transform_2pts.cpp:34
-#, fuzzy
msgid "Lock angle"
-msgstr "Angle del con"
+msgstr "Bloca l'angle"
#: ../src/live_effects/lpe-transform_2pts.cpp:35
-#, fuzzy
msgid "Flip horizontal"
-msgstr "Volteja horitzontalment"
+msgstr "Capgira horitzontalment"
#: ../src/live_effects/lpe-transform_2pts.cpp:36
-#, fuzzy
msgid "Flip vertical"
-msgstr "Volteja verticalment"
+msgstr "Capgira verticalment"
#: ../src/live_effects/lpe-transform_2pts.cpp:37
-#, fuzzy
msgid "Start point"
-msgstr "Ordena els punts"
+msgstr "Punt d'inici"
#: ../src/live_effects/lpe-transform_2pts.cpp:38
-#, fuzzy
msgid "End point"
-msgstr "Camí del final:"
+msgstr "Punt final"
#: ../src/live_effects/lpe-transform_2pts.cpp:39
-#, fuzzy
msgid "Stretch"
-msgstr "Força"
+msgstr "Estira"
#: ../src/live_effects/lpe-transform_2pts.cpp:39
-#, fuzzy
msgid "Stretch the result"
-msgstr "Inicia la comprovació"
+msgstr "Estira el resultat"
#: ../src/live_effects/lpe-transform_2pts.cpp:40
-#, fuzzy
msgid "Offset from knots"
-msgstr "Punts de desplaçament"
+msgstr "Desplaçament des dels nusos"
#: ../src/live_effects/lpe-transform_2pts.cpp:41
-#, fuzzy
msgid "First Knot"
-msgstr "Primers auxilis"
+msgstr "Primer Nus"
#: ../src/live_effects/lpe-transform_2pts.cpp:42
-#, fuzzy
msgid "Last Knot"
-msgstr "Nus"
+msgstr "Últim nus"
#: ../src/live_effects/lpe-transform_2pts.cpp:43
-#, fuzzy
msgid "Rotation helper size"
-msgstr "Centres de rotació"
+msgstr "Mida d'ajuda a la rotació"
#: ../src/live_effects/lpe-transform_2pts.cpp:196
-#, fuzzy
msgid "Change index of knot"
-msgstr "Canvia el tipus de node"
+msgstr "Canvia l'índex del nus"
#: ../src/live_effects/lpe-transform_2pts.cpp:349
#: ../src/ui/dialog/inkscape-preferences.cpp:1623
#: ../src/ui/dialog/pixelartdialog.cpp:296
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:699
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:697
#: ../src/ui/dialog/tracedialog.cpp:813
#: ../src/ui/widget/preferences-widget.cpp:742
msgid "Reset"
@@ -11625,7 +11718,7 @@ msgstr "Invertir"
#: ../src/live_effects/parameter/originalpatharray.cpp:130
#: ../src/live_effects/parameter/originalpatharray.cpp:315
-#: ../src/live_effects/parameter/path.cpp:486
+#: ../src/live_effects/parameter/path.cpp:508
msgid "Link path parameter to path"
msgstr "Associa el paràmetre del camí en el camí"
@@ -11655,23 +11748,23 @@ msgstr "Mou el camí cap avall"
msgid "Remove path"
msgstr "Treu el camí"
-#: ../src/live_effects/parameter/path.cpp:170
+#: ../src/live_effects/parameter/path.cpp:184
msgid "Edit on-canvas"
msgstr "Edita al llenç"
-#: ../src/live_effects/parameter/path.cpp:180
+#: ../src/live_effects/parameter/path.cpp:194
msgid "Copy path"
msgstr "Copia el camí"
-#: ../src/live_effects/parameter/path.cpp:190
+#: ../src/live_effects/parameter/path.cpp:204
msgid "Paste path"
msgstr "Enganxa al camí"
-#: ../src/live_effects/parameter/path.cpp:200
+#: ../src/live_effects/parameter/path.cpp:214
msgid "Link to path on clipboard"
msgstr "Enllaceu el camí al porta-retalls"
-#: ../src/live_effects/parameter/path.cpp:454
+#: ../src/live_effects/parameter/path.cpp:476
msgid "Paste path parameter"
msgstr "Enganxa el paràmetre del camí"
@@ -11698,7 +11791,7 @@ msgstr "Canvia el paràmetre aleatori"
msgid "Change text parameter"
msgstr "Canvia el paràmetre del text"
-#: ../src/live_effects/parameter/togglebutton.cpp:112
+#: ../src/live_effects/parameter/togglebutton.cpp:114
msgid "Change togglebutton parameter"
msgstr "Canvia els paràmetres del commutador"
@@ -11877,13 +11970,12 @@ msgid "Export document to an EPS file"
msgstr "Exporta el document a un fitxer EPS"
#: ../src/main.cpp:412
-#, fuzzy
msgid ""
"Choose the PostScript Level used to export. Possible choices are 2 and 3 "
"(the default)"
msgstr ""
"Trieu el nivell de PostScript utilitzat per a l'exportació. Les possibles "
-"opcions són 2 (per defecte) i 3"
+"opcions són 2 i 3 (per defecte)"
#: ../src/main.cpp:414
msgid "PS Level"
@@ -12508,19 +12600,16 @@ msgid "Group"
msgstr "Agrupa"
#: ../src/selection-chemistry.cpp:798
-#, fuzzy
msgid "<b>No objects selected</b> to pop out of group."
-msgstr "<b>No s'ha seleccionat cap objecte</b> d'on agafar l'estil."
+msgstr "<b>No s'ha seleccionat cap objecte</b> d'on treure fora del grup."
#: ../src/selection-chemistry.cpp:808
-#, fuzzy
msgid "Selection <b>not in a group</b>."
-msgstr "Seleccioneu un <b>grup</b> per desagrupar-lo."
+msgstr "La selecció <b>no està al grup</b>."
#: ../src/selection-chemistry.cpp:822
-#, fuzzy
msgid "Pop selection from group"
-msgstr "_Tracta la selecció com a un grup: "
+msgstr "Treu la selecció del grup"
#: ../src/selection-chemistry.cpp:830
msgid "Select a <b>group</b> to ungroup."
@@ -12530,7 +12619,7 @@ msgstr "Seleccioneu un <b>grup</b> per desagrupar-lo."
msgid "<b>No groups</b> to ungroup in the selection."
msgstr "<b>No hi ha cap grup</b> a la selecció per desagrupar."
-#: ../src/selection-chemistry.cpp:901 ../src/sp-item-group.cpp:550
+#: ../src/selection-chemistry.cpp:901 ../src/sp-item-group.cpp:659
#: ../src/ui/dialog/objects.cpp:1916
msgid "Ungroup"
msgstr "Desagrupa"
@@ -12660,7 +12749,7 @@ msgstr "Mou la selecció a la capa"
#. to a translation... but leave that for another day.
#: ../src/selection-chemistry.cpp:1561 ../src/seltrans.cpp:391
msgid "Cannot transform an embedded SVG."
-msgstr "No es pot transformar un SVG inscrustat"
+msgstr "No es pot transformar un SVG incrustat."
#: ../src/selection-chemistry.cpp:1731
msgid "Remove transform"
@@ -12990,11 +13079,11 @@ msgid "Use <b>Shift+D</b> to look up frame"
msgstr "Useu <b>Maj+D</b> per cercar el marc"
#: ../src/selection-describer.cpp:236
-#, fuzzy, c-format
+#, c-format
msgid "<b>%1$i</b> objects selected of type %2$s"
msgid_plural "<b>%1$i</b> objects selected of types %2$s"
-msgstr[0] "<b>%i</b> objectes seleccionats per la classe %s"
-msgstr[1] "<b>%i</b> objectes seleccionats per les classes %s"
+msgstr[0] "<b>%1$i</b> objecte seleccionat de tipus %2$s"
+msgstr[1] "<b>%1$i</b> objectes seleccionats de tipus %2$s"
#: ../src/selection-describer.cpp:246
#, c-format
@@ -13115,22 +13204,22 @@ msgstr "a %s"
msgid "without URI"
msgstr "sense URI"
-#: ../src/sp-ellipse.cpp:362
+#: ../src/sp-ellipse.cpp:356
msgid "Segment"
msgstr "Segment"
-#: ../src/sp-ellipse.cpp:364
+#: ../src/sp-ellipse.cpp:358
msgid "Arc"
msgstr "Arc"
#. Ellipse
-#: ../src/sp-ellipse.cpp:367 ../src/sp-ellipse.cpp:374
+#: ../src/sp-ellipse.cpp:361 ../src/sp-ellipse.cpp:368
#: ../src/ui/dialog/inkscape-preferences.cpp:421
-#: ../src/widgets/pencil-toolbar.cpp:179
+#: ../src/widgets/pencil-toolbar.cpp:178
msgid "Ellipse"
msgstr "El·lipse"
-#: ../src/sp-ellipse.cpp:371
+#: ../src/sp-ellipse.cpp:365
msgid "Circle"
msgstr "Cercle"
@@ -13155,7 +13244,7 @@ msgstr "Text flotant"
msgid "Linked Flowed Text"
msgstr "Text flotant enllaçat"
-#: ../src/sp-flowtext.cpp:292 ../src/sp-text.cpp:380
+#: ../src/sp-flowtext.cpp:292 ../src/sp-text.cpp:373
#: ../src/ui/tools/text-tool.cpp:1556
msgid " [truncated]"
msgstr "[truncat]"
@@ -13167,20 +13256,20 @@ msgid_plural "(%d characters%s)"
msgstr[0] "(%d caràcter%s)"
msgstr[1] "(%d caràcters%s)"
-#: ../src/sp-guide.cpp:261
+#: ../src/sp-guide.cpp:262
msgid "Create Guides Around the Page"
msgstr "Crea guies al voltant de la pàgina"
-#: ../src/sp-guide.cpp:274 ../src/verbs.cpp:2544
+#: ../src/sp-guide.cpp:275 ../src/verbs.cpp:2544
msgid "Delete All Guides"
msgstr "Suprimeix totes les guies"
#. Guide has probably been deleted and no longer has an attached namedview.
-#: ../src/sp-guide.cpp:485
+#: ../src/sp-guide.cpp:486
msgid "Deleted"
msgstr "Suprimit"
-#: ../src/sp-guide.cpp:494
+#: ../src/sp-guide.cpp:495
msgid ""
"<b>Shift+drag</b> to rotate, <b>Ctrl+drag</b> to move origin, <b>Del</b> to "
"delete"
@@ -13188,17 +13277,17 @@ msgstr ""
"<b>Arrossegueu+Maj</b> per girar; <b>arrossegueu+Ctrl</b> per moure "
"l'origen; <b>Supr</b> per suprimir"
-#: ../src/sp-guide.cpp:498
+#: ../src/sp-guide.cpp:499
#, c-format
msgid "vertical, at %s"
msgstr "vertical, a %s"
-#: ../src/sp-guide.cpp:501
+#: ../src/sp-guide.cpp:502
#, c-format
msgid "horizontal, at %s"
msgstr "horitzontal, a %s"
-#: ../src/sp-guide.cpp:506
+#: ../src/sp-guide.cpp:507
#, c-format
msgid "at %d degrees, through (%s,%s)"
msgstr "a %d graus, a través (%s,%s)"
@@ -13217,40 +13306,40 @@ msgstr "[mala referència]: %s"
msgid "%d &#215; %d: %s"
msgstr "%d &#215; %d: %s"
-#: ../src/sp-item-group.cpp:307 ../src/ui/dialog/objects.cpp:1915
+#: ../src/sp-item-group.cpp:318 ../src/ui/dialog/objects.cpp:1915
msgid "Group"
msgstr "Agrupa"
-#: ../src/sp-item-group.cpp:313 ../src/sp-switch.cpp:69
+#: ../src/sp-item-group.cpp:324 ../src/sp-switch.cpp:69
#, c-format
msgid "of <b>%d</b> object"
msgstr "d'<b>%d</b> objecte"
-#: ../src/sp-item-group.cpp:313 ../src/sp-switch.cpp:69
+#: ../src/sp-item-group.cpp:324 ../src/sp-switch.cpp:69
#, c-format
msgid "of <b>%d</b> objects"
msgstr "d'<b>%d</b> objectes"
-#: ../src/sp-item.cpp:1031 ../src/verbs.cpp:213
+#: ../src/sp-item.cpp:1035 ../src/verbs.cpp:213
msgid "Object"
msgstr "Objecte"
-#: ../src/sp-item.cpp:1043
+#: ../src/sp-item.cpp:1047
#, c-format
msgid "%s; <i>clipped</i>"
msgstr "%s; <i>retallat</i>"
-#: ../src/sp-item.cpp:1049
+#: ../src/sp-item.cpp:1053
#, c-format
msgid "%s; <i>masked</i>"
msgstr "%s; <i>emmascarat</i>"
-#: ../src/sp-item.cpp:1059
+#: ../src/sp-item.cpp:1063
#, c-format
msgid "%s; <i>filtered (%s)</i>"
msgstr "%s; <i>filtrat (%s)</i>"
-#: ../src/sp-item.cpp:1061
+#: ../src/sp-item.cpp:1065
#, c-format
msgid "%s; <i>filtered</i>"
msgstr "%s; <i>filtrat</i>"
@@ -13259,7 +13348,7 @@ msgstr "%s; <i>filtrat</i>"
msgid "Line"
msgstr "Línia"
-#: ../src/sp-lpe-item.cpp:258 ../src/sp-lpe-item.cpp:705
+#: ../src/sp-lpe-item.cpp:255 ../src/sp-lpe-item.cpp:702
msgid "An exception occurred during execution of the Path Effect."
msgstr "S'ha produït una excepció en l'execució de l'efecte del camí."
@@ -13313,7 +13402,7 @@ msgid "<b>Polyline</b>"
msgstr "<b>Polilínia</b>"
#. Rectangle
-#: ../src/sp-rect.cpp:161 ../src/ui/dialog/inkscape-preferences.cpp:411
+#: ../src/sp-rect.cpp:197 ../src/ui/dialog/inkscape-preferences.cpp:411
msgid "Rectangle"
msgstr "Rectangle"
@@ -13357,7 +13446,7 @@ msgstr "amb %d vèrtexs"
msgid "Conditional Group"
msgstr "Grup condicional"
-#: ../src/sp-text.cpp:361 ../src/verbs.cpp:347
+#: ../src/sp-text.cpp:354 ../src/verbs.cpp:347
#: ../share/extensions/lorem_ipsum.inx.h:8
#: ../share/extensions/replace_font.inx.h:11 ../share/extensions/split.inx.h:10
#: ../share/extensions/text_braille.inx.h:2
@@ -13372,12 +13461,12 @@ msgstr "Grup condicional"
msgid "Text"
msgstr "Text"
-#: ../src/sp-text.cpp:384
+#: ../src/sp-text.cpp:377
#, c-format
msgid "on path%s (%s, %s)"
msgstr "Sobre el camí %s (%s, %s)"
-#: ../src/sp-text.cpp:385
+#: ../src/sp-text.cpp:378
#, c-format
msgid "%s (%s, %s)"
msgstr "%s (%s, %s)"
@@ -13753,14 +13842,14 @@ msgstr "about.svg"
#. TRANSLATORS: Put here your name (and other national contributors')
#. one per line in the form of: name surname (email). Use \n for newline.
-#: ../src/ui/dialog/aboutbox.cpp:438
+#: ../src/ui/dialog/aboutbox.cpp:442
msgid "translator-credits"
msgstr ""
"Quico Llach (quico@softcatala.org), 2000\n"
"Francesc Dorca (f.dorca@filnet.es), 2003\n"
"Xavier Conde Rueda (xavi.conde@gmail.com), 2004-2008\n"
"Quim Perez Noguer (noguer@gmail.com), 2009\n"
-"Jordi Mas i Hernàndez, (jmas@softcatala.org), 2015"
+"Jordi Mas i Hernàndez, (jmas@softcatala.org), 2015-2016"
#: ../src/ui/dialog/align-and-distribute.cpp:206
#: ../src/ui/dialog/align-and-distribute.cpp:937
@@ -14018,17 +14107,15 @@ msgstr "Àrea de selecció"
#: ../src/ui/dialog/align-and-distribute.cpp:1097
#, fuzzy
msgid "Middle of selection"
-msgstr "Amplada de la selecció"
+msgstr "Multimèdia"
#: ../src/ui/dialog/align-and-distribute.cpp:1098
-#, fuzzy
msgid "Min value"
-msgstr "Valor d'interlletratge:"
+msgstr "Valor mínim"
#: ../src/ui/dialog/align-and-distribute.cpp:1099
-#, fuzzy
msgid "Max value"
-msgstr "Valor inicial X:"
+msgstr "Valor màxim"
#: ../src/ui/dialog/calligraphic-profile-rename.cpp:40
#: ../src/ui/dialog/calligraphic-profile-rename.cpp:138
@@ -14623,7 +14710,7 @@ msgstr ""
#: ../src/ui/dialog/clonetiler.cpp:1011
#, fuzzy
msgid "Apply to tiled clones:"
-msgstr "Suprimeix els clons del mosaic"
+msgstr "Crea clons en mosaic..."
#: ../src/ui/dialog/clonetiler.cpp:1052
msgid "How many rows in the tiling"
@@ -14837,12 +14924,12 @@ msgid "License"
msgstr "Llicència"
#: ../src/ui/dialog/document-metadata.cpp:126
-#: ../src/ui/dialog/document-properties.cpp:994
+#: ../src/ui/dialog/document-properties.cpp:1037
msgid "<b>Dublin Core Entities</b>"
msgstr "<b>Entitats de Dublín Core</b>"
#: ../src/ui/dialog/document-metadata.cpp:168
-#: ../src/ui/dialog/document-properties.cpp:1056
+#: ../src/ui/dialog/document-properties.cpp:1099
msgid "<b>License</b>"
msgstr "<b>Llicència</b>"
@@ -14858,7 +14945,7 @@ msgstr "Si no està habilitat, no s'aplicarà suavitzat al dibuix"
#: ../src/ui/dialog/document-properties.cpp:119
#, fuzzy
msgid "Checkerboard background"
-msgstr "Tauler d'escacs"
+msgstr "Tauler d'es_cacs..."
#: ../src/ui/dialog/document-properties.cpp:119
msgid ""
@@ -15113,14 +15200,12 @@ msgid "<b>Page Size</b>"
msgstr "<b>Mida de la pàgina</b>"
#: ../src/ui/dialog/document-properties.cpp:336
-#, fuzzy
msgid "<b>Background</b>"
-msgstr "Fons"
+msgstr "<b>Fons</b>"
#: ../src/ui/dialog/document-properties.cpp:339
-#, fuzzy
msgid "<b>Border</b>"
-msgstr "<b>Base:</b>"
+msgstr "<b>Vora</b>"
#: ../src/ui/dialog/document-properties.cpp:342
msgid "<b>Display</b>"
@@ -15150,136 +15235,136 @@ msgstr "<b>Miscel·lània</b>"
#. Inkscape::GC::release(defsRepr);
#. inform the document, so we can undo
#. Color Management
-#: ../src/ui/dialog/document-properties.cpp:526 ../src/verbs.cpp:3020
+#: ../src/ui/dialog/document-properties.cpp:542 ../src/verbs.cpp:3020
msgid "Link Color Profile"
msgstr "Associa el perfil de color"
-#: ../src/ui/dialog/document-properties.cpp:623
+#: ../src/ui/dialog/document-properties.cpp:654
msgid "Remove linked color profile"
msgstr "Suprimeix el perfil de color associat"
-#: ../src/ui/dialog/document-properties.cpp:636
+#: ../src/ui/dialog/document-properties.cpp:673
msgid "<b>Linked Color Profiles:</b>"
msgstr "<b>Perfils de color associats:</b>"
-#: ../src/ui/dialog/document-properties.cpp:638
+#: ../src/ui/dialog/document-properties.cpp:675
msgid "<b>Available Color Profiles:</b>"
msgstr "<b>Perfils de color disponibles:</b>"
-#: ../src/ui/dialog/document-properties.cpp:640
+#: ../src/ui/dialog/document-properties.cpp:677
msgid "Link Profile"
msgstr "Associa el perfil"
-#: ../src/ui/dialog/document-properties.cpp:643
+#: ../src/ui/dialog/document-properties.cpp:680
msgid "Unlink Profile"
msgstr "Dissocia el perfil"
-#: ../src/ui/dialog/document-properties.cpp:721
+#: ../src/ui/dialog/document-properties.cpp:764
msgid "Profile Name"
msgstr "Nom del perfil"
-#: ../src/ui/dialog/document-properties.cpp:757
+#: ../src/ui/dialog/document-properties.cpp:800
msgid "External scripts"
msgstr "Scripts externs"
-#: ../src/ui/dialog/document-properties.cpp:758
+#: ../src/ui/dialog/document-properties.cpp:801
msgid "Embedded scripts"
msgstr "Scripts incrustats"
-#: ../src/ui/dialog/document-properties.cpp:763
+#: ../src/ui/dialog/document-properties.cpp:806
msgid "<b>External script files:</b>"
msgstr "<b>Fitxers d'scripts externs:</b>"
-#: ../src/ui/dialog/document-properties.cpp:765
+#: ../src/ui/dialog/document-properties.cpp:808
msgid "Add the current file name or browse for a file"
msgstr "Afegeix el nom del fitxer actual o navega per un fitxer"
-#: ../src/ui/dialog/document-properties.cpp:768
-#: ../src/ui/dialog/document-properties.cpp:845
+#: ../src/ui/dialog/document-properties.cpp:811
+#: ../src/ui/dialog/document-properties.cpp:888
#: ../src/ui/widget/selected-style.cpp:357
msgid "Remove"
msgstr "Suprimeix"
-#: ../src/ui/dialog/document-properties.cpp:832
+#: ../src/ui/dialog/document-properties.cpp:875
msgid "Filename"
msgstr "Nom de fitxer"
-#: ../src/ui/dialog/document-properties.cpp:840
+#: ../src/ui/dialog/document-properties.cpp:883
msgid "<b>Embedded script files:</b>"
msgstr "<b>Fitxers d'scripts incrustats:</b>"
-#: ../src/ui/dialog/document-properties.cpp:842
+#: ../src/ui/dialog/document-properties.cpp:885
#: ../src/ui/dialog/objects.cpp:1894
msgid "New"
msgstr "Nou"
-#: ../src/ui/dialog/document-properties.cpp:909
+#: ../src/ui/dialog/document-properties.cpp:952
msgid "Script id"
msgstr "Id d'script"
-#: ../src/ui/dialog/document-properties.cpp:915
+#: ../src/ui/dialog/document-properties.cpp:958
msgid "<b>Content:</b>"
msgstr "<b>Contingut:</b>"
-#: ../src/ui/dialog/document-properties.cpp:1032
+#: ../src/ui/dialog/document-properties.cpp:1075
msgid "_Save as default"
msgstr "De_sa com a predeterminat"
-#: ../src/ui/dialog/document-properties.cpp:1033
+#: ../src/ui/dialog/document-properties.cpp:1076
msgid "Save this metadata as the default metadata"
msgstr "Desa aquesta metadada com a predeterminada"
-#: ../src/ui/dialog/document-properties.cpp:1034
+#: ../src/ui/dialog/document-properties.cpp:1077
msgid "Use _default"
msgstr "Usa com a pre_determinat"
-#: ../src/ui/dialog/document-properties.cpp:1035
+#: ../src/ui/dialog/document-properties.cpp:1078
msgid "Use the previously saved default metadata here"
msgstr "Usa aquí la metadada predeterminada desada prèviament"
#. inform the document, so we can undo
-#: ../src/ui/dialog/document-properties.cpp:1108
+#: ../src/ui/dialog/document-properties.cpp:1151
msgid "Add external script..."
msgstr "Afegeix un script extern..."
-#: ../src/ui/dialog/document-properties.cpp:1147
+#: ../src/ui/dialog/document-properties.cpp:1190
msgid "Select a script to load"
msgstr "Selecciona un script a carregar"
#. inform the document, so we can undo
-#: ../src/ui/dialog/document-properties.cpp:1175
+#: ../src/ui/dialog/document-properties.cpp:1218
msgid "Add embedded script..."
msgstr "Afegeix un script incrustat..."
#. inform the document, so we can undo
-#: ../src/ui/dialog/document-properties.cpp:1206
+#: ../src/ui/dialog/document-properties.cpp:1249
msgid "Remove external script"
msgstr "Suprimeix l'script extern"
#. inform the document, so we can undo
-#: ../src/ui/dialog/document-properties.cpp:1235
+#: ../src/ui/dialog/document-properties.cpp:1278
msgid "Remove embedded script"
msgstr "Suprimeix l'script incrustat"
#. TODO repr->set_content(_EmbeddedContent.get_buffer()->get_text());
#. inform the document, so we can undo
-#: ../src/ui/dialog/document-properties.cpp:1331
+#: ../src/ui/dialog/document-properties.cpp:1374
msgid "Edit embedded script"
msgstr "Edita l'script incrustat"
-#: ../src/ui/dialog/document-properties.cpp:1415
+#: ../src/ui/dialog/document-properties.cpp:1458
msgid "<b>Creation</b>"
msgstr "<b>Creació</b>"
-#: ../src/ui/dialog/document-properties.cpp:1416
+#: ../src/ui/dialog/document-properties.cpp:1459
msgid "<b>Defined grids</b>"
msgstr "<b>Graelles definides</b>"
-#: ../src/ui/dialog/document-properties.cpp:1660
+#: ../src/ui/dialog/document-properties.cpp:1703
msgid "Remove grid"
msgstr "Suprimeix la graella"
-#: ../src/ui/dialog/document-properties.cpp:1752
+#: ../src/ui/dialog/document-properties.cpp:1795
msgid "Changed default display unit"
msgstr "Canvia la unitat de visualització predeterminada"
@@ -15405,9 +15490,8 @@ msgid "Export the bitmap file with these settings"
msgstr "Exporta el fitxer de mapa de bits amb aquests valors"
#: ../src/ui/dialog/export.cpp:479
-#, fuzzy
msgid "bitmap"
-msgstr "Mapa de bits"
+msgstr "mapa de bits"
#: ../src/ui/dialog/export.cpp:614
#, c-format
@@ -17042,7 +17126,7 @@ msgstr "Cuneiforme"
#: ../src/ui/dialog/glyphs.cpp:125
msgid "Phoenician"
-msgstr "Fonètic"
+msgstr "Fenici"
#: ../src/ui/dialog/glyphs.cpp:126 ../src/ui/dialog/glyphs.cpp:275
msgid "Phags-pa"
@@ -17583,13 +17667,12 @@ msgid "_Set spacing:"
msgstr "E_stableix l'espaiat:"
#: ../src/ui/dialog/guides.cpp:47
-#, fuzzy
msgid "Lo_cked"
-msgstr "Bloquejat"
+msgstr "_Blocades"
#: ../src/ui/dialog/guides.cpp:47
msgid "Lock the movement of guides"
-msgstr ""
+msgstr "Bloqueja el moviment de les guies"
#: ../src/ui/dialog/guides.cpp:48
msgid "Rela_tive change"
@@ -17708,13 +17791,13 @@ msgstr ""
"Mida dels punts creats amb Ctrl+clic (relativa a l'amplada de traç actual)"
#: ../src/ui/dialog/inkscape-preferences.cpp:213
-#, fuzzy
msgid "Base simplify:"
-msgstr "Simplifica"
+msgstr "Base simplificada:"
#: ../src/ui/dialog/inkscape-preferences.cpp:213
+#, fuzzy
msgid "on dynamic LPE simplify"
-msgstr ""
+msgstr "Edita LPE"
#: ../src/ui/dialog/inkscape-preferences.cpp:214
msgid "Base simplify of dynamic LPE based simplify"
@@ -17926,7 +18009,7 @@ msgstr ""
#: ../src/ui/dialog/inkscape-preferences.cpp:369
msgid "Update outline when dragging nodes"
-msgstr "Actualitza el contorn quan s'arrosseguin els nodes"
+msgstr "Actualitza el contorn quan s'arrosseguin nodes"
#: ../src/ui/dialog/inkscape-preferences.cpp:370
msgid ""
@@ -18284,7 +18367,7 @@ msgstr "Armeni (hy)"
#: ../src/ui/dialog/inkscape-preferences.cpp:538
#, fuzzy
msgid "Assamese (as)"
-msgstr "Japonès (ja)"
+msgstr "Assamès"
#: ../src/ui/dialog/inkscape-preferences.cpp:538
msgid "Azerbaijani (az)"
@@ -18313,7 +18396,7 @@ msgstr "Bengalí/Bangladesh (bn_BD)"
#: ../src/ui/dialog/inkscape-preferences.cpp:539
#, fuzzy
msgid "Bodo (brx)"
-msgstr "Bretó (br)"
+msgstr "bodo"
#: ../src/ui/dialog/inkscape-preferences.cpp:539
msgid "Breton (br)"
@@ -18348,8 +18431,9 @@ msgid "Danish (da)"
msgstr "Danès (da)"
#: ../src/ui/dialog/inkscape-preferences.cpp:541
+#, fuzzy
msgid "Dogri (doi)"
-msgstr ""
+msgstr "DOI"
#: ../src/ui/dialog/inkscape-preferences.cpp:541
msgid "Dutch (nl)"
@@ -18421,16 +18505,18 @@ msgid "Hebrew (he)"
msgstr "Hebreu (he)"
#: ../src/ui/dialog/inkscape-preferences.cpp:546
+#, fuzzy
msgid "Hindi (hi)"
-msgstr ""
+msgstr "Hola {$a}!"
#: ../src/ui/dialog/inkscape-preferences.cpp:546
msgid "Hungarian (hu)"
msgstr "Hongarès (hu)"
#: ../src/ui/dialog/inkscape-preferences.cpp:547
+#, fuzzy
msgid "Icelandic (is)"
-msgstr ""
+msgstr "Islandès (is)"
#: ../src/ui/dialog/inkscape-preferences.cpp:547
msgid "Indonesian (id)"
@@ -18472,7 +18558,7 @@ msgstr "Kinyarwanda (rw)"
#: ../src/ui/dialog/inkscape-preferences.cpp:549
#, fuzzy
msgid "Konkani (kok)"
-msgstr "Coreà (ko)"
+msgstr "konkani"
#: ../src/ui/dialog/inkscape-preferences.cpp:549
#, fuzzy
@@ -18496,25 +18582,28 @@ msgid "Macedonian (mk)"
msgstr "Macedoni (mk)"
#: ../src/ui/dialog/inkscape-preferences.cpp:551
+#, fuzzy
msgid "Maithili (mai)"
-msgstr ""
+msgstr "Maithili"
#: ../src/ui/dialog/inkscape-preferences.cpp:551
#, fuzzy
msgid "Malayalam (ml)"
-msgstr "Malaiàlam"
+msgstr "Ml"
#: ../src/ui/dialog/inkscape-preferences.cpp:551
+#, fuzzy
msgid "Manipuri (mni)"
-msgstr ""
+msgstr "manipuri"
#: ../src/ui/dialog/inkscape-preferences.cpp:551
msgid "Manipuri in Bengali script (mni@beng)"
msgstr ""
#: ../src/ui/dialog/inkscape-preferences.cpp:551
+#, fuzzy
msgid "Marathi (mr)"
-msgstr ""
+msgstr "MR"
#: ../src/ui/dialog/inkscape-preferences.cpp:551
msgid "Mongolian (mn)"
@@ -18533,8 +18622,9 @@ msgid "Norwegian Nynorsk (nn)"
msgstr "Nynorsk noruec (nn)"
#: ../src/ui/dialog/inkscape-preferences.cpp:553
+#, fuzzy
msgid "Odia (or)"
-msgstr ""
+msgstr "Oriya"
#: ../src/ui/dialog/inkscape-preferences.cpp:554
msgid "Panjabi (pa)"
@@ -18561,13 +18651,14 @@ msgid "Russian (ru)"
msgstr "Rus (ru)"
#: ../src/ui/dialog/inkscape-preferences.cpp:556
+#, fuzzy
msgid "Sanskrit (sa)"
-msgstr ""
+msgstr "sànscrit"
#: ../src/ui/dialog/inkscape-preferences.cpp:556
#, fuzzy
msgid "Santali (sat)"
-msgstr "Italià (it)"
+msgstr "santali"
#: ../src/ui/dialog/inkscape-preferences.cpp:556
#, fuzzy
@@ -18583,8 +18674,9 @@ msgid "Serbian in Latin script (sr@latin)"
msgstr "Serbi amb alfabet llatí (sr@latin)"
#: ../src/ui/dialog/inkscape-preferences.cpp:557
+#, fuzzy
msgid "Sindhi (sd)"
-msgstr ""
+msgstr "sindhi"
#: ../src/ui/dialog/inkscape-preferences.cpp:557
#, fuzzy
@@ -18614,7 +18706,7 @@ msgstr "Suec (sv)"
#: ../src/ui/dialog/inkscape-preferences.cpp:558
#, fuzzy
msgid "Tamil (ta)"
-msgstr "Tàmil"
+msgstr "ta"
#: ../src/ui/dialog/inkscape-preferences.cpp:558
msgid "Telugu (te)"
@@ -18633,8 +18725,9 @@ msgid "Ukrainian (uk)"
msgstr "Ucraïnès (uk)"
#: ../src/ui/dialog/inkscape-preferences.cpp:559
+#, fuzzy
msgid "Urdu (ur)"
-msgstr ""
+msgstr "urdu"
#: ../src/ui/dialog/inkscape-preferences.cpp:560
msgid "Vietnamese (vi)"
@@ -18650,25 +18743,21 @@ msgstr ""
"Defineix l'idioma que s'utilitzarà en els menús i en el format dels números"
#: ../src/ui/dialog/inkscape-preferences.cpp:616
-#, fuzzy
msgctxt "Icon size"
msgid "Larger"
-msgstr "Gran"
+msgstr "Més gran"
#: ../src/ui/dialog/inkscape-preferences.cpp:616
-#, fuzzy
msgctxt "Icon size"
msgid "Large"
msgstr "Gran"
#: ../src/ui/dialog/inkscape-preferences.cpp:616
-#, fuzzy
msgctxt "Icon size"
msgid "Small"
msgstr "Petita"
#: ../src/ui/dialog/inkscape-preferences.cpp:616
-#, fuzzy
msgctxt "Icon size"
msgid "Smaller"
msgstr "Més petit"
@@ -18867,19 +18956,16 @@ msgid "Aggressive"
msgstr "Agressiu"
#: ../src/ui/dialog/inkscape-preferences.cpp:702
-#, fuzzy
msgctxt "Window size"
msgid "Small"
msgstr "Petita"
#: ../src/ui/dialog/inkscape-preferences.cpp:702
-#, fuzzy
msgctxt "Window size"
msgid "Large"
msgstr "Gran"
#: ../src/ui/dialog/inkscape-preferences.cpp:702
-#, fuzzy
msgctxt "Window size"
msgid "Maximized"
msgstr "Maximitzada"
@@ -19378,7 +19464,7 @@ msgstr ""
"Imprimeix l'avís si es troben propietats d'estil redundants (p. ex. si una "
"propietat té el valor predeterminat i un valor diferent a l'heretat o si el "
"valor és el mateix que seria si fos heretat). Els fitxers de la base de "
-"dades es troben a inkscape_data_dir/attributes"
+"dades es troben a inkscape_data_dir/attributes."
#: ../src/ui/dialog/inkscape-preferences.cpp:980
msgid "Delete redundant style properties"
@@ -19428,7 +19514,7 @@ msgstr "Sortida SVG"
#. TRANSLATORS: see http://www.newsandtech.com/issues/2004/03-04/pt/03-04_rendering.htm
#: ../src/ui/dialog/inkscape-preferences.cpp:997
msgid "Perceptual"
-msgstr "Percentual"
+msgstr "Perceptiu"
#: ../src/ui/dialog/inkscape-preferences.cpp:997
msgid "Relative Colorimetric"
@@ -19551,7 +19637,7 @@ msgstr "Preserva el canal K en les transformacions de CMYK en CMYK"
#: ../src/ui/dialog/inkscape-preferences.cpp:1091
#: ../src/ui/widget/color-icc-selector.cpp:394
-#: ../src/ui/widget/color-icc-selector.cpp:685
+#: ../src/ui/widget/color-icc-selector.cpp:700
msgid "<none>"
msgstr "<cap>"
@@ -19911,8 +19997,9 @@ msgstr ""
"dins"
#: ../src/ui/dialog/inkscape-preferences.cpp:1266
+#, fuzzy
msgid "Mouse move pans when Space is pressed"
-msgstr ""
+msgstr "El botó esquerre del ratolí desplaça quan es prem Espai"
#: ../src/ui/dialog/inkscape-preferences.cpp:1268
msgid "When on, pressing and holding Space and dragging pans canvas"
@@ -19950,8 +20037,9 @@ msgid "After snapping, a symbol is drawn at the point that has snapped"
msgstr "Després d'ajustar, apareixerà un símbol al punt que s'hagi ajustat"
#: ../src/ui/dialog/inkscape-preferences.cpp:1284
+#, fuzzy
msgid "Snap indicator persistence (in seconds):"
-msgstr ""
+msgstr "Mostra els segons amb l'indicador d'hora actual"
#: ../src/ui/dialog/inkscape-preferences.cpp:1285
msgid ""
@@ -19960,8 +20048,9 @@ msgid ""
msgstr ""
#: ../src/ui/dialog/inkscape-preferences.cpp:1287
+#, fuzzy
msgid "What should snap"
-msgstr ""
+msgstr "Què hauria de fer?"
#: ../src/ui/dialog/inkscape-preferences.cpp:1289
msgid "Only snap the node closest to the pointer"
@@ -20003,14 +20092,12 @@ msgstr ""
"de restricció"
#: ../src/ui/dialog/inkscape-preferences.cpp:1301
-#, fuzzy
msgid "Delayed snap"
-msgstr "Ajusta sempre"
+msgstr "Retard de l'ajustament"
#: ../src/ui/dialog/inkscape-preferences.cpp:1304
-#, fuzzy
msgid "Delay (in seconds):"
-msgstr "_Retard (en ms):"
+msgstr "Temps de retard (segons):"
#: ../src/ui/dialog/inkscape-preferences.cpp:1305
msgid ""
@@ -20318,7 +20405,7 @@ msgstr "(cal reiniciar)"
#: ../src/ui/dialog/inkscape-preferences.cpp:1429
msgid "Configure number of processors/threads to use when rendering filters"
msgstr ""
-"Configura el nombre de processadors o fils d'execució a usar en rendaritzar "
+"Configura el nombre de processadors o fils d'execució a usar en renderitzar "
"filtres"
#: ../src/ui/dialog/inkscape-preferences.cpp:1433
@@ -20835,19 +20922,16 @@ msgid "None"
msgstr "Cap"
#: ../src/ui/dialog/knot-properties.cpp:59
-#, fuzzy
msgid "Position X:"
-msgstr "Posició:"
+msgstr "Posició X:"
#: ../src/ui/dialog/knot-properties.cpp:66
-#, fuzzy
msgid "Position Y:"
-msgstr "Posició:"
+msgstr "Posició Y:"
#: ../src/ui/dialog/knot-properties.cpp:120
-#, fuzzy
msgid "Modify Knot Position"
-msgstr "Modifica la posició del node"
+msgstr "Modifica la posició del nus"
#: ../src/ui/dialog/knot-properties.cpp:121
#: ../src/ui/dialog/layer-properties.cpp:411
@@ -20857,14 +20941,14 @@ msgid "_Move"
msgstr "_Mou"
#: ../src/ui/dialog/knot-properties.cpp:180
-#, fuzzy, c-format
+#, c-format
msgid "Position X (%s):"
-msgstr "Posició (%):"
+msgstr "Posició X (%s):"
#: ../src/ui/dialog/knot-properties.cpp:181
-#, fuzzy, c-format
+#, c-format
msgid "Position Y (%s):"
-msgstr "Posició (%):"
+msgstr "Posició Y (%s):"
#: ../src/ui/dialog/layer-properties.cpp:55
msgid "Layer name:"
@@ -20953,9 +21037,8 @@ msgid "Lock other layers"
msgstr "Bloca altres capes"
#: ../src/ui/dialog/layers.cpp:730
-#, fuzzy
msgid "Move layer"
-msgstr "Capa moguda"
+msgstr "Mou la capa"
#: ../src/ui/dialog/layers.cpp:892
msgctxt "Layers"
@@ -21089,9 +21172,8 @@ msgid "Position (%):"
msgstr "Posició (%):"
#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:216
-#, fuzzy
msgid "%1:"
-msgstr "k1:"
+msgstr "%1:"
#: ../src/ui/dialog/lpe-powerstroke-properties.cpp:122
msgid "Modify Node Position"
@@ -21296,9 +21378,8 @@ msgid "Set object description"
msgstr "Estableix la descripció de l'objecte"
#: ../src/ui/dialog/object-properties.cpp:535
-#, fuzzy
msgid "Set image rendering option"
-msgstr "Representació del color del dispositiu:"
+msgstr "Estableix l'opció de renderització de la imatge"
#: ../src/ui/dialog/object-properties.cpp:554
msgid "Lock object"
@@ -21368,35 +21449,35 @@ msgstr "Estableix la difuminació de l'objecte"
#: ../src/ui/dialog/objects.cpp:1621
msgctxt "Visibility"
msgid "V"
-msgstr ""
+msgstr "V"
#: ../src/ui/dialog/objects.cpp:1622
#, fuzzy
msgctxt "Lock"
msgid "L"
-msgstr "L"
+msgstr "l"
#: ../src/ui/dialog/objects.cpp:1623
+#, fuzzy
msgctxt "Type"
msgid "T"
-msgstr ""
+msgstr "M"
#: ../src/ui/dialog/objects.cpp:1624
#, fuzzy
msgctxt "Clip and mask"
msgid "CM"
-msgstr "CMS"
+msgstr "CM"
#: ../src/ui/dialog/objects.cpp:1625
#, fuzzy
msgctxt "Highlight"
msgid "HL"
-msgstr "HSL"
+msgstr "hl"
#: ../src/ui/dialog/objects.cpp:1626
-#, fuzzy
msgid "Label"
-msgstr "_Etiqueta:"
+msgstr "Etiqueta"
#. In order to get tooltips on header, we must create our own label.
#: ../src/ui/dialog/objects.cpp:1668
@@ -21405,8 +21486,9 @@ msgid "Toggle visibility of Layer, Group, or Object."
msgstr "Commuta la visibilitat de la capa actual"
#: ../src/ui/dialog/objects.cpp:1681
+#, fuzzy
msgid "Toggle lock of Layer, Group, or Object."
-msgstr ""
+msgstr "Commuta el boqueig a la capa actual"
#: ../src/ui/dialog/objects.cpp:1693
msgid ""
@@ -21415,8 +21497,9 @@ msgid ""
msgstr ""
#: ../src/ui/dialog/objects.cpp:1712
+#, fuzzy
msgid "Is object clipped and/or masked?"
-msgstr ""
+msgstr "No agrupis els objectes escapçats o emmascarats"
#: ../src/ui/dialog/objects.cpp:1723
msgid ""
@@ -21453,31 +21536,28 @@ msgstr "Col·lapsa-ho tot"
#: ../src/ui/dialog/objects.cpp:1892
#, fuzzy
msgid "Rename"
-msgstr "_Reanomena"
+msgstr "rename"
#: ../src/ui/dialog/objects.cpp:1898
+#, fuzzy
msgid "Solo"
-msgstr ""
+msgstr "Solo"
#: ../src/ui/dialog/objects.cpp:1899
-#, fuzzy
msgid "Show All"
-msgstr "Mostra:"
+msgstr "Mostra-ho tot"
#: ../src/ui/dialog/objects.cpp:1900
-#, fuzzy
msgid "Hide All"
-msgstr "Mostra-ho tot"
+msgstr "Amaga-ho tot"
#: ../src/ui/dialog/objects.cpp:1904
-#, fuzzy
msgid "Lock Others"
-msgstr "Bloca altres capes"
+msgstr "Bloca els altres"
#: ../src/ui/dialog/objects.cpp:1905
-#, fuzzy
msgid "Lock All"
-msgstr "Desbloca-ho tot"
+msgstr "Bloqueja-ho tot"
#. LockAndHide
#: ../src/ui/dialog/objects.cpp:1906 ../src/verbs.cpp:3011
@@ -21485,26 +21565,23 @@ msgid "Unlock All"
msgstr "Desbloca-ho tot"
#: ../src/ui/dialog/objects.cpp:1910
-#, fuzzy
msgid "Up"
-msgstr "Dalt"
+msgstr "Amunt"
#: ../src/ui/dialog/objects.cpp:1911
-#, fuzzy
msgid "Down"
-msgstr "A baix esquerra"
+msgstr "Avall"
#: ../src/ui/dialog/objects.cpp:1920
-#, fuzzy
msgid "Set Clip"
-msgstr "E_stableix l'àrea de retall"
+msgstr "Estableix l'àrea de retall"
#. will never be implemented
#. _watching.push_back( &_addPopupItem( targetDesktop, SP_VERB_OBJECT_SET_INVERSE_CLIPPATH, 0, "Set Inverse Clip", (int)BUTTON_SETINVCLIP ) );
#: ../src/ui/dialog/objects.cpp:1926
#, fuzzy
msgid "Unset Clip"
-msgstr "E_stableix l'àrea de retall"
+msgstr "no està definit"
#. Set mask
#: ../src/ui/dialog/objects.cpp:1930 ../src/ui/interface.cpp:1754
@@ -21514,7 +21591,7 @@ msgstr "Estableix la màscara"
#: ../src/ui/dialog/objects.cpp:1931
#, fuzzy
msgid "Unset Mask"
-msgstr "Estableix la màscara"
+msgstr "no està definit"
#: ../src/ui/dialog/objects.cpp:1953
msgid "Select Highlight Color"
@@ -21869,162 +21946,162 @@ msgstr "Corregeix l'ortografia"
msgid "Set SVG Font attribute"
msgstr "Defineix l'atribut del tipus de lletra SVG"
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:197
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:195
msgid "Adjust kerning value"
msgstr "Ajusta el valor de l'interlletratge"
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:387
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:385
msgid "Family Name:"
msgstr "Nom de la família:"
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:397
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:395
msgid "Set width:"
msgstr "Estableix l'amplada:"
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:456
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:454
msgid "glyph"
msgstr "glif"
#. SPGlyph* glyph =
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:488
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:486
msgid "Add glyph"
msgstr "Afegeix un glif"
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:522
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:564
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:520
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:562
msgid "Select a <b>path</b> to define the curves of a glyph"
msgstr "Seleccioneu un <b>camí</b> per definir les corbes del glif"
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:530
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:572
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:528
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:570
msgid "The selected object does not have a <b>path</b> description."
msgstr "L'objecte seleccionat no té una descripció de <b>camí</b>."
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:537
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:535
msgid "No glyph selected in the SVGFonts dialog."
msgstr "No s'ha seleccionat cap glif al diàleg de tipus de lletres SVG."
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:548
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:587
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:546
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:585
msgid "Set glyph curves"
msgstr "Defineix les corbes del glif"
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:607
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:605
msgid "Reset missing-glyph"
msgstr "Restaura el glif que falta"
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:623
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:621
msgid "Edit glyph name"
msgstr "Edita el nom del glif"
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:637
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:635
msgid "Set glyph unicode"
msgstr "Defineix l'unicode del glif"
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:649
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:647
msgid "Remove font"
msgstr "Suprimeix el tipus de lletra"
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:666
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:664
msgid "Remove glyph"
msgstr "Suprimeix el glif"
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:683
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:681
msgid "Remove kerning pair"
msgstr "Suprimeix la parella d'interlletratge"
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:693
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:691
msgid "Missing Glyph:"
msgstr "Glif que falta:"
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:697
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:695
msgid "From selection..."
msgstr "Agafa de la selecció..."
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:710
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:708
msgid "Glyph name"
msgstr "Nom del glif"
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:711
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:709
msgid "Matching string"
msgstr "Text que coincideix"
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:714
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:712
msgid "Add Glyph"
msgstr "Afegeix un glif"
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:721
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:719
msgid "Get curves from selection..."
msgstr "Agafa les corbes de la selecció..."
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:770
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:768
msgid "Add kerning pair"
msgstr "Afegeix una parella d'interlletratge"
#. Kerning Setup:
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:778
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:776
msgid "Kerning Setup"
msgstr "Configuració de l'interlletratge"
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:780
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:778
msgid "1st Glyph:"
msgstr "1r glif:"
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:782
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:780
msgid "2nd Glyph:"
msgstr "2n glif:"
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:785
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:783
msgid "Add pair"
msgstr "Afegeix la parella"
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:797
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:795
msgid "First Unicode range"
msgstr "Primer interval Unicode"
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:798
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:796
msgid "Second Unicode range"
msgstr "Segon interval Unicode"
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:805
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:803
msgid "Kerning value:"
msgstr "Valor d'interlletratge:"
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:863
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:861
msgid "Set font family"
msgstr "Defineix la família del tipus de lletra"
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:872
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:870
msgid "font"
msgstr "tipus de lletra"
#. select_font(font);
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:887
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:885
msgid "Add font"
msgstr "Afegeix un tipus de lletra"
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:913 ../src/ui/dialog/text-edit.cpp:69
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:911 ../src/ui/dialog/text-edit.cpp:69
msgid "_Font"
msgstr "_Tipus de lletra"
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:921
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:919
msgid "_Global Settings"
msgstr "Configuració _general"
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:922
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:920
msgid "_Glyphs"
msgstr "_Glifs"
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:923
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:921
msgid "_Kerning"
msgstr "_Interlletratge"
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:930
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:931
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:928
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:929
msgid "Sample Text"
msgstr "Text d'exemple"
-#: ../src/ui/dialog/svg-fonts-dialog.cpp:935
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:933
msgid "Preview Text:"
msgstr "Previsualitza el text:"
@@ -22148,9 +22225,8 @@ msgid "By: "
msgstr "Per: "
#: ../src/ui/dialog/text-edit.cpp:72
-#, fuzzy
msgid "_Variants"
-msgstr "Variació"
+msgstr "_Variants"
#: ../src/ui/dialog/text-edit.cpp:73
msgid "Set as _default"
@@ -22162,27 +22238,27 @@ msgid "AaBbCcIiPpQq12369$€¢?.;/()"
msgstr "AaBbCcIiPpQqcÇ12369$€¢?.;/()"
#. Align buttons
-#: ../src/ui/dialog/text-edit.cpp:97 ../src/widgets/text-toolbar.cpp:1680
-#: ../src/widgets/text-toolbar.cpp:1681
+#: ../src/ui/dialog/text-edit.cpp:97 ../src/widgets/text-toolbar.cpp:1691
+#: ../src/widgets/text-toolbar.cpp:1692
msgid "Align left"
msgstr "Alinea a l'esquerra"
-#: ../src/ui/dialog/text-edit.cpp:98 ../src/widgets/text-toolbar.cpp:1688
-#: ../src/widgets/text-toolbar.cpp:1689
+#: ../src/ui/dialog/text-edit.cpp:98 ../src/widgets/text-toolbar.cpp:1699
+#: ../src/widgets/text-toolbar.cpp:1700
msgid "Align center"
msgstr "Alinea al centre"
-#: ../src/ui/dialog/text-edit.cpp:99 ../src/widgets/text-toolbar.cpp:1696
-#: ../src/widgets/text-toolbar.cpp:1697
+#: ../src/ui/dialog/text-edit.cpp:99 ../src/widgets/text-toolbar.cpp:1707
+#: ../src/widgets/text-toolbar.cpp:1708
msgid "Align right"
msgstr "Alinea a la dreta"
-#: ../src/ui/dialog/text-edit.cpp:100 ../src/widgets/text-toolbar.cpp:1705
+#: ../src/ui/dialog/text-edit.cpp:100 ../src/widgets/text-toolbar.cpp:1716
msgid "Justify (only flowed text)"
msgstr "Justifica (només el text flotant)"
#. Direction buttons
-#: ../src/ui/dialog/text-edit.cpp:109 ../src/widgets/text-toolbar.cpp:1740
+#: ../src/ui/dialog/text-edit.cpp:109 ../src/widgets/text-toolbar.cpp:1751
msgid "Horizontal text"
msgstr "Text horitzontal"
@@ -22190,12 +22266,7 @@ msgstr "Text horitzontal"
msgid "Vertical text"
msgstr "Text vertical"
-#: ../src/ui/dialog/text-edit.cpp:130 ../src/ui/dialog/text-edit.cpp:131
-#, fuzzy
-msgid "Spacing between baselines (percent of font size)"
-msgstr "Espai entre les línies (percentatge de la mida del tipus de lletra)"
-
-#: ../src/ui/dialog/text-edit.cpp:147
+#: ../src/ui/dialog/text-edit.cpp:154
msgid "Text path offset"
msgstr "Desplaçament del camí del text"
@@ -22842,7 +22913,7 @@ msgstr "Introduïu el grup #%1"
#: ../src/ui/interface.cpp:1528
#, fuzzy
msgid "_Pop selection out of group"
-msgstr "_Tracta la selecció com a un grup: "
+msgstr "Sor Mis Ind"
#. Item dialog
#: ../src/ui/interface.cpp:1656 ../src/verbs.cpp:2940
@@ -23039,35 +23110,37 @@ msgstr ""
msgid "Move the box in perspective"
msgstr "Mou la capsa en perspectiva"
-#: ../src/ui/object-edit.cpp:983
+#: ../src/ui/object-edit.cpp:996
msgid "Adjust ellipse <b>width</b>, with <b>Ctrl</b> to make circle"
msgstr "Ajusta <b>l'amplada</b> de l'el·lipse, amb <b>Ctrl</b> es fa un cercle"
-#: ../src/ui/object-edit.cpp:987
+#: ../src/ui/object-edit.cpp:1000
msgid "Adjust ellipse <b>height</b>, with <b>Ctrl</b> to make circle"
msgstr "Ajusteu <b>l'alçada</b> de l'el·lipse, amb <b>Ctrl</b> es fa un cercle"
-#: ../src/ui/object-edit.cpp:991
+#: ../src/ui/object-edit.cpp:1004
+#, fuzzy
msgid ""
-"Position the <b>start point</b> of the arc or segment; with <b>Ctrl</b> to "
-"snap angle; drag <b>inside</b> the ellipse for arc, <b>outside</b> for "
-"segment"
+"Position the <b>start point</b> of the arc or segment; with <b>Shift</b> to "
+"move with <b>end point</b>; with <b>Ctrl</b> to snap angle; drag <b>inside</"
+"b> the ellipse for arc, <b>outside</b> for segment"
msgstr ""
"Posicioneu el <b>punt inicial</b> de l'arc o segment; amb <b>Ctrl</b> "
"s'ajusta l'angle; arrossegueu <b>a dins</b> l'el·lipse per fer un arc, o "
"<b>a fora</b> per fer un segment"
-#: ../src/ui/object-edit.cpp:996
+#: ../src/ui/object-edit.cpp:1010
+#, fuzzy
msgid ""
-"Position the <b>end point</b> of the arc or segment; with <b>Ctrl</b> to "
-"snap angle; drag <b>inside</b> the ellipse for arc, <b>outside</b> for "
-"segment"
+"Position the <b>end point</b> of the arc or segment; with <b>Shift</b> to "
+"move with <b>start point</b>; with <b>Ctrl</b> to snap angle; drag "
+"<b>inside</b> the ellipse for arc, <b>outside</b> for segment"
msgstr ""
"Posicioneu el <b>punt final</b> de l'arc o segment; amb <b>Ctrl</b> s'ajusta "
"l'angle; arrossegueu <b>a dins</b> l'el·lipse per a l'arc, <b>a fora</b> per "
"al segment"
-#: ../src/ui/object-edit.cpp:1142
+#: ../src/ui/object-edit.cpp:1157
msgid ""
"Adjust the <b>tip radius</b> of the star or polygon; with <b>Shift</b> to "
"round; with <b>Alt</b> to randomize"
@@ -23075,7 +23148,7 @@ msgstr ""
"Ajusteu la <b>distància al centre</b> de l'estel del polígon; amb <b>Maj</b> "
"per arrodonir; amb <b>Alt</b> per aleatoritzar"
-#: ../src/ui/object-edit.cpp:1150
+#: ../src/ui/object-edit.cpp:1165
msgid ""
"Adjust the <b>base radius</b> of the star; with <b>Ctrl</b> to keep star "
"rays radial (no skew); with <b>Shift</b> to round; with <b>Alt</b> to "
@@ -23085,7 +23158,7 @@ msgstr ""
"raigs de l'estel radial (sense tòrcer); amb <b>Maj</b> per arrodonir; amb "
"<b>Alt</b> per aleatoritzar"
-#: ../src/ui/object-edit.cpp:1345
+#: ../src/ui/object-edit.cpp:1360
msgid ""
"Roll/unroll the spiral from <b>inside</b>; with <b>Ctrl</b> to snap angle; "
"with <b>Alt</b> to converge/diverge"
@@ -23093,7 +23166,7 @@ msgstr ""
"Enrotlleu/desenrotlleu l'espiral des de <b>dins</b>; amb <b>Ctrl</b> per "
"ajustar l'angle; amb <b>Alt</b> per convergir/divergir"
-#: ../src/ui/object-edit.cpp:1349
+#: ../src/ui/object-edit.cpp:1364
msgid ""
"Roll/unroll the spiral from <b>outside</b>; with <b>Ctrl</b> to snap angle; "
"with <b>Shift</b> to scale/rotate; with <b>Alt</b> to lock radius"
@@ -23101,11 +23174,11 @@ msgstr ""
"Enrotlleu/desenrotlleu l'espiral des de <b>fora</b>; amb <b>Ctrl</b> per "
"ajustar l'angle; amb <b>Maj</b> per escalar/girar"
-#: ../src/ui/object-edit.cpp:1398
+#: ../src/ui/object-edit.cpp:1413
msgid "Adjust the <b>offset distance</b>"
msgstr "Ajusteu la <b>distància de desplaçament</b>"
-#: ../src/ui/object-edit.cpp:1435
+#: ../src/ui/object-edit.cpp:1450
msgid "Drag to resize the <b>flowed text frame</b>"
msgstr "Arrossegueu per canviar la mida del <b>marc de text flotant</b>"
@@ -23127,7 +23200,7 @@ msgstr "<b>Majúscules</b>: cliqueu per commutar la selecció de segments"
#: ../src/ui/tool/curve-drag-point.cpp:200
msgctxt "Path segment tip"
msgid "<b>Ctrl+Alt</b>: click to insert a node"
-msgstr "<b>Ctrl+Alt</b>: cliqueu per inserir un node"
+msgstr "<b>Ctrl+Alt</b>: feu clic per inserir un node"
#: ../src/ui/tool/curve-drag-point.cpp:204
#, fuzzy
@@ -23995,24 +24068,24 @@ msgstr ""
"emplenar en prémer"
#. We hit green anchor, closing Green-Blue-Red
-#: ../src/ui/tools/freehand-base.cpp:677
+#: ../src/ui/tools/freehand-base.cpp:661
msgid "Path is closed."
msgstr "El camí està tancat."
#. We hit bot start and end of single curve, closing paths
-#: ../src/ui/tools/freehand-base.cpp:692
+#: ../src/ui/tools/freehand-base.cpp:676
msgid "Closing path."
msgstr "S'està tancant el camí."
-#: ../src/ui/tools/freehand-base.cpp:831
+#: ../src/ui/tools/freehand-base.cpp:825
msgid "Draw path"
msgstr "Dibuixa el camí"
-#: ../src/ui/tools/freehand-base.cpp:984
+#: ../src/ui/tools/freehand-base.cpp:978
msgid "Creating single dot"
msgstr "S'està creant un punt"
-#: ../src/ui/tools/freehand-base.cpp:985
+#: ../src/ui/tools/freehand-base.cpp:979
msgid "Create single dot"
msgstr "Crea un punt"
@@ -24083,7 +24156,7 @@ msgstr "Simplifica el degradat"
msgid "Create default gradient"
msgstr "Crea un degradat predeterminat"
-#: ../src/ui/tools/gradient-tool.cpp:569 ../src/ui/tools/mesh-tool.cpp:561
+#: ../src/ui/tools/gradient-tool.cpp:569 ../src/ui/tools/mesh-tool.cpp:564
msgid "<b>Draw around</b> handles to select them"
msgstr "<b>Dibuixeu al voltant</b> dels punts de control per seleccionar-los"
@@ -24095,7 +24168,7 @@ msgstr "<b>Control</b>: ajusta l'angle del degradat"
msgid "<b>Shift</b>: draw gradient around the starting point"
msgstr "<b>Majúscules</b>: dibuixa el degradat al voltant del punt d'inici"
-#: ../src/ui/tools/gradient-tool.cpp:945 ../src/ui/tools/mesh-tool.cpp:977
+#: ../src/ui/tools/gradient-tool.cpp:946 ../src/ui/tools/mesh-tool.cpp:980
#, c-format
msgid "<b>Gradient</b> for %d object; with <b>Ctrl</b> to snap angle"
msgid_plural "<b>Gradient</b> for %d objects; with <b>Ctrl</b> to snap angle"
@@ -24104,7 +24177,7 @@ msgstr[0] ""
msgstr[1] ""
"<b>Degradat</b>: per a %d objectes; amb <b>Ctrl</b> per ajustar l'angle"
-#: ../src/ui/tools/gradient-tool.cpp:949 ../src/ui/tools/mesh-tool.cpp:981
+#: ../src/ui/tools/gradient-tool.cpp:950 ../src/ui/tools/mesh-tool.cpp:984
msgid "Select <b>objects</b> on which to create gradient."
msgstr "Seleccioneu <b>alguns objectes</b> per crear-hi degradats."
@@ -24121,35 +24194,37 @@ msgstr ""
msgid "Measure end, <b>Shift+Click</b> for position dialog"
msgstr ""
-#: ../src/ui/tools/measure-tool.cpp:747 ../share/extensions/measure.inx.h:2
+#: ../src/ui/tools/measure-tool.cpp:746 ../share/extensions/measure.inx.h:2
msgid "Measure"
msgstr "Mesura"
-#: ../src/ui/tools/measure-tool.cpp:752
+#: ../src/ui/tools/measure-tool.cpp:751
+#, fuzzy
msgid "Base"
-msgstr ""
+msgstr "Base"
-#: ../src/ui/tools/measure-tool.cpp:761
+#: ../src/ui/tools/measure-tool.cpp:760
msgid "Add guides from measure tool"
msgstr ""
-#: ../src/ui/tools/measure-tool.cpp:781
-msgid "Add Stored to measure tool"
+#: ../src/ui/tools/measure-tool.cpp:780
+msgid "Keep last measure on the canvas, for reference"
msgstr ""
-#: ../src/ui/tools/measure-tool.cpp:801
+#: ../src/ui/tools/measure-tool.cpp:800
#, fuzzy
msgid "Convert measure to items"
-msgstr "Converteix un traç en camí"
+msgstr "No existeix aquest compàs"
-#: ../src/ui/tools/measure-tool.cpp:839
+#: ../src/ui/tools/measure-tool.cpp:838
+#, fuzzy
msgid "Add global measure line"
-msgstr ""
+msgstr "Afegeix mesura"
-#: ../src/ui/tools/measure-tool.cpp:1290 ../src/ui/tools/measure-tool.cpp:1292
+#: ../src/ui/tools/measure-tool.cpp:1289 ../src/ui/tools/measure-tool.cpp:1291
#, fuzzy, c-format
msgid "Crossing %lu"
-msgstr "Difuminat creuat"
+msgstr "L'encreuament"
#. TRANSLATORS: Mind the space in front. This is part of a compound message
#: ../src/ui/tools/mesh-tool.cpp:122 ../src/ui/tools/mesh-tool.cpp:133
@@ -24178,48 +24253,48 @@ msgstr[1] ""
"<b>No</b> s'ha seleccionat cap dels punts de control de la malla dels %d "
"dels %d objectes seleccionats"
-#: ../src/ui/tools/mesh-tool.cpp:311
+#: ../src/ui/tools/mesh-tool.cpp:315
msgid "Split mesh row/column"
msgstr "Divideix la fila/columna de la malla"
-#: ../src/ui/tools/mesh-tool.cpp:397
+#: ../src/ui/tools/mesh-tool.cpp:401
msgid "Toggled mesh path type."
msgstr "Commuta el tipus de camí de la malla."
-#: ../src/ui/tools/mesh-tool.cpp:401
+#: ../src/ui/tools/mesh-tool.cpp:405
msgid "Approximated arc for mesh side."
msgstr "Arc aproximat pel costat de la malla."
-#: ../src/ui/tools/mesh-tool.cpp:405
+#: ../src/ui/tools/mesh-tool.cpp:409
msgid "Toggled mesh tensors."
msgstr "Commuta els sensors de la malla."
-#: ../src/ui/tools/mesh-tool.cpp:409
+#: ../src/ui/tools/mesh-tool.cpp:413
msgid "Smoothed mesh corner color."
msgstr "Color suavitzat de la cantonada de la malla."
-#: ../src/ui/tools/mesh-tool.cpp:413
+#: ../src/ui/tools/mesh-tool.cpp:417
msgid "Picked mesh corner color."
msgstr "Color de la cantonada de la malla seleccionat."
-#: ../src/ui/tools/mesh-tool.cpp:489
+#: ../src/ui/tools/mesh-tool.cpp:492
msgid "Create default mesh"
msgstr "Crea una malla predeterminada"
-#: ../src/ui/tools/mesh-tool.cpp:713
+#: ../src/ui/tools/mesh-tool.cpp:715
msgid "FIXME<b>Ctrl</b>: snap mesh angle"
msgstr "<b>Control</b>: ajusta l'angle de la malla"
-#: ../src/ui/tools/mesh-tool.cpp:714
+#: ../src/ui/tools/mesh-tool.cpp:716
msgid "FIXME<b>Shift</b>: draw mesh around the starting point"
msgstr "<b>Majúscules</b>: dibuixeu la malla al voltant del punt d'inici"
-#: ../src/ui/tools/mesh-tool.cpp:971
+#: ../src/ui/tools/mesh-tool.cpp:974
#, fuzzy
msgid "Create mesh"
-msgstr "Crea una malla predeterminada"
+msgstr "Crea un degradat en forma de malla"
-#: ../src/ui/tools/node-tool.cpp:648
+#: ../src/ui/tools/node-tool.cpp:644
msgctxt "Node tool tip"
msgid ""
"<b>Shift</b>: drag to add nodes to the selection, click to toggle object "
@@ -24228,19 +24303,19 @@ msgstr ""
"<b>Majúscules</b>: arrossegueu per afegir nodes a la selecció, cliqueu per "
"commutar la selecció de l'objecte"
-#: ../src/ui/tools/node-tool.cpp:652
+#: ../src/ui/tools/node-tool.cpp:648
msgctxt "Node tool tip"
msgid "<b>Shift</b>: drag to add nodes to the selection"
msgstr "<b>Majúscules</b>: arrossegueu per afegir nodes a la selecció"
-#: ../src/ui/tools/node-tool.cpp:681
+#: ../src/ui/tools/node-tool.cpp:677
#, c-format
msgid "<b>%u of %u</b> node selected."
msgid_plural "<b>%u of %u</b> nodes selected."
msgstr[0] "<b>%u de %u</b> nodes seleccionats."
msgstr[1] "<b>%u de %u</b> nodes seleccionats."
-#: ../src/ui/tools/node-tool.cpp:688
+#: ../src/ui/tools/node-tool.cpp:684
#, c-format
msgctxt "Node tool tip"
msgid "%s Drag to select nodes, click to edit only this object (more: Shift)"
@@ -24248,31 +24323,31 @@ msgstr ""
"%s Arrossegueu per seleccionar nodes, feu clic per editar només aquest "
"objecte (més: Majúscules)"
-#: ../src/ui/tools/node-tool.cpp:694
+#: ../src/ui/tools/node-tool.cpp:690
#, c-format
msgctxt "Node tool tip"
msgid "%s Drag to select nodes, click clear the selection"
msgstr ""
"%s Arrossegueu per seleccionar nodes, feu cliqueu per cancel·lar la selecció"
-#: ../src/ui/tools/node-tool.cpp:703
+#: ../src/ui/tools/node-tool.cpp:699
msgctxt "Node tool tip"
msgid "Drag to select nodes, click to edit only this object"
msgstr "Arrossegueu per seleccionar nodes, cliqueu per editar-lo"
-#: ../src/ui/tools/node-tool.cpp:706
+#: ../src/ui/tools/node-tool.cpp:702
msgctxt "Node tool tip"
msgid "Drag to select nodes, click to clear the selection"
msgstr "Arrossegueu per seleccionar nodes, cliqueu per cancel·lar la selecció"
-#: ../src/ui/tools/node-tool.cpp:711
+#: ../src/ui/tools/node-tool.cpp:707
msgctxt "Node tool tip"
msgid "Drag to select objects to edit, click to edit this object (more: Shift)"
msgstr ""
"Arrossegueu per seleccionar els objectes per editar, cliqueu per editar "
"l'objecte (més: Majúscules)"
-#: ../src/ui/tools/node-tool.cpp:714
+#: ../src/ui/tools/node-tool.cpp:710
msgctxt "Node tool tip"
msgid "Drag to select objects to edit"
msgstr "Arrossegueu per seleccionar els objectes per editar"
@@ -24327,8 +24402,8 @@ msgid ""
"<b>Curve segment</b>: angle %3.2f&#176;, distance %s; with <b>Ctrl</b> to "
"snap angle, <b>Enter</b> or <b>Shift+Enter</b> to finish the path"
msgstr ""
-"<b>Segment de corba</b>: angle %3.2f&#176;, distància %s; amb <b>Ctrl</b> "
-"s'ajusta l'angle; amb <b>Retorn</b> acabeu el camí"
+"<b>Segment de corba</b>: angle %3.2f&#176;, distància %s; amb <b>Majúscules"
+"+clic</b> per fer un node vèrtex; amb <b>Retorn</b> per acabar el camí"
#: ../src/ui/tools/pen-tool.cpp:1798
#, fuzzy, c-format
@@ -24336,8 +24411,8 @@ msgid ""
"<b>Line segment</b>: angle %3.2f&#176;, distance %s; with <b>Ctrl</b> to "
"snap angle, <b>Enter</b> or <b>Shift+Enter</b> to finish the path"
msgstr ""
-"<b>Segment de línia</b>: angle %3.2f&#176;, distància %s; amb <b>Ctrl</b> "
-"s'ajusta l'angle; amb <b>Retorn</b> acabeu el camí"
+"<b>Segment de línia</b>: angle %3.2f&#176;, distància %s; amb <b>Majúscules"
+"+clic</b> per fer un node vèrtex; amb <b>Retorn</b> per acabar el camí"
#: ../src/ui/tools/pen-tool.cpp:1801
#, fuzzy, c-format
@@ -24466,12 +24541,12 @@ msgstr ""
msgid "Create rectangle"
msgstr "Crea un rectangle"
-#: ../src/ui/tools/select-tool.cpp:156
+#: ../src/ui/tools/select-tool.cpp:155
msgid "Click selection to toggle scale/rotation handles"
msgstr ""
"Cliqueu la selecció per commutar entre punts de control per rotar/escalar"
-#: ../src/ui/tools/select-tool.cpp:157
+#: ../src/ui/tools/select-tool.cpp:156
msgid ""
"No objects selected. Click, Shift+click, Alt+scroll mouse on top of objects, "
"or drag around objects to select."
@@ -24479,15 +24554,15 @@ msgstr ""
"No s'ha seleccionat cap objecte. Cliqueu, Maj+clic, o arrossegueu al voltant "
"dels objectes per seleccionar."
-#: ../src/ui/tools/select-tool.cpp:210
+#: ../src/ui/tools/select-tool.cpp:209
msgid "Move canceled."
msgstr "No s'ha mogut."
-#: ../src/ui/tools/select-tool.cpp:218
+#: ../src/ui/tools/select-tool.cpp:217
msgid "Selection canceled."
msgstr "No s'ha seleccionat."
-#: ../src/ui/tools/select-tool.cpp:638
+#: ../src/ui/tools/select-tool.cpp:645
msgid ""
"<b>Draw over</b> objects to select them; release <b>Alt</b> to switch to "
"rubberband selection"
@@ -24495,7 +24570,7 @@ msgstr ""
"<b>Passeu per sobre</b> dels objectes que voleu seleccionar; deixeu anar la "
"tecla <b>Alt</b> per seleccionar els objectes encerclant-los"
-#: ../src/ui/tools/select-tool.cpp:640
+#: ../src/ui/tools/select-tool.cpp:647
msgid ""
"<b>Drag around</b> objects to select them; press <b>Alt</b> to switch to "
"touch selection"
@@ -24503,19 +24578,19 @@ msgstr ""
"<b>Encercleu</b> els objectes per seleccionar-los; premeu <b>Alt</b> per "
"seleccionar-los per contacte"
-#: ../src/ui/tools/select-tool.cpp:921
+#: ../src/ui/tools/select-tool.cpp:888
msgid "<b>Ctrl</b>: click to select in groups; drag to move hor/vert"
msgstr ""
"<b>Ctrl</b>: cliqueu per seleccionar en grups; arrossegueu per moure en hor/"
"ver"
-#: ../src/ui/tools/select-tool.cpp:922
+#: ../src/ui/tools/select-tool.cpp:889
msgid "<b>Shift</b>: click to toggle select; drag for rubberband selection"
msgstr ""
"<b>Majúscules</b>: cliqueu per commutar la selecció; moveu el punter per "
"seleccionar els objectes encerclant-los"
-#: ../src/ui/tools/select-tool.cpp:923
+#: ../src/ui/tools/select-tool.cpp:890
msgid ""
"<b>Alt</b>: click to select under; scroll mouse-wheel to cycle-select; drag "
"to move selected or select by touch"
@@ -24524,7 +24599,7 @@ msgstr ""
"ratolí per seleccionar cíclicament; arrossegueu per moure allò seleccionat o "
"per seleccionar en prémer"
-#: ../src/ui/tools/select-tool.cpp:1131
+#: ../src/ui/tools/select-tool.cpp:1098
msgid "Selected object is not a group. Cannot enter."
msgstr "L'objecte seleccionat no és un grup. No es pot entrar."
@@ -24784,7 +24859,7 @@ msgstr[1] ""
msgid "Type text"
msgstr "Escriviu un text"
-#: ../src/ui/tools/tool-base.cpp:700
+#: ../src/ui/tools/tool-base.cpp:705
msgid "<b>Space+mouse move</b> to pan canvas"
msgstr "<b>Barra espaiadora+arrossegament</b> per desplaçar el llenç"
@@ -25071,13 +25146,12 @@ msgstr "Difuminat (%)"
#: ../src/ui/widget/font-variants.cpp:38
msgctxt "Font variant"
msgid "Ligatures"
-msgstr ""
+msgstr "Lligadures"
#: ../src/ui/widget/font-variants.cpp:39
-#, fuzzy
msgctxt "Font variant"
msgid "Common"
-msgstr "normal"
+msgstr "Comú"
#: ../src/ui/widget/font-variants.cpp:40
#, fuzzy
@@ -25089,67 +25163,60 @@ msgstr "Direcció"
#, fuzzy
msgctxt "Font variant"
msgid "Historical"
-msgstr "Tutorials"
+msgstr "Històrica"
#: ../src/ui/widget/font-variants.cpp:42
#, fuzzy
msgctxt "Font variant"
msgid "Contextual"
-msgstr "Context"
+msgstr "Ajuda contextual"
#: ../src/ui/widget/font-variants.cpp:44
-#, fuzzy
msgctxt "Font variant"
msgid "Position"
-msgstr "Posició"
+msgstr "Posició "
#: ../src/ui/widget/font-variants.cpp:45 ../src/ui/widget/font-variants.cpp:50
-#, fuzzy
msgctxt "Font variant"
msgid "Normal"
msgstr "Normal"
#: ../src/ui/widget/font-variants.cpp:46
-#, fuzzy
msgctxt "Font variant"
msgid "Subscript"
-msgstr "Commuta subíndex"
+msgstr "Subíndex"
#: ../src/ui/widget/font-variants.cpp:47
-#, fuzzy
msgctxt "Font variant"
msgid "Superscript"
-msgstr "Commuta superíndex"
+msgstr "Superíndex"
#: ../src/ui/widget/font-variants.cpp:49
-#, fuzzy
msgctxt "Font variant"
msgid "Capitals"
-msgstr "Hospital"
+msgstr "Majúscules"
#: ../src/ui/widget/font-variants.cpp:51
-#, fuzzy
msgctxt "Font variant"
msgid "Small"
-msgstr "Petita"
+msgstr "Petit"
#: ../src/ui/widget/font-variants.cpp:52
-#, fuzzy
msgctxt "Font variant"
msgid "All small"
-msgstr "Totes les imatges"
+msgstr "Tot petit"
#: ../src/ui/widget/font-variants.cpp:53
#, fuzzy
msgctxt "Font variant"
msgid "Petite"
-msgstr "Tots inactius"
+msgstr "Petite-Rivière"
#: ../src/ui/widget/font-variants.cpp:54
#, fuzzy
msgctxt "Font variant"
msgid "All petite"
-msgstr "Tots inactius"
+msgstr "Petite-Rivière"
#: ../src/ui/widget/font-variants.cpp:55
msgctxt "Font variant"
@@ -25165,76 +25232,75 @@ msgstr "Navegació a vela"
#: ../src/ui/widget/font-variants.cpp:58
msgctxt "Font variant"
msgid "Numeric"
-msgstr ""
+msgstr "Numèric"
#: ../src/ui/widget/font-variants.cpp:59
#, fuzzy
msgctxt "Font variant"
msgid "Lining"
-msgstr "Aprima:"
+msgstr ""
+"<ahelp hid=\"cui/ui/pageformatpage/comboRegisterStyle\"><switchinline select="
+"\"appl\"><caseinline select=\"WRITER\">Seleccioneu l'estil de paràgraf que "
+"voleu utilitzar com a referència per alinear el text amb l'estil de pàgina "
+"seleccionat. L'alçada del tipus de lletra indicada a l'estil de referència "
+"defineix l'espaiat de la graella de pàgina vertical.</caseinline></"
+"switchinline></ahelp>"
#: ../src/ui/widget/font-variants.cpp:60
-#, fuzzy
msgctxt "Font variant"
msgid "Old Style"
-msgstr "Estil"
+msgstr "Estil antic"
#: ../src/ui/widget/font-variants.cpp:61
-#, fuzzy
msgctxt "Font variant"
msgid "Default Style"
-msgstr "Títol predeterminat"
+msgstr "Estil per defecte"
#: ../src/ui/widget/font-variants.cpp:62
-#, fuzzy
msgctxt "Font variant"
msgid "Proportional"
-msgstr "Proporció de la pestanya:"
+msgstr "Proporcional"
#: ../src/ui/widget/font-variants.cpp:63
msgctxt "Font variant"
msgid "Tabular"
-msgstr ""
+msgstr "Tabular"
#: ../src/ui/widget/font-variants.cpp:64
-#, fuzzy
msgctxt "Font variant"
msgid "Default Width"
-msgstr "Títol predeterminat"
+msgstr "Amplada per defecte"
#: ../src/ui/widget/font-variants.cpp:65
-#, fuzzy
msgctxt "Font variant"
msgid "Diagonal"
-msgstr "Guies en diagonal"
+msgstr "Diagonal"
#: ../src/ui/widget/font-variants.cpp:66
-#, fuzzy
msgctxt "Font variant"
msgid "Stacked"
-msgstr "Fons"
+msgstr "Apilat"
#: ../src/ui/widget/font-variants.cpp:67
-#, fuzzy
msgctxt "Font variant"
msgid "Default Fractions"
-msgstr "Configuració predeterminada de la graella"
+msgstr "Fraccions per defecte"
#: ../src/ui/widget/font-variants.cpp:68
msgctxt "Font variant"
msgid "Ordinal"
-msgstr ""
+msgstr "Ordinal"
#: ../src/ui/widget/font-variants.cpp:69
+#, fuzzy
msgctxt "Font variant"
msgid "Slashed Zero"
-msgstr ""
+msgstr "Barrat"
#: ../src/ui/widget/font-variants.cpp:71
-#, fuzzy
msgctxt "Font variant"
msgid "Feature Settings"
-msgstr "Configuració de la pàgina"
+msgstr "Configuració de característica"
#: ../src/ui/widget/font-variants.cpp:72
msgctxt "Font variant"
@@ -25260,9 +25326,8 @@ msgstr ""
#. Position ----------------------------------
#. Add tooltips
#: ../src/ui/widget/font-variants.cpp:112
-#, fuzzy
msgid "Normal position."
-msgstr "Posició X"
+msgstr "Posició normal."
#: ../src/ui/widget/font-variants.cpp:113
msgid "Subscript. OpenType table: 'subs'"
@@ -25277,7 +25342,7 @@ msgstr ""
#: ../src/ui/widget/font-variants.cpp:138
#, fuzzy
msgid "Normal capitalization."
-msgstr "Localització"
+msgstr "Bloq Maj commuta les majúscules normals dels caràcters alfabètics"
#: ../src/ui/widget/font-variants.cpp:139
msgid "Small-caps (lowercase). OpenType table: 'smcp'"
@@ -25312,9 +25377,8 @@ msgstr ""
#. Numeric ------------------------------
#. Add tooltips
#: ../src/ui/widget/font-variants.cpp:180
-#, fuzzy
msgid "Normal style."
-msgstr "Desplaçament normal:"
+msgstr "Estil normal."
#: ../src/ui/widget/font-variants.cpp:181
msgid "Lining numerals. OpenType table: 'lnum'"
@@ -25325,9 +25389,8 @@ msgid "Old style numerals. OpenType table: 'onum'"
msgstr ""
#: ../src/ui/widget/font-variants.cpp:183
-#, fuzzy
msgid "Normal widths."
-msgstr "Llum normal"
+msgstr "Amplades normals."
#: ../src/ui/widget/font-variants.cpp:184
msgid "Proportional width numerals. OpenType table: 'pnum'"
@@ -25338,9 +25401,8 @@ msgid "Same width numerals. OpenType table: 'tnum'"
msgstr ""
#: ../src/ui/widget/font-variants.cpp:186
-#, fuzzy
msgid "Normal fractions."
-msgstr "Ignora rotacions de la imatge"
+msgstr "Fraccions normals."
#: ../src/ui/widget/font-variants.cpp:187
msgid "Diagonal fractions. OpenType table: 'frac'"
@@ -25392,7 +25454,7 @@ msgstr "Altres"
#: ../src/ui/widget/licensor.cpp:72
#, fuzzy
msgid "Document license updated"
-msgstr "Neteja el document"
+msgstr "El document no s'ha actualitzat"
#: ../src/ui/widget/object-composite-settings.cpp:47
#: ../src/ui/widget/selected-style.cpp:1118
@@ -25455,24 +25517,20 @@ msgid "Bottom margin"
msgstr "Marge inferior"
#: ../src/ui/widget/page-sizer.cpp:244
-#, fuzzy
msgid "Scale _x:"
-msgstr "Escala:"
+msgstr "Escala _x:"
#: ../src/ui/widget/page-sizer.cpp:244
-#, fuzzy
msgid "Scale X"
-msgstr "Escala"
+msgstr "Escala X"
#: ../src/ui/widget/page-sizer.cpp:245
-#, fuzzy
msgid "Scale _y:"
-msgstr "Escala:"
+msgstr "Escala _y:"
#: ../src/ui/widget/page-sizer.cpp:245
-#, fuzzy
msgid "Scale Y"
-msgstr "Escala"
+msgstr "Escala Y"
#: ../src/ui/widget/page-sizer.cpp:323
msgid "Orientation:"
@@ -25517,24 +25575,25 @@ msgstr ""
#: ../src/ui/widget/page-sizer.cpp:483
#, fuzzy
msgid "_Viewbox..."
-msgstr "_Visualitza"
+msgstr "Extreu la ViewBox del SVG..."
#: ../src/ui/widget/page-sizer.cpp:590
msgid "Set page size"
msgstr "Estableix la mida de la pàgina"
#: ../src/ui/widget/page-sizer.cpp:836
+#, fuzzy
msgid "User units per "
-msgstr ""
+msgstr "Per unitats:"
#: ../src/ui/widget/page-sizer.cpp:932
-#, fuzzy
msgid "Set page scale"
-msgstr "Estableix la mida de la pàgina"
+msgstr "Estableix l'escala de la pàgina"
#: ../src/ui/widget/page-sizer.cpp:958
+#, fuzzy
msgid "Set 'viewBox'"
-msgstr ""
+msgstr "Extreu la ViewBox del SVG..."
#: ../src/ui/widget/panel.cpp:116
msgid "List"
@@ -26257,9 +26316,9 @@ msgid "Flip vertically"
msgstr "Volteja verticalment"
#: ../src/verbs.cpp:1590
-#, fuzzy, c-format
+#, c-format
msgid "Set %d"
-msgstr "Estableix l'amplada:"
+msgstr "Estableix %d"
#: ../src/verbs.cpp:1599 ../src/verbs.cpp:2729
msgid "Create new selection set"
@@ -26833,14 +26892,12 @@ msgid "Delete all the guides in the document"
msgstr "Suprimeix tots els guies al document"
#: ../src/verbs.cpp:2546
-#, fuzzy
msgid "Lock All Guides"
-msgstr "Desbloca-ho tot"
+msgstr "Bloqueja totes les guies"
#: ../src/verbs.cpp:2546 ../src/widgets/desktop-widget.cpp:404
-#, fuzzy
msgid "Toggle lock of all guides in the document"
-msgstr "Suprimeix tots els guies al document"
+msgstr "Commuta el bloqueja de totes les guies al document"
#: ../src/verbs.cpp:2547
msgid "Create _Guides Around the Page"
@@ -26900,14 +26957,12 @@ msgid "Ungroup selected groups"
msgstr "Desagrupa els grups seleccionats"
#: ../src/verbs.cpp:2565
-#, fuzzy
msgid "_Pop selected objects out of group"
-msgstr "Agrupa els objectes seleccionats"
+msgstr "_Treu els objectes seleccionats del grup"
#: ../src/verbs.cpp:2566
-#, fuzzy
msgid "Pop selected objects out of group"
-msgstr "Agrupa els objectes seleccionats"
+msgstr "Treu els objectes seleccionats del grup"
#: ../src/verbs.cpp:2568
msgid "_Put on Path"
@@ -28431,9 +28486,8 @@ msgid "Fit the page to the drawing"
msgstr "Ajusta la pàgina al dibuix"
#: ../src/verbs.cpp:3008
-#, fuzzy
msgid "_Resize Page to Selection"
-msgstr "Ajusta la pàgina a la selecció"
+msgstr "_Canvia la mida de la pàgina a la selecció"
#: ../src/verbs.cpp:3009
msgid ""
@@ -28660,7 +28714,7 @@ msgstr "(cabell)"
#. Scale
#: ../src/widgets/calligraphy-toolbar.cpp:427
#: ../src/widgets/calligraphy-toolbar.cpp:460
-#: ../src/widgets/eraser-toolbar.cpp:151 ../src/widgets/pencil-toolbar.cpp:372
+#: ../src/widgets/eraser-toolbar.cpp:151 ../src/widgets/pencil-toolbar.cpp:378
#: ../src/widgets/spray-toolbar.cpp:294 ../src/widgets/spray-toolbar.cpp:323
#: ../src/widgets/spray-toolbar.cpp:339 ../src/widgets/spray-toolbar.cpp:408
#: ../src/widgets/spray-toolbar.cpp:438 ../src/widgets/spray-toolbar.cpp:456
@@ -29110,14 +29164,12 @@ msgid "%s%s - Inkscape"
msgstr "%s%s - Inkscape"
#: ../src/widgets/desktop-widget.cpp:1111
-#, fuzzy
msgid "Locked all guides"
-msgstr "Bloqueja totes les capes"
+msgstr "Totes les guies bloquejades"
#: ../src/widgets/desktop-widget.cpp:1113
-#, fuzzy
msgid "Unlocked all guides"
-msgstr "Desbloca totes les capes"
+msgstr "Totes les guies desbloquejades"
#: ../src/widgets/desktop-widget.cpp:1130
msgid "Color-managed display is <b>enabled</b> in this window"
@@ -29217,9 +29269,8 @@ msgstr "Retalla objectes"
#. Width
#: ../src/widgets/eraser-toolbar.cpp:151
-#, fuzzy
msgid "(no width)"
-msgstr "Amplada zero"
+msgstr "(sense amplada)"
#: ../src/widgets/eraser-toolbar.cpp:155
msgid "The width of the eraser pen (relative to the visible canvas area)"
@@ -29230,7 +29281,7 @@ msgstr ""
#: ../src/widgets/eraser-toolbar.cpp:171
#, fuzzy
msgid "Eraser Mass"
-msgstr "Goma d'esborrar"
+msgstr "Cota:"
#: ../src/widgets/eraser-toolbar.cpp:172
#, fuzzy
@@ -29241,7 +29292,7 @@ msgstr ""
#: ../src/widgets/eraser-toolbar.cpp:186 ../src/widgets/eraser-toolbar.cpp:187
#, fuzzy
msgid "Break apart cut items"
-msgstr "Separa"
+msgstr "Sep_ara"
#: ../src/widgets/fill-style.cpp:356
msgid "Change fill rule"
@@ -29271,8 +29322,8 @@ msgstr "Estableix el patró en emplenar"
msgid "Set pattern on stroke"
msgstr "Estableix el patró del traç"
-#: ../src/widgets/font-selector.cpp:120 ../src/widgets/text-toolbar.cpp:1207
-#: ../src/widgets/text-toolbar.cpp:1606
+#: ../src/widgets/font-selector.cpp:120 ../src/widgets/text-toolbar.cpp:1218
+#: ../src/widgets/text-toolbar.cpp:1617
msgid "Font size"
msgstr "Mida de la lletra"
@@ -29524,29 +29575,34 @@ msgstr "Canvia el color de la fase del degradat"
#: ../src/widgets/image-menu-item.c:151
#, fuzzy
msgid "Image widget"
-msgstr "Fitxer d'imatge"
+msgstr "Element d'imatge"
#: ../src/widgets/image-menu-item.c:152
+#, fuzzy
msgid "Child widget to appear next to the menu text"
-msgstr ""
+msgstr "Giny fill que apareix al costat del text del menú"
#: ../src/widgets/image-menu-item.c:167
#, fuzzy
msgid "Use stock"
-msgstr "Enganxa el traç"
+msgstr "Utilitza els de recurs"
#: ../src/widgets/image-menu-item.c:168
+#, fuzzy
msgid "Whether to use the label text to create a stock menu item"
msgstr ""
+"Si s'ha d'utilitzar el text de l'etiqueta per crear un element de menú de "
+"recurs"
#: ../src/widgets/image-menu-item.c:183
#, fuzzy
msgid "Accel Group"
-msgstr "Agrupa"
+msgstr "Grup d'acceleració"
#: ../src/widgets/image-menu-item.c:184
+#, fuzzy
msgid "The Accel Group to use for stock accelerator keys"
-msgstr ""
+msgstr "El grup de dreceres a utilitzar per a les dreceres de teclat de recurs"
#: ../src/widgets/lpe-toolbar.cpp:233
msgid "Closed"
@@ -29606,9 +29662,9 @@ msgstr "Mostra la informació de les mesures de l'element seleccionat"
#. Add the units menu.
#: ../src/widgets/lpe-toolbar.cpp:387 ../src/widgets/node-toolbar.cpp:613
-#: ../src/widgets/paintbucket-toolbar.cpp:167
+#: ../src/widgets/paintbucket-toolbar.cpp:168
#: ../src/widgets/rect-toolbar.cpp:378 ../src/widgets/select-toolbar.cpp:530
-#: ../src/widgets/text-toolbar.cpp:1876
+#: ../src/widgets/text-toolbar.cpp:1887
msgid "Units"
msgstr "Unitats"
@@ -29621,42 +29677,46 @@ msgid "Open LPE dialog (to adapt parameters numerically)"
msgstr "Obre el diàleg LPE per adaptar els paràmetres numèricament"
#: ../src/widgets/measure-toolbar.cpp:157
+#, fuzzy
msgid "Start and end measures inactive."
-msgstr ""
+msgstr "Mesura el temps d'inici d'una aplicació KDE"
#: ../src/widgets/measure-toolbar.cpp:159
+#, fuzzy
msgid "Start and end measures active."
-msgstr ""
+msgstr "(inici == fi)"
#: ../src/widgets/measure-toolbar.cpp:175
#, fuzzy
msgid "Show all crossings."
-msgstr "Mostra totes les capes"
+msgstr "Senyals dels encreuaments"
#: ../src/widgets/measure-toolbar.cpp:177
+#, fuzzy
msgid "Show visible crossings."
-msgstr ""
+msgstr "Mostra la indentificació del port visible"
#: ../src/widgets/measure-toolbar.cpp:193
+#, fuzzy
msgid "Use all layers in the measure."
-msgstr ""
+msgstr "Utilitza totes les capes no seleccionades"
#: ../src/widgets/measure-toolbar.cpp:195
#, fuzzy
msgid "Use current layer in the measure."
-msgstr "Puja la capa al capdamunt"
+msgstr "Usa la &capa actual"
#: ../src/widgets/measure-toolbar.cpp:211
#, fuzzy
msgid "Compute all elements."
-msgstr "tutorial-elements.ca.svg"
+msgstr "Calcula tots els planificadors"
#: ../src/widgets/measure-toolbar.cpp:213
#, fuzzy
msgid "Compute max length."
-msgstr "Longitud del camí dins-fora:"
+msgstr "Llargada màxima:"
-#: ../src/widgets/measure-toolbar.cpp:274 ../src/widgets/text-toolbar.cpp:1609
+#: ../src/widgets/measure-toolbar.cpp:274 ../src/widgets/text-toolbar.cpp:1620
msgid "Font Size"
msgstr "Mida de la tipografia"
@@ -29678,27 +29738,27 @@ msgid "Precision:"
msgstr "Precisió:"
#: ../src/widgets/measure-toolbar.cpp:303
+#, fuzzy
msgid "Decimal precision of measure"
-msgstr ""
+msgstr "Estableix la &precisió decimal"
#: ../src/widgets/measure-toolbar.cpp:315
-#, fuzzy
msgid "Scale %"
-msgstr "Escala"
+msgstr "Escala %"
#: ../src/widgets/measure-toolbar.cpp:315
-#, fuzzy
msgid "Scale %:"
-msgstr "Escala:"
+msgstr "Escala %:"
#: ../src/widgets/measure-toolbar.cpp:316
+#, fuzzy
msgid "Scale the results"
-msgstr ""
+msgstr "> i < e_scalen:"
#: ../src/widgets/measure-toolbar.cpp:329
#, fuzzy
msgid "The offset size"
-msgstr "Desplaçament del vermell"
+msgstr " Mida de posicio: %d\n"
#: ../src/widgets/measure-toolbar.cpp:341
#: ../src/widgets/measure-toolbar.cpp:342
@@ -29710,53 +29770,56 @@ msgstr "Ignora els punts primer i darrer"
#: ../src/widgets/measure-toolbar.cpp:353
#, fuzzy
msgid "Show hidden intersections"
-msgstr "Intersecció de guies"
+msgstr "Mostra carpetes ocultes"
#: ../src/widgets/measure-toolbar.cpp:363
#: ../src/widgets/measure-toolbar.cpp:364
#, fuzzy
msgid "Show measures between items"
-msgstr "Mostra els moviments entre camins"
+msgstr "Mostra els elements de repetició diària"
#: ../src/widgets/measure-toolbar.cpp:374
#: ../src/widgets/measure-toolbar.cpp:375
#, fuzzy
msgid "Measure all layers"
-msgstr "Cerca en totes les capes"
+msgstr "Suprimeix la barra de compàs a tots els pentagrames"
#: ../src/widgets/measure-toolbar.cpp:385
#: ../src/widgets/measure-toolbar.cpp:386
#, fuzzy
msgid "Reverse measure"
-msgstr "Camí invertit"
+msgstr "No existeix aquest compàs"
#: ../src/widgets/measure-toolbar.cpp:395
#: ../src/widgets/measure-toolbar.cpp:396
+#, fuzzy
msgid "Phantom measure"
-msgstr ""
+msgstr "El Fantasma"
#: ../src/widgets/measure-toolbar.cpp:405
#: ../src/widgets/measure-toolbar.cpp:406
#, fuzzy
msgid "To guides"
-msgstr "Mostra les _guies"
+msgstr "Sense guies"
#: ../src/widgets/measure-toolbar.cpp:415
#: ../src/widgets/measure-toolbar.cpp:416
#, fuzzy
msgid "Mark Dimension"
-msgstr "Mides"
+msgstr "&Cotes"
#: ../src/widgets/measure-toolbar.cpp:425
#: ../src/widgets/measure-toolbar.cpp:426
#, fuzzy
msgid "Convert to item"
-msgstr "Converteix a Braille"
+msgstr ""
+"Trieu <emph>Modifica - Converteix </emph>(només al <item type=\"productname"
+"\">%PRODUCTNAME</item> Draw)"
#: ../src/widgets/mesh-toolbar.cpp:318
#, fuzzy
msgid "Set mesh type"
-msgstr "Estableix l'estil del text"
+msgstr "Malla"
#: ../src/widgets/mesh-toolbar.cpp:380
msgid "normal"
@@ -29835,8 +29898,9 @@ msgid "Coons"
msgstr ""
#: ../src/widgets/mesh-toolbar.cpp:522
+#, fuzzy
msgid "Bicubic"
-msgstr ""
+msgstr "Bicúbic"
#: ../src/widgets/mesh-toolbar.cpp:524
msgid "Coons"
@@ -29846,14 +29910,14 @@ msgstr ""
msgid "Coons: no smoothing. Bicubic: smoothing across patch boundaries."
msgstr ""
-#: ../src/widgets/mesh-toolbar.cpp:527 ../src/widgets/pencil-toolbar.cpp:375
+#: ../src/widgets/mesh-toolbar.cpp:527 ../src/widgets/pencil-toolbar.cpp:381
msgid "Smoothing:"
msgstr "Suavitzat:"
#: ../src/widgets/mesh-toolbar.cpp:537
#, fuzzy
msgid "Toggle Sides"
-msgstr "Commuta superíndex"
+msgstr "Cares:"
#: ../src/widgets/mesh-toolbar.cpp:538
msgid "Toggle selected sides between Beziers and lines."
@@ -29862,12 +29926,12 @@ msgstr ""
#: ../src/widgets/mesh-toolbar.cpp:541
#, fuzzy
msgid "Toggle side:"
-msgstr "Commuta el mode de _focus"
+msgstr "permuta vista vores laterals"
#: ../src/widgets/mesh-toolbar.cpp:548
#, fuzzy
msgid "Make elliptical"
-msgstr "Fes cursiva"
+msgstr "Arcs el·líptics"
#: ../src/widgets/mesh-toolbar.cpp:549
msgid ""
@@ -29878,12 +29942,12 @@ msgstr ""
#: ../src/widgets/mesh-toolbar.cpp:552
#, fuzzy
msgid "Make elliptical:"
-msgstr "Fes cursiva"
+msgstr "Arcs el·líptics"
#: ../src/widgets/mesh-toolbar.cpp:559
#, fuzzy
msgid "Pick colors:"
-msgstr "Color dels punts"
+msgstr "Agafa els colors de la imatge"
#: ../src/widgets/mesh-toolbar.cpp:560
msgid "Pick colors for selected corner nodes from underneath mesh."
@@ -29892,7 +29956,7 @@ msgstr ""
#: ../src/widgets/mesh-toolbar.cpp:563
#, fuzzy
msgid "Pick Color"
-msgstr "Emplenat de color"
+msgstr "Escolliu un color"
#: ../src/widgets/node-toolbar.cpp:341
msgid "Insert node"
@@ -30178,19 +30242,19 @@ msgstr "<b>Emplenat amb patró</b>"
msgid "<b>Swatch fill</b>"
msgstr "<b>Mostra emplenat</b>"
-#: ../src/widgets/paintbucket-toolbar.cpp:134
+#: ../src/widgets/paintbucket-toolbar.cpp:135
msgid "Fill by"
msgstr "Omple segons"
-#: ../src/widgets/paintbucket-toolbar.cpp:135
+#: ../src/widgets/paintbucket-toolbar.cpp:136
msgid "Fill by:"
msgstr "Omple segons:"
-#: ../src/widgets/paintbucket-toolbar.cpp:147
+#: ../src/widgets/paintbucket-toolbar.cpp:148
msgid "Fill Threshold"
msgstr "Llindar d'emplenat"
-#: ../src/widgets/paintbucket-toolbar.cpp:148
+#: ../src/widgets/paintbucket-toolbar.cpp:149
msgid ""
"The maximum allowed difference between the clicked pixel and the neighboring "
"pixels to be counted in the fill"
@@ -30198,36 +30262,36 @@ msgstr ""
"La màxima diferència permesa entre el píxel clicat i els píxels dels "
"voltants que es contaran en l'emplenat"
-#: ../src/widgets/paintbucket-toolbar.cpp:175
+#: ../src/widgets/paintbucket-toolbar.cpp:176
msgid "Grow/shrink by"
msgstr "Augmenta/encongeix"
-#: ../src/widgets/paintbucket-toolbar.cpp:175
+#: ../src/widgets/paintbucket-toolbar.cpp:176
msgid "Grow/shrink by:"
msgstr "Augmenta/encongeix:"
-#: ../src/widgets/paintbucket-toolbar.cpp:176
+#: ../src/widgets/paintbucket-toolbar.cpp:177
msgid ""
"The amount to grow (positive) or shrink (negative) the created fill path"
msgstr ""
"La quantitat a augmentar (positiu) o encongir (negatiu) el camí d'emplenat "
"creat"
-#: ../src/widgets/paintbucket-toolbar.cpp:199
+#: ../src/widgets/paintbucket-toolbar.cpp:200
msgid "Close gaps"
msgstr "Tapa els forats"
-#: ../src/widgets/paintbucket-toolbar.cpp:200
+#: ../src/widgets/paintbucket-toolbar.cpp:201
msgid "Close gaps:"
msgstr "Tapa els forats:"
-#: ../src/widgets/paintbucket-toolbar.cpp:211
-#: ../src/widgets/pencil-toolbar.cpp:396 ../src/widgets/spiral-toolbar.cpp:285
+#: ../src/widgets/paintbucket-toolbar.cpp:212
+#: ../src/widgets/pencil-toolbar.cpp:402 ../src/widgets/spiral-toolbar.cpp:285
#: ../src/widgets/star-toolbar.cpp:564
msgid "Defaults"
msgstr "Per defecte"
-#: ../src/widgets/paintbucket-toolbar.cpp:212
+#: ../src/widgets/paintbucket-toolbar.cpp:213
msgid ""
"Reset paint bucket parameters to defaults (use Inkscape Preferences > Tools "
"to change defaults)"
@@ -30235,93 +30299,93 @@ msgstr ""
"Reinicialitza les opcions predeterminades del cubell (useu Preferències > "
"Eines per canviar els valors predeterminats)"
-#: ../src/widgets/pencil-toolbar.cpp:105
+#: ../src/widgets/pencil-toolbar.cpp:104
msgid "Bezier"
msgstr "Bézier"
-#: ../src/widgets/pencil-toolbar.cpp:106
+#: ../src/widgets/pencil-toolbar.cpp:105
msgid "Create regular Bezier path"
msgstr "Crea un camí Bézier normal"
-#: ../src/widgets/pencil-toolbar.cpp:113
+#: ../src/widgets/pencil-toolbar.cpp:112
msgid "Create Spiro path"
msgstr "Crea un camí espiral"
-#: ../src/widgets/pencil-toolbar.cpp:119
+#: ../src/widgets/pencil-toolbar.cpp:118
msgid "Create BSpline path"
msgstr "Crea un camí BSpline"
-#: ../src/widgets/pencil-toolbar.cpp:125
+#: ../src/widgets/pencil-toolbar.cpp:124
msgid "Zigzag"
msgstr "Zigzag"
-#: ../src/widgets/pencil-toolbar.cpp:126
+#: ../src/widgets/pencil-toolbar.cpp:125
msgid "Create a sequence of straight line segments"
msgstr "Crea una seqüència de segments rectes"
-#: ../src/widgets/pencil-toolbar.cpp:132
+#: ../src/widgets/pencil-toolbar.cpp:131
msgid "Paraxial"
msgstr "Paraxial"
-#: ../src/widgets/pencil-toolbar.cpp:133
+#: ../src/widgets/pencil-toolbar.cpp:132
msgid "Create a sequence of paraxial line segments"
msgstr "Crea una seqüència de segments paraxials"
-#: ../src/widgets/pencil-toolbar.cpp:141
+#: ../src/widgets/pencil-toolbar.cpp:140
msgid "Mode of new lines drawn by this tool"
msgstr "Mode de línies noves dibuixades amb aquesta eina"
-#: ../src/widgets/pencil-toolbar.cpp:176
+#: ../src/widgets/pencil-toolbar.cpp:175
msgctxt "Freehand shape"
msgid "None"
msgstr "Cap"
-#: ../src/widgets/pencil-toolbar.cpp:177
+#: ../src/widgets/pencil-toolbar.cpp:176
msgid "Triangle in"
msgstr "Triangle cap endins"
-#: ../src/widgets/pencil-toolbar.cpp:178
+#: ../src/widgets/pencil-toolbar.cpp:177
msgid "Triangle out"
msgstr "Triangle cap enfora"
-#: ../src/widgets/pencil-toolbar.cpp:180
+#: ../src/widgets/pencil-toolbar.cpp:179
msgid "From clipboard"
msgstr "Des del porta-retalls"
-#: ../src/widgets/pencil-toolbar.cpp:181
+#: ../src/widgets/pencil-toolbar.cpp:180
#, fuzzy
msgid "Bend from clipboard"
-msgstr "Des del porta-retalls"
+msgstr "Del _porta-retalls"
-#: ../src/widgets/pencil-toolbar.cpp:182
+#: ../src/widgets/pencil-toolbar.cpp:181
msgid "Last applied"
msgstr "Última utilitzada"
-#: ../src/widgets/pencil-toolbar.cpp:207 ../src/widgets/pencil-toolbar.cpp:208
+#: ../src/widgets/pencil-toolbar.cpp:206 ../src/widgets/pencil-toolbar.cpp:207
msgid "Shape:"
msgstr "Figura:"
-#: ../src/widgets/pencil-toolbar.cpp:207
+#: ../src/widgets/pencil-toolbar.cpp:206
msgid "Shape of new paths drawn by this tool"
msgstr "Figura de camins nous dibuixats per aquesta eina"
-#: ../src/widgets/pencil-toolbar.cpp:372
+#: ../src/widgets/pencil-toolbar.cpp:378
msgid "(many nodes, rough)"
msgstr "(molts nodes, brut)"
-#: ../src/widgets/pencil-toolbar.cpp:372
+#: ../src/widgets/pencil-toolbar.cpp:378
msgid "(few nodes, smooth)"
msgstr "(pocs nodes, suau)"
-#: ../src/widgets/pencil-toolbar.cpp:375
+#: ../src/widgets/pencil-toolbar.cpp:381
msgid "Smoothing: "
msgstr "Suavitzat: "
-#: ../src/widgets/pencil-toolbar.cpp:376
+#: ../src/widgets/pencil-toolbar.cpp:382
msgid "How much smoothing (simplifying) is applied to the line"
msgstr "Quantitat de suavitzat (simplificat) s'aplicarà a la línia"
-#: ../src/widgets/pencil-toolbar.cpp:397
+#: ../src/widgets/pencil-toolbar.cpp:403
msgid ""
"Reset pencil parameters to defaults (use Inkscape Preferences > Tools to "
"change defaults)"
@@ -30329,13 +30393,14 @@ msgstr ""
"Recupera les opcions predeterminades del llapis (utilitzeu Preferències > "
"Eines per canviar els valors predeterminats)"
-#: ../src/widgets/pencil-toolbar.cpp:407 ../src/widgets/pencil-toolbar.cpp:408
+#: ../src/widgets/pencil-toolbar.cpp:413 ../src/widgets/pencil-toolbar.cpp:414
msgid "LPE based interactive simplify"
msgstr ""
-#: ../src/widgets/pencil-toolbar.cpp:418 ../src/widgets/pencil-toolbar.cpp:419
+#: ../src/widgets/pencil-toolbar.cpp:424 ../src/widgets/pencil-toolbar.cpp:425
+#, fuzzy
msgid "LPE simplify flatten"
-msgstr ""
+msgstr "Simplifica"
#: ../src/widgets/rect-toolbar.cpp:125
msgid "Change rectangle"
@@ -30570,7 +30635,6 @@ msgstr "H:"
#. shortLabel
#: ../src/widgets/select-toolbar.cpp:513
-#, fuzzy
msgctxt "Select toolbar"
msgid "Height of selection"
msgstr "Alçada de la selecció"
@@ -30775,16 +30839,12 @@ msgstr "Utilitza l'esprai d'objectes al llarg d'un camí"
#: ../src/widgets/spray-toolbar.cpp:383
#, fuzzy
msgid "Delete sprayed items"
-msgstr "Suprimeix una fase del degradat"
+msgstr "Suprimeix els elements"
#: ../src/widgets/spray-toolbar.cpp:384
#, fuzzy
msgid "Delete sprayed items from selection"
-msgstr "Agafa les corbes de la selecció..."
-
-#: ../src/widgets/spray-toolbar.cpp:388 ../src/widgets/tweak-toolbar.cpp:253
-msgid "Mode"
-msgstr "Mode"
+msgstr "Suprimeix la selecció de l'arxiu"
#. Population
#: ../src/widgets/spray-toolbar.cpp:408
@@ -30877,49 +30937,52 @@ msgstr ""
#: ../src/widgets/spray-toolbar.cpp:528 ../src/widgets/spray-toolbar.cpp:529
#, fuzzy
msgid "Apply picked color to fill"
-msgstr "Aplica el darrer color seleccionat a l'emplenat"
+msgstr "Aplica el darrer color establert a l'emplenat"
#: ../src/widgets/spray-toolbar.cpp:541 ../src/widgets/spray-toolbar.cpp:542
#, fuzzy
msgid "Apply picked color to stroke"
-msgstr "Aplica el darrer color seleccionat al traç"
+msgstr "Aplica el darrer color establert al traç"
#: ../src/widgets/spray-toolbar.cpp:554 ../src/widgets/spray-toolbar.cpp:555
+#, fuzzy
msgid "No overlap between colors"
-msgstr ""
+msgstr "S_obreposa:"
#: ../src/widgets/spray-toolbar.cpp:567 ../src/widgets/spray-toolbar.cpp:568
+#, fuzzy
msgid "Apply over transparent areas"
-msgstr ""
+msgstr "Color per a àrees transparents"
#: ../src/widgets/spray-toolbar.cpp:580 ../src/widgets/spray-toolbar.cpp:581
+#, fuzzy
msgid "Apply over no transparent areas"
-msgstr ""
+msgstr "Color per a àrees transparents"
#: ../src/widgets/spray-toolbar.cpp:593 ../src/widgets/spray-toolbar.cpp:594
#, fuzzy
msgid "Prevent overlapping objects"
-msgstr "Selecciona un objecte"
+msgstr "Encavalcament"
#: ../src/widgets/spray-toolbar.cpp:605
#, fuzzy
msgid "(minimum offset)"
-msgstr "(força mínima)"
+msgstr "Desplaçament..."
#: ../src/widgets/spray-toolbar.cpp:605
#, fuzzy
msgid "(maximum offset)"
-msgstr "(força màxima)"
+msgstr "Desplaçament..."
#: ../src/widgets/spray-toolbar.cpp:608
#, fuzzy
msgid "Offset %"
-msgstr "Desplaçament"
+msgstr "Desplaçament: "
#: ../src/widgets/spray-toolbar.cpp:608
#, fuzzy
msgid "Offset %:"
-msgstr "Desplaçament:"
+msgstr "Desplaçament..."
#: ../src/widgets/spray-toolbar.cpp:609
msgid "Increase to segregate objects more (value in percent)"
@@ -31188,12 +31251,12 @@ msgstr "Quadrat ampliat"
#: ../src/widgets/stroke-style.cpp:392
#, fuzzy
msgid "Fill, Stroke, Markers"
-msgstr "Marcadors de l'estil del traç"
+msgstr "Emplenat i traç"
#: ../src/widgets/stroke-style.cpp:396
#, fuzzy
msgid "Stroke, Fill, Markers"
-msgstr "Marcadors de l'estil del traç"
+msgstr "Emplenat i traç"
#: ../src/widgets/stroke-style.cpp:400
#, fuzzy
@@ -31208,11 +31271,12 @@ msgstr "Emplenat i traç"
#: ../src/widgets/stroke-style.cpp:412
#, fuzzy
msgid "Stroke, Markers, Fill"
-msgstr "Marcadors de l'estil del traç"
+msgstr "Emplenat i traç"
#: ../src/widgets/stroke-style.cpp:416
+#, fuzzy
msgid "Markers, Stroke, Fill"
-msgstr ""
+msgstr "Emplenat i traç"
#: ../src/widgets/stroke-style.cpp:534
msgid "Set markers"
@@ -31250,283 +31314,300 @@ msgstr "Text: canvia el superíndex o el subíndex"
msgid "Text: Change alignment"
msgstr "Text: canvia l'alineació"
-#: ../src/widgets/text-toolbar.cpp:573
+#: ../src/widgets/text-toolbar.cpp:583
msgid "Text: Change line-height"
msgstr "Text: canvia l'alçada de la línia"
-#: ../src/widgets/text-toolbar.cpp:728
+#: ../src/widgets/text-toolbar.cpp:739
#, fuzzy
msgid "Text: Change line-height unit"
msgstr "Text: canvia l'alçada de la línia"
-#: ../src/widgets/text-toolbar.cpp:777
+#: ../src/widgets/text-toolbar.cpp:788
msgid "Text: Change word-spacing"
msgstr "Text: canvia l'espai entre paraules"
-#: ../src/widgets/text-toolbar.cpp:817
+#: ../src/widgets/text-toolbar.cpp:828
msgid "Text: Change letter-spacing"
msgstr "Text: canvia l'espai entre lletres"
-#: ../src/widgets/text-toolbar.cpp:855
+#: ../src/widgets/text-toolbar.cpp:866
msgid "Text: Change dx (kern)"
msgstr "Text: canvia el dx (interlletratge)"
-#: ../src/widgets/text-toolbar.cpp:889
+#: ../src/widgets/text-toolbar.cpp:900
msgid "Text: Change dy"
msgstr "Text: canvia el dy"
-#: ../src/widgets/text-toolbar.cpp:924
+#: ../src/widgets/text-toolbar.cpp:935
msgid "Text: Change rotate"
msgstr "Text: canvia la rotació"
-#: ../src/widgets/text-toolbar.cpp:977
+#: ../src/widgets/text-toolbar.cpp:988
#, fuzzy
msgid "Text: Change writing mode"
-msgstr "Text: canvia l'orientació"
+msgstr "Seleccioneu el mode d'escriptura a emprar"
-#: ../src/widgets/text-toolbar.cpp:1031
+#: ../src/widgets/text-toolbar.cpp:1042
msgid "Text: Change orientation"
msgstr "Text: canvia l'orientació"
-#: ../src/widgets/text-toolbar.cpp:1539
+#: ../src/widgets/text-toolbar.cpp:1550
msgid "Font Family"
msgstr "Tipografia"
-#: ../src/widgets/text-toolbar.cpp:1540
+#: ../src/widgets/text-toolbar.cpp:1551
msgid "Select Font Family (Alt-X to access)"
msgstr "Selecciona la tipografia (Alt+X per accedir-hi)"
#. Focus widget
#. Enable entry completion
-#: ../src/widgets/text-toolbar.cpp:1550
+#: ../src/widgets/text-toolbar.cpp:1561
msgid "Select all text with this font-family"
msgstr "Selecciona tot el text amb aquesta tipografia"
-#: ../src/widgets/text-toolbar.cpp:1554
+#: ../src/widgets/text-toolbar.cpp:1565
msgid "Font not found on system"
msgstr "No s'ha trobat la tipografia al sistema"
-#: ../src/widgets/text-toolbar.cpp:1631
+#: ../src/widgets/text-toolbar.cpp:1642
msgid "Font Style"
msgstr "Estil de la tipografia"
-#: ../src/widgets/text-toolbar.cpp:1632
+#: ../src/widgets/text-toolbar.cpp:1643
msgid "Font style"
msgstr "Estil de tipografia"
#. Name
-#: ../src/widgets/text-toolbar.cpp:1649
+#: ../src/widgets/text-toolbar.cpp:1660
msgid "Toggle Superscript"
msgstr "Commuta superíndex"
#. Label
-#: ../src/widgets/text-toolbar.cpp:1650
+#: ../src/widgets/text-toolbar.cpp:1661
msgid "Toggle superscript"
msgstr "Commuta l'estil superíndex"
#. Name
-#: ../src/widgets/text-toolbar.cpp:1662
+#: ../src/widgets/text-toolbar.cpp:1673
msgid "Toggle Subscript"
msgstr "Commuta subíndex"
#. Label
-#: ../src/widgets/text-toolbar.cpp:1663
+#: ../src/widgets/text-toolbar.cpp:1674
msgid "Toggle subscript"
msgstr "Commuta l'estil subíndex"
-#: ../src/widgets/text-toolbar.cpp:1704
+#: ../src/widgets/text-toolbar.cpp:1715
msgid "Justify"
msgstr "Justifica"
#. Name
-#: ../src/widgets/text-toolbar.cpp:1711
+#: ../src/widgets/text-toolbar.cpp:1722
msgid "Alignment"
msgstr "Alineament"
#. Label
-#: ../src/widgets/text-toolbar.cpp:1712
+#: ../src/widgets/text-toolbar.cpp:1723
msgid "Text alignment"
msgstr "Alineament del text"
-#: ../src/widgets/text-toolbar.cpp:1739
+#: ../src/widgets/text-toolbar.cpp:1750
msgid "Horizontal"
msgstr "Horitzontal"
-#: ../src/widgets/text-toolbar.cpp:1746
+#: ../src/widgets/text-toolbar.cpp:1757
#, fuzzy
msgid "Vertical — RL"
-msgstr "Vertical"
+msgstr "U~RL"
-#: ../src/widgets/text-toolbar.cpp:1747
+#: ../src/widgets/text-toolbar.cpp:1758
+#, fuzzy
msgid "Vertical text — lines: right to left"
-msgstr ""
+msgstr "Pleca doble esquerra i dreta"
-#: ../src/widgets/text-toolbar.cpp:1753
+#: ../src/widgets/text-toolbar.cpp:1764
#, fuzzy
msgid "Vertical — LR"
-msgstr "Vertical"
+msgstr "d'esquerra a dreta, de dalt a baix"
-#: ../src/widgets/text-toolbar.cpp:1754
+#: ../src/widgets/text-toolbar.cpp:1765
+#, fuzzy
msgid "Vertical text — lines: left to right"
-msgstr ""
+msgstr "Pleca doble esquerra i dreta"
#. Name
-#: ../src/widgets/text-toolbar.cpp:1759
+#: ../src/widgets/text-toolbar.cpp:1770
#, fuzzy
msgid "Writing mode"
-msgstr "Mode dibuix"
+msgstr "Mode escriptura"
#. Label
-#: ../src/widgets/text-toolbar.cpp:1760
+#: ../src/widgets/text-toolbar.cpp:1771
+#, fuzzy
msgid "Block progression"
-msgstr ""
+msgstr "bloqueig"
-#: ../src/widgets/text-toolbar.cpp:1789
+#: ../src/widgets/text-toolbar.cpp:1800
#, fuzzy
msgid "Auto glyph orientation"
-msgstr "Segueix l'orientació del camí"
+msgstr "Orientació"
-#: ../src/widgets/text-toolbar.cpp:1796
+#: ../src/widgets/text-toolbar.cpp:1807
#, fuzzy
msgid "Upright"
-msgstr "Més brillant"
+msgstr "Dret"
-#: ../src/widgets/text-toolbar.cpp:1797
+#: ../src/widgets/text-toolbar.cpp:1808
#, fuzzy
msgid "Upright glyph orientation"
-msgstr "Orientació del text"
+msgstr "glif"
-#: ../src/widgets/text-toolbar.cpp:1804
+#: ../src/widgets/text-toolbar.cpp:1815
+#, fuzzy
msgid "Sideways"
msgstr ""
+"Ara has de cavar per aconseguir l'or! Empra només els botons dret i esquerre "
+"del ratolí per cavar a la dreta o a l'esquerra de la posició de l'heroi. "
+"Després l'heroi pot saltar a dins del forat que ha excavat. També pot cavar "
+"alguns forats en fila i córrer a través d'ells. Però vés amb compte. Després "
+"d'uns moments, els forats es tanquen i pots quedar atrapat i morir.\n"
+"\n"
+"Al tercer quadre de sota has de cavar dos forats, saltar a dins i ràpidament "
+"cavar-ne un altre, per travessar les dues capes. A la dreta, has de cavar-ne "
+"tres, després dos i després un per travessar-la. Hi ha també dos petits "
+"trencaclosques per resoldre durant el camí. Bona sort!\n"
+"\n"
+"Per cert, pots excavar a través dels maons, però no del formigó."
-#: ../src/widgets/text-toolbar.cpp:1805
+#: ../src/widgets/text-toolbar.cpp:1816
#, fuzzy
msgid "Sideways glyph orientation"
-msgstr "Segueix l'orientació del camí"
+msgstr "Orientació"
#. Name
-#: ../src/widgets/text-toolbar.cpp:1811
+#: ../src/widgets/text-toolbar.cpp:1822
msgid "Text orientation"
msgstr "Orientació del text"
#. Label
-#: ../src/widgets/text-toolbar.cpp:1812
+#: ../src/widgets/text-toolbar.cpp:1823
+#, fuzzy
msgid "Text (glyph) orientation in vertical text."
-msgstr ""
+msgstr "Títol vertical i text vertical"
#. Drop down menu
-#: ../src/widgets/text-toolbar.cpp:1845
+#: ../src/widgets/text-toolbar.cpp:1856
msgid "Smaller spacing"
msgstr "Menys espai"
-#: ../src/widgets/text-toolbar.cpp:1845 ../src/widgets/text-toolbar.cpp:1884
-#: ../src/widgets/text-toolbar.cpp:1915
+#: ../src/widgets/text-toolbar.cpp:1856 ../src/widgets/text-toolbar.cpp:1895
+#: ../src/widgets/text-toolbar.cpp:1926
msgctxt "Text tool"
msgid "Normal"
msgstr "Normal"
-#: ../src/widgets/text-toolbar.cpp:1845
+#: ../src/widgets/text-toolbar.cpp:1856
msgid "Larger spacing"
msgstr "Més espai"
#. name
-#: ../src/widgets/text-toolbar.cpp:1850
+#: ../src/widgets/text-toolbar.cpp:1861
msgid "Line Height"
msgstr "Alçada de la línia"
#. label
-#: ../src/widgets/text-toolbar.cpp:1851
+#: ../src/widgets/text-toolbar.cpp:1862
msgid "Line:"
msgstr "Línia:"
#. short label
-#: ../src/widgets/text-toolbar.cpp:1852
+#: ../src/widgets/text-toolbar.cpp:1863
#, fuzzy
msgid "Spacing between baselines (times font size)"
msgstr "Espai entre les línies (mida de la lletra Times)"
#. Drop down menu
-#: ../src/widgets/text-toolbar.cpp:1884 ../src/widgets/text-toolbar.cpp:1915
+#: ../src/widgets/text-toolbar.cpp:1895 ../src/widgets/text-toolbar.cpp:1926
msgid "Negative spacing"
msgstr "Espaiat negatiu"
-#: ../src/widgets/text-toolbar.cpp:1884 ../src/widgets/text-toolbar.cpp:1915
+#: ../src/widgets/text-toolbar.cpp:1895 ../src/widgets/text-toolbar.cpp:1926
msgid "Positive spacing"
msgstr "Espaiat positiu"
#. name
-#: ../src/widgets/text-toolbar.cpp:1889
+#: ../src/widgets/text-toolbar.cpp:1900
msgid "Word spacing"
msgstr "Espai entre paraules"
#. label
-#: ../src/widgets/text-toolbar.cpp:1890
+#: ../src/widgets/text-toolbar.cpp:1901
msgid "Word:"
msgstr "Paraula:"
#. short label
-#: ../src/widgets/text-toolbar.cpp:1891
+#: ../src/widgets/text-toolbar.cpp:1902
msgid "Spacing between words (px)"
msgstr "Espai entre paraules (px)"
#. name
-#: ../src/widgets/text-toolbar.cpp:1920
+#: ../src/widgets/text-toolbar.cpp:1931
msgid "Letter spacing"
msgstr "Espai entre lletres"
#. label
-#: ../src/widgets/text-toolbar.cpp:1921
+#: ../src/widgets/text-toolbar.cpp:1932
msgid "Letter:"
msgstr "Lletra:"
#. short label
-#: ../src/widgets/text-toolbar.cpp:1922
+#: ../src/widgets/text-toolbar.cpp:1933
msgid "Spacing between letters (px)"
msgstr "Espai entre lletres (px)"
#. name
-#: ../src/widgets/text-toolbar.cpp:1951
+#: ../src/widgets/text-toolbar.cpp:1962
msgid "Kerning"
msgstr "Interlletratge"
#. label
-#: ../src/widgets/text-toolbar.cpp:1952
+#: ../src/widgets/text-toolbar.cpp:1963
msgid "Kern:"
msgstr "Interlletratge:"
#. short label
-#: ../src/widgets/text-toolbar.cpp:1953
+#: ../src/widgets/text-toolbar.cpp:1964
msgid "Horizontal kerning (px)"
msgstr "Interlletratge horitzontal (px)"
#. name
-#: ../src/widgets/text-toolbar.cpp:1982
+#: ../src/widgets/text-toolbar.cpp:1993
msgid "Vertical Shift"
msgstr "Desplaçament vertical"
#. label
-#: ../src/widgets/text-toolbar.cpp:1983
+#: ../src/widgets/text-toolbar.cpp:1994
msgid "Vert:"
msgstr "Vert:"
#. short label
-#: ../src/widgets/text-toolbar.cpp:1984
+#: ../src/widgets/text-toolbar.cpp:1995
msgid "Vertical shift (px)"
msgstr "Desplaçament vertical (px)"
#. name
-#: ../src/widgets/text-toolbar.cpp:2013
+#: ../src/widgets/text-toolbar.cpp:2024
msgid "Letter rotation"
msgstr "Rotació de la lletra"
#. label
-#: ../src/widgets/text-toolbar.cpp:2014
+#: ../src/widgets/text-toolbar.cpp:2025
msgid "Rot:"
msgstr "Rota:"
#. short label
-#: ../src/widgets/text-toolbar.cpp:2015
+#: ../src/widgets/text-toolbar.cpp:2026
msgid "Character rotation (degrees)"
msgstr "Rotació dels caràcters (graus)"
@@ -31865,7 +31946,7 @@ msgstr "En el mode de color, actua sobre el to de l'objecte"
#, fuzzy
msgctxt "Hue"
msgid "H"
-msgstr "H"
+msgstr "A"
#: ../src/widgets/tweak-toolbar.cpp:303
msgid "In color mode, act on objects' saturation"
@@ -31876,7 +31957,7 @@ msgstr "En el mode de color, actua sobre la saturació de l'objecte"
#, fuzzy
msgctxt "Saturation"
msgid "S"
-msgstr "S"
+msgstr "Ds."
#: ../src/widgets/tweak-toolbar.cpp:319
msgid "In color mode, act on objects' lightness"
@@ -31887,7 +31968,7 @@ msgstr "En el mode de color, actua sobre la lluentor de l'objecte"
#, fuzzy
msgctxt "Lightness"
msgid "L"
-msgstr "L"
+msgstr "l"
#: ../src/widgets/tweak-toolbar.cpp:335
msgid "In color mode, act on objects' opacity"
@@ -31932,8 +32013,9 @@ msgstr ""
"deformació"
#: ../share/extensions/convert2dashes.py:56
+#, fuzzy
msgid "Total number of objects not converted: {}\n"
-msgstr ""
+msgstr "Nombre que s'ha de convertir."
#: ../share/extensions/dimension.py:108
msgid "Please select an object."
@@ -31945,18 +32027,20 @@ msgstr ""
"No s'ha pogut processar aquest objecte. Proveu-ho transformant-lo abans en "
"un camí."
-#. report to the Inkscape console using errormsg
#: ../share/extensions/draw_from_triangle.py:179
-msgid "Side Length 'a' (px): "
-msgstr "Longitud del costat «a» (px):"
+#, fuzzy
+msgid "Side Length 'a' ("
+msgstr "Longitud del costat a (px):"
#: ../share/extensions/draw_from_triangle.py:180
-msgid "Side Length 'b' (px): "
-msgstr "Longitud del costat «b» (px):"
+#, fuzzy
+msgid "Side Length 'b' ("
+msgstr "Longitud del costat b (px):"
#: ../share/extensions/draw_from_triangle.py:181
-msgid "Side Length 'c' (px): "
-msgstr "Longitud del costat «c» (px):"
+#, fuzzy
+msgid "Side Length 'c' ("
+msgstr "Longitud del costat c (px):"
#: ../share/extensions/draw_from_triangle.py:182
msgid "Angle 'A' (radians): "
@@ -31975,8 +32059,9 @@ msgid "Semiperimeter (px): "
msgstr "Semiperímetre (px): "
#: ../share/extensions/draw_from_triangle.py:186
-msgid "Area (px^2): "
-msgstr "Àrea (px^2): "
+#, fuzzy
+msgid "Area ("
+msgstr "Àrea:"
#: ../share/extensions/dxf_input.py:530
#, python-format
@@ -32488,8 +32573,8 @@ msgid ""
"No object selected. Please select the object you want to assign an effect to "
"and then press apply.\n"
msgstr ""
-"No hi ha cap objecte seleccionat. Selecciona l'objecte al que voleu assignar "
-"un efecte ai prem aplica.\n"
+"No hi ha cap objecte seleccionat. Selecciona l'objecte al qual voleu "
+"assignar un efecte ai prem aplica.\n"
#: ../share/extensions/jessyInk_export.py:80
msgid "Could not find Inkscape command.\n"
@@ -32757,7 +32842,7 @@ msgstr ""
#: ../share/extensions/plotter.py:146
#, fuzzy
msgid "pySerial is not installed. Please follow these steps:"
-msgstr "pySerial no està instal·lada."
+msgstr "Seguiu els passos següents per instal·lar l'extensió:"
#: ../share/extensions/plotter.py:147
msgid "1. Download and extract (unzip) this file to your local harddisk:"
@@ -32775,8 +32860,9 @@ msgid ""
msgstr ""
#: ../share/extensions/plotter.py:151
+#, fuzzy
msgid "3. Close and restart Inkscape."
-msgstr ""
+msgstr "L'Inkscape ha trobat un error intern i ara es tancarà.\n"
#: ../share/extensions/plotter.py:200
msgid ""
@@ -32901,7 +32987,7 @@ msgstr "Introduïu una tipografia substituta a totes les caixes."
#: ../share/extensions/restack.py:75
#, fuzzy
msgid "There is no selection to restack."
-msgstr "No hi ha cap selecció per interpolar"
+msgstr "Apila"
#: ../share/extensions/summersnight.py:41
msgid ""
@@ -32980,7 +33066,7 @@ msgstr "El directori \"%s\" no existeix."
#: ../share/extensions/webslicer_export.py:76
#, fuzzy
msgid "No slicer layer found."
-msgstr "Cap capa."
+msgstr "Cisalla"
#: ../share/extensions/webslicer_export.py:106
#, python-format
@@ -33229,7 +33315,7 @@ msgstr "Més fosc"
#: ../share/extensions/color_desaturate.inx.h:1
msgid "Desaturate"
-msgstr "Desatura"
+msgstr "Dessatura"
#: ../share/extensions/color_grayscale.inx.h:1
#: ../share/extensions/webslicer_create_rect.inx.h:15
@@ -33272,17 +33358,17 @@ msgstr "Aleatoritza"
#: ../share/extensions/color_randomize.inx.h:4
#, fuzzy, no-c-format
msgid "Hue range (%)"
-msgstr "Rotació del to (°)"
+msgstr "_To:"
#: ../share/extensions/color_randomize.inx.h:6
#, fuzzy, no-c-format
msgid "Saturation range (%)"
-msgstr "Saturació (%)"
+msgstr "Saturació:"
#: ../share/extensions/color_randomize.inx.h:8
#, fuzzy, no-c-format
msgid "Lightness range (%)"
-msgstr "Brillantor (%)"
+msgstr "Brillantor (%):"
#: ../share/extensions/color_randomize.inx.h:10
#, fuzzy, no-c-format
@@ -34852,7 +34938,7 @@ msgid ""
"This function modifies path so it will be able to be cut with the "
"rectangular cutter."
msgstr ""
-"Aquesta funció modifica camí pel que serà capaç de ser tallat amb el cúter "
+"Aquesta funció modifica camí pel qual serà capaç de ser tallat amb el cúter "
"rectangular."
#: ../share/extensions/gcodetools_orientation_points.inx.h:1
@@ -35801,17 +35887,19 @@ msgstr "Estableix els atributs"
#: ../share/extensions/image_attributes.inx.h:3
#, fuzzy
msgid "Basic"
-msgstr "Llatí bàsic"
+msgstr "Bàsic"
#. render images like in 0.48
#: ../share/extensions/image_attributes.inx.h:5
+#, fuzzy
msgid "Support non-uniform scaling"
-msgstr ""
+msgstr "Velocitat no uniforme"
#. render images like in 0.48
#: ../share/extensions/image_attributes.inx.h:7
+#, fuzzy
msgid "Render images blocky"
-msgstr ""
+msgstr "Mostra les &taules com a imatges"
#. render images like in 0.48
#: ../share/extensions/image_attributes.inx.h:9
@@ -35823,12 +35911,13 @@ msgstr ""
#: ../share/extensions/image_attributes.inx.h:11
#, fuzzy
msgid "Image Aspect Ratio"
-msgstr "Simplificació de la imatge"
+msgstr "Conserva la ràtio d'aspecte de la imatge"
#. image aspect ratio
#: ../share/extensions/image_attributes.inx.h:13
+#, fuzzy
msgid "preserveAspectRatio attribute:"
-msgstr ""
+msgstr "Cap atribut així"
#. image aspect ratio
#: ../share/extensions/image_attributes.inx.h:15
@@ -35839,13 +35928,13 @@ msgstr ""
#: ../share/extensions/image_attributes.inx.h:17
#, fuzzy
msgid "Scope:"
-msgstr "Abast"
+msgstr "Abast:"
#. image-rendering
#: ../share/extensions/image_attributes.inx.h:19
#, fuzzy
msgid "Unset"
-msgstr "Enfonsat"
+msgstr "Desassigna"
#: ../share/extensions/image_attributes.inx.h:20
#, fuzzy
@@ -35855,24 +35944,24 @@ msgstr "Canvia només els nodes seleccionats"
#: ../share/extensions/image_attributes.inx.h:21
#, fuzzy
msgid "Change all images in selection"
-msgstr "No s'ha pogut trobar una el·lipse a la selecció"
+msgstr "Ignora la selecció (en totes les imatges origen)"
#: ../share/extensions/image_attributes.inx.h:22
#, fuzzy
msgid "Change all images in document"
-msgstr "Comprova l'ortografia del text del document"
+msgstr "Canviar les imatges"
#. image-rendering
#: ../share/extensions/image_attributes.inx.h:24
#, fuzzy
msgid "Image Rendering Quality"
-msgstr "Renderització de la imatge:"
+msgstr "Qualitat de renderització"
#. image-rendering
#: ../share/extensions/image_attributes.inx.h:26
#, fuzzy
msgid "Image rendering attribute:"
-msgstr "Mode renderització de la imatge:"
+msgstr "_Renderització de la imatge:"
#: ../share/extensions/image_attributes.inx.h:27
#, fuzzy
@@ -35882,7 +35971,7 @@ msgstr "Aplica la transformació a la selecció"
#: ../share/extensions/image_attributes.inx.h:28
#, fuzzy
msgid "Apply attribute to SVG root"
-msgstr "Atribut per establir:"
+msgstr "l'element arrel era «%s» -- s'esperava 'svg'."
#: ../share/extensions/ink2canvas.inx.h:1
msgid "Convert to html5 canvas"
@@ -35904,6 +35993,11 @@ msgstr "Segueix l'enllaç"
msgid "Ask Us a Question"
msgstr "Feu-nos una pregunta"
+#: ../share/extensions/inkscape_help_askaquestion.inx.h:2
+#, fuzzy
+msgid "https://inkscape.org/en/ask/"
+msgstr "https://planet.mageia.org/en/"
+
#: ../share/extensions/inkscape_help_commandline.inx.h:1
msgid "Command Line Options"
msgstr "Opcions de la línia d'ordres"
@@ -35977,7 +36071,7 @@ msgstr "Estil d'interpolació"
#: ../share/extensions/interp.inx.h:7 ../share/extensions/interp_att_g.inx.h:10
#, fuzzy
msgid "Use Z-order"
-msgstr "Vores alçades"
+msgstr "Ordenació en Z"
#: ../share/extensions/interp.inx.h:8 ../share/extensions/interp_att_g.inx.h:11
msgid "Workaround for reversed selection order in Live Preview cycles"
@@ -36580,27 +36674,29 @@ msgid "Shift node handles"
msgstr "Canvia els punts de control de nodes"
#: ../share/extensions/jitternodes.inx.h:7
+#, fuzzy
msgid "Distribution of the displacements:"
-msgstr ""
+msgstr "Distribució"
#: ../share/extensions/jitternodes.inx.h:8
#, fuzzy
msgid "Uniform"
-msgstr "Cuneiforme"
+msgstr "Uniforma"
#: ../share/extensions/jitternodes.inx.h:9
+#, fuzzy
msgid "Pareto"
-msgstr ""
+msgstr "Pareto"
#: ../share/extensions/jitternodes.inx.h:10
#, fuzzy
msgid "Gaussian"
-msgstr "Difuminat gaussià"
+msgstr "Gaussià"
#: ../share/extensions/jitternodes.inx.h:11
#, fuzzy
msgid "Log-normal"
-msgstr "normal"
+msgstr "El valor de la mitjana de la distribució log normal."
#: ../share/extensions/jitternodes.inx.h:13
msgid ""
@@ -36903,32 +36999,35 @@ msgstr "Tipus de mesura: "
#: ../share/extensions/measure.inx.h:4
#, fuzzy
msgid "Text Presets"
-msgstr "Preferències de text"
+msgstr "Cap predefinició"
#: ../share/extensions/measure.inx.h:6
#, fuzzy
msgid "Text on Path"
-msgstr "Text sobre el camí"
+msgstr "Text al camí"
#: ../share/extensions/measure.inx.h:8
#, fuzzy, no-c-format
msgid "Offset (%)"
-msgstr "Desplaçament (px):"
+msgstr "Desplaçament..."
#: ../share/extensions/measure.inx.h:9
#, fuzzy
msgid "Text anchor:"
-msgstr "Àncora del text"
+msgstr "àncora del text"
#: ../share/extensions/measure.inx.h:10
#, fuzzy
msgid "Fixed Text"
-msgstr "Text flotant"
+msgstr ""
+"Seguiu seleccionant i inserint camps de la base de dades si voleu que "
+"l'etiqueta contingui més camps. Podeu prémer Retorn per inserir una línia "
+"nova i podeu escriure qualsevol caràcter per inserir text fix."
#: ../share/extensions/measure.inx.h:11
#, fuzzy
msgid "Angle (°):"
-msgstr "Angle X:"
+msgstr "&Angle (a):"
#: ../share/extensions/measure.inx.h:12
msgid "Font size (px):"
@@ -36959,45 +37058,50 @@ msgstr "Centre de masses"
#: ../share/extensions/measure.inx.h:21
#, fuzzy
msgid "Text on Path, Start"
-msgstr "Text sobre el camí"
+msgstr "Camí per unir el començament del camí"
#: ../share/extensions/measure.inx.h:22
#, fuzzy
msgid "Text on Path, Middle"
-msgstr "Text sobre el camí"
+msgstr "Text alineat al mig"
#: ../share/extensions/measure.inx.h:23
#, fuzzy
msgid "Text on Path, End"
-msgstr "Text sobre el camí"
+msgstr "Camí del final del final de la corba:"
#: ../share/extensions/measure.inx.h:24
+#, fuzzy
msgid "Fixed Text, Start of Path"
-msgstr ""
+msgstr "Camí d'inici:"
#: ../share/extensions/measure.inx.h:25
+#, fuzzy
msgid "Fixed Text, Center of BBox"
-msgstr ""
+msgstr "Redimensiona mantenint el centre fix"
#: ../share/extensions/measure.inx.h:26
#, fuzzy
msgid "Fixed Text, Center of Mass"
-msgstr "Centre de masses"
+msgstr "Posició del centre de massa"
#: ../share/extensions/measure.inx.h:28
#, fuzzy
msgid "Center"
-msgstr "Centímetre"
+msgstr "Central"
#: ../share/extensions/measure.inx.h:30
#, fuzzy
msgid "Start of Path"
-msgstr "Camí d'inici:"
+msgstr ""
+"<b>Cliqueu</b> o <b>cliqueu i arrossegueu</b> per començar un camí; amb "
+"<b>Maj</b> ho afegiu al camí seleccionat. <b>Ctrl+clic</b> per crear punts "
+"dispersos (per al mode de línies rectes només)."
#: ../share/extensions/measure.inx.h:31
#, fuzzy
msgid "Center of BBox"
-msgstr "Centre de masses"
+msgstr "Centre de la capsa"
#: ../share/extensions/measure.inx.h:32
#, fuzzy
@@ -37086,44 +37190,56 @@ msgid "NiceCharts"
msgstr ""
#: ../share/extensions/nicechart.inx.h:2
+#, fuzzy
msgid "Data"
-msgstr ""
+msgstr "DADES"
#: ../share/extensions/nicechart.inx.h:3
#, fuzzy
msgid "Data from file"
-msgstr "Carrega d'un fitxer"
+msgstr "Importa dades CSV des d'un fitxer"
#: ../share/extensions/nicechart.inx.h:5
#, fuzzy
msgid "Delimiter:"
-msgstr "Límit de la junta:"
+msgstr "Delimitador:"
#: ../share/extensions/nicechart.inx.h:6
+#, fuzzy
msgid "Column that contains the keys:"
-msgstr ""
+msgstr "La primera columna té encapçalaments"
#: ../share/extensions/nicechart.inx.h:7
#, fuzzy
msgid "Column that contains the values:"
-msgstr "Un valor constant del vot"
+msgstr ""
+"La columna A conté diversos valors X1; la columna B, diversos valors X2, i "
+"la columna C, els valors Y. Ja heu introduït els valors en el full de "
+"càlcul. Heu configurat E2:G6 en el full de càlcul i heu activat "
+"l'<emph>Auxiliar de funcions</emph>. Perquè la funció ESTLIN funcioni, heu "
+"d'haver activat la casella de selecció <emph>Matriu</emph> a "
+"l'<emph>Auxiliar de funcions</emph>. Tot seguit, seleccioneu els valors "
+"següents en el full de càlcul (o introduïu-los mitjançant el teclat):"
#: ../share/extensions/nicechart.inx.h:8
+#, fuzzy
msgid "File encoding (e.g. utf-8):"
-msgstr ""
+msgstr "L'arxiu ha de estar codificat en UTF-8"
#: ../share/extensions/nicechart.inx.h:9
+#, fuzzy
msgid "First line contains headings"
-msgstr ""
+msgstr "La primera línia conté el codi de les preguntes:"
#: ../share/extensions/nicechart.inx.h:10
#, fuzzy
msgid "Direct input"
-msgstr "Direcció"
+msgstr "Entrada directa"
#: ../share/extensions/nicechart.inx.h:11
+#, fuzzy
msgid "Data:"
-msgstr ""
+msgstr "Dades:"
#: ../share/extensions/nicechart.inx.h:12
#, fuzzy
@@ -37131,8 +37247,9 @@ msgid "Enter the full path to a CSV file:"
msgstr "Camí complet al fitxer de registre:"
#: ../share/extensions/nicechart.inx.h:13
+#, fuzzy
msgid "Type in comma separated values:"
-msgstr ""
+msgstr "Valors Separats per Comes (*.csv)"
#: ../share/extensions/nicechart.inx.h:14
msgid "(format like this: apples:3,bananas:5)"
@@ -37141,54 +37258,57 @@ msgstr ""
#: ../share/extensions/nicechart.inx.h:15
#, fuzzy
msgid "Labels"
-msgstr "_Etiqueta:"
+msgstr "Etiquetes"
#: ../share/extensions/nicechart.inx.h:16
#, fuzzy
msgid "Font:"
-msgstr "_Tipus de lletra"
+msgstr "Tipus de lletra:"
#: ../share/extensions/nicechart.inx.h:18
#, fuzzy
msgid "Font color:"
-msgstr "Color del mes:"
+msgstr "Color de la lletra:"
#: ../share/extensions/nicechart.inx.h:19
+#, fuzzy
msgid "Charts"
-msgstr ""
+msgstr "Diagrames"
#: ../share/extensions/nicechart.inx.h:20
#, fuzzy
msgid "Draw horizontally"
-msgstr "Mou horitzontalment"
+msgstr "Horitzontalment"
#: ../share/extensions/nicechart.inx.h:21
#, fuzzy
msgid "Bar length:"
-msgstr "Longitud principal:"
+msgstr "Longitud mínima de les barres (%):"
#: ../share/extensions/nicechart.inx.h:22
#, fuzzy
msgid "Bar width:"
-msgstr "Amplada del difuminat:"
+msgstr "Amplada de la barra"
#: ../share/extensions/nicechart.inx.h:23
#, fuzzy
msgid "Pie radius:"
-msgstr "Radi intern:"
+msgstr "Amb aquest radi"
#: ../share/extensions/nicechart.inx.h:24
#, fuzzy
msgid "Bar offset:"
-msgstr "Inici del desplaçament:"
+msgstr "Desplaçament..."
#: ../share/extensions/nicechart.inx.h:26
+#, fuzzy
msgid "Offset between chart and labels:"
-msgstr ""
+msgstr "Anima les _transicions entre etiquetes"
#: ../share/extensions/nicechart.inx.h:27
+#, fuzzy
msgid "Offset between chart and chart title:"
-msgstr ""
+msgstr "Modifica l'alineació del títol del diagrama."
#: ../share/extensions/nicechart.inx.h:28
msgid "Work around aliasing effects (creates overlapping segments)"
@@ -37197,58 +37317,62 @@ msgstr ""
#: ../share/extensions/nicechart.inx.h:29
#, fuzzy
msgid "Color scheme:"
-msgstr "_Colors:"
+msgstr "Esquema de colors:"
#: ../share/extensions/nicechart.inx.h:30
#, fuzzy
msgid "Custom colors:"
-msgstr "Color de l'elevació"
+msgstr "&Colors Personalitzats"
#: ../share/extensions/nicechart.inx.h:31
#, fuzzy
msgid "Reverse color scheme"
-msgstr "Suprimeix el color de traç"
+msgstr "Sense esquema de color"
#: ../share/extensions/nicechart.inx.h:32
#, fuzzy
msgid "Drop shadow"
-msgstr "Ombra caiguda"
+msgstr "Ombra"
#: ../share/extensions/nicechart.inx.h:37
+#, fuzzy
msgid "SAP"
-msgstr ""
+msgstr "SAP"
#: ../share/extensions/nicechart.inx.h:38
#, fuzzy
msgid "Values"
-msgstr "Valor"
+msgstr "Valors"
#: ../share/extensions/nicechart.inx.h:39
#, fuzzy
msgid "Show values"
-msgstr "Mostra les nanses"
+msgstr "Mo&stra els valors"
#: ../share/extensions/nicechart.inx.h:40
#, fuzzy
msgid "Chart type:"
-msgstr "Tipus d'ombra:"
+msgstr "Tipus de gràfic:"
#: ../share/extensions/nicechart.inx.h:41
#, fuzzy
msgid "Bar chart"
-msgstr "Alçada de la barra:"
+msgstr "Diagrama de barres"
#: ../share/extensions/nicechart.inx.h:42
+#, fuzzy
msgid "Pie chart"
-msgstr ""
+msgstr "Gràfic circular"
#: ../share/extensions/nicechart.inx.h:43
+#, fuzzy
msgid "Pie chart (percentage)"
-msgstr ""
+msgstr "Visualitzar com una gràfica pie"
#: ../share/extensions/nicechart.inx.h:44
+#, fuzzy
msgid "Stacked bar chart"
-msgstr ""
+msgstr "Diagrama de barres apilades"
#: ../share/extensions/param_curves.inx.h:1
msgid "Parametric Curves"
@@ -37535,7 +37659,7 @@ msgstr "Ràtio de bauds de la vostra connexió sèrie (Per defecte: 9600)"
#: ../share/extensions/plotter.inx.h:8
#, fuzzy
msgid "Serial byte size:"
-msgstr "Mida de la paleta:"
+msgstr "Unitats de mida de bytes:"
#: ../share/extensions/plotter.inx.h:10
#, no-c-format
@@ -37547,7 +37671,7 @@ msgstr ""
#: ../share/extensions/plotter.inx.h:11
#, fuzzy
msgid "Serial stop bits:"
-msgstr "Port sèrie:"
+msgstr "no és compatible amb el nombre de bits d'aturada"
#: ../share/extensions/plotter.inx.h:13
#, no-c-format
@@ -37559,7 +37683,7 @@ msgstr ""
#: ../share/extensions/plotter.inx.h:14
#, fuzzy
msgid "Serial parity:"
-msgstr "Port sèrie:"
+msgstr "Indica la paritat del port sèrie."
#: ../share/extensions/plotter.inx.h:16
#, no-c-format
@@ -37571,7 +37695,7 @@ msgstr ""
#: ../share/extensions/plotter.inx.h:17
#, fuzzy
msgid "Serial flow control:"
-msgstr "Control de flux:"
+msgstr "el control de flux del port sèrie no està implementat"
#: ../share/extensions/plotter.inx.h:18
msgid ""
@@ -38114,22 +38238,23 @@ msgstr "Apila"
#: ../share/extensions/restack.inx.h:2
#, fuzzy
msgid "Based on Position"
-msgstr "Modifica la posició del node"
+msgstr ""
+"Estableix la temporització del subtítol utilitzant la posició del vídeo"
#: ../share/extensions/restack.inx.h:3
#, fuzzy
msgid "Presets"
-msgstr "Presència"
+msgstr "Predefinicions"
#: ../share/extensions/restack.inx.h:6
#, fuzzy
msgid "Horizontal:"
-msgstr "_Horitzontal:"
+msgstr "Horitzontal:"
#: ../share/extensions/restack.inx.h:7
#, fuzzy
msgid "Vertical:"
-msgstr "_Vertical:"
+msgstr "Vertical:"
#: ../share/extensions/restack.inx.h:8
#, fuzzy
@@ -38163,7 +38288,7 @@ msgstr "Radial cap endins"
#: ../share/extensions/restack.inx.h:15
#, fuzzy
msgid "Object Reference Point"
-msgstr "Punt de referència dins-fora"
+msgstr "Punt de referència:"
#: ../share/extensions/restack.inx.h:17
#: ../share/extensions/text_extract.inx.h:9
@@ -38186,7 +38311,7 @@ msgstr "Baix"
#: ../share/extensions/restack.inx.h:21
#, fuzzy
msgid "Based on Z-Order"
-msgstr "Vores alçades"
+msgstr "Ordenació &A > Z"
#: ../share/extensions/restack.inx.h:22
#, fuzzy
@@ -38196,11 +38321,12 @@ msgstr "Apila"
#: ../share/extensions/restack.inx.h:23
#, fuzzy
msgid "Reverse Z-Order"
-msgstr "Degradat invertit"
+msgstr "Ordenació en Z"
#: ../share/extensions/restack.inx.h:24
+#, fuzzy
msgid "Shuffle Z-Order"
-msgstr ""
+msgstr "Ordenació en Z"
#: ../share/extensions/restack.inx.h:26
msgid ""
@@ -38230,7 +38356,7 @@ msgstr "Mida mínima:"
#: ../share/extensions/rtree.inx.h:4
#, fuzzy
msgid "Omit redundant segments"
-msgstr "Fes rectes els segments"
+msgstr "Omet"
#: ../share/extensions/rtree.inx.h:5
msgid "Lift pen for backward steps"
@@ -38283,15 +38409,28 @@ msgid "Convert CSS attributes to XML attributes"
msgstr "Converteix els atributs CSS a XML"
#: ../share/extensions/scour.inx.h:8
+#, fuzzy
msgid ""
"Convert styles from style tags and inline style=\"\" declarations into XML "
"attributes."
msgstr ""
+"Aquesta extensió optimitza el fitxer SVG d'acord a les següents opcions:\n"
+" * Escurça els noms de colors: Converteix tots els colors a format "
+"#RRGGBB o #RGB.\n"
+" * Converteix els atributs CSS a XML: converteix els estils des de les "
+"etiquetes d'estils i declaracions d'estil interior=\"\" a atributs XML.\n"
+" * Col·lapsament de grup: suprimeix els elements de grup menys usats, "
+"promovent el seu contingut un nivell superior. Requereix \"Suprimeix els "
+"noms pels elements ID no usats\" \n"
+" * Crea grups per atributs similars: crea elements de grup per córrer o "
+"elements que tinguin almenys un atribut en comú (p.e. color d'emplenat, "
+"opacitat de contorn...).\n"
+" * Incrusta ràsters: incrusta imatges ràster com a "
#: ../share/extensions/scour.inx.h:9
#, fuzzy
msgid "Collapse groups"
-msgstr "Col·lapsa-ho tot"
+msgstr "Redueix tots els grups"
#: ../share/extensions/scour.inx.h:10
msgid ""
@@ -38320,8 +38459,9 @@ msgid ""
msgstr ""
#: ../share/extensions/scour.inx.h:15
+#, fuzzy
msgid "Keep unreferenced definitions"
-msgstr ""
+msgstr "node sense referenciar `%s'"
#: ../share/extensions/scour.inx.h:16
msgid "Keep element definitions that are not currently used in the SVG"
@@ -38365,13 +38505,26 @@ msgid "Remove comments"
msgstr "Suprimeix els comentaris"
#: ../share/extensions/scour.inx.h:25
+#, fuzzy
msgid "Remove all XML comments from output."
-msgstr ""
+msgstr " --strip-comments Treu els comentaris del fitxers XML\n"
#: ../share/extensions/scour.inx.h:26
#, fuzzy
msgid "Embed raster images"
-msgstr "Incrusta ràsters"
+msgstr ""
+"Aquesta extensió optimitza el fitxer SVG d'acord a les següents opcions:\n"
+" * Escurça els noms de colors: Converteix tots els colors a format "
+"#RRGGBB o #RGB.\n"
+" * Converteix els atributs CSS a XML: converteix els estils des de les "
+"etiquetes d'estils i declaracions d'estil interior=\"\" a atributs XML.\n"
+" * Col·lapsament de grup: suprimeix els elements de grup menys usats, "
+"promovent el seu contingut un nivell superior. Requereix \"Suprimeix els "
+"noms pels elements ID no usats\" \n"
+" * Crea grups per atributs similars: crea elements de grup per córrer o "
+"elements que tinguin almenys un atribut en comú (p.e. color d'emplenat, "
+"opacitat de contorn...).\n"
+" * Incrusta ràsters: incrusta imatges ràster com a "
#: ../share/extensions/scour.inx.h:27
msgid ""
@@ -38404,7 +38557,7 @@ msgstr ""
#: ../share/extensions/scour.inx.h:33
#, fuzzy
msgid "Indentation characters:"
-msgstr "Caràcter Unicode:"
+msgstr "Sense sagnat"
#: ../share/extensions/scour.inx.h:34
msgid ""
@@ -38416,7 +38569,7 @@ msgstr ""
#: ../share/extensions/scour.inx.h:35
#, fuzzy
msgid "Depth of indentation:"
-msgstr "Funció profunditat:"
+msgstr "Sagnat"
#: ../share/extensions/scour.inx.h:36
msgid ""
@@ -38438,12 +38591,12 @@ msgstr ""
#: ../share/extensions/scour.inx.h:39
#, fuzzy
msgid "Document options"
-msgstr "Propietats _del document..."
+msgstr "Opcions del document"
#: ../share/extensions/scour.inx.h:40
#, fuzzy
msgid "Pretty-printing"
-msgstr "S'està pintant"
+msgstr "Pretty-printing:\n"
#: ../share/extensions/scour.inx.h:41
msgid "Space"
@@ -38461,12 +38614,12 @@ msgstr "Cap"
#: ../share/extensions/scour.inx.h:44
#, fuzzy
msgid "IDs"
-msgstr "ID"
+msgstr "Identificadors"
#: ../share/extensions/scour.inx.h:45
#, fuzzy
msgid "Remove unused IDs"
-msgstr "Suprimeix el vermell"
+msgstr "Suprimeix els que no s'han emprat"
#: ../share/extensions/scour.inx.h:46
msgid ""
@@ -38486,8 +38639,9 @@ msgid ""
msgstr ""
#: ../share/extensions/scour.inx.h:49
+#, fuzzy
msgid "Prefix shortened IDs with:"
-msgstr ""
+msgstr "Identificadors"
#: ../share/extensions/scour.inx.h:50
msgid "Prepend shortened IDs with the specified prefix."
@@ -38509,13 +38663,12 @@ msgstr ""
#: ../share/extensions/scour.inx.h:53
#, fuzzy
msgid "Preserve the following IDs:"
-msgstr ""
-"S'han trobat les tipografia següents: \n"
-"%s"
+msgstr "Preserva"
#: ../share/extensions/scour.inx.h:54
+#, fuzzy
msgid "A comma-separated list of IDs that are to be preserved."
-msgstr ""
+msgstr "Llista delimitada per comes"
#: ../share/extensions/scour.inx.h:55
#, fuzzy
@@ -39059,26 +39212,27 @@ msgstr "A partir del costat c i els angles a, b"
#: ../share/extensions/ungroup_deep.inx.h:1
#, fuzzy
msgid "Deep Ungroup"
-msgstr "Desagrupa"
+msgstr "Desagr&upa..."
#: ../share/extensions/ungroup_deep.inx.h:2
#, fuzzy
msgid "Ungroup all groups in the selected object."
-msgstr "Crea un grup de retall usant com a base els objectes seleccionats"
+msgstr "Desagrupa els grups seleccionats"
#: ../share/extensions/ungroup_deep.inx.h:3
#, fuzzy
msgid "Starting Depth"
-msgstr "Camí d'inici:"
+msgstr "Profunditat (%):"
#: ../share/extensions/ungroup_deep.inx.h:4
#, fuzzy
msgid "Stopping Depth (from top)"
-msgstr "Suprimeix el camí de retall de la selecció"
+msgstr "La profunditat màxima dibuixada del diagrama a partir de l'arrel"
#: ../share/extensions/ungroup_deep.inx.h:5
+#, fuzzy
msgid "Depth to Keep (from bottom)"
-msgstr ""
+msgstr "Profunditat de la recursivitat --- baixeu-la!!"
#: ../share/extensions/voronoi2svg.inx.h:1
msgid "Voronoi Diagram"
@@ -39099,7 +39253,7 @@ msgstr "Mostra la capsa contenidora"
#: ../share/extensions/voronoi2svg.inx.h:6
#, fuzzy
msgid "Triangles color"
-msgstr "Triangle cap enfora"
+msgstr "Triangles"
#: ../share/extensions/voronoi2svg.inx.h:7
msgid "Delaunay Triangulation"
@@ -39123,13 +39277,14 @@ msgid "Options for Delaunay Triangulation"
msgstr "Triangulació Delaunay"
#: ../share/extensions/voronoi2svg.inx.h:13
+#, fuzzy
msgid "Default (Stroke black and no fill)"
-msgstr ""
+msgstr "Emplenat i traç"
#: ../share/extensions/voronoi2svg.inx.h:14
#, fuzzy
msgid "Triangles with item color"
-msgstr "Canvia el color de mostra"
+msgstr "color de l'ítem"
#: ../share/extensions/voronoi2svg.inx.h:15
msgid "Triangles with item color (random on apply)"
@@ -39573,6 +39728,17 @@ msgstr "Un format popular d'imatges per a il·lustracions"
msgid "XAML Input"
msgstr "Entrada XAML"
+#, fuzzy
+#~ msgid "Spacing between baselines (percent of font size)"
+#~ msgstr "Espai entre les línies (percentatge de la mida del tipus de lletra)"
+
+#, fuzzy
+#~ msgid "Add Stored to measure tool"
+#~ msgstr "Eina Compàs: mesura distàncies i angles"
+
+#~ msgid "Area (px^2): "
+#~ msgstr "Àrea (px^2): "
+
#~ msgid ""
#~ "Select <b>exactly 2 paths</b> to perform difference, division, or path "
#~ "cut."
@@ -39623,12 +39789,6 @@ msgstr "Entrada XAML"
#~ msgid "Arbitrary Angle"
#~ msgstr "Angle arbitrari"
-#~ msgid "Horizontal Point:"
-#~ msgstr "Punt horitzontal:"
-
-#~ msgid "Vertical Point:"
-#~ msgstr "Punt vertical:"
-
#~ msgid "Group collapsing"
#~ msgstr "Col·lapsament de grups"
diff --git a/src/desktop-style.cpp b/src/desktop-style.cpp
index 81aa95b48..65e511245 100644
--- a/src/desktop-style.cpp
+++ b/src/desktop-style.cpp
@@ -174,8 +174,12 @@ sp_desktop_apply_css_recursive(SPObject *o, SPCSSAttr *css, bool skip_lines)
/**
* Apply style on selection on desktop.
*/
+ void sp_desktop_set_style(SPDesktop *desktop, SPCSSAttr *css, bool change, bool write_current){
+ return sp_desktop_set_style(desktop->getSelection(), desktop, css, change, write_current);
+}
+
void
-sp_desktop_set_style(SPDesktop *desktop, SPCSSAttr *css, bool change, bool write_current)
+sp_desktop_set_style(Inkscape::ObjectSet *set, SPDesktop *desktop, SPCSSAttr *css, bool change, bool write_current)
{
if (write_current) {
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
@@ -187,7 +191,7 @@ sp_desktop_set_style(SPDesktop *desktop, SPCSSAttr *css, bool change, bool write
sp_repr_css_merge(css_write, css);
sp_css_attr_unset_uris(css_write);
prefs->mergeStyle("/desktop/style", css_write);
- auto itemlist = desktop->selection->items();
+ auto itemlist = set->items();
for (auto i = itemlist.begin(); i!= itemlist.end(); ++i) {
/* last used styles for 3D box faces are stored separately */
SPObject *obj = *i;
@@ -227,7 +231,7 @@ sp_desktop_set_style(SPDesktop *desktop, SPCSSAttr *css, bool change, bool write
sp_repr_css_merge(css_no_text, css);
css_no_text = sp_css_attr_unset_text(css_no_text);
- auto itemlist = desktop->selection->items();
+ auto itemlist = set->items();
for (auto i = itemlist.begin(); i!= itemlist.end(); ++i) {
SPItem *item = *i;
diff --git a/src/desktop-style.h b/src/desktop-style.h
index f3d6775a4..a404c94a8 100644
--- a/src/desktop-style.h
+++ b/src/desktop-style.h
@@ -12,7 +12,6 @@
*
* Released under GNU GPL, read the file 'COPYING' for more information
*/
-
class ColorRGBA;
class SPCSSAttr;
class SPDesktop;
@@ -20,6 +19,7 @@ class SPObject;
class SPItem;
class SPStyle;
namespace Inkscape {
+class ObjectSet;
namespace XML {
class Node;
}
@@ -59,6 +59,7 @@ enum { // which property was queried (add when you need more)
void sp_desktop_apply_css_recursive(SPObject *o, SPCSSAttr *css, bool skip_lines);
void sp_desktop_set_color(SPDesktop *desktop, ColorRGBA const &color, bool is_relative, bool fill);
+void sp_desktop_set_style(Inkscape::ObjectSet *set, SPDesktop *desktop, SPCSSAttr *css, bool change = true, bool write_current = true);
void sp_desktop_set_style(SPDesktop *desktop, SPCSSAttr *css, bool change = true, bool write_current = true);
SPCSSAttr *sp_desktop_get_style(SPDesktop *desktop, bool with_text);
guint32 sp_desktop_get_color (SPDesktop *desktop, bool is_fill);
diff --git a/src/desktop.cpp b/src/desktop.cpp
index 89a7da9d0..2476b10bb 100644
--- a/src/desktop.cpp
+++ b/src/desktop.cpp
@@ -1529,6 +1529,7 @@ SPDesktop::setDocument (SPDocument *doc)
}
layers->setDocument(doc);
+ selection->setDocument(doc);
// remove old EventLog if it exists (see also: bug #1071082)
if (event_log) {
diff --git a/src/extension/dbus/document-interface.cpp b/src/extension/dbus/document-interface.cpp
index 667830997..d3a06b81c 100644
--- a/src/extension/dbus/document-interface.cpp
+++ b/src/extension/dbus/document-interface.cpp
@@ -713,7 +713,7 @@ document_interface_move (DocumentInterface *doc_interface, gchar *name, gdouble
std::vector<SPObject*> oldsel = selection_swap(doc_interface->target.getSelection(), name, error);
if (oldsel.empty())
return FALSE;
- sp_selection_move (doc_interface->target.getSelection(), x, 0 - y);
+ doc_interface->target.getSelection()->move(x, 0 - y);
selection_restore(doc_interface->target.getSelection(), oldsel);
return TRUE;
}
@@ -726,7 +726,7 @@ document_interface_move_to (DocumentInterface *doc_interface, gchar *name, gdoub
if (oldsel.empty())
return FALSE;
Inkscape::Selection * sel = doc_interface->target.getSelection();
- sp_selection_move (doc_interface->target.getSelection(), x - selection_get_center_x(sel),
+ doc_interface->target.getSelection()->move(x - selection_get_center_x(sel),
0 - (y - selection_get_center_y(sel)));
selection_restore(doc_interface->target.getSelection(), oldsel);
return TRUE;
@@ -1150,7 +1150,7 @@ document_interface_selection_set_list (DocumentInterface *doc_interface,
gboolean document_interface_selection_rotate(DocumentInterface *doc_interface, int angle, GError ** /*error*/)
{
Inkscape::Selection *selection = doc_interface->target.getSelection();
- sp_selection_rotate(selection, angle);
+ selection->rotate(angle);
return TRUE;
}
@@ -1235,13 +1235,13 @@ gboolean document_interface_selection_scale(DocumentInterface *doc_interface, gd
{
return FALSE;
}
- sp_selection_scale (selection, grow);
+ selection->scale(grow);
return TRUE;
}
gboolean document_interface_selection_move(DocumentInterface *doc_interface, gdouble x, gdouble y, GError ** /*error*/)
{
- sp_selection_move(doc_interface->target.getSelection(), x, 0 - y); //switching coordinate systems.
+ doc_interface->target.getSelection()->move(x, 0 - y); //switching coordinate systems.
return TRUE;
}
@@ -1252,7 +1252,7 @@ gboolean document_interface_selection_move_to(DocumentInterface *doc_interface,
Geom::OptRect sel_bbox = sel->visualBounds();
if (sel_bbox) {
Geom::Point m( x - selection_get_center_x(sel) , 0 - (y - selection_get_center_y(sel)) );
- sp_object_set_move_relative(sel, m, true);
+ sel->moveRelative(m, true);
}
return TRUE;
}
@@ -1279,8 +1279,8 @@ document_interface_selection_move_to_layer (DocumentInterface *doc_interface,
return FALSE;
if (strcmp("layer", (next->getRepr())->attribute("inkscape:groupmode")) == 0) {
-
- sp_selection_cut(dt);
+
+ dt->selection->cut();
doc_interface->target.getSelection()->layers()->setCurrentLayer(next);
diff --git a/src/extension/internal/bluredge.cpp b/src/extension/internal/bluredge.cpp
index 4f66b39fc..8aa982810 100644
--- a/src/extension/internal/bluredge.cpp
+++ b/src/extension/internal/bluredge.cpp
@@ -90,7 +90,7 @@ BlurEdge::effect (Inkscape::Extension::Effect *module, Inkscape::UI::View::View
new_group->appendChild(new_items[i]);
selection->add(new_items[i]);
- sp_selected_path_to_curves(selection, static_cast<SPDesktop *>(desktop));
+ selection->toCurves();
if (offset < 0.0) {
/* Doing an inset here folks */
diff --git a/src/file.cpp b/src/file.cpp
index 324998774..b29bee6b4 100644
--- a/src/file.cpp
+++ b/src/file.cpp
@@ -1120,14 +1120,14 @@ void sp_import_document(SPDesktop *desktop, SPDocument *clipdoc, bool in_place)
Inkscape::Selection *selection = desktop->getSelection();
selection->setReprList(pasted_objects_not);
Geom::Affine doc2parent = SP_ITEM(desktop->currentLayer())->i2doc_affine().inverse();
- sp_object_set_apply_affine(selection, desktop->dt2doc() * doc2parent * desktop->doc2dt(), true, false, false);
- sp_selection_delete(desktop);
+ selection->applyAffine(desktop->dt2doc() * doc2parent * desktop->doc2dt(), true, false, false);
+ selection->deleteItems();
// Change the selection to the freshly pasted objects
selection->setReprList(pasted_objects);
// Apply inverse of parent transform
- sp_object_set_apply_affine(selection, desktop->dt2doc() * doc2parent * desktop->doc2dt(), true, false, false);
+ selection->applyAffine(desktop->dt2doc() * doc2parent * desktop->doc2dt(), true, false, false);
// Update (among other things) all curves in paths, for bounds() to work
target_document->ensureUpToDate();
@@ -1157,7 +1157,7 @@ void sp_import_document(SPDesktop *desktop, SPDocument *clipdoc, bool in_place)
m.unSetup();
}
- sp_object_set_move_relative(selection, offset);
+ selection->moveRelative(offset);
}
}
@@ -1262,7 +1262,7 @@ file_import(SPDocument *in_doc, const Glib::ustring &uri,
// c2p is identity matrix at this point unless ensureUpToDate is called
doc->ensureUpToDate();
Geom::Affine affine = doc->getRoot()->c2p * SP_ITEM(place_to_insert)->i2doc_affine().inverse();
- sp_object_set_apply_affine(selection, desktop->dt2doc() * affine * desktop->doc2dt(), true, false, false);
+ selection->applyAffine(desktop->dt2doc() * affine * desktop->doc2dt(), true, false, false);
// move to mouse pointer
{
@@ -1270,7 +1270,7 @@ file_import(SPDocument *in_doc, const Glib::ustring &uri,
Geom::OptRect sel_bbox = selection->visualBounds();
if (sel_bbox) {
Geom::Point m( desktop->point() - sel_bbox->midpoint() );
- sp_object_set_move_relative(selection, m, false);
+ selection->moveRelative(m, false);
}
}
}
diff --git a/src/object-set.cpp b/src/object-set.cpp
index 92bcf6b07..fd0b908d1 100644
--- a/src/object-set.cpp
+++ b/src/object-set.cpp
@@ -232,13 +232,29 @@ Inkscape::XML::Node *ObjectSet::singleRepr() {
return obj ? obj->getRepr() : nullptr;
}
-void ObjectSet::set(SPObject *object) {
+void ObjectSet::set(SPObject *object, bool persist_selection_context) {
_clear();
_add(object);
- // can't emit signal here due to boolean argument in Selection
-// _emitSignals();
+ if(dynamic_cast<Inkscape::Selection*>(this))
+ return dynamic_cast<Inkscape::Selection*>(this)->_emitChanged(persist_selection_context);
+}
+
+void ObjectSet::setReprList(std::vector<XML::Node*> const &list) {
+ if(!document())
+ return;
+ clear();
+ for (auto iter = list.rbegin(); iter != list.rend(); ++iter) {
+ SPObject *obj = document()->getObjectById((*iter)->attribute("id"));
+ if (obj) {
+ add(obj);
+ }
+ }
+ if(dynamic_cast<Inkscape::Selection*>(this))
+ return dynamic_cast<Inkscape::Selection*>(this)->_emitChanged();//
}
+
+
Geom::OptRect ObjectSet::bounds(SPItem::BBoxType type) const
{
return (type == SPItem::GEOMETRIC_BBOX) ?
diff --git a/src/object-set.h b/src/object-set.h
index fae365f70..8fa20e454 100644
--- a/src/object-set.h
+++ b/src/object-set.h
@@ -3,6 +3,7 @@
*
* Authors:
* Adrian Boguszewski
+ * Marc Jeanmougin
*
* Copyright (C) 2016 Adrian Boguszewski
*
@@ -30,10 +31,11 @@
#include "sp-object.h"
#include "sp-item.h"
#include "sp-item-group.h"
+#include "desktop.h"
+#include "document.h"
class SPBox3D;
class Persp3D;
-class SPDesktop;
namespace Inkscape {
@@ -101,9 +103,17 @@ public:
typedef decltype(MultiIndexContainer().get<random_access>() | boost::adaptors::filtered(is_group()) | boost::adaptors::transformed(object_to_group())) SPGroupRange;
typedef decltype(MultiIndexContainer().get<random_access>() | boost::adaptors::filtered(is_item()) | boost::adaptors::transformed(object_to_node())) XMLNodeRange;
- ObjectSet(SPDesktop* desktop): _desktop(desktop) {};
- ObjectSet(): _desktop(nullptr) {};
+ ObjectSet(SPDesktop* desktop): _desktop(desktop) {
+ _document = desktop->getDocument();
+ };
+ ObjectSet(SPDocument* doc): _desktop(nullptr), _document(doc) {};
+ ObjectSet(): _desktop(nullptr), _document(nullptr) {};
virtual ~ObjectSet();
+
+ void setDocument(SPDocument* doc){
+ _document = doc;
+ }
+
/**
* Add an SPObject to the set of selected objects.
@@ -112,6 +122,16 @@ public:
*/
bool add(SPObject* object);
+ /**
+ * Add an XML node's SPObject to the set of selected objects.
+ *
+ * @param the xml node of the item to add
+ */
+ void add(XML::Node *repr) {
+ if(document() && repr)
+ add(document()->getObjectById(repr->attribute("id")));
+ }
+
/** Add items from an STL iterator range to the selection.
* \param from the begin iterator
* \param to the end iterator
@@ -145,8 +165,11 @@ public:
*
* @param obj the object to select
*/
- void set(SPObject *object);
-
+ void set(SPObject *object, bool persist_selection_context = false);
+ void set(XML::Node *repr) {
+ if(document() && repr)
+ set(document()->getObjectById(repr->attribute("id")));
+ }
/**
* Unselects all selected objects.
*/
@@ -235,6 +258,13 @@ public:
_clear();
addList(objs);
}
+
+ /**
+ * Selects exactly the specified objects.
+ *
+ * @param list the repr list to add
+ */
+ void setReprList(std::vector<XML::Node*> const &list);
/**
* Adds the specified objects to selection, without deselecting first.
@@ -287,6 +317,92 @@ public:
*/
SPDesktop *desktop() { return _desktop; }
+ /**
+ * Returns the document the selection is bound to
+ *
+ * @return the document the selection is bound to, or NULL if in console mode
+ */
+ SPDocument *document() { return _document; }
+
+ //item groups operations
+ //in selection-chemistry.cpp
+ void deleteItems();
+ void duplicate(bool suppressDone = false, bool duplicateLayer = false);
+ void clone();
+ void unlink();
+ void relink();
+ void cloneOriginal();
+ void cloneOriginalPathLPE();
+ Inkscape::XML::Node* group();
+ void popFromGroup();
+ void ungroup();
+
+ //z-order management
+ //in selection-chemistry.cpp
+ void raise(bool skip_undo = false);
+ void raiseToTop(bool skip_undo = false);
+ void lower(bool skip_undo = false);
+ void lowerToBottom(bool skip_undo = false);
+ void toNextLayer(bool skip_undo = false);
+ void toPrevLayer(bool skip_undo = false);
+ void toLayer(SPObject *layer, bool skip_undo = false);
+
+ //clipboard management
+ //in selection-chemistry.cpp
+ void copy();
+ void cut();
+ void pasteStyle();
+ void pasteSize(bool apply_x, bool apply_y);
+ void pasteSizeSeparately(bool apply_x, bool apply_y);
+ void pastePathEffect();
+
+ //path operations
+ //in path-chemistry.cpp
+ void combine(bool skip_undo = false);
+ void breakApart(bool skip_undo = false);
+ void toCurves(bool skip_undo = false);
+ void toLPEItems();
+ void pathReverse();
+
+ //Other path operations
+ //in selection-chemistry.cpp
+ void toMarker(bool apply = true);
+ void toGuides();
+ void toSymbol();
+ void unSymbol();
+ void tile(bool apply = true); //"Object to Pattern"
+ void untile();
+ void createBitmapCopy();
+ void setMask(bool apply_clip_path, bool apply_to_layer = false, bool skip_undo = false);
+ void editMask(bool clip);
+ void unsetMask(bool apply_clip_path);
+ void setClipGroup();
+
+ // moves
+ // in selection-chemistry.cpp
+ void removeLPE();
+ void removeFilter();
+ void applyAffine(Geom::Affine const &affine, bool set_i2d=true,bool compensate=true, bool adjust_transf_center=true);
+ void removeTransform();
+ void setScaleAbsolute(double, double, double, double);
+ void setScaleRelative(const Geom::Point&, const Geom::Scale&);
+ void rotateRelative(const Geom::Point&, double);
+ void skewRelative(const Geom::Point&, double, double);
+ void moveRelative(const Geom::Point &move, bool compensate = true);
+ void moveRelative(double dx, double dy);
+ void rotate90(bool ccw);
+ void rotate(double);
+ void rotateScreen(double);
+ void scale(double);
+ void scaleScreen(double);
+ void scaleTimes(double);
+ void move(double dx, double dy);
+ void moveScreen(double dx, double dy);
+
+ // various
+ void getExportHints(Glib::ustring &filename, float *xdpi, float *ydpi);
+
+
protected:
virtual void _connectSignals(SPObject* object) {};
virtual void _releaseSignals(SPObject* object) {};
@@ -304,6 +420,7 @@ protected:
MultiIndexContainer _container;
GC::soft_ptr<SPDesktop> _desktop;
+ GC::soft_ptr<SPDocument> _document;
std::list<SPBox3D *> _3dboxes;
std::unordered_map<SPObject*, sigc::connection> _releaseConnections;
diff --git a/src/path-chemistry.cpp b/src/path-chemistry.cpp
index 5295b7a70..a19ca9524 100644
--- a/src/path-chemistry.cpp
+++ b/src/path-chemistry.cpp
@@ -38,8 +38,10 @@
#include "selection-chemistry.h"
#include "path-chemistry.h"
#include "verbs.h"
+#include "object-set.h"
using Inkscape::DocumentUndo;
+using Inkscape::ObjectSet;
inline bool less_than_items(SPItem const *first, SPItem const *second)
@@ -49,39 +51,42 @@ inline bool less_than_items(SPItem const *first, SPItem const *second)
}
void
-sp_selected_path_combine(SPDesktop *desktop, bool skip_undo)
+ObjectSet::combine(bool skip_undo)
{
- Inkscape::Selection *selection = desktop->getSelection();
- SPDocument *doc = desktop->getDocument();
+ //Inkscape::Selection *selection = desktop->getSelection();
+ SPDocument *doc = document();
- std::vector<SPItem*> items(selection->items().begin(), selection->items().end());
+ std::vector<SPItem*> items_copy(items().begin(), items().end());
- if (items.size() < 1) {
- desktop->getMessageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to combine."));
+ if (items_copy.size() < 1) {
+ if(desktop())
+ desktop()->getMessageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to combine."));
return;
}
- desktop->messageStack()->flash(Inkscape::IMMEDIATE_MESSAGE, _("Combining paths..."));
- // set "busy" cursor
- desktop->setWaitingCursor();
+ if(desktop()){
+ desktop()->messageStack()->flash(Inkscape::IMMEDIATE_MESSAGE, _("Combining paths..."));
+ // set "busy" cursor
+ desktop()->setWaitingCursor();
+ }
- items = sp_degroup_list (items); // descend into any groups in selection
+ items_copy = sp_degroup_list (items_copy); // descend into any groups in selection
std::vector<SPItem*> to_paths;
- for (std::vector<SPItem*>::const_reverse_iterator i = items.rbegin(); i != items.rend(); ++i) {
+ for (std::vector<SPItem*>::const_reverse_iterator i = items_copy.rbegin(); i != items_copy.rend(); ++i) {
if (!dynamic_cast<SPPath *>(*i) && !dynamic_cast<SPGroup *>(*i)) {
to_paths.push_back(*i);
}
}
std::vector<Inkscape::XML::Node*> converted;
- bool did = sp_item_list_to_curves(to_paths, items, converted);
+ bool did = sp_item_list_to_curves(to_paths, items_copy, converted);
for (std::vector<Inkscape::XML::Node*>::const_iterator i = converted.begin(); i != converted.end(); ++i)
- items.push_back((SPItem*)doc->getObjectByRepr(*i));
+ items_copy.push_back((SPItem*)doc->getObjectByRepr(*i));
- items = sp_degroup_list (items); // converting to path may have added more groups, descend again
+ items_copy = sp_degroup_list (items_copy); // converting to path may have added more groups, descend again
- sort(items.begin(),items.end(),less_than_items);
- assert(!items.empty()); // cannot be NULL because of list length check at top of function
+ sort(items_copy.begin(),items_copy.end(),less_than_items);
+ assert(!items_copy.empty()); // cannot be NULL because of list length check at top of function
// remember the position, id, transform and style of the topmost path, they will be assigned to the combined one
gint position = 0;
@@ -95,10 +100,10 @@ sp_selected_path_combine(SPDesktop *desktop, bool skip_undo)
Inkscape::XML::Node *parent = NULL;
if (did) {
- selection->clear();
+ clear();
}
- for (std::vector<SPItem*>::const_reverse_iterator i = items.rbegin(); i != items.rend(); ++i){
+ for (std::vector<SPItem*>::const_reverse_iterator i = items_copy.rbegin(); i != items_copy.rend(); ++i){
SPItem *item = *i;
SPPath *path = dynamic_cast<SPPath *>(item);
@@ -107,7 +112,7 @@ sp_selected_path_combine(SPDesktop *desktop, bool skip_undo)
}
if (!did) {
- selection->clear();
+ clear();
did = true;
}
@@ -142,7 +147,7 @@ sp_selected_path_combine(SPDesktop *desktop, bool skip_undo)
first->deleteObject(false);
// delete the topmost.
- Inkscape::XML::Document *xml_doc = desktop->doc()->getReprDoc();
+ Inkscape::XML::Document *xml_doc = doc->getReprDoc();
Inkscape::XML::Node *repr = xml_doc->createElement("svg:path");
// restore id, transform, path effect, and style
@@ -170,37 +175,40 @@ sp_selected_path_combine(SPDesktop *desktop, bool skip_undo)
// move to the position of the topmost, reduced by the number of deleted items
repr->setPosition(position > 0 ? position : 0);
if ( !skip_undo ) {
- DocumentUndo::done(desktop->getDocument(), SP_VERB_SELECTION_COMBINE,
+ DocumentUndo::done(doc, SP_VERB_SELECTION_COMBINE,
_("Combine"));
}
- selection->set(repr);
+ set(repr);
Inkscape::GC::release(repr);
} else {
- desktop->getMessageStack()->flash(Inkscape::ERROR_MESSAGE, _("<b>No path(s)</b> to combine in the selection."));
+ if(desktop())
+ desktop()->getMessageStack()->flash(Inkscape::ERROR_MESSAGE, _("<b>No path(s)</b> to combine in the selection."));
}
- desktop->clearWaitingCursor();
+ if(desktop())
+ desktop()->clearWaitingCursor();
}
void
-sp_selected_path_break_apart(SPDesktop *desktop, bool skip_undo)
+ObjectSet::breakApart(bool skip_undo)
{
- Inkscape::Selection *selection = desktop->getSelection();
-
- if (selection->isEmpty()) {
- desktop->getMessageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>path(s)</b> to break apart."));
+ if (isEmpty()) {
+ if(desktop())
+ desktop()->getMessageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>path(s)</b> to break apart."));
return;
}
-
- desktop->messageStack()->flash(Inkscape::IMMEDIATE_MESSAGE, _("Breaking apart paths..."));
- // set "busy" cursor
- desktop->setWaitingCursor();
+ if(desktop()){
+ desktop()->messageStack()->flash(Inkscape::IMMEDIATE_MESSAGE, _("Breaking apart paths..."));
+ // set "busy" cursor
+ desktop()->setWaitingCursor();
+
+ }
bool did = false;
- std::vector<SPItem*> itemlist(selection->items().begin(), selection->items().end());
+ std::vector<SPItem*> itemlist(items().begin(), items().end());
for (std::vector<SPItem*>::const_iterator i = itemlist.begin(); i != itemlist.end(); ++i){
SPItem *item = *i;
@@ -264,83 +272,83 @@ sp_selected_path_break_apart(SPDesktop *desktop, bool skip_undo)
Inkscape::GC::release(repr);
}
- selection->setReprList(reprs);
+ setReprList(reprs);
g_slist_free(list);
g_free(style);
g_free(path_effect);
}
-
- desktop->clearWaitingCursor();
+
+ if(desktop())
+ desktop()->clearWaitingCursor();
if (did) {
if ( !skip_undo ) {
- DocumentUndo::done(desktop->getDocument(), SP_VERB_SELECTION_BREAK_APART,
+ DocumentUndo::done(document(), SP_VERB_SELECTION_BREAK_APART,
_("Break apart"));
}
} else {
- desktop->getMessageStack()->flash(Inkscape::ERROR_MESSAGE, _("<b>No path(s)</b> to break apart in the selection."));
+ if(desktop())
+ desktop()->getMessageStack()->flash(Inkscape::ERROR_MESSAGE, _("<b>No path(s)</b> to break apart in the selection."));
}
}
-/* This function is an entry point from GUI */
-void
-sp_selected_path_to_curves(Inkscape::Selection *selection, SPDesktop *desktop, bool interactive)
+void ObjectSet::toCurves(bool skip_undo)
{
- if (selection->isEmpty()) {
- if (interactive && desktop)
- desktop->getMessageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to convert to path."));
+ if (isEmpty()) {
+ if (desktop())
+ desktop()->getMessageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to convert to path."));
return;
}
bool did = false;
- if (interactive && desktop) {
- desktop->messageStack()->flash(Inkscape::IMMEDIATE_MESSAGE, _("Converting objects to paths..."));
+ if (desktop()) {
+ desktop()->messageStack()->flash(Inkscape::IMMEDIATE_MESSAGE, _("Converting objects to paths..."));
// set "busy" cursor
- desktop->setWaitingCursor();
+ desktop()->setWaitingCursor();
}
- std::vector<SPItem*> selected(selection->items().begin(), selection->items().end());
+ std::vector<SPItem*> selected(items().begin(), items().end());
std::vector<Inkscape::XML::Node*> to_select;
- selection->clear();
+ clear();
std::vector<SPItem*> items(selected);
did = sp_item_list_to_curves(items, selected, to_select);
- selection->setReprList(to_select);
- selection->addList(selected);
+ setReprList(to_select);
+ addList(selected);
- if (interactive && desktop) {
- desktop->clearWaitingCursor();
- if (did) {
- DocumentUndo::done(desktop->getDocument(), SP_VERB_OBJECT_TO_CURVE,
+ if (desktop()) {
+ desktop()->clearWaitingCursor();
+ }
+ if (did&& !skip_undo) {
+ DocumentUndo::done(document(), SP_VERB_OBJECT_TO_CURVE,
_("Object to path"));
- } else {
- desktop->getMessageStack()->flash(Inkscape::ERROR_MESSAGE, _("<b>No objects</b> to convert to path in the selection."));
- return;
- }
+ } else {
+ if(desktop())
+ desktop()->getMessageStack()->flash(Inkscape::ERROR_MESSAGE, _("<b>No objects</b> to convert to path in the selection."));
+ return;
}
}
/** Converts the selected items to LPEItems if they are not already so; e.g. SPRects) */
-void sp_selected_to_lpeitems(SPDesktop *desktop)
+void ObjectSet::toLPEItems()
{
- Inkscape::Selection *selection = desktop->getSelection();
- if (selection->isEmpty()) {
+ if (isEmpty()) {
return;
}
- std::vector<SPItem*> selected(selection->items().begin(), selection->items().end());
+ std::vector<SPItem*> selected(items().begin(), items().end());
std::vector<Inkscape::XML::Node*> to_select;
- selection->clear();
+ clear();
std::vector<SPItem*> items(selected);
sp_item_list_to_curves(items, selected, to_select, true);
- selection->setReprList(to_select);
- selection->addList(selected);
+ setReprList(to_select);
+ addList(selected);
}
bool
@@ -597,24 +605,24 @@ sp_selected_item_to_curved_repr(SPItem *item, guint32 /*text_grouping_policy*/)
void
-sp_selected_path_reverse(SPDesktop *desktop)
+ObjectSet::pathReverse()
{
- Inkscape::Selection *selection = desktop->getSelection();
- auto items = selection->items();
-
- if (items.empty()) {
- desktop->getMessageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>path(s)</b> to reverse."));
+ if (isEmpty()) {
+ if(desktop())
+ desktop()->getMessageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>path(s)</b> to reverse."));
return;
}
// set "busy" cursor
- desktop->setWaitingCursor();
-
+ if(desktop()){
+ desktop()->setWaitingCursor();
+ desktop()->messageStack()->flash(Inkscape::IMMEDIATE_MESSAGE, _("Reversing paths..."));
+ }
+
bool did = false;
- desktop->messageStack()->flash(Inkscape::IMMEDIATE_MESSAGE, _("Reversing paths..."));
- for (auto i = items.begin(); i != items.end(); ++i){
+ for (auto i = items().begin(); i != items().end(); ++i){
SPPath *path = dynamic_cast<SPPath *>(*i);
if (!path) {
@@ -642,14 +650,15 @@ sp_selected_path_reverse(SPDesktop *desktop)
g_free(nodetypes);
}
}
-
- desktop->clearWaitingCursor();
+ if(desktop())
+ desktop()->clearWaitingCursor();
if (did) {
- DocumentUndo::done(desktop->getDocument(), SP_VERB_SELECTION_REVERSE,
+ DocumentUndo::done(document(), SP_VERB_SELECTION_REVERSE,
_("Reverse path"));
} else {
- desktop->getMessageStack()->flash(Inkscape::ERROR_MESSAGE, _("<b>No paths</b> to reverse in the selection."));
+ if(desktop())
+ desktop()->getMessageStack()->flash(Inkscape::ERROR_MESSAGE, _("<b>No paths</b> to reverse in the selection."));
}
}
diff --git a/src/path-chemistry.h b/src/path-chemistry.h
index 7b9beaed8..3bcd0486a 100644
--- a/src/path-chemistry.h
+++ b/src/path-chemistry.h
@@ -18,6 +18,7 @@ class SPItem;
namespace Inkscape {
class Selection;
+class ObjectSet;
namespace XML {
class Node;
} // namespace XML
@@ -25,13 +26,13 @@ class Node;
typedef unsigned int guint32;
-void sp_selected_path_combine (SPDesktop *desktop, bool skip_undo = false);
-void sp_selected_path_break_apart (SPDesktop *desktop, bool skip_undo = false);
-// interactive=true only has an effect if desktop != NULL, i.e. if a GUI is available
-void sp_selected_path_to_curves (Inkscape::Selection *selection, SPDesktop *desktop, bool interactive = true);
-void sp_selected_to_lpeitems(SPDesktop *desktop);
+//void sp_selected_path_combine (SPDesktop *desktop, bool skip_undo = false);
+//void sp_selected_path_break_apart (SPDesktop *desktop, bool skip_undo = false);
+ //interactive=true only has an effect if desktop != NULL, i.e. if a GUI is available
+//void sp_selected_path_to_curves (Inkscape::Selection *selection, SPDesktop *desktop, bool interactive = true);
+//void sp_selected_to_lpeitems(ObjectSet *selection);
Inkscape::XML::Node *sp_selected_item_to_curved_repr(SPItem *item, guint32 text_grouping_policy);
-void sp_selected_path_reverse (SPDesktop *desktop);
+//void sp_selected_path_reverse (SPDesktop *desktop);
bool sp_item_list_to_curves(const std::vector<SPItem*> &items, std::vector<SPItem*> &selected, std::vector<Inkscape::XML::Node*> &to_select, bool skip_all_lpeitems = false);
#endif // SEEN_PATH_CHEMISTRY_H
diff --git a/src/selection-chemistry.cpp b/src/selection-chemistry.cpp
index 7bed0a71d..2f9e72e2c 100644
--- a/src/selection-chemistry.cpp
+++ b/src/selection-chemistry.cpp
@@ -13,6 +13,7 @@
* Kris De Gussem <Kris.DeGussem@gmail.com>
* Tavmjong Bah <tavmjong@free.fr> (Symbol additions)
* Adrian Boguszewski
+ * Marc Jeanmougin
*
* Copyright (C) 1999-2016 authors
* Copyright (C) 2001-2002 Ximian, Inc.
@@ -223,7 +224,7 @@ void SelectionHelper::reverse(SPDesktop *dt)
NodeTool *nt = static_cast<NodeTool*>(dt->event_context);
nt->_multipath->reverseSubpaths();
} else {
- sp_selected_path_reverse(dt);
+ dt->getSelection()->pathReverse();
}
}
@@ -374,43 +375,42 @@ static void sp_selection_delete_impl(std::vector<SPItem*> const &items, bool pro
}
-void sp_selection_delete(SPDesktop *desktop)
+void ObjectSet::deleteItems()
{
- if (desktop == NULL) {
- return;
- }
-
- if (tools_isactive(desktop, TOOLS_TEXT))
- if (Inkscape::UI::Tools::sp_text_delete_selection(desktop->event_context)) {
- DocumentUndo::done(desktop->getDocument(), SP_VERB_CONTEXT_TEXT,
+ if(desktop() && tools_isactive(desktop(), TOOLS_TEXT)){
+ if (Inkscape::UI::Tools::sp_text_delete_selection(desktop()->event_context)) {
+ DocumentUndo::done(desktop()->getDocument(), SP_VERB_CONTEXT_TEXT,
_("Delete text"));
return;
- }
-
- Inkscape::Selection *selection = desktop->getSelection();
-
- // check if something is selected
- if (selection->isEmpty()) {
- desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("<b>Nothing</b> was deleted."));
+ }
+ }
+
+ if (isEmpty()) {
+ selection_display_message(desktop(),Inkscape::WARNING_MESSAGE, _("<b>Nothing</b> was deleted."));
return;
}
- std::vector<SPItem*> selected(selection->items().begin(), selection->items().end());
- selection->clear();
+ std::vector<SPItem*> selected(items().begin(), items().end());
+ clear();
sp_selection_delete_impl(selected);
- desktop->currentLayer()->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG);
-
- /* a tool may have set up private information in it's selection context
- * that depends on desktop items. I think the only sane way to deal with
- * this currently is to reset the current tool, which will reset it's
- * associated selection context. For example: deleting an object
- * while moving it around the canvas.
- */
- tools_switch( desktop, tools_active( desktop ) );
+ if(SPDesktop *d = desktop()){
+ d->currentLayer()->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG);
+
+ /* a tool may have set up private information in it's selection context
+ * that depends on desktop items. I think the only sane way to deal with
+ * this currently is to reset the current tool, which will reset it's
+ * associated selection context. For example: deleting an object
+ * while moving it around the canvas.
+ */
+ tools_switch( d, tools_active( d ) );
+ }
+ if(document())
+ DocumentUndo::done(document(), SP_VERB_EDIT_DELETE,
+ _("Delete"));
- DocumentUndo::done(desktop->getDocument(), SP_VERB_EDIT_DELETE,
- _("Delete"));
}
+
+
static void add_ids_recursive(std::vector<const gchar *> &ids, SPObject *obj)
{
if (obj) {
@@ -424,29 +424,33 @@ static void add_ids_recursive(std::vector<const gchar *> &ids, SPObject *obj)
}
}
-void sp_selection_duplicate(SPDesktop *desktop, bool suppressDone, bool duplicateLayer)
+void ObjectSet::duplicate(bool suppressDone, bool duplicateLayer)
{
- if (desktop == NULL) {
+ if(duplicateLayer && !desktop() ){
+ //TODO: understand why layer management is tied to desktop and not to document.
return;
}
-
- SPDocument *doc = desktop->doc();
+
+ SPDocument *doc = document();
+
+ if(!doc)
+ return;
+
Inkscape::XML::Document* xml_doc = doc->getReprDoc();
- Inkscape::Selection *selection = desktop->getSelection();
// check if something is selected
- if (selection->isEmpty() && !duplicateLayer) {
- desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to duplicate."));
+ if (isEmpty() && !duplicateLayer) {
+ selection_display_message(desktop(),Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to duplicate."));
return;
}
- std::vector<Inkscape::XML::Node*> reprs(selection->xmlNodes().begin(), selection->xmlNodes().end());
+ std::vector<Inkscape::XML::Node*> reprs(xmlNodes().begin(), xmlNodes().end());
if(duplicateLayer){
reprs.clear();
- reprs.push_back(desktop->currentLayer()->getRepr());
+ reprs.push_back(desktop()->currentLayer()->getRepr());
}
- selection->clear();
+ clear();
// sorting items from different parents sorts each parent's subset without possibly mixing
// them, just what we need
@@ -534,15 +538,15 @@ void sp_selection_duplicate(SPDesktop *desktop, bool suppressDone, bool duplicat
if ( !suppressDone ) {
- DocumentUndo::done(desktop->getDocument(), SP_VERB_EDIT_DUPLICATE,
+ DocumentUndo::done(document(), SP_VERB_EDIT_DUPLICATE,
_("Duplicate"));
}
if(!duplicateLayer)
- selection->setReprList(newsel);
+ setReprList(newsel);
else{
SPObject* new_layer = doc->getObjectByRepr(newsel[0]);
gchar* name = g_strdup_printf(_("%s copy"), new_layer->label());
- desktop->layer_manager->renameLayer( new_layer, name, TRUE );
+ desktop()->layer_manager->renameLayer( new_layer, name, TRUE );
g_free(name);
}
}
@@ -683,12 +687,18 @@ void sp_edit_invert_in_all_layers(SPDesktop *desktop)
sp_edit_select_all_full(desktop, true, true);
}
-static Inkscape::XML::Node* sp_object_set_group(ObjectSet *set) {
- SPDocument *doc = set->desktop()->getDocument();
+Inkscape::XML::Node* ObjectSet::group() {
+ SPDocument *doc = document();
+ if(!doc)
+ return nullptr;
+ if (isEmpty()) {
+ selection_display_message(desktop(), Inkscape::WARNING_MESSAGE, _("Select <b>some objects</b> to group."));
+ return nullptr;
+ }
Inkscape::XML::Document *xml_doc = doc->getReprDoc();
Inkscape::XML::Node *group = xml_doc->createElement("svg:g");
- std::vector<Inkscape::XML::Node*> p(set->xmlNodes().begin(), set->xmlNodes().end());
+ std::vector<Inkscape::XML::Node*> p(xmlNodes().begin(), xmlNodes().end());
std::sort(p.begin(), p.end(), sp_repr_compare_position_bool);
// Remember the position and parent of the topmost object.
@@ -748,25 +758,13 @@ static Inkscape::XML::Node* sp_object_set_group(ObjectSet *set) {
// Move to the position of the topmost, reduced by the number of items deleted from topmost_parent
group->setPosition(topmost + 1);
- set->set(doc->getObjectByRepr(group));
+ set(doc->getObjectByRepr(group));
+ DocumentUndo::done(doc, SP_VERB_SELECTION_GROUP,
+ C_("Verb", "Group"));
return group;
}
-void sp_selection_group(Inkscape::Selection *selection, SPDesktop *desktop)
-{
- // Check if something is selected.
- if (selection->isEmpty()) {
- selection_display_message(desktop, Inkscape::WARNING_MESSAGE, _("Select <b>some objects</b> to group."));
- return;
- }
- Inkscape::XML::Node* group = sp_object_set_group(selection);
-
- DocumentUndo::done(selection->layers()->getDocument(), SP_VERB_SELECTION_GROUP,
- C_("Verb", "Group"));
-
- Inkscape::GC::release(group);
-}
static gint clone_depth_descending(gconstpointer a, gconstpointer b) {
SPUse *use_a = static_cast<SPUse *>(const_cast<gpointer>(a));
@@ -781,20 +779,19 @@ static gint clone_depth_descending(gconstpointer a, gconstpointer b) {
return -1;
}
}
-
-void sp_selection_ungroup_pop_selection(Inkscape::Selection *selection, SPDesktop *desktop)
-{
- if (selection->isEmpty()) {
- selection_display_message(desktop, Inkscape::WARNING_MESSAGE, _("<b>No objects selected</b> to pop out of group."));
+
+void ObjectSet::popFromGroup(){
+ if (isEmpty()) {
+ selection_display_message(desktop(), Inkscape::WARNING_MESSAGE, _("<b>No objects selected</b> to pop out of group."));
return;
}
- auto item = selection->items().begin(); // leaving this because it will be useful for
+ auto item = items().begin(); // leaving this because it will be useful for
// future implementation of complex pop ungrouping
SPItem *obj = *item;
SPItem *parent_group = static_cast<SPItem*>(obj->parent);
if (!SP_IS_GROUP(parent_group) || SP_IS_LAYER(parent_group)) {
- desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Selection <b>not in a group</b>."));
+ selection_display_message(desktop(), Inkscape::WARNING_MESSAGE, _("Selection <b>not in a group</b>."));
return;
}
if (parent_group->firstChild()->getNext() == NULL) {
@@ -802,22 +799,20 @@ void sp_selection_ungroup_pop_selection(Inkscape::Selection *selection, SPDeskto
sp_item_group_ungroup(static_cast<SPGroup*>(parent_group), children, false);
}
else {
- sp_selection_to_next_layer(desktop, 1); // suppress done
+ toNextLayer(1);
}
parent_group->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG);
- DocumentUndo::done(selection->layers()->getDocument(), SP_VERB_SELECTION_UNGROUP_POP_SELECTION,
+ if(document())
+ DocumentUndo::done(document(), SP_VERB_SELECTION_UNGROUP_POP_SELECTION,
_("Pop selection from group"));
}
-static void sp_object_set_ungroup(ObjectSet *set)
+static void ungroup_impl(ObjectSet *set)
{
- GSList *groups = NULL;
- for (auto g: set->groups()) {
- groups = g_slist_prepend(groups, g);
- }
+ std::set<SPObject*> groups(set->groups().begin(),set->groups().end());
std::vector<SPItem*> new_select;
auto old_select = set->items();
@@ -834,7 +829,7 @@ static void sp_object_set_ungroup(ObjectSet *set)
original = dynamic_cast<SPUse *>(original)->get_original();
}
- if (g_slist_find(groups, original) != NULL) {
+ if (groups.find(original) != groups.end()) {
clones_to_unlink = g_slist_prepend(clones_to_unlink, *item);
}
}
@@ -856,7 +851,7 @@ static void sp_object_set_ungroup(ObjectSet *set)
SPItem *obj = *item;
// ungroup only the groups marked earlier
- if (g_slist_find(groups, *item) != NULL) {
+ if (groups.find(*item) != groups.end()) {
std::vector<SPItem*> children;
sp_item_group_ungroup(dynamic_cast<SPGroup *>(obj), children, false);
// add the items resulting from ungrouping to the selection
@@ -871,23 +866,28 @@ static void sp_object_set_ungroup(ObjectSet *set)
set->setList(new_select);
}
-void sp_selection_ungroup(Inkscape::Selection *selection, SPDesktop *desktop)
+void ObjectSet::ungroup()
{
- if (selection->isEmpty()) {
- selection_display_message(desktop, Inkscape::WARNING_MESSAGE, _("Select a <b>group</b> to ungroup."));
+ if (isEmpty()) {
+ if(desktop())
+ selection_display_message(desktop(), Inkscape::WARNING_MESSAGE, _("Select a <b>group</b> to ungroup."));
+ return;
}
- if (boost::distance(selection->groups()) == 0) {
- selection_display_message(desktop, Inkscape::ERROR_MESSAGE, _("<b>No groups</b> to ungroup in the selection."));
+ if (boost::distance(groups()) == 0) {
+ if(desktop())
+ selection_display_message(desktop(), Inkscape::ERROR_MESSAGE, _("<b>No groups</b> to ungroup in the selection."));
return;
}
- sp_object_set_ungroup(selection);
-
- DocumentUndo::done(selection->layers()->getDocument(), SP_VERB_SELECTION_UNGROUP,
+ ungroup_impl(this);
+ if(document())
+ DocumentUndo::done(document(), SP_VERB_SELECTION_UNGROUP,
_("Ungroup"));
}
+// TODO replace it with ObjectSet::degroup_list
+
/** Replace all groups in the list with their member objects, recursively; returns a new list, frees old */
std::vector<SPItem*>
sp_degroup_list(std::vector<SPItem*> &items)
@@ -967,16 +967,29 @@ bool sp_item_repr_compare_position_bool(SPObject const *first, SPObject const *s
((SPItem*)second)->getRepr())<0;
}
-void sp_object_set_raise(ObjectSet *set) {
- std::vector<SPItem*> items(set->items().begin(), set->items().end());
- Inkscape::XML::Node *grepr = const_cast<Inkscape::XML::Node *>(items.front()->parent->getRepr());
+void ObjectSet::raise(bool skip_undo){
+
+ if(isEmpty()){
+ selection_display_message(desktop(), Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to raise."));
+ return;
+ }
+
+ SPGroup const *group = sp_item_list_common_parent_group(items());
+ if (!group) {
+ if(desktop())
+ selection_display_message(desktop(), Inkscape::ERROR_MESSAGE, _("You cannot raise/lower objects from <b>different groups</b> or <b>layers</b>."));
+ return;
+ }
+
+ std::vector<SPItem*> items_copy(items().begin(), items().end());
+ Inkscape::XML::Node *grepr = const_cast<Inkscape::XML::Node *>(items_copy.front()->parent->getRepr());
/* Construct reverse-ordered list of selected children. */
- std::vector<SPItem*> rev(items);
+ std::vector<SPItem*> rev(items_copy);
sort(rev.begin(),rev.end(),sp_item_repr_compare_position_bool);
// Determine the common bbox of the selected items.
- Geom::OptRect selected = enclose_items(items);
+ Geom::OptRect selected = enclose_items(items_copy);
// Iterate over all objects in the selection (starting from top).
if (selected) {
@@ -990,7 +1003,7 @@ void sp_object_set_raise(ObjectSet *set) {
Geom::OptRect newref_bbox = newItem->desktopVisualBounds();
if ( newref_bbox && selected->intersects(*newref_bbox) ) {
// AND if it's not one of our selected objects,
- if ( std::find(items.begin(),items.end(),newref)==items.end()) {
+ if ( std::find(items_copy.begin(),items_copy.end(),newref)==items_copy.end()) {
// move the selected object after that sibling
grepr->changeOrder(child->getRepr(), newref->getRepr());
}
@@ -1000,70 +1013,59 @@ void sp_object_set_raise(ObjectSet *set) {
}
}
}
+ if(document() && !skip_undo)
+ DocumentUndo::done(document(), SP_VERB_SELECTION_RAISE,
+ //TRANSLATORS: "Raise" means "to raise an object" in the undo history
+ C_("Undo action", "Raise"));
}
-void sp_selection_raise(Inkscape::Selection *selection, SPDesktop *desktop)
-{
- if (selection->items().empty()) {
- selection_display_message(desktop, Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to raise."));
+
+void ObjectSet::raiseToTop(bool skip_undo) {
+ if(isEmpty()){
+ selection_display_message(desktop(), Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to raise."));
return;
}
- SPGroup const *group = sp_item_list_common_parent_group(selection->items());
+ SPGroup const *group = sp_item_list_common_parent_group(items());
if (!group) {
- selection_display_message(desktop, Inkscape::ERROR_MESSAGE, _("You cannot raise/lower objects from <b>different groups</b> or <b>layers</b>."));
+ selection_display_message(desktop(), Inkscape::ERROR_MESSAGE, _("You cannot raise/lower objects from <b>different groups</b> or <b>layers</b>."));
return;
}
- sp_object_set_raise(selection);
-
- DocumentUndo::done(selection->layers()->getDocument(), SP_VERB_SELECTION_RAISE,
- //TRANSLATORS: "Raise" means "to raise an object" in the undo history
- C_("Undo action", "Raise"));
-}
-
-void sp_object_set_raise_to_top(ObjectSet *set) {
- std::vector<Inkscape::XML::Node*> rl(set->xmlNodes().begin(), set->xmlNodes().end());
+
+ std::vector<Inkscape::XML::Node*> rl(xmlNodes().begin(), xmlNodes().end());
sort(rl.begin(),rl.end(),sp_repr_compare_position_bool);
for (std::vector<Inkscape::XML::Node*>::const_iterator l=rl.begin(); l!=rl.end();++l) {
Inkscape::XML::Node *repr =(*l);
repr->setPosition(-1);
}
+ if (document() && !skip_undo) {
+ DocumentUndo::done(document(), SP_VERB_SELECTION_TO_FRONT,
+ _("Raise to top"));
+ }
}
-void sp_selection_raise_to_top(Inkscape::Selection *selection, SPDesktop *desktop, bool skip_undo)
-{
- SPDocument *document = selection->layers()->getDocument();
-
- if (selection->isEmpty()) {
- selection_display_message(desktop, Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to raise to top."));
+void ObjectSet::lower(bool skip_undo){
+ if(isEmpty()){
+ selection_display_message(desktop(), Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to lower."));
return;
}
- SPGroup const *group = sp_item_list_common_parent_group(selection->items());
+ SPGroup const *group = sp_item_list_common_parent_group(items());
if (!group) {
- selection_display_message(desktop, Inkscape::ERROR_MESSAGE, _("You cannot raise/lower objects from <b>different groups</b> or <b>layers</b>."));
+ selection_display_message(desktop(), Inkscape::ERROR_MESSAGE, _("You cannot raise/lower objects from <b>different groups</b> or <b>layers</b>."));
return;
}
- sp_object_set_raise_to_top(selection);
-
- if (!skip_undo) {
- DocumentUndo::done(document, SP_VERB_SELECTION_TO_FRONT,
- _("Raise to top"));
- }
-}
-
-void sp_object_set_lower(ObjectSet *set) {
- std::vector<SPItem*> items(set->items().begin(), set->items().end());
- Inkscape::XML::Node *grepr = const_cast<Inkscape::XML::Node *>(items.front()->parent->getRepr());
+ std::vector<SPItem*> items_copy(items().begin(), items().end());
+ Inkscape::XML::Node *grepr = const_cast<Inkscape::XML::Node *>(items_copy.front()->parent->getRepr());
// Determine the common bbox of the selected items.
- Geom::OptRect selected = enclose_items(items);
+ Geom::OptRect selected = enclose_items(items_copy);
/* Construct direct-ordered list of selected children. */
- std::vector<SPItem*> rev(items);
+ std::vector<SPItem*> rev(items_copy);
sort(rev.begin(),rev.end(),sp_item_repr_compare_position_bool);
// Iterate over all objects in the selection (starting from top).
@@ -1078,7 +1080,7 @@ void sp_object_set_lower(ObjectSet *set) {
Geom::OptRect ref_bbox = newItem->desktopVisualBounds();
if ( ref_bbox && selected->intersects(*ref_bbox) ) {
// AND if it's not one of our selected objects,
- if (items.end()==std::find(items.begin(),items.end(),newref)) {
+ if (items_copy.end()==std::find(items_copy.begin(),items_copy.end(),newref)) {
// move the selected object before that sibling
SPObject *put_after = prev_sibling(newref);
if (put_after)
@@ -1092,38 +1094,35 @@ void sp_object_set_lower(ObjectSet *set) {
}
}
}
+ if(document() && !skip_undo)
+ DocumentUndo::done(document(), SP_VERB_SELECTION_LOWER,
+ //TRANSLATORS: "Lower" means "to lower an object" in the undo history
+ C_("Undo action", "Lower"));
}
-void sp_selection_lower(Inkscape::Selection *selection, SPDesktop *desktop)
-{
- if (selection->items().empty()) {
- selection_display_message(desktop, Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to lower."));
+
+void ObjectSet::lowerToBottom(bool skip_undo){
+ if(!document())
+ return;
+ if (isEmpty()) {
+ selection_display_message(desktop(), Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to lower to bottom."));
return;
}
- SPGroup const *group = sp_item_list_common_parent_group(selection->items());
+ SPGroup const *group = sp_item_list_common_parent_group(items());
if (!group) {
- selection_display_message(desktop, Inkscape::ERROR_MESSAGE, _("You cannot raise/lower objects from <b>different groups</b> or <b>layers</b>."));
+ selection_display_message(desktop(), Inkscape::ERROR_MESSAGE, _("You cannot raise/lower objects from <b>different groups</b> or <b>layers</b>."));
return;
}
- sp_object_set_lower(selection);
-
- DocumentUndo::done(selection->layers()->getDocument(), SP_VERB_SELECTION_LOWER,
- //TRANSLATORS: "Lower" means "to lower an object" in the undo history
- C_("Undo action", "Lower"));
-}
-
-
-void sp_object_set_lower_to_bottom(ObjectSet *set) {
- std::vector<Inkscape::XML::Node*> rl(set->xmlNodes().begin(), set->xmlNodes().end());
+ std::vector<Inkscape::XML::Node*> rl(xmlNodes().begin(), xmlNodes().end());
sort(rl.begin(),rl.end(),sp_repr_compare_position_bool);
for (std::vector<Inkscape::XML::Node*>::const_reverse_iterator l=rl.rbegin();l!=rl.rend();++l) {
gint minpos;
SPObject *pp;
Inkscape::XML::Node *repr = (*l);
- pp = set->desktop()->getDocument()->getObjectByRepr(repr->parent());
+ pp = document()->getObjectByRepr(repr->parent());
minpos = 0;
g_assert(dynamic_cast<SPGroup *>(pp));
for (auto& pc: pp->children) {
@@ -1134,28 +1133,13 @@ void sp_object_set_lower_to_bottom(ObjectSet *set) {
}
repr->setPosition(minpos);
}
-}
-
-void sp_selection_lower_to_bottom(Inkscape::Selection *selection, SPDesktop *desktop, bool skip_undo)
-{
- if (selection->isEmpty()) {
- selection_display_message(desktop, Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to lower to bottom."));
- return;
- }
-
- SPGroup const *group = sp_item_list_common_parent_group(selection->items());
- if (!group) {
- selection_display_message(desktop, Inkscape::ERROR_MESSAGE, _("You cannot raise/lower objects from <b>different groups</b> or <b>layers</b>."));
- return;
- }
-
- sp_object_set_lower_to_bottom(selection);
- if (!skip_undo) {
- DocumentUndo::done(desktop->getDocument(), SP_VERB_SELECTION_TO_BACK,
+ if (document() && !skip_undo) {
+ DocumentUndo::done(document(), SP_VERB_SELECTION_TO_BACK,
_("Lower to bottom"));
}
}
+
void
sp_undo(SPDesktop *desktop, SPDocument *)
{
@@ -1178,10 +1162,10 @@ sp_redo(SPDesktop *desktop, SPDocument *)
}
}
-void sp_selection_cut(SPDesktop *desktop)
+void ObjectSet::cut()
{
- sp_selection_copy(desktop);
- sp_selection_delete(desktop);
+ copy();
+ deleteItems();
}
/**
@@ -1236,11 +1220,10 @@ take_style_from_item(SPObject *object)
return css;
}
-
-void sp_selection_copy(SPDesktop *desktop)
+void ObjectSet::copy()
{
Inkscape::UI::ClipboardManager *cm = Inkscape::UI::ClipboardManager::get();
- cm->copy(desktop);
+ cm->copy(this);
}
void sp_selection_paste(SPDesktop *desktop, bool in_place)
@@ -1251,20 +1234,20 @@ void sp_selection_paste(SPDesktop *desktop, bool in_place)
}
}
-void sp_selection_paste_style(SPDesktop *desktop)
+void ObjectSet::pasteStyle()
{
Inkscape::UI::ClipboardManager *cm = Inkscape::UI::ClipboardManager::get();
- if (cm->pasteStyle(desktop)) {
- DocumentUndo::done(desktop->getDocument(), SP_VERB_EDIT_PASTE_STYLE, _("Paste style"));
+ if (cm->pasteStyle(this)) {
+ DocumentUndo::done(document(), SP_VERB_EDIT_PASTE_STYLE, _("Paste style"));
}
}
-void sp_selection_paste_livepatheffect(SPDesktop *desktop)
+void ObjectSet::pastePathEffect()
{
Inkscape::UI::ClipboardManager *cm = Inkscape::UI::ClipboardManager::get();
- if (cm->pastePathEffect(desktop)) {
- DocumentUndo::done(desktop->getDocument(), SP_VERB_EDIT_PASTE_LIVEPATHEFFECT,
+ if (cm->pastePathEffect(this)) {
+ DocumentUndo::done(document(), SP_VERB_EDIT_PASTE_LIVEPATHEFFECT,
_("Paste live path effect"));
}
}
@@ -1279,18 +1262,16 @@ static void sp_selection_remove_livepatheffect_impl(SPItem *item)
}
}
-void sp_selection_remove_livepatheffect(SPDesktop *desktop)
+void ObjectSet::removeLPE()
{
- if (desktop == NULL) return;
-
- Inkscape::Selection *selection = desktop->getSelection();
// check if something is selected
- if (selection->isEmpty()) {
- desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to remove live path effects from."));
+ if (isEmpty()) {
+ if(desktop())
+ desktop()->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to remove live path effects from."));
return;
}
- auto list= selection->items();
+ auto list= items();
for (auto itemlist=list.begin();itemlist!=list.end();++itemlist) {
SPItem *item = *itemlist;
@@ -1298,46 +1279,45 @@ void sp_selection_remove_livepatheffect(SPDesktop *desktop)
}
- DocumentUndo::done(desktop->getDocument(), SP_VERB_EDIT_REMOVE_LIVEPATHEFFECT,
+ if(document())
+ DocumentUndo::done(document(), SP_VERB_EDIT_REMOVE_LIVEPATHEFFECT,
_("Remove live path effect"));
}
-void sp_selection_remove_filter(SPDesktop *desktop)
+void ObjectSet::removeFilter()
{
- if (desktop == NULL) return;
-
- Inkscape::Selection *selection = desktop->getSelection();
// check if something is selected
- if (selection->isEmpty()) {
- desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to remove filters from."));
+ if (isEmpty()) {
+ if(desktop())
+ desktop()->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to remove filters from."));
return;
}
SPCSSAttr *css = sp_repr_css_attr_new();
sp_repr_css_unset_property(css, "filter");
- sp_desktop_set_style(desktop, css);
+ sp_desktop_set_style(this, desktop(), css);
sp_repr_css_attr_unref(css);
-
- DocumentUndo::done(desktop->getDocument(), SP_VERB_EDIT_REMOVE_FILTER,
+ if(document())
+ DocumentUndo::done(document(), SP_VERB_EDIT_REMOVE_FILTER,
_("Remove filter"));
}
-void sp_selection_paste_size(SPDesktop *desktop, bool apply_x, bool apply_y)
+void ObjectSet::pasteSize(bool apply_x, bool apply_y)
{
Inkscape::UI::ClipboardManager *cm = Inkscape::UI::ClipboardManager::get();
- if (cm->pasteSize(desktop, false, apply_x, apply_y)) {
- DocumentUndo::done(desktop->getDocument(), SP_VERB_EDIT_PASTE_SIZE,
+ if (cm->pasteSize(this, false, apply_x, apply_y)) {
+ DocumentUndo::done(document(), SP_VERB_EDIT_PASTE_SIZE,
_("Paste size"));
}
}
-void sp_selection_paste_size_separately(SPDesktop *desktop, bool apply_x, bool apply_y)
+void ObjectSet::pasteSizeSeparately(bool apply_x, bool apply_y)
{
Inkscape::UI::ClipboardManager *cm = Inkscape::UI::ClipboardManager::get();
- if (cm->pasteSize(desktop, true, apply_x, apply_y)) {
- DocumentUndo::done(desktop->getDocument(), SP_VERB_EDIT_PASTE_SIZE_SEPARATELY,
+ if (cm->pasteSize(this, true, apply_x, apply_y)) {
+ DocumentUndo::done(document(), SP_VERB_EDIT_PASTE_SIZE_SEPARATELY,
_("Paste size separately"));
}
}
@@ -1360,27 +1340,28 @@ void sp_selection_change_layer_maintain_clones(std::vector<SPItem*> const &items
}
}
-
-void sp_selection_to_next_layer(SPDesktop *dt, bool suppressDone)
+void ObjectSet::toNextLayer(bool skip_undo)
{
- Inkscape::Selection *selection = dt->getSelection();
-
+ if(!desktop())
+ return;
+ SPDesktop *dt=desktop(); //TODO make it desktop-independent
+
// check if something is selected
- if (selection->isEmpty()) {
+ if (isEmpty()) {
dt->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to move to the layer above."));
return;
}
- std::vector<SPItem*> items(selection->items().begin(), selection->items().end());
+ std::vector<SPItem*> items_copy(items().begin(), items().end());
bool no_more = false; // Set to true, if no more layers above
SPObject *next=Inkscape::next_layer(dt->currentRoot(), dt->currentLayer());
if (next) {
- selection->clear();
- sp_selection_change_layer_maintain_clones(items,next);
+ clear();
+ sp_selection_change_layer_maintain_clones(items_copy,next);
std::vector<Inkscape::XML::Node*> temp_clip;
- sp_selection_copy_impl(items, temp_clip, dt->doc()->getReprDoc());
- sp_selection_delete_impl(items, false, false);
+ sp_selection_copy_impl(items_copy, temp_clip, dt->doc()->getReprDoc());
+ sp_selection_delete_impl(items_copy, false, false);
next=Inkscape::next_layer(dt->currentRoot(), dt->currentLayer()); // Fixes bug 1482973: crash while moving layers
std::vector<Inkscape::XML::Node*> copied;
if (next) {
@@ -1389,9 +1370,9 @@ void sp_selection_to_next_layer(SPDesktop *dt, bool suppressDone)
copied = sp_selection_paste_impl(dt->getDocument(), dt->currentLayer(), temp_clip);
no_more = true;
}
- selection->setReprList(copied);
+ setReprList(copied);
if (next) dt->setCurrentLayer(next);
- if ( !suppressDone ) {
+ if ( !skip_undo ) {
DocumentUndo::done(dt->getDocument(), SP_VERB_LAYER_MOVE_TO_NEXT,
_("Raise to next layer"));
}
@@ -1405,26 +1386,28 @@ void sp_selection_to_next_layer(SPDesktop *dt, bool suppressDone)
}
-void sp_selection_to_prev_layer(SPDesktop *dt, bool suppressDone)
+void ObjectSet::toPrevLayer(bool skip_undo)
{
- Inkscape::Selection *selection = dt->getSelection();
+ if(!desktop())
+ return;
+ SPDesktop *dt=desktop(); //TODO make it desktop-independent
// check if something is selected
- if (selection->isEmpty()) {
+ if (isEmpty()) {
dt->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to move to the layer below."));
return;
}
- std::vector<SPItem*> items(selection->items().begin(), selection->items().end());
+ std::vector<SPItem*> items_copy(items().begin(), items().end());
bool no_more = false; // Set to true, if no more layers below
SPObject *next=Inkscape::previous_layer(dt->currentRoot(), dt->currentLayer());
if (next) {
- selection->clear();
- sp_selection_change_layer_maintain_clones(items,next);
+ clear();
+ sp_selection_change_layer_maintain_clones(items_copy,next);
std::vector<Inkscape::XML::Node*> temp_clip;
- sp_selection_copy_impl(items, temp_clip, dt->doc()->getReprDoc()); // we're in the same doc, so no need to copy defs
- sp_selection_delete_impl(items, false, false);
+ sp_selection_copy_impl(items_copy, temp_clip, dt->doc()->getReprDoc()); // we're in the same doc, so no need to copy defs
+ sp_selection_delete_impl(items_copy, false, false);
next=Inkscape::previous_layer(dt->currentRoot(), dt->currentLayer()); // Fixes bug 1482973: crash while moving layers
std::vector<Inkscape::XML::Node*> copied;
if (next) {
@@ -1433,9 +1416,9 @@ void sp_selection_to_prev_layer(SPDesktop *dt, bool suppressDone)
copied = sp_selection_paste_impl(dt->getDocument(), dt->currentLayer(), temp_clip);
no_more = true;
}
- selection->setReprList( copied);
+ setReprList( copied);
if (next) dt->setCurrentLayer(next);
- if ( !suppressDone ) {
+ if ( !skip_undo ) {
DocumentUndo::done(dt->getDocument(), SP_VERB_LAYER_MOVE_TO_PREV,
_("Lower to previous layer"));
}
@@ -1448,30 +1431,33 @@ void sp_selection_to_prev_layer(SPDesktop *dt, bool suppressDone)
}
}
-void sp_selection_to_layer(SPDesktop *dt, SPObject *moveto, bool suppressDone)
+void ObjectSet::toLayer(SPObject *moveto, bool skip_undo)
{
- Inkscape::Selection *selection = dt->getSelection();
+ if(!document())
+ return;
+ SPDesktop *dt = desktop();
// check if something is selected
- if (selection->isEmpty()) {
- dt->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to move."));
+ if (isEmpty()) {
+ if(dt)
+ dt->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to move."));
return;
}
- std::vector<SPItem*> items(selection->items().begin(), selection->items().end());
+ std::vector<SPItem*> items_copy(items().begin(), items().end());
if (moveto) {
- selection->clear();
- sp_selection_change_layer_maintain_clones(items,moveto);
+ clear();
+ sp_selection_change_layer_maintain_clones(items_copy,moveto);
std::vector<Inkscape::XML::Node*> temp_clip;
- sp_selection_copy_impl(items, temp_clip, dt->doc()->getReprDoc()); // we're in the same doc, so no need to copy defs
- sp_selection_delete_impl(items, false, false);
- std::vector<Inkscape::XML::Node*> copied = sp_selection_paste_impl(dt->getDocument(), moveto, temp_clip);
- selection->setReprList(copied);
+ sp_selection_copy_impl(items_copy, temp_clip, document()->getReprDoc()); // we're in the same doc, so no need to copy defs
+ sp_selection_delete_impl(items_copy, false, false);
+ std::vector<Inkscape::XML::Node*> copied = sp_selection_paste_impl(document(), moveto, temp_clip);
+ setReprList(copied);
if (!temp_clip.empty()) temp_clip.clear();
- if (moveto) dt->setCurrentLayer(moveto);
- if ( !suppressDone ) {
- DocumentUndo::done(dt->getDocument(), SP_VERB_LAYER_MOVE_TO,
+ if (moveto && dt) dt->setCurrentLayer(moveto);
+ if ( !skip_undo ) {
+ DocumentUndo::done(document(), SP_VERB_LAYER_MOVE_TO,
_("Move selection to layer"));
}
}
@@ -1527,22 +1513,23 @@ value of set_i2d==false is only used by seltrans when it's dragging objects live
that case, items are already in the new position, but the repr is in the old, and this function
then simply updates the repr from item->transform.
*/
-void sp_object_set_apply_affine(ObjectSet *set, Geom::Affine const &affine, bool set_i2d, bool compensate,
+
+void ObjectSet::applyAffine(Geom::Affine const &affine, bool set_i2d, bool compensate,
bool adjust_transf_center)
{
- if (set->isEmpty())
+ if (isEmpty())
return;
// For each perspective with a box in selection, check whether all boxes are selected and
// unlink all non-selected boxes.
Persp3D *persp;
Persp3D *transf_persp;
- std::list<Persp3D *> plist = set->perspList();
+ std::list<Persp3D *> plist = perspList();
for (std::list<Persp3D *>::iterator i = plist.begin(); i != plist.end(); ++i) {
persp = (Persp3D *) (*i);
- if (!persp3d_has_all_boxes_in_selection (persp, set)) {
- std::list<SPBox3D *> selboxes = set->box3DList(persp);
+ if (!persp3d_has_all_boxes_in_selection (persp, this)) {
+ std::list<SPBox3D *> selboxes = box3DList(persp);
// create a new perspective as a copy of the current one and link the selected boxes to it
transf_persp = persp3d_create_xml_element (persp->document, persp->perspective_impl);
@@ -1555,14 +1542,15 @@ void sp_object_set_apply_affine(ObjectSet *set, Geom::Affine const &affine, bool
persp3d_apply_affine_transformation(transf_persp, affine);
}
- auto items = set->items();
- for (auto l=items.begin();l!=items.end() ;++l) {
+ auto items_copy = items();
+ for (auto l=items_copy.begin();l!=items_copy.end() ;++l) {
SPItem *item = *l;
if( dynamic_cast<SPRoot *>(item) ) {
// An SVG element cannot have a transform. We could change 'x' and 'y' in response
// to a translation... but leave that for another day.
- set->desktop()->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Cannot transform an embedded SVG."));
+ if(desktop())
+ desktop()->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Cannot transform an embedded SVG."));
break;
}
@@ -1572,21 +1560,21 @@ void sp_object_set_apply_affine(ObjectSet *set, Geom::Affine const &affine, bool
#if 0 /* Re-enable this once persistent guides have a graphical indication.
At the time of writing, this is the only place to re-enable. */
- sp_item_update_cns(*item, selection->desktop());
+ sp_item_update_cns(*item, desktop());
#endif
// we're moving both a clone and its original or any ancestor in clone chain?
- bool transform_clone_with_original = object_set_contains_original(item, set);
+ bool transform_clone_with_original = object_set_contains_original(item, this);
// ...both a text-on-path and its path?
bool transform_textpath_with_path = ((dynamic_cast<SPText *>(item) && item->firstChild() && dynamic_cast<SPTextPath *>(item->firstChild()))
- && set->includes( sp_textpath_get_path_item(dynamic_cast<SPTextPath *>(item->firstChild())) ));
+ && includes( sp_textpath_get_path_item(dynamic_cast<SPTextPath *>(item->firstChild())) ));
// ...both a flowtext and its frame?
- bool transform_flowtext_with_frame = (dynamic_cast<SPFlowtext *>(item) && set->includes( dynamic_cast<SPFlowtext *>(item)->get_frame(NULL))); // (only the first frame is checked so far)
+ bool transform_flowtext_with_frame = (dynamic_cast<SPFlowtext *>(item) && includes( dynamic_cast<SPFlowtext *>(item)->get_frame(NULL))); // (only the first frame is checked so far)
// ...both an offset and its source?
- bool transform_offset_with_source = (dynamic_cast<SPOffset *>(item) && dynamic_cast<SPOffset *>(item)->sourceHref) && set->includes( sp_offset_get_source(dynamic_cast<SPOffset *>(item)) );
+ bool transform_offset_with_source = (dynamic_cast<SPOffset *>(item) && dynamic_cast<SPOffset *>(item)->sourceHref) && includes( sp_offset_get_source(dynamic_cast<SPOffset *>(item)) );
// If we're moving a connector, we want to detach it
// from shapes that aren't part of the selection, but
@@ -1597,7 +1585,7 @@ void sp_object_set_apply_affine(ObjectSet *set, Geom::Affine const &affine, bool
SPItem *attItem[2] = {0, 0};
path->connEndPair.getAttachedItems(attItem);
for (int n = 0; n < 2; ++n) {
- if (!set->includes(attItem[n])) {
+ if (!includes(attItem[n])) {
sp_conn_end_detach(item, n);
}
}
@@ -1719,31 +1707,24 @@ void sp_object_set_apply_affine(ObjectSet *set, Geom::Affine const &affine, bool
}
}
-void sp_object_set_remove_transform(SPDesktop *desktop)
+void ObjectSet::removeTransform()
{
- if (desktop == NULL)
- return;
-
- Inkscape::Selection *selection = desktop->getSelection();
-
- auto items = selection->xmlNodes();
+ auto items = xmlNodes();
for (auto l=items.begin();l!=items.end() ;++l) {
(*l)->setAttribute("transform", NULL, false);
}
- DocumentUndo::done(desktop->getDocument(), SP_VERB_OBJECT_FLATTEN,
+ if(document())
+ DocumentUndo::done(document(), SP_VERB_OBJECT_FLATTEN,
_("Remove transform"));
}
-void
-sp_object_set_scale_absolute(ObjectSet *set,
- double x0, double x1,
- double y0, double y1)
+void ObjectSet::setScaleAbsolute(double x0, double x1,double y0, double y1)
{
- if (set->isEmpty())
+ if (isEmpty())
return;
- Geom::OptRect bbox = set->visualBounds();
+ Geom::OptRect bbox = visualBounds();
if ( !bbox ) {
return;
}
@@ -1756,16 +1737,15 @@ sp_object_set_scale_absolute(ObjectSet *set,
Geom::Translate const o2n(x0, y0);
Geom::Affine const final( p2o * scale * o2n );
- sp_object_set_apply_affine(set, final);
+ applyAffine(final);
}
-
-void sp_object_set_scale_relative(ObjectSet *set, Geom::Point const &align, Geom::Scale const &scale)
+void ObjectSet::setScaleRelative(Geom::Point const &align, Geom::Scale const &scale)
{
- if (set->isEmpty())
+ if (isEmpty())
return;
- Geom::OptRect bbox = set->visualBounds();
+ Geom::OptRect bbox = visualBounds();
if ( !bbox ) {
return;
@@ -1781,21 +1761,19 @@ void sp_object_set_scale_relative(ObjectSet *set, Geom::Point const &align, Geom
Geom::Translate const n2d(-align);
Geom::Translate const d2n(align);
Geom::Affine const final( n2d * scale * d2n );
- sp_object_set_apply_affine(set, final);
+ applyAffine(final);
}
-void
-sp_object_set_rotate_relative(ObjectSet *set, Geom::Point const &center, double angle_degrees)
+void ObjectSet::rotateRelative(Geom::Point const &center, double angle_degrees)
{
Geom::Translate const d2n(center);
Geom::Translate const n2d(-center);
Geom::Rotate const rotate(Geom::Rotate::from_degrees(angle_degrees));
Geom::Affine const final( Geom::Affine(n2d) * rotate * d2n );
- sp_object_set_apply_affine(set, final);
+ applyAffine(final);
}
-void
-sp_object_set_skew_relative(ObjectSet *set, Geom::Point const &align, double dx, double dy)
+void ObjectSet::skewRelative(Geom::Point const &align, double dx, double dy)
{
Geom::Translate const d2n(align);
Geom::Translate const n2d(-align);
@@ -1803,32 +1781,30 @@ sp_object_set_skew_relative(ObjectSet *set, Geom::Point const &align, double dx,
dx, 1,
0, 0);
Geom::Affine const final( n2d * skew * d2n );
- sp_object_set_apply_affine(set, final);
+ applyAffine(final);
}
-void sp_object_set_move_relative(ObjectSet *set, Geom::Point const &move, bool compensate)
+void ObjectSet::moveRelative(Geom::Point const &move, bool compensate)
{
- sp_object_set_apply_affine(set, Geom::Affine(Geom::Translate(move)), true, compensate);
+ applyAffine(Geom::Affine(Geom::Translate(move)), true, compensate);
}
-void sp_object_set_move_relative(ObjectSet *set, double dx, double dy)
+void ObjectSet::moveRelative(double dx, double dy)
{
- sp_object_set_apply_affine(set, Geom::Affine(Geom::Translate(dx, dy)));
+ applyAffine(Geom::Affine(Geom::Translate(dx, dy)));
}
/**
* Rotates selected objects 90 degrees, either clock-wise or counter-clockwise, depending on the value of ccw.
*/
-void sp_selection_rotate_90(SPDesktop *desktop, bool ccw)
+void ObjectSet::rotate90(bool ccw)
{
- Inkscape::Selection *selection = desktop->getSelection();
-
- if (selection->isEmpty())
+ if (isEmpty())
return;
- auto items = selection->items();
+ auto items_copy = items();
Geom::Rotate const rot_90(Geom::Point(0, ccw ? 1 : -1)); // pos. or neg. rotation, depending on the value of ccw
- for (auto l=items.begin();l!=items.end() ;++l) {
+ for (auto l=items_copy.begin();l!=items_copy.end() ;++l) {
SPItem *item = *l;
if (item) {
sp_item_rotate_rel(item, rot_90);
@@ -1837,25 +1813,23 @@ void sp_selection_rotate_90(SPDesktop *desktop, bool ccw)
}
}
- DocumentUndo::done(desktop->getDocument(),
+ DocumentUndo::done(document(),
ccw ? SP_VERB_OBJECT_ROTATE_90_CCW : SP_VERB_OBJECT_ROTATE_90_CW,
ccw ? _("Rotate 90\xc2\xb0 CCW") : _("Rotate 90\xc2\xb0 CW"));
}
-void
-sp_selection_rotate(Inkscape::Selection *selection, gdouble const angle_degrees)
+void ObjectSet::rotate(gdouble const angle_degrees)
{
- if (selection->isEmpty())
+ if (isEmpty())
return;
- boost::optional<Geom::Point> center = selection->center();
- if (!center) {
+ boost::optional<Geom::Point> center_ = center();
+ if (!center_) {
return;
}
+ rotateRelative(*center_, angle_degrees);
- sp_object_set_rotate_relative(selection, *center, angle_degrees);
-
- DocumentUndo::maybeDone(selection->desktop()->getDocument(),
+ DocumentUndo::maybeDone(document(),
( ( angle_degrees > 0 )
? "selector:rotate:ccw"
: "selector:rotate:cw" ),
@@ -2183,28 +2157,27 @@ cornerFarthestFrom(Geom::Rect const &r, Geom::Point const &p){
/**
\param angle the angle in "angular pixels", i.e. how many visible pixels must move the outermost point of the rotated object
*/
-void
-sp_selection_rotate_screen(Inkscape::Selection *selection, gdouble angle)
+void ObjectSet::rotateScreen(double angle)
{
- if (selection->isEmpty())
+ if (isEmpty()||!desktop())
return;
- Geom::OptRect bbox = selection->visualBounds();
- boost::optional<Geom::Point> center = selection->center();
+ Geom::OptRect bbox = visualBounds();
+ boost::optional<Geom::Point> center_ = center();
- if ( !bbox || !center ) {
+ if ( !bbox || !center_ ) {
return;
}
- gdouble const zoom = selection->desktop()->current_zoom();
+ gdouble const zoom = desktop()->current_zoom();
gdouble const zmove = angle / zoom;
- gdouble const r = Geom::L2(cornerFarthestFrom(*bbox, *center) - *center);
+ gdouble const r = Geom::L2(cornerFarthestFrom(*bbox, *center_) - *center_);
gdouble const zangle = 180 * atan2(zmove, r) / M_PI;
- sp_object_set_rotate_relative(selection, *center, zangle);
+ rotateRelative(*center_, zangle);
- DocumentUndo::maybeDone(selection->desktop()->getDocument(),
+ DocumentUndo::maybeDone(document(),
( (angle > 0)
? "selector:rotate:ccw"
: "selector:rotate:cw" ),
@@ -2212,18 +2185,17 @@ sp_selection_rotate_screen(Inkscape::Selection *selection, gdouble angle)
_("Rotate by pixels"));
}
-void
-sp_selection_scale(Inkscape::Selection *selection, gdouble grow)
+void ObjectSet::scale(double grow)
{
- if (selection->isEmpty())
+ if (isEmpty())
return;
- Geom::OptRect bbox = selection->visualBounds();
+ Geom::OptRect bbox = visualBounds();
if (!bbox) {
return;
}
- Geom::Point const center(bbox->midpoint());
+ Geom::Point const center_(bbox->midpoint());
// you can't scale "do nizhe pola" (below zero)
double const max_len = bbox->maxExtent();
@@ -2232,9 +2204,9 @@ sp_selection_scale(Inkscape::Selection *selection, gdouble grow)
}
double const times = 1.0 + grow / max_len;
- sp_object_set_scale_relative(selection, center, Geom::Scale(times, times));
+ setScaleRelative(center_, Geom::Scale(times, times));
- DocumentUndo::maybeDone(selection->desktop()->getDocument(),
+ DocumentUndo::maybeDone(document(),
( (grow > 0)
? "selector:scale:larger"
: "selector:scale:smaller" ),
@@ -2242,40 +2214,39 @@ sp_selection_scale(Inkscape::Selection *selection, gdouble grow)
_("Scale"));
}
-void
-sp_selection_scale_screen(Inkscape::Selection *selection, gdouble grow_pixels)
+void ObjectSet::scaleScreen(double grow_pixels)
{
- sp_selection_scale(selection, grow_pixels / selection->desktop()->current_zoom());
+ if(!desktop())
+ return;
+ scale(grow_pixels / desktop()->current_zoom());
}
-void
-sp_selection_scale_times(Inkscape::Selection *selection, gdouble times)
+void ObjectSet::scaleTimes(double times)
{
- if (selection->isEmpty())
+ if (isEmpty())
return;
- Geom::OptRect sel_bbox = selection->visualBounds();
+ Geom::OptRect sel_bbox = visualBounds();
if (!sel_bbox) {
return;
}
- Geom::Point const center(sel_bbox->midpoint());
- sp_object_set_scale_relative(selection, center, Geom::Scale(times, times));
- DocumentUndo::done(selection->desktop()->getDocument(), SP_VERB_CONTEXT_SELECT,
+ Geom::Point const center_(sel_bbox->midpoint());
+ setScaleRelative(center_, Geom::Scale(times, times));
+ DocumentUndo::done(document(), SP_VERB_CONTEXT_SELECT,
_("Scale by whole factor"));
}
-void
-sp_selection_move(Inkscape::Selection *selection, gdouble dx, gdouble dy)
+void ObjectSet::move(double dx, double dy)
{
- if (selection->isEmpty()) {
+ if (isEmpty()) {
return;
}
- sp_object_set_move_relative(selection, dx, dy);
+ moveRelative(dx, dy);
- SPDocument *doc = selection->layers()->getDocument();
+ SPDocument *doc = document();
if (dx == 0) {
DocumentUndo::maybeDone(doc, "selector:move:vertical", SP_VERB_CONTEXT_SELECT,
_("Move vertically"));
@@ -2288,20 +2259,19 @@ sp_selection_move(Inkscape::Selection *selection, gdouble dx, gdouble dy)
}
}
-void
-sp_selection_move_screen(Inkscape::Selection *selection, gdouble dx, gdouble dy)
+void ObjectSet::moveScreen(double dx, double dy)
{
- if (selection->isEmpty() || !selection->desktop()) {
+ if (isEmpty() || !desktop()) {
return;
}
// same as sp_selection_move but divide deltas by zoom factor
- gdouble const zoom = selection->desktop()->current_zoom();
+ gdouble const zoom = desktop()->current_zoom();
gdouble const zdx = dx / zoom;
gdouble const zdy = dy / zoom;
- sp_object_set_move_relative(selection, zdx, zdy);
+ moveRelative(zdx, zdy);
- SPDocument *doc = selection->layers()->getDocument();
+ SPDocument *doc = document();
if (dx == 0) {
DocumentUndo::maybeDone(doc, "selector:move:vertical", SP_VERB_CONTEXT_SELECT,
_("Move vertically by pixels"));
@@ -2531,7 +2501,7 @@ void sp_selection_next_patheffect_param(SPDesktop * dt)
return false;
}*/
-void sp_selection_edit_clip_or_mask(SPDesktop * /*dt*/, bool /*clip*/)
+void ObjectSet::editMask(bool /*clip*/)
{
return;
/*if (!dt) return;
@@ -2590,26 +2560,24 @@ void scroll_to_show_item(SPDesktop *desktop, SPItem *item)
}
}
-
-void sp_selection_clone(SPDesktop *desktop)
+void ObjectSet::clone()
{
- if (desktop == NULL) {
+ if (document() == NULL) {
return;
}
- Inkscape::Selection *selection = desktop->getSelection();
-
- Inkscape::XML::Document *xml_doc = desktop->doc()->getReprDoc();
+ Inkscape::XML::Document *xml_doc = document()->getReprDoc();
// check if something is selected
- if (selection->isEmpty()) {
- desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select an <b>object</b> to clone."));
+ if (isEmpty()) {
+ if(desktop())
+ desktop()->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select an <b>object</b> to clone."));
return;
}
- std::vector<Inkscape::XML::Node*> reprs(selection->xmlNodes().begin(), selection->xmlNodes().end());
+ std::vector<Inkscape::XML::Node*> reprs(xmlNodes().begin(), xmlNodes().end());
- selection->clear();
+ clear();
// sorting items from different parents sorts each parent's subset without possibly mixing them, just what we need
sort(reprs.begin(),reprs.end(),sp_repr_compare_position_bool);
@@ -2637,37 +2605,33 @@ void sp_selection_clone(SPDesktop *desktop)
Inkscape::GC::release(clone);
}
- DocumentUndo::done(desktop->getDocument(), SP_VERB_EDIT_CLONE,
+ DocumentUndo::done(document(), SP_VERB_EDIT_CLONE,
C_("Action", "Clone"));
- selection->setReprList(newsel);
+ setReprList(newsel);
}
-void
-sp_selection_relink(SPDesktop *desktop)
+void ObjectSet::relink()
{
- if (!desktop)
- return;
-
- Inkscape::Selection *selection = desktop->getSelection();
-
- if (selection->isEmpty()) {
- desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>clones</b> to relink."));
+ if (isEmpty()) {
+ if(desktop())
+ desktop()->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>clones</b> to relink."));
return;
}
Inkscape::UI::ClipboardManager *cm = Inkscape::UI::ClipboardManager::get();
const gchar *newid = cm->getFirstObjectID();
if (!newid) {
- desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Copy an <b>object</b> to clipboard to relink clones to."));
+ if(desktop())
+ desktop()->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Copy an <b>object</b> to clipboard to relink clones to."));
return;
}
gchar *newref = g_strdup_printf("#%s", newid);
// Get a copy of current selection.
bool relinked = false;
- auto items= selection->items();
- for (auto i=items.begin();i!=items.end();++i){
+ auto items_= items();
+ for (auto i=items_.begin();i!=items_.end();++i){
SPItem *item = *i;
if (dynamic_cast<SPUse *>(item)) {
@@ -2680,33 +2644,29 @@ sp_selection_relink(SPDesktop *desktop)
g_free(newref);
if (!relinked) {
- desktop->messageStack()->flash(Inkscape::ERROR_MESSAGE, _("<b>No clones to relink</b> in the selection."));
+ if(desktop())
+ desktop()->messageStack()->flash(Inkscape::ERROR_MESSAGE, _("<b>No clones to relink</b> in the selection."));
} else {
- DocumentUndo::done(desktop->getDocument(), SP_VERB_EDIT_UNLINK_CLONE,
+ DocumentUndo::done(document(), SP_VERB_EDIT_UNLINK_CLONE,
_("Relink clone"));
}
}
-void
-sp_selection_unlink(SPDesktop *desktop)
+void ObjectSet::unlink()
{
- if (!desktop)
- return;
-
- Inkscape::Selection *selection = desktop->getSelection();
-
- if (selection->isEmpty()) {
- desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>clones</b> to unlink."));
+ if (isEmpty()) {
+ if(desktop())
+ desktop()->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>clones</b> to unlink."));
return;
}
// Get a copy of current selection.
std::vector<SPItem*> new_select;
bool unlinked = false;
- std::vector<SPItem *> items(selection->items().begin(), selection->items().end());
+ std::vector<SPItem *> items_(items().begin(), items().end());
- for (auto i=items.rbegin();i!=items.rend();++i){
+ for (auto i=items_.rbegin();i!=items_.rend();++i){
SPItem *item = *i;
if (dynamic_cast<SPText *>(item)) {
@@ -2747,34 +2707,30 @@ sp_selection_unlink(SPDesktop *desktop)
}
if (!new_select.empty()) { // set new selection
- selection->clear();
- selection->setList(new_select);
+ clear();
+ setList(new_select);
}
if (!unlinked) {
- desktop->messageStack()->flash(Inkscape::ERROR_MESSAGE, _("<b>No clones to unlink</b> in the selection."));
+ if(desktop())
+ desktop()->messageStack()->flash(Inkscape::ERROR_MESSAGE, _("<b>No clones to unlink</b> in the selection."));
}
- DocumentUndo::done(desktop->getDocument(), SP_VERB_EDIT_UNLINK_CLONE,
+ DocumentUndo::done(document(), SP_VERB_EDIT_UNLINK_CLONE,
_("Unlink clone"));
}
-void
-sp_select_clone_original(SPDesktop *desktop)
+void ObjectSet::cloneOriginal()
{
- if (desktop == NULL)
- return;
-
- Inkscape::Selection *selection = desktop->getSelection();
-
- SPItem *item = selection->singleItem();
+ SPItem *item = singleItem();
gchar const *error = _("Select a <b>clone</b> to go to its original. Select a <b>linked offset</b> to go to its source. Select a <b>text on path</b> to go to the path. Select a <b>flowed text</b> to go to its frame.");
// Check if other than two objects are selected
- auto items= selection->items();
- if (boost::distance(items) != 1 || !item) {
- desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, error);
+ auto items_= items();
+ if (boost::distance(items_) != 1 || !item) {
+ if(desktop())
+ desktop()->messageStack()->flash(Inkscape::WARNING_MESSAGE, error);
return;
}
@@ -2813,18 +2769,21 @@ sp_select_clone_original(SPDesktop *desktop)
}
if (original == NULL) { // it's an object that we don't know what to do with
- desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, error);
+ if(desktop())
+ desktop()->messageStack()->flash(Inkscape::WARNING_MESSAGE, error);
return;
}
if (!original) {
- desktop->messageStack()->flash(Inkscape::ERROR_MESSAGE, _("<b>Cannot find</b> the object to select (orphaned clone, offset, textpath, flowed text?)"));
+ if(desktop())
+ desktop()->messageStack()->flash(Inkscape::ERROR_MESSAGE, _("<b>Cannot find</b> the object to select (orphaned clone, offset, textpath, flowed text?)"));
return;
}
for (SPObject *o = original; o && !dynamic_cast<SPRoot *>(o); o = o->parent) {
if (dynamic_cast<SPDefs *>(o)) {
- desktop->messageStack()->flash(Inkscape::ERROR_MESSAGE, _("The object you're trying to select is <b>not visible</b> (it is in &lt;defs&gt;)"));
+ if(desktop())
+ desktop()->messageStack()->flash(Inkscape::ERROR_MESSAGE, _("The object you're trying to select is <b>not visible</b> (it is in &lt;defs&gt;)"));
return;
}
}
@@ -2835,24 +2794,24 @@ sp_select_clone_original(SPDesktop *desktop)
if (highlight) {
Geom::OptRect a = item->desktopVisualBounds();
Geom::OptRect b = original->desktopVisualBounds();
- if ( a && b ) {
+ if ( a && b && desktop()) {
// draw a flashing line between the objects
SPCurve *curve = new SPCurve();
curve->moveto(a->midpoint());
curve->lineto(b->midpoint());
- SPCanvasItem * canvasitem = sp_canvas_bpath_new(desktop->getTempGroup(), curve);
+ SPCanvasItem * canvasitem = sp_canvas_bpath_new(desktop()->getTempGroup(), curve);
sp_canvas_bpath_set_stroke(SP_CANVAS_BPATH(canvasitem), 0x0000ddff, 1.0, SP_STROKE_LINEJOIN_MITER, SP_STROKE_LINECAP_BUTT, 5, 3);
sp_canvas_item_show(canvasitem);
curve->unref();
- desktop->add_temporary_canvasitem(canvasitem, 1000);
+ desktop()->add_temporary_canvasitem(canvasitem, 1000);
}
}
- selection->clear();
- selection->set(original);
- if (SP_CYCLING == SP_CYCLE_FOCUS) {
- scroll_to_show_item(desktop, original);
+ clear();
+ set(original);
+ if (SP_CYCLING == SP_CYCLE_FOCUS && desktop()) {
+ scroll_to_show_item(desktop(), original);
}
}
}
@@ -2860,18 +2819,13 @@ sp_select_clone_original(SPDesktop *desktop)
/**
* This creates a new path, applies the Original Path LPE, and has it refer to the selection.
*/
-void sp_selection_clone_original_path_lpe(SPDesktop *desktop)
+void ObjectSet::cloneOriginalPathLPE()
{
- if (desktop == NULL) {
- return;
- }
-
- Inkscape::Selection *selection = desktop->getSelection();
Inkscape::SVGOStringStream os;
SPObject * firstItem = NULL;
- auto items= selection->items();
- for (auto i=items.begin();i!=items.end();++i){
+ auto items_= items();
+ for (auto i=items_.begin();i!=items_.end();++i){
if (SP_IS_SHAPE(*i) || SP_IS_TEXT(*i)) {
if (firstItem) {
os << "|";
@@ -2882,7 +2836,7 @@ void sp_selection_clone_original_path_lpe(SPDesktop *desktop)
}
}
if (firstItem) {
- Inkscape::XML::Document *xml_doc = desktop->doc()->getReprDoc();
+ Inkscape::XML::Document *xml_doc = document()->getReprDoc();
SPObject *parent = firstItem->parent;
// create the LPE
@@ -2890,7 +2844,7 @@ void sp_selection_clone_original_path_lpe(SPDesktop *desktop)
{
lpe_repr->setAttribute("effect", "fill_between_many");
lpe_repr->setAttribute("linkedpaths", os.str());
- desktop->doc()->getDefs()->getRepr()->addChild(lpe_repr, NULL); // adds to <defs> and assigns the 'id' attribute
+ document()->getDefs()->getRepr()->addChild(lpe_repr, NULL); // adds to <defs> and assigns the 'id' attribute
}
std::string lpe_id_href = std::string("#") + lpe_repr->attribute("id");
Inkscape::GC::release(lpe_repr);
@@ -2901,44 +2855,44 @@ void sp_selection_clone_original_path_lpe(SPDesktop *desktop)
clone->setAttribute("d", "M 0 0", false);
// add the new clone to the top of the original's parent
parent->appendChildRepr(clone);
- SPObject *clone_obj = desktop->doc()->getObjectById(clone->attribute("id"));
+ SPObject *clone_obj = document()->getObjectById(clone->attribute("id"));
SPLPEItem *clone_lpeitem = dynamic_cast<SPLPEItem *>(clone_obj);
if (clone_lpeitem) {
clone_lpeitem->addPathEffect(lpe_id_href, false);
}
}
- DocumentUndo::done(desktop->getDocument(), SP_VERB_EDIT_CLONE_ORIGINAL_PATH_LPE, _("Fill between many"));
+ DocumentUndo::done(document(), SP_VERB_EDIT_CLONE_ORIGINAL_PATH_LPE, _("Fill between many"));
// select the new object:
- selection->set(clone);
+ set(clone);
Inkscape::GC::release(clone);
} else {
- desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select path(s) to fill."));
+ if(desktop())
+ desktop()->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select path(s) to fill."));
}
}
-void sp_selection_to_marker(SPDesktop *desktop, bool apply)
+void ObjectSet::toMarker(bool apply)
{
// sp_selection_tile has similar code
- if (desktop == NULL) {
+ if (desktop() == NULL) { // TODO: We should not need desktop for that.
+ // Someone get rid of the dt2doc() call.
return;
}
- SPDocument *doc = desktop->getDocument();
+ SPDocument *doc = document();
Inkscape::XML::Document *xml_doc = doc->getReprDoc();
- Inkscape::Selection *selection = desktop->getSelection();
-
// check if something is selected
- if (selection->isEmpty()) {
- desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to convert to marker."));
+ if (isEmpty()) {
+ desktop()->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to convert to marker."));
return;
}
doc->ensureUpToDate();
- Geom::OptRect r = selection->visualBounds();
- boost::optional<Geom::Point> c = selection->center();
+ Geom::OptRect r = visualBounds();
+ boost::optional<Geom::Point> c = center();
if ( !r || !c ) {
return;
}
@@ -2955,12 +2909,10 @@ void sp_selection_to_marker(SPDesktop *desktop, bool apply)
Geom::Point center( *c - corner ); // As defined by rotation center
center[Geom::Y] = -center[Geom::Y];
- std::vector<SPItem*> items(selection->items().begin(), selection->items().end());
-
- //items = g_slist_sort(items, (GCompareFunc) sp_object_compare_position); // Why needed?
+ std::vector<SPItem*> items_(items().begin(), items().end());
// bottommost object, after sorting
- SPObject *parent = items.front()->parent;
+ SPObject *parent = items_.front()->parent;
Geom::Affine parent_transform;
{
@@ -2974,17 +2926,17 @@ void sp_selection_to_marker(SPDesktop *desktop, bool apply)
// Create a list of duplicates, to be pasted inside marker element.
std::vector<Inkscape::XML::Node*> repr_copies;
- for (std::vector<SPItem*>::const_reverse_iterator i=items.rbegin();i!=items.rend();++i){
+ for (std::vector<SPItem*>::const_reverse_iterator i=items_.rbegin();i!=items_.rend();++i){
Inkscape::XML::Node *dup = (*i)->getRepr()->duplicate(xml_doc);
repr_copies.push_back(dup);
}
- Geom::Rect bbox(desktop->dt2doc(r->min()), desktop->dt2doc(r->max()));
+ Geom::Rect bbox(desktop()->dt2doc(r->min()), desktop()->dt2doc(r->max()));
if (apply) {
// Delete objects so that their clones don't get alerted;
// the objects will be restored inside the marker element.
- for (std::vector<SPItem*>::const_iterator i=items.begin();i!=items.end();++i){
+ for (std::vector<SPItem*>::const_iterator i=items_.begin();i!=items_.end();++i){
SPObject *item = *i;
item->deleteObject(false);
}
@@ -3021,18 +2973,15 @@ static void sp_selection_to_guides_recursive(SPItem *item, bool wholegroups) {
}
}
-void sp_selection_to_guides(SPDesktop *desktop)
+void ObjectSet::toGuides()
{
- if (desktop == NULL)
- return;
-
- SPDocument *doc = desktop->getDocument();
- Inkscape::Selection *selection = desktop->getSelection();
+ SPDocument *doc = document();
// we need to copy the list because it gets reset when objects are deleted
- std::vector<SPItem*> items(selection->items().begin(), selection->items().end());
+ std::vector<SPItem*> items_(items().begin(), items().end());
- if (items.empty()) {
- desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to convert to guides."));
+ if (isEmpty()) {
+ if(desktop())
+ desktop()->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to convert to guides."));
return;
}
@@ -3044,13 +2993,13 @@ void sp_selection_to_guides(SPDesktop *desktop)
// and its entry in the selection list is invalid (crash).
// Therefore: first convert all, then delete all.
- for (std::vector<SPItem*>::const_iterator i=items.begin();i!=items.end();++i){
+ for (std::vector<SPItem*>::const_iterator i=items_.begin();i!=items_.end();++i){
sp_selection_to_guides_recursive(*i, wholegroups);
}
if (deleteitems) {
- selection->clear();
- sp_selection_delete_impl(items);
+ clear();
+ sp_selection_delete_impl(items_);
}
DocumentUndo::done(doc, SP_VERB_EDIT_SELECTION_2_GUIDES, _("Objects to guides"));
@@ -3076,38 +3025,34 @@ void sp_selection_to_guides(SPDesktop *desktop)
* For SVG2, set 'refX' 'refY' to object center (with compensating shift in <use>
* transformation).
*/
-void sp_selection_symbol(SPDesktop *desktop, bool /*apply*/ )
+void ObjectSet::toSymbol()
{
- if (desktop == NULL) {
- return;
- }
- SPDocument *doc = desktop->getDocument();
+ SPDocument *doc = document();
Inkscape::XML::Document *xml_doc = doc->getReprDoc();
- Inkscape::Selection *selection = desktop->getSelection();
-
// Check if something is selected.
- if (selection->isEmpty()) {
- desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>objects</b> to convert to symbol."));
+ if (isEmpty()) {
+ if (desktop())
+ desktop()->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>objects</b> to convert to symbol."));
return;
}
doc->ensureUpToDate();
- std::vector<SPObject*> items(selection->objects().begin(), selection->objects().end());
- sort(items.begin(),items.end(),sp_object_compare_position_bool);
+ std::vector<SPObject*> items_(objects().begin(), objects().end());
+ sort(items_.begin(),items_.end(),sp_object_compare_position_bool);
// Keep track of parent, this is where <use> will be inserted.
- Inkscape::XML::Node *the_first_repr = items[0]->getRepr();
+ Inkscape::XML::Node *the_first_repr = items_[0]->getRepr();
Inkscape::XML::Node *the_parent_repr = the_first_repr->parent();
// Find out if we have a single group
bool single_group = false;
SPGroup *the_group = NULL;
Geom::Affine transform;
- if( items.size() == 1 ) {
- SPObject *object = items[0];
+ if( items_.size() == 1 ) {
+ SPObject *object = items_[0];
the_group = dynamic_cast<SPGroup *>(object);
if ( the_group ) {
single_group = true;
@@ -3118,7 +3063,7 @@ void sp_selection_symbol(SPDesktop *desktop, bool /*apply*/ )
if( transform.isTranslation() ) {
// Create new list from group children.
- items = object->childList(false);
+ items_ = object->childList(false);
// Hack: Temporarily set clone compensation to unmoved, so that we can move clone-originals
// without disturbing clones.
@@ -3162,7 +3107,7 @@ void sp_selection_symbol(SPDesktop *desktop, bool /*apply*/ )
}
// Move selected items to new <symbol>
- for (std::vector<SPObject*>::const_reverse_iterator i=items.rbegin();i!=items.rend();++i){
+ for (std::vector<SPObject*>::const_reverse_iterator i=items_.rbegin();i!=items_.rend();++i){
Inkscape::XML::Node *repr = (*i)->getRepr();
repr->parent()->removeChild(repr);
symbol_repr->addChild(repr,NULL);
@@ -3185,7 +3130,7 @@ void sp_selection_symbol(SPDesktop *desktop, bool /*apply*/ )
}
// Change selection to new <use> element.
- selection->set(clone);
+ set(clone);
// Clean up
Inkscape::GC::release(symbol_repr);
@@ -3196,29 +3141,25 @@ void sp_selection_symbol(SPDesktop *desktop, bool /*apply*/ )
/*
* Convert <symbol> to <g>. All <use> elements referencing symbol remain unchanged.
*/
-void sp_selection_unsymbol(SPDesktop *desktop)
+void ObjectSet::unSymbol()
{
- if (desktop == NULL) {
- return;
- }
-
- SPDocument *doc = desktop->getDocument();
+ SPDocument *doc = document();
Inkscape::XML::Document *xml_doc = doc->getReprDoc();
- Inkscape::Selection *selection = desktop->getSelection();
-
// Check if something is selected.
- if (selection->isEmpty()) {
- desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select a <b>symbol</b> to extract objects from."));
+ if (isEmpty()) {
+ if(desktop())
+ desktop()->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select a <b>symbol</b> to extract objects from."));
return;
}
- SPObject* symbol = selection->single();
+ SPObject* symbol = single();
// Make sure we have only one object in selection.
// Require that we really have a <symbol>.
if( symbol == NULL || !dynamic_cast<SPSymbol *>( symbol )) {
- desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select only one <b>symbol</b> in Symbol dialog to convert to group."));
+ if(desktop())
+ desktop()->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select only one <b>symbol</b> in Symbol dialog to convert to group."));
return;
}
@@ -3226,7 +3167,7 @@ void sp_selection_unsymbol(SPDesktop *desktop)
// Create new <g> and insert in current layer
Inkscape::XML::Node *group = xml_doc->createElement("svg:g");
- desktop->currentLayer()->getRepr()->appendChild(group);
+ symbol->parent->getRepr()->appendChild(group);
// Move all children of symbol to group
std::vector<SPObject*> children = symbol->childList(false);
@@ -3268,8 +3209,8 @@ void sp_selection_unsymbol(SPDesktop *desktop)
symbol->deleteObject(true);
// Change selection to new <g> element.
- SPItem *group_item = static_cast<SPItem *>(desktop->getDocument()->getObjectByRepr(group));
- selection->set(group_item);
+ SPItem *group_item = static_cast<SPItem *>(document()->getObjectByRepr(group));
+ set(group_item);
// Clean up
Inkscape::GC::release(group);
@@ -3277,27 +3218,24 @@ void sp_selection_unsymbol(SPDesktop *desktop)
DocumentUndo::done(doc, SP_VERB_EDIT_UNSYMBOL, _("Group from symbol"));
}
-void
-sp_selection_tile(SPDesktop *desktop, bool apply)
+void ObjectSet::tile(bool apply)
{
- // sp_selection_to_marker has similar code
- if (desktop == NULL) {
+ // toMarker has similar code
+ if (desktop() == NULL) { //same remark as in toMarker: no good reason to have this.
return;
}
- SPDocument *doc = desktop->getDocument();
+ SPDocument *doc = document();
Inkscape::XML::Document *xml_doc = doc->getReprDoc();
- Inkscape::Selection *selection = desktop->getSelection();
-
// check if something is selected
- if (selection->isEmpty()) {
- desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to convert to pattern."));
+ if (isEmpty()) {
+ desktop()->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to convert to pattern."));
return;
}
doc->ensureUpToDate();
- Geom::OptRect r = selection->visualBounds();
+ Geom::OptRect r = visualBounds();
if ( !r ) {
return;
}
@@ -3307,12 +3245,12 @@ sp_selection_tile(SPDesktop *desktop, bool apply)
move_p[Geom::Y] = -move_p[Geom::Y];
Geom::Affine move = Geom::Affine(Geom::Translate(move_p));
- std::vector<SPItem*> items(selection->items().begin(), selection->items().end());
+ std::vector<SPItem*> items_(items().begin(), items().end());
- sort(items.begin(),items.end(),sp_object_compare_position_bool);
+ sort(items_.begin(),items_.end(),sp_object_compare_position_bool);
// bottommost object, after sorting
- SPObject *parent = items[0]->parent;
+ SPObject *parent = items_[0]->parent;
Geom::Affine parent_transform;
@@ -3326,20 +3264,20 @@ sp_selection_tile(SPDesktop *desktop, bool apply)
}
// remember the position of the first item
- gint pos = items[0]->getRepr()->position();
+ gint pos = items_[0]->getRepr()->position();
// create a list of duplicates
std::vector<Inkscape::XML::Node*> repr_copies;
- for (std::vector<SPItem*>::const_iterator i=items.begin();i!=items.end();++i){
+ for (std::vector<SPItem*>::const_iterator i=items_.begin();i!=items_.end();++i){
Inkscape::XML::Node *dup = (*i)->getRepr()->duplicate(xml_doc);
repr_copies.push_back(dup);
}
- Geom::Rect bbox(desktop->dt2doc(r->min()), desktop->dt2doc(r->max()));
+ Geom::Rect bbox(desktop()->dt2doc(r->min()), desktop()->dt2doc(r->max()));
if (apply) {
// delete objects so that their clones don't get alerted; this object will be restored shortly
- for (std::vector<SPItem*>::const_iterator i=items.begin();i!=items.end();++i){
+ for (std::vector<SPItem*>::const_iterator i=items_.begin();i!=items_.end();++i){
SPObject *item = *i;
item->deleteObject(false);
}
@@ -3353,7 +3291,7 @@ sp_selection_tile(SPDesktop *desktop, bool apply)
prefs->setInt("/options/clonecompensation/value", SP_CLONE_COMPENSATION_UNMOVED);
gchar const *pat_id = SPPattern::produce(repr_copies, bbox, doc,
- ( Geom::Affine(Geom::Translate(desktop->dt2doc(Geom::Point(r->min()[Geom::X],
+ ( Geom::Affine(Geom::Translate(desktop()->dt2doc(Geom::Point(r->min()[Geom::X],
r->max()[Geom::Y]))))
* parent_transform.inverse() ),
parent_transform * move);
@@ -3378,12 +3316,12 @@ sp_selection_tile(SPDesktop *desktop, bool apply)
// restore parent and position
parent->getRepr()->appendChild(rect);
rect->setPosition(pos > 0 ? pos : 0);
- SPItem *rectangle = static_cast<SPItem *>(desktop->getDocument()->getObjectByRepr(rect));
+ SPItem *rectangle = static_cast<SPItem *>(document()->getObjectByRepr(rect));
Inkscape::GC::release(rect);
- selection->clear();
- selection->set(rectangle);
+ clear();
+ set(rectangle);
}
@@ -3391,20 +3329,16 @@ sp_selection_tile(SPDesktop *desktop, bool apply)
_("Objects to pattern"));
}
-void sp_selection_untile(SPDesktop *desktop)
+void ObjectSet::untile()
{
- if (desktop == NULL) {
- return;
- }
- SPDocument *doc = desktop->getDocument();
+ SPDocument *doc = document();
Inkscape::XML::Document *xml_doc = doc->getReprDoc();
- Inkscape::Selection *selection = desktop->getSelection();
-
// check if something is selected
- if (selection->isEmpty()) {
- desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select an <b>object with pattern fill</b> to extract objects from."));
+ if (isEmpty()) {
+ if(desktop())
+ desktop()->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select an <b>object with pattern fill</b> to extract objects from."));
return;
}
@@ -3412,8 +3346,8 @@ void sp_selection_untile(SPDesktop *desktop)
bool did = false;
- std::vector<SPItem*> items(selection->items().begin(), selection->items().end());
- for (std::vector<SPItem*>::const_reverse_iterator i=items.rbegin();i!=items.rend();++i){
+ std::vector<SPItem*> items_(items().begin(), items().end());
+ for (std::vector<SPItem*>::const_reverse_iterator i=items_.rbegin();i!=items_.rend();++i){
SPItem *item = *i;
SPStyle *style = item->style;
@@ -3438,7 +3372,7 @@ void sp_selection_untile(SPDesktop *desktop)
for (auto& child: pattern->children) {
if (dynamic_cast<SPItem *>(&child)) {
Inkscape::XML::Node *copy = child.getRepr()->duplicate(xml_doc);
- SPItem *i = dynamic_cast<SPItem *>(desktop->currentLayer()->appendChildRepr(copy));
+ SPItem *i = dynamic_cast<SPItem *>(item->parent->appendChildRepr(copy));
// FIXME: relink clones to the new canvas objects
// use SPObject::setid when mental finishes it to steal ids of
@@ -3463,21 +3397,22 @@ void sp_selection_untile(SPDesktop *desktop)
}
if (!did) {
- desktop->messageStack()->flash(Inkscape::ERROR_MESSAGE, _("<b>No pattern fills</b> in the selection."));
+ if(desktop())
+ desktop()->messageStack()->flash(Inkscape::ERROR_MESSAGE, _("<b>No pattern fills</b> in the selection."));
} else {
- DocumentUndo::done(desktop->getDocument(), SP_VERB_EDIT_UNTILE,
+ DocumentUndo::done(document(), SP_VERB_EDIT_UNTILE,
_("Pattern to objects"));
- selection->setList(new_select);
+ setList(new_select);
}
}
-void sp_object_set_get_export_hints(ObjectSet *set, Glib::ustring &filename, float *xdpi, float *ydpi)
+void ObjectSet::getExportHints(Glib::ustring &filename, float *xdpi, float *ydpi)
{
- if (set->isEmpty()) {
+ if (isEmpty()) {
return;
}
- auto reprlst = set->xmlNodes();
+ auto reprlst = xmlNodes();
bool filename_search = TRUE;
bool xdpi_search = TRUE;
bool ydpi_search = TRUE;
@@ -3539,40 +3474,38 @@ void sp_document_get_export_hints(SPDocument *doc, Glib::ustring &filename, floa
}
}
-void sp_selection_create_bitmap_copy(SPDesktop *desktop)
+void ObjectSet::createBitmapCopy()
{
- if (desktop == NULL) {
- return;
- }
- SPDocument *document = desktop->getDocument();
- Inkscape::XML::Document *xml_doc = document->getReprDoc();
-
- Inkscape::Selection *selection = desktop->getSelection();
+ SPDocument *doc = document();
+ Inkscape::XML::Document *xml_doc = doc->getReprDoc();
// check if something is selected
- if (selection->isEmpty()) {
- desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to make a bitmap copy."));
+ if (isEmpty()) {
+ if(desktop())
+ desktop()->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to make a bitmap copy."));
return;
}
-
- desktop->messageStack()->flash(Inkscape::IMMEDIATE_MESSAGE, _("Rendering bitmap..."));
- // set "busy" cursor
- desktop->setWaitingCursor();
+ if(desktop()){
+ desktop()->messageStack()->flash(Inkscape::IMMEDIATE_MESSAGE, _("Rendering bitmap..."));
+ // set "busy" cursor
+ desktop()->setWaitingCursor();
+ }
// Get the bounding box of the selection
- document->ensureUpToDate();
- Geom::OptRect bbox = selection->visualBounds();
+ doc->ensureUpToDate();
+ Geom::OptRect bbox = visualBounds();
if (!bbox) {
- desktop->clearWaitingCursor();
+ if(desktop())
+ desktop()->clearWaitingCursor();
return; // exceptional situation, so not bother with a translatable error message, just quit quietly
}
// List of the items to show; all others will be hidden
- std::vector<SPItem*> items(selection->items().begin(), selection->items().end());
+ std::vector<SPItem*> items_(items().begin(), items().end());
// Sort items so that the topmost comes last
- sort(items.begin(),items.end(),sp_item_repr_compare_position_bool);
+ sort(items_.begin(),items_.end(),sp_item_repr_compare_position_bool);
// Generate a random value from the current time (you may create bitmap from the same object(s)
// multiple times, and this is done so that they don't clash)
@@ -3582,8 +3515,8 @@ void sp_selection_create_bitmap_copy(SPDesktop *desktop)
// Create the filename.
gchar *const basename = g_strdup_printf("%s-%s-%u.png",
- document->getName(),
- items[0]->getRepr()->attribute("id"),
+ doc->getName(),
+ items_[0]->getRepr()->attribute("id"),
current);
// Imagemagick is known not to handle spaces in filenames, so we replace anything but letters,
// digits, and a few other chars, with "_"
@@ -3591,8 +3524,8 @@ void sp_selection_create_bitmap_copy(SPDesktop *desktop)
// Build the complete path by adding document base dir, if set, otherwise home dir
gchar *directory = NULL;
- if ( document->getURI() ) {
- directory = g_path_get_dirname( document->getURI() );
+ if ( doc->getURI() ) {
+ directory = g_path_get_dirname( doc->getURI() );
}
if (directory == NULL) {
directory = INKSCAPE.homedir_path(NULL);
@@ -3603,8 +3536,8 @@ void sp_selection_create_bitmap_copy(SPDesktop *desktop)
//g_print("%s\n", filepath);
// Remember parent and z-order of the topmost one
- gint pos = items.back()->getRepr()->position();
- SPObject *parent_object = items.back()->parent;
+ gint pos = items_.back()->getRepr()->position();
+ SPObject *parent_object = items_.back()->parent;
Inkscape::XML::Node *parent = parent_object->getRepr();
// Calculate resolution
@@ -3622,12 +3555,12 @@ void sp_selection_create_bitmap_copy(SPDesktop *desktop)
float hint_xdpi = 0, hint_ydpi = 0;
Glib::ustring hint_filename;
// take resolution hint from the selected objects
- sp_object_set_get_export_hints(selection, hint_filename, &hint_xdpi, &hint_ydpi);
+ getExportHints(hint_filename, &hint_xdpi, &hint_ydpi);
if (hint_xdpi != 0) {
res = hint_xdpi;
} else {
// take resolution hint from the document
- sp_document_get_export_hints(document, hint_filename, &hint_xdpi, &hint_ydpi);
+ sp_document_get_export_hints(doc, hint_filename, &hint_xdpi, &hint_ydpi);
if (hint_xdpi != 0) {
res = hint_xdpi;
} else {
@@ -3687,14 +3620,14 @@ void sp_selection_create_bitmap_copy(SPDesktop *desktop)
// TODO: avoid roundtrip via file
// Do the export
- sp_export_png_file(document, filepath,
+ sp_export_png_file(doc, filepath,
bbox->min()[Geom::X], bbox->min()[Geom::Y],
bbox->max()[Geom::X], bbox->max()[Geom::Y],
width, height, res, res,
(guint32) 0xffffff00,
NULL, NULL,
true, /*bool force_overwrite,*/
- items);
+ items_);
// Run filter, if any
if (run) {
@@ -3732,19 +3665,19 @@ void sp_selection_create_bitmap_copy(SPDesktop *desktop)
repr->setPosition(pos > 0 ? pos + 1 : 1);
// Set selection to the new image
- selection->clear();
- selection->add(repr);
+ clear();
+ add(repr);
// Clean up
Inkscape::GC::release(repr);
g_object_unref(pb);
// Complete undoable transaction
- DocumentUndo::done(document, SP_VERB_SELECTION_CREATE_BITMAP,
+ DocumentUndo::done(doc, SP_VERB_SELECTION_CREATE_BITMAP,
_("Create bitmap"));
}
-
- desktop->clearWaitingCursor();
+ if(desktop())
+ desktop()->clearWaitingCursor();
g_free(basename);
g_free(filepath);
@@ -3756,25 +3689,22 @@ void sp_selection_create_bitmap_copy(SPDesktop *desktop)
* to clip the entire group using a few <use>s and generally irritating me.
*/
-void sp_selection_set_clipgroup(SPDesktop *desktop)
+void ObjectSet::setClipGroup()
{
- if (desktop == NULL) {
- return;
- }
- SPDocument* doc = desktop->getDocument();
+ SPDocument* doc = document();
Inkscape::XML::Document *xml_doc = doc->getReprDoc();
- Inkscape::Selection *selection = desktop->getSelection();
- if (selection->isEmpty()) {
- desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to create clippath or mask from."));
+ if (isEmpty()) {
+ if(desktop())
+ desktop()->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to create clippath or mask from."));
return;
}
- std::vector<Inkscape::XML::Node*> p(selection->xmlNodes().begin(), selection->xmlNodes().end());
+ std::vector<Inkscape::XML::Node*> p(xmlNodes().begin(), xmlNodes().end());
sort(p.begin(),p.end(),sp_repr_compare_position_bool);
- selection->clear();
+ clear();
int topmost = (p.back())->position();
Inkscape::XML::Node *topmost_parent = (p.back())->parent();
@@ -3851,7 +3781,7 @@ void sp_selection_set_clipgroup(SPDesktop *desktop)
Inkscape::GC::release(clone);
- selection->set(outer);
+ set(outer);
DocumentUndo::done(doc, SP_VERB_OBJECT_SET_CLIPPATH, _("Create Clip Group"));
}
@@ -3864,30 +3794,29 @@ void sp_selection_set_clipgroup(SPDesktop *desktop)
* If \a apply_clip_path parameter is true, clipPath is created, otherwise mask
*
*/
-void sp_selection_set_mask(SPDesktop *desktop, bool apply_clip_path, bool apply_to_layer, bool skip_undo)
+ void ObjectSet::setMask(bool apply_clip_path, bool apply_to_layer, bool skip_undo)
{
- if (desktop == NULL) {
+ if(!desktop() && apply_to_layer)
return;
- }
- SPDocument *doc = desktop->getDocument();
+ SPDocument *doc = document();
Inkscape::XML::Document *xml_doc = doc->getReprDoc();
- Inkscape::Selection *selection = desktop->getSelection();
-
// check if something is selected
- bool is_empty = selection->isEmpty();
+ bool is_empty = isEmpty();
if ( apply_to_layer && is_empty) {
- desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to create clippath or mask from."));
+ if(desktop())
+ desktop()->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to create clippath or mask from."));
return;
- } else if (!apply_to_layer && ( is_empty || boost::distance(selection->items())==1 )) {
- desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select mask object and <b>object(s)</b> to apply clippath or mask to."));
+ } else if (!apply_to_layer && ( is_empty || boost::distance(items())==1 )) {
+ if(desktop())
+ desktop()->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select mask object and <b>object(s)</b> to apply clippath or mask to."));
return;
}
// FIXME: temporary patch to prevent crash!
// Remove this when bboxes are fixed to not blow up on an item clipped/masked with its own clone
- bool clone_with_original = object_set_contains_both_clone_and_original(selection);
+ bool clone_with_original = object_set_contains_both_clone_and_original(this);
if (clone_with_original) {
return; // in this version, you cannot clip/mask an object with its own clone
}
@@ -3895,12 +3824,12 @@ void sp_selection_set_mask(SPDesktop *desktop, bool apply_clip_path, bool apply_
doc->ensureUpToDate();
- std::vector<SPItem*> items(selection->items().begin(), selection->items().end());
+ std::vector<SPItem*> items_(items().begin(), items().end());
- sort(items.begin(),items.end(),sp_object_compare_position_bool);
+ sort(items_.begin(),items_.end(),sp_object_compare_position_bool);
// See lp bug #542004
- selection->clear();
+ clear();
// create a list of duplicates
std::vector<Inkscape::XML::Node*> mask_items;
@@ -3915,12 +3844,12 @@ void sp_selection_set_mask(SPDesktop *desktop, bool apply_clip_path, bool apply_
if (apply_to_layer) {
// all selected items are used for mask, which is applied to a layer
- apply_to_items.push_back(SP_ITEM(desktop->currentLayer()));
+ apply_to_items.push_back(SP_ITEM(desktop()->currentLayer()));
}
- for (std::vector<SPItem*>::const_iterator i=items.begin();i!=items.end();++i) {
- if((!topmost && !apply_to_layer && *i == items.front())
- || (topmost && !apply_to_layer && *i == items.back())
+ for (std::vector<SPItem*>::const_iterator i=items_.begin();i!=items_.end();++i) {
+ if((!topmost && !apply_to_layer && *i == items_.front())
+ || (topmost && !apply_to_layer && *i == items_.back())
|| apply_to_layer){
Geom::Affine oldtr=(*i)->transform;
@@ -3942,17 +3871,17 @@ void sp_selection_set_mask(SPDesktop *desktop, bool apply_clip_path, bool apply_
}
}
- items.clear();
+ items_.clear();
if (grouping == PREFS_MASKOBJECT_GROUPING_ALL) {
// group all those objects into one group
// and apply mask to that
- ObjectSet* set = new ObjectSet(selection->desktop());
+ ObjectSet* set = new ObjectSet(document());
set->add(apply_to_items.begin(), apply_to_items.end());
items_to_select.clear();
- Inkscape::XML::Node *group = sp_object_set_group(set);
+ Inkscape::XML::Node *group = set->group();
group->setAttribute("inkscape:groupmode", "maskhelper");
// apply clip/mask only to newly created group
@@ -4018,10 +3947,10 @@ void sp_selection_set_mask(SPDesktop *desktop, bool apply_clip_path, bool apply_
for (std::vector<SPItem*>::const_iterator i = items_to_delete.begin(); i != items_to_delete.end(); ++i) {
SPObject *item = reinterpret_cast<SPObject*>(*i);
item->deleteObject(false);
- items_to_select.erase(remove(items_to_select.begin(), items_to_select.end(), item), items_to_select.end());
+ items_to_select.erase(std::remove(items_to_select.begin(), items_to_select.end(), item), items_to_select.end());
}
- selection->addList(items_to_select);
+ addList(items_to_select);
if (!skip_undo) {
if (apply_clip_path) {
DocumentUndo::done(doc, SP_VERB_OBJECT_SET_CLIPPATH, _("Set clipping path"));
@@ -4031,18 +3960,14 @@ void sp_selection_set_mask(SPDesktop *desktop, bool apply_clip_path, bool apply_
}
}
-void sp_selection_unset_mask(SPDesktop *desktop, bool apply_clip_path) {
- if (desktop == NULL) {
- return;
- }
-
- SPDocument *doc = desktop->getDocument();
+void ObjectSet::unsetMask(bool apply_clip_path) {
+ SPDocument *doc = document();
Inkscape::XML::Document *xml_doc = doc->getReprDoc();
- Inkscape::Selection *selection = desktop->getSelection();
// check if something is selected
- if (selection->isEmpty()) {
- desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to remove clippath or mask from."));
+ if (isEmpty()) {
+ if(desktop())
+ desktop()->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to remove clippath or mask from."));
return;
}
@@ -4054,16 +3979,16 @@ void sp_selection_unset_mask(SPDesktop *desktop, bool apply_clip_path) {
gchar const *attributeName = apply_clip_path ? "clip-path" : "mask";
std::map<SPObject*,SPItem*> referenced_objects;
- std::vector<SPItem*> items(selection->items().begin(), selection->items().end());
- selection->clear();
+ std::vector<SPItem*> items_(items().begin(), items().end());
+ clear();
GSList *items_to_ungroup = NULL;
- std::vector<SPItem*> items_to_select(items);
+ std::vector<SPItem*> items_to_select(items_);
// SPObject* refers to a group containing the clipped path or mask itself,
// whereas SPItem* refers to the item being clipped or masked
- for (std::vector<SPItem*>::const_iterator i=items.begin();i!=items.end();++i){
+ for (std::vector<SPItem*>::const_iterator i=items_.begin();i!=items_.end();++i){
if (remove_original) {
// remember referenced mask/clippath, so orphaned masks can be moved back to document
SPItem *item = *i;
@@ -4127,7 +4052,7 @@ void sp_selection_unset_mask(SPDesktop *desktop, bool apply_clip_path) {
parent->appendChild(repr);
repr->setPosition((pos + 1) > 0 ? (pos + 1) : 0);
- SPItem *mask_item = static_cast<SPItem *>(desktop->getDocument()->getObjectByRepr(repr));
+ SPItem *mask_item = static_cast<SPItem *>(document()->getObjectByRepr(repr));
items_to_select.push_back(mask_item);
// transform mask, so it is moved the same spot where mask was applied
@@ -4143,7 +4068,7 @@ void sp_selection_unset_mask(SPDesktop *desktop, bool apply_clip_path) {
for (GSList *i = items_to_ungroup ; NULL != i ; i = i->next) {
SPGroup *group = dynamic_cast<SPGroup *>(static_cast<SPObject *>(i->data));
if (group) {
- items_to_select.erase(remove(items_to_select.begin(), items_to_select.end(), group), items_to_select.end());
+ items_to_select.erase(std::remove(items_to_select.begin(), items_to_select.end(), group), items_to_select.end());
std::vector<SPItem*> children;
sp_item_group_ungroup(group, children, false);
items_to_select.insert(items_to_select.end(),children.rbegin(),children.rend());
@@ -4155,7 +4080,7 @@ void sp_selection_unset_mask(SPDesktop *desktop, bool apply_clip_path) {
g_slist_free(items_to_ungroup);
// rebuild selection
- selection->addList(items_to_select);
+ addList(items_to_select);
if (apply_clip_path) {
DocumentUndo::done(doc, SP_VERB_OBJECT_UNSET_CLIPPATH, _("Release clipping path"));
diff --git a/src/selection-chemistry.h b/src/selection-chemistry.h
index 72e4acc66..969a6e35a 100644
--- a/src/selection-chemistry.h
+++ b/src/selection-chemistry.h
@@ -51,8 +51,6 @@ namespace LivePathEffect {
};
} // namespace Inkscape
-void sp_selection_delete(SPDesktop *desktop);
-void sp_selection_duplicate(SPDesktop *desktop, bool suppressDone = false, bool duplicateLayer = false);
void sp_edit_clear_all(Inkscape::Selection *selection);
void sp_edit_select_all(SPDesktop *desktop);
@@ -60,82 +58,20 @@ void sp_edit_select_all_in_all_layers (SPDesktop *desktop);
void sp_edit_invert (SPDesktop *desktop);
void sp_edit_invert_in_all_layers (SPDesktop *desktop);
-void sp_selection_clone(SPDesktop *desktop);
-void sp_selection_unlink(SPDesktop *desktop);
-void sp_selection_relink(SPDesktop *desktop);
-void sp_select_clone_original(SPDesktop *desktop);
-void sp_selection_clone_original_path_lpe(SPDesktop *desktop);
-
-void sp_selection_to_marker(SPDesktop *desktop, bool apply = true);
-void sp_selection_to_guides(SPDesktop *desktop);
-
-void sp_selection_symbol(SPDesktop *desktop, bool apply = true);
-void sp_selection_unsymbol(SPDesktop *desktop);
-
-void sp_selection_tile(SPDesktop *desktop, bool apply = true);
-void sp_selection_untile(SPDesktop *desktop);
-
-void sp_selection_group(Inkscape::Selection *selection, SPDesktop *desktop);
-void sp_selection_ungroup(Inkscape::Selection *selection, SPDesktop *desktop);
-void sp_selection_ungroup_pop_selection(Inkscape::Selection *selection, SPDesktop *desktop);
-
-void sp_object_set_raise(Inkscape::ObjectSet *set);
-void sp_object_set_raise_to_top(Inkscape::ObjectSet *set);
-void sp_object_set_lower(Inkscape::ObjectSet *set);
-void sp_object_set_lower_to_bottom(Inkscape::ObjectSet *set);
-
-void sp_selection_raise(Inkscape::Selection *selection, SPDesktop *desktop);
-void sp_selection_raise_to_top(Inkscape::Selection *selection, SPDesktop *desktop, bool skip_undo = false);
-void sp_selection_lower(Inkscape::Selection *selection, SPDesktop *desktop);
-void sp_selection_lower_to_bottom(Inkscape::Selection *selection, SPDesktop *desktop, bool skip_undo = false);
SPCSSAttr *take_style_from_item (SPObject *object);
-void sp_selection_cut(SPDesktop *desktop);
-void sp_selection_copy(SPDesktop *desktop);
void sp_selection_paste(SPDesktop *desktop, bool in_place);
-void sp_selection_paste_style(SPDesktop *desktop);
-void sp_selection_paste_livepatheffect(SPDesktop *desktop);
-void sp_selection_remove_livepatheffect(SPDesktop *desktop);
-
-void sp_selection_remove_filter(SPDesktop *desktop);
void sp_set_style_clipboard (SPCSSAttr *css);
-void sp_selection_paste_size(SPDesktop *desktop, bool apply_x, bool apply_y);
-void sp_selection_paste_size_separately(SPDesktop *desktop, bool apply_x, bool apply_y);
-
-void sp_selection_to_next_layer( SPDesktop *desktop, bool suppressDone = false );
-void sp_selection_to_prev_layer( SPDesktop *desktop, bool suppressDone = false );
-void sp_selection_to_layer( SPDesktop *desktop, SPObject *layer, bool suppressDone = false );
-
-void sp_object_set_apply_affine(Inkscape::ObjectSet *set, Geom::Affine const &affine, bool set_i2d = true,
- bool compensate = true, bool adjust_transf_center = true);
-void sp_object_set_remove_transform(SPDesktop *desktop);
-void sp_object_set_scale_absolute(Inkscape::ObjectSet *set, double x0, double x1, double y0, double y1);
-void sp_object_set_scale_relative(Inkscape::ObjectSet *set, Geom::Point const &align, Geom::Scale const &scale);
-void sp_object_set_rotate_relative(Inkscape::ObjectSet *set, Geom::Point const &center, double angle);
-void sp_object_set_skew_relative(Inkscape::ObjectSet *set, Geom::Point const &align, double dx, double dy);
-void sp_object_set_move_relative(Inkscape::ObjectSet *set, Geom::Point const &move, bool compensate = true);
-void sp_object_set_move_relative(Inkscape::ObjectSet *set, double dx, double dy);
-
-void sp_selection_rotate_90 (SPDesktop *desktop, bool ccw);
-void sp_selection_rotate (Inkscape::Selection *selection, double angle);
-void sp_selection_rotate_screen (Inkscape::Selection *selection, double angle);
-
-void sp_selection_scale (Inkscape::Selection *selection, double grow);
-void sp_selection_scale_screen (Inkscape::Selection *selection, double grow_pixels);
-void sp_selection_scale_times (Inkscape::Selection *selection, double times);
-
-void sp_selection_move (Inkscape::Selection *selection, double dx, double dy);
-void sp_selection_move_screen (Inkscape::Selection *selection, double dx, double dy);
void sp_selection_item_next (SPDesktop *desktop);
void sp_selection_item_prev (SPDesktop *desktop);
void sp_selection_next_patheffect_param(SPDesktop * dt);
-void sp_selection_edit_clip_or_mask(SPDesktop * dt, bool clip);
+//void sp_selection_edit_clip_or_mask(SPDesktop * dt, bool clip);
enum SPSelectStrokeStyleType {
SP_FILL_COLOR = 0,
@@ -158,15 +94,8 @@ void scroll_to_show_item(SPDesktop *desktop, SPItem *item);
void sp_undo (SPDesktop *desktop, SPDocument *doc);
void sp_redo (SPDesktop *desktop, SPDocument *doc);
-void sp_object_set_get_export_hints(Inkscape::ObjectSet *set, Glib::ustring &filename, float *xdpi, float *ydpi);
void sp_document_get_export_hints (SPDocument * doc, Glib::ustring &filename, float *xdpi, float *ydpi);
-void sp_selection_create_bitmap_copy (SPDesktop *desktop);
-
-void sp_selection_set_clipgroup(SPDesktop *desktop);
-void sp_selection_set_mask(SPDesktop *desktop, bool apply_clip_path, bool apply_to_layer, bool skip_undo = false);
-void sp_selection_unset_mask(SPDesktop *desktop, bool apply_clip_path);
-
bool fit_canvas_to_selection(SPDesktop *, bool with_margins = false);
void verb_fit_canvas_to_selection(SPDesktop *);
bool fit_canvas_to_drawing(SPDocument *, bool with_margins = false);
diff --git a/src/selection.cpp b/src/selection.cpp
index bdd4f0dc7..65e0e1e97 100644
--- a/src/selection.cpp
+++ b/src/selection.cpp
@@ -113,24 +113,6 @@ SPObject *Selection::activeContext() {
return _layers->currentLayer();
}
-void Selection::set(SPObject *object, bool persist_selection_context) {
- ObjectSet::set(object);
- _emitChanged(persist_selection_context);
-}
-
-void Selection::setReprList(std::vector<XML::Node*> const &list) {
- clear();
-
- for (std::vector<XML::Node*>::const_reverse_iterator iter = list.rbegin(); iter != list.rend(); ++iter) {
- SPObject *obj = _objectForXMLNode(*iter);
- if (obj) {
- add(obj);
- }
- }
-
- _emitChanged();
-}
-
std::vector<Inkscape::SnapCandidatePoint> Selection::getSnapPoints(SnapPreferences const *snapprefs) const {
std::vector<Inkscape::SnapCandidatePoint> p;
diff --git a/src/selection.h b/src/selection.h
index cf00ba1f4..54826970f 100644
--- a/src/selection.h
+++ b/src/selection.h
@@ -59,6 +59,7 @@ class Selection : public Inkscape::GC::Managed<>,
public Inkscape::GC::Anchored,
public ObjectSet
{
+friend class ObjectSet;
public:
/**
* Constructs an selection object, bound to a particular
@@ -98,12 +99,7 @@ public:
add(_objectForXMLNode(repr));
}
- /**
- * Set the selection to a single specific object.
- *
- * @param obj the object to select
- */
- void set(SPObject *obj, bool persist_selection_context = false);
+ using ObjectSet::set;
/**
* Set the selection to an XML node's SPObject.
@@ -127,14 +123,6 @@ public:
remove(_objectForXMLNode(repr));
}
- /**
- * Clears the selection and selects the specified objects.
- *
- * @param repr a list of xml nodes for the items to select
- */
- void setReprList(std::vector<XML::Node*> const &reprs);
-
-
using ObjectSet::includes;
/**
diff --git a/src/seltrans.cpp b/src/seltrans.cpp
index 7b17a294a..7a2a3777f 100644
--- a/src/seltrans.cpp
+++ b/src/seltrans.cpp
@@ -439,7 +439,7 @@ void Inkscape::SelTrans::ungrab()
if (!_current_relative_affine.isIdentity()) { // we can have a identity affine
// when trying to stretch a perfectly vertical line in horizontal direction, which will not be allowed by the handles;
- sp_object_set_apply_affine(selection, _current_relative_affine, (_show == SHOW_OUTLINE) ? true : false);
+ selection->applyAffine(_current_relative_affine, (_show == SHOW_OUTLINE) ? true : false);
if (_center) {
*_center *= _current_relative_affine;
_center_is_set = true;
diff --git a/src/ui/clipboard.cpp b/src/ui/clipboard.cpp
index 66b13ed9d..0a671cc8a 100644
--- a/src/ui/clipboard.cpp
+++ b/src/ui/clipboard.cpp
@@ -74,6 +74,7 @@
#include "svg/svg-color.h"
#include "sp-namedview.h"
#include "persp3d.h"
+#include "object-set.h"
/// Made up mimetype to represent Gdk::Pixbuf clipboard contents.
#define CLIPBOARD_GDK_PIXBUF_TARGET "image/x-gdk-pixbuf"
@@ -93,13 +94,13 @@ namespace UI {
*/
class ClipboardManagerImpl : public ClipboardManager {
public:
- virtual void copy(SPDesktop *desktop);
+ virtual void copy(ObjectSet *set);
virtual void copyPathParameter(Inkscape::LivePathEffect::PathParam *);
virtual void copySymbol(Inkscape::XML::Node* symbol, gchar const* style, bool user_symbol);
virtual bool paste(SPDesktop *desktop, bool in_place);
- virtual bool pasteStyle(SPDesktop *desktop);
- virtual bool pasteSize(SPDesktop *desktop, bool separately, bool apply_x, bool apply_y);
- virtual bool pastePathEffect(SPDesktop *desktop);
+ virtual bool pasteStyle(ObjectSet *set);
+ virtual bool pasteSize(ObjectSet *set, bool separately, bool apply_x, bool apply_y);
+ virtual bool pastePathEffect(ObjectSet *set);
virtual Glib::ustring getPathParameter(SPDesktop* desktop);
virtual Glib::ustring getShapeOrTextObjectId(SPDesktop *desktop);
virtual const gchar *getFirstObjectID();
@@ -108,7 +109,7 @@ public:
~ClipboardManagerImpl();
private:
- void _copySelection(Inkscape::Selection *);
+ void _copySelection(ObjectSet *);
void _copyUsedDefs(SPItem *);
void _copyGradient(SPGradient *);
void _copyPattern(SPPattern *);
@@ -183,76 +184,74 @@ ClipboardManagerImpl::~ClipboardManagerImpl() {}
/**
* Copy selection contents to the clipboard.
*/
-void ClipboardManagerImpl::copy(SPDesktop *desktop)
+void ClipboardManagerImpl::copy(ObjectSet *set)
{
- if ( desktop == NULL ) {
- return;
- }
- Inkscape::Selection *selection = desktop->getSelection();
+ if ( set->desktop() ) {
+ SPDesktop *desktop = set->desktop();
+
+ // Special case for when the gradient dragger is active - copies gradient color
+ if (desktop->event_context->get_drag()) {
+ GrDrag *drag = desktop->event_context->get_drag();
+ if (drag->hasSelection()) {
+ guint32 col = drag->getColor();
+
+ // set the color as clipboard content (text in RRGGBBAA format)
+ _setClipboardColor(col);
+
+ // create a style with this color on fill and opacity in master opacity, so it can be
+ // pasted on other stops or objects
+ if (_text_style) {
+ sp_repr_css_attr_unref(_text_style);
+ _text_style = NULL;
+ }
+ _text_style = sp_repr_css_attr_new();
+ // print and set properties
+ gchar color_str[16];
+ g_snprintf(color_str, 16, "#%06x", col >> 8);
+ sp_repr_css_set_property(_text_style, "fill", color_str);
+ float opacity = SP_RGBA32_A_F(col);
+ if (opacity > 1.0) {
+ opacity = 1.0; // safeguard
+ }
+ Inkscape::CSSOStringStream opcss;
+ opcss << opacity;
+ sp_repr_css_set_property(_text_style, "opacity", opcss.str().data());
- // Special case for when the gradient dragger is active - copies gradient color
- if (desktop->event_context->get_drag()) {
- GrDrag *drag = desktop->event_context->get_drag();
- if (drag->hasSelection()) {
- guint32 col = drag->getColor();
+ _discardInternalClipboard();
+ return;
+ }
+ }
- // set the color as clipboard content (text in RRGGBBAA format)
- _setClipboardColor(col);
+ // Special case for when the color picker ("dropper") is active - copies color under cursor
+ if (tools_isactive(desktop, TOOLS_DROPPER)) {
+ //_setClipboardColor(sp_dropper_context_get_color(desktop->event_context));
+ _setClipboardColor(SP_DROPPER_CONTEXT(desktop->event_context)->get_color());
+ _discardInternalClipboard();
+ return;
+ }
- // create a style with this color on fill and opacity in master opacity, so it can be
- // pasted on other stops or objects
+ // Special case for when the text tool is active - if some text is selected, copy plain text,
+ // not the object that holds it; also copy the style at cursor into
+ if (tools_isactive(desktop, TOOLS_TEXT)) {
+ _discardInternalClipboard();
+ Glib::ustring selected_text = Inkscape::UI::Tools::sp_text_get_selected_text(desktop->event_context);
+ _clipboard->set_text(selected_text);
if (_text_style) {
sp_repr_css_attr_unref(_text_style);
_text_style = NULL;
}
- _text_style = sp_repr_css_attr_new();
- // print and set properties
- gchar color_str[16];
- g_snprintf(color_str, 16, "#%06x", col >> 8);
- sp_repr_css_set_property(_text_style, "fill", color_str);
- float opacity = SP_RGBA32_A_F(col);
- if (opacity > 1.0) {
- opacity = 1.0; // safeguard
- }
- Inkscape::CSSOStringStream opcss;
- opcss << opacity;
- sp_repr_css_set_property(_text_style, "opacity", opcss.str().data());
-
- _discardInternalClipboard();
+ _text_style = Inkscape::UI::Tools::sp_text_get_style_at_cursor(desktop->event_context);
return;
}
}
-
- // Special case for when the color picker ("dropper") is active - copies color under cursor
- if (tools_isactive(desktop, TOOLS_DROPPER)) {
- //_setClipboardColor(sp_dropper_context_get_color(desktop->event_context));
- _setClipboardColor(SP_DROPPER_CONTEXT(desktop->event_context)->get_color());
- _discardInternalClipboard();
- return;
- }
-
- // Special case for when the text tool is active - if some text is selected, copy plain text,
- // not the object that holds it; also copy the style at cursor into
- if (tools_isactive(desktop, TOOLS_TEXT)) {
- _discardInternalClipboard();
- Glib::ustring selected_text = Inkscape::UI::Tools::sp_text_get_selected_text(desktop->event_context);
- _clipboard->set_text(selected_text);
- if (_text_style) {
- sp_repr_css_attr_unref(_text_style);
- _text_style = NULL;
- }
- _text_style = Inkscape::UI::Tools::sp_text_get_style_at_cursor(desktop->event_context);
- return;
- }
-
- if (selection->isEmpty()) { // check whether something is selected
- _userWarn(desktop, _("Nothing was copied."));
+ if (set->isEmpty()) { // check whether something is selected
+ _userWarn(set->desktop(), _("Nothing was copied."));
return;
}
_discardInternalClipboard();
_createInternalClipboard(); // construct a new clipboard document
- _copySelection(selection); // copy all items in the selection to the internal clipboard
+ _copySelection(set); // copy all items in the selection to the internal clipboard
fit_canvas_to_drawing(_clipboardSPDoc);
_setClipboardTargets();
@@ -426,16 +425,15 @@ const gchar *ClipboardManagerImpl::getFirstObjectID()
/**
* Implements the Paste Style action.
*/
-bool ClipboardManagerImpl::pasteStyle(SPDesktop *desktop)
+bool ClipboardManagerImpl::pasteStyle(ObjectSet *set)
{
- if (desktop == NULL) {
+ if (set->desktop() == NULL) {
return false;
}
// check whether something is selected
- Inkscape::Selection *selection = desktop->getSelection();
- if (selection->isEmpty()) {
- _userWarn(desktop, _("Select <b>object(s)</b> to paste style to."));
+ if (set->isEmpty()) {
+ _userWarn(set->desktop(), _("Select <b>object(s)</b> to paste style to."));
return false;
}
@@ -443,10 +441,10 @@ bool ClipboardManagerImpl::pasteStyle(SPDesktop *desktop)
if ( tempdoc == NULL ) {
// no document, but we can try _text_style
if (_text_style) {
- sp_desktop_set_style(desktop, _text_style);
+ sp_desktop_set_style(set, set->desktop(), _text_style);
return true;
} else {
- _userWarn(desktop, _("No style on the clipboard."));
+ _userWarn(set->desktop(), _("No style on the clipboard."));
return false;
}
}
@@ -457,13 +455,13 @@ bool ClipboardManagerImpl::pasteStyle(SPDesktop *desktop)
bool pasted = false;
if (clipnode) {
- desktop->doc()->importDefs(tempdoc);
+ set->document()->importDefs(tempdoc);
SPCSSAttr *style = sp_repr_css_attr(clipnode, "style");
- sp_desktop_set_style(desktop, style);
+ sp_desktop_set_style(set, set->desktop(), style);
pasted = true;
}
else {
- _userWarn(desktop, _("No style on the clipboard."));
+ _userWarn(set->desktop(), _("No style on the clipboard."));
}
tempdoc->doUnref();
@@ -477,29 +475,31 @@ bool ClipboardManagerImpl::pasteStyle(SPDesktop *desktop)
* @param apply_x Whether to scale the width of objects / selection
* @param apply_y Whether to scale the height of objects / selection
*/
-bool ClipboardManagerImpl::pasteSize(SPDesktop *desktop, bool separately, bool apply_x, bool apply_y)
+bool ClipboardManagerImpl::pasteSize(ObjectSet *set, bool separately, bool apply_x, bool apply_y)
{
if (!apply_x && !apply_y) {
return false; // pointless parameters
}
- if ( desktop == NULL ) {
+/* if ( desktop == NULL ) {
return false;
}
- Inkscape::Selection *selection = desktop->getSelection();
- if (selection->isEmpty()) {
- _userWarn(desktop, _("Select <b>object(s)</b> to paste size to."));
+ Inkscape::Selection *selection = desktop->getSelection();*/
+ if (set->isEmpty()) {
+ if(set->desktop())
+ _userWarn(set->desktop(), _("Select <b>object(s)</b> to paste size to."));
return false;
}
// FIXME: actually, this should accept arbitrary documents
SPDocument *tempdoc = _retrieveClipboard("image/x-inkscape-svg");
if ( tempdoc == NULL ) {
- _userWarn(desktop, _("No size on the clipboard."));
+ if(set->desktop())
+ _userWarn(set->desktop(), _("No size on the clipboard."));
return false;
}
- // retrieve size ifomration from the clipboard
+ // retrieve size information from the clipboard
Inkscape::XML::Node *root = tempdoc->getReprRoot();
Inkscape::XML::Node *clipnode = sp_repr_lookup_name(root, "inkscape:clipboard", 1);
bool pasted = false;
@@ -510,13 +510,13 @@ bool ClipboardManagerImpl::pasteSize(SPDesktop *desktop, bool separately, bool a
// resize each object in the selection
if (separately) {
- auto itemlist= selection->items();
+ auto itemlist= set->items();
for(auto i=itemlist.begin();i!=itemlist.end();++i){
SPItem *item = *i;
if (item) {
Geom::OptRect obj_size = item->desktopVisualBounds();
if ( obj_size ) {
- sp_item_scale_rel(item, _getScale(desktop, min, max, *obj_size, apply_x, apply_y));
+ sp_item_scale_rel(item, _getScale(set->desktop(), min, max, *obj_size, apply_x, apply_y));
}
} else {
g_assert_not_reached();
@@ -525,10 +525,10 @@ bool ClipboardManagerImpl::pasteSize(SPDesktop *desktop, bool separately, bool a
}
// resize the selection as a whole
else {
- Geom::OptRect sel_size = selection->visualBounds();
+ Geom::OptRect sel_size = set->visualBounds();
if ( sel_size ) {
- sp_object_set_scale_relative(selection, sel_size->midpoint(),
- _getScale(desktop, min, max, *sel_size, apply_x, apply_y));
+ set->setScaleRelative(sel_size->midpoint(),
+ _getScale(set->desktop(), min, max, *sel_size, apply_x, apply_y));
}
}
pasted = true;
@@ -541,18 +541,18 @@ bool ClipboardManagerImpl::pasteSize(SPDesktop *desktop, bool separately, bool a
/**
* Applies a path effect from the clipboard to the selected path.
*/
-bool ClipboardManagerImpl::pastePathEffect(SPDesktop *desktop)
+bool ClipboardManagerImpl::pastePathEffect(ObjectSet *set)
{
/** @todo FIXME: pastePathEffect crashes when moving the path with the applied effect,
segfaulting in fork_private_if_necessary(). */
- if ( desktop == NULL ) {
+ if ( set->desktop() == NULL ) {
return false;
}
- Inkscape::Selection *selection = desktop->getSelection();
- if (!selection || selection->isEmpty()) {
- _userWarn(desktop, _("Select <b>object(s)</b> to paste live path effect to."));
+ //Inkscape::Selection *selection = desktop->getSelection();
+ if (!set || set->isEmpty()) {
+ _userWarn(set->desktop(), _("Select <b>object(s)</b> to paste live path effect to."));
return false;
}
@@ -563,10 +563,10 @@ bool ClipboardManagerImpl::pastePathEffect(SPDesktop *desktop)
if ( clipnode ) {
gchar const *effectstack = clipnode->attribute("inkscape:path-effect");
if ( effectstack ) {
- desktop->doc()->importDefs(tempdoc);
+ set->document()->importDefs(tempdoc);
// make sure all selected items are converted to paths first (i.e. rectangles)
- sp_selected_to_lpeitems(desktop);
- auto itemlist= selection->items();
+ set->toLPEItems();
+ auto itemlist= set->items();
for(auto i=itemlist.begin();i!=itemlist.end();++i){
SPItem *item = *i;
_applyPathEffect(item, effectstack);
@@ -578,7 +578,7 @@ bool ClipboardManagerImpl::pastePathEffect(SPDesktop *desktop)
}
// no_effect:
- _userWarn(desktop, _("No effect on the clipboard."));
+ _userWarn(set->desktop(), _("No effect on the clipboard."));
return false;
}
@@ -646,7 +646,7 @@ Glib::ustring ClipboardManagerImpl::getShapeOrTextObjectId(SPDesktop *desktop)
/**
* Iterate over a list of items and copy them to the clipboard.
*/
-void ClipboardManagerImpl::_copySelection(Inkscape::Selection *selection)
+void ClipboardManagerImpl::_copySelection(ObjectSet *selection)
{
// copy the defs used by all items
auto itemlist= selection->items();
@@ -1270,7 +1270,7 @@ Geom::Scale ClipboardManagerImpl::_getScale(SPDesktop *desktop, Geom::Point cons
}
// If the "lock aspect ratio" button is pressed and we paste only a single coordinate,
// resize the second one by the same ratio too
- if (desktop->isToolboxButtonActive("lock")) {
+ if (desktop && desktop->isToolboxButtonActive("lock")) {
if (apply_x && !apply_y) {
scale_y = scale_x;
}
@@ -1432,7 +1432,8 @@ void ClipboardManagerImpl::_setClipboardColor(guint32 color)
*/
void ClipboardManagerImpl::_userWarn(SPDesktop *desktop, char const *msg)
{
- desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, msg);
+ if(desktop)
+ desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, msg);
}
/* #######################################
diff --git a/src/ui/clipboard.h b/src/ui/clipboard.h
index 9f3b6cbdb..32a49867c 100644
--- a/src/ui/clipboard.h
+++ b/src/ui/clipboard.h
@@ -24,7 +24,7 @@
// forward declarations
class SPDesktop;
namespace Inkscape {
-class Selection;
+class ObjectSet;
namespace XML { class Node; }
namespace LivePathEffect { class PathParam; }
@@ -42,13 +42,13 @@ namespace UI {
class ClipboardManager {
public:
- virtual void copy(SPDesktop *desktop) = 0;
+ virtual void copy(ObjectSet *set) = 0;
virtual void copyPathParameter(Inkscape::LivePathEffect::PathParam *) = 0;
virtual void copySymbol(Inkscape::XML::Node* symbol, gchar const* style, bool user_symbol = true) = 0;
virtual bool paste(SPDesktop *desktop, bool in_place = false) = 0;
- virtual bool pasteStyle(SPDesktop *desktop) = 0;
- virtual bool pasteSize(SPDesktop *desktop, bool separately, bool apply_x, bool apply_y) = 0;
- virtual bool pastePathEffect(SPDesktop *desktop) = 0;
+ virtual bool pasteStyle(ObjectSet *set) = 0;
+ virtual bool pasteSize(ObjectSet *set, bool separately, bool apply_x, bool apply_y) = 0;
+ virtual bool pastePathEffect(ObjectSet *set) = 0;
virtual Glib::ustring getPathParameter(SPDesktop* desktop) = 0;
virtual Glib::ustring getShapeOrTextObjectId(SPDesktop *desktop) = 0;
virtual const gchar *getFirstObjectID() = 0;
diff --git a/src/ui/dialog/export.cpp b/src/ui/dialog/export.cpp
index f0d54d784..95c97390d 100644
--- a/src/ui/dialog/export.cpp
+++ b/src/ui/dialog/export.cpp
@@ -785,7 +785,7 @@ void Export::onAreaToggled ()
case SELECTION_SELECTION:
if ((SP_ACTIVE_DESKTOP->getSelection())->isEmpty() == false) {
- sp_object_set_get_export_hints(SP_ACTIVE_DESKTOP->getSelection(), filename, &xdpi, &ydpi);
+ SP_ACTIVE_DESKTOP->getSelection()->getExportHints(filename, &xdpi, &ydpi);
/* If we still don't have a filename -- let's build
one that's nice */
diff --git a/src/ui/dialog/layer-properties.cpp b/src/ui/dialog/layer-properties.cpp
index 4aa86cc48..f28f8336a 100644
--- a/src/ui/dialog/layer-properties.cpp
+++ b/src/ui/dialog/layer-properties.cpp
@@ -384,7 +384,7 @@ void LayerPropertiesDialog::Move::setup(LayerPropertiesDialog &dialog) {
void LayerPropertiesDialog::Move::perform(LayerPropertiesDialog &dialog) {
SPObject *moveto = dialog._selectedLayer();
- sp_selection_to_layer(dialog._desktop, moveto, false);
+ dialog._desktop->selection->toLayer(moveto);
}
void LayerPropertiesDialog::_setDesktop(SPDesktop *desktop) {
diff --git a/src/ui/dialog/livepatheffect-editor.cpp b/src/ui/dialog/livepatheffect-editor.cpp
index 73f8debd6..b97b0e63a 100644
--- a/src/ui/dialog/livepatheffect-editor.cpp
+++ b/src/ui/dialog/livepatheffect-editor.cpp
@@ -419,7 +419,7 @@ LivePathEffectEditor::onAdd()
// If item is a SPRect, convert it to path first:
if ( dynamic_cast<SPRect *>(item) ) {
- sp_selected_path_to_curves(sel, current_desktop, false);
+ sel->toCurves();
item = sel->singleItem(); // get new item
}
@@ -451,7 +451,7 @@ LivePathEffectEditor::onAdd()
item = NULL;
// run sp_selection_clone_original_path_lpe
- sp_selection_clone_original_path_lpe(current_desktop);
+ sel->cloneOriginalPathLPE();
SPItem *new_item = sel->singleItem();
// Check that the cloning was successful. We don't want to change the ID of the original referenced path!
diff --git a/src/ui/dialog/transformation.cpp b/src/ui/dialog/transformation.cpp
index 7f1492cd7..5ec47b0dc 100644
--- a/src/ui/dialog/transformation.cpp
+++ b/src/ui/dialog/transformation.cpp
@@ -617,12 +617,11 @@ void Transformation::applyPageMove(Inkscape::Selection *selection)
if (!prefs->getBool("/dialogs/transformation/applyseparately")) {
// move selection as a whole
if (_check_move_relative.get_active()) {
- sp_object_set_move_relative(selection, x, y);
+ selection->moveRelative(x, y);
} else {
Geom::OptRect bbox = selection->preferredBounds();
if (bbox) {
- sp_object_set_move_relative(selection,
- x - bbox->min()[Geom::X], y - bbox->min()[Geom::Y]);
+ selection->moveRelative(x - bbox->min()[Geom::X], y - bbox->min()[Geom::Y]);
}
}
} else {
@@ -685,8 +684,7 @@ void Transformation::applyPageMove(Inkscape::Selection *selection)
} else {
Geom::OptRect bbox = selection->preferredBounds();
if (bbox) {
- sp_object_set_move_relative(selection,
- x - bbox->min()[Geom::X], y - bbox->min()[Geom::Y]);
+ selection->moveRelative(x - bbox->min()[Geom::X], y - bbox->min()[Geom::Y]);
}
}
}
@@ -750,7 +748,7 @@ void Transformation::applyPageScale(Inkscape::Selection *selection)
double y1 = bbox_pref->midpoint()[Geom::Y] + new_height/2;
Geom::Affine scaler = get_scale_transform_for_variable_stroke (*bbox_pref, *bbox_geom, transform_stroke, preserve, x0, y0, x1, y1);
- sp_object_set_apply_affine(selection, scaler);
+ selection->applyAffine(scaler);
}
}
@@ -776,7 +774,7 @@ void Transformation::applyPageRotate(Inkscape::Selection *selection)
} else {
boost::optional<Geom::Point> center = selection->center();
if (center) {
- sp_object_set_rotate_relative(selection, *center, angle);
+ selection->rotateRelative(*center, angle);
}
}
@@ -843,7 +841,7 @@ void Transformation::applyPageSkew(Inkscape::Selection *selection)
getDesktop()->getMessageStack()->flash(Inkscape::WARNING_MESSAGE, _("Transform matrix is singular, <b>not used</b>."));
return;
}
- sp_object_set_skew_relative(selection, *center, 0.01 * skewX, 0.01 * skewY);
+ selection->skewRelative(*center, 0.01 * skewX, 0.01 * skewY);
} else if (_units_skew.isRadial()) { //deg or rad
double angleX = _scalar_skew_horizontal.getValue("rad");
double angleY = _scalar_skew_vertical.getValue("rad");
@@ -856,7 +854,7 @@ void Transformation::applyPageSkew(Inkscape::Selection *selection)
}
double skewX = tan(-angleX);
double skewY = tan(angleY);
- sp_object_set_skew_relative(selection, *center, skewX, skewY);
+ selection->skewRelative(*center, skewX, skewY);
} else { // absolute displacement
double skewX = _scalar_skew_horizontal.getValue("px");
double skewY = _scalar_skew_vertical.getValue("px");
@@ -864,7 +862,7 @@ void Transformation::applyPageSkew(Inkscape::Selection *selection)
getDesktop()->getMessageStack()->flash(Inkscape::WARNING_MESSAGE, _("Transform matrix is singular, <b>not used</b>."));
return;
}
- sp_object_set_skew_relative(selection, *center, skewX / height, skewY / width);
+ selection->skewRelative(*center, skewX / height, skewY / width);
}
}
}
@@ -897,7 +895,7 @@ void Transformation::applyPageTransform(Inkscape::Selection *selection)
item->updateRepr();
}
} else {
- sp_object_set_apply_affine(selection, displayed); // post-multiply each object's transform
+ selection->applyAffine(displayed); // post-multiply each object's transform
}
DocumentUndo::done(selection->desktop()->getDocument(), SP_VERB_DIALOG_TRANSFORM,
diff --git a/src/ui/interface.cpp b/src/ui/interface.cpp
index b47e66451..e0c767509 100644
--- a/src/ui/interface.cpp
+++ b/src/ui/interface.cpp
@@ -1210,7 +1210,7 @@ sp_ui_drag_data_received(GtkWidget *widget,
Geom::OptRect sel_bbox = selection->visualBounds();
if (sel_bbox) {
Geom::Point m( desktop->point() - sel_bbox->midpoint() );
- sp_object_set_move_relative(selection, m, false);
+ selection->moveRelative(m, false);
}
}
@@ -1841,28 +1841,28 @@ void ContextMenu::ItemCreateLink(void)
void ContextMenu::SetMask(void)
{
- sp_selection_set_mask(_desktop, false, false);
+ _desktop->selection->setMask(false, false);
}
void ContextMenu::ReleaseMask(void)
{
- sp_selection_unset_mask(_desktop, false);
+ _desktop->selection->unsetMask(false);
}
void ContextMenu::CreateGroupClip(void)
{
- sp_selection_set_clipgroup(_desktop);
+ _desktop->selection->setClipGroup();
}
void ContextMenu::SetClip(void)
{
- sp_selection_set_mask(_desktop, true, false);
+ _desktop->selection->setMask(true, false);
}
void ContextMenu::ReleaseClip(void)
{
- sp_selection_unset_mask(_desktop, true);
+ _desktop->selection->unsetMask(true);
}
void ContextMenu::MakeGroupMenu(void)
@@ -1876,7 +1876,7 @@ void ContextMenu::MakeGroupMenu(void)
void ContextMenu::ActivateGroup(void)
{
- sp_selection_group(_desktop->selection, _desktop);
+ _desktop->selection->group();
}
void ContextMenu::ActivateUngroup(void)
@@ -1889,7 +1889,7 @@ void ContextMenu::ActivateUngroup(void)
void ContextMenu::ActivateUngroupPopSelection(void)
{
- sp_selection_ungroup_pop_selection(_desktop->selection, _desktop);
+ _desktop->selection->popFromGroup();
}
diff --git a/src/ui/tools/box3d-tool.cpp b/src/ui/tools/box3d-tool.cpp
index 94488a700..425695a2c 100644
--- a/src/ui/tools/box3d-tool.cpp
+++ b/src/ui/tools/box3d-tool.cpp
@@ -400,7 +400,7 @@ bool Box3dTool::root_handler(GdkEvent* event) {
case GDK_KEY_g:
case GDK_KEY_G:
if (MOD__SHIFT_ONLY(event)) {
- sp_selection_to_guides(desktop);
+ desktop->selection->toGuides();
ret = true;
}
break;
diff --git a/src/ui/tools/eraser-tool.cpp b/src/ui/tools/eraser-tool.cpp
index 12686160b..4f941e534 100644
--- a/src/ui/tools/eraser-tool.cpp
+++ b/src/ui/tools/eraser-tool.cpp
@@ -732,10 +732,10 @@ void EraserTool::set_to_accumulated() {
workDone = true; // TODO set this only if something was cut.
bool break_apart = prefs->getBool("/tools/eraser/break_apart", false);
if(!break_apart){
- sp_selected_path_combine(this->desktop, true);
+ selection->combine(true);
} else {
if(!this->nowidth){
- sp_selected_path_break_apart(this->desktop, true);
+ selection->breakApart(true);
}
}
if ( !selection->isEmpty() ) {
@@ -784,7 +784,7 @@ void EraserTool::set_to_accumulated() {
sp_object_ref(clip_path, 0);
clip_path->deleteObject(true);
sp_object_unref(clip_path);
- sp_selection_raise_to_top(selection, this->desktop, true);
+ selection->raiseToTop(true);
selection->add(dup_clip);
sp_selected_path_diff_skip_undo(selection);
SPItem * clip = SP_ITEM(*(selection->items().begin()));
@@ -800,13 +800,13 @@ void EraserTool::set_to_accumulated() {
rect->transform = SP_ITEM(rect->parent)->i2dt_affine().inverse();
rect->updateRepr();
rect->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG);
- sp_selection_raise_to_top(selection, this->desktop, true);
+ selection->raiseToTop(true);
selection->add(rect);
sp_selected_path_diff_skip_undo(selection);
}
- sp_selection_raise_to_top(selection, this->desktop, true);
+ selection->raiseToTop(true);
selection->add(item);
- sp_selection_set_mask(this->desktop, true, false, true);
+ selection->setMask(true, false, true);
} else {
SPItem *erase_clip = selection->singleItem();
if (erase_clip) {
@@ -836,7 +836,7 @@ void EraserTool::set_to_accumulated() {
}
if (eraser_mode == ERASER_MODE_DELETE) {
- sp_selection_delete(this->desktop);
+ selection->deleteItems();
remainingItems.clear();
}
diff --git a/src/ui/tools/freehand-base.cpp b/src/ui/tools/freehand-base.cpp
index a7cd39a89..300324467 100644
--- a/src/ui/tools/freehand-base.cpp
+++ b/src/ui/tools/freehand-base.cpp
@@ -435,7 +435,7 @@ static void spdc_check_for_and_apply_waiting_LPE(FreehandBase *dc, SPItem *item,
if(bend_item != NULL && bend_item->getRepr() != NULL){
gchar const *svgd = item->getRepr()->attribute("d");
dc->selection->add(SP_OBJECT(bend_item));
- sp_selection_duplicate(dc->desktop);
+ dc->selection->duplicate();
dc->selection->remove(SP_OBJECT(bend_item));
bend_item = dc->selection->singleItem();
if(bend_item){
diff --git a/src/ui/tools/pen-tool.cpp b/src/ui/tools/pen-tool.cpp
index b7579b1fb..312338882 100644
--- a/src/ui/tools/pen-tool.cpp
+++ b/src/ui/tools/pen-tool.cpp
@@ -1233,7 +1233,7 @@ bool PenTool::_handleKeyPress(GdkEvent *event) {
case GDK_KEY_g:
case GDK_KEY_G:
if (MOD__SHIFT_ONLY(event)) {
- sp_selection_to_guides(this->desktop);
+ this->desktop->selection->toGuides();
ret = true;
}
break;
diff --git a/src/ui/tools/pencil-tool.cpp b/src/ui/tools/pencil-tool.cpp
index 9e8005be8..54106437c 100644
--- a/src/ui/tools/pencil-tool.cpp
+++ b/src/ui/tools/pencil-tool.cpp
@@ -487,7 +487,7 @@ bool PencilTool::_handleKeyPress(GdkEventKey const &event) {
case GDK_KEY_g:
case GDK_KEY_G:
if (Inkscape::UI::held_only_shift(event)) {
- sp_selection_to_guides(this->desktop);
+ this->desktop->selection->toGuides();
ret = true;
}
break;
diff --git a/src/ui/tools/rect-tool.cpp b/src/ui/tools/rect-tool.cpp
index 00330ef57..272531945 100644
--- a/src/ui/tools/rect-tool.cpp
+++ b/src/ui/tools/rect-tool.cpp
@@ -294,7 +294,7 @@ bool RectTool::root_handler(GdkEvent* event) {
case GDK_KEY_g:
case GDK_KEY_G:
if (MOD__SHIFT_ONLY(event)) {
- sp_selection_to_guides(desktop);
+ desktop->selection->toGuides();
ret = true;
}
break;
diff --git a/src/ui/tools/select-tool.cpp b/src/ui/tools/select-tool.cpp
index 0cdeda0b6..6c450b3dc 100644
--- a/src/ui/tools/select-tool.cpp
+++ b/src/ui/tools/select-tool.cpp
@@ -902,15 +902,15 @@ bool SelectTool::root_handler(GdkEvent* event) {
if (MOD__ALT(event)) { // alt
if (MOD__SHIFT(event)) {
- sp_selection_move_screen(desktop->getSelection(), mul*-10, 0); // shift
+ desktop->getSelection()->moveScreen(mul*-10, 0); // shift
} else {
- sp_selection_move_screen(desktop->getSelection(), mul*-1, 0); // no shift
+ desktop->getSelection()->moveScreen(mul*-1, 0); // no shift
}
} else { // no alt
if (MOD__SHIFT(event)) {
- sp_selection_move(desktop->getSelection(), mul*-10*nudge, 0); // shift
+ desktop->getSelection()->move(mul*-10*nudge, 0); // shift
} else {
- sp_selection_move(desktop->getSelection(), mul*-nudge, 0); // no shift
+ desktop->getSelection()->move(mul*-nudge, 0); // no shift
}
}
@@ -925,15 +925,15 @@ bool SelectTool::root_handler(GdkEvent* event) {
if (MOD__ALT(event)) { // alt
if (MOD__SHIFT(event)) {
- sp_selection_move_screen(desktop->getSelection(), 0, mul*10); // shift
+ desktop->getSelection()->moveScreen(0, mul*10); // shift
} else {
- sp_selection_move_screen(desktop->getSelection(), 0, mul*1); // no shift
+ desktop->getSelection()->moveScreen(0, mul*1); // no shift
}
} else { // no alt
if (MOD__SHIFT(event)) {
- sp_selection_move(desktop->getSelection(), 0, mul*10*nudge); // shift
+ desktop->getSelection()->move(0, mul*10*nudge); // shift
} else {
- sp_selection_move(desktop->getSelection(), 0, mul*nudge); // no shift
+ desktop->getSelection()->move(0, mul*nudge); // no shift
}
}
@@ -948,15 +948,15 @@ bool SelectTool::root_handler(GdkEvent* event) {
if (MOD__ALT(event)) { // alt
if (MOD__SHIFT(event)) {
- sp_selection_move_screen(desktop->getSelection(), mul*10, 0); // shift
+ desktop->getSelection()->moveScreen(mul*10, 0); // shift
} else {
- sp_selection_move_screen(desktop->getSelection(), mul*1, 0); // no shift
+ desktop->getSelection()->moveScreen(mul*1, 0); // no shift
}
} else { // no alt
if (MOD__SHIFT(event)) {
- sp_selection_move(desktop->getSelection(), mul*10*nudge, 0); // shift
+ desktop->getSelection()->move(mul*10*nudge, 0); // shift
} else {
- sp_selection_move(desktop->getSelection(), mul*nudge, 0); // no shift
+ desktop->getSelection()->move(mul*nudge, 0); // no shift
}
}
@@ -971,15 +971,15 @@ bool SelectTool::root_handler(GdkEvent* event) {
if (MOD__ALT(event)) { // alt
if (MOD__SHIFT(event)) {
- sp_selection_move_screen(desktop->getSelection(), 0, mul*-10); // shift
+ desktop->getSelection()->moveScreen(0, mul*-10); // shift
} else {
- sp_selection_move_screen(desktop->getSelection(), 0, mul*-1); // no shift
+ desktop->getSelection()->moveScreen(0, mul*-1); // no shift
}
} else { // no alt
if (MOD__SHIFT(event)) {
- sp_selection_move(desktop->getSelection(), 0, mul*-10*nudge); // shift
+ desktop->getSelection()->move(0, mul*-10*nudge); // shift
} else {
- sp_selection_move(desktop->getSelection(), 0, mul*-nudge); // no shift
+ desktop->getSelection()->move(0, mul*-nudge); // no shift
}
}
@@ -1023,11 +1023,11 @@ bool SelectTool::root_handler(GdkEvent* event) {
case GDK_KEY_bracketleft:
if (MOD__ALT(event)) {
gint mul = 1 + gobble_key_events(get_group0_keyval(&event->key), 0); // with any mask
- sp_selection_rotate_screen(selection, mul*1);
+ selection->rotateScreen(mul*1);
} else if (MOD__CTRL(event)) {
- sp_selection_rotate(selection, 90);
+ selection->rotate(90);
} else if (snaps) {
- sp_selection_rotate(selection, 180.0/snaps);
+ selection->rotate(180.0/snaps);
}
ret = TRUE;
@@ -1036,11 +1036,11 @@ bool SelectTool::root_handler(GdkEvent* event) {
case GDK_KEY_bracketright:
if (MOD__ALT(event)) {
gint mul = 1 + gobble_key_events(get_group0_keyval(&event->key), 0); // with any mask
- sp_selection_rotate_screen(selection, -1*mul);
+ selection->rotateScreen(-1*mul);
} else if (MOD__CTRL(event)) {
- sp_selection_rotate(selection, -90);
+ selection->rotate(-90);
} else if (snaps) {
- sp_selection_rotate(selection, -180.0/snaps);
+ selection->rotate(-180.0/snaps);
}
ret = TRUE;
@@ -1084,7 +1084,7 @@ bool SelectTool::root_handler(GdkEvent* event) {
case GDK_KEY_g:
case GDK_KEY_G:
if (MOD__SHIFT_ONLY(event)) {
- sp_selection_to_guides(desktop);
+ desktop->selection->toGuides();
ret = true;
}
break;
diff --git a/src/verbs.cpp b/src/verbs.cpp
index e061eaab6..7a9875c69 100644
--- a/src/verbs.cpp
+++ b/src/verbs.cpp
@@ -956,85 +956,85 @@ void EditVerb::perform(SPAction *action, void *data)
sp_redo(dt, dt->getDocument());
break;
case SP_VERB_EDIT_CUT:
- sp_selection_cut(dt);
+ dt->selection->cut();
break;
case SP_VERB_EDIT_COPY:
- sp_selection_copy(dt);
+ dt->selection->copy();
break;
case SP_VERB_EDIT_PASTE:
sp_selection_paste(dt, false);
break;
case SP_VERB_EDIT_PASTE_STYLE:
- sp_selection_paste_style(dt);
+ dt->selection->pasteStyle();
break;
case SP_VERB_EDIT_PASTE_SIZE:
- sp_selection_paste_size(dt, true, true);
+ dt->selection->pasteSize(true,true);
break;
case SP_VERB_EDIT_PASTE_SIZE_X:
- sp_selection_paste_size(dt, true, false);
+ dt->selection->pasteSize(true, false);
break;
case SP_VERB_EDIT_PASTE_SIZE_Y:
- sp_selection_paste_size(dt, false, true);
+ dt->selection->pasteSize(false, true);
break;
case SP_VERB_EDIT_PASTE_SIZE_SEPARATELY:
- sp_selection_paste_size_separately(dt, true, true);
+ dt->selection->pasteSizeSeparately(true, true);
break;
case SP_VERB_EDIT_PASTE_SIZE_SEPARATELY_X:
- sp_selection_paste_size_separately(dt, true, false);
+ dt->selection->pasteSizeSeparately(true, false);
break;
case SP_VERB_EDIT_PASTE_SIZE_SEPARATELY_Y:
- sp_selection_paste_size_separately(dt, false, true);
+ dt->selection->pasteSizeSeparately(false, true);
break;
case SP_VERB_EDIT_PASTE_IN_PLACE:
sp_selection_paste(dt, true);
break;
case SP_VERB_EDIT_PASTE_LIVEPATHEFFECT:
- sp_selection_paste_livepatheffect(dt);
+ dt->selection->pastePathEffect();
break;
case SP_VERB_EDIT_REMOVE_LIVEPATHEFFECT:
- sp_selection_remove_livepatheffect(dt);
+ dt->selection->removeLPE();
break;
case SP_VERB_EDIT_REMOVE_FILTER:
- sp_selection_remove_filter(dt);
+ dt->selection->removeFilter();
break;
case SP_VERB_EDIT_DELETE:
- sp_selection_delete(dt);
+ dt->selection->deleteItems();
break;
case SP_VERB_EDIT_DUPLICATE:
- sp_selection_duplicate(dt);
+ dt->selection->duplicate();
break;
case SP_VERB_EDIT_CLONE:
- sp_selection_clone(dt);
+ dt->selection->clone();
break;
case SP_VERB_EDIT_UNLINK_CLONE:
- sp_selection_unlink(dt);
+ dt->selection->unlink();
break;
case SP_VERB_EDIT_RELINK_CLONE:
- sp_selection_relink(dt);
+ dt->selection->relink();
break;
case SP_VERB_EDIT_CLONE_SELECT_ORIGINAL:
- sp_select_clone_original(dt);
+ dt->selection->cloneOriginal();
break;
case SP_VERB_EDIT_CLONE_ORIGINAL_PATH_LPE:
- sp_selection_clone_original_path_lpe(dt);
+ dt->selection->cloneOriginalPathLPE();
break;
case SP_VERB_EDIT_SELECTION_2_MARKER:
- sp_selection_to_marker(dt);
+ dt->selection->toMarker();
break;
case SP_VERB_EDIT_SELECTION_2_GUIDES:
- sp_selection_to_guides(dt);
+ dt->selection->toGuides();
break;
case SP_VERB_EDIT_TILE:
- sp_selection_tile(dt);
+ dt->selection->tile();
break;
case SP_VERB_EDIT_UNTILE:
- sp_selection_untile(dt);
+ dt->selection->untile();
break;
case SP_VERB_EDIT_SYMBOL:
- sp_selection_symbol(dt);
+ dt->selection->toSymbol();
break;
case SP_VERB_EDIT_UNSYMBOL:
- sp_selection_unsymbol(dt);
+ dt->selection->unSymbol();
break;
case SP_VERB_EDIT_SELECT_ALL:
SelectionHelper::selectAll(dt);
@@ -1133,54 +1133,54 @@ void SelectionVerb::perform(SPAction *action, void *data)
{
// FIXME these and the other grow/shrink they should use gobble_key_events.
// the problem is how to get access to which key, if any, to gobble.
- sp_selection_scale(selection, prefs->getDoubleLimited("/options/defaultscale/value", 2, 0, 1000));
+ selection->scale(prefs->getDoubleLimited("/options/defaultscale/value", 2, 0, 1000));
break;
}
case SP_VERB_SELECTION_GROW_SCREEN:
{
- sp_selection_scale_screen(selection, 2);
+ selection->scaleScreen(2);
break;
}
case SP_VERB_SELECTION_GROW_DOUBLE:
{
- sp_selection_scale_times(selection, 2);
+ selection->scaleTimes(2);
break;
}
case SP_VERB_SELECTION_SHRINK:
{
- sp_selection_scale(selection, -prefs->getDoubleLimited("/options/defaultscale/value", 2, 0, 1000));
+ selection->scale(-prefs->getDoubleLimited("/options/defaultscale/value", 2, 0, 1000));
break;
}
case SP_VERB_SELECTION_SHRINK_SCREEN:
{
- sp_selection_scale_screen(selection, -2);
+ selection->scaleScreen(-2);
break;
}
case SP_VERB_SELECTION_SHRINK_HALVE:
{
- sp_selection_scale_times(selection, 0.5);
+ selection->scaleTimes(0.5);
break;
}
case SP_VERB_SELECTION_TO_FRONT:
- sp_selection_raise_to_top(selection, dt);
+ selection->raiseToTop();
break;
case SP_VERB_SELECTION_TO_BACK:
- sp_selection_lower_to_bottom(selection, dt);
+ selection->lowerToBottom();
break;
case SP_VERB_SELECTION_RAISE:
- sp_selection_raise(selection, dt);
+ selection->raise();
break;
case SP_VERB_SELECTION_LOWER:
- sp_selection_lower(selection, dt);
+ selection->lower();
break;
case SP_VERB_SELECTION_GROUP:
- sp_selection_group(selection, dt);
+ selection->group();
break;
case SP_VERB_SELECTION_UNGROUP:
- sp_selection_ungroup(selection, dt);
+ selection->ungroup();
break;
case SP_VERB_SELECTION_UNGROUP_POP_SELECTION:
- sp_selection_ungroup_pop_selection(selection, dt);
+ selection->popFromGroup();
break;
default:
handled = false;
@@ -1258,14 +1258,14 @@ void SelectionVerb::perform(SPAction *action, void *data)
dt->_dlg_mgr->showDialog("PixelArt");
break;
case SP_VERB_SELECTION_CREATE_BITMAP:
- sp_selection_create_bitmap_copy(dt);
+ dt->selection->createBitmapCopy();
break;
case SP_VERB_SELECTION_COMBINE:
- sp_selected_path_combine(dt);
+ selection->combine();
break;
case SP_VERB_SELECTION_BREAK_APART:
- sp_selected_path_break_apart(dt);
+ selection->breakApart();
break;
case SP_VERB_SELECTION_ARRANGE:
INKSCAPE.dialogs_unhide();
@@ -1324,11 +1324,11 @@ void LayerVerb::perform(SPAction *action, void *data)
break;
}
case SP_VERB_LAYER_MOVE_TO_NEXT: {
- sp_selection_to_next_layer(dt);
+ dt->selection->toNextLayer();
break;
}
case SP_VERB_LAYER_MOVE_TO_PREV: {
- sp_selection_to_prev_layer(dt);
+ dt->selection->toPrevLayer();
break;
}
case SP_VERB_LAYER_MOVE_TO: {
@@ -1399,7 +1399,7 @@ void LayerVerb::perform(SPAction *action, void *data)
case SP_VERB_LAYER_DUPLICATE: {
if ( dt->currentLayer() != dt->currentRoot() ) {
- sp_selection_duplicate(dt, true, true);
+ dt->selection->duplicate(true,true);
DocumentUndo::done(dt->getDocument(), SP_VERB_LAYER_DUPLICATE,
_("Duplicate layer"));
@@ -1515,7 +1515,7 @@ void ObjectVerb::perform( SPAction *action, void *data)
bool handled = true;
switch (reinterpret_cast<std::size_t>(data)) {
case SP_VERB_OBJECT_TO_CURVE:
- sp_selected_path_to_curves(sel, dt);
+ sel->toCurves();
break;
default:
handled = false;
@@ -1546,13 +1546,13 @@ void ObjectVerb::perform( SPAction *action, void *data)
switch (reinterpret_cast<std::size_t>(data)) {
case SP_VERB_OBJECT_ROTATE_90_CW:
- sp_selection_rotate_90(dt, false);
+ sel->rotate90(false);
break;
case SP_VERB_OBJECT_ROTATE_90_CCW:
- sp_selection_rotate_90(dt, true);
+ sel->rotate90(true);
break;
case SP_VERB_OBJECT_FLATTEN:
- sp_object_set_remove_transform(dt);
+ sel->removeTransform();
break;
case SP_VERB_OBJECT_FLOW_TEXT:
text_flow_into_shape();
@@ -1564,35 +1564,35 @@ void ObjectVerb::perform( SPAction *action, void *data)
flowtext_to_text();
break;
case SP_VERB_OBJECT_FLIP_HORIZONTAL:
- sp_object_set_scale_relative(sel, center, Geom::Scale(-1.0, 1.0));
+ sel->setScaleRelative(center, Geom::Scale(-1.0, 1.0));
DocumentUndo::done(dt->getDocument(), SP_VERB_OBJECT_FLIP_HORIZONTAL,
_("Flip horizontally"));
break;
case SP_VERB_OBJECT_FLIP_VERTICAL:
- sp_object_set_scale_relative(sel, center, Geom::Scale(1.0, -1.0));
+ sel->setScaleRelative(center, Geom::Scale(1.0, -1.0));
DocumentUndo::done(dt->getDocument(), SP_VERB_OBJECT_FLIP_VERTICAL,
_("Flip vertically"));
break;
case SP_VERB_OBJECT_SET_MASK:
- sp_selection_set_mask(dt, false, false);
+ sel->setMask(false, false);
break;
case SP_VERB_OBJECT_EDIT_MASK:
- sp_selection_edit_clip_or_mask(dt, false);
+ sel->editMask(false);
break;
case SP_VERB_OBJECT_UNSET_MASK:
- sp_selection_unset_mask(dt, false);
+ sel->unsetMask(false);
break;
case SP_VERB_OBJECT_SET_CLIPPATH:
- sp_selection_set_mask(dt, true, false);
+ sel->setMask(true, false);
break;
case SP_VERB_OBJECT_CREATE_CLIP_GROUP:
- sp_selection_set_clipgroup(dt);
+ sel->setClipGroup();
break;
case SP_VERB_OBJECT_EDIT_CLIPPATH:
- sp_selection_edit_clip_or_mask(dt, true);
+ sel->editMask(true);
break;
case SP_VERB_OBJECT_UNSET_CLIPPATH:
- sp_selection_unset_mask(dt, true);
+ sel->unsetMask(true);
break;
default:
break;
diff --git a/src/widgets/select-toolbar.cpp b/src/widgets/select-toolbar.cpp
index e551c28c3..c5ff713bd 100644
--- a/src/widgets/select-toolbar.cpp
+++ b/src/widgets/select-toolbar.cpp
@@ -254,7 +254,7 @@ sp_object_layout_any_value_changed(GtkAdjustment *adj, GObject *tbl)
scaler = get_scale_transform_for_uniform_stroke (*bbox_geom, 0, 0, false, false, x0, y0, x1, y1);
}
- sp_object_set_apply_affine(selection, scaler);
+ selection->applyAffine(scaler);
DocumentUndo::maybeDone(document, actionkey, SP_VERB_CONTEXT_SELECT,
_("Transform by toolbar"));
diff --git a/testfiles/src/object-set-test.cpp b/testfiles/src/object-set-test.cpp
index 79a49488a..83c1e4ff2 100644
--- a/testfiles/src/object-set-test.cpp
+++ b/testfiles/src/object-set-test.cpp
@@ -98,7 +98,7 @@ TEST_F(ObjectSetTest, Basics) {
EXPECT_FALSE(set->includes(A));
set->clear();
EXPECT_EQ(0, set->size());
- bool resultNull = set->add(nullptr);
+ bool resultNull = set->add((SPObject*)nullptr);
EXPECT_FALSE(resultNull);
EXPECT_EQ(0, set->size());
bool resultNull2 = set->remove(nullptr);