diff -Nru fotoxx-13.08/Makefile fotoxx-13.09.1/Makefile --- fotoxx-13.08/Makefile 2013-08-03 15:04:46.000000000 +0000 +++ fotoxx-13.09.1/Makefile 2013-09-02 02:33:21.000000000 +0000 @@ -1,6 +1,6 @@ # fotoxx makefile -FOTOXX = fotoxx-13.08.cc +FOTOXX = fotoxx-13.09.1.cc # defaults for parameters that may be pre-defined CXXFLAGS ?= -O2 -Wall -ggdb diff -Nru fotoxx-13.08/Makefile~ fotoxx-13.09.1/Makefile~ --- fotoxx-13.08/Makefile~ 2013-08-03 14:58:12.000000000 +0000 +++ fotoxx-13.09.1/Makefile~ 2013-08-31 06:26:38.000000000 +0000 @@ -1,6 +1,6 @@ # fotoxx makefile -FOTOXX = fotoxx-13.08.cc +FOTOXX = fotoxx-13.09.1.cc # defaults for parameters that may be pre-defined CXXFLAGS ?= -O2 -Wall -ggdb @@ -97,14 +97,14 @@ rm -f fotoxx.1.gz # menu (desktop) file cp -f desktop $(DESTDIR)$(MENUFILE) -# xdg-desktop-menu install --novendor $(DESTDIR)$(MENUFILE) + xdg-desktop-menu install --novendor $(DESTDIR)$(MENUFILE) uninstall: rm -f $(DESTDIR)$(BINDIR)/fotoxx rm -f -R $(DESTDIR)$(SHAREDIR) rm -f -R $(DESTDIR)$(DOCDIR) rm -f $(DESTDIR)$(MANDIR)/fotoxx.1.gz -# xdg-desktop-menu uninstall $(DESTDIR)$(MENUFILE) + xdg-desktop-menu uninstall $(DESTDIR)$(MENUFILE) rm -f $(DESTDIR)$(MENUFILE) clean: diff -Nru fotoxx-13.08/data/KB-shortcuts fotoxx-13.09.1/data/KB-shortcuts --- fotoxx-13.08/data/KB-shortcuts 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/data/KB-shortcuts 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -Ctrl+S Save to Same File -Ctrl+Shift+S Save to New File -Ctrl+V Save to New Version -N Rename Image File -K Keyboard Shortcuts -Alt+G Grid Lines -T Trim Image -V Voodoo Enhance -B Brightness/Color -Alt+U Undo -Alt+R Redo - diff -Nru fotoxx-13.08/data/KB-shortcuts-en fotoxx-13.09.1/data/KB-shortcuts-en --- fotoxx-13.08/data/KB-shortcuts-en 1970-01-01 00:00:00.000000000 +0000 +++ fotoxx-13.09.1/data/KB-shortcuts-en 2013-08-31 06:26:38.000000000 +0000 @@ -0,0 +1,9 @@ +N Rename Image File +K Keyboard Shortcuts +Alt+G Grid Lines +T Trim/Crop +V Voodoo Enhance +B Brightness/Contrast/Color +Alt+U Undo +Alt+R Redo + diff -Nru fotoxx-13.08/data/edit-menus fotoxx-13.09.1/data/edit-menus --- fotoxx-13.08/data/edit-menus 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/data/edit-menus 1970-01-01 00:00:00.000000000 +0000 @@ -1,81 +0,0 @@ - -Image -===== -Rotate Rotate an image by any angle. -Trim/Crop Trim unwanted margins from an image. -Auto-Trim Trim leftover margins from panorama, warp, etc. -Resize Contract or Enarge an image (pixel dimensions). -Flip Mirror an image horizontally or vertically. -Add Text Write text on image (font, size, transparency). - -Retouch -======= -Voodoo Enhance Automatic 1-click enhancement that may work. -Brightness/Color Edit brightness, contrast, color, saturation. -Gamma Curves Edit brightness and color using gamma curves. -Tone Mapping Increase local contrast to to enhance details. -Flatten Brightness Even brightness distribution to enhance detail. -Expand Brightness Expand brightness distribution, clip if needed. -Brightness Ramp Horizontal/Vertical variation of brightness. -Paint Edits Paint a retouch edit gradually using the mouse. -Leverage Edits Regulate a retouch edit with brightness or color. - -Repair -====== -Sharpen Sharpen a blurred image. -Blur Blur an image (e.g. smoothen skin). -Reduce Noise Reduce noise (speckles) in low-light images. -Smart Erase Remove power lines and other spoilers. -Red Eyes Remove red eyes from flash photos. -Paint/Clone Mouse-paint using a color or source image area. -Remove Dust Remove spots on images made from dusty slides. -Anti-Alias Remove pixelation (jaggies) in low resolution image. -Fix Color Fringes Reduce chromatic abberation causing color fringes. -Fix Stuck Pixels Fix bright/dark pixels from camera sensor defects. - -Color -===== -White Balance Remove color tint by clicking on white/gray. -Color Mode Make black & white, negative/positive, sepia. -Color Profile Convert color profile (e.g. sRGB <> Adobe RGB). -Match Colors Match the colors in one image to another image. -Revise RGB Make color corrections that vary over the image. -CMYK Density Change brightness or CMYK colors using OD units. - -Bend -==== -Unbend Fix perspective problems (esp. panoramas). -Keystone Correction Straighten an object photographed from an angle. -Flatten Book Page Flatten/straighten a photographed book page. -Warp area Distort "rubber" image by pulling with the mouse. -Warp curved Distort entire image by pulling with the mouse. -Warp linear Distort entire image by pulling with the mouse. -Warp affine Distort entire image by pulling with the mouse. - -Effects -======= -Color Depth Reduce the number of colors (posterize). -Sketch Convert photo to simulated pencil sketch. -Drawing Convert photo to simulated line drawing. -Graduated Blur Graduated blur depending on contrast. -Embossing Convert photo to simulated embossing (3D effect). -Tiles Convert photo to simulated square tiles. -Dots Convert photo to Roy Lichtenstein graphic. -Painting Convert photo to simulated painting. -Cartoon Convert photo to cartoon-like drawing. -False Colors Gradually shift RGB colors into other colors. -Vignette Change brightness or color in a radial pattern. - -Combine -======= -High Dynamic Range Make an image with extended brightness range. -High Depth of Field Make an image with extended depth of sharp focus. -Stack / Paint Remove transient objects (cars, tourists). -Stack / Noise Reduce noise by averaging multiple images. -Panorama Make an image with extended horizontal field of view. -Vertical Panorama Make an image with extended vertical field of view. - - - - - diff -Nru fotoxx-13.08/data/edit-menus-en fotoxx-13.09.1/data/edit-menus-en --- fotoxx-13.08/data/edit-menus-en 1970-01-01 00:00:00.000000000 +0000 +++ fotoxx-13.09.1/data/edit-menus-en 2013-08-31 06:26:38.000000000 +0000 @@ -0,0 +1,79 @@ + +Image +===== +Turn Turn an image left or right 90 degrees. +Rotate Rotate an image by any angle. +Trim/Crop Trim unwanted margins from an image. +Auto-Trim Trim leftover margins from panorama, warp, etc. +Resize Contract or Enarge an image (pixel dimensions). +Flip Mirror an image horizontally or vertically. +Add Text Write text on image (font, size, transparency). + +Retouch +======= +Voodoo Enhance Automatic 1-click enhancement that may work. +Brightness/Contrast/Color Edit brightness, contrast, color, saturation. +Gamma Curves Edit brightness and color using gamma curves. +Tone Mapping Increase local contrast to to enhance details. +Flatten Brightness Even brightness distribution to enhance detail. +Expand Brightness Expand brightness distribution, clip if needed. +Brightness Ramp Horizontal/Vertical variation of brightness. +Paint Edits Paint a retouch edit gradually using the mouse. +Leverage Edits Regulate a retouch edit with brightness or color. + +Repair +====== +Sharpen Sharpen a blurred image. +Blur Blur an image (e.g. smoothen skin). +Reduce Noise Reduce noise (speckles) in low-light images. +Smart Erase Remove power lines and other spoilers. +Red Eyes Remove red eyes from flash photos. +Paint/Clone Mouse-paint using a color or source image area. +Remove Dust Remove spots on images made from dusty slides. +Anti-Alias Remove pixelation (jaggies) in low resolution image. +Fix Color Fringes Reduce chromatic abberation causing color fringes. +Fix Stuck Pixels Fix bright/dark pixels from camera sensor defects. + +Color +===== +White Balance Remove color tint by clicking on white/gray. +Color Mode Make black & white, negative/positive, sepia. +Color Profile Convert color profile (e.g. sRGB <> Adobe RGB). +Match Colors Match the colors in one image to another image. +Revise RGB Make color corrections that vary over the image. +CMYK Density Change brightness or CMYK colors using OD units. + +Bend +==== +Unbend Fix perspective problems (esp. panoramas). +Keystone Correction Straighten an object photographed from an angle. +Flatten Book Page Flatten/straighten a photographed book page. +Warp area Distort "rubber" image by pulling with the mouse. +Warp curved Distort entire image by pulling with the mouse. +Warp linear Distort entire image by pulling with the mouse. +Warp affine Distort entire image by pulling with the mouse. + +Effects +======= +Color Depth Reduce the number of colors (posterize). +Sketch Convert photo to simulated pencil sketch. +Drawing Convert photo to simulated line drawing. +Graduated Blur Graduated blur depending on contrast. +Embossing Convert photo to simulated embossing (3D effect). +Tiles Convert photo to simulated square tiles. +Dots Convert photo to Roy Lichtenstein graphic. +Painting Convert photo to simulated painting. +Cartoon Convert photo to cartoon-like drawing. +False Colors Gradually shift RGB colors into other colors. +Vignette Change brightness or color in a radial pattern. + +Combine +======= +High Dynamic Range Make an image with extended brightness range. +High Depth of Field Make an image with extended depth of sharp focus. +Stack / Paint Remove transient objects (cars, tourists). +Stack / Noise Reduce noise by averaging multiple images. +Panorama Join a series of images horizontally. +Vertical Panorama Join a series of images vertically. +Mashup Arrange multiple images and formatted text in a layout. + diff -Nru fotoxx-13.08/data/favorites/menu-config fotoxx-13.09.1/data/favorites/menu-config --- fotoxx-13.08/data/favorites/menu-config 1970-01-01 00:00:00.000000000 +0000 +++ fotoxx-13.09.1/data/favorites/menu-config 2013-08-31 06:26:38.000000000 +0000 @@ -0,0 +1,43 @@ +popup 120 42 204 117 + +posn 20 36 +menu trim +func Trim/Crop + +posn 20 4 +menu recent +func Recently Seen Images + +posn 20 20 +menu previous +func Open Previous File + +posn 20 52 +menu rotate +func Rotate + +posn 100 4 +menu bright/cont/color +func Brightness/Contrast/Color + +posn 100 20 +menu gamma +func Gamma Curves + +posn 100 36 +menu flatten +func Flatten Brightness + +posn 100 52 +menu tonemap +func Tone Mapping + +posn 100 68 +menu sharpen +func Sharpen + +posn 20 68 +menu red eyes +func red eyes +icon /home/mico/.fotoxx/favorites/menu-config-pixbuf-009.png +size 24 Binary files /tmp/cYYeiFVwgP/fotoxx-13.08/data/favorites/menu-config-pixbuf-009.png and /tmp/VmaSULXLi5/fotoxx-13.09.1/data/favorites/menu-config-pixbuf-009.png differ Binary files /tmp/cYYeiFVwgP/fotoxx-13.08/data/images/F-toolbar.jpg and /tmp/VmaSULXLi5/fotoxx-13.09.1/data/images/F-toolbar.jpg differ Binary files /tmp/cYYeiFVwgP/fotoxx-13.08/data/images/G-toolbar.jpg and /tmp/VmaSULXLi5/fotoxx-13.09.1/data/images/G-toolbar.jpg differ Binary files /tmp/cYYeiFVwgP/fotoxx-13.08/data/images/KB-shortcuts.jpg and /tmp/VmaSULXLi5/fotoxx-13.09.1/data/images/KB-shortcuts.jpg differ Binary files /tmp/cYYeiFVwgP/fotoxx-13.08/data/images/batch-rename.jpg and /tmp/VmaSULXLi5/fotoxx-13.09.1/data/images/batch-rename.jpg differ Binary files /tmp/cYYeiFVwgP/fotoxx-13.08/data/images/discard.png and /tmp/VmaSULXLi5/fotoxx-13.09.1/data/images/discard.png differ Binary files /tmp/cYYeiFVwgP/fotoxx-13.08/data/images/edit-caption-comments.jpg and /tmp/VmaSULXLi5/fotoxx-13.09.1/data/images/edit-caption-comments.jpg differ Binary files /tmp/cYYeiFVwgP/fotoxx-13.08/data/images/edit-metadata.jpg and /tmp/VmaSULXLi5/fotoxx-13.09.1/data/images/edit-metadata.jpg differ Binary files /tmp/cYYeiFVwgP/fotoxx-13.08/data/images/favorites.jpg and /tmp/VmaSULXLi5/fotoxx-13.09.1/data/images/favorites.jpg differ Binary files /tmp/cYYeiFVwgP/fotoxx-13.08/data/images/file-save.jpg and /tmp/VmaSULXLi5/fotoxx-13.09.1/data/images/file-save.jpg differ Binary files /tmp/cYYeiFVwgP/fotoxx-13.08/data/images/fotoxx.jpg and /tmp/VmaSULXLi5/fotoxx-13.09.1/data/images/fotoxx.jpg differ Binary files /tmp/cYYeiFVwgP/fotoxx-13.08/data/images/grad_blur.jpg and /tmp/VmaSULXLi5/fotoxx-13.09.1/data/images/grad_blur.jpg differ Binary files /tmp/cYYeiFVwgP/fotoxx-13.08/data/images/mashup.jpg and /tmp/VmaSULXLi5/fotoxx-13.09.1/data/images/mashup.jpg differ Binary files /tmp/cYYeiFVwgP/fotoxx-13.08/data/images/print.jpg and /tmp/VmaSULXLi5/fotoxx-13.09.1/data/images/print.jpg differ Binary files /tmp/cYYeiFVwgP/fotoxx-13.08/data/images/rotate.jpg and /tmp/VmaSULXLi5/fotoxx-13.09.1/data/images/rotate.jpg differ Binary files /tmp/cYYeiFVwgP/fotoxx-13.08/data/images/save-as.jpg and /tmp/VmaSULXLi5/fotoxx-13.09.1/data/images/save-as.jpg differ diff -Nru fotoxx-13.08/data/quickstart-de.html fotoxx-13.09.1/data/quickstart-de.html --- fotoxx-13.08/data/quickstart-de.html 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/data/quickstart-de.html 2013-08-31 06:26:38.000000000 +0000 @@ -3,6 +3,9 @@ + + + quickstart @@ -24,22 +27,20 @@ Bildersuchen schnell.

Zoom:
  Rechts / Links Mausklick oder Mausrad.
Scrollen / Schwenken gezoomtes Bild: Maus quer über das Bild ziehen.

Tabs
- +
- - + - - + - - + diff -Nru fotoxx-13.08/data/quickstart-en.html fotoxx-13.09.1/data/quickstart-en.html --- fotoxx-13.08/data/quickstart-en.html 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/data/quickstart-en.html 2013-08-31 06:26:38.000000000 +0000 @@ -1,11 +1,6 @@ - - - - quickstart - @@ -21,43 +16,42 @@ after installation (slow) and afterwards as needed (fast). Makes image searching fast.

Zoom: Right/left mouse click, or mouse wheel. 
Scroll / Pan:
Drag the mouse across -the zoomed image.

Tabs

-
  - -  Das +
+
 Tab F. Das aktuelle Bild zum ansehen oder verarbeiten.
  - -  Thumbnails +
+
 Tab G. Thumbnails für das aktuelle Verzeichnis, Sammlung, oder Suchergebnis.
 Thumbnail anklicken um ein großes Bild in @@ -48,10 +49,9 @@
  - -  Weltkarte: +
+
 Tab W. Weltkarte: Ort anklicken um Fotos vom Ort zu sehen (siehe Metadata unten).
+the zoomed image.

Window Tabs

+
-

 F

+


+

-

 The - current image to view or edit.

+

 Tab F (file) - the + current image file to view or edit.

-

 G

+

-

 Thumbnails +

 Tab G (gallery) - thumbnails of the current directory, collection, or search results.
 Click a thumbnail to show full size in tab F.
 Navigate by - clicking directory names at the top.

+ clicking directory names at the top of the window.
+

-

  - -

+

-

 World map: - Click a location to see relevant photos (see Metadata below).

+

 Tab W - world map: click a location to see relevant photos (see Metadata below).

-


Toolbar +

Toolbar Buttons

@@ -76,28 +70,12 @@

 Save

- - - - - - - - + +
-

 Save an - image back to the original file, with any modifications.

-
-

 Save+V

-
-

 Save an - image as a new file version (e.g. filename.v01.jpg).

-
-

 Save+F

-
-

 Save an - image as a new file name that you select or input.

+

 Save a modified image to the original file, new file version, or new file name.
+

 Prev / @@ -120,17 +98,17 @@

-


Edit +

Edit an Image
Open an image. Select an edit menu (e.g. Retouch > Gamma).
Adjust the dialog controls or drag the curve. Watch the image change. Press [Done].
Do more edits likewise. Press -[Save+V] to save image as a new file version.

Tools Menu:  -User preferences, batch functions (move, rename, convert, process RAW +[Save] and then select [New Version].

Tools Menu:  +User preferences, batch functions (move, rename, convert, RAW files ...)

Metadata Menu: 
Add data to images: -captions, comments, tags (keywords), geotags (locations) ...
Search -images using these criteria, file / directory names, dates, any image +captions, comments, ratings, tags (keywords), geotags (locations) ...
Search +images using these criteria, file and directory names, dates, or any image data ...

Areas Menu:  Select image areas to edit -separately. Copy and paste within and across images.

Edit +separately. Copy and paste within / across images.

Edit Menus

@@ -202,7 +180,8 @@ @@ -217,4 +196,4 @@

 combine - multiple images for HDR, HDF, stack, panorama

+ multiple images for HDR, HDF, stack, panorama, mashup
+


- \ No newline at end of file + diff -Nru fotoxx-13.08/data/quickstart-fr.html fotoxx-13.09.1/data/quickstart-fr.html --- fotoxx-13.08/data/quickstart-fr.html 1970-01-01 00:00:00.000000000 +0000 +++ fotoxx-13.09.1/data/quickstart-fr.html 2013-08-31 06:26:38.000000000 +0000 @@ -0,0 +1,267 @@ + + + + + + Fotoxx - Démarrage rapide +

Fotoxx Démarrage Rapide
+
+
Menu: Aide > Guide + de l'utilisateur
+
Bien vouloir prendre + connaissance des premières pages. Appuyer sur la touche F1 pour obtenir une aide + ponctuelle sur n'importe quelle opération en cours. +
+
+
Synchronisation + des Fichiers + (Création d'un index de données d'images)
+
Lancée après + l'installation (lente) et ensuite en fonction des besoins + (rapide). Accélère + la recherche d'images.
+
+
Zoom: + avant > clic droit, + arrière > clic gauche, avant/arrière > molette de la + souris.
+
Faire + défiler/Se déplacer dans l'image: Faire glisser le + curseur de la souris, bouton droit ou gauche enfoncé sur + l'image agrandie.
+
+
Onglets
+

+ + + + + + + + + + + + + + + +
+

+
+

Onglet F + (Fichier) - Image actuelle à afficher ou modifier.

+
+

+
+ +

Onglet G (Galerie) - + Miniatures du répertoire + courant, de la collection ou des résultats de + recherche.
+Cliquer sur une + miniature pour afficher l'image dans l'onglet F. +
+
Naviguer en + cliquant sur les noms des répertoires racines

+ +
+

+
+

Onglet M - Mappemonde: Cliquer sur un lieu + pour afficher les photos correspondantes (voir + Métadonnées ci-dessous).

+
+


+

+ Boutons de la barre + d'outils
+
+ + + + + + + + + + + + + + + + + + + +
+

Ouvrir

+
+

Sélectionner un fichier image comme image + actuelle dans l'onglet F.

+
+

Enregistrer

+
+

Remplacer le fichier original par le fichier + modifié.
+ Enregistrer une image comme nouvelle version + du fichier (par exemple nomdufichier.v01.jpg).
+
Enregistrer + une image sous un nouveau nom ou type de fichier que + vous sélectionnez ou saisissez.

+
+

Préc./Suiv.

+
+

Afficher l'image précédente/suivante du + répertoire courant, d'une collection ou d'un résultat + de recherche.

+
+

Annuler/Rétablir

+
+

Vue de l'état d'une image avant/après + modification ou pour chaque modification terminée dans + une série d'opérations.

+
+

+

Éditer une image:
+
Ouvrir + une image. Sélectionner + un menu d'édition (par exemple Retoucher > Courbes Gamma). +
+
Ajuster les contrôles ou + faire glisser la courbe. Aperçu des changements + directement dans l'image. Cliquer sur [Valider]. +
+
Faire d'autres + modifications de la même manière. Cliquer + sur [Enregistrer] pour enregistrer une nouvelle version de + l'image.
+
+
Menu Outils:
+
+ Préférences de l'utilisateur, fonctions de traitement par lots + (déplacer, renommer, convertir, traiter les fichiers RAW...) +
+
+
Menu Métadonnées:
+
Ajouter des données à des + images: légendes, commentaires, balises (mots-clés), balises + de géolocalisation (lieux)...
+
Rechercher des images à + l'aide des critères suivants: noms de fichier/répertoire, + dates, données d'image quelconque...
+
+
Menu Zones: + sélectionner les zones de travail de l'image séparément. + Copier et coller dans et + sur toute l'image.
+
+
Menus d'édition +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Image

+
+

Pivoter, rogner/recadrer, + redimensionner, retourner (miroir), écrire un texte +

+
+

Retoucher

+
+

Luminosité, couleur, contraste, + gamma, mappage de tons, "peindre" toute édition de + retouche

+
+

Réparer

+
+

Netteté, Flou, supprimer le + bruit, yeux rouges, effacement intelligent, + peinture/duplication, corriger les franges de couleur +

+
+

Couleur

+
+

Balance des blancs, changer les + couleurs, noir & blanc, positif/négatif, convertir + profil de couleur

+
+

Torsion

+
+

Corriger la perspective, + redresser les courbes, aplatir une page de livre, + différents types de déformations

+
+

Effets

+
+

Postériser, transformer en dessin + ou en peinture, estamper, mosaïque, trame de points, + bande dessinée, instantané

+
+

Combiner

+
+

Combiner plusieurs images pour + HDR, HDF, empilage, image panoramique, pêle-mêle

+
+

Greffons

+
+

Utiliser un quelconque éditeur + d'image (Gimp, ImageMagick...) comme fonction + d'édition de Fotoxx

+
+ + + \ No newline at end of file diff -Nru fotoxx-13.08/data/quickstart-it.html fotoxx-13.09.1/data/quickstart-it.html --- fotoxx-13.08/data/quickstart-it.html 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/data/quickstart-it.html 2013-08-31 06:26:38.000000000 +0000 @@ -1,248 +1,247 @@ - - - - Fotoxx start page - - - - - - - - -

Presentazione di Fotoxx
- -

- -

Menu: Aiuto > Guida utente
- -Leggi le pagina inziali. Usa F1 durante l'uso per avere aiuto contestuale.
- -
-Sincronizza file (indicizza i dati delle immagini)
-Automatico e lento la prima volta ma veloce le successive, rende rapida la ricerca delle immagini.
-
-Per lo zoom: usare clic sinistro o destro, o la rotella.
Per scorrere l'immagine:
trascinare il mouse.
-
-Linguette principali F, G ed W

- - - - - - - - - - - - - - - - - - - -
-

-  F

-
-

Contiene l'immagine corrente da vedere o modificare.

-
-

-  G

-
-

Mostra la galleria di miniature della -directory o collezione corrente, o i risultati di una ricerca. Navigare cliccando i nomi in alto.
- -Cliccare una miniatura per mostrarla nella linguetta F.
-

-
-

-   -

-
-

- Mappa del mondo: cliccare un luogo per vedere fotografie di quel luogo (vedi Metadati più avanti).

-
- -


-Pulsanti della barra

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Apri

-
-

Carica un file come immagine corrente nella linguetta F.

-
-

Salva
- -

-
-

Salva l'immagine corrente (con eventuali modifiche) nel suo file originario.

-
-

Salva+V

-
-

- Salva l'immagine in nuovo file con versione (es. nomedelfile.v01.jpg).

-
-

Salva>N

-
-

- Save l'immagine in un file a scelta.

-
-

Prec / Prossima

-
-

- Passa all'immagine precedente/successiva della directory/collezione/ricerca corrente.

-
-

Annulla / Ripeti

-
-

Annulla o ripristina, in sequenza, l'ultima modifica dell'immagine.

-
- -


-Per editare un'immagine
-Aprire un'immagine. Selezionare una funzione di edit (es. Ritocco > Curve Gamma).
-Regolare i parametri o trascinare la curva. Osservare il cambiamento nell'immagine.
- -Cliccare [Fatto]. Eseguire similmente altre modifiche.
-Cliccare [Salva+V] per salvare l'immagine con una nuova versione.
-
-Menù Strumenti:
- -Contiene preferenze utente, funzioni per modifiche in massa (sposta, rinomina, converti, processa file RAW...)
-
-Menù Metadati:
-Manipola dati aggiuntivi sulle foto: titoli, commenti, parole chiave, geotag (luoghi)...
-Ricerca le immagini usando criteri: nomi di file/directory, titoli, date, luoghi...
-
-Menù Aree: Seleziona parti (aree) da modificare separatamente, o per fare copia/incolla.
-
-Menù per le modifiche

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Immagine

-
-

ritaglia, ridimensiona, ruota, aggiunge scritte, distorce, -cambia profili di colore...

-
-

Ritocco

-
-

- luminosità, contrasto, gamma, bilanciamento del bianco, -distribuzione del colore...

-
-

Correggi
-

-
-

migliora dettaglio, sfuoca, riduce il rumore, gli occhi -rossi, frange di colore e altro -

-
-

Colore

-
-

white - balance, change colors, black & white, positive / negative, - convert color profile

-
-

Deforma
-

-
-

- corregge la prospettiva, raddrizza linee, appiattisce pagine, deforma variamente.

-
-

Effetti

-
-

effetto poster, vignetta, artistico, mosaico eccetera -

-
-

- Combina -

-
-

- miscela più immagini per creare panorami o immagini -migliorate in profondità di campo e altro

-
-

Plugins

-
-

permette di usare un editor esterno come se fosse una -funzione interna di Fotoxx

-
- -


-

- + + + + + Fotoxx start page + + + + + + + + +

Presentazione di Fotoxx
+ +

+ +

Menu: Aiuto > Guida utente
+ +Leggi le pagina inziali. Usa F1 durante l'uso per avere aiuto contestuale.
+ +
+Sincronizza file (indicizza i dati delle immagini)
+Automatico e lento la prima volta ma veloce le successive, rende rapida la ricerca delle immagini.
+
+Per lo zoom: usare clic sinistro o destro, o la rotella.
Per scorrere l'immagine:
trascinare il mouse.
+
+Linguette principali F, G ed W

+ + + + + + + + + + + + + + + + + + + +
+


+

+
+

F. Contiene l'immagine corrente da vedere o modificare.

+
+ +
+
+

G. Mostra la galleria di miniature della +directory o collezione corrente, o i risultati di una ricerca. Navigare cliccando i nomi in alto.
+ +Cliccare una miniatura per mostrarla nella linguetta F.
+

+
+ +
+
+

W. Mappa del mondo: cliccare un luogo per vedere fotografie di quel luogo (vedi Metadati più avanti).

+
+ +


+Pulsanti della barra

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Apri

+
+

Carica un file come immagine corrente nella linguetta F.

+
+

Salva
+ +

+
+

Salva l'immagine corrente (con eventuali modifiche) nel suo file originario.

+
+

Salva+V

+
+

+ Salva l'immagine in nuovo file con versione (es. nomedelfile.v01.jpg).

+
+

Salva>N

+
+

+ Save l'immagine in un file a scelta.

+
+

Prec / Prossima

+
+

+ Passa all'immagine precedente/successiva della directory/collezione/ricerca corrente.

+
+

Annulla / Ripeti

+
+

Annulla o ripristina, in sequenza, l'ultima modifica dell'immagine.

+
+ +


+Per editare un'immagine
+Aprire un'immagine. Selezionare una funzione di edit (es. Ritocco > Curve Gamma).
+Regolare i parametri o trascinare la curva. Osservare il cambiamento nell'immagine.
+ +Cliccare [Fatto]. Eseguire similmente altre modifiche.
+Cliccare [Salva+V] per salvare l'immagine con una nuova versione.
+
+Menù Strumenti:
+ +Contiene preferenze utente, funzioni per modifiche in massa (sposta, rinomina, converti, processa file RAW...)
+
+Menù Metadati:
+Manipola dati aggiuntivi sulle foto: titoli, commenti, parole chiave, geotag (luoghi)...
+Ricerca le immagini usando criteri: nomi di file/directory, titoli, date, luoghi...
+
+Menù Aree: Seleziona parti (aree) da modificare separatamente, o per fare copia/incolla.
+
+Menù per le modifiche

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Immagine

+
+

ritaglia, ridimensiona, ruota, aggiunge scritte, distorce, +cambia profili di colore...

+
+

Ritocco

+
+

+ luminosità, contrasto, gamma, bilanciamento del bianco, +distribuzione del colore...

+
+

Correggi
+

+
+

migliora dettaglio, sfuoca, riduce il rumore, gli occhi +rossi, frange di colore e altro +

+
+

Colore

+
+

white + balance, change colors, black & white, positive / negative, + convert color profile

+
+

Deforma
+

+
+

+ corregge la prospettiva, raddrizza linee, appiattisce pagine, deforma variamente.

+
+

Effetti

+
+

effetto poster, vignetta, artistico, mosaico eccetera +

+
+

+ Combina +

+
+

+ miscela più immagini per creare panorami o immagini +migliorate in profondità di campo e altro

+
+

Plugins

+
+

permette di usare un editor esterno come se fosse una +funzione interna di Fotoxx

+
+ +


+

+ \ No newline at end of file diff -Nru fotoxx-13.08/data/userguide-en.html fotoxx-13.09.1/data/userguide-en.html --- fotoxx-13.08/data/userguide-en.html 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/data/userguide-en.html 2013-08-31 06:26:38.000000000 +0000 @@ -6,16 +6,8 @@ - - - - - - - - - Fotoxx User Guide - Fotoxx User Guide  v.13.08
+Fotoxx User Guide + Fotoxx User Guide  v.13.09
 
License and Warranty

Fotoxx is licensed under the GNU @@ -64,7 +56,7 @@ substitute folder if this is your way of thinking. The terms file and image and image file mean a single file of -type  JPEG, PNG, TIFF etc. containing a single image +type  JPEG,PNG,TIFF, etc. containing a single image (photo or illustration).

Installation
@@ -73,9 +65,7 @@ code. Instructions are here: downloads. Fotoxx should show up in the system menu after installation (or maybe after a new login). If not, use the command "fotoxx" in a terminal -window or launcher. Command line options are listed in -the Technical Notes -section.
+window or launcher.


Initialization

@@ -123,10 +113,10 @@
Test Run

After Fotoxx finishes initialization, use the [open] button on the -toolbar to select an image file to view in window tab F. Choose the menu Retouch > +toolbar to select an image file to view in window tab F (face icon). Choose the menu Retouch > Brightness/Color, and in the dialog use the [+++] button to brighten the image. Use the [cancel] button to leave the dialog without changing -the image file on disk. Use the tab G button (gallery) to see all the +the image file on disk. Use the tab G button (gallery icon) to see all the images in the current directory. Use the navigation buttons on the gallery window to navigate within the directory. Click on a thumbnail image to view the image in tab F. If this all works then Fotoxx is @@ -138,7 +128,7 @@ have live help activated by keyboard F1.
   o  Zoom an -image in/out with left/right mouse click or mouse scroll wheel.
+image in/out with left/right mouse click or mouse wheel.
   o  Pan and scroll a zoomed image with mouse left-drag (invisible scroll bars).
   o  Tab G: @@ -155,11 +145,11 @@ in the menu Help > User Guide. The F1 key will bring up a help topic for the current menu or dialog. This appears in your chosen web browser (and can get hidden under the -Fotoxx window if you use maximized windows).
+Fotoxx window if you use maximized windows).


Navigation - Tabs F
and G
-
+
Use window Tab G to show an image gallery window (thumbnails) showing image files in the current @@ -182,7 +172,7 @@
  • Directory: all the image files in a -single directory (or folder)
    +single directory (folder)
  • Search results: the output of a search function to find desired images, which may be in various directories
  • @@ -265,10 +255,11 @@ current active edit function. After the function is closed (dialog [Done] or [Cancel]), these buttons can be used to review all the edits done to the current image. When finished editing an image, use [Save] -to replace the original image file with the modified one. Use [Save+V] -to save the modified image with a new version number (the original file -is not changed). Use [Save+F] to save the modified image to a new file -name ("Save-as"). Many image edit dialogs have sliders, spin buttons, +to replace the original image file with the modified one. Use [Save] +and select an option: save the modified image back to the same file, +save to a new file version (filename.v01.jpg), or input a new file +name and/or location. Many image edit dialogs have sliders, spin +buttons, or editable curves that immediately update the image in the main window. The reaction time depends on the size of the image, the complexity of the function and the speed of your computer. This is @@ -391,7 +382,7 @@ latitude/longitude). Suggestions for how to organize a large image collection can be found here.

    -
    +
    Selecting Images from an Image Gallery Window

    This procedure is used in several functions which operate on multiple image files (batch add or delete tags, batch convert images, slide @@ -512,21 +503,12 @@ Open a camera RAW file and edit with Ufraw (more). + + - Save to Same File - Save modified image to the same -file (overwrite) (more). - - - Save to New Version - Save modified image to the same -file with a new version number appended (more). - - - - Save to New File - Save modified image to a new -file (more). + Save to Disk
    +
    + Save modified image to disk file (more). Rename Image File @@ -676,11 +658,7 @@ View and edit metadata (data stored within image files) - - Edit Caption/Comments - Add or change descriptive text -for an image (more). - + Tags Overview Explanation of tags and how they @@ -688,8 +666,7 @@ Edit Metadata - Add or change image date, -'stars' rating, or tags (keywords) (more). + Add or change image date, rating, caption, comments, or tags (keywords) (more). Batch Add Tags @@ -815,6 +792,12 @@ size, shape, content + Rotate 90
    +
    + Turn an image 90 left or right, to upright the image (more).
    +
    + + Rotate Rotate an image (level an image or turn in 90 degree steps) (more). @@ -1155,6 +1138,12 @@ Join 2-4 overlapping images vertically (more). + Mashup
    +
    + Arrange multiple images and text on a layout. (more).
    +
    + +

    @@ -1177,8 +1166,7 @@

    Toolbar Buttons - Tab F (image window)

    -
    -
    +

    @@ -1200,7 +1188,7 @@ - @@ -1219,9 +1207,9 @@ - - + + @@ -1235,7 +1223,7 @@

    Toolbar Buttons - Tab G (gallery window)
    -
    +
    Sync.G
    Set the gallery to the directory of the image in Tab F.
    +
    Set the gallery to the directory of the image in Tab F (navigation).
    Save / +V / +F Save image to the same file, to -a new version, or to a new file (more). Save
    +
    Save (modified) image to disk file (same, new version, new file)  (more).
    Trash
    @@ -1244,7 +1232,8 @@ - + @@ -1375,12 +1364,12 @@ dimensions) (more) - + - + @@ -1466,9 +1455,9 @@

    -Keyboard Shortcuts

    -Keyboard shortcuts are available for some functions. The notation -Ctrl+S means press and hold the Control key, then press the S key. The +Keyboard Shortcuts

    Keyboard shortcuts are +available for some functions. The notation Alt+G means press and hold +the Alt key, then press the G key. The following shortcuts (down to F1) are fixed and cannot be changed, and the rest are changeable (more).

    @@ -1486,10 +1475,7 @@ - - - - + @@ -1588,25 +1574,17 @@ - - - - - - - - - - - - + + + - + @@ -1614,7 +1592,8 @@ - + @@ -1622,7 +1601,7 @@ - + @@ -1678,7 +1657,7 @@ File Menu


    -Favorites (toolbar button)
    +Favorites (F-tab star icon )

    This is a graphic menu in a popup window which you can populate with your frequently used functions and arrange them on the window using the @@ -1805,35 +1784,25 @@ supported by ufraw/dcraw.


    -
    Save to Same File  -or toolbar button [Save]
    -Save the current image file back to itself. If the file is a JPEG file, -the default quality (90) is used. If this is an original file (not a -versioned file), you will be warned that you are overwriting the -original file. You can override the warning and continue. You can also -elect to permanently suppress this warning if wanted. If you have -disabled the warning and wish to reinstate it, you must edit the file -/home/<user>/.fotoxx/parameters  and change -the value of "warn overwrite" from "0" to "1".
    -
    -Save to New Version  or -toolbar button [Save+V]
    -Save the current image file with a new version number. File names with +Save +to Disk  or toolbar button [Save]

    +In the dialog, select one of the three options: new version, new file name, or replace file.
    +
    +Replace:Save the current image file back to itself. If a JPEG file, +the default quality is used (this value can be set in User Settings).
    +
    +New Version:
    Save the current image file with a new version number. File names with version numbers are formatted "filename.vNN.ext" where NN is a version number 01 to 99.  The 4 characters .vNN are inserted between the file name and extension. If the file name has no versions, version .v01 will be created. If file versions are already present on disk, then the next higher version number is used. There is no dialog or confirmation. -If the file is a JPEG file, the default quality (90) is used.
    -
    -Save -to New File  or toolbar button [Save+F]
    -
    -A dialog opens to save the current image file to a selected file, which +If the file is a JPEG file, the default quality is used
    (this value can be set in User Settings).
    +

    +New File:
    A dialog opens to save the current image file to a selected file, which can be the original file, another existing file, or a new file. An -edited image file can be saved in formats JPEG, PNG, BMP, ICO, and -TIFF. BMP and ICO are normally not recommended for photos. Neither -supports metadata, and ICO is only for very small images (icons). JPEG +edited image file can be saved in formats JPEG, PNG, BMP and +TIFF. BMP is normally not recommended for photos (does not support metadata). JPEG is normally the best option, since these are compressed to reduce space. You can choose a JPEG quality value in the range 1-100. Lower values give smaller files and less image quality. Values above 70 are @@ -1842,7 +1811,7 @@ larger than JPEG files of the highest quality. TIFF files are uncompressed and larger than JPEG or PNG. TIFF and PNG files may be saved with 8 or 16 bits per color. The 16-bit formats only makes sense -for files converted from a RAW format supporting more than 8 bits per +for files converted from a RAW format having more than 8 bits per color (camera RAW files are typically 10-12 bits with noise beyond that). It is rare that the difference between 8 and 16 bits per color can be seen with the eye. However, an image with higher bits has more @@ -1883,11 +1852,10 @@
    Sync.G
    Set the gallery to the directory of the image in Tab F.Set the gallery to the directory of the image in Tab F (navigation).
    +
    Open
    Rotate Rotate 90
    +
      x
    turn the image 90 degrees, or -level a tilted image (more)rotate the image +/- 90 degrees (more)
    Voodoo Enhance left / right arrow keys Previous / next image
    Page Up / Down keys Previous / next image
    + or =  /  - keys Zoom image bigger / smaller These can be changed using Tools > Keyboard Shortcuts
    Ctrl+S Save to Same File
    Ctrl+Shift+S Save to New File
    Ctrl+V Save to New File Version
    N Rename Image File
    K Keyboard Shortcuts Keyboard Shortcuts - edit
    +
    Alt+G
    T Trim Image Trim/Crop Image
    +
    V
    B Brightness/Color Brightness/Contrast/Color
    Alt+U

    -The default JPEG quality is used unless you change the value in the above dialog. The default value is a user settings -option. This default value is used for Save and Save+V, so if you want -to use a different value for a particular file, use save+F.
    +The default JPEG quality is used unless you change the value in the above dialog. The default value is a User Settings +option.

    -The technical notes section describes +The Technical Notes section describes potential loss of image quality from repeated edit and save of JPEG images.

    @@ -1923,8 +1891,7 @@ image file.


    -Print Image File
    -

    +Print Image File

    The print menu brings up a standard Page Setup dialog where you can select a printer, a paper size (letter, A4, etc.), and orientation (portrait or landscape). Select your printer (do not use a default @@ -2085,7 +2052,8 @@  Default JPEG
     quality
    - The "quality" value used for Save and Save+V. Use Save+F if you want to use another value for a particular file.
    + The "quality" value used for [save] [replace] and [save] [new version].
    +Use [save] [new file] to use another value for a particular file.
    @@ -2157,7 +2125,7 @@

    Keyboard Shortcuts
    -This function is +This function is used to view or change custom keyboard shortcuts. The currently assigned shortcuts are shown in the window. To change one of these, click on it to make the key assignment and menu name appear below (the @@ -2199,37 +2167,36 @@
    Manage Collections Dialog
    -
    The Manage Collections dialog has four buttons:
    +

    +The Manage Collections dialog has five buttons:
    New: -Start a new collection. After you specify a collection name, the standard dialog for selecting images from gallery windows is started (link). +Start a new collection. After you specify a collection name, the standard dialog for selecting images from gallery windows is started (link). Navigate to desired directories/galleries and select the initial images -for the collection. When done, the collection is saved and can be +for the collection. When the dialog is closed via [Done], the collection is saved and can be further edited as described below.
    Choose: Choose a collection for viewing or editing. The gallery -window will show its curent image thumbnails. -Use the popup menus described below to add, remove, or move images -within the gallery, or use the [Images] button to collect many images for insertion.
    - -Images: Add images to the image cache using the standard dialog for selecting images from gallery windows (link). -Select image files in any order from any gallery you navigate to. When -done, the images are added to the image -cache. From there the images can be added to an existing collection +window will show its current image thumbnails. You can now use the popup menus (below) to rearrange images or delete them. To add new images, press [Images].
    + +Images: Add images to the image cache using the standard dialog for selecting images from gallery windows (link). +This dialog remains open while you navigate to other +directories to select images. Select image files in any order +from any directory. You can also use Metadata > Search Images to +create a gallery from which images can be selected, or choose a +collection to view and select images. When the dialog is closed via [Done], the selected images are added to the image +cache. From there the images can be added to a collection using the popup menus (below).
    Clear:
    Clear the image cache.
    Delete:
    Select an existing -collection to delete. The collection is deleted, not the images.

    -Right-click Popup Menus
    -
    Gallery thumbnails have a right-click popup menu which includes the following entry:
    -   Copy to Image Cache - add the clicked image to the image cache.
    -Thumbnails in a collection gallery also have the following popup menu entries:
    -   Remove from Collection - remove the image from the collection
    -   Cut to Image Cache - remove the image and add it to the image cache
    -   Paste Image Cache Here (clear) - insert cached images, clear the image cache
    -   Paste Image Cache Here (keep) - insert cached images, keep the image cache
    -
    Images +collection to delete. The collection is deleted, not the images.
      +
    +Right-click Popup Menus

    +
    Gallery thumbnails from any gallery have a right-click popup menu which includes the following entry:
        Copy to Image Cache - add the clicked image to the image cache.
    +Thumbnails in a collection gallery also have the following popup menu entries:
        Remove from Collection - remove the image from the collection
        Cut to Image Cache - remove the image and add it to the image cache
        Paste Image Cache Here (clear) - insert cached images, clear the image cache
        Paste Image Cache Here (keep) - insert cached images, keep the image cache
    +

    +Images can be copied to the image cache by right-clicking their thumbnails and selecting the Copy menu. These can be later inserted (pasted) into a collection by right-clicking a thumbnail @@ -2243,14 +2210,18 @@ Summary
      -
    • Make a new collection: Use -the [New] button and provide a name. Select images with the popup -dialog that follows. When the dialog is closed, the chosen images are +
    • Make a new collection: +Use +the [New] button and provide a name. Select images with the image file +selection dialog that follows. When the dialog is closed, the chosen +images are added to the collection.
    • -
    • Add images to an existing +
    • Add +images to an existing collection: Use the [Choose] button and select a collection. Use the -[Images] button to select images. Right-click a thumbnail and select +[Images] button to select images. After closing this dialog, the chosen +collection is shown. Right-click a collection thumbnail and select one of the Paste menus to insert the selected images.
    • Remove images from a collection: Right-click a thumbnail to remove, then select the Remove menu.
    • Move images within a @@ -2258,16 +2229,15 @@ and add to the image cache, or select the Copy menu to add to the image cache without removing it. Repeat for multiple images if wanted. Right-click a thumbnail position to insert the images, select one of -the Paste menus. You can also use the [Images] button to select many -images to paste afterwards.
      +the Paste menus.

    Move Collections
    -An image database can be moved by renaming or moving its top directory. +A Fotoxx image database can be moved by renaming or moving its top directory. The image files will follow automatically.  The function -Synchronize Files can fix the Fotoxx search index. The named +Synchronize Files must be used to update the Fotoxx search index. The named collections, however, will become useless because the stored file paths are invalid. The function Move Collections can be used to replace the top directory in all the existing named collections. Enter the old and @@ -2277,7 +2247,7 @@ Slide Show
    A dialog pops up to ask for some initial inputs. Use the [Select Files] -button to select image files from the gallery window (link), +button to select image files from the gallery window (link), which may be the current directory, a collection, or the result of an image search function. You can select random files or groups from this gallery, and/or navigate elsewhere to select other files. When @@ -2323,19 +2293,21 @@
    Batch Rename Files

    -This +This function is helpful if you want many image files (perhaps with the same date or from the same event) to have the same names with an added sequence number. In the dialog, specify a base name, a starting sequence number, and an increment. In the base name, specify where you want the sequence number with '#' characters. For example, a base name of "arctic cruise ###-2012", a starting sequence number of 100, and an -increment of 10 will produce a series of file names like this: arctic cruise 100-2012, arctic cruise 110-2012, arctic cruise -120-2012, etc.  File extensions are not changed. The number of '#' characters is the +increment of 10 will produce a series of file names like this:
    +   arctic cruise 100-2012, arctic cruise 110-2012, arctic cruise +120-2012, etc. 
    +File extensions are not changed. The number of '#' characters is the length of the sequence number. Leading zeros are supplied if the sequence number is smaller, and the length will be increased if the sequence number is larger. Use the button [select files] to select -image from a gallery window (link). +image from a gallery window (link). When done, press [proceed] to rename all the image files at once. Don't use this function to rename non-image files, since Fotoxx will also try to update the search index file.
    @@ -2346,7 +2318,7 @@ function is used to convert, resize and move many image files at once (for planned uploads to a web site, to save disk space, etc.). The menu opens a dialog to select image files and specify options. Use the -button [select files] to select image files from a gallery window (link). Select +button [select files] to select image files from a gallery window (link). Select a maximum width and height for the output files, or check "no change" if no size reduction is wanted. The aspect ratio will not change: the image is reduced to fit within both @@ -2383,7 +2355,7 @@ provides a greater margin for retouch functions that can radically shift the brightness distribution, causing a problem known as "color banding". Use the [Select Files] button to choose one or more RAW image -files from a gallery window (link). +files from a gallery window (link). Choose one of the output formats. Choose the parameters for the program dcraw - the dialog buttons are used to configure the dcraw command shown below. The defaults should work fine. The image files are @@ -2593,7 +2565,7 @@ Burn Images to CD/DVD
    This function enables you to choose image files and burn them into a CD or DVD. When the function starts, an image gallery window is displayed -from which you can select the image files to burn (link). When +from which you can select the image files to burn (link). When done, the list of image files is sent to Brasero to burn a CD or DVD.


    @@ -2606,6 +2578,7 @@ dump.  


    +
    Metadata Menu


    Note: the program exiftool @@ -2619,23 +2592,7 @@ There are several alternatives for organizing a large image collection so that it can be easily searched.

    -
    -Edit Caption/Comments
    -
    This is a special function for editing image text -saved in IPTC "Captions" and EXIF "User Comments". Enter any text you -want to associate with the current image. Multiple text lines of any -length can be entered, up to an overall limit of 2000 characters. Press -the [Apply] button to save the text in the IPTC and EXIF data for the -current image. The dialog can be left open while navigating to -different images, and the current text for each image is shown, if any. -Enter or modify the text and press [Apply] to make the change -permanent. If you need to enter (nearly) the same text for multiple -images, you can use cut and paste. You can leave this window open in a -corner of the monitor to show the comments as new images are viewed -(also in Slide Show mode). You can search for images based on captions -and comments (see topic Search Images).
    -
    -
    +
    Tags Overview

    Image files can have classification tags (categories, keywords) assigned to them. These can be used to search a large image collection @@ -2702,8 +2659,8 @@

    Edit Metadata

    -
    The function
    Metadata > Edit Metadata is -used to edit the most frequently used metadata: image date, rating, and +
    The function
    Metadata > Edit Metadata is +used to edit the most frequently used metadata: image date, rating, caption, comments, and tags. The dialog initially shows existing data for the current image. After making additions or changes, press [Apply] to update the image file.
    @@ -2717,12 +2674,12 @@ assuming that many of the same tags will be used repeatedly. Point and click the same way. The date of the image, if available, is shown as "image date". This may be entered if missing, or changed. You can enter -a full date in the format yyyymmdd or a shorter format yyyy or yyyymm. +a full date in the format yyyy-mm-dd or a shorter format yyyy or yyyy-mm. A missing month/day is logically equivalent to 01/01 when used as a low limit for searching, or 12/31 when used as a high limit. The [use-last] -button fills-in the date from the last date entered or shown. This is +button fills-in the date from the last date entered. This is to allow easy dating of a series of images. If time is important, you -can include a time using the format yyyymmddhhmmss. You may enter an +can include a time using the format hh:mm ( :ss is optional). You may enter an optional "stars" rating for the image. The dialog remains open if you navigate to a new image, and the data is updated from that image. The [Apply] button writes the data to the image file @@ -2757,7 +2714,7 @@ tags (i.e. the same event or subject), use this function to speed up the process. In the dialog, use the [select files] button to open a gallery window with thumbnail images from which you can select the -image files (link). +image files (link). After selecting files, specify tags to add to the images by clicking tags in the "defined tags" list. If you need to create new tags, use the @@ -2991,7 +2948,7 @@ With this function, you can select many images and add the same location data to all of them. Use the [select files] button to select the image -files from a gallery window (link). +files from a gallery window (link). Then get the location data as described above in Edit Geotags. Press [proceed] to start the update process. Use this function also to correct city/country spellings or latitude/longitude data, or to fix @@ -3163,6 +3120,7 @@ organization options.


    +
    Area Menu


    @@ -3494,7 +3452,9 @@
    Left click on the current image and the saved area is pasted into the image. It can be moved around by dragging with the mouse. Use the resize and angle buttons to resize or rotate the pasted object. Use -the edge blend slider to make a blended edge if desired. Press the +the edge blend slider to make a blended edge if desired. The brightness +slider is used to adjust the brightness to match the background. Press +the [done] button in the popup dialog. The pasted area now behaves like a Select Area. You can edit within the area and use the [blend width] control in the Select Area dialog.
    @@ -3517,21 +3477,17 @@

    Rotate Image

    -

    -The -rotate menu function starts a -dialog to rotate the image clockwise (+) or counterclockwise (-). For a +

    The Rotate Image menu function starts a +dialog to rotate the image by any arbitrary amount. For a tilted image, use the mouse to drag the right edge up or down until the image looks level. Use the 90 degree buttons to convert an image taken -in -vertical format to horizontal. The resulting image is automatically +in vertical format to horizontal. The resulting image is automatically updated on disk, so you can use the [Next] button to move to the next image, leaving the dialog active. The spin control can be used to set -any -angle, -180 to +180 degrees. No resolution is lost with 90 degree +any angle, -180 to +180 degrees. No resolution is lost with 90 degree rotation. For other angles, the loss of resolution is about 1/2 pixel.

    -The Turn Image dialog is a popup from a right-click menu from the main +The Rotate Image 90 dialog is a popup from a right-click menu from the main window. This is a convenient way to upright a turned image. The image is rotated left or right and written to disk (no need to save the image as with other edit functions). The dialog stays open so you can go @@ -3652,7 +3608,7 @@ appreciate feedback and new ideas about how to this more effectively.


    -Brightness/Color
    +Brightness/Contrast/Color
    This function is used to change brightness, contrast, color saturation, and color balance (relative RGB levels). You can adjust all of these items @@ -3711,9 +3667,9 @@
    The buttons [++] etc. can be used to move the curve in small steps. The above curve was made using the [-+] button which moves the lower part -down and the upper part up.
    -
    -
    +down and the upper part up.

    +
    +
    Tone Mapping
    Tone mapping increases the apparent brightness range of an image by @@ -4329,6 +4285,7 @@


    +
    Bend Menu



    @@ -4401,7 +4358,8 @@ which can now be adjusted.


    -Warp an Image (distort)

    +Warp an Image (distort)


    Warp area

    This function can be used to make distortions within an image. You can @@ -4497,7 +4455,8 @@

    Graduated Blur
    -
    This +

    +This is another function to blur an image, but it works differently. In the dialog, you specify a contrast limit and a blur radius. Only pixels with less contrast than the given limit are blurred, and the blur @@ -4507,7 +4466,7 @@ can be used, for example, to smooth skin tones without blurring hair or reducing the sparkel in the eyes. Taken to extremes, it produces a "cartoon" effect (a simple color drawing), especially when used in -combination with tone mapping and other edit functions, as in this +combination with other edit functions, as in this example.


    @@ -4543,7 +4502,7 @@
    Four user settings control this process: "color depth" sets the number of colors to be used (bits per RGB color). 1 = 8 colors, 2 = 64 colors -... 5 = 32768 colors;  "target group area" sets a lower limit for +... 5 = 32768 colors;  "patch area goal" sets a lower limit for areas that will have their own color: areas smaller than this number of pixels will be absorbed into an adjacent area with the nearest color match; "req. color match" sets the minimum color match required for a @@ -4589,6 +4548,7 @@ which is initially at the center of the image.


    +

    Combine Menu

    @@ -4861,13 +4821,54 @@ Most panoramas will still work OK even if the lens_mm setting is off by 10%.

    +
    +Mashup
    +
    Arrange multiple images and formatted text in a layout (photo montage).
    +
    +In the first Mashup dialog, choose a background or layout image where +other +images will be placed. Choose an existing image or create a new monotone +image with a specified size and color. You may also open a previously +saved mashup project and continue editing. The 2nd Mashup dialog is a +choice: edit images, edit text, save the mashup project for +later revision, save the completed composite image (done) or +abandon the image (cancel). Depending on your choice of image or +text editing, you will get the Edit Images or the Edit Text dialog. +Each of these go back to the 2nd dialog when done, so you can add +or modify images and text in any sequence.The last image shows some of the possibilities.
    +
    +The Edit Images dialog is for +choosing and placing images on the layout. The [Add] button leads to a gallery file selection dialog (link). Selected images are placed on the layout. Click on an image to select it, and use +the Size, Angle, Transparency, and Edge Blend controls to adjust the +image. Drag the image from its approximate midpoint to reposition the +image in the layout. The dialog controls operate on the last image added, +clicked or dragged. Images can overlap with adjustable transparencies. +Remove an image by clicking it and pressing [Delete]. When done +editing, press [Done] to return to the 2nd Mashup dialog.
    +
    +The Edit Text dialog is for placing text on the layout. Enter some text and press [Add]. The text is placed on the +layout. Drag it into position, then use the dialog controls to set +font, size, color, angle, background color, outline size and color, +shadow size and color, and transparencies for each of these. Drag the text to a new +position at any time. Click on any existing text to see its properties +in the dialog and revise them. Click on a text and press [Delete] to +remove it.
    When done +editing, press [Done] to return to the 2nd Mashup dialog.
    +
    +You can also enter images saved by Select Area. Navigate to the directory /home/<user>/.fotoxx/saved_areas  +and open any of the .tiff images found there. These have the outline of the selected area and are +transparent outside this edge.
    +
    +
    +
    +

    Plugins Menu

    Other image edit programs (e.g. Gimp) can be added to this menu. They will then work like any other edit function in Fotoxx. After using one of these external programs to modify an image, you can use the Fotoxx [Undo] and [Redo] buttons to check the results, perform additional -edits with Fotoxx, or use [Save] or [Save+F] to save the edited image. +edits with Fotoxx, or use [Save] to save the edited image. The image passed by Fotoxx to the external program is a TIFF file with 16 bits per color. Most programs can read this but may use only 8 bits. When finished using the external editor, save the image back to itself @@ -4895,6 +4896,7 @@ -auto-gamma


    +

    Help Menu

     
    @@ -5042,16 +5044,15 @@ selected by name and viewed directly as a gallery of thumbnails or sequentially in the main window.

    -Summary
    -The following table summarizes the options. Keep in mind that dates -are always searchable with any of these options, assuming photos from a -digital camera with the date saved automatically in EXIF. Scanned -images and many images from the internet would need the date entered -manually.
    +Summary
    The +following table summarizes the options. Keep in mind that searching by +date works with any of these methods, and you can combine the methods +any way you wish, e.g. "directory and file names" together with " +captions and comments".

    - +
    @@ -5113,10 +5114,11 @@ +Berlin Germany 52.52 N 13.42 E
    Geotags
    e.g. location data like this:
    -Berlin, Germany, 52.52 N, 13.42 E
    • cameras with GPS store data automatically
    • add locations in a few seconds per image
      -(or batch add location to a group of images)
    • search location by clicking on a world map
    • search location and date-range by clicking tabular report
    +(or batch add location to a group of images)
  • search location by clicking on a world map
  • search location and date-range by clicking
    +on a tabular report
    • useful only for searching by location
      @@ -5127,8 +5129,8 @@
    Named Collections
    -e.g. names like this:
    -best scenery, Italy 2012 ...
    +e.g. names like this:
       best scenery
    +   Italy 2012
    • make ad hoc collections based on any criteria
    • images can be in multiple collections
    • images can be multiple times in one collection
    @@ -5151,6 +5153,33 @@ This also helps translators to find the topics needing revision.

    +v.13.09
    +
    +
      + +
    • The vertical menu and toolbar has better visual feedback
    • + +
    • The window F/G/W tabs were changed to icons. This document still uses "F/G/W".
    • +
    • Tool tips (popup descriptions) were added to all menus.
      +
    • + +
    • The topic Save to Disk was revised for changes in the user interface.
      +
    • + +
    • The topic Rotate was revised for changes in the user interface.
      +
    • +
    • Metadata Edit includes captions and comments (was a separate function).
    • The Quick Start guide was revised for the new tab icons and a revised toolbar.
      +
    • +
    • Area Paste has a brightness adjustment to more easily match the background.
    • + +
    • The Synchronize Files function outputs the image counts for each subdirectory.
    • +
    • Mashup - a new function to arrange images and formatted text in a layout.
    • +
    • The topic Manage Collections was revised for clarity.
      +
    • + + +
    + v.13.08
      @@ -5337,7 +5366,7 @@ paragraph in File Menu was removed.
    • The topic Brightness Distribution was modified for the addition of a 4th graph.
    • -
    • The topic Selecting Images from an Image +
    • The topic Selecting Images from an Image Gallery Window was modified for expanded functionality.
    • The topic Manage Collections was revised for revised functionality.
    • @@ -5358,11 +5387,11 @@ process: edit a text file with English text strings followed by their corresponding translations. See one of the existing translations as an example, e.g.
      -    /usr/share/fotoxx/locales/fotoxx-de.po (the German +    /usr/share/fotoxx/locales/translate-de.po (the German translation).

      A new translation for language -code xx would be saved at /usr/share/fotoxx/locales/fotoxx-xx.po.
      +code xx would be saved at /usr/share/fotoxx/locales/translate-xx.po.
      After making such a file, you can test it by starting Fotoxx in a terminal:
         $ fotoxx @@ -5372,7 +5401,7 @@

      Hardware and Software Requirements

      -Fotoxx works best on a strong computer (2+ GHz clock, 2+ processor +Fotoxx works best on a strong computer (2+ GHz, 2+ processor cores, 2+ gigabytes of memory). Multiple CPU cores are utilized for compute intensive functions (e.g. sharpen, warp, tone mapping, HDR, panorama). Slower computers will work, but may be quite slow for some @@ -5384,14 +5413,14 @@ Limitations
      The image limits are based on having a strong computer as described above. 
      - +
      @@ -5416,12 +5445,18 @@ the topic Tags Overview. -
        total images  Fotoxx has been tested with 50K images with no noticable slowdown.
      - 500K images or more should be practical on a strong computer.
      + 500K images should be practical on a strong computer.
       Image search functions may get slower beyond 100K images.
      +
     
    -Programs Required by Fotoxx

    +Programs Required or Recommended for Fotoxx

    Fotoxx requires the following -libraries and programs to function at run time:
    +libraries and programs to function at run time.
    +
    + + exiftool must be version 8.60 or +later, otherwise the metadata functions will not work.
    +addr2line is contained in the GNU binutils package.
    If Fotoxx crashes with a "zappcrash" output, the information may be useless if this utility is not installed.
    + @@ -5454,14 +5489,15 @@ + + + - -
       xgamma used for the Monitor Gamma function (adjust monitor gamma)
      addr2line
    +
    adds line numbers to zappcrash dump - important debug information
    +
    - The program exiftool must be version 8.60 or -later, otherwise the metadata functions will not work.
    -
    -Packages Required for Fotoxx Source Build

    + + 
    Packages Required for Fotoxx Source Build
    See the README file for instructions on compiling Fotoxx from source.
    In addition to the programs listed above, the following are also needed:
    @@ -5496,10 +5532,17 @@ Note: package names and which files are included in each package are decisions made by each Linux -distro (i.e. the usual chaos). The above names are valid for +distro (the usual chaos). The above names are valid for Debian-based distros (including Ubuntu). For other distros you may have -to dig to find the right packages to install.
    -
    +to dig to find the right packages to install.
      +

    +zappcrash
    - backtrace dumps
    +If Fotoxx has a fatal error (e.g. segment fault - invalid memory +reference), it attempts to intercept the error and produce a backtrace +dump which appears in a popup window and/or in the log file (
    /home/<user>/.fotoxx/fotoxx.log). Please send this information to me so I can hopefully fix the error (contact me). A description of what you did immediately before the crash would also be helpful.
    + + 
    + Command Line Options @@ -5570,7 +5613,7 @@ for special cases where Fotoxx is used in read-only mode. This can make Fotoxx start faster if the image library is huge, the computer is slow, or there are many modified (and not synchronized) image files. Do not -use this option when Fotoxx is used to edit images.
    +use this option if Fotoxx is used to edit images.

    Status Bar Information

    Example:  CPU 123%  1234x987x8  0.45MB  56%  @@ -5672,10 +5715,10 @@ program dcraw.

    Make Fotoxx the default application -for .jpg .png .tif files
    -The kind folks at Gnome have decided that this is too complex for mere +for .jpg .png and .tif files

    +The kind folks from Gnome have decided that this is too complex for mere humans to control. If you use the standard "open with" dialog, or -"properties / open with", you can only choose from an official list of +"properties / open with", you can only choose from an official and immutable list of applications.

    The following works (at least for recent Ubuntu releases):
    @@ -5726,18 +5769,18 @@ but the alpha channel is lost when the edited image file is saved.

    Image Deterioration From Repeated -Editing
    -If you save an edited image file and then use this file later to +Editing
    If +you save an edited image file and then use this file later to perform additional edits, pixel resolution may be lost. It is better if you do all edits when the image files are first processed, to minimize image deterioration (or go back to the originals if you still have -them). The following edit functions reduce resolution about 1/2 pixel, -and this error can accumulate if multiple functions are applied in -series: rotate (other than 90/180 degrees), HDR, HDF, stack, panorama, -any bend/warp function. Resize to a smaller size will (of course) reduce -resolution, but using the fraction 1/2, 1/3, or 1/4 gives the best -results.
    -
    +them). Any function that changes image size or shape will reduce +resolution about 1/2 pixel. These are the Fotoxx bend/warp and +composite functions. Rotating 90 or 180 degrees does not affect +resolution. When downsizing an image, using the ratios 1/2, 1/3, 1/4 +will give the least loss of resolution. Functions that change +brightness, color, or contrast do not affect resolution.
    + 
    JPEG Compression
    If a JPEG file from a digital camera is saved with Fotoxx, you will likely notice a large reduction in file size, even if a high JPEG @@ -5767,8 +5810,8 @@ data with whatever exiftool was able to read correctly. If desired data gets lost, you can restore using the "Edit Any Metadata" function.

    -Newline characters in User Comments or Captions

    -When editing User Comments or Captions, if you need to align text in +Newline characters in user Comments and Captions

    +When editing metadata Comments or Captions, if you need to align text in columns, you can use the [enter] key to force new lines. These are converted into the string "\n" before being stored in image EXIF/IPTC data, since newline characters are not allowed (exiftool converts them @@ -5859,6 +5902,12 @@ possibly user-modified
    + + + + @@ -6046,10 +6095,9 @@
    Dialog Window Positioning

    -For commonly used dialogs, Fotoxx saves the dialog window's final -position (relative to the main window) and tries to restore the same +For commonly used dialogs, Fotoxx saves the dialog window position (relative to the main window) and tries to restore the same position the next time the dialog is started. This works, mostly. -Sometimes the window manager (Gnome, Unity ...) ignores this request +Sometimes the window manager ignores this request and places the dialog somewhere else.

    Benchmarks
    (based on Fotoxx v.12.12)
    @@ -6123,7 +6171,7 @@ Questions and Problems

    If you have a question or run into a problem, you may contact me. If you send me any images that work poorly, I can use these to try to improve Fotoxx. If -there is a traceback dump on the screen, or error messages in the log +there is a traceback dump (zappcrash) on the screen, or error messages in the log file /home/<user>/.fotoxx/fotoxx.log, please send these also. Please explain exactly how to produce the error, and what version of Fotoxx and what Linux flavor you are using.
    diff -Nru fotoxx-13.08/debian/changelog fotoxx-13.09.1/debian/changelog --- fotoxx-13.08/debian/changelog 2013-08-03 15:00:43.000000000 +0000 +++ fotoxx-13.09.1/debian/changelog 2013-09-02 02:34:41.000000000 +0000 @@ -1,3 +1,20 @@ +fotoxx (13.09.1-1dhor~precise) precise; urgency=low + + * New function Mashup: arrange multiple images and text on a background. + (move around via mouse, resize, rotate, add transparency, add font effects). + * Metadata edit functions were combined: tags/ratings/captions/comments. + * File save options: interface revised for clarity and mistake avoidance. + * Window tabs now have icons instead of "F/G/W" letters. + * Menus and toolbars have visual feedback and popup descriptions. + * Paste a selected area: adjust brightness to better match background. + * Fix Stuck Pixels: user feedback and responsiveness was improved. + * File Synch: show image file counts for each subdirectory processed. + * Bugfix: crash if menus clicked during generation of a large gallery. + * Bugfix: Gallery file selection: select low-high range was broken. + * Bugfix: Deleted images were not being removed from collection lists. + + -- Dariusz Duma Mon, 02 Sep 2013 04:33:32 +0200 + fotoxx (13.08-1dhor~precise) precise; urgency=low * White Balance: a direct adjustment for color temperature was added. diff -Nru fotoxx-13.08/debian-control fotoxx-13.09.1/debian-control --- fotoxx-13.08/debian-control 2013-08-01 20:57:53.000000000 +0000 +++ fotoxx-13.09.1/debian-control 2013-08-31 06:26:38.000000000 +0000 @@ -1,9 +1,9 @@ Package: fotoxx -Version: 13.08 +Version: 13.09.1 Architecture: amd64 Section: graphics Installed-Size: 8948 -Maintainer: Mike Cornelison +Maintainer: Mike Cornelison Priority: optional Homepage: http://kornelix.com/fotoxx Depends: libc6, libgtk-3-0, binutils, xdg-utils, libtiff4, libimage-exiftool-perl, liblcms2-2 diff -Nru fotoxx-13.08/desktop fotoxx-13.09.1/desktop --- fotoxx-13.08/desktop 2013-08-01 20:57:53.000000000 +0000 +++ fotoxx-13.09.1/desktop 2013-08-31 06:26:38.000000000 +0000 @@ -6,7 +6,7 @@ Comment=Edit photos and manage collections Comment[es]=Editar fotografías y administrar colecciones Comment[gl]=Editar fotografías e administrar coleccións -Categories=Photography +Categories=Graphics;Photography Type=Application Terminal=false MimeType=image/bmp;image/gif;image/tiff;image/jpeg;image/png; diff -Nru fotoxx-13.08/doc/README fotoxx-13.09.1/doc/README --- fotoxx-13.08/doc/README 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/doc/README 1970-01-01 00:00:00.000000000 +0000 @@ -1,48 +0,0 @@ -Installation of fotoxx from source tarball - -Building fotoxx requires the following packages: - g++ the Gnu C++ compiler and linker - libgtk3.0-dev GTK3 graphics library (GUI base) - libtiff4-dev read/write tiff-8/16 image files - libpng12-dev read/write png-8/16 image files - liblcms2-dev change color space (sRGB/Adobe RGB) - -At run time the following packages are also needed: - exiftool read/write metadata (EXIF etc.) - dcraw convert camera RAW files to TIFF - ufraw GUI interface for dcraw - xdg-utils LSB standard Linux utilities - brasero needed to write images to CD/DVD - -The above are recent Ubuntu names. Package naming is chaotic -so you may have to to hunt down the names for your distro. - -Build and install fotoxx as follows: - 1. Download the tar file (fotoxx-N.N.tar.gz) to Desktop - 2. Open a terminal window - 3. $ cd Desktop # go to Desktop - 4. $ tar -xzf fotoxx-N.N.tar.gz # unpack to ./fotoxx - 5. $ cd fotoxx # go there - 6. $ make # build program - 7. $ sudo make install # install program - -Missing dependencies will cause error messages in step 6. -Install these from your repository and repeat step 6. - -Step 7 moves all files to the following locations: - /usr/bin/fotoxx binary executable - /usr/share/fotoxx/ icons, translations ... - /usr/share/doc/fotoxx/ user guide, README ... -For step 7, use "sudo" or "su -c" for root privileges. - -Please review the user guide (Help menu) before trying fotoxx. - -NOTES FOR PACKAGE BUILDERS: -If $PREFIX is defined, files go there instead of /usr. -If $DESTDIR is also defined, files go to $DESTDIR$PREFIX. -exiftool (package name varies) must be version 8.60 or later. -Please do not move any files into a separate "documentation" -or "data" package, since this may make Fotoxx non-functional -if installed without the extra packages. - - diff -Nru fotoxx-13.08/doc/README-en fotoxx-13.09.1/doc/README-en --- fotoxx-13.08/doc/README-en 1970-01-01 00:00:00.000000000 +0000 +++ fotoxx-13.09.1/doc/README-en 2013-08-31 06:26:38.000000000 +0000 @@ -0,0 +1,49 @@ +Installation of fotoxx from source tarball + +Building fotoxx requires the following packages: + g++ the Gnu C++ compiler and linker + libgtk3.0-dev GTK3 graphics library (GUI base) + libtiff4-dev read/write tiff-8/16 image files + libpng12-dev read/write png-8/16 image files + liblcms2-dev change color space (sRGB/Adobe RGB) + +At run time the following packages are also needed: + exiftool read/write metadata (EXIF etc.) + dcraw convert camera RAW files to TIFF + ufraw GUI interface for dcraw + xdg-utils LSB standard Linux utilities + binutils GNU binary utilities + brasero needed to write images to CD/DVD + +The above are recent Debian names. Package naming is chaotic +so you may have to to hunt down the names for your distro. + +Build and install fotoxx as follows: + 1. Download the tar file (fotoxx-N.N.tar.gz) to Desktop + 2. Open a terminal window + 3. $ cd Desktop # go to Desktop + 4. $ tar -xzf fotoxx-N.N.tar.gz # unpack to ./fotoxx + 5. $ cd fotoxx # go there + 6. $ make # build program + 7. $ sudo make install # install program + +Missing dependencies will cause error messages in step 6. +Install these from your repository and repeat step 6. + +Step 7 moves all files to the following locations: + /usr/bin/fotoxx binary executable + /usr/share/fotoxx/ icons, translations ... + /usr/share/doc/fotoxx/ user guide, README ... +For step 7, use "sudo" or "su -c" for root privileges. + +Please review the user guide (Help menu) before trying fotoxx. + +NOTES FOR PACKAGE BUILDERS: +If $PREFIX is defined, files go there instead of /usr. +If $DESTDIR is also defined, files go to $DESTDIR$PREFIX. +exiftool (package name varies) must be version 8.60 or later. +Please do not move any files into a separate "documentation" +or "data" package, since this may make Fotoxx non-functional +if installed without the extra packages. + + diff -Nru fotoxx-13.08/doc/changelog fotoxx-13.09.1/doc/changelog --- fotoxx-13.08/doc/changelog 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/doc/changelog 2013-08-31 06:26:38.000000000 +0000 @@ -1,6 +1,24 @@ Fotoxx change log ================= +2013 Sep 01 v.13.09.1 ++ New function Mashup: arrange multiple images and text in a layout + (move around via mouse, resize, rotate, transparency, font effects). ++ Metadata edit functions were combined: tags/ratings/captions/comments. ++ File save options: interface revised for clarity and error avoidance. ++ Window tabs have icons instead of "F/G/W" letters. ++ Menus and toolbars have visual feedback and popup descriptions. ++ Paste a selected area: adjust brightness to better match background. ++ Fix Stuck Pixels: user feedback and responsiveness was improved. ++ File Synch: output image file counts for each subdirectory processed. ++ Bugfix: crash if menus clicked during generation of a large gallery. ++ Bugfix: Gallery file selection: select low-high range was broken. ++ Bugfix: Deleted images were not being removed from collection lists. + +2013 Aug 09 v.13.08.1 ++ Italian, Portuguese and Russian translations updated. ++ Bugfix: crash in Fix Stuck Pixels function. + 2013 Aug 01 v.13.08 + White Balance: a direct adjustment for color temperature was added. + Search Images: apply criteria iteratively to expand/reduce results. diff -Nru fotoxx-13.08/doc/changelog-ca fotoxx-13.09.1/doc/changelog-ca --- fotoxx-13.08/doc/changelog-ca 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/doc/changelog-ca 1970-01-01 00:00:00.000000000 +0000 @@ -1,208 +0,0 @@ -Registre de canvis de Fotoxx -============================= - -013-07-01 v.13.07 -+ La navegació de galeria s'ha fet més simple i més flexible. -+ Les funcions Efectes> Dibuix i Contorns s'han combinat. -+ Nou: Efectes > Esbós: Transformar una foto en un dibuix simulat. -+ Nova utilitat: llista de traduccions que falten en una finestra emergent. -+ Afegir i eliminar etiquetes en lot s'ha combinat en una eina més flexible. -+ Editar col·leccions s'ha fet més fàcil (afegir/esborrar/tallar/copiar/enganxar imatges). -+ Nou tipus de galeria: veure les imatges afegides més recentment. - (També una opció d'usuari d'inici) -+ Opció ascendent/descendent s'ha afegit a la classificació de la galeria. -+ Escriure text: el botó [Aplicar] escriu en el disc, així c om a la imatge de la memòria. -+ Selecció de la galeria d'arxius: agregat el botó [Esborra r]. -+ Aplanar/expandir histograma: nous botons d'histograma emergent. - -013-06-01 v.13.06 -Tiene varias pequeñas mejoras y correcciones de errores. -+ Los menús emergentes, consejos, y bloques de información un poco más amigables. -+ Panorámica , HDR, etc tienen una mayor libertad para deformar imágenes para un mejor ajuste. -+ Deformar área: el área se puede sacar fuera de sus límites iniciales. -+ La página de inicio rápido es un archivo HTML en lugar de una imagen PNG. -+ Acabar área se hizo mucho más rápido. -+ Añadir texto: (escribir el texto en la imagen) se añadieron sombras opcionales. -+ Pausar / reanuda r pase de diapositivas: el reinicio es inmediata (sin esperar temporizado). -+ Presentación de diapositivas: la tecla B cambia entre imagen pantalla en blanco y pausa la presentación. -+ Solución de error:corregidas sacudidas en fijación/movimiento con la imagen grande (bug de v.13.03). -+ Solución de error: Recortar / cortar: no limitan anchura / altura a su anchura / altura anterior -1. -+ Solución de error: generación de miniaturas: evitar que archivos no RAW se pasen a DCRAW. -+ Solución de error: pantalla galería estaba ignorando los enlaces simbólicos a otros directorios. -+ Solución de error: (Fedora) algunos consejos emergentes eran texto en blanco sobre fondo blanco. - -013-05-01 v.13.05 -+ La guia d'usuari de Fotoxx està disponible ara en castellà. -+ La navegació de directoris s'ha simplificat per a múltiples directoris d'imatge superior. -+ Una guia d'inici ràpid es mostra a la primera posada en marxa (també a Ajuda> Inici ràpid). -+ Els noms dels menús i els grups de funcions d'edició són més convencionals. -+ Addició a la Guia de l'usuari: utilitzar una funció d'ImageMagick com una funció Fotoxx. -+ Nova configuració d'usuari: mètode de fixació/desplaçament: amb o contra ratolí, 1x o ampliada. -+ Nou ajust d'usuari: mètode d'interpolació utilitzat per a la visualització d'imatges. -+ Afegida una funció de suavitzat (anti-àlies) (suprimir pixelat o "dents de serra"). -+ La funció d'edició per nivells es va ampliar per incloure el contrari com un nivell. -+ La finestra emergent de sincronització automàtica d'arxius desapareix per si sola. -+ Desviació per ignorar les dreceres de teclat d'Unity que s'envien a la finestra activa. -+ Noves edicions de Fotoxx són notificades automàticament en la pròxima arrancada. -+ Diaporama: compensar transicions entretallades introduïdes amb Ubuntu 13.04. - -013-03-01 v.13.03 -+ Reducció de soroll: millor interfície d'usuari, més fàcil combinar mètodes. -+ Deformar àrea: millor algoritme de deformació amb el ratolí, més fàcil d'obtenir el resultat desitjat. -+ Deformar corba: el radi / influència del ratolí en la deformació es va fer ajustable. -+ Dreceres de teclat personalitzats: reemplaçar l'arxiu de text amb un diàleg adequat. -+ Marcadors: guardar posicions a la galeria, saltar a una posició guardada. -+ Escriure text: la renderització va ser millorada i es poden utilitzar grans mides de font. -+ Edita traducció: facilitat d'ús: mantenir el diàleg obert després de cada actualització. -+ Millorar la detecció i notificació de desacceleració per falta de memòria. -+ Racionalització de menús: millor nomenat i agrupació de les funcions d'edició. -+ Sincronitzar arxius: monitor de progrés afegit, 50 arxius per punt. -+ Error corregit: Funcions rotar i deformar: pèrdua de la configuració de la quadrícula personalitzada. -+ Error corregit: Geoetiquetas: detectar geolocalizaciones d'arxius antiquats i notificació a l'usuari. -+ Error corregit: errors petits en retallades guardats en un arxiu i posterior enganxat. -+ Error corregit: Introducció de text: transparència alterada quan es fa clic a [aplicar]. -+ Error corregit: Els noms de directoris que contenen cometes (") no es podien obrir. - -2013-03-11 v.13.02.1 -+ Traducció italiana actualitzada. -+ Error corregit: error en canviar de pestanyes G a F. - -2013-02-01 v.13.02 -+ Nou: conversió de l'espai de color a través de LCMS (per exemple, Adobe RGB <-> sRGB). -+ Nou: aplanar una foto d'una pàgina de llibre, redreçant les línies impreses si és necessari. -+ Nova funció Art: transformar una foto en un dibuix com de dibuixos animats. -+ Imatge data / hora en l'índex de cerca té una resolució d'1 segon en lloc de -1 dia (el indexat de re-sincronització cal, podent necessitar algun temps). -+ La visualització de galeria es pot ordenar per nom, data de modificació dels fitxers o data de la foto -(De EXIF). La data que es mostra és determinada per l'ordre. -+ Arxius RAW convertides a tiff / png / gif conserven totes les metadades disponibles. -+ L'histograma permet la selecció dels colors per mostrar, -i reflecteix únicament la zona visible d'una imatge ampliada. -+ En primera arrencada després d'instal · lar una nova versió mostra les notes de la versió -en una finestra emergent, i les diferències de mètode abreujat del teclat són notificades. -+ La funció d'edició taula de resum i altres petits fitxers d'ajuda -  poden ser vistos en l'idioma local si les traduccions estan disponibles. -+ El mètode de traducció de la interfície gràfica d'usuari s'ha simplificat una mica, -  i el document guia "traduccions" es va revisar en conseqüència. -+ Petits textos emergents ("tips") desapareixen per si sols després d'uns segons. -+ Error corregit: imatges PNG amb color de 16-bit s'escrivien amb els bytes -intercanviats, fent-los incompatibles amb Gimp i altres editors. -+ Error corregit: la recerca per etiqueta geogràfica de ciutat / país no funcionava si la latitud -i la longitud es van deixar a "null" (és a dir, valors mai introduïts). -+ Error corregit: RAW obert des d'una miniatura de la galeria quedava permanentment obert. -+ Error corregit: amplada de la finestra de vegades impossible reduir sense necessitat de reiniciar. - -2013-01-11 v.13.01.2 -+ La traducció holandesa s'ha actualitzat. -+ Error corregit: Si es cancel · la sincronització d'arxius pot ser impossible tancar-la. - -2013-01-03 v.13.01.1 -+ Bugfix: El menú Reixeta i alternar teclat no funcionava. - -2013-01-01 v.13.01 -+ Les traduccions al francès, català i holandès s'han actualitzat. -+ Opció menú vertical / barra d'eines per a una millor utilització dels monitors amples. -+ Vista de galeria: la mida de la imatge i la data s'han afegit a la vista. -+ Vista de galeria: en posicionar el ratolí en una miniatura mostra un informe de metadades emergent. -+ Administrar col · leccions: la interfície d'usuari ha estat redissenyada perquè sigui més fàcil d'usar. -+ Icones per a totes les funcions d'edició s'han afegit per al seu ús al menú Favorits. -+ Selecció d'arxius de la galeria: múltiples imatges poden ser seleccionades, inserides i -eliminades, fent la re-disposició de la seqüència més ràpid i més fàcil. -+ Menú Favorits: ignorar petits moviments de ratolí accidentals -que poden causar el desplaçament accidental de les entrades del menú. -+ Histograma: afegit un gràfic "general" als actuals R / G / B. -+ Mini-explicacions (consells) emergents que faltaven per alguns menús s'han afegit. -+ Error corregit: algunes funcions de metadades fallaven si de havia desactivat la sincronització d'arxius. - -2012-12-20 v.12.12.2 -+ Error corregit: georeferencias de fraccions de latitud / longitud estaven sent truncades per -localitzacions utilitzant una coma com a punt decimal. - -2012-12-05 v.12.12.1 -+ Traducció al castellà actualitzada. -+ Traducció al rus actualitzada. - -2012-12-01 v.12.12 -+ Nova eina de color fals: els colors seleccionats canvien gradualment a altres colors. -+ Presentació de diapositives: guardar les imatges seleccionades com una col · lecció. Modificar i reutilitzar. -+ La finestra de la galeria de miniatures ara suprimeix subdirectoris ocults. -+ Petites millores d'interfície d'usuari per georeferenciar els diàlegs utilitzant el mapa del món. -+ Seleccionar àrea: Mètode de selecció addicional pot accelerar algunes tasques. -+ Pintar píxels: petits canvis en la interfície d'usuari per realitzar millor tasques comunes. -+ Convertir / canviar la mida / moure en lot: canvi de mida opcional, eliminació dels originals opcional. -+ Canviar nom de lot: el nombre de seqüència pot ser embegut en qualsevol part del nom base. -+ Noves opcions de menú amb clic dret: canviar el nom, copiar, moure, escombraries ... -+ Els arxius de traducció (. Po) estan comprimits, el que redueix la mida del paquet a 0,7 MB. -+ Error corregit: el passi de diapositives ometia versions fora de seqüència dels fitxers seleccionats. -+ Error corregit: el selector galeria de l'arxiu: mayúsc + clic s'ignorava de vegades. -+ Error corregit: pèrdua de memòria en la sincronització d'arxius (significatiu per a biblioteca d'imatges gran). -+ Error corregit: l'historial EXIF ​​no era complet per imatges re-editades. -+ Error corregit: Acabar àrea fallava si estava activat el focus automàtic del ratolí. -+ Error corregit: escalat incorrecte d'arxius PNG de 16 bits. - -2012-11-01 v.12.11 -+ Simplificació del zoom / posicionat / desplaçament del mapa mundial: ara funciona com un arxiu d'imatge. -+ Simplificació de la visualització d'imatges des d'una ubicació del mapa del món fent clic. -+ Icones al menú de favorits poden tenir mides individuals de fins 64x64. -+ Opció Presentació amb diapositives: Seleccioneu els fitxers d'imatge des de la galeria / navegador. -+ Presentació de diapositives: obrir galeria, navegar en un altre lloc, reprendre el passi de diapositives. -+ Presentació de diapositives: nova opció d'animació de transició d'imatge, "gotes de pluja". -+ Selecció d'arxius de la galeria: permet seleccionar un rang de fitxers amb mayúsc + clic. -+ Gràfic de l'histograma amb diferents components de color RGB. -+ Menú de dreceres de teclat: el menú contextual emergent ofereix moltes opcions d'edició. -+ Tecles d'accés directe: les tecles F / G / W obren les pestanyes de finestres F / G / W, respectivament. -+ Drecera Línies de reixeta canviat a Ctrl + G (es pot canviar si ho desitja). -+ La comprovació rígida de la memòria lliure es substitueix amb un advertiment més flexible. -+ Substituir diverses funcions GTK obsoletes amb funcions sancionades. -+ Sincronitzar arxius: proporcionar botó [Cancel · la] per a la derivació temporal. -+ Error corregit: Presentació de diapositives: saltar directoris en lloc d'aturar-. -+ Error corregit: Edició de nivells: resultats erràtics en corba fortament inclinada. -+ Error corregit: Canviar la mida: impedir que la petita grandària de la imatge pugui causar una disfunció. -+ Error corregit: Botons Anterior / Següent: aturar el bucle si l'últim arxiu d'imatge s'esborra. -+ Error corregit: Aturar arxius d'imatges que apareixen dues vegades a l'arxiu d'índex. - -2012-10-04 v.12.10.1 -+ Error corregit: el català faltava a les opcions d'idioma de la intefaz d'usuari. -+ Error corregit: Gamma del monitor: comprova que xgamma està instal · lat abans d'usar. - -2012-10-01 v.12.10 -+ Aquest llançament es centra en la interfície d'usuari i millores d'eficiència. -+ El manual d'usuari i l'ajuda F1 ja són disponibles en castellà. -+ L'índex de recerca es va revisar per a una major escalabilitat. L'edició de metadades. -i recerca d'imatge corresponent ha de romandre ràpida per imatges més grans de 500 K. -Una resincronització de refresc de l'índex de cerca es realitzarà en la primera arrencada. -+ Es va implementar un menú personalitzat gràfic en una finestra emergent. -Les funcions freqüentment utilitzades es poden afegir i provar la disposició -+ Els arxius RAW es poden obrir en UFRAW (menú o clic a la miniatura). -+ Un mapa del món més precís es va implementar (es farà una nova descàrrega). -+ Arxius grans d'imatges s'obren un 30% més ràpid i el consum de memòria es redueix. -+ El convertidor RAW en lot ara té un quadre de diàleg per configurar els paràmetres. -+ Nou posicionament / desplaçament opcional: la imatge es fixa en el ratolí i es mou amb ell. -+ Aturar actualitzacions innecessàries de la galeria d'imatges per a les edicions de metadades. -+ Suport als formats PNG rars (per exemple, palletizado) a través de la biblioteca GTK. -+ Error de vinyeta corregit: deté increment del radi si es mou fora del centre. - -2012-09-01 v.12.09.1 -Error corregit: Error de la memòria de gestió amb impacte incert. - -2012-09-01 v.12.09 -+ Els arxius RAW es poden obrir per la línia de menú d'ordres o per arrossegar i deixar anar. -+ Els arxius RAW es poden veure en galeries de miniatures com altres arxius d'imatge. -+ L'eina d'edició d'arxius RAW UFRAW es va integrar al menú Fotoxx. -+ Els paràmetres de conversió per lots d'arxius RAW (dcraw) són configurables per l'usuari. -+ La conversió per lot d'arxius RAW és més ràpid - aproximadament 50/minute en un PC potent. -+ A mètodes d'eliminació de soroll es va afegir wavelet (adaptat de UfRAW / dcraw). -+ Arxius PNG amb profunditat de color (16 bits / color) són ara suportats. -+ Vinyeta: centre d'ombreig / brillantor es pot moure amb el ratolí. -+ Les imatges es poden copiar al porta amb un menú emergent del botó dret. -+ Retallar: cercle objectiu afegit al centre del rectangle de retallada. -+ El mapa del món mostra les ubicacions de les fotos georeferenciades, feu clic per veure la galeria. -+ Interfície d'usuari simplificada per a la localització basada en mapes o recerca d'imatges. -+ Es va afegir una eina per eliminar l'aberració cromàtica (franges de color). -+ Seleccionar zona amb el ratolí i per color: petita millora de la interfície d'usuari. -+ Més diàlegs conserven les entrades de l'usuari ia través de les sessions de Fotoxx. -+ Nova opció de línia d'ordres: posada en marxa d'una funció de menú especificat. -+ Panorama: opció per la corba d'imatge zero (per exemple, per unir imatges escanejades). -+ La galeria s'actualitza en viu, si es realitza un afegit / esborrat d'arxiu fora de Fotoxx. -+ Error corregit: de vegades no funciona clicar una etiqueta geogràfica de grup >> galeria. -+ Error corregit: pèrdua de memòria quan es processen metadades (etiquetes, títols ...). diff -Nru fotoxx-13.08/doc/changelog-es fotoxx-13.09.1/doc/changelog-es --- fotoxx-13.08/doc/changelog-es 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/doc/changelog-es 1970-01-01 00:00:00.000000000 +0000 @@ -1,208 +0,0 @@ -Registro de cambios de Fotoxx -============================= - -2013-07-01 v.13.07 -+ La navegación de galería se hizo más simple y más flexible. -+ Las funciones Efectos> Dibujo y Contornos se combinaron. -+ Nuevo: Efectos > Esbozo: Transforma una foto en un esbozo simulado. -+ Nueva utilidad: lista las traducciones que faltan en una ventana emergente. -+ Agregar etiquetas en lote y Eliminar Etiquetas se combinaron en una herramienta más flexible. -+ Editar Colecciones se hizo más fácil (añadir / borrar / cortar / copiar imágenes / pegar). -+ Nuevo tipo de galería: vista de las imagenes añadidas más recientemente . - (también una opción de inicio de configuración de usuario) -+ Añadida una opción ascendente/descendente de clasificación. -+ Escribir texto: el botón [Aplicar] va al disco, así como la imagen en memoria. -+ Selección en galería de archivos : añadido botón [Borrar]. -+ Aplanar y ampliar histograma: nuevos botones para histograma emergente. - -2013-06-01 v.13.06 -Tiene varias pequeñas mejoras y correcciones de errores. -+ Los menús emergentes, consejos, y bloques de información un poco más amigables. -+ Panorámica , HDR, etc tienen una mayor libertad para deformar imágenes para un mejor ajuste. -+ Deformar área: el área se puede sacar fuera de sus límites iniciales. -+ La página de inicio rápido es un archivo HTML en lugar de una imagen PNG. -+ Acabar área se hizo mucho más rápido. -+ Añadir texto: (escribir el texto en la imagen) se añadieron sombras opcionales. -+ Pausar / reanuda r pase de diapositivas: el reinicio es inmediata (sin esperar temporizado). -+ Presentación de diapositivas: la tecla B cambia entre imagen pantalla en blanco y pausa la presentación. -+ Solución de error:corregidas sacudidas en fijación/movimiento con la imagen grande (bug de v.13.03). -+ Solución de error: Recortar / cortar: no limitan anchura / altura a su anchura / altura anterior -1. -+ Solución de error: generación de miniaturas: evitar que archivos no RAW se pasen a DCRAW. -+ Solución de error: pantalla galería estaba ignorando los enlaces simbólicos a otros directorios. -+ Solución de error: (Fedora) algunos consejos emergentes eran texto en blanco sobre fondo blanco. - -2013-05-01 v.13.05 -+ La guía de usuario de Fotoxx está disponible ahora en castellano. -+ La navegación de directorios se ha simplificado para múltiples directorios de imagen superior. -+ Una guía de inicio rápido se muestra en la primera puesta en marcha (también en Ayuda> Inicio rápido). -+ Los nombres de los menús y los grupos de funciones de edición son más convencionales. -+ Adición en la Guia del usuario: utilizar una función de ImageMagick como una función Fotoxx. -+ Nueva configuración de usuario: método de fijación/desplazamiento: con o contra ratón, 1x o ampliada. -+ Nuevo ajuste de usuario: método de interpolación utilizado para la visualización de imágenes. -+ Añadida una función de suavizado (anti-alias) (suprimir pixelado o "dientes de sierra"). -+ La función de edición por niveles se amplió para incluir el contrario como un nivel. -+ La ventana emergente de sincronización automática de archivos desaparece por sí sola. -+ Desviación de ignorar los atajos de teclado de Unity que se envían a la ventana activa. -+ Nuevas ediciones de Fotoxx son notificadas automáticamente en el siguiente arranque. -+Diaporama: compensar transiciones entrecortadas introducidas con Ubuntu 13.04. - -2013-03-01 v.13.03 -+ Reducción de ruido: mejor interfaz de usuario, más fácil combinar métodos. -+ Deformar área: mejor algoritmo de deformación con el ratón, más fácil de obtener el resultado deseado. -+ Deformar curva: el radio/influencia del ratón en la deformación se hizo ajustable. -+ Atajos de teclado personalizados: reemplazar el archivo de texto con un diálogo adecuado. -+ Marcadores: guardar posiciones en la galería, saltar a una posición guardada. -+ Escribir texto: la renderización fue mejorada y se pueden utilizar grandes tamaños de fuente. -+ Editar traducción : facilidad de uso: mantener el diálogo abierto después de cada actualización. -+ Mejorar la detección y notificación de desaceleración por falta de memoria. -+ Racionalización de menús : mejor nombrado y agrupación de las funciones de edición. -+ Sincronizar archivos: monitor de progreso añadido, 50 archivos por punto. -+ Error corregido: Funciones rotar y deformar: pérdida de la configuración de la cuadrícula personalizada. -+ Error corregido: Geoetiquetas: detectar geolocalizaciones de archivos anticuados y notificación al usuario. -+ Error corregido: errores pequeños en recortes guardados en un archivo y posterior pegado. -+ Error corregido: Escritura de texto: transparencia alterada cuando se hace clic en [aplicar]. -+ Error corregido: Los nombres de directorios que contienen comillas (") no se podian abrir. - -2013-02-11 v.13.02.1 -+ Traducción italiana actualizada. -+ Error corregido: fallo al cambiar de pestañas G a F. - -2013 01 de febrero v.13.02 -+ Nuevo: conversión del espacio de color a través de LCMS (por ejemplo, Adobe RGB <-> sRGB). -+ Nuevo: aplanar una foto de una página de libro, enderezando las líneas impresas si es necesario. -+ Nueva función Arte: transformar una foto en un dibujo como de dibujos animados. -+ Imagen fecha/hora en el índice de búsqueda tiene una resolución de 1 segundo en lugar de -  1 día (el índizado de re-sincronización es necesario, pudiendo necesitar algún tiempo). -+ La visualización de galería se puede ordenar por nombre, fecha de modificación de archivo, o fecha de la foto -  (de EXIF). La fecha que se muestra es determinada por el orden. -+ Archivos RAW convertidas a tiff/png/gif conservan todos los metadatos disponibles. -+ El histograma permite la selección de los colores para mostrar, -  y refleja únicamente la zona visible de una imagen ampliada. -+ En primer arranque después de instalar una nueva versión muestra las notas de la versión -  en una ventana emergente, y las diferencias de método abreviado del teclado son notificadas. -+ La función de edición tabla de resumen y otros pequeños archivos de ayuda - pueden ser vistos en el idioma local si las traducciones están disponibles. -+ El método de traducción de la interfaz gráfica de usuario se ha simplificado un poco, - y el documento guía "traducciones" se revisó en consecuencia. -+ Pequeños textos emergentes ("tips") desaparecen por sí solos después de unos segundos. -+ Error corregido: imágenes PNG con color de 16-bit se escribían con los bytes -  intercambiados, haciéndolos incompatibles con Gimp y otros editores. -+ Error corregido: la búsqueda por etiqueta geográfica de ciudad/país no funcionaba si la latitud -  y la longitud se dejaron a "null" (es decir, valores nunca introducidos). -+ Error corregido: RAW abierto desde una miniatura de la galería quedaba permanentemente abierto. -+ Error corregido: anchura de la ventana a veces imposible reducir sin necesidad de reiniciar. - -2013-01-11 v.13.01.2 -+ La traducción holandesa se ha actualizado. -+ Error corregido: Si se cancela la sincronización de archivos puede ser imposible cerrarla. - -2013-01-03 v.13.01.1 -+ Bugfix: El menú Rejilla y alternar teclado no funcionaba. - -2013-01-01 v.13.01 -+ Las traducciones al francés, catalán y holandés se han actualizado. -+ Opción menú vertical/barra de herramientas para una mejor utilización de los monitores anchos. -+ Vista de galería: el tamaño de la imagen y la fecha se han añadido a la vista. -+ Vista de galería: al posicionar el ratón en una miniatura muestra un informe de metadatos emergente. -+ Administrar colecciones: la interfaz de usuario ha sido rediseñada para que sea más fácil de usar. -+ Iconos para todas las funciones de edición se han añadido para su uso en el menú Favoritos. -+ Selección de archivos de la galería: múltiples imágenes pueden ser seleccionadas, insertadas y -  eliminadas, haciendo la re-disposición de la secuencia más rápido y más fácil. -+ Menú Favoritos: ignorar pequeños movimientos de ratón accidentales -  que pueden causar el desplazamiento accidental de las entradas del menú. -+ Histograma : añadido un gráfico "general" a los actuales R/G/B. -+ Mini-explicaciones (consejos) emergentes faltantes para algunos menús se han añadido. -+ Error corregido: algunas funciones de metadatos fallaban si de había desactivado la sincronización de archivos. - -2012-12-20 v.12.12.2 -+ Error corregido: georeferencias de fracciones de latitud/longitud estaban siendo truncadas por -  configuraciones regionales utilizando una coma como punto decimal. - -012-12-05 v.12.12.1 -+ Traducción al castellano actualizada. -+ Traducción al ruso actualizada. - -2012-12-01 v.12.12 -+ Nueva herramienta de color falso : los colores seleccionados cambian gradualmente a otros colores. -+ Presentación de diapositivas: guardar las imágenes seleccionadas como una colección. Modificar y reutilizar. -+ La ventana de la galería de miniaturas ahora suprime subdirectorios ocultos. -+ Pequeñas mejoras de interfaz de usuario para georeferenciar los diálogos utilizando el mapa del mundo. -+ Seleccionar área: Método de selección adicional puede acelerar algunas tareas. -+ Pintar píxeles : pequeños cambios en la interfaz de usuario para realizar mejor tareas comunes. -+ Convertir/cambiar el tamaño/mover en lote : cambio de tamaño opcional, eliminación de los originales opcional. -+ Cambiar nombre de lote: el número de secuencia puede ser embebido en cualquier parte del nombre base. -+ Nuevas opciones de menú con clic derecho: renombrar, copiar, mover, basura ... -+ Los archivos de traducción (.po) están comprimidos, lo que reduce el tamaño del paquete a 0,7 MB. -+ Error corregido: el pase de diapositivas omitia versiones fuera de secuencia de los archivos seleccionados. -+ Error corregido: el selector galería del archivo: mayúsc+clic se ignoraba a veces. -+ Error corregido: pérdida de memoria en la sincronización de archivos (significativo para biblioteca de imagenes grande). -+ Error corregido: el ​​historial de edición EXIF no era completo para imágenes re-editadas. -+ Error corregido: Acabar área fallaba si estaba activado el foco automático del ratón. -+ Error corregido: escalado incorrecto de archivos PNG de 16 bits. - -2012-11-01 v.12.11 -+ Simplificación del zoom/posicionado/desplazamiento del mapa mundial: ahora funciona como un archivo de imagen. -+ Simplificación de la visualización de imágenes desde una ubicación del mapa del mundo haciendo clic. -+ Iconos en el menú de favoritos pueden tener tamaños individuales de hasta 64x64. -+ Opción Presentación con diapositivas: Seleccione los archivos de imagen desde la galería/navegador. -+ Presentación de diapositivas: abrir galería, navegar en otra parte, reanudar el pase de diapositivas. -+ Presentación de diapositivas: nueva opción de animación de transición de imagen, "gotas de lluvia". -+ Selección de archivos de la galería: permite seleccionar un rango de archivos con mayúsc+clic. -+ Gráfico del histograma con distintos componentes de color RGB. -+ Menú de atajos de teclado: el menú contextual emergente ofrece muchas opciones de edición. -+ Teclas de acceso directo: las teclas F/G/W abren las pestañas de ventanas F/G/W, respectivamente. -+ Atajo Líneas de rejilla cambiado a Ctrl+G (se puede cambiar si lo desea). -+ La comprobación rígida de la memoria libre se sustituye con una advertencia más flexible. -+ Sustituir varias funciones GTK obsoletas con funciones sancionadas. -+ Sincronizar archivos: proporcionar botón [Cancelar] para la derivación temporal. -+ Error corregido: Presentación de diapositivas: saltarse directorios en lugar de detenerse. -+ Error corregido: Edición de niveles: resultados erráticos en curva fuertemente inclinada. -+ Error corregido: Cambiar el tamaño: impedir que el pequeño tamaño de la imagen pueda causar una disfunción. -+ Error corregido: Botones Anterior/Siguiente: parar el bucle si el último archivo de imagen se borra. -+ Error corregido: Parar archivos de imágenes que aparecen dos veces en el archivo de índice. - -2012-10-04 v.12.10.1 -+ Error corregido: el catalán faltaba en las opciones de idioma de la intefaz de usuario. -+ Error corregido: Gamma del Monitor: comprueba que xgamma está instalado antes de usar. - -2012-10-01 v.12.10 -+ Este lanzamiento se centra en la interfaz de usuario y mejoras de eficiencia. -+ El manual de usuario y la ayuda F1 ya están disponibles en castellano. -+ El índice de búsqueda se revisó para una mayor escalabilidad. La edición de metadatos. -  y búsqueda de imagen correspondiente debe permanecer rápida para imágenes mayores de 500 K. -  Una resincronización de refresco del índice de búsqueda se realizará en el primer arranque. -+ Se implementó un menú personalizado gráfico en una ventana emergente. -  Las funciones frecuentemente utilizadas se pueden agregar y probar la disposición -+ Los archivos RAW se pueden abrir en UFRaw (menú o clic en la miniatura). -+ Un mapa del mundo más preciso se implementó (se hará una nueva descarga). -+ Archivos grandes de imágenes se abren un 30% más rápido y el consumo de memoria se reduce. -+ El convertidor RAW en lote ahora tiene un cuadro de diálogo para configurar los parámetros. -+ Nuevo posicionamiento/desplazamiento opcional: la imagen se fija en el ratón y se mueve con él. -+ Detener actualizaciones innecesarias de la galería de imágenes para las ediciones de metadatos. -+ Apoyo a los formatos PNG raros (por ejemplo, palletizado) a través de la biblioteca GTK. -+ Error de viñeta corregido: detiene incremento del radio si se mueve fuera del centro. - -01/09/2012 v.12.09.1 -Error corregido: Error de la memoria de gestión con impacto incierto. - -2012-09-01 v.12.09 -+ los archivos RAW se pueden abrir por la línea de menú de comandos o por arrastrar y soltar. -+ Los archivos RAW se pueden ver en galerías de miniaturas como otros archivos de imagen. -+ La herramienta de edición de archivos RAW UFRaw se integró en el menú Fotoxx. -+ Los parámetros de conversión por lotes de archivos RAW (dcraw) son configurables por el usuario. -+ La conversión por lote de archivos RAW es más rápido - aproximadamente 50/minute en un PC potente. -+ A métodos de eliminación de ruido se añadió wavelet (adaptado de ufraw/dcraw). -+ Archivos PNG con profundidad de color (16 bits/color) son ahora soportados. -+ Viñeta: centro de sombreado/brillo se puede mover con el ratón. -+ La imágenes se pueden copiar en el portapapeles con un menú emergente del botón derecho. -+ Recorte: círculo objetivo añadido en el centro del rectángulo de recorte. -+ El mapa del mundo muestra las ubicaciones de las fotos georeferenciadas, haga clic para ver la galería. -+ Interfaz de usuario simplificada para la localización basada en mapas o búsqueda de imágenes. -+ Se añadió una herramienta para eliminar la aberración cromática (franjas de color). -+ Seleccionar zona con el ratón y por color: pequeña mejora de la interfaz de usuario. -+ Más diálogos conservan las entradas del usuario y a través de las sesiones de Fotoxx. -+ Nueva opción de línea de comando: puesta en marcha de una función de menú especificado. -+ Panorama: opción para la curva de imagen cero (por ejemplo, para unir imágenes escaneadas). -+ La galería se actualiza en vivo, si se realiza un añadido/borrado de archivo fuera de Fotoxx. -+ Error corregido: a veces no funciona clicar una etiqueta geográfica de grupo >> galería. -+ Error corregido: pérdida de memoria cuando se procesan metadatos (etiquetas, títulos ...). diff -Nru fotoxx-13.08/doc/copyright fotoxx-13.09.1/doc/copyright --- fotoxx-13.08/doc/copyright 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/doc/copyright 2013-08-31 06:26:38.000000000 +0000 @@ -1,5 +1,5 @@ Author: - Michael Cornelison + Michael Cornelison Copyright: Copyright 2007, 2008, 2009, 2010, 2011, 2012, 2013 Michael Cornelison diff -Nru fotoxx-13.08/doc/fotoxx-release fotoxx-13.09.1/doc/fotoxx-release --- fotoxx-13.08/doc/fotoxx-release 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/doc/fotoxx-release 2013-08-31 06:26:38.000000000 +0000 @@ -1,3 +1,3 @@ -Fotoxx 13.08 +Fotoxx 13.09.1 diff -Nru fotoxx-13.08/doc/fotoxx.man fotoxx-13.09.1/doc/fotoxx.man --- fotoxx-13.08/doc/fotoxx.man 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/doc/fotoxx.man 2013-08-31 06:26:38.000000000 +0000 @@ -1,4 +1,4 @@ -.TH FOTOXX 1 2013-03-01 "Linux" "Fotoxx man page" +.TH FOTOXX 1 2013-09-01 "Linux" "Fotoxx man page" .SH NAME Fotoxx - photo/image editor and collection manager @@ -34,7 +34,8 @@ - Smart erase: get rid of ground litter, power lines, etc. - Erase dust: remove dust spots on images from scanned slides - Write text on an image (font/color/transparency/shadow/angle) - - Flatten photo of deeply curved book page, uncompress text + - Flatten photo of curved book page, stretch compressed text + - Add images and formatted text to a layout, arrange to suit - Use Gimp, ImageMagick, etc. as plug-in functions. Utility functions include: @@ -72,6 +73,6 @@ The home page for Fotoxx is http://kornelix.com/fotoxx. .SH AUTHORS - Written by Mike Cornelison + Written by Mike Cornelison http://kornelix.com diff -Nru fotoxx-13.08/doc/freecode fotoxx-13.09.1/doc/freecode --- fotoxx-13.08/doc/freecode 1970-01-01 00:00:00.000000000 +0000 +++ fotoxx-13.09.1/doc/freecode 2013-08-31 06:26:38.000000000 +0000 @@ -0,0 +1,8 @@ +A new capability "Mashup" was added: Arrange multiple images and text on +a background. Rearrange by dragging the mouse, resize, rotate, and add +font effects. The menus and toolbars have improved visual feedback and many +popup descriptions were added. Metadata edit functions were combined for +easier workflow. Area paste has a brightness adjustment to better match +the background. One significant bug and several minor ones were fixed. + + diff -Nru fotoxx-13.08/doc/translations fotoxx-13.09.1/doc/translations --- fotoxx-13.08/doc/translations 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/doc/translations 1970-01-01 00:00:00.000000000 +0000 @@ -1,113 +0,0 @@ -TRANSLATIONS OF FOTOXX - -The instructions here apply to the GUI interface (menus and dialogs). -For user guide translations, see below. - -INTRODUCTION TO TRANSLATION FILES - -Translation files for fotoxx are located as follows: - /usr/share/fotoxx/locales/translate-lc.po.gz - /home//.fotoxx/locales/translate-lc.po - -The first file is the installed translation file for language "lc". -It may be compressed (.gz ending). The 2nd file is an uncompressed -copy that is placed in the user area when fotoxx is started for the -user using the language "lc". - -"lc" is a standard 2-character language code, e.g. "de" for German, -or a combination language and region code formatted "lc_RC", e.g. -"de_AT" for Austrian German. This code normally corresponds to the -locale of the computer, as shown by the command: $ echo $LANG - -If there is no installed translation file for "lc", the user area -file /home//.fotoxx/locales/translate-lc is created for you. -This is a dummy file that translates English to English. You can use -it as a template to replace English with your target language. - -The file /home//.fotoxx/locales/translate-lc is the one you -should work with. It is user-owned and can be edited. - -The .po file contains the English phrases used by fotoxx, with the -corresponding translations for language "lc" (or "lc_RC"). It can be -edited with any text editor. - -A typical translation in the .po file looks like this: - msgid "The file name is: %s \n" - msgstr "Der Dateiname ist: %s \n" - -"msgid" is an English text needing a translation. "msgstr" is the -translation (German in this case). The special codes "%s" and "\n" -are for inserted data and formatting. They must match in both type -and sequence. - -A missing translation looks like this: - msgid "The file name is: %s \n" - msgstr "" - -TO REVISE A TRANSLATION - - 1. Edit translate-lc.po to add or update translation strings. - 2. Save the modified .po file, replacing the original - (rename the original to .po.old if you want to keep it). - 3. Option: compile the .po file to check for errors: - $ cd /home//.fotoxx/locales - $ msgfmt -v --check-format -o /dev/null translate-lc.po - 4. Run fotoxx and check how the translations look. If the - computer locale is not "lc" you can start fotoxx in the - target language with the command: $ fotoxx -l lc - 5. Send the modified .po file to kornelix2@gmail.com - so it can be included in future releases. - -Step 3 is optional. The usual binary translation files (.mo) that are -output by msgfmt are not needed by fotoxx. The translation source -files (.po) are read directly by fotoxx, and changes made to a .po -file are effective the next time fotoxx is started. Step 3 is useful -to find errors (e.g. missing or non-matching format codes). - -Whenever fotoxx is started from a terminal, missing translations -are listed. - -PROBLEMS WITH LONG TRANSLATIONS - -English can be terse compared to other languages (e.g. "undo" is -"Rückgängig machen" in German), and this can cause ugliness in the -GUI layouts. Therefore try to make dialog labels and buttons short, -and look closely at the resulting GUI layout. - -CONTEXT DEPENDENT TRANSLATIONS - -Sometimes the same English text will need multiple translations that -depend on context. A simple example is "save file" when used on a -toolbar button or in a menu. On the button the translation should be -short, but there is no limit for the menu. In German, this could be -"speichern" for the button and "in eine Datei speichern" for the menu. -The standard method to do this in Gnu gettext is fairly horrible, but -since fotoxx reads the source translations (.po files) instead of -the binaries (.mo files), a simpler method is available. The English -text may include an extra string to distinguish different contexts. -This context string is removed from the GUI output, so the user does -not see it. The context string is any short string followed with the -special marker "::". To continue our example, the translate-lc.po -file might look like this: - msgid "save file" - msgstr "in eine Datei speichern" - msgid "toolbar::save file" - msgstr "speichern" -In English, fotoxx would show "save file" for both cases, and in -German "in eine Datei speichern" or "speichern". - -USER GUIDE TRANSLATION - -The user guide is normally found here: - /usr/share/fotoxx/data/userguide-lc.html (or -lc_RC.html) - -The file is a text HTML file, which may be edited with any HTML editor. - -If a file with the region code is present, this file is used by fotoxx, -otherwise the standard language version is used. If this is not found, -the English file (userguide-en.html) is used. - -If you make a new or revised translation, please send it to -kornelix2@gmail.com so it can be included in future releases. - - diff -Nru fotoxx-13.08/doc/translations-ca fotoxx-13.09.1/doc/translations-ca --- fotoxx-13.08/doc/translations-ca 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/doc/translations-ca 2013-08-31 06:26:38.000000000 +0000 @@ -27,7 +27,7 @@ $ msgfmt -v --check-format -o /dev/null fotoxx-lc.po 4. Desar l'arxiu .po a /home//.fotoxx/locales/ 5. Executar Fotoxx i comprovar com es veuen les traduccions. (Per executar en l'idioma de destinació: $ Fotoxx -l lc) - 6. Enviar l'arxiu .po a kornelix2@gmail.com i així podrà ser inclòs en futures versions. + 6. Enviar l'arxiu .po a kornelix@gmx.de i així podrà ser inclòs en futures versions. Els passos 2 i 3 son opcionals. Els habituals arxius de traducció binaris (.mo) que tenen sortida per msgfmt no son necessaris per Fotoxx. La traducció d'arxius de codi font (.po) es llegeix directament per Fotoxx i els canvis realitzats a un arxiu .po son efectius immediatament. Els passos 2 i 3 son Útils per trobar errors (per exemple, si els codis de format en una cadena traduïda no coincideixen amb els de la cadena en anglès). @@ -39,7 +39,7 @@ 4. Editar aquest arxiu, en substitució de les traduccions fictícies a l'anglès amb traduccions per l'idioma lc. 5. Desar l'Arxiu a /home//.fotoxx/locales/ 6. Executar Fotoxx i comprovar com es veuen les traduccions. (per executar en l'idioma de destinació: $ Fotoxx -l lc) - 7. Enviar l'arxiu .po a kornelix2@gmail.com i així podrà ser inclòs en futures versions. + 7. Enviar l'arxiu .po a kornelix@gmx.de i així podrà ser inclòs en futures versions. Quan Fotoxx s'inicia des de terminals com es mostra en el pas 6, les traduccions que falten s'enumeren en la finestra de terminal. @@ -67,4 +67,4 @@ La configuració regional de l'usuari a $LANG o $LANGUAGE determina "lc_RC". Si un arxiu amb el codi de regió és present, aquest arxiu s'utilitza, en cas contrari s'utilitza la versió en llengua estàndard. Si no es troba, s'utilitza l'arxiu en anglès (userguide-en.html). Si vostè fa una traducció nova o revisada, si us plau, enviimela perquè -pogui ser inclosa en futures versions (kornelix2@gmail.com). +pogui ser inclosa en futures versions (kornelix@gmx.de). diff -Nru fotoxx-13.08/doc/translations-en fotoxx-13.09.1/doc/translations-en --- fotoxx-13.08/doc/translations-en 1970-01-01 00:00:00.000000000 +0000 +++ fotoxx-13.09.1/doc/translations-en 2013-08-31 06:26:38.000000000 +0000 @@ -0,0 +1,113 @@ +TRANSLATIONS OF FOTOXX + +The instructions here apply to the GUI interface (menus and dialogs). +For user guide translations, see below. + +INTRODUCTION TO TRANSLATION FILES + +Translation files for fotoxx are located as follows: + /usr/share/fotoxx/locales/translate-lc.po.gz + /home//.fotoxx/locales/translate-lc.po + +The first file is the installed translation file for language "lc". +It may be compressed (.gz ending). The 2nd file is an uncompressed +copy that is placed in the user area when fotoxx is started for the +user using the language "lc". + +"lc" is a standard 2-character language code, e.g. "de" for German, +or a combination language and region code formatted "lc_RC", e.g. +"de_AT" for Austrian German. This code normally corresponds to the +locale of the computer, as shown by the command: $ echo $LANG + +If there is no installed translation file for "lc", the user area +file /home//.fotoxx/locales/translate-lc is created for you. +This is a dummy file that translates English to English. You can use +it as a template to replace English with your target language. + +The file /home//.fotoxx/locales/translate-lc is the one you +should work with. It is user-owned and can be edited. + +The .po file contains the English phrases used by fotoxx, with the +corresponding translations for language "lc" (or "lc_RC"). It can be +edited with any text editor. + +A typical translation in the .po file looks like this: + msgid "The file name is: %s \n" + msgstr "Der Dateiname ist: %s \n" + +"msgid" is an English text needing a translation. "msgstr" is the +translation (German in this case). The special codes "%s" and "\n" +are for inserted data and formatting. They must match in both type +and sequence. + +A missing translation looks like this: + msgid "The file name is: %s \n" + msgstr "" + +TO REVISE A TRANSLATION + + 1. Edit translate-lc.po to add or update translation strings. + 2. Save the modified .po file, replacing the original + (rename the original to .po.old if you want to keep it). + 3. Option: compile the .po file to check for errors: + $ cd /home//.fotoxx/locales + $ msgfmt -v --check-format -o /dev/null translate-lc.po + 4. Run fotoxx and check how the translations look. If the + computer locale is not "lc" you can start fotoxx in the + target language with the command: $ fotoxx -l lc + 5. Send the modified .po file to kornelix@gmx.de + so it can be included in future releases. + +Step 3 is optional. The usual binary translation files (.mo) that are +output by msgfmt are not needed by fotoxx. The translation source +files (.po) are read directly by fotoxx, and changes made to a .po +file are effective the next time fotoxx is started. Step 3 is useful +to find errors (e.g. missing or non-matching format codes). + +Whenever fotoxx is started from a terminal, missing translations +are listed. + +PROBLEMS WITH LONG TRANSLATIONS + +English can be terse compared to other languages (e.g. "undo" is +"Rückgängig machen" in German), and this can cause ugliness in the +GUI layouts. Therefore try to make dialog labels and buttons short, +and look closely at the resulting GUI layout. + +CONTEXT DEPENDENT TRANSLATIONS + +Sometimes the same English text will need multiple translations that +depend on context. A simple example is "save file" when used on a +toolbar button or in a menu. On the button the translation should be +short, but there is no limit for the menu. In German, this could be +"speichern" for the button and "in eine Datei speichern" for the menu. +The standard method to do this in Gnu gettext is fairly horrible, but +since fotoxx reads the source translations (.po files) instead of +the binaries (.mo files), a simpler method is available. The English +text may include an extra string to distinguish different contexts. +This context string is removed from the GUI output, so the user does +not see it. The context string is any short string followed with the +special marker "::". To continue our example, the translate-lc.po +file might look like this: + msgid "save file" + msgstr "in eine Datei speichern" + msgid "toolbar::save file" + msgstr "speichern" +In English, fotoxx would show "save file" for both cases, and in +German "in eine Datei speichern" or "speichern". + +USER GUIDE TRANSLATION + +The user guide is normally found here: + /usr/share/fotoxx/data/userguide-lc.html (or -lc_RC.html) + +The file is a text HTML file, which may be edited with any HTML editor. + +If a file with the region code is present, this file is used by fotoxx, +otherwise the standard language version is used. If this is not found, +the English file (userguide-en.html) is used. + +If you make a new or revised translation, please send it to +kornelix@gmx.de so it can be included in future releases. + + diff -Nru fotoxx-13.08/doc/translations-es fotoxx-13.09.1/doc/translations-es --- fotoxx-13.08/doc/translations-es 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/doc/translations-es 2013-08-31 06:26:38.000000000 +0000 @@ -23,7 +23,7 @@         $ msgfmt -v --check-format -o /dev/null fotoxx-lc.po     4. Guardar el archivo .po en /home//.fotoxx/locales/     5. Ejecutar Fotoxx y comprobar cómo se ven las traducciones. (Para ejecutar en el idioma de destino: $ fotoxx -l lc) -    6. Enviar el archivo .po a kornelix2@gmail.com y así podrá ser ser incluido en futuras versiones. +    6. Enviar el archivo .po a kornelix@gmx.de y así podrá ser ser incluido en futuras versiones.   Los pasos 2 y 3 son opcionales. Los habituales archivos de traducción binarios (.mo) que tienen salida por msgfmt no son necesarios por Fotoxx. La traducción de archivos de código fuente (.po) se lee directamente por Fotoxx y los cambios realizados a un archivo .po son efectivos inmediatamente. Los pasos 2 y 3 son útiles para encontrar errores (por ejemplo, si los códigos de formato en una cadena traducida no coinciden con los de la cadena en inglés).   @@ -35,7 +35,7 @@     4. Editar este archivo, en sustitución de las traducciones ficticias al inglés con traducciones para el idioma lc.     5. Guardar el archivo en /home//.fotoxx/locales/     6. Ejecutar Fotoxx y comprobar cómo se ve en las traducciones. (para ejecutar Fotoxx en el idioma de destino: $ Fotoxx -l lc) -    7. Enviar el archivo .po a kornelix2@gmail.com y así podrá ser incluido en futuras versiones. +    7. Enviar el archivo .po a kornelix@gmx.de y así podrá ser incluido en futuras versiones.   Cuando Fotoxx se inicia desde un terminal como se muestra en el paso 6, las traducciones que faltan se enumeran en la ventana de terminal.   @@ -63,4 +63,4 @@ "lc" (o "lc_RC") es el código de la lengua o idioma y código de región. La configuración regional del usuario en $LANG o $LANGUAGE determina "lc_RC". Si un archivo con el código de región está presente, este archivo se utiliza, de lo contrario se utiliza la versión en lengua estándar. Si no se encuentra, se utiliza el archivo en inglés (userguide-en.html).   -Si usted hace una traducción nueva o revisada, por favor, enviemela para que pueda ser incluida en futuras versiones (kornelix2@gmail.com). +Si usted hace una traducción nueva o revisada, por favor, enviemela para que pueda ser incluida en futuras versiones (kornelix@gmx.de). diff -Nru fotoxx-13.08/f.area.cc fotoxx-13.09.1/f.area.cc --- fotoxx-13.08/f.area.cc 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/f.area.cc 2013-08-31 06:26:38.000000000 +0000 @@ -4,7 +4,7 @@ Copyright 2007 2008 2009 2010 2011 2012 2013 Michael Cornelison Source URL: http://kornelix.com/fotoxx - Contact: kornelix2@gmail.com + Contact: kornelix@gmx.de This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -180,7 +180,7 @@ return 0; } - if (strEqu(event,"focus")) return 0; // some folks use mouse auto-focus + if (strEqu(event,"focus")) return 0; // keep mouse ownership if (CEF && CEF->Fpreview) edit_fullsize(); // use full-size image @@ -2172,7 +2172,8 @@ float sacp_resize; // size, 1.0 = original size float sacp_angle; // angle of rotation, -180 to +180 int sacp_orgx, sacp_orgy; // origin in target image -float sacp_blend; // edge blend with target image +float sacp_blend; // pasted area edge blend with image +float sacp_brite; // pasted area brightness adjustment // copy selected area, save in memory @@ -2276,6 +2277,7 @@ sacp_resize = 1.0; // size = 1x sacp_blend = 1; // edge blend = 1 sacp_angle = 0; // angle = 0 + sacp_brite = 1.0; // no brightness adjustment v.13.09 PXM_free(sacpR_image); // free prior if any PXM_free(sacpR_info); @@ -2289,9 +2291,9 @@ CEF->zd = zdialog_new(ZTX("Paste Image"),mWin,Bdone,Bcancel,null); zdialog_add_widget(CEF->zd,"hbox","hb0","dialog",0,"space=8"); - zdialog_add_widget(CEF->zd,"label","lab1","hb0",dragmess,"space=8"); + zdialog_add_widget(CEF->zd,"label","lab1","hb0",dragmess,"space=5"); - zdialog_add_widget(CEF->zd,"hbox","hbres","dialog",0,"space=5"); + zdialog_add_widget(CEF->zd,"hbox","hbres","dialog",0,"space=3"); zdialog_add_widget(CEF->zd,"label","labres","hbres",ZTX("resize"),"space=3"); zdialog_add_widget(CEF->zd,"button","-10%","hbres","-10%"); zdialog_add_widget(CEF->zd,"button","-1%","hbres","-1%"); @@ -2299,17 +2301,23 @@ zdialog_add_widget(CEF->zd,"button","+.1%","hbres","+.1%"); zdialog_add_widget(CEF->zd,"button","+1%","hbres","+1%"); zdialog_add_widget(CEF->zd,"button","+10%","hbres","+10%"); - zdialog_add_widget(CEF->zd,"hbox","hbang","dialog",0,"space=5"); - zdialog_add_widget(CEF->zd,"label","labang","hbang",ZTX("angle"),"space=3"); + + zdialog_add_widget(CEF->zd,"hbox","hbang","dialog",0,"space=3"); + zdialog_add_widget(CEF->zd,"label","labang","hbang",Bangle,"space=3"); zdialog_add_widget(CEF->zd,"button","-10°","hbang","-10°"); zdialog_add_widget(CEF->zd,"button","-1°","hbang","-1°"); zdialog_add_widget(CEF->zd,"button","-.1°","hbang","-.1°"); zdialog_add_widget(CEF->zd,"button","+.1°","hbang","+.1°"); zdialog_add_widget(CEF->zd,"button","+1°","hbang","+1°"); zdialog_add_widget(CEF->zd,"button","+10°","hbang","+10°"); - zdialog_add_widget(CEF->zd,"hbox","hbbl","dialog",0,"space=5"); - zdialog_add_widget(CEF->zd,"label","lab2","hbbl","edge blend"); - zdialog_add_widget(CEF->zd,"hscale","blend","hbbl","0|20|0.1|0","expand"); + + zdialog_add_widget(CEF->zd,"hbox","hbbr","dialog",0,"space=3"); + zdialog_add_widget(CEF->zd,"label","labbr","hbbr","brightness","space=3"); + zdialog_add_widget(CEF->zd,"hscale","brite","hbbr","0.3|3.0|0.001|1.0","expand|space=3"); + + zdialog_add_widget(CEF->zd,"hbox","hbbl","dialog",0,"space=3"); + zdialog_add_widget(CEF->zd,"label","labbl","hbbl","edge blend","space=3"); + zdialog_add_widget(CEF->zd,"hscale","blend","hbbl","0|20|0.1|0","expand|space=3"); sacp_blend = 0; // bugfix @@ -2395,6 +2403,11 @@ zdialog_fetch(zd,"blend",sacp_blend); // new edge blend distance select_paste_pixmap(); // copy onto target image } + + if (strEqu(event,"brite") && sacp_porg) { + zdialog_fetch(zd,"brite",sacp_brite); // new brightness adjustment v.13.09 + select_paste_pixmap(); // copy onto target image + } mwpaint2(); return 0; @@ -2492,6 +2505,7 @@ int px1, py1, px3, py3; float *pix1, *pix3; float f1, f2, opac, dist; + float red, green, blue, maxrgb; if (sacp_porg) // prior area overlap rectangle { @@ -2528,9 +2542,28 @@ else f1 = 1.0 * dist / sacp_blend; // opacity reduction from edge blend f1 = f1 * opac / 255.0; // opacity reduction from resize/rescale f2 = 1.0 - f1; - pix3[0] = f1 * pix1[0] + f2 * pix3[0]; // blend paste and target images - pix3[1] = f1 * pix1[1] + f2 * pix3[1]; - pix3[2] = f1 * pix1[2] + f2 * pix3[2]; + red = f1 * pix1[0] + f2 * pix3[0]; // blend paste and target images + green = f1 * pix1[1] + f2 * pix3[1]; + blue = f1 * pix1[2] + f2 * pix3[2]; + + if (sacp_brite != 1.0) { // adjust brightness of paste image + red *= sacp_brite; // v.13.09 + green *= sacp_brite; + blue *= sacp_brite; + maxrgb = red; + if (green > maxrgb) maxrgb = green; + if (blue > maxrgb) maxrgb = blue; + if (maxrgb > 255.9) { + f1 = 255.9 / maxrgb; + red *= f1; + green *= f1; + blue *= f1; + } + } + + pix3[0] = red; + pix3[1] = green; + pix3[2] = blue; } if (sacp_porg) // update window for old overlap area diff -Nru fotoxx-13.08/f.bend.cc fotoxx-13.09.1/f.bend.cc --- fotoxx-13.08/f.bend.cc 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/f.bend.cc 2013-08-31 06:26:38.000000000 +0000 @@ -4,7 +4,7 @@ Copyright 2007 2008 2009 2010 2011 2012 2013 Michael Cornelison Source URL: http://kornelix.com/fotoxx - Contact: kornelix2@gmail.com + Contact: kornelix@gmx.de This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff -Nru fotoxx-13.08/f.color.cc fotoxx-13.09.1/f.color.cc --- fotoxx-13.08/f.color.cc 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/f.color.cc 2013-08-31 06:26:38.000000000 +0000 @@ -4,7 +4,7 @@ Copyright 2007 2008 2009 2010 2011 2012 2013 Michael Cornelison Source URL: http://kornelix.com/fotoxx - Contact: kornelix2@gmail.com + Contact: kornelix@gmx.de This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -598,7 +598,7 @@ cmsxform = cmsCreateTransform(cmsprof1,TYPE_RGB_FLT,cmsprof2,TYPE_RGB_FLT,INTENT_PERCEPTUAL,0); if (! cmsxform) { - zmessageACK(mWin,0,ZTX("cmsCreateTransform() failed")); + zmessageACK(mWin,0,"cmsCreateTransform() failed"); return 1; } diff -Nru fotoxx-13.08/f.combine.cc fotoxx-13.09.1/f.combine.cc --- fotoxx-13.08/f.combine.cc 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/f.combine.cc 2013-08-31 06:26:38.000000000 +0000 @@ -4,7 +4,7 @@ Copyright 2007 2008 2009 2010 2011 2012 2013 Michael Cornelison Source URL: http://kornelix.com/fotoxx - Contact: kornelix2@gmail.com + Contact: kornelix@gmx.de This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -5973,3 +5973,1602 @@ } +/************************************************************************** + + Mashup function + + Start with current image as layout. + Add other images as overlays on top of layout. + Overlays have adjustable position, angle, size, transparency. + +***************************************************************************/ + +namespace mashup +{ + editfunc EFmashup; // edit function data + int Lww, Lhh; // background/layout image size + int Fupdall; // flag, update entire layout + int Nimages; // overlay image count + int Simage; // selected overlay image + int updxlo, updxhi, updylo, updyhi; // update region in layout image + int pupdxlo, pupdxhi, pupdylo, pupdyhi; // prior image update region + int pimage; // prior image created/edited + int Ntext; // overlay text count + int Stext; // selected overlay text + zdialog *zdimage; // image edit dialog active + zdialog *zdtext; // text edit dialog active + + struct image_t { // overlay image data + char *file; // filespec + PXM *pxm1; // PXM pixmap, 1x size + PXM *pxm2; // PXM pixmap, curr. size + float scale; // pxm2 scale, 0.0 to 1.0 = 1x + float theta; // angle, -pi to +pi radians + float transp; // transparency, 0.0 to 1.0 = invisible + int blendist; // edge blend distance, pixels + int ww, hh; // image dimensions at curr. scale + int px0, py0; // position in layout image + float sinT, cosT; // trig values for theta + int pxlo, pxhi, pylo, pyhi; // extent of image in layout image + }; + + struct text_t { // overlay text data + char *text; // text, up to 1000 chars. + textattr_t attr; // attributes (font, angle, outline...) + PXM *pxm_text; // text image + PXM *pxm_transp; // corresp. transparency image + int ww, hh; // image dimensions in layout image + int px0, py0; // image position in layout image + int pxlo, pxhi, pylo, pyhi; // extent of text image in layout image + }; + + #define maxmash 50 + image_t image[50]; + text_t text[50]; + + void project(); + int project_dialog_event(zdialog *zd, cchar *event); + void project_open(); + void project_save(); + + void image_edit(); + int image_dialog_event(zdialog *zd, cchar *event); + void set_Simage(int ii); + void add_image(); + void remove_image(); + void setimageextent(int ii); + + void text_edit(); + int text_dialog_event(zdialog *zd, cchar *event); + void set_Stext(int ii); + void add_text(); + void remove_text(); + void settextextent(int ii); + + void mousefunc(); + void E3update(); + void * E3update_thread(void *); + void * E3update_wthread1(void *arg); + void * E3update_wthread2(void *arg); +} + + +void m_mashup(GtkWidget *, cchar *) // new v.13.09 +{ + using namespace mashup; + + zdialog *zd; + cchar *title = ZTX("Mashup layout and background image"); + int zstat, nn, err, Nth = 0; + cchar *choice = 0, *file; + + F1_help_topic = "mashup"; + + if (checkmenulock()) return; // menu locked + if (mod_keep()) return; // warn unsaved changes + +/*** + _________________________________________ + | Mashup layout and background image | + | | + | (o) choose an image file | + | (o) use current image file | + | (o) open a Mashup project file | + | (o) specify layout size and color | + | | + | [Proceed] [Cancel] | + |_________________________________________| + +***/ + + zd = zdialog_new("Mashup",mWin,Bproceed,Bcancel,null); + + zdialog_add_widget(zd,"label","labtitle","dialog",title,"space=3"); + zdialog_add_widget(zd,"hbox","hbopt","dialog",0,"space=3"); + zdialog_add_widget(zd,"label","space","hbopt",0,"space=5"); + zdialog_add_widget(zd,"vbox","vbopt","hbopt"); + zdialog_add_widget(zd,"radio","choosefile","vbopt",ZTX("choose an image file")); + zdialog_add_widget(zd,"radio","usecurrent","vbopt",ZTX("use current image file")); + zdialog_add_widget(zd,"radio","openproject","vbopt",ZTX("open a Mashup project file")); + zdialog_add_widget(zd,"radio","makelayout","vbopt",ZTX("specify layout size and color")); + + zdialog_stuff(zd,"choosefile",1); + + zdialog_run(zd,0,"save"); + zstat = zdialog_wait(zd); + if (zstat != 1) { // canceled + zdialog_free(zd); + return; + } + + zdialog_fetch(zd,"choosefile",nn); + if (nn) choice = "choosefile"; + zdialog_fetch(zd,"usecurrent",nn); + if (nn) choice = "usecurrent"; + zdialog_fetch(zd,"openproject",nn); + if (nn) choice = "openproject"; + zdialog_fetch(zd,"makelayout",nn); + if (nn) choice = "makelayout"; + + zdialog_free(zd); + + Lww = Lhh = 0; // no layout file + Nimages = Ntext = 0; // no overlay images + + if (strEqu(choice,"choosefile")) + { + file = zgetfile1(ZTX("choose layout file"),"open",curr_file,null); + if (! file) return; + err = f_open(file,1,Nth,0,1); + if (err) return; + project(); + } + + if (strEqu(choice,"usecurrent")) + project(); + + if (strEqu(choice,"openproject")) + project_open(); + + if (strEqu(choice,"makelayout")) + { + m_create(0,0); + project(); + } + + return; +} + + +// edit function dialog and overall steering dialog + +void mashup::project() +{ + using namespace mashup; + + zdialog *zd; + + EFmashup.funcname = "mashup"; // function name + EFmashup.mousefunc = mousefunc; // mouse function + EFmashup.threadfunc = E3update_thread; // thread function + EFmashup.zd = 0; + + if (! edit_setup(EFmashup)) return; // setup edit + + Lww = E3pxm->ww; // layout image dimensions + Lhh = E3pxm->hh; + Fupdall = 1; // update entire layout + +/*** + _________________________________________ + | Mashup | + | | + | [Edit Images] add or edit images | + | [Edit Text] add or edit text | + | [Save Project] save project data | + | [Done] project complete | + | [Cancel] cancel project | + |_________________________________________| + +***/ + + zd = zdialog_new("Mashup",mWin,null); + EFmashup.zd = zd; + + zdialog_add_widget(zd,"hbox","hb1","dialog",0,"space=3"); + zdialog_add_widget(zd,"vbox","vb1","hb1",0,"space=3|homog"); + zdialog_add_widget(zd,"vbox","vb2","hb1",0,"space=3|homog"); + zdialog_add_widget(zd,"button","editimage","vb1",ZTX("Edit Images")); + zdialog_add_widget(zd,"button","edittext","vb1",ZTX("Edit Text")); + zdialog_add_widget(zd,"button","saveproject","vb1",ZTX("Save Project")); + zdialog_add_widget(zd,"button","done","vb1",Bdone); + zdialog_add_widget(zd,"button","cancel","vb1",Bcancel); + zdialog_add_widget(zd,"label","labedim","vb2",ZTX("add or edit images")); + zdialog_add_widget(zd,"label","labedtx","vb2",ZTX("add or edit text")); + zdialog_add_widget(zd,"label","labsavep","vb2",ZTX("save project data")); + zdialog_add_widget(zd,"label","labdone","vb2",ZTX("project complete")); + zdialog_add_widget(zd,"label","labcancel","vb2",ZTX("cancel project")); + + zdialog_run(zd,project_dialog_event); // start dialog + takeMouse(mousefunc,0); // capture mouse click/drag + + return; +} + + +// project dialog event and completion function + +int mashup::project_dialog_event(zdialog *zd, cchar *event) +{ + using namespace mashup; + + int ii; + + if (strEqu(event,"editimage")) { + zdialog_show(zd,0); + image_edit(); // start edit images dialog + zdialog_show(zd,1); + return 1; + } + + if (strEqu(event,"edittext")) { + zdialog_show(zd,0); + text_edit(); // start edit text dialog + zdialog_show(zd,1); + return 1; + } + + if (strEqu(event,"saveproject")) { + zdialog_show(zd,0); + project_save(); // save project data + zdialog_show(zd,1); // for later re-edit + return 1; + } + + if (zd->zstat) event = "cancel"; + + if (strEqu(event,"done")) // image edit complete + edit_done(); + + if (strEqu(event,"cancel")) // image edit canceled + edit_cancel(); + + if (strstr("done cancel",event)) + { + for (ii = 0; ii < Nimages; ii++) { // free image memory + zfree(image[ii].file); + PXM_free(image[ii].pxm1); + PXM_free(image[ii].pxm2); + } + + for (ii = 0; ii < Ntext; ii++) { + zfree(text[ii].text); // free text memory + PXM_free(text[ii].pxm_text); + PXM_free(text[ii].pxm_transp); + } + } + + return 1; +} + + +// open and restore a saved mashup project + +void mashup::project_open() +{ + using namespace mashup; + + int Nim, Ntx, ii, nn, err, ww, hh, Nth = 0; + char *pp, *pp2, projectfile[200], buff[maxfcc]; + PXM *pxm, *pxm_text, *pxm_transp; + FILE *fid; + struct stat sbuff; + + char *layoutfile, *overlayfile[maxmash]; // image data + float scale[maxmash], theta[maxmash], transp[maxmash]; + int blendist[maxmash]; + int px1[maxmash], py1[maxmash]; + + char *text2[maxmash], text3[1000]; // text data + textattr_t attr[maxmash], attr2; + int px2[maxmash], py2[maxmash]; + + layoutfile = 0; // set no allocated memory + for (ii = 0; ii < maxmash; ii++) { + overlayfile[ii] = 0; + text2[ii] = 0; + } + + snprintf(projectfile,200,"%s",mashup_dirk); + pp = zgetfile1(ZTX("Open Project"),"open",projectfile,null); // get project name from user + if (! pp) return; + strncpy0(projectfile,pp,200); + zfree(pp); + + fid = fopen(projectfile,"r"); // open project file + if (! fid) { + zmessageACK(mWin,0,strerror(errno)); + return; + } + + // read project file and validate all data + + pp = fgets_trim(buff,maxfcc,fid); // read layout image file + if (! pp) goto badproject; + if (strnNeq(pp,"layout file: ",13)) goto badproject; + layoutfile = strdupz(pp+13,0,"mashup"); + err = stat(layoutfile,&sbuff); + if (err) { + zmessageACK(mWin,0,ZTX("layout image file missing: \n %s"),layoutfile); + goto cleanup; + } + + pp = fgets_trim(buff,maxfcc,fid); // read overlay image count + if (! pp) goto badproject; + nn = sscanf(pp,"overlay Nimages: %d",&Nim); + if (nn != 1) goto badproject; + if (Nim < 0 || Nim > maxmash) goto badproject; + + for (ii = 0; ii < Nim; ii++) // loop overlay images + { + pp = fgets_trim(buff,maxfcc,fid); // read filespec + if (! pp) goto badproject; + if (strnNeq(pp,"image file: ",12)) goto badproject; + overlayfile[ii] = strdupz(pp+12,0,"mashup"); + err = stat(overlayfile[ii],&sbuff); + if (err) { + zmessageACK(mWin,0,ZTX("overlay image file missing: \n %s"),overlayfile[ii]); + goto cleanup; + } + + pp = fgets_trim(buff,maxfcc,fid); // read image attributes + if (! pp) goto badproject; + nn = sscanf(pp,"scale: %f theta: %f transp: %f blendist: %d \n", + &scale[ii], &theta[ii], &transp[ii], &blendist[ii]); + if (nn != 4) goto badproject; + + pp = fgets_trim(buff,maxfcc,fid); // read image position + if (! pp) goto badproject; + nn = sscanf(pp,"position: %d %d \n", &px1[ii], &py1[ii]); + if (nn != 2) goto badproject; + } + + pp = fgets_trim(buff,maxfcc,fid); // read overlay text count + if (! pp) goto badproject; + nn = sscanf(pp,"overlay Ntext: %d",&Ntx); + if (nn != 1) goto badproject; + if (Ntx < 0 || Ntx > maxmash) goto badproject; + + for (ii = 0; ii < Ntx; ii++) // loop overlay text + { + pp = fgets_trim(buff,maxfcc,fid); // read text string + if (! pp) goto badproject; + if (strnNeq(pp,"text string: ",13)) goto badproject; + repl_Nstrs(pp+13,text3,"\\n","\n",null); + text2[ii] = strdupz(text3,0,"mashup"); + + pp = fgets_trim(buff,maxfcc,fid); // read font and size + if (! pp) goto badproject; + if (strnNeq(pp,"font: ",6)) goto badproject; + pp += 6; + strTrim(pp); + pp2 = strstr(pp,"size: "); + if (! pp2) goto badproject; + *pp2 = 0; + pp2 += 6; + strncpy0(attr2.font,pp,80); + attr2.size = atoi(pp2); + if (attr2.size < 8) goto badproject; + + pp = fgets_trim(buff,maxfcc,fid); // read text attributes + if (! pp) goto badproject; + nn = sscanf(pp,"attributes: %f %s %s %s %s %d %d %d %d %d %d %d", + &attr2.angle, attr2.color[0], attr2.color[1], attr2.color[2], attr2.color[3], + &attr2.transp[0], &attr2.transp[1], &attr2.transp[2], &attr2.transp[3], + &attr2.towidth, &attr2.shwidth, &attr2.shangle); + if (nn != 12) goto badproject; + attr[ii] = attr2; + + pp = fgets_trim(buff,maxfcc,fid); // read text image position + if (! pp) goto badproject; + nn = sscanf(pp,"position: %d/%d", &px2[ii], &py2[ii]); + if (nn != 2) goto badproject; + } + + fclose(fid); + + err = f_open(layoutfile,1,Nth,0,1); // open layout image file + if (err) { + zmessageACK(mWin,0,ZTX("layout image file error: \n %s"),layoutfile); + goto cleanup; + } + + Nimages = Ntext = 0; // start mashup project + project(); + + for (ii = 0; ii < Nim; ii++) // load all overlay images + { + pxm = PXM_load(overlayfile[ii],1); + if (! pxm) { + zmessageACK(mWin,0,ZTX("overlay image file error: \n %s"),overlayfile[ii]); + goto cleanup; + } + + if (! strstr(overlayfile[ii],saved_areas_dirk)) // if not a saved select-area + PXM_fixblue(pxm); // RGB 0/0/0 pixels >> 0/0/1 for vpixel + + image[ii].file = strdupz(overlayfile[ii],0,"mashup"); // add image to list + image[ii].pxm1 = pxm; // image, 1x scale + image[ii].scale = scale[ii]; // scale in layout + image[ii].px0 = px1[ii]; // position in layout + image[ii].py0 = py1[ii]; + image[ii].theta = theta[ii]; // ratation + image[ii].sinT = sin(theta[ii]); + image[ii].cosT = cos(theta[ii]); + image[ii].transp = transp[ii]; // transparency + image[ii].blendist = blendist[ii]; // edge blend + ww = scale[ii] * image[ii].pxm1->ww; // image size in layout image + hh = scale[ii] * image[ii].pxm1->hh; + pxm = PXM_rescale(image[ii].pxm1,ww,hh); // rescaled image + image[ii].pxm2 = pxm; + image[ii].ww = ww; // image size in layout + image[ii].hh = hh; + setimageextent(ii); // set image extent in layout + } + + Nimages = Nim; + + for (ii = 0; ii < Ntx; ii++) // load all overlay text images + { + text[ii].text = text2[ii]; + text[ii].attr = attr[ii]; + gentext(text[ii].text,&text[ii].attr,pxm_text,pxm_transp); // make image from text and attributes + text[ii].pxm_text = pxm_text; + text[ii].pxm_transp = pxm_transp; + text[ii].ww = pxm_text->ww; // text image size + text[ii].hh = pxm_text->hh; + text[ii].px0 = px2[ii]; // position + text[ii].py0 = py2[ii]; + settextextent(ii); // set text image extent in layout + } + + Ntext = Ntx; + + CEF->Fmods++; // image is modified + + if (Nimages == 1) Simage = 0; // selected image = only image + else Simage = -1; // no selected image + set_Simage(Simage); + + if (Ntext == 1) Stext = 0; // selected text = only text + else Stext = -1; // no selected text + set_Stext(Stext); + + E3update(); // refresh composite image + goto cleanup; + +badproject: // project file had a problem + fclose(fid); + zmessageACK(mWin,0,ZTX("project file is defective")); + printf("buff: %s\n",buff); + +cleanup: + if (layoutfile) zfree(layoutfile); // free allocated memory + for (ii = 0; ii < maxmash; ii++) + if (overlayfile[ii]) zfree(overlayfile[ii]); + + return; +} + + +// save a mashup project so that it can be edited again later + +void mashup::project_save() +{ + using namespace mashup; + + textattr_t attr; + char *pp, projname[100], projectfile[200]; + char text2[1200]; + FILE *fid; + int ii; + + pp = strrchr(curr_file,'/'); // curr. file name >> default project name + strncpy0(projname,pp+1,100); + pp = strrchr(projname,'.'); // remove .ext + if (pp && strlen(pp) < 6) *pp = 0; + snprintf(projectfile,200,"%s/%s",mashup_dirk,projname); + + pp = zgetfile1(ZTX("Save Project"),"save",projectfile,null); // get project name from user + if (! pp) return; + strncpy0(projectfile,pp,200); + zfree(pp); + + fid = fopen(projectfile,"w"); + if (! fid) { + zmessageACK(mWin,0,strerror(errno)); + return; + } + + fprintf(fid,"layout file: %s\n",curr_file); + fprintf(fid,"overlay Nimages: %d \n",Nimages); + + for (ii = 0; ii < Nimages; ii++) + { + fprintf(fid,"image file: %s\n",image[ii].file); + fprintf(fid,"scale: %.4f theta: %.4f transp: %.4f blendist: %d \n", + image[ii].scale, image[ii].theta, image[ii].transp, image[ii].blendist); + fprintf(fid,"position: %d %d \n", image[ii].px0, image[ii].py0); + } + + fprintf(fid,"overlay Ntext: %d \n",Ntext); + for (ii = 0; ii < Ntext; ii++) + { + repl_Nstrs(text[ii].text, text2,"\n","\\n",null); + fprintf(fid,"text string: %s\n",text2); + attr = text[ii].attr; + fprintf(fid,"font: %s size: %d \n", attr.font, attr.size); + fprintf(fid,"attributes: %.4f %s %s %s %s %d %d %d %d %d %d %d \n", + attr.angle, attr.color[0], attr.color[1], attr.color[2], attr.color[3], + attr.transp[0], attr.transp[1], attr.transp[2], attr.transp[3], + attr.towidth, attr.shwidth, attr.shangle); + fprintf(fid,"position: %d/%d \n", text[ii].px0, text[ii].py0); + } + + fclose(fid); + return; +} + + +// mashup image edit function + +void mashup::image_edit() +{ + using namespace mashup; + + zdialog *zd; + cchar *tipmess = ZTX("Click image to select, drag image to move."); + + pupdxlo = pupdylo = 0; // prior update region = all + pupdxhi = Lww; + pupdyhi = Lhh; + + pimage = -1; // no prior image created/updated + Simage = -1; // no selected image + +/*** + ____________________________________________________ + | Edit Images | + | | + | Click image to select, drag image to move. | + | Current image: filename.jpg | + | | + | Size [+10%] [+1%] [+0.1%] [-0.1%] [-1%] [-10%] | + | Angle [+10ᵒ] [+1ᵒ] [+0.1ᵒ] [-0.1ᵒ] [-1ᵒ] [-10ᵒ] | + | Transparency ============[]===================== | + | Edge Blend Width =======[]====================== | + | | + | [Add] [Delete] [Done] | + |____________________________________________________| + +***/ + + zd = zdialog_new("Edit Images",mWin,Badd,Bdelete,Bdone,null); + zdimage = zd; + + zdialog_add_widget(zd,"hbox","hbtip","dialog",0,"space=3"); + zdialog_add_widget(zd,"label","labtip","hbtip",tipmess,"space=3"); + + zdialog_add_widget(zd,"hbox","hbfile","dialog"); + zdialog_add_widget(zd,"label","labfile","hbfile",ZTX("current image:"),"space=3"); + zdialog_add_widget(zd,"label","currfile","hbfile",0,"space=3"); + + zdialog_add_widget(zd,"hbox","hbsize","dialog",0,"space=3"); + zdialog_add_widget(zd,"label","labsize","hbsize",Bsize,"space=3"); + zdialog_add_widget(zd,"button","-10%","hbsize","-10%"); + zdialog_add_widget(zd,"button","-1%","hbsize","-1%"); + zdialog_add_widget(zd,"button","-.1%","hbsize","-.1%"); + zdialog_add_widget(zd,"button","+.1%","hbsize","+.1%"); + zdialog_add_widget(zd,"button","+1%","hbsize","+1%"); + zdialog_add_widget(zd,"button","+10%","hbsize","+10%"); + + zdialog_add_widget(zd,"hbox","hbang","dialog"); + zdialog_add_widget(zd,"label","labang","hbang",Bangle,"space=3"); + zdialog_add_widget(zd,"button","-10º","hbang","-10° ","space=3"); + zdialog_add_widget(zd,"button","-1º","hbang","-1° ","space=3"); + zdialog_add_widget(zd,"button","-.1º","hbang","-.1° ","space=3"); + zdialog_add_widget(zd,"button","+.1º","hbang","+.1° ","space=3"); + zdialog_add_widget(zd,"button","+1º","hbang","+1° ","space=3"); + zdialog_add_widget(zd,"button","+10º","hbang","+10° ","space=3"); + + zdialog_add_widget(zd,"hbox","hbtr","dialog",0,"space=3"); + zdialog_add_widget(zd,"label","labtr","hbtr",ZTX("Transparency"),"space=3"); + zdialog_add_widget(zd,"hscale","transp","hbtr","0|1.0|0.01|0","space=3|expand"); + + zdialog_add_widget(zd,"hbox","hbbl","dialog",0,"space=3"); + zdialog_add_widget(zd,"label","labbl","hbbl",ZTX("Edge Blend Width"),"space=3"); + zdialog_add_widget(zd,"hscale","blendist","hbbl","0|200|1|0","space=3|expand"); + + zdialog_run(zd,image_dialog_event,"save"); // run dialog - parallel + zdialog_wait(zd); + return; +} + + +// mashup dialog event and completion function + +int mashup::image_dialog_event(zdialog *zd, cchar *event) +{ + using namespace mashup; + + int ii, ww, hh, nn; + float ff, rad = pi/180.0; + PXM *pxm; + + if (zd->zstat) + { + if (zd->zstat == 1) { // add image + zd->zstat = 0; + add_image(); + return 1; + } + + if (zd->zstat == 2) { // remove image + zd->zstat = 0; + remove_image(); + return 1; + } + + zdialog_free(zd); // done or [x] kill + zdimage = 0; + return 1; + } + + if (strEqu(event,"focus")) { // get mouse ownership + takeMouse(mousefunc,0); + return 1; + } + + if (strchr(event,'%')) // resize +10%, -1%, etc. + { + if (Simage < 0) return 1; // selected image + ii = Simage; + ff = atof(event); // 10 or -1 percent, etc. + ff = 100.0 + ff; // 110 or 99, etc. + ff = ff / 100.0; // 1.1 or 0.99, etc. + image[ii].scale *= ff; // new image scale + ww = image[ii].pxm1->ww; // image dimensions, 1x + hh = image[ii].pxm1->hh; + ww = ww * image[ii].scale; // image dimensions at scale + hh = hh * image[ii].scale; + pxm = PXM_rescale(image[ii].pxm1,ww,hh); // rescale image + PXM_free(image[ii].pxm2); + image[ii].pxm2 = pxm; + image[ii].ww = ww; + image[ii].hh = hh; + setimageextent(ii); // get new image extent in layout + E3update(); // refresh composite image + } + + if (strstr(event,"º")) // rotate +10º, -1º, etc. + { + if (Simage < 0) return 1; // selected image + ii = Simage; + ff = atof(event); // 10 or -1 degrees, etc. + ff = ff * rad; // convert to radians + ff += image[ii].theta; // new image angle + image[ii].theta = ff; + image[ii].cosT = cos(ff); + image[ii].sinT = sin(ff); + setimageextent(ii); // get new image extent in layout + E3update(); // refresh composite image + } + + if (strEqu(event,"transp")) // transparency, 0 to 1.0 = invisible + { + if (Simage < 0) return 1; // selected image + ii = Simage; + zdialog_fetch(zd,"transp",ff); + image[ii].transp = ff; + setimageextent(ii); // get image extent in layout + E3update(); // refresh composite image + } + + if (strEqu(event,"blendist")) // blend width, 0 to max. + { + if (Simage < 0) return 1; // selected image + ii = Simage; + zdialog_fetch(zd,"blendist",nn); + image[ii].blendist = nn; + setimageextent(ii); // get image extent in layout + E3update(); // refresh composite image + } + + return 1; +} + + +// set selected image and update zdialog to match + +void mashup::set_Simage(int ii) +{ + using namespace mashup; + + zdialog *zd = zdimage; + char *pp; + float transp; + int blendist; + + if (! zd) return; + + if (ii < 0) { + zdialog_stuff(zd,"currfile",""); // no selected image + zdialog_stuff(zd,"transp",0); + zdialog_stuff(zd,"blendist",0); + Simage = -1; + return; + } + + pp = strrchr(image[ii].file,'/'); // set selected image file name + zdialog_stuff(zd,"currfile",pp+1); + transp = image[ii].transp; // set transparency to match + zdialog_stuff(zd,"transp",transp); + blendist = image[ii].blendist; // set blend width to match + zdialog_stuff(zd,"blendist",blendist); + + Simage = ii; + return; +} + + +// select a new overlay image file + +void mashup::add_image() +{ + using namespace mashup; + + int ii, jj, nn, Nfiles, ww, hh, fmods; + float scale; + char **selfiles, *file; + PXM *pxm; + + fmods = CEF->Fmods; // kludge to allow gallery tab + CEF->Fmods = 0; // during edit function + menulock(0); + + zdialog_show(zdimage,0); // hide parent dialog + selfiles = gallery_getfiles(null); // select image files from gallery + zdialog_show(zdimage,1); + + settab("F"); + if (! menulock(1)) return; + CEF->Fmods = fmods; + + if (! selfiles) return; // no files selected + + for (nn = 0; selfiles[nn]; nn++); // count files selected + Nfiles = nn; + + for (nn = 0; nn < Nfiles; nn++) + { + if (Nimages == maxmash) { + zmessageACK(mWin,0,ZTX("exceeded %d images"),maxmash); + break; + } + + file = selfiles[nn]; + pxm = PXM_load(file,1); // load image, ACK errors + if (! pxm) { + zfree(file); + continue; + } + + if (! strstr(file,saved_areas_dirk)) // if not a saved select-area + PXM_fixblue(pxm); // RGB 0/0/0 pixels >> 0/0/1 for vpixel + + ii = Nimages++; + image[ii].file = file; // add image file to mashup list + image[ii].pxm1 = pxm; + scale = 1.0; + ww = pxm->ww; + hh = pxm->hh; + if (scale * ww / Lww > 0.3) scale = 0.3 * Lww / ww; // if image > 30% layout, reduce to 30% + if (scale * hh / Lhh > 0.3) scale = 0.3 * Lhh / hh; + ww = ww * scale; + hh = hh * scale; + image[ii].scale = scale; + image[ii].ww = ww; + image[ii].hh = hh; + image[ii].pxm2 = PXM_rescale(image[ii].pxm1,ww,hh); + image[ii].theta = 0.0; + image[ii].sinT = 0; + image[ii].cosT = 1.0; + image[ii].transp = 0.0; + image[ii].blendist = 0; + + jj = ii; + while (jj >= 25) jj -= 25; + image[ii].py0 = (jj/5) * 0.20 * Lhh; // initial position + image[ii].px0 = (jj%5) * 0.20 * Lww; + setimageextent(ii); // get image extent in layout + } + + while (nn < Nfiles) zfree(selfiles[nn++]); // free unused files + zfree(selfiles); + + CEF->Fmods++; // image is modified + Simage = -1; // no selected image + E3update(); // refresh composite image + + return; +} + + +// remove an overlay image + +void mashup::remove_image() +{ + using namespace mashup; + + int ii, jj; + + ii = Simage; // selected image + if (ii < 0 || ii >= Nimages) return; + + setimageextent(ii); // get image extent in layout + + zfree(image[ii].file); // free memory + PXM_free(image[ii].pxm1); + PXM_free(image[ii].pxm2); + + for (jj = ii+1; jj < Nimages; jj++) // pack-down image list + image[ii] = image[jj]; + Nimages--; // image count + + E3update(); // refresh composite image + + if (Nimages == 1) ii = 0; // selected image = only image + else ii = -1; // no selected image + set_Simage(ii); + + return; +} + + +// get the max. x and y extents of an image +// set layout image update region to match + +void mashup::setimageextent(int ii) +{ + using namespace mashup; + + int pxlo, pxhi, pylo, pyhi; + int px, py, px0, py0; + int ww, hh; + float cosT, sinT; + + px0 = image[ii].px0; + py0 = image[ii].py0; + ww = image[ii].ww; + hh = image[ii].hh; + cosT = image[ii].cosT; + sinT = image[ii].sinT; + + pxlo = pxhi = px0; + px = px0 + ww * cosT; + if (px < pxlo) pxlo = px; + if (px > pxhi) pxhi = px; + px = px0 + ww * cosT - hh * sinT; + if (px < pxlo) pxlo = px; + if (px > pxhi) pxhi = px; + px = px0 - hh * sinT; + if (px < pxlo) pxlo = px; + if (px > pxhi) pxhi = px; + if (pxlo < 0) pxlo = 0; + if (pxhi > Lww) pxhi = Lww; + + pylo = pyhi = py0; + py = py0 + ww * sinT; + if (py < pylo) pylo = py; + if (py > pyhi) pyhi = py; + py = py0 + hh * cosT + ww * sinT; + if (py < pylo) pylo = py; + if (py > pyhi) pyhi = py; + py = py0 + hh * cosT; + if (py < pylo) pylo = py; + if (py > pyhi) pyhi = py; + if (pylo < 0) pylo = 0; + if (pyhi > Lhh) pyhi = Lhh; + + image[ii].pxlo = pxlo; + image[ii].pxhi = pxhi; + image[ii].pylo = pylo; + image[ii].pyhi = pyhi; + + updxlo = pxlo; // set update region + updxhi = pxhi; + updylo = pylo; + updyhi = pyhi; + + if (ii != pimage) Fupdall = 1; // if new image, update entire layout + pimage = ii; + + return; +} + + +// add text to image or revise existing text + +void mashup::text_edit() +{ + using namespace mashup; + + cchar *intro = ZTX("Enter text, click/drag on image."); + +/*** + _____________________________________________________ + | Edit Text | + | | + | Enter text, click/drag on image. | + | | + | Text [_________________________________________] | + | | + | [font] [FreeSans ] size [ 44|v] | + | | + | color transp. width angle | + | text [_____] [___|v] [___|v] | + | backing [_____] [___|v] | + | outline [_____] [___|v] [___|v] | + | shadow [_____] [___|v] [___|v] [___|v] | + | | + | Text File: [Open] [Save] | + | | + | [Add] [Delete] [Done] | + |_____________________________________________________| + +***/ + + zdialog *zd = zdialog_new(ZTX("Edit Text"),mWin,Badd,Bdelete,Bdone,null); + zdtext = zd; + + zdialog_add_widget(zd,"label","intro","dialog",intro,"space=3"); + zdialog_add_widget(zd,"hbox","hbtext","dialog",0,"space=3"); + zdialog_add_widget(zd,"label","labtext","hbtext",ZTX("Text"),"space=5"); + zdialog_add_widget(zd,"frame","frtext","hbtext",0,"expand"); + zdialog_add_widget(zd,"edit","text","frtext","","expand"); + + zdialog_add_widget(zd,"hbox","hbfont","dialog",0,"space=8"); + zdialog_add_widget(zd,"button","fontbutt","hbfont",Bfont); + zdialog_add_widget(zd,"entry","fontname","hbfont","FreeSans","space=2|expand"); + zdialog_add_widget(zd,"label","labsize","hbfont",Bsize,"space=2"); + zdialog_add_widget(zd,"spin","fontsize","hbfont","8|500|1|40"); + + zdialog_add_widget(zd,"hbox","hbcol","dialog"); + zdialog_add_widget(zd,"vbox","vbcol1","hbcol",0,"homog|space=5"); + zdialog_add_widget(zd,"vbox","vbcol2","hbcol",0,"homog|space=2"); + zdialog_add_widget(zd,"vbox","vbcol3","hbcol",0,"homog|space=2"); + zdialog_add_widget(zd,"vbox","vbcol4","hbcol",0,"homog|space=2"); + zdialog_add_widget(zd,"vbox","vbcol5","hbcol",0,"homog|space=2"); + + zdialog_add_widget(zd,"label","space","vbcol1"); + zdialog_add_widget(zd,"label","labtext","vbcol1",ZTX("text")); + zdialog_add_widget(zd,"label","labback","vbcol1",ZTX("backing")); + zdialog_add_widget(zd,"label","laboutln","vbcol1",ZTX("outline")); + zdialog_add_widget(zd,"label","labshadow","vbcol1",ZTX("shadow")); + + zdialog_add_widget(zd,"label","labcol","vbcol2",ZTX("Color")); + zdialog_add_widget(zd,"colorbutt","fgcolor","vbcol2","0|0|0"); + zdialog_add_widget(zd,"colorbutt","bgcolor","vbcol2","255|255|255"); + zdialog_add_widget(zd,"colorbutt","tocolor","vbcol2","255|0|0"); + zdialog_add_widget(zd,"colorbutt","shcolor","vbcol2","0|255|0"); + + zdialog_add_widget(zd,"label","labcol","vbcol3",ZTX("Transparency")); + zdialog_add_widget(zd,"spin","fgtransp","vbcol3","0|100|1|0"); + zdialog_add_widget(zd,"spin","bgtransp","vbcol3","0|100|1|0"); + zdialog_add_widget(zd,"spin","totransp","vbcol3","0|100|1|0"); + zdialog_add_widget(zd,"spin","shtransp","vbcol3","0|100|1|0"); + + zdialog_add_widget(zd,"label","labw","vbcol4",ZTX("Width")); + zdialog_add_widget(zd,"label","space","vbcol4"); + zdialog_add_widget(zd,"label","space","vbcol4"); + zdialog_add_widget(zd,"spin","towidth","vbcol4","0|30|1|0"); + zdialog_add_widget(zd,"spin","shwidth","vbcol4","0|50|1|0"); + + zdialog_add_widget(zd,"label","labw","vbcol5",Bangle); + zdialog_add_widget(zd,"spin","angle","vbcol5","-180|180|0.5|0"); + zdialog_add_widget(zd,"label","space","vbcol5"); + zdialog_add_widget(zd,"label","space","vbcol5"); + zdialog_add_widget(zd,"spin","shangle","vbcol5","-180|180|1|0"); + + zdialog_add_widget(zd,"hbox","hbaf","dialog",0,"space=10"); + zdialog_add_widget(zd,"label","labbg","hbaf",ZTX("Text File:"),"space=3"); + zdialog_add_widget(zd,"button","loadtext","hbaf",Bopen,"space=5"); + zdialog_add_widget(zd,"button","savetext","hbaf",Bsave,"space=5"); + + Stext = -1; // no selected text yet + + zdialog_restore_inputs(zd); // restore prior inputs + zdialog_run(zd,text_dialog_event,"save"); // run dialog, parallel + zdialog_wait(zd); + return; +} + + +// dialog event and completion callback function + +int mashup::text_dialog_event(zdialog *zd, cchar *event) +{ + using namespace mashup; + + GtkWidget *font_dialog; + char font[80], text2[1000]; + PXM *pxm_text, *pxm_transp; + int ii, size; + char *pp; + + if (zd->zstat) + { + if (zd->zstat == 1) { // add + zd->zstat = 0; + add_text(); // zdialog inputs >> new text image + return 1; + } + + if (zd->zstat == 2) { // delete + zd->zstat = 0; + remove_text(); // remove selected text image + return 1; + } + + zdialog_free(zd); // done or [x] kill + zdtext = 0; + return 1; + } + + if (strEqu(event,"focus")) { // get mouse ownership + takeMouse(mousefunc,0); + return 1; + } + + if (strEqu(event,"loadtext")) // load text data from file + load_text(zdtext); // and stuff zdialog fields + + if (strEqu(event,"savetext")) { // get all zdialog fields + save_text(zdtext); // and save them to a file + return 1; + } + + if (strEqu(event,"fontbutt")) // set new font + { + zdialog_fetch(zd,"fontname",font,80); + zdialog_fetch(zd,"fontsize",size); + snprintf(font,80,"%s %d",font,size); + font_dialog = gtk_font_chooser_dialog_new(ZTX("select font"),MWIN); + gtk_font_chooser_set_font(GTK_FONT_CHOOSER(font_dialog),font); + gtk_dialog_run(GTK_DIALOG(font_dialog)); + pp = gtk_font_chooser_get_font(GTK_FONT_CHOOSER(font_dialog)); + gtk_widget_destroy(font_dialog); + + if (pp) { // should have "fontname nn" + strncpy0(font,pp,80); + g_free(pp); + pp = font + strlen(font); + while (*pp != ' ') pp--; + if (pp > font) { // set both font name and size + size = atoi(pp); + if (size < 8) size = 8; + zdialog_stuff(zd,"fontsize",size); + *pp = 0; + zdialog_stuff(zd,"fontname",font); + } + } + } + + ii = Stext; // selected text entry + if (ii < 0) return 1; + + zdialog_fetch(zd,"text",text2,1000); // initz. new text and attributes + text[ii].text = strdupz(text2); // from zdialog + zdialog_fetch(zd,"fontname",text[ii].attr.font,80); + zdialog_fetch(zd,"fontsize",text[ii].attr.size); + zdialog_fetch(zd,"angle",text[ii].attr.angle); + zdialog_fetch(zd,"fgcolor",text[ii].attr.color[0],20); + zdialog_fetch(zd,"bgcolor",text[ii].attr.color[1],20); + zdialog_fetch(zd,"tocolor",text[ii].attr.color[2],20); + zdialog_fetch(zd,"shcolor",text[ii].attr.color[3],20); + zdialog_fetch(zd,"fgtransp",text[ii].attr.transp[0]); + zdialog_fetch(zd,"bgtransp",text[ii].attr.transp[1]); + zdialog_fetch(zd,"totransp",text[ii].attr.transp[2]); + zdialog_fetch(zd,"shtransp",text[ii].attr.transp[3]); + zdialog_fetch(zd,"towidth",text[ii].attr.towidth); + zdialog_fetch(zd,"shwidth",text[ii].attr.shwidth); + zdialog_fetch(zd,"shangle",text[ii].attr.shangle); + + CEF->Fmods++; // image is modified + + gentext(text[ii].text,&text[ii].attr,pxm_text,pxm_transp); // generate new text image + PXM_free(text[ii].pxm_text); + PXM_free(text[ii].pxm_transp); + text[ii].pxm_text = pxm_text; + text[ii].pxm_transp = pxm_transp; + text[ii].ww = pxm_text->ww; + text[ii].hh = pxm_text->hh; + settextextent(ii); // set text image extent in layout + + E3update(); // update E3 image and paint + zmainloop(); // let dialog widgets update + return 1; +} + + +// set selected text entry and update zdialog to match + +void mashup::set_Stext(int ii) +{ + using namespace mashup; + + zdialog *zd = zdtext; + if (! zd) return; + + if (ii < 0) { // no selected text + Stext = -1; + return; + } + + zdialog_stuff(zd,"text",text[ii].text); // stuff zdialog fields + zdialog_stuff(zd,"fontname",text[ii].attr.font); // from selected text entry + zdialog_stuff(zd,"fontsize",text[ii].attr.size); + zdialog_stuff(zd,"angle",text[ii].attr.angle); + zdialog_stuff(zd,"fgcolor",text[ii].attr.color[0]); + zdialog_stuff(zd,"bgcolor",text[ii].attr.color[1]); + zdialog_stuff(zd,"tocolor",text[ii].attr.color[2]); + zdialog_stuff(zd,"shcolor",text[ii].attr.color[3]); + zdialog_stuff(zd,"fgtransp",text[ii].attr.transp[0]); + zdialog_stuff(zd,"bgtransp",text[ii].attr.transp[1]); + zdialog_stuff(zd,"totransp",text[ii].attr.transp[2]); + zdialog_stuff(zd,"shtransp",text[ii].attr.transp[3]); + zdialog_stuff(zd,"towidth",text[ii].attr.towidth); + zdialog_stuff(zd,"shwidth",text[ii].attr.shwidth); + zdialog_stuff(zd,"shangle",text[ii].attr.shangle); + + Stext = ii; + return; +} + + +// add new text entry to text[ii] list +// get text and attributes from zdialog fields + +void mashup::add_text() +{ + using namespace mashup; + + int ii, jj; + char text2[1000]; + zdialog *zd = zdtext; + PXM *pxm_text, *pxm_transp; + + if (! zd) return; + + if (Ntext == maxmash) { + zmessageACK(mWin,0,ZTX("exceeded %d text entries"),maxmash); + return; + } + + ii = Ntext++; + Stext = ii; + + zdialog_fetch(zd,"text",text2,1000); // initz. new text and attributes + text[ii].text = strdupz(text2); // from zdialog + zdialog_fetch(zd,"fontname",text[ii].attr.font,80); + zdialog_fetch(zd,"fontsize",text[ii].attr.size); + zdialog_fetch(zd,"angle",text[ii].attr.angle); + zdialog_fetch(zd,"fgcolor",text[ii].attr.color[0],20); + zdialog_fetch(zd,"bgcolor",text[ii].attr.color[1],20); + zdialog_fetch(zd,"tocolor",text[ii].attr.color[2],20); + zdialog_fetch(zd,"shcolor",text[ii].attr.color[3],20); + zdialog_fetch(zd,"fgtransp",text[ii].attr.transp[0]); + zdialog_fetch(zd,"bgtransp",text[ii].attr.transp[1]); + zdialog_fetch(zd,"totransp",text[ii].attr.transp[2]); + zdialog_fetch(zd,"shtransp",text[ii].attr.transp[3]); + zdialog_fetch(zd,"towidth",text[ii].attr.towidth); + zdialog_fetch(zd,"shwidth",text[ii].attr.shwidth); + zdialog_fetch(zd,"shangle",text[ii].attr.shangle); + + gentext(text2,&text[ii].attr,pxm_text,pxm_transp); // generate new text image + text[ii].pxm_text = pxm_text; + text[ii].pxm_transp = pxm_transp; + text[ii].ww = pxm_text->ww; + text[ii].hh = pxm_text->hh; + + jj = ii; + while (jj >= 25) jj -= 25; + text[ii].py0 = (jj/5) * 0.20 * Lhh; // initial position + text[ii].px0 = (jj%5) * 0.20 * Lww; + settextextent(ii); // set text image extent in layout + + CEF->Fmods++; // image is modified + E3update(); // update E3 image and paint + return; +} + + +// remove text entry from text[ii] + +void mashup::remove_text() +{ + using namespace mashup; + + int ii; + + ii = Stext; // selected image + if (ii < 0) return; + + settextextent(ii); // set text image extent in layout + + zfree(text[ii].text); // free memory + PXM_free(text[ii].pxm_text); + PXM_free(text[ii].pxm_transp); + for (ii = Stext + 1; ii < Ntext; ii++) // pack down text list + text[ii-1] = text[ii]; + Ntext--; // text count + + Stext = -1; // no selected text + E3update(); // update E3 image and paint + return; +} + + +// get the max. x and y extents of a text image +// set layout image update region to match + +void mashup::settextextent(int ii) +{ + using namespace mashup; + + int px0, py0, ww, hh; + + px0 = text[ii].px0; + py0 = text[ii].py0; + ww = text[ii].ww; + hh = text[ii].hh; + + text[ii].pxlo = updxlo = px0; // set update region + text[ii].pxhi = updxhi = px0 + ww; + text[ii].pylo = updylo = py0; + text[ii].pyhi = updyhi = py0 + hh; + + if (updxlo < 0) updxlo = 0; + if (updxhi > Lww) updxhi = Lww; + if (updylo < 0) updylo = 0; + if (updyhi > Lhh) updyhi = Lhh; + + return; +} + + +// mouse function - called for mouse events inside image + +void mashup::mousefunc() +{ + using namespace mashup; + + static int mdx0 = 0, mdy0 = 0, mdx1, mdy1; + static int iim, iit, minimage, mintext; + int ii, Fmove, Fnew; + int dist, distx, disty; + int mx1, my1, mx2, my2, imx, imy; + int pxlo, pxhi, pylo, pyhi; + float px0, py0, px1, py1, px2, py2; + float sinT, cosT, pix9[3]; + + if (LMclick) { // left click + LMclick = 0; + mx1 = mx2 = Mxclick; // mouse position + my1 = my2 = Myclick; + Fnew = 1; + Fmove = 0; + } + + else if (Mxdrag || Mydrag) // drag underway + { + Fnew = 0; + Fmove = 1; + + if (Mxdown != mdx0 || Mydown != mdy0) { // new drag initiated + mdx0 = mdx1 = Mxdown; + mdy0 = mdy1 = Mydown; + Fnew = 1; + } + + mx1 = mdx1; // drag start + my1 = mdy1; + mx2 = Mxdrag; // drag position + my2 = Mydrag; + mdx1 = mx2; // next drag start + mdy1 = my2; + Mxdrag = Mydrag = 0; // no main window drag + } + + else return; + + px1 = mx2; // mouse position in layout image + py1 = my2; + + if (Fnew) + { + minimage = 9999; + + for (ii = 0; ii < Nimages; ii++) // find nearest overlay image + { + px0 = image[ii].px0; // overlay image position and rotation + py0 = image[ii].py0; // in layout image space + sinT = image[ii].sinT; + cosT = image[ii].cosT; + px2 = (px1-px0) * cosT + (py1-py0) * sinT; // overlay image pixel for layout position + py2 = (py1-py0) * cosT - (px1-px0) * sinT; + if (! vpixel(image[ii].pxm2,px2,py2,pix9)) continue; // mouse not within overlay image + + pxlo = image[ii].pxlo; // image extent + pxhi = image[ii].pxhi; + pylo = image[ii].pylo; + pyhi = image[ii].pyhi; + imx = (pxlo + pxhi) / 2; // image center + imy = (pylo + pyhi) / 2; + distx = px1 - imx; + disty = py1 - imy; + dist = sqrtf(distx * distx + disty * disty); // mouse/center distance + if (dist < minimage) { + minimage = dist; + iim = ii; + set_Simage(iim); + } + } + + mintext = 9999; + + for (ii = 0; ii < Ntext; ii++) // find nearest overlay text image + { + pxlo = text[ii].pxlo; // image extent + pxhi = text[ii].pxhi; + pylo = text[ii].pylo; + pyhi = text[ii].pyhi; + if (px1 < pxlo || px1 > pxhi) continue; // mouse not within text image + if (py1 < pylo || py1 > pyhi) continue; + + imx = (pxlo + pxhi) / 2; // text image center + imy = (pylo + pyhi) / 2; + distx = px1 - imx; + disty = py1 - imy; + dist = sqrtf(distx * distx + disty * disty); // mouse/center distance + if (dist < mintext) { + mintext = dist; + iit = ii; + set_Stext(iit); + } + } + } + + if (Fmove) + { + if (minimage < mintext) { // drag image + ii = iim; + image[ii].px0 += (px1 - mx1); // move selected image + image[ii].py0 += (py1 - my1); // by mouse drag amount + setimageextent(ii); // set image extent in layout + E3update(); // refresh composite image + } + + else { // drag text image + ii = iit; + text[ii].px0 += (px1 - mx1); // move selected text image + text[ii].py0 += (py1 - my1); // by mouse drag amount + settextextent(ii); // set text image extent in layout + E3update(); + } + } + + return; +} + + +// refresh output image E3 from E1 + overlay image data + +void mashup::E3update() +{ + using namespace mashup; + + int nupdxlo, nupdxhi, nupdylo, nupdyhi; + static int psimage = -2, pstext = -2; // -1 means no selected image/text + + nupdxlo = updxlo; // save update region + nupdxhi = updxhi; + nupdylo = updylo; + nupdyhi = updyhi; + + if (Fupdall) { // update entire layout + updxlo = updylo = 0; + updxhi = Lww; + updyhi = Lhh; + psimage = pstext = -2; + } + + if (Simage == psimage && Stext == pstext) // same image as before + { + if (pupdxlo < updxlo) updxlo = pupdxlo; // expand update region to + if (pupdxhi > updxhi) updxhi = pupdxhi; // include prior update region + if (pupdylo < updylo) updylo = pupdylo; + if (pupdyhi > updyhi) updyhi = pupdyhi; + } + + signal_thread(); // trigger update thread + wait_thread_idle(); + + if (Fupdall) mwpaint2(); // update entire layout + else mwpaint3(updxlo,updylo,updxhi-updxlo,updyhi-updylo); // paint only updated region + Fupdall = 0; + + pupdxlo = nupdxlo; // save update region + pupdxhi = nupdxhi; + pupdylo = nupdylo; + pupdyhi = nupdyhi; + + psimage = Simage; // remember selected images + pstext = Stext; + + mwpaint2(); + return; +} + +void * mashup::E3update_thread(void *) // main thread +{ + using namespace mashup; + + while (true) + { + thread_idle_loop(); // wait for work or exit request + + for (int ii = 0; ii < Nwt; ii++) // start worker threads for images + start_wthread(E3update_wthread1,&wtnx[ii]); + wait_wthreads(); // wait for completion + + for (int ii = 0; ii < Nwt; ii++) // start worker threads for text images + start_wthread(E3update_wthread2,&wtnx[ii]); + wait_wthreads(); // wait for completion + } + + return 0; // not executed, stop warning +} + +void * mashup::E3update_wthread1(void *arg) // worker thread for images +{ + using namespace mashup; + + int index = *((int *) (arg)); + int ii, px, py; + float *pix1, *pix3, pix9[3]; + float red, green, blue, opac, Sopac, transp, Ptransp; + float px0, py0, px1, py1, px2, py2; + float ww, hh, edgedist, blendist; + float sinT, cosT; + PXM *pxm2; + + for (py = updylo+index; py < updyhi; py += Nwt) // loop layout image pixels + for (px = updxlo; px < updxhi; px++) // within update region + { + pix1 = PXMpix(E1pxm,px,py); // input image pixel (layout) + pix3 = PXMpix(E3pxm,px,py); // output image pixel ( " + overlay images) + + red = green = blue = 0; + Ptransp = 1; + Sopac = 0; + + px1 = px; // layout image pixel + py1 = py; + + for (ii = 0; ii < Nimages; ii++) // loop overlay images + { + if (image[ii].pxhi < updxlo) continue; // no overlap of layout and overlay images + if (image[ii].pxlo > updxhi) continue; + if (image[ii].pyhi < updylo) continue; + if (image[ii].pylo > updyhi) continue; + px0 = image[ii].px0; // overlay image position and rotation + py0 = image[ii].py0; // in layout image space + pxm2 = image[ii].pxm2; + sinT = image[ii].sinT; + cosT = image[ii].cosT; + px2 = (px1-px0) * cosT + (py1-py0) * sinT; // get overlay image pixel for layout position + py2 = (py1-py0) * cosT - (px1-px0) * sinT; + if (px2 < 0 || px2 > image[ii].ww) continue; + if (py2 < 0 || py2 > image[ii].hh) continue; + if (! vpixel(pxm2,px2,py2,pix9)) continue; // overlay image virt. pixel + + transp = image[ii].transp; // image transparency + blendist = image[ii].blendist; // edge blend distance + + if (blendist) { + ww = image[ii].ww; // edge blend: transparency rises from + hh = image[ii].hh; // transp to 1.0 for edge distance + edgedist = px2; // from blendist to zero + if (py2 < edgedist) edgedist = py2; + if (ww - px2 < edgedist) edgedist = ww - px2; + if (hh - py2 < edgedist) edgedist = hh - py2; + if (edgedist < blendist) // (px2,py2) within blend distance + transp = 1.0 + (edgedist/blendist) * (transp - 1.0); // 1 to transp for edgedist = 0 to blendist + } + + opac = 1.0 - transp; // opacity = 1 - transparency + red += pix9[0] * opac; // sum color * opacity + green += pix9[1] * opac; + blue += pix9[2] * opac; + Sopac += opac; // opacity sum + Ptransp *= transp; // transparency product + } + + if (Sopac) { // some overlay image(s) cover this pixel + red = red / Sopac * (1.0 - Ptransp); // overlay images total color + green = green / Sopac * (1.0 - Ptransp); // = (opacity weighted average color) + blue = blue / Sopac * (1.0 - Ptransp); // * (1 - transparency product) + } + + red += pix1[0] * Ptransp; // + layout color * (transparency product) + green += pix1[1] * Ptransp; + blue += pix1[2] * Ptransp; + + pix3[0] = red; // output pixel + pix3[1] = green; + pix3[2] = blue; + } + + exit_wthread(); // exit thread + return 0; // not executed, avoid gcc warning +} + +void * mashup::E3update_wthread2(void *arg) // worker thread for text images +{ + using namespace mashup; + + int index = *((int *) (arg)); + int ii, px, py; + int px0, py0, px3, py3; + float *pix1, *pix2, *pix3; + float e3part; + PXM *pxm_text, *pxm_transp; + + for (ii = 0; ii < Ntext; ii++) // update overlapping text images + { + if (ii % Nwt != index) continue; // divide text among threads + + if (text[ii].pxhi < updxlo) continue; // no overlap with update region + if (text[ii].pxlo > updxhi) continue; + if (text[ii].pyhi < updylo) continue; + if (text[ii].pylo > updyhi) continue; + + pxm_text = text[ii].pxm_text; + pxm_transp = text[ii].pxm_transp; + px0 = text[ii].px0; // overlay image position in layout image space + py0 = text[ii].py0; + + for (py = 0; py < pxm_text->hh; py++) // write text over image + for (px = 0; px < pxm_text->ww; px++) + { + px3 = px0 + px; + py3 = py0 + py; + if (px3 < 0 || px3 >= E3pxm->ww) continue; // omit parts beyond edges + if (py3 < 0 || py3 >= E3pxm->hh) continue; + pix1 = PXMpix(pxm_text,px,py); // copy-from text pixel + pix2 = PXMpix(pxm_transp,px,py); // copy-from transparency + pix3 = PXMpix(E3pxm,px3,py3); // copy-to image pixel + e3part = pix2[0] / 255.0; // image part visible through text + pix3[0] = pix1[0] + e3part * pix3[0]; // combine text part + image part + pix3[1] = pix1[1] + e3part * pix3[1]; + pix3[2] = pix1[2] + e3part * pix3[2]; + } + } + + exit_wthread(); // exit thread + return 0; // not executed, avoid gcc warning +} + + + diff -Nru fotoxx-13.08/f.effects.cc fotoxx-13.09.1/f.effects.cc --- fotoxx-13.08/f.effects.cc 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/f.effects.cc 2013-08-31 06:26:38.000000000 +0000 @@ -4,7 +4,7 @@ Copyright 2007 2008 2009 2010 2011 2012 2013 Michael Cornelison Source URL: http://kornelix.com/fotoxx - Contact: kornelix2@gmail.com + Contact: kornelix@gmx.de This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -1881,7 +1881,7 @@ zdialog_add_widget(zd,"button","apply","hbbd",Bapply,"space=10"); zdialog_restore_inputs(zd); // preload prior user inputs - zdialog_run(zd,painting_dialog_event,"-10/20"); // run dialog, parallel + zdialog_run(zd,painting_dialog_event,"save"); // run dialog, parallel return; } @@ -1912,7 +1912,7 @@ color_match = 0.01 * color_match; // scale 0 to 1 signal_thread(); // do the work - wait_thread_idle(); + wait_thread_idle(); // v.13.09 } return 0; diff -Nru fotoxx-13.08/f.file.cc fotoxx-13.09.1/f.file.cc --- fotoxx-13.08/f.file.cc 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/f.file.cc 2013-08-31 06:26:38.000000000 +0000 @@ -4,7 +4,7 @@ Copyright 2007 2008 2009 2010 2011 2012 2013 Michael Cornelison Source URL: http://kornelix.com/fotoxx - Contact: kornelix2@gmail.com + Contact: kornelix@gmx.de This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -261,21 +261,17 @@ void m_prev_next(int index) { - int err, Nth, ftype; + int err, Nth, loNth, hiNth, ftype; char *pfile, *ptiff; struct stat statb; - Nth = curr_file_posn; // v.13.08 - if (Nth < 0) Nth = 0; - if (Nth >= navi::nfiles) Nth = navi::nfiles - 1; + loNth = navi::nfiles - navi::nimages; // 1st image file (after directories) + hiNth = navi::nfiles - 1; // last + Nth = curr_file_posn; // get prev/next file from here v.13.08 for (Nth += index; ; Nth += index) { - if (Nth < 0 || Nth >= navi::nfiles) { // v.13.08 - poptext_mouse(ZTX("no more images"),Fpointer,50,30,0,3); - if (Nth >= navi::nfiles) Nth = navi::nfiles - 1; // open last or first image file - else Nth = navi::nfiles - navi::nimages; - } + if (Nth < loNth || Nth > hiNth) goto nomoreimages; // reached the end v.13.09 pfile = gallery(0,"find",Nth); // next file in gallery if (! pfile) continue; @@ -287,7 +283,7 @@ if (ftype == 3) { // RAW file ptiff = raw_to_tiff(pfile); // get equivalent .tiff - if (strEqu(ptiff,curr_file)) { // if same as current file, ignore + if (curr_file && strEqu(ptiff,curr_file)) { // if same as current file, ignore v.13.09 zfree(pfile); zfree(ptiff); continue; @@ -305,7 +301,26 @@ return; } } + +nomoreimages: + + poptext_window(ZTX("no more images"),MWIN,200,200,0,3); + free_resources(); // no curr. file, blank tab F v.13.09 + set_mwin_title(); + + if (navi::nimages == 0) return; // no image files in directory + curr_file_posn = Nth; // prev/next will work + + if (zdrename) zdialog_destroy(zdrename); // kill risky dialogs if v.13.09 + if (zdcopymove) zdialog_destroy(zdcopymove); // current file disappears + if (zdfilesave) zdialog_destroy(zdfilesave); + if (zddelete) zdialog_destroy(zddelete); + if (zdtrash) zdialog_destroy(zdtrash); + if (zdexifedit) zdialog_destroy(zdexifedit); + if (zdeditmeta) zdialog_destroy(zdeditmeta); + if (zdeditgeotags) zdialog_destroy(zdeditgeotags); + mwpaint2(); return; } @@ -357,273 +372,302 @@ /**************************************************************************/ -// save (modified) image to same file +// save (modified) image file to disk -void m_save(GtkWidget *, cchar *menu) +void m_file_save(GtkWidget *, cchar *menu) // v.13.09 { - int Fwarn = 1, zstat, suppress; - char *pp; - zdialog *zd; - cchar *warn_message = ZTX("Overwrite original file?"); - cchar *suppress_message = ZTX("Do not warn again"); - - if (! curr_file) return; + int file_save_dialog_event(zdialog *zd, cchar *event); - if (menu && strNeq(menu,"nowarn")) // don't change help topic - F1_help_topic = "save_file"; + cchar *pp; + zdialog *zd; - if (Fwarnoverwrite) { // warn if overwrite original - pp = strrchr(curr_file,'/'); - if (! pp) return; - pp = strstr(pp,".v"); // look for version notation .vNN - if (pp && pp[2] >= '0' && pp[2] <= '9' - && pp[3] >= '0' && pp[3] <= '9') Fwarn = 0; // found, file not original - - if (Fwarn && ! (menu && strEqu(menu,"nowarn"))) { // (no warn if KB rotate save) - zd = zdialog_new(ZTX("Warning"),mWin,Bproceed,Bcancel,null); - zdialog_add_widget(zd,"label","lab1","dialog",warn_message,"space=5"); - zdialog_add_widget(zd,"check","suppress","dialog",suppress_message,"space=5"); - zdialog_run(zd,0,"mouse"); // v.13.01 - zstat = zdialog_wait(zd); - zdialog_fetch(zd,"suppress",suppress); - zdialog_free(zd); - if (suppress) { - Fwarnoverwrite = 0; - save_params(); - } - if (zstat != 1) return; - } + F1_help_topic = "save_file"; + if (! curr_file) { + if (zdfilesave) zdialog_destroy(zdfilesave); + zdfilesave = 0; + return; } - + if (strEqu(curr_file_type,"other")) // if unsupported type, use jpg strcpy(curr_file_type,"jpg"); - f_save(curr_file,curr_file_type,curr_file_bpc); // save file with curr. edits applied +/*** + _______________________________________________ + | | + | Save Image File | + | | + | filename.jpg | + | | + | [version] save as new file version | + | [new file] save as new file name or type | + | [replace] replace file (OVERWRITE) | + | | + | [cancel] | + |_______________________________________________| + +***/ + + if (! zdfilesave) + { + zd = zdialog_new(ZTX("Save Image File"),mWin,Bcancel,null); + zdfilesave = zd; + + zdialog_add_widget(zd,"hbox","hbf","dialog",0,"space=5"); + zdialog_add_widget(zd,"label","filename","hbf",0,"space=10"); + + zdialog_add_widget(zd,"hbox","hb0","dialog"); + zdialog_add_widget(zd,"vbox","vb1","hb0",0,"space=3|homog"); + zdialog_add_widget(zd,"vbox","vb2","hb0",0,"space=3|homog"); + + zdialog_add_widget(zd,"button","newvers","vb1",ZTX("new version")); + zdialog_add_widget(zd,"button","newfile","vb1",ZTX("new file name")); + zdialog_add_widget(zd,"button","replace","vb1",ZTX("replace file")); + + zdialog_add_widget(zd,"hbox","hb1","vb2"); + zdialog_add_widget(zd,"hbox","hb2","vb2"); + zdialog_add_widget(zd,"hbox","hb3","vb2"); + + zdialog_add_widget(zd,"label","labvers","hb1",ZTX("save as new file version")); + zdialog_add_widget(zd,"label","labfile","hb2",ZTX("save as new file name or type")); + zdialog_add_widget(zd,"label","labrepl","hb3",ZTX("replace old file (OVERWRITE)")); + zdialog_add_widget(zd,"image","warning","hb3","warning.png","space=5"); + } - strcpy(curr_file_type,f_save_type); // update curr_file_xxx from f_save_xxx - curr_file_size = f_save_size; + zd = zdfilesave; + pp = strrchr(curr_file,'/'); + if (pp) zdialog_stuff(zd,"filename",pp+1); + + zdialog_run(zd,file_save_dialog_event,"mouse"); return; } -/**************************************************************************/ +// dialog event and completion function -// save (modified) image to new version of same file -// - no confirmation of overwrite. +int file_save_dialog_event(zdialog *zd, cchar *event) // v.13.09 +{ + int file_save_as(); -void m_savevers(GtkWidget *, cchar *) -{ - char *outfile, *pext, *pvers; + static char *newfilename = 0; + char *pfile, *pext, *pvers; cchar *delim; int ii, err, nvers; struct stat fstat; - - if (! curr_file) return; - F1_help_topic = "save_file"; - outfile = strdupz(curr_file,12,"curr_file"); // output file name TBD - - pext = strrchr(outfile,'/'); // find file .ext - if (pext) pext = strrchr(pext,'.'); - if (pext && strlen(pext) > 5) pext = 0; - if (! pext) pext = outfile + strlen(outfile); // unknown, none - - pvers = pext - 4; // find curr. version: filename.vNN.ext - if (! strnEqu(pvers,".v",2)) nvers = 0; - else { - err = convSI(pvers+2,nvers,1,98,&delim); // convert NN to number 1-98 - if (err > 1) nvers = 0; // conversion error - if (delim != pext) nvers = 0; // check format is .vNN - } - if (nvers == 0) { // no version in file name - pvers = pext; - pext += 4; - memmove(pext,pvers,6); // make space for .vNN before .ext - strncpy(pvers,".vNN",4); + if (zd->zstat) { // cancel + zdialog_free(zd); // kill dialog + zdfilesave = 0; + return 1; } + + if (! strstr("newvers newfile replace",event)) return 1; // ignore other events + zdialog_free(zd); // kill dialog + zdfilesave = 0; - for (ii = 98; ii > nvers; ii--) // look for higher file versions + if (strEqu(event,"newvers")) { - pvers[2] = ii/10 + '0'; // build filename.vNN.ext - pvers[3] = ii - 10 * (ii/10) + '0'; - err = stat(outfile,&fstat); - if (! err) break; - } + if (newfilename) zfree(newfilename); + newfilename = strdupz(curr_file,12,"file_save"); + pfile = strrchr(newfilename,'/'); // get filename + if (! pfile) return 1; + pext = strrchr(pfile,'.'); // get .ext + if (pext && strlen(pext) > 5) pext = 0; + if (! pext) pext = newfilename + strlen(newfilename); // unknown, none + + pvers = pext - 4; // get curr. version: filename.vNN.ext + if (! strnEqu(pvers,".v",2)) nvers = 0; + else { + err = convSI(pvers+2,nvers,1,98,&delim); // convert NN to number 1-98 + if (err > 1) nvers = 0; // conversion error + if (delim != pext) nvers = 0; // check format is .vNN + } + + if (nvers == 0) { // no version in file name + pvers = pext; + pext += 4; + memmove(pext,pvers,6); // make space for .vNN before .ext + strncpy(pvers,".vNN",4); + } - ii++; // use next version 1-99 - nvers = ii; - pvers[2] = ii/10 + '0'; // build filename.vNN.ext - pvers[3] = ii - 10 * (ii/10) + '0'; + for (ii = 98; ii > nvers; ii--) // look for higher file versions + { + pvers[2] = ii/10 + '0'; // build filename.vNN.ext + pvers[3] = ii - 10 * (ii/10) + '0'; + err = stat(newfilename,&fstat); + if (! err) break; + } - if (strEqu(curr_file_type,"other")) // if not supported type, use jpg - strcpy(curr_file_type,"jpg"); + ii++; // use next version 1-99 + nvers = ii; // (vers 99 >> 99) + pvers[2] = ii/10 + '0'; // build filename.vNN.ext + pvers[3] = ii - 10 * (ii/10) + '0'; - f_save(outfile,curr_file_type,curr_file_bpc); // save file (fails at 99 versions) - zfree(outfile); + f_save(newfilename,curr_file_type,curr_file_bpc); // save file (fails at 99 versions) + f_open_saved(); // open saved file with edit hist + } - f_open_saved(); // open saved file with edit hist v.13.04 - return; + if (strEqu(event,"replace")) + { + f_save(curr_file,curr_file_type,curr_file_bpc); // save file with curr. edits applied + strcpy(curr_file_type,f_save_type); // update curr_file_xxx from f_save_xxx + curr_file_size = f_save_size; + } + + if (strEqu(event,"newfile")) + { + err = file_save_as(); // save-as file chooser dialog + if (err) m_file_save(0,0); // user cancel - back to start + } + + return 1; } -/**************************************************************************/ - -// save (modified) image to new file -// confirm if overwrite existing file +// save (modified) image to new file name or type +// confirm if overwrite of existing file +// returns 0 if OK, 1 if cancel or error -GtkWidget *saveas_fchooser; +GtkWidget *saveas_fchooser; -void m_saveas(GtkWidget *, cchar *menu) +int file_save_as() // v.13.09 { - void saveas_radiobutt(void *, int button); - void saveas_KBkey(void *, GdkEventKey *event); + int file_save_as_dialog_event(zdialog *zd, cchar *event); - GtkWidget *fdialog, *vbox, *hbox; - GtkWidget *tif8, *tif16, *png8, *png16, *ico, *bmp, *jpg, *jqlab, *jqval; - GtkWidget *makecurrent; + zdialog *zd; static char *save_dirk = 0; - char *outfile = 0, *outfile2 = 0, *pp, *pext, txqual[8]; - int ii, err, yn, bpc, status, mkcurr = 0; - struct stat fstat; cchar *type; + char *outfile = 0, *outfile2 = 0, *pp, *pext; + int ii, zstat, err, yn, bpc, mkcurr = 0; + struct stat fstat; - if (! curr_file) return; - - if (menu) F1_help_topic = "save_file"; +/*** + ____________________________________________________________________ + | | + | Save as New File Name or Type | + | | + | [ file chooser dialog goes here ] | + | | + | ꖴ tif-8 ꖴ tif-16 ꖴ png-8 ꖴ png-16 ꖴ bmp ꖴ jpg quality [90] | + | [x] make current | + | | + | [save] [cancel] | + |____________________________________________________________________| - fdialog = gtk_dialog_new_with_buttons(ZTX("Save File"), // build file save dialog - MWIN, GTK_DIALOG_MODAL, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, null); +***/ - gtk_window_set_default_size(GTK_WINDOW(fdialog),600,500); - - vbox = gtk_dialog_get_content_area(GTK_DIALOG(fdialog)); + zd = zdialog_new(ZTX("save as new file name or type"),mWin,Bsave,Bcancel,null); + zdialog_add_widget(zd,"hbox","hbfc","dialog",0,"expand"); + zdialog_add_widget(zd,"vbox","vbfc","hbfc",0,"space=3"); saveas_fchooser = gtk_file_chooser_widget_new(GTK_FILE_CHOOSER_ACTION_SAVE); - gtk_container_add(GTK_CONTAINER(vbox),saveas_fchooser); + gtk_container_add(GTK_CONTAINER(zdialog_widget(zd,"hbfc")),saveas_fchooser); - if (! save_dirk) { // output dirk default from curr. file - save_dirk = strdupz(curr_file); // v.13.04 + zdialog_add_widget(zd,"hbox","hbft","dialog",0,"space=3"); + zdialog_add_widget(zd,"radio","tif-8","hbft","tif-8","space=3"); + zdialog_add_widget(zd,"radio","tif-16","hbft","tif-16","space=3"); + zdialog_add_widget(zd,"radio","png-8","hbft","png-8","space=3"); + zdialog_add_widget(zd,"radio","png-16","hbft","png-16","space=3"); + zdialog_add_widget(zd,"radio","bmp","hbft","bmp","space=3"); + zdialog_add_widget(zd,"radio","jpg","hbft","jpg","space=3"); + zdialog_add_widget(zd,"label","labqual","hbft","quality"); + zdialog_add_widget(zd,"entry","jpgqual","hbft","90","space=2|scc=2"); + zdialog_add_widget(zd,"check","mkcurr","hbft",ZTX("make current"),"space=3"); + + if (! save_dirk) { // default from curr. file + save_dirk = strdupz(curr_file,0,"file_save"); // v.13.04 pp = strrchr(save_dirk,'/'); *pp = 0; } - + gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(saveas_fchooser),save_dirk); char *fname = strrchr(curr_file,'/') + 1; gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(saveas_fchooser),fname); - - hbox = gtk_box_new(HORIZONTAL,0); - gtk_container_add(GTK_CONTAINER(vbox),hbox); - gtk_box_set_child_packing(GTK_BOX(vbox),hbox,0,0,10,GTK_PACK_END); - - tif8 = gtk_radio_button_new_with_label(null,"tif-8"); - tif16 = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(tif8),"tif-16"); - png8 = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(tif8),"png-8"); - png16 = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(tif8),"png-16"); - ico = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(tif8),"ico"); - bmp = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(tif8),"bmp"); - jpg = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(tif8),"jpg"); - jqlab = gtk_label_new(ZTX("quality")); - jqval = gtk_entry_new(); - makecurrent = gtk_check_button_new_with_label(ZTX("make current")); - - gtk_entry_set_width_chars(GTK_ENTRY(jqval),2); - gtk_box_pack_start(GTK_BOX(hbox),tif8,0,0,5); // (o) tif-8 (o) tif-16 - gtk_box_pack_start(GTK_BOX(hbox),tif16,0,0,5); - gtk_box_pack_start(GTK_BOX(hbox),png8,0,0,5); // ... (o) png-8 (o) png-16 - gtk_box_pack_start(GTK_BOX(hbox),png16,0,0,5); - gtk_box_pack_start(GTK_BOX(hbox),ico,0,0,5); // ... (o) ico (o) bmp - gtk_box_pack_start(GTK_BOX(hbox),bmp,0,0,5); - gtk_box_pack_start(GTK_BOX(hbox),jpg,0,0,5); // ... (o) jpg quality [__] - gtk_box_pack_start(GTK_BOX(hbox),jqlab,0,0,0); - gtk_box_pack_start(GTK_BOX(hbox),jqval,0,0,3); - gtk_box_pack_end(GTK_BOX(hbox),makecurrent,0,0,8); // [x] make current - - G_SIGNAL(tif8,"pressed",saveas_radiobutt,0); // connect file type radio buttons - G_SIGNAL(tif16,"pressed",saveas_radiobutt,1); // to handler function - G_SIGNAL(png8,"pressed",saveas_radiobutt,2); - G_SIGNAL(png16,"pressed",saveas_radiobutt,3); - G_SIGNAL(ico,"pressed",saveas_radiobutt,4); - G_SIGNAL(bmp,"pressed",saveas_radiobutt,5); - G_SIGNAL(jpg,"pressed",saveas_radiobutt,6); - G_SIGNAL(fdialog,"key-release-event",saveas_KBkey,0); - - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(jpg),1); // set default file type = jpeg - - jpeg_1x_quality = jpeg_def_quality; // default jpeg save quality, user setting - sprintf(txqual,"%d",jpeg_1x_quality); // v.13.08 - gtk_entry_set_text(GTK_ENTRY(jqval),txqual); - + + zdialog_stuff(zd,"tif-8",0); // turn off all radio buttons + zdialog_stuff(zd,"tif-16",0); // GTK bug: programatic selection of one + zdialog_stuff(zd,"png-8",0); // does not deselect the alternatives + zdialog_stuff(zd,"png-16",0); // (this works for GUI selection only) + zdialog_stuff(zd,"bmp",0); + zdialog_stuff(zd,"jpg",0); + + zdialog_stuff(zd,"jpgqual",jpeg_def_quality); // default jpeg quality, user setting + if (strEqu(curr_file_type,"tif")) { // if curr. file type is tif, - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(tif8),1); // set tif-8/16 based on file bpc - if (curr_file_bpc == 16) - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(tif16),1); + if (curr_file_bpc == 16) // select tif-8 or tif-16 button + zdialog_stuff(zd,"tiff-16",1); + else zdialog_stuff(zd,"tiff-8",1); } - if (strEqu(curr_file_type,"png")) { // same for png - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(png8),1); + else if (strEqu(curr_file_type,"png")) { // same for png if (curr_file_bpc == 16) - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(png16),1); + zdialog_stuff(zd,"png-16",1); + else zdialog_stuff(zd,"png-8",1); } - if (strEqu(curr_file_type,"ico")) // ico type - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ico),1); - - if (strEqu(curr_file_type,"bmp")) // bmp type - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(bmp),1); + else if (strEqu(curr_file_type,"bmp")) // and bmp + zdialog_stuff(zd,"bmp",1); + + else zdialog_stuff(zd,"jpg",1); // else default jpg + + zdialog_stuff(zd,"mkcurr",0); // deselect "make current" -dialog_run: + zdialog_resize(zd,500,500); + zdialog_run(zd,file_save_as_dialog_event); - gtk_widget_show_all(fdialog); // run dialog +zdialog_wait: - status = gtk_dialog_run(GTK_DIALOG(fdialog)); - if (status != GTK_RESPONSE_ACCEPT) { // user cancelled - gtk_widget_destroy(fdialog); - return; + zstat = zdialog_wait(zd); + if (zstat != 1) { // user cancel + zdialog_free(zd); + return 1; } outfile2 = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(saveas_fchooser)); - if (! outfile2) goto dialog_run; - outfile = strdupz(outfile2,12); // add space for possible .vNN and .ext + if (! outfile2) { + zd->zstat = 0; + goto zdialog_wait; + } + + if (outfile) zfree(outfile); + outfile = strdupz(outfile2,12,"file_save"); // add space for possible .vNN and .ext g_free(outfile2); zfree(save_dirk); // remember save dirk for next time - save_dirk = strdupz(outfile); // v.13.04 + save_dirk = strdupz(outfile,0,"file_save"); // v.13.04 pp = strrchr(save_dirk,'/'); *pp = 0; type = "jpg"; // default output type bpc = 8; - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(tif8))) - type = "tif"; + zdialog_fetch(zd,"tif-8",ii); // get selected radio button + if (ii) type = "tif"; - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(tif16))) { + zdialog_fetch(zd,"tif-16",ii); + if (ii) { type = "tif"; bpc = 16; } - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(png8))) - type = "png"; + zdialog_fetch(zd,"png-8",ii); + if (ii) type = "png"; - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(png16))) { + zdialog_fetch(zd,"png-16",ii); + if (ii) { type = "png"; bpc = 16; } - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ico))) - type = "ico"; - - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(bmp))) - type = "bmp"; + zdialog_fetch(zd,"bmp",ii); + if (ii) type = "bmp"; if (strEqu(type,"jpg")) { // set non-default jpeg save quality - ii = atoi(gtk_entry_get_text(GTK_ENTRY(jqval))); // (will be used 1-time only) v.13.08 + zdialog_fetch(zd,"jpgqual",ii); // will be used only one time if (ii < 1 || ii > 100) { zmessageACK(mWin,0,ZTX("jpeg quality must be 1-100")); - goto dialog_run; + zd->zstat = 0; + goto zdialog_wait; } jpeg_1x_quality = ii; // v.13.08 } @@ -632,77 +676,88 @@ if (pext) pext = strrchr(pext,'.'); if (pext) { // validate .ext OK for type - if (strEqu(type,"jpg") && ! strcasestr(".jpg .jpeg",pext)) pext = 0; - if (strEqu(type,"tif") && ! strcasestr(".tif .tiff",pext)) pext = 0; - if (strEqu(type,"png") && ! strcasestr(".png",pext)) pext = 0; - if (strEqu(type,"bmp") && ! strcasestr(".bmp",pext)) pext = 0; - if (strEqu(type,"ico") && ! strcasestr(".ico",pext)) pext = 0; + if (strEqu(type,"jpg") && ! strcasestr(".jpg .jpeg",pext)) *pext = 0; + if (strEqu(type,"tif") && ! strcasestr(".tif .tiff",pext)) *pext = 0; + if (strEqu(type,"png") && ! strcasestr(".png",pext)) *pext = 0; + if (strEqu(type,"bmp") && ! strcasestr(".bmp",pext)) *pext = 0; } - if (! pext) pext = outfile + strlen(outfile); // wrong or missing, add new .ext + if (! pext || ! *pext) + pext = outfile + strlen(outfile); // wrong or missing, add new .ext strcpy(pext,"."); strcpy(pext+1,type); - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(makecurrent))) // make saved file the current file? - mkcurr = 1; + zdialog_fetch(zd,"mkcurr",mkcurr); // get make current option - gtk_widget_destroy(fdialog); // kill dialog - err = stat(outfile,&fstat); // check if file exists if (! err) { yn = zmessageYN(mWin,ZTX("Overwrite file? \n %s"),outfile); // confirm overwrite if (! yn) { - zfree(outfile); - return; + zd->zstat = 0; + goto zdialog_wait; } } + zdialog_free(zd); // zdialog_free(zd); + err = f_save(outfile,type,bpc); // save the file zfree(outfile); - if (err) return; + if (err) return 1; if (mkcurr) f_open_saved(); // open saved file with edit hist v.13.04 - return; + return 0; } // set dialog file type from user selection of file type radio button -void saveas_radiobutt(void *, int button) +int file_save_as_dialog_event(zdialog *zd, cchar *event) { - cchar *filetypes[7] = { ".tif", ".tif", ".png", ".png", ".ico", ".bmp", ".jpg" }; + int ii; + cchar *filetypes[6] = { "tif-8", "tif-16", "png-8", "png-16", "bmp", "jpg" }; + char ext[4]; char *filespec; char *filename, *pp; + + if (strEqu(event,"jpgqual")) { // if jpg quality edited, set jpg .ext + zdialog_stuff(zd,"jpg",1); + event = "jpg"; + } + + for (ii = 0; ii < 6; ii++) // detect file type selection + if (strEqu(event,filetypes[ii])) break; + if (ii == 6) return 1; + + zdialog_stuff(zd,"tif-8",0); // turn off unselected types first + zdialog_stuff(zd,"tif-16",0); // (see GTK bug note above) + zdialog_stuff(zd,"png-8",0); + zdialog_stuff(zd,"png-16",0); + zdialog_stuff(zd,"bmp",0); + zdialog_stuff(zd,"jpg",0); + zdialog_stuff(zd,event,1); // lastly, turn on selected type + + strncpy0(ext,event,4); // "tif-16" >> "tif" etc. filespec = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(saveas_fchooser)); - if (! filespec) return; - filename = strrchr(filespec,'/'); - if (! filename) return; - filename = strdupz(filename+1,6,"saveas"); + if (! filespec) return 1; + filename = strrchr(filespec,'/'); // revise file .ext in chooser dialog + if (! filename) return 1; + filename = strdupz(filename+1,6,"file_save"); pp = strrchr(filename,'.'); if (! pp || strlen(pp) > 5) pp = filename + strlen(filename); - strcpy(pp,filetypes[button]); + *pp = '.'; + strcpy(pp+1,ext); gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(saveas_fchooser),filename); - gtk_widget_show_all(saveas_fchooser); zfree(filename); g_free(filespec); - return; -} - - -// response function for KB key release -void saveas_KBkey(void *, GdkEventKey *event) -{ - int KBkey = event->keyval; - if (KBkey != GDK_KEY_F1) return; // F1 help key v.13.03 - KBstate(event,0); + return 1; } /**************************************************************************/ -// Open a file that was just saved. Used by m_savevers() and m_saveas(). +// Open a file that was just saved. Used by file_save() and file_saveas(). // The edit undo/redo stack is not purged and current edits are kept. // Following are set: // curr_file *_dirk *_file_posn *_file_type *_file_bpc *_file_size @@ -743,7 +798,7 @@ URS_reopen_pos = URS_pos; // track undo/redo stack position v.13.08 - Fzoom = 0; // zoom level = fit window + ///Fzoom = 0; // zoom level = fit window v.13.09 zoomx = zoomy = 0; // no zoom center set_mwin_title(); // set win title from curr_file info gtk_window_present(MWIN); @@ -2010,7 +2065,7 @@ // will be set to Nth, otherwise it is searched and set correctly // (a file can be present multiple times in a collection gallery). // If Fkeep is true, edit undo/redo stack is not purged, and current -// edits are kept after opening the new file (used by m_saveas()). +// edits are kept after opening the new file (used by file_saveas()). // If Fack is true, failure will cause a popup ACK dialog. // Following are set: curr_file_type, curr_file_bpc, curr_file_size. // Returns: 0 = OK, +N = error. @@ -2030,8 +2085,9 @@ clicked_file = 0; // bugfix v.13.08 if (CEF && CEF->thread_status > 1) return 2; // do not interrupt thread v.13.04 + if (CEF && ! CEF->Frestart) return 1; // edit function not restartable v.13.09 - if (! Fkeep && mod_keep()) return 2; // unsaved edits + if (! Fkeep && mod_keep()) return 2; // keep unsaved edits if (filespec) file = strdupz(filespec,0,"f_open"); // use passed filespec @@ -2127,13 +2183,14 @@ if (fposn < 0) { // not there gallery(curr_file,"init"); // generate new gallery list v.13.07 fposn = gallery_position(curr_file,0); // position and count in gallery list + printf("gallery refreshed\n"); // v.13.09 } curr_file_posn = fposn; // keep track of file position URS_reopen_pos = 0; // not reopen of saved file v.13.08 - Fzoom = 0; // zoom level = fit window + ///Fzoom = 0; // zoom level = fit window v.13.09 zoomx = zoomy = 0; // no zoom center set_mwin_title(); // set win title from curr_file info @@ -2144,13 +2201,13 @@ if (zdrename) m_rename(0,0); // update active rename dialog if (zdcopymove) copy_move(0); // " copy/move dialog + if (zdfilesave) m_file_save(0,0); // " file save dialog v.13.09 if (zddelete) m_delete(0,0); // " delete dialog if (zdtrash) m_trash(0,0); // " trash dialog if (zdexifview) meta_view(0); // " EXIF/IPTC view window if (zdexifedit) m_meta_edit_any(0,0); // " EXIF/IPTC edit window if (zdeditmeta) m_edit_metadata(0,0); // " edit date/rating/tags dialog - if (zdaddgeotags) m_edit_geotags(0,0); // " edit geotags dialog - if (zdeditcctext) m_edit_cctext(0,0); // " edit comments dialog + if (zdeditgeotags) m_edit_geotags(0,0); // " edit geotags dialog if (CEF) edit_restart(); // restart active edit v.13.04 @@ -2255,8 +2312,6 @@ strcpy(pext,".tif"); if (strEqu(type,"png") && ! strcasestr(".png",pext)) strcpy(pext,".png"); - if (strEqu(type,"ico") && ! strcasestr(".ico",pext)) - strcpy(pext,".ico"); if (strEqu(type,"bmp") && ! strcasestr(".bmp",pext)) strcpy(pext,".bmp"); @@ -2280,7 +2335,7 @@ else if (strEqu(type,"png")) // save as png file (bpc = 8 or 16) err = PXM_PNG_save(pxmout,tempfile,bpc); - else { // save as .ico .bmp .jpg + else { // save as .bmp .jpg err = PXM_ANY_save(pxmout,tempfile); // (bpc = 8 always) bpc = 8; } @@ -3543,9 +3598,6 @@ if (strstr(".png .PNG",pext)) pxbstat = gdk_pixbuf_save(pixbuf,file,"png",&gerror,"compression","4",null); - else if (strstr(".ico .ICO",pext)) - pxbstat = gdk_pixbuf_save(pixbuf,file,"ico",&gerror,null); - else if (strstr(".bmp .BMP",pext)) pxbstat = gdk_pixbuf_save(pixbuf,file,"bmp",&gerror,null); @@ -3595,6 +3647,7 @@ int gallerytype = 0; // 1-6 = dirk/search/metadata/coll/recent/new int gallerysort = 1; // 1/2/3 = filename/filedate/photodate int galleryseq = 1; // 1/2 = ascending/descending + int gallerypainted = 0; // gallery is finished painting v.13.09 int nfiles = 0; // gallery file count (incl. subdirks) int nimages = 0; // gallery image file count char **mdlist = 0; // corresp. metadata list @@ -3674,12 +3727,14 @@ zthreadcrash(); // thread usage not allowed if (strstr("init initF",action)) { // generate new gallery file list + gallerypainted = 0; image_navigate(filez,action); // from directory/file return 0; } if (strstr("sort insert delete",action)) { // revise gallery file list image_navigate(filez,action,Nth); + gallerypainted = 0; return 0; } @@ -3690,6 +3745,7 @@ return image_navigate(0,action); if (strEqu(action,"paint")) { // paint gallery window + gallerypainted = 0; if (filez) Nth = gallery_position(filez,Nth); // file position, use Nth if matching if (Nth >= 0) topfileposn = Nth; // use Nth if valid (filez or caller Nth) gtk_widget_queue_draw(gDwin); // draw gallery window @@ -3717,7 +3773,9 @@ int thumx, thumy, texthh; char *pp, *fname, p0; char text[200], fdate[16], pdate[16], size[16]; - + + gallerypainted = 0; + if (! galleryname) { // v.13.05 if (! curr_dirk) return 1; gallery(curr_dirk,"init"); @@ -3735,7 +3793,7 @@ if (! thumbsize) fontsize = 9; // text only view texthh = 3.5 * fontsize + 4; // two text lines thumbW = thumbsize + 10; // thumbnail cell size - thumbH = thumbsize + texthh + thumbsize / 24 + 10; + thumbH = thumbsize + texthh + thumbsize/24 + 10; if (! thumbsize) { thumbW = 400; // zero, list view @@ -3785,7 +3843,7 @@ for (col = 0; col < xcols; col++) // draw all columns in row { ii = row * xcols + col; // next file - if (ii >= nfiles) return 1; // exit 2 nested loops + if (ii >= nfiles) goto endloops; // exit 2 nested loops p0 = *glist[ii].file; // replace possible ! with / *glist[ii].file = '/'; @@ -3832,6 +3890,8 @@ } } + endloops: + gallerypainted = 1; return 1; } @@ -3906,7 +3966,7 @@ for (col = 0; col < xcols; col++) { ii = row * xcols + col; // next file - if (ii >= nfiles) return 1; // exit 2 nested loops + if (ii >= nfiles) goto endloops; // exit 2 nested loops p0 = *glist[ii].file; // replace possible ! with / *glist[ii].file = '/'; @@ -3930,6 +3990,8 @@ } } + endloops: + gallerypainted = 1; return 1; } @@ -3977,6 +4039,8 @@ int ii, scrollp, scroll1, scroll2; int step = thumbH / 8; // row-scroll step size char *file; + + if (! gallerypainted) return; // v.13.09 if (strEqu(menu,ZTX("Open"))) { // change directory file = zgetfile1(ZTX("change directory"),"folder",curr_dirk); @@ -3992,9 +4056,9 @@ return; } - if (strEqu(menu,"Sync.G")) { // replace special gallery with - if (! curr_file) return; // directory from current file - if (gallerytype == 1) return; + if (strEqu(menu,"Sync.G")) { // replace gallery with directory from current file + if (! curr_file) return; + ///if (gallerytype == 1) return; // removed v.13.09 gallery(curr_file,"init"); gallery(curr_file,"paint"); curr_file_posn = gallery_position(curr_file,topfileposn); // v.13.03 @@ -4097,9 +4161,9 @@ pp = strchr(directory+pos,'/'); // truncate following directories if (! pp) return; *pp = 0; - free_resources(); // no current file v.13.03 + ///free_resources(); // no current file (removed) v.13.09 gallery(directory,"init"); // initialize new gallery - gallery(0,"paint",0); // paint new gallery v.13.03 + gallery(0,"paint",0); // paint new gallery v.13.03 return; } @@ -4145,9 +4209,9 @@ if ((pp = getenv("HOME"))) if (pp) strncpy0(dirk,pp,200); - free_resources(); // no current file v.13.03 + ///free_resources(); // no current file removed v.13.09 gallery(dirk,"init"); - gallery(0,"paint",0); // paint new gallery v.13.03 + gallery(0,"paint",0); // paint new gallery v.13.03 return; } @@ -4215,6 +4279,7 @@ using namespace navi; GdkDevice *mouse; + GdkEventButton *eventB; int evtype, mousex, mousey, mousebutt; int row, col, nrows, dx, dy; int Nth, poswidth, ftyp, err; @@ -4229,7 +4294,7 @@ char **data; if (! nfiles) return; // empty gallery - if (! thumbW) return; // not initialized v.13.07 + if (! gallerypainted) return; // not initialized v.13.09 evtype = event->type; mouse = gdk_event_get_device(event); @@ -4309,7 +4374,7 @@ if (evtype == GDK_BUTTON_PRESS) { if (S_ISDIR(statb.st_mode)) { // if directory, go there - free_resources(); // no current file v.13.03 + ///free_resources(); // no current file removed v.13.09 gallery(filez,"init"); gallery(0,"paint",0); // paint new gallery v.13.03 zfree(filez); @@ -4321,6 +4386,12 @@ clicked_posn = Nth; clicked_width = poswidth; + eventB = (GdkEventButton *) event; // set KB key status v.13.09 + KBcontrolkey = KBshiftkey = KBaltkey = 0; + if (eventB->state & GDK_CONTROL_MASK) KBcontrolkey = 1; + if (eventB->state & GDK_SHIFT_MASK) KBshiftkey = 1; + if (eventB->state & GDK_MOD1_MASK) KBaltkey = 1; + if (mousebutt == 1) { // left click if (zd_gallery_getfiles) gallery_getfiles_Lclick_func(Nth); // send to gallery_getfiles() else if (zd_edit_bookmarks) bookmarks_Lclick_func(Nth); // send to bookmarks editor v.13.03 @@ -5182,6 +5253,7 @@ int fontascent, fontdescent; int line, nlines, ii; char *imagefile = 0, **filelist = 0; + cchar *helptopic = 0; zthreadcrash(); // thread usage not allowed @@ -5239,12 +5311,12 @@ gallery(topdirk[0],"init"); // top directory v.13.01 gallery(0,"paint"); // v.13.03 } - - settab("G"); // open gallery window + helptopic = F1_help_topic; // save F1 help topic v.13.09 + settab("G"); // open gallery window (F1_help = "navigation") if (initfiles) zdialog_send_event(zd,"initfiles"); // stuff initial files - zdialog_wait(zd); // wait for dialog completion + F1_help_topic = helptopic; // restore if (zd->zstat != 1) { // cancelled zdialog_free(zd); // kill dialog @@ -5800,7 +5872,7 @@ pp += 3; if (strlen(pp) < 3) { - zmessageACK(mWin,0,ZTX("no plugin command")); + zmessageACK(mWin,0,ZTX("Plugins menu is empty")); return; } diff -Nru fotoxx-13.08/f.image.cc fotoxx-13.09.1/f.image.cc --- fotoxx-13.08/f.image.cc 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/f.image.cc 2013-08-31 06:26:38.000000000 +0000 @@ -4,7 +4,7 @@ Copyright 2007 2008 2009 2010 2011 2012 2013 Michael Cornelison Source URL: http://kornelix.com/fotoxx - Contact: kornelix2@gmail.com + Contact: kornelix@gmx.de This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -32,34 +32,37 @@ /**************************************************************************/ // Rotate image right or left 90 degrees to upright the image. -// This is not an edit transaction. +// This is not an edit transaction: file is replaced and re-opened. zdialog *zdturn; -void m_turn(GtkWidget *, cchar *menu) // v.13.08 +void m_rotate90(GtkWidget *, cchar *menu) // v.13.08 { int turnevent(zdialog *, cchar *); void turnfunc(GtkWidget *, cchar *menu); + if (! curr_file) return; // v.13.09 + F1_help_topic = "rotate"; + if (mod_keep()) return; // unsaved edits if (! menulock(1)) return; - zdturn = zdialog_new(ZTX("Turn Image"),mWin,null); - zdialog_add_widget(zdturn,"vbox","vb1","dialog",0,"expand|space=5"); + zdturn = zdialog_new(ZTX("Rotate Image 90º"),mWin,null); + zdialog_add_widget(zdturn,"vbox","vb1","dialog",0,"space=5"); GtkWidget *tbar = create_toolbar(zdialog_widget(zdturn,"vb1"),32); gtk_toolbar_set_style(GTK_TOOLBAR(tbar),GTK_TOOLBAR_BOTH); - add_toolbar_button(tbar,"right",0,"turn-right.png",turnfunc); - add_toolbar_button(tbar,"left",0,"turn-left.png",turnfunc); + add_toolbar_button(tbar,"left",ZTX("rotate -90º"),"rotate-left.png",turnfunc); + add_toolbar_button(tbar,"right",ZTX("rotate +90º"),"rotate-right.png",turnfunc); add_toolbar_button(tbar,"cancel",0,"gtk-cancel",turnfunc); zdialog_resize(zdturn,200,0); - zdialog_run(zdturn,turnevent); + zdialog_run(zdturn,turnevent,"save"); return; } int turnevent(zdialog *zd, cchar *event) { - if (zdturn->zstat) { + if (zdturn->zstat) { // [x] button zdialog_free(zdturn); menulock(0); } @@ -89,10 +92,15 @@ E3pxm = 0; } mutex_unlock(&Fpixmap_lock); - if (E0pxm) m_save(0,"nowarn"); // save uprighted image - PXM_free(E0pxm); - f_open(curr_file,0); // re-open + if (strEqu(curr_file_type,"other")) // if unsupported type, use jpg + strcpy(curr_file_type,"jpg"); + + f_save(curr_file,curr_file_type,curr_file_bpc); // save file with curr. edits applied + strcpy(curr_file_type,f_save_type); // update curr_file_xxx from f_save_xxx + curr_file_size = f_save_size; + + f_open(curr_file,0); // re-open return; } @@ -1361,13 +1369,15 @@ Fzoom = 0; return 1; } + + if (strEqu(event,"focus")) return 1; // ignore focus v.13.09 if (strEqu(event,"save")) { // from f_save() v.13.04 editresize[0] = resize_ww1; // remember size used editresize[1] = resize_hh1; Fzoom = 0; signal_thread(); // do the update - wait_thread_idle(); + wait_thread_idle(); return 1; } @@ -1574,34 +1584,29 @@ // write text on top of the image -char writetext_text[1000] = "text"; // text -char writetext_font[100] = "FreeSans"; // default font -int writetext_size = 40; // default font size -float writetext_angle; // angle of text -char writetext_color[4][20]; // text, bakgr., outline, shadow "r|g|b" -int writetext_trans[4]; // corresp. transparencies -int writetext_towidth; // text outline width, pixels -int writetext_shwidth; // text shadow width -float writetext_shangle; // shadow angle, 0-360 - -char writetext_file[1000] = ""; // file for write_text data -int writetext_px, writetext_py; // text position on image -int writetext_present; // flag, write_text present on image -PXM *writetext_pxm = 0; // buffer for rendered text -PXM *writetext_pxm_transp = 0; // buffer for transparency data - -int writetext_dialog_event(zdialog *zd, cchar *event); // dialog event function -void writetext_mousefunc(); // mouse event function -void writetext_gettext(); // render text into graphic image -void writetext_write(int mode); // write text on image -void writetext_load(zdialog *zd); // load text data from file -void writetext_save(); // save text data to file +namespace writetext +{ + textattr_t attr; + + char text[1000] = "text"; // text + char file[1000] = ""; // file for write_text data + int px, py; // text position on image + int present; // flag, write_text present on image + PXM *pxm_text = 0; // buffer for rendered text + PXM *pxm_transp = 0; // buffer for transparency data + + int dialog_event(zdialog *zd, cchar *event); // dialog event function + void mousefunc(); // mouse event function + void write(int mode); // write text on image -editfunc EFwritetext; + editfunc EFwritetext; +} void m_write_text(GtkWidget *, cchar *menu) { + using namespace writetext; + cchar *intro = ZTX("Enter text, click/drag on image, right click to remove"); F1_help_topic = "write_text"; // user guide topic @@ -1612,38 +1617,46 @@ if (! edit_setup(EFwritetext)) return; // setup edit /*** - Enter text, click/drag on image, right click to remove. - - Text [___________________________________________________] + ___________________________________________________________ + | Write Text on Image | + | | + | Enter text, click/drag on image, right click to remove. | + | | + | Text [_________________________________________] | + | | + | [font] [FreeSans ] size [ 44|v] | + | | + | color transp. width angle | + | text [_____] [___|v] [___|v] | + | backing [_____] [___|v] | + | outline [_____] [___|v] [___|v] | + | shadow [_____] [___|v] [___|v] [___|v] | + | | + | Text File: [Open] [Save] | + | | + | [Apply] [Done] [Cancel] | + |___________________________________________________________| - [font] [FreeSans ] size [ 44|v] angle [__0|v] - - color transp. width angle - text [_____] [___|v] - backing [_____] [___|v] - outline [_____] [___|v] [___|v] - shadow [_____] [___|v] [___|v] [___|v] - - Text File: [Open] [Save] - - [Apply] [Done] [Cancel] ***/ + strcpy(attr.font,"FreeSans"); // default font and size + attr.size = 40; + zdialog *zd = zdialog_new(ZTX("Write Text on Image"),mWin,Bapply,Bdone,Bcancel,null); EFwritetext.zd = zd; - EFwritetext.mousefunc = writetext_mousefunc; + EFwritetext.mousefunc = mousefunc; EFwritetext.menufunc = m_write_text; // allow restart v.13.04 zdialog_add_widget(zd,"label","intro","dialog",intro,"space=3"); zdialog_add_widget(zd,"hbox","hbtext","dialog",0,"space=3"); zdialog_add_widget(zd,"label","labtext","hbtext",ZTX("Text"),"space=5"); zdialog_add_widget(zd,"frame","frtext","hbtext",0,"expand"); - zdialog_add_widget(zd,"edit","text","frtext",0,"expand"); + zdialog_add_widget(zd,"edit","text","frtext","text","expand"); zdialog_add_widget(zd,"hbox","hbfont","dialog",0,"space=8"); zdialog_add_widget(zd,"button","fontbutt","hbfont",Bfont); zdialog_add_widget(zd,"entry","fontname","hbfont","FreeSans","space=2|expand"); - zdialog_add_widget(zd,"label","labsize","hbfont",ZTX("Size"),"space=2"); + zdialog_add_widget(zd,"label","labsize","hbfont",Bsize,"space=2"); zdialog_add_widget(zd,"spin","fontsize","hbfont","8|500|1|40"); zdialog_add_widget(zd,"hbox","hbcol","dialog"); @@ -1666,10 +1679,10 @@ zdialog_add_widget(zd,"colorbutt","shcolor","vbcol2","255|0|0"); zdialog_add_widget(zd,"label","labcol","vbcol3",ZTX("Transparency")); - zdialog_add_widget(zd,"spin","fgtrans","vbcol3","0|100|1|0"); - zdialog_add_widget(zd,"spin","bgtrans","vbcol3","0|100|1|0"); - zdialog_add_widget(zd,"spin","totrans","vbcol3","0|100|1|0"); - zdialog_add_widget(zd,"spin","shtrans","vbcol3","0|100|1|0"); + zdialog_add_widget(zd,"spin","fgtransp","vbcol3","0|100|1|0"); + zdialog_add_widget(zd,"spin","bgtransp","vbcol3","0|100|1|0"); + zdialog_add_widget(zd,"spin","totransp","vbcol3","0|100|1|0"); + zdialog_add_widget(zd,"spin","shtransp","vbcol3","0|100|1|0"); zdialog_add_widget(zd,"label","labw","vbcol4",ZTX("Width")); zdialog_add_widget(zd,"label","space","vbcol4"); @@ -1677,7 +1690,7 @@ zdialog_add_widget(zd,"spin","towidth","vbcol4","0|30|1|0"); zdialog_add_widget(zd,"spin","shwidth","vbcol4","0|50|1|0"); - zdialog_add_widget(zd,"label","labw","vbcol5",ZTX("Angle")); + zdialog_add_widget(zd,"label","labw","vbcol5",Bangle); zdialog_add_widget(zd,"spin","angle","vbcol5","-180|180|0.5|0"); zdialog_add_widget(zd,"label","space","vbcol5"); zdialog_add_widget(zd,"label","space","vbcol5"); @@ -1689,27 +1702,29 @@ zdialog_add_widget(zd,"button","savetext","hbaf",Bsave,"space=5"); zdialog_restore_inputs(zd); // restore prior inputs - zdialog_run(zd,writetext_dialog_event,"save"); // run dialog, parallel + zdialog_run(zd,dialog_event,"save"); // run dialog, parallel - zdialog_fetch(zd,"text",writetext_text,1000); // get defaults or prior inputs - zdialog_fetch(zd,"fontname",writetext_font,100); - zdialog_fetch(zd,"fontsize",writetext_size); - zdialog_fetch(zd,"angle",writetext_angle); - zdialog_fetch(zd,"fgcolor",writetext_color[0],20); - zdialog_fetch(zd,"bgcolor",writetext_color[1],20); - zdialog_fetch(zd,"tocolor",writetext_color[2],20); - zdialog_fetch(zd,"shcolor",writetext_color[3],20); - zdialog_fetch(zd,"fgtrans",writetext_trans[0]); - zdialog_fetch(zd,"bgtrans",writetext_trans[1]); - zdialog_fetch(zd,"totrans",writetext_trans[2]); - zdialog_fetch(zd,"shtrans",writetext_trans[3]); - zdialog_fetch(zd,"towidth",writetext_towidth); - zdialog_fetch(zd,"shwidth",writetext_shwidth); - zdialog_fetch(zd,"shangle",writetext_shangle); - - takeMouse(writetext_mousefunc,dragcursor); // connect mouse function - writetext_present = 0; // no text on image yet - writetext_px = writetext_py = -1; // no position defined yet + zdialog_fetch(zd,"text",text,1000); // get defaults or prior inputs + zdialog_fetch(zd,"fontname",attr.font,100); + zdialog_fetch(zd,"fontsize",attr.size); + zdialog_fetch(zd,"angle",attr.angle); + zdialog_fetch(zd,"fgcolor",attr.color[0],20); + zdialog_fetch(zd,"bgcolor",attr.color[1],20); + zdialog_fetch(zd,"tocolor",attr.color[2],20); + zdialog_fetch(zd,"shcolor",attr.color[3],20); + zdialog_fetch(zd,"fgtransp",attr.transp[0]); + zdialog_fetch(zd,"bgtransp",attr.transp[1]); + zdialog_fetch(zd,"totransp",attr.transp[2]); + zdialog_fetch(zd,"shtransp",attr.transp[3]); + zdialog_fetch(zd,"towidth",attr.towidth); + zdialog_fetch(zd,"shwidth",attr.shwidth); + zdialog_fetch(zd,"shangle",attr.shangle); + + gentext(text,&attr,pxm_text,pxm_transp); // initial text + + takeMouse(mousefunc,dragcursor); // connect mouse function + present = 0; // no text on image yet + px = py = -1; // no position defined yet return; } @@ -1717,8 +1732,10 @@ // dialog event and completion callback function -int writetext_dialog_event(zdialog *zd, cchar *event) +int writetext::dialog_event(zdialog *zd, cchar *event) { + using namespace writetext; + GtkWidget *font_dialog; char font[100]; int size; @@ -1727,9 +1744,9 @@ if (zd->zstat) { if (zd->zstat == 1) { // Apply, commit present text to image - writetext_write(1); // v.12.03 - writetext_present = 0; // (no old text to erase) - writetext_px = writetext_py = -1; + write(1); // v.12.03 + present = 0; // (no old text to erase) + px = py = -1; zd->zstat = 0; edit_commit(); // v.13.07 return 1; @@ -1738,30 +1755,59 @@ if (zd->zstat == 2 && CEF->Fmods) // Done, complete pending edit edit_done(); else edit_cancel(); // Cancel or kill - PXM_free(writetext_pxm); // free memory v.12.10 - PXM_free(writetext_pxm_transp); + PXM_free(pxm_text); // free memory v.12.10 + PXM_free(pxm_transp); return 1; } if (strEqu(event,"save")) { // from f_save() v.13.04 - writetext_write(1); - writetext_present = 0; - writetext_px = writetext_py = -1; + write(1); + present = 0; + px = py = -1; + return 1; } if (strEqu(event,"restart")) { // new image v.13.04 - writetext_present = 0; - writetext_px = writetext_py = -1; + present = 0; + px = py = -1; + return 1; } - if (strEqu(event,"focus")) // toggle mouse capture - takeMouse(writetext_mousefunc,dragcursor); // connect mouse function + if (strEqu(event,"focus")) { // toggle mouse capture + takeMouse(mousefunc,dragcursor); // connect mouse function + return 1; + } + + if (strEqu(event,"loadtext")) // load zdialog fields from file + { + load_text(zd); + zdialog_fetch(zd,"text",text,1000); // get all zdialog fields + zdialog_fetch(zd,"fontname",attr.font,80); + zdialog_fetch(zd,"fontsize",attr.size); + zdialog_fetch(zd,"angle",attr.angle); + zdialog_fetch(zd,"fgcolor",attr.color[0],20); + zdialog_fetch(zd,"bgcolor",attr.color[1],20); + zdialog_fetch(zd,"tocolor",attr.color[2],20); + zdialog_fetch(zd,"shcolor",attr.color[3],20); + zdialog_fetch(zd,"fgtransp",attr.transp[0]); + zdialog_fetch(zd,"bgtransp",attr.transp[1]); + zdialog_fetch(zd,"totransp",attr.transp[2]); + zdialog_fetch(zd,"shtransp",attr.transp[3]); + zdialog_fetch(zd,"towidth",attr.towidth); + zdialog_fetch(zd,"shwidth",attr.shwidth); + zdialog_fetch(zd,"shangle",attr.shangle); + } + + if (strEqu(event,"savetext")) { // save zdialog fields to file + save_text(zd); + return 1; + } if (strEqu(event,"text")) // get text from dialog - zdialog_fetch(zd,"text",writetext_text,1000); + zdialog_fetch(zd,"text",text,1000); if (strEqu(event,"fontbutt")) { // select new font - snprintf(font,100,"%s %d",writetext_font,writetext_size); + snprintf(font,100,"%s %d",attr.font,attr.size); font_dialog = gtk_font_chooser_dialog_new(ZTX("select font"),MWIN); gtk_font_chooser_set_font(GTK_FONT_CHOOSER(font_dialog),font); gtk_dialog_run(GTK_DIALOG(font_dialog)); @@ -1777,61 +1823,55 @@ size = atoi(pp); if (size < 8) size = 8; zdialog_stuff(zd,"fontsize",size); - writetext_size = size; + attr.size = size; *pp = 0; - strcpy(writetext_font,font); // get fontname = new font name + strcpy(attr.font,font); // get fontname = new font name zdialog_stuff(zd,"fontname",font); } } } if (strEqu(event,"fontsize")) // new font size - zdialog_fetch(zd,"fontsize",writetext_size); + zdialog_fetch(zd,"fontsize",attr.size); if (strEqu(event,"angle")) - zdialog_fetch(zd,"angle",writetext_angle); + zdialog_fetch(zd,"angle",attr.angle); if (strEqu(event,"fgcolor")) // foreground (text) color - zdialog_fetch(zd,"fgcolor",writetext_color[0],20); + zdialog_fetch(zd,"fgcolor",attr.color[0],20); if (strEqu(event,"bgcolor")) // background color - zdialog_fetch(zd,"bgcolor",writetext_color[1],20); + zdialog_fetch(zd,"bgcolor",attr.color[1],20); if (strEqu(event,"tocolor")) // text outline color - zdialog_fetch(zd,"tocolor",writetext_color[2],20); + zdialog_fetch(zd,"tocolor",attr.color[2],20); if (strEqu(event,"shcolor")) // text shadow color - zdialog_fetch(zd,"shcolor",writetext_color[3],20); + zdialog_fetch(zd,"shcolor",attr.color[3],20); - if (strEqu(event,"fgtrans")) // foreground transparency - zdialog_fetch(zd,"fgtrans",writetext_trans[0]); + if (strEqu(event,"fgtransp")) // foreground transparency + zdialog_fetch(zd,"fgtransp",attr.transp[0]); - if (strEqu(event,"bgtrans")) // background transparency - zdialog_fetch(zd,"bgtrans",writetext_trans[1]); + if (strEqu(event,"bgtransp")) // background transparency + zdialog_fetch(zd,"bgtransp",attr.transp[1]); - if (strEqu(event,"totrans")) // text outline transparency - zdialog_fetch(zd,"totrans",writetext_trans[2]); + if (strEqu(event,"totransp")) // text outline transparency + zdialog_fetch(zd,"totransp",attr.transp[2]); - if (strEqu(event,"shtrans")) // text shadow transparency - zdialog_fetch(zd,"shtrans",writetext_trans[3]); + if (strEqu(event,"shtransp")) // text shadow transparency + zdialog_fetch(zd,"shtransp",attr.transp[3]); if (strEqu(event,"towidth")) // text outline width - zdialog_fetch(zd,"towidth",writetext_towidth); + zdialog_fetch(zd,"towidth",attr.towidth); if (strEqu(event,"shwidth")) // text shadow width - zdialog_fetch(zd,"shwidth",writetext_shwidth); + zdialog_fetch(zd,"shwidth",attr.shwidth); if (strEqu(event,"shangle")) // text shadow angle - zdialog_fetch(zd,"shangle",writetext_shangle); - - if (strEqu(event,"loadtext")) // load writetext data from file - writetext_load(zd); - - if (strEqu(event,"savetext")) // save writetext data to file - writetext_save(); + zdialog_fetch(zd,"shangle",attr.shangle); - writetext_gettext(); // rebuild text buffer - writetext_write(1); // write on image + gentext(text,&attr,pxm_text,pxm_transp); // build text image from text and attributes + write(1); // write on image zmainloop(); return 1; @@ -1840,24 +1880,26 @@ // mouse function, set position for text on image -void writetext_mousefunc() +void writetext::mousefunc() { + using namespace writetext; + if (LMclick) { // left mouse click - writetext_px = Mxclick; // new text position on image - writetext_py = Myclick; - writetext_write(1); // erase old, write new text on image + px = Mxclick; // new text position on image + py = Myclick; + write(1); // erase old, write new text on image } if (RMclick) { // right mouse click - writetext_write(2); // erase old text, if any - writetext_px = writetext_py = -1; // v.12.03 + write(2); // erase old text, if any + px = py = -1; // v.12.03 } if (Mxdrag || Mydrag) // mouse dragged { - writetext_px = Mxdrag; // new text position on image - writetext_py = Mydrag; - writetext_write(1); // erase old, write new text on image + px = Mxdrag; // new text position on image + py = Mydrag; + write(1); // erase old, write new text on image } LMclick = RMclick = Mxdrag = Mydrag = 0; // v.12.11 @@ -1869,8 +1911,10 @@ // mode: 1 erase old and write to new position // 2 erase old and write nothing -void writetext_write(int mode) // v.12.02 +void writetext::write(int mode) // v.12.02 { + using namespace writetext; + float *pix1, *pix2, *pix3; int px1, py1, px3, py3, done; float e3part; @@ -1878,7 +1922,7 @@ static int orgx1, orgy1, ww1, hh1; // old text image overlap rectangle int orgx2, orgy2, ww2, hh2; // new overlap rectangle - if (writetext_present) // v.13.03 + if (present) // v.13.03 { for (py3 = orgy1; py3 < orgy1 + hh1; py3++) // erase prior text image for (px3 = orgx1; px3 < orgx1 + ww1; px3++) // replace E3 pixels with E1 pixels @@ -1895,24 +1939,24 @@ done = 0; if (mode == 2) done = 1; // erase only - if (! *writetext_text) done = 1; // no text defined - if (writetext_px < 0 && writetext_py < 0) done = 1; // no position defined + if (! *text) done = 1; // no text defined + if (px < 0 && py < 0) done = 1; // no position defined if (done) { - if (writetext_present) { + if (present) { mwpaint3(orgx1,orgy1,ww1,hh1); // update window to erase old text - writetext_present = 0; // mark no text present + present = 0; // mark no text present CEF->Fmods--; // reduce mod count CEF->Fsaved = 0; } return; } - ww2 = writetext_pxm->ww; // text image buffer - hh2 = writetext_pxm->hh; + ww2 = pxm_text->ww; // text image buffer + hh2 = pxm_text->hh; - orgx2 = writetext_px - ww2/2; // copy-to image3 location - orgy2 = writetext_py - hh2/2; + orgx2 = px - ww2/2; // copy-to image3 location + orgy2 = py - hh2/2; for (py1 = 0; py1 < hh2; py1++) // loop all pixels in text image for (px1 = 0; px1 < ww2; px1++) @@ -1923,8 +1967,8 @@ if (px3 < 0 || px3 >= E3pxm->ww) continue; // omit parts beyond edges if (py3 < 0 || py3 >= E3pxm->hh) continue; - pix1 = PXMpix(writetext_pxm,px1,py1); // copy-from text pixel - pix2 = PXMpix(writetext_pxm_transp,px1,py1); // copy-from transparency + pix1 = PXMpix(pxm_text,px1,py1); // copy-from text pixel + pix2 = PXMpix(pxm_transp,px1,py1); // copy-from transparency pix3 = PXMpix(E3pxm,px3,py3); // copy-to image pixel e3part = pix2[0] / 256.0; // image part visible through text @@ -1934,18 +1978,18 @@ pix3[2] = pix1[2] + e3part * pix3[2]; } - if (writetext_present) { + if (present) { mwpaint3(orgx1,orgy1,ww1,hh1); // update window to erase old text CEF->Fmods--; // reduce mod count v.12.02 CEF->Fsaved = 0; - writetext_present = 0; + present = 0; } // (updates together to reduce flicker) mwpaint3(orgx2,orgy2,ww2,hh2); // update window for new text CEF->Fmods++; // increase mod count v.12.02 CEF->Fsaved = 0; - writetext_present = 1; // mark text is present + present = 1; // mark text is present orgx1 = orgx2; // remember overlap rectangle orgy1 = orgy2; // for next call @@ -1955,46 +1999,68 @@ } +/**************************************************************************/ + // Create a graphic image with text, white on black, any font, any angle. // Add outline and shadow colors. Apply transparencies. -void writetext_gettext() // overhauled v.13.03 +int gentext(cchar *text, textattr_t *attr, PXM *&pxm_text, PXM *&pxm_transp) // v.13.09 { - PXM * writetext_addoutline(PXM *); - PXM * writetext_addshadow(PXM *); + PXM * gentext_outline(textattr_t *, PXM *); + PXM * gentext_shadow(textattr_t *, PXM *); PangoFontDescription *pfont; PangoLayout *playout; cairo_surface_t *surface; cairo_t *cr; - char *text = writetext_text; - float angle = writetext_angle; + float angle; + int fgred, fggreen, fgblue; + int bgred, bggreen, bgblue; + int tored, togreen, toblue; + int shred, shgreen, shblue; + float fgtransp, bgtransp, totransp, shtransp; + PXM *pxm_temp1, *pxm_temp2, *pxm_temp3; uint8 *cairo_data, *cpix; float *pix1, *pix2, *pix3; int px, py, ww, hh; char font[100]; - int fgred, fggreen, fgblue; - int bgred, bggreen, bgblue; - int tored, togreen, toblue; - int shred, shgreen, shblue; int red, green, blue; - float fgtrans, bgtrans, totrans, shtrans; float fgpart, topart, shpart, bgpart; - - if (! *text) return; // no text - snprintf(font,100,"%s %d",writetext_font,writetext_size); // fontname nn + zthreadcrash(); // thread usage not allowed + + if (! *text) text = " "; + + snprintf(font,100,"%s %d",attr->font,attr->size); // fontname nn + angle = attr->angle; + fgred = atoi(strField(attr->color[0],'|',1)); // get text foreground color + fggreen = atoi(strField(attr->color[0],'|',2)); + fgblue = atoi(strField(attr->color[0],'|',3)); + bgred = atoi(strField(attr->color[1],'|',1)); // get text background color + bggreen = atoi(strField(attr->color[1],'|',2)); + bgblue = atoi(strField(attr->color[1],'|',3)); + tored = atoi(strField(attr->color[2],'|',1)); // get text outline color + togreen = atoi(strField(attr->color[2],'|',2)); + toblue = atoi(strField(attr->color[2],'|',3)); + shred = atoi(strField(attr->color[3],'|',1)); // get text shadow color + shgreen = atoi(strField(attr->color[3],'|',2)); + shblue = atoi(strField(attr->color[3],'|',3)); + fgtransp = 0.01 * attr->transp[0]; // get transparencies + bgtransp = 0.01 * attr->transp[1]; // text, background, outline, shadow + totransp = 0.01 * attr->transp[2]; + shtransp = 0.01 * attr->transp[3]; + pfont = pango_font_description_from_string(font); // make layout with text playout = gtk_widget_create_pango_layout(cDwin,null); pango_layout_set_font_description(playout,pfont); pango_layout_set_text(playout,text,-1); - pango_layout_get_pixel_size(playout,&ww,&hh); - - ww += 2 + 0.2 * writetext_size; // compensate bad font metrics - hh += 2 + 0.1 * writetext_size; // v.13.06 + pango_layout_get_pixel_size(playout,&ww,&hh); + ww += 2 + 0.2 * attr->size; // compensate bad font metrics + hh += 2 + 0.1 * attr->size; + surface = cairo_image_surface_create(CAIRO_FORMAT_RGB24,ww,hh); // cairo output image cr = cairo_create(surface); pango_cairo_show_layout(cr,playout); // write text layout to image @@ -2016,13 +2082,13 @@ cairo_destroy(cr); cairo_surface_destroy(surface); - pxm_temp2 = writetext_addoutline(pxm_temp1); // add text outline color if any + pxm_temp2 = gentext_outline(attr,pxm_temp1); // add text outline color if any if (pxm_temp2) { PXM_free(pxm_temp1); pxm_temp1 = pxm_temp2; } - pxm_temp2 = writetext_addshadow(pxm_temp1); // add text shadow color if any + pxm_temp2 = gentext_shadow(attr,pxm_temp1); // add text shadow color if any if (pxm_temp2) { PXM_free(pxm_temp1); pxm_temp1 = pxm_temp2; @@ -2034,30 +2100,8 @@ pxm_temp1 = pxm_temp2; } - fgred = atoi(strField(writetext_color[0],'|',1)); // get text foreground color - fggreen = atoi(strField(writetext_color[0],'|',2)); - fgblue = atoi(strField(writetext_color[0],'|',3)); - - bgred = atoi(strField(writetext_color[1],'|',1)); // get text background color - bggreen = atoi(strField(writetext_color[1],'|',2)); - bgblue = atoi(strField(writetext_color[1],'|',3)); - - tored = atoi(strField(writetext_color[2],'|',1)); // get text outline color - togreen = atoi(strField(writetext_color[2],'|',2)); - toblue = atoi(strField(writetext_color[2],'|',3)); - - shred = atoi(strField(writetext_color[3],'|',1)); // get text shadow color - shgreen = atoi(strField(writetext_color[3],'|',2)); - shblue = atoi(strField(writetext_color[3],'|',3)); - - fgtrans = 0.01 * writetext_trans[0]; // get transparencies - bgtrans = 0.01 * writetext_trans[1]; // text, background, outline, shadow - totrans = 0.01 * writetext_trans[2]; - shtrans = 0.01 * writetext_trans[3]; - ww = pxm_temp1->ww; // text image input PXM hh = pxm_temp1->hh; - pxm_temp2 = PXM_make(ww,hh); // text image output PXM pxm_temp3 = PXM_make(ww,hh); // output transparency map @@ -2072,10 +2116,10 @@ topart = pix1[1] / 256.0; shpart = pix1[2] / 256.0; bgpart = (1.0 - fgpart - topart - shpart); - fgpart = fgpart * (1.0 - fgtrans); - topart = topart * (1.0 - totrans); - shpart = shpart * (1.0 - shtrans); - bgpart = bgpart * (1.0 - bgtrans); + fgpart = fgpart * (1.0 - fgtransp); + topart = topart * (1.0 - totransp); + shpart = shpart * (1.0 - shtransp); + bgpart = bgpart * (1.0 - bgtransp); red = fgpart * fgred + topart * tored + shpart * shred + bgpart * bgred; green = fgpart * fggreen + topart * togreen + shpart * shgreen + bgpart * bggreen; @@ -2089,11 +2133,9 @@ } PXM_free(pxm_temp1); - PXM_free(writetext_pxm); - PXM_free(writetext_pxm_transp); - writetext_pxm = pxm_temp2; - writetext_pxm_transp = pxm_temp3; - return; + pxm_text = pxm_temp2; + pxm_transp = pxm_temp3; + return 0; } @@ -2101,14 +2143,14 @@ // red color [0] is original monocolor text // use green color [1] for added outline -PXM * writetext_addoutline(PXM *pxm1) // overhauled v.13.03 +PXM * gentext_outline(textattr_t *attr, PXM *pxm1) // v.13.09 { PXM *pxm2; int toww, ww1, hh1, ww2, hh2; int px, py, dx, dy; float *pix1, *pix2, theta; - toww = writetext_towidth; // text outline color width + toww = attr->towidth; // text outline color width if (toww == 0) return 0; // zero ww1 = pxm1->ww; // input PXM dimensions @@ -2150,14 +2192,14 @@ // green color [1] is added outline if any // use blue color [2] for added shadow -PXM * writetext_addshadow(PXM *pxm1) // v.13.06 +PXM * gentext_shadow(textattr_t *attr, PXM *pxm1) // v.13.09 { PXM *pxm2; int shww, ww1, hh1, ww2, hh2; int px, py, dx, dy; float *pix1, *pix2, theta; - shww = writetext_shwidth; // text shadow width + shww = attr->shwidth; // text shadow width if (shww == 0) return 0; // zero ww1 = pxm1->ww; // input PXM dimensions @@ -2175,7 +2217,7 @@ pix2[1] = pix1[1]; } - theta = (90 - writetext_shangle) / 57.3; // degrees to radians, 0 = to the right + theta = (90 - attr->shangle) / 57.3; // degrees to radians, 0 = to the right dx = roundf(shww * sinf(theta)); dy = roundf(shww * cosf(theta)); @@ -2192,15 +2234,17 @@ } // = text / outline / shadow brightness -// load text data from a file +// load text and attributes from a file -void writetext_load(zdialog *zd) +void load_text(zdialog *zd) // v.13.09 { - FILE *fid; - int err; - char *pp, *file, buff[1000]; - cchar *dialogtitle = "load text data from a file"; - + FILE *fid; + int err, nn; + char *pp, *pp2, *file, buff[1200]; + cchar *dialogtitle = "load text data from a file"; + char text[1000]; // text data + textattr_t attr; + file = zgetfile1(dialogtitle,"open",writetext_dirk); // get input file from user if (! file) return; @@ -2211,59 +2255,34 @@ return; } - while (true) - { - pp = fgets_trim(buff,1000,fid,1); - if (! pp) break; - - if (strnEqu(pp,"writetext_text ",15)) - repl_1str(pp+15,writetext_text,"\\n","\n"); // replace "\n" with real newline char. - - if (strnEqu(pp,"writetext_font ",15)) { - strcpy(writetext_font,pp+15); - strTrim2(writetext_font); - } - - if (strnEqu(pp,"writetext_size ",15)) // added v.13.03 - convSI(pp+15,writetext_size,8,500); - - if (strnEqu(pp,"writetext_angle ",16)) - convSF(pp+16,writetext_angle,-180,+180); - - if (strnEqu(pp,"writetext_fgcolor ",18)) - strcpy(writetext_color[0],pp+18); - - if (strnEqu(pp,"writetext_bgcolor ",18)) - strcpy(writetext_color[1],pp+18); - - if (strnEqu(pp,"writetext_tocolor ",18)) - strcpy(writetext_color[2],pp+18); - - if (strnEqu(pp,"writetext_shcolor ",18)) - strcpy(writetext_color[3],pp+18); - - if (strnEqu(pp,"writetext_fgtrans ",18)) - convSI(pp+18,writetext_trans[0],0,100); - - if (strnEqu(pp,"writetext_bgtrans ",18)) - convSI(pp+18,writetext_trans[1],0,100); - - if (strnEqu(pp,"writetext_totrans ",18)) - convSI(pp+18,writetext_trans[2],0,100); - - if (strnEqu(pp,"writetext_shtrans ",18)) - convSI(pp+18,writetext_trans[3],0,100); - - if (strnEqu(pp,"writetext_towidth ",18)) - convSI(pp+18,writetext_towidth,0,9); - - if (strnEqu(pp,"writetext_shwidth ",18)) - convSI(pp+18,writetext_shwidth,0,9); - - if (strnEqu(pp,"writetext_shangle ",18)) - convSF(pp+18,writetext_shangle,-180,+180); - } - + pp = fgets_trim(buff,1200,fid); // read text string + if (! pp) goto badfile; + if (strnNeq(pp,"text string: ",13)) goto badfile; + pp += 13; + if (strlen(pp) < 2) goto badfile; + repl_Nstrs(pp,text,"\\n","\n",null); // replace "\n" with newline char. + + pp = fgets_trim(buff,1200,fid); // read font and size + if (! pp) goto badfile; + if (strnNeq(pp,"font: ",6)) goto badfile; + pp += 6; + strTrim(pp); + pp2 = strstr(pp,"size: "); + if (! pp2) goto badfile; + *pp2 = 0; + pp2 += 6; + strncpy0(attr.font,pp,80); + attr.size = atoi(pp2); + if (attr.size < 8) goto badfile; + + pp = fgets_trim(buff,1200,fid); // read text attributes + if (! pp) goto badfile; + nn = sscanf(pp,"attributes: %f %s %s %s %s %d %d %d %d %d %d %d", + &attr.angle, attr.color[0], attr.color[1], attr.color[2], attr.color[3], + &attr.transp[0], &attr.transp[1], &attr.transp[2], &attr.transp[3], + &attr.towidth, &attr.shwidth, &attr.shangle); + if (nn != 12) goto badfile; + err = fclose(fid); if (err) { zmessageACK(mWin,0,"%s",strerror(errno)); @@ -2271,38 +2290,38 @@ return; } - strcpy(writetext_file,file); // update current file - zfree(file); - - zdialog_stuff(zd,"text",writetext_text); // update dialog widgets - zdialog_stuff(zd,"fontname",writetext_font); - zdialog_stuff(zd,"fontsize",writetext_size); // added v.13.03 - zdialog_stuff(zd,"angle",writetext_angle); - zdialog_stuff(zd,"fgcolor",writetext_color[0]); - zdialog_stuff(zd,"bgcolor",writetext_color[1]); - zdialog_stuff(zd,"tocolor",writetext_color[2]); - zdialog_stuff(zd,"shcolor",writetext_color[3]); - zdialog_stuff(zd,"fgtrans",writetext_trans[0]); - zdialog_stuff(zd,"bgtrans",writetext_trans[1]); - zdialog_stuff(zd,"totrans",writetext_trans[2]); - zdialog_stuff(zd,"shtrans",writetext_trans[3]); - zdialog_stuff(zd,"towidth",writetext_towidth); - zdialog_stuff(zd,"shwidth",writetext_shwidth); - zdialog_stuff(zd,"shangle",writetext_shangle); - - writetext_gettext(); // build text buffer from writetext data + zdialog_stuff(zd,"text",text); // stuff zdialog fields + zdialog_stuff(zd,"fontname",attr.font); + zdialog_stuff(zd,"fontsize",attr.size); + zdialog_stuff(zd,"angle",attr.angle); + zdialog_stuff(zd,"fgcolor",attr.color[0]); + zdialog_stuff(zd,"bgcolor",attr.color[1]); + zdialog_stuff(zd,"tocolor",attr.color[2]); + zdialog_stuff(zd,"shcolor",attr.color[3]); + zdialog_stuff(zd,"fgtransp",attr.transp[0]); + zdialog_stuff(zd,"bgtransp",attr.transp[1]); + zdialog_stuff(zd,"totransp",attr.transp[2]); + zdialog_stuff(zd,"shtransp",attr.transp[3]); + zdialog_stuff(zd,"towidth",attr.towidth); + zdialog_stuff(zd,"shwidth",attr.shwidth); + zdialog_stuff(zd,"shangle",attr.shangle); return; + +badfile: // project file had a problem + fclose(fid); + zmessageACK(mWin,0,ZTX("text file is defective")); + printf("buff: %s\n",buff); } -// save text data to a file +// save text to a file -void writetext_save() +void save_text(zdialog *zd) // v.13.09 { - FILE *fid; - char *file, text[1100]; - cchar *dialogtitle = "save text data to a file"; - int err; + cchar *dialogtitle = "save text data to a file"; + FILE *fid; + char *file, text[1000], text2[1200]; + textattr_t attr; file = zgetfile1(dialogtitle,"save",writetext_dirk); // get output file from user if (! file) return; @@ -2313,37 +2332,35 @@ zfree(file); return; } - - repl_1str(writetext_text,text,"\n","\\n"); // replace newlines with "\n" - fprintf(fid,"writetext_text %s \n", text); - fprintf(fid,"writetext_font %s \n", writetext_font); - fprintf(fid,"writetext_size %d \n", writetext_size); - fprintf(fid,"writetext_angle %.1f \n", writetext_angle); - fprintf(fid,"writetext_fgcolor %s \n", writetext_color[0]); - fprintf(fid,"writetext_bgcolor %s \n", writetext_color[1]); - fprintf(fid,"writetext_tocolor %s \n", writetext_color[2]); - fprintf(fid,"writetext_shcolor %s \n", writetext_color[3]); - fprintf(fid,"writetext_fgtrans %d \n", writetext_trans[0]); - fprintf(fid,"writetext_bgtrans %d \n", writetext_trans[1]); - fprintf(fid,"writetext_totrans %d \n", writetext_trans[2]); - fprintf(fid,"writetext_shtrans %d \n", writetext_trans[3]); - fprintf(fid,"writetext_towidth %d \n", writetext_towidth); - fprintf(fid,"writetext_shwidth %d \n", writetext_shwidth); - fprintf(fid,"writetext_shangle %.1f \n", writetext_shangle); - - fprintf(fid,"\n"); - - err = fclose(fid); - if (err) { - zmessageACK(mWin,0,"file I/O error %s",file); - zfree(file); - return; - } - - strcpy(writetext_file,file); // update current file - zfree(file); + zdialog_fetch(zd,"text",text,1000); // get text and attributes from zdialog + zdialog_fetch(zd,"fontname",attr.font,80); + zdialog_fetch(zd,"fontsize",attr.size); + zdialog_fetch(zd,"angle",attr.angle); + zdialog_fetch(zd,"fgcolor",attr.color[0],20); + zdialog_fetch(zd,"bgcolor",attr.color[1],20); + zdialog_fetch(zd,"tocolor",attr.color[2],20); + zdialog_fetch(zd,"shcolor",attr.color[3],20); + zdialog_fetch(zd,"fgtransp",attr.transp[0]); + zdialog_fetch(zd,"bgtransp",attr.transp[1]); + zdialog_fetch(zd,"totransp",attr.transp[2]); + zdialog_fetch(zd,"shtransp",attr.transp[3]); + zdialog_fetch(zd,"towidth",attr.towidth); + zdialog_fetch(zd,"shwidth",attr.shwidth); + zdialog_fetch(zd,"shangle",attr.shangle); + + repl_Nstrs(text, text2,"\n","\\n",null); // replace newlines with "\n" + + fprintf(fid,"text string: %s\n",text2); + + fprintf(fid,"font: %s size: %d \n",attr.font, attr.size); + + fprintf(fid,"attributes: %.4f %s %s %s %s %d %d %d %d %d %d %d \n", + attr.angle, attr.color[0], attr.color[1], attr.color[2], attr.color[3], + attr.transp[0], attr.transp[1], attr.transp[2], attr.transp[3], + attr.towidth, attr.shwidth, attr.shangle); + fclose(fid); return; } diff -Nru fotoxx-13.08/f.menus.cc fotoxx-13.09.1/f.menus.cc --- fotoxx-13.08/f.menus.cc 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/f.menus.cc 2013-08-31 06:26:38.000000000 +0000 @@ -4,7 +4,7 @@ Copyright 2007 2008 2009 2010 2011 2012 2013 Michael Cornelison Source URL: http://kornelix.com/fotoxx - Contact: kornelix2@gmail.com + Contact: kornelix@gmx.de This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -35,7 +35,7 @@ GtkWidget *mPlug, *mHelp; GtkWidget *fhbox, *fvb1, *fvb2; GtkWidget *KBshort = (GtkWidget *) -1; // KB shortcuts not in menu or toolbar v.13.04 - vbox_menu *fvbm = 0; + Vmenu *fvbm = 0; if (strEqu(menu_style,"classic")) // classic menu and toolbar { @@ -78,7 +78,7 @@ gtk_box_pack_start(GTK_BOX(fvb2),fDwin,1,1,0); fSbar = create_stbar(fVbox); gtk_widget_set_size_request(fvb1,10,10); // compensate GTK bug - fvbm = vbox_menu_new(fvb1); + fvbm = Vmenu_new(fvb1); fVMenu = fvb1; // global name for win_fullscreen() v.13.03 mFile = create_popmenu(); // add top menu items to menu vbox @@ -95,22 +95,37 @@ mHelp = create_popmenu(); mPlug = create_popmenu(); fTbar = 0; // no GTK toolbar - - vbox_menu_add(fvbm,0, "favorites.png", ZTX("Favorites Menu"), m_favorites, 0 ); // favorites = 1st menu v.13.06 - vbox_menu_add(fvbm,ZTX("File"),0,0, (mtFunc *) popup_menu, (cchar *) mFile); - vbox_menu_add(fvbm,ZTX("Tools"),0,0, (mtFunc *) popup_menu, (cchar *) mTools); - vbox_menu_add(fvbm,ZTX("Metadata"),0,0, (mtFunc *) popup_menu, (cchar *) mMeta); - vbox_menu_add(fvbm,ZTX("Areas"),0,0, (mtFunc *) popup_menu, (cchar *) mArea); - vbox_menu_add(fvbm,ZTX("Image"),0,0, (mtFunc *) popup_menu, (cchar *) mImage); - vbox_menu_add(fvbm,ZTX("Retouch"),0,0, (mtFunc *) popup_menu, (cchar *) mRet); - vbox_menu_add(fvbm,ZTX("Repair"),0,0, (mtFunc *) popup_menu, (cchar *) mRep); - vbox_menu_add(fvbm,ZTX("Color"),0,0, (mtFunc *) popup_menu, (cchar *) mColor); - vbox_menu_add(fvbm,ZTX("Bend"),0,0, (mtFunc *) popup_menu, (cchar *) mBend); - vbox_menu_add(fvbm,ZTX("Effects"),0,0, (mtFunc *) popup_menu, (cchar *) mEff); - vbox_menu_add(fvbm,ZTX("Combine"),0,0, (mtFunc *) popup_menu, (cchar *) mComb); - vbox_menu_add(fvbm,ZTX("Plugins"),0,0, (mtFunc *) popup_menu, (cchar *) mPlug); - vbox_menu_add(fvbm,ZTX("Help"),0,ZTX("User Guide etc."), (mtFunc *) popup_menu, (cchar *) mHelp); - vbox_menu_add(fvbm," ---- ",0,0,0,0); + + cchar * favorites_tip = ZTX("Favorites Menu"); + cchar * file_tip = ZTX("Open, Save, Trash, Rename, Print"); + cchar * tools_tip = ZTX("Synch Files, Settings, Collections, Batch Funcs ..."); + cchar * metadata_tip = ZTX("Captions, Tags, Ratings, Geotags, Search ... "); + cchar * areas_tip = ZTX("Select image areas to edit, copy and paste"); + cchar * image_tip = ZTX("Rotate, Trim/Crop, Resize, Add Text"); + cchar * retouch_tip = ZTX("Improve brightness, contrast, color ..."); + cchar * repair_tip = ZTX("Sharpen, Clean, Red-eyes, Paint, Clone ..."); + cchar * color_tip = ZTX("White Balance, Color Profile, Color Matching"); + cchar * bend_tip = ZTX("Fix Perspective, Bend/Warp image ..."); + cchar * effects_tip = ZTX("Special Effects, Arty Transforms"); + cchar * combine_tip = ZTX("HDR, HDF, Panorama, Stack, Mashup"); + cchar * plugins_tip = ZTX("Use other image editors within Fotoxx"); + cchar * help_tip = ZTX("Quick Start, User Guide, Recent Changes ..."); + + Vmenu_add(fvbm,0, "favorites.png", favorites_tip, m_favorites, 0 ); + Vmenu_add(fvbm,ZTX("File"), 0, file_tip, (mtFunc *) popup_menu, (cchar *) mFile); + Vmenu_add(fvbm,ZTX("Tools"), 0, tools_tip, (mtFunc *) popup_menu, (cchar *) mTools); + Vmenu_add(fvbm,ZTX("Metadata"), 0, metadata_tip, (mtFunc *) popup_menu, (cchar *) mMeta); + Vmenu_add(fvbm,ZTX("Areas"), 0, areas_tip, (mtFunc *) popup_menu, (cchar *) mArea); + Vmenu_add(fvbm,ZTX("Image"), 0, image_tip, (mtFunc *) popup_menu, (cchar *) mImage); + Vmenu_add(fvbm,ZTX("Retouch"), 0, retouch_tip, (mtFunc *) popup_menu, (cchar *) mRet); + Vmenu_add(fvbm,ZTX("Repair"), 0, repair_tip, (mtFunc *) popup_menu, (cchar *) mRep); + Vmenu_add(fvbm,ZTX("Color"), 0, color_tip, (mtFunc *) popup_menu, (cchar *) mColor); + Vmenu_add(fvbm,ZTX("Bend"), 0, bend_tip, (mtFunc *) popup_menu, (cchar *) mBend); + Vmenu_add(fvbm,ZTX("Effects"), 0, effects_tip, (mtFunc *) popup_menu, (cchar *) mEff); + Vmenu_add(fvbm,ZTX("Combine"), 0, combine_tip, (mtFunc *) popup_menu, (cchar *) mComb); + Vmenu_add(fvbm,ZTX("Plugins"), 0, plugins_tip, (mtFunc *) popup_menu, (cchar *) mPlug); + Vmenu_add(fvbm,ZTX("Help"), 0, help_tip, (mtFunc *) popup_menu, (cchar *) mHelp); + Vmenu_add(fvbm," ---- ", 0, 0, 0, 0); } // build a table of menu and toolbar items @@ -134,9 +149,7 @@ MENUENT(mFile, ZTX("Recently Seen Images"), 0, ZTX("Open a recently seen file"), m_recentfiles, 0 ); MENUENT(mFile, ZTX("Newly Added Images"), 0, ZTX("Open a newly added file"), m_newfiles, 0 ); MENUENT(mFile, ZTX("Open RAW file (ufraw)"), 0, ZTX("Open and edit a camera RAW file"), m_ufraw, 0 ); - MENUENT(mFile, ZTX("Save to Same File"), 0, ZTX("Save to the same file (replace)"), m_save, 0 ); - MENUENT(mFile, ZTX("Save to New Version"), 0, ZTX("Save to a new (next) version"), m_savevers, 0 ); - MENUENT(mFile, ZTX("Save to New File"), 0, ZTX("Save to a new file name"), m_saveas, 0 ); + MENUENT(mFile, ZTX("Save to Disk"), 0, ZTX("Save modified image file to disk"), m_file_save, 0 ); MENUENT(mFile, ZTX("Rename Image File"), 0, ZTX("Change the image file name"), m_rename, 0 ); MENUENT(mFile, ZTX("New Blank Image"), 0, ZTX("Create a blank image"), m_create, 0 ); MENUENT(mFile, ZTX("Trash Image File"), 0, ZTX("Move image file to Trash"), m_trash, 0 ); @@ -164,16 +177,15 @@ MENUENT(mTools, ZTX("Burn Images to CD/DVD"), 0, ZTX("Burn selected image files to CD or DVD"), m_burn, 0 ); MENUENT(mTools, ZTX("Resources"), 0, ZTX("Memory and CPU (to terminal/logfile)"), m_resources, 0 ); - MENUENT(mMeta, ZTX("Edit Caption/Comments"), 0, ZTX("Edit image caption or comment"), m_edit_cctext, 0 ); - MENUENT(mMeta, ZTX("Edit Metadata"), 0, ZTX("Edit image date/rating/tags"), m_edit_metadata, 0 ); - MENUENT(mMeta, ZTX("Batch Tags"), 0, ZTX("Add/remove tags for multiple images"), m_batchTags, 0 ); + MENUENT(mMeta, ZTX("Edit Metadata"), 0, ZTX("Edit image tags/caption/rating ..."), m_edit_metadata, 0 ); + MENUENT(mMeta, ZTX("Batch Add/Remove Tags"), 0, ZTX("Add/remove tags for multiple images"), m_batchTags, 0 ); MENUENT(mMeta, ZTX("View Metadata (short)"), 0, ZTX("List a few key metadata items"), m_meta_view_short, 0 ); MENUENT(mMeta, ZTX("View Metadata (long)"), 0, ZTX("List all metadata items"), m_meta_view_long, 0 ); MENUENT(mMeta, ZTX("Edit Any Metadata"), 0, ZTX("Edit any image metadata"), m_meta_edit_any, 0 ); MENUENT(mMeta, ZTX("Delete Metadata"), 0, ZTX("Remove all metadata from an image"), m_meta_delete, 0 ); MENUENT(mMeta, ZTX("Download Geolocations"), 0, ZTX("Download initial geolocation database"), m_download_geolocs, 0 ); ///MENUENT(mMeta, ZTX("World Map Test"), 0, ZTX("Test World Map coordinate transforms"), m_worldmap_test, 0 ); - MENUENT(mMeta, ZTX("Edit Geotags"), 0, ZTX("Edit image geotags"), m_edit_geotags, 0 ); + MENUENT(mMeta, ZTX("Edit Geotags"), 0, ZTX("Edit image location and geotags"), m_edit_geotags, 0 ); MENUENT(mMeta, ZTX("Batch Add Geotags"), 0, ZTX("Add geotags to multiple images"), m_batch_add_geotags, 0 ); MENUENT(mMeta, ZTX("Images by Location/Date"), 0, ZTX("Find all images for a location [date]"), m_geotag_groups, 0 ); MENUENT(mMeta, ZTX("Images by Map Location"), 0, ZTX("Find images by clicking a world map"), m_geotag_worldmap, 0 ); @@ -191,23 +203,23 @@ MENUENT(mArea, ZTX("Open"), 0, ZTX("Open a file with a saved area"), m_select_open, 0 ); MENUENT(mArea, ZTX("Save"), 0, ZTX("Save an area to a file"), m_select_save, 0 ); - MENUENT(mImage, ZTX("Turn"), 0, ZTX("Rotate 90 degrees"), m_turn, 0 ); - MENUENT(mImage, ZTX("Rotate"), 0, ZTX("Rotate by any angle"), m_rotate, 0 ); - MENUENT(mImage, ZTX("Trim/Crop"), 0, ZTX("Cut off unwanted margins"), m_trim, 0 ); - MENUENT(mImage, ZTX("Auto-Trim"), 0, ZTX("Remove margins from warp, panorama, etc."), m_autotrim, 0 ); - MENUENT(mImage, ZTX("Resize"), 0, ZTX("Change pixel dimensions"), m_resize, 0 ); - MENUENT(mImage, ZTX("Flip"), 0, ZTX("Mirror image horizontally or vertically"), m_flip, 0 ); - MENUENT(mImage, ZTX("Add Text"), 0, ZTX("Write text on image"), m_write_text, 0 ); - - MENUENT(mRet, ZTX("Voodoo Enhance"), 0, ZTX("Fast auto enhance that may work OK"), m_voodoo, 0 ); - MENUENT(mRet, ZTX("Brightness/Color"), 0, ZTX("Adjust brightness, contrast, color"), m_brightcolor, 0 ); - MENUENT(mRet, ZTX("Gamma Curves"), 0, ZTX("Adjust contrast using a gamma curve"), m_gamma, 0 ); - MENUENT(mRet, ZTX("Tone Mapping"), 0, ZTX("Add local contrast, enhance details"), m_tonemap, 0 ); - MENUENT(mRet, ZTX("Flatten Brightness"), 0, ZTX("Flatten brightness distribution"), m_flatten, 0 ); - MENUENT(mRet, ZTX("Expand Brightness"), 0, ZTX("Expand brightness range"), m_xbrange, 0 ); - MENUENT(mRet, ZTX("Brightness Ramp"), 0, ZTX("Fix brightness uniformity across image"), m_brightramp, 0 ); - MENUENT(mRet, ZTX("Paint Edits"), 0, ZTX("Paint edit function gradually with the mouse"), m_paint_edits, 0 ); - MENUENT(mRet, ZTX("Leverage Edits"), 0, ZTX("Leverage edits by brightness or color"), m_lever_edits, 0 ); + MENUENT(mImage, ZTX("Rotate 90º"), 0, ZTX("Rotate 90 degrees"), m_rotate90, 0 ); + MENUENT(mImage, ZTX("Rotate"), 0, ZTX("Rotate by any angle"), m_rotate, 0 ); + MENUENT(mImage, ZTX("Trim/Crop"), 0, ZTX("Cut off unwanted margins"), m_trim, 0 ); + MENUENT(mImage, ZTX("Auto-Trim"), 0, ZTX("Remove margins from warp, panorama, etc."), m_autotrim, 0 ); + MENUENT(mImage, ZTX("Resize"), 0, ZTX("Change pixel dimensions"), m_resize, 0 ); + MENUENT(mImage, ZTX("Flip"), 0, ZTX("Mirror image horizontally or vertically"), m_flip, 0 ); + MENUENT(mImage, ZTX("Add Text"), 0, ZTX("Write text on image"), m_write_text, 0 ); + + MENUENT(mRet, ZTX("Voodoo Enhance"), 0, ZTX("Fast auto enhance that may work OK"), m_voodoo, 0 ); + MENUENT(mRet, ZTX("Brightness/Contrast/Color"), 0, ZTX("Adjust brightness, contrast, color"), m_brightcolor, 0 ); + MENUENT(mRet, ZTX("Gamma Curves"), 0, ZTX("Adjust contrast using a gamma curve"), m_gamma, 0 ); + MENUENT(mRet, ZTX("Tone Mapping"), 0, ZTX("Add local contrast, enhance details"), m_tonemap, 0 ); + MENUENT(mRet, ZTX("Flatten Brightness"), 0, ZTX("Flatten brightness distribution"), m_flatten, 0 ); + MENUENT(mRet, ZTX("Expand Brightness"), 0, ZTX("Expand brightness range"), m_xbrange, 0 ); + MENUENT(mRet, ZTX("Brightness Ramp"), 0, ZTX("Fix brightness uniformity across image"), m_brightramp, 0 ); + MENUENT(mRet, ZTX("Paint Edits"), 0, ZTX("Paint edit function gradually with mouse"), m_paint_edits, 0 ); + MENUENT(mRet, ZTX("Leverage Edits"), 0, ZTX("Leverage edits by brightness or color"), m_lever_edits, 0 ); MENUENT(mRep, ZTX("Sharpen"), 0, ZTX("Make the image look sharper"), m_sharpen, 0 ); MENUENT(mRep, ZTX("Blur"), 0, ZTX("Make the image look fuzzy"), m_blur, 0 ); @@ -252,36 +264,35 @@ MENUENT(mComb, ZTX("Stack / Noise"), 0, ZTX("Combine noisy images into a low-noise image"), m_STN, 0 ); MENUENT(mComb, ZTX("Panorama"), 0, ZTX("Combine images into a panorama"), m_pano, 0 ); MENUENT(mComb, ZTX("Vertical Panorama"), 0, ZTX("Combine images into a vertical panorama"), m_vpano, 0 ); + MENUENT(mComb, ZTX("Mashup"), 0, ZTX("Arrange multiple images on a background image"), m_mashup, 0 ); MENUENT(mPlug, ZTX("Edit Plugins"), 0, ZTX("Add another image editor to the menu"), m_edit_plugins, 0); - MENUENT(mHelp, ZTX("Quick Start"), 0, ZTX("Quick Start mini-guide"), m_help, 0 ); - MENUENT(mHelp, ZTX("User Guide"), 0, ZTX("Read the user guide"), m_help, 0 ); - MENUENT(mHelp, ZTX("User Guide Changes"), 0, ZTX("Recent user guide changes"), m_help, 0 ); - MENUENT(mHelp, ZTX("Program Updates"), 0, ZTX("Fotoxx updates notification"), m_help, 0 ); - MENUENT(mHelp, ZTX("Edit Functions Summary"), 0, ZTX("Summary of image edit functions"), m_help, 0 ); - MENUENT(mHelp, ZTX("README"), 0, ZTX("Technical installation notes"), m_help, 0 ); - MENUENT(mHelp, ZTX("Change Log"), 0, ZTX("List updates by Fotoxx version"), m_help, 0 ); - MENUENT(mHelp, ZTX("Log File"), 0, ZTX("View the log file and error messages"), m_help, 0 ); - MENUENT(mHelp, ZTX("Translations"), 0, ZTX("How to do Fotoxx translations"), m_help, 0 ); - MENUENT(mHelp, ZTX("Home Page"), 0, ZTX("Show the Fotoxx web page"), m_help, 0 ); - MENUENT(mHelp, ZTX("About"), 0, ZTX("Version, license, contact, credits"), m_help, 0 ); - - if (strEqu(menu_style,"classic")) // v.13.06 - MENUENT(fTbar, ZTX("Favs"), "favorites.png", ZTX("Favorites Menu"), m_favorites, 0 ); - - MENUENT(fTbar, ZTX("Color"), "fg-color.png", ZTX("Color of area borders etc."), m_fg_color, 0 ); - MENUENT(fTbar, ZTX("Undo"), "undo.png", ZTX("Undo one edit"), m_undo, 0 ); - MENUENT(fTbar, ZTX("Redo"), "redo.png", ZTX("Redo one edit"), m_redo, 0 ); - MENUENT(fTbar, "separator", null, null, null, 0 ); - MENUENT(fTbar, "Sync.G", "sync.G.png", ZTX("Gallery from Tab F"), navi::menufuncx, 0 ); // v.13.08 - MENUENT(fTbar, ZTX("Open"), "open.png", ZTX("Open a new image file"), m_open, 0 ); - MENUENT(fTbar, ZTX("Prev"), "prev.png", ZTX("Open the previous file"), m_prev, 0 ); - MENUENT(fTbar, ZTX("Next"), "next.png", ZTX("Open the next file"), m_next, 0 ); - MENUENT(fTbar, ZTX("Save"), "save.png", ZTX("Save to the same file"), m_save, 0 ); - MENUENT(fTbar, ZTX("Save+V"), "save+V.png", ZTX("Save to a new version"), m_savevers, 0 ); - MENUENT(fTbar, ZTX("Save+F"), "save+F.png", ZTX("Save to a new file"), m_saveas, 0 ); - MENUENT(fTbar, ZTX("Trash"), "trash.png", ZTX("Move image file to Trash"), m_trash, 0 ); + MENUENT(mHelp, ZTX("Quick Start"), 0, ZTX("Quick Start mini-guide"), m_help, 0 ); + MENUENT(mHelp, ZTX("User Guide"), 0, ZTX("Read the user guide"), m_help, 0 ); + MENUENT(mHelp, ZTX("User Guide Changes"), 0, ZTX("Recent user guide changes"), m_help, 0 ); + MENUENT(mHelp, ZTX("Program Updates"), 0, ZTX("Fotoxx updates notification"), m_help, 0 ); + MENUENT(mHelp, ZTX("Edit Functions Summary"), 0, ZTX("Summary of image edit functions"), m_help, 0 ); + MENUENT(mHelp, ZTX("README"), 0, ZTX("Technical installation notes"), m_help, 0 ); + MENUENT(mHelp, ZTX("Change Log"), 0, ZTX("List updates by Fotoxx version"), m_help, 0 ); + MENUENT(mHelp, ZTX("Log File"), 0, ZTX("View the log file and error messages"), m_help, 0 ); + MENUENT(mHelp, ZTX("Translations"), 0, ZTX("How to do Fotoxx translations"), m_help, 0 ); + MENUENT(mHelp, ZTX("Home Page"), 0, ZTX("Show the Fotoxx web page"), m_help, 0 ); + MENUENT(mHelp, ZTX("About"), 0, ZTX("Version, license, contact, credits"), m_help, 0 ); + + if (strEqu(menu_style,"classic")) + MENUENT(fTbar, ZTX("Favs"), "favorites.png", ZTX("Favorites Menu"), m_favorites, 0 ); + + MENUENT(fTbar, ZTX("Color"), "fg-color.png", ZTX("Color of area borders etc."), m_fg_color, 0 ); + MENUENT(fTbar, ZTX("Undo"), "undo.png", ZTX("Undo one edit"), m_undo, 0 ); + MENUENT(fTbar, ZTX("Redo"), "redo.png", ZTX("Redo one edit"), m_redo, 0 ); + MENUENT(fTbar, "separator", null, null, null, 0 ); + MENUENT(fTbar, ZTX("Sync.G"), "sync.G.png", ZTX("Set gallery from current image file"), navi::menufuncx, 0 ); + MENUENT(fTbar, ZTX("Open"), "open.png", ZTX("Open a new image file"), m_open, 0 ); + MENUENT(fTbar, ZTX("Prev"), "prev.png", ZTX("Open the previous file"), m_prev, 0 ); + MENUENT(fTbar, ZTX("Next"), "next.png", ZTX("Open the next file"), m_next, 0 ); + MENUENT(fTbar, ZTX("Save"), "save.png", ZTX("Save modified image file to disk"), m_file_save, 0 ); + MENUENT(fTbar, ZTX("Trash"), "trash.png", ZTX("Move image file to Trash"), m_trash, 0 ); if (strEqu(menu_style,"classic")) // build classic menu and toolbar @@ -317,11 +328,11 @@ menutab[me].func, menutab[me].arg, menutab[me].desc); else { // toolbar button if (strEqu(tbar_style,"text")) - vbox_menu_add(fvbm, menutab[me].menu, 0, menutab[me].desc, menutab[me].func, menutab[me].arg); + Vmenu_add(fvbm, menutab[me].menu, 0, menutab[me].desc, menutab[me].func, menutab[me].arg); else if (strEqu(tbar_style,"icons")) - vbox_menu_add(fvbm, 0, menutab[me].icon, menutab[me].desc, menutab[me].func, menutab[me].arg); + Vmenu_add(fvbm, 0, menutab[me].icon, menutab[me].desc, menutab[me].func, menutab[me].arg); else - vbox_menu_add(fvbm, menutab[me].menu, menutab[me].icon, menutab[me].desc, menutab[me].func, menutab[me].arg); + Vmenu_add(fvbm, menutab[me].menu, menutab[me].icon, menutab[me].desc, menutab[me].func, menutab[me].arg); } } @@ -339,7 +350,7 @@ // or vertical on the left side of the window. GtkWidget *gTbar, *gVbox2, *ghbox; - vbox_menu *gvbm = 0; + Vmenu *gvbm = 0; PangoFontDescription *pfontdesc; if (strEqu(menu_style,"classic")) // classic toolbar @@ -363,12 +374,12 @@ gtk_box_pack_start(GTK_BOX(ghbox),gTbar,0,0,0); // |_______|____________| gtk_box_pack_start(GTK_BOX(ghbox),gVbox2,1,1,0); gtk_widget_set_size_request(gTbar,10,10); // compensate GTK bug - gvbm = vbox_menu_new(gTbar); + gvbm = Vmenu_new(gTbar); } gHbox = gtk_box_new(HORIZONTAL,0); // add navigation widgets gtk_box_pack_start(GTK_BOX(gVbox2),gHbox,0,0,0); // [Top] [no directory] - gTop = gtk_button_new_with_label("Top"); + gTop = gtk_button_new_with_label(ZTX("Top")); gPath = gtk_entry_new(); // add directory label gtk_entry_set_text(GTK_ENTRY(gPath),"no directory"); gtk_widget_set_can_focus(gPath,0); // stop unwanted focus @@ -386,18 +397,18 @@ int me0 = Nmenus; - MENUENT(gTbar, "Sync.G", "sync.G.png", ZTX("Gallery from Tab F"), navi::menufuncx, 0 ); - MENUENT(gTbar, ZTX("Open"), "open.png", ZTX("change directory"), navi::menufuncx, 0 ); - MENUENT(gTbar, ZTX("GoTo"), "goto.png", ZTX("go to bookmarked image"), navi::menufuncx, 0 ); - MENUENT(gTbar, "Zoom+", "zoom+.png", ZTX("increase thumbnail size"), navi::menufuncx, 0 ); - MENUENT(gTbar, "Zoom-", "zoom-.png", ZTX("reduce thumbnail size"), navi::menufuncx, 0 ); - MENUENT(gTbar, ZTX("First"), "top.png", ZTX("jump to first page"), navi::menufuncx, 0 ); - MENUENT(gTbar, ZTX("Last"), "bottom.png", ZTX("jump to last page"), navi::menufuncx, 0 ); - MENUENT(gTbar, ZTX("Page↑"), "up+.png", ZTX("previous page"), navi::menufuncx, 0 ); - MENUENT(gTbar, ZTX("Page↓"), "down+.png", ZTX("next page"), navi::menufuncx, 0 ); - MENUENT(gTbar, ZTX("Row↑"), "up.png", ZTX("previous row"), navi::menufuncx, 0 ); - MENUENT(gTbar, ZTX("Row↓"), "down.png", ZTX("next row"), navi::menufuncx, 0 ); - MENUENT(gTbar, ZTX("Sort"), "sort.png", ZTX("change sequence"), navi::menufuncx, 0 ); + MENUENT(gTbar, ZTX("Sync.G"), "sync.G.png", ZTX("Set gallery from current image file"), navi::menufuncx, 0 ); + MENUENT(gTbar, ZTX("Open"), "open.png", ZTX("open another directory"), navi::menufuncx, 0 ); + MENUENT(gTbar, ZTX("GoTo"), "goto.png", ZTX("go to bookmarked image"), navi::menufuncx, 0 ); + MENUENT(gTbar, ZTX("Zoom+"), "zoom+.png", ZTX("increase thumbnail size"), navi::menufuncx, 0 ); + MENUENT(gTbar, ZTX("Zoom-"), "zoom-.png", ZTX("reduce thumbnail size"), navi::menufuncx, 0 ); + MENUENT(gTbar, ZTX("Sort"), "sort.png", ZTX("change sort order"), navi::menufuncx, 0 ); + MENUENT(gTbar, ZTX("First"), "top.png", ZTX("jump to beginning (top)"), navi::menufuncx, 0 ); + MENUENT(gTbar, ZTX("Last"), "bottom.png", ZTX("jump to end (bottom)"), navi::menufuncx, 0 ); + MENUENT(gTbar, ZTX("Page↑"), "up+.png", ZTX("previous page"), navi::menufuncx, 0 ); + MENUENT(gTbar, ZTX("Page↓"), "down+.png", ZTX("next page"), navi::menufuncx, 0 ); + MENUENT(gTbar, ZTX("Row↑"), "up.png", ZTX("previous row"), navi::menufuncx, 0 ); + MENUENT(gTbar, ZTX("Row↓"), "down.png", ZTX("next row"), navi::menufuncx, 0 ); for (me = me0; me < Nmenus; me++) { @@ -405,11 +416,11 @@ add_toolbar_button(gTbar, menutab[me].menu, menutab[me].desc, menutab[me].icon, menutab[me].func); else { if (strEqu(tbar_style,"text")) - vbox_menu_add(gvbm, menutab[me].menu, 0, menutab[me].desc, menutab[me].func, menutab[me].arg); + Vmenu_add(gvbm, menutab[me].menu, 0, menutab[me].desc, menutab[me].func, menutab[me].arg); else if (strEqu(tbar_style,"icons")) - vbox_menu_add(gvbm, 0, menutab[me].icon, menutab[me].desc, menutab[me].func, menutab[me].arg); + Vmenu_add(gvbm, 0, menutab[me].icon, menutab[me].desc, menutab[me].func, menutab[me].arg); else - vbox_menu_add(gvbm, menutab[me].menu, menutab[me].icon, menutab[me].desc, menutab[me].func, menutab[me].arg); + Vmenu_add(gvbm, menutab[me].menu, menutab[me].icon, menutab[me].desc, menutab[me].func, menutab[me].arg); } } @@ -444,7 +455,7 @@ cchar *menupastecachekeep = ZTX("Paste Image Cache Here (keep)"); cchar *menutrim = ZTX("Trim/Crop"); cchar *menuresize = ZTX("Resize"); - cchar *menuturn = ZTX("Turn"); + cchar *menuturn = ZTX("Rotate 90º"); cchar *menuvoodoo = ZTX("Voodoo Enhance"); cchar *menubright = ZTX("Brightness/Color"); cchar *menugamma = ZTX("Gamma Curves"); @@ -464,7 +475,7 @@ add_popmenu_item(popmenu_main,menutrash,popup_menufunc,"trash"); add_popmenu_item(popmenu_main,menutrim,popup_menufunc,"trim"); add_popmenu_item(popmenu_main,menuresize,popup_menufunc,"resize"); - add_popmenu_item(popmenu_main,menuturn,popup_menufunc,"turn"); + add_popmenu_item(popmenu_main,menuturn,popup_menufunc,"rotate 90º"); add_popmenu_item(popmenu_main,menuvoodoo,popup_menufunc,"voodoo"); add_popmenu_item(popmenu_main,menubright,popup_menufunc,"bright"); add_popmenu_item(popmenu_main,menugamma,popup_menufunc,"gamma"); @@ -524,7 +535,7 @@ if (strEqu(menu,"trim")) m_trim(0,0); // these functions use curr_file only if (strEqu(menu,"resize")) m_resize(0,0); // (not used for gallery/thumbnail click) - if (strEqu(menu,"turn")) m_turn(0,0); + if (strEqu(menu,"rotate 90º")) m_rotate90(0,0); if (strEqu(menu,"voodoo")) m_voodoo(0,0); if (strEqu(menu,"bright")) m_brightcolor(0,0); if (strEqu(menu,"gamma")) m_gamma(0,0); diff -Nru fotoxx-13.08/f.meta.cc fotoxx-13.09.1/f.meta.cc --- fotoxx-13.08/f.meta.cc 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/f.meta.cc 2013-08-31 06:26:38.000000000 +0000 @@ -4,7 +4,7 @@ Copyright 2007 2008 2009 2010 2011 2012 2013 Michael Cornelison Source URL: http://kornelix.com/fotoxx - Contact: kornelix2@gmail.com + Contact: kornelix@gmx.de This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -29,6 +29,9 @@ Fotoxx image editor - image metadata functions, EXIF/IPTC etc. ***************************************************************************/ +char *pdate_metadate(cchar *pdate); // "yyyy-mm-dd" to "yyyymmdd" +char *ptime_metatime(cchar *ptime); // "hh:mm" to "hhmm" +void metadate_pdate(cchar *metadate, char *pdate, char *ptime); // "yyyymmddhhmm" to "yyyy-mm-dd" and "hh:mm" int get_mouse_tag(GtkTextView *, int px, int py, cchar *); // get tag selected by mouse int add_tag(char *tag, char *taglist, int maxcc); // add tag if unique and enough space int del_tag(char *tag, char *taglist); // remove tag from tag list @@ -46,7 +49,7 @@ char meta_size[16] = ""; // image size, "NNNNxNNNN" char *tags_deftags[maxtagcats]; // defined tags: catg: tag1, ... tagN, char tags_deftext[tagTcc] = ""; // defined tags as flat text buffer -char tags_currtags[tagFcc] = ""; // tags for current image file +char tags_imagetags[tagFcc] = ""; // tags for current image file char tags_recentags[tagRcc] = ""; // recently added tags list char tags_searchtags[tagScc] = ""; // search tags list char tags_searchtext[tagScc] = ""; // search comments & captions word list @@ -66,154 +69,150 @@ int check_index_sync() { - #define blockmess \ - "Metadata functions do not work unless file sync is done. \n" \ - "Use Tools > Synchronize Files to perform file sync." + cchar *blockmess = ZTX("Metadata index is missing.\n" + "Use Tools > Synchronize Files."); if (FsyncEnabled && ! FsyncNeeded) return 1; // file sync enabled, not needed - zmessageACK(mWin,0,ZTX(blockmess)); + zmessageACK(mWin,0,blockmess); return 0; } /**************************************************************************/ -// View and edit IPTC Caption and EXIF UserComment data - -void m_edit_cctext(GtkWidget *, cchar *menu) // 2 functions combined -{ - int edit_cctext_dialog_event(zdialog *zd, cchar *event); - char text[exif_maxcc+50]; - cchar *title = ZTX("Edit Caption and Comments"); - - if (menu) F1_help_topic = "edit_cctext"; - if (! check_index_sync()) return; // index fle sync disabled - if (! curr_file) return; - - if (! zdeditcctext) // popup dialog if not already - { - zdeditcctext = zdialog_new(title,mWin,Bapply,Bcancel,null); - zdialog *zd = zdeditcctext; - zdialog_add_widget(zd,"hbox","hbcap","dialog"); - zdialog_add_widget(zd,"label","labcap","hbcap",ZTX("Caption"),"space=5"); - zdialog_add_widget(zd,"frame","framecap","hbcap",0,"expand"); - zdialog_add_widget(zd,"edit","textcap","framecap",0,"space=5|wrap"); - zdialog_add_widget(zd,"hbox","hbcom","dialog"); - zdialog_add_widget(zd,"label","labcom","hbcom",ZTX("Comments"),"space=5"); - zdialog_add_widget(zd,"frame","framecom","hbcom",0,"expand"); - zdialog_add_widget(zd,"edit","textcom","framecom",0,"space=5|wrap"); - zdialog_resize(zd,600,0); - zdialog_run(zd,edit_cctext_dialog_event); - } - - load_filemeta(curr_file); // get current caption and comments - repl_1str(meta_caption,text,"\\n","\n"); // replace "\n" with real newlines - zdialog_stuff(zdeditcctext,"textcap",text); // stuff into dialog - repl_1str(meta_comments,text,"\\n","\n"); // replace "\n" with real newlines - zdialog_stuff(zdeditcctext,"textcom",text); // stuff into dialog - - return; -} - - -// dialog event and completion callback function - -int edit_cctext_dialog_event(zdialog *zd, cchar *event) -{ - char text[exif_maxcc+50]; - - if (! zd->zstat) return 0; - - else if (zd->zstat == 1) // apply, save text - { - zd->zstat = 0; // keep dialog active - zdialog_fetch(zd,"textcap",text,exif_maxcc); // get new cctext - repl_1str(text,meta_caption,"\n","\\n"); // replace newlines with "\n" - zdialog_fetch(zd,"textcom",text,exif_maxcc); // get new cctext - repl_1str(text,meta_comments,"\n","\\n"); // replace newlines with "\n" - Fmetachanged++; - save_filemeta(curr_file); // save in image file - } - - else zdialog_free(zdeditcctext); // cancel - - return 1; -} +// edit metadata menu function -/**************************************************************************/ +char pstars2[40]; +char cctext[exif_maxcc+50]; +cchar *pstars; -// edit metadata menu function -void m_edit_metadata(GtkWidget *, cchar *menu) +void m_edit_metadata(GtkWidget *, cchar *menu) // overhauled v.13.09 { - void edit_filetags_clickfunc(GtkWidget *widget, int line, int pos); + void edit_imagetags_clickfunc(GtkWidget *widget, int line, int pos); void edit_recentags_clickfunc(GtkWidget *widget, int line, int pos); void edit_deftags_clickfunc(GtkWidget *widget, int line, int pos); int editmeta_dialog_event(zdialog *zd, cchar *event); - char *ppv, starsN[8]; GtkWidget *widget; zdialog *zd; + char *ppv, pdate[12], ptime[8], psize[8]; + float sizeMB, fMB = 1.0 / 1024.0 / 1024.0; if (menu) F1_help_topic = "edit_tags"; if (! check_index_sync()) return; // index fle sync disabled if (! curr_file) return; + pstars = ZTX("Rating: %c (stars)"); - if (! zdeditmeta) // (re) start tag edit dialog + if (! zdeditmeta) // (re) start edit dialog { - zd = zdialog_new(ZTX("Edit Metadata"),mWin,Bmanagetags,Bapply,Bcancel,null); + zd = zdialog_new(ZTX("Edit Metadata"),mWin,Bgeotags,Bmanagetags,Bapply,Bcancel,0); zdeditmeta = zd; - zdialog_add_widget(zd,"hbox","hb1","dialog",0,"space=5"); - zdialog_add_widget(zd,"label","labfile","hb1",ZTX("file:"),"space=5"); - zdialog_add_widget(zd,"label","file","hb1"); - - zdialog_add_widget(zd,"hbox","hb2","dialog",0,"space=5"); - zdialog_add_widget(zd,"label","lab21","hb2",ZTX("image date (yyyymmdd)"),"space=5"); - zdialog_add_widget(zd,"entry","date","hb2",0,"scc=16"); - zdialog_add_widget(zd,"button","prdate","hb2",ZTX("use last"),"space=5"); - - zdialog_add_widget(zd,"hbox","hb3","dialog",0,"space=5"); - zdialog_add_widget(zd,"label","labstars","hb3",ZTX("image stars"),"space=5"); - zdialog_add_widget(zd,"vbox","vb3","hb3"); - zdialog_add_widget(zd,"hbox","hb31","vb3",0,"homog"); - zdialog_add_widget(zd,"hbox","hb32","vb3",0,"homog"); - zdialog_add_widget(zd,"label","lab30","hb31","0"); - zdialog_add_widget(zd,"label","lab31","hb31","1"); - zdialog_add_widget(zd,"label","lab32","hb31","2"); - zdialog_add_widget(zd,"label","lab33","hb31","3"); - zdialog_add_widget(zd,"label","lab34","hb31","4"); - zdialog_add_widget(zd,"label","lab35","hb31","5"); - zdialog_add_widget(zd,"radio","stars0","hb32",0); - zdialog_add_widget(zd,"radio","stars1","hb32",0); - zdialog_add_widget(zd,"radio","stars2","hb32",0); - zdialog_add_widget(zd,"radio","stars3","hb32",0); - zdialog_add_widget(zd,"radio","stars4","hb32",0); - zdialog_add_widget(zd,"radio","stars5","hb32",0); - - zdialog_add_widget(zd,"hbox","hb4","dialog",0,"space=5"); - zdialog_add_widget(zd,"label","lab4","hb4",ZTX("current tags"),"space=5"); - zdialog_add_widget(zd,"frame","frame4","hb4",0,"expand"); - zdialog_add_widget(zd,"text","filetags","frame4",0,"expand|wrap"); - - zdialog_add_widget(zd,"hbox","hb5","dialog",0,"space=5"); - zdialog_add_widget(zd,"label","recent","hb5",ZTX("recent tags"),"space=5"); - zdialog_add_widget(zd,"frame","frame5","hb5",0,"expand"); - zdialog_add_widget(zd,"text","recentags","frame5",0,"expand|wrap"); - - zdialog_add_widget(zd,"hbox","hb8","dialog"); - zdialog_add_widget(zd,"label","labdeftags","hb8",ZTX("defined tags"),"space=5"); - zdialog_add_widget(zd,"hbox","hb9","dialog",0,"expand"); - zdialog_add_widget(zd,"frame","frame8","hb9",0,"space=5|expand"); - zdialog_add_widget(zd,"scrwin","scrwin8","frame8",0,"expand"); - zdialog_add_widget(zd,"text","deftags","scrwin8",0,"expand|wrap"); +/** + ________________________________________________________ + | Edit Metadata | + | | + | File: xxxxxxxxxxxxxxxxxxxxx.jpg Size: 1.23 MB | + | Image Width: 2345 Height: 1234 Depth: 8 bits | + | Image Date: [_________] Time: [______] [get prev] | + | Rating: 0 (stars) Choose: 0 1 2 3 4 5 | + | Caption [___________________________________________] | + | Comments [__________________________________________] | + | Image Tags [________________________________________] | + | Recent Tags [_______________________________________] | + | Defined Tags _______________________________________ | + | | | | + | | | | + | | | | + | | | | + | |___________________________________________________| | + | | + | [Geotags] [Manage Tags] [Apply] [Cancel] | + |________________________________________________________| + +**/ + + // File: xxxxxxxxx.jpg Size: nn.n MB + zdialog_add_widget(zd,"hbox","hb1","dialog",0,"space=3"); + zdialog_add_widget(zd,"label","labfile","hb1",ZTX("File:"),"space=3"); + zdialog_add_widget(zd,"label","file","hb1","filename.jpg","space=5"); + zdialog_add_widget(zd,"label","space","hb1",0,"space=5"); + zdialog_add_widget(zd,"label","labtype","hb1",ZTX("Size:"),"space=3"); + zdialog_add_widget(zd,"label","size","hb1","12.3"); + zdialog_add_widget(zd,"label","labmb","hb1","MB","space=2"); + + // Image Width: xxxx Height: xxxx Depth nn + zdialog_add_widget(zd,"hbox","hb2","dialog"); + zdialog_add_widget(zd,"label","labww","hb2",ZTX("Image Width:"),"space=3"); + zdialog_add_widget(zd,"label","width","hb2","2345","space=3"); + zdialog_add_widget(zd,"label","space","hb2",0,"space=5"); + zdialog_add_widget(zd,"label","labhh","hb2",ZTX("Height:"),"space=3"); + zdialog_add_widget(zd,"label","height","hb2","1234","space=3"); + zdialog_add_widget(zd,"label","space","hb2",0,"space=5"); + zdialog_add_widget(zd,"label","labdd","hb2",ZTX("Depth:"),"space=3"); + zdialog_add_widget(zd,"label","depth","hb2","8 bits","space=3"); + + // Image Date yyyy-mm-dd [__________] Time hh:mm [_____] [get prev] + zdialog_add_widget(zd,"hbox","hb3","dialog",0,"space=3"); + zdialog_add_widget(zd,"label","labdate","hb3",ZTX("Image Date"),"space=3"); + zdialog_add_widget(zd,"entry","date","hb3",0,"scc=12"); + zdialog_add_widget(zd,"label","space","hb3",0,"space=5"); + zdialog_add_widget(zd,"label","labtime","hb3",ZTX("Time"),"space=3"); + zdialog_add_widget(zd,"entry","time","hb3",0,"scc=8"); + zdialog_add_widget(zd,"button","prdate","hb3",ZTX("get prev"),"space=8"); + + // Rating: 0 (stars) Choose: 0 1 2 3 4 5 + zdialog_add_widget(zd,"hbox","hb6","dialog"); + zdialog_add_widget(zd,"label","rating","hb6",pstars,"space=3"); + zdialog_add_widget(zd,"label","labchoose","hb6",ZTX("Choose:"),"space=8"); + zdialog_add_widget(zd,"button","stars0","hb6","0","space=3"); + zdialog_add_widget(zd,"button","stars1","hb6","1","space=3"); + zdialog_add_widget(zd,"button","stars2","hb6","2","space=3"); + zdialog_add_widget(zd,"button","stars3","hb6","3","space=3"); + zdialog_add_widget(zd,"button","stars4","hb6","4","space=3"); + zdialog_add_widget(zd,"button","stars5","hb6","5","space=3"); + + zdialog_add_widget(zd,"hbox","space","dialog",0,"space=3"); + + // Caption [__________________________________________] + zdialog_add_widget(zd,"hbox","hb4","dialog",0,"space=2"); + zdialog_add_widget(zd,"label","labcap","hb4",ZTX("Caption"),"space=3"); + zdialog_add_widget(zd,"frame","frame4","hb4",0,"space=3|expand"); + zdialog_add_widget(zd,"edit","caption","frame4",0,"wrap"); + + // Comments [_________________________________________] + zdialog_add_widget(zd,"hbox","hb5","dialog",0,"space=2"); + zdialog_add_widget(zd,"label","labcomm","hb5",ZTX("Comments"),"space=3"); + zdialog_add_widget(zd,"frame","frame5","hb5",0,"space=3|expand"); + zdialog_add_widget(zd,"edit","comments","frame5",0,"wrap"); + + // Image Tags [________________________________________] + zdialog_add_widget(zd,"hbox","hb7","dialog",0,"space=2"); + zdialog_add_widget(zd,"label","labimtags","hb7",ZTX("Image Tags"),"space=3"); + zdialog_add_widget(zd,"frame","frame7","hb7",0,"space=3|expand"); + zdialog_add_widget(zd,"text","imagetags","frame7",0,"wrap"); + + // Recent Tags [________________________________________] + zdialog_add_widget(zd,"hbox","hb8","dialog",0,"space=2"); + zdialog_add_widget(zd,"label","labrectags","hb8",ZTX("Recent Tags"),"space=3"); + zdialog_add_widget(zd,"frame","frame8","hb8",0,"space=3|expand"); + zdialog_add_widget(zd,"text","recentags","frame8",0,"wrap"); + + // Defined Tags (above big box) + zdialog_add_widget(zd,"hbox","hb9","dialog",0,"space=2"); + zdialog_add_widget(zd,"label","labdeftags","hb9",ZTX("Defined Tags"),"space=3"); + zdialog_add_widget(zd,"hbox","hb10","dialog",0,"expand"); + zdialog_add_widget(zd,"frame","frame10","hb10",0,"expand|space=3"); + zdialog_add_widget(zd,"scrwin","scrwin10","frame10",0,"expand"); + zdialog_add_widget(zd,"text","deftags","scrwin10",0,"wrap"); load_deftags(); // stuff defined tags into dialog deftags_stuff(zd); - widget = zdialog_widget(zd,"filetags"); // tag widget mouse functions - textwidget_set_clickfunc(widget,edit_filetags_clickfunc); + widget = zdialog_widget(zd,"imagetags"); // tag widget mouse functions + textwidget_set_clickfunc(widget,edit_imagetags_clickfunc); widget = zdialog_widget(zd,"recentags"); textwidget_set_clickfunc(widget,edit_recentags_clickfunc); @@ -221,7 +220,7 @@ widget = zdialog_widget(zd,"deftags"); textwidget_set_clickfunc(widget,edit_deftags_clickfunc); - zdialog_resize(zd,500,500); // run dialog + zdialog_resize(zd,400,500); // run dialog zdialog_run(zd,editmeta_dialog_event); } @@ -230,12 +229,29 @@ load_filemeta(curr_file); // get EXIF/IPTC data ppv = (char *) strrchr(curr_file,'/'); - zdialog_stuff(zd,"file",ppv+1); // stuff dialog file name + zdialog_stuff(zd,"file",ppv+1); // stuff dialog fields from curr. image file + + sizeMB = curr_file_size * fMB; + snprintf(psize,8,"%.2f",sizeMB); + zdialog_stuff(zd,"size",psize); + + zdialog_stuff(zd,"width",Fpxb->ww); + zdialog_stuff(zd,"height",Fpxb->hh); + zdialog_stuff(zd,"depth",curr_file_bpc); + + metadate_pdate(meta_date,pdate,ptime); + zdialog_stuff(zd,"date",pdate); + zdialog_stuff(zd,"time",ptime); + + snprintf(pstars2,40,pstars,meta_rating[0]); + zdialog_stuff(zd,"rating",pstars2); - zdialog_stuff(zd,"date",meta_date); // stuff dialog data - sprintf(starsN,"stars%c",meta_rating[0]); - zdialog_stuff(zd,starsN,1); - zdialog_stuff(zd,"filetags",tags_currtags); + repl_1str(meta_caption,cctext,"\\n","\n"); + zdialog_stuff(zd,"caption",cctext); + repl_1str(meta_comments,cctext,"\\n","\n"); + zdialog_stuff(zd,"comments",cctext); + + zdialog_stuff(zd,"imagetags",tags_imagetags); zdialog_stuff(zd,"recentags",tags_recentags); return; @@ -244,7 +260,7 @@ // mouse click functions for various text widgets for tags -void edit_filetags_clickfunc(GtkWidget *widget, int line, int pos) // existing image tag was clicked +void edit_imagetags_clickfunc(GtkWidget *widget, int line, int pos) // existing image tag was clicked { char *txline, *txtag, end = 0; cchar *delims = tagdelims":"; @@ -255,8 +271,8 @@ txtag = textwidget_get_word(txline,pos,delims,end); if (! txtag) { zfree(txline); return; } - del_tag(txtag,tags_currtags); // remove tag from image - zdialog_stuff(zdeditmeta,"filetags",tags_currtags); + del_tag(txtag,tags_imagetags); // remove tag from image + zdialog_stuff(zdeditmeta,"imagetags",tags_imagetags); zfree(txline); zfree(txtag); @@ -275,8 +291,8 @@ txtag = textwidget_get_word(txline,pos,delims,end); if (! txtag) { zfree(txline); return; } - add_tag(txtag,tags_currtags,tagFcc); // add recent tag to image - zdialog_stuff(zdeditmeta,"filetags",tags_currtags); + add_tag(txtag,tags_imagetags,tagFcc); // add recent tag to image + zdialog_stuff(zdeditmeta,"imagetags",tags_imagetags); zfree(txline); zfree(txtag); @@ -295,8 +311,8 @@ txtag = textwidget_get_word(txline,pos,delims,end); if (! txtag || end == ':') { zfree(txline); return; } // tag category clicked, ignore - add_tag(txtag,tags_currtags,tagFcc); // add new tag to image - zdialog_stuff(zdeditmeta,"filetags",tags_currtags); // from defined tags list + add_tag(txtag,tags_imagetags,tagFcc); // add new tag to image + zdialog_stuff(zdeditmeta,"imagetags",tags_imagetags); // from defined tags list add_recentag(txtag); // and add to recent tags zdialog_stuff(zdeditmeta,"recentags",tags_recentags); @@ -309,52 +325,205 @@ // dialog event and completion callback function -int editmeta_dialog_event(zdialog *zd, cchar *event) +int editmeta_dialog_event(zdialog *zd, cchar *event) // overhauled v.13.09 { - if (zd->zstat) - { - if (zd->zstat == 1) { // manage tags - zd->zstat = 0; // keep dialog active - zdialog_show(zd,0); // hide parent dialog - manage_tags(); - zdialog_show(zd,1); - return 0; - } - - if (zd->zstat == 2) { // [apply] - zd->zstat = 0; // keep dialog active - save_filemeta(curr_file); // save tag changes - return 0; - } - - zdialog_free(zdeditmeta); // cancel - kill dialog - zdeditmeta = 0; - return 0; - } + char pdate[12], ptime[12]; // yyyy-mm-dd and hh:mm:ss + char *metadate, *metatime; // yyyymmdd and hhmmss + char rating, *pp; + int nn = -1; - if (strEqu(event,"date")) { // image date revised - zdialog_fetch(zd,"date",meta_date,15); + if (strstr("date time caption comments",event)) // note change but process later Fmetachanged++; - } - + if (strEqu(event,"prdate")) { // repeat last date used if (*meta_prdate) { - zdialog_stuff(zd,"date",meta_prdate); - strcpy(meta_date,meta_prdate); + metadate_pdate(meta_prdate,pdate,ptime); + zdialog_stuff(zd,"date",pdate); + zdialog_stuff(zd,"time",ptime); Fmetachanged++; + return 1; } } if (strnEqu(event,"stars",5)) { // event = stars0 to stars5 - meta_rating[0] = event[5]; // "0" to "5" - meta_rating[1] = 0; + rating = event[5]; // '0' to '5' + snprintf(pstars2,40,pstars,rating); + zdialog_stuff(zd,"rating",pstars2); Fmetachanged++; + return 1; + } + + if (! zd->zstat) return 1; // wait for completion + + if (zd->zstat == 1) { // geotags + zd->zstat = 0; // keep dialog active + nn = Fmetachanged; + m_edit_geotags(0,0); // (may reset Fmetachanged) + Fmetachanged = nn; + return 1; + } + + if (zd->zstat == 2) { // manage tags + zd->zstat = 0; // keep dialog active + zdialog_show(zd,0); // hide parent dialog + manage_tags(); + zdialog_show(zd,1); + return 1; + } + + if (zd->zstat != 3) { // (not apply) + zdialog_free(zdeditmeta); // cancel - kill dialog + zdeditmeta = 0; + return 1; } + zd->zstat = 0; // apply - keep dialog active + + if (! Fmetachanged) return 1; // nothing changed + + zdialog_fetch(zd,"date",pdate,12); // get image date and time + zdialog_fetch(zd,"time",ptime,12); + if (*pdate) { // date available + metadate = pdate_metadate(pdate); // validate + if (! metadate) return 1; // bad, re-input + strcpy(meta_date,metadate); // convert to yyyymmdd + if (*ptime) { // time available + metatime = ptime_metatime(ptime); // validate + if (! metatime) return 1; // bad, re-input + strcat(meta_date,metatime); // append hhmmss + } + } + else *meta_date = 0; // leave empty + + zdialog_fetch(zd,"rating",pstars2,40); // get new rating + pp = strchr(pstars2,':'); + if (pp) nn = atoi(pp+1); + if (nn < 0 || nn > 5) nn = 0; + meta_rating[0] = '0' + nn; + meta_rating[1] = 0; + + zdialog_fetch(zd,"caption",cctext,exif_maxcc); // get new caption + repl_1str(cctext,meta_caption,"\n","\\n"); // replace newlines with "\n" + zdialog_fetch(zd,"comments",cctext,exif_maxcc); // get new comments + repl_1str(cctext,meta_comments,"\n","\\n"); // replace newlines with "\n" + + save_filemeta(curr_file); // save tag changes + return 1; +} + + +// Convert pretty date/time format from "yyyy-mm-dd" and "hh:mm:ss" to "yyyymmdd" and "hhmmss". +// Missing month or day ("yyyy" or "yyyy-mm") is replaced with "-01". +// Missing seconds ("hh:mm") is replaced with ":00". +// Output user message and return null if not valid. + +char * pdate_metadate(cchar *pdate) // "yyyy-mm-dd" >> "yyyymmdd" v.13.09 +{ + int monlim[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; + int cc, year, mon, day; + char pdate2[12]; + static char mdate[12]; + + cc = strlen(pdate); + if (cc > 10) goto badformat; + + strcpy(pdate2,pdate); + + if (cc == 4) // conv. "yyyy" to "yyyy-01-01" + strcat(pdate2,"-01-01"); + else if (cc == 7) // conv. "yyyy-mm" to "yyyy-mm-01" + strcat(pdate2,"-01"); + + if (strlen(pdate2) != 10) goto badformat; + if (pdate2[4] != '-' || pdate2[7] != '-') goto badformat; + + year = atoi(pdate2); + mon = atoi(pdate2+5); + day = atoi(pdate2+8); + + if (year < 0 || year > 2999) goto baddate; + if (mon < 1 || mon > 12) goto baddate; + if (day < 1 || day > monlim[mon-1]) goto baddate; + if (mon == 2 && day == 29 && (year % 4)) goto baddate; + + memcpy(mdate,pdate2,4); // return "yyyymmdd" + memcpy(mdate+4,pdate2+5,2); + memcpy(mdate+6,pdate2+8,3); + return mdate; + +badformat: + zmessageACK(mWin,0,ZTX("date format is YYYY-MM-DD")); + return 0; + +baddate: + zmessageACK(mWin,0,ZTX("date is invalid")); + return 0; +} + +char * ptime_metatime(cchar *ptime) // "hh:mm:ss" >> "hhmmss" v.13.09 +{ + int cc, hour, min, sec; + char ptime2[12]; + static char mtime[8]; + + cc = strlen(ptime); + if (cc > 8) goto badformat; + + strcpy(ptime2,ptime); + + if (cc == 5) strcat(ptime2,":00"); // conv. "hh:mm" to "hh:mm:00" + + if (strlen(ptime2) != 8) goto badformat; + if (ptime2[2] != ':' || ptime2[5] != ':') goto badformat; + + hour = atoi(ptime2); + min = atoi(ptime2+3); + sec = atoi(ptime2+6); + if (hour < 0 || hour > 23) goto badtime; + if (min < 0 || min > 59) goto badtime; + if (sec < 0 || sec > 59) goto badtime; + + memcpy(mtime,ptime2,2); // return "hhmmss" + memcpy(mtime+2,ptime2+3,2); + memcpy(mtime+4,ptime2+6,2); + return mtime; + +badformat: + zmessageACK(mWin,0,ZTX("time format is HH:MM [:SS]")); + return 0; + +badtime: + zmessageACK(mWin,0,ZTX("time is invalid")); return 0; } +// Convert metadata date/time "yyyymmddhhmmss" to pretty format "yyyy-mm-dd" and "hh:mm:ss" + +void metadate_pdate(cchar *metadate, char *pdate, char *ptime) // v.13.09 +{ + if (*metadate) { + memcpy(pdate,metadate,4); // yyyymmdd to yyyy-mm-dd + memcpy(pdate+5,metadate+4,2); + memcpy(pdate+8,metadate+6,2); + pdate[4] = pdate[7] = '-'; + pdate[10] = 0; + + memcpy(ptime,metadate+8,2); // hhmmss to hh:mm:ss + memcpy(ptime+3,metadate+10,2); + ptime[2] = ':'; + ptime[5] = 0; + if (metadate[12] > '0' || metadate[13] > '0') { // append :ss only if not :00 + memcpy(ptime+6,metadate+12,2); + ptime[5] = ':'; + ptime[8] = 0; + } + } + else *pdate = *ptime = 0; // missing + return; +} + + /**************************************************************************/ // manage tags function - auxilliary dialog @@ -384,7 +553,7 @@ zdialog_add_widget(zd,"button","delete","hb7",ZTX("delete")); zdialog_add_widget(zd,"hbox","hb8","dialog"); - zdialog_add_widget(zd,"label","labdeftags","hb8",ZTX("defined tags"),"space=5"); + zdialog_add_widget(zd,"label","labdeftags","hb8",ZTX("Defined Tags"),"space=5"); zdialog_add_widget(zd,"hbox","hb9","dialog",0,"expand"); zdialog_add_widget(zd,"frame","frame8","hb9",0,"space=5|expand"); zdialog_add_widget(zd,"scrwin","scrwin8","frame8",0,"expand"); @@ -517,7 +686,7 @@ strcpy(taglist + cc2,tag); strcpy(taglist + cc2 + cc1, tagdelimB); // add delimiter + space - if (taglist == tags_currtags) // image tags were changed + if (taglist == tags_imagetags) // image tags were changed Fmetachanged++; return 0; } @@ -542,7 +711,7 @@ pp = strField(temptags,tagdelims,ii); // next tag if (! pp) { zfree(temptags); - if (found && taglist == tags_currtags) // image tags were changed + if (found && taglist == tags_imagetags) // image tags were changed Fmetachanged++; return 1-found; } @@ -1108,7 +1277,7 @@ /**************************************************************************/ // image file EXIF/IPTC data >> memory data: -// meta_date, meta_rating, tags_currtags, meta_comments, meta_caption, +// meta_date, meta_rating, tags_imagetags, meta_comments, meta_caption, // meta_city, meta_country, meta_latitude, meta_longitude void load_filemeta(cchar *file) @@ -1125,7 +1294,7 @@ char *imagecomms, *imagecapt; char *imagecity, *imagecountry, *imagelatitude, *imagelongitude; - *tags_currtags = *meta_date = *meta_comments = *meta_caption = 0; + *tags_imagetags = *meta_date = *meta_comments = *meta_caption = 0; strcpy(meta_rating,"0"); *meta_city = *meta_country = *meta_latitude = *meta_longitude = 0; @@ -1159,7 +1328,7 @@ for (jj = 0; jj < cc; jj++) if (pp[jj] > 0 && pp[jj] < ' ') break; // reject tags with control characters if (jj < cc) continue; - add_tag(pp,tags_currtags,tagFcc); // add to file tags if unique + add_tag(pp,tags_imagetags,tagFcc); // add to file tags if unique } zfree(imagekeywords); @@ -1238,7 +1407,7 @@ } exifdata[0] = imagedate; // update file EXIF/IPTC data - exifdata[1] = tags_currtags; + exifdata[1] = tags_imagetags; exifdata[2] = meta_rating; exifdata[3] = meta_size; // v.13.01 exifdata[4] = meta_comments; @@ -1297,8 +1466,8 @@ strncpy0(sxrec.size,meta_size,15); // v.13.01 - if (*tags_currtags) // tags - sxrec.tags = tags_currtags; + if (*tags_imagetags) // tags + sxrec.tags = tags_imagetags; if (*meta_caption) // user caption sxrec.capt = meta_caption; @@ -1385,7 +1554,7 @@ zdialog_add_widget(zd,"hbox","hbfiles","dialog",0,"space=3"); zdialog_add_widget(zd,"button","files","hbfiles",Bselectfiles,"space=5"); - zdialog_add_widget(zd,"label","labcount","hbfiles","0 files selected","space=10"); + zdialog_add_widget(zd,"label","labcount","hbfiles",ZTX("0 files selected"),"space=10"); zdialog_add_widget(zd,"hbox","hbtags","dialog",0,"space=3"); zdialog_add_widget(zd,"vbox","vb1","hbtags",0,"space=3|homog"); @@ -1401,7 +1570,7 @@ zdialog_add_widget(zd,"hbox","hbspace","dialog",0,"space=3"); zdialog_add_widget(zd,"hbox","hbdef1","dialog"); - zdialog_add_widget(zd,"label","labdef1","hbdef1",ZTX("defined tags"),"space=10"); + zdialog_add_widget(zd,"label","labdef1","hbdef1",ZTX("Defined Tags"),"space=10"); zdialog_add_widget(zd,"hbox","hbdef2","dialog",0,"expand"); zdialog_add_widget(zd,"frame","frdef2","hbdef2",0,"space=5|expand"); zdialog_add_widget(zd,"scrwin","scrdef2","frdef2",0,"expand"); @@ -1462,7 +1631,7 @@ ptag = (char *) strField(deltags,tagdelims,jj); if (! ptag) break; if (*ptag == ' ') continue; - err = del_tag(ptag,tags_currtags); + err = del_tag(ptag,tags_imagetags); if (err) continue; } @@ -1471,7 +1640,7 @@ ptag = (char *) strField(addtags,tagdelims,jj); if (! ptag) break; if (*ptag == ' ') continue; - err = add_tag(ptag,tags_currtags,tagFcc); + err = add_tag(ptag,tags_imagetags,tagFcc); if (err == 2) { zmessageACK(mWin,0,ZTX("%s \n too many tags"),file); break; @@ -1729,9 +1898,9 @@ zdialog_add_widget(zdexifedit,"vbox","hb1","dialog"); zdialog_add_widget(zdexifedit,"hbox","hbkey","dialog",0,"space=5"); zdialog_add_widget(zdexifedit,"hbox","hbdata","dialog",0,"space=5"); - zdialog_add_widget(zdexifedit,"label","labkey","hbkey","key name"); + zdialog_add_widget(zdexifedit,"label","labkey","hbkey",ZTX("key name")); zdialog_add_widget(zdexifedit,"entry","keyname","hbkey",0,"scc=20"); - zdialog_add_widget(zdexifedit,"label","labdata","hbdata","key value"); + zdialog_add_widget(zdexifedit,"label","labdata","hbdata",ZTX("key value")); zdialog_add_widget(zdexifedit,"entry","keydata","hbdata",0,"expand"); zdialog_run(zdexifedit,meta_edit_any_dialog_event); } @@ -2009,7 +2178,7 @@ char *filename, *gtags, *pp; float flati, flongi; int ftf, cc, ii, jj; - int err, found, keep, Ngeolocs2; + int err, found, keep, Ngeolocs2, Ngeotags; int mx, my, px, py; uint8 *pixel; FILE *fid; @@ -2019,23 +2188,34 @@ if (! mwpW.fpxb) // world map image { - snprintf(mapfile,200,"%s/world-map-mercator.jpg",geotags_dirk); // load world map image + Fblankwindow = 1; + gtk_window_set_title(MWIN,ZTX("Location from World Map")); // window title + mwpaintnow(); + poptext_window(ZTX("Loading world map"),MWIN,400,5,0,-1); // popup status message v.13.09 + zmainloop(); + snprintf(mapfile,200,"%s/world-map-mercator.jpg",geotags_dirk); // load the huge world map image mwpW.fpxb = PXB_load(mapfile,0); - if (! mwpW.fpxb || mwpW.fpxb->ww != 13500) { // v.13.03 + Fblankwindow = 0; + poptext_window(0,0,0,0,0,0); + if (! mwpW.fpxb || mwpW.fpxb->ww != 13500) { // check validity zmessageACK(mWin,0,ZTX("please download geolocations data")); mwpW.fpxb = 0; return 0; } - gtk_widget_show_all(mWin); // show all widgets } if (Ngeolocs) return Ngeolocs; // already done + poptext_window(ZTX("Loading geolocations"),MWIN,400,5,0,-1); // popup status message v.13.09 + zmainloop(); + cc = maxgeotags * sizeof(geolocs_t); // get memory for geotag locations DB geolocs = (geolocs_t *) zmalloc(cc,"geolocs"); // populate geolocs[] from search-index file (= image EXIF data) + Ngeotags = 0; + ftf = 1; while (true) { @@ -2079,6 +2259,9 @@ found = 0; } } + + if (strNeq(city,"null") || strNeq(country,"null")) // count images with geotags + Ngeotags++; if (found > 0 && Ngeolocs) { // at least city or country was present ii = Ngeolocs - 1; @@ -2103,8 +2286,12 @@ zfree(sxrec.comms); zfree(sxrec.gtags); - if (Ngeolocs == maxgeotags) goto exceedmax; + if (Ngeolocs < maxgeotags-1) continue; // -1 necessary, see below + zmessageACK(mWin,0,"max. geotags %d exceeded",maxgeotags); + break; } + + printf("image files with geotags: %d locations: %d \n",Ngeotags,Ngeolocs); if (Ngeolocs > 1) // sort by country, city HeapSort((char *) geolocs, sizeof(geolocs_t), Ngeolocs, init_glocs_comp); @@ -2135,9 +2322,10 @@ sprintf(geotagsfile,"%s/cities-geotags",geotags_dirk); // read cities-geotags file fid = fopen(geotagsfile,"r"); if (! fid) { - zmessageACK(mWin,0,ZTX("geotags file must be downloaded")); mwpW.fpxb = 0; // v.13.03 Ngeolocs = 0; + zmessageACK(mWin,0,ZTX("geotags file must be downloaded")); + poptext_window(0,0,0,0,0,0); // kill status message return 0; } @@ -2175,8 +2363,9 @@ geolocs[ii].country = strdupz(pp,0,"geotags"); Ngeolocs++; // count good recs found - if (Ngeolocs == maxgeotags) goto exceedmax; - continue; + if (Ngeolocs < maxgeotags) continue; + zmessageACK(mWin,0,"max. geotags %d exceeded",maxgeotags); + break; badrec: printf("*** bad cities-geotags record: %s \n",buff); @@ -2184,14 +2373,7 @@ } fclose(fid); - ii = Ngeolocs - Ngeolocs2; // total cities - cities in search index - if (ii < 2000) { - zmessLogACK(mWin,"only %d world cities found \n" - "geotags data is not OK",ii); - mwpW.fpxb = 0; // v.13.03 - Ngeolocs = 0; - return 0; - } + printf("total geolocations %d with images: %d \n",Ngeolocs,Ngeolocs2); for (ii = 0; ii < Ngeolocs2; ii++) // paint red dots on world map { // where images are present @@ -2208,11 +2390,8 @@ } } + poptext_window(0,0,0,0,0,0); // kill status message return Ngeolocs; - -exceedmax: - zmessageACK(mWin,0,"max. geotags exceeded"); - return 0; } @@ -2711,7 +2890,7 @@ **/ cchar *title = ZTX("Edit Geotags"); - cchar *mapquest1 = "Geocoding web service courtesy of"; + cchar *mapquest1 = ZTX("Geocoding web service courtesy of"); cchar *mapquest2 = "http://www.mapquest.com"; zdialog *zd; @@ -2723,10 +2902,10 @@ if (! init_geotags()) return; // initialize geotags if (! curr_file) return; - if (! zdaddgeotags) // start dialog if not already + if (! zdeditgeotags) // start dialog if not already { - zdaddgeotags = zdialog_new(title,mWin,Bfind,Bweb,Bprev,Bmap,Bapply,Bclear,Bcancel,null); - zd = zdaddgeotags; + zdeditgeotags = zdialog_new(title,mWin,Bfind,Bweb,Bprev,Bmap,Bapply,Bclear,Bcancel,null); + zd = zdeditgeotags; zdialog_add_widget(zd,"hbox","hb1","dialog",0,"space=3"); zdialog_add_widget(zd,"label","labcity","hb1",ZTX("city"),"space=5"); zdialog_add_widget(zd,"entry","city","hb1",0,"expand"); @@ -2747,7 +2926,7 @@ } load_filemeta(curr_file); // get current image geotags (EXIF) - zd = zdaddgeotags; + zd = zdeditgeotags; if (strEqu(meta_city,"null")) zdialog_stuff(zd,"city",""); // v.13.01 else zdialog_stuff(zd,"city",meta_city); @@ -2878,7 +3057,7 @@ else { // cancel zdialog_free(zd); - zdaddgeotags = 0; + zdeditgeotags = 0; zd_geotags = 0; // deactivate world map clicks settab("F"); } @@ -2934,7 +3113,7 @@ zdialog_add_widget(zd,"hbox","hb1","dialog",0,"space=5"); zdialog_add_widget(zd,"button","files","hb1",Bselectfiles,"space=10"); - zdialog_add_widget(zd,"label","labcount","hb1","0 files selected","space=10"); + zdialog_add_widget(zd,"label","labcount","hb1",ZTX("0 files selected"),"space=10"); zdialog_add_widget(zd,"hbox","hb2","dialog",0,"space=3"); zdialog_add_widget(zd,"label","labcity","hb2",ZTX("city"),"space=5"); zdialog_add_widget(zd,"entry","city","hb2",0,"expand"); @@ -3485,7 +3664,7 @@ Ngrec = iig + 1; // unique groups count - textwin = write_popup_text("open","geotag groups",620,400,mWin); // write groups to popup window + textwin = write_popup_text("open",ZTX("geotag groups"),620,400,mWin); // write groups to popup window if (ggroups_groupby == 1) // group by country { @@ -3922,14 +4101,14 @@ zdialog_add_widget(zd,"hbox","hbO","dialog","space=3"); zdialog_add_widget(zd,"label","labO1","hbO",ZTX("other criteria"),"space=5"); - zdialog_add_widget(zd,"button","geotags","hbO","geotags","space=8"); + zdialog_add_widget(zd,"button","geotags","hbO",Bgeotags,"space=8"); zdialog_add_widget(zd,"label","geotags#","hbO","( )"); zdialog_add_widget(zd,"label","space","hbO",0,"space=5"); zdialog_add_widget(zd,"button","other","hbO",ZTX("other"),"space=8"); zdialog_add_widget(zd,"label","other#","hbO","( )"); zdialog_add_widget(zd,"hbox","hbA1","dialog",0,"space=5"); - zdialog_add_widget(zd,"label","labdeftags","hbA1",ZTX("defined tags"),"space=5"); + zdialog_add_widget(zd,"label","labdeftags","hbA1",ZTX("Defined Tags"),"space=5"); zdialog_add_widget(zd,"hbox","hbA2","dialog",0,"expand"); zdialog_add_widget(zd,"frame","frameA","hbA2",0,"space=5|expand"); zdialog_add_widget(zd,"scrwin","scrwinA","frameA",0,"expand"); diff -Nru fotoxx-13.08/f.repair.cc fotoxx-13.09.1/f.repair.cc --- fotoxx-13.08/f.repair.cc 2013-08-01 20:57:53.000000000 +0000 +++ fotoxx-13.09.1/f.repair.cc 2013-08-31 06:26:38.000000000 +0000 @@ -4,7 +4,7 @@ Copyright 2007 2008 2009 2010 2011 2012 2013 Michael Cornelison Source URL: http://kornelix.com/fotoxx - Contact: kornelix2@gmail.com + Contact: kornelix@gmx.de This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -3842,29 +3842,29 @@ // Find and fix stuck pixels (always bright or dark) from camera sensor defects. -namespace stuckpix +namespace stuckpix_names { editfunc EFstuckpix; int stuckpix_1x1, stuckpix_2x2, stuckpix_3x3; // pixel blocks to search int stuckpix_color; // 1/2/3 = white/black/red circles cchar *stuckpix_mode; // find or fix float stuckpix_threshcon; // min. contrast threshold - char *stuckpix_file = 0; // file for saved bad pixels + char *stuckpix_file = 0; // file for saved stuck pixels - struct badpix_t { // memory for bad pixels + struct stuckpix_t { // memory for stuck pixels int px, py; // location (NW corner of block) int size; // size: 1/2/3 = 1x1/2x2/3x3 block float pcon; // contrast with surrounding pixels int rgb[3]; // surrounding pixel mean RGB }; - badpix_t badpix[50]; - int maxbad = 50, Nbad; + stuckpix_t stuckpix[50]; + int maxstuck = 50, Nstuck; } void m_stuckpix(GtkWidget *, cchar *menu) { - using namespace stuckpix; + using namespace stuckpix_names; int stuckpix_dialog_event(zdialog *zd, cchar *event); void * stuckpix_thread(void *); @@ -3879,12 +3879,16 @@ if (! edit_setup(EFstuckpix)) return; // setup edit /*** - - pixel group [x] 1x1 [x] 2x2 [x] 3x3 - circle color (o) white (o) black (o) red - contrast =========[]==================== - - [open] [save] [apply] [cancel] + ________________________________________________ + | | + | pixel group [x] 1x1 [x] 2x2 [x] 3x3 | + | circle color (o) white (o) black (o) red | + | contrast =========[]================== | + | stuck pixels 12 | + | | + | [open] [save] [apply] [cancel] | + |________________________________________________| + ***/ zd = zdialog_new(ZTX("Fix Stuck Pixels"),mWin,Bopen,Bsave,Bapply,Bcancel,null); @@ -3905,6 +3909,8 @@ zdialog_add_widget(zd,"radio","black","hbcolor",Bblack,"space=5"); zdialog_add_widget(zd,"radio","red","hbcolor",Bred,"space=5"); zdialog_add_widget(zd,"hscale","contrast","vb2","0.1|1.0|0.001|0.5","expand"); + zdialog_add_widget(zd,"hbox","hb2","dialog",0,"space=3"); + zdialog_add_widget(zd,"label","labstuck","hb2",ZTX("stuck pixels:"),"space=5"); zdialog_stuff(zd,"1x1",1); // initz. dialog controls zdialog_stuff(zd,"2x2",1); @@ -3923,10 +3929,10 @@ } zdialog_run(zd,stuckpix_dialog_event,"save"); // run dialog + zd_thread = zd; // setup for thread event v.13.09 stuckpix_mode = "find"; - signal_thread(); // find and show the bad pixels - wait_thread_idle(); + signal_thread(); // find and show the stuck pixels return; } @@ -3936,13 +3942,42 @@ int stuckpix_dialog_event(zdialog *zd, cchar *event) { - using namespace stuckpix; + using namespace stuckpix_names; void stuckpix_open(); void stuckpix_save(); + void stuckpix_show(); int color; + char stuck_pixels[50]; + if (strEqu(event,"focus")) return 0; // v.13.08.1 + + if (strEqu(event,"stuck pixels")) { // update count in dialog v.13.09 + snprintf(stuck_pixels,49,"%s %d",ZTX("stuck pixels:"),Nstuck); + if (Nstuck >= maxstuck) strcat(stuck_pixels,"+"); + zdialog_stuff(zd,"labstuck",stuck_pixels); + } + + if (strstr("white black red",event)) { + zdialog_fetch(zd,"white",color); + if (color) stuckpix_color = 1; + zdialog_fetch(zd,"black",color); + if (color) stuckpix_color = 2; + zdialog_fetch(zd,"red",color); + if (color) stuckpix_color = 3; + stuckpix_show(); + } + + if (strstr("1x1 2x2 3x3 contrast",event)) { + zdialog_fetch(zd,"1x1",stuckpix_1x1); // get dialog inputs + zdialog_fetch(zd,"2x2",stuckpix_2x2); + zdialog_fetch(zd,"3x3",stuckpix_3x3); + zdialog_fetch(zd,"contrast",stuckpix_threshcon); + stuckpix_mode = "find"; + signal_thread(); // find and show stuck pixels + } + if (zd->zstat) // completion button { if (zd->zstat == 1) { // open file @@ -3957,47 +3992,29 @@ else if (zd->zstat == 3) { // apply stuckpix_mode = "apply"; - signal_thread(); // fix the bad pixels - wait_thread_idle(); + signal_thread(); // fix the stuck pixels edit_done(); erase_topcircles(); } else { // cancel + zd_thread = 0; // v.13.09 edit_cancel(); erase_topcircles(); } mwpaint2(); // update main window - return 0; } - zdialog_fetch(zd,"1x1",stuckpix_1x1); // get dialog inputs - zdialog_fetch(zd,"2x2",stuckpix_2x2); - zdialog_fetch(zd,"3x3",stuckpix_3x3); - - zdialog_fetch(zd,"white",color); - if (color) stuckpix_color = 1; - zdialog_fetch(zd,"black",color); - if (color) stuckpix_color = 2; - zdialog_fetch(zd,"red",color); - if (color) stuckpix_color = 3; - - zdialog_fetch(zd,"contrast",stuckpix_threshcon); - - stuckpix_mode = "find"; - signal_thread(); // find and show bad pixels - wait_thread_idle(); - return 0; } -// load bad pixel list from a previously saved file +// load stuck pixel list from a previously saved file void stuckpix_open() { - using namespace stuckpix; + using namespace stuckpix_names; int stuckpix_open_dialog_event(zdialog *zd, cchar *event); @@ -4017,10 +4034,10 @@ return; } - + int stuckpix_open_dialog_event(zdialog *zd, cchar *event) { - using namespace stuckpix; + using namespace stuckpix_names; char *pp, file[200]; FILE *fid = 0; @@ -4051,27 +4068,26 @@ nn = fscanf(fid,"stuck pixels px py size"); // read headers - for (ii = 0; ii < maxbad; ii++) + for (ii = 0; ii < maxstuck; ii++) { - nn = fscanf(fid," %5d %5d %5d ",&px,&py,&size); // read bad pixels data + nn = fscanf(fid," %5d %5d %5d ",&px,&py,&size); // read stuck pixels data if (nn == EOF) break; if (nn != 3) break; - badpix[ii].px = px; - badpix[ii].py = py; - badpix[ii].size = size; - badpix[ii].pcon = 0; + stuckpix[ii].px = px; + stuckpix[ii].py = py; + stuckpix[ii].size = size; + stuckpix[ii].pcon = 0; } - Nbad = ii; + Nstuck = ii; fclose(fid); zdialog_free(zd); - if (! Nbad || nn != EOF) + if (! Nstuck || nn != EOF) zmessageACK(mWin,0,ZTX("file format error")); stuckpix_mode = "file"; // process pixels signal_thread(); - wait_thread_idle(); } else { // cancel or [x] @@ -4084,89 +4100,42 @@ } -// save bad pixel list to a file or add them to a previous file +// save stuck pixel list to a file or add them to a previous file -void stuckpix_save() +void stuckpix_save() // simplified v.13.09 { - using namespace stuckpix; - - int stuckpix_save_dialog_event(zdialog *zd, cchar *event); + using namespace stuckpix_names; - zdialog *zd; - - if (Nbad == 0) { - zmessageACK(mWin,0,ZTX("there are zero stuck pixels")); - return; - } - - zd = zdialog_new(ZTX("Save Stuck Pixels"),mWin,Bsave,Bcancel,null); - zdialog_add_widget(zd,"hbox","hb1","dialog",0,"space=3"); - zdialog_add_widget(zd,"label","lab1","hb1",ZTX("File:"),"space=3"); - zdialog_add_widget(zd,"entry","file","hb1",0,"expand|scc=40"); - zdialog_add_widget(zd,"button","browse","hb1",Bbrowse,"space=5"); - - zdialog_stuff(zd,"file",stuckpix_file); - - zdialog_run(zd,stuckpix_save_dialog_event); - zdialog_wait(zd); - - return; -} - - -int stuckpix_save_dialog_event(zdialog *zd, cchar *event) -{ - using namespace stuckpix; - - char *pp, file[200]; + char *file; FILE *fid = 0; - int zstat, ii, px, py, size; + int ii, px, py, size; - if (strEqu(event,"browse")) { - pp = zgetfile1(ZTX("Stuck Pixels file"),"save",stuckpix_file); - if (! pp) return 0; - zdialog_stuff(zd,"file",pp); - zfree(pp); + file = zgetfile1(ZTX("Stuck Pixels file"),"save",stuckpix_file); + if (! file) return; + + if (stuckpix_file) zfree(stuckpix_file); + stuckpix_file = strdupz(file,0,"stuck_pixels"); + zfree(file); + + fid = fopen(file,"w"); // open file + if (! fid) { + zmessageACK(mWin,0,strerror(errno)); + return; } - zstat = zd->zstat; // completion button + fprintf(fid,"stuck pixels \n"); // write headers + fprintf(fid," px py size \n"); - if (zstat) + for (ii = 0; ii < Nstuck; ii++) // write stuck pixel data { - if (zstat == 1) // save - { - zdialog_fetch(zd,"file",file,200); // get file from dialog - if (stuckpix_file) zfree(stuckpix_file); - stuckpix_file = strdupz(file,0,"stuck_pixels"); - - fid = fopen(file,"w"); // open file - if (! fid) { - zmessageACK(mWin,0,strerror(errno)); - return 1; - } - - fprintf(fid,"stuck pixels \n"); // write headers - fprintf(fid," px py size \n"); - - for (ii = 0; ii < Nbad; ii++) // write bad pixel data - { - px = badpix[ii].px; - py = badpix[ii].py; - size = badpix[ii].size; - fprintf(fid," %5d %5d %5d \n",px,py,size); - } - - fclose(fid); - zdialog_free(zd); - } - - else { // cancel or [x] - zdialog_free(zd); - return 1; - } + px = stuckpix[ii].px; + py = stuckpix[ii].py; + size = stuckpix[ii].size; + fprintf(fid," %5d %5d %5d \n",px,py,size); } - return 1; + fclose(fid); + return; } @@ -4176,7 +4145,7 @@ void * stuckpix_thread(void *) { - using namespace stuckpix; + using namespace stuckpix_names; void stuckpix_pixelblock(int px, int py, int size, float rgb[3]); void stuckpix_surroundings(int px, int py, int size, float rgb[3]); @@ -4192,11 +4161,11 @@ while (true) { thread_idle_loop(); - - if (strEqu(stuckpix_mode,"find")) // find bad pixels in image + + if (strEqu(stuckpix_mode,"find")) // find stuck pixels in image { threshcon = stuckpix_threshcon; // threshold contrast, 0.1 to 1.0 - Nbad = 0; // count bad pixels found + Nstuck = 0; // count stuck pixels found if (stuckpix_3x3) // find 3x3 pixel groups FIRST { @@ -4208,7 +4177,7 @@ pcon = stuckpix_getcon(rgbA,rgbB); // contrast with surrounding if (pcon > threshcon) stuckpix_insert(px,py,3,pcon,rgbB); // if > threshold, add to table - if (Nbad == maxbad) goto findquit; + if (Nstuck == maxstuck) goto findquit; } } @@ -4222,7 +4191,7 @@ pcon = stuckpix_getcon(rgbA,rgbB); // contrast with surrounding if (pcon > threshcon) stuckpix_insert(px,py,2,pcon,rgbB); // if > threshold, add to table - if (Nbad == maxbad) goto findquit; + if (Nstuck == maxstuck) goto findquit; } } @@ -4236,50 +4205,50 @@ pcon = stuckpix_getcon(rgbA,rgbB); // contrast with surrounding if (pcon > threshcon) stuckpix_insert(px,py,1,pcon,rgbB); // if > threshold, add to table - if (Nbad == maxbad) goto findquit; + if (Nstuck == maxstuck) goto findquit; } } findquit: - stuckpix_show(); // show the bad pixels found + stuckpix_show(); // show the stuck pixels found } - if (strEqu(stuckpix_mode,"file")) // process bad pixels read from a file + if (strEqu(stuckpix_mode,"file")) // process stuck pixels read from a file { - for (ii = 0; ii < Nbad; ii++) + for (ii = 0; ii < Nstuck; ii++) { - px = badpix[ii].px; - py = badpix[ii].py; - size = badpix[ii].size; + px = stuckpix[ii].px; + py = stuckpix[ii].py; + size = stuckpix[ii].size; stuckpix_pixelblock(px,py,size,rgbA); stuckpix_surroundings(px,py,size,rgbB); pcon = stuckpix_getcon(rgbA,rgbB); - badpix[ii].pcon = pcon; - badpix[ii].rgb[0] = rgbB[0]; - badpix[ii].rgb[1] = rgbB[1]; - badpix[ii].rgb[2] = rgbB[2]; + stuckpix[ii].pcon = pcon; + stuckpix[ii].rgb[0] = rgbB[0]; + stuckpix[ii].rgb[1] = rgbB[1]; + stuckpix[ii].rgb[2] = rgbB[2]; } - stuckpix_show(); // show the bad pixels read + stuckpix_show(); // show the stuck pixels read } - if (strEqu(stuckpix_mode,"apply")) // replace the bad pixels + if (strEqu(stuckpix_mode,"apply")) // replace the stuck pixels { - for (ii = 0; ii < Nbad; ii++) // loop pixel groups found + for (ii = 0; ii < Nstuck; ii++) // loop pixel groups found { - px = badpix[ii].px; - py = badpix[ii].py; - size = badpix[ii].size; + px = stuckpix[ii].px; + py = stuckpix[ii].py; + size = stuckpix[ii].size; if (! size) continue; if (size == 1) // 1x1 pixel group { ppix = PXMpix(E3pxm,px,py); // replace pixel group - ppix[0] = badpix[ii].rgb[0]; - ppix[1] = badpix[ii].rgb[1]; - ppix[2] = badpix[ii].rgb[2]; + ppix[0] = stuckpix[ii].rgb[0]; + ppix[1] = stuckpix[ii].rgb[1]; + ppix[2] = stuckpix[ii].rgb[2]; } if (size == 2) // 2x2 pixel group @@ -4288,9 +4257,9 @@ for (qx = px; qx < px+2; qx++) { ppix = PXMpix(E3pxm,qx,qy); - ppix[0] = badpix[ii].rgb[0]; - ppix[1] = badpix[ii].rgb[1]; - ppix[2] = badpix[ii].rgb[2]; + ppix[0] = stuckpix[ii].rgb[0]; + ppix[1] = stuckpix[ii].rgb[1]; + ppix[2] = stuckpix[ii].rgb[2]; } } @@ -4300,9 +4269,9 @@ for (qx = px; qx < px+3; qx++) { ppix = PXMpix(E3pxm,qx,qy); - ppix[0] = badpix[ii].rgb[0]; - ppix[1] = badpix[ii].rgb[1]; - ppix[2] = badpix[ii].rgb[2]; + ppix[0] = stuckpix[ii].rgb[0]; + ppix[1] = stuckpix[ii].rgb[1]; + ppix[2] = stuckpix[ii].rgb[2]; } } } @@ -4436,21 +4405,21 @@ } -// draw circles around the bad pixels +// draw circles around the stuck pixels void stuckpix_show() { - using namespace stuckpix; + using namespace stuckpix_names; int ii, px, py, size, rad; erase_topcircles(); // erase prior circles - for (ii = 0; ii < Nbad; ii++) // write circles around bad pixels + for (ii = 0; ii < Nstuck; ii++) // write circles around stuck pixels { - px = badpix[ii].px; - py = badpix[ii].py; - size = badpix[ii].size; + px = stuckpix[ii].px; + py = stuckpix[ii].py; + size = stuckpix[ii].size; if (! size) continue; rad = 8 + 2 * size; px += size / 2; @@ -4458,6 +4427,9 @@ add_topcircle(px,py,rad,stuckpix_color); } + zd_thread = EFstuckpix.zd; // send stuck pixel count to zdialog + zd_thread_event = "stuck pixels"; // v.13.09 + mwpaint2(); // update window return; } @@ -4480,13 +4452,13 @@ } -// Insert a new bad pixel block into the bad pixel table. +// Insert a new stuck pixel block into the stuck pixel table. // If the new entry touches on a previous entry, // then remove the entry with lesser contrast. void stuckpix_insert(int px, int py, int size, float pcon, float rgb[3]) { - using namespace stuckpix; + using namespace stuckpix_names; int ii, px1, py1, px2, py2, px3, py3, px4, py4; @@ -4495,14 +4467,14 @@ px2 = px + size + 1; py2 = py + size + 1; - for (ii = 0; ii < Nbad; ii++) // loop badpix table + for (ii = 0; ii < Nstuck; ii++) // loop stuckpix table { - if (badpix[ii].size == 0) continue; // skip deleted entry + if (stuckpix[ii].size == 0) continue; // skip deleted entry - px3 = badpix[ii].px; - py3 = badpix[ii].py; - px4 = px3 + badpix[ii].size - 1; - py4 = py3 + badpix[ii].size - 1; + px3 = stuckpix[ii].px; + py3 = stuckpix[ii].py; + px4 = px3 + stuckpix[ii].size - 1; + py4 = py3 + stuckpix[ii].size - 1; if ((px1 >= px3 && px1 <= px4 && py1 >= py3 && py1 <= py4) || // test if old entry touches new (px2 >= px3 && px2 <= px4 && py2 >= py3 && py2 <= py4) || @@ -4513,30 +4485,28 @@ (px3 >= px1 && px3 <= px2 && py4 >= py1 && py4 <= py2) || (px4 >= px1 && px4 <= px2 && py3 >= py1 && py3 <= py2)) { - if (size < badpix[ii].size && // if new touches a larger block, - pcon < 2.0 * badpix[ii].pcon) return; // keep only if contrast much greater + if (size < stuckpix[ii].size && // if new touches a larger block, + pcon < 2.0 * stuckpix[ii].pcon) return; // keep only if contrast much greater - if (pcon < 1.0 * badpix[ii].pcon) return; // keep only if contrast is greater + if (pcon < 1.0 * stuckpix[ii].pcon) return; // keep only if contrast is greater - badpix[ii].size = 0; // delete old entry + stuckpix[ii].size = 0; // delete old entry } } - for (ii = 0; ii < Nbad; ii++) // loop badpix table - if (badpix[ii].size == 0) break; // find first empty slot or last + 1 - if (ii == maxbad) return; // table full + for (ii = 0; ii < Nstuck; ii++) // loop stuckpix table + if (stuckpix[ii].size == 0) break; // find first empty slot or last + 1 + if (ii == maxstuck) return; // table full - badpix[ii].px = px; // replace overlapping entry - badpix[ii].py = py; // or add to end of table - badpix[ii].size = size; - badpix[ii].pcon = pcon; - badpix[ii].rgb[0] = rgb[0]; - badpix[ii].rgb[1] = rgb[1]; - badpix[ii].rgb[2] = rgb[2]; - - if (ii == Nbad) Nbad++; // incr. count if added to end - if (Nbad == maxbad) printf("*** exceed %d bad pixels \n",maxbad); // report one time only + stuckpix[ii].px = px; // replace overlapping entry + stuckpix[ii].py = py; // or add to end of table + stuckpix[ii].size = size; + stuckpix[ii].pcon = pcon; + stuckpix[ii].rgb[0] = rgb[0]; + stuckpix[ii].rgb[1] = rgb[1]; + stuckpix[ii].rgb[2] = rgb[2]; + if (ii == Nstuck) Nstuck++; // incr. count if added to end return; } diff -Nru fotoxx-13.08/f.retouch.cc fotoxx-13.09.1/f.retouch.cc --- fotoxx-13.08/f.retouch.cc 2013-08-01 20:57:53.000000000 +0000 +++ fotoxx-13.09.1/f.retouch.cc 2013-08-31 06:26:38.000000000 +0000 @@ -4,7 +4,7 @@ Copyright 2007 2008 2009 2010 2011 2012 2013 Michael Cornelison Source URL: http://kornelix.com/fotoxx - Contact: kornelix2@gmail.com + Contact: kornelix@gmx.de This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -187,7 +187,7 @@ /**************************************************************************/ -// brightness / color / contrast adjustment +// brightness / contrast / color adjustment void brcc_curve_update(int spc); // curve update callback function void brcc_update_image(); // process all pixels @@ -208,7 +208,7 @@ { int brcc_dialog_event(zdialog *zd, cchar *event); - cchar *title = ZTX("Adjust Brightness and Color"); + cchar *title = ZTX("Brightness/Contrast/Color"); F1_help_topic = "bright_color"; EFbrcc.funcname = "bright-color"; @@ -225,7 +225,7 @@ } /*** - Adjust Brightness and Color + Brightness/Contrast/Color ____________________________________________ | | | | @@ -1176,11 +1176,11 @@ sd->vert[0] = 0; sd->nap[0] = 3; // initial curve anchor points sd->apx[0][0] = 0.01; - sd->apy[0][0] = 0.2; + sd->apy[0][0] = 0.4; sd->apx[0][1] = 0.50; sd->apy[0][1] = 0.4; sd->apx[0][2] = 0.99; - sd->apy[0][2] = 0.0; + sd->apy[0][2] = 0.2; splcurve_generate(sd,0); // generate curve data @@ -1804,13 +1804,12 @@ zdialog_add_widget(zd,"hscale","clipB","vb2","0|99.5|0.5|0"); zdialog_add_widget(zd,"label","darkval","vb3"); zdialog_add_widget(zd,"label","briteval","vb3"); - zdialog_add_widget(zd,"hbox","hb3","dialog",0,"space=3"); - zdialog_add_widget(zd,"label","space","hb3",0,"expand"); - zdialog_add_widget(zd,"button","histo","hb3",Bhistogram,"space=10"); zdialog_resize(zd,300,0); zdialog_run(zd,xbrange_dialog_event,"save"); // run dialog - parallel + m_histogram(0,0); // popup brightness histogram v.13.09 + xbrangeD = xbrangeB = 0; // initial clip = 0 return; } @@ -1855,8 +1854,6 @@ sprintf(text,"%.0f",xbrangeB); zdialog_stuff(zd,"briteval",text); - if (strEqu(event,"histo")) m_histogram(0,0); // popup brightness histogram v.13.07 - return 0; } diff -Nru fotoxx-13.08/f.tools.cc fotoxx-13.09.1/f.tools.cc --- fotoxx-13.08/f.tools.cc 2013-08-01 20:57:53.000000000 +0000 +++ fotoxx-13.09.1/f.tools.cc 2013-08-31 06:26:38.000000000 +0000 @@ -4,7 +4,7 @@ Copyright 2007 2008 2009 2010 2011 2012 2013 Michael Cornelison Source URL: http://kornelix.com/fotoxx - Contact: kornelix2@gmail.com + Contact: kornelix@gmx.de This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -79,7 +79,7 @@ cchar *syncreason; int ii, cc, contx, ftyp; int newfiles, dosync, yn, err; - int sync_count, sync_errors; + int dir_count, sync_count, sync_errors; char *pp, *filespec, *imagefile, *thumbfile; char tpdirk[200], tndirk[200]; char findcomm[500], search_index_file1[200]; @@ -253,7 +253,7 @@ } zdialog_resize(zd,500,zdhh); - zdialog_run(zd,syncfiles_dialog_event); + zdialog_run(zd,syncfiles_dialog_event,"parent"); zstat = zdialog_wait(zd); if (zstat != 2) { // dialog canceled @@ -485,7 +485,7 @@ wprintf(poplog,"\n%s",ZTX("create missing and update stale thumbnails")); - sync_count = sync_errors = 0; + dir_count = sync_count = sync_errors = 0; navi::genthumbs = 0; for (ii = 0; ii < Ntopdirk; ii++) // multiple top directories @@ -506,7 +506,9 @@ pp = strrchr(filespec,'/'); // log each new directory if (! pp) continue; // should not happen *pp = 0; - if (strNeq(filespec,filedirk)) { + if (strNeq(filespec,filedirk)) { // start new directory + if (dir_count) wprintf(poplog," %d",dir_count); // prior dirname ..... NNN v.13.09 + dir_count = 0; strcpy(filedirk,filespec); wprintf(poplog,"\n %s ",filedirk); } @@ -514,6 +516,7 @@ ftyp = image_file_type(filespec); // file type if (ftyp == 2 || ftyp == 3) { // skip non-image files + dir_count++; sync_count++; thumbfile = image_thumbfile(filespec); // check thumbnail and create if needed if (thumbfile) zfree(thumbfile); // OK @@ -528,13 +531,16 @@ } zfree(filespec); zmainloop(10); - if (sync_count % dotstep == 0) wprintf(poplog,"."); // show progress v.13.03 + if (sync_count % dotstep == 0) wprintf(poplog,"."); // show progress .... v.13.03 if (Fkillfunc) { command_kill(contx); goto file_sync_exit; } } + + if (dir_count) wprintf(poplog," %d",dir_count); // last dirname ..... NNN v.13.09 + dir_count = 0; } wprintf(poplog,"\n"); @@ -723,12 +729,14 @@ } sync_count = 0; + dir_count = 0; *filedirk = 0; for (nrec = 0; nrec < Nnew; nrec++) { if (! Fupdate[nrec]) continue; // no update needed sync_count++; // running count of updates + dir_count++; filespec = sxrec_new[nrec].file; // a new file @@ -737,6 +745,8 @@ pp = strrchr(filespec,'/'); // log each new directory *pp = 0; if (strNeq(filespec,filedirk)) { + if (dir_count) wprintf(poplog," %d",dir_count); // prior dirname ..... NNN v.13.09 + dir_count = 0; strcpy(filedirk,filespec); wprintf(poplog,"\n %s ",filedirk); } @@ -822,7 +832,10 @@ if (sync_count % dotstep == 0) wprintf(poplog,"."); // show progress v.13.03 if (Fkillfunc) goto file_sync_exit; } - + + if (dir_count) wprintf(poplog," %d",dir_count); // last dirname ..... NNN v.13.09 + dir_count = 0; + if (sync_count == 0) { // no new files found fclose(fidw); remove(tempfile); @@ -1115,7 +1128,7 @@ zdialog_add_widget(zd,"spin","quality","hbsave","1|99|1|90"); zdialog_add_widget(zd,"hbox","hbzoom","dialog",0,"space=2"); - zdialog_add_widget(zd,"label","labzoom","hbzoom","Zooms for 200%","space=5"); + zdialog_add_widget(zd,"label","labzoom","hbzoom",ZTX("Zooms for 200%"),"space=5"); zdialog_add_widget(zd,"spin","zoom","hbzoom","1|4|1|2"); zdialog_add_widget(zd,"hbox","hbintp","dialog",0,"space=2"); @@ -1126,10 +1139,10 @@ zdialog_add_widget(zd,"radio","hyperbolic","hbintp","hyperbolic","space=5"); zdialog_add_widget(zd,"hbox","hbraw","dialog",0,"space=2"); - zdialog_add_widget(zd,"label","rawlab1","hbraw","RAW command","space=3"); + zdialog_add_widget(zd,"label","rawlab1","hbraw",ZTX("RAW command"),"space=3"); zdialog_add_widget(zd,"entry","rawcomm","hbraw","dcraw -w -q 0 -T -6","space=3|expand"); zdialog_add_widget(zd,"hbox","hbraw2","dialog"); - zdialog_add_widget(zd,"label","rawlab2","hbraw2","RAW file types","space=3"); + zdialog_add_widget(zd,"label","rawlab2","hbraw2",ZTX("RAW file types"),"space=3"); zdialog_add_widget(zd,"entry","rawtypes","hbraw2",".raw .rw2","space=3|expand"); zdialog_stuff(zd,"stdirk",startdirk); // stuff present settings into dialog @@ -1749,19 +1762,17 @@ int Nreserved = 8; // reserved shortcuts (hard coded) cchar *reserved[8] = { "F", "G", "W", "F1", "+", "=", "-", "Z" }; - int Neligible = 32; - cchar *eligible[32]; // allowed shortcuts v.13.04 - cchar *eligible_en[32] = { + int Neligible = 29; + cchar *eligible[29]; // allowed shortcuts v.13.04 + cchar *eligible_en[29] = { "Open Image File", "Open Previous File", "Rename Image File", - "Save to Same File", "Save to New File", "Save to New Version", - "Trash Image File", "Quit Fotoxx", + "Save to Disk","Trash Image File", "Quit Fotoxx", "Show RGB", "Grid Lines", "Brightness Distribution", - "Edit Caption/Comments", "Edit Metadata", "View Metadata (short)", - "Edit Geotags", "Select", "Rotate Image", - "Trim Image", "Resize Image", "Write Text", - "Voodoo Enhance", "Brightness/Color", "Gamma Curves", "Tone Mapping", - "Flatten Brightness", "Expand Brightness", "White Balance", - "Red Eyes", "Sharpen Image", + "Edit Metadata", "View Metadata (short)", "Edit Geotags", + "Select", "Rotate", "Trim/Crop", "Resize", "Add Text", + "Voodoo Enhance", "Brightness/Contrast/Color", "Gamma Curves", + "Tone Mapping", "Flatten Brightness", "Expand Brightness", + "White Balance", "Red Eyes", "Sharpen", "Undo", "Redo", "Keyboard Shortcuts" }; } @@ -2138,7 +2149,7 @@ void collection_selectfiles(); // select files, add to image cache void collection_addtocache(char *imagefile); // add image file to end of cache -void collection_cutfile(int posn, int addcache); // remove from collection, opt. add to image cache +void collection_cutfile(int posn, int addcache); // remove from collection, add to image cache void collection_copyfile(int posn); // add to image cache void collection_pastecache(int posn, int clear); // paste image cache into current collection void collection_clearcache(); // clear the image cache @@ -2358,13 +2369,14 @@ } -void collection_cutfile(int posn, int addcache) // remove from collection, opt. add to cache +void collection_cutfile(int posn, int addcache) // remove from collection, add to cache { using namespace collections; - int ii; - char *pp, cachebuff[maxfcc]; - FILE *fidr, *fidw; + int ii, err; + char *pp, cachebuff[maxfcc]; + FILE *fidr, *fidw; + struct stat statb; fidw = fopen(collections_copy,"w"); // open/write copy file if (! fidw) { @@ -2383,6 +2395,13 @@ { pp = fgets_trim(cachebuff,maxfcc,fidr); // collection member file if (! pp) break; + + err = stat(pp,&statb); // bugfix v.13.05 + if (err) { + printf("remove deleted file from collection: \n %s \n",pp); + ii--; + continue; + } if (ii == posn) { // position to remove if (addcache) collection_addtocache(pp); // add to image cache if wanted @@ -2412,7 +2431,7 @@ } -void collection_pastecache(int posn, int clear) // insert cached files into current collection +void collection_pastecache(int posn, int clear) // insert cached files into collection { // at designated position using namespace collections; @@ -2515,8 +2534,8 @@ } -void coll_popup_cutfile(GtkWidget *, cchar *menu) // remove image from collection, add to cached -{ +void coll_popup_cutfile(GtkWidget *, cchar *menu) // remove image from collection +{ // add to cache using namespace collections; if (! clicked_file) return; @@ -2570,7 +2589,7 @@ current_collection = strdupz(navi::galleryname,0,"collections"); posn = clicked_posn; - if (clicked_width > 50) ++posn; // thumbnail right side clicked, bump position + if (clicked_width > 50) ++posn; // thumbnail right side clicked, bump posn if (strEqu(menu,"clear")) clear = 1; // set clear cache option else clear = 0; @@ -3211,7 +3230,7 @@ f_open(ss_newfile,0,0,0,0); // set all image data - if (zdeditcctext) m_edit_cctext(0,0); // update caption/comments dialog + if (zdeditmeta) m_edit_metadata(0,0); // update metadata dialog if active v.13.09 secs = get_seconds(); // set time for next image ss_timer = secs + ss_interval; @@ -3369,10 +3388,10 @@ pixels = gdk_pixbuf_get_pixels(ss_pxbnew); - for (px = 0; px < ss_ww; px++) + for (px = 0; px < ss_ww-4; px += 4) // 4-wide v.13.09 { pix3 = pixels + px * 3; - pixbuf = gdk_pixbuf_new_from_data(pix3,GDKRGB,0,8,1,ss_hh,ss_rsnew,0,0); + pixbuf = gdk_pixbuf_new_from_data(pix3,GDKRGB,0,8,4,ss_hh,ss_rsnew,0,0); gdk_cairo_set_source_pixbuf(ss_cr,pixbuf,px,0); cairo_paint(ss_cr); g_object_unref(pixbuf); @@ -3395,10 +3414,10 @@ pixels = gdk_pixbuf_get_pixels(ss_pxbnew); - for (py = 0; py < ss_hh; py++) + for (py = 0; py < ss_hh-2; py += 4) // 4-deep v.13.09 { pix3 = pixels + py * ss_rsnew; - pixbuf = gdk_pixbuf_new_from_data(pix3,GDKRGB,0,8,ss_ww,1,ss_rsnew,0,0); + pixbuf = gdk_pixbuf_new_from_data(pix3,GDKRGB,0,8,ss_ww,4,ss_rsnew,0,0); gdk_cairo_set_source_pixbuf(ss_cr,pixbuf,0,py); cairo_paint(ss_cr); g_object_unref(pixbuf); @@ -3779,8 +3798,8 @@ gdk_cairo_set_source_pixbuf(ss_cr,pxbmix,0,0); // paint black window cairo_paint(ss_cr); - Rmin = ss_ww * 0.01; // drop size range - Rmax = ss_ww * 0.03; + Rmin = ss_ww * 0.02; // drop size range + Rmax = ss_ww * 0.04; Ndrops = 1000; for (int ii = 0; ii < Ndrops; ii++) @@ -3814,8 +3833,8 @@ gdk_cairo_set_source_pixbuf(ss_cr,pxbdrop,px1,py1); cairo_paint(ss_cr); g_object_unref(pxbdrop); - dtime = 0.02 * (1.0 - pow(1.0*ii/Ndrops,0.1)); - if (dtime > 0.001) zsleep(dtime); + dtime = 0.003 * (1.0 - pow(1.0*ii/Ndrops,0.1)); // reduced v.13.09 + zsleep(dtime); gdk_flush(); // avoid jerky output (Ubuntu 13.04) v.13.05 } @@ -4079,7 +4098,7 @@ zdialog_add_widget(zd,"hbox","hbf","dialog",0,"space=5"); zdialog_add_widget(zd,"button","files","hbf",Bselectfiles,"space=5"); - zdialog_add_widget(zd,"label","fcount","hbf","0 files selected","space=10"); + zdialog_add_widget(zd,"label","fcount","hbf",ZTX("0 files selected"),"space=10"); zdialog_add_widget(zd,"hbox","hbwh","dialog"); zdialog_add_widget(zd,"label","labw","hbwh",ZTX("max. width"),"space=5"); @@ -4428,8 +4447,8 @@ white balance (o) camera (o) fixed (o) calculated interpolation (o) bilinear (o) VNG (o) PPG (o) AHD - color space (o) raw (o) sRGB (o) Adobe (o) wide (o) Kodak (o) XYZ - gamma curve (o) default (o) sRGB (o) linear + color space (o) raw (o) sRGB (o) Adobe (o) wide (o) Kodak (o) XYZ + gamma curve (o) default (o) sRGB (o) linear dcraw command [ dcraw -T -6 -w -q 0 -o 1 -g 2.222 4.5 ] [defaults] [proceed] [cancel] @@ -4481,13 +4500,13 @@ zdialog_add_widget(zd,"radio","-o 5","hb5","XYZ","space=3"); zdialog_add_widget(zd,"hbox","hb6","vb2"); - zdialog_add_widget(zd,"radio","-g 2.222 4.5","hb6","default","space=3"); + zdialog_add_widget(zd,"radio","-g 2.222 4.5","hb6",ZTX("default"),"space=3"); zdialog_add_widget(zd,"radio","-g 2.4 12.92","hb6","sRGB","space=3"); zdialog_add_widget(zd,"radio","-g 1.0 1.0","hb6","linear","space=3"); zdialog_add_widget(zd,"hbox","hb7","dialog",0,"space=3"); zdialog_add_widget(zd,"entry","dcraw_command","hb7",0,"space=5|expand"); - zdialog_add_widget(zd,"button","defaults","hb7","defaults","space=5"); + zdialog_add_widget(zd,"button","defaults","hb7",ZTX("defaults"),"space=5"); filelist = 0; // set no files selected diff -Nru fotoxx-13.08/fotoxx-13.08.cc fotoxx-13.09.1/fotoxx-13.08.cc --- fotoxx-13.08/fotoxx-13.08.cc 2013-08-01 20:57:53.000000000 +0000 +++ fotoxx-13.09.1/fotoxx-13.08.cc 1970-01-01 00:00:00.000000000 +0000 @@ -1,4891 +0,0 @@ -/************************************************************************** - - Fotoxx edit photos and manage collections - - Copyright 2007 2008 2009 2010 2011 2012 2013 Michael Cornelison - Source URL: http://kornelix.com/fotoxx - Contact: kornelix2@gmail.com - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see http://www.gnu.org/licenses/. - -***************************************************************************/ - -#define EX // disable extern declarations -#include "fotoxx.h" - -// fotoxx main program - -int main(int argc, char *argv[]) -{ - char lang[8] = ""; - int Fclone=0, cloxx=0, cloyy=0, cloww=0, clohh=0; - int Ftranslate = 0; - int err; - struct stat statb; - - if (argc > 1 && strEqu(argv[1],"-v")) { - printf(Frelease "\n"); // print version and exit - return 0; - } - - gtk_init(&argc,&argv); // initz. GTK & strip GTK params - zinitapp("fotoxx",null); // initz. app directories - - // initialize externals to default values - // (saved parameters will override some of these) - - strcpy(zfuncs::zappname,Frelease); // app name and version - Ffirsttime = 1; // first time startup (params override) - Prelease = strdupz("unknown"); // prev. fotoxx release (params override) - Nrelease = strdupz("unknown"); // last notified new release - for (int ii = 0; ii < 8; ii++) wtnx[ii] = ii; // thread numbers 0-7 - mwgeom[0] = mwgeom[1] = 100; // default main window geometry - mwgeom[2] = 1200; mwgeom[3] = 800; // v.13.05 - trimsize[0] = 1600; // default initial trim size - trimsize[1] = 1000; - editresize[0] = 1600; // default initial resize size - editresize[1] = 1200; - currgrid = 0; // default initial grid settings v.13.02 - gridsettings[0][GON] = 0; // grid off - gridsettings[0][GX] = gridsettings[0][GY] = 1; // x/y grid lines enabled - gridsettings[0][GXS] = gridsettings[0][GYS] = 200; // x/y spacing - gridsettings[0][GXC] = gridsettings[0][GYC] = 5; // x/y count - menu_style = strdupz("vertical"); // default menu style v.13.01 - tbar_style = strdupz("both"); // default toolbar style - interpolation = strdupz("bilinear"); // default image interpolation v.13.05 - startdisplay = strdupz("blank"); // start with blank window - Fdragopt = 2; // image drag is magnified scroll - Fwarnoverwrite = 1; // warn original file overwrite - zoomcount = 2; // zooms to reach 2x image size - zoomratio = sqrtf(2); // corresp. zoom ratio - Fthumbnails = 1; // default, use thumbnails with image files - thumbdirk = strdupz(""); // default, no thumbnail directory - FsyncEnabled = 1; // default, file sync enabled - last_sync_time = strdupz("never"); // default - jpeg_def_quality = 90; // default .jpeg save quality v.13.08 - jpeg_1x_quality = 90; - lens_mm = 35; // pano lens parameters - lens_bow = 0; - RAWcommand = strdupz("dcraw -T -6 -w -q 0 -o 1"); // default RAW to tiff command - RAWfiletypes = strdupz(".arw .crw .cr2 .dng .erf .iiq .mef .mos " // some of the known RAW file types - ".mpo .nef .nrw .orf .orf .pef .ptx .raw " // (case is not significant here) - ".rw2 .rwl .srf .srw .sr2 "); - - black[0] = black[1] = black[2] = 0; // define RGB colors - white[0] = white[1] = white[2] = 255; - red[0] = 255; red[1] = red[2] = 0; - green[1] = 255; green[0] = green[2] = 0; - fg_color = green; // initial foreground drawing color - - GDKdgray.red = GDKdgray.green = GDKdgray.blue = 0.4; // GDK colors for dark gray - GDKblack.red = GDKblack.green = GDKblack.blue = 0; // GDK colors for black - GDKdgray.alpha = 1; - GDKblack.alpha = 1; - - arrowcursor = gdk_cursor_new(GDK_TOP_LEFT_ARROW); // cursor for selection - dragcursor = gdk_cursor_new(GDK_CROSSHAIR); // cursor for dragging - drawcursor = gdk_cursor_new(GDK_PENCIL); // cursor for drawing lines - - mwpC = &mwpF; // tab F is current - - // process command line parameters - - for (int ii = 1; ii < argc; ii++) // command line parameters - { - char *pp = argv[ii]; - - if (strcmpv(pp,"-debug","-d",null)) // -d -debug - Fdebug = 1; - else if (strcmpv(pp,"-lang","-l",null) && argc > ii+1) // -l -lang lc_RC language/region code - strncpy0(lang,argv[++ii],7); - else if (strcmpv(pp,"-clone","-c",null) && argc > ii+4) { // -c -clone clone new instance - Fclone = 1; - cloxx = atoi(argv[ii+1]); // window position and size - cloyy = atoi(argv[ii+2]); // passed from parent instance - cloww = atoi(argv[ii+3]); - clohh = atoi(argv[ii+4]); - ii += 4; - } - else if (strcmpv(pp,"-slideshow","-ss",null) && argc > ii+1) // -ss -slideshow /image/file.jpg - SS_imagefile = strdupz(argv[++ii]); - else if (strcmpv(pp,"-music","-m",null) && argc > ii+1) // -m -music /music/file.ogg - SS_musicfile = strdupz(argv[++ii]); - else if (strcmpv(pp,"-recent","-r",null)) // -r -recent recent files gallery - Frecent = 1; - else if (strcmpv(pp,"-new","-n",null)) // -n -new new added files gallery - Fnew = 1; - else if (strcmpv(pp,"-previous","-prev","-p",null)) // -p -prev open previous file - Fprev = 1; - else if (strcmpv(pp,"-blank","-b",null)) // -b -blank start with blank window - Fblank = 1; - else if (strcmpv(pp,"-translate","-t",null)) // -t -translate start translation - Ftranslate = 1; - else if (strcmpv(pp,"-nosync","-nos",null)) // -nos -nosync omit auto sync - Fnosync = 1; - else if (strEqu(pp,"-menu") && argc > ii+1) // -menu menuname starting menu - startmenu = strdupz(argv[++ii]); - else initial_file = strdupz(pp); // must be initial file or directory - } - - ZTXinit(lang); // setup locale and translations - setlocale(LC_NUMERIC,"en_US.UTF-8"); // stop comma decimal points - - // get files in user directory /home//.fotoxx/* - - snprintf(exiftool_input,199,"%s/exiftool_input",get_zuserdir()); // exiftool_server input file - snprintf(topdirk_file,199,"%s/top_directory",get_zuserdir()); // top_directories file - snprintf(search_index_dirk,199,"%s/search_index4",get_zuserdir()); // search_index directory - snprintf(tags_defined_file,199,"%s/tags_defined",get_zuserdir()); // defined tags file - snprintf(recentfiles_file,199,"%s/recent_files",get_zuserdir()); // recent files file - snprintf(newfiles_file,199,"%s/new_files",get_zuserdir()); // new files file (from synch) v.13.07 - snprintf(saved_areas_dirk,199,"%s/saved_areas",get_zuserdir()); // saved areas directory - snprintf(collections_dirk,199,"%s/collections",get_zuserdir()); // collections directory - snprintf(collections_copy,199,"%s/collections_copy",get_zuserdir()); // collections copy file v.13.07 - snprintf(saved_curves_dirk,199,"%s/saved_curves",get_zuserdir()); // saved curves directory - snprintf(writetext_dirk,199,"%s/write_text",get_zuserdir()); // write_text directory - snprintf(geotags_dirk,199,"%s/geotags",get_zuserdir()); // geotags directory - snprintf(favorites_dirk,199,"%s/favorites",get_zuserdir()); // favorites directory - snprintf(locales_dirk,199,"%s/locales",get_zuserdir()); // locales directory v.13.02 - locale_filespec("data","quickstart.html",quickstart_file); // quickstart html file v.13.06 - snprintf(latest_release_file,199,"%s/latest_release",get_zuserdir()); // latest fotoxx release file v.13.05 - - err = stat(saved_areas_dirk,&statb); // create any missing directories - if (err) mkdir(saved_areas_dirk,0750); - err = stat(collections_dirk,&statb); - if (err) mkdir(collections_dirk,0750); - err = stat(saved_curves_dirk,&statb); - if (err) mkdir(saved_curves_dirk,0750); - err = stat(writetext_dirk,&statb); - if (err) mkdir(writetext_dirk,0750); - err = stat(geotags_dirk,&statb); - if (err) mkdir(geotags_dirk,0750); - err = stat(favorites_dirk,&statb); - if (err) mkdir(favorites_dirk,0750); - err = stat(locales_dirk,&statb); // v.13.02 - if (err) mkdir(locales_dirk,0750); - - // restore parameters from last session - - load_params(); - - // create main window with image file tab and gallery tab - - mWin = gtk_window_new(GTK_WINDOW_TOPLEVEL); // create main window - gtk_window_set_title(MWIN,Frelease); - - tabWin = gtk_notebook_new(); // add tab window to main window - gtk_notebook_set_tab_pos(GTK_NOTEBOOK(tabWin),GTK_POS_LEFT); - gtk_container_add(GTK_CONTAINER(mWin),tabWin); - - PangoFontDescription *tabfont; // v.13.01 - tabfont = pango_font_description_from_string("mono bold 12"); - - fVbox = gtk_box_new(VERTICAL,0); // add vbox as tab F (image file window) - GtkWidget * labF = gtk_label_new("F"); - gtk_widget_override_font(labF,tabfont); - gtk_notebook_append_page(GTK_NOTEBOOK(tabWin),fVbox,labF); - - gVbox = gtk_box_new(VERTICAL,0); // add vbox as tab G (gallery window) - GtkWidget * labG = gtk_label_new("G"); - gtk_widget_override_font(labG,tabfont); - gtk_notebook_append_page(GTK_NOTEBOOK(tabWin),gVbox,labG); - - if (Ftranslate) { // start online translation - F1_help_topic = "translate"; // (to process the menu names) - ZTX_translation_start(mWin); - } - - build_menus(); // build menus in F and G windows v.13.01 - - GtkWidget * wVbox = gtk_box_new(VERTICAL,0); // create tab W (world map window) - GtkWidget * labW = gtk_label_new("W"); - gtk_widget_override_font(labW,tabfont); - gtk_notebook_append_page(GTK_NOTEBOOK(tabWin),wVbox,labW); - wDwin = gtk_drawing_area_new(); // add drawing window - gtk_box_pack_start(GTK_BOX(wVbox),wDwin,1,1,0); - - G_SIGNAL(mWin,"delete_event",delete_event,0); // connect signals to main window - G_SIGNAL(mWin,"destroy",destroy_event,0); - G_SIGNAL(mWin,"window-state-event",state_event,0); - G_SIGNAL(mWin,"key-press-event",KBpress,0); // connect KB events to main window - G_SIGNAL(mWin,"key-release-event",KBrelease,0); - - G_SIGNAL(tabWin,"switch-page",tabchanged,0); // connect tab switched event to tab window - - gtk_widget_add_events(fDwin,GDK_BUTTON_PRESS_MASK); // connect mouse events to image window - gtk_widget_add_events(fDwin,GDK_BUTTON_RELEASE_MASK); - gtk_widget_add_events(fDwin,GDK_BUTTON_MOTION_MASK); // motion with button pressed - gtk_widget_add_events(fDwin,GDK_POINTER_MOTION_MASK); // pointer motion - gtk_widget_add_events(fDwin,GDK_SCROLL_MASK); // scroll wheel - G_SIGNAL(fDwin,"button-press-event",mouse_event,0); - G_SIGNAL(fDwin,"button-release-event",mouse_event,0); - G_SIGNAL(fDwin,"motion-notify-event",mouse_event,0); - G_SIGNAL(fDwin,"scroll-event",mouse_event,0); - G_SIGNAL(fDwin,"draw",mwpaint1,0); // connect draw signal - - gtk_widget_add_events(gDwin,GDK_BUTTON_PRESS_MASK); // connect mouse events to gallery window - gtk_widget_add_events(gDwin,GDK_POINTER_MOTION_MASK); // v.13.01 - gtk_widget_add_events(gDwin,GDK_LEAVE_NOTIFY_MASK); - G_SIGNAL(gDwin,"button-press-event",navi::mouse_event,0); - G_SIGNAL(gDwin,"motion-notify-event",navi::mouse_event,0); - G_SIGNAL(gDwin,"leave-notify-event",navi::mouse_event,0); - G_SIGNAL(gDwin,"draw",navi::gallery_paint,0); // connect draw signal - - gtk_widget_add_events(gPath,GDK_BUTTON_PRESS_MASK); // connect mouse to gallery - G_SIGNAL(gPath,"button-press-event",navi::changedirk,0); // navigation widgets - G_SIGNAL(gTop,"clicked",navi::newtop,0); - - gtk_widget_add_events(wDwin,GDK_BUTTON_PRESS_MASK); // connect mouse events to world map window - gtk_widget_add_events(wDwin,GDK_BUTTON_RELEASE_MASK); - gtk_widget_add_events(wDwin,GDK_BUTTON_MOTION_MASK); // motion with button pressed - gtk_widget_add_events(wDwin,GDK_POINTER_MOTION_MASK); // pointer motion - gtk_widget_add_events(wDwin,GDK_SCROLL_MASK); // scroll wheel - G_SIGNAL(wDwin,"button-press-event",mouse_event,0); - G_SIGNAL(wDwin,"button-release-event",mouse_event,0); - G_SIGNAL(wDwin,"motion-notify-event",mouse_event,0); - G_SIGNAL(wDwin,"scroll-event",mouse_event,0); - G_SIGNAL(wDwin,"draw",mwpaint1,0); - - drag_drop_connect(mWin,m_open_drag); // connect drag-drop to main window - - // open main window and start GTK main loop - - if (Fclone) { // clone: open new window - gtk_window_move(MWIN,cloxx+20,cloyy+30); // slightly offset from old window - gtk_window_resize(MWIN,cloww-20,clohh-30); - } - else { - gtk_window_move(MWIN,mwgeom[0],mwgeom[1]); // main window geometry - gtk_window_resize(MWIN,mwgeom[2],mwgeom[3]); // defaults or last session params - } - - gtk_widget_show_all(mWin); // show all widgets - gtk_widget_realize(fDwin); // compensate GTK bug - gtk_widget_realize(wDwin); // compensate GTK bug - gtk_widget_override_background_color(fDwin,(GtkStateFlags)0,&GDKdgray); // gdk_window_set_background_rgba() fails - - cTab = tabF; // set current tab = F - cDwin = fDwin; // curr. drawing window - cSbar = fSbar; // status bar active - gdkWin = gtk_widget_get_window(cDwin); // GDK drawing window - - // find and save the main window and pointer device // v.13.08 - - Fwindow = gtk_widget_get_window(mWin); // gdk window for main window - if (! Fwindow) goto GTKfailure; - Fdisplay = gdk_window_get_display(Fwindow); - if (! Fdisplay) goto GTKfailure; - Fscreen = gdk_window_get_screen(Fwindow); // monitor used - if (! Fscreen) goto GTKfailure; - Fmanager = gdk_display_get_device_manager(Fdisplay); - if (! Fmanager) goto GTKfailure; - Fpointer = gdk_device_manager_get_client_pointer(Fmanager); // pointer used (mouse) - if (! Fpointer) goto GTKfailure; - - // start GTK main loop - - g_timeout_add(100,initzfunc,0); // initz. call from gtk_main() v.13.01 - gtk_main(); // start processing window events - return 0; - -GTKfailure: - printf("GTK/GDK failure to find hardware %p %p %p %p %p \n", - Fwindow,Fdisplay,Fscreen,Fmanager,Fpointer); - exit(1); -} - - -/**************************************************************************/ - -// Initial function called from gtk_main() at startup. -// This function MUST return 0. - -int initzfunc(void *) -{ - int Fnewrelease; - int Fexiftool = 0, Fxdgopen = 0, Fdcraw = 0, Fufraw = 0; - int ii, err, err1, err2, flag, npid; - int ftype, Fdirk = 0; - char Flatest_release[20]; - char procfile[20], buff[200]; - char KBshortsU[200], KBshortsI[200]; - char badnews[200]; - char *pp1, *pp2; - double freememory, cachememory; // available memory at startup - float exifver = 0; - FILE *fid; - struct stat statb; - - cchar *ftmess = ZTX("First time Fotoxx startup. \n" - "Latest version: http://www.kornelix.com/fotoxx \n" - "File sync process will begin (may need some time) \n"); - - cchar *kornelix_fotoxx_release = - "http://www.kornelix.com/uploads/1/3/0/3/13035936/fotoxx-release"; - - cchar *release_notify = "new release %s available at \n" - "http://www.kornelix.com/packages"; - - menulock(1); // block menus until initz. done - snprintf(PIDstring,11,"%06d",getpid()); // get process PID 6-digits - printf(Frelease "\n"); // print Fotoxx release version - - // check that necessary programs are installed - - fid = popen("exiftool -ver","r"); // check exiftool version - if (fid) { - ii = fscanf(fid,"%s",buff); - pclose(fid); // bugfix: accept period or comma - convSF(buff,exifver); - printf("exiftool version: %.2f \n",exifver); - if (exifver >= 8.60) Fexiftool = 1; - } - - err = shell_quiet("which xdg-open"); // check for xdg-open - if (! err) Fxdgopen = 1; - err = shell_quiet("which dcraw"); // check for dcraw - if (! err) Fdcraw = 1; - err = shell_quiet("which ufraw"); // check for ufraw - if (! err) Fufraw = 1; - - if (Fexiftool + Fxdgopen + Fdcraw + Fufraw < 4) { // check mandatory dependencies - strcpy(badnews,ZTX("Please install missing programs:")); - if (! Fexiftool) strcat(badnews,"\n exiftool 8.6 or later"); // refuse to start if any are missing - if (! Fxdgopen) strcat(badnews,"\n xdg-utils"); - if (! Fdcraw) strcat(badnews,"\n dcraw"); - if (! Fufraw) strcat(badnews,"\n ufraw"); - zmessageACK(mWin,0,badnews); - gtk_main_quit(); - exit(0); - } - - // check for first time Fotoxx startup - // or new Fotoxx release just installed - - if (Ffirsttime) // first time startup v.13.03 - Prelease = strdupz(Frelease); // prior = this fotoxx release - - Fnewrelease = 0; - if (strNeq(Prelease,Frelease)) { // detect Fotoxx release change - zmessLogACK(mWin,"fotoxx new release %s",Frelease); - Prelease = strdupz(Frelease); - Fnewrelease = 1; - } - - if (Fnewrelease && ! Ffirsttime) // show changes for new release v.13.03 - showz_textfile("doc","changelog"); - - // check if a new release is available, notify user // v.13.05 - - if (! Ffirsttime && ! Fnewrelease) - { - fid = fopen(latest_release_file,"r"); - if (fid) { - fgets_trim(Flatest_release,20,fid,1); - fclose(fid); - if (strnEqu(Flatest_release,"Fotoxx",6)) { - printf("latest release: %s \n",Flatest_release); - if (strNeq(Frelease,Flatest_release) && strNeq(Nrelease,Flatest_release)) { - zmessageACK(mWin,0,release_notify,Flatest_release); - Nrelease = strdupz(Flatest_release); - } - } - } - snprintf(command,ccc,"wget -T 20 -o /dev/null -O %s %s &", // start retrieval of latest release - latest_release_file, kornelix_fotoxx_release); // (no wait, times out in 20 secs.) - err = system(command); // may return junk if failure - } - - // update KB shortcuts if needed - - locale_filespec("data","KB-shortcuts",KBshortsI); // installed KB shortcuts - err1 = locale_filespec("user","KB-shortcuts",KBshortsU); // user KB shortcuts - err2 = shell_quiet("cmp -s %s %s",KBshortsU,KBshortsI); // compare - - if (Ffirsttime || err1 || (Fnewrelease && err2)) { // replace KB-shortcuts file v.13.03 - shell_quiet("mv %s %s-old",KBshortsU,KBshortsU); - shell_quiet("cp %s %s",KBshortsI,KBshortsU); - printf("new keyboard shortcuts installed \n"); - } - - KBshortcuts_load(); // load KB shortcuts from file v.13.03 - -// create tags_defined file if not already - - err = stat(tags_defined_file,&statb); // v.13.08 - if (err) { - printf("create default tags_defined file \n"); - shell_quiet("cp %s/tags_defined %s",get_zdatadir(),tags_defined_file); - } - - // check free memory and suggest image size limits - - parseprocfile("/proc/meminfo","MemFree:",&freememory,null); // get amount of free memory - parseprocfile("/proc/meminfo","Cached:",&cachememory,null); - freememory = (freememory + cachememory) / 1024; // megabytes - printf("free memory: %.0f MB \n",freememory); - printf("image size limits for good performance: \n"); // v.13.04 - printf(" view: %.0f megapixels \n",(freememory-100)/6); // F + preview, 3 bytes/pixel each - printf(" edit: %.0f megapixels \n",(freememory-100)/54); // + E0/E1/E3/ER, 12 bytes/pixel each - - Nwt = sysconf(_SC_NPROCESSORS_ONLN); // get SMP CPU count - if (Nwt <= 0) Nwt = 1; - if (Nwt > max_threads) Nwt = max_threads; // compile time limit - printf("using %d threads \n",Nwt); - - // clean orphaned undo files in undo/redo stack - // make undo/redo stack filename template for this process ID - - snprintf(URS_filename,200,"%s/*_undo_*",get_zuserdir()); // /home//.fotoxx/*_undo_* - - flag = 1; - while ((pp1 = (char *) SearchWild(URS_filename,flag))) - { - pp2 = strstr(pp1,".fotoxx/"); - if (! pp2) continue; - npid = atoi(pp2+8); // pid of file owner - snprintf(procfile,19,"/proc/%d",npid); - err = stat(procfile,&statb); - if (! err) continue; // pid is active, keep file - printf("*** orphaned undo file deleted: %s \n",pp1); - err = remove(pp1); // delete file - } - - snprintf(URS_filename,200,"%s/%s_undo_nn",get_zuserdir(),PIDstring); // /home//.fotoxx/pppppp_undo_nn - - // miscellaneous - - mutex_init(&Fpixmap_lock,0); // setup lock for edit pixmaps - mutex_init(&preload_lock,0); // setup lock for file preload function - - zdialog_inputs("load"); // load saved dialog inputs - zdialog_positions("load"); // load saved dialog positions - exiftool_server(null); // kill orphan exiftool process - - // perform file sync if image files added since last fotoxx session - - if (Ffirsttime) { // first time startup v.13.03 - last_sync_time = strdupz("never"); - while (true) { - printf("%s",ftmess); - ii = zdialog_choose(0,mWin,ftmess,Bhelp,Bcancel,Bproceed,null); - if (ii == 1) { - showz_userguide("sync_files"); // show sync files help - continue; - } - if (ii == 2) { - gtk_main_quit(); // cancel v.13.02 - exit(0); - } - if (ii == 3) break; - } - } - - printf("last file sync: %s \n",last_sync_time); // last file sync time - syncfiles_func(1); // process newly added image files - - // set current directory/file from command line or saved parameters - - if (Ntopdirk) curr_dirk = strdupz(topdirk[0]); // use 1st top direk if defined - else { - pp1 = getcwd(command,ccc); // or use current directory - if (pp1) curr_dirk = strdupz(pp1); - } - - if (initial_file) { // from command line or previous session - pp1 = realpath(initial_file,0); // prepend directory if needed - if (pp1) { - zfree(initial_file); - initial_file = strdupz(pp1); - free(pp1); - } - else { - printf("invalid file: %s \n",initial_file); // invalid file path - zfree(initial_file); - initial_file = 0; - } - } - - if (initial_file) { - ftype = image_file_type(initial_file); - if (ftype == 0) { // non-existent file - printf("invalid file: %s \n",initial_file); - zfree(initial_file); - initial_file = 0; - } - else if (ftype == 1) { // is a directory - if (curr_dirk) zfree(curr_dirk); - curr_dirk = initial_file; - initial_file = 0; - Fdirk = 1; - } - else { - if (curr_dirk) zfree(curr_dirk); - curr_dirk = strdupz(initial_file); // set current directory from file - pp1 = strrchr(curr_dirk,'/'); - if (pp1) *pp1 = 0; - } - } - - menulock(0); // enable menus - - if (Ffirsttime) // initial install, show quickstart - showz_html(quickstart_file); // v.13.06 - - Ffirsttime = 0; // reset first time flag v.13.03 - save_params(); // save parameters (maybe first time) - - // process command line options - - if (SS_imagefile) { // start slide show if wanted - f_open(SS_imagefile,1); - if (SS_musicfile) - shell_quiet("xdg-open \"%s\" ",SS_musicfile); // with music if wanted - m_slideshow(0,0); - return 0; - } - - else if (initial_file) // open initial file - f_open(initial_file,1); - - else if (Fdirk) { // open initial directory - gallery - gallery(curr_dirk,"init"); // v.13.01 - gallery(0,"paint"); - settab("G"); - } - - else if (Fprev) // start with previous file - m_previous(0,0); - - else if (Frecent) // start with recent files - m_recentfiles(0,0); - - else if (Fnew) // start with newly added files - m_newfiles(0,0); // v.13.07 - - else if (Fblank); /** do nothing **/ - - // if no command line option, get startup option from user settings - - else if (strEqu(startdisplay,"recent")) - m_recentfiles(0,0); - - else if (strEqu(startdisplay,"newest")) // v.13.07 - m_newfiles(0,0); - - else if (strEqu(startdisplay,"prev")) - m_previous(0,0); - - else if (strEqu(startdisplay,"dirk")) { - if (startdirk && *startdirk == '/') { - if (curr_dirk) zfree(curr_dirk); - curr_dirk = strdupz(startdirk); - navi::thumbsize = 128; - gallery(curr_dirk,"init",0); // v.13.01 - gallery(0,"paint"); - settab("G"); // v.13.04 - } - } - - else if (strEqu(startdisplay,"file")) - f_open(startfile,1); - - zmainloop(); // mysterious, avoid blank window - - if (startmenu) { // startup menu on command line - printf("startmenu: %s \n",startmenu); - for (ii = 0; ii < Nmenus; ii++) // convert menu name to menu function - if (strcasecmp(ZTX(startmenu),ZTX(menutab[ii].menu)) == 0) break; - if (ii < Nmenus) menutab[ii].func(0,menutab[ii].arg); // call the menu function - } - - g_timeout_add(100,gtimefunc,0); // start periodic function (100 ms) v.13.04 - - return 0; // don't come back -} - - -/**************************************************************************/ - -// Periodic function (100 milliseconds) -// Avoid any thread usage of gtk/gdk functions. - -int gtimefunc(void *arg) -{ - static int domore = 0; - - if (Frefresh && cDwin) { // window update needed v.13.04 - if (mutex_trylock(&Fpixmap_lock) != 0) return 1; // pixmaps locked, come back later - mutex_unlock(&Fpixmap_lock); // (mwpaint1 will lock) - gtk_widget_queue_draw(cDwin); - } - - if (--domore > 0) return 1; // do rest 1/5 as frequently - domore = 5; - - update_statusbar(); // update status bar information - - if (Fslideshow) slideshow_next("timer"); // show next image if time is up - - return 1; -} - - -/**************************************************************************/ - -// update status bar with image data and status -// called from timer function - -void update_statusbar() -{ - static double time1 = 0, time2, cpu1 = 0, cpu2, cpuload; - char text1[300], text2[100]; - int ww, hh, scale, bpc; - double file_MB = 1.0 / mega * curr_file_size; - char busymess[20]; - int percent, px, py; - - if (! cSbar) return; - - *text1 = *text2 = 0; - - if (! time1) { - time1 = get_seconds(); - cpu1 = jobtime(); - } - - time2 = get_seconds(); // compute process cpu load % - if (time2 - time1 > 1.0) { // at 1 second intervals - cpu2 = jobtime(); - cpuload = 100.0 * (cpu2 - cpu1) / (time2 - time1); - time1 = time2; - cpu1 = cpu2; - } - - sprintf(text1,"CPU %03.0f%c",cpuload,'%'); // CPU 023% - - if (curr_file && Fpxb) // bugfix v.13.02.1 - { - if (E3pxm) { - ww = E3pxm->ww; - hh = E3pxm->hh; - } - else { - ww = Fpxb->ww; - hh = Fpxb->hh; - } - - bpc = curr_file_bpc; - - snprintf(text2,99," %dx%dx%d",ww,hh,bpc); // 2345x1234x16 (preview) 1.56MB 45% - strcat(text1,text2); - if (CEF && CEF->Fpreview) strcat(text1," (preview)"); // v.13.04 - sprintf(text2," %.2fMB",file_MB); - strcat(text1,text2); - scale = Mscale * 100 + 0.5; - sprintf(text2," %d%c",scale,'%'); - strcat(text1,text2); - - if (URS_pos) { // edit undo/redo stack depth - snprintf(text2,99," edits: %d",URS_pos); - strcat(text1,text2); - } - } - - if (Fmenulock) strcat(text1," menu locked"); - if (sa_stat == 3) strcat(text1," area active"); - if (zfuncs::zdialog_busy) strcat(text1," dialog open"); - - if (*SB_text) { // application text - strcat(text1," "); - strcat(text1,SB_text); - } - - stbar_message(cSbar,text1); // write to status bar - - if (Ffuncbusy || Fthreadbusy) { // something is processing v.13.05 - if (Fbusy_goal) { - percent = 100 * Fbusy_done / Fbusy_goal; // construct "BUSY nn%" - sprintf(busymess," BUSY %d%c ",percent,'%'); - } - else strcpy(busymess," BUSY "); - - px = Morgx / Mscale; - py = Morgy / Mscale; - draw_text(px,py,busymess,"monospace 11"); // write upper left visible image window - } - - return; -} - - -/**************************************************************************/ - -// process top-level menu entry - -void topmenufunc(GtkWidget *, cchar *menu) -{ - topmenu = (char *) menu; // remember top-level menu name - return; -} - - -// functions for main window event signals - -int delete_event() // main window closed -{ - printf("main window delete event \n"); - if (mod_keep()) return 1; // allow user bailout - quitxx(); - return 0; -} - -int destroy_event() // main window destroyed -{ - printf("main window destroy event \n"); - quitxx(); - return 0; -} - -int state_event(GtkWidget *, GdkEvent *event) // main window state changed -{ - int state = ((GdkEventWindowState *) event)->new_window_state; // track window fullscreen status - if (state & GDK_WINDOW_STATE_FULLSCREEN) Wfullscreen = 1; - else Wfullscreen = 0; - return 0; -} - - -/**************************************************************************/ - -// set window visible tab, F/G/W - -int settab(cchar *tabname) -{ - int tab; - - if (strEqu(tabname,"F")) tab = tabF; - if (strEqu(tabname,"G")) tab = tabG; - if (strEqu(tabname,"W")) tab = tabW; - if (tab == cTab) return 1; // no change - - if (checkmenulock()) return 0; // block if menu locked - gtk_notebook_set_current_page(GTK_NOTEBOOK(tabWin),tab); - return 1; -} - - -// current tab has changed, by user or by function settab() above - -void tabchanged(GtkNotebook *, GtkWidget *, int tab, void *) // overhauled v.13.03 -{ - int tabrecover(void *); - int reset = 0; - - if (tab == cTab) return; // no change - - if (checkmenulock()) reset = 1; // block if menu locked - if (mod_keep()) reset = 1; // warn user of lost edits - if (reset) { - g_timeout_add(0,tabrecover,0); // schedule tab recover function - return; // (does not work from here) - } - - if (tab == tabW) { // entering tab W - if (! init_geotags()) { // check world map available - g_timeout_add(0,tabrecover,0); // no, schedule tab recover function - return; // (does not work from here) - } - cTab = tab; - mwpC = &mwpW; // use tab W image/window parameters v.13.03 - cDwin = wDwin; // set drawing window, no status bar - cSbar = 0; - gdkWin = gtk_widget_get_window(cDwin); // GDK drawing window - gdk_window_set_background_rgba(gdkWin,&GDKdgray); - gtk_window_set_title(MWIN,ZTX("Location from World Map")); // window title - m_geotag_worldmap(0,0); // activate clickable world map - mwpaint2(); - } - - if (tab == tabF) { // entering tab F - cTab = tab; - mwpC = &mwpF; // use tab F image/window parameters v.13.03 - cDwin = fDwin; // set drawing window and status bar - cSbar = fSbar; - gdkWin = gtk_widget_get_window(cDwin); // GDK drawing window - gdk_window_set_background_rgba(gdkWin,&GDKdgray); - set_mwin_title(); // window title from image file - } - - if (tab == tabG) { // entering tab G - cTab = tab; - mwpC = 0; // no image/window parameters - cDwin = 0; // v.13.04 - gdkWin = 0; - cSbar = 0; - F1_help_topic = "navigation"; - if (curr_file) // v.13.03 - gallery(curr_file,"paint",curr_file_posn); - else gallery(0,"paint",-1); - } - - return; -} - - - -// reset to prior tab after disallowed user change -// use: g_timeout_add(0,tabrecover,0) - -int tabrecover(void *) -{ - printf("tab change blocked %d \n",cTab); - gtk_notebook_set_current_page(GTK_NOTEBOOK(tabWin),cTab); - return 0; // don't come back -} - - -/**************************************************************************/ - -// GTK3 "draw" function for the main/drawing window, tab F and tab W. -// Paint window when created, exposed, resized, or image modified (edited). -// Update window image if scale change or window size change. -// Otherwise do only the draw function (was triggered from GTK). -// Draw the image section currently within the visible window. -// May NOT be called from threads. See mwpaint2() for threads. - -int mwpaint1(GtkWidget *cDwin, cairo_t *cr) -{ - GdkPixbuf *Dpxb; - uint8 *pixels; - static int pdww = 0, pdhh = 0; // prior window size - float wscale, hscale; - int fww, fhh; // current image size at 1x - int mww, mhh; // scaled image size - int centerx, centery; - int quitnow = 0; - int refresh = 0; // flag, full image refesh needed - int mousex, mousey; // mouse position after zoom - int rs; - float magx, magy; // mouse drag, magnification ratios - - if (Fshutdown) quitnow++; // shutdown underway - if (Fblankwindow) quitnow++; // blank window v.13.06 - if (! mwpC || ! mwpC->fpxb) quitnow++; // no image v.13.06 - if (! cDwin) quitnow++; // v.13.04 - if (! gdkWin) quitnow++; - - if (quitnow) { - Frefresh = 0; // reset paint request v.13.06 - return 0; - } - - if (mutex_trylock(&Fpixmap_lock) != 0) return 0; // cannot lock pixmaps - - Dww = gdk_window_get_width(gdkWin); // (new) drawing window size - Dhh = gdk_window_get_height(gdkWin); - if (Dww < 20 || Dhh < 20) return 0; // too small - - if (Dww != pdww || Dhh != pdhh) { // window size changed - refresh++; // image refresh needed - pdww = Dww; - pdhh = Dhh; - } - - if (Frefresh) { // image refresh needed v.13.06 - if (cTab == tabF && (E0pxm || E3pxm)) { // insure tab F v.13.06 - PXB *pxb1; // update Fpxb from E0/E3 - if (E3pxm) pxb1 = PXM_PXB_copy(E3pxm); // use image now being edited - else pxb1 = PXM_PXB_copy(E0pxm); // or use already edited image - PXB_free(mwpC->fpxb); - mwpC->fpxb = pxb1; - } - refresh++; // full image refresh needed - } - - Frefresh = 0; // reset image paint request v.13.04 - - centerx = (mwpC->morgx + 0.5 * dww) / mwpC->mscale; // center of window, image space - centery = (mwpC->morgy + 0.5 * dhh) / mwpC->mscale; // (before window or scale change) - - fww = mwpC->fpxb->ww; // 1x image size - fhh = mwpC->fpxb->hh; - - if (mwpC->fzoom == 0) { // scale to fit window - wscale = 1.0 * Dww / fww; - hscale = 1.0 * Dhh / fhh; - if (wscale < hscale) mwpC->mscale = wscale; // use greatest ww/hh ratio - else mwpC->mscale = hscale; - if (fww <= Dww && fhh <= Dhh && ! Fblowup) mwpC->mscale = 1.0; // small image 1x unless Fblowup - zoomx = zoomy = 0; // no zoom target - } - else mwpC->mscale = mwpC->fzoom; // scale to fzoom level - - mww = fww * mwpC->mscale; // scaled image size for window - mhh = fhh * mwpC->mscale; - - dww = Dww; // image fitting inside drawing window - if (dww > mww) dww = mww; // image < window size - dhh = Dhh; - if (dhh > mhh) dhh = mhh; - - if (mwpC->mscale != mwpC->pscale) { // scale changed - mwpC->morgx = mwpC->mscale * centerx - 0.5 * dww; // change origin to keep same center - mwpC->morgy = mwpC->mscale * centery - 0.5 * dhh; // (subject to later rules) - mwpC->pscale = mwpC->mscale; // remember scale - refresh++; // full image refresh needed - } - - if (! mwpC->mpxb) refresh++; // v.13.01 - - if (refresh) { // image refresh needed - if (mwpC->mpxb) PXB_free(mwpC->mpxb); - if (mwpC->mscale == 1) mwpC->mpxb = PXB_copy(mwpC->fpxb); // fast 1x zoom - else mwpC->mpxb = PXB_rescale(mwpC->fpxb,mww,mhh); - } - - if ((Mxdrag || Mydrag)) { // pan/scroll via mouse drag - zoomx = zoomy = 0; // no zoom target - magx = 1.0 * (mww - dww) / dww; - magy = 1.0 * (mhh - dhh) / dhh; // needed magnification of mouse movement - if (magx < 1) magx = 1; // retain a minimum speed - if (magy < 1) magy = 1; - - if (Fdragopt == 1) { - mwpC->morgx -= round(Mwdragx); // same direction v.13.05 - mwpC->morgy -= round(Mwdragy); - } - if (Fdragopt == 2) { - mwpC->morgx += round(Mwdragx); // opposite direction - mwpC->morgy += round(Mwdragy); - } - if (Fdragopt == 3) { - mwpC->morgx -= round(Mwdragx * magx); // same direction, magnified - mwpC->morgy -= round(Mwdragy * magy); - } - if (Fdragopt == 4) { - mwpC->morgx += round(Mwdragx * magx); // opposite direction, magnified - mwpC->morgy += round(Mwdragy * magy); - } - } - - if (dww < Dww) mwpC->dorgx = 0.5 * (Dww - dww); // if scaled image width < window width - else mwpC->dorgx = 0; // center image in window - if (dhh < Dhh) mwpC->dorgy = 0.5 * (Dhh - dhh); - else mwpC->dorgy = 0; - - if (zoomx || zoomy) { // requested zoom center - mwpC->morgx = mwpC->mscale * zoomx - 0.5 * dww; // corresp. window position within image - mwpC->morgy = mwpC->mscale * zoomy - 0.5 * dhh; - } - - if (mwpC->morgx < 0) mwpC->morgx = 0; // maximize image within window - if (mwpC->morgy < 0) mwpC->morgy = 0; // (no unused margins) - if (mwpC->morgx + dww > mww) mwpC->morgx = mww - dww; - if (mwpC->morgy + dhh > mhh) mwpC->morgy = mhh - dhh; - - if (zoomx || zoomy) { // zoom target - mousex = zoomx * mwpC->mscale - mwpC->morgx + mwpC->dorgx; - mousey = zoomy * mwpC->mscale - mwpC->morgy + mwpC->dorgy; // mouse pointer follows target - move_pointer(cDwin,mousex,mousey); - zoomx = zoomy = 0; // reset zoom target - } - - pixels = PXBpix(mwpC->mpxb,mwpC->morgx,mwpC->morgy); // mpxb image section within drawing window - rs = mwpC->mpxb->rs; // (morgx/y, dww/hh, rowstride rs) - Dpxb = gdk_pixbuf_new_from_data(pixels,GDKRGB,0,8,dww,dhh,rs,0,0); // make a pixbuf from section - - gdk_cairo_set_source_pixbuf(cr,Dpxb,mwpC->dorgx,mwpC->dorgy); // paint mpxb image section - cairo_paint(cr); - g_object_unref(Dpxb); - - mwcr = cr; // cairo context for draw funcs below - cairo_set_line_width(mwcr,1); - - if (mwpC == &mwpF) { // V.13.06 - if (Ntoplines) draw_toplines(1); // draw line overlays - if (gridsettings[currgrid][GON]) draw_gridlines(); // draw grid lines - if (Ntoptext) draw_toptext(); // draw text strings - if (Ntopcircles) draw_topcircles(); // draw circles - if (Fshowarea) sa_show(1); // draw select area outline - } - - mwcr = 0; // cairo context invalid - mutex_unlock(&Fpixmap_lock); // unlock pixmaps - - if (zdhistogram) m_histogram(0,0); // update image histogram v.13.02 - return 0; -} - - -/**************************************************************************/ - -// Cause (modified) output image to get repainted soon. -// Same as mwpaint1() but delayed. MAY be called from threads. -// mwpaint1() will be called by gtimefunc() next timer cycle. - -void mwpaint2() -{ - Frefresh++; - return; -} - - -// Repaint modified image synchrounously. -// May NOT be called from threads. - -void mwpaintnow() // v.13.04 -{ - if (! cDwin || ! gdkWin) return; - - Frefresh++; // v.13.06 - - while (mutex_trylock(&Fpixmap_lock) != 0) zsleep(0.02); // wait for thread to unlock - mutex_unlock(&Fpixmap_lock); // (mwpaint1 will lock) - - gdk_window_set_background_rgba(gdkWin,&GDKdgray); - mwcr = gdk_cairo_create(gdkWin); - mwpaint1(cDwin,mwcr); - cairo_destroy(mwcr); - mwcr = 0; - return; -} - - -// Update a section of fpxb and mpxb from an updated section of E3pxm, -// then update the corresponding section of the drawing window. -// This avoids a full image refresh, E3pxm > fpxb > mpxb > drawing window. -// px3, py3, ww3, hh3: modified section within E3pxm to be propagated. -// May NOT be called from threads. - -void mwpaint3(int px3, int py3, int ww3, int hh3) -{ - PXM_PXB_update(E3pxm,Fpxb,px3,py3,ww3,hh3); // E3pxm > Fpxb, both 1x scale - PXB_PXB_update(Fpxb,Mpxb,px3,py3,ww3,hh3); // Fpxb > Mpxb, scaled up or down - mwpaint4(px3,py3,ww3,hh3); // update drawing window from Mpxb - return; -} - - -// Repaint a section of the mpxb image in the visible window. -// px3, py3, ww3, hh3: area to be repainted (in 1x image space). -// May NOT be called from threads. - -void mwpaint4(int px3, int py3, int ww3, int hh3) -{ - GdkPixbuf *pixbuf; - uint8 *pixels; - int px2, py2, ww2, hh2, rs; - int crflag = 0; - - if (! gdkWin) return; - - px2 = Mscale * px3 - 2; // 1x image space to mpxb space - py2 = Mscale * py3 - 2; // (expanded) - ww2 = Mscale * ww3 + 2 / Mscale + 4; - hh2 = Mscale * hh3 + 2 / Mscale + 4; - - if (px2 + ww2 > Mpxb->ww) ww2 = Mpxb->ww - px2; // avoid overshoot - if (py2 + hh2 > Mpxb->hh) hh2 = Mpxb->hh - py2; - - if (px2 < Morgx) { // reduce to currently visible window - ww2 = ww2 - (Morgx - px2); - px2 = Morgx; - } - - if (py2 < Morgy) { - hh2 = hh2 - (Morgy - py2); - py2 = Morgy; - } - - if (ww2 <= 0 || hh2 <= 0) return; // completely outside visible window - - if (! mwcr) { - mwcr = gdk_cairo_create(gdkWin); // create cairo context if not already - crflag = 1; - } - - pixels = PXBpix(Mpxb,px2,py2); - rs = Mpxb->rs; // row stride - pixbuf = gdk_pixbuf_new_from_data(pixels,GDKRGB,0,8,ww2,hh2,rs,0,0); // pixbuf for image within window - - px2 = px2 - Morgx + Dorgx; // section position in window - py2 = py2 - Morgy + Dorgy; - - gdk_cairo_set_source_pixbuf(mwcr,pixbuf,px2,py2); // draw area to window - cairo_paint(mwcr); - g_object_unref(pixbuf); - - if (Fshowarea) { - px3 = (px2 - Dorgx + Morgx) / Mscale; // back to image scale, expanded - py3 = (py2 - Dorgy + Morgy) / Mscale; - ww3 = ww2 / Mscale + 2; - hh3 = hh2 / Mscale + 2; - sa_show_rect(px3,py3,ww3,hh3); // refresh select area outline - } - - if (crflag) { - cairo_destroy(mwcr); - mwcr = 0; - } - - return; -} - - -/**************************************************************************/ - -// mouse event function - capture buttons and drag movements - -void mouse_event(GtkWidget *, GdkEventButton *event, void *) -{ - void mouse_convert(int &xpos, int &ypos); - - int button, time, type, scroll; - static int bdtime = 0, butime = 0, mbusy = 0; - static int mdragx0, mdragy0; - - if (! mwpC || ! mwpC->fpxb) return; // v.13.06 - - type = event->type; - button = event->button; // button, 1/2/3 = left/center/right - time = event->time; - Mxposn = event->x; // mouse position in window - Myposn = event->y; - scroll = ((GdkEventScroll *) event)->direction; // scroll wheel event - - KBcontrolkey = KBshiftkey = KBaltkey = 0; - if (event->state & GDK_CONTROL_MASK) KBcontrolkey = 1; // v.13.08 - if (event->state & GDK_SHIFT_MASK) KBshiftkey = 1; - if (event->state & GDK_MOD1_MASK) KBaltkey = 1; - - Mwxposn = Mxposn; // mouse position, window space - Mwyposn = Myposn; - - mouse_convert(Mxposn,Myposn); // convert to image space - - if (type == GDK_SCROLL) { // scroll wheel = zoom - zoomx = Mxposn; // zoom center = mouse position - zoomy = Myposn; - if (scroll == GDK_SCROLL_UP) m_zoom(null,"in"); - if (scroll == GDK_SCROLL_DOWN) m_zoom(null,"out"); - return; - } - - if (type == GDK_MOTION_NOTIFY) { - if (mbusy) return; // discard excess motion events - mbusy++; - zmainloop(); - mbusy = 0; - } - - if (type == GDK_BUTTON_PRESS) { // button down - Mdrag++; // possible drag start - bdtime = time; // time of button down - Mbutton = button; - mdragx0 = Mwxposn; // window position at button down - mdragy0 = Mwyposn; - Mxdown = Mxposn; // image position at button down - Mydown = Myposn; - Mxdrag = Mydrag = 0; - } - - if (type == GDK_MOTION_NOTIFY && Mdrag) { // drag underway - Mwdragx = Mwxposn - mdragx0; // drag increment, window space - Mwdragy = Mwyposn - mdragy0; - mdragx0 = Mwxposn; // new drag origin = current position - mdragy0 = Mwyposn; - Mxdrag = Mxposn; // drag position, image space - Mydrag = Myposn; - } - - if (type == GDK_BUTTON_RELEASE) { // button up - Mxclick = Myclick = 0; // reset click status - butime = time; // time of button up - if (butime - bdtime < 400) { // less than 0.4 secs down - if (Mxposn == Mxdown && Myposn == Mydown) { // and not moving - if (Mbutton == 1) LMclick++; // left mouse click - if (Mbutton == 3) RMclick++; // right mouse click - Mxclick = Mxdown; // click = button down position - Myclick = Mydown; - if (button == 2) { // center button click - zoomx = Mxposn; // re-center at mouse (Doriano) - zoomy = Myposn; - gtk_widget_queue_draw(cDwin); - } - } - } - Mxdown = Mydown = Mxdrag = Mydrag = Mdrag = Mbutton = 0; // forget buttons and drag - } - - Fmousemain = 1; // mouse acts on main window - if (Mcapture) Fmousemain = 0; // curr. function handles mouse - if (mouseCBfunc) Fmousemain = 0; // mouse owned by callback function - if (KBcontrolkey) Fmousemain = 1; // mouse acts on main window - - if (mutex_trylock(&Fpixmap_lock) != 0) return; // block mouse if image transition - mutex_unlock(&Fpixmap_lock); // moved here v.13.04 - - if (mouseCBfunc && ! Fmousemain) { // pass to handler function - if (mbusy) return; - mbusy++; // stop re-entrance - (* mouseCBfunc)(); - mbusy = 0; - Fmousemain = 1; // click/drag params are processed - } // if not reset by handler func. - - if (! Fmousemain) return; // curr. function handles mouse - - if (LMclick) { // left click = zoom request - LMclick = 0; - zoomx = Mxclick; // zoom center = mouse - zoomy = Myclick; - m_zoom(null,"in"); - } - - if (RMclick) { // right click - RMclick = 0; - if (mwpC->fzoom) { // if zoomed image, reset to fit window - zoomx = zoomy = 0; - m_zoom(null,"fit"); - } - else if (curr_file && cTab == tabF) - image_Rclick_popup(curr_file_posn); // image right-click popup menu - } - - if ((Mxdrag || Mydrag)) // drag = scroll by mouse - gtk_widget_queue_draw(cDwin); - - return; -} - - -// convert mouse position from window space to image space - -void mouse_convert(int &xpos, int &ypos) -{ - xpos = (xpos - mwpC->dorgx + mwpC->morgx) / mwpC->mscale + 0.5; - ypos = (ypos - mwpC->dorgy + mwpC->morgy) / mwpC->mscale + 0.5; - - if (xpos < 0) xpos = 0; // if outside image put at edge - if (ypos < 0) ypos = 0; - - if (E3pxm) { - if (xpos >= E3pxm->ww) xpos = E3pxm->ww-1; - if (ypos >= E3pxm->hh) ypos = E3pxm->hh-1; - } - else { - if (xpos >= mwpC->fpxb->ww) xpos = mwpC->fpxb->ww-1; - if (ypos >= mwpC->fpxb->hh) ypos = mwpC->fpxb->hh-1; - } - - return; -} - - -/**************************************************************************/ - -// set new image zoom level or magnification -// zoom: "in" zoom in in steps -// "out" zoom out in steps -// "fit" zoom out to fit window -// "100" toggle 100% and fit window - -void m_zoom(GtkWidget *, cchar *zoom) -{ - int fww, fhh; - float scalew, scaleh, fitscale, fzoom2, zratio = 1; - float Rzoom, pixels; - - if (! mwpC || ! mwpC->fpxb) return; // v.13.06 - - Rzoom = mwpC->fzoom; // current zoom ratio - - if (E3pxm) { - fww = E3pxm->ww; // 1x image size - fhh = E3pxm->hh; - } - else { - fww = mwpC->fpxb->ww; - fhh = mwpC->fpxb->hh; - } - - if (fww > Dww || fhh > Dhh) { // get window fit scale - scalew = 1.0 * Dww / fww; - scaleh = 1.0 * Dhh / fhh; - if (scalew < scaleh) fitscale = scalew; - else fitscale = scaleh; // window/image, < 1.0 - } - else fitscale = 1.0; // if image < window use 100% - - if (strEqu(zoom,"Zoom+")) zoom = "in"; // toolbar button: + = zoom in - if (strEqu(zoom,"Zoom-")) zoom = "fit"; // - = fit window - - if (strEqu(zoom,"fit")) mwpC->fzoom = 0; // zoom to fit window - - if (strEqu(zoom,"100")) { - if (mwpC->fzoom != 0) mwpC->fzoom = 0; // toggle 100% and fit window - else mwpC->fzoom = 1; - } - - if (strstr("in out",zoom)) // caller: zoom in or out - { - if (! mwpC->fzoom) mwpC->fzoom = fitscale; // current zoom scale - for (fzoom2 = 0.125; fzoom2 < 4.0; fzoom2 *= zoomratio) // find nearest natural ratio - if (mwpC->fzoom < fzoom2 * sqrt(zoomratio)) break; - if (strEqu(zoom,"in")) zratio = zoomratio; // zoom in, make image larger - if (strEqu(zoom,"out")) zratio = 1.0 / zoomratio; // zoom out, make image smaller - mwpC->fzoom = fzoom2 * zratio; - if (mwpC->fzoom > 0.124 && mwpC->fzoom < 0.126) mwpC->fzoom = 0.125; // hit these ratios exactly - if (mwpC->fzoom > 0.24 && mwpC->fzoom < 0.26) mwpC->fzoom = 0.25; - if (mwpC->fzoom > 0.49 && mwpC->fzoom < 0.51) mwpC->fzoom = 0.50; - if (mwpC->fzoom > 0.99 && mwpC->fzoom < 1.01) mwpC->fzoom = 1.00; - if (mwpC->fzoom > 1.99 && mwpC->fzoom < 2.01) mwpC->fzoom = 2.00; - if (mwpC->fzoom > 3.99) mwpC->fzoom = 4.0; // max. allowed zoom - if (mwpC->fzoom < fitscale) mwpC->fzoom = 0; // image < window - } - - if (cTab == tabW) { // optimize for world map - if (strEqu(zoom,"in")) mwpC->fzoom = 1.0; // zoom to 100% directly - if (mwpC->fzoom == 1.0 && Rzoom == 1.0) { - gtk_widget_queue_draw(cDwin); // if already, move mouse pointer only - return; - } - } - - if (mwpC->fzoom > 1.0) { // limit image in window to 1 gigabyte - pixels = mwpC->fzoom * fww * mwpC->fzoom * fhh; // (333 megapixels x 3 bytes/pixel) - if (pixels > 333 * mega) { // if size is at maximum, - mwpC->fzoom = Rzoom; // move mouse pointer only - gtk_widget_queue_draw(cDwin); - return; - } - } - - if (! mwpC->fzoom) zoomx = zoomy = 0; // no requested zoom center - mwpaint2(); // refresh window - return; -} - - -/**************************************************************************/ - -// function for dialogs to call to send KB keys for processing by main app - -void KBstate(GdkEventKey *event, int state) -{ - if (state) KBpress(0,event,0); - else KBrelease(0,event,0); - return; -} - - -// keyboard event functions -// GDK key symbols: /usr/include/gtk-3.0/gdk/gdkkeysyms.h - -int KBpress(GtkWidget *win, GdkEventKey *event, void *) // prevent propagation of key-press -{ // events to toolbar buttons - KBkey = event->keyval; - - KBcontrolkey = KBshiftkey = KBaltkey = 0; - if (event->state & GDK_CONTROL_MASK) KBcontrolkey = 1; // v.13.08 - if (event->state & GDK_SHIFT_MASK) KBshiftkey = 1; - if (event->state & GDK_MOD1_MASK) KBaltkey = 1; - - return 1; -} - - -int KBrelease(GtkWidget *win, GdkEventKey *event, void *) // some key was released -{ - int ii, jj, cc; - char matchkey[20]; - - KBkey = event->keyval; - - KBcontrolkey = KBshiftkey = KBaltkey = 0; - if (event->state & GDK_CONTROL_MASK) KBcontrolkey = 1; // v.13.08 - if (event->state & GDK_SHIFT_MASK) KBshiftkey = 1; - if (event->state & GDK_MOD1_MASK) KBaltkey = 1; - - if (! KBcontrolkey && ! KBshiftkey && ! KBaltkey) { // F/G/W keys are tab shortcuts - if (KBkey == GDK_KEY_f) { settab("F"); goto KBend; } // Ctrl/Alt + F/G/W can be used - if (KBkey == GDK_KEY_g) { settab("G"); goto KBend; } // for custom shortcuts - if (KBkey == GDK_KEY_w) { settab("W"); goto KBend; } - } - - if (KBcapture) return 1; // let current function handle it - -// reserved shortcuts (not user configurable) - - if (KBkey == GDK_KEY_F1) { // F1 >> user guide - showz_userguide(F1_help_topic); // show topic if there, or page 1 - goto KBend; - } - - if (KBkey == GDK_KEY_F11) { // F11 >> toggle main window - if (! Wfullscreen) win_fullscreen(); // to full-screen mode and back - else win_unfullscreen(); - if (Fslideshow) m_slideshow(0,0); // quit slideshow if active - goto KBend; - } - - if (KBkey == GDK_KEY_Escape && Wfullscreen) { // ESC key >> exit full screen - win_unfullscreen(); - if (Fslideshow) m_slideshow(0,0); // quit slideshow if active - goto KBend; - } - - if (cTab == tabG) { // tab G is active, - navi::KBrelease(win,event,0); // pass to gallery KB function - goto KBend; // (keys below not for gallery) - } - - if (KBkey == GDK_KEY_z || KBkey == GDK_KEY_Z) { // Z key - if (! KBcontrolkey) m_zoom(null,"100"); // if no CTRL, toggle zoom 1x - goto KBend; - } - - if (cTab == tabW) goto KBend; // tab W active, no other KB events - - if (KBkey == GDK_KEY_plus) m_zoom(null,"in"); // + key >> zoom in - if (KBkey == GDK_KEY_minus) m_zoom(null,"fit"); // - key >> fit to window - if (KBkey == GDK_KEY_equal) m_zoom(null,"in"); // = key: same as + - if (KBkey == GDK_KEY_KP_Add) m_zoom(null,"in"); // keypad + - if (KBkey == GDK_KEY_KP_Subtract) m_zoom(null,"fit"); // keypad - - - if (Fslideshow) { // slide show mode - if (KBkey == GDK_KEY_Left) slideshow_next("prev"); // arrow keys = prev/next image - if (KBkey == GDK_KEY_Right) slideshow_next("next"); - if (KBkey == GDK_KEY_space) slideshow_next("pause"); // spacebar = pause/resume - if (KBkey == GDK_KEY_B || KBkey == GDK_KEY_b) - slideshow_next("blank"); // B key = blank screen + pause - goto KBend; - } - - if (KBkey == GDK_KEY_Left) m_prev(0,0); // arrow keys = prev/next image - if (KBkey == GDK_KEY_Right) m_next(0,0); - if (KBkey == GDK_KEY_Page_Up) m_prev(0,0); // page up/down = prev/next image - if (KBkey == GDK_KEY_Page_Down) m_next(0,0); - - if (KBkey == GDK_KEY_Delete) m_trash(0,0); // delete >> trash - -// look for configurable shortcut keys in shortcut table - - if (KBkey >= GDK_KEY_F1 && KBkey <= GDK_KEY_F9) { // input key is F1 to F9 - ii = KBkey - GDK_KEY_F1; - strcpy(matchkey,"F1"); - matchkey[1] += ii; - } - - else if (KBkey > 255) goto KBend; // not a single letter or digit - - else { - *matchkey = 0; // build input key combination - if (KBcontrolkey) strcat(matchkey,"Ctrl+"); // [Ctrl+] [Alt+] [Shift+] key - if (KBaltkey) strcat(matchkey,"Alt+"); - if (KBshiftkey) strcat(matchkey,"Shift+"); - cc = strlen(matchkey); - matchkey[cc] = KBkey; - matchkey[cc+1] = 0; - } - - for (ii = 0; ii < Nshortcuts; ii++) // convert key combination to menu name - if (strcasecmp(matchkey,shortcutkey[ii]) == 0) break; - - if (ii < Nshortcuts) { // convert menu name to menu function - for (jj = 0; jj < Nmenus; jj++) - if (strcasecmp(shortcutmenu[ii],ZTX(menutab[jj].menu)) == 0) break; - if (jj < Nmenus) menutab[jj].func(0,menutab[jj].arg); // call the menu function - } - -KBend: - KBkey = 0; - return 1; -} - - -/**************************************************************************/ - -// set the main window to fullscreen status -// (with no menu, toolbar, statusbar) - -void win_fullscreen() -{ - if (fMenu) gtk_widget_hide(fMenu); // remove menu, toolbar, status bar - if (fTbar) gtk_widget_hide(fTbar); - if (fSbar) gtk_widget_hide(fSbar); - if (fVMenu) gtk_widget_hide(fVMenu); // vertical menu/toolbar v.13.03 - - gtk_window_fullscreen(MWIN); - - for (int ii = 0; ii < 20; ii++) { // wait for window manager to act - zmainloop(); - if (Wfullscreen) break; - zsleep(0.1); - } - - if (gdkWin) - gdk_window_set_background_rgba(gdkWin,&GDKdgray); // restore background - return; -} - - -// restore window to former size and restore menu etc. - -void win_unfullscreen() -{ - gtk_window_unfullscreen(MWIN); // restore old window size - gtk_widget_show_all(tabWin); // show all menus and toolbars - Wfullscreen = 0; - if (gdkWin) - gdk_window_set_background_rgba(gdkWin,&GDKdgray); // restore background - return; -} - - -/**************************************************************************/ - -// draw a pixel using foreground color. -// px, py are image space. - -void draw_pixel(int px, int py) -{ - int qx, qy, crflag = 0; - static int pqx, pqy; - static uint8 pixel[12]; // 2x2 block of pixels - static GdkPixbuf *pixbuf1 = 0, *pixbuf4 = 0; - - if (! gdkWin) return; - - if (! pixbuf1) { - pixbuf1 = gdk_pixbuf_new_from_data(pixel,GDKRGB,0,8,1,1,3,0,0); // 1x1 pixels - pixbuf4 = gdk_pixbuf_new_from_data(pixel,GDKRGB,0,8,2,2,6,0,0); // 2x2 pixels - } - - qx = Mscale * px - Morgx; // image to window space - qy = Mscale * py - Morgy; - - if (qx == pqx && qy == pqy) return; // avoid redundant points - - pqx = qx; - pqy = qy; - - if (qx < 0 || qx > dww-2) return; // keep off image edges - if (qy < 0 || qy > dhh-2) return; - - if (! mwcr) { - mwcr = gdk_cairo_create(gdkWin); // create cairo context if not already - crflag = 1; - } - - if (Mscale < 1.99) { // write 1x1 pixels - pixel[0] = fg_color[0]; - pixel[1] = fg_color[1]; - pixel[2] = fg_color[2]; - - gdk_cairo_set_source_pixbuf(mwcr,pixbuf1,qx+Dorgx,qy+Dorgy); - cairo_paint(mwcr); - } - - else { // write 2x2 fat pixels - pixel[0] = pixel[3] = pixel[6] = pixel[9] = fg_color[0]; - pixel[1] = pixel[4] = pixel[7] = pixel[10] = fg_color[1]; - pixel[2] = pixel[5] = pixel[8] = pixel[11] = fg_color[2]; - - gdk_cairo_set_source_pixbuf(mwcr,pixbuf4,qx+Dorgx,qy+Dorgy); - cairo_paint(mwcr); - } - - if (crflag) { - cairo_destroy(mwcr); - mwcr = 0; - } - - return; -} - - -// erase one drawn pixel - restore from window image mpxb. -// px, py are image space. - -void erase_pixel(int px, int py) -{ - static PXB *pxb2 = 0; - static uint8 *pix1, *pix2; - static int rs2, pqx, pqy; - int qx, qy, crflag = 0; - - if (! gdkWin) return; - - if (! pxb2) { - pxb2 = PXB_make(2,2); // 2x2 pixbuf - pix2 = pxb2->pixels; - rs2 = pxb2->rs; - } - - qx = Mscale * px; // image to window space - qy = Mscale * py; - - if (qx == pqx && qy == pqy) return; // avoid same target pixel - - pqx = qx; - pqy = qy; - - if (qx < 0 || qx > Mpxb->ww-2) return; // pixel outside scaled image - if (qy < 0 || qy > Mpxb->hh-2) return; - - if (qx < Morgx || qx > Morgx + dww-2) return; // pixel outside drawing window - if (qy < Morgy || qy > Morgy + dhh-2) return; - - if (! mwcr) { - mwcr = gdk_cairo_create(gdkWin); // create cairo context if not already - crflag = 1; - } - - pix1 = PXBpix(Mpxb,qx,qy); // source pixels, 2x2 block - memcpy(pix2,pix1,6); // copy 2 upper pixels, 6 bytes - memcpy(pix2+rs2,pix1+Mpxb->rs,6); // copy 2 lower pixels - - qx = qx - Morgx + Dorgx; // target pixel in window - qy = qy - Morgy + Dorgy; - gdk_cairo_set_source_pixbuf(mwcr,pxb2->pixbuf,qx,qy); - cairo_paint(mwcr); - - if (crflag) { - cairo_destroy(mwcr); - mwcr = 0; - } - - return; -} - - -/**************************************************************************/ - -// draw line. -// coordinates are image space. - -void draw_line(int x1, int y1, int x2, int y2) -{ - float px1, py1, px2, py2; - int crflag = 0; - - if (! gdkWin) return; - - px1 = Mscale * x1 - Morgx + Dorgx; // image to window space - py1 = Mscale * y1 - Morgy + Dorgy; - px2 = Mscale * x2 - Morgx + Dorgx; - py2 = Mscale * y2 - Morgy + Dorgy; - - if (! mwcr) { - mwcr = gdk_cairo_create(gdkWin); // create cairo context if not already - cairo_set_line_width(mwcr,1); - crflag = 1; - } - - cairo_set_source_rgb(mwcr,1,1,1); - cairo_move_to(mwcr,px1,py1); - cairo_line_to(mwcr,px2,py2); - cairo_stroke(mwcr); - - if (crflag) { - cairo_destroy(mwcr); - mwcr = 0; - } - - return; -} - - -// draw dotted line. -// coordinates are image space. - -void draw_dotline(int x1, int y1, int x2, int y2) -{ - float px1, py1, px2, py2; - double dashes[2] = { 4, 4 }; - int crflag = 0; - - if (! gdkWin) return; - - px1 = Mscale * x1 - Morgx + Dorgx; // image to window space - py1 = Mscale * y1 - Morgy + Dorgy; - px2 = Mscale * x2 - Morgx + Dorgx; - py2 = Mscale * y2 - Morgy + Dorgy; - - if (px1 > Dww-2) px1 = Dww-2; - if (py1 > Dhh-2) py1 = Dhh-2; - if (px2 > Dww-2) px2 = Dww-2; - if (py2 > Dhh-2) py2 = Dhh-2; - - if (! mwcr) { - mwcr = gdk_cairo_create(gdkWin); // create cairo context if not already - cairo_set_line_width(mwcr,1); - crflag = 1; - } - else cairo_save(mwcr); - - cairo_set_source_rgb(mwcr,1,1,1); - cairo_set_dash(mwcr,dashes,2,0); - cairo_move_to(mwcr,px1,py1); - cairo_line_to(mwcr,px2,py2); - cairo_stroke(mwcr); - - if (crflag) { - cairo_destroy(mwcr); - mwcr = 0; - } - else cairo_restore(mwcr); - - return; -} - - -// erase line. refresh line path from mpxb window image. -// double line width is erased. -// coordinates are image space. - -void erase_line(int x1, int y1, int x2, int y2) -{ - float pxm, pym, slope; - int crflag = 0; - - if (! gdkWin) return; - - if (! mwcr) { - mwcr = gdk_cairo_create(gdkWin); // create cairo context if not already - crflag = 1; - } - - if (abs(y2 - y1) > abs(x2 - x1)) { - slope = 1.0 * (x2 - x1) / (y2 - y1); - for (pym = y1; pym <= y2; pym++) { - pxm = x1 + slope * (pym - y1); - erase_pixel(pxm,pym); - } - } - - else { - slope = 1.0 * (y2 - y1) / (x2 - x1); - for (pxm = x1; pxm <= x2; pxm++) { - pym = y1 + slope * (pxm - x1); - erase_pixel(pxm,pym); - } - } - - if (crflag) { - cairo_destroy(mwcr); - mwcr = 0; - } - - return; -} - - -/**************************************************************************/ - -// draw pre-set overlay lines on top of image -// arg = 1: paint lines only (because window repainted) -// 2: erase lines and forget them -// 3: erase old lines, paint new lines, save new in old - -void draw_toplines(int arg) -{ - int ii, crflag = 0; - - if (! gdkWin) return; - - if (! mwcr) { - mwcr = gdk_cairo_create(gdkWin); // create cairo context if not already - cairo_set_line_width(mwcr,1); - crflag = 1; - } - - if (arg == 2 || arg == 3) // erase old lines - for (ii = 0; ii < Nptoplines; ii++) - erase_line(ptoplinex1[ii],ptopliney1[ii],ptoplinex2[ii],ptopliney2[ii]); - - if (arg == 1 || arg == 3) // draw new lines - for (ii = 0; ii < Ntoplines; ii++) - draw_dotline(toplinex1[ii],topliney1[ii],toplinex2[ii],topliney2[ii]); - - if (crflag) { - cairo_destroy(mwcr); - mwcr = 0; - } - - if (arg == 2) { - Nptoplines = Ntoplines = 0; // forget lines - return; - } - - for (ii = 0; ii < Ntoplines; ii++) // save for future erase - { - ptoplinex1[ii] = toplinex1[ii]; - ptopliney1[ii] = topliney1[ii]; - ptoplinex2[ii] = toplinex2[ii]; - ptopliney2[ii] = topliney2[ii]; - } - - Nptoplines = Ntoplines; - - return; -} - - -/**************************************************************************/ - -// draw a grid of horizontal and vertical lines. -// grid line spacings are in window space. - -void draw_gridlines() -{ - int px, py, stepx, stepy, startx, starty; - int crflag = 0, G = currgrid; - - if (! gdkWin) return; - if (! Fpxb) return; // no image - if (! gridsettings[G][GON]) return; // grid lines off - - stepx = gridsettings[G][GXS]; // space between grid lines - stepy = gridsettings[G][GYS]; // (window space) - - if (gridsettings[G][GXC]) - stepx = dww / (1 + gridsettings[G][GXC]); // if line counts specified, - if (gridsettings[G][GYC]) // set spacing accordingly - stepy = dhh / ( 1 + gridsettings[G][GYC]); - - startx = stepx * gridsettings[G][GXF] / 100; // variable offsets - if (startx < 0) startx += stepx; - - starty = stepy * gridsettings[G][GYF] / 100; - if (starty < 0) starty += stepy; - - if (! mwcr) { - mwcr = gdk_cairo_create(gdkWin); // create cairo context if not already - cairo_set_line_width(mwcr,1); - crflag = 1; - } - - cairo_set_source_rgb(mwcr,1,1,1); // white lines - - if (gridsettings[G][GX] && stepx) - for (px = Dorgx+startx; px < Dorgx+dww; px += stepx) { - cairo_move_to(mwcr,px,Dorgy); - cairo_line_to(mwcr,px,Dorgy+dhh); - } - - if (gridsettings[G][GY] && stepy) - for (py = Dorgy+starty; py < Dorgy+dhh; py += stepy) { - cairo_move_to(mwcr,Dorgx,py); - cairo_line_to(mwcr,Dorgx+dww,py); - } - - cairo_stroke(mwcr); - - cairo_set_source_rgb(mwcr,0,0,0); // adjacent black lines - - if (gridsettings[G][GX] && stepx) - for (px = Dorgx+startx+1; px < Dorgx+dww; px += stepx) { - cairo_move_to(mwcr,px,Dorgy); - cairo_line_to(mwcr,px,Dorgy+dhh); - } - - if (gridsettings[G][GY] && stepy) - for (py = Dorgy+starty+1; py < Dorgy+dhh; py += stepy) { - cairo_move_to(mwcr,Dorgx,py); - cairo_line_to(mwcr,Dorgx+dww,py); - } - - cairo_stroke(mwcr); - - if (crflag) { - cairo_destroy(mwcr); - mwcr = 0; - } - - return; -} - - -/**************************************************************************/ - -// maintain a set of text strings written over the image in the window. -// add a new text string to the list. -// multiple text strings can be added with the same ID. -// px and py are image space. - -void add_toptext(int ID, int px, int py, cchar *text, cchar *font) -{ - if (Ntoptext == maxtoptext) { - printf("*** maxtoptext exceeded \n"); - return; - } - - int ii = Ntoptext++; - toptext[ii].ID = ID; - toptext[ii].px = px; - toptext[ii].py = py; - toptext[ii].text = text; - toptext[ii].font = font; - - return; -} - - -// draw current text strings over the image in window. -// called from mwpaint1(). - -void draw_toptext() -{ - int crflag = 0; - - if (! gdkWin) return; - - if (! mwcr) { - mwcr = gdk_cairo_create(gdkWin); // create cairo context if not already - cairo_set_line_width(mwcr,1); - crflag = 1; - } - - for (int ii = 0; ii < Ntoptext; ii++) - draw_text(toptext[ii].px,toptext[ii].py,toptext[ii].text,toptext[ii].font); - - if (crflag) { - cairo_destroy(mwcr); - mwcr = 0; - } - - return; -} - - -// delete text strings having the given ID from the list - -void erase_toptext(int ID) -{ - int ii, jj; - - for (ii = jj = 0; ii < Ntoptext; ii++) - { - if (toptext[ii].ID == ID) continue; - else toptext[jj++] = toptext[ii]; - } - - Ntoptext = jj; - return; -} - - -// draw text on window, black on white background -// coordinates are image space - -void draw_text(int px, int py, cchar *text, cchar *font) -{ - static PangoFontDescription *pangofont = null; - static PangoLayout *pangolayout = null; - static char priorfont[40] = ""; - int ww, hh, crflag = 0; - - if (! gdkWin) return; - - px = Mscale * px - Morgx + Dorgx; // image to window space - py = Mscale * py - Morgy + Dorgy; - - if (strNeq(font,priorfont)) { // change font - strncpy0(priorfont,font,40); - if (pangofont) pango_font_description_free(pangofont); - if (pangolayout) g_object_unref(pangolayout); - pangofont = pango_font_description_from_string(font); // make pango layout for font - pangolayout = gtk_widget_create_pango_layout(cDwin,0); - pango_layout_set_font_description(pangolayout,pangofont); - } - - pango_layout_set_text(pangolayout,text,-1); // add text to layout - pango_layout_get_pixel_size(pangolayout,&ww,&hh); - - if (! mwcr) { - mwcr = gdk_cairo_create(gdkWin); // create cairo context if not already - cairo_set_line_width(mwcr,1); - crflag = 1; - } - - cairo_set_source_rgb(mwcr,1,1,1); // draw white background - cairo_rectangle(mwcr,px,py,ww,hh); - cairo_fill(mwcr); - - cairo_move_to(mwcr,px,py); // draw layout with text - cairo_set_source_rgb(mwcr,0,0,0); - pango_cairo_show_layout(mwcr,pangolayout); - - if (crflag) { - cairo_destroy(mwcr); - mwcr = 0; - } - - return; -} - - -/**************************************************************************/ - -// maintain a set of circles drawn over the image in the window -// px, py are image space, radius is window space -// color = 1/2/3/4 = white/black/red/green - -void add_topcircle(int px, int py, int radius, int color) -{ - if (Ntopcircles == maxtopcircles) { - printf("*** maxtopcircles exceeded \n"); - return; - } - - int ii = Ntopcircles++; - topcircles[ii].px = px; - topcircles[ii].py = py; - topcircles[ii].radius = radius; - topcircles[ii].color = color; - - return; -} - - -// draw current circles over the image in the window -// called from mwpaint1() - -void draw_topcircles() -{ - int ii, px, py, rad, color; - int crflag = 0; - - if (! gdkWin) return; - - if (! mwcr) { - mwcr = gdk_cairo_create(gdkWin); // create cairo context if not already - cairo_set_line_width(mwcr,1); - crflag = 1; - } - - for (ii = 0; ii < Ntopcircles; ii++) - { - px = topcircles[ii].px * Mscale - Morgx + Dorgx; // image to window space - py = topcircles[ii].py * Mscale - Morgy + Dorgy; - rad = topcircles[ii].radius; // radius is window space - color = topcircles[ii].color; // 1/2/3/4 = white/black/red/green - - if (color == 1) cairo_set_source_rgb(mwcr,1,1,1); // set foreground color - else if (color == 2) cairo_set_source_rgb(mwcr,0,0,0); - else if (color == 3) cairo_set_source_rgb(mwcr,1,0,0); - else cairo_set_source_rgb(mwcr,0,1,0); - - cairo_arc(mwcr,px,py,rad,0,2*pi); // draw 360 deg. arc - cairo_stroke(mwcr); - } - - if (crflag) { - cairo_destroy(mwcr); - mwcr = 0; - } - - return; -} - - -// erase top circles (next window repaint) - -void erase_topcircles() -{ - Ntopcircles = 0; - return; -} - - -/**************************************************************************/ - -// Draw circle or ellipse around the mouse pointer. -// Prior circle/ellipse will be erased first. -// Used for mouse/brush radius in select/paint functions. -// cx, cy, cww, chh: center and axis sizes in image space. -// if cx == -1 then erase previous circle/ellipse only. - -void draw_mousearc(int cx, int cy, int cww, int chh) -{ - int px3, py3, ww3, hh3; - static int ppx3 = -1, ppy3, pww3, phh3; - int px, py, ww, hh, cc, rs; - int xlo, xhi, ylo, yhi; - uint8 *pix1, *pix2, *pix1r, *pix2r; - int crflag = 0; - GdkPixbuf *pixbuf; - - float fcx, fcy; - float a, b, a2, b2; - float x, y, x2, y2; - float r2 = 1.42; - - if (! gdkWin) return; - - if (ppx3 >= 0) { // erase prior circle - mwpaint4(ppx3,ppy3,pww3,phh3); // refresh from mpxb - if (Fshowarea) - sa_show_rect(ppx3,ppy3,pww3,phh3); // refresh select area outline - ppx3 = -1; - } - - if (cx < 0) return; // erase only was wanted - - px3 = cx - (cww + 1) / 2; // convert center + axis sizes - py3 = cy - (chh + 1) / 2; // to block position, width, length - ww3 = cww + 2; - hh3 = chh + 2; - - if (px3 < 0) { - ww3 += px3; - px3 = 0; - } - - if (py3 < 0) { - hh3 += py3; - py3 = 0; - } - - ppx3 = px3; // remember block area for - ppy3 = py3; // for possible erase call - pww3 = ww3; - phh3 = hh3; - - px = Mscale * px3; // 1x image space to mpxb space - py = Mscale * py3; - ww = Mscale * ww3; - hh = Mscale * hh3; - - xlo = px; // convert to x/y low/high limits - ylo = py; - xhi = xlo + ww; - yhi = ylo + hh; - - if (xlo < Morgx) xlo = Morgx; // truncate to visible window - if (ylo < Morgy) ylo = Morgy; - if (xhi > Morgx + dww) xhi = Morgx + dww; - if (yhi > Morgy + dhh) yhi = Morgy + dhh; - - ww = xhi - xlo; - hh = yhi - ylo; - - if (ww <= 0 || hh <= 0) { - ppx3 = -1; // completely outside visible window - return; - } - - cc = (ww+1) * (hh+1) * 3; // size of mpxb area to copy v.13.04 - - pix1 = PXBpix(Mpxb,xlo,ylo); // pix1 block within mpxb - source - pix2 = (uint8 *) zmalloc(cc,"mousearc"); // allocate pix2 block - destination - - pix1r = pix1; // row addresses - pix2r = pix2; - - for (py = 0; py < hh; py++) // copy pix1 block to pix2 - { - memmove(pix2r,pix1r,ww*3); - pix1r += Mpxb->rs; - pix2r += ww * 3; - } - - fcx = cx * Mscale; // ellipse center within mpxb - fcy = cy * Mscale; - fcx -= xlo; // center within pix2 block - fcy -= ylo; - - a = 0.5 * cww * Mscale - 1; // ellipse constants from - b = 0.5 * chh * Mscale - 1; // enclosing rectangle - a2 = a * a; - b2 = b * b; - - for (y = -b/r2; y < b/r2; y++) // step through y values - { - y2 = y * y; - x2 = a2 * (1 - y2 / b2); - x = sqrt(x2); // corresp. x values, + and - - py = y + fcy + 0.5; - if (py < 0 || py > hh-1) continue; - px = fcx - x + 0.5; - if (px >= 0) { - pix1 = pix2 + (py * ww + px) * 3; - pix1[0] = fg_color[0]; - pix1[1] = fg_color[1]; - pix1[2] = fg_color[2]; - } - px = fcx + x + 0.5; - if (px < ww) { - pix1 = pix2 + (py * ww + px) * 3; - pix1[0] = fg_color[0]; - pix1[1] = fg_color[1]; - pix1[2] = fg_color[2]; - } - } - - for (x = -a/r2; x < a/r2; x++) // step through x values - { - x2 = x * x; - y2 = b2 * (1 - x2 / a2); - y = sqrt(y2); // corresp. y values, + and - - px = x + fcx + 0.5; - if (px < 0 || px > ww-1) continue; - py = fcy - y + 0.5; - if (py >= 0) { - pix1 = pix2 + (py * ww + px) * 3; - pix1[0] = fg_color[0]; - pix1[1] = fg_color[1]; - pix1[2] = fg_color[2]; - } - py = fcy + y + 0.5; - if (py < hh) { - pix1 = pix2 + (py * ww + px) * 3; - pix1[0] = fg_color[0]; - pix1[1] = fg_color[1]; - pix1[2] = fg_color[2]; - } - } - - if (! mwcr) { - mwcr = gdk_cairo_create(gdkWin); // create cairo context if not already - crflag = 1; - } - - rs = ww * 3; // pix2 row stride - pixbuf = gdk_pixbuf_new_from_data(pix2,GDKRGB,0,8,ww,hh,rs,0,0); // pixbuf for image pix2 - - px = xlo - Morgx + Dorgx; // area position in drawing window - py = ylo - Morgy + Dorgy; - - gdk_cairo_set_source_pixbuf(mwcr,pixbuf,px,py); // draw area to window - cairo_paint(mwcr); - - g_object_unref(pixbuf); // free memory - zfree(pix2); - - if (Fshowarea) - sa_show_rect(px3,py3,ww3,hh3); // refresh select area outline - - if (crflag) { - cairo_destroy(mwcr); - mwcr = 0; - } - - return; -} - - -/************************************************************************** - - spline curve setup and edit functions - - Support multiple frames with curves in parallel - (edit curve(s) and image mask curve) - - Usage: - Add frame widget to dialog or zdialog. - Set up drawing in frame: - sd = curve_init(frame, callback_func) - Initialize no. of curves in frame (1-10): - sd->Nspc = n - Initialize vert/horz flag for curve spc: - sd->vert[spc] = hv - Initialize anchor points for curve spc: - sd->nap[spc], sd->apx[spc][xx], sd->apy[spc][yy] - Generate data for curve spc: - splcurve_generate(sd,spc) - Curves will now be shown and edited inside the frame when window is realized. - The callback_func(spc) will be called when curve spc is edited. - Change curve in program: - set anchor points, call splcurve_generate(sd,spc) - Get y-value (0-1) for curve spc and given x-value (0-1): - yval = splcurve_yval(sd,spc,xval) - If faster access to curve is needed (no interpolation): - kk = 1000 * xval; - if (kk > 999) kk = 999; - yval = sd->yval[spc][kk]; - -***/ - -// initialize for spline curve editing -// initial anchor points are pre-loaded into spldat before window is realized - -spldat * splcurve_init(GtkWidget *frame, void func(int spc)) -{ - int cc = sizeof(spldat); // allocate spc curve data area - spldat * sd = (spldat *) zmalloc(cc,"curvedat"); - memset(sd,0,cc); - - sd->drawarea = gtk_drawing_area_new(); // drawing area for curves - gtk_container_add(GTK_CONTAINER(frame),sd->drawarea); - sd->spcfunc = func; // user callback function - - gtk_widget_add_events(sd->drawarea,GDK_BUTTON_PRESS_MASK); // connect mouse events to drawing area - gtk_widget_add_events(sd->drawarea,GDK_BUTTON_RELEASE_MASK); - gtk_widget_add_events(sd->drawarea,GDK_BUTTON1_MOTION_MASK); - G_SIGNAL(sd->drawarea,"motion-notify-event",splcurve_adjust,sd); - G_SIGNAL(sd->drawarea,"button-press-event",splcurve_adjust,sd); - G_SIGNAL(sd->drawarea,"draw",splcurve_draw,sd); - - return sd; -} - - -// modify anchor points in curve using mouse - -int splcurve_adjust(void *, GdkEventButton *event, spldat *sd) -{ - int ww, hh, kk; - int mx, my, button, evtype; - static int spc, ap, mbusy = 0, Fdrag = 0; // drag continuation logic - int minspc, minap; - float mxval, myval, cxval, cyval; - float dist2, mindist2 = 0; - - mx = event->x; // mouse position in drawing area - my = event->y; - evtype = event->type; - button = event->button; - - if (evtype == GDK_MOTION_NOTIFY) { - if (mbusy) return 0; // discard excess motion events - mbusy++; - zmainloop(); - mbusy = 0; - } - - if (evtype == GDK_BUTTON_RELEASE) { - Fdrag = 0; - return 0; - } - - ww = gtk_widget_get_allocated_width(sd->drawarea); // drawing area size - hh = gtk_widget_get_allocated_height(sd->drawarea); - - if (mx < 0) mx = 0; // limit edge excursions - if (mx > ww) mx = ww; - if (my < 0) my = 0; - if (my > hh) my = hh; - - if (evtype == GDK_BUTTON_PRESS) Fdrag = 0; // left or right click - - if (Fdrag) // continuation of drag - { - if (sd->vert[spc]) { - mxval = 1.0 * my / hh; // mouse position in curve space - myval = 1.0 * mx / ww; - } - else { - mxval = 1.0 * mx / ww; - myval = 1.0 * (hh - my) / hh; - } - - if (ap < sd->nap[spc]-1 && sd->apx[spc][ap+1] - mxval < 0.05) // disallow < 0.05 from next - return 0; - if (ap > 0 && mxval - sd->apx[spc][ap-1] < 0.05) return 0; // or prior anchor point - } - - else // mouse click or new drag begin - { - minspc = minap = -1; // find closest curve/anchor point - mindist2 = 999999; - - for (spc = 0; spc < sd->Nspc; spc++) // loop curves - { - if (sd->vert[spc]) { - mxval = 1.0 * my / hh; // mouse position in curve space - myval = 1.0 * mx / ww; - } - else { - mxval = 1.0 * mx / ww; - myval = 1.0 * (hh - my) / hh; - } - - for (ap = 0; ap < sd->nap[spc]; ap++) // loop anchor points - { - cxval = sd->apx[spc][ap]; - cyval = sd->apy[spc][ap]; - dist2 = (mxval-cxval)*(mxval-cxval) - + (myval-cyval)*(myval-cyval); - if (dist2 < mindist2) { - mindist2 = dist2; // remember closest anchor point - minspc = spc; - minap = ap; - } - } - } - - if (minspc < 0) return 0; // impossible - spc = minspc; - ap = minap; - } - - if (evtype == GDK_BUTTON_PRESS && button == 3) // right click, remove anchor point - { - if (sqrt(mindist2) > 0.05) return 0; // not close enough - if (sd->nap[spc] < 3) return 0; // < 2 anchor points would remain - sd->nap[spc]--; // decr. before loop - for (kk = ap; kk < sd->nap[spc]; kk++) { - if (! kk) printf("meaningless reference %d",kk); // stop gcc optimization bug ///// - sd->apx[spc][kk] = sd->apx[spc][kk+1]; - sd->apy[spc][kk] = sd->apy[spc][kk+1]; - } - splcurve_generate(sd,spc); // regenerate data for modified curve - gtk_widget_queue_draw(sd->drawarea); - sd->spcfunc(spc); // call user function - return 0; - } - - if (! Fdrag) // new drag or left click - { - if (sd->vert[spc]) { - mxval = 1.0 * my / hh; // mouse position in curve space - myval = 1.0 * mx / ww; - } - else { - mxval = 1.0 * mx / ww; - myval = 1.0 * (hh - my) / hh; - } - - if (sqrt(mindist2) < 0.05) // existing point close enough, - { // move this anchor point to mouse - if (ap < sd->nap[spc]-1 && sd->apx[spc][ap+1] - mxval < 0.05) - return 0; // disallow < 0.05 from next - if (ap > 0 && mxval - sd->apx[spc][ap-1] < 0.05) return 0; // or prior anchor point - } - - else // none close, add new anchor point - { - minspc = -1; // find closest curve to mouse - mindist2 = 999999; - - for (spc = 0; spc < sd->Nspc; spc++) // loop curves - { - if (sd->vert[spc]) { - mxval = 1.0 * my / hh; // mouse position in curve space - myval = 1.0 * mx / ww; - } - else { - mxval = 1.0 * mx / ww; - myval = 1.0 * (hh - my) / hh; - } - - cyval = splcurve_yval(sd,spc,mxval); - dist2 = fabsf(myval - cyval); - if (dist2 < mindist2) { - mindist2 = dist2; // remember closest curve - minspc = spc; - } - } - - if (minspc < 0) return 0; // impossible - if (mindist2 > 0.05) return 0; // not close enough to any curve - spc = minspc; - - if (sd->nap[spc] > 49) { - zmessageACK(mWin,0,ZTX("Exceed 50 anchor points")); - return 0; - } - - if (sd->vert[spc]) { - mxval = 1.0 * my / hh; // mouse position in curve space - myval = 1.0 * mx / ww; - } - else { - mxval = 1.0 * mx / ww; - myval = 1.0 * (hh - my) / hh; - } - - for (ap = 0; ap < sd->nap[spc]; ap++) // find anchor point with next higher x - if (mxval <= sd->apx[spc][ap]) break; // (ap may come out 0 or nap) - - if (ap < sd->nap[spc] && sd->apx[spc][ap] - mxval < 0.05) // disallow < 0.05 from next - return 0; // or prior anchor point - if (ap > 0 && mxval - sd->apx[spc][ap-1] < 0.05) return 0; - - for (kk = sd->nap[spc]; kk > ap; kk--) { // make hole for new point - sd->apx[spc][kk] = sd->apx[spc][kk-1]; - sd->apy[spc][kk] = sd->apy[spc][kk-1]; - } - - sd->nap[spc]++; // up point count - } - } - - sd->apx[spc][ap] = mxval; // new or moved anchor point - sd->apy[spc][ap] = myval; // at mouse position - - splcurve_generate(sd,spc); // regenerate data for modified curve - gtk_widget_queue_draw(sd->drawarea); - sd->spcfunc(spc); // call user function - - if (evtype == GDK_MOTION_NOTIFY) Fdrag = 1; // remember drag is underway - return 0; -} - - -// for expose event or when a curve is changed -// draw all curves based on current anchor points - -int splcurve_draw(GtkWidget *drawarea, cairo_t *cr, spldat *sd) -{ - int ww, hh, spc, ap; - float xval, yval, px, py, qx, qy; - - ww = gtk_widget_get_allocated_width(sd->drawarea); // drawing area size - hh = gtk_widget_get_allocated_height(sd->drawarea); - if (ww < 50 || hh < 50) return 0; - - cairo_set_line_width(cr,1); - cairo_set_source_rgb(cr,0.7,0.7,0.7); - - for (int ii = 0; ii < sd->Nscale; ii++) // draw y-scale lines if any - { - px = ww * sd->xscale[0][ii]; - py = hh - hh * sd->yscale[0][ii]; - qx = ww * sd->xscale[1][ii]; - qy = hh - hh * sd->yscale[1][ii]; - cairo_move_to(cr,px,py); - cairo_line_to(cr,qx,qy); - } - cairo_stroke(cr); - - cairo_set_source_rgb(cr,0,0,0); - - for (spc = 0; spc < sd->Nspc; spc++) // loop all curves - { - if (sd->vert[spc]) // vert. curve - { - for (py = 0; py < hh; py++) // generate all points for curve - { - xval = 1.0 * py / hh; - yval = splcurve_yval(sd,spc,xval); - px = ww * yval; - if (py == 0) cairo_move_to(cr,px,py); - cairo_line_to(cr,px,py); - } - cairo_stroke(cr); - - for (ap = 0; ap < sd->nap[spc]; ap++) // draw boxes at anchor points - { - xval = sd->apx[spc][ap]; - yval = sd->apy[spc][ap]; - px = ww * yval; - py = hh * xval; - cairo_rectangle(cr,px-2,py-2,4,4); - } - cairo_fill(cr); - } - else // horz. curve - { - for (px = 0; px < ww; px++) // generate all points for curve - { - xval = 1.0 * px / ww; - yval = splcurve_yval(sd,spc,xval); - py = hh - hh * yval; - if (px == 0) cairo_move_to(cr,px,py); - cairo_line_to(cr,px,py); - } - cairo_stroke(cr); - - for (ap = 0; ap < sd->nap[spc]; ap++) // draw boxes at anchor points - { - xval = sd->apx[spc][ap]; - yval = sd->apy[spc][ap]; - px = ww * xval; - py = hh - hh * yval; - cairo_rectangle(cr,px-2,py-2,4,4); - } - cairo_fill(cr); - } - } - - return 0; -} - - -// generate all curve data points when anchor points are modified - -int splcurve_generate(spldat *sd, int spc) -{ - int kk, kklo, kkhi; - float xval, yvalx; - - spline1(sd->nap[spc],sd->apx[spc],sd->apy[spc]); // compute curve fitting anchor points - - kklo = 1000 * sd->apx[spc][0] - 30; // xval range = anchor point range - if (kklo < 0) kklo = 0; // + 0.03 extra below/above - kkhi = 1000 * sd->apx[spc][sd->nap[spc]-1] + 30; - if (kkhi > 1000) kkhi = 1000; - - for (kk = 0; kk < 1000; kk++) // generate all points for curve - { - xval = 0.001 * kk; // remove anchor point limits - yvalx = spline2(xval); - if (yvalx < 0) yvalx = 0; // yval < 0 not allowed, > 1 OK - sd->yval[spc][kk] = yvalx; - } - - return 0; -} - - -// Retrieve curve data using interpolation of saved table of values - -float splcurve_yval(spldat *sd, int spc, float xval) -{ - int ii; - float x1, x2, y1, y2, y3; - - if (xval <= 0) return sd->yval[spc][0]; - if (xval >= 0.999) return sd->yval[spc][999]; - - x2 = 1000.0 * xval; - ii = x2; - x1 = ii; - y1 = sd->yval[spc][ii]; - y2 = sd->yval[spc][ii+1]; - y3 = y1 + (y2 - y1) * (x2 - x1); - return y3; -} - - -// load curve data from a file -// returns 0 if fail (invalid file data), sd not modified -// returns 1 if succcess, sd is initialized from file data - -int splcurve_load(spldat *sd) -{ - char *pfile; - int nn, ii, jj; - FILE *fid = 0; - int Nspc, vert[10], nap[10]; - float apx[10][50], apy[10][50]; - - F1_help_topic = "curve_edit"; - - pfile = zgetfile1(ZTX("load curve from a file"),"open",saved_curves_dirk); - if (! pfile) return 0; - - fid = fopen(pfile,"r"); - zfree(pfile); - if (! fid) goto fail; - - nn = fscanf(fid,"%d ",&Nspc); // no. of curves - if (nn != 1) goto fail; - if (Nspc < 1 || Nspc > 10) goto fail; - if (Nspc != sd->Nspc) goto fail2; - - for (ii = 0; ii < Nspc; ii++) // loop each curve - { - nn = fscanf(fid,"%d %d ",&vert[ii],&nap[ii]); // vertical flag, no. anchor points - if (nn != 2) goto fail; - if (vert[ii] < 0 || vert[ii] > 1) goto fail; - if (nap[ii] < 2 || nap[ii] > 50) goto fail; - - for (jj = 0; jj < nap[ii]; jj++) // anchor point values - { - nn = fscanf(fid,"%f/%f ",&apx[ii][jj],&apy[ii][jj]); - if (nn != 2) goto fail; - if (apx[ii][jj] < 0 || apx[ii][jj] > 1) goto fail; - if (apy[ii][jj] < 0 || apy[ii][jj] > 1) goto fail; - } - } - - fclose(fid); - - sd->Nspc = Nspc; // copy curve data to caller's arg - - for (ii = 0; ii < Nspc; ii++) - { - sd->vert[ii] = vert[ii]; - sd->nap[ii] = nap[ii]; - - for (jj = 0; jj < nap[ii]; jj++) - { - sd->apx[ii][jj] = apx[ii][jj]; - sd->apy[ii][jj] = apy[ii][jj]; - } - } - - for (ii = 0; ii < Nspc; ii++) // generate curve data from anchor points - splcurve_generate(sd,ii); - - if (sd->drawarea) // regen and redraw all curves - gtk_widget_queue_draw(sd->drawarea); - - return 1; - -fail: - if (fid) fclose(fid); - zmessageACK(mWin,0,ZTX("curve file is invalid")); - return 0; - -fail2: - if (fid) fclose(fid); - zmessageACK(mWin,0,ZTX("curve file has different no. of curves")); - return 0; -} - - -// save curve data to a file - -int splcurve_save(spldat *sd) -{ - char *pfile, *pp; - int ii, jj; - FILE *fid; - - F1_help_topic = "curve_edit"; - - pp = zgetfile1(ZTX("save curve to a file"),"save",saved_curves_dirk); - if (! pp) return 0; - - pfile = strdupz(pp,8,"splcurve"); - zfree(pp); - - pp = strrchr(pfile,'/'); // force .curve extension - if (pp) pp = strrchr(pp,'.'); - if (pp) strcpy(pp,".curve"); - else strcat(pfile,".curve"); - - fid = fopen(pfile,"w"); - zfree(pfile); - if (! fid) return 0; - - fprintf(fid,"%d \n",sd->Nspc); // no. of curves - - for (ii = 0; ii < sd->Nspc; ii++) // loop each curve - { - fprintf(fid,"%d %d \n",sd->vert[ii],sd->nap[ii]); // vertical flag, no. anchor points - for (jj = 0; jj < sd->nap[ii]; jj++) // anchor point values - fprintf(fid,"%.4f/%.4f ",sd->apx[ii][jj],sd->apy[ii][jj]); - fprintf(fid,"\n"); - } - - fclose(fid); - return 0; -} - - -/************************************************************************** - - edit transaction and thread support functions (comments updated v.13.04) - - edit transaction management - edit_setup() get E0 if none, E0 > E1 > E3 - edit_restart() cancel + setup, keep zdialog, etc. - edit_cancel() free (E1 E3 ER) - edit_done() E3 > E0, free (E1 ER) add to undo stack - edit_commit() edit_done() and edit_setup() - edit_undo() E3 > ER, E1 > E3 - edit_redo() ER > E3 - edit_reset() free ER, E1 > E3 - edit_fullsize() free (E1 E3) E0 > E1 > E3, signal thread - - main level thread management - start_thread(func,arg) start thread running - signal_thread() signal thread that work is pending - wait_thread_idle(block) wait for pending work complete - wrapup_thread(command, block) wait for exit or command thread exit - - thread function - thread_idle_loop() wait for pending work, exit if commanded - thread_exit() exit thread unconditionally - - thread_status (thread ownership - 0 no thread is running - 1 thread is running and idle (no work) - 2 thread is working - 0 thread has exited - - thread_command (main program ownership) - 0 idle, no work pending - 8 exit when pending work is done - 9 exit now, unconditionally - - thread_pend work requested counter - thread_done work done counter - thread_hiwater high water mark - -***************************************************************************/ - - -/************************************************************************** - - Setup for a new edit transaction - Create E1 (edit input) and E3 (edit output) pixmaps from - previous edit (E0) or image file (new E0). - - Fprev 0 edit full-size image - 1 edit preview image unless select area exists - - Farea 0 select_area is invalid and will be deleted (e.g. rotate) - 1 select_area not used but remains valid (e.g. red-eye) - 2 select_area can be used and remains valid (e.g. tune) - -***************************************************************************/ - - -int edit_setup(editfunc &EF) -{ - int yn, rww, rhh; - int Fpreview; - - if (! curr_file) return 0; // no image file - if (cTab != tabF) return 0; // could be Favorites menu - - if (CEF) { // prior edit function active - zmessageACK(mWin,0,ZTX("prior function still active")); // parallel edit removed - return 0; - } - - if (checkmenulock()) return 0; // check no menu lock - - if (URS_pos > maxedits-2) { // undo/redo stack capacity reached - zmessageACK(mWin,0,ZTX("Too many edits, please save image")); - return 0; - } - - sa_validate(); // delete area if not valid - - if (EF.Farea == 0 && sa_stat) { // select area will be lost, warn user - yn = zmessageYN(mWin,ZTX("Select area cannot be kept.\n" - "Continue?")); - if (! yn) return 0; - sa_unselect(); // unselect area - zdialog_free(zdsela); - } - - if (EF.Farea == 2 && sa_stat && sa_stat != 3) { // select area exists and can be used, - yn = zmessageYN(mWin,ZTX("Select area not active.\n" // but not active, ask user - "Continue?")); - if (! yn) return 0; - } - - if (! E0pxm) { // first edit for this file - E0pxm = PXM_load(curr_file,1); // get E0 image (poss. 16-bit color) - if (! E0pxm) return 0; - PXM_fixblue(E0pxm); // blue=0 >> blue=1 for vpixel() - curr_file_bpc = f_load_bpc; - } - - if (! menulock(1)) return 0; // can now commit, lock menu - - if (URS_pos == 0) save_undo(); // initial image >> undo/redo stack - - mutex_lock(&Fpixmap_lock); // lock pixmaps - - Fpreview = 0; // no preview - - if (EF.Fprev && ! Fzoom && ! (EF.Farea == 2 && sa_stat == 3)) // use preview if req. and no select area - Fpreview = 1; - - if (E0pxm->ww * E0pxm->hh < 2000000) // if image is small, don't use preview - Fpreview = 0; // v.13.04 - - if (E0pxm->ww < 1.4 * Dww && E0pxm->hh < 1.4 * Dhh) // if image slightly larger than window, - Fpreview = 0; // don't use preview - - if (Fpreview) { - if (Fpxb->ww * Dhh > Fpxb->hh * Dww) { // use preview image 1.4 * window size - rww = 1.4 * Dww; - if (rww < 1200) rww = 1200; // at least 1200 on one side - rhh = 1.0 * rww * Fpxb->hh / Fpxb->ww + 0.5; - } - else { - rhh = 1.4 * Dhh; - if (rhh < 1200) rhh = 1200; - rww = 1.0 * rhh * Fpxb->ww / Fpxb->hh + 0.5; - } - if (rww > Fpxb->ww) Fpreview = 0; - } - - if (Fpreview) { - E1pxm = PXM_rescale(E0pxm,rww,rhh); // scale edit image to preview size - sa_show(0); // hide select area if present - } - else E1pxm = PXM_copy(E0pxm); // else use full size image - - E3pxm = PXM_copy(E1pxm); // E1 >> E3 - - mutex_unlock(&Fpixmap_lock); - - CEF = &EF; // set current edit function - CEF->Fmods = 0; // image not modified yet v.13.04 - CEF->Fpreview = Fpreview; - - CEF->thread_command = CEF->thread_status = 0; // no thread running - CEF->thread_pend = CEF->thread_done = CEF->thread_hiwater = 0; // no work pending or done - if (CEF->threadfunc) start_thread(CEF->threadfunc,0); // start edit thread - - mwpaintnow(); // update image data synchronous v.13.04 - - return 1; -} - - -/**************************************************************************/ - -// Restart an edit function with a new current image file. -// Equivalent to edit_cancel() but retain zdialog, curves, mousefunc. -// Then edit_setup() and zdialog_send_event("restart") - -void edit_restart() // v.13.04 -{ - editfunc *cef = CEF; - - if (! CEF) return; // no active edit function - - if (! CEF->Frestart) { - edit_cancel(); // not restartable - return; - } - - wrapup_thread(9,1); // tell thread to quit now, wait - - mutex_lock(&Fpixmap_lock); - PXM_free(E1pxm); // free E1, E3, ER - PXM_free(E3pxm); - PXM_free(ERpxm); - mutex_unlock(&Fpixmap_lock); - - menulock(0); // unlock menu - CEF = 0; // no current edit func - - edit_setup(*cef); // setup same edit func again - if (CEF && CEF->zd) zdialog_send_event(CEF->zd,"restart"); // inform edit func of restart - return; -} - - -/**************************************************************************/ - -// process edit cancel - -void edit_cancel() -{ - if (! CEF) return; - - wrapup_thread(9,1); // tell thread to quit now, wait - - mutex_lock(&Fpixmap_lock); - PXM_free(E1pxm); // free E1, E3, ER - PXM_free(E3pxm); - PXM_free(ERpxm); - mutex_unlock(&Fpixmap_lock); - - if (CEF->zd) zdialog_free(CEF->zd); // kill dialog - CEF->zd = 0; - if (CEF->mousefunc == mouseCBfunc) freeMouse(); // if my mouse, free mouse - CEF->mousefunc = 0; - if (CEF->curves) zfree(CEF->curves); // free curves data - CEF->curves = 0; - CEF = 0; // no current edit func - - mwpaintnow(); // update image data synchronous v.13.04 - - menulock(0); // unlock menu - return; -} - - -/**************************************************************************/ - -// process edit done - -void edit_done() -{ - if (! CEF) return; - - wait_thread_idle(1); // wait for thread to finish - - if (CEF->Fpreview && CEF->Fmods) { // preview image was edited - Fzoom = 0; - edit_fullsize(); // update full image - } - - wrapup_thread(8,1); // tell thread to finish and exit - - mutex_lock(&Fpixmap_lock); - - if (CEF->Fmods) { // image was modified - PXM_free(E0pxm); - E0pxm = E3pxm; // E3 updated image >> E0 - E3pxm = 0; - PXM_free(E1pxm); // free E1, ER - PXM_free(ERpxm); - URS_pos++; // next undo/redo stack position - URS_max = URS_pos; // image modified - higher mods now obsolete - save_undo(); // save undo state (for following undo) - } - - else { // not modified - PXM_free(E1pxm); // free E1, E3, ER - PXM_free(E3pxm); - PXM_free(ERpxm); - } - - mutex_unlock(&Fpixmap_lock); - - if (CEF->zd) zdialog_free(CEF->zd); // kill dialog - CEF->zd = 0; - if (CEF->mousefunc == mouseCBfunc) freeMouse(); // if my mouse, free mouse - CEF->mousefunc = 0; - if (CEF->curves) zfree(CEF->curves); // free curves data - CEF->curves = 0; - CEF = 0; // no current edit func - - mwpaintnow(); // update image data synchronous v.13.04 - - menulock(0); - return; -} - - -/**************************************************************************/ - -// process edit commit -// Like edit_done() but retains zdialog, curves, mousefunc -// then does edit_setup() and zdialog_send_event("restart"). - -void edit_commit() // v.13.07 -{ - editfunc *cef = CEF; - - if (! CEF) return; - - if (! CEF->Frestart) { - edit_cancel(); // not restartable - return; - } - - wait_thread_idle(1); // wait for thread to finish - - if (CEF->Fpreview && CEF->Fmods) { // preview image was edited - Fzoom = 0; - edit_fullsize(); // update full image - } - - wrapup_thread(8,1); // tell thread to finish and exit - - mutex_lock(&Fpixmap_lock); - - if (CEF->Fmods) { // image was modified - PXM_free(E0pxm); - E0pxm = E3pxm; // E3 updated image >> E0 - E3pxm = 0; - PXM_free(E1pxm); // free E1, ER - PXM_free(ERpxm); - URS_pos++; // next undo/redo stack position - URS_max = URS_pos; // image modified - higher mods now obsolete - save_undo(); // save undo state (for following undo) - } - - else { // not modified - PXM_free(E1pxm); // free E1, E3, ER - PXM_free(E3pxm); - PXM_free(ERpxm); - } - - mutex_unlock(&Fpixmap_lock); - - menulock(0); - CEF = 0; // no current edit func - - edit_setup(*cef); // setup same edit func again - if (CEF && CEF->zd) zdialog_send_event(CEF->zd,"restart"); // inform edit func of restart - - return; -} - - -/**************************************************************************/ - -// edit undo, redo, reset functions -// these apply within an active edit function - -void edit_undo() -{ - if (! CEF) return; - - if (CEF->thread_status == 2) return; // thread busy - if (! CEF->Fmods) return; // not modified - - mutex_lock(&Fpixmap_lock); - PXM_free(ERpxm); // E3 >> redo copy - ERpxm = E3pxm; - E3pxm = PXM_copy(E1pxm); // E1 >> E3 - mutex_unlock(&Fpixmap_lock); - - CEF->Fmods = 0; // reset image modified status - mwpaintnow(); // update image data synchronous v.13.04 - return; -} - - -void edit_redo() -{ - if (! CEF) return; - - if (CEF->thread_status == 2) return; // thread busy - if (! ERpxm) return; // no prior undo - - mutex_lock(&Fpixmap_lock); - PXM_free(E3pxm); // redo copy >> E3 - E3pxm = ERpxm; - ERpxm = 0; - mutex_unlock(&Fpixmap_lock); - - CEF->Fmods = 1; // image modified - mwpaintnow(); // update image data synchronous v.13.04 - return; -} - - -void edit_reset() -{ - if (! CEF) return; - - wait_thread_idle(1); // v.13.04 - if (! CEF->Fmods) return; // not modified - - mutex_lock(&Fpixmap_lock); - PXM_free(ERpxm); // delete redo copy - PXM_free(E3pxm); - E3pxm = PXM_copy(E1pxm); // E1 >> E3 - mutex_unlock(&Fpixmap_lock); - - CEF->Fmods = 0; // reset image modified status v.13.04 - mwpaintnow(); // update image data synchronous v.13.04 - return; -} - - -/**************************************************************************/ - -// Convert from preview mode (window-size pixmaps) to full-size pixmaps. -// Can only be used when edit function is in an edit thread with idle_loop. -// This function is called directly from some edit functions. - -void edit_fullsize() -{ - if (! CEF) return; - if (! CEF->Fpreview) return; - - wait_thread_idle(1); // v.13.04 - - mutex_lock(&Fpixmap_lock); - PXM_free(E1pxm); // free preview pixmaps - PXM_free(E3pxm); - E1pxm = PXM_copy(E0pxm); // E0 >> E1, full size image - E3pxm = PXM_copy(E1pxm); // E1 >> E3 - mutex_unlock(&Fpixmap_lock); - - Fzoom = 0; - CEF->Fpreview = 0; // this prevents re-entry - - if (! CEF->Fmods) return; // no change - - if (CEF->thread_status) { - signal_thread(); // signal thread, repeat edit - wait_thread_idle(1); - } - - return; -} - - -/************************************************************************** - undo / redo toolbar buttons -***************************************************************************/ - -// [undo] menu function - reinstate previous edit in undo/redo stack - -void m_undo(GtkWidget *, cchar *) -{ - if (CEF) { // undo active edit - edit_undo(); - return; - } - - if (URS_pos == 0) return; // undo past edit - if (checkmenulock()) return; - URS_pos--; - load_undo(); - return; -} - - -// [redo] menu function - reinstate next edit in undo/redo stack - -void m_redo(GtkWidget *, cchar *) -{ - if (CEF) { // redo active edit - edit_redo(); - return; - } - - if (URS_pos == URS_max) return; // redo past edit - if (checkmenulock()) return; - URS_pos++; - load_undo(); - return; -} - - -// undo all edits of the current image -// (discard modifications) - -void undo_all() -{ - if (CEF) return; // not if edit active v.13.04 - if (URS_pos == 0) return; - if (checkmenulock()) return; - URS_pos = 0; - load_undo(); - return; -} - - -// Save E0 to undo/redo file stack -// stack position = URS_pos - -void save_undo() -{ - char *pp, buff[24]; - int fid, cc, cc2; - - pp = strstr(URS_filename,"_undo_"); // get undo/redo stack filename to use - if (! pp) zappcrash("undo/redo stack corrupted 1"); // /.../.fotoxx/pppppp_undo_nn - snprintf(pp+6,3,"%02d",URS_pos); - - fid = open(URS_filename,O_WRONLY|O_CREAT|O_TRUNC,0640); // create or overwrite - if (! fid) zappcrash("undo/redo stack corrupted 2"); - - snprintf(buff,24," %05d %05d fotoxx ",E0pxm->ww,E0pxm->hh); // write header - cc = write(fid,buff,20); - if (cc != 20) zappcrash("undo/redo stack corrupted 3"); - - cc = E0pxm->ww * E0pxm->hh * 3 * sizeof(float); // write image, ww * hh RGB pixels - cc2 = write(fid,E0pxm->pixels,cc); - if (cc2 != cc) zappcrash("undo/redo stack corrupted 4"); - - close(fid); - - if (URS_pos == 0) { // stack position 0 = original image file - strcpy(URS_funcs[0],"original"); // edit function name for original image - URS_saved[0] = 1; // original image file already on disk - } - else { // stack position - if (! CEF) zappcrash("save_undo() no CEF"); // must have an edit function - strcpy(URS_funcs[URS_pos],CEF->funcname); // edit function name - URS_saved[URS_pos] = 0; // not yet saved to disk - } - - return; -} - - -// Load E0 from undo/redo file stack -// stack position = URS_pos - -void load_undo() -{ - char *pp, buff[24], fotoxx[8]; - int fid, ww, hh, cc, cc2; - - pp = strstr(URS_filename,"_undo_"); - if (! pp) zappcrash("undo/redo stack corrupted 1"); - snprintf(pp+6,3,"%02d",URS_pos); - - fid = open(URS_filename,O_RDONLY); - if (! fid) zappcrash("undo/redo stack corrupted 2"); - - *fotoxx = 0; - cc = read(fid,buff,20); - sscanf(buff," %d %d %8s ",&ww, &hh, fotoxx); - if (! strEqu(fotoxx,"fotoxx")) zappcrash("undo/redo stack corrupted 4"); - - mutex_lock(&Fpixmap_lock); - - PXM_free(E0pxm); - E0pxm = PXM_make(ww,hh); - cc = ww * hh * 12; - cc2 = read(fid,E0pxm->pixels,cc); - if (cc2 != cc) zappcrash("undo/redo stack corrupted 5"); - close(fid); - - mutex_unlock(&Fpixmap_lock); - - sa_validate(); // delete area if invalid - - mwpaintnow(); // update image data synchronous v.13.04 - return; -} - - -/**************************************************************************/ - -// ask user if modified image should be kept or discarded -// returns: 0 = no mods or OK to discard, 1 = keep mods - -int mod_keep() -{ - int Feditspend = 0, choice; - cchar *title = ZTX("Discard edits?"); - cchar *message = ZTX("This action will discard changes\n"); // more clarity - cchar *keep = ZTX("Keep"); - cchar *discard = ZTX("Discard"); - - if (CEF && CEF->Fmods && ! CEF->Fsaved) Feditspend = 1; // active edits unsaved v.13.08 - if (URS_pos > 0 && URS_saved[URS_pos] == 0) Feditspend = 1; // completed edits unsaved v.13.08 - - if (Fmetachanged) Feditspend = 1; // metadata edit unsaved - if (! Feditspend) return 0; - - choice = zdialog_choose(title,mWin,message,keep,discard,null); // ask user for decision - if (choice == 1) return 1; // keep mods - if (CEF) edit_reset(); // discard current edit v.13.04 - if (URS_pos > 0) undo_all(); // undo prior edits v.13.06.2 - Fmetachanged = 0; - return 0; -} - - -/**************************************************************************/ - -// menu lock/unlock - some functions must not run concurrently -// returns 1 if success, else 0 - -int menulock(int lock) -{ - if (! lock && ! Fmenulock) zappcrash("menu lock error"); // unlock and not locked - - if (lock && Fmenulock) { - zmessageACK(mWin,0,ZTX("prior function still active")); - return 0; - } - - if (lock) Fmenulock++; - else Fmenulock--; - return 1; -} - - -// check menu lock and return 0/1 if unlocked/locked -// if locked a user message will have been shown - -int checkmenulock() -{ - if (Fmenulock) zmessageACK(mWin,0,ZTX("prior function still active")); - return Fmenulock; -} - -// same but no message box - -int checkmenulockquiet() -{ - return Fmenulock; -} - - -/**************************************************************************/ - -// zdialog mouse capture and release - -void takeMouse(CBfunc func, GdkCursor *cursor) // capture mouse for dialog -{ - if (! gdkWin) return; - freeMouse(); - mouseCBfunc = func; - Mcapture = 1; - gdk_window_set_cursor(gdkWin,cursor); - return; -} - -void freeMouse() // free mouse for main window -{ - if (! gdkWin) return; - if (! Mcapture) return; - mouseCBfunc = 0; - Mcapture = 0; - draw_mousearc(-1,0,0,0); // remove mouse circle - gdk_window_set_cursor(gdkWin,0); // set normal cursor - return; -} - - -/************************************************************************** - functions to manage working threads -***************************************************************************/ - -// start thread that does the edit work - -void start_thread(threadfunc func, void *arg) -{ - CEF->thread_status = 1; // thread is running - CEF->thread_command = CEF->thread_pend = CEF->thread_done - = CEF->thread_hiwater = 0; // nothing pending - start_detached_thread(func,arg); - return; -} - - -// signal thread that new work is pending - -void signal_thread() -{ - if (CEF->thread_status > 0) CEF->thread_pend++; - return; -} - - -// wait for edit thread to complete pending work and become idle - -void wait_thread_idle(int block) -{ - while (CEF->thread_status && CEF->thread_pend > CEF->thread_done) - { - if (! block) zmainloop(); // v.13.04 - zsleep(0.01); - } - - return; -} - - -// wait for thread exit or command thread exit -// command = 0 wait for normal completion -// 8 finish pending work and exit -// 9 quit, exit now - -void wrapup_thread(int command, int block) -{ - CEF->thread_command = command; // tell thread to quit or finish - - while (CEF->thread_status > 0) // wait for thread to finish - { // pending work and exit - zsleep(0.01); - if (! block) zmainloop(); // v.13.05 - } - - return; -} - - -// called only from edit threads -// idle loop - wait for work request or exit command - -void thread_idle_loop() -{ - if (CEF->thread_status == 2) zadd_locked(Fthreadbusy,-1); - CEF->thread_status = 1; // status = idle - CEF->thread_done = CEF->thread_hiwater; // work done = high-water mark - - while (true) - { - if (CEF->thread_command == 9) thread_exit(); // quit now command - if (CEF->thread_command == 8) // finish work and exit - if (CEF->thread_pend <= CEF->thread_done) thread_exit(); - if (CEF->thread_pend > CEF->thread_done) break; // wait for work request - zsleep(0.01); - } - - CEF->thread_hiwater = CEF->thread_pend; // set high-water mark - CEF->thread_status = 2; // thread is working - zadd_locked(Fthreadbusy,+1); - return; // perform edit -} - - -// exit thread unconditionally, called only from edit threads - -void thread_exit() -{ - wait_wthreads(); // v.13.04 - if (CEF->thread_status == 2) zadd_locked(Fthreadbusy,-1); - CEF->thread_pend = CEF->thread_done = CEF->thread_hiwater = 0; - CEF->thread_status = 0; - pthread_exit(0); // "return" cannot be used here -} - - -/**************************************************************************/ - -// edit support functions for working threads (per processor core) - -void start_wthread(threadfunc func, void *arg) // start thread and increment busy count -{ // may be called from a thread - zadd_locked(Fthreadbusy,+1); - zadd_locked(wthreads_busy,+1); - start_detached_thread(func,arg); - return; -} - - -void exit_wthread() // decrement busy count and exit thread -{ - zadd_locked(Fthreadbusy,-1); - zadd_locked(wthreads_busy,-1); - pthread_exit(0); // "return" cannot be used here -} - - -void wait_wthreads() // wait for all working threads done -{ // may be called from a thread - while (wthreads_busy) { - zsleep(0.01); - zmainloop(10); // v.13.05 - } - - return; -} - - -/************************************************************************** - other support functions -***************************************************************************/ - - -// favorites menu - popup graphic menu with user's favorites - -void m_favorites(GtkWidget *, cchar *) -{ - void favorites_callback(cchar *menu); - char menuconfigfile[200]; - - F1_help_topic = "favorites"; - snprintf(menuconfigfile,200,"%s/menu-config",favorites_dirk); - gmenuz(mWin,menuconfigfile,favorites_callback); - return; -} - - -void favorites_callback(cchar *menu) -{ - int ii; - - settab("F"); // v.13.04 - - for (ii = 0; ii < Nmenus; ii++) - if (strcasecmp(ZTX(menu),ZTX(menutab[ii].menu)) == 0) break; - - if (ii < Nmenus) menutab[ii].func(0,menu); - return; -} - - -// help menu function - -void m_help(GtkWidget *, cchar *menu) -{ - if (strEqu(menu,ZTX("Quick Start"))) - showz_html(quickstart_file); // v.13.06 - - if (strEqu(menu,ZTX("User Guide"))) - showz_userguide(); - - if (strEqu(menu,ZTX("User Guide Changes"))) - showz_userguide("changes"); - - if (strEqu(menu,ZTX("Program Updates"))) - showz_userguide("updates"); - - if (strEqu(menu,ZTX("README"))) - showz_textfile("doc","README"); - - if (strEqu(menu,ZTX("Edit Functions Summary"))) - showz_textfile("data","edit-menus"); - - if (strEqu(menu,ZTX("Change Log"))) - showz_textfile("doc","changelog"); - - if (strEqu(menu,ZTX("Log File"))) - showz_logfile(); - - if (strEqu(menu,ZTX("Translations"))) - showz_textfile("doc","translations"); - - if (strEqu(menu,ZTX("Home Page"))) - showz_html(Fhomepage); - - if (strEqu(menu,ZTX("About"))) // v.13.02 - zmessageACK(mWin,"Fotoxx"," %s\n %s\n %s\n %s\n %s\n %s\n", - Frelease,Flicense,Fhomepage,Fsoftware,Fcontact,Ftranslators); - - if (strEqu(menu,ZTX("Help"))) // toolbar button - showz_userguide(F1_help_topic); // show topic if there, or page 1 - - return; -} - - -/**************************************************************************/ - -// table for loading and saving adjustable parameters between sessions - -typedef struct { - char name[20]; - char type[12]; - int count; - void *location; -} param; - -#define Nparms 30 -param paramTab[Nparms] = { -// name type count location -{ "fotoxx release", "char", 1, &Prelease }, -{ "notified release", "char", 1, &Nrelease }, -{ "first time", "int", 1, &Ffirsttime }, -{ "last sync_time", "char", 1, &last_sync_time }, -{ "file synch needed", "int", 1, &FsyncNeeded }, -{ "use file sync", "int", 1, &FsyncEnabled }, -{ "window geometry", "int", 4, &mwgeom }, -{ "thumbs directory", "char", 1, &thumbdirk }, -{ "use thumbnails", "int", 1, &Fthumbnails }, -{ "thumbnail size", "int", 1, &navi::thumbsize }, -{ "menu style", "char", 1, &menu_style }, -{ "toolbar style", "char", 1, &tbar_style }, -{ "drag option", "int", 1, &Fdragopt }, -{ "warn overwrite", "int", 1, &Fwarnoverwrite }, -{ "zoom count", "int", 1, &zoomcount }, -{ "interpolation", "char", 1, &interpolation }, -{ "startup display", "char", 1, &startdisplay }, -{ "start image file", "char", 1, &startfile }, -{ "start directory", "char", 1, &startdirk }, -{ "grid settings", "int", 60, &gridsettings }, -{ "RAW command", "char", 1, &RAWcommand }, -{ "RAW file types", "char", 1, &RAWfiletypes }, -{ "trim size", "int", 2, &trimsize }, -{ "trim buttons", "char", 6, &trimbuttons }, -{ "trim ratios", "char", 6, &trimratios }, -{ "edit resize", "int", 2, &editresize }, -{ "jpeg def quality", "int", 1, &jpeg_def_quality }, // v.13.08 -{ "lens mm", "float", 1, &lens_mm }, -{ "lens bow", "float", 1, &lens_bow } }; - - -// save parameters to file /.../.fotoxx/parameters - -void save_params() -{ - FILE *fid; - char buff[1050], text[1000]; // limit for character data cc - char *name, *type, *pp; - int count; - void *location; - char **charloc; - int *intloc; - float *floatloc; - time_t currtime; - -// Set last sync time = NOW = time of fotoxx exit. Orphan thumbnails may not be -// deleted until until some file is created or deleted to cause a directory update. -// File synch is not done at startup unless a directory mod date > last synch time. - - currtime = time(0); // v.13.04 - last_sync_time = strdupz(ctime(&currtime) + 4,0,"file-sync"); - if (last_sync_time[4] == ' ') last_sync_time[4] = '0'; // format mmm dd hh:mm:ss yyyy - pp = strchr(last_sync_time,'\n'); - if (pp) *pp = 0; - - snprintf(buff,199,"%s/parameters",get_zuserdir()); // open output file - fid = fopen(buff,"w"); - if (! fid) return; - - for (int ii = 0; ii < Nparms; ii++) // write table of state data - { - name = paramTab[ii].name; - type = paramTab[ii].type; - count = paramTab[ii].count; - location = paramTab[ii].location; - charloc = (char **) location; - intloc = (int *) location; - floatloc = (float *) location; - - fprintf(fid,"%-20s %-8s %02d ",name,type,count); // write parm name, type, count - - for (int kk = 0; kk < count; kk++) // write "value" "value" ... - { - if (strEqu(type,"char")) { - if (! *charloc) break; // missing, discontinue this parameter - repl_1str(*charloc++,text,"\n","\\n"); // replace newlines with "\n" - fprintf(fid," \"%s\"",text); - } - if (strEqu(type,"int")) - fprintf(fid," \"%d\"",*intloc++); - - if (strEqu(type,"float")) - fprintf(fid," \"%.2f\"",*floatloc++); - } - - fprintf(fid,"\n"); // write EOR - } - - fprintf(fid,"\n"); - fclose(fid); // close file - - fid = fopen(recentfiles_file,"w"); // recent files file - if (! fid) return; - - for (int ii = 0; ii < Nrecentfiles; ii++) // save list of recent files - if (recentfiles[ii]) - fprintf(fid,"%s \n",recentfiles[ii]); - - fclose(fid); - - snprintf(buff,199,"%s/plugins",get_zuserdir()); // open file for plugins - fid = fopen(buff,"w"); - if (! fid) return; - - for (int ii = 0; ii < Nplugins; ii++) // save plugins - if (plugins[ii]) - fprintf(fid,"%s \n",plugins[ii]); - - fclose(fid); - - return; -} - - -// load parameters from file /.../.fotoxx/parameters - -void load_params() -{ - FILE *fid; - int ii, err, cc, pcount; - int Idata; - float Fdata; - char buff[1000], text[1000], *pp; - char name[20], type[12], count[8], data[1000]; - void *location; - char **charloc; - int *intloc; - float *floatloc; - struct stat statb; - - snprintf(buff,499,"%s/parameters",get_zuserdir()); // open parameters file - fid = fopen(buff,"r"); - if (! fid) return; // none, defaults are used - - while (true) // read parameters - { - pp = fgets_trim(buff,999,fid,1); - if (! pp) break; - if (*pp == '#') continue; // comment - if (strlen(pp) < 40) continue; // rubbish - - err = 0; - - strncpy0(name,pp,20); // parm name - strTrim2(name); - - strncpy0(type,pp+22,8); // parm type - strTrim2(type); - - strncpy0(count,pp+32,4); // parm count - strTrim2(count); - err = convSI(count,pcount); - - strncpy0(data,pp+38,1000); // parm value(s) - strTrim2(data); - - for (ii = 0; ii < Nparms; ii++) // match file record to param table - { - if (strNeq(name,paramTab[ii].name)) continue; // parm name - if (strNeq(type,paramTab[ii].type)) continue; // parm type - if (paramTab[ii].count != pcount) continue; // parm count - break; - } - - if (ii == Nparms) continue; // not found, ignore file param - - location = paramTab[ii].location; // get parameter memory location - charloc = (char **) location; - intloc = (int *) location; - floatloc = (float *) location; - - for (ii = 1; ii <= pcount; ii++) // get parameter value(s) - { - pp = (char *) strField(data,' ',ii); - if (! pp) break; - - if (strEqu(type,"char")) { - repl_1str(pp,text,"\\n","\n"); // replace "\n" with real newlines - *charloc++ = strdupz(text,0,"parameters"); - } - - if (strEqu(type,"int")) { - err = convSI(pp,Idata); - if (err) continue; - *intloc++ = Idata; - } - - if (strEqu(type,"float")) { - err = convSF(pp,Fdata); - if (err) continue; - *floatloc++ = Fdata; - } - } - } - - fclose(fid); - - for (ii = 0; ii < Nparms; ii++) // set null strings to "" - { - if (strNeq(paramTab[ii].type,"char")) continue; - charloc = (char **) paramTab[ii].location; - pcount = paramTab[ii].count; - for (int jj = 0; jj < pcount; jj++) - if (! charloc[jj]) - charloc[jj] = strdupz("",20,"parameters"); - } - - Ntopdirk = 0; - - fid = fopen(topdirk_file,"r"); // get top directories from - if (fid) // from top directories file - { - for (ii = 0; ii < 30; ii++) // multiple top directories - { - pp = fgets_trim(buff,499,fid,1); - if (! pp) break; - topdirk[ii] = strdupz(buff,0,"top_dirk"); - strTrim2(topdirk[ii]); // remove surrounding blanks - cc = strlen(topdirk[ii]); // remove trailing '/' if present - if (topdirk[ii][cc-1] == '/') topdirk[ii][cc-1] = 0; - err = stat(topdirk[ii],&statb); - if (err || ! S_ISDIR(statb.st_mode)) { - printf("*** invalid top directory: %s \n",topdirk[ii]); // if invalid top directory, - ii = ii - 1; // remove from list - } - } - - fclose(fid); - Ntopdirk = ii; - } - - zoomratio = pow( 2.0, 1.0 / zoomcount); // set zoom ratio from zoom count - - for (ii = 0; ii < Nrecentfiles; ii++) // recent image file list = empty - recentfiles[ii] = 0; - - fid = fopen(recentfiles_file,"r"); // open recent files file - if (fid) { - for (ii = 0; ii < Nrecentfiles; ii++) // read list of recent files - { - pp = fgets_trim(buff,499,fid,1); - if (! pp) break; - if (*pp == '/') - recentfiles[ii] = strdupz(buff,0,"recentfile"); - else ii--; - } - - fclose(fid); - } - - for (ii = 0; ii < maxplugins; ii++) // plugins list = empty - plugins[ii] = 0; - - plugins[0] = strdupz("Gimp = gimp",0,"plugins"); // if empty, default Gimp plugin - Nplugins = 1; - - snprintf(buff,499,"%s/plugins",get_zuserdir()); // open plugins file - fid = fopen(buff,"r"); - if (fid) - { - for (ii = 0; ii < maxplugins; ii++) // read list of plugins - { - pp = fgets_trim(buff,499,fid,1); - if (! pp) break; - plugins[ii] = strdupz(buff,0,"plugins"); - } - - fclose(fid); - Nplugins = ii; - } - - return; -} - - -/**************************************************************************/ - -// free all resources associated with the current image file - -void free_resources(int fkeepundo) -{ - char *pp; - - mutex_lock(&Fpixmap_lock); // lock pixmaps - - if (! fkeepundo) { - strcpy(command,"rm -f "); // delete all undo files - strcat(command,URS_filename); - pp = strstr(command,"_undo_"); // /home//.fotoxx/pppppp_undo_* - strcpy(pp + 6,"*"); - shell_quiet(command); - URS_pos = URS_max = 0; // reset undo/redo stack v.13.04 - Fmetachanged = 0; // no unsaved metadata changes v.13.08 - sa_unselect(); // unselect select area - } - - if (Fshutdown) { // stop here if shutdown mode - mutex_unlock(&Fpixmap_lock); - return; - } - - draw_toplines(2); // no toplines - erase_topcircles(); // no topcircles - Ntoptext = 0; // no toptext v.13.08 - Fbusy_goal = 0; - - if (curr_file) { - zdialog_free(zdsela); // kill select area dialog if active - zfree(curr_file); // free image file - curr_file = 0; - *SB_text = 0; - curr_file_posn = 0; // v.13.03 - } - - PXB_free(Fpxb); - PXM_free(E0pxm); - PXM_free(E1pxm); - PXM_free(E3pxm); - PXM_free(ERpxm); - PXM_free(E8pxm); - PXM_free(E9pxm); - - mutex_unlock(&Fpixmap_lock); - return; -} - - -/**************************************************************************/ - -// Get a virtual pixel at location (px,py) (real) in a PXM pixmap. -// Get the overlapping real pixels and build a composite. - -int vpixel(PXM *pxm, float px, float py, float *vpix) -{ - int ww, hh, px0, py0; - float *pix0, *pix1, *pix2, *pix3; - float f0, f1, f2, f3; - float red, green, blue; - - ww = pxm->ww; - hh = pxm->hh; - - px0 = px; // integer pixel containing (px,py) - py0 = py; - - if (px0 < 1 || py0 < 1) return 0; // void edge pixels - if (px0 > ww-2 || py0 > hh-2) return 0; - - pix0 = PXMpix(pxm,px0,py0); // 4 pixels based at (px0,py0) - pix1 = pix0 + ww * 3; - pix2 = pix0 + 3; - pix3 = pix0 + ww * 3 + 3; - - f0 = (px0+1 - px) * (py0+1 - py); // overlap of (px,py) - f1 = (px0+1 - px) * (py - py0); // in each of the 4 pixels - f2 = (px - px0) * (py0+1 - py); - f3 = (px - px0) * (py - py0); - - red = f0 * pix0[0] + f1 * pix1[0] + f2 * pix2[0] + f3 * pix3[0]; // sum the weighted inputs - green = f0 * pix0[1] + f1 * pix1[1] + f2 * pix2[1] + f3 * pix3[1]; - blue = f0 * pix0[2] + f1 * pix1[2] + f2 * pix2[2] + f3 * pix3[2]; - if (blue < 0.5) blue = 0; // edge or voided pixel - - vpix[0] = red; - vpix[1] = green; - vpix[2] = blue; - - if (! blue) return 0; - return 1; -} - - -/**************************************************************************/ - -// compare two floats for significant difference -// return: 0 difference not significant -// +1 d1 > d2 -// -1 d1 < d2 - -int sigdiff(float d1, float d2, float signf) -{ - float diff = fabsf(d1-d2); - if (diff == 0.0) return 0; - diff = diff / (fabsf(d1) + fabsf(d2)); - if (diff < signf) return 0; - if (d1 > d2) return 1; - else return -1; -} - - -/**************************************************************************/ - -// popup a warning message if real memory is below specified threshold -// returns margin: real memory - threshold, in megabytes -// (+ if enough memory, - if not) -// the popup message only appears if real memory < threshold -// the popup message goes away after a few seconds - -int warn_memory(int req_mb) -{ - double freemem, cachemem; - int act_mb, gap_mb; - cchar *message = ZTX("warning: real memory %d MB < required %d MB \n" - "response time may become very long \n"); - - parseprocfile("/proc/meminfo","MemFree:",&freemem,null); // get current free memory - parseprocfile("/proc/meminfo","Cached:",&cachemem,null); - act_mb = (freemem + cachemem) / 1024; // megabytes - gap_mb = act_mb - req_mb; - if (gap_mb > -10) return gap_mb; - zpopup_message(message,act_mb,req_mb); // deficit > 10 MB - return gap_mb; -} - - -/**************************************************************************/ - -// Show a temporary image and return to prior image when done - -void temp_image(cchar *file, cchar *title, cchar *message) -{ - int err; - zdialog *zd; - char *savecurrfile = 0; - char *savecurrdirk = 0; - - if (mod_keep()) return; // unsaved edits - if (! menulock(1)) return; - - if (curr_file) savecurrfile = strdupz(curr_file,0,"temp_image"); - if (curr_dirk) savecurrdirk = strdupz(curr_dirk,0,"temp_image"); - - err = f_open(file,0); - if (err) goto restore; - - Fzoom = 1; - gtk_window_set_title(MWIN,title); - - zd = zdialog_new(title,mWin,Bdone,null); // start user dialog - if (message) { - zdialog_add_widget(zd,"hbox","hb1","dialog",0,"space=5"); - zdialog_add_widget(zd,"label","lab1","hb1",message,"space=5"); - } - - zdialog_resize(zd,300,0); - zdialog_run(zd,0,"0/0"); - zdialog_wait(zd); // wait for dialog complete - zdialog_free(zd); - -restore: - - if (savecurrdirk) { // v.13.05.1 - curr_dirk = strdupz(savecurrdirk); - zfree(savecurrdirk); - } - - if (savecurrfile) { - f_open(savecurrfile,0); // v.13.05.1 - zfree(savecurrfile); - } - else { - curr_file = 0; - if (curr_dirk) gallery(curr_dirk,"init",-1); - } - - menulock(0); - return; -} - - -/************************************************************************** - PXM pixmap functions - RGB float pixel map -***************************************************************************/ - -// initialize PXM pixmap - allocate memory - -PXM * PXM_make(int ww, int hh) -{ - if (ww < 5 || hh < 5) { // impose reasonableness limits - zmessageACK(mWin,0,"image too small: %d %d",ww,hh); - return 0; - } - - if (ww > wwhh_limit || hh > wwhh_limit) { - zmessageACK(mWin,0,"image too big: %d %d",ww,hh); - return 0; - } - - int req_mb = ww * hh * 12 / mega; // warn if memory low - warn_memory(req_mb); - - PXM *pxm = (PXM *) zmalloc(sizeof(PXM),"PXM"); // 0.45 sec for 116 megapix image (1.4 GB) - pxm->ww = ww; - pxm->hh = hh; - pxm->pixels = (float *) zmalloc(ww*hh*12,"PXM.bmp"); // float[3] per pixel - strcpy(pxm->wmi,"pxmpix"); - return pxm; -} - - -// free PXM pixmap - -void PXM_free(PXM *&pxm) -{ - if (! pxm) return; - if (! strEqu(pxm->wmi,"pxmpix")) - zappcrash("PXM_free(), bad PXM"); - strcpy(pxm->wmi,"xxxxxx"); - zfree(pxm->pixels); - zfree(pxm); - pxm = 0; - return; -} - - -// create a copy of a PXM pixmap - -PXM * PXM_copy(PXM *pxm1) -{ - int cc; - PXM *pxm2; - - pxm2 = PXM_make(pxm1->ww, pxm1->hh); - cc = pxm1->ww * pxm1->hh * 3 * sizeof(float); - memcpy(pxm2->pixels,pxm1->pixels,cc); - return pxm2; -} - - -// create a copy of a PXM area - -PXM * PXM_copy_area(PXM *pxm1, int orgx, int orgy, int ww2, int hh2) -{ - float *pix1, *pix2; - PXM *pxm2 = 0; - int px1, py1, px2, py2; - - pxm2 = PXM_make(ww2,hh2); - - for (py1 = orgy, py2 = 0; py2 < hh2; py1++, py2++) - { - pix1 = PXMpix(pxm1,orgx,orgy); - pix2 = PXMpix(pxm2,0,py2); - - for (px1 = orgx, px2 = 0; px2 < ww2; px1++, px2++) - { - pix2[0] = pix1[0]; - pix2[1] = pix1[1]; - pix2[2] = pix1[2]; - pix1 += 3; - pix2 += 3; - } - } - - return pxm2; -} - - -// replace blue = 0 pixels with blue = 1 -// (blue = 0 reserved for pixels voided by warp or overlay offsets) -// needs about 0.013 seconds for 10 megapixel image and 3.3 GHz CPU - -void PXM_fixblue(PXM *pxm) -{ - int size; - float *pixel, *pixel0, *pixelN; - - size = pxm->ww * pxm->hh * 3; - pixel0 = pxm->pixels + 2; - pixelN = pixel0 + size; - - for (pixel = pixel0; pixel < pixelN; pixel += 3) // +3 is +12 bytes - if (! *pixel) *pixel = 1.0; - - return; -} - - -/************************************************************************** - - Rescale PXM image to new width and height. - The scale ratios may be different for width and height. - - Method: - The input and output images are overlayed, stretching or shrinking the - output pixels as needed. The contribution of each input pixel overlapping - an output pixel is proportional to the area of the output pixel covered by - the input pixel. The contributions of all overlaping input pixels are added. - The work is spread among Nwt threads to reduce time on SMP processors. - - Example: if the output image is 40% of the input image, then: - outpix[0,0] = 0.16 * inpix[0,0] + 0.16 * inpix[1,0] + 0.08 * inpix[2,0] - + 0.16 * inpix[0,1] + 0.16 * inpix[1,1] + 0.08 * inpix[2,1] - + 0.08 * inpix[0,2] + 0.08 * inpix[1,2] + 0.04 * inpix[2,2] - -***************************************************************************/ - -namespace pxmrescale { - float *bmp1; - float *bmp2; - int ww1; - int hh1; - int ww2; - int hh2; - int *px1L; - int *py1L; - float *pxmap; - float *pymap; - int maxmapx; - int maxmapy; - int busy[max_threads]; -} - -PXM * PXM_rescale(PXM *pxm1, int ww, int hh) -{ - using namespace pxmrescale; - - void * pxm_rescale_thread(void *arg); - - PXM *pxm2; - int px1, py1, px2, py2; - int pxl, pyl, pxm, pym, ii; - float scalex, scaley; - float px1a, py1a, px1b, py1b; - float fx, fy; - - ww1 = pxm1->ww; // input PXM - hh1 = pxm1->hh; - bmp1 = pxm1->pixels; - - pxm2 = PXM_make(ww,hh); // output PXM - if (! pxm2) return 0; - ww2 = ww; - hh2 = hh; - bmp2 = pxm2->pixels; - - memset(bmp2, 0, ww2 * hh2 * 3 * sizeof(float)); // clear output pixmap - - scalex = 1.0 * ww1 / ww2; // compute x and y scales - scaley = 1.0 * hh1 / hh2; - - if (scalex <= 1) maxmapx = 2; // compute max input pixels - else maxmapx = scalex + 2; // mapping into output pixels - maxmapx += 1; // for both dimensions - if (scaley <= 1) maxmapy = 2; // (pixels may not be square) - else maxmapy = scaley + 2; - maxmapy += 1; // (extra entry for -1 flag) - - pymap = (float *) zmalloc(hh2 * maxmapy * sizeof(float),"PXMrescale"); // maps overlap of < maxmap input - pxmap = (float *) zmalloc(ww2 * maxmapx * sizeof(float),"PXMrescale"); // pixels per output pixel - - py1L = (int *) zmalloc(hh2 * sizeof(int),"PXMrescale"); // maps first (lowest) input pixel - px1L = (int *) zmalloc(ww2 * sizeof(int),"PXMrescale"); // per output pixel - - for (py2 = 0; py2 < hh2; py2++) // loop output y-pixels - { - py1a = py2 * scaley; // corresponding input y-pixels - py1b = py1a + scaley; - if (py1b >= hh1) py1b = hh1 - 0.001; // fix precision limitation - pyl = py1a; - py1L[py2] = pyl; // 1st overlapping input pixel - - for (py1 = pyl, pym = 0; py1 < py1b; py1++, pym++) // loop overlapping input pixels - { - if (py1 < py1a) { // compute amount of overlap - if (py1+1 < py1b) fy = py1+1 - py1a; // 0.0 to 1.0 - else fy = scaley; - } - else if (py1+1 > py1b) fy = py1b - py1; - else fy = 1; - - ii = py2 * maxmapy + pym; // save it - pymap[ii] = 0.9999 * fy / scaley; - } - ii = py2 * maxmapy + pym; // set an end marker after - pymap[ii] = -1; // last overlapping pixel - } - - for (px2 = 0; px2 < ww2; px2++) // do same for x-pixels - { - px1a = px2 * scalex; - px1b = px1a + scalex; - if (px1b >= ww1) px1b = ww1 - 0.001; - pxl = px1a; - px1L[px2] = pxl; - - for (px1 = pxl, pxm = 0; px1 < px1b; px1++, pxm++) - { - if (px1 < px1a) { - if (px1+1 < px1b) fx = px1+1 - px1a; - else fx = scalex; - } - else if (px1+1 > px1b) fx = px1b - px1; - else fx = 1; - - ii = px2 * maxmapx + pxm; - pxmap[ii] = 0.9999 * fx / scalex; - } - ii = px2 * maxmapx + pxm; - pxmap[ii] = -1; - } - - for (ii = 0; ii < Nwt; ii++) { // start working threads - busy[ii] = 1; - start_detached_thread(pxm_rescale_thread,&wtnx[ii]); - } - - for (ii = 0; ii < Nwt; ii++) // wait for all done - while (busy[ii]) zsleep(0.004); - - zfree(px1L); - zfree(py1L); - zfree(pxmap); - zfree(pymap); - - return pxm2; -} - -void * pxm_rescale_thread(void *arg) // worker thread function -{ - using namespace pxmrescale; - - int index = *((int *) arg); - int px1, py1, px2, py2; - int pxl, pyl, pxm, pym, ii; - float *pixel1, *pixel2; - float fx, fy, ftot; - float red, green, blue; - - for (py2 = index; py2 < hh2; py2 += Nwt) // loop output y-pixels - { - pyl = py1L[py2]; // corresp. 1st input y-pixel - - for (px2 = 0; px2 < ww2; px2++) // loop output x-pixels - { - pxl = px1L[px2]; // corresp. 1st input x-pixel - - red = green = blue = 0; // initz. output pixel - - for (py1 = pyl, pym = 0; ; py1++, pym++) // loop overlapping input y-pixels - { - ii = py2 * maxmapy + pym; // get y-overlap - fy = pymap[ii]; - if (fy < 0) break; // no more pixels - - for (px1 = pxl, pxm = 0; ; px1++, pxm++) // loop overlapping input x-pixels - { - ii = px2 * maxmapx + pxm; // get x-overlap - fx = pxmap[ii]; - if (fx < 0) break; // no more pixels - - ftot = fx * fy; // area overlap = x * y overlap - pixel1 = bmp1 + (py1 * ww1 + px1) * 3; - red += pixel1[0] * ftot; // add input pixel * overlap - green += pixel1[1] * ftot; - blue += pixel1[2] * ftot; - } - - pixel2 = bmp2 + (py2 * ww2 + px2) * 3; // save output pixel - pixel2[0] = red; - pixel2[1] = green; - pixel2[2] = blue; - } - } - } - - busy[index] = 0; - return 0; -} - - -/************************************************************************** - - PXM *pxm2 = PXM_rotate(PXM *pxm1, float angle) - - Rotate PXM pixmap through an arbitrary angle (degrees). - - The returned image has the same size as the original, but the - pixmap size is increased to accomodate the rotated image. - (e.g. a 100x100 image rotated 45 deg. needs a 142x142 pixmap). - - The space added around the rotated image is black (RGB 0,0,0). - Angle is in degrees. Positive direction is clockwise. - Speed is about 28 million pixels/sec/thread for a 3.3 GHz CPU. - Loss of resolution is less than 1 pixel. - - Work is divided among Nwt threads to gain speed. - -***************************************************************************/ - -namespace pxmrotate { - int busy = 0; - float *bmp1; - float *bmp2; - int ww1; - int hh1; - int ww2; - int hh2; - float angle; -} - -PXM * PXM_rotate(PXM *pxm1, float anglex) -{ - using namespace pxmrotate; - - void *PXM_rotate_thread(void *); - - int ii; - PXM *pxm2; - - ww1 = pxm1->ww; // input PXM - hh1 = pxm1->hh; - bmp1 = pxm1->pixels; - angle = anglex; - - while (angle < -180) angle += 360; // normalize, -180 to +180 - while (angle > 180) angle -= 360; - angle = angle * pi / 180; // radians, -pi to +pi - - if (fabsf(angle) < 0.001) { // angle = 0 within my precision - pxm2 = PXM_copy(pxm1); // return a copy of the input PXM - return pxm2; - } - - ww2 = ww1*fabsf(cosf(angle)) + hh1*fabsf(sinf(angle)); // rectangle containing rotated image - hh2 = ww1*fabsf(sinf(angle)) + hh1*fabsf(cosf(angle)); - - pxm2 = PXM_make(ww2,hh2); // output PXM - bmp2 = pxm2->pixels; - - for (ii = 0; ii < Nwt; ii++) // start worker threads - start_detached_thread(PXM_rotate_thread,&wtnx[ii]); - zadd_locked(busy,+Nwt); - - while (busy) zsleep(0.004); // wait for completion - return pxm2; -} - -void * PXM_rotate_thread(void *arg) -{ - using namespace pxmrotate; - - int index = *((int *) (arg)); - int px2, py2, px0, py0; - float *pix0, *pix1, *pix2, *pix3; - float px1, py1; - float f0, f1, f2, f3, red, green, blue; - float a, b, d, e, ww15, hh15, ww25, hh25; - - ww15 = 0.5 * ww1; - hh15 = 0.5 * hh1; - ww25 = 0.5 * ww2; - hh25 = 0.5 * hh2; - - a = cosf(angle); - b = sinf(angle); - d = - sinf(angle); - e = cosf(angle); - - for (py2 = index; py2 < hh2; py2 += Nwt) // loop through output pixels - for (px2 = 0; px2 < ww2; px2++) - { - px1 = a * (px2 - ww25) + b * (py2 - hh25) + ww15; // (px1,py1) = corresponding - py1 = d * (px2 - ww25) + e * (py2 - hh25) + hh15; // point within input pixels - - px0 = px1; // pixel containing (px1,py1) - py0 = py1; - - if (px1 < 0 || px0 >= ww1-1 || py1 < 0 || py0 >= hh1-1) { // if outside input pixel array - pix2 = bmp2 + (py2 * ww2 + px2) * 3; // output is black - pix2[0] = pix2[1] = pix2[2] = 0; - continue; - } - - pix0 = bmp1 + (py0 * ww1 + px0) * 3; // 4 input pixels based at (px0,py0) - pix1 = pix0 + ww1 * 3; - pix2 = pix0 + 3; - pix3 = pix1 + 3; - - f0 = (px0+1 - px1) * (py0+1 - py1); // overlap of (px1,py1) - f1 = (px0+1 - px1) * (py1 - py0); // in each of the 4 pixels - f2 = (px1 - px0) * (py0+1 - py1); - f3 = (px1 - px0) * (py1 - py0); - - red = f0 * pix0[0] + f1 * pix1[0] + f2 * pix2[0] + f3 * pix3[0]; // sum the weighted inputs - green = f0 * pix0[1] + f1 * pix1[1] + f2 * pix2[1] + f3 * pix3[1]; - blue = f0 * pix0[2] + f1 * pix1[2] + f2 * pix2[2] + f3 * pix3[2]; - - pix2 = bmp2 + (py2 * ww2 + px2) * 3; // output pixel - pix2[0] = red; - pix2[1] = green; - pix2[2] = blue; - } - - zadd_locked(busy,-1); - return 0; -} - - -/************************************************************************** - PXB pixmap functions - RGB uint8 pixel map and GdkPixbuf wrapper -***************************************************************************/ - -// Create PXB pixmap with pixels cleared to zero - -PXB * PXB_make(int ww, int hh) -{ - int req_mb = ww * hh * 3 / mega; // warn if memory low - warn_memory(req_mb); - - PXB *pxb = (PXB *) zmalloc(sizeof(PXB),"PXB"); - strcpy(pxb->wmi,"pxbpix"); - pxb->pixbuf = gdk_pixbuf_new(GDKRGB,0,8,ww,hh); - pxb->pixels = gdk_pixbuf_get_pixels(pxb->pixbuf); - pxb->ww = ww; - pxb->hh = hh; - pxb->rs = gdk_pixbuf_get_rowstride(pxb->pixbuf); - int cc = hh * pxb->rs; - memset(pxb->pixels,0,cc); - return pxb; -} - - -// Create a PXB pixmap from a GdkPixbuf -// The pixbuf is used directly and is not duplicated - -PXB * PXB_make(GdkPixbuf *pixbuf1) -{ - PXB *pxb2 = (PXB *) zmalloc(sizeof(PXB),"PXB"); - strcpy(pxb2->wmi,"pxbpix"); - pxb2->pixbuf = pixbuf1; - pxb2->ww = gdk_pixbuf_get_width(pixbuf1); - pxb2->hh = gdk_pixbuf_get_height(pixbuf1); - pxb2->rs = gdk_pixbuf_get_rowstride(pixbuf1); - pxb2->pixels = gdk_pixbuf_get_pixels(pixbuf1); - return pxb2; -} - - -// Free PXB pixmap - release memory - -void PXB_free(PXB *&pxb) -{ - if (! pxb) return; - if (! strEqu(pxb->wmi,"pxbpix")) - zappcrash("PXB_free(), bad PXB"); - strcpy(pxb->wmi,"xxxxxx"); - g_object_unref(pxb->pixbuf); - zfree(pxb); - pxb = 0; - return; -} - - -// Copy a PXB pixmap to a new PXB pixmap - -PXB * PXB_copy(PXB *pxb1) -{ - int req_mb = pxb1->ww * pxb1->hh * 3 / mega; // warn if memory low - warn_memory(req_mb); - - PXB *pxb2 = (PXB *) zmalloc(sizeof(PXB),"PXB"); - strcpy(pxb2->wmi,"pxbpix"); - pxb2->pixbuf = gdk_pixbuf_copy(pxb1->pixbuf); - pxb2->ww = pxb1->ww; - pxb2->hh = pxb1->hh; - pxb2->rs = pxb1->rs; - pxb2->pixels = gdk_pixbuf_get_pixels(pxb2->pixbuf); - return pxb2; -} - - -// Rescale PXB pixmap to given width and height. - -PXB * PXB_rescale(PXB *pxb1, int ww2, int hh2) -{ - GdkPixbuf *pixbuf2 = 0; - int req_mb = ww2 * hh2 * 3 / mega; // warn if memory low - warn_memory(req_mb); - - if (strEqu(interpolation,"tiles")) // v.13.05 - pixbuf2 = gdk_pixbuf_scale_simple(pxb1->pixbuf,ww2,hh2,GDK_INTERP_TILES); - else if (strEqu(interpolation,"hyperbolic")) - pixbuf2 = gdk_pixbuf_scale_simple(pxb1->pixbuf,ww2,hh2,GDK_INTERP_HYPER); - else pixbuf2 = gdk_pixbuf_scale_simple(pxb1->pixbuf,ww2,hh2,GDK_INTERP_BILINEAR); - - PXB *pxb2 = PXB_make(pixbuf2); - return pxb2; -} - - -// Copy a PXM image (RGB float) to a PXB image (RGB uint8). - -PXB * PXM_PXB_copy(PXM *pxm1) -{ - float *pix1; - uint8 *pix2; - PXB *pxb2; - int ww, hh, px, py; - - ww = pxm1->ww; - hh = pxm1->hh; - - pxb2 = PXB_make(ww,hh); - - for (py = 0; py < hh; py++) - { - pix1 = PXMpix(pxm1,0,py); - pix2 = PXBpix(pxb2,0,py); - - for (px = 0; px < ww; px++) - { - pix2[0] = pix1[0]; - pix2[1] = pix1[1]; - pix2[2] = pix1[2]; - pix1 += 3; - pix2 += 3; - } - } - - return pxb2; -} - - -// Update a PXB section from an updated PXM section. -// The PXM and PXB must have the same dimensions. -// px3, py3, ww3, hh3: modified section within pxm1 to propagate to pxb2; - -void PXM_PXB_update(PXM *pxm1, PXB *pxb2, int px3, int py3, int ww3, int hh3) -{ - float *pix1; - uint8 *pix2; - int px, py; - int lox, hix, loy, hiy; - - lox = px3; - hix = px3 + ww3; - if (lox < 0) lox = 0; - if (hix > pxb2->ww) hix = pxb2->ww; - - loy = py3; - hiy = py3 + hh3; - if (loy < 0) loy = 0; - if (hiy > pxb2->hh) hiy = pxb2->hh; - - for (py = loy; py < hiy; py++) - { - pix1 = PXMpix(pxm1,lox,py); - pix2 = PXBpix(pxb2,lox,py); - - for (px = lox; px < hix; px++) - { - pix2[0] = pix1[0]; // 0.0 - 255.99 >> 0 - 255 - pix2[1] = pix1[1]; - pix2[2] = pix1[2]; - pix1 += 3; - pix2 += 3; - } - } - - return; -} - - -// Update an output PXB section from a corresponding input PXB section. -// The two PXBs represent the same image, scaled according to their -// respective width and height pixel dimensions. -// px3, py3, ww3, hh3: modified section within pxb1 to propagate to pxb2; - -namespace pxbpxbupdate { - uint8 *bmp1, *bmp2; - int ww1, hh1, ww2, hh2, rs1, rs2; - int pww1, phh1, pww2, phh2; - int *px1L, *py1L; - float scalex, scaley; - float *pxmap, *pymap; - int maxmapx, maxmapy; -} - -void PXB_PXB_update(PXB *pxb1, PXB *pxb2, int px3, int py3, int ww3, int hh3) -{ - using namespace pxbpxbupdate; - - int px1, py1, px2, py2; - int pxl, pyl, pxm, pym, ii; - float px1a, py1a, px1b, py1b; - float fx, fy, ftot; - uint8 *pixel1, *pixel2; - float red, green, blue; - int lox, hix, loy, hiy; - - - ww1 = pxb1->ww; - hh1 = pxb1->hh; - rs1 = pxb1->rs; - bmp1 = pxb1->pixels; - - ww2 = pxb2->ww; - hh2 = pxb2->hh; - rs2 = pxb2->rs; - bmp2 = pxb2->pixels; - - if (ww1 == pww1 && hh1 == phh1 && ww2 == pww2 && hh2 == phh2) // if the sizes are the same as before, - goto copy_pixels; // the pixel mapping math can be avoided. - - pww1 = ww1; - phh1 = hh1; - pww2 = ww2; - phh2 = hh2; - - if (px1L) { // unless this is the first call, - zfree(px1L); // free prior map memory - zfree(py1L); - zfree(pxmap); - zfree(pymap); - } - - scalex = 1.0 * ww1 / ww2; // compute x and y scales - scaley = 1.0 * hh1 / hh2; - - if (scalex <= 1) maxmapx = 2; // compute max input pixels - else maxmapx = scalex + 2; // mapping into output pixels - maxmapx += 1; // for both dimensions - if (scaley <= 1) maxmapy = 2; // (pixels may not be square) - else maxmapy = scaley + 2; - maxmapy += 1; // (extra entry for -1 flag) - - pymap = (float *) zmalloc(hh2 * maxmapy * sizeof(float),"pxbpxbupd"); // maps overlap of < maxmap input - pxmap = (float *) zmalloc(ww2 * maxmapx * sizeof(float),"pxbpxbupd"); // pixels per output pixel - - py1L = (int *) zmalloc(hh2 * sizeof(int),"pxbpxbupd"); // maps first (lowest) input pixel - px1L = (int *) zmalloc(ww2 * sizeof(int),"pxbpxbupd"); // per output pixel - - for (py2 = 0; py2 < hh2; py2++) // loop output y-pixels - { - py1a = py2 * scaley; // corresponding input y-pixels - py1b = py1a + scaley; - if (py1b >= hh1) py1b = hh1 - 0.001; // fix precision limitation - pyl = py1a; - py1L[py2] = pyl; // 1st overlapping input pixel - - for (py1 = pyl, pym = 0; py1 < py1b; py1++, pym++) // loop overlapping input pixels - { - if (py1 < py1a) { // compute amount of overlap - if (py1+1 < py1b) fy = py1+1 - py1a; // 0.0 to 1.0 - else fy = scaley; - } - else if (py1+1 > py1b) fy = py1b - py1; - else fy = 1; - - ii = py2 * maxmapy + pym; // save it - pymap[ii] = 0.9999 * fy / scaley; - } - ii = py2 * maxmapy + pym; // set an end marker after - pymap[ii] = -1; // last overlapping pixel - } - - for (px2 = 0; px2 < ww2; px2++) // do same for x-pixels - { - px1a = px2 * scalex; - px1b = px1a + scalex; - if (px1b >= ww1) px1b = ww1 - 0.001; - pxl = px1a; - px1L[px2] = pxl; - - for (px1 = pxl, pxm = 0; px1 < px1b; px1++, pxm++) - { - if (px1 < px1a) { - if (px1+1 < px1b) fx = px1+1 - px1a; - else fx = scalex; - } - else if (px1+1 > px1b) fx = px1b - px1; - else fx = 1; - - ii = px2 * maxmapx + pxm; - pxmap[ii] = 0.9999 * fx / scalex; - } - ii = px2 * maxmapx + pxm; - pxmap[ii] = -1; - } - -copy_pixels: - - px3 = px3 / scalex; // convert input area to output area - py3 = py3 / scaley; - ww3 = ww3 / scalex + 2; - hh3 = hh3 / scaley + 2; - - lox = px3; - hix = px3 + ww3; - if (lox < 0) lox = 0; - if (hix > ww2) hix = ww2; - - loy = py3; - hiy = py3 + hh3; - if (loy < 0) loy = 0; - if (hiy > hh2) hiy = hh2; - - for (py2 = loy; py2 < hiy; py2++) // loop output y-pixels - { - pyl = py1L[py2]; // corresp. 1st input y-pixel - - for (px2 = lox; px2 < hix; px2++) // loop output x-pixels - { - pxl = px1L[px2]; // corresp. 1st input x-pixel - - red = green = blue = 0; // initz. output pixel - - for (py1 = pyl, pym = 0; ; py1++, pym++) // loop overlapping input y-pixels - { - ii = py2 * maxmapy + pym; // get y-overlap - fy = pymap[ii]; - if (fy < 0) break; // no more pixels - - for (px1 = pxl, pxm = 0; ; px1++, pxm++) // loop overlapping input x-pixels - { - ii = px2 * maxmapx + pxm; // get x-overlap - fx = pxmap[ii]; - if (fx < 0) break; // no more pixels - - ftot = fx * fy; // area overlap = x * y overlap - pixel1 = bmp1 + py1 * rs1 + px1 * 3; - red += pixel1[0] * ftot; // add input pixel * overlap - green += pixel1[1] * ftot; - blue += pixel1[2] * ftot; - } - - pixel2 = bmp2 + py2 * rs2 + px2 * 3; // save output pixel - pixel2[0] = red; // 0.0 - 255.996 >> 0 - 255 - pixel2[1] = green; - pixel2[2] = blue; - } - } - } - - return; -} - - - diff -Nru fotoxx-13.08/fotoxx-13.08.spec fotoxx-13.09.1/fotoxx-13.08.spec --- fotoxx-13.08/fotoxx-13.08.spec 2013-08-01 20:57:53.000000000 +0000 +++ fotoxx-13.09.1/fotoxx-13.08.spec 1970-01-01 00:00:00.000000000 +0000 @@ -1,44 +0,0 @@ -# RPM spec file for fotoxx -# dcraw, exiftool, xdg-open: needed for execution but not for build. - -Name: fotoxx -Version: 13.08 -Release: 1 -Summary: Edit photos and manage a large collection -Vendor: kornelix -Packager: kornelix2@gmail.com -License: GPL3 -Group: graphics -Source: %{name}-%{version}.tar.gz -URL: http://kornelix.com - -%description -Edit photos and manage a large collection. -Includes thumbnail browser/navigator, RAW file import, -a comprehensive set of edit functions working in deep color, -rapid visual feedback, edit/copy/paste selected image areas, -file versioning, batch operations, named collections (views), -HDR, stack and panorama composites, metadata edit and report, -search and display using metadata and directory/file names. - -%prep -%setup -q - -%build -make - -%install -make install PREFIX=$RPM_BUILD_ROOT/usr - -%clean -rm -rf $RPM_BUILD_ROOT - -%files -%defattr(-,root,root) -/usr/bin/%{name} -/usr/share/%{name} -/usr/share/doc/%{name} -/usr/share/applications/%{name}.desktop -/usr/share/man/man1/%{name}.1.gz - - diff -Nru fotoxx-13.08/fotoxx-13.09.1.cc fotoxx-13.09.1/fotoxx-13.09.1.cc --- fotoxx-13.08/fotoxx-13.09.1.cc 1970-01-01 00:00:00.000000000 +0000 +++ fotoxx-13.09.1/fotoxx-13.09.1.cc 2013-08-31 06:26:38.000000000 +0000 @@ -0,0 +1,4925 @@ +/************************************************************************** + + Fotoxx edit photos and manage collections + + Copyright 2007 2008 2009 2010 2011 2012 2013 Michael Cornelison + Source URL: http://kornelix.com/fotoxx + Contact: kornelix@gmx.de + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see http://www.gnu.org/licenses/. + +***************************************************************************/ + +#define EX // disable extern declarations +#include "fotoxx.h" + +// fotoxx main program + +int main(int argc, char *argv[]) +{ + + GError *gerror = 0; + char lang[8] = "", iconfile[200]; + int Fclone=0, cloxx=0, cloyy=0, cloww=0, clohh=0; + int Ftranslate = 0; + int err; + struct stat statb; + + if (argc > 1 && strEqu(argv[1],"-v")) { + printf(Frelease "\n"); // print version and exit + return 0; + } + + gtk_init(&argc,&argv); // initz. GTK & strip GTK params + zinitapp("fotoxx",null); // initz. app directories + + // initialize externals to default values + // (saved parameters will override some of these) + + strcpy(zfuncs::zappname,Frelease); // app name and version + Ffirsttime = 1; // first time startup (params override) + Prelease = strdupz("unknown"); // prev. fotoxx release (params override) + Nrelease = strdupz("unknown"); // last notified new release + for (int ii = 0; ii < 8; ii++) wtnx[ii] = ii; // thread numbers 0-7 + mwgeom[0] = mwgeom[1] = 100; // default main window geometry + mwgeom[2] = 1200; mwgeom[3] = 800; // v.13.05 + trimsize[0] = 1600; // default initial trim size + trimsize[1] = 1000; + editresize[0] = 1600; // default initial resize size + editresize[1] = 1200; + currgrid = 0; // default initial grid settings v.13.02 + gridsettings[0][GON] = 0; // grid off + gridsettings[0][GX] = gridsettings[0][GY] = 1; // x/y grid lines enabled + gridsettings[0][GXS] = gridsettings[0][GYS] = 200; // x/y spacing + gridsettings[0][GXC] = gridsettings[0][GYC] = 5; // x/y count + menu_style = strdupz("vertical"); // default menu style v.13.01 + tbar_style = strdupz("both"); // default toolbar style + interpolation = strdupz("bilinear"); // default image interpolation v.13.05 + startdisplay = strdupz("blank"); // start with blank window + Fdragopt = 2; // image drag is magnified scroll + Fwarnoverwrite = 1; // warn original file overwrite + zoomcount = 2; // zooms to reach 2x image size + zoomratio = sqrtf(2); // corresp. zoom ratio + Fthumbnails = 1; // default, use thumbnails with image files + thumbdirk = strdupz(""); // default, no thumbnail directory + FsyncEnabled = 1; // default, file sync enabled + last_sync_time = strdupz("never"); // default + jpeg_def_quality = 90; // default .jpeg save quality v.13.08 + jpeg_1x_quality = 90; + lens_mm = 35; // pano lens parameters + lens_bow = 0; + RAWcommand = strdupz("dcraw -T -6 -w -q 0 -o 1"); // default RAW to tiff command + RAWfiletypes = strdupz(".arw .crw .cr2 .dng .erf .iiq .mef .mos " // some of the known RAW file types + ".mpo .nef .nrw .orf .orf .pef .ptx .raw " // (case is not significant here) + ".rw2 .rwl .srf .srw .sr2 "); + + black[0] = black[1] = black[2] = 0; // define RGB colors + white[0] = white[1] = white[2] = 255; + red[0] = 255; red[1] = red[2] = 0; + green[1] = 255; green[0] = green[2] = 0; + fg_color = green; // initial foreground drawing color + + GDKdgray.red = GDKdgray.green = GDKdgray.blue = 0.4; // GDK colors for dark gray + GDKblack.red = GDKblack.green = GDKblack.blue = 0; // GDK colors for black + GDKdgray.alpha = 1; + GDKblack.alpha = 1; + + arrowcursor = gdk_cursor_new(GDK_TOP_LEFT_ARROW); // cursor for selection + dragcursor = gdk_cursor_new(GDK_CROSSHAIR); // cursor for dragging + drawcursor = gdk_cursor_new(GDK_PENCIL); // cursor for drawing lines + + mwpC = &mwpF; // tab F is current + + // process command line parameters + + for (int ii = 1; ii < argc; ii++) // command line parameters + { + char *pp = argv[ii]; + + if (strcmpv(pp,"-debug","-d",null)) // -d -debug + Fdebug = 1; + else if (strcmpv(pp,"-lang","-l",null) && argc > ii+1) // -l -lang lc_RC language/region code + strncpy0(lang,argv[++ii],7); + else if (strcmpv(pp,"-clone","-c",null) && argc > ii+4) { // -c -clone clone new instance + Fclone = 1; + cloxx = atoi(argv[ii+1]); // window position and size + cloyy = atoi(argv[ii+2]); // passed from parent instance + cloww = atoi(argv[ii+3]); + clohh = atoi(argv[ii+4]); + ii += 4; + } + else if (strcmpv(pp,"-slideshow","-ss",null) && argc > ii+1) // -ss -slideshow /image/file.jpg + SS_imagefile = strdupz(argv[++ii]); + else if (strcmpv(pp,"-music","-m",null) && argc > ii+1) // -m -music /music/file.ogg + SS_musicfile = strdupz(argv[++ii]); + else if (strcmpv(pp,"-recent","-r",null)) // -r -recent recent files gallery + Frecent = 1; + else if (strcmpv(pp,"-new","-n",null)) // -n -new new added files gallery + Fnew = 1; + else if (strcmpv(pp,"-previous","-prev","-p",null)) // -p -prev open previous file + Fprev = 1; + else if (strcmpv(pp,"-blank","-b",null)) // -b -blank start with blank window + Fblank = 1; + else if (strcmpv(pp,"-translate","-t",null)) // -t -translate start translation + Ftranslate = 1; + else if (strcmpv(pp,"-nosync","-nos",null)) // -nos -nosync omit auto sync + Fnosync = 1; + else if (strEqu(pp,"-menu") && argc > ii+1) // -menu menuname starting menu + startmenu = strdupz(argv[++ii]); + else initial_file = strdupz(pp); // must be initial file or directory + } + + ZTXinit(lang); // setup locale and translations + setlocale(LC_NUMERIC,"en_US.UTF-8"); // stop comma decimal points + + // get files in user directory /home//.fotoxx/* + + snprintf(exiftool_input,199,"%s/exiftool_input",get_zuserdir()); // exiftool_server input file + snprintf(topdirk_file,199,"%s/top_directory",get_zuserdir()); // top_directories file + snprintf(search_index_dirk,199,"%s/search_index4",get_zuserdir()); // search_index directory + snprintf(tags_defined_file,199,"%s/tags_defined",get_zuserdir()); // defined tags file + snprintf(recentfiles_file,199,"%s/recent_files",get_zuserdir()); // recent files file + snprintf(newfiles_file,199,"%s/new_files",get_zuserdir()); // new files file (from synch) + snprintf(saved_areas_dirk,199,"%s/saved_areas",get_zuserdir()); // saved areas directory + snprintf(collections_dirk,199,"%s/collections",get_zuserdir()); // collections directory + snprintf(collections_copy,199,"%s/collections_copy",get_zuserdir()); // collections copy file + snprintf(saved_curves_dirk,199,"%s/saved_curves",get_zuserdir()); // saved curves directory + snprintf(writetext_dirk,199,"%s/write_text",get_zuserdir()); // write_text directory + snprintf(geotags_dirk,199,"%s/geotags",get_zuserdir()); // geotags directory + snprintf(favorites_dirk,199,"%s/favorites",get_zuserdir()); // favorites directory + snprintf(locales_dirk,199,"%s/locales",get_zuserdir()); // locales directory + snprintf(mashup_dirk,199,"%s/mashup",get_zuserdir()); // mashup projects directory + locale_filespec("data","quickstart.html",quickstart_file); // quickstart html file + snprintf(latest_release_file,199,"%s/latest_release",get_zuserdir()); // latest fotoxx release file + + err = stat(saved_areas_dirk,&statb); // create any missing directories + if (err) mkdir(saved_areas_dirk,0750); + err = stat(collections_dirk,&statb); + if (err) mkdir(collections_dirk,0750); + err = stat(saved_curves_dirk,&statb); + if (err) mkdir(saved_curves_dirk,0750); + err = stat(writetext_dirk,&statb); + if (err) mkdir(writetext_dirk,0750); + err = stat(geotags_dirk,&statb); + if (err) mkdir(geotags_dirk,0750); + err = stat(favorites_dirk,&statb); + if (err) mkdir(favorites_dirk,0750); + err = stat(locales_dirk,&statb); // v.13.02 + if (err) mkdir(locales_dirk,0750); + err = stat(mashup_dirk,&statb); // v.13.09 + if (err) mkdir(mashup_dirk,0750); + + // restore parameters from last session + + load_params(); + + // create main window with image file tab and gallery tab + + mWin = gtk_window_new(GTK_WINDOW_TOPLEVEL); // create main window + gtk_window_set_title(MWIN,Frelease); + + tabWin = gtk_notebook_new(); // add tab window to main window + gtk_notebook_set_tab_pos(GTK_NOTEBOOK(tabWin),GTK_POS_LEFT); + gtk_container_add(GTK_CONTAINER(mWin),tabWin); + + snprintf(iconfile,200,"%s/F-tab.png",get_zicondir()); // add vbox as tab F (image file window) + GdkPixbuf * pxbF = gdk_pixbuf_new_from_file_at_size(iconfile,32,32,&gerror); + GtkWidget * labF = gtk_image_new_from_pixbuf(pxbF); // tabs have icons and tool tips v.13.09 + fVbox = gtk_box_new(VERTICAL,0); + gtk_notebook_append_page(GTK_NOTEBOOK(tabWin),fVbox,labF); + gtk_widget_set_tooltip_text(labF,ZTX("Tab F: image file view/edit")); + + snprintf(iconfile,200,"%s/G-tab.png",get_zicondir()); // add vbox as tab G (gallery window) + GdkPixbuf * pxbG = gdk_pixbuf_new_from_file_at_size(iconfile,32,32,&gerror); + GtkWidget * labG = gtk_image_new_from_pixbuf(pxbG); + gVbox = gtk_box_new(VERTICAL,0); + gtk_notebook_append_page(GTK_NOTEBOOK(tabWin),gVbox,labG); + gtk_widget_set_tooltip_text(labG,ZTX("Tab G: image gallery")); + + snprintf(iconfile,200,"%s/W-tab.png",get_zicondir()); // create tab W (world map window) + GdkPixbuf * pxbW = gdk_pixbuf_new_from_file_at_size(iconfile,32,32,&gerror); + GtkWidget * labW = gtk_image_new_from_pixbuf(pxbW); + wVbox = gtk_box_new(VERTICAL,0); + gtk_notebook_append_page(GTK_NOTEBOOK(tabWin),wVbox,labW); + gtk_widget_set_tooltip_text(labW,ZTX("Tab W: world map")); + + wDwin = gtk_drawing_area_new(); // add drawing window + gtk_box_pack_start(GTK_BOX(wVbox),wDwin,1,1,0); + + if (Ftranslate) { // start online translation + F1_help_topic = "translate"; // (to process the menu names) + ZTX_translation_start(mWin); + } + + build_menus(); // build menus in F and G windows + + G_SIGNAL(mWin,"delete_event",delete_event,0); // connect signals to main window + G_SIGNAL(mWin,"destroy",destroy_event,0); + G_SIGNAL(mWin,"window-state-event",state_event,0); + G_SIGNAL(mWin,"key-press-event",KBpress,0); // connect KB events to main window + G_SIGNAL(mWin,"key-release-event",KBrelease,0); + + G_SIGNAL(tabWin,"switch-page",tabchanged,0); // connect tab switched event to tab window + + gtk_widget_add_events(fDwin,GDK_BUTTON_PRESS_MASK); // connect mouse events to image window + gtk_widget_add_events(fDwin,GDK_BUTTON_RELEASE_MASK); + gtk_widget_add_events(fDwin,GDK_BUTTON_MOTION_MASK); // motion with button pressed + gtk_widget_add_events(fDwin,GDK_POINTER_MOTION_MASK); // pointer motion + gtk_widget_add_events(fDwin,GDK_SCROLL_MASK); // scroll wheel + G_SIGNAL(fDwin,"button-press-event",mouse_event,0); + G_SIGNAL(fDwin,"button-release-event",mouse_event,0); + G_SIGNAL(fDwin,"motion-notify-event",mouse_event,0); + G_SIGNAL(fDwin,"scroll-event",mouse_event,0); + G_SIGNAL(fDwin,"draw",mwpaint1,0); // connect draw signal + + gtk_widget_add_events(gDwin,GDK_BUTTON_PRESS_MASK); // connect mouse events to gallery window + gtk_widget_add_events(gDwin,GDK_POINTER_MOTION_MASK); // v.13.01 + gtk_widget_add_events(gDwin,GDK_LEAVE_NOTIFY_MASK); + G_SIGNAL(gDwin,"button-press-event",navi::mouse_event,0); + G_SIGNAL(gDwin,"motion-notify-event",navi::mouse_event,0); + G_SIGNAL(gDwin,"leave-notify-event",navi::mouse_event,0); + G_SIGNAL(gDwin,"draw",navi::gallery_paint,0); // connect draw signal + + gtk_widget_add_events(gPath,GDK_BUTTON_PRESS_MASK); // connect mouse to gallery + G_SIGNAL(gPath,"button-press-event",navi::changedirk,0); // navigation widgets + G_SIGNAL(gTop,"clicked",navi::newtop,0); + + gtk_widget_add_events(wDwin,GDK_BUTTON_PRESS_MASK); // connect mouse events to world map window + gtk_widget_add_events(wDwin,GDK_BUTTON_RELEASE_MASK); + gtk_widget_add_events(wDwin,GDK_BUTTON_MOTION_MASK); // motion with button pressed + gtk_widget_add_events(wDwin,GDK_POINTER_MOTION_MASK); // pointer motion + gtk_widget_add_events(wDwin,GDK_SCROLL_MASK); // scroll wheel + G_SIGNAL(wDwin,"button-press-event",mouse_event,0); + G_SIGNAL(wDwin,"button-release-event",mouse_event,0); + G_SIGNAL(wDwin,"motion-notify-event",mouse_event,0); + G_SIGNAL(wDwin,"scroll-event",mouse_event,0); + G_SIGNAL(wDwin,"draw",mwpaint1,0); + + drag_drop_connect(mWin,m_open_drag); // connect drag-drop to main window + + // open main window and start GTK main loop + + if (Fclone) { // clone: open new window + gtk_window_move(MWIN,cloxx+20,cloyy+30); // slightly offset from old window + gtk_window_resize(MWIN,cloww-20,clohh-30); + } + else { + gtk_window_move(MWIN,mwgeom[0],mwgeom[1]); // main window geometry + gtk_window_resize(MWIN,mwgeom[2],mwgeom[3]); // defaults or last session params + } + + gtk_widget_show_all(mWin); // show all widgets + gtk_widget_realize(fDwin); // compensate GTK bug + gtk_widget_realize(wDwin); // compensate GTK bug + gtk_widget_override_background_color(fDwin, (GtkStateFlags) 0, // gdk_window_set_background_rgba() fails + &GDKdgray); + cTab = tabF; // set current tab = F + cDwin = fDwin; // curr. drawing window + cSbar = fSbar; // status bar active + gdkWin = gtk_widget_get_window(cDwin); // GDK drawing window + + // find and save the main window and pointer device // v.13.08 + + Fwindow = gtk_widget_get_window(mWin); // gdk window for main window + if (! Fwindow) goto GTKfailure; + Fdisplay = gdk_window_get_display(Fwindow); + if (! Fdisplay) goto GTKfailure; + Fscreen = gdk_window_get_screen(Fwindow); // monitor used + if (! Fscreen) goto GTKfailure; + Fmanager = gdk_display_get_device_manager(Fdisplay); + if (! Fmanager) goto GTKfailure; + Fpointer = gdk_device_manager_get_client_pointer(Fmanager); // pointer used (mouse) + if (! Fpointer) goto GTKfailure; + + // start GTK main loop + + g_timeout_add(100,initzfunc,0); // initz. call from gtk_main() v.13.01 + gtk_main(); // start processing window events + return 0; + +GTKfailure: + printf("GTK/GDK failure to find hardware %p %p %p %p %p \n", + Fwindow,Fdisplay,Fscreen,Fmanager,Fpointer); + exit(1); +} + + +/**************************************************************************/ + +// Initial function called from gtk_main() at startup. +// This function MUST return 0. + +int initzfunc(void *) +{ + int Fnewrelease; + int Fexiftool = 0, Fxdgopen = 0, Fdcraw = 0, Fufraw = 0; + int ii, err, err1, err2, flag, npid; + int ftype, Fdirk = 0; + char Lrelease[20]; + char procfile[20], buff[200]; + char KBshortsU[200], KBshortsI[200]; + char favorites_config[200], badnews[200]; + char *pp1, *pp2; + double freememory, cachememory; // available memory at startup + float exifver = 0; + FILE *fid; + struct stat statb; + + cchar *ftmess = ZTX("First time Fotoxx startup. \n" + "Latest version: http://www.kornelix.com/fotoxx \n" + "File sync process will begin (may need some time) \n"); + + cchar *kornelix_fotoxx_release = + "http://www.kornelix.com/uploads/1/3/0/3/13035936/fotoxx-release"; + + cchar *release_notify = "new release %s available at \n" + "http://www.kornelix.com/packages"; + + menulock(1); // block menus until initz. done + snprintf(PIDstring,11,"%06d",getpid()); // get process PID 6-digits + printf(Frelease "\n"); // print Fotoxx release version + + // check that necessary programs are installed + + fid = popen("exiftool -ver","r"); // check exiftool version + if (fid) { + ii = fscanf(fid,"%s",buff); + pclose(fid); // bugfix: accept period or comma + convSF(buff,exifver); + printf("exiftool version: %.2f \n",exifver); + if (exifver >= 8.60) Fexiftool = 1; + } + + err = shell_quiet("which xdg-open"); // check for xdg-open + if (! err) Fxdgopen = 1; + err = shell_quiet("which dcraw"); // check for dcraw + if (! err) Fdcraw = 1; + err = shell_quiet("which ufraw"); // check for ufraw + if (! err) Fufraw = 1; + + if (Fexiftool + Fxdgopen + Fdcraw + Fufraw < 4) { // check mandatory dependencies + strcpy(badnews,ZTX("Please install missing programs:")); + if (! Fexiftool) strcat(badnews,"\n exiftool 8.6 or later"); // refuse to start if any are missing + if (! Fxdgopen) strcat(badnews,"\n xdg-utils"); + if (! Fdcraw) strcat(badnews,"\n dcraw"); + if (! Fufraw) strcat(badnews,"\n ufraw"); + zmessageACK(mWin,0,badnews); + gtk_main_quit(); + exit(0); + } + + err = system("which addr2line"); + if (err) printf("*** 'addr2line' not found (binutils package) \n"); + + // check for first time Fotoxx startup + // or new Fotoxx release just installed + + if (Ffirsttime) // first time startup v.13.03 + Prelease = strdupz(Frelease); // prior = this fotoxx release + + Fnewrelease = 0; + if (strNeq(Prelease,Frelease)) { // detect Fotoxx release change + zmessLogACK(mWin,"fotoxx new release %s",Frelease); + Prelease = strdupz(Frelease); + Fnewrelease = 1; + } + + if (Fnewrelease && ! Ffirsttime) // show changes for new release v.13.03 + showz_textfile("doc","changelog"); + + // check if a new release is available, notify user // v.13.05 + + if (! Ffirsttime && ! Fnewrelease) + { + fid = fopen(latest_release_file,"r"); + if (fid) { + fgets_trim(Lrelease,20,fid,1); // latest release on web site + fclose(fid); + if (strnEqu(Lrelease,"Fotoxx",6)) { // legitimate + printf("latest release: %s \n",Lrelease); + if (strcmp(Frelease,Lrelease) < 0 // notify if release < latest release + && strNeq(Nrelease,Lrelease)) { + zmessageACK(mWin,0,release_notify,Lrelease); + Nrelease = strdupz(Lrelease); // only once - save notified release + } + } + } + snprintf(command,ccc,"wget -T 20 -o /dev/null -O %s %s &", // start retrieval of latest release + latest_release_file, kornelix_fotoxx_release); // (no wait, times out in 20 secs.) + err = system(command); // may return junk if failure + } + + // update KB shortcuts if needed + + locale_filespec("data","KB-shortcuts",KBshortsI); // installed KB shortcuts + err1 = locale_filespec("user","KB-shortcuts",KBshortsU); // user KB shortcuts + err2 = shell_quiet("cmp -s %s %s",KBshortsU,KBshortsI); // compare + + if (Ffirsttime || err1 || (Fnewrelease && err2)) { // replace KB-shortcuts file v.13.03 + shell_quiet("mv %s %s-old",KBshortsU,KBshortsU); + shell_quiet("cp %s %s",KBshortsI,KBshortsU); + printf("new keyboard shortcuts installed \n"); + } + KBshortcuts_load(); // load KB shortcuts from file v.13.03 + + // create tags_defined file if not already + + err = stat(tags_defined_file,&statb); // v.13.08 + if (err) { + printf("create default tags_defined file \n"); + shell_quiet("cp %s/tags_defined %s",get_zdatadir(),tags_defined_file); + } + + // if no favorites menu, copy installation default + + snprintf(favorites_config,200,"%s/menu-config",favorites_dirk); // v.13.09 + err = stat(favorites_config,&statb); + if (err) { + printf("create default favorites menu \n"); + shell_quiet("cp -R -n %s/favorites/* %s",get_zdatadir(),favorites_dirk); + } + + // check free memory and suggest image size limits + + parseprocfile("/proc/meminfo","MemFree:",&freememory,null); // get amount of free memory + parseprocfile("/proc/meminfo","Cached:",&cachememory,null); + freememory = (freememory + cachememory) / 1024; // megabytes + printf("free memory: %.0f MB \n",freememory); + printf("image size limits for good performance: \n"); // v.13.04 + printf(" view: %.0f megapixels \n",(freememory-100)/6); // F + preview, 3 bytes/pixel each + printf(" edit: %.0f megapixels \n",(freememory-100)/54); // + E0/E1/E3/ER, 12 bytes/pixel each + + Nwt = sysconf(_SC_NPROCESSORS_ONLN); // get SMP CPU count + if (Nwt <= 0) Nwt = 1; + if (Nwt > max_threads) Nwt = max_threads; // compile time limit + printf("using %d threads \n",Nwt); + + // clean orphaned undo files in undo/redo stack + // make undo/redo stack filename template for this process ID + + snprintf(URS_filename,200,"%s/*_undo_*",get_zuserdir()); // /home//.fotoxx/*_undo_* + + flag = 1; + while ((pp1 = (char *) SearchWild(URS_filename,flag))) + { + pp2 = strstr(pp1,".fotoxx/"); + if (! pp2) continue; + npid = atoi(pp2+8); // pid of file owner + snprintf(procfile,19,"/proc/%d",npid); + err = stat(procfile,&statb); + if (! err) continue; // pid is active, keep file + printf("*** orphaned undo file deleted: %s \n",pp1); + err = remove(pp1); // delete file + } + + snprintf(URS_filename,200,"%s/%s_undo_nn",get_zuserdir(),PIDstring); // /home//.fotoxx/pppppp_undo_nn + + // miscellaneous + + mutex_init(&Fpixmap_lock,0); // setup lock for edit pixmaps + mutex_init(&preload_lock,0); // setup lock for file preload function + + zdialog_inputs("load"); // load saved dialog inputs + zdialog_positions("load"); // load saved dialog positions + exiftool_server(null); // kill orphan exiftool process + + // perform file sync if image files added since last fotoxx session + + if (Ffirsttime) { // first time startup v.13.03 + last_sync_time = strdupz("never"); + while (true) { + printf("%s",ftmess); + ii = zdialog_choose(0,mWin,ftmess,Bhelp,Bcancel,Bproceed,null); + if (ii == 1) { + showz_userguide("sync_files"); // show sync files help + continue; + } + if (ii == 2) { + gtk_main_quit(); // cancel v.13.02 + exit(0); + } + if (ii == 3) break; + } + } + + printf("last file sync: %s \n",last_sync_time); // last file sync time + syncfiles_func(1); // process newly added image files + + // set current directory/file from command line or saved parameters + + if (Ntopdirk) curr_dirk = strdupz(topdirk[0]); // use 1st top direk if defined + else { + pp1 = getcwd(command,ccc); // or use current directory + if (pp1) curr_dirk = strdupz(pp1); + } + + if (initial_file) { // from command line or previous session + pp1 = realpath(initial_file,0); // prepend directory if needed + if (pp1) { + zfree(initial_file); + initial_file = strdupz(pp1); + free(pp1); + } + else { + printf("invalid file: %s \n",initial_file); // invalid file path + zfree(initial_file); + initial_file = 0; + } + } + + if (initial_file) { + ftype = image_file_type(initial_file); + if (ftype == 0) { // non-existent file + printf("invalid file: %s \n",initial_file); + zfree(initial_file); + initial_file = 0; + } + else if (ftype == 1) { // is a directory + if (curr_dirk) zfree(curr_dirk); + curr_dirk = initial_file; + initial_file = 0; + Fdirk = 1; + } + else { + if (curr_dirk) zfree(curr_dirk); + curr_dirk = strdupz(initial_file); // set current directory from file + pp1 = strrchr(curr_dirk,'/'); + if (pp1) *pp1 = 0; + } + } + + menulock(0); // enable menus + + if (Ffirsttime) // initial install, show quickstart + showz_html(quickstart_file); // v.13.06 + + Ffirsttime = 0; // reset first time flag v.13.03 + save_params(); // save parameters (maybe first time) + + // process command line options + + if (SS_imagefile) { // start slide show if wanted + f_open(SS_imagefile,1); + if (SS_musicfile) + shell_quiet("xdg-open \"%s\" ",SS_musicfile); // with music if wanted + m_slideshow(0,0); + return 0; + } + + else if (initial_file) // open initial file + f_open(initial_file,1); + + else if (Fdirk) { // open initial directory - gallery + gallery(curr_dirk,"init"); // v.13.01 + gallery(0,"paint"); + settab("G"); + } + + else if (Fprev) // start with previous file + m_previous(0,0); + + else if (Frecent) // start with recent files + m_recentfiles(0,0); + + else if (Fnew) // start with newly added files + m_newfiles(0,0); // v.13.07 + + else if (Fblank); /** do nothing **/ + + // if no command line option, get startup option from user settings + + else if (strEqu(startdisplay,"recent")) + m_recentfiles(0,0); + + else if (strEqu(startdisplay,"newest")) // v.13.07 + m_newfiles(0,0); + + else if (strEqu(startdisplay,"prev")) + m_previous(0,0); + + else if (strEqu(startdisplay,"dirk")) { + if (startdirk && *startdirk == '/') { + if (curr_dirk) zfree(curr_dirk); + curr_dirk = strdupz(startdirk); + navi::thumbsize = 128; + gallery(curr_dirk,"init",0); // v.13.01 + gallery(0,"paint"); + settab("G"); // v.13.04 + } + } + + else if (strEqu(startdisplay,"file")) + f_open(startfile,1); + + zmainloop(); // mysterious, avoid blank window + + if (startmenu) { // startup menu on command line + printf("startmenu: %s \n",startmenu); + for (ii = 0; ii < Nmenus; ii++) // convert menu name to menu function + if (strcasecmp(ZTX(startmenu),ZTX(menutab[ii].menu)) == 0) break; + if (ii < Nmenus) menutab[ii].func(0,menutab[ii].arg); // call the menu function + } + + g_timeout_add(100,gtimefunc,0); // start periodic function (100 ms) v.13.04 + + return 0; // don't come back +} + + +/**************************************************************************/ + +// Periodic function (100 milliseconds) +// Avoid any thread usage of gtk/gdk functions. + +int gtimefunc(void *arg) +{ + static int domore = 0; + + if (Frefresh && cDwin) { // window update needed v.13.04 + if (mutex_trylock(&Fpixmap_lock) != 0) return 1; // pixmaps locked, come back later + mutex_unlock(&Fpixmap_lock); // (mwpaint1 will lock) + gtk_widget_queue_draw(cDwin); + } + + if (zd_thread && zd_thread_event) { // send dialog event from thread v.13.09 + zdialog_send_event(zd_thread,zd_thread_event); + zd_thread_event = 0; + } + + if (--domore > 0) return 1; // do rest 1/5 as frequently + domore = 5; + + update_statusbar(); // update status bar information + paint_busy(); // paint "BUSY" on window if something busy + if (Fslideshow) slideshow_next("timer"); // show next image if time is up + + return 1; +} + + +/**************************************************************************/ + +// Paint "Busy [ NN% ]" in top left corner of main window +// if Ffuncbusy or Fthreadbusy flags are set. +// Will be erased by next main window paint. + +void paint_busy() // v.13.09 +{ + char busymess[20]; + int percent, px, py; + + if (Ffuncbusy || Fthreadbusy) // something is processing v.13.05 + { + if (Fbusy_goal) { + percent = 100 * Fbusy_done / Fbusy_goal; // construct "BUSY nn%" + sprintf(busymess,ZTX(" BUSY %d%c "),percent,'%'); + } + else strcpy(busymess,ZTX(" BUSY ")); // or only "BUSY" + + px = Morgx / Mscale; + py = Morgy / Mscale; + draw_text(px,py,busymess,"monospace 11"); // write upper left visible image window + } + + return; +} + + +/**************************************************************************/ + +// update status bar with image data and status +// called from timer function + +void update_statusbar() +{ + static double time1 = 0, time2, cpu1 = 0, cpu2, cpuload; + char text1[300], text2[100]; + int ww, hh, scale, bpc; + double file_MB = 1.0 / mega * curr_file_size; + + if (! cSbar) return; + + *text1 = *text2 = 0; + + if (! time1) { + time1 = get_seconds(); + cpu1 = jobtime(); + } + + time2 = get_seconds(); // compute process cpu load % + if (time2 - time1 > 1.0) { // at 1 second intervals + cpu2 = jobtime(); + cpuload = 100.0 * (cpu2 - cpu1) / (time2 - time1); + time1 = time2; + cpu1 = cpu2; + } + + sprintf(text1,"CPU %03.0f%c",cpuload,'%'); // CPU 023% + + if (curr_file && Fpxb) // bugfix v.13.02.1 + { + if (E3pxm) { + ww = E3pxm->ww; + hh = E3pxm->hh; + } + else { + ww = Fpxb->ww; + hh = Fpxb->hh; + } + + bpc = curr_file_bpc; + + snprintf(text2,99," %dx%dx%d",ww,hh,bpc); // 2345x1234x16 (preview) 1.56MB 45% + strcat(text1,text2); + if (CEF && CEF->Fpreview) strcat(text1,ZTX(" (reduced)")); // v.13.04 + sprintf(text2," %.2fMB",file_MB); + strcat(text1,text2); + scale = Mscale * 100 + 0.5; + sprintf(text2," %d%c",scale,'%'); + strcat(text1,text2); + + if (URS_pos) { // edit undo/redo stack depth + snprintf(text2,99,ZTX(" edits: %d"),URS_pos); + strcat(text1,text2); + } + } + + if (Fmenulock) strcat(text1,ZTX(" menu locked")); + if (sa_stat == 3) strcat(text1,ZTX(" area active")); + if (zfuncs::zdialog_busy) strcat(text1,ZTX(" dialog open")); + + if (*SB_text) { // application text + strcat(text1," "); + strcat(text1,SB_text); + } + + stbar_message(cSbar,text1); // write to status bar + return; +} + + +/**************************************************************************/ + +// process top-level menu entry + +void topmenufunc(GtkWidget *, cchar *menu) +{ + topmenu = (char *) menu; // remember top-level menu name + return; +} + + +// functions for main window event signals + +int delete_event() // main window closed +{ + printf("main window delete event \n"); + if (mod_keep()) return 1; // allow user bailout + quitxx(); + return 0; +} + +int destroy_event() // main window destroyed +{ + printf("main window destroy event \n"); + quitxx(); + return 0; +} + +int state_event(GtkWidget *, GdkEvent *event) // main window state changed +{ + int state = ((GdkEventWindowState *) event)->new_window_state; // track window fullscreen status + if (state & GDK_WINDOW_STATE_FULLSCREEN) Wfullscreen = 1; + else Wfullscreen = 0; + return 0; +} + + +/**************************************************************************/ + +// set window visible tab, F/G/W + +int settab(cchar *tabname) +{ + int tab; + + if (strEqu(tabname,"F")) tab = tabF; + if (strEqu(tabname,"G")) tab = tabG; + if (strEqu(tabname,"W")) tab = tabW; + if (tab == cTab) return 1; // no change + + if (checkmenulock()) return 0; // block if menu locked + gtk_notebook_set_current_page(GTK_NOTEBOOK(tabWin),tab); + return 1; +} + + +// current tab has changed, by user or by function settab() above + +void tabchanged(GtkNotebook *, GtkWidget *, int tab, void *) // overhauled v.13.03 +{ + int tabrecover(void *); + int reset = 0; + + if (tab == cTab) return; // no change + + if (checkmenulock()) reset = 1; // block if menu locked + if (mod_keep()) reset = 1; // warn user of lost edits + if (reset) { + g_timeout_add(0,tabrecover,0); // schedule tab recover function + return; // (does not work from here) + } + + if (tab == tabW) { // entering tab W + if (! init_geotags()) { // check world map available + g_timeout_add(0,tabrecover,0); // no, schedule tab recover function + return; // (does not work from here) + } + cTab = tab; + mwpC = &mwpW; // use tab W image/window parameters v.13.03 + cDwin = wDwin; // set drawing window, no status bar + cSbar = 0; + gdkWin = gtk_widget_get_window(cDwin); // GDK drawing window + gdk_window_set_background_rgba(gdkWin,&GDKdgray); + gtk_window_set_title(MWIN,ZTX("Location from World Map")); // window title + m_geotag_worldmap(0,0); // activate clickable world map + mwpaint2(); + } + + if (tab == tabF) { // entering tab F + cTab = tab; + mwpC = &mwpF; // use tab F image/window parameters v.13.03 + cDwin = fDwin; // set drawing window and status bar + cSbar = fSbar; + gdkWin = gtk_widget_get_window(cDwin); // GDK drawing window + gdk_window_set_background_rgba(gdkWin,&GDKdgray); + set_mwin_title(); // window title from image file + } + + if (tab == tabG) { // entering tab G + cTab = tab; + mwpC = 0; // no image/window parameters + cDwin = 0; // v.13.04 + gdkWin = 0; + cSbar = 0; + F1_help_topic = "navigation"; + if (curr_file) // v.13.03 + gallery(curr_file,"paint",curr_file_posn); + else gallery(0,"paint",-1); + } + + return; +} + + +// reset to prior tab after disallowed user change +// use: g_timeout_add(0,tabrecover,0) + +int tabrecover(void *) +{ + printf("tab change blocked %d \n",cTab); + gtk_notebook_set_current_page(GTK_NOTEBOOK(tabWin),cTab); + return 0; // don't come back +} + + +/**************************************************************************/ + +// GTK3 "draw" function for the main/drawing window, tab F and tab W. +// Paint window when created, exposed, resized, or image modified (edited). +// Update window image if scale change or window size change. +// Otherwise do only the draw function (was triggered from GTK). +// Draw the image section currently within the visible window. +// May NOT be called from threads. See mwpaint2() for threads. + +int mwpaint1(GtkWidget *cDwin, cairo_t *cr) +{ + GdkPixbuf *Dpxb; + uint8 *pixels; + static int pdww = 0, pdhh = 0; // prior window size + float wscale, hscale; + int fww, fhh; // current image size at 1x + int mww, mhh; // scaled image size + int centerx, centery; + int quitnow = 0; + int refresh = 0; // flag, full image refesh needed + int mousex, mousey; // mouse position after zoom + int rs; + float magx, magy; // mouse drag, magnification ratios + + if (Fshutdown) quitnow++; // shutdown underway + if (Fblankwindow) quitnow++; // blank window v.13.06 + if (! mwpC || ! mwpC->fpxb) quitnow++; // no image v.13.06 + if (! cDwin) quitnow++; // v.13.04 + if (! gdkWin) quitnow++; + + if (quitnow) { + Frefresh = 0; // reset paint request v.13.06 + return 0; + } + + if (mutex_trylock(&Fpixmap_lock) != 0) return 0; // cannot lock pixmaps + + Dww = gdk_window_get_width(gdkWin); // (new) drawing window size + Dhh = gdk_window_get_height(gdkWin); + if (Dww < 20 || Dhh < 20) return 0; // too small + + if (Dww != pdww || Dhh != pdhh) { // window size changed + refresh++; // image refresh needed + pdww = Dww; + pdhh = Dhh; + } + + if (Frefresh) { // image refresh needed v.13.06 + if (cTab == tabF && (E0pxm || E3pxm)) { // insure tab F v.13.06 + PXB *pxb1; // update Fpxb from E0/E3 + if (E3pxm) pxb1 = PXM_PXB_copy(E3pxm); // use image now being edited + else pxb1 = PXM_PXB_copy(E0pxm); // or use already edited image + PXB_free(mwpC->fpxb); + mwpC->fpxb = pxb1; + } + refresh++; // full image refresh needed + } + + Frefresh = 0; // reset image paint request v.13.04 + + centerx = (mwpC->morgx + 0.5 * dww) / mwpC->mscale; // center of window, image space + centery = (mwpC->morgy + 0.5 * dhh) / mwpC->mscale; // (before window or scale change) + + fww = mwpC->fpxb->ww; // 1x image size + fhh = mwpC->fpxb->hh; + + if (mwpC->fzoom == 0) { // scale to fit window + wscale = 1.0 * Dww / fww; + hscale = 1.0 * Dhh / fhh; + if (wscale < hscale) mwpC->mscale = wscale; // use greatest ww/hh ratio + else mwpC->mscale = hscale; + if (fww <= Dww && fhh <= Dhh && ! Fblowup) mwpC->mscale = 1.0; // small image 1x unless Fblowup + zoomx = zoomy = 0; // no zoom target + } + else mwpC->mscale = mwpC->fzoom; // scale to fzoom level + + mww = fww * mwpC->mscale; // scaled image size for window + mhh = fhh * mwpC->mscale; + + dww = Dww; // image fitting inside drawing window + if (dww > mww) dww = mww; // image < window size + dhh = Dhh; + if (dhh > mhh) dhh = mhh; + + if (mwpC->mscale != mwpC->pscale) { // scale changed + mwpC->morgx = mwpC->mscale * centerx - 0.5 * dww; // change origin to keep same center + mwpC->morgy = mwpC->mscale * centery - 0.5 * dhh; // (subject to later rules) + mwpC->pscale = mwpC->mscale; // remember scale + refresh++; // full image refresh needed + } + + if (! mwpC->mpxb) refresh++; // v.13.01 + + if (refresh) { // image refresh needed + if (mwpC->mpxb) PXB_free(mwpC->mpxb); + if (mwpC->mscale == 1) mwpC->mpxb = PXB_copy(mwpC->fpxb); // fast 1x zoom + else mwpC->mpxb = PXB_rescale(mwpC->fpxb,mww,mhh); + } + + if ((Mxdrag || Mydrag)) { // pan/scroll via mouse drag + zoomx = zoomy = 0; // no zoom target + magx = 1.0 * (mww - dww) / dww; + magy = 1.0 * (mhh - dhh) / dhh; // needed magnification of mouse movement + if (magx < 1) magx = 1; // retain a minimum speed + if (magy < 1) magy = 1; + + if (Fdragopt == 1) { + mwpC->morgx -= round(Mwdragx); // same direction v.13.05 + mwpC->morgy -= round(Mwdragy); + } + if (Fdragopt == 2) { + mwpC->morgx += round(Mwdragx); // opposite direction + mwpC->morgy += round(Mwdragy); + } + if (Fdragopt == 3) { + mwpC->morgx -= round(Mwdragx * magx); // same direction, magnified + mwpC->morgy -= round(Mwdragy * magy); + } + if (Fdragopt == 4) { + mwpC->morgx += round(Mwdragx * magx); // opposite direction, magnified + mwpC->morgy += round(Mwdragy * magy); + } + } + + if (dww < Dww) mwpC->dorgx = 0.5 * (Dww - dww); // if scaled image width < window width + else mwpC->dorgx = 0; // center image in window + if (dhh < Dhh) mwpC->dorgy = 0.5 * (Dhh - dhh); + else mwpC->dorgy = 0; + + if (zoomx || zoomy) { // requested zoom center + mwpC->morgx = mwpC->mscale * zoomx - 0.5 * dww; // corresp. window position within image + mwpC->morgy = mwpC->mscale * zoomy - 0.5 * dhh; + } + + if (mwpC->morgx < 0) mwpC->morgx = 0; // maximize image within window + if (mwpC->morgy < 0) mwpC->morgy = 0; // (no unused margins) + if (mwpC->morgx + dww > mww) mwpC->morgx = mww - dww; + if (mwpC->morgy + dhh > mhh) mwpC->morgy = mhh - dhh; + + if (zoomx || zoomy) { // zoom target + mousex = zoomx * mwpC->mscale - mwpC->morgx + mwpC->dorgx; + mousey = zoomy * mwpC->mscale - mwpC->morgy + mwpC->dorgy; // mouse pointer follows target + move_pointer(cDwin,mousex,mousey); + zoomx = zoomy = 0; // reset zoom target + } + + pixels = PXBpix(mwpC->mpxb,mwpC->morgx,mwpC->morgy); // mpxb image section within drawing window + rs = mwpC->mpxb->rs; // (morgx/y, dww/hh, rowstride rs) + Dpxb = gdk_pixbuf_new_from_data(pixels,GDKRGB,0,8,dww,dhh,rs,0,0); // make a pixbuf from section + + gdk_cairo_set_source_pixbuf(cr,Dpxb,mwpC->dorgx,mwpC->dorgy); // paint mpxb image section + cairo_paint(cr); + g_object_unref(Dpxb); + + mwcr = cr; // cairo context for draw funcs below + cairo_set_line_width(mwcr,1); + + if (mwpC == &mwpF) { // V.13.06 + if (Ntoplines) draw_toplines(1); // draw line overlays + if (gridsettings[currgrid][GON]) draw_gridlines(); // draw grid lines + if (Ntoptext) draw_toptext(); // draw text strings + if (Ntopcircles) draw_topcircles(); // draw circles + if (Fshowarea) sa_show(1); // draw select area outline + } + + mwcr = 0; // cairo context invalid + mutex_unlock(&Fpixmap_lock); // unlock pixmaps + + if (zdhistogram) m_histogram(0,0); // update image histogram v.13.02 + return 0; +} + + +/**************************************************************************/ + +// Cause (modified) output image to get repainted soon. +// Same as mwpaint1() but delayed. MAY be called from threads. +// mwpaint1() will be called by gtimefunc() next timer cycle. + +void mwpaint2() +{ + Frefresh++; + return; +} + + +// Repaint modified image synchrounously. +// May NOT be called from threads. + +void mwpaintnow() // v.13.04 +{ + if (! cDwin || ! gdkWin) return; + + Frefresh++; // v.13.06 + + while (mutex_trylock(&Fpixmap_lock) != 0) zsleep(0.02); // wait for thread to unlock + mutex_unlock(&Fpixmap_lock); // (mwpaint1 will lock) + + gdk_window_set_background_rgba(gdkWin,&GDKdgray); + mwcr = gdk_cairo_create(gdkWin); + mwpaint1(cDwin,mwcr); + cairo_destroy(mwcr); + mwcr = 0; + return; +} + + +// Update a section of fpxb and mpxb from an updated section of E3pxm, +// then update the corresponding section of the drawing window. +// This avoids a full image refresh, E3pxm > fpxb > mpxb > drawing window. +// px3, py3, ww3, hh3: modified section within E3pxm to be propagated. +// May NOT be called from threads. + +void mwpaint3(int px3, int py3, int ww3, int hh3) +{ + PXM_PXB_update(E3pxm,Fpxb,px3,py3,ww3,hh3); // E3pxm > Fpxb, both 1x scale + PXB_PXB_update(Fpxb,Mpxb,px3,py3,ww3,hh3); // Fpxb > Mpxb, scaled up or down + mwpaint4(px3,py3,ww3,hh3); // update drawing window from Mpxb + return; +} + + +// Repaint a section of the mpxb image in the visible window. +// px3, py3, ww3, hh3: area to be repainted (in 1x image space). +// May NOT be called from threads. + +void mwpaint4(int px3, int py3, int ww3, int hh3) +{ + GdkPixbuf *pixbuf; + uint8 *pixels; + int px2, py2, ww2, hh2, rs; + int crflag = 0; + + if (! gdkWin) return; + + px2 = Mscale * px3 - 2; // 1x image space to mpxb space + py2 = Mscale * py3 - 2; // (expanded) + ww2 = Mscale * ww3 + 2 / Mscale + 4; + hh2 = Mscale * hh3 + 2 / Mscale + 4; + + if (px2 + ww2 > Mpxb->ww) ww2 = Mpxb->ww - px2; // avoid overshoot + if (py2 + hh2 > Mpxb->hh) hh2 = Mpxb->hh - py2; + + if (px2 < Morgx) { // reduce to currently visible window + ww2 = ww2 - (Morgx - px2); + px2 = Morgx; + } + + if (py2 < Morgy) { + hh2 = hh2 - (Morgy - py2); + py2 = Morgy; + } + + if (ww2 <= 0 || hh2 <= 0) return; // completely outside visible window + + if (! mwcr) { + mwcr = gdk_cairo_create(gdkWin); // create cairo context if not already + crflag = 1; + } + + pixels = PXBpix(Mpxb,px2,py2); + rs = Mpxb->rs; // row stride + pixbuf = gdk_pixbuf_new_from_data(pixels,GDKRGB,0,8,ww2,hh2,rs,0,0); // pixbuf for image within window + + px2 = px2 - Morgx + Dorgx; // section position in window + py2 = py2 - Morgy + Dorgy; + + gdk_cairo_set_source_pixbuf(mwcr,pixbuf,px2,py2); // draw area to window + cairo_paint(mwcr); + g_object_unref(pixbuf); + + if (Fshowarea) { + px3 = (px2 - Dorgx + Morgx) / Mscale; // back to image scale, expanded + py3 = (py2 - Dorgy + Morgy) / Mscale; + ww3 = ww2 / Mscale + 2; + hh3 = hh2 / Mscale + 2; + sa_show_rect(px3,py3,ww3,hh3); // refresh select area outline + } + + if (crflag) { + cairo_destroy(mwcr); + mwcr = 0; + } + + return; +} + + +/**************************************************************************/ + +// mouse event function - capture buttons and drag movements + +void mouse_event(GtkWidget *, GdkEventButton *event, void *) +{ + void mouse_convert(int &xpos, int &ypos); + + int button, time, type, scroll; + static int bdtime = 0, butime = 0, mbusy = 0; + static int mdragx0, mdragy0; + + if (! mwpC || ! mwpC->fpxb) return; // v.13.06 + + type = event->type; + button = event->button; // button, 1/2/3 = left/center/right + time = event->time; + Mxposn = event->x; // mouse position in window + Myposn = event->y; + scroll = ((GdkEventScroll *) event)->direction; // scroll wheel event + + KBcontrolkey = KBshiftkey = KBaltkey = 0; + if (event->state & GDK_CONTROL_MASK) KBcontrolkey = 1; // v.13.08 + if (event->state & GDK_SHIFT_MASK) KBshiftkey = 1; + if (event->state & GDK_MOD1_MASK) KBaltkey = 1; + + Mwxposn = Mxposn; // mouse position, window space + Mwyposn = Myposn; + + mouse_convert(Mxposn,Myposn); // convert to image space + + if (type == GDK_SCROLL) { // scroll wheel = zoom + zoomx = Mxposn; // zoom center = mouse position + zoomy = Myposn; + if (scroll == GDK_SCROLL_UP) m_zoom(null,"in"); + if (scroll == GDK_SCROLL_DOWN) m_zoom(null,"out"); + return; + } + + if (type == GDK_MOTION_NOTIFY) { + if (mbusy) return; // discard excess motion events + mbusy++; + zmainloop(); + mbusy = 0; + } + + if (type == GDK_BUTTON_PRESS) { // button down + Mdrag++; // possible drag start + bdtime = time; // time of button down + Mbutton = button; + mdragx0 = Mwxposn; // window position at button down + mdragy0 = Mwyposn; + Mxdown = Mxposn; // image position at button down + Mydown = Myposn; + Mxdrag = Mydrag = 0; + } + + if (type == GDK_MOTION_NOTIFY && Mdrag) { // drag underway + Mwdragx = Mwxposn - mdragx0; // drag increment, window space + Mwdragy = Mwyposn - mdragy0; + mdragx0 = Mwxposn; // new drag origin = current position + mdragy0 = Mwyposn; + Mxdrag = Mxposn; // drag position, image space + Mydrag = Myposn; + } + + if (type == GDK_BUTTON_RELEASE) { // button up + Mxclick = Myclick = 0; // reset click status + butime = time; // time of button up + if (butime - bdtime < 400) { // less than 0.4 secs down + if (Mxposn == Mxdown && Myposn == Mydown) { // and not moving + if (Mbutton == 1) LMclick++; // left mouse click + if (Mbutton == 3) RMclick++; // right mouse click + Mxclick = Mxdown; // click = button down position + Myclick = Mydown; + if (button == 2) { // center button click + zoomx = Mxposn; // re-center at mouse (Doriano) + zoomy = Myposn; + gtk_widget_queue_draw(cDwin); + } + } + } + Mxdown = Mydown = Mxdrag = Mydrag = Mdrag = Mbutton = 0; // forget buttons and drag + } + + Fmousemain = 1; // mouse acts on main window + if (Mcapture) Fmousemain = 0; // curr. function handles mouse + if (mouseCBfunc) Fmousemain = 0; // mouse owned by callback function + if (KBcontrolkey) Fmousemain = 1; // mouse acts on main window + + if (mutex_trylock(&Fpixmap_lock) != 0) return; // block mouse if image transition + mutex_unlock(&Fpixmap_lock); // moved here v.13.04 + + if (mouseCBfunc && ! Fmousemain) { // pass to handler function + if (mbusy) return; + mbusy++; // stop re-entrance + (* mouseCBfunc)(); + mbusy = 0; + Fmousemain = 1; // click/drag params are processed + } // if not reset by handler func. + + if (! Fmousemain) return; // curr. function handles mouse + + if (LMclick) { // left click = zoom request + LMclick = 0; + zoomx = Mxclick; // zoom center = mouse + zoomy = Myclick; + m_zoom(null,"in"); + } + + if (RMclick) { // right click + RMclick = 0; + if (mwpC->fzoom) { // if zoomed image, reset to fit window + zoomx = zoomy = 0; + m_zoom(null,"fit"); + } + else if (curr_file && cTab == tabF) + image_Rclick_popup(curr_file_posn); // image right-click popup menu + } + + if ((Mxdrag || Mydrag)) // drag = scroll by mouse + gtk_widget_queue_draw(cDwin); + + return; +} + + +// convert mouse position from window space to image space + +void mouse_convert(int &xpos, int &ypos) +{ + xpos = (xpos - mwpC->dorgx + mwpC->morgx) / mwpC->mscale + 0.5; + ypos = (ypos - mwpC->dorgy + mwpC->morgy) / mwpC->mscale + 0.5; + + if (xpos < 0) xpos = 0; // if outside image put at edge + if (ypos < 0) ypos = 0; + + if (E3pxm) { + if (xpos >= E3pxm->ww) xpos = E3pxm->ww-1; + if (ypos >= E3pxm->hh) ypos = E3pxm->hh-1; + } + else { + if (xpos >= mwpC->fpxb->ww) xpos = mwpC->fpxb->ww-1; + if (ypos >= mwpC->fpxb->hh) ypos = mwpC->fpxb->hh-1; + } + + return; +} + + +/**************************************************************************/ + +// set new image zoom level or magnification +// zoom: "in" zoom in in steps +// "out" zoom out in steps +// "fit" zoom out to fit window +// "100" toggle 100% and fit window + +void m_zoom(GtkWidget *, cchar *zoom) +{ + int fww, fhh; + float scalew, scaleh, fitscale, fzoom2, zratio = 1; + float Rzoom, pixels; + + if (! mwpC || ! mwpC->fpxb) return; // v.13.06 + + Rzoom = mwpC->fzoom; // current zoom ratio + + if (E3pxm) { + fww = E3pxm->ww; // 1x image size + fhh = E3pxm->hh; + } + else { + fww = mwpC->fpxb->ww; + fhh = mwpC->fpxb->hh; + } + + if (fww > Dww || fhh > Dhh) { // get window fit scale + scalew = 1.0 * Dww / fww; + scaleh = 1.0 * Dhh / fhh; + if (scalew < scaleh) fitscale = scalew; + else fitscale = scaleh; // window/image, < 1.0 + } + else fitscale = 1.0; // if image < window use 100% + + if (strEqu(zoom,"Zoom+")) zoom = "in"; // toolbar button: + = zoom in + if (strEqu(zoom,"Zoom-")) zoom = "fit"; // - = fit window + + if (strEqu(zoom,"fit")) mwpC->fzoom = 0; // zoom to fit window + + if (strEqu(zoom,"100")) { + if (mwpC->fzoom != 0) mwpC->fzoom = 0; // toggle 100% and fit window + else mwpC->fzoom = 1; + } + + if (strstr("in out",zoom)) // caller: zoom in or out + { + if (! mwpC->fzoom) mwpC->fzoom = fitscale; // current zoom scale + for (fzoom2 = 0.125; fzoom2 < 4.0; fzoom2 *= zoomratio) // find nearest natural ratio + if (mwpC->fzoom < fzoom2 * sqrt(zoomratio)) break; + if (strEqu(zoom,"in")) zratio = zoomratio; // zoom in, make image larger + if (strEqu(zoom,"out")) zratio = 1.0 / zoomratio; // zoom out, make image smaller + mwpC->fzoom = fzoom2 * zratio; + if (mwpC->fzoom > 0.124 && mwpC->fzoom < 0.126) mwpC->fzoom = 0.125; // hit these ratios exactly + if (mwpC->fzoom > 0.24 && mwpC->fzoom < 0.26) mwpC->fzoom = 0.25; + if (mwpC->fzoom > 0.49 && mwpC->fzoom < 0.51) mwpC->fzoom = 0.50; + if (mwpC->fzoom > 0.99 && mwpC->fzoom < 1.01) mwpC->fzoom = 1.00; + if (mwpC->fzoom > 1.99 && mwpC->fzoom < 2.01) mwpC->fzoom = 2.00; + if (mwpC->fzoom > 3.99) mwpC->fzoom = 4.0; // max. allowed zoom + if (mwpC->fzoom < fitscale) mwpC->fzoom = 0; // image < window + } + + if (cTab == tabW) { // optimize for world map + if (strEqu(zoom,"in")) mwpC->fzoom = 1.0; // zoom to 100% directly + if (mwpC->fzoom == 1.0 && Rzoom == 1.0) { + gtk_widget_queue_draw(cDwin); // if already, move mouse pointer only + return; + } + } + + if (mwpC->fzoom > 1.0) { // limit image in window to 1 gigabyte + pixels = mwpC->fzoom * fww * mwpC->fzoom * fhh; // (333 megapixels x 3 bytes/pixel) + if (pixels > 333 * mega) { // if size is at maximum, + mwpC->fzoom = Rzoom; // move mouse pointer only + gtk_widget_queue_draw(cDwin); + return; + } + } + + if (! mwpC->fzoom) zoomx = zoomy = 0; // no requested zoom center + mwpaint2(); // refresh window + return; +} + + +/**************************************************************************/ + +// function for dialogs to call to send KB keys for processing by main app + +void KBstate(GdkEventKey *event, int state) +{ + if (state) KBpress(0,event,0); + else KBrelease(0,event,0); + return; +} + + +// keyboard event functions +// GDK key symbols: /usr/include/gtk-3.0/gdk/gdkkeysyms.h + +int KBpress(GtkWidget *win, GdkEventKey *event, void *) // prevent propagation of key-press +{ // events to toolbar buttons + KBkey = event->keyval; + + KBcontrolkey = KBshiftkey = KBaltkey = 0; + if (event->state & GDK_CONTROL_MASK) KBcontrolkey = 1; // v.13.08 + if (event->state & GDK_SHIFT_MASK) KBshiftkey = 1; + if (event->state & GDK_MOD1_MASK) KBaltkey = 1; + + return 1; +} + + +int KBrelease(GtkWidget *win, GdkEventKey *event, void *) // some key was released +{ + int ii, jj, cc; + char matchkey[20]; + + KBkey = event->keyval; + + KBcontrolkey = KBshiftkey = KBaltkey = 0; + if (event->state & GDK_CONTROL_MASK) KBcontrolkey = 1; // v.13.08 + if (event->state & GDK_SHIFT_MASK) KBshiftkey = 1; + if (event->state & GDK_MOD1_MASK) KBaltkey = 1; + + if (! KBcontrolkey && ! KBshiftkey && ! KBaltkey) { // F/G/W keys are tab shortcuts + if (KBkey == GDK_KEY_f) { settab("F"); goto KBend; } // Ctrl/Alt + F/G/W can be used + if (KBkey == GDK_KEY_g) { settab("G"); goto KBend; } // for custom shortcuts + if (KBkey == GDK_KEY_w) { settab("W"); goto KBend; } + } + + if (KBcapture) return 1; // let current function handle it + +// reserved shortcuts (not user configurable) + + if (KBkey == GDK_KEY_F1) { // F1 >> user guide + showz_userguide(F1_help_topic); // show topic if there, or page 1 + goto KBend; + } + + if (KBkey == GDK_KEY_F11) { // F11 >> toggle main window + if (! Wfullscreen) win_fullscreen(); // to full-screen mode and back + else win_unfullscreen(); + if (Fslideshow) m_slideshow(0,0); // quit slideshow if active + goto KBend; + } + + if (KBkey == GDK_KEY_Escape && Wfullscreen) { // ESC key >> exit full screen + win_unfullscreen(); + if (Fslideshow) m_slideshow(0,0); // quit slideshow if active + goto KBend; + } + + if (cTab == tabG) { // tab G is active, + navi::KBrelease(win,event,0); // pass to gallery KB function + goto KBend; // (keys below not for gallery) + } + + if (KBkey == GDK_KEY_z || KBkey == GDK_KEY_Z) { // Z key + if (! KBcontrolkey) m_zoom(null,"100"); // if no CTRL, toggle zoom 1x + goto KBend; + } + + if (cTab == tabW) goto KBend; // tab W active, no other KB events + + if (KBkey == GDK_KEY_plus) m_zoom(null,"in"); // + key >> zoom in + if (KBkey == GDK_KEY_minus) m_zoom(null,"fit"); // - key >> fit to window + if (KBkey == GDK_KEY_equal) m_zoom(null,"in"); // = key: same as + + if (KBkey == GDK_KEY_KP_Add) m_zoom(null,"in"); // keypad + + if (KBkey == GDK_KEY_KP_Subtract) m_zoom(null,"fit"); // keypad - + + if (Fslideshow) { // slide show mode + if (KBkey == GDK_KEY_Left) slideshow_next("prev"); // arrow keys = prev/next image + if (KBkey == GDK_KEY_Right) slideshow_next("next"); + if (KBkey == GDK_KEY_space) slideshow_next("pause"); // spacebar = pause/resume + if (KBkey == GDK_KEY_B || KBkey == GDK_KEY_b) + slideshow_next("blank"); // B key = blank screen + pause + goto KBend; + } + + if (KBkey == GDK_KEY_Left) m_prev(0,0); // arrow keys = prev/next image + if (KBkey == GDK_KEY_Right) m_next(0,0); + if (KBkey == GDK_KEY_Page_Up) m_prev(0,0); // page up/down = prev/next image + if (KBkey == GDK_KEY_Page_Down) m_next(0,0); + + if (KBkey == GDK_KEY_Delete) m_trash(0,0); // delete >> trash + +// look for configurable shortcut keys in shortcut table + + if (KBkey >= GDK_KEY_F1 && KBkey <= GDK_KEY_F9) { // input key is F1 to F9 + ii = KBkey - GDK_KEY_F1; + strcpy(matchkey,"F1"); + matchkey[1] += ii; + } + + else if (KBkey > 255) goto KBend; // not a single letter or digit + + else { + *matchkey = 0; // build input key combination + if (KBcontrolkey) strcat(matchkey,"Ctrl+"); // [Ctrl+] [Alt+] [Shift+] key + if (KBaltkey) strcat(matchkey,"Alt+"); + if (KBshiftkey) strcat(matchkey,"Shift+"); + cc = strlen(matchkey); + matchkey[cc] = KBkey; + matchkey[cc+1] = 0; + } + + for (ii = 0; ii < Nshortcuts; ii++) // convert key combination to menu name + if (strcasecmp(matchkey,shortcutkey[ii]) == 0) break; + + if (ii < Nshortcuts) { // convert menu name to menu function + for (jj = 0; jj < Nmenus; jj++) + if (strcasecmp(shortcutmenu[ii],ZTX(menutab[jj].menu)) == 0) break; + if (jj < Nmenus) menutab[jj].func(0,menutab[jj].arg); // call the menu function + } + +KBend: + KBkey = 0; + return 1; +} + + +/**************************************************************************/ + +// set the main window to fullscreen status +// (with no menu, toolbar, statusbar) + +void win_fullscreen() +{ + if (fMenu) gtk_widget_hide(fMenu); // remove menu, toolbar, status bar + if (fTbar) gtk_widget_hide(fTbar); + if (fSbar) gtk_widget_hide(fSbar); + if (fVMenu) gtk_widget_hide(fVMenu); // vertical menu/toolbar v.13.03 + + gtk_window_fullscreen(MWIN); + + for (int ii = 0; ii < 20; ii++) { // wait for window manager to act + zmainloop(); + if (Wfullscreen) break; + zsleep(0.1); + } + + if (gdkWin) + gdk_window_set_background_rgba(gdkWin,&GDKdgray); // restore background + return; +} + + +// restore window to former size and restore menu etc. + +void win_unfullscreen() +{ + gtk_window_unfullscreen(MWIN); // restore old window size + gtk_widget_show_all(tabWin); // show all menus and toolbars + Wfullscreen = 0; + if (gdkWin) + gdk_window_set_background_rgba(gdkWin,&GDKdgray); // restore background + return; +} + + +/**************************************************************************/ + +// draw a pixel using foreground color. +// px, py are image space. + +void draw_pixel(int px, int py) +{ + int qx, qy, crflag = 0; + static int pqx, pqy; + static uint8 pixel[12]; // 2x2 block of pixels + static GdkPixbuf *pixbuf1 = 0, *pixbuf4 = 0; + + if (! gdkWin) return; + + if (! pixbuf1) { + pixbuf1 = gdk_pixbuf_new_from_data(pixel,GDKRGB,0,8,1,1,3,0,0); // 1x1 pixels + pixbuf4 = gdk_pixbuf_new_from_data(pixel,GDKRGB,0,8,2,2,6,0,0); // 2x2 pixels + } + + qx = Mscale * px - Morgx; // image to window space + qy = Mscale * py - Morgy; + + if (qx == pqx && qy == pqy) return; // avoid redundant points + + pqx = qx; + pqy = qy; + + if (qx < 0 || qx > dww-2) return; // keep off image edges + if (qy < 0 || qy > dhh-2) return; + + if (! mwcr) { + mwcr = gdk_cairo_create(gdkWin); // create cairo context if not already + crflag = 1; + } + + if (Mscale < 1.99) { // write 1x1 pixels + pixel[0] = fg_color[0]; + pixel[1] = fg_color[1]; + pixel[2] = fg_color[2]; + + gdk_cairo_set_source_pixbuf(mwcr,pixbuf1,qx+Dorgx,qy+Dorgy); + cairo_paint(mwcr); + } + + else { // write 2x2 fat pixels + pixel[0] = pixel[3] = pixel[6] = pixel[9] = fg_color[0]; + pixel[1] = pixel[4] = pixel[7] = pixel[10] = fg_color[1]; + pixel[2] = pixel[5] = pixel[8] = pixel[11] = fg_color[2]; + + gdk_cairo_set_source_pixbuf(mwcr,pixbuf4,qx+Dorgx,qy+Dorgy); + cairo_paint(mwcr); + } + + if (crflag) { + cairo_destroy(mwcr); + mwcr = 0; + } + + return; +} + + +// erase one drawn pixel - restore from window image mpxb. +// px, py are image space. + +void erase_pixel(int px, int py) +{ + static PXB *pxb2 = 0; + static uint8 *pix1, *pix2; + static int rs2, pqx, pqy; + int qx, qy, crflag = 0; + + if (! gdkWin) return; + + if (! pxb2) { + pxb2 = PXB_make(2,2); // 2x2 pixbuf + pix2 = pxb2->pixels; + rs2 = pxb2->rs; + } + + qx = Mscale * px; // image to window space + qy = Mscale * py; + + if (qx == pqx && qy == pqy) return; // avoid same target pixel + + pqx = qx; + pqy = qy; + + if (qx < 0 || qx > Mpxb->ww-2) return; // pixel outside scaled image + if (qy < 0 || qy > Mpxb->hh-2) return; + + if (qx < Morgx || qx > Morgx + dww-2) return; // pixel outside drawing window + if (qy < Morgy || qy > Morgy + dhh-2) return; + + if (! mwcr) { + mwcr = gdk_cairo_create(gdkWin); // create cairo context if not already + crflag = 1; + } + + pix1 = PXBpix(Mpxb,qx,qy); // source pixels, 2x2 block + memcpy(pix2,pix1,6); // copy 2 upper pixels, 6 bytes + memcpy(pix2+rs2,pix1+Mpxb->rs,6); // copy 2 lower pixels + + qx = qx - Morgx + Dorgx; // target pixel in window + qy = qy - Morgy + Dorgy; + gdk_cairo_set_source_pixbuf(mwcr,pxb2->pixbuf,qx,qy); + cairo_paint(mwcr); + + if (crflag) { + cairo_destroy(mwcr); + mwcr = 0; + } + + return; +} + + +/**************************************************************************/ + +// draw line. +// coordinates are image space. + +void draw_line(int x1, int y1, int x2, int y2) +{ + float px1, py1, px2, py2; + int crflag = 0; + + if (! gdkWin) return; + + px1 = Mscale * x1 - Morgx + Dorgx; // image to window space + py1 = Mscale * y1 - Morgy + Dorgy; + px2 = Mscale * x2 - Morgx + Dorgx; + py2 = Mscale * y2 - Morgy + Dorgy; + + if (! mwcr) { + mwcr = gdk_cairo_create(gdkWin); // create cairo context if not already + cairo_set_line_width(mwcr,1); + crflag = 1; + } + + cairo_set_source_rgb(mwcr,1,1,1); + cairo_move_to(mwcr,px1,py1); + cairo_line_to(mwcr,px2,py2); + cairo_stroke(mwcr); + + if (crflag) { + cairo_destroy(mwcr); + mwcr = 0; + } + + return; +} + + +// draw dotted line. +// coordinates are image space. + +void draw_dotline(int x1, int y1, int x2, int y2) +{ + float px1, py1, px2, py2; + double dashes[2] = { 4, 4 }; + int crflag = 0; + + if (! gdkWin) return; + + px1 = Mscale * x1 - Morgx + Dorgx; // image to window space + py1 = Mscale * y1 - Morgy + Dorgy; + px2 = Mscale * x2 - Morgx + Dorgx; + py2 = Mscale * y2 - Morgy + Dorgy; + + if (px1 > Dww-2) px1 = Dww-2; + if (py1 > Dhh-2) py1 = Dhh-2; + if (px2 > Dww-2) px2 = Dww-2; + if (py2 > Dhh-2) py2 = Dhh-2; + + if (! mwcr) { + mwcr = gdk_cairo_create(gdkWin); // create cairo context if not already + cairo_set_line_width(mwcr,1); + crflag = 1; + } + else cairo_save(mwcr); + + cairo_set_source_rgb(mwcr,1,1,1); + cairo_set_dash(mwcr,dashes,2,0); + cairo_move_to(mwcr,px1,py1); + cairo_line_to(mwcr,px2,py2); + cairo_stroke(mwcr); + + if (crflag) { + cairo_destroy(mwcr); + mwcr = 0; + } + else cairo_restore(mwcr); + + return; +} + + +// erase line. refresh line path from mpxb window image. +// double line width is erased. +// coordinates are image space. + +void erase_line(int x1, int y1, int x2, int y2) +{ + float pxm, pym, slope; + int crflag = 0; + + if (! gdkWin) return; + + if (! mwcr) { + mwcr = gdk_cairo_create(gdkWin); // create cairo context if not already + crflag = 1; + } + + if (abs(y2 - y1) > abs(x2 - x1)) { + slope = 1.0 * (x2 - x1) / (y2 - y1); + for (pym = y1; pym <= y2; pym++) { + pxm = x1 + slope * (pym - y1); + erase_pixel(pxm,pym); + } + } + + else { + slope = 1.0 * (y2 - y1) / (x2 - x1); + for (pxm = x1; pxm <= x2; pxm++) { + pym = y1 + slope * (pxm - x1); + erase_pixel(pxm,pym); + } + } + + if (crflag) { + cairo_destroy(mwcr); + mwcr = 0; + } + + return; +} + + +/**************************************************************************/ + +// draw pre-set overlay lines on top of image +// arg = 1: paint lines only (because window repainted) +// 2: erase lines and forget them +// 3: erase old lines, paint new lines, save new in old + +void draw_toplines(int arg) +{ + int ii, crflag = 0; + + if (! gdkWin) return; + + if (! mwcr) { + mwcr = gdk_cairo_create(gdkWin); // create cairo context if not already + cairo_set_line_width(mwcr,1); + crflag = 1; + } + + if (arg == 2 || arg == 3) // erase old lines + for (ii = 0; ii < Nptoplines; ii++) + erase_line(ptoplinex1[ii],ptopliney1[ii],ptoplinex2[ii],ptopliney2[ii]); + + if (arg == 1 || arg == 3) // draw new lines + for (ii = 0; ii < Ntoplines; ii++) + draw_dotline(toplinex1[ii],topliney1[ii],toplinex2[ii],topliney2[ii]); + + if (crflag) { + cairo_destroy(mwcr); + mwcr = 0; + } + + if (arg == 2) { + Nptoplines = Ntoplines = 0; // forget lines + return; + } + + for (ii = 0; ii < Ntoplines; ii++) // save for future erase + { + ptoplinex1[ii] = toplinex1[ii]; + ptopliney1[ii] = topliney1[ii]; + ptoplinex2[ii] = toplinex2[ii]; + ptopliney2[ii] = topliney2[ii]; + } + + Nptoplines = Ntoplines; + + return; +} + + +/**************************************************************************/ + +// draw a grid of horizontal and vertical lines. +// grid line spacings are in window space. + +void draw_gridlines() +{ + int px, py, stepx, stepy, startx, starty; + int crflag = 0, G = currgrid; + + if (! gdkWin) return; + if (! Fpxb) return; // no image + if (! gridsettings[G][GON]) return; // grid lines off + + stepx = gridsettings[G][GXS]; // space between grid lines + stepy = gridsettings[G][GYS]; // (window space) + + if (gridsettings[G][GXC]) + stepx = dww / (1 + gridsettings[G][GXC]); // if line counts specified, + if (gridsettings[G][GYC]) // set spacing accordingly + stepy = dhh / ( 1 + gridsettings[G][GYC]); + + startx = stepx * gridsettings[G][GXF] / 100; // variable offsets + if (startx < 0) startx += stepx; + + starty = stepy * gridsettings[G][GYF] / 100; + if (starty < 0) starty += stepy; + + if (! mwcr) { + mwcr = gdk_cairo_create(gdkWin); // create cairo context if not already + cairo_set_line_width(mwcr,1); + crflag = 1; + } + + cairo_set_source_rgb(mwcr,1,1,1); // white lines + + if (gridsettings[G][GX] && stepx) + for (px = Dorgx+startx; px < Dorgx+dww; px += stepx) { + cairo_move_to(mwcr,px,Dorgy); + cairo_line_to(mwcr,px,Dorgy+dhh); + } + + if (gridsettings[G][GY] && stepy) + for (py = Dorgy+starty; py < Dorgy+dhh; py += stepy) { + cairo_move_to(mwcr,Dorgx,py); + cairo_line_to(mwcr,Dorgx+dww,py); + } + + cairo_stroke(mwcr); + + cairo_set_source_rgb(mwcr,0,0,0); // adjacent black lines + + if (gridsettings[G][GX] && stepx) + for (px = Dorgx+startx+1; px < Dorgx+dww; px += stepx) { + cairo_move_to(mwcr,px,Dorgy); + cairo_line_to(mwcr,px,Dorgy+dhh); + } + + if (gridsettings[G][GY] && stepy) + for (py = Dorgy+starty+1; py < Dorgy+dhh; py += stepy) { + cairo_move_to(mwcr,Dorgx,py); + cairo_line_to(mwcr,Dorgx+dww,py); + } + + cairo_stroke(mwcr); + + if (crflag) { + cairo_destroy(mwcr); + mwcr = 0; + } + + return; +} + + +/**************************************************************************/ + +// maintain a set of text strings written over the image in the window. +// add a new text string to the list. +// multiple text strings can be added with the same ID. +// px and py are image space. + +void add_toptext(int ID, int px, int py, cchar *text, cchar *font) +{ + if (Ntoptext == maxtoptext) { + printf("*** maxtoptext exceeded \n"); + return; + } + + int ii = Ntoptext++; + toptext[ii].ID = ID; + toptext[ii].px = px; + toptext[ii].py = py; + toptext[ii].text = text; + toptext[ii].font = font; + + return; +} + + +// draw current text strings over the image in window. +// called from mwpaint1(). + +void draw_toptext() +{ + int crflag = 0; + + if (! gdkWin) return; + + if (! mwcr) { + mwcr = gdk_cairo_create(gdkWin); // create cairo context if not already + cairo_set_line_width(mwcr,1); + crflag = 1; + } + + for (int ii = 0; ii < Ntoptext; ii++) + draw_text(toptext[ii].px,toptext[ii].py,toptext[ii].text,toptext[ii].font); + + if (crflag) { + cairo_destroy(mwcr); + mwcr = 0; + } + + return; +} + + +// delete text strings having the given ID from the list + +void erase_toptext(int ID) +{ + int ii, jj; + + for (ii = jj = 0; ii < Ntoptext; ii++) + { + if (toptext[ii].ID == ID) continue; + else toptext[jj++] = toptext[ii]; + } + + Ntoptext = jj; + return; +} + + +// draw text on window, black on white background +// coordinates are image space + +void draw_text(int px, int py, cchar *text, cchar *font) +{ + static PangoFontDescription *pangofont = null; + static PangoLayout *pangolayout = null; + static char priorfont[40] = ""; + int ww, hh, crflag = 0; + + if (! gdkWin) return; + + px = Mscale * px - Morgx + Dorgx; // image to window space + py = Mscale * py - Morgy + Dorgy; + + if (strNeq(font,priorfont)) { // change font + strncpy0(priorfont,font,40); + if (pangofont) pango_font_description_free(pangofont); + if (pangolayout) g_object_unref(pangolayout); + pangofont = pango_font_description_from_string(font); // make pango layout for font + pangolayout = gtk_widget_create_pango_layout(cDwin,0); + pango_layout_set_font_description(pangolayout,pangofont); + } + + pango_layout_set_text(pangolayout,text,-1); // add text to layout + pango_layout_get_pixel_size(pangolayout,&ww,&hh); + + if (! mwcr) { + mwcr = gdk_cairo_create(gdkWin); // create cairo context if not already + cairo_set_line_width(mwcr,1); + crflag = 1; + } + + cairo_set_source_rgb(mwcr,1,1,1); // draw white background + cairo_rectangle(mwcr,px,py,ww,hh); + cairo_fill(mwcr); + + cairo_move_to(mwcr,px,py); // draw layout with text + cairo_set_source_rgb(mwcr,0,0,0); + pango_cairo_show_layout(mwcr,pangolayout); + + if (crflag) { + cairo_destroy(mwcr); + mwcr = 0; + } + + return; +} + + +/**************************************************************************/ + +// maintain a set of circles drawn over the image in the window +// px, py are image space, radius is window space +// color = 1/2/3/4 = white/black/red/green + +void add_topcircle(int px, int py, int radius, int color) +{ + if (Ntopcircles == maxtopcircles) { + printf("*** maxtopcircles exceeded \n"); + return; + } + + int ii = Ntopcircles++; + topcircles[ii].px = px; + topcircles[ii].py = py; + topcircles[ii].radius = radius; + topcircles[ii].color = color; + + return; +} + + +// draw current circles over the image in the window +// called from mwpaint1() + +void draw_topcircles() +{ + int ii, px, py, rad, color; + int crflag = 0; + + if (! gdkWin) return; + + if (! mwcr) { + mwcr = gdk_cairo_create(gdkWin); // create cairo context if not already + cairo_set_line_width(mwcr,1); + crflag = 1; + } + + for (ii = 0; ii < Ntopcircles; ii++) + { + px = topcircles[ii].px * Mscale - Morgx + Dorgx; // image to window space + py = topcircles[ii].py * Mscale - Morgy + Dorgy; + rad = topcircles[ii].radius; // radius is window space + color = topcircles[ii].color; // 1/2/3/4 = white/black/red/green + + if (color == 1) cairo_set_source_rgb(mwcr,1,1,1); // set foreground color + else if (color == 2) cairo_set_source_rgb(mwcr,0,0,0); + else if (color == 3) cairo_set_source_rgb(mwcr,1,0,0); + else cairo_set_source_rgb(mwcr,0,1,0); + + cairo_arc(mwcr,px,py,rad,0,2*pi); // draw 360 deg. arc + cairo_stroke(mwcr); + } + + if (crflag) { + cairo_destroy(mwcr); + mwcr = 0; + } + + return; +} + + +// erase top circles (next window repaint) + +void erase_topcircles() +{ + Ntopcircles = 0; + return; +} + + +/**************************************************************************/ + +// Draw circle or ellipse around the mouse pointer. +// Prior circle/ellipse will be erased first. +// Used for mouse/brush radius in select/paint functions. +// cx, cy, cww, chh: center and axis sizes in image space. +// if cx == -1 then erase previous circle/ellipse only. + +void draw_mousearc(int cx, int cy, int cww, int chh) +{ + int px3, py3, ww3, hh3; + static int ppx3 = -1, ppy3, pww3, phh3; + int px, py, ww, hh, cc, rs; + int xlo, xhi, ylo, yhi; + uint8 *pix1, *pix2, *pix1r, *pix2r; + int crflag = 0; + GdkPixbuf *pixbuf; + + float fcx, fcy; + float a, b, a2, b2; + float x, y, x2, y2; + float r2 = 1.0 / 1.4; // deliberately > 1.0 / sqrt(2) + + if (! gdkWin) return; + + if (ppx3 >= 0) { // erase prior circle + mwpaint4(ppx3,ppy3,pww3,phh3); // refresh from mpxb + if (Fshowarea) + sa_show_rect(ppx3,ppy3,pww3,phh3); // refresh select area outline + ppx3 = -1; + } + + if (cx < 0) return; // erase only was wanted + + px3 = cx - (cww + 1) / 2; // convert center + axis sizes + py3 = cy - (chh + 1) / 2; // to block position, width, length + ww3 = cww + 2; + hh3 = chh + 2; + + if (px3 < 0) { + ww3 += px3; + px3 = 0; + } + + if (py3 < 0) { + hh3 += py3; + py3 = 0; + } + + ppx3 = px3; // remember block area for + ppy3 = py3; // for possible erase call + pww3 = ww3; + phh3 = hh3; + + px = Mscale * px3; // 1x image space to mpxb space + py = Mscale * py3; + ww = Mscale * ww3; + hh = Mscale * hh3; + + xlo = px; // convert to x/y low/high limits + ylo = py; + xhi = xlo + ww; + yhi = ylo + hh; + + if (xlo < Morgx) xlo = Morgx; // truncate to visible window + if (ylo < Morgy) ylo = Morgy; + if (xhi > Morgx + dww) xhi = Morgx + dww; + if (yhi > Morgy + dhh) yhi = Morgy + dhh; + + ww = xhi - xlo; + hh = yhi - ylo; + + if (ww <= 0 || hh <= 0) { + ppx3 = -1; // completely outside visible window + return; + } + + cc = (ww+1) * (hh+1) * 3; // size of mpxb area to copy v.13.04 + + pix1 = PXBpix(Mpxb,xlo,ylo); // pix1 block within mpxb - source + pix2 = (uint8 *) zmalloc(cc,"mousearc"); // allocate pix2 block - destination + + pix1r = pix1; // row addresses + pix2r = pix2; + + for (py = 0; py < hh; py++) // copy pix1 block to pix2 + { + memmove(pix2r,pix1r,ww*3); + pix1r += Mpxb->rs; + pix2r += ww * 3; + } + + fcx = cx * Mscale; // ellipse center within mpxb + fcy = cy * Mscale; + fcx -= xlo; // center within pix2 block + fcy -= ylo; + + a = 0.5 * cww * Mscale - 1; // ellipse constants from + b = 0.5 * chh * Mscale - 1; // enclosing rectangle + a2 = a * a; + b2 = b * b; + + for (y = -b*r2; y < b*r2; y++) // step through y values, omitting + { // curve points covered by x values + y2 = y * y; + x2 = a2 * (1 - y2 / b2); + x = sqrt(x2); // corresp. x values, + and - + py = y + fcy + 0.5; + if (py < 0 || py > hh-1) continue; + px = fcx - x + 0.5; + if (px >= 0) { // draw curve outline + pix1 = pix2 + (py * ww + px) * 3; + pix1[0] = fg_color[0]; + pix1[1] = fg_color[1]; + pix1[2] = fg_color[2]; + } + px = fcx + x + 0.5; + if (px < ww) { + pix1 = pix2 + (py * ww + px) * 3; + pix1[0] = fg_color[0]; + pix1[1] = fg_color[1]; + pix1[2] = fg_color[2]; + } + } + + for (x = -a*r2; x < a*r2; x++) // step through x values, omitting + { // curve points covered by y values + x2 = x * x; + y2 = b2 * (1 - x2 / a2); + y = sqrt(y2); // corresp. y values, + and - + px = x + fcx + 0.5; + if (px < 0 || px > ww-1) continue; + py = fcy - y + 0.5; + if (py >= 0) { // draw curve outline + pix1 = pix2 + (py * ww + px) * 3; + pix1[0] = fg_color[0]; + pix1[1] = fg_color[1]; + pix1[2] = fg_color[2]; + } + py = fcy + y + 0.5; + if (py < hh) { + pix1 = pix2 + (py * ww + px) * 3; + pix1[0] = fg_color[0]; + pix1[1] = fg_color[1]; + pix1[2] = fg_color[2]; + } + } + + if (! mwcr) { + mwcr = gdk_cairo_create(gdkWin); // create cairo context if not already + crflag = 1; + } + + rs = ww * 3; // pix2 row stride + pixbuf = gdk_pixbuf_new_from_data(pix2,GDKRGB,0,8,ww,hh,rs,0,0); // pixbuf for image pix2 + + px = xlo - Morgx + Dorgx; // area position in drawing window + py = ylo - Morgy + Dorgy; + + gdk_cairo_set_source_pixbuf(mwcr,pixbuf,px,py); // draw area to window + cairo_paint(mwcr); + + g_object_unref(pixbuf); // free memory + zfree(pix2); + + if (Fshowarea) + sa_show_rect(px3,py3,ww3,hh3); // refresh select area outline + + if (crflag) { + cairo_destroy(mwcr); + mwcr = 0; + } + + return; +} + + +/************************************************************************** + + spline curve setup and edit functions + + Support multiple frames with curves in parallel + (edit curve(s) and image mask curve) + + Usage: + Add frame widget to dialog or zdialog. + Set up drawing in frame: + sd = curve_init(frame, callback_func) + Initialize no. of curves in frame (1-10): + sd->Nspc = n + Initialize vert/horz flag for curve spc: + sd->vert[spc] = hv + Initialize anchor points for curve spc: + sd->nap[spc], sd->apx[spc][xx], sd->apy[spc][yy] + Generate data for curve spc: + splcurve_generate(sd,spc) + Curves will now be shown and edited inside the frame when window is realized. + The callback_func(spc) will be called when curve spc is edited. + Change curve in program: + set anchor points, call splcurve_generate(sd,spc) + Get y-value (0-1) for curve spc and given x-value (0-1): + yval = splcurve_yval(sd,spc,xval) + If faster access to curve is needed (no interpolation): + kk = 1000 * xval; + if (kk > 999) kk = 999; + yval = sd->yval[spc][kk]; + +***/ + +// initialize for spline curve editing +// initial anchor points are pre-loaded into spldat before window is realized + +spldat * splcurve_init(GtkWidget *frame, void func(int spc)) +{ + int cc = sizeof(spldat); // allocate spc curve data area + spldat * sd = (spldat *) zmalloc(cc,"curvedat"); + memset(sd,0,cc); + + sd->drawarea = gtk_drawing_area_new(); // drawing area for curves + gtk_container_add(GTK_CONTAINER(frame),sd->drawarea); + sd->spcfunc = func; // user callback function + + gtk_widget_add_events(sd->drawarea,GDK_BUTTON_PRESS_MASK); // connect mouse events to drawing area + gtk_widget_add_events(sd->drawarea,GDK_BUTTON_RELEASE_MASK); + gtk_widget_add_events(sd->drawarea,GDK_BUTTON1_MOTION_MASK); + G_SIGNAL(sd->drawarea,"motion-notify-event",splcurve_adjust,sd); + G_SIGNAL(sd->drawarea,"button-press-event",splcurve_adjust,sd); + G_SIGNAL(sd->drawarea,"draw",splcurve_draw,sd); + + return sd; +} + + +// modify anchor points in curve using mouse + +int splcurve_adjust(void *, GdkEventButton *event, spldat *sd) +{ + int ww, hh, kk; + int mx, my, button, evtype; + static int spc, ap, mbusy = 0, Fdrag = 0; // drag continuation logic + int minspc, minap; + float mxval, myval, cxval, cyval; + float dist2, mindist2 = 0; + + mx = event->x; // mouse position in drawing area + my = event->y; + evtype = event->type; + button = event->button; + + if (evtype == GDK_MOTION_NOTIFY) { + if (mbusy) return 0; // discard excess motion events + mbusy++; + zmainloop(); + mbusy = 0; + } + + if (evtype == GDK_BUTTON_RELEASE) { + Fdrag = 0; + return 0; + } + + ww = gtk_widget_get_allocated_width(sd->drawarea); // drawing area size + hh = gtk_widget_get_allocated_height(sd->drawarea); + + if (mx < 0) mx = 0; // limit edge excursions + if (mx > ww) mx = ww; + if (my < 0) my = 0; + if (my > hh) my = hh; + + if (evtype == GDK_BUTTON_PRESS) Fdrag = 0; // left or right click + + if (Fdrag) // continuation of drag + { + if (sd->vert[spc]) { + mxval = 1.0 * my / hh; // mouse position in curve space + myval = 1.0 * mx / ww; + } + else { + mxval = 1.0 * mx / ww; + myval = 1.0 * (hh - my) / hh; + } + + if (ap < sd->nap[spc]-1 && sd->apx[spc][ap+1] - mxval < 0.05) // disallow < 0.05 from next + return 0; + if (ap > 0 && mxval - sd->apx[spc][ap-1] < 0.05) return 0; // or prior anchor point + } + + else // mouse click or new drag begin + { + minspc = minap = -1; // find closest curve/anchor point + mindist2 = 999999; + + for (spc = 0; spc < sd->Nspc; spc++) // loop curves + { + if (sd->vert[spc]) { + mxval = 1.0 * my / hh; // mouse position in curve space + myval = 1.0 * mx / ww; + } + else { + mxval = 1.0 * mx / ww; + myval = 1.0 * (hh - my) / hh; + } + + for (ap = 0; ap < sd->nap[spc]; ap++) // loop anchor points + { + cxval = sd->apx[spc][ap]; + cyval = sd->apy[spc][ap]; + dist2 = (mxval-cxval)*(mxval-cxval) + + (myval-cyval)*(myval-cyval); + if (dist2 < mindist2) { + mindist2 = dist2; // remember closest anchor point + minspc = spc; + minap = ap; + } + } + } + + if (minspc < 0) return 0; // impossible + spc = minspc; + ap = minap; + } + + if (evtype == GDK_BUTTON_PRESS && button == 3) // right click, remove anchor point + { + if (sqrt(mindist2) > 0.05) return 0; // not close enough + if (sd->nap[spc] < 3) return 0; // < 2 anchor points would remain + sd->nap[spc]--; // decr. before loop + for (kk = ap; kk < sd->nap[spc]; kk++) { + if (! kk) printf("meaningless reference %d",kk); // stop gcc optimization bug ///// + sd->apx[spc][kk] = sd->apx[spc][kk+1]; + sd->apy[spc][kk] = sd->apy[spc][kk+1]; + } + splcurve_generate(sd,spc); // regenerate data for modified curve + gtk_widget_queue_draw(sd->drawarea); + sd->spcfunc(spc); // call user function + return 0; + } + + if (! Fdrag) // new drag or left click + { + if (sd->vert[spc]) { + mxval = 1.0 * my / hh; // mouse position in curve space + myval = 1.0 * mx / ww; + } + else { + mxval = 1.0 * mx / ww; + myval = 1.0 * (hh - my) / hh; + } + + if (sqrt(mindist2) < 0.05) // existing point close enough, + { // move this anchor point to mouse + if (ap < sd->nap[spc]-1 && sd->apx[spc][ap+1] - mxval < 0.05) + return 0; // disallow < 0.05 from next + if (ap > 0 && mxval - sd->apx[spc][ap-1] < 0.05) return 0; // or prior anchor point + } + + else // none close, add new anchor point + { + minspc = -1; // find closest curve to mouse + mindist2 = 999999; + + for (spc = 0; spc < sd->Nspc; spc++) // loop curves + { + if (sd->vert[spc]) { + mxval = 1.0 * my / hh; // mouse position in curve space + myval = 1.0 * mx / ww; + } + else { + mxval = 1.0 * mx / ww; + myval = 1.0 * (hh - my) / hh; + } + + cyval = splcurve_yval(sd,spc,mxval); + dist2 = fabsf(myval - cyval); + if (dist2 < mindist2) { + mindist2 = dist2; // remember closest curve + minspc = spc; + } + } + + if (minspc < 0) return 0; // impossible + if (mindist2 > 0.05) return 0; // not close enough to any curve + spc = minspc; + + if (sd->nap[spc] > 49) { + zmessageACK(mWin,0,ZTX("Exceed 50 anchor points")); + return 0; + } + + if (sd->vert[spc]) { + mxval = 1.0 * my / hh; // mouse position in curve space + myval = 1.0 * mx / ww; + } + else { + mxval = 1.0 * mx / ww; + myval = 1.0 * (hh - my) / hh; + } + + for (ap = 0; ap < sd->nap[spc]; ap++) // find anchor point with next higher x + if (mxval <= sd->apx[spc][ap]) break; // (ap may come out 0 or nap) + + if (ap < sd->nap[spc] && sd->apx[spc][ap] - mxval < 0.05) // disallow < 0.05 from next + return 0; // or prior anchor point + if (ap > 0 && mxval - sd->apx[spc][ap-1] < 0.05) return 0; + + for (kk = sd->nap[spc]; kk > ap; kk--) { // make hole for new point + sd->apx[spc][kk] = sd->apx[spc][kk-1]; + sd->apy[spc][kk] = sd->apy[spc][kk-1]; + } + + sd->nap[spc]++; // up point count + } + } + + sd->apx[spc][ap] = mxval; // new or moved anchor point + sd->apy[spc][ap] = myval; // at mouse position + + splcurve_generate(sd,spc); // regenerate data for modified curve + gtk_widget_queue_draw(sd->drawarea); + sd->spcfunc(spc); // call user function + + if (evtype == GDK_MOTION_NOTIFY) Fdrag = 1; // remember drag is underway + return 0; +} + + +// for expose event or when a curve is changed +// draw all curves based on current anchor points + +int splcurve_draw(GtkWidget *drawarea, cairo_t *cr, spldat *sd) +{ + int ww, hh, spc, ap; + float xval, yval, px, py, qx, qy; + + ww = gtk_widget_get_allocated_width(sd->drawarea); // drawing area size + hh = gtk_widget_get_allocated_height(sd->drawarea); + if (ww < 50 || hh < 50) return 0; + + cairo_set_line_width(cr,1); + cairo_set_source_rgb(cr,0.7,0.7,0.7); + + for (int ii = 0; ii < sd->Nscale; ii++) // draw y-scale lines if any + { + px = ww * sd->xscale[0][ii]; + py = hh - hh * sd->yscale[0][ii]; + qx = ww * sd->xscale[1][ii]; + qy = hh - hh * sd->yscale[1][ii]; + cairo_move_to(cr,px,py); + cairo_line_to(cr,qx,qy); + } + cairo_stroke(cr); + + cairo_set_source_rgb(cr,0,0,0); + + for (spc = 0; spc < sd->Nspc; spc++) // loop all curves + { + if (sd->vert[spc]) // vert. curve + { + for (py = 0; py < hh; py++) // generate all points for curve + { + xval = 1.0 * py / hh; + yval = splcurve_yval(sd,spc,xval); + px = ww * yval; + if (py == 0) cairo_move_to(cr,px,py); + cairo_line_to(cr,px,py); + } + cairo_stroke(cr); + + for (ap = 0; ap < sd->nap[spc]; ap++) // draw boxes at anchor points + { + xval = sd->apx[spc][ap]; + yval = sd->apy[spc][ap]; + px = ww * yval; + py = hh * xval; + cairo_rectangle(cr,px-2,py-2,4,4); + } + cairo_fill(cr); + } + else // horz. curve + { + for (px = 0; px < ww; px++) // generate all points for curve + { + xval = 1.0 * px / ww; + yval = splcurve_yval(sd,spc,xval); + py = hh - hh * yval; + if (px == 0) cairo_move_to(cr,px,py); + cairo_line_to(cr,px,py); + } + cairo_stroke(cr); + + for (ap = 0; ap < sd->nap[spc]; ap++) // draw boxes at anchor points + { + xval = sd->apx[spc][ap]; + yval = sd->apy[spc][ap]; + px = ww * xval; + py = hh - hh * yval; + cairo_rectangle(cr,px-2,py-2,4,4); + } + cairo_fill(cr); + } + } + + return 0; +} + + +// generate all curve data points when anchor points are modified + +int splcurve_generate(spldat *sd, int spc) +{ + int kk, kklo, kkhi; + float xval, yvalx; + + spline1(sd->nap[spc],sd->apx[spc],sd->apy[spc]); // compute curve fitting anchor points + + kklo = 1000 * sd->apx[spc][0] - 30; // xval range = anchor point range + if (kklo < 0) kklo = 0; // + 0.03 extra below/above + kkhi = 1000 * sd->apx[spc][sd->nap[spc]-1] + 30; + if (kkhi > 1000) kkhi = 1000; + + for (kk = 0; kk < 1000; kk++) // generate all points for curve + { + xval = 0.001 * kk; // remove anchor point limits + yvalx = spline2(xval); + if (yvalx < 0) yvalx = 0; // yval < 0 not allowed, > 1 OK + sd->yval[spc][kk] = yvalx; + } + + return 0; +} + + +// Retrieve curve data using interpolation of saved table of values + +float splcurve_yval(spldat *sd, int spc, float xval) +{ + int ii; + float x1, x2, y1, y2, y3; + + if (xval <= 0) return sd->yval[spc][0]; + if (xval >= 0.999) return sd->yval[spc][999]; + + x2 = 1000.0 * xval; + ii = x2; + x1 = ii; + y1 = sd->yval[spc][ii]; + y2 = sd->yval[spc][ii+1]; + y3 = y1 + (y2 - y1) * (x2 - x1); + return y3; +} + + +// load curve data from a file +// returns 0 if fail (invalid file data), sd not modified +// returns 1 if succcess, sd is initialized from file data + +int splcurve_load(spldat *sd) +{ + char *pfile; + int nn, ii, jj; + FILE *fid = 0; + int Nspc, vert[10], nap[10]; + float apx[10][50], apy[10][50]; + + F1_help_topic = "curve_edit"; + + pfile = zgetfile1(ZTX("load curve from a file"),"open",saved_curves_dirk); + if (! pfile) return 0; + + fid = fopen(pfile,"r"); + zfree(pfile); + if (! fid) goto fail; + + nn = fscanf(fid,"%d ",&Nspc); // no. of curves + if (nn != 1) goto fail; + if (Nspc < 1 || Nspc > 10) goto fail; + if (Nspc != sd->Nspc) goto fail2; + + for (ii = 0; ii < Nspc; ii++) // loop each curve + { + nn = fscanf(fid,"%d %d ",&vert[ii],&nap[ii]); // vertical flag, no. anchor points + if (nn != 2) goto fail; + if (vert[ii] < 0 || vert[ii] > 1) goto fail; + if (nap[ii] < 2 || nap[ii] > 50) goto fail; + + for (jj = 0; jj < nap[ii]; jj++) // anchor point values + { + nn = fscanf(fid,"%f/%f ",&apx[ii][jj],&apy[ii][jj]); + if (nn != 2) goto fail; + if (apx[ii][jj] < 0 || apx[ii][jj] > 1) goto fail; + if (apy[ii][jj] < 0 || apy[ii][jj] > 1) goto fail; + } + } + + fclose(fid); + + sd->Nspc = Nspc; // copy curve data to caller's arg + + for (ii = 0; ii < Nspc; ii++) + { + sd->vert[ii] = vert[ii]; + sd->nap[ii] = nap[ii]; + + for (jj = 0; jj < nap[ii]; jj++) + { + sd->apx[ii][jj] = apx[ii][jj]; + sd->apy[ii][jj] = apy[ii][jj]; + } + } + + for (ii = 0; ii < Nspc; ii++) // generate curve data from anchor points + splcurve_generate(sd,ii); + + if (sd->drawarea) // regen and redraw all curves + gtk_widget_queue_draw(sd->drawarea); + + return 1; + +fail: + if (fid) fclose(fid); + zmessageACK(mWin,0,ZTX("curve file is invalid")); + return 0; + +fail2: + if (fid) fclose(fid); + zmessageACK(mWin,0,ZTX("curve file has different no. of curves")); + return 0; +} + + +// save curve data to a file + +int splcurve_save(spldat *sd) +{ + char *pfile, *pp; + int ii, jj; + FILE *fid; + + F1_help_topic = "curve_edit"; + + pp = zgetfile1(ZTX("save curve to a file"),"save",saved_curves_dirk); + if (! pp) return 0; + + pfile = strdupz(pp,8,"splcurve"); + zfree(pp); + + pp = strrchr(pfile,'/'); // force .curve extension + if (pp) pp = strrchr(pp,'.'); + if (pp) strcpy(pp,".curve"); + else strcat(pfile,".curve"); + + fid = fopen(pfile,"w"); + zfree(pfile); + if (! fid) return 0; + + fprintf(fid,"%d \n",sd->Nspc); // no. of curves + + for (ii = 0; ii < sd->Nspc; ii++) // loop each curve + { + fprintf(fid,"%d %d \n",sd->vert[ii],sd->nap[ii]); // vertical flag, no. anchor points + for (jj = 0; jj < sd->nap[ii]; jj++) // anchor point values + fprintf(fid,"%.4f/%.4f ",sd->apx[ii][jj],sd->apy[ii][jj]); + fprintf(fid,"\n"); + } + + fclose(fid); + return 0; +} + + +/************************************************************************** + + edit transaction and thread support functions + + edit transaction management + edit_setup() get E0 if none, E0 > E1 > E3 + edit_restart() cancel + setup, keep zdialog, etc. + edit_cancel() free (E1 E3 ER) + edit_done() E3 > E0, free (E1 ER) add to undo stack + edit_commit() edit_done() and edit_setup() + edit_undo() E3 > ER, E1 > E3 + edit_redo() ER > E3 + edit_reset() free ER, E1 > E3 + edit_fullsize() free (E1 E3) E0 > E1 > E3, signal thread + + main level thread management + start_thread(func,arg) start thread running + signal_thread() signal thread that work is pending + wait_thread_idle() wait for pending work complete + wrapup_thread(command) wait for exit or command thread exit + + thread function + thread_idle_loop() wait for pending work, exit if commanded + thread_exit() exit thread unconditionally + + thread_status (thread ownership + 0 no thread is running + 1 thread is running and idle (no work) + 2 thread is working + 0 thread has exited + + thread_command (main program ownership) + 0 idle, no work pending + 8 exit when pending work is done + 9 exit now, unconditionally + + thread_pend work requested counter + thread_done work done counter + thread_hiwater high water mark + +***************************************************************************/ + + +/************************************************************************** + + Setup for a new edit transaction + Create E1 (edit input) and E3 (edit output) pixmaps from + previous edit (E0) or image file (new E0). + + Fprev 0 edit full-size image + 1 edit preview image unless select area exists + + Farea 0 select_area is invalid and will be deleted (e.g. rotate) + 1 select_area not used but remains valid (e.g. red-eye) + 2 select_area can be used and remains valid (e.g. tune) + +***************************************************************************/ + + +int edit_setup(editfunc &EF) +{ + int yn, rww, rhh; + int Fpreview; + + if (! curr_file) return 0; // no image file + if (cTab != tabF) return 0; // could be Favorites menu + + if (CEF) { // prior edit function active + zmessageACK(mWin,0,ZTX("prior function still active")); // parallel edit removed + return 0; + } + + if (checkmenulock()) return 0; // check no menu lock + + if (URS_pos > maxedits-2) { // undo/redo stack capacity reached + zmessageACK(mWin,0,ZTX("Too many edits, please save image")); + return 0; + } + + sa_validate(); // delete area if not valid + + if (EF.Farea == 0 && sa_stat) { // select area will be lost, warn user + yn = zmessageYN(mWin,ZTX("Select area cannot be kept.\n" + "Continue?")); + if (! yn) return 0; + sa_unselect(); // unselect area + zdialog_free(zdsela); + } + + if (EF.Farea == 2 && sa_stat && sa_stat != 3) { // select area exists and can be used, + yn = zmessageYN(mWin,ZTX("Select area not active.\n" // but not active, ask user + "Continue?")); + if (! yn) return 0; + } + + if (! E0pxm) { // first edit for this file + E0pxm = PXM_load(curr_file,1); // get E0 image (poss. 16-bit color) + if (! E0pxm) return 0; + PXM_fixblue(E0pxm); // blue=0 >> blue=1 for vpixel() + curr_file_bpc = f_load_bpc; + } + + if (! menulock(1)) return 0; // can now commit, lock menu + + if (URS_pos == 0) save_undo(); // initial image >> undo/redo stack + + mutex_lock(&Fpixmap_lock); // lock pixmaps + + Fpreview = 0; // no preview + + if (EF.Fprev && ! Fzoom && ! (EF.Farea == 2 && sa_stat == 3)) // use preview if req. and no select area + Fpreview = 1; + + if (E0pxm->ww * E0pxm->hh < 2000000) // if image is small, don't use preview + Fpreview = 0; // v.13.04 + + if (E0pxm->ww < 1.4 * Dww && E0pxm->hh < 1.4 * Dhh) // if image slightly larger than window, + Fpreview = 0; // don't use preview + + if (Fpreview) { + if (Fpxb->ww * Dhh > Fpxb->hh * Dww) { // use preview image 1.4 * window size + rww = 1.4 * Dww; + if (rww < 1200) rww = 1200; // at least 1200 on one side + rhh = 1.0 * rww * Fpxb->hh / Fpxb->ww + 0.5; + } + else { + rhh = 1.4 * Dhh; + if (rhh < 1200) rhh = 1200; + rww = 1.0 * rhh * Fpxb->ww / Fpxb->hh + 0.5; + } + if (rww > Fpxb->ww) Fpreview = 0; + } + + if (Fpreview) { + E1pxm = PXM_rescale(E0pxm,rww,rhh); // scale edit image to preview size + sa_show(0); // hide select area if present + } + else E1pxm = PXM_copy(E0pxm); // else use full size image + + E3pxm = PXM_copy(E1pxm); // E1 >> E3 + + mutex_unlock(&Fpixmap_lock); + + CEF = &EF; // set current edit function + CEF->Fmods = 0; // image not modified yet v.13.04 + CEF->Fpreview = Fpreview; + + CEF->thread_command = CEF->thread_status = 0; // no thread running + CEF->thread_pend = CEF->thread_done = CEF->thread_hiwater = 0; // no work pending or done + if (CEF->threadfunc) start_thread(CEF->threadfunc,0); // start edit thread + + mwpaintnow(); // update image data synchronous v.13.04 + + return 1; +} + + +/**************************************************************************/ + +// Restart an edit function with a new current image file. +// Equivalent to edit_cancel() but retain zdialog, curves, mousefunc. +// Then edit_setup() and zdialog_send_event("restart") + +void edit_restart() // v.13.04 +{ + editfunc *cef = CEF; + + if (! CEF) return; // no active edit function + + if (! CEF->Frestart) { + edit_cancel(); // not restartable + return; + } + + wrapup_thread(9); // tell thread to quit now, wait + + mutex_lock(&Fpixmap_lock); + PXM_free(E1pxm); // free E1, E3, ER + PXM_free(E3pxm); + PXM_free(ERpxm); + mutex_unlock(&Fpixmap_lock); + + menulock(0); // unlock menu + CEF = 0; // no current edit func + + edit_setup(*cef); // setup same edit func again + if (CEF && CEF->zd) zdialog_send_event(CEF->zd,"restart"); // inform edit func of restart + return; +} + + +/**************************************************************************/ + +// process edit cancel + +void edit_cancel() +{ + if (! CEF) return; + + wrapup_thread(9); // tell thread to quit now, wait + + mutex_lock(&Fpixmap_lock); + PXM_free(E1pxm); // free E1, E3, ER + PXM_free(E3pxm); + PXM_free(ERpxm); + mutex_unlock(&Fpixmap_lock); + + if (CEF->zd) zdialog_free(CEF->zd); // kill dialog + CEF->zd = 0; + if (CEF->mousefunc == mouseCBfunc) freeMouse(); // if my mouse, free mouse + CEF->mousefunc = 0; + if (CEF->curves) zfree(CEF->curves); // free curves data + CEF->curves = 0; + CEF = 0; // no current edit func + + mwpaintnow(); // update image data synchronous v.13.04 + menulock(0); // unlock menu + return; +} + + +/**************************************************************************/ + +// process edit done + +void edit_done() +{ + if (! CEF) return; + + wait_thread_idle(); // wait for thread to finish + + if (CEF->Fpreview && CEF->Fmods) { // preview image was edited + Fzoom = 0; + edit_fullsize(); // update full image + } + + wrapup_thread(8); // tell thread to finish and exit + + mutex_lock(&Fpixmap_lock); + + if (CEF->Fmods) { // image was modified + PXM_free(E0pxm); + E0pxm = E3pxm; // E3 updated image >> E0 + E3pxm = 0; + PXM_free(E1pxm); // free E1, ER + PXM_free(ERpxm); + URS_pos++; // next undo/redo stack position + URS_max = URS_pos; // image modified - higher mods now obsolete + save_undo(); // save undo state (for following undo) + } + + else { // not modified + PXM_free(E1pxm); // free E1, E3, ER + PXM_free(E3pxm); + PXM_free(ERpxm); + } + + mutex_unlock(&Fpixmap_lock); + + if (CEF->zd) zdialog_free(CEF->zd); // kill dialog + CEF->zd = 0; + if (CEF->mousefunc == mouseCBfunc) freeMouse(); // if my mouse, free mouse + CEF->mousefunc = 0; + if (CEF->curves) zfree(CEF->curves); // free curves data + CEF->curves = 0; + CEF = 0; // no current edit func + + mwpaintnow(); // update image data synchronous v.13.04 + + menulock(0); + return; +} + + +/**************************************************************************/ + +// process edit commit +// Like edit_done() but retains zdialog, curves, mousefunc +// then does edit_setup() and zdialog_send_event("restart"). + +void edit_commit() // v.13.07 +{ + editfunc *cef = CEF; + + if (! CEF) return; + + if (! CEF->Frestart) { + edit_cancel(); // not restartable + return; + } + + wait_thread_idle(); // wait for thread to finish + + if (CEF->Fpreview && CEF->Fmods) { // preview image was edited + Fzoom = 0; + edit_fullsize(); // update full image + } + + wrapup_thread(8); // tell thread to finish and exit + + mutex_lock(&Fpixmap_lock); + + if (CEF->Fmods) { // image was modified + PXM_free(E0pxm); + E0pxm = E3pxm; // E3 updated image >> E0 + E3pxm = 0; + PXM_free(E1pxm); // free E1, ER + PXM_free(ERpxm); + URS_pos++; // next undo/redo stack position + URS_max = URS_pos; // image modified - higher mods now obsolete + save_undo(); // save undo state (for following undo) + } + + else { // not modified + PXM_free(E1pxm); // free E1, E3, ER + PXM_free(E3pxm); + PXM_free(ERpxm); + } + + mutex_unlock(&Fpixmap_lock); + + menulock(0); + CEF = 0; // no current edit func + + edit_setup(*cef); // setup same edit func again + if (CEF && CEF->zd) zdialog_send_event(CEF->zd,"restart"); // inform edit func of restart + + return; +} + + +/**************************************************************************/ + +// edit undo, redo, reset functions +// these apply within an active edit function + +void edit_undo() +{ + if (! CEF) return; + + if (CEF->thread_status == 2) return; // thread busy + if (! CEF->Fmods) return; // not modified + + mutex_lock(&Fpixmap_lock); + PXM_free(ERpxm); // E3 >> redo copy + ERpxm = E3pxm; + E3pxm = PXM_copy(E1pxm); // E1 >> E3 + mutex_unlock(&Fpixmap_lock); + + CEF->Fmods = 0; // reset image modified status + mwpaintnow(); // update image data synchronous v.13.04 + return; +} + + +void edit_redo() +{ + if (! CEF) return; + + if (CEF->thread_status == 2) return; // thread busy + if (! ERpxm) return; // no prior undo + + mutex_lock(&Fpixmap_lock); + PXM_free(E3pxm); // redo copy >> E3 + E3pxm = ERpxm; + ERpxm = 0; + mutex_unlock(&Fpixmap_lock); + + CEF->Fmods = 1; // image modified + mwpaintnow(); // update image data synchronous v.13.04 + return; +} + + +void edit_reset() +{ + if (! CEF) return; + + wait_thread_idle(); // v.13.04 + if (! CEF->Fmods) return; // not modified + + mutex_lock(&Fpixmap_lock); + PXM_free(ERpxm); // delete redo copy + PXM_free(E3pxm); + E3pxm = PXM_copy(E1pxm); // E1 >> E3 + mutex_unlock(&Fpixmap_lock); + + CEF->Fmods = 0; // reset image modified status v.13.04 + mwpaintnow(); // update image data synchronous v.13.04 + return; +} + + +/**************************************************************************/ + +// Convert from preview mode (window-size pixmaps) to full-size pixmaps. +// Can only be used when edit function is in an edit thread with idle_loop. +// This function is called directly from some edit functions. + +void edit_fullsize() +{ + if (! CEF) return; + if (! CEF->Fpreview) return; + + wait_thread_idle(); // v.13.04 + + mutex_lock(&Fpixmap_lock); + PXM_free(E1pxm); // free preview pixmaps + PXM_free(E3pxm); + E1pxm = PXM_copy(E0pxm); // E0 >> E1, full size image + E3pxm = PXM_copy(E1pxm); // E1 >> E3 + mutex_unlock(&Fpixmap_lock); + + Fzoom = 0; + CEF->Fpreview = 0; // this prevents re-entry + + if (! CEF->Fmods) return; // no change + + if (CEF->thread_status) { + signal_thread(); // signal thread, repeat edit + wait_thread_idle(); + } + + return; +} + + +/************************************************************************** + undo / redo toolbar buttons +***************************************************************************/ + +// [undo] menu function - reinstate previous edit in undo/redo stack + +void m_undo(GtkWidget *, cchar *) +{ + if (CEF) { // undo active edit + edit_undo(); + return; + } + + if (URS_pos == 0) return; // undo past edit + if (checkmenulock()) return; + URS_pos--; + load_undo(); + return; +} + + +// [redo] menu function - reinstate next edit in undo/redo stack + +void m_redo(GtkWidget *, cchar *) +{ + if (CEF) { // redo active edit + edit_redo(); + return; + } + + if (URS_pos == URS_max) return; // redo past edit + if (checkmenulock()) return; + URS_pos++; + load_undo(); + return; +} + + +// undo all edits of the current image +// (discard modifications) + +void undo_all() +{ + if (CEF) return; // not if edit active v.13.04 + if (URS_pos == 0) return; + if (checkmenulock()) return; + URS_pos = 0; + load_undo(); + return; +} + + +// Save E0 to undo/redo file stack +// stack position = URS_pos + +void save_undo() +{ + char *pp, buff[24]; + int fid, cc, cc2; + + pp = strstr(URS_filename,"_undo_"); // get undo/redo stack filename to use + if (! pp) zappcrash("undo/redo stack corrupted 1"); // /.../.fotoxx/pppppp_undo_nn + snprintf(pp+6,3,"%02d",URS_pos); + + fid = open(URS_filename,O_WRONLY|O_CREAT|O_TRUNC,0640); // create or overwrite + if (! fid) zappcrash("undo/redo stack corrupted 2"); + + snprintf(buff,24," %05d %05d fotoxx ",E0pxm->ww,E0pxm->hh); // write header + cc = write(fid,buff,20); + if (cc != 20) zappcrash("undo/redo stack corrupted 3"); + + cc = E0pxm->ww * E0pxm->hh * 3 * sizeof(float); // write image, ww * hh RGB pixels + cc2 = write(fid,E0pxm->pixels,cc); + if (cc2 != cc) zappcrash("undo/redo stack corrupted 4"); + + close(fid); + + if (URS_pos == 0) { // stack position 0 = original image file + strcpy(URS_funcs[0],"original"); // edit function name for original image + URS_saved[0] = 1; // original image file already on disk + } + else { // stack position + if (! CEF) zappcrash("save_undo() no CEF"); // must have an edit function + strcpy(URS_funcs[URS_pos],CEF->funcname); // edit function name + URS_saved[URS_pos] = 0; // not yet saved to disk + } + + return; +} + + +// Load E0 from undo/redo file stack +// stack position = URS_pos + +void load_undo() +{ + char *pp, buff[24], fotoxx[8]; + int fid, ww, hh, cc, cc2; + + pp = strstr(URS_filename,"_undo_"); + if (! pp) zappcrash("undo/redo stack corrupted 1"); + snprintf(pp+6,3,"%02d",URS_pos); + + fid = open(URS_filename,O_RDONLY); + if (! fid) zappcrash("undo/redo stack corrupted 2"); + + *fotoxx = 0; + cc = read(fid,buff,20); + sscanf(buff," %d %d %8s ",&ww, &hh, fotoxx); + if (! strEqu(fotoxx,"fotoxx")) zappcrash("undo/redo stack corrupted 4"); + + mutex_lock(&Fpixmap_lock); + + PXM_free(E0pxm); + E0pxm = PXM_make(ww,hh); + cc = ww * hh * 12; + cc2 = read(fid,E0pxm->pixels,cc); + if (cc2 != cc) zappcrash("undo/redo stack corrupted 5"); + close(fid); + + mutex_unlock(&Fpixmap_lock); + + sa_validate(); // delete area if invalid + + mwpaintnow(); // update image data synchronous v.13.04 + return; +} + + +/**************************************************************************/ + +// ask user if modified image should be kept or discarded +// returns: 0 = no mods or OK to discard, 1 = keep mods + +int mod_keep() +{ + int Feditspend = 0, choice; + cchar *title = ZTX("Discard edits?"); + cchar *message = ZTX("This action will discard changes\n"); // more clarity + cchar *keep = ZTX("Keep"); + cchar *discard = ZTX("Discard"); + + if (CEF && CEF->Fmods && ! CEF->Fsaved) Feditspend = 1; // active edits unsaved v.13.08 + if (URS_pos > 0 && URS_saved[URS_pos] == 0) Feditspend = 1; // completed edits unsaved v.13.08 + + if (Fmetachanged) Feditspend = 1; // metadata edit unsaved + if (! Feditspend) return 0; + + choice = zdialog_choose(title,mWin,message,keep,discard,null); // ask user for decision + if (choice == 1) return 1; // keep mods + if (CEF) edit_reset(); // discard current edit v.13.04 + if (URS_pos > 0) undo_all(); // undo prior edits v.13.06.2 + Fmetachanged = 0; + return 0; +} + + +/**************************************************************************/ + +// menu lock/unlock - some functions must not run concurrently +// returns 1 if success, else 0 + +int menulock(int lock) +{ + if (! lock && ! Fmenulock) zappcrash("menu lock error"); // unlock and not locked + + if (lock && Fmenulock) { + zmessageACK(mWin,0,ZTX("prior function still active")); + return 0; + } + + if (lock) Fmenulock++; + else Fmenulock--; + return 1; +} + + +// check menu lock and return 0/1 if unlocked/locked +// if locked a user message will have been shown + +int checkmenulock() +{ + if (Fmenulock) zmessageACK(mWin,0,ZTX("prior function still active")); + return Fmenulock; +} + +// same but no message box + +int checkmenulockquiet() +{ + return Fmenulock; +} + + +/**************************************************************************/ + +// zdialog mouse capture and release + +void takeMouse(CBfunc func, GdkCursor *cursor) // capture mouse for dialog +{ + if (! gdkWin) return; + freeMouse(); + mouseCBfunc = func; + Mcapture = 1; + gdk_window_set_cursor(gdkWin,cursor); + return; +} + +void freeMouse() // free mouse for main window +{ + if (! gdkWin) return; + if (! Mcapture) return; + mouseCBfunc = 0; + Mcapture = 0; + draw_mousearc(-1,0,0,0); // remove mouse circle + gdk_window_set_cursor(gdkWin,0); // set normal cursor + return; +} + + +/************************************************************************** + functions to manage working threads +***************************************************************************/ + +// start thread that does the edit work + +void start_thread(threadfunc func, void *arg) +{ + CEF->thread_status = 1; // thread is running + CEF->thread_command = CEF->thread_pend = CEF->thread_done + = CEF->thread_hiwater = 0; // nothing pending + start_detached_thread(func,arg); + return; +} + + +// signal thread that new work is pending + +void signal_thread() +{ + if (CEF->thread_status > 0) CEF->thread_pend++; + return; +} + + +// wait for edit thread to complete pending work and become idle + +void wait_thread_idle() +{ + Fthreadbusy++; + paint_busy(); // paint "BUSY" on window v.13.09 + zmainloop(); + while (CEF->thread_status && CEF->thread_pend > CEF->thread_done) // no zmainloop() v.13.09 + zsleep(0.01); + Fthreadbusy--; + return; +} + + +// wait for thread exit or command thread exit +// command = 0 wait for normal completion +// 8 finish pending work and exit +// 9 quit, exit now + +void wrapup_thread(int command) +{ + CEF->thread_command = command; // tell thread to quit or finish + + while (CEF->thread_status > 0) // wait for thread to finish + zsleep(0.01); // no zmainloop() v.13.09 + + return; +} + + +// called only from edit threads +// idle loop - wait for work request or exit command + +void thread_idle_loop() +{ + if (CEF->thread_status == 2) zadd_locked(Fthreadbusy,-1); + CEF->thread_status = 1; // status = idle + CEF->thread_done = CEF->thread_hiwater; // work done = high-water mark + + while (true) + { + if (CEF->thread_command == 9) thread_exit(); // quit now command + if (CEF->thread_command == 8) // finish work and exit + if (CEF->thread_pend <= CEF->thread_done) thread_exit(); + if (CEF->thread_pend > CEF->thread_done) break; // wait for work request + zsleep(0.01); + } + + CEF->thread_hiwater = CEF->thread_pend; // set high-water mark + CEF->thread_status = 2; // thread is working + zadd_locked(Fthreadbusy,+1); + return; // perform edit +} + + +// exit thread unconditionally, called only from edit threads + +void thread_exit() +{ + wait_wthreads(); // wait for worker threads if any v.13.04 + if (CEF->thread_status == 2) zadd_locked(Fthreadbusy,-1); + CEF->thread_pend = CEF->thread_done = CEF->thread_hiwater = 0; + CEF->thread_status = 0; + pthread_exit(0); // "return" cannot be used here +} + + +/**************************************************************************/ + +// edit support functions for working threads (per processor core) + +void start_wthread(threadfunc func, void *arg) // start thread and increment busy count +{ // may be called from a thread + zadd_locked(Fthreadbusy,+1); + zadd_locked(wthreads_busy,+1); + start_detached_thread(func,arg); + return; +} + + +void exit_wthread() // decrement busy count and exit thread +{ + zadd_locked(Fthreadbusy,-1); + zadd_locked(wthreads_busy,-1); + pthread_exit(0); // "return" cannot be used here +} + + +void wait_wthreads() // wait for all worker threads done +{ // may be called from thread or non-thread + while (wthreads_busy) { + zsleep(0.01); + zmainloop(); // zmainloop() inert if called from a thread + } + return; +} + + +/************************************************************************** + other support functions +***************************************************************************/ + + +// favorites menu - popup graphic menu with user's favorites + +void m_favorites(GtkWidget *, cchar *) +{ + void favorites_callback(cchar *menu); + char menuconfigfile[200]; + + F1_help_topic = "favorites"; + snprintf(menuconfigfile,200,"%s/menu-config",favorites_dirk); + gmenuz(mWin,menuconfigfile,favorites_callback); + return; +} + + +void favorites_callback(cchar *menu) +{ + int ii; + + settab("F"); // v.13.04 + + for (ii = 0; ii < Nmenus; ii++) + if (strcasecmp(ZTX(menu),ZTX(menutab[ii].menu)) == 0) break; + + if (ii < Nmenus) menutab[ii].func(0,menu); + return; +} + + +// help menu function + +void m_help(GtkWidget *, cchar *menu) +{ + if (strEqu(menu,ZTX("Quick Start"))) + showz_html(quickstart_file); // v.13.06 + + if (strEqu(menu,ZTX("User Guide"))) + showz_userguide(); + + if (strEqu(menu,ZTX("User Guide Changes"))) + showz_userguide("changes"); + + if (strEqu(menu,ZTX("Program Updates"))) + showz_userguide("updates"); + + if (strEqu(menu,ZTX("README"))) + showz_textfile("doc","README"); + + if (strEqu(menu,ZTX("Edit Functions Summary"))) + showz_textfile("data","edit-menus"); + + if (strEqu(menu,ZTX("Change Log"))) + showz_textfile("doc","changelog"); + + if (strEqu(menu,ZTX("Log File"))) + showz_logfile(); + + if (strEqu(menu,ZTX("Translations"))) + showz_textfile("doc","translations"); + + if (strEqu(menu,ZTX("Home Page"))) + showz_html(Fhomepage); + + if (strEqu(menu,ZTX("About"))) // v.13.02 + zmessageACK(mWin,"Fotoxx"," %s\n %s\n %s\n %s\n %s\n %s\n", + Frelease,Flicense,Fhomepage,Fsoftware,Fcontact,Ftranslators); + + if (strEqu(menu,ZTX("Help"))) // toolbar button + showz_userguide(F1_help_topic); // show topic if there, or page 1 + + return; +} + + +/**************************************************************************/ + +// table for loading and saving adjustable parameters between sessions + +typedef struct { + char name[20]; + char type[12]; + int count; + void *location; +} param; + +#define Nparms 30 +param paramTab[Nparms] = { +// name type count location +{ "fotoxx release", "char", 1, &Prelease }, +{ "notified release", "char", 1, &Nrelease }, +{ "first time", "int", 1, &Ffirsttime }, +{ "last sync_time", "char", 1, &last_sync_time }, +{ "file synch needed", "int", 1, &FsyncNeeded }, +{ "use file sync", "int", 1, &FsyncEnabled }, +{ "window geometry", "int", 4, &mwgeom }, +{ "thumbs directory", "char", 1, &thumbdirk }, +{ "use thumbnails", "int", 1, &Fthumbnails }, +{ "thumbnail size", "int", 1, &navi::thumbsize }, +{ "menu style", "char", 1, &menu_style }, +{ "toolbar style", "char", 1, &tbar_style }, +{ "drag option", "int", 1, &Fdragopt }, +{ "warn overwrite", "int", 1, &Fwarnoverwrite }, +{ "zoom count", "int", 1, &zoomcount }, +{ "interpolation", "char", 1, &interpolation }, +{ "startup display", "char", 1, &startdisplay }, +{ "start image file", "char", 1, &startfile }, +{ "start directory", "char", 1, &startdirk }, +{ "grid settings", "int", 60, &gridsettings }, +{ "RAW command", "char", 1, &RAWcommand }, +{ "RAW file types", "char", 1, &RAWfiletypes }, +{ "trim size", "int", 2, &trimsize }, +{ "trim buttons", "char", 6, &trimbuttons }, +{ "trim ratios", "char", 6, &trimratios }, +{ "edit resize", "int", 2, &editresize }, +{ "jpeg def quality", "int", 1, &jpeg_def_quality }, // v.13.08 +{ "lens mm", "float", 1, &lens_mm }, +{ "lens bow", "float", 1, &lens_bow } }; + + +// save parameters to file /.../.fotoxx/parameters + +void save_params() +{ + FILE *fid; + char buff[1050], text[1000]; // limit for character data cc + char *name, *type, *pp; + int count; + void *location; + char **charloc; + int *intloc; + float *floatloc; + time_t currtime; + +// Set last sync time = NOW = time of fotoxx exit. Orphan thumbnails may not be +// deleted until until some file is created or deleted to cause a directory update. +// File synch is not done at startup unless a directory mod date > last synch time. + + currtime = time(0); // v.13.04 + last_sync_time = strdupz(ctime(&currtime) + 4,0,"file-sync"); + if (last_sync_time[4] == ' ') last_sync_time[4] = '0'; // format mmm dd hh:mm:ss yyyy + pp = strchr(last_sync_time,'\n'); + if (pp) *pp = 0; + + snprintf(buff,199,"%s/parameters",get_zuserdir()); // open output file + fid = fopen(buff,"w"); + if (! fid) return; + + for (int ii = 0; ii < Nparms; ii++) // write table of state data + { + name = paramTab[ii].name; + type = paramTab[ii].type; + count = paramTab[ii].count; + location = paramTab[ii].location; + charloc = (char **) location; + intloc = (int *) location; + floatloc = (float *) location; + + fprintf(fid,"%-20s %-8s %02d ",name,type,count); // write parm name, type, count + + for (int kk = 0; kk < count; kk++) // write "value" "value" ... + { + if (strEqu(type,"char")) { + if (! *charloc) break; // missing, discontinue this parameter + repl_1str(*charloc++,text,"\n","\\n"); // replace newlines with "\n" + fprintf(fid," \"%s\"",text); + } + if (strEqu(type,"int")) + fprintf(fid," \"%d\"",*intloc++); + + if (strEqu(type,"float")) + fprintf(fid," \"%.2f\"",*floatloc++); + } + + fprintf(fid,"\n"); // write EOR + } + + fprintf(fid,"\n"); + fclose(fid); // close file + + fid = fopen(recentfiles_file,"w"); // recent files file + if (! fid) return; + + for (int ii = 0; ii < Nrecentfiles; ii++) // save list of recent files + if (recentfiles[ii]) + fprintf(fid,"%s \n",recentfiles[ii]); + + fclose(fid); + + snprintf(buff,199,"%s/plugins",get_zuserdir()); // open file for plugins + fid = fopen(buff,"w"); + if (! fid) return; + + for (int ii = 0; ii < Nplugins; ii++) // save plugins + if (plugins[ii]) + fprintf(fid,"%s \n",plugins[ii]); + + fclose(fid); + + return; +} + + +// load parameters from file /.../.fotoxx/parameters + +void load_params() +{ + FILE *fid; + int ii, err, cc, pcount; + int Idata; + float Fdata; + char buff[1000], text[1000], *pp; + char name[20], type[12], count[8], data[1000]; + void *location; + char **charloc; + int *intloc; + float *floatloc; + struct stat statb; + + snprintf(buff,499,"%s/parameters",get_zuserdir()); // open parameters file + fid = fopen(buff,"r"); + if (! fid) return; // none, defaults are used + + while (true) // read parameters + { + pp = fgets_trim(buff,999,fid,1); + if (! pp) break; + if (*pp == '#') continue; // comment + if (strlen(pp) < 40) continue; // rubbish + + err = 0; + + strncpy0(name,pp,20); // parm name + strTrim2(name); + + strncpy0(type,pp+22,8); // parm type + strTrim2(type); + + strncpy0(count,pp+32,4); // parm count + strTrim2(count); + err = convSI(count,pcount); + + strncpy0(data,pp+38,1000); // parm value(s) + strTrim2(data); + + for (ii = 0; ii < Nparms; ii++) // match file record to param table + { + if (strNeq(name,paramTab[ii].name)) continue; // parm name + if (strNeq(type,paramTab[ii].type)) continue; // parm type + if (paramTab[ii].count != pcount) continue; // parm count + break; + } + + if (ii == Nparms) continue; // not found, ignore file param + + location = paramTab[ii].location; // get parameter memory location + charloc = (char **) location; + intloc = (int *) location; + floatloc = (float *) location; + + for (ii = 1; ii <= pcount; ii++) // get parameter value(s) + { + pp = (char *) strField(data,' ',ii); + if (! pp) break; + + if (strEqu(type,"char")) { + repl_1str(pp,text,"\\n","\n"); // replace "\n" with real newlines + *charloc++ = strdupz(text,0,"parameters"); + } + + if (strEqu(type,"int")) { + err = convSI(pp,Idata); + if (err) continue; + *intloc++ = Idata; + } + + if (strEqu(type,"float")) { + err = convSF(pp,Fdata); + if (err) continue; + *floatloc++ = Fdata; + } + } + } + + fclose(fid); + + for (ii = 0; ii < Nparms; ii++) // set null strings to "" + { + if (strNeq(paramTab[ii].type,"char")) continue; + charloc = (char **) paramTab[ii].location; + pcount = paramTab[ii].count; + for (int jj = 0; jj < pcount; jj++) + if (! charloc[jj]) + charloc[jj] = strdupz("",20,"parameters"); + } + + Ntopdirk = 0; + + fid = fopen(topdirk_file,"r"); // get top directories from + if (fid) // from top directories file + { + for (ii = 0; ii < 30; ii++) // multiple top directories + { + pp = fgets_trim(buff,499,fid,1); + if (! pp) break; + topdirk[ii] = strdupz(buff,0,"top_dirk"); + strTrim2(topdirk[ii]); // remove surrounding blanks + cc = strlen(topdirk[ii]); // remove trailing '/' if present + if (topdirk[ii][cc-1] == '/') topdirk[ii][cc-1] = 0; + err = stat(topdirk[ii],&statb); + if (err || ! S_ISDIR(statb.st_mode)) { + printf("*** invalid top directory: %s \n",topdirk[ii]); // if invalid top directory, + ii = ii - 1; // remove from list + } + } + + fclose(fid); + Ntopdirk = ii; + } + + zoomratio = pow( 2.0, 1.0 / zoomcount); // set zoom ratio from zoom count + + for (ii = 0; ii < Nrecentfiles; ii++) // recent image file list = empty + recentfiles[ii] = 0; + + fid = fopen(recentfiles_file,"r"); // open recent files file + if (fid) { + for (ii = 0; ii < Nrecentfiles; ii++) // read list of recent files + { + pp = fgets_trim(buff,499,fid,1); + if (! pp) break; + if (*pp == '/') + recentfiles[ii] = strdupz(buff,0,"recentfile"); + else ii--; + } + + fclose(fid); + } + + for (ii = 0; ii < maxplugins; ii++) // plugins list = empty + plugins[ii] = 0; + + plugins[0] = strdupz("Gimp = gimp",0,"plugins"); // if empty, default Gimp plugin + Nplugins = 1; + + snprintf(buff,499,"%s/plugins",get_zuserdir()); // open plugins file + fid = fopen(buff,"r"); + if (fid) + { + for (ii = 0; ii < maxplugins; ii++) // read list of plugins + { + pp = fgets_trim(buff,499,fid,1); + if (! pp) break; + plugins[ii] = strdupz(buff,0,"plugins"); + } + + fclose(fid); + Nplugins = ii; + } + + return; +} + + +/**************************************************************************/ + +// free all resources associated with the current image file + +void free_resources(int fkeepundo) +{ + char *pp; + + mutex_lock(&Fpixmap_lock); // lock pixmaps + + if (! fkeepundo) { + strcpy(command,"rm -f "); // delete all undo files + strcat(command,URS_filename); + pp = strstr(command,"_undo_"); // /home//.fotoxx/pppppp_undo_* + strcpy(pp + 6,"*"); + shell_quiet(command); + URS_pos = URS_max = 0; // reset undo/redo stack v.13.04 + Fmetachanged = 0; // no unsaved metadata changes v.13.08 + sa_unselect(); // unselect select area + } + + if (Fshutdown) { // stop here if shutdown mode + mutex_unlock(&Fpixmap_lock); + return; + } + + draw_toplines(2); // no toplines + erase_topcircles(); // no topcircles + Ntoptext = 0; // no toptext v.13.08 + Fbusy_goal = 0; + + if (curr_file) { + zdialog_free(zdsela); // kill select area dialog if active + freeMouse(); // free mouse v.13.09 + zfree(curr_file); // free image file + curr_file = 0; + *SB_text = 0; + curr_file_posn = 0; // v.13.03 + } + + PXB_free(Fpxb); + PXM_free(E0pxm); + PXM_free(E1pxm); + PXM_free(E3pxm); + PXM_free(ERpxm); + PXM_free(E8pxm); + PXM_free(E9pxm); + + mutex_unlock(&Fpixmap_lock); + return; +} + + +/**************************************************************************/ + +// Get a virtual pixel at location (px,py) (real) in a PXM pixmap. +// Get the overlapping real pixels and build a composite. + +int vpixel(PXM *pxm, float px, float py, float *vpix) +{ + int ww, hh, px0, py0; + float *pix0, *pix1, *pix2, *pix3; + float f0, f1, f2, f3; + float red, green, blue; + + ww = pxm->ww; + hh = pxm->hh; + + px0 = px; // integer pixel containing (px,py) + py0 = py; + + if (px0 < 1 || py0 < 1) return 0; // void edge pixels + if (px0 > ww-2 || py0 > hh-2) return 0; + + pix0 = PXMpix(pxm,px0,py0); // 4 pixels based at (px0,py0) + pix1 = pix0 + ww * 3; + pix2 = pix0 + 3; + pix3 = pix0 + ww * 3 + 3; + + f0 = (px0+1 - px) * (py0+1 - py); // overlap of (px,py) + f1 = (px0+1 - px) * (py - py0); // in each of the 4 pixels + f2 = (px - px0) * (py0+1 - py); + f3 = (px - px0) * (py - py0); + + red = f0 * pix0[0] + f1 * pix1[0] + f2 * pix2[0] + f3 * pix3[0]; // sum the weighted inputs + green = f0 * pix0[1] + f1 * pix1[1] + f2 * pix2[1] + f3 * pix3[1]; + blue = f0 * pix0[2] + f1 * pix1[2] + f2 * pix2[2] + f3 * pix3[2]; + if (blue < 0.5) blue = 0; // edge or voided pixel + + vpix[0] = red; + vpix[1] = green; + vpix[2] = blue; + + if (! blue) return 0; + return 1; +} + + +/**************************************************************************/ + +// compare two floats for significant difference +// return: 0 difference not significant +// +1 d1 > d2 +// -1 d1 < d2 + +int sigdiff(float d1, float d2, float signf) +{ + float diff = fabsf(d1-d2); + if (diff == 0.0) return 0; + diff = diff / (fabsf(d1) + fabsf(d2)); + if (diff < signf) return 0; + if (d1 > d2) return 1; + else return -1; +} + + +/**************************************************************************/ + +// popup a warning message if real memory is below specified threshold +// returns margin: real memory - threshold, in megabytes +// (+ if enough memory, - if not) +// the popup message only appears if real memory < threshold +// the popup message goes away after a few seconds + +int warn_memory(int req_mb) +{ + double freemem, cachemem; + int act_mb, gap_mb; + cchar *message = ZTX("warning: real memory %d MB < required %d MB \n" + "response time may become very long \n"); + + parseprocfile("/proc/meminfo","MemFree:",&freemem,null); // get current free memory + parseprocfile("/proc/meminfo","Cached:",&cachemem,null); + act_mb = (freemem + cachemem) / 1024; // megabytes + gap_mb = act_mb - req_mb; + if (gap_mb > -10) return gap_mb; + zpopup_message(message,act_mb,req_mb); // deficit > 10 MB + return gap_mb; +} + + +/**************************************************************************/ + +// Show a temporary image and return to prior image when done + +void temp_image(cchar *file, cchar *title, cchar *message) +{ + int err; + zdialog *zd; + char *savecurrfile = 0; + char *savecurrdirk = 0; + + if (mod_keep()) return; // unsaved edits + if (! menulock(1)) return; + + if (curr_file) savecurrfile = strdupz(curr_file,0,"temp_image"); + if (curr_dirk) savecurrdirk = strdupz(curr_dirk,0,"temp_image"); + + err = f_open(file,0); + if (err) goto restore; + + Fzoom = 1; + gtk_window_set_title(MWIN,title); + + zd = zdialog_new(title,mWin,Bdone,null); // start user dialog + if (message) { + zdialog_add_widget(zd,"hbox","hb1","dialog",0,"space=5"); + zdialog_add_widget(zd,"label","lab1","hb1",message,"space=5"); + } + + zdialog_resize(zd,300,0); + zdialog_run(zd,0,"0/0"); + zdialog_wait(zd); // wait for dialog complete + zdialog_free(zd); + +restore: + + if (savecurrdirk) { // v.13.05.1 + curr_dirk = strdupz(savecurrdirk); + zfree(savecurrdirk); + } + + if (savecurrfile) { + f_open(savecurrfile,0); // v.13.05.1 + zfree(savecurrfile); + } + else { + curr_file = 0; + if (curr_dirk) gallery(curr_dirk,"init",-1); + } + + menulock(0); + return; +} + + +/************************************************************************** + PXM pixmap functions - RGB float pixel map +***************************************************************************/ + +// initialize PXM pixmap - allocate memory + +PXM * PXM_make(int ww, int hh) +{ + if (ww < 5 || hh < 5) { // impose reasonableness limits + zmessageACK(mWin,0,"image too small: %d %d",ww,hh); + return 0; + } + + if (ww > wwhh_limit || hh > wwhh_limit) { + zmessageACK(mWin,0,"image too big: %d %d",ww,hh); + return 0; + } + + int req_mb = ww * hh * 12 / mega; // warn if memory low + warn_memory(req_mb); + + PXM *pxm = (PXM *) zmalloc(sizeof(PXM),"PXM"); // 0.45 sec for 116 megapix image (1.4 GB) + pxm->ww = ww; + pxm->hh = hh; + pxm->pixels = (float *) zmalloc(ww*hh*12,"PXM.bmp"); // float[3] per pixel + strcpy(pxm->wmi,"pxmpix"); + return pxm; +} + + +// free PXM pixmap + +void PXM_free(PXM *&pxm) +{ + if (! pxm) return; + if (! strEqu(pxm->wmi,"pxmpix")) + zappcrash("PXM_free(), bad PXM"); + strcpy(pxm->wmi,"xxxxxx"); + zfree(pxm->pixels); + zfree(pxm); + pxm = 0; + return; +} + + +// create a copy of a PXM pixmap + +PXM * PXM_copy(PXM *pxm1) +{ + int cc; + PXM *pxm2; + + pxm2 = PXM_make(pxm1->ww, pxm1->hh); + cc = pxm1->ww * pxm1->hh * 3 * sizeof(float); + memcpy(pxm2->pixels,pxm1->pixels,cc); + return pxm2; +} + + +// create a copy of a PXM area + +PXM * PXM_copy_area(PXM *pxm1, int orgx, int orgy, int ww2, int hh2) +{ + float *pix1, *pix2; + PXM *pxm2 = 0; + int px1, py1, px2, py2; + + pxm2 = PXM_make(ww2,hh2); + + for (py1 = orgy, py2 = 0; py2 < hh2; py1++, py2++) + { + pix1 = PXMpix(pxm1,orgx,orgy); + pix2 = PXMpix(pxm2,0,py2); + + for (px1 = orgx, px2 = 0; px2 < ww2; px1++, px2++) + { + pix2[0] = pix1[0]; + pix2[1] = pix1[1]; + pix2[2] = pix1[2]; + pix1 += 3; + pix2 += 3; + } + } + + return pxm2; +} + + +// replace blue = 0 pixels with blue = 1 +// (blue = 0 reserved for pixels voided by warp or overlay offsets) +// needs about 0.013 seconds for 10 megapixel image and 3.3 GHz CPU + +void PXM_fixblue(PXM *pxm) +{ + int size; + float *pixel, *pixel0, *pixelN; + + size = pxm->ww * pxm->hh * 3; + pixel0 = pxm->pixels + 2; + pixelN = pixel0 + size; + + for (pixel = pixel0; pixel < pixelN; pixel += 3) // +3 is +12 bytes + if (! *pixel) *pixel = 1.0; + + return; +} + + +/************************************************************************** + + Rescale PXM image to new width and height. + The scale ratios may be different for width and height. + + Method: + The input and output images are overlayed, stretching or shrinking the + output pixels as needed. The contribution of each input pixel overlapping + an output pixel is proportional to the area of the output pixel covered by + the input pixel. The contributions of all overlaping input pixels are added. + The work is spread among Nwt threads to reduce time on SMP processors. + + Example: if the output image is 40% of the input image, then: + outpix[0,0] = 0.16 * inpix[0,0] + 0.16 * inpix[1,0] + 0.08 * inpix[2,0] + + 0.16 * inpix[0,1] + 0.16 * inpix[1,1] + 0.08 * inpix[2,1] + + 0.08 * inpix[0,2] + 0.08 * inpix[1,2] + 0.04 * inpix[2,2] + +***************************************************************************/ + +namespace pxmrescale { + float *bmp1; + float *bmp2; + int ww1; + int hh1; + int ww2; + int hh2; + int *px1L; + int *py1L; + float *pxmap; + float *pymap; + int maxmapx; + int maxmapy; + int busy[max_threads]; +} + +PXM * PXM_rescale(PXM *pxm1, int ww, int hh) +{ + using namespace pxmrescale; + + void * pxm_rescale_thread(void *arg); + + PXM *pxm2; + int px1, py1, px2, py2; + int pxl, pyl, pxm, pym, ii; + float scalex, scaley; + float px1a, py1a, px1b, py1b; + float fx, fy; + + ww1 = pxm1->ww; // input PXM + hh1 = pxm1->hh; + bmp1 = pxm1->pixels; + + pxm2 = PXM_make(ww,hh); // output PXM + if (! pxm2) return 0; + ww2 = ww; + hh2 = hh; + bmp2 = pxm2->pixels; + + memset(bmp2, 0, ww2 * hh2 * 3 * sizeof(float)); // clear output pixmap + + scalex = 1.0 * ww1 / ww2; // compute x and y scales + scaley = 1.0 * hh1 / hh2; + + if (scalex <= 1) maxmapx = 2; // compute max input pixels + else maxmapx = scalex + 2; // mapping into output pixels + maxmapx += 1; // for both dimensions + if (scaley <= 1) maxmapy = 2; // (pixels may not be square) + else maxmapy = scaley + 2; + maxmapy += 1; // (extra entry for -1 flag) + + pymap = (float *) zmalloc(hh2 * maxmapy * sizeof(float),"PXMrescale"); // maps overlap of < maxmap input + pxmap = (float *) zmalloc(ww2 * maxmapx * sizeof(float),"PXMrescale"); // pixels per output pixel + + py1L = (int *) zmalloc(hh2 * sizeof(int),"PXMrescale"); // maps first (lowest) input pixel + px1L = (int *) zmalloc(ww2 * sizeof(int),"PXMrescale"); // per output pixel + + for (py2 = 0; py2 < hh2; py2++) // loop output y-pixels + { + py1a = py2 * scaley; // corresponding input y-pixels + py1b = py1a + scaley; + if (py1b >= hh1) py1b = hh1 - 0.001; // fix precision limitation + pyl = py1a; + py1L[py2] = pyl; // 1st overlapping input pixel + + for (py1 = pyl, pym = 0; py1 < py1b; py1++, pym++) // loop overlapping input pixels + { + if (py1 < py1a) { // compute amount of overlap + if (py1+1 < py1b) fy = py1+1 - py1a; // 0.0 to 1.0 + else fy = scaley; + } + else if (py1+1 > py1b) fy = py1b - py1; + else fy = 1; + + ii = py2 * maxmapy + pym; // save it + pymap[ii] = 0.9999 * fy / scaley; + } + ii = py2 * maxmapy + pym; // set an end marker after + pymap[ii] = -1; // last overlapping pixel + } + + for (px2 = 0; px2 < ww2; px2++) // do same for x-pixels + { + px1a = px2 * scalex; + px1b = px1a + scalex; + if (px1b >= ww1) px1b = ww1 - 0.001; + pxl = px1a; + px1L[px2] = pxl; + + for (px1 = pxl, pxm = 0; px1 < px1b; px1++, pxm++) + { + if (px1 < px1a) { + if (px1+1 < px1b) fx = px1+1 - px1a; + else fx = scalex; + } + else if (px1+1 > px1b) fx = px1b - px1; + else fx = 1; + + ii = px2 * maxmapx + pxm; + pxmap[ii] = 0.9999 * fx / scalex; + } + ii = px2 * maxmapx + pxm; + pxmap[ii] = -1; + } + + for (ii = 0; ii < Nwt; ii++) { // start working threads + busy[ii] = 1; + start_detached_thread(pxm_rescale_thread,&wtnx[ii]); + } + + for (ii = 0; ii < Nwt; ii++) // wait for all done + while (busy[ii]) zsleep(0.004); + + zfree(px1L); + zfree(py1L); + zfree(pxmap); + zfree(pymap); + + return pxm2; +} + +void * pxm_rescale_thread(void *arg) // worker thread function +{ + using namespace pxmrescale; + + int index = *((int *) arg); + int px1, py1, px2, py2; + int pxl, pyl, pxm, pym, ii; + float *pixel1, *pixel2; + float fx, fy, ftot; + float red, green, blue; + + for (py2 = index; py2 < hh2; py2 += Nwt) // loop output y-pixels + { + pyl = py1L[py2]; // corresp. 1st input y-pixel + + for (px2 = 0; px2 < ww2; px2++) // loop output x-pixels + { + pxl = px1L[px2]; // corresp. 1st input x-pixel + + red = green = blue = 0; // initz. output pixel + + for (py1 = pyl, pym = 0; ; py1++, pym++) // loop overlapping input y-pixels + { + ii = py2 * maxmapy + pym; // get y-overlap + fy = pymap[ii]; + if (fy < 0) break; // no more pixels + + for (px1 = pxl, pxm = 0; ; px1++, pxm++) // loop overlapping input x-pixels + { + ii = px2 * maxmapx + pxm; // get x-overlap + fx = pxmap[ii]; + if (fx < 0) break; // no more pixels + + ftot = fx * fy; // area overlap = x * y overlap + pixel1 = bmp1 + (py1 * ww1 + px1) * 3; + red += pixel1[0] * ftot; // add input pixel * overlap + green += pixel1[1] * ftot; + blue += pixel1[2] * ftot; + } + + pixel2 = bmp2 + (py2 * ww2 + px2) * 3; // save output pixel + pixel2[0] = red; + pixel2[1] = green; + pixel2[2] = blue; + } + } + } + + busy[index] = 0; + return 0; +} + + +/************************************************************************** + + PXM *pxm2 = PXM_rotate(PXM *pxm1, float angle) + + Rotate PXM pixmap through an arbitrary angle (degrees). + + The returned image has the same size as the original, but the + pixmap size is increased to accomodate the rotated image. + (e.g. a 100x100 image rotated 45 deg. needs a 142x142 pixmap). + + The space added around the rotated image is black (RGB 0,0,0). + Angle is in degrees. Positive direction is clockwise. + Speed is about 28 million pixels/sec/thread for a 3.3 GHz CPU. + Loss of resolution is less than 1 pixel. + + Work is divided among Nwt threads to gain speed. + +***************************************************************************/ + +namespace pxmrotate { + int busy = 0; + float *bmp1; + float *bmp2; + int ww1; + int hh1; + int ww2; + int hh2; + float angle; +} + +PXM * PXM_rotate(PXM *pxm1, float anglex) +{ + using namespace pxmrotate; + + void *PXM_rotate_thread(void *); + + int ii; + PXM *pxm2; + + ww1 = pxm1->ww; // input PXM + hh1 = pxm1->hh; + bmp1 = pxm1->pixels; + angle = anglex; + + while (angle < -180) angle += 360; // normalize, -180 to +180 + while (angle > 180) angle -= 360; + angle = angle * pi / 180; // radians, -pi to +pi + + if (fabsf(angle) < 0.001) { // angle = 0 within my precision + pxm2 = PXM_copy(pxm1); // return a copy of the input PXM + return pxm2; + } + + ww2 = ww1*fabsf(cosf(angle)) + hh1*fabsf(sinf(angle)); // rectangle containing rotated image + hh2 = ww1*fabsf(sinf(angle)) + hh1*fabsf(cosf(angle)); + + pxm2 = PXM_make(ww2,hh2); // output PXM + bmp2 = pxm2->pixels; + + for (ii = 0; ii < Nwt; ii++) // start worker threads + start_detached_thread(PXM_rotate_thread,&wtnx[ii]); + zadd_locked(busy,+Nwt); + + while (busy) zsleep(0.004); // wait for completion + return pxm2; +} + +void * PXM_rotate_thread(void *arg) +{ + using namespace pxmrotate; + + int index = *((int *) (arg)); + int px2, py2, px0, py0; + float *pix0, *pix1, *pix2, *pix3; + float px1, py1; + float f0, f1, f2, f3, red, green, blue; + float a, b, d, e, ww15, hh15, ww25, hh25; + + ww15 = 0.5 * ww1; + hh15 = 0.5 * hh1; + ww25 = 0.5 * ww2; + hh25 = 0.5 * hh2; + + a = cosf(angle); + b = sinf(angle); + d = - sinf(angle); + e = cosf(angle); + + for (py2 = index; py2 < hh2; py2 += Nwt) // loop through output pixels + for (px2 = 0; px2 < ww2; px2++) + { + px1 = a * (px2 - ww25) + b * (py2 - hh25) + ww15; // (px1,py1) = corresponding + py1 = d * (px2 - ww25) + e * (py2 - hh25) + hh15; // point within input pixels + + px0 = px1; // pixel containing (px1,py1) + py0 = py1; + + if (px0 < 0 || px0 > ww1-2 || py0 < 0 || py0 > hh1-2) { // if outside input pixel array v.13.09 + pix2 = bmp2 + (py2 * ww2 + px2) * 3; // output is black + pix2[0] = pix2[1] = pix2[2] = 0; + continue; + } + + pix0 = bmp1 + (py0 * ww1 + px0) * 3; // 4 input pixels based at (px0,py0) + pix1 = pix0 + ww1 * 3; + pix2 = pix0 + 3; + pix3 = pix1 + 3; + + f0 = (px0+1 - px1) * (py0+1 - py1); // overlap of (px1,py1) + f1 = (px0+1 - px1) * (py1 - py0); // in each of the 4 pixels + f2 = (px1 - px0) * (py0+1 - py1); + f3 = (px1 - px0) * (py1 - py0); + + red = f0 * pix0[0] + f1 * pix1[0] + f2 * pix2[0] + f3 * pix3[0]; // sum the weighted inputs + green = f0 * pix0[1] + f1 * pix1[1] + f2 * pix2[1] + f3 * pix3[1]; + blue = f0 * pix0[2] + f1 * pix1[2] + f2 * pix2[2] + f3 * pix3[2]; + + pix2 = bmp2 + (py2 * ww2 + px2) * 3; // output pixel + pix2[0] = red; + pix2[1] = green; + pix2[2] = blue; + } + + zadd_locked(busy,-1); + return 0; +} + + +/************************************************************************** + PXB pixmap functions - RGB uint8 pixel map and GdkPixbuf wrapper +***************************************************************************/ + +// Create PXB pixmap with pixels cleared to zero + +PXB * PXB_make(int ww, int hh) +{ + int req_mb = ww * hh * 3 / mega; // warn if memory low + warn_memory(req_mb); + + PXB *pxb = (PXB *) zmalloc(sizeof(PXB),"PXB"); + strcpy(pxb->wmi,"pxbpix"); + pxb->pixbuf = gdk_pixbuf_new(GDKRGB,0,8,ww,hh); + pxb->pixels = gdk_pixbuf_get_pixels(pxb->pixbuf); + pxb->ww = ww; + pxb->hh = hh; + pxb->rs = gdk_pixbuf_get_rowstride(pxb->pixbuf); + int cc = hh * pxb->rs; + memset(pxb->pixels,0,cc); + return pxb; +} + + +// Create a PXB pixmap from a GdkPixbuf +// The pixbuf is used directly and is not duplicated + +PXB * PXB_make(GdkPixbuf *pixbuf1) +{ + PXB *pxb2 = (PXB *) zmalloc(sizeof(PXB),"PXB"); + strcpy(pxb2->wmi,"pxbpix"); + pxb2->pixbuf = pixbuf1; + pxb2->ww = gdk_pixbuf_get_width(pixbuf1); + pxb2->hh = gdk_pixbuf_get_height(pixbuf1); + pxb2->rs = gdk_pixbuf_get_rowstride(pixbuf1); + pxb2->pixels = gdk_pixbuf_get_pixels(pixbuf1); + return pxb2; +} + + +// Free PXB pixmap - release memory + +void PXB_free(PXB *&pxb) +{ + if (! pxb) return; + if (! strEqu(pxb->wmi,"pxbpix")) + zappcrash("PXB_free(), bad PXB"); + strcpy(pxb->wmi,"xxxxxx"); + g_object_unref(pxb->pixbuf); + zfree(pxb); + pxb = 0; + return; +} + + +// Copy a PXB pixmap to a new PXB pixmap + +PXB * PXB_copy(PXB *pxb1) +{ + int req_mb = pxb1->ww * pxb1->hh * 3 / mega; // warn if memory low + warn_memory(req_mb); + + PXB *pxb2 = (PXB *) zmalloc(sizeof(PXB),"PXB"); + strcpy(pxb2->wmi,"pxbpix"); + pxb2->pixbuf = gdk_pixbuf_copy(pxb1->pixbuf); + pxb2->ww = pxb1->ww; + pxb2->hh = pxb1->hh; + pxb2->rs = pxb1->rs; + pxb2->pixels = gdk_pixbuf_get_pixels(pxb2->pixbuf); + return pxb2; +} + + +// Rescale PXB pixmap to given width and height. + +PXB * PXB_rescale(PXB *pxb1, int ww2, int hh2) +{ + GdkPixbuf *pixbuf2 = 0; + int req_mb = ww2 * hh2 * 3 / mega; // warn if memory low + warn_memory(req_mb); + + if (strEqu(interpolation,"tiles")) // v.13.05 + pixbuf2 = gdk_pixbuf_scale_simple(pxb1->pixbuf,ww2,hh2,GDK_INTERP_TILES); + else if (strEqu(interpolation,"hyperbolic")) + pixbuf2 = gdk_pixbuf_scale_simple(pxb1->pixbuf,ww2,hh2,GDK_INTERP_HYPER); + else pixbuf2 = gdk_pixbuf_scale_simple(pxb1->pixbuf,ww2,hh2,GDK_INTERP_BILINEAR); + + PXB *pxb2 = PXB_make(pixbuf2); + return pxb2; +} + + +// Copy a PXM image (RGB float) to a PXB image (RGB uint8). + +PXB * PXM_PXB_copy(PXM *pxm1) +{ + float *pix1; + uint8 *pix2; + PXB *pxb2; + int ww, hh, px, py; + + ww = pxm1->ww; + hh = pxm1->hh; + + pxb2 = PXB_make(ww,hh); + + for (py = 0; py < hh; py++) + { + pix1 = PXMpix(pxm1,0,py); + pix2 = PXBpix(pxb2,0,py); + + for (px = 0; px < ww; px++) + { + pix2[0] = pix1[0]; + pix2[1] = pix1[1]; + pix2[2] = pix1[2]; + pix1 += 3; + pix2 += 3; + } + } + + return pxb2; +} + + +// Update a PXB section from an updated PXM section. +// The PXM and PXB must have the same dimensions. +// px3, py3, ww3, hh3: modified section within pxm1 to propagate to pxb2; + +void PXM_PXB_update(PXM *pxm1, PXB *pxb2, int px3, int py3, int ww3, int hh3) +{ + float *pix1; + uint8 *pix2; + int px, py; + int lox, hix, loy, hiy; + + lox = px3; + hix = px3 + ww3; + if (lox < 0) lox = 0; + if (hix > pxb2->ww) hix = pxb2->ww; + + loy = py3; + hiy = py3 + hh3; + if (loy < 0) loy = 0; + if (hiy > pxb2->hh) hiy = pxb2->hh; + + for (py = loy; py < hiy; py++) + { + pix1 = PXMpix(pxm1,lox,py); + pix2 = PXBpix(pxb2,lox,py); + + for (px = lox; px < hix; px++) + { + pix2[0] = pix1[0]; // 0.0 - 255.99 >> 0 - 255 + pix2[1] = pix1[1]; + pix2[2] = pix1[2]; + pix1 += 3; + pix2 += 3; + } + } + + return; +} + + +// Update an output PXB section from a corresponding input PXB section. +// The two PXBs represent the same image, scaled according to their +// respective width and height pixel dimensions. +// px3, py3, ww3, hh3: modified section within pxb1 to propagate to pxb2; + +namespace pxbpxbupdate { + uint8 *bmp1, *bmp2; + int ww1, hh1, ww2, hh2, rs1, rs2; + int pww1, phh1, pww2, phh2; + int *px1L, *py1L; + float scalex, scaley; + float *pxmap, *pymap; + int maxmapx, maxmapy; +} + +void PXB_PXB_update(PXB *pxb1, PXB *pxb2, int px3, int py3, int ww3, int hh3) +{ + using namespace pxbpxbupdate; + + int px1, py1, px2, py2; + int pxl, pyl, pxm, pym, ii; + float px1a, py1a, px1b, py1b; + float fx, fy, ftot; + uint8 *pixel1, *pixel2; + float red, green, blue; + int lox, hix, loy, hiy; + + + ww1 = pxb1->ww; + hh1 = pxb1->hh; + rs1 = pxb1->rs; + bmp1 = pxb1->pixels; + + ww2 = pxb2->ww; + hh2 = pxb2->hh; + rs2 = pxb2->rs; + bmp2 = pxb2->pixels; + + if (ww1 == pww1 && hh1 == phh1 && ww2 == pww2 && hh2 == phh2) // if the sizes are the same as before, + goto copy_pixels; // the pixel mapping math can be avoided. + + pww1 = ww1; + phh1 = hh1; + pww2 = ww2; + phh2 = hh2; + + if (px1L) { // unless this is the first call, + zfree(px1L); // free prior map memory + zfree(py1L); + zfree(pxmap); + zfree(pymap); + } + + scalex = 1.0 * ww1 / ww2; // compute x and y scales + scaley = 1.0 * hh1 / hh2; + + if (scalex <= 1) maxmapx = 2; // compute max input pixels + else maxmapx = scalex + 2; // mapping into output pixels + maxmapx += 1; // for both dimensions + if (scaley <= 1) maxmapy = 2; // (pixels may not be square) + else maxmapy = scaley + 2; + maxmapy += 1; // (extra entry for -1 flag) + + pymap = (float *) zmalloc(hh2 * maxmapy * sizeof(float),"pxbpxbupd"); // maps overlap of < maxmap input + pxmap = (float *) zmalloc(ww2 * maxmapx * sizeof(float),"pxbpxbupd"); // pixels per output pixel + + py1L = (int *) zmalloc(hh2 * sizeof(int),"pxbpxbupd"); // maps first (lowest) input pixel + px1L = (int *) zmalloc(ww2 * sizeof(int),"pxbpxbupd"); // per output pixel + + for (py2 = 0; py2 < hh2; py2++) // loop output y-pixels + { + py1a = py2 * scaley; // corresponding input y-pixels + py1b = py1a + scaley; + if (py1b >= hh1) py1b = hh1 - 0.001; // fix precision limitation + pyl = py1a; + py1L[py2] = pyl; // 1st overlapping input pixel + + for (py1 = pyl, pym = 0; py1 < py1b; py1++, pym++) // loop overlapping input pixels + { + if (py1 < py1a) { // compute amount of overlap + if (py1+1 < py1b) fy = py1+1 - py1a; // 0.0 to 1.0 + else fy = scaley; + } + else if (py1+1 > py1b) fy = py1b - py1; + else fy = 1; + + ii = py2 * maxmapy + pym; // save it + pymap[ii] = 0.9999 * fy / scaley; + } + ii = py2 * maxmapy + pym; // set an end marker after + pymap[ii] = -1; // last overlapping pixel + } + + for (px2 = 0; px2 < ww2; px2++) // do same for x-pixels + { + px1a = px2 * scalex; + px1b = px1a + scalex; + if (px1b >= ww1) px1b = ww1 - 0.001; + pxl = px1a; + px1L[px2] = pxl; + + for (px1 = pxl, pxm = 0; px1 < px1b; px1++, pxm++) + { + if (px1 < px1a) { + if (px1+1 < px1b) fx = px1+1 - px1a; + else fx = scalex; + } + else if (px1+1 > px1b) fx = px1b - px1; + else fx = 1; + + ii = px2 * maxmapx + pxm; + pxmap[ii] = 0.9999 * fx / scalex; + } + ii = px2 * maxmapx + pxm; + pxmap[ii] = -1; + } + +copy_pixels: + + px3 = px3 / scalex; // convert input area to output area + py3 = py3 / scaley; + ww3 = ww3 / scalex + 2; + hh3 = hh3 / scaley + 2; + + lox = px3; + hix = px3 + ww3; + if (lox < 0) lox = 0; + if (hix > ww2) hix = ww2; + + loy = py3; + hiy = py3 + hh3; + if (loy < 0) loy = 0; + if (hiy > hh2) hiy = hh2; + + for (py2 = loy; py2 < hiy; py2++) // loop output y-pixels + { + pyl = py1L[py2]; // corresp. 1st input y-pixel + + for (px2 = lox; px2 < hix; px2++) // loop output x-pixels + { + pxl = px1L[px2]; // corresp. 1st input x-pixel + + red = green = blue = 0; // initz. output pixel + + for (py1 = pyl, pym = 0; ; py1++, pym++) // loop overlapping input y-pixels + { + ii = py2 * maxmapy + pym; // get y-overlap + fy = pymap[ii]; + if (fy < 0) break; // no more pixels + + for (px1 = pxl, pxm = 0; ; px1++, pxm++) // loop overlapping input x-pixels + { + ii = px2 * maxmapx + pxm; // get x-overlap + fx = pxmap[ii]; + if (fx < 0) break; // no more pixels + + ftot = fx * fy; // area overlap = x * y overlap + pixel1 = bmp1 + py1 * rs1 + px1 * 3; + red += pixel1[0] * ftot; // add input pixel * overlap + green += pixel1[1] * ftot; + blue += pixel1[2] * ftot; + } + + pixel2 = bmp2 + py2 * rs2 + px2 * 3; // save output pixel + pixel2[0] = red; // 0.0 - 255.996 >> 0 - 255 + pixel2[1] = green; + pixel2[2] = blue; + } + } + } + + return; +} + + + diff -Nru fotoxx-13.08/fotoxx-13.09.1.spec fotoxx-13.09.1/fotoxx-13.09.1.spec --- fotoxx-13.08/fotoxx-13.09.1.spec 1970-01-01 00:00:00.000000000 +0000 +++ fotoxx-13.09.1/fotoxx-13.09.1.spec 2013-08-31 06:26:38.000000000 +0000 @@ -0,0 +1,44 @@ +# RPM spec file for fotoxx +# dcraw, exiftool, xdg-open: needed for execution but not for build. + +Name: fotoxx +Version: 13.09.1 +Release: 1 +Summary: Edit photos and manage a large collection +Vendor: kornelix +Packager: kornelix@gmx.de +License: GPL3 +Group: graphics +Source: %{name}-%{version}.tar.gz +URL: http://kornelix.com + +%description +Edit photos and manage a large collection. +Includes thumbnail browser/navigator, RAW file import, +a comprehensive set of edit functions working in deep color, +rapid visual feedback, edit/copy/paste selected image areas, +file versioning, batch operations, named collections (views), +HDR, stack and panorama composites, metadata edit and report, +search and display using metadata and directory/file names. + +%prep +%setup -q + +%build +make + +%install +make install PREFIX=$RPM_BUILD_ROOT/usr + +%clean +rm -rf $RPM_BUILD_ROOT + +%files +%defattr(-,root,root) +/usr/bin/%{name} +/usr/share/%{name} +/usr/share/doc/%{name} +/usr/share/applications/%{name}.desktop +/usr/share/man/man1/%{name}.1.gz + + diff -Nru fotoxx-13.08/fotoxx.h fotoxx-13.09.1/fotoxx.h --- fotoxx-13.08/fotoxx.h 2013-08-01 20:57:53.000000000 +0000 +++ fotoxx-13.09.1/fotoxx.h 2013-08-31 06:26:38.000000000 +0000 @@ -4,7 +4,7 @@ Copyright 2007 2008 2009 2010 2011 2012 2013 Michael Cornelison Source URL: http://kornelix.com/fotoxx - Contact: kornelix2@gmail.com + Contact: kornelix@gmx.de This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -28,16 +28,15 @@ // Fotoxx definitions -#define Frelease "Fotoxx 13.08" // program release version +#define Frelease "Fotoxx 13.09.1" // program release version #define Flicense "Free software - GNU General Public License v.3" #define Fhomepage "http://kornelix.com/fotoxx" #define Fsoftware "Software used: GTK, libtiff, libpng, liblcms, dcraw, ufraw, exiftool" -#define Fcontact "Questions and bugs: kornelix2@gmail.com" +#define Fcontact "Questions and bugs: kornelix@gmx.de" #define Ftranslators "Translators: \n" \ - " Victor Ryzhikh (Виктор Рыжих), Doriano Blengino, Arthur Kalverboer, \n" \ - " André Campos Rodovalho, Peter Landgren, J. A. Miralles Puignau, \n" \ - " Jean-Pierre Vaissière " - + " Doriano Blengino, Arthur Kalverboer, André Campos Rodovalho, \n" \ + " Peter Landgren, J. A. Miralles Puignau, Pierrick Pinot " + // Nikolay Kachulin declined #define mega (1024 * 1024) // 1 million as 2**20 #define desktoptrash "Desktop/fotoxx-trash" // alternate trash folder location #define pi 3.141592654 @@ -138,6 +137,7 @@ EX GtkWidget *gVbox, *gHbox, *gTop, *gPath; // tab G: navigation widgets EX GtkWidget *gTbar, *gSwin, *gDwin; // tab G: toolbar, scroll win, draw win EX GtkAdjustment *gSadj; // tab G: scrollbar adjustment +EX GtkWidget *wVbox; // tab W: world map EX GtkWidget *wDwin; // tab W: drawing window EX GtkWidget *cDwin; // curr. drawing window: fDwin or wDwin EX GtkWidget *cSbar; // curr. status bar: fSbar or null @@ -258,6 +258,7 @@ EX char geotags_dirk[200]; // directory for geotags data files EX char favorites_dirk[200]; // directory for favorites menu EX char locales_dirk[200]; // directory for .po files v.13.02 +EX char mashup_dirk[200]; // directory for mashup projects v.13.09 EX char exiftool_input[200]; // exiftool_server input file EX char KBshortcuts[200]; // keyboard shortcuts file EX char quickstart_file[200]; // quick start image file v.13.05 @@ -487,6 +488,17 @@ EX int Nplugins; // plugin menu items EX char *plugins[100]; +struct textattr_t { // attributes for gentext() function + char font[80]; // font name + int size; // font size + float angle; // text angle + char color[4][20]; // text, backing, outline, shadow "R|G|B" + int transp[4]; // corresponding transparencies 0-255 + int towidth; // outline width, pixels + int shwidth; // shadow width + int shangle; // shadow angle -180...+180 +}; + // The following are saved and restored across sessions (parameters file). // They belong to different functions in different source modules. @@ -525,8 +537,8 @@ EX zdialog *zdbatchtags; // batch tags dialog EX zdialog *zdexifview; // view EXIF/IPTC zdialog EX zdialog *zdexifedit; // edit EXIF/IPTC zdialog -EX zdialog *zdeditcctext; // edit caption/comments zdialog -EX zdialog *zdaddgeotags; // add geotags zdialog +EX zdialog *zdeditgeotags; // add geotags zdialog +EX zdialog *zdfilesave; // file save zdialog EX zdialog *zdrename; // rename file zdialog EX zdialog *zdcopymove; // copy/move file zdialog EX zdialog *zddelete; // delete file zdialog @@ -535,11 +547,17 @@ EX zdialog *zd_gallery_getfiles; // gallery_getfiles zdialog EX zdialog *zd_edit_bookmarks; // bookmarks edit zdialog +// method for running thread to send an event to an active zdialog + +EX zdialog *zd_thread; // active zdialog +EX cchar *zd_thread_event; // event to send + // GTK functions (fotoxx main) int main(int argc, char * argv[]); // main program int initzfunc(void *); // initializations int gtimefunc(void *arg); // periodic function +void paint_busy(); // paint "BUSY" on window if something busy void update_statusbar(); // update main window status bar void topmenufunc(GtkWidget *, cchar *menu); // top level menu function int delete_event(); // window delete event function @@ -619,8 +637,8 @@ typedef void * threadfunc(void *); // edit thread function void start_thread(threadfunc func, void *arg); // start edit thread void signal_thread(); // signal thread, work is pending -void wait_thread_idle(int block = 0); // wait for work complete -void wrapup_thread(int command, int block = 0); // wait for exit or command exit +void wait_thread_idle(); // wait for work complete +void wrapup_thread(int command); // wait for exit or command exit void thread_idle_loop(); // thread: wait for work or exit command void thread_exit(); // thread: exit unconditionally void start_wthread(threadfunc func, void *arg); // start working thread (per proc. core) @@ -680,9 +698,7 @@ void m_prev(GtkWidget *, cchar *); // open previous file in gallery void m_next(GtkWidget *, cchar *); // open next file in gallery void m_ufraw(GtkWidget *, cchar *); // open, edit camera RAW file with ufraw -void m_save(GtkWidget *, cchar *); // save modified image to same file -void m_savevers(GtkWidget *, cchar *); // save modified image to new file version -void m_saveas(GtkWidget *, cchar *); // save modified image to another file +void m_file_save(GtkWidget *, cchar *); // save modified image file to didk void m_rename(GtkWidget *, cchar *); // rename an image file (same location) void m_create(GtkWidget *, cchar *); // create new blank image file void m_copytoloc(GtkWidget *, cchar *); // copy an image file to a new location @@ -782,7 +798,6 @@ // metadata menu functions (EXIF, IPTC, etc.) (f.meta.cc) -void m_edit_cctext(GtkWidget *, cchar *); // edit caption and user comments dialog void m_edit_metadata(GtkWidget *, cchar *); // edit date/rating/tags dialog void manage_tags(); // manage tags dialog function void load_filemeta(cchar *file); // EXIF/IPTC >> tags_* in memory @@ -856,18 +871,21 @@ // image edit functions - Image menu (f.image.cc) -void m_turn(GtkWidget *, cchar *); // turn image +/-90 degrees +void m_rotate90(GtkWidget *, cchar *); // rotate image +/-90 degrees void m_rotate(GtkWidget *, cchar *); // rotate image by any angle void m_trim(GtkWidget *, cchar *); // trim image void m_autotrim(GtkWidget *, cchar *); // autotrim image after rotate, warp void m_resize(GtkWidget *, cchar *); // resize image void m_flip(GtkWidget *, cchar *); // flip horizontally or vertically void m_write_text(GtkWidget *, cchar *); // write text on image +int gentext(cchar *text, textattr_t *, PXM *&pxm_tx, PXM *&pxm_tr); // generate text image with attributes +void load_text(zdialog *zd); // load text and attributes from a file +void save_text(zdialog *zd); // save text and attributes to a file // image edit functions - Retouch menu (f.retouch.cc) void m_voodoo(GtkWidget *, cchar *); // automatic image retouch -void m_brightcolor(GtkWidget *, cchar *); // brightness/color/contrast adjustments +void m_brightcolor(GtkWidget *, cchar *); // brightness/contrast/color adjustments void m_gamma(GtkWidget *, cchar *); // gamma adjustments void m_tonemap(GtkWidget *, cchar *); // tone mapping void m_flatten(GtkWidget *, cchar *); // flatten brightness distribution @@ -929,6 +947,7 @@ void m_STN(GtkWidget *, cchar *); // stack / noise reduction void m_pano(GtkWidget *, cchar *); // make panorama composite image void m_vpano(GtkWidget *, cchar *); // make vertical panorama +void m_mashup(GtkWidget *, cchar *); // arrange images on a background image // translatable strings used in multiple dialogs @@ -936,6 +955,7 @@ #define Baddall ZTX("Add All") #define Ball ZTX("All") #define Bamount ZTX("Amount") +#define Bangle ZTX("Angle") #define Bapply ZTX("Apply") #define Bautocomp ZTX("Autocomplete") #define Bblack ZTX("Black") @@ -962,6 +982,7 @@ #define Bfind ZTX("Find") #define Bfinish ZTX("Finish") #define Bfont ZTX("Font") +#define Bgeotags ZTX("Geotags") #define Bgreen ZTX("Green") #define Bheight ZTX("Height") #define Bhelp ZTX("Help") @@ -1002,6 +1023,7 @@ #define Bselect ZTX("Select") #define Bselectfiles ZTX("Select Files") #define Bshow ZTX("Show") +#define Bsize ZTX("Size") #define Bstart ZTX("Start") #define Bthresh ZTX("Threshold") #define Btoomanyfiles ZTX("exceed %d files") Binary files /tmp/cYYeiFVwgP/fotoxx-13.08/icons/F-tab.png and /tmp/VmaSULXLi5/fotoxx-13.09.1/icons/F-tab.png differ Binary files /tmp/cYYeiFVwgP/fotoxx-13.08/icons/G-tab.png and /tmp/VmaSULXLi5/fotoxx-13.09.1/icons/G-tab.png differ Binary files /tmp/cYYeiFVwgP/fotoxx-13.08/icons/W-tab.png and /tmp/VmaSULXLi5/fotoxx-13.09.1/icons/W-tab.png differ Binary files /tmp/cYYeiFVwgP/fotoxx-13.08/icons/goto.png and /tmp/VmaSULXLi5/fotoxx-13.09.1/icons/goto.png differ Binary files /tmp/cYYeiFVwgP/fotoxx-13.08/icons/open.png and /tmp/VmaSULXLi5/fotoxx-13.09.1/icons/open.png differ Binary files /tmp/cYYeiFVwgP/fotoxx-13.08/icons/print.png and /tmp/VmaSULXLi5/fotoxx-13.09.1/icons/print.png differ Binary files /tmp/cYYeiFVwgP/fotoxx-13.08/icons/rotate-left.png and /tmp/VmaSULXLi5/fotoxx-13.09.1/icons/rotate-left.png differ Binary files /tmp/cYYeiFVwgP/fotoxx-13.08/icons/rotate-right.png and /tmp/VmaSULXLi5/fotoxx-13.09.1/icons/rotate-right.png differ Binary files /tmp/cYYeiFVwgP/fotoxx-13.08/icons/save+F.png and /tmp/VmaSULXLi5/fotoxx-13.09.1/icons/save+F.png differ Binary files /tmp/cYYeiFVwgP/fotoxx-13.08/icons/save+V.png and /tmp/VmaSULXLi5/fotoxx-13.09.1/icons/save+V.png differ Binary files /tmp/cYYeiFVwgP/fotoxx-13.08/icons/save.png and /tmp/VmaSULXLi5/fotoxx-13.09.1/icons/save.png differ Binary files /tmp/cYYeiFVwgP/fotoxx-13.08/icons/sync.G.2.png and /tmp/VmaSULXLi5/fotoxx-13.09.1/icons/sync.G.2.png differ Binary files /tmp/cYYeiFVwgP/fotoxx-13.08/icons/sync.G.png and /tmp/VmaSULXLi5/fotoxx-13.09.1/icons/sync.G.png differ Binary files /tmp/cYYeiFVwgP/fotoxx-13.08/icons/turn-left.png and /tmp/VmaSULXLi5/fotoxx-13.09.1/icons/turn-left.png differ Binary files /tmp/cYYeiFVwgP/fotoxx-13.08/icons/turn-right.png and /tmp/VmaSULXLi5/fotoxx-13.09.1/icons/turn-right.png differ Binary files /tmp/cYYeiFVwgP/fotoxx-13.08/icons/warning.png and /tmp/VmaSULXLi5/fotoxx-13.09.1/icons/warning.png differ diff -Nru fotoxx-13.08/locales/translate-ca.po fotoxx-13.09.1/locales/translate-ca.po --- fotoxx-13.08/locales/translate-ca.po 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/locales/translate-ca.po 2013-08-31 06:26:38.000000000 +0000 @@ -7,8 +7,8 @@ msgstr "" "Project-Id-Version: home 2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-01 22:40+0200\n" -"PO-Revision-Date: 2013-03-08 20:44+0100\n" +"POT-Creation-Date: 2013-08-31 08:16+0200\n" +"PO-Revision-Date: 2013-08-30 23:59+0100\n" "Last-Translator: Josep Antoni Miralles Puignau \n" "Language-Team: Catalán, Valenciano <>\n" "Language: ca\n" @@ -21,7 +21,7 @@ msgid "Select Area for Edits" msgstr "Seleccionar àrea per editar" -#: f.area.cc:57 f.retouch.cc:2362 +#: f.area.cc:57 f.retouch.cc:2359 msgid "Press F1 for help" msgstr "Prèmer F1 per ajuda" @@ -65,7 +65,7 @@ msgid "select all matching colors within mouse" msgstr "seleccionar amb el ratolí tots els colors coincidents" -#: f.area.cc:114 f.retouch.cc:2397 +#: f.area.cc:114 f.retouch.cc:2394 msgid "mouse radius" msgstr "radi del ratolí" @@ -121,7 +121,7 @@ msgid "found %d pixels" msgstr "trobats %d pixels" -#: f.area.cc:1824 f.area.cc:1841 f.area.cc:1861 f.area.cc:2191 +#: f.area.cc:1824 f.area.cc:1841 f.area.cc:1861 f.area.cc:2192 msgid "the area is not finished" msgstr "l'àrea no està acabada" @@ -133,39 +133,35 @@ msgid "Area Edge Calc" msgstr "Càlcul del límit de l'àrea" -#: f.area.cc:2265 +#: f.area.cc:2266 msgid "position with mouse click/drag" msgstr "posició amb el clic del ratolí / arrossegament" -#: f.area.cc:2290 +#: f.area.cc:2292 msgid "Paste Image" msgstr "Enganxar imatge" -#: f.area.cc:2295 +#: f.area.cc:2297 msgid "resize" msgstr "redimensionar" -#: f.area.cc:2303 -msgid "angle" -msgstr "angle" - -#: f.area.cc:2565 +#: f.area.cc:2598 msgid "load select area from a file" msgstr "carregar àrea seleccionada des d'un fitxer" -#: f.area.cc:2619 +#: f.area.cc:2652 msgid "save select area to a file" msgstr "guardar àrea seleccionada en un fitxer" -#: f.bend.cc:71 f.menus.cc:230 +#: f.bend.cc:71 f.menus.cc:242 msgid "Unbend" msgstr "Redreçar" -#: f.bend.cc:79 f.image.cc:1485 +#: f.bend.cc:79 f.image.cc:1496 msgid "vertical" msgstr "vertical" -#: f.bend.cc:80 f.image.cc:1484 +#: f.bend.cc:80 f.image.cc:1495 msgid "horizontal" msgstr "horitzontal" @@ -177,7 +173,7 @@ msgid "curved" msgstr "curvat" -#: f.bend.cc:88 f.bend.cc:1517 f.bend.cc:1789 f.bend.cc:2049 f.image.cc:163 +#: f.bend.cc:88 f.bend.cc:1517 f.bend.cc:1789 f.bend.cc:2049 f.image.cc:172 msgid "Grid" msgstr "Graella" @@ -189,7 +185,7 @@ " Clic en les quatre cantonades d'un àrea tetragonal. Polsar [Aplicar]. \n" " La imatge és deformada per que el tetràgon sigui un rectangle." -#: f.bend.cc:356 f.menus.cc:231 +#: f.bend.cc:356 f.menus.cc:243 msgid "Keystone Correction" msgstr "Correcció de Keystone" @@ -239,7 +235,7 @@ " Múltiples estirades amb el ratolí fins a quedar satisfet. \n" " Quan hagi acabat, seleccionar un altre àrea o prèmer [Fet]." -#: f.bend.cc:1105 f.menus.cc:233 +#: f.bend.cc:1105 f.menus.cc:245 msgid "Warp area" msgstr "Deformar àrea" @@ -261,7 +257,7 @@ " Múltiples empentes del ratolí fins a quedar satisfet. \n" " Quan hagi acabat, polsar [Fet]." -#: f.bend.cc:1510 f.menus.cc:234 +#: f.bend.cc:1510 f.menus.cc:246 msgid "Warp curved" msgstr "Deformar corba" @@ -269,7 +265,7 @@ msgid "warp span" msgstr "deformar lapse" -#: f.bend.cc:1781 f.menus.cc:235 +#: f.bend.cc:1781 f.menus.cc:247 msgid "Warp linear" msgstr "Deformar lineal" @@ -283,7 +279,7 @@ " Múltiples empentes del ratolí fins a quedar satisfet. \n" " Quan hagi acabat, polsar [Fet]." -#: f.bend.cc:2044 f.menus.cc:236 +#: f.bend.cc:2044 f.menus.cc:248 msgid "Warp affine" msgstr "Deformar afin" @@ -307,7 +303,7 @@ msgid "reduce" msgstr "reduïr" -#: f.color.cc:371 f.menus.cc:224 +#: f.color.cc:371 f.menus.cc:236 msgid "Color Mode" msgstr "Mode de color" @@ -352,10 +348,6 @@ msgid "unknown cms profile %s" msgstr "perfil cms desconegut %s" -#: f.color.cc:601 -msgid "cmsCreateTransform() failed" -msgstr "ha fallat la creació/transformació de cms" - #: f.color.cc:667 msgid "Color Match Images" msgstr "Concordància de color d'imatges" @@ -364,8 +356,8 @@ msgid "mouse radius for color sample" msgstr "radi del ratolí per mostra de color" -#: f.color.cc:696 f.color.cc:701 f.file.cc:3981 f.menus.cc:191 f.menus.cc:278 -#: f.menus.cc:390 fotoxx.h:982 +#: f.color.cc:696 f.color.cc:701 f.file.cc:4045 f.menus.cc:203 f.menus.cc:291 +#: f.menus.cc:401 fotoxx.h:1003 msgid "Open" msgstr "Obrir" @@ -389,11 +381,11 @@ msgid "select source image color first" msgstr "seleccionar primer el color de la imatge d'origen" -#: f.color.cc:957 f.tools.cc:5134 +#: f.color.cc:957 f.tools.cc:5153 msgid "Click image to select pixels." msgstr "Clic en la imatge per seleccionar píxels." -#: f.color.cc:995 f.menus.cc:227 +#: f.color.cc:995 f.menus.cc:239 msgid "Revise RGB" msgstr "Revisar RGB" @@ -425,15 +417,15 @@ msgid "+Blue -Yellow" msgstr "+Blae -Groc" -#: f.color.cc:1467 fotoxx.h:992 +#: f.color.cc:1467 fotoxx.h:1013 msgid "Red" msgstr "Vermell" -#: f.color.cc:1468 fotoxx.h:965 +#: f.color.cc:1468 fotoxx.h:986 msgid "Green" msgstr "Verd" -#: f.color.cc:1469 fotoxx.h:943 +#: f.color.cc:1469 fotoxx.h:963 msgid "Blue" msgstr "Blae" @@ -441,7 +433,7 @@ msgid "Load CMYK parameters" msgstr "Carregar paràmetres CMYK" -#: f.color.cc:1614 f.color.cc:1686 f.repair.cc:4008 f.repair.cc:4104 +#: f.color.cc:1614 f.color.cc:1686 f.meta.cc:139 f.repair.cc:4025 msgid "File:" msgstr "Arxiu:" @@ -449,8 +441,8 @@ msgid "CMYK parameters file" msgstr "Arxiu de paràmetres CMYK" -#: f.color.cc:1651 f.file.cc:2047 f.meta.cc:1282 f.repair.cc:4048 -#: f.tools.cc:1708 +#: f.color.cc:1651 f.file.cc:2103 f.meta.cc:1451 f.repair.cc:4065 +#: f.tools.cc:1721 msgid "file not found" msgstr "arxiu no trobat" @@ -479,7 +471,7 @@ msgid "light pixels" msgstr "píxels clars" -#: f.combine.cc:2315 f.meta.cc:169 +#: f.combine.cc:2315 msgid "file:" msgstr "fitxer:" @@ -488,7 +480,7 @@ msgstr "Pintar i deformar imatge" #: f.combine.cc:2829 f.combine.cc:3482 f.combine.cc:4897 f.combine.cc:5795 -#: f.menus.cc:58 f.menus.cc:104 +#: f.menus.cc:58 f.menus.cc:119 msgid "Image" msgstr "Imatge" @@ -556,7 +548,7 @@ msgid "no curve (scanned image)" msgstr "no hi ha corba (imatge escanejada)" -#: f.combine.cc:4348 f.combine.cc:5245 f.menus.cc:198 f.menus.cc:446 +#: f.combine.cc:4348 f.combine.cc:5245 f.menus.cc:210 f.menus.cc:457 msgid "Resize" msgstr "Redimensionar" @@ -593,6 +585,167 @@ "Arrossegar imatges a una alineació aproximada.\n" "Per girar, arrossegar des de la vora dreta." +#: f.combine.cc:6061 +msgid "Mashup layout and background image" +msgstr "Capa de muntatge i imatge de fons" + +#: f.combine.cc:6090 +msgid "choose an image file" +msgstr "escollir una imatge" + +#: f.combine.cc:6091 +msgid "use current image file" +msgstr "utilitzar imatge actual" + +#: f.combine.cc:6092 +msgid "open a Mashup project file" +msgstr "Obrir un projecte de muntatge" + +#: f.combine.cc:6093 +msgid "specify layout size and color" +msgstr "especificar mida i color de la capa" + +#: f.combine.cc:6120 +msgid "choose layout file" +msgstr "escollir arxiu de capa" + +#: f.combine.cc:6181 +msgid "Edit Images" +msgstr "Editar imatges" + +#: f.combine.cc:6182 f.combine.cc:6931 +msgid "Edit Text" +msgstr "Editar text" + +#: f.combine.cc:6183 f.combine.cc:6482 +msgid "Save Project" +msgstr "Guardar projecte" + +#: f.combine.cc:6186 +msgid "add or edit images" +msgstr "afegir o editar imatges" + +#: f.combine.cc:6187 +msgid "add or edit text" +msgstr "afegir o editar text" + +#: f.combine.cc:6188 +msgid "save project data" +msgstr "desar projecte" + +#: f.combine.cc:6189 +msgid "project complete" +msgstr "projecte complert" + +#: f.combine.cc:6190 +msgid "cancel project" +msgstr "cancel.lar projecte" + +#: f.combine.cc:6283 +msgid "Open Project" +msgstr "Obrir projecte" + +#: f.combine.cc:6302 +#, c-format +msgid "" +"layout image file missing: \n" +" %s" +msgstr "requerida imatge de capa %s" + +#: f.combine.cc:6320 +#, c-format +msgid "" +"overlay image file missing: \n" +" %s" +msgstr "requerida imatge sobreposada %s" + +#: f.combine.cc:6382 +#, c-format +msgid "" +"layout image file error: \n" +" %s" +msgstr "error en la imatge de capa %s" + +#: f.combine.cc:6393 +#, c-format +msgid "" +"overlay image file error: \n" +" %s" +msgstr "" +"error en la imatge sobreposada : \n" +" %s" + +#: f.combine.cc:6452 +msgid "project file is defective" +msgstr "arxiu de projecte defectuós" + +#: f.combine.cc:6530 +msgid "Click image to select, drag image to move." +msgstr "Clic en la imatge per seleccionar, arrossegar imatge per moure-la" + +#: f.combine.cc:6563 +msgid "current image:" +msgstr "imatge actual" + +#: f.combine.cc:6585 f.combine.cc:6965 f.image.cc:1681 +msgid "Transparency" +msgstr "Transparència" + +#: f.combine.cc:6589 +msgid "Edge Blend Width" +msgstr "Ample de barreja de les vores" + +#: f.combine.cc:6755 +#, c-format +msgid "exceeded %d images" +msgstr "excedit en %d imatges" + +#: f.combine.cc:6906 +msgid "Enter text, click/drag on image." +msgstr "Introduïr text, clic/arrossegar sobre la imatge" + +#: f.combine.cc:6936 f.image.cc:1652 f.tools.cc:1113 +msgid "Text" +msgstr "Text" + +#: f.combine.cc:6954 f.image.cc:1670 +msgid "text" +msgstr "text" + +#: f.combine.cc:6955 f.image.cc:1671 +msgid "backing" +msgstr "fons" + +#: f.combine.cc:6956 f.image.cc:1672 +msgid "outline" +msgstr "contorn" + +#: f.combine.cc:6957 f.image.cc:1673 +msgid "shadow" +msgstr "ombra" + +#: f.combine.cc:6959 f.image.cc:1675 f.menus.cc:61 f.menus.cc:122 +#: f.menus.cc:286 fotoxx.h:969 +msgid "Color" +msgstr "Color" + +#: f.combine.cc:6971 f.image.cc:1687 fotoxx.h:1039 +msgid "Width" +msgstr "Ample" + +#: f.combine.cc:6984 f.image.cc:1700 +msgid "Text File:" +msgstr "arxiu de text:" + +#: f.combine.cc:7046 f.image.cc:1811 +msgid "select font" +msgstr "seleccionar tipus de lletra" + +#: f.combine.cc:7154 +#, c-format +msgid "exceeded %d text entries" +msgstr "excedides %d entrades de text" + #: f.effects.cc:44 msgid "Set color depth to 1-16 bits" msgstr "Ajustar la profunditat de color a 1-16 bits" @@ -633,7 +786,7 @@ msgid "black/white" msgstr " negre/blanc" -#: f.effects.cc:983 f.menus.cc:241 +#: f.effects.cc:983 f.menus.cc:253 msgid "Graduated Blur" msgstr "Desenfocament graduat" @@ -653,7 +806,7 @@ msgid "depth" msgstr "profunditat" -#: f.effects.cc:1219 f.file.cc:987 +#: f.effects.cc:1219 f.file.cc:1042 msgid "color" msgstr "color" @@ -701,7 +854,7 @@ msgid "borders" msgstr "vores" -#: f.effects.cc:2461 f.menus.cc:246 +#: f.effects.cc:2461 f.menus.cc:258 msgid "False Colors" msgstr "Cambiar colores" @@ -717,7 +870,7 @@ msgid "Blue: Red" msgstr "Blau: Vermell" -#: f.effects.cc:2669 f.menus.cc:247 +#: f.effects.cc:2669 f.menus.cc:259 msgid "Vignette" msgstr "Vinyetat" @@ -725,7 +878,7 @@ msgid "center" msgstr "centre" -#: f.effects.cc:2700 f.retouch.cc:2402 +#: f.effects.cc:2700 f.retouch.cc:2399 msgid "edge" msgstr "vora" @@ -733,80 +886,88 @@ msgid "no newly added files found" msgstr "no s'han trovat noves imatges afegides" -#: f.file.cc:275 +#: f.file.cc:307 msgid "no more images" msgstr "no hi ha més imatges" -#: f.file.cc:343 f.menus.cc:136 f.menus.cc:457 +#: f.file.cc:358 f.menus.cc:151 f.menus.cc:468 msgid "Open RAW file (ufraw)" msgstr "Obrir fitxer RAW (ufraw)" -#: f.file.cc:347 +#: f.file.cc:362 msgid "RAW type not registered in User Settings" msgstr "tipus RAW no registrat en Configuració d'usuari" -#: f.file.cc:367 -msgid "Overwrite original file?" -msgstr "Sobreescriu el fitxer original?" - -#: f.file.cc:368 -msgid "Do not warn again" -msgstr "No avisar de nou" - -#: f.file.cc:383 -msgid "Warning" -msgstr "Avís" - -#: f.file.cc:495 -msgid "Save File" -msgstr "Desa fitxer" +#: f.file.cc:412 +msgid "Save Image File" +msgstr "Guardar imatge" + +#: f.file.cc:422 +msgid "new version" +msgstr "nova versió" + +#: f.file.cc:423 +msgid "new file name" +msgstr "nou nom d'arxiu" + +#: f.file.cc:424 +msgid "replace file" +msgstr "substituïr arxiu" + +#: f.file.cc:430 +msgid "save as new file version" +msgstr "guardar com una nova versió" + +#: f.file.cc:431 f.file.cc:559 +msgid "save as new file name or type" +msgstr "guardar com un nou nom o tipus d'arxiu" + +#: f.file.cc:432 +msgid "replace old file (OVERWRITE)" +msgstr "substituïr arxiu anterior (SOBRE-ESCRIURE)" -#: f.file.cc:528 zfuncs.cc:9270 -msgid "quality" -msgstr "qualitat" - -#: f.file.cc:530 +#: f.file.cc:575 msgid "make current" msgstr "fer actual" -#: f.file.cc:625 +#: f.file.cc:668 msgid "jpeg quality must be 1-100" msgstr "qualitat JPEG ha de ser 1-100" -#: f.file.cc:653 +#: f.file.cc:694 #, c-format msgid "" "Overwrite file? \n" " %s" msgstr "" -"Sobreesscriure arxiu? \n" +"Sobre-escriure arxiu? \n" " %s" -#: f.file.cc:799 f.menus.cc:140 +#: f.file.cc:854 f.menus.cc:153 msgid "Rename Image File" msgstr "Re-anomenar arxiu d'imatge" -#: f.file.cc:806 +#: f.file.cc:861 msgid "old name" msgstr "antic nom" -#: f.file.cc:807 +#: f.file.cc:862 msgid "new name" msgstr "nou nom" -#: f.file.cc:816 +#: f.file.cc:871 msgid "previous name" msgstr "nom anterior" -#: f.file.cc:817 +#: f.file.cc:872 msgid "add 1" msgstr "afegir 1" -#: f.file.cc:895 f.file.cc:1248 +#: f.file.cc:950 f.file.cc:1303 msgid "target file already exists" msgstr "l'arxiu de destí ja existeix" -#: f.file.cc:922 f.file.cc:1270 f.file.cc:1388 +#: f.file.cc:977 f.file.cc:1325 f.file.cc:1443 #, c-format msgid "" "delete failed: \n" @@ -815,59 +976,59 @@ "l'esborrat ha fallat: \n" " %s" -#: f.file.cc:971 +#: f.file.cc:1026 msgid "Create Blank Image" msgstr "Crear imatge buida" -#: f.file.cc:973 +#: f.file.cc:1028 msgid "file name" msgstr "nom d'arxiu" -#: f.file.cc:978 f.image.cc:470 +#: f.file.cc:1033 f.image.cc:479 msgid "width" msgstr "amplada" -#: f.file.cc:981 f.image.cc:473 f.tools.cc:4088 +#: f.file.cc:1036 f.image.cc:482 f.tools.cc:4107 msgid "height" msgstr "alçada" -#: f.file.cc:1156 +#: f.file.cc:1211 msgid "Copy Image File" msgstr "Copiar imatge" -#: f.file.cc:1158 +#: f.file.cc:1213 msgid "Move Image File" msgstr "Moure imarge" -#: f.file.cc:1164 f.file.cc:1343 f.file.cc:1464 +#: f.file.cc:1219 f.file.cc:1398 f.file.cc:1519 msgid "image file" msgstr "arxiu d'imatge" -#: f.file.cc:1169 +#: f.file.cc:1224 msgid "new location" msgstr "nova ubicació" -#: f.file.cc:1203 f.tools.cc:4317 +#: f.file.cc:1258 f.tools.cc:4336 msgid "Select directory" msgstr "Seleccionar directori" -#: f.file.cc:1233 +#: f.file.cc:1288 msgid "new location is not a directory" msgstr "la nova ubicació no és un directori" -#: f.file.cc:1307 +#: f.file.cc:1362 msgid "Delete Image File - CANNOT BE REVERSED" msgstr "Esborrar imatge - NO ES POT TORNAR ENRERA" -#: f.file.cc:1308 f.file.cc:1430 +#: f.file.cc:1363 f.file.cc:1485 msgid "(automatic step to next image)" msgstr "(passi automàtic a la nova imatge)" -#: f.file.cc:1429 f.menus.cc:142 +#: f.file.cc:1484 f.menus.cc:155 msgid "Trash Image File" msgstr "Imatge a la paperera" -#: f.file.cc:1494 +#: f.file.cc:1549 msgid "" "Linux standard trash does not work. \n" "Desktop trash folder will be created." @@ -875,7 +1036,7 @@ "Paperera estàndard de Linux no funciona. \n" "Es crearà una carpeta de paperera." -#: f.file.cc:1497 +#: f.file.cc:1552 msgid "" "Linux and Desktop trash do not work. \n" "Permanently delete the image file?" @@ -883,1479 +1044,1517 @@ "Les papereres de Linux i del Escriptori no funcionen. \n" "Esborrar permanenment la imatge?" -#: f.file.cc:1527 +#: f.file.cc:1582 msgid "Move read-only file to trash?" msgstr "Moure a la paperera fitxers de nomès lectura?" -#: f.file.cc:1556 +#: f.file.cc:1611 #, c-format msgid "Cannot create trash folder: %s" msgstr "No es pot crear carpeta de paperera: %s" -#: f.file.cc:1569 zfuncs.cc:4211 +#: f.file.cc:1624 zfuncs.cc:4211 #, c-format msgid "error: %s" msgstr "error: %s" -#: f.file.cc:1588 +#: f.file.cc:1643 #, c-format msgid "delete failed: %s" msgstr "esborrar ha fallat: %s" -#: f.file.cc:2041 f.menus.cc:132 +#: f.file.cc:2097 f.menus.cc:147 msgid "Open Image File" msgstr "Obrir arxiu d'imatge" -#: f.file.cc:2059 +#: f.file.cc:2115 msgid "unknown file type" msgstr "tipus d'arxiu desconegut" -#: f.file.cc:2341 +#: f.file.cc:2396 msgid "Unable to copy EXIF/IPTC data" msgstr "No puc copiar dades EXIF/IPTC" -#: f.file.cc:2404 f.file.cc:2465 +#: f.file.cc:2459 f.file.cc:2520 #, c-format msgid "file not found: %s" msgstr "arxiu no trobat: %s" -#: f.file.cc:2409 f.file.cc:2470 +#: f.file.cc:2464 f.file.cc:2525 #, c-format msgid "file type not supported: %s" msgstr "tipus d'arxiu no suportaat: %s" -#: f.file.cc:3982 f.menus.cc:390 +#: f.file.cc:4046 msgid "change directory" msgstr "canviar directori" -#: f.file.cc:3990 f.menus.cc:391 +#: f.file.cc:4054 f.menus.cc:402 msgid "GoTo" msgstr "Anar a" -#: f.file.cc:4005 f.menus.cc:400 +#: f.file.cc:4069 f.menus.cc:405 msgid "Sort" msgstr "Ordenar" -#: f.file.cc:4036 f.file.cc:4360 f.menus.cc:398 +#: f.file.cc:4100 f.file.cc:4431 f.menus.cc:410 msgid "Row↑" msgstr "Fila ↑" -#: f.file.cc:4048 f.file.cc:4361 f.menus.cc:399 +#: f.file.cc:4112 f.file.cc:4432 f.menus.cc:411 msgid "Row↓" msgstr "Fila ↓" -#: f.file.cc:4060 f.file.cc:4363 f.menus.cc:394 +#: f.file.cc:4124 f.file.cc:4434 f.menus.cc:406 msgid "First" msgstr "Primera" -#: f.file.cc:4061 f.file.cc:4364 f.menus.cc:395 +#: f.file.cc:4125 f.file.cc:4435 f.menus.cc:407 msgid "Last" msgstr "Última" -#: f.file.cc:4062 f.file.cc:4358 f.file.cc:4365 f.menus.cc:396 +#: f.file.cc:4126 f.file.cc:4429 f.file.cc:4436 f.menus.cc:408 msgid "Page↑" msgstr "Pàgina ↑" -#: f.file.cc:4063 f.file.cc:4359 f.file.cc:4366 f.menus.cc:397 +#: f.file.cc:4127 f.file.cc:4430 f.file.cc:4437 f.menus.cc:409 msgid "Page↓" msgstr "Pàgina ↓" -#: f.file.cc:4114 f.tools.cc:940 +#: f.file.cc:4178 f.tools.cc:953 msgid "Choose top image directory" msgstr "Seleccionar el dirctori d'imatges principal" -#: f.file.cc:4120 f.file.cc:4134 +#: f.file.cc:4184 f.file.cc:4198 msgid "recent" msgstr " recent" -#: f.file.cc:4121 f.file.cc:4139 +#: f.file.cc:4185 f.file.cc:4203 msgid "newest" msgstr "més noves" -#: f.file.cc:4170 +#: f.file.cc:4234 msgid "Gallery Sort" msgstr "Ordenar galeria" -#: f.file.cc:4174 +#: f.file.cc:4238 msgid "File Name" msgstr "Nom d'arxiu" -#: f.file.cc:4175 +#: f.file.cc:4239 msgid "File Mod Date/Time" msgstr "Mode d'arxiu date/hora" -#: f.file.cc:4176 +#: f.file.cc:4240 msgid "Photo Date/Time (EXIF)" msgstr "Data/hora de la foto (EXIF)" -#: f.file.cc:4178 +#: f.file.cc:4242 msgid "ascending" msgstr "ascendent" -#: f.file.cc:4179 +#: f.file.cc:4243 msgid "descending" msgstr " descendent" -#: f.file.cc:4352 f.file.cc:4353 f.file.cc:4355 +#: f.file.cc:4423 f.file.cc:4424 f.file.cc:4426 f.menus.cc:403 msgid "Zoom+" msgstr "Zoom +" -#: f.file.cc:4354 f.file.cc:4356 +#: f.file.cc:4425 f.file.cc:4427 f.menus.cc:404 msgid "Zoom-" msgstr "Zoom -" -#: f.file.cc:5192 fotoxx.h:1003 +#: f.file.cc:5264 fotoxx.h:1024 msgid "Select Files" msgstr "Seleccionar arxius" -#: f.file.cc:5668 fotoxx.h:935 +#: f.file.cc:5740 fotoxx.h:954 msgid "Add" msgstr "Afegir" -#: f.file.cc:5668 fotoxx.h:995 +#: f.file.cc:5740 fotoxx.h:1016 msgid "Remove" msgstr "Eliminar" -#: f.file.cc:5670 +#: f.file.cc:5742 msgid "menu name" msgstr "nom de menú" -#: f.file.cc:5740 f.file.cc:5761 +#: f.file.cc:5812 f.file.cc:5833 msgid "Restart Fotoxx to update plugin menu" msgstr "Re-iniciar Fotoxx per actualitzar el menú de complements" -#: f.file.cc:5803 -msgid "no plugin command" -msgstr "sense ordre de complement" +#: f.file.cc:5875 +msgid "Plugins menu is empty" +msgstr "El menú de complements és buït" -#: f.file.cc:5831 +#: f.file.cc:5903 msgid "plugin failed" msgstr "errada de complement" -#: f.image.cc:47 -msgid "Turn Image" -msgstr "" +#: f.image.cc:50 +msgid "Rotate Image 90º" +msgstr "Rotar imatge 90º" + +#: f.image.cc:54 +msgid "rotate -90º" +msgstr "Rotar -90º" + +#: f.image.cc:55 +msgid "rotate +90º" +msgstr "Rotar +90º" -#: f.image.cc:114 +#: f.image.cc:123 msgid "Drag right edge with mouse" -msgstr "Arrossegar cantó dret6 amb el ratolí" +msgstr "Arrossegar cantó dret amb el ratolí" -#: f.image.cc:144 +#: f.image.cc:153 msgid "Rotate Image" msgstr "Rotar imatge" -#: f.image.cc:148 zfuncs.cc:9605 +#: f.image.cc:157 zfuncs.cc:9679 msgid "left" msgstr "esquerra" -#: f.image.cc:151 zfuncs.cc:9606 +#: f.image.cc:160 zfuncs.cc:9680 msgid "right" msgstr "dreta" -#: f.image.cc:157 +#: f.image.cc:166 msgid "degrees" msgstr "graus" -#: f.image.cc:442 +#: f.image.cc:451 msgid "Drag middle to move, drag corners to resize." msgstr "" "Arrossegar el centre per moure, arrossegar cantonades per redimensionar." -#: f.image.cc:465 f.menus.cc:196 f.menus.cc:445 +#: f.image.cc:474 f.menus.cc:208 f.menus.cc:456 msgid "Trim/Crop" msgstr "Retallar" -#: f.image.cc:476 f.image.cc:756 +#: f.image.cc:485 f.image.cc:765 msgid "ratio" msgstr "proporció" -#: f.image.cc:480 +#: f.image.cc:489 msgid "portrait" msgstr "retrat" -#: f.image.cc:481 +#: f.image.cc:490 msgid "landscape" msgstr "paisatge" -#: f.image.cc:482 +#: f.image.cc:491 msgid "Lock Ratio" msgstr "Bloquejar proporció" -#: f.image.cc:486 +#: f.image.cc:495 msgid "customize" msgstr "personalitzar" -#: f.image.cc:748 +#: f.image.cc:757 msgid "Trim Buttons" msgstr "Botons de retallar" -#: f.image.cc:755 +#: f.image.cc:764 msgid "label" msgstr "etiqueta" -#: f.image.cc:1277 +#: f.image.cc:1286 msgid "Lock aspect ratio" msgstr "Bloquejar proporció d'aspecte" -#: f.image.cc:1298 +#: f.image.cc:1307 msgid "Resize Image" msgstr "Redimensionar imatge" -#: f.image.cc:1480 f.menus.cc:199 +#: f.image.cc:1491 f.menus.cc:211 msgid "Flip" msgstr "Invertir" -#: f.image.cc:1604 +#: f.image.cc:1610 msgid "Enter text, click/drag on image, right click to remove" msgstr "" "Escriure el text, clic/arrossegar sobre la imnatge, clic dret per eliminar" -#: f.image.cc:1631 +#: f.image.cc:1645 msgid "Write Text on Image" msgstr "Escriure text en una imatge" -#: f.image.cc:1638 f.tools.cc:1100 -msgid "Text" -msgstr "Text" - -#: f.image.cc:1645 -msgid "Size" -msgstr "Tamany" - -#: f.image.cc:1656 -msgid "text" -msgstr "text" - -#: f.image.cc:1657 -msgid "backing" -msgstr "fons" - -#: f.image.cc:1658 -msgid "outline" -msgstr "contorn" +#: f.image.cc:2312 +msgid "text file is defective" +msgstr "arxiu de text és defectuós" -#: f.image.cc:1659 -msgid "shadow" -msgstr "ombra" - -#: f.image.cc:1661 f.menus.cc:61 f.menus.cc:107 f.menus.cc:273 fotoxx.h:949 -msgid "Color" -msgstr "Color" - -#: f.image.cc:1667 -msgid "Transparency" -msgstr "Transparència" - -#: f.image.cc:1673 fotoxx.h:1017 -msgid "Width" -msgstr "Ample" - -#: f.image.cc:1679 -msgid "Angle" -msgstr "Angle" - -#: f.image.cc:1686 -msgid "Text File:" -msgstr "arxiu de text:" - -#: f.image.cc:1764 -msgid "select font" -msgstr "seleccionar tipus de lletra" - -#: f.menus.cc:54 f.menus.cc:100 +#: f.menus.cc:54 f.menus.cc:115 msgid "File" msgstr "Arxiu" -#: f.menus.cc:55 f.menus.cc:101 +#: f.menus.cc:55 f.menus.cc:116 msgid "Tools" msgstr "Eines" -#: f.menus.cc:56 f.menus.cc:102 +#: f.menus.cc:56 f.menus.cc:117 msgid "Metadata" msgstr "Metadades" -#: f.menus.cc:57 f.menus.cc:103 +#: f.menus.cc:57 f.menus.cc:118 msgid "Areas" msgstr "Àrees" -#: f.menus.cc:59 f.menus.cc:105 +#: f.menus.cc:59 f.menus.cc:120 msgid "Retouch" msgstr "Retocar" -#: f.menus.cc:60 f.menus.cc:106 +#: f.menus.cc:60 f.menus.cc:121 msgid "Repair" msgstr "Reparar" -#: f.menus.cc:62 f.menus.cc:108 +#: f.menus.cc:62 f.menus.cc:123 msgid "Bend" msgstr "Deformar" -#: f.menus.cc:63 f.menus.cc:109 +#: f.menus.cc:63 f.menus.cc:124 msgid "Effects" msgstr "Efectes" -#: f.menus.cc:64 f.menus.cc:110 +#: f.menus.cc:64 f.menus.cc:125 msgid "Combine" msgstr "Combinar" -#: f.menus.cc:65 f.menus.cc:111 +#: f.menus.cc:65 f.menus.cc:126 msgid "Plugins" msgstr "Complements (Plugins)" -#: f.menus.cc:66 f.menus.cc:112 fotoxx-13.08.cc:3631 fotoxx.h:967 +#: f.menus.cc:66 f.menus.cc:127 fotoxx-13.10.cc:3664 fotoxx.h:988 msgid "Help" msgstr "Ajuda" -#: f.menus.cc:99 f.menus.cc:271 +#: f.menus.cc:99 f.menus.cc:284 msgid "Favorites Menu" msgstr "Menú de favorits" +#: f.menus.cc:100 +msgid "Open, Save, Trash, Rename, Print" +msgstr "Obrir, guardar, esborrar, reanomenar, imprimir" + +#: f.menus.cc:101 +msgid "Synch Files, Settings, Collections, Batch Funcs ..." +msgstr "Sincronitzar arxius, ajustos, coleccions, funcions de lot ..." + +#: f.menus.cc:102 +msgid "Captions, Tags, Ratings, Geotags, Search ... " +msgstr "Llegendes, etiquetes, clasificacions, geo-etiquetes, cerques ..." + +#: f.menus.cc:103 +msgid "Select image areas to edit, copy and paste" +msgstr "Seleccionar àrees de la imatge a editar, copiar i enganxar" + +#: f.menus.cc:104 +msgid "Rotate, Trim/Crop, Resize, Add Text" +msgstr "Girar, retallar, redimensionar, afegir text" + +#: f.menus.cc:105 +msgid "Improve brightness, contrast, color ..." +msgstr "Millorar brillantor, contrast, color ..." + +#: f.menus.cc:106 +msgid "Sharpen, Clean, Red-eyes, Paint, Clone ..." +msgstr "Enfocar, netejar, ulls vermells, pintar, clonar " + +#: f.menus.cc:107 +msgid "White Balance, Color Profile, Color Matching" +msgstr "Balanç de blancs, perfil de color, concordància de colors" + +#: f.menus.cc:108 +msgid "Fix Perspective, Bend/Warp image ..." +msgstr "Corretgir perspectiva, adreçar/deformar imatge ..." + +#: f.menus.cc:109 +msgid "Special Effects, Arty Transforms" +msgstr "Efectes especials, transformacions artístiques" + +#: f.menus.cc:110 +msgid "HDR, HDF, Panorama, Stack, Mashup" +msgstr "" + +#: f.menus.cc:111 +msgid "Use other image editors within Fotoxx" +msgstr "Utilitzar altres editors d'imatge dintre de Fotoxx" + #: f.menus.cc:112 -msgid "User Guide etc." -msgstr "Guia d'usuari, etc" +msgid "Quick Start, User Guide, Recent Changes ..." +msgstr "Inici ràpid, guia d'usuari, canvis recents" -#: f.menus.cc:131 +#: f.menus.cc:146 msgid "New Window" msgstr "Nova finestra" -#: f.menus.cc:131 +#: f.menus.cc:146 msgid "Open another window" msgstr "Obrir una altre finestra" -#: f.menus.cc:132 f.menus.cc:278 +#: f.menus.cc:147 f.menus.cc:291 msgid "Open a new image file" msgstr "Obrir una nova imatge" -#: f.menus.cc:133 +#: f.menus.cc:148 msgid "Open Previous File" msgstr "Obrir arxiu anterior" -#: f.menus.cc:133 +#: f.menus.cc:148 msgid "Open the previously seen file" msgstr "Obrir arxiu vist previament" -#: f.menus.cc:134 +#: f.menus.cc:149 msgid "Open a recently seen file" msgstr "Obrir un arxiu vist recentment" -#: f.menus.cc:134 +#: f.menus.cc:149 msgid "Recently Seen Images" msgstr "Imatges vistes recentment " -#: f.menus.cc:135 +#: f.menus.cc:150 msgid "Newly Added Images" msgstr "Noves imatges afegides" -#: f.menus.cc:135 +#: f.menus.cc:150 msgid "Open a newly added file" msgstr "Obrir un nou arxiu afegit" -#: f.menus.cc:136 +#: f.menus.cc:151 msgid "Open and edit a camera RAW file" msgstr "Obrir i editar un arxiu de càmera RAW" -#: f.menus.cc:137 -msgid "Save to Same File" -msgstr "Guardar en el mateix arxiu" - -#: f.menus.cc:137 -msgid "Save to the same file (replace)" -msgstr "Guardar en el mateix arxio (reemplaçar)" - -#: f.menus.cc:138 -msgid "Save to New Version" -msgstr "Guardar en una nova versió" - -#: f.menus.cc:138 -msgid "Save to a new (next) version" -msgstr "Guardar en una nova (pròxima) versió" - -#: f.menus.cc:139 -msgid "Save to New File" -msgstr "Guardar en un nou arxiu" - -#: f.menus.cc:139 -msgid "Save to a new file name" -msgstr "Guardar amb un nou nom d'arxiu" +#: f.menus.cc:152 f.menus.cc:294 +msgid "Save modified image file to disk" +msgstr "Guardar imatge modificada en el disc" + +#: f.menus.cc:152 +msgid "Save to Disk" +msgstr "Guardar en el disc" -#: f.menus.cc:140 +#: f.menus.cc:153 msgid "Change the image file name" msgstr "Canvia nom de la imatge" -#: f.menus.cc:141 +#: f.menus.cc:154 msgid "Create a blank image" msgstr "Crear una imatge buida" -#: f.menus.cc:141 +#: f.menus.cc:154 msgid "New Blank Image" msgstr "Nova imatge buida" -#: f.menus.cc:142 f.menus.cc:284 +#: f.menus.cc:155 f.menus.cc:295 msgid "Move image file to Trash" msgstr "Moure imatge a la paperera" -#: f.menus.cc:143 +#: f.menus.cc:156 msgid "Print Image" msgstr "Imprimir imatge" -#: f.menus.cc:143 +#: f.menus.cc:156 msgid "Print the current image" msgstr "Impprimir la imatge actual" -#: f.menus.cc:144 +#: f.menus.cc:157 msgid "Quit Fotoxx" msgstr "Sortir de Fotoxx" -#: f.menus.cc:146 +#: f.menus.cc:159 msgid "Index new files and make thumbnails" msgstr "Indexar nous arxius i fer miniatures" -#: f.menus.cc:146 f.tools.cc:182 f.tools.cc:364 +#: f.menus.cc:159 f.tools.cc:182 f.tools.cc:364 msgid "Synchronize Files" msgstr "Sincronitzar arxius" -#: f.menus.cc:147 +#: f.menus.cc:160 msgid "Change user preferences" msgstr "Canviar preferències d'usuari" -#: f.menus.cc:147 +#: f.menus.cc:160 msgid "User Settings" msgstr "Preferències d'usuari" -#: f.menus.cc:148 +#: f.menus.cc:161 msgid "Change Keyboard Shortcut Keys" msgstr "Canviar tecles drecera" -#: f.menus.cc:148 +#: f.menus.cc:161 msgid "Keyboard Shortcuts" msgstr "Tecles drecera" -#: f.menus.cc:149 f.tools.cc:2179 +#: f.menus.cc:162 f.tools.cc:2190 msgid "Manage Collections" msgstr "Administrar col.leccións" -#: f.menus.cc:149 +#: f.menus.cc:162 msgid "Organize images into collections" msgstr "Organitzar imatges en col.leccions" -#: f.menus.cc:150 +#: f.menus.cc:163 msgid "Convert for a new top directory" msgstr "Convertir per a un nou directori principal" -#: f.menus.cc:150 +#: f.menus.cc:163 msgid "Move Collections" msgstr "Moure col.leccions" -#: f.menus.cc:151 f.tools.cc:2778 +#: f.menus.cc:164 f.tools.cc:2797 msgid "Slide Show" msgstr "Diaporama" -#: f.menus.cc:151 +#: f.menus.cc:164 msgid "Start a slide show" msgstr "Iniciar un diaporama" -#: f.menus.cc:152 f.tools.cc:3863 +#: f.menus.cc:165 f.tools.cc:3882 msgid "Batch Rename" msgstr "Re-anomenar en lot" -#: f.menus.cc:152 +#: f.menus.cc:165 msgid "Rename multiple image files" msgstr "Reanomenar múltiples imatges" -#: f.menus.cc:153 f.tools.cc:4078 +#: f.menus.cc:166 f.tools.cc:4097 msgid "Batch Convert/Resize/Move" msgstr "Convertir/Redimensionar/Moure en lot" -#: f.menus.cc:153 +#: f.menus.cc:166 msgid "Convert resize, move multiple files" msgstr "Convertir, redimensionar, moure múltiples arxius" -#: f.menus.cc:154 f.tools.cc:4416 +#: f.menus.cc:167 f.tools.cc:4435 msgid "Batch Convert RAW Files" msgstr "Convertir arxius RAW en lot" -#: f.menus.cc:154 +#: f.menus.cc:167 msgid "Convert multiple camera RAW files" msgstr "Convertir múltiples arxius de càmera RAW" -#: f.menus.cc:155 f.tools.cc:4795 +#: f.menus.cc:168 f.tools.cc:4814 msgid "Brightness Distribution" msgstr "Histograma (distribució de la brillantor)" -#: f.menus.cc:155 +#: f.menus.cc:168 msgid "Show a brightness distribution graph" msgstr "Mostrar histograma (distribució de la brillantor)" -#: f.menus.cc:156 f.menus.cc:455 f.tools.cc:4990 +#: f.menus.cc:169 f.menus.cc:466 f.tools.cc:5009 msgid "Grid Lines" msgstr "Línies de graella" -#: f.menus.cc:156 +#: f.menus.cc:169 msgid "Show or revise grid lines" msgstr "Mostrar o amagar línies de graella" -#: f.menus.cc:157 f.tools.cc:5166 +#: f.menus.cc:170 f.tools.cc:5185 msgid "Show RGB" msgstr "Mostrar RGB" -#: f.menus.cc:157 +#: f.menus.cc:170 msgid "Show RGB colors at mouse click" msgstr "Mostrar colors RGB amb un clic de ratolí" -#: f.menus.cc:158 +#: f.menus.cc:171 msgid "Chart to adjust monitor color" msgstr "Carta per ajustar el color del monitor" -#: f.menus.cc:158 +#: f.menus.cc:171 msgid "Monitor Color" msgstr "Color del monitor" -#: f.menus.cc:159 +#: f.menus.cc:172 msgid "Chart to adjust monitor gamma" msgstr "Carta per ajustar la gamma del monitor" -#: f.menus.cc:159 f.tools.cc:5490 +#: f.menus.cc:172 f.tools.cc:5509 msgid "Monitor Gamma" msgstr "Gamma del monitor" -#: f.menus.cc:160 +#: f.menus.cc:173 msgid "Change Language" msgstr "Canviar idioma" -#: f.menus.cc:160 +#: f.menus.cc:173 msgid "Change the GUI language" msgstr "Canviar idioma de la interfície d'usuari" -#: f.menus.cc:161 +#: f.menus.cc:174 msgid "Missing Translations" msgstr "Traduccions que falten" -#: f.menus.cc:161 +#: f.menus.cc:174 msgid "Report missing translations" msgstr "Informe de traduccions que falten" -#: f.menus.cc:162 +#: f.menus.cc:175 msgid "Edit Translations" msgstr "Editar traduccions" -#: f.menus.cc:162 +#: f.menus.cc:175 msgid "Edit translations while using Fotoxx" msgstr "Editar traduccions mentre utilitza Fotoxx" -#: f.menus.cc:163 +#: f.menus.cc:176 msgid "Create a Gnome menu and launcher" msgstr "Crear un menú i llençadora de Gnome" -#: f.menus.cc:163 +#: f.menus.cc:176 msgid "Menu and Launcher" msgstr "Menú i llençadora" -#: f.menus.cc:164 +#: f.menus.cc:177 msgid "Burn Images to CD/DVD" msgstr "Gravar imatges en un CD/DVD" -#: f.menus.cc:164 +#: f.menus.cc:177 msgid "Burn selected image files to CD or DVD" msgstr "Gravar imatges seleccionades en un CD/DVD" -#: f.menus.cc:165 +#: f.menus.cc:178 msgid "Memory and CPU (to terminal/logfile)" msgstr "Memoria i CPU (al terminal/arxiu de registre)" -#: f.menus.cc:165 +#: f.menus.cc:178 msgid "Resources" msgstr "Recursos" -#: f.menus.cc:167 -msgid "Edit Caption/Comments" -msgstr "Editar llegenda/comentaris" - -#: f.menus.cc:167 -msgid "Edit image caption or comment" -msgstr "Editar llegenda/comentaris de la imatge" - -#: f.menus.cc:168 f.meta.cc:165 f.meta.cc:1728 +#: f.menus.cc:180 f.meta.cc:110 f.meta.cc:1897 msgid "Edit Metadata" msgstr "Editar metadades" -#: f.menus.cc:168 -msgid "Edit image date/rating/tags" -msgstr "Editar data/calificació/etiquetes" +#: f.menus.cc:180 +msgid "Edit image tags/caption/rating ..." +msgstr "Editar etiquetes/llegenda/clasificació de la imatge" -#: f.menus.cc:169 +#: f.menus.cc:181 msgid "Add/remove tags for multiple images" msgstr "Afegir/eliminar etiquetes per múltiples imatges " -#: f.menus.cc:169 -msgid "Batch Tags" -msgstr "Etiquetar en lot" +#: f.menus.cc:181 f.meta.cc:1552 +msgid "Batch Add/Remove Tags" +msgstr "Afegir/eliminar etiquetes en lot" -#: f.menus.cc:170 +#: f.menus.cc:182 msgid "List a few key metadata items" msgstr "Llistar algunes dades clau de metadades" -#: f.menus.cc:170 +#: f.menus.cc:182 msgid "View Metadata (short)" msgstr "Veure metadades (curt)" -#: f.menus.cc:171 +#: f.menus.cc:183 msgid "List all metadata items" msgstr "Listar totes les metadades" -#: f.menus.cc:171 +#: f.menus.cc:183 msgid "View Metadata (long)" msgstr "Veure metadades (llarg)" -#: f.menus.cc:172 +#: f.menus.cc:184 msgid "Edit Any Metadata" msgstr "Editar qualsevol metadada" -#: f.menus.cc:172 +#: f.menus.cc:184 msgid "Edit any image metadata" msgstr "Editar qualsevol metadada de la imatge" -#: f.menus.cc:173 f.meta.cc:1820 +#: f.menus.cc:185 f.meta.cc:1989 msgid "Delete Metadata" msgstr "Esborrar metadades" -#: f.menus.cc:173 +#: f.menus.cc:185 msgid "Remove all metadata from an image" msgstr "Eliminar totes les metadades d'una imatge" -#: f.menus.cc:174 +#: f.menus.cc:186 msgid "Download Geolocations" msgstr "Baixar geo-ubicacions" -#: f.menus.cc:174 +#: f.menus.cc:186 msgid "Download initial geolocation database" msgstr "Baixar bases de dades de geo-ubicació inicial" -#: f.menus.cc:176 f.meta.cc:2713 +#: f.menus.cc:188 f.meta.cc:2892 msgid "Edit Geotags" msgstr "Editar geoetiquetes" -#: f.menus.cc:176 -msgid "Edit image geotags" -msgstr "Editar geo-etiquetes de la imatge" +#: f.menus.cc:188 +msgid "Edit image location and geotags" +msgstr "Editar ubicació i geoetiquetes de la imatge" -#: f.menus.cc:177 +#: f.menus.cc:189 msgid "Add geotags to multiple images" msgstr "Afegir geo-etiquetes a múltiples imatges" -#: f.menus.cc:177 f.meta.cc:2905 +#: f.menus.cc:189 f.meta.cc:3084 msgid "Batch Add Geotags" msgstr "Afegir geoetiquetes" -#: f.menus.cc:178 +#: f.menus.cc:190 msgid "Find all images for a location [date]" msgstr "Trobar totes les imatges per una ubicació [data]" -#: f.menus.cc:178 +#: f.menus.cc:190 msgid "Images by Location/Date" msgstr "Imatges per ubicació/data" -#: f.menus.cc:179 +#: f.menus.cc:191 msgid "Find images by clicking a world map" msgstr "Trobar imatges clicant en un mapa mundi" -#: f.menus.cc:179 +#: f.menus.cc:191 msgid "Images by Map Location" msgstr "Imatges per ubicació en un mapa" -#: f.menus.cc:180 +#: f.menus.cc:192 msgid "Find images meeting select criteria" msgstr "Trobar imatges que compleixin un criteri de seleccio" -#: f.menus.cc:180 +#: f.menus.cc:192 msgid "Search Images" msgstr "Buscar imatges" -#: f.menus.cc:182 fotoxx.h:1002 +#: f.menus.cc:194 fotoxx.h:1023 msgid "Select" msgstr "Seleccionar" -#: f.menus.cc:182 +#: f.menus.cc:194 msgid "Select object or area for editing" msgstr "Seleccionar objecte o àrea per editar" -#: f.menus.cc:183 fotoxx.h:1004 +#: f.menus.cc:195 fotoxx.h:1025 msgid "Show" msgstr "Mostrar" -#: f.menus.cc:183 +#: f.menus.cc:195 msgid "Show (outline) existing area" msgstr "Mostrar un àrea existent (contorn)" -#: f.menus.cc:184 fotoxx.h:969 +#: f.menus.cc:196 fotoxx.h:990 msgid "Hide" msgstr "Ocultar" -#: f.menus.cc:184 +#: f.menus.cc:196 msgid "Hide existing area" msgstr "Ocultar àrea existent" -#: f.menus.cc:185 fotoxx.h:959 +#: f.menus.cc:197 fotoxx.h:979 msgid "Enable" msgstr "Activar" -#: f.menus.cc:185 +#: f.menus.cc:197 msgid "Enable area for editing" msgstr "Activar àrea per editar" -#: f.menus.cc:186 fotoxx.h:956 +#: f.menus.cc:198 fotoxx.h:976 msgid "Disable" msgstr "Desactivar" -#: f.menus.cc:186 +#: f.menus.cc:198 msgid "Disable area for editing" msgstr "Desactivat àrea per editar" -#: f.menus.cc:187 fotoxx.h:972 +#: f.menus.cc:199 fotoxx.h:993 msgid "Invert" msgstr "Invertir" -#: f.menus.cc:187 +#: f.menus.cc:199 msgid "Reverse existing area" msgstr "Invertir àrea existent" -#: f.menus.cc:188 +#: f.menus.cc:200 msgid "Erase existing area" msgstr "Esborrar àrea existent" -#: f.menus.cc:188 fotoxx.h:1013 +#: f.menus.cc:200 fotoxx.h:1035 msgid "Unselect" msgstr "Deseleccionar" -#: f.menus.cc:189 fotoxx.h:951 +#: f.menus.cc:201 fotoxx.h:971 msgid "Copy" msgstr "Copiar" -#: f.menus.cc:189 +#: f.menus.cc:201 msgid "Copy an area for later pasting" msgstr "Copiar una àrea per enganxar més tard" -#: f.menus.cc:190 fotoxx.h:984 +#: f.menus.cc:202 fotoxx.h:1005 msgid "Paste" msgstr "Enganxar" -#: f.menus.cc:190 +#: f.menus.cc:202 msgid "Paste an area into the current image" msgstr "Enganxar una àrea en la imatge actual" -#: f.menus.cc:191 +#: f.menus.cc:203 msgid "Open a file with a saved area" msgstr "Obrir un arxiu amb una àrea guardada" -#: f.menus.cc:192 f.menus.cc:281 fotoxx.h:999 +#: f.menus.cc:204 f.menus.cc:294 fotoxx.h:1020 msgid "Save" msgstr "Guardar" -#: f.menus.cc:192 +#: f.menus.cc:204 msgid "Save an area to a file" msgstr "Guardar una àrea en un arxiu" -#: f.menus.cc:194 +#: f.menus.cc:206 msgid "Rotate 90 degrees" -msgstr "" +msgstr "Rotar 90º" -#: f.menus.cc:194 f.menus.cc:447 -msgid "Turn" -msgstr "" +#: f.menus.cc:206 f.menus.cc:458 +msgid "Rotate 90º" +msgstr "Rotar 90º" -#: f.menus.cc:195 fotoxx.h:998 +#: f.menus.cc:207 fotoxx.h:1019 msgid "Rotate" msgstr "Rotar" -#: f.menus.cc:195 +#: f.menus.cc:207 msgid "Rotate by any angle" msgstr "Girar qualsevol angle" -#: f.menus.cc:196 +#: f.menus.cc:208 msgid "Cut off unwanted margins" msgstr "Retallar marges no desitjats" -#: f.menus.cc:197 +#: f.menus.cc:209 msgid "Auto-Trim" msgstr "Auto-retallar" -#: f.menus.cc:197 +#: f.menus.cc:209 msgid "Remove margins from warp, panorama, etc." msgstr "Eliminar marges d'una deformació, panorama, etc." -#: f.menus.cc:198 +#: f.menus.cc:210 msgid "Change pixel dimensions" msgstr "Canviar dimensions de píxels" -#: f.menus.cc:199 +#: f.menus.cc:211 msgid "Mirror image horizontally or vertically" msgstr "Enmirallar la imatge horizontalment o verticalment" -#: f.menus.cc:200 +#: f.menus.cc:212 msgid "Add Text" msgstr "Escriure un text" -#: f.menus.cc:200 +#: f.menus.cc:212 msgid "Write text on image" msgstr "Escriure un text en la imatge" -#: f.menus.cc:202 +#: f.menus.cc:214 msgid "Fast auto enhance that may work OK" msgstr "Auto-millora ràpida" -#: f.menus.cc:202 f.menus.cc:448 +#: f.menus.cc:214 f.menus.cc:459 msgid "Voodoo Enhance" msgstr "Millora automàtica" -#: f.menus.cc:203 +#: f.menus.cc:215 msgid "Adjust brightness, contrast, color" msgstr "Ajustar brillantor, contrast, color" -#: f.menus.cc:203 f.menus.cc:449 -msgid "Brightness/Color" -msgstr "Brillantor / Color / Saturació" +#: f.menus.cc:215 f.retouch.cc:211 +msgid "Brightness/Contrast/Color" +msgstr "Brillantor/Contrast/Color" -#: f.menus.cc:204 +#: f.menus.cc:216 msgid "Adjust contrast using a gamma curve" msgstr "Ajustar contrast utilitzan una corba gamma" -#: f.menus.cc:204 f.menus.cc:450 +#: f.menus.cc:216 f.menus.cc:461 msgid "Gamma Curves" msgstr "Corbes gamma" -#: f.menus.cc:205 +#: f.menus.cc:217 msgid "Add local contrast, enhance details" msgstr "Afegir contrast local, millorar detalls" -#: f.menus.cc:205 f.menus.cc:452 f.retouch.cc:1130 +#: f.menus.cc:217 f.menus.cc:463 f.retouch.cc:1130 msgid "Tone Mapping" msgstr "Mapa tonal" -#: f.menus.cc:206 f.menus.cc:451 +#: f.menus.cc:218 f.menus.cc:462 msgid "Flatten Brightness" msgstr "Aplanar histograma" -#: f.menus.cc:206 +#: f.menus.cc:218 msgid "Flatten brightness distribution" msgstr "Aplanar histograma, pujan els valors més pertits" -#: f.menus.cc:207 +#: f.menus.cc:219 msgid "Expand Brightness" msgstr "Expandir histograma" -#: f.menus.cc:207 +#: f.menus.cc:219 msgid "Expand brightness range" msgstr "Desplaçar valors centrals de l'histograma cap els extrems" -#: f.menus.cc:208 +#: f.menus.cc:220 msgid "Brightness Ramp" msgstr "Ajust de brillantor per zones (rampa)" -#: f.menus.cc:208 +#: f.menus.cc:220 msgid "Fix brightness uniformity across image" msgstr "Corretgir la uniformitat de la brillantor per zones de la imatge" -#: f.menus.cc:209 f.retouch.cc:2361 +#: f.menus.cc:221 f.retouch.cc:2358 msgid "Paint Edits" msgstr "Editar pintant" -#: f.menus.cc:209 -msgid "Paint edit function gradually with the mouse" +#: f.menus.cc:221 +msgid "Paint edit function gradually with mouse" msgstr "Funció d'edició pintant gradualment amb el ratolí" -#: f.menus.cc:210 f.retouch.cc:2592 +#: f.menus.cc:222 f.retouch.cc:2589 msgid "Leverage Edits" msgstr "Edició per nivells" -#: f.menus.cc:210 +#: f.menus.cc:222 msgid "Leverage edits by brightness or color" msgstr "Edició per nivells de brillantor o color" -#: f.menus.cc:212 +#: f.menus.cc:224 msgid "Make the image look sharper" msgstr "Fer que la imatge es vegi més enfocada" -#: f.menus.cc:212 f.repair.cc:60 +#: f.menus.cc:224 f.repair.cc:60 msgid "Sharpen" msgstr "Enfocar" -#: f.menus.cc:213 f.repair.cc:1543 +#: f.menus.cc:225 f.repair.cc:1543 msgid "Blur" msgstr "Desenfocar" -#: f.menus.cc:213 +#: f.menus.cc:225 msgid "Make the image look fuzzy" msgstr "Fer que la imatge es vegi desenfocada" -#: f.menus.cc:214 +#: f.menus.cc:226 msgid "Filter noise from low-light photos" msgstr "Filtrar soroll de fotografíes fetes amb poca llum" -#: f.menus.cc:214 +#: f.menus.cc:226 msgid "Reduce Noise" msgstr "Reduïr soroll" -#: f.menus.cc:215 +#: f.menus.cc:227 msgid "Remove unwanted objects" msgstr "Eliminar objectes no desitjats" -#: f.menus.cc:215 f.repair.cc:1536 +#: f.menus.cc:227 f.repair.cc:1536 msgid "Smart Erase" msgstr "Esborrat intel.ligent" -#: f.menus.cc:216 +#: f.menus.cc:228 msgid "Fix red-eyes from electronic flash" msgstr "Corretgir ulls vermells produïts per un flash electrònic" -#: f.menus.cc:216 f.menus.cc:454 +#: f.menus.cc:228 f.menus.cc:465 msgid "Red Eyes" msgstr "Ulls vermells" -#: f.menus.cc:217 +#: f.menus.cc:229 msgid "Paint image pixels using the mouse" msgstr "Pintar utilitzant el ratolí" -#: f.menus.cc:217 f.repair.cc:2357 +#: f.menus.cc:229 f.repair.cc:2357 msgid "Paint/Clone" msgstr "Pintar/Clonar" -#: f.menus.cc:218 f.repair.cc:2880 +#: f.menus.cc:230 f.repair.cc:2880 msgid "Remove Dust" msgstr "Retirar pols" -#: f.menus.cc:218 +#: f.menus.cc:230 msgid "Remove dust spots from scanned slides" msgstr "Eliminar pols de diapositives escanejades" -#: f.menus.cc:219 +#: f.menus.cc:231 msgid "Anti-alias" msgstr "Suavitzar" -#: f.menus.cc:219 +#: f.menus.cc:231 msgid "Smoothen edges with jaggies" msgstr "Suavitzar vores amb dents de serr" -#: f.menus.cc:220 +#: f.menus.cc:232 msgid "Fix Color Fringes" msgstr "Corretgir franges de color" -#: f.menus.cc:220 +#: f.menus.cc:232 msgid "Reduce Chromatic Abberation" msgstr "Reduïr l'aberració cromàtica" -#: f.menus.cc:221 +#: f.menus.cc:233 msgid "Erase known hot and dark pixels" msgstr "Esborrar píxels calents i foscos coneguts" -#: f.menus.cc:221 f.repair.cc:3890 +#: f.menus.cc:233 f.repair.cc:3894 msgid "Fix Stuck Pixels" msgstr "Corretgir píxels retinguts" -#: f.menus.cc:223 +#: f.menus.cc:235 msgid "Click on a white/gray area to fix color tint" msgstr "Clicar en una àrea blanca o gris per corretgir dominant de color" -#: f.menus.cc:223 f.menus.cc:453 +#: f.menus.cc:235 f.menus.cc:464 msgid "White Balance" msgstr "Balanç de blancs" -#: f.menus.cc:224 +#: f.menus.cc:236 msgid "Make BW/color, negative/positive, sepia" msgstr "Blanc i negre/color, negatiu/positiu, sèpia" -#: f.menus.cc:225 +#: f.menus.cc:237 msgid "Color Profile" msgstr "Perfil de color" -#: f.menus.cc:225 +#: f.menus.cc:237 msgid "Convert to another color profile" msgstr "Convertir a un perfil de color" -#: f.menus.cc:226 +#: f.menus.cc:238 msgid "Match Colors" msgstr "Concordància de colors" -#: f.menus.cc:226 +#: f.menus.cc:238 msgid "Match colors on one image with another" msgstr "Fer concordar colors d'una imatge amb els d'altra" -#: f.menus.cc:227 +#: f.menus.cc:239 msgid "Adjust color in selected image areas" msgstr "Ajustar color en una àrea seleccionada de una imatge" -#: f.menus.cc:228 +#: f.menus.cc:240 msgid "Adjust color using CMYK or RGB values" msgstr "Ajustar color utilitzant valors CMYK o RGB" -#: f.menus.cc:228 +#: f.menus.cc:240 msgid "CMYK Density" msgstr "Densitat CMYK" -#: f.menus.cc:230 +#: f.menus.cc:242 msgid "Remove curvature, esp. panoramas" msgstr "Eliminar corbatura, especialment d'un panorama" -#: f.menus.cc:231 +#: f.menus.cc:243 msgid "Straighten objects seen from an angle" msgstr "Redreçar objectes vistos des d'un angle" -#: f.menus.cc:232 +#: f.menus.cc:244 msgid "Flatten Book Page" msgstr "Aplanar una pàgina impresa" -#: f.menus.cc:232 +#: f.menus.cc:244 msgid "Flatten a photographed book page" msgstr "Aplanar una pàgina impresa fotografiada" -#: f.menus.cc:233 +#: f.menus.cc:245 msgid "Distort image areas using the mouse" msgstr "Distorsionar una àrea de una imatge utilitzant el ratolí" -#: f.menus.cc:234 f.menus.cc:235 f.menus.cc:236 +#: f.menus.cc:246 f.menus.cc:247 f.menus.cc:248 msgid "Distort the whole image using the mouse" msgstr "Distorsionar tota la imatge utilitzant el ratolí" -#: f.menus.cc:238 +#: f.menus.cc:250 msgid "Color Depth" msgstr "Profunditat de color" -#: f.menus.cc:238 +#: f.menus.cc:250 msgid "Reduce color depth (posterize)" msgstr "Reduïr profunditat de color (posteritzar)" -#: f.menus.cc:239 +#: f.menus.cc:251 msgid "Convert to pencil sketch" msgstr "Convertir en un esbós a llapis" -#: f.menus.cc:239 +#: f.menus.cc:251 msgid "Sketch" msgstr " Esbós" -#: f.menus.cc:240 +#: f.menus.cc:252 msgid "Convert to colored line drawing" msgstr "Convertir a un dibuix de línies acolorides" -#: f.menus.cc:240 +#: f.menus.cc:252 msgid "Drawing" msgstr "Dibuixar" -#: f.menus.cc:241 +#: f.menus.cc:253 msgid "Graduated Blur depending on contrast" msgstr "Desenfocament graduat depenent del contrast" -#: f.menus.cc:242 +#: f.menus.cc:254 msgid "Create an embossed or 3D appearance" msgstr "Crear un relleu o aparença 3D" -#: f.menus.cc:242 +#: f.menus.cc:254 msgid "Embossing" msgstr "Relleu" -#: f.menus.cc:243 +#: f.menus.cc:255 msgid "Convert to square tiles" msgstr "Convertir a rajoles quadrades" -#: f.menus.cc:243 +#: f.menus.cc:255 msgid "Tiles" msgstr "Mosaïc" -#: f.menus.cc:244 +#: f.menus.cc:256 msgid "Convert to dots (Roy Lichtenstein effect)" msgstr "Convertir a punts (efecte Roy Lichtenstein" -#: f.menus.cc:244 +#: f.menus.cc:256 msgid "Dots" msgstr "Punts" -#: f.menus.cc:245 +#: f.menus.cc:257 msgid "Convert into a simulated painting" msgstr "Convertir a una pintura simulada" -#: f.menus.cc:245 +#: f.menus.cc:257 msgid "Painting" msgstr "Pintura" -#: f.menus.cc:246 +#: f.menus.cc:258 msgid "Shift/convert colors into other colors" msgstr "Canviar/convertir uns colors en altres" -#: f.menus.cc:247 +#: f.menus.cc:259 msgid "Change brightness or color radially" msgstr "Canviar brillantor o color radialment" -#: f.menus.cc:249 +#: f.menus.cc:261 msgid "Combine bright/dark images for better detail" msgstr "Combinar imatges fosques/il.luminadas per millorar detalls" -#: f.menus.cc:249 +#: f.menus.cc:261 msgid "High Dynamic Range" msgstr "HDR alt rang dinàmic" -#: f.menus.cc:250 +#: f.menus.cc:262 msgid "Combine near/far focus images for deeper focus" msgstr "" "Combinar imatges enfocades aprop/lluny per obtenir major profunditat de camp" -#: f.menus.cc:250 +#: f.menus.cc:262 msgid "High Depth of Field" msgstr "HDF alta profunditat de camp" -#: f.menus.cc:251 +#: f.menus.cc:263 msgid "Combine images to erase passing people, etc." msgstr "Combinar imatges per esborrar vianants, cotxes, etc" -#: f.menus.cc:251 +#: f.menus.cc:263 msgid "Stack / Paint" msgstr "Apilar / Pintar" -#: f.menus.cc:252 +#: f.menus.cc:264 msgid "Combine noisy images into a low-noise image" msgstr "Combinar imatges amb soroll en imatges amb poc soroll" -#: f.menus.cc:252 +#: f.menus.cc:264 msgid "Stack / Noise" msgstr "Apilar / Soroll" -#: f.menus.cc:253 +#: f.menus.cc:265 msgid "Combine images into a panorama" msgstr "Combinar imatges en un panorama" -#: f.menus.cc:253 +#: f.menus.cc:265 msgid "Panorama" msgstr "Panorama" -#: f.menus.cc:254 +#: f.menus.cc:266 msgid "Combine images into a vertical panorama" msgstr "Combinar imatges en un panorama vertical" -#: f.menus.cc:254 +#: f.menus.cc:266 msgid "Vertical Panorama" msgstr "Panorama vertical" -#: f.menus.cc:256 +#: f.menus.cc:267 +msgid "Arrange multiple images on a background image" +msgstr "Organitzar múltiples imatges sobre una imatge de fons" + +#: f.menus.cc:267 +msgid "Mashup" +msgstr "" + +#: f.menus.cc:269 msgid "Add another image editor to the menu" msgstr "Afegir un altre editor d'imatges al menú" -#: f.menus.cc:256 +#: f.menus.cc:269 msgid "Edit Plugins" msgstr "Editar complements (Plugins)" -#: f.menus.cc:258 fotoxx-13.08.cc:3597 +#: f.menus.cc:271 fotoxx-13.10.cc:3630 msgid "Quick Start" msgstr "Inici ràpid" -#: f.menus.cc:258 +#: f.menus.cc:271 msgid "Quick Start mini-guide" msgstr "Minni guia d'inici ràpid" -#: f.menus.cc:259 +#: f.menus.cc:272 msgid "Read the user guide" msgstr "Llegir la guia d'usuari" -#: f.menus.cc:259 fotoxx-13.08.cc:3600 +#: f.menus.cc:272 fotoxx-13.10.cc:3633 msgid "User Guide" msgstr "Guia d'usuari" -#: f.menus.cc:260 +#: f.menus.cc:273 msgid "Recent user guide changes" msgstr "Canvis recents a la guia d'usuari" -#: f.menus.cc:260 fotoxx-13.08.cc:3603 +#: f.menus.cc:273 fotoxx-13.10.cc:3636 msgid "User Guide Changes" msgstr "Canvis a la guia d'usuari" -#: f.menus.cc:261 +#: f.menus.cc:274 msgid "Fotoxx updates notification" msgstr "Notificació d'actualitzacions de Fotoxx" -#: f.menus.cc:261 fotoxx-13.08.cc:3606 +#: f.menus.cc:274 fotoxx-13.10.cc:3639 msgid "Program Updates" msgstr "Actualitzacions del programa" -#: f.menus.cc:262 fotoxx-13.08.cc:3612 +#: f.menus.cc:275 fotoxx-13.10.cc:3645 msgid "Edit Functions Summary" msgstr "Resum de les funcions d'edició" -#: f.menus.cc:262 +#: f.menus.cc:275 msgid "Summary of image edit functions" msgstr "Resum de les funcions d'edició d'imatge" -#: f.menus.cc:263 fotoxx-13.08.cc:3609 +#: f.menus.cc:276 fotoxx-13.10.cc:3642 msgid "README" msgstr "LLEGEIX-ME" -#: f.menus.cc:263 +#: f.menus.cc:276 msgid "Technical installation notes" msgstr "Notes tècniques d'instal.lació " -#: f.menus.cc:264 fotoxx-13.08.cc:3615 +#: f.menus.cc:277 fotoxx-13.10.cc:3648 msgid "Change Log" msgstr "Registre de canvis" -#: f.menus.cc:264 +#: f.menus.cc:277 msgid "List updates by Fotoxx version" msgstr "Llistar actualitzacions per versió de Fotoxx" -#: f.menus.cc:265 fotoxx-13.08.cc:3618 +#: f.menus.cc:278 fotoxx-13.10.cc:3651 msgid "Log File" msgstr "Arxiu de registre" -#: f.menus.cc:265 +#: f.menus.cc:278 msgid "View the log file and error messages" msgstr "Veure l'arxiu de registre i missatges d'error" -#: f.menus.cc:266 +#: f.menus.cc:279 msgid "How to do Fotoxx translations" msgstr "Com fer traduccións de Fotoxx" -#: f.menus.cc:266 fotoxx-13.08.cc:3621 +#: f.menus.cc:279 fotoxx-13.10.cc:3654 msgid "Translations" msgstr "Traduccions" -#: f.menus.cc:267 fotoxx-13.08.cc:3624 +#: f.menus.cc:280 fotoxx-13.10.cc:3657 msgid "Home Page" msgstr "Pàgina web de Fotoxx" -#: f.menus.cc:267 +#: f.menus.cc:280 msgid "Show the Fotoxx web page" msgstr "Mostrar la pàgina web de Fotoxx" -#: f.menus.cc:268 fotoxx-13.08.cc:3627 +#: f.menus.cc:281 fotoxx-13.10.cc:3660 msgid "About" msgstr "Sobre Fotoxx " -#: f.menus.cc:268 +#: f.menus.cc:281 msgid "Version, license, contact, credits" msgstr "Versió, llicència, contacte, crèdits" -#: f.menus.cc:271 +#: f.menus.cc:284 msgid "Favs" msgstr "Favorits" -#: f.menus.cc:273 +#: f.menus.cc:286 msgid "Color of area borders etc." msgstr "Color de contorns d'àrea etc. " -#: f.menus.cc:274 fotoxx.h:1011 +#: f.menus.cc:287 fotoxx.h:1033 msgid "Undo" msgstr "Desfer" -#: f.menus.cc:274 +#: f.menus.cc:287 msgid "Undo one edit" msgstr "Desfer una edició" -#: f.menus.cc:275 fotoxx.h:993 +#: f.menus.cc:288 fotoxx.h:1014 msgid "Redo" msgstr "Refer" -#: f.menus.cc:275 +#: f.menus.cc:288 msgid "Redo one edit" msgstr "Refer una edició" -#: f.menus.cc:277 f.menus.cc:389 -msgid "Gallery from Tab F" -msgstr "Galería des de la pestanya F" +#: f.menus.cc:290 f.menus.cc:400 +msgid "Set gallery from current image file" +msgstr "Establir galeria des de l'imatge actual" -#: f.menus.cc:279 +#: f.menus.cc:290 f.menus.cc:400 +msgid "Sync.G" +msgstr "" + +#: f.menus.cc:292 msgid "Open the previous file" msgstr "Obrir l'arxiu anterior" -#: f.menus.cc:279 fotoxx.h:988 +#: f.menus.cc:292 fotoxx.h:1009 msgid "Prev" msgstr "Anterior" -#: f.menus.cc:280 fotoxx.h:979 +#: f.menus.cc:293 fotoxx.h:1000 msgid "Next" msgstr "Següent" -#: f.menus.cc:280 +#: f.menus.cc:293 msgid "Open the next file" msgstr "Obrir el pròxim arxiu" -#: f.menus.cc:281 -msgid "Save to the same file" -msgstr "Guardar en el mateix arxiu" - -#: f.menus.cc:282 -msgid "Save to a new version" -msgstr "Guardar en una nova versió" - -#: f.menus.cc:282 -msgid "Save+V" -msgstr "Guardar + Vers." - -#: f.menus.cc:283 -msgid "Save to a new file" -msgstr "Guardar en un nou arxiu" - -#: f.menus.cc:283 -msgid "Save+F" -msgstr "Guardar + Arx." - -#: f.menus.cc:284 f.menus.cc:437 fotoxx.h:1008 +#: f.menus.cc:295 f.menus.cc:448 fotoxx.h:1030 msgid "Trash" msgstr "Eliminar" -#: f.menus.cc:303 f.menus.cc:332 +#: f.menus.cc:314 f.menus.cc:343 msgid "Run as Fotoxx edit function" msgstr "Obrir com una funció d'edició de Fotoxx" -#: f.menus.cc:391 +#: f.menus.cc:382 +msgid "Top" +msgstr "" + +#: f.menus.cc:401 +msgid "open another directory" +msgstr "obrir un altre directori" + +#: f.menus.cc:402 msgid "go to bookmarked image" msgstr "anar a imatge marcada" -#: f.menus.cc:392 +#: f.menus.cc:403 msgid "increase thumbnail size" msgstr "Augmentar mida de miniatura" -#: f.menus.cc:393 +#: f.menus.cc:404 msgid "reduce thumbnail size" msgstr "reduir mida de miniatura" -#: f.menus.cc:394 -msgid "jump to first page" -msgstr "anar a la pròxima pàgina" - -#: f.menus.cc:395 -msgid "jump to last page" -msgstr "anar a la ùltima pàgina" +#: f.menus.cc:405 +msgid "change sort order" +msgstr "canviar criteri d'ordenació" + +#: f.menus.cc:406 +msgid "jump to beginning (top)" +msgstr "anar al principi (a dalt)" + +#: f.menus.cc:407 +msgid "jump to end (bottom)" +msgstr "anar al final (a baix)" -#: f.menus.cc:396 +#: f.menus.cc:408 msgid "previous page" msgstr "pàgina anterior" -#: f.menus.cc:397 +#: f.menus.cc:409 msgid "next page" msgstr "pàgina següent" -#: f.menus.cc:398 +#: f.menus.cc:410 msgid "previous row" msgstr "fila anterior" -#: f.menus.cc:399 +#: f.menus.cc:411 msgid "next row" msgstr "fila següent" -#: f.menus.cc:400 -msgid "change sequence" -msgstr "canviar sequència" - -#: f.menus.cc:434 fotoxx.h:996 +#: f.menus.cc:445 fotoxx.h:1017 msgid "Rename" msgstr "Canviar el nom" -#: f.menus.cc:435 +#: f.menus.cc:446 msgid "Copy to Location" msgstr "Copiar a la ubicació" -#: f.menus.cc:436 +#: f.menus.cc:447 msgid "Move to Location" msgstr "Moure a la ubicació" -#: f.menus.cc:438 fotoxx.h:955 +#: f.menus.cc:449 fotoxx.h:975 msgid "Delete" msgstr "Esborrar" -#: f.menus.cc:439 +#: f.menus.cc:450 msgid "Copy to Clipboard" msgstr "Copiar al portapapers" -#: f.menus.cc:440 +#: f.menus.cc:451 msgid "Remove from Collection" msgstr "Elkiminar de la col.lecció" -#: f.menus.cc:441 +#: f.menus.cc:452 msgid "Cut to Image Cache" msgstr " Tallar a la cache d'imatge" -#: f.menus.cc:442 +#: f.menus.cc:453 msgid "Copy to Image Cache" msgstr "Copiar a la cache d'imatge " -#: f.menus.cc:443 +#: f.menus.cc:454 msgid "Paste Image Cache Here (clear)" msgstr "Enganxar aquí cache d'imatge (esborrar) " -#: f.menus.cc:444 +#: f.menus.cc:455 msgid "Paste Image Cache Here (keep)" msgstr "Enganxar aquí cache d'imatge (guardar) " -#: f.menus.cc:456 +#: f.menus.cc:460 +msgid "Brightness/Color" +msgstr "Brillantor / Color / Saturació" + +#: f.menus.cc:467 msgid "Select Area" msgstr "Select Area" -#: f.meta.cc:87 -msgid "Edit Caption and Comments" -msgstr "Editar títol i comentaris" +#: f.meta.cc:72 +msgid "" +"Metadata index is missing.\n" +"Use Tools > Synchronize Files." +msgstr "" +"Necessari index de matadades.\n" +"Utilitzi Eines > Sincronitzar arxius." + +#: f.meta.cc:106 +#, c-format +msgid "Rating: %c (stars)" +msgstr "Classificació : %c (estrelles)" + +#: f.meta.cc:142 +msgid "Size:" +msgstr "Tamany" + +#: f.meta.cc:148 +msgid "Image Width:" +msgstr "Ample de la imatge" + +#: f.meta.cc:151 +msgid "Height:" +msgstr "Alçada" + +#: f.meta.cc:154 +msgid "Depth:" +msgstr "profunditat" + +#: f.meta.cc:159 +msgid "Image Date" +msgstr "Data de la imatge" + +#: f.meta.cc:162 +msgid "Time" +msgstr "Hora" + +#: f.meta.cc:164 +msgid "get prev" +msgstr "anterior" + +#: f.meta.cc:169 +msgid "Choose:" +msgstr "Escollir :" -#: f.meta.cc:98 +#: f.meta.cc:181 msgid "Caption" -msgstr "Títul" +msgstr "Títol" -#: f.meta.cc:102 +#: f.meta.cc:187 msgid "Comments" msgstr "Comentaris" -#: f.meta.cc:173 -msgid "image date (yyyymmdd)" -msgstr "data de la imatge (yyyymmdd)" - -#: f.meta.cc:175 -msgid "use last" -msgstr "utilitzar l'últim" - -#: f.meta.cc:178 -msgid "image stars" -msgstr "estrelles de la imatge" - -#: f.meta.cc:196 -msgid "current tags" -msgstr "etiquetes actuals" +#: f.meta.cc:193 +msgid "Image Tags" +msgstr "Etiquetes d'imatge" -#: f.meta.cc:201 -msgid "recent tags" +#: f.meta.cc:199 +msgid "Recent Tags" msgstr "etiquetes recents" -#: f.meta.cc:206 f.meta.cc:387 f.meta.cc:1404 f.meta.cc:3932 -msgid "defined tags" +#: f.meta.cc:205 f.meta.cc:556 f.meta.cc:1573 f.meta.cc:4111 +msgid "Defined Tags" msgstr "etiquetes definides" -#: f.meta.cc:373 fotoxx.h:976 +#: f.meta.cc:455 +msgid "date format is YYYY-MM-DD" +msgstr "format de data es AAAA-MM-DD" + +#: f.meta.cc:459 +msgid "date is invalid" +msgstr "data no vàlida" + +#: f.meta.cc:492 +msgid "time format is HH:MM [:SS]" +msgstr "fomat d'hora es HH:MM [:SS]" + +#: f.meta.cc:496 +msgid "time is invalid" +msgstr "hora no vàlida" + +#: f.meta.cc:542 fotoxx.h:997 msgid "Manage Tags" msgstr "Gestionar etiquetes" -#: f.meta.cc:373 +#: f.meta.cc:542 msgid "orphan tags" msgstr "etiquetes òrfenes" -#: f.meta.cc:377 +#: f.meta.cc:546 msgid "category" msgstr "categoria" -#: f.meta.cc:380 +#: f.meta.cc:549 msgid "tag" msgstr "etiqueta" -#: f.meta.cc:383 +#: f.meta.cc:552 msgid "create" msgstr "crear" -#: f.meta.cc:384 +#: f.meta.cc:553 msgid "delete" msgstr "esborrar" -#: f.meta.cc:1383 -msgid "Batch Add/Remove Tags" -msgstr "Afegir/eliminar etiquetes en lot" +#: f.meta.cc:1557 f.meta.cc:3116 f.tools.cc:2800 f.tools.cc:3885 +#: f.tools.cc:4101 f.tools.cc:4463 +msgid "0 files selected" +msgstr "0 arxius seleccionats" -#: f.meta.cc:1394 +#: f.meta.cc:1563 msgid "tags to add" msgstr "Etiquetes per afegir" -#: f.meta.cc:1395 +#: f.meta.cc:1564 msgid "tags to remove" msgstr "etiquetes per eliminar" -#: f.meta.cc:1476 +#: f.meta.cc:1645 #, c-format msgid "" "%s \n" @@ -2364,29 +2563,37 @@ "%s \n" " massa etiquetes" -#: f.meta.cc:1590 +#: f.meta.cc:1759 msgid "specify files and tags" msgstr "especificar arxius i etiquetes" -#: f.meta.cc:1617 f.meta.cc:3044 f.tools.cc:2819 f.tools.cc:3011 -#: f.tools.cc:3051 f.tools.cc:4001 f.tools.cc:4311 f.tools.cc:4664 +#: f.meta.cc:1786 f.meta.cc:3223 f.tools.cc:2838 f.tools.cc:3030 +#: f.tools.cc:3070 f.tools.cc:4020 f.tools.cc:4330 f.tools.cc:4683 #, c-format msgid "%d files selected" msgstr "%d arxius seleccionats" -#: f.meta.cc:1664 +#: f.meta.cc:1833 msgid "View Metadata" msgstr "Veure metadades" -#: f.meta.cc:1822 fotoxx.h:937 +#: f.meta.cc:1901 +msgid "key name" +msgstr "" + +#: f.meta.cc:1903 +msgid "key value" +msgstr "" + +#: f.meta.cc:1991 fotoxx.h:956 msgid "All" msgstr "Tot" -#: f.meta.cc:1823 +#: f.meta.cc:1992 msgid "One Key:" msgstr "Una clau:" -#: f.meta.cc:1954 +#: f.meta.cc:2123 #, c-format msgid "" "Download geotags data (8 megabytes). \n" @@ -2397,36 +2604,52 @@ "Desar a %s \n" "Procedir?" -#: f.meta.cc:1990 +#: f.meta.cc:2159 msgid "download failed" msgstr "la descàrrega ha fallat" -#: f.meta.cc:2025 +#: f.meta.cc:2192 fotoxx-13.10.cc:855 +msgid "Location from World Map" +msgstr "Ubicació des d'un mapa mundial" + +#: f.meta.cc:2194 +msgid "Loading world map" +msgstr "" + +#: f.meta.cc:2201 msgid "please download geolocations data" msgstr "si us plau, descarregar dades de geo-ubicacions" -#: f.meta.cc:2138 +#: f.meta.cc:2209 +msgid "Loading geolocations" +msgstr "" + +#: f.meta.cc:2327 msgid "geotags file must be downloaded" msgstr "s'ha de descarregar arxiu de geoetiquetes" -#: f.meta.cc:2432 f.meta.cc:2889 f.meta.cc:3152 +#: f.meta.cc:2611 f.meta.cc:3068 f.meta.cc:3331 #, c-format msgid "bad latitude/longitude: %s %s" msgstr "latitud/longitud errònia: %s %s" -#: f.meta.cc:2731 f.meta.cc:2939 f.meta.cc:4432 +#: f.meta.cc:2893 +msgid "Geocoding web service courtesy of" +msgstr "" + +#: f.meta.cc:2910 f.meta.cc:3118 f.meta.cc:4611 msgid "city" msgstr "ciutat" -#: f.meta.cc:2734 f.meta.cc:2942 f.meta.cc:4435 +#: f.meta.cc:2913 f.meta.cc:3121 f.meta.cc:4614 msgid "country" msgstr "pais" -#: f.meta.cc:2802 f.meta.cc:3065 +#: f.meta.cc:2981 f.meta.cc:3244 msgid "city not found" msgstr "ciutat no trobada" -#: f.meta.cc:3130 +#: f.meta.cc:3309 msgid "" "data is incomplete \n" " proceed?" @@ -2434,123 +2657,127 @@ "les dades són incompletas \n" " procedir?" -#: f.meta.cc:3156 +#: f.meta.cc:3335 msgid "no files selected" msgstr "no hi han arxius seleccionats" -#: f.meta.cc:3188 +#: f.meta.cc:3367 msgid "choose city" msgstr "escollir ciutat" -#: f.meta.cc:3272 +#: f.meta.cc:3451 msgid "not found" msgstr "no trobada" -#: f.meta.cc:3273 +#: f.meta.cc:3452 msgid "city and country required" msgstr "és necessari ciutat i pais" -#: f.meta.cc:3365 +#: f.meta.cc:3544 msgid "Report Geotag Groups" msgstr "Informe de grups de geoetiquetes" -#: f.meta.cc:3366 +#: f.meta.cc:3545 msgid "Group by country" msgstr "Agrupar per pais" -#: f.meta.cc:3367 +#: f.meta.cc:3546 msgid "Group by country/city" msgstr "Agrupar per pais/ciutat" -#: f.meta.cc:3368 +#: f.meta.cc:3547 msgid "Group by country/city/date" msgstr "Agrupar pais/ciutat/data" -#: f.meta.cc:3371 +#: f.meta.cc:3550 msgid "Combine within" msgstr "Conbinar dins de" -#: f.meta.cc:3373 +#: f.meta.cc:3552 msgid "days" msgstr "dies" -#: f.meta.cc:3715 +#: f.meta.cc:3667 +msgid "geotag groups" +msgstr "" + +#: f.meta.cc:3894 msgid "search range (km)" msgstr "buscar rang (km)" -#: f.meta.cc:3786 +#: f.meta.cc:3965 msgid "No matching images found" msgstr "No s'han trobat imatges coincidents" -#: f.meta.cc:3872 +#: f.meta.cc:4051 msgid "Search Image Metadata" msgstr "Buscar metadades de la imatge" -#: f.meta.cc:3876 +#: f.meta.cc:4055 msgid "images to search:" msgstr "imatges a buscar:" -#: f.meta.cc:3877 +#: f.meta.cc:4056 msgid "all" msgstr "tot" -#: f.meta.cc:3878 +#: f.meta.cc:4057 msgid "current set only" msgstr "omés selecció actual" -#: f.meta.cc:3881 +#: f.meta.cc:4060 msgid "matching images:" msgstr "imatges coïncidents" -#: f.meta.cc:3882 +#: f.meta.cc:4061 msgid "new set" msgstr "nova selecció" -#: f.meta.cc:3883 +#: f.meta.cc:4062 msgid "add to set" msgstr "afegir a la selecció" -#: f.meta.cc:3884 +#: f.meta.cc:4063 msgid "remove" msgstr "eliminar" -#: f.meta.cc:3890 +#: f.meta.cc:4069 msgid "date range" msgstr "rand de dates" -#: f.meta.cc:3891 +#: f.meta.cc:4070 msgid "stars range" msgstr "rang d'estrelles" -#: f.meta.cc:3892 +#: f.meta.cc:4071 msgid "search tags" msgstr "buscar etiquetes" -#: f.meta.cc:3893 +#: f.meta.cc:4072 msgid "search text" msgstr "buscar text" -#: f.meta.cc:3894 +#: f.meta.cc:4073 msgid "search files" msgstr "buscar arxius" -#: f.meta.cc:3899 +#: f.meta.cc:4078 msgid "(yyyymmdd)" msgstr "(aaaammdd)" -#: f.meta.cc:3905 +#: f.meta.cc:4084 msgid "all/any" msgstr "tot/qualsevol" -#: f.meta.cc:3924 +#: f.meta.cc:4103 msgid "other criteria" msgstr "altres criteris" -#: f.meta.cc:3928 +#: f.meta.cc:4107 msgid "other" msgstr "altre" -#: f.meta.cc:4059 +#: f.meta.cc:4238 msgid "" "to remove images from current set, \n" "search current set" @@ -2558,7 +2785,7 @@ "per eliminar imatges de laa selecció actual, \n" "buscar en la selecció actual" -#: f.meta.cc:4066 +#: f.meta.cc:4245 msgid "" "to add images to current set, \n" "search all images" @@ -2566,28 +2793,28 @@ "per afegir imatges a la selecció actual, \n" "buscar en totes les imatges" -#: f.meta.cc:4293 +#: f.meta.cc:4472 #, c-format msgid "images added: %d removed: %d new count: %d" msgstr "imatges afegides: %d eliminades: %d nova quantitat: %d" -#: f.meta.cc:4296 +#: f.meta.cc:4475 msgid "no changes made" msgstr "no s'han fet canvis" -#: f.meta.cc:4429 +#: f.meta.cc:4608 msgid "Add Geotags Search Criteria" msgstr "Afegir criteris de cerca de geoetiquetes" -#: f.meta.cc:4448 +#: f.meta.cc:4627 msgid "range (km)" msgstr "rang (km)" -#: f.meta.cc:4539 +#: f.meta.cc:4718 msgid "error in latitude/longitude/range" msgstr "error em latitud/longitud/rang" -#: f.meta.cc:4604 +#: f.meta.cc:4783 msgid "" "These items are always reported: \n" "date, stars, tags, caption, comment" @@ -2595,15 +2822,15 @@ "Sempre s'informa d'aquests detalls: \n" "data, estrelles, etiquetes, llegenda, comentari" -#: f.meta.cc:4628 +#: f.meta.cc:4807 msgid "Additional Items for Report" msgstr "Detalls addicionals per a l'informe" -#: f.meta.cc:4634 +#: f.meta.cc:4813 msgid "Keyword" msgstr "Paraula clau" -#: f.meta.cc:4641 +#: f.meta.cc:4820 msgid "Match Criteria" msgstr "Criteri de coincidència" @@ -2651,7 +2878,7 @@ "1. Arrossegar el ratolí per seleccionar. \n" "2. Esborrar. 3. Repetir. " -#: f.repair.cc:1541 fotoxx.h:990 +#: f.repair.cc:1541 fotoxx.h:1011 msgid "Radius" msgstr "Radi" @@ -2748,38 +2975,30 @@ msgid "Chromatic Abberation" msgstr "Aberració cromàtica" -#: f.repair.cc:3896 +#: f.repair.cc:3900 msgid "pixel group" msgstr "grup de píxels" -#: f.repair.cc:3897 +#: f.repair.cc:3901 msgid "circle color" msgstr "color del cercle" -#: f.repair.cc:4006 +#: f.repair.cc:3913 f.repair.cc:3957 +msgid "stuck pixels:" +msgstr "píxels defectuosos" + +#: f.repair.cc:4023 msgid "Load Stuck Pixels" -msgstr "Carregar píxels retinguts" +msgstr "Carregar píxels defectuosos" -#: f.repair.cc:4030 f.repair.cc:4126 +#: f.repair.cc:4047 f.repair.cc:4113 msgid "Stuck Pixels file" -msgstr "Arxiu de píxels retinguts" +msgstr "Arxiu de píxels defectuosos" -#: f.repair.cc:4070 +#: f.repair.cc:4087 msgid "file format error" msgstr "error de format d'arxiu" -#: f.repair.cc:4098 -msgid "there are zero stuck pixels" -msgstr "hi han zero píxels retinguts" - -#: f.repair.cc:4102 -msgid "Save Stuck Pixels" -msgstr "Guardar píxels retingunts" - -#: f.retouch.cc:211 -msgid "Adjust Brightness and Color" -msgstr "Ajustar brillantor i color" - #: f.retouch.cc:267 msgid "small-steps" msgstr "poc a poc" @@ -2832,15 +3051,15 @@ msgid "bright pixels" msgstr "píxels brillants" -#: f.retouch.cc:1983 +#: f.retouch.cc:1980 msgid "Ramp brightness across image" msgstr "Rampa de brillantor a través de la imatge" -#: f.retouch.cc:2363 f.retouch.cc:2600 f.tools.cc:5242 +#: f.retouch.cc:2360 f.retouch.cc:2597 f.tools.cc:5261 msgid "Edit function must be active" msgstr "La funció d'editar pintant ha d'estar activada" -#: f.retouch.cc:2371 fotoxx-13.08.cc:2867 +#: f.retouch.cc:2368 fotoxx-13.10.cc:2905 msgid "" "Select area cannot be kept.\n" "Continue?" @@ -2848,23 +3067,23 @@ "Àrea seleccionada no pot ser guardada.\n" "Continuar?" -#: f.retouch.cc:2400 +#: f.retouch.cc:2397 msgid "power: center" msgstr "força: centre" -#: f.retouch.cc:2405 +#: f.retouch.cc:2402 msgid "reset area" msgstr "reiniciar àrea" -#: f.retouch.cc:2593 +#: f.retouch.cc:2590 msgid "Edit Function Amplifier" msgstr "Amplificador de la funció d'edició" -#: f.retouch.cc:2629 +#: f.retouch.cc:2626 msgid "minimum" msgstr "mínim" -#: f.retouch.cc:2631 +#: f.retouch.cc:2628 msgid "maximum" msgstr "màxim" @@ -2981,197 +3200,209 @@ msgid "create missing and update stale thumbnails" msgstr "crear miniatures perdudes i actualitzar les fetes malbé" -#: f.tools.cc:542 +#: f.tools.cc:548 #, c-format msgid "%d thumbnails created, %d errors \n" msgstr "%d miniatures creades, %d errors \n" -#: f.tools.cc:553 +#: f.tools.cc:559 msgid "no search index file is in use" msgstr "cap arxiu índex de cerca en ús" -#: f.tools.cc:554 f.tools.cc:561 f.tools.cc:897 +#: f.tools.cc:560 f.tools.cc:567 f.tools.cc:910 msgid "COMPLETED" msgstr "COMPLETAT" -#: f.tools.cc:566 +#: f.tools.cc:572 msgid "rebuild search index" msgstr "reconstruïr índes de cerca" -#: f.tools.cc:585 +#: f.tools.cc:591 #, c-format msgid "%d current index records found \n" msgstr "%d registres de l'índex actuals trobats \n" -#: f.tools.cc:589 +#: f.tools.cc:595 msgid "find all image files and build index records" msgstr "trobar totes les imatges i construïr registres d'índex" -#: f.tools.cc:615 +#: f.tools.cc:621 msgid "too many image files" msgstr "massa arxius d'imatge" -#: f.tools.cc:642 +#: f.tools.cc:648 #, c-format msgid "found %d image files \n" msgstr "trobats %d arxius d'imatge \n" -#: f.tools.cc:647 +#: f.tools.cc:653 msgid "merging old and new index records" msgstr "barrejant els registres d'índex antic i nou" -#: f.tools.cc:697 +#: f.tools.cc:703 #, c-format msgid "files found in current index recs: %d \n" msgstr "arxius trobats en els registres de l'actual índex: %d \n" -#: f.tools.cc:715 +#: f.tools.cc:721 msgid "updating index records" msgstr "actualitzan registres d'índex" -#: f.tools.cc:889 +#: f.tools.cc:902 #, c-format msgid "%d image files updated \n" msgstr "%d arxius d'imatges actualitzats \n" -#: f.tools.cc:909 +#: f.tools.cc:922 msgid "KILLED" msgstr "ABORTAT" -#: f.tools.cc:1047 +#: f.tools.cc:1060 msgid "Settings" msgstr "Ajustos" -#: f.tools.cc:1050 +#: f.tools.cc:1063 msgid "Startup Display" msgstr "Pantalla d'inici" -#: f.tools.cc:1072 +#: f.tools.cc:1085 msgid "Recent Files Gallery" msgstr "Galeria d'arxius recents" -#: f.tools.cc:1073 +#: f.tools.cc:1086 msgid "Newest Files Gallery" msgstr "Galeria d'arxius nous" -#: f.tools.cc:1074 +#: f.tools.cc:1087 msgid "Previous Image Viewed" msgstr "Imatge vista anterior" -#: f.tools.cc:1075 +#: f.tools.cc:1088 msgid "Blank Window" msgstr "Finestra buida" -#: f.tools.cc:1076 +#: f.tools.cc:1089 msgid "Directory Gallery" msgstr "Galeria de directoris" -#: f.tools.cc:1077 +#: f.tools.cc:1090 msgid "Image File" msgstr "Arxiu d'imatges" -#: f.tools.cc:1093 +#: f.tools.cc:1106 msgid "Menu Style" msgstr "Estil de menú" -#: f.tools.cc:1095 +#: f.tools.cc:1108 msgid "Classic" msgstr "Clàssic" -#: f.tools.cc:1096 +#: f.tools.cc:1109 msgid "Vertical" msgstr "Vertical" -#: f.tools.cc:1098 +#: f.tools.cc:1111 msgid "Toolbar Style" msgstr "Estil de la barra d'eines" -#: f.tools.cc:1101 +#: f.tools.cc:1114 msgid "Icons" msgstr "Iconas" -#: f.tools.cc:1102 +#: f.tools.cc:1115 msgid "Both" msgstr "Els dos" -#: f.tools.cc:1104 +#: f.tools.cc:1117 msgid "Image Pan" msgstr "Moviment de la imatge" -#: f.tools.cc:1106 +#: f.tools.cc:1119 msgid "Drag" msgstr "Arrossegar" -#: f.tools.cc:1107 +#: f.tools.cc:1120 msgid "Scroll" msgstr "Desplaçar" -#: f.tools.cc:1108 +#: f.tools.cc:1121 msgid "Magnified" msgstr "Ampliada" -#: f.tools.cc:1111 +#: f.tools.cc:1124 msgid "Warn Overwrite Original" msgstr "Avisar de sobreescriptura de l'original" -#: f.tools.cc:1114 +#: f.tools.cc:1127 msgid "Default JPEG quality" msgstr "qualitat JPEG per defecte" -#: f.tools.cc:1261 +#: f.tools.cc:1131 +msgid "Zooms for 200%" +msgstr "" + +#: f.tools.cc:1142 +msgid "RAW command" +msgstr "" + +#: f.tools.cc:1145 +msgid "RAW file types" +msgstr "" + +#: f.tools.cc:1274 msgid "startup directory is invalid" msgstr "directori d'inici no és vàlid" -#: f.tools.cc:1269 +#: f.tools.cc:1282 msgid "startup file is invalid" msgstr "arxiu d'inici no és vàlid" -#: f.tools.cc:1368 +#: f.tools.cc:1381 msgid "Select startup directory" msgstr "Seleccionar directori d'inici" -#: f.tools.cc:1376 +#: f.tools.cc:1389 msgid "Select startup image file" msgstr "Seleccionarimatge d'inici" -#: f.tools.cc:1414 +#: f.tools.cc:1427 msgid "Click list position. Click thumbnail to add." msgstr "Clic una posició de la llista. Clic una miniatura per afegir" -#: f.tools.cc:1439 f.tools.cc:1654 +#: f.tools.cc:1452 f.tools.cc:1667 msgid "Edit Bookmarks" msgstr "Editar marcadors" -#: f.tools.cc:1585 +#: f.tools.cc:1598 msgid "unable to save bookmarks file" msgstr "no puc guardar arxiu de marcadors" -#: f.tools.cc:1654 +#: f.tools.cc:1667 msgid "Go To Bookmark" msgstr "Anar a un marcador" -#: f.tools.cc:1800 +#: f.tools.cc:1811 msgid "Edit KB Shortcuts" msgstr "Editar tecles drecera" -#: f.tools.cc:1805 +#: f.tools.cc:1816 msgid "shortcut key:" msgstr "tecla drecera" -#: f.tools.cc:1806 +#: f.tools.cc:1817 msgid "(enter keys)" msgstr " (introduïr tecles" -#: f.tools.cc:1932 +#: f.tools.cc:1943 #, c-format msgid "\"%s\" Reserved, cannot be used" msgstr "\"%s\" Reservada, no es pot utilitzar" -#: f.tools.cc:2084 +#: f.tools.cc:2095 msgid "unable to save KB-shortcuts file" msgstr "no es pot guardar arxiu de tecles drecera" -#: f.tools.cc:2154 +#: f.tools.cc:2165 msgid "" "Right-click collection thumbnails to \n" "cut/copy to cache, paste cache, remove." @@ -3179,245 +3410,241 @@ "Clic dret en la col.lecció per \n" "tallar/copiar a la cache, enganxar en la cache, eliminar" -#: f.tools.cc:2190 +#: f.tools.cc:2201 msgid "Start a new collection" msgstr " Iniciar una nova col.lecció" -#: f.tools.cc:2192 +#: f.tools.cc:2203 msgid "Collection to view or edit" msgstr "Col.lecció per veure o editar" -#: f.tools.cc:2194 +#: f.tools.cc:2205 msgid "Select images, add to cache" msgstr "Seleccionar imatges, afegir a la cache" -#: f.tools.cc:2196 +#: f.tools.cc:2207 msgid "Clear image cache" msgstr "Netejar cache d'imatge" -#: f.tools.cc:2198 +#: f.tools.cc:2209 msgid "Delete a collection" msgstr "Esborrar una col.lecció" -#: f.tools.cc:2221 +#: f.tools.cc:2232 msgid "New Collection" msgstr "Nova col.lecció" -#: f.tools.cc:2222 +#: f.tools.cc:2233 msgid "Choose Collection" msgstr "Escollir col.lecció" -#: f.tools.cc:2223 +#: f.tools.cc:2234 msgid "Delete Collection" msgstr "Esborrar col.lecció" -#: f.tools.cc:2293 +#: f.tools.cc:2304 #, c-format msgid "delete %s ?" msgstr "esborrar %s ?" -#: f.tools.cc:2606 +#: f.tools.cc:2625 msgid "Move collection" msgstr "Moure col.leccions" -#: f.tools.cc:2609 +#: f.tools.cc:2628 msgid "collection name" msgstr "nom de col.lecció" -#: f.tools.cc:2612 +#: f.tools.cc:2631 msgid "old top directory" msgstr "antic directori superior" -#: f.tools.cc:2615 +#: f.tools.cc:2634 msgid "new top directory" msgstr "nou directori superior" -#: f.tools.cc:2662 +#: f.tools.cc:2681 msgid "completed" msgstr "acabat" -#: f.tools.cc:2752 +#: f.tools.cc:2771 msgid "Press ESC to exit slide show" msgstr "Prémer ESC per sortir del diaporama" -#: f.tools.cc:2753 +#: f.tools.cc:2772 msgid "latest versions only" msgstr "només últimes versions" -#: f.tools.cc:2754 +#: f.tools.cc:2773 msgid "continuous loop" msgstr "bucle continu" -#: f.tools.cc:2755 +#: f.tools.cc:2774 msgid "start with current image" msgstr "iniciar amb la imatge actual" -#: f.tools.cc:2759 +#: f.tools.cc:2778 msgid "arrow keys" msgstr "tecles de fletxa" -#: f.tools.cc:2760 +#: f.tools.cc:2779 msgid "instant" msgstr "instantània" -#: f.tools.cc:2761 +#: f.tools.cc:2780 msgid "fade-in" msgstr "fusió endins" -#: f.tools.cc:2762 +#: f.tools.cc:2781 msgid "roll-right" msgstr "enrotllar a la dreta" -#: f.tools.cc:2763 +#: f.tools.cc:2782 msgid "roll-down" msgstr "enrotllar abaix" -#: f.tools.cc:2764 +#: f.tools.cc:2783 msgid "shift-left" msgstr "majúscula esquerra" -#: f.tools.cc:2765 +#: f.tools.cc:2784 msgid "venetian" msgstr "persiana" -#: f.tools.cc:2766 +#: f.tools.cc:2785 msgid "grate" msgstr "enreixat" -#: f.tools.cc:2767 +#: f.tools.cc:2786 msgid "rectangle" msgstr "rectangle" -#: f.tools.cc:2768 +#: f.tools.cc:2787 msgid "radar" msgstr "radar" -#: f.tools.cc:2769 +#: f.tools.cc:2788 msgid "jaws" msgstr "dents" -#: f.tools.cc:2770 +#: f.tools.cc:2789 msgid "ellipse" msgstr "elipsi" -#: f.tools.cc:2771 +#: f.tools.cc:2790 msgid "raindrops" msgstr "gotes de pluja" -#: f.tools.cc:2781 f.tools.cc:3866 f.tools.cc:4444 -msgid "0 files selected" -msgstr "0 arxius seleccionats" - -#: f.tools.cc:2783 +#: f.tools.cc:2802 msgid "collection:" msgstr "col.lecció:" -#: f.tools.cc:2793 +#: f.tools.cc:2812 msgid "music file" msgstr "arxiu de música" -#: f.tools.cc:2801 +#: f.tools.cc:2820 msgid "transitions" msgstr "transicions" -#: f.tools.cc:2803 +#: f.tools.cc:2822 msgid "seconds" msgstr "segons" -#: f.tools.cc:2854 f.tools.cc:3038 f.tools.cc:3060 +#: f.tools.cc:2873 f.tools.cc:3057 f.tools.cc:3079 msgid "no image files selected" msgstr "no seleccionats arxius d'imatge" -#: f.tools.cc:3019 +#: f.tools.cc:3038 msgid "open collection" msgstr "obrir col.lectió" -#: f.tools.cc:3064 +#: f.tools.cc:3083 msgid "save as collection" msgstr "desar com col.lecció" -#: f.tools.cc:3077 +#: f.tools.cc:3096 msgid "Select music file or playlist" msgstr "Seleccionar arxiu de música o lista de reproducció" -#: f.tools.cc:3868 +#: f.tools.cc:3887 msgid "new base name" msgstr "nou nom base" -#: f.tools.cc:3871 +#: f.tools.cc:3890 msgid "starting sequence" msgstr "iniciar sequència" -#: f.tools.cc:3873 +#: f.tools.cc:3892 msgid "increment" msgstr "increment" -#: f.tools.cc:3927 +#: f.tools.cc:3946 msgid "new file already exists:" msgstr "ja existeix el nou arxiu:" -#: f.tools.cc:3937 +#: f.tools.cc:3956 msgid "Rename failed:" msgstr "Re-anomenament ha fallat:" -#: f.tools.cc:3982 +#: f.tools.cc:4001 msgid "base name / sequence / increment not reasonable" msgstr "nom base / sequència / increment not raonable" -#: f.tools.cc:4085 +#: f.tools.cc:4104 msgid "max. width" msgstr "max. amplada" -#: f.tools.cc:4090 +#: f.tools.cc:4109 msgid "no change" msgstr "sense canvis" -#: f.tools.cc:4093 +#: f.tools.cc:4112 msgid "new file type" msgstr "nou tipus d'arxiu" -#: f.tools.cc:4094 +#: f.tools.cc:4113 msgid "same" msgstr "el mateix" -#: f.tools.cc:4102 +#: f.tools.cc:4121 msgid "replace originals" msgstr "reemplaçar originals" -#: f.tools.cc:4103 +#: f.tools.cc:4122 msgid "move to location" msgstr "moure a la ubicació" -#: f.tools.cc:4104 +#: f.tools.cc:4123 msgid "remove EXIF" msgstr "eliminar EXIF" -#: f.tools.cc:4105 +#: f.tools.cc:4124 msgid "delete originals" msgstr "esborrar originals" -#: f.tools.cc:4180 +#: f.tools.cc:4199 msgid "file already exists" msgstr "ja existeix l'arxiu" -#: f.tools.cc:4188 +#: f.tools.cc:4207 msgid "file type not supported" msgstr "tipus d'arxiu no suportat" -#: f.tools.cc:4227 +#: f.tools.cc:4246 msgid "cannot create new file" msgstr "no es pot crear un nou arxiu" -#: f.tools.cc:4351 +#: f.tools.cc:4370 msgid "replace original files?" msgstr "reemplaçar arxius originals?" -#: f.tools.cc:4352 +#: f.tools.cc:4371 #, c-format msgid "replace original files? (max. %d x %d)" msgstr "reemplaçar arxius originals? (max. %d x %d)" -#: f.tools.cc:4360 +#: f.tools.cc:4379 #, c-format msgid "" "copy files? \n" @@ -3426,7 +3653,7 @@ "copiar arxius? \n" "a la ubicació %s" -#: f.tools.cc:4363 +#: f.tools.cc:4382 #, c-format msgid "" "copy files? (max. %d x %d) \n" @@ -3435,7 +3662,7 @@ "copiar arxius? (max. %d x %d) \n" " a la ubicació %s" -#: f.tools.cc:4367 +#: f.tools.cc:4386 msgid "" "\n" " and delete originals" @@ -3443,80 +3670,88 @@ "\n" " i esborrar originals" -#: f.tools.cc:4380 +#: f.tools.cc:4399 msgid "location is not a valid directory" msgstr "la ubicació no és un directori vàlid" -#: f.tools.cc:4387 +#: f.tools.cc:4406 #, c-format msgid "max. size %d x %d is not reasonable" msgstr "max. mida %d x %d no és raonable" -#: f.tools.cc:4447 +#: f.tools.cc:4466 msgid "output file type" msgstr "tipus d'arxiu de sortida" -#: f.tools.cc:4459 +#: f.tools.cc:4478 msgid "white balance" msgstr "balanç de blancs" -#: f.tools.cc:4460 +#: f.tools.cc:4479 msgid "interpolation" msgstr "interpolació" -#: f.tools.cc:4461 +#: f.tools.cc:4480 msgid "color space" msgstr "espai de color" -#: f.tools.cc:4462 +#: f.tools.cc:4481 msgid "gamma curve" msgstr "corba gamma" -#: f.tools.cc:4465 +#: f.tools.cc:4484 msgid "camera" msgstr "càmera" -#: f.tools.cc:4466 +#: f.tools.cc:4485 msgid "fixed" msgstr "corretgit" -#: f.tools.cc:4467 +#: f.tools.cc:4486 msgid "calculated" msgstr "calculat" -#: f.tools.cc:4999 +#: f.tools.cc:4503 +msgid "default" +msgstr "" + +#: f.tools.cc:4509 +msgid "defaults" +msgstr "" + +#: f.tools.cc:5018 msgid "x-spacing" msgstr "espaiat X" -#: f.tools.cc:5000 +#: f.tools.cc:5019 msgid "x-count" msgstr "compte X" -#: f.tools.cc:5001 +#: f.tools.cc:5020 msgid "x-enable" msgstr "habilitar X" -#: f.tools.cc:5007 +#: f.tools.cc:5026 msgid "y-spacing" msgstr "espaiat Y" -#: f.tools.cc:5008 +#: f.tools.cc:5027 msgid "y-count" msgstr "compta Y" -#: f.tools.cc:5009 +#: f.tools.cc:5028 msgid "y-enable" msgstr "habilitar Y" -#: f.tools.cc:5016 +#: f.tools.cc:5035 msgid "x-offset" msgstr "desplaçament X" -#: f.tools.cc:5020 +#: f.tools.cc:5039 msgid "y-offset" msgstr "desplaçament Y" -#: f.tools.cc:5444 +#: f.tools.cc:5463 msgid "" "Brightness should show a gradual ramp \n" "extending all the way to the edges." @@ -3524,19 +3759,31 @@ "la brillantor ha de mostrar una rampa gradual \n" "extenent-se fina a les vores." -#: f.tools.cc:5549 +#: f.tools.cc:5568 msgid "Available Translations" msgstr "Traduccions disponibles" -#: f.tools.cc:5553 +#: f.tools.cc:5572 msgid "Set Language" msgstr "Seleccionar idioma" -#: f.tools.cc:5653 +#: f.tools.cc:5672 msgid "Make Launcher" msgstr "Crear un llençador" -#: fotoxx-13.08.cc:330 +#: fotoxx-13.10.cc:201 +msgid "Tab F: image file view/edit" +msgstr "Pestanya F : veure/editar imatges" + +#: fotoxx-13.10.cc:208 +msgid "Tab G: image gallery" +msgstr "Pestanya G : galeria d'imatges" + +#: fotoxx-13.10.cc:215 +msgid "Tab W: world map" +msgstr "Pestanya W : mapa mundial" + +#: fotoxx-13.10.cc:339 msgid "" "First time Fotoxx startup. \n" "Latest version: http://www.kornelix.com/fotoxx \n" @@ -3546,43 +3793,69 @@ "fotoxx \n" "Començarà el procés de sincronització (caldrà algun temps) \n" -#: fotoxx-13.08.cc:363 +#: fotoxx-13.10.cc:372 msgid "Please install missing programs:" msgstr "Si us plau instal.leu programas requerits:" -#: fotoxx-13.08.cc:816 -msgid "Location from World Map" -msgstr "Ubicació des d'un mapa mundial" +#: fotoxx-13.10.cc:686 +#, c-format +msgid " BUSY %d%c " +msgstr "" + +#: fotoxx-13.10.cc:688 +msgid " BUSY " +msgstr "" + +#: fotoxx-13.10.cc:745 +msgid " (reduced)" +msgstr "" + +#: fotoxx-13.10.cc:753 +#, c-format +msgid " edits: %d" +msgstr "" + +#: fotoxx-13.10.cc:758 +msgid " menu locked" +msgstr "" + +#: fotoxx-13.10.cc:759 +msgid " area active" +msgstr "" + +#: fotoxx-13.10.cc:760 +msgid " dialog open" +msgstr "" -#: fotoxx-13.08.cc:2500 +#: fotoxx-13.10.cc:2538 msgid "Exceed 50 anchor points" msgstr "Excedits punts d'anclatge" -#: fotoxx-13.08.cc:2681 +#: fotoxx-13.10.cc:2719 msgid "load curve from a file" msgstr "carregar corba des d'un arxiu" -#: fotoxx-13.08.cc:2735 +#: fotoxx-13.10.cc:2773 msgid "curve file is invalid" msgstr "arxiu de corba no és vàlid" -#: fotoxx-13.08.cc:2740 +#: fotoxx-13.10.cc:2778 msgid "curve file has different no. of curves" msgstr "l'arxiu de corbes té un nombre diferent de corbes" -#: fotoxx-13.08.cc:2755 +#: fotoxx-13.10.cc:2793 msgid "save curve to a file" msgstr "guardar corba en un arxiu" -#: fotoxx-13.08.cc:2853 fotoxx-13.08.cc:3380 fotoxx-13.08.cc:3395 +#: fotoxx-13.10.cc:2891 fotoxx-13.10.cc:3417 fotoxx-13.10.cc:3432 msgid "prior function still active" msgstr "la funció anterior encara està activa" -#: fotoxx-13.08.cc:2860 +#: fotoxx-13.10.cc:2898 msgid "Too many edits, please save image" msgstr "Massa edicions, si us plau guardeu la imatge" -#: fotoxx-13.08.cc:2875 +#: fotoxx-13.10.cc:2913 msgid "" "Select area not active.\n" "Continue?" @@ -3590,23 +3863,23 @@ "Àrea seleccionada no activa.\n" "Continuar?" -#: fotoxx-13.08.cc:3350 +#: fotoxx-13.10.cc:3387 msgid "Discard edits?" msgstr "Descartar edicions?" -#: fotoxx-13.08.cc:3351 +#: fotoxx-13.10.cc:3388 msgid "This action will discard changes\n" msgstr "Aquesta acció descartarà els canvis\n" -#: fotoxx-13.08.cc:3352 fotoxx.h:973 +#: fotoxx-13.10.cc:3389 fotoxx.h:994 msgid "Keep" msgstr "Guardar" -#: fotoxx-13.08.cc:3353 +#: fotoxx-13.10.cc:3390 msgid "Discard" msgstr "Descartar" -#: fotoxx-13.08.cc:4054 +#: fotoxx-13.10.cc:4088 #, c-format msgid "" "warning: real memory %d MB < required %d MB \n" @@ -3615,212 +3888,224 @@ "atenció: memòria real %d MB < requerida %d MB \n" "el temps de resposta pot ser molt llarg \n" -#: fotoxx.h:936 +#: fotoxx.h:955 msgid "Add All" msgstr "Afegir tot" -#: fotoxx.h:938 +#: fotoxx.h:957 msgid "Amount" msgstr "Quantitat" -#: fotoxx.h:939 +#: fotoxx.h:958 +msgid "Angle" +msgstr "Angle" + +#: fotoxx.h:959 msgid "Apply" msgstr "Aplicar" -#: fotoxx.h:940 +#: fotoxx.h:960 msgid "Autocomplete" msgstr "Autocompletar" -#: fotoxx.h:941 +#: fotoxx.h:961 msgid "Black" msgstr "Negre" -#: fotoxx.h:942 +#: fotoxx.h:962 msgid "Blend Width" msgstr "Barrejar per ample" -#: fotoxx.h:944 +#: fotoxx.h:964 msgid "Brightness" msgstr "Brillantor" -#: fotoxx.h:945 +#: fotoxx.h:965 msgid "Browse" msgstr "Examinar" -#: fotoxx.h:946 +#: fotoxx.h:966 msgid "Cancel" msgstr "Cancel.lar" -#: fotoxx.h:947 +#: fotoxx.h:967 msgid "Choose" msgstr "Escollir" -#: fotoxx.h:948 +#: fotoxx.h:968 msgid "Clear" msgstr "Esborrar" -#: fotoxx.h:950 +#: fotoxx.h:970 msgid "Contrast" msgstr "Contrast" -#: fotoxx.h:952 +#: fotoxx.h:972 msgid "Curve File:" msgstr "Arxiu de corba:" -#: fotoxx.h:953 +#: fotoxx.h:973 msgid "Cut" msgstr "Tallar" -#: fotoxx.h:954 +#: fotoxx.h:974 msgid "Darker Areas" msgstr "Àrees més fosques" -#: fotoxx.h:957 +#: fotoxx.h:977 msgid "Done" msgstr "Fet" -#: fotoxx.h:958 +#: fotoxx.h:978 msgid "Edit" msgstr "Editar" -#: fotoxx.h:960 +#: fotoxx.h:980 msgid "Erase" msgstr "Esborrar" -#: fotoxx.h:961 +#: fotoxx.h:981 msgid "Fetch" msgstr "Extreure" -#: fotoxx.h:962 +#: fotoxx.h:982 msgid "Find" msgstr "Trobar" -#: fotoxx.h:963 +#: fotoxx.h:983 msgid "Finish" msgstr "Acabar" -#: fotoxx.h:964 +#: fotoxx.h:984 msgid "Font" msgstr "Tipus de lletra" -#: fotoxx.h:966 +#: fotoxx.h:985 +msgid "Geotags" +msgstr "" + +#: fotoxx.h:987 msgid "Height" msgstr "Alçada" -#: fotoxx.h:968 +#: fotoxx.h:989 msgid "histogram" msgstr "histograma" -#: fotoxx.h:970 +#: fotoxx.h:991 msgid "Images" msgstr " imatges" -#: fotoxx.h:971 +#: fotoxx.h:992 msgid "Insert" msgstr "Insertar" -#: fotoxx.h:974 +#: fotoxx.h:995 msgid "Lighter Areas" msgstr "Àrees més il.luminades" -#: fotoxx.h:975 +#: fotoxx.h:996 msgid "limit" msgstr "limit" -#: fotoxx.h:977 +#: fotoxx.h:998 msgid "Negative" msgstr "Negatiu" -#: fotoxx.h:978 +#: fotoxx.h:999 msgid "New" msgstr "Nou" -#: fotoxx.h:980 +#: fotoxx.h:1001 msgid "search index file missing" msgstr "buscar arxiu d'index perdut" -#: fotoxx.h:981 +#: fotoxx.h:1002 msgid "OK" msgstr "OK" -#: fotoxx.h:983 +#: fotoxx.h:1004 msgid "Open RAW File" msgstr "Obrir arxiu RAW" -#: fotoxx.h:985 +#: fotoxx.h:1006 msgid "Pause" msgstr "Pausa" -#: fotoxx.h:986 +#: fotoxx.h:1007 msgid "Percent" msgstr "Percentatge" -#: fotoxx.h:987 +#: fotoxx.h:1008 msgid "Presets" msgstr "Predefinits" -#: fotoxx.h:989 +#: fotoxx.h:1010 msgid "Proceed" msgstr "Procedir" -#: fotoxx.h:991 +#: fotoxx.h:1012 msgid "range" msgstr "rang" -#: fotoxx.h:994 +#: fotoxx.h:1015 msgid "Reduce" msgstr "Reduïr" -#: fotoxx.h:997 +#: fotoxx.h:1018 msgid "Reset" msgstr "Restablir" -#: fotoxx.h:1000 +#: fotoxx.h:1021 msgid "Unknown file type, save as tiff/jpeg/png to edit" msgstr "Tipus d'arxiu desconegut, guardar com a TIFF/JPEG/PNG per editar" -#: fotoxx.h:1001 +#: fotoxx.h:1022 msgid "Search" msgstr "Buscar" -#: fotoxx.h:1005 +#: fotoxx.h:1026 +msgid "Size" +msgstr "Tamany" + +#: fotoxx.h:1027 msgid "Start" msgstr "Començar" -#: fotoxx.h:1006 +#: fotoxx.h:1028 msgid "Threshold" msgstr "Llindar" -#: fotoxx.h:1007 +#: fotoxx.h:1029 #, c-format msgid "exceed %d files" msgstr "excedeix %d arxius" -#: fotoxx.h:1009 +#: fotoxx.h:1031 msgid "Undo All" msgstr "Desfer-ho tot" -#: fotoxx.h:1010 +#: fotoxx.h:1032 msgid "Undo Last" msgstr "Desfer l'últim" -#: fotoxx.h:1012 +#: fotoxx.h:1034 msgid "Unfinish" msgstr "No acabat" -#: fotoxx.h:1014 +#: fotoxx.h:1036 msgid "View" msgstr "Veure" -#: fotoxx.h:1015 +#: fotoxx.h:1037 msgid "Web" msgstr "Web" -#: fotoxx.h:1016 +#: fotoxx.h:1038 msgid "White" msgstr "Blanc" -#: fotoxx.h:1018 +#: fotoxx.h:1040 msgid "Map" msgstr "Mapa" @@ -3828,7 +4113,7 @@ msgid "user guide not found" msgstr "no trobada la guia d'usuari" -#: zfuncs.cc:4504 zfuncs.cc:10210 +#: zfuncs.cc:4504 zfuncs.cc:10284 #, c-format msgid "cannot open file %s" msgstr "no es pot obrir l'arxiu %s" @@ -3837,77 +4122,81 @@ msgid "save screen to file" msgstr "guardar la pantalla en un arxiu" -#: zfuncs.cc:8819 +#: zfuncs.cc:8891 msgid "No" msgstr "No" -#: zfuncs.cc:8819 +#: zfuncs.cc:8891 msgid "Yes" msgstr "Si" -#: zfuncs.cc:8898 zfuncs.cc:8938 zfuncs.cc:9277 zfuncs.cc:9595 zfuncs.cc:10323 -#: zfuncs.cc:10329 zfuncs.cc:10335 zfuncs.cc:10341 +#: zfuncs.cc:8970 zfuncs.cc:9012 zfuncs.cc:9351 zfuncs.cc:9669 zfuncs.cc:10397 +#: zfuncs.cc:10403 zfuncs.cc:10409 zfuncs.cc:10415 msgid "cancel" msgstr "cancel.lar" -#: zfuncs.cc:9239 +#: zfuncs.cc:9313 msgid "open" msgstr "obrir" -#: zfuncs.cc:9244 +#: zfuncs.cc:9318 msgid "choose" msgstr "escollir" -#: zfuncs.cc:9249 +#: zfuncs.cc:9323 msgid "save" msgstr "guardar" -#: zfuncs.cc:9255 +#: zfuncs.cc:9329 msgid "open folder" msgstr "obrir carpeta" -#: zfuncs.cc:9260 +#: zfuncs.cc:9334 msgid "create folder" msgstr "create folder" -#: zfuncs.cc:9266 +#: zfuncs.cc:9340 msgid "hidden" msgstr "ocult" -#: zfuncs.cc:9327 +#: zfuncs.cc:9344 +msgid "quality" +msgstr "qualitat" + +#: zfuncs.cc:9401 msgid "JPG quality 0-100" msgstr "qualitat JPG he d'ésser 0-100" -#: zfuncs.cc:9586 +#: zfuncs.cc:9660 #, c-format msgid "printed image width: %.1f height: %.1f cm" msgstr "imatge impresa amplada: %.1f alçada: %.1f cm" -#: zfuncs.cc:9595 +#: zfuncs.cc:9669 msgid "done" msgstr "fet" -#: zfuncs.cc:9595 zfuncs.cc:9607 +#: zfuncs.cc:9669 zfuncs.cc:9681 msgid "margins" msgstr "marges" -#: zfuncs.cc:9603 +#: zfuncs.cc:9677 msgid "top" msgstr "a dalt" -#: zfuncs.cc:9604 +#: zfuncs.cc:9678 msgid "bottom" msgstr "a baix" -#: zfuncs.cc:9613 +#: zfuncs.cc:9687 msgid "image scale" msgstr "escala de l'imatge" -#: zfuncs.cc:9615 +#: zfuncs.cc:9689 msgid "percent" msgstr "percentatge" -#: zfuncs.cc:10097 +#: zfuncs.cc:10171 msgid "" "Initial parameters file created. \n" "Inspect and revise if necessary." @@ -3915,19 +4204,19 @@ "Arxiu de paràmetres inicial creat. \n" "Inspeccionar i revisar si cal." -#: zfuncs.cc:10113 +#: zfuncs.cc:10187 msgid "load parameters from a file" msgstr "carregar paràmetres des d'un arxiu" -#: zfuncs.cc:10182 +#: zfuncs.cc:10256 msgid "save parameters to a file" msgstr "guardar paràmetres en un arxiu" -#: zfuncs.cc:10321 zfuncs.cc:10327 zfuncs.cc:10333 zfuncs.cc:10339 +#: zfuncs.cc:10395 zfuncs.cc:10401 zfuncs.cc:10407 zfuncs.cc:10413 msgid "edit parameters" msgstr "editar paràmetres" -#: zfuncs.cc:10322 zfuncs.cc:10328 +#: zfuncs.cc:10396 zfuncs.cc:10402 msgid "" "list\n" "all" @@ -3935,7 +4224,7 @@ "llistar\n" "tot" -#: zfuncs.cc:10322 zfuncs.cc:10328 zfuncs.cc:10334 zfuncs.cc:10340 +#: zfuncs.cc:10396 zfuncs.cc:10402 zfuncs.cc:10408 zfuncs.cc:10414 msgid "" "load\n" "file" @@ -3943,7 +4232,7 @@ "carregar \n" "arxiu" -#: zfuncs.cc:10322 zfuncs.cc:10328 zfuncs.cc:10334 zfuncs.cc:10340 +#: zfuncs.cc:10396 zfuncs.cc:10402 zfuncs.cc:10408 zfuncs.cc:10414 msgid "" "save\n" "file" @@ -3951,7 +4240,7 @@ "guardar\n" "arxiu" -#: zfuncs.cc:10323 zfuncs.cc:10335 +#: zfuncs.cc:10397 zfuncs.cc:10409 msgid "" "add\n" "new" @@ -3959,66 +4248,174 @@ "afegir\n" "nou" -#: zfuncs.cc:10323 zfuncs.cc:10329 zfuncs.cc:10335 zfuncs.cc:10341 +#: zfuncs.cc:10397 zfuncs.cc:10403 zfuncs.cc:10409 zfuncs.cc:10415 msgid "apply" msgstr "aplicar" -#: zfuncs.cc:10376 +#: zfuncs.cc:10450 msgid "apply?" msgstr "aplicar?" -#: zfuncs.cc:10433 +#: zfuncs.cc:10507 msgid "(new parm name)" msgstr "(nou nom de paràmetre)" -#: zfuncs.cc:10433 +#: zfuncs.cc:10507 msgid "add parameter" msgstr "afegir paràmetre" -#~ msgid "negative" -#~ msgstr "negatiu" +#~ msgid "angle" +#~ msgstr "angle" -#~ msgid "nothing in cache" -#~ msgstr "no hi res a la cache" +#~ msgid "cmsCreateTransform() failed" +#~ msgstr "ha fallat la creació/transformació de cms" -#~ msgid "new gallery from tab F" -#~ msgstr "nova galeria des de la pestanya F" +#~ msgid "no plugin command" +#~ msgstr "sense ordre de complement" -#~ msgid "Convert into a cartoon drawing" -#~ msgstr "Convertir a un dibuix estil dibuix animat" +#~ msgid "User Guide etc." +#~ msgstr "Guia d'usuari, etc" -#~ msgid "Cartoon" -#~ msgstr "Estil dibuix animat" +#~ msgid "Edit Caption/Comments" +#~ msgstr "Editar llegenda/comentaris" -#~ msgid "Rotate Left 90 degrees" -#~ msgstr "Girar a l'esquerra 90º" +#~ msgid "Edit image caption or comment" +#~ msgstr "Editar llegenda/comentaris de la imatge" -#~ msgid "Rotate Left" -#~ msgstr "Girar a l'esquerra" +#~ msgid "Edit image date/rating/tags" +#~ msgstr "Editar data/calificació/etiquetes" -#~ msgid "Rotate Right 90 degrees" -#~ msgstr "Girar a la dreta 90º" +#~ msgid "Batch Tags" +#~ msgstr "Etiquetar en lot" -#~ msgid "Rotate Right" -#~ msgstr "Girar a la dreta" +#~ msgid "Edit image geotags" +#~ msgstr "Editar geo-etiquetes de la imatge" -#~ msgid "invert" -#~ msgstr "invertir" +#~ msgid "Gallery from Tab F" +#~ msgstr "Galería des de la pestanya F" -#~ msgid "Use buttons or drag right edge with mouse" -#~ msgstr "Utilitzar botons o arrossegar vora dreta amb el ratolí" +#~ msgid "jump to first page" +#~ msgstr "anar a la pròxima pàgina" -#~ msgid "Contrast Saturation" -#~ msgstr "Saturació del contrast" +#~ msgid "jump to last page" +#~ msgstr "anar a la ùltima pàgina" -#~ msgid "Contrast Spread" -#~ msgstr "Extensió del contrast" +#~ msgid "change sequence" +#~ msgstr "canviar sequència" -#~ msgid "Contrast Span" -#~ msgstr "Mida per el contrast" +#~ msgid "Edit Caption and Comments" +#~ msgstr "Editar títol i comentaris" -#~ msgid "Cartoon Parameters" -#~ msgstr "Paràmetres del dibuix" +#~ msgid "image date (yyyymmdd)" +#~ msgstr "data de la imatge (yyyymmdd)" + +#~ msgid "use last" +#~ msgstr "utilitzar l'últim" + +#~ msgid "image stars" +#~ msgstr "estrelles de la imatge" + +#~ msgid "current tags" +#~ msgstr "etiquetes actuals" + +#~ msgid "there are zero stuck pixels" +#~ msgstr "hi han zero píxels retinguts" + +#~ msgid "Save Stuck Pixels" +#~ msgstr "Guardar píxels retingunts" + +#~ msgid "Overwrite original file?" +#~ msgstr "Sobreescriu el fitxer original?" + +#~ msgid "Do not warn again" +#~ msgstr "No avisar de nou" + +#~ msgid "Warning" +#~ msgstr "Avís" + +#~ msgid "Save File" +#~ msgstr "Desa fitxer" + +#~ msgid "Save to Same File" +#~ msgstr "Guardar en el mateix arxiu" + +#~ msgid "Save to the same file (replace)" +#~ msgstr "Guardar en el mateix arxio (reemplaçar)" + +#~ msgid "Save to New Version" +#~ msgstr "Guardar en una nova versió" + +#~ msgid "Save to a new (next) version" +#~ msgstr "Guardar en una nova (pròxima) versió" + +#~ msgid "Save to New File" +#~ msgstr "Guardar en un nou arxiu" + +#~ msgid "Save to a new file name" +#~ msgstr "Guardar amb un nou nom d'arxiu" + +#~ msgid "Save to the same file" +#~ msgstr "Guardar en el mateix arxiu" + +#~ msgid "Save to a new version" +#~ msgstr "Guardar en una nova versió" + +#~ msgid "Save+V" +#~ msgstr "Guardar + Vers." + +#~ msgid "Save to a new file" +#~ msgstr "Guardar en un nou arxiu" + +#~ msgid "Save+F" +#~ msgstr "Guardar + Arx." #~ msgid "auto-trim" #~ msgstr "auto-retallar" + +#~ msgid "Cartoon Parameters" +#~ msgstr "Paràmetres del dibuix" + +#~ msgid "Contrast Span" +#~ msgstr "Mida per el contrast" + +#~ msgid "Contrast Spread" +#~ msgstr "Extensió del contrast" + +#~ msgid "Contrast Saturation" +#~ msgstr "Saturació del contrast" + +#~ msgid "Use buttons or drag right edge with mouse" +#~ msgstr "Utilitzar botons o arrossegar vora dreta amb el ratolí" + +#~ msgid "invert" +#~ msgstr "invertir" + +#~ msgid "Rotate Right" +#~ msgstr "Girar a la dreta" + +#~ msgid "Rotate Right 90 degrees" +#~ msgstr "Girar a la dreta 90º" + +#~ msgid "Rotate Left" +#~ msgstr "Girar a l'esquerra" + +#~ msgid "Rotate Left 90 degrees" +#~ msgstr "Girar a l'esquerra 90º" + +#~ msgid "Cartoon" +#~ msgstr "Estil dibuix animat" + +#~ msgid "Convert into a cartoon drawing" +#~ msgstr "Convertir a un dibuix estil dibuix animat" + +#~ msgid "new gallery from tab F" +#~ msgstr "nova galeria des de la pestanya F" + +#~ msgid "nothing in cache" +#~ msgstr "no hi res a la cache" + +#~ msgid "negative" +#~ msgstr "negatiu" + +#~ msgid "Adjust Brightness and Color" +#~ msgstr "Ajustar brillantor i color" diff -Nru fotoxx-13.08/locales/translate-de.po fotoxx-13.09.1/locales/translate-de.po --- fotoxx-13.08/locales/translate-de.po 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/locales/translate-de.po 2013-08-31 06:26:38.000000000 +0000 @@ -1,13 +1,13 @@ # German translations for fotoxx package. # Copyright (C) 2009 THE fotoxx'S COPYRIGHT HOLDER # This file is distributed under the same license as the fotoxx package. -# +# # msgid "" msgstr "" "Project-Id-Version: fotoxx 6.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-01 22:37+0200\n" +"POT-Creation-Date: 2013-08-29 08:25+0200\n" "PO-Revision-Date: 2009-03-06 09:57+0100\n" "Language-Team: German\n" "Language: de\n" @@ -20,7 +20,7 @@ msgid "Select Area for Edits" msgstr "Ausschnitt für Bearbeitung auswählen" -#: f.area.cc:57 f.retouch.cc:2362 +#: f.area.cc:57 f.retouch.cc:2359 msgid "Press F1 for help" msgstr "F1 für Hilfe drucken" @@ -64,7 +64,7 @@ msgid "select all matching colors within mouse" msgstr "Alle übereinstimmenden Farben in Maus selektieren" -#: f.area.cc:114 f.retouch.cc:2397 +#: f.area.cc:114 f.retouch.cc:2394 msgid "mouse radius" msgstr "Mausradius" @@ -120,7 +120,7 @@ msgid "found %d pixels" msgstr "%d Pixels gefunden" -#: f.area.cc:1824 f.area.cc:1841 f.area.cc:1861 f.area.cc:2191 +#: f.area.cc:1824 f.area.cc:1841 f.area.cc:1861 f.area.cc:2192 msgid "the area is not finished" msgstr "Der Ausschnitt ist nicht fertig" @@ -132,39 +132,35 @@ msgid "Area Edge Calc" msgstr "Ausschnitt Randberechnung" -#: f.area.cc:2265 +#: f.area.cc:2266 msgid "position with mouse click/drag" msgstr "Mit Maus klicken/ziehen positionieren" -#: f.area.cc:2290 +#: f.area.cc:2292 msgid "Paste Image" msgstr "Bild einfügen" -#: f.area.cc:2295 +#: f.area.cc:2297 msgid "resize" msgstr "Skalieren" -#: f.area.cc:2303 -msgid "angle" -msgstr "Winkel" - -#: f.area.cc:2565 +#: f.area.cc:2598 msgid "load select area from a file" msgstr "Ausschnitt von Datei lesen" -#: f.area.cc:2619 +#: f.area.cc:2652 msgid "save select area to a file" msgstr "Ausschnitt in Datei speichern" -#: f.bend.cc:71 f.menus.cc:230 +#: f.bend.cc:71 f.menus.cc:242 msgid "Unbend" msgstr "Entkrümmen" -#: f.bend.cc:79 f.image.cc:1485 +#: f.bend.cc:79 f.image.cc:1496 msgid "vertical" msgstr "Vertikal" -#: f.bend.cc:80 f.image.cc:1484 +#: f.bend.cc:80 f.image.cc:1495 msgid "horizontal" msgstr "Horizontal" @@ -176,7 +172,7 @@ msgid "curved" msgstr "kurvig" -#: f.bend.cc:88 f.bend.cc:1517 f.bend.cc:1789 f.bend.cc:2049 f.image.cc:163 +#: f.bend.cc:88 f.bend.cc:1517 f.bend.cc:1789 f.bend.cc:2049 f.image.cc:172 msgid "Grid" msgstr "Gitter" @@ -188,7 +184,7 @@ " Die vier Ecken eines Tetragonalbereich anklicken. [Anwenden] drücken. \n" " Das Tetragon wird zu einem geraden Rechteck verzogen." -#: f.bend.cc:356 f.menus.cc:231 +#: f.bend.cc:356 f.menus.cc:243 msgid "Keystone Correction" msgstr "Schlussstein-Korrektur" @@ -238,7 +234,7 @@ " Mehrmals ziehen/strecken bis zum erwünschten Ergebniss. \n" " Wenn fertig, anderen Ausschnitt wählen oder [Fertig] drücken." -#: f.bend.cc:1105 f.menus.cc:233 +#: f.bend.cc:1105 f.menus.cc:245 msgid "Warp area" msgstr "Ausschnitt Krümmen" @@ -260,7 +256,7 @@ " Mehrmals ziehen bis zufriedenstellend. \n" " Wenn fertig, [Fertig] drücken." -#: f.bend.cc:1510 f.menus.cc:234 +#: f.bend.cc:1510 f.menus.cc:246 msgid "Warp curved" msgstr "Gebogen krümmen" @@ -268,7 +264,7 @@ msgid "warp span" msgstr "Krümmen-Spannweite" -#: f.bend.cc:1781 f.menus.cc:235 +#: f.bend.cc:1781 f.menus.cc:247 msgid "Warp linear" msgstr "Linear krümmen" @@ -282,7 +278,7 @@ " Mehrmals ziehen bis zufriedengestellt. \n" " Wenn fertig, [Fertig] drücken." -#: f.bend.cc:2044 f.menus.cc:236 +#: f.bend.cc:2044 f.menus.cc:248 msgid "Warp affine" msgstr "Affine krümmen" @@ -306,7 +302,7 @@ msgid "reduce" msgstr "Vermindern" -#: f.color.cc:371 f.menus.cc:224 +#: f.color.cc:371 f.menus.cc:236 msgid "Color Mode" msgstr "Farb-Modus" @@ -351,10 +347,6 @@ msgid "unknown cms profile %s" msgstr "CMS Farbraum unbekannt %s" -#: f.color.cc:601 -msgid "cmsCreateTransform() failed" -msgstr "cmsCreateTransform() fehlgeschlagen" - #: f.color.cc:667 msgid "Color Match Images" msgstr "Bilderfarben anpassen" @@ -363,8 +355,8 @@ msgid "mouse radius for color sample" msgstr "Mausradius für Farbauswahl" -#: f.color.cc:696 f.color.cc:701 f.file.cc:3981 f.menus.cc:191 f.menus.cc:278 -#: f.menus.cc:390 fotoxx.h:982 +#: f.color.cc:696 f.color.cc:701 f.file.cc:4034 f.menus.cc:203 f.menus.cc:291 +#: f.menus.cc:401 fotoxx.h:1003 msgid "Open" msgstr "Öffnen" @@ -388,11 +380,11 @@ msgid "select source image color first" msgstr "Farbe vom Quellbild zuerst wählen" -#: f.color.cc:957 f.tools.cc:5134 +#: f.color.cc:957 f.tools.cc:5145 msgid "Click image to select pixels." msgstr "Bild anklicken zum Pixeln auswählen" -#: f.color.cc:995 f.menus.cc:227 +#: f.color.cc:995 f.menus.cc:239 msgid "Revise RGB" msgstr "RGB revidieren" @@ -424,15 +416,15 @@ msgid "+Blue -Yellow" msgstr "+Blau -Gelb" -#: f.color.cc:1467 fotoxx.h:992 +#: f.color.cc:1467 fotoxx.h:1013 msgid "Red" msgstr "Rot" -#: f.color.cc:1468 fotoxx.h:965 +#: f.color.cc:1468 fotoxx.h:986 msgid "Green" msgstr "Grün" -#: f.color.cc:1469 fotoxx.h:943 +#: f.color.cc:1469 fotoxx.h:963 msgid "Blue" msgstr "Blau" @@ -440,7 +432,7 @@ msgid "Load CMYK parameters" msgstr "CMYK-Parameter-Datei einlesen" -#: f.color.cc:1614 f.color.cc:1686 f.repair.cc:4008 f.repair.cc:4104 +#: f.color.cc:1614 f.color.cc:1686 f.meta.cc:139 f.repair.cc:4025 msgid "File:" msgstr "Datei:" @@ -448,8 +440,8 @@ msgid "CMYK parameters file" msgstr "CMYK-Parameter-Datei" -#: f.color.cc:1651 f.file.cc:2047 f.meta.cc:1282 f.repair.cc:4048 -#: f.tools.cc:1708 +#: f.color.cc:1651 f.file.cc:2092 f.meta.cc:1451 f.repair.cc:4065 +#: f.tools.cc:1721 msgid "file not found" msgstr "Datei nicht gefunden" @@ -478,7 +470,7 @@ msgid "light pixels" msgstr "helle Pixel" -#: f.combine.cc:2315 f.meta.cc:169 +#: f.combine.cc:2315 msgid "file:" msgstr "Datei:" @@ -487,7 +479,7 @@ msgstr "Bild malen und krümmen" #: f.combine.cc:2829 f.combine.cc:3482 f.combine.cc:4897 f.combine.cc:5795 -#: f.menus.cc:58 f.menus.cc:104 +#: f.menus.cc:58 f.menus.cc:119 msgid "Image" msgstr "Bild" @@ -555,7 +547,7 @@ msgid "no curve (scanned image)" msgstr "Keine Kurve (gescanntes Bild)" -#: f.combine.cc:4348 f.combine.cc:5245 f.menus.cc:198 f.menus.cc:446 +#: f.combine.cc:4348 f.combine.cc:5245 f.menus.cc:210 f.menus.cc:457 msgid "Resize" msgstr "Größe verändern" @@ -592,6 +584,173 @@ "Bilder zur Grobabstimmung mit der Maus ziehen.\n" "Zum Drehen, vom rechten Rand ziehen" +#: f.combine.cc:6061 +msgid "Mashup layout and background image" +msgstr "Mashup Lageplan- und Hintergrund-Bild" + +#: f.combine.cc:6090 +msgid "choose an image file" +msgstr "Bilddatei wählen" + +#: f.combine.cc:6091 +msgid "use current image file" +msgstr "Aktuelle Bilddatei verwenden" + +#: f.combine.cc:6092 +msgid "open a Mashup project file" +msgstr "Mashup Projektdatei öffnen" + +#: f.combine.cc:6093 +msgid "specify layout size and color" +msgstr "Lageplan Größe und Farbe angeben" + +#: f.combine.cc:6120 +msgid "choose layout file" +msgstr "Lageplan-Datei wählen" + +#: f.combine.cc:6181 +msgid "Edit Images" +msgstr "Bilder bearbeiten" + +#: f.combine.cc:6182 f.combine.cc:6931 +msgid "Edit Text" +msgstr "Texte bearbeiten" + +#: f.combine.cc:6183 f.combine.cc:6482 +msgid "Save Project" +msgstr "Projekt speichern" + +#: f.combine.cc:6186 +msgid "add or edit images" +msgstr "Bilder zufügen oder bearbeiten" + +#: f.combine.cc:6187 +msgid "add or edit text" +msgstr "Texte zufügen oder bearbeiten" + +#: f.combine.cc:6188 +msgid "save project data" +msgstr "Projektdaten speichern" + +#: f.combine.cc:6189 +msgid "project complete" +msgstr "Projekt fertig" + +#: f.combine.cc:6190 +msgid "cancel project" +msgstr "Projekt verwerfen" + +#: f.combine.cc:6283 +msgid "Open Project" +msgstr "Projekt öffnen" + +#: f.combine.cc:6302 +#, c-format +msgid "" +"layout image file missing: \n" +" %s" +msgstr "" +"Lageplan-Bilddatei fehlt: \n" +" %s" + +#: f.combine.cc:6320 +#, c-format +msgid "" +"overlay image file missing: \n" +" %s" +msgstr "" +"Overlay-Bilddatei fehlt: \n" +" %s" + +#: f.combine.cc:6382 +#, c-format +msgid "" +"layout image file error: \n" +" %s" +msgstr "" +"Lageplan-Bilddatei Fehler: \n" +" %s" + +#: f.combine.cc:6393 +#, c-format +msgid "" +"overlay image file error: \n" +" %s" +msgstr "" +"Overlay-Bilddatei Fehler: \n" +" %s" + +#: f.combine.cc:6452 +msgid "project file is defective" +msgstr "Projektdatei ist defekt" + +#: f.combine.cc:6530 +msgid "Click image to select, drag image to move." +msgstr "Bild anklicken zum Wählen, schleppen zum Versetzen." + +#: f.combine.cc:6563 +msgid "current image:" +msgstr "Aktuelles Bild:" + +#: f.combine.cc:6585 f.combine.cc:6965 f.image.cc:1681 +msgid "Transparency" +msgstr "Transparenz" + +#: f.combine.cc:6589 +msgid "Edge Blend Width" +msgstr "Rand Mischbreite" + +#: f.combine.cc:6755 +#, c-format +msgid "exceeded %d images" +msgstr "%d Bilder überschritten" + +#: f.combine.cc:6906 +msgid "Enter text, click/drag on image." +msgstr "Text eingeben, anklicken/schleppen am Bild." + +#: f.combine.cc:6936 f.image.cc:1652 f.tools.cc:1113 +msgid "Text" +msgstr "Text" + +#: f.combine.cc:6954 f.image.cc:1670 +msgid "text" +msgstr "Text" + +#: f.combine.cc:6955 f.image.cc:1671 +msgid "backing" +msgstr "Hinterfarbe" + +#: f.combine.cc:6956 f.image.cc:1672 +msgid "outline" +msgstr "Umriss" + +#: f.combine.cc:6957 f.image.cc:1673 +msgid "shadow" +msgstr "Shatten" + +#: f.combine.cc:6959 f.image.cc:1675 f.menus.cc:61 f.menus.cc:122 +#: f.menus.cc:286 fotoxx.h:969 +msgid "Color" +msgstr "Farbe" + +#: f.combine.cc:6971 f.image.cc:1687 fotoxx.h:1039 +msgid "Width" +msgstr "Breite" + +#: f.combine.cc:6984 f.image.cc:1700 +msgid "Text File:" +msgstr "Textdatei:" + +#: f.combine.cc:7046 f.image.cc:1811 +msgid "select font" +msgstr "Font wählen" + +#: f.combine.cc:7154 +#, c-format +msgid "exceeded %d text entries" +msgstr "%d Texte überschritten" + #: f.effects.cc:44 msgid "Set color depth to 1-16 bits" msgstr "Farbtiefe auf 1-16 Bits festlegen" @@ -632,7 +791,7 @@ msgid "black/white" msgstr "schwarzweiß" -#: f.effects.cc:983 f.menus.cc:241 +#: f.effects.cc:983 f.menus.cc:253 msgid "Graduated Blur" msgstr "Gestaffelte Verwischen" @@ -652,7 +811,7 @@ msgid "depth" msgstr "Tiefe" -#: f.effects.cc:1219 f.file.cc:987 +#: f.effects.cc:1219 f.file.cc:1031 msgid "color" msgstr "Farbe" @@ -700,7 +859,7 @@ msgid "borders" msgstr "Ränder" -#: f.effects.cc:2461 f.menus.cc:246 +#: f.effects.cc:2461 f.menus.cc:258 msgid "False Colors" msgstr "Falsche Farben" @@ -716,7 +875,7 @@ msgid "Blue: Red" msgstr "Blau: Rot" -#: f.effects.cc:2669 f.menus.cc:247 +#: f.effects.cc:2669 f.menus.cc:259 msgid "Vignette" msgstr "Vignette" @@ -724,7 +883,7 @@ msgid "center" msgstr "Mittig" -#: f.effects.cc:2700 f.retouch.cc:2402 +#: f.effects.cc:2700 f.retouch.cc:2399 msgid "edge" msgstr "Rand" @@ -732,47 +891,55 @@ msgid "no newly added files found" msgstr "keine neu eingefügten Dateien gefunden" -#: f.file.cc:275 +#: f.file.cc:307 msgid "no more images" msgstr "keine Bilder mehr" -#: f.file.cc:343 f.menus.cc:136 f.menus.cc:457 +#: f.file.cc:347 f.menus.cc:151 f.menus.cc:468 msgid "Open RAW file (ufraw)" msgstr "RAW-Datei öffnen (ufraw)" -#: f.file.cc:347 +#: f.file.cc:351 msgid "RAW type not registered in User Settings" msgstr "RAW-Typ nicht in Benutzereinstellungen registriert" -#: f.file.cc:367 -msgid "Overwrite original file?" -msgstr "Originaldatei überschreiben?" - -#: f.file.cc:368 -msgid "Do not warn again" -msgstr "Nicht wieder warnen" - -#: f.file.cc:383 -msgid "Warning" -msgstr "Warnung" - -#: f.file.cc:495 -msgid "Save File" -msgstr "Datei speichern" - -#: f.file.cc:528 zfuncs.cc:9270 -msgid "quality" -msgstr "Qualität" +#: f.file.cc:401 +msgid "Save Image File" +msgstr "Bilddatei speichern" + +#: f.file.cc:411 +msgid "new version" +msgstr "Neue Version" + +#: f.file.cc:412 +msgid "new file name" +msgstr "Neue Dateinamen" + +#: f.file.cc:413 +msgid "replace file" +msgstr "Datei ersetzen" + +#: f.file.cc:419 +msgid "save as new file version" +msgstr "Als neuen Dateiversion speichern" + +#: f.file.cc:420 f.file.cc:548 +msgid "save as new file name or type" +msgstr "Als neuen Dateinamen oder Typ speichern" + +#: f.file.cc:421 +msgid "replace old file (OVERWRITE)" +msgstr "Vorherige Datei ersetzen (ÜBERSCHREIBEN" -#: f.file.cc:530 +#: f.file.cc:564 msgid "make current" msgstr "aktuell machen" -#: f.file.cc:625 +#: f.file.cc:657 msgid "jpeg quality must be 1-100" msgstr "jpeg Qualität muss 1-100 sein" -#: f.file.cc:653 +#: f.file.cc:683 #, c-format msgid "" "Overwrite file? \n" @@ -781,31 +948,31 @@ "Datei überschreiben? \n" " %s" -#: f.file.cc:799 f.menus.cc:140 +#: f.file.cc:843 f.menus.cc:153 msgid "Rename Image File" msgstr "Bilddatei umbenennen" -#: f.file.cc:806 +#: f.file.cc:850 msgid "old name" msgstr "Vorheriger Name" -#: f.file.cc:807 +#: f.file.cc:851 msgid "new name" msgstr "Neuer Name" -#: f.file.cc:816 +#: f.file.cc:860 msgid "previous name" msgstr "Vorheriger Name" -#: f.file.cc:817 +#: f.file.cc:861 msgid "add 1" msgstr "1 addieren" -#: f.file.cc:895 f.file.cc:1248 +#: f.file.cc:939 f.file.cc:1292 msgid "target file already exists" msgstr "Zieldatei existiert schon" -#: f.file.cc:922 f.file.cc:1270 f.file.cc:1388 +#: f.file.cc:966 f.file.cc:1314 f.file.cc:1432 #, c-format msgid "" "delete failed: \n" @@ -814,59 +981,59 @@ "Löschen fehlgeschlagen: \n" " %s" -#: f.file.cc:971 +#: f.file.cc:1015 msgid "Create Blank Image" msgstr "Leerbild erstellen" -#: f.file.cc:973 +#: f.file.cc:1017 msgid "file name" msgstr "Dateiname" -#: f.file.cc:978 f.image.cc:470 +#: f.file.cc:1022 f.image.cc:479 msgid "width" msgstr "Breite" -#: f.file.cc:981 f.image.cc:473 f.tools.cc:4088 +#: f.file.cc:1025 f.image.cc:482 f.tools.cc:4099 msgid "height" msgstr "Höhe" -#: f.file.cc:1156 +#: f.file.cc:1200 msgid "Copy Image File" msgstr "Bilddatei kopieren" -#: f.file.cc:1158 +#: f.file.cc:1202 msgid "Move Image File" msgstr "Bilddatei versetzen" -#: f.file.cc:1164 f.file.cc:1343 f.file.cc:1464 +#: f.file.cc:1208 f.file.cc:1387 f.file.cc:1508 msgid "image file" msgstr "Bilddatei" -#: f.file.cc:1169 +#: f.file.cc:1213 msgid "new location" msgstr "Neue Speicherstelle" -#: f.file.cc:1203 f.tools.cc:4317 +#: f.file.cc:1247 f.tools.cc:4328 msgid "Select directory" msgstr "Bildverzeichnis wählen" -#: f.file.cc:1233 +#: f.file.cc:1277 msgid "new location is not a directory" msgstr "Neue Speicherstelle muß ein Verzeichnis sein" -#: f.file.cc:1307 +#: f.file.cc:1351 msgid "Delete Image File - CANNOT BE REVERSED" msgstr "Bilddatei löschen - NICHT UMKEHRBAR" -#: f.file.cc:1308 f.file.cc:1430 +#: f.file.cc:1352 f.file.cc:1474 msgid "(automatic step to next image)" msgstr "(automatisch zum nächsten Bild)" -#: f.file.cc:1429 f.menus.cc:142 +#: f.file.cc:1473 f.menus.cc:155 msgid "Trash Image File" msgstr "Bilddatei in den Abfall" -#: f.file.cc:1494 +#: f.file.cc:1538 msgid "" "Linux standard trash does not work. \n" "Desktop trash folder will be created." @@ -874,7 +1041,7 @@ "Linux Standard-Abfall funktioniert nicht. \n" "Desktop Abfall-Ordner wird erstellt." -#: f.file.cc:1497 +#: f.file.cc:1541 msgid "" "Linux and Desktop trash do not work. \n" "Permanently delete the image file?" @@ -882,1477 +1049,1516 @@ "Linux und Desktop Abfall funktionieren nicht. \n" "Bilddatei permanent löschen?" -#: f.file.cc:1527 +#: f.file.cc:1571 msgid "Move read-only file to trash?" msgstr "Schreibgeschützte Datei in den Abfall?" -#: f.file.cc:1556 +#: f.file.cc:1600 #, c-format msgid "Cannot create trash folder: %s" msgstr "Kann Abfallkorb nicht erstellen: %s" -#: f.file.cc:1569 zfuncs.cc:4211 +#: f.file.cc:1613 zfuncs.cc:4211 #, c-format msgid "error: %s" msgstr "Fehler: %s" -#: f.file.cc:1588 +#: f.file.cc:1632 #, c-format msgid "delete failed: %s" msgstr "Löschen fehlgeschlagen: %s" -#: f.file.cc:2041 f.menus.cc:132 +#: f.file.cc:2086 f.menus.cc:147 msgid "Open Image File" msgstr "Bilddatei öffnen" -#: f.file.cc:2059 +#: f.file.cc:2104 msgid "unknown file type" msgstr "Dateityp unbekannt" -#: f.file.cc:2341 +#: f.file.cc:2385 msgid "Unable to copy EXIF/IPTC data" msgstr "Kann nicht EXIF/IPTC Daten kopieren" -#: f.file.cc:2404 f.file.cc:2465 +#: f.file.cc:2448 f.file.cc:2509 #, c-format msgid "file not found: %s" msgstr "Datei nicht gefunden: %s" -#: f.file.cc:2409 f.file.cc:2470 +#: f.file.cc:2453 f.file.cc:2514 #, c-format msgid "file type not supported: %s" msgstr "Dateityp nicht unterstützt: %s" -#: f.file.cc:3982 f.menus.cc:390 +#: f.file.cc:4035 msgid "change directory" msgstr "Verzeichnis wechseln" -#: f.file.cc:3990 f.menus.cc:391 +#: f.file.cc:4043 f.menus.cc:402 msgid "GoTo" msgstr "GehZu" -#: f.file.cc:4005 f.menus.cc:400 +#: f.file.cc:4058 f.menus.cc:405 msgid "Sort" msgstr "Sortieren" -#: f.file.cc:4036 f.file.cc:4360 f.menus.cc:398 +#: f.file.cc:4089 f.file.cc:4420 f.menus.cc:410 msgid "Row↑" msgstr "Reihe↑" -#: f.file.cc:4048 f.file.cc:4361 f.menus.cc:399 +#: f.file.cc:4101 f.file.cc:4421 f.menus.cc:411 msgid "Row↓" msgstr "Reihe↓" -#: f.file.cc:4060 f.file.cc:4363 f.menus.cc:394 +#: f.file.cc:4113 f.file.cc:4423 f.menus.cc:406 msgid "First" msgstr "Erste" -#: f.file.cc:4061 f.file.cc:4364 f.menus.cc:395 +#: f.file.cc:4114 f.file.cc:4424 f.menus.cc:407 msgid "Last" msgstr "Letzte" -#: f.file.cc:4062 f.file.cc:4358 f.file.cc:4365 f.menus.cc:396 +#: f.file.cc:4115 f.file.cc:4418 f.file.cc:4425 f.menus.cc:408 msgid "Page↑" msgstr "Seite↑" -#: f.file.cc:4063 f.file.cc:4359 f.file.cc:4366 f.menus.cc:397 +#: f.file.cc:4116 f.file.cc:4419 f.file.cc:4426 f.menus.cc:409 msgid "Page↓" msgstr "Seite↓" -#: f.file.cc:4114 f.tools.cc:940 +#: f.file.cc:4167 f.tools.cc:953 msgid "Choose top image directory" msgstr "Oberstes Bild-Verzeichnis wählen" -#: f.file.cc:4120 f.file.cc:4134 +#: f.file.cc:4173 f.file.cc:4187 msgid "recent" msgstr "kürzlich" -#: f.file.cc:4121 f.file.cc:4139 +#: f.file.cc:4174 f.file.cc:4192 msgid "newest" msgstr "neueste" -#: f.file.cc:4170 +#: f.file.cc:4223 msgid "Gallery Sort" msgstr "Galerie-Sortierung" -#: f.file.cc:4174 +#: f.file.cc:4227 msgid "File Name" msgstr "Dateinamen" -#: f.file.cc:4175 +#: f.file.cc:4228 msgid "File Mod Date/Time" msgstr "Dateiänderungs-Datum/Zeit" -#: f.file.cc:4176 +#: f.file.cc:4229 msgid "Photo Date/Time (EXIF)" msgstr "Foto Datum/Zeit (EXIF)" -#: f.file.cc:4178 +#: f.file.cc:4231 msgid "ascending" msgstr "aufsteigend" -#: f.file.cc:4179 +#: f.file.cc:4232 msgid "descending" msgstr "absteigend" -#: f.file.cc:4352 f.file.cc:4353 f.file.cc:4355 +#: f.file.cc:4412 f.file.cc:4413 f.file.cc:4415 f.menus.cc:403 msgid "Zoom+" msgstr "Zoom+" -#: f.file.cc:4354 f.file.cc:4356 +#: f.file.cc:4414 f.file.cc:4416 f.menus.cc:404 msgid "Zoom-" msgstr "Zoom-" -#: f.file.cc:5192 fotoxx.h:1003 +#: f.file.cc:5253 fotoxx.h:1024 msgid "Select Files" msgstr "Dateien auswählen" -#: f.file.cc:5668 fotoxx.h:935 +#: f.file.cc:5729 fotoxx.h:954 msgid "Add" msgstr "Hinzufügen" -#: f.file.cc:5668 fotoxx.h:995 +#: f.file.cc:5729 fotoxx.h:1016 msgid "Remove" msgstr "Entfernen" -#: f.file.cc:5670 +#: f.file.cc:5731 msgid "menu name" msgstr "Menuname" -#: f.file.cc:5740 f.file.cc:5761 +#: f.file.cc:5801 f.file.cc:5822 msgid "Restart Fotoxx to update plugin menu" msgstr "Fotoxx neu starten um Menus zu aktualisieren" -#: f.file.cc:5803 -msgid "no plugin command" -msgstr "Kein Plug-in Kommando" +#: f.file.cc:5864 +msgid "Plugins menu is empty" +msgstr "Plugins-Menu ist leer" -#: f.file.cc:5831 +#: f.file.cc:5892 msgid "plugin failed" msgstr "Plug-in fehlgeschlagen" -#: f.image.cc:47 -msgid "Turn Image" -msgstr "Bild drehen" +#: f.image.cc:50 +msgid "Rotate Image 90º" +msgstr "Bild 90º drehen" + +#: f.image.cc:54 +msgid "rotate -90º" +msgstr "Drehen -90º" + +#: f.image.cc:55 +msgid "rotate +90º" +msgstr "Drehen +90º" -#: f.image.cc:114 +#: f.image.cc:123 msgid "Drag right edge with mouse" msgstr "Rechten Rand mit der Maus ziehen" -#: f.image.cc:144 +#: f.image.cc:153 msgid "Rotate Image" msgstr "Bild drehen" -#: f.image.cc:148 zfuncs.cc:9605 +#: f.image.cc:157 zfuncs.cc:9679 msgid "left" msgstr "links" -#: f.image.cc:151 zfuncs.cc:9606 +#: f.image.cc:160 zfuncs.cc:9680 msgid "right" msgstr "rechts" -#: f.image.cc:157 +#: f.image.cc:166 msgid "degrees" msgstr "Grad" -#: f.image.cc:442 +#: f.image.cc:451 msgid "Drag middle to move, drag corners to resize." msgstr "Zum Bewegen mittig ziehen, Ecken um Größe zu verändern." -#: f.image.cc:465 f.menus.cc:196 f.menus.cc:445 +#: f.image.cc:474 f.menus.cc:208 f.menus.cc:456 msgid "Trim/Crop" msgstr "Zuschneiden" -#: f.image.cc:476 f.image.cc:756 +#: f.image.cc:485 f.image.cc:765 msgid "ratio" msgstr "Verhältnis" -#: f.image.cc:480 +#: f.image.cc:489 msgid "portrait" msgstr "Hochformat" -#: f.image.cc:481 +#: f.image.cc:490 msgid "landscape" msgstr "Querformat" -#: f.image.cc:482 +#: f.image.cc:491 msgid "Lock Ratio" msgstr "Seitenverhältniss fixieren" -#: f.image.cc:486 +#: f.image.cc:495 msgid "customize" msgstr "Anpassen" -#: f.image.cc:748 +#: f.image.cc:757 msgid "Trim Buttons" msgstr "Schnitt-Knöpfe" -#: f.image.cc:755 +#: f.image.cc:764 msgid "label" msgstr "Kennsatz" -#: f.image.cc:1277 +#: f.image.cc:1286 msgid "Lock aspect ratio" msgstr "Breite/Höhe-Verhältnis fixieren" -#: f.image.cc:1298 +#: f.image.cc:1307 msgid "Resize Image" msgstr "Bildgröße verändern" -#: f.image.cc:1480 f.menus.cc:199 +#: f.image.cc:1491 f.menus.cc:211 msgid "Flip" msgstr "Spiegeln" -#: f.image.cc:1604 +#: f.image.cc:1610 msgid "Enter text, click/drag on image, right click to remove" msgstr "" "Text eingeben, Bild mit der Maus klicken/ziehen, zum Entfernen rechts klicken" -#: f.image.cc:1631 +#: f.image.cc:1645 msgid "Write Text on Image" msgstr "Texte auf Bild schreiben" -#: f.image.cc:1638 f.tools.cc:1100 -msgid "Text" -msgstr "Text" - -#: f.image.cc:1645 -msgid "Size" -msgstr "Große" - -#: f.image.cc:1656 -msgid "text" -msgstr "Text" - -#: f.image.cc:1657 -msgid "backing" -msgstr "Hinterfarbe" - -#: f.image.cc:1658 -msgid "outline" -msgstr "Umriss" - -#: f.image.cc:1659 -msgid "shadow" -msgstr "Shatten" - -#: f.image.cc:1661 f.menus.cc:61 f.menus.cc:107 f.menus.cc:273 fotoxx.h:949 -msgid "Color" -msgstr "Farbe" - -#: f.image.cc:1667 -msgid "Transparency" -msgstr "Transparenz" - -#: f.image.cc:1673 fotoxx.h:1017 -msgid "Width" -msgstr "Breite" - -#: f.image.cc:1679 -msgid "Angle" -msgstr "Winkel" - -#: f.image.cc:1686 -msgid "Text File:" -msgstr "Textdatei:" - -#: f.image.cc:1764 -msgid "select font" -msgstr "Font wählen" +#: f.image.cc:2312 +msgid "text file is defective" +msgstr "Textdatei ist defekt" -#: f.menus.cc:54 f.menus.cc:100 +#: f.menus.cc:54 f.menus.cc:115 msgid "File" msgstr "Datei" -#: f.menus.cc:55 f.menus.cc:101 +#: f.menus.cc:55 f.menus.cc:116 msgid "Tools" msgstr "Werkzeuge" -#: f.menus.cc:56 f.menus.cc:102 +#: f.menus.cc:56 f.menus.cc:117 msgid "Metadata" msgstr "Metadaten" -#: f.menus.cc:57 f.menus.cc:103 +#: f.menus.cc:57 f.menus.cc:118 msgid "Areas" msgstr "Ausschnitt" -#: f.menus.cc:59 f.menus.cc:105 +#: f.menus.cc:59 f.menus.cc:120 msgid "Retouch" msgstr "Retuschieren" -#: f.menus.cc:60 f.menus.cc:106 +#: f.menus.cc:60 f.menus.cc:121 msgid "Repair" msgstr "Ausbessern" -#: f.menus.cc:62 f.menus.cc:108 +#: f.menus.cc:62 f.menus.cc:123 msgid "Bend" msgstr "Biegen" -#: f.menus.cc:63 f.menus.cc:109 +#: f.menus.cc:63 f.menus.cc:124 msgid "Effects" msgstr "Effekte" -#: f.menus.cc:64 f.menus.cc:110 +#: f.menus.cc:64 f.menus.cc:125 msgid "Combine" msgstr "Verbund" -#: f.menus.cc:65 f.menus.cc:111 +#: f.menus.cc:65 f.menus.cc:126 msgid "Plugins" msgstr "Plugins" -#: f.menus.cc:66 f.menus.cc:112 fotoxx-13.08.cc:3631 fotoxx.h:967 +#: f.menus.cc:66 f.menus.cc:127 fotoxx-13.09.cc:3664 fotoxx.h:988 msgid "Help" msgstr "Hilfe" -#: f.menus.cc:99 f.menus.cc:271 +#: f.menus.cc:99 f.menus.cc:284 msgid "Favorites Menu" msgstr "Favoriten Menu" +#: f.menus.cc:100 +msgid "Open, Save, Trash, Rename, Print" +msgstr "Öffnen, Speichern, Papierkorb, Umbenennen, Drucken" + +#: f.menus.cc:101 +msgid "Synch Files, Settings, Collections, Batch Funcs ..." +msgstr "" +"Dateien synchronisieren, Einstellungen, Sammlungen, Stapelfunktionen ..." + +#: f.menus.cc:102 +msgid "Captions, Tags, Ratings, Geotags, Search ... " +msgstr "Titeln, Tags, Bewertungen, Geotags, Suchen ..." + +#: f.menus.cc:103 +msgid "Select image areas to edit, copy and paste" +msgstr "Bildausschnitte wählen zum Bearbeiten, Kopieren, Einfügen" + +#: f.menus.cc:104 +msgid "Rotate, Trim/Crop, Resize, Add Text" +msgstr "Drehen, Schneiden, Skalieren, Texte zufügen" + +#: f.menus.cc:105 +msgid "Improve brightness, contrast, color ..." +msgstr "Helligkeit, Kontrast, Farben ... verbessern" + +#: f.menus.cc:106 +msgid "Sharpen, Clean, Red-eyes, Paint, Clone ..." +msgstr "Schärfen, Säubern, Rote-Augen, Malen, Klonen ..." + +#: f.menus.cc:107 +msgid "White Balance, Color Profile, Color Matching" +msgstr "Weissabgleich, Farbraum, Farben anpassen" + +#: f.menus.cc:108 +msgid "Fix Perspective, Bend/Warp image ..." +msgstr "Perspektive verbessern, Bild entkrümmen ..." + +#: f.menus.cc:109 +msgid "Special Effects, Arty Transforms" +msgstr "Trickeffekte, kunstlerisch Verwandlungen" + +#: f.menus.cc:110 +msgid "HDR, HDF, Panorama, Stack, Mashup" +msgstr "HDR, HDF, Panorama, Stack, Mashup" + +#: f.menus.cc:111 +msgid "Use other image editors within Fotoxx" +msgstr "Andere Bildbearbeitungs-Programmen in Fotoxx Menus integrieren" + #: f.menus.cc:112 -msgid "User Guide etc." -msgstr "Benutzeranweisung usw." +msgid "Quick Start, User Guide, Recent Changes ..." +msgstr "Schnellstart, Benutzeranweisung, neueste Änderungen ..." -#: f.menus.cc:131 +#: f.menus.cc:146 msgid "New Window" msgstr "Neues Fenster" -#: f.menus.cc:131 +#: f.menus.cc:146 msgid "Open another window" msgstr "Neues Bild-Fenster aufmachen" -#: f.menus.cc:132 f.menus.cc:278 +#: f.menus.cc:147 f.menus.cc:291 msgid "Open a new image file" msgstr "Neue Bilddatei öffnen" -#: f.menus.cc:133 +#: f.menus.cc:148 msgid "Open Previous File" msgstr "Vorherige Bilddatei öffnen" -#: f.menus.cc:133 +#: f.menus.cc:148 msgid "Open the previously seen file" msgstr "Die vorher gesehene Bilddatei öffnen" -#: f.menus.cc:134 +#: f.menus.cc:149 msgid "Open a recently seen file" msgstr "Eine kürzliche gesehene Bilddatei öffnen" -#: f.menus.cc:134 +#: f.menus.cc:149 msgid "Recently Seen Images" msgstr "kürzlich gesehene Bilder" -#: f.menus.cc:135 +#: f.menus.cc:150 msgid "Newly Added Images" msgstr "neu eingefügte Bilder" -#: f.menus.cc:135 +#: f.menus.cc:150 msgid "Open a newly added file" msgstr "neu eingefügte Datei öffnen" -#: f.menus.cc:136 +#: f.menus.cc:151 msgid "Open and edit a camera RAW file" msgstr "RAW-Datei öffnen und bearbeiten" -#: f.menus.cc:137 -msgid "Save to Same File" -msgstr "in gleicher Datei speichern" - -#: f.menus.cc:137 -msgid "Save to the same file (replace)" -msgstr "in gleicher Datei speichern (ersetzen)" - -#: f.menus.cc:138 -msgid "Save to New Version" -msgstr "in neuer Version speichern" - -#: f.menus.cc:138 -msgid "Save to a new (next) version" -msgstr "in neuer (Nächsten) Version speichern" - -#: f.menus.cc:139 -msgid "Save to New File" -msgstr "in neuer Datei speichern" - -#: f.menus.cc:139 -msgid "Save to a new file name" -msgstr "in neuer Dateinamen speichern" +#: f.menus.cc:152 f.menus.cc:294 +msgid "Save modified image file to disk" +msgstr "Geänderte Bilddatei auf Festplatte speichern" -#: f.menus.cc:140 +#: f.menus.cc:152 +msgid "Save to Disk" +msgstr "Auf Festplatte speichern" + +#: f.menus.cc:153 msgid "Change the image file name" msgstr "Bilddateinamen ändern" -#: f.menus.cc:141 +#: f.menus.cc:154 msgid "Create a blank image" msgstr "Leerbild erstellen" -#: f.menus.cc:141 +#: f.menus.cc:154 msgid "New Blank Image" msgstr "Neues Leerbild" -#: f.menus.cc:142 f.menus.cc:284 +#: f.menus.cc:155 f.menus.cc:295 msgid "Move image file to Trash" msgstr "Bilddatei in den Abfall schieben" -#: f.menus.cc:143 +#: f.menus.cc:156 msgid "Print Image" msgstr "Bilddatei drucken" -#: f.menus.cc:143 +#: f.menus.cc:156 msgid "Print the current image" msgstr "Aktuelles Bild drucken" -#: f.menus.cc:144 +#: f.menus.cc:157 msgid "Quit Fotoxx" msgstr "Fotoxx beenden" -#: f.menus.cc:146 +#: f.menus.cc:159 msgid "Index new files and make thumbnails" msgstr "Neue Dateien indizieren und Thumbnails erstellen" -#: f.menus.cc:146 f.tools.cc:182 f.tools.cc:364 +#: f.menus.cc:159 f.tools.cc:182 f.tools.cc:364 msgid "Synchronize Files" msgstr "Dateien synchronisieren" -#: f.menus.cc:147 +#: f.menus.cc:160 msgid "Change user preferences" msgstr "Benutzereinstellungen ändern" -#: f.menus.cc:147 +#: f.menus.cc:160 msgid "User Settings" msgstr "Benutzereinstellungen" -#: f.menus.cc:148 +#: f.menus.cc:161 msgid "Change Keyboard Shortcut Keys" msgstr "Tastatur-Schnelltasten bearbeiten" -#: f.menus.cc:148 +#: f.menus.cc:161 msgid "Keyboard Shortcuts" msgstr "Schnelltasten" -#: f.menus.cc:149 f.tools.cc:2179 +#: f.menus.cc:162 f.tools.cc:2190 msgid "Manage Collections" msgstr "Sammlungen verwalten" -#: f.menus.cc:149 +#: f.menus.cc:162 msgid "Organize images into collections" msgstr "Bilder in Sammlungen organizieren" -#: f.menus.cc:150 +#: f.menus.cc:163 msgid "Convert for a new top directory" msgstr "Für ein neues oberstes Verzeichnis konvertieren" -#: f.menus.cc:150 +#: f.menus.cc:163 msgid "Move Collections" msgstr "Sammlungen versetzen" -#: f.menus.cc:151 f.tools.cc:2778 +#: f.menus.cc:164 f.tools.cc:2789 msgid "Slide Show" msgstr "Dia-Show" -#: f.menus.cc:151 +#: f.menus.cc:164 msgid "Start a slide show" msgstr "Dia-Show starten" -#: f.menus.cc:152 f.tools.cc:3863 +#: f.menus.cc:165 f.tools.cc:3874 msgid "Batch Rename" msgstr "Bilddateien umbenennen" -#: f.menus.cc:152 +#: f.menus.cc:165 msgid "Rename multiple image files" msgstr "Mehrere Bildateien umbenennen" -#: f.menus.cc:153 f.tools.cc:4078 +#: f.menus.cc:166 f.tools.cc:4089 msgid "Batch Convert/Resize/Move" msgstr "Bilddateien konvertieren/skalieren/versetzen" -#: f.menus.cc:153 +#: f.menus.cc:166 msgid "Convert resize, move multiple files" msgstr "Bilddateien konvertieren/skalieren/versetzen" -#: f.menus.cc:154 f.tools.cc:4416 +#: f.menus.cc:167 f.tools.cc:4427 msgid "Batch Convert RAW Files" msgstr "Stapel RAW konvertieren" -#: f.menus.cc:154 +#: f.menus.cc:167 msgid "Convert multiple camera RAW files" msgstr "Mehrere RAW-Dateien konvertieren" -#: f.menus.cc:155 f.tools.cc:4795 +#: f.menus.cc:168 f.tools.cc:4806 msgid "Brightness Distribution" msgstr "Helligkeitsverteilung" -#: f.menus.cc:155 +#: f.menus.cc:168 msgid "Show a brightness distribution graph" msgstr "Helligkeitsverteilungs-Grafik darstellen" -#: f.menus.cc:156 f.menus.cc:455 f.tools.cc:4990 +#: f.menus.cc:169 f.menus.cc:466 f.tools.cc:5001 msgid "Grid Lines" msgstr "Gitterlinien" -#: f.menus.cc:156 +#: f.menus.cc:169 msgid "Show or revise grid lines" msgstr "Gitterlinien zeigen oder ändern" -#: f.menus.cc:157 f.tools.cc:5166 +#: f.menus.cc:170 f.tools.cc:5177 msgid "Show RGB" msgstr "RGB-Werte zeigen" -#: f.menus.cc:157 +#: f.menus.cc:170 msgid "Show RGB colors at mouse click" msgstr "RGB-Werte auf Maus-klick zeigen" -#: f.menus.cc:158 +#: f.menus.cc:171 msgid "Chart to adjust monitor color" msgstr "Grafik um Monitor-Farben einzustellen" -#: f.menus.cc:158 +#: f.menus.cc:171 msgid "Monitor Color" msgstr "Monitor Farbgrafik" -#: f.menus.cc:159 +#: f.menus.cc:172 msgid "Chart to adjust monitor gamma" msgstr "Grafik um Monitor-Gamma einzustellen" -#: f.menus.cc:159 f.tools.cc:5490 +#: f.menus.cc:172 f.tools.cc:5501 msgid "Monitor Gamma" msgstr "Bildschirm-Gamma" -#: f.menus.cc:160 +#: f.menus.cc:173 msgid "Change Language" msgstr "Sprache wechseln" -#: f.menus.cc:160 +#: f.menus.cc:173 msgid "Change the GUI language" msgstr "GUI Sprache wechseln" -#: f.menus.cc:161 +#: f.menus.cc:174 msgid "Missing Translations" msgstr "Fehlende Übersetzungen" -#: f.menus.cc:161 +#: f.menus.cc:174 msgid "Report missing translations" msgstr "Fehlende Übersetzungen auflisten" -#: f.menus.cc:162 +#: f.menus.cc:175 msgid "Edit Translations" msgstr "Übersetzungen bearbeiten" -#: f.menus.cc:162 +#: f.menus.cc:175 msgid "Edit translations while using Fotoxx" msgstr "Übersetzungen mit Fotoxx online bearbeiten" -#: f.menus.cc:163 +#: f.menus.cc:176 msgid "Create a Gnome menu and launcher" msgstr "Gnome Menu und Starter erstellen" -#: f.menus.cc:163 +#: f.menus.cc:176 msgid "Menu and Launcher" msgstr "Menu und Starter" -#: f.menus.cc:164 +#: f.menus.cc:177 msgid "Burn Images to CD/DVD" msgstr "Bilder auf CD/DVD brennen" -#: f.menus.cc:164 +#: f.menus.cc:177 msgid "Burn selected image files to CD or DVD" msgstr "Ausgewählte Bilddateien auf CD oder DVD brennen" -#: f.menus.cc:165 +#: f.menus.cc:178 msgid "Memory and CPU (to terminal/logfile)" msgstr "Speicher und CPU (zu Terminal/Logdatei)" -#: f.menus.cc:165 +#: f.menus.cc:178 msgid "Resources" msgstr "Ressourcen" -#: f.menus.cc:167 -msgid "Edit Caption/Comments" -msgstr "Titel/Kommentare bearbeiten" - -#: f.menus.cc:167 -msgid "Edit image caption or comment" -msgstr "Bildbeschriftung oder Kommentar ändern" - -#: f.menus.cc:168 f.meta.cc:165 f.meta.cc:1728 +#: f.menus.cc:180 f.meta.cc:110 f.meta.cc:1897 msgid "Edit Metadata" msgstr "Metadata bearbeiten" -#: f.menus.cc:168 -msgid "Edit image date/rating/tags" -msgstr "Bild Datum/Bewertung/Tags bearbeiten" +#: f.menus.cc:180 +msgid "Edit image tags/caption/rating ..." +msgstr "Bild Tags, Titel, Bewertung ... verarbeiten" -#: f.menus.cc:169 +#: f.menus.cc:181 msgid "Add/remove tags for multiple images" msgstr "Tags in mehreren Bilder zuweisen/entfernen" -#: f.menus.cc:169 -msgid "Batch Tags" -msgstr "Tags Stapelbetrieb" +#: f.menus.cc:181 f.meta.cc:1552 +msgid "Batch Add/Remove Tags" +msgstr "Tags zuweisen/entfernen Stapelbetrieb" -#: f.menus.cc:170 +#: f.menus.cc:182 msgid "List a few key metadata items" msgstr "Wichtigste Metadaten auflisten" -#: f.menus.cc:170 +#: f.menus.cc:182 msgid "View Metadata (short)" msgstr "Metadaten ansehen (kurz)" -#: f.menus.cc:171 +#: f.menus.cc:183 msgid "List all metadata items" msgstr "Alle Metadaten auflisten" -#: f.menus.cc:171 +#: f.menus.cc:183 msgid "View Metadata (long)" msgstr "Metadaten ansehen (lang)" -#: f.menus.cc:172 +#: f.menus.cc:184 msgid "Edit Any Metadata" msgstr "Beliebige Metadaten bearbeiten" -#: f.menus.cc:172 +#: f.menus.cc:184 msgid "Edit any image metadata" msgstr "Beliebige Bild-Metadaten bearbeiten" -#: f.menus.cc:173 f.meta.cc:1820 +#: f.menus.cc:185 f.meta.cc:1989 msgid "Delete Metadata" msgstr "Metadata löschen" -#: f.menus.cc:173 +#: f.menus.cc:185 msgid "Remove all metadata from an image" msgstr "Alle Metadaten vom Bild entfernen" -#: f.menus.cc:174 +#: f.menus.cc:186 msgid "Download Geolocations" msgstr "Geolocations herunterladen" -#: f.menus.cc:174 +#: f.menus.cc:186 msgid "Download initial geolocation database" msgstr "Anfangs-Geolocations-Datenbank herunterladen" -#: f.menus.cc:176 f.meta.cc:2713 +#: f.menus.cc:188 f.meta.cc:2892 msgid "Edit Geotags" msgstr "Geotags bearbeiten" -#: f.menus.cc:176 -msgid "Edit image geotags" -msgstr "Bild Geotags bearbeiten" +#: f.menus.cc:188 +msgid "Edit image location and geotags" +msgstr "Bild Ort und Geotag verarbeiten" -#: f.menus.cc:177 +#: f.menus.cc:189 msgid "Add geotags to multiple images" msgstr "Geotags mehreren Bilder zufügen" -#: f.menus.cc:177 f.meta.cc:2905 +#: f.menus.cc:189 f.meta.cc:3084 msgid "Batch Add Geotags" msgstr "Geotags zu Bilder addieren" -#: f.menus.cc:178 +#: f.menus.cc:190 msgid "Find all images for a location [date]" msgstr "Alle Bilder für einen Ort [Datum] finden" -#: f.menus.cc:178 +#: f.menus.cc:190 msgid "Images by Location/Date" msgstr "Bilder nach Ort/Datum" -#: f.menus.cc:179 +#: f.menus.cc:191 msgid "Find images by clicking a world map" msgstr "Bilder finden durch Klicken auf einen Weltkarte-Ort" -#: f.menus.cc:179 +#: f.menus.cc:191 msgid "Images by Map Location" msgstr "Bilder von einem Weltkarte-Ort" -#: f.menus.cc:180 +#: f.menus.cc:192 msgid "Find images meeting select criteria" msgstr "Bilder nach Auswahlkriterien finden" -#: f.menus.cc:180 +#: f.menus.cc:192 msgid "Search Images" msgstr "Bilddatei durchsuchen" -#: f.menus.cc:182 fotoxx.h:1002 +#: f.menus.cc:194 fotoxx.h:1023 msgid "Select" msgstr "Auswählen" -#: f.menus.cc:182 +#: f.menus.cc:194 msgid "Select object or area for editing" msgstr "Ausschnitt zum Bearbeiten auswählen" -#: f.menus.cc:183 fotoxx.h:1004 +#: f.menus.cc:195 fotoxx.h:1025 msgid "Show" msgstr "Zeigen" -#: f.menus.cc:183 +#: f.menus.cc:195 msgid "Show (outline) existing area" msgstr "Aktuellen Ausschnitt zeigen (umranden)" -#: f.menus.cc:184 fotoxx.h:969 +#: f.menus.cc:196 fotoxx.h:990 msgid "Hide" msgstr "Ausblenden" -#: f.menus.cc:184 +#: f.menus.cc:196 msgid "Hide existing area" msgstr "Aktuellen Ausschnitt ausblenden" -#: f.menus.cc:185 fotoxx.h:959 +#: f.menus.cc:197 fotoxx.h:979 msgid "Enable" msgstr "Aktivieren" -#: f.menus.cc:185 +#: f.menus.cc:197 msgid "Enable area for editing" msgstr "Ausschnitt zum Bearbeiten aktivieren" -#: f.menus.cc:186 fotoxx.h:956 +#: f.menus.cc:198 fotoxx.h:976 msgid "Disable" msgstr "Ausschalten" -#: f.menus.cc:186 +#: f.menus.cc:198 msgid "Disable area for editing" msgstr "Ausschnitt ausschalten" -#: f.menus.cc:187 fotoxx.h:972 +#: f.menus.cc:199 fotoxx.h:993 msgid "Invert" msgstr "Invertieren" -#: f.menus.cc:187 +#: f.menus.cc:199 msgid "Reverse existing area" msgstr "Aktuellen Ausschnitt ins Gegenteil verkehren" -#: f.menus.cc:188 +#: f.menus.cc:200 msgid "Erase existing area" msgstr "Aktuellen Ausschnitt löschen" -#: f.menus.cc:188 fotoxx.h:1013 +#: f.menus.cc:200 fotoxx.h:1035 msgid "Unselect" msgstr "Deselektieren" -#: f.menus.cc:189 fotoxx.h:951 +#: f.menus.cc:201 fotoxx.h:971 msgid "Copy" msgstr "Kopieren" -#: f.menus.cc:189 +#: f.menus.cc:201 msgid "Copy an area for later pasting" msgstr "Ausschnitt kopieren für späteres Einfügen" -#: f.menus.cc:190 fotoxx.h:984 +#: f.menus.cc:202 fotoxx.h:1005 msgid "Paste" msgstr "Einfügen" -#: f.menus.cc:190 +#: f.menus.cc:202 msgid "Paste an area into the current image" msgstr "Ausschnitt in das Bild einfügen" -#: f.menus.cc:191 +#: f.menus.cc:203 msgid "Open a file with a saved area" msgstr "Datei mit gespeichertem Ausschnitt öffnen" -#: f.menus.cc:192 f.menus.cc:281 fotoxx.h:999 +#: f.menus.cc:204 f.menus.cc:294 fotoxx.h:1020 msgid "Save" msgstr "Speichern" -#: f.menus.cc:192 +#: f.menus.cc:204 msgid "Save an area to a file" msgstr "Ausschnitt als Datei speichern" -#: f.menus.cc:194 +#: f.menus.cc:206 msgid "Rotate 90 degrees" msgstr "90 Grad drehen" -#: f.menus.cc:194 f.menus.cc:447 -msgid "Turn" -msgstr "Drehen" +#: f.menus.cc:206 f.menus.cc:458 +msgid "Rotate 90º" +msgstr "Drehen 90º" -#: f.menus.cc:195 fotoxx.h:998 +#: f.menus.cc:207 fotoxx.h:1019 msgid "Rotate" msgstr "Drehen" -#: f.menus.cc:195 +#: f.menus.cc:207 msgid "Rotate by any angle" msgstr "Um beliebigen Winkel drehen" -#: f.menus.cc:196 +#: f.menus.cc:208 msgid "Cut off unwanted margins" msgstr "Unerwünschte Ränder abschneiden" -#: f.menus.cc:197 +#: f.menus.cc:209 msgid "Auto-Trim" msgstr "Auto-zuschneiden" -#: f.menus.cc:197 +#: f.menus.cc:209 msgid "Remove margins from warp, panorama, etc." msgstr "Ränder von Krümmen, Panorama, usw. entfernen" -#: f.menus.cc:198 +#: f.menus.cc:210 msgid "Change pixel dimensions" msgstr "Pixelgröße ändern" -#: f.menus.cc:199 +#: f.menus.cc:211 msgid "Mirror image horizontally or vertically" msgstr "Bild horizontal oder vertikal spiegeln" -#: f.menus.cc:200 +#: f.menus.cc:212 msgid "Add Text" msgstr "Texte zufügen" -#: f.menus.cc:200 +#: f.menus.cc:212 msgid "Write text on image" msgstr "Texte auf Bild schreiben" -#: f.menus.cc:202 +#: f.menus.cc:214 msgid "Fast auto enhance that may work OK" msgstr "Schnelle Auto-Verbesserung die klappen könnte" -#: f.menus.cc:202 f.menus.cc:448 +#: f.menus.cc:214 f.menus.cc:459 msgid "Voodoo Enhance" msgstr "Voodoo Verbesserung" -#: f.menus.cc:203 +#: f.menus.cc:215 msgid "Adjust brightness, contrast, color" msgstr "Helligkeit, Kontrast, Farbe einstellen" -#: f.menus.cc:203 f.menus.cc:449 -msgid "Brightness/Color" -msgstr "Helligkeit/Farbe" +#: f.menus.cc:215 f.retouch.cc:211 +msgid "Brightness/Contrast/Color" +msgstr "Helligkeit/Kontrast/Farbe" -#: f.menus.cc:204 +#: f.menus.cc:216 msgid "Adjust contrast using a gamma curve" msgstr "Kontrast mittels Gamma-Kurve einstellen" -#: f.menus.cc:204 f.menus.cc:450 +#: f.menus.cc:216 f.menus.cc:461 msgid "Gamma Curves" msgstr "Gamma Kurven" -#: f.menus.cc:205 +#: f.menus.cc:217 msgid "Add local contrast, enhance details" msgstr "Lokalen Kontrast erhöhen, Details hervorheben" -#: f.menus.cc:205 f.menus.cc:452 f.retouch.cc:1130 +#: f.menus.cc:217 f.menus.cc:463 f.retouch.cc:1130 msgid "Tone Mapping" msgstr "Tone Mapping" -#: f.menus.cc:206 f.menus.cc:451 +#: f.menus.cc:218 f.menus.cc:462 msgid "Flatten Brightness" msgstr "Helligkeit ausgleichen" -#: f.menus.cc:206 +#: f.menus.cc:218 msgid "Flatten brightness distribution" msgstr "Helligkeits-Verteilung verflachen" -#: f.menus.cc:207 +#: f.menus.cc:219 msgid "Expand Brightness" msgstr "Helligkeit ausdehnen" -#: f.menus.cc:207 +#: f.menus.cc:219 msgid "Expand brightness range" msgstr "Helligkeits Wertbereich ausdehnen" -#: f.menus.cc:208 +#: f.menus.cc:220 msgid "Brightness Ramp" msgstr "Helligkeit rampen" -#: f.menus.cc:208 +#: f.menus.cc:220 msgid "Fix brightness uniformity across image" msgstr "Helligkeits-Ungleichheiten verbessern" -#: f.menus.cc:209 f.retouch.cc:2361 +#: f.menus.cc:221 f.retouch.cc:2358 msgid "Paint Edits" msgstr "Änderungen anmalen" -#: f.menus.cc:209 -msgid "Paint edit function gradually with the mouse" +#: f.menus.cc:221 +msgid "Paint edit function gradually with mouse" msgstr "Änderungs-Funktion allmählich mit der Maus anmalen" -#: f.menus.cc:210 f.retouch.cc:2592 +#: f.menus.cc:222 f.retouch.cc:2589 msgid "Leverage Edits" msgstr "Änderungs-Hebelkraft" -#: f.menus.cc:210 +#: f.menus.cc:222 msgid "Leverage edits by brightness or color" msgstr "Änderungen verstärken nach Helligkeit oder Farbwert" -#: f.menus.cc:212 +#: f.menus.cc:224 msgid "Make the image look sharper" msgstr "Bild schärfer machen" -#: f.menus.cc:212 f.repair.cc:60 +#: f.menus.cc:224 f.repair.cc:60 msgid "Sharpen" msgstr "Schärfen" -#: f.menus.cc:213 f.repair.cc:1543 +#: f.menus.cc:225 f.repair.cc:1543 msgid "Blur" msgstr "Verwischen" -#: f.menus.cc:213 +#: f.menus.cc:225 msgid "Make the image look fuzzy" msgstr "Bild verschwommen machen" -#: f.menus.cc:214 +#: f.menus.cc:226 msgid "Filter noise from low-light photos" msgstr "Rausch in unterbelichteten Fotos ausfiltern" -#: f.menus.cc:214 +#: f.menus.cc:226 msgid "Reduce Noise" msgstr "Rauschen vermindern" -#: f.menus.cc:215 +#: f.menus.cc:227 msgid "Remove unwanted objects" msgstr "Unerwünschte Gegenstände entfernen" -#: f.menus.cc:215 f.repair.cc:1536 +#: f.menus.cc:227 f.repair.cc:1536 msgid "Smart Erase" msgstr "Smart löschen" -#: f.menus.cc:216 +#: f.menus.cc:228 msgid "Fix red-eyes from electronic flash" msgstr "Rote Augen von Blitzfotos entfernen" -#: f.menus.cc:216 f.menus.cc:454 +#: f.menus.cc:228 f.menus.cc:465 msgid "Red Eyes" msgstr "Rote Augen" -#: f.menus.cc:217 +#: f.menus.cc:229 msgid "Paint image pixels using the mouse" msgstr "Bild-Pixeln mit der Maus anmalen" -#: f.menus.cc:217 f.repair.cc:2357 +#: f.menus.cc:229 f.repair.cc:2357 msgid "Paint/Clone" msgstr "Malen/Klonen" -#: f.menus.cc:218 f.repair.cc:2880 +#: f.menus.cc:230 f.repair.cc:2880 msgid "Remove Dust" msgstr "Staub entfernen" -#: f.menus.cc:218 +#: f.menus.cc:230 msgid "Remove dust spots from scanned slides" msgstr "Staubflecken von gescannten Dias entfernen" -#: f.menus.cc:219 +#: f.menus.cc:231 msgid "Anti-alias" msgstr "Kantenglättung" -#: f.menus.cc:219 +#: f.menus.cc:231 msgid "Smoothen edges with jaggies" msgstr "Ränder mit Treppeneffekt glätten" -#: f.menus.cc:220 +#: f.menus.cc:232 msgid "Fix Color Fringes" msgstr "Farbränder ausbessern" -#: f.menus.cc:220 +#: f.menus.cc:232 msgid "Reduce Chromatic Abberation" msgstr "Chromatische Aberration reduzieren" -#: f.menus.cc:221 +#: f.menus.cc:233 msgid "Erase known hot and dark pixels" msgstr "Bekannte heiße und dunkle Pixeln löschen" -#: f.menus.cc:221 f.repair.cc:3890 +#: f.menus.cc:233 f.repair.cc:3894 msgid "Fix Stuck Pixels" msgstr "Festpixel reparieren" -#: f.menus.cc:223 +#: f.menus.cc:235 msgid "Click on a white/gray area to fix color tint" msgstr "Weiß/grau Stelle anklicken, um Farbton zu korrigieren" -#: f.menus.cc:223 f.menus.cc:453 +#: f.menus.cc:235 f.menus.cc:464 msgid "White Balance" msgstr "Weißabgleich" -#: f.menus.cc:224 +#: f.menus.cc:236 msgid "Make BW/color, negative/positive, sepia" msgstr "SW/farbiges Negativ/Positiv, Sepia machen" -#: f.menus.cc:225 +#: f.menus.cc:237 msgid "Color Profile" msgstr "Farbraum" -#: f.menus.cc:225 +#: f.menus.cc:237 msgid "Convert to another color profile" msgstr "In einen anderen Farbraum umwandeln" -#: f.menus.cc:226 +#: f.menus.cc:238 msgid "Match Colors" msgstr "Farben anpassen" -#: f.menus.cc:226 +#: f.menus.cc:238 msgid "Match colors on one image with another" msgstr "Farben in einem Bild an ein anderes anpassen" -#: f.menus.cc:227 +#: f.menus.cc:239 msgid "Adjust color in selected image areas" msgstr "Farben in ausgewählten Bereichen einstellen" -#: f.menus.cc:228 +#: f.menus.cc:240 msgid "Adjust color using CMYK or RGB values" msgstr "Farben einstellen mittels CMYK oder RGB Werte" -#: f.menus.cc:228 +#: f.menus.cc:240 msgid "CMYK Density" msgstr "CMYK Density" -#: f.menus.cc:230 +#: f.menus.cc:242 msgid "Remove curvature, esp. panoramas" msgstr "Entkrümmen, besonders bei Panoramen" -#: f.menus.cc:231 +#: f.menus.cc:243 msgid "Straighten objects seen from an angle" msgstr "Aus einem Winkel gesehene Objekte gerade machen" -#: f.menus.cc:232 +#: f.menus.cc:244 msgid "Flatten Book Page" msgstr "Buchseite flachmachen" -#: f.menus.cc:232 +#: f.menus.cc:244 msgid "Flatten a photographed book page" msgstr "Foto von einer Buchseite flachmachen" -#: f.menus.cc:233 +#: f.menus.cc:245 msgid "Distort image areas using the mouse" msgstr "Bild-Ausschnitt mit der Maus krümmen" -#: f.menus.cc:234 f.menus.cc:235 f.menus.cc:236 +#: f.menus.cc:246 f.menus.cc:247 f.menus.cc:248 msgid "Distort the whole image using the mouse" msgstr "Ganzes Bild mit der Maus krümmen" -#: f.menus.cc:238 +#: f.menus.cc:250 msgid "Color Depth" msgstr "Farbtiefe" -#: f.menus.cc:238 +#: f.menus.cc:250 msgid "Reduce color depth (posterize)" msgstr "Farbtiefe reduzieren (Posterisation)" -#: f.menus.cc:239 +#: f.menus.cc:251 msgid "Convert to pencil sketch" msgstr "In eine Stiftzeichnung verwandeln" -#: f.menus.cc:239 +#: f.menus.cc:251 msgid "Sketch" msgstr "Zeichnung" -#: f.menus.cc:240 +#: f.menus.cc:252 msgid "Convert to colored line drawing" msgstr "In eine Farbstift-Zeichnung verwandeln" -#: f.menus.cc:240 +#: f.menus.cc:252 msgid "Drawing" msgstr "Zeichnung" -#: f.menus.cc:241 +#: f.menus.cc:253 msgid "Graduated Blur depending on contrast" msgstr "Gestaffelte Verwischung je nach dem Kontrast" -#: f.menus.cc:242 +#: f.menus.cc:254 msgid "Create an embossed or 3D appearance" msgstr "In eine Prägung mit 3D Wirkung verwandeln" -#: f.menus.cc:242 +#: f.menus.cc:254 msgid "Embossing" msgstr "Prägung" -#: f.menus.cc:243 +#: f.menus.cc:255 msgid "Convert to square tiles" msgstr "In Kacheln verwandeln" -#: f.menus.cc:243 +#: f.menus.cc:255 msgid "Tiles" msgstr "Kacheln" -#: f.menus.cc:244 +#: f.menus.cc:256 msgid "Convert to dots (Roy Lichtenstein effect)" msgstr "In Rasterpunkte verwandeln (Roy Lichtenstein Effekt)" -#: f.menus.cc:244 +#: f.menus.cc:256 msgid "Dots" msgstr "Rasterpunkte" -#: f.menus.cc:245 +#: f.menus.cc:257 msgid "Convert into a simulated painting" msgstr "In ein simuliertes Gemälde verwandeln" -#: f.menus.cc:245 +#: f.menus.cc:257 msgid "Painting" msgstr "Gemälde" -#: f.menus.cc:246 +#: f.menus.cc:258 msgid "Shift/convert colors into other colors" msgstr "Farben in andere Farben verwandeln" -#: f.menus.cc:247 +#: f.menus.cc:259 msgid "Change brightness or color radially" msgstr "Helligkeit oder Farbwert radial ändern" -#: f.menus.cc:249 +#: f.menus.cc:261 msgid "Combine bright/dark images for better detail" msgstr "Hell- und Dunkel-Bilder kombinieren um Details zu verbessern" -#: f.menus.cc:249 +#: f.menus.cc:261 msgid "High Dynamic Range" msgstr "Hoher Dynamikbereich" -#: f.menus.cc:250 +#: f.menus.cc:262 msgid "Combine near/far focus images for deeper focus" msgstr "Bilder mit näher/ferner Fokus kombinieren für mehr Schärfentiefe" -#: f.menus.cc:250 +#: f.menus.cc:262 msgid "High Depth of Field" msgstr "Hohe Schärfentiefe" -#: f.menus.cc:251 +#: f.menus.cc:263 msgid "Combine images to erase passing people, etc." msgstr "Bilder kombinieren um vorbeigehende Menschen, usw. zu entfernen" -#: f.menus.cc:251 +#: f.menus.cc:263 msgid "Stack / Paint" msgstr "Stapeln / malen" -#: f.menus.cc:252 +#: f.menus.cc:264 msgid "Combine noisy images into a low-noise image" msgstr "Rauschige Bilder zu einem Niedrig-Rausch Bild kombinieren" -#: f.menus.cc:252 +#: f.menus.cc:264 msgid "Stack / Noise" msgstr "Stapeln / Rauschen" -#: f.menus.cc:253 +#: f.menus.cc:265 msgid "Combine images into a panorama" msgstr "Bilder zu einem Panorama-Bild kombinieren" -#: f.menus.cc:253 +#: f.menus.cc:265 msgid "Panorama" msgstr "Panorama" -#: f.menus.cc:254 +#: f.menus.cc:266 msgid "Combine images into a vertical panorama" msgstr "Bilder zu einem Vertikal-Panorama kombinieren" -#: f.menus.cc:254 +#: f.menus.cc:266 msgid "Vertical Panorama" msgstr "Vertikales Panorama" -#: f.menus.cc:256 +#: f.menus.cc:267 +msgid "Arrange multiple images on a background image" +msgstr "Bilder auf Hintergrund-Lageplan ordnen" + +#: f.menus.cc:267 +msgid "Mashup" +msgstr "Mashup" + +#: f.menus.cc:269 msgid "Add another image editor to the menu" msgstr "Ein anderes Bildprogram ins Menu zufügen" -#: f.menus.cc:256 +#: f.menus.cc:269 msgid "Edit Plugins" msgstr "Plugins bearbeiten" -#: f.menus.cc:258 fotoxx-13.08.cc:3597 +#: f.menus.cc:271 fotoxx-13.09.cc:3630 msgid "Quick Start" msgstr "Schnell-Start" -#: f.menus.cc:258 +#: f.menus.cc:271 msgid "Quick Start mini-guide" msgstr "Schnell-Start Mini-Anweisung" -#: f.menus.cc:259 +#: f.menus.cc:272 msgid "Read the user guide" msgstr "Benutzeranleitung lesen" -#: f.menus.cc:259 fotoxx-13.08.cc:3600 +#: f.menus.cc:272 fotoxx-13.09.cc:3633 msgid "User Guide" msgstr "Benutzeranleitung" -#: f.menus.cc:260 +#: f.menus.cc:273 msgid "Recent user guide changes" msgstr "Neueste Benutzeranleitungs-Änderungen" -#: f.menus.cc:260 fotoxx-13.08.cc:3603 +#: f.menus.cc:273 fotoxx-13.09.cc:3636 msgid "User Guide Changes" msgstr "Benutzeranleitung Änderungen" -#: f.menus.cc:261 +#: f.menus.cc:274 msgid "Fotoxx updates notification" msgstr "Fotoxx Aktualisierungs-Benachrichtigung" -#: f.menus.cc:261 fotoxx-13.08.cc:3606 +#: f.menus.cc:274 fotoxx-13.09.cc:3639 msgid "Program Updates" msgstr "Programaktualisierungen" -#: f.menus.cc:262 fotoxx-13.08.cc:3612 +#: f.menus.cc:275 fotoxx-13.09.cc:3645 msgid "Edit Functions Summary" msgstr "Verarbeitungsfunktionen Übersicht" -#: f.menus.cc:262 +#: f.menus.cc:275 msgid "Summary of image edit functions" msgstr "Bildbearbeitungsfunktionen Zusammenfassung" -#: f.menus.cc:263 fotoxx-13.08.cc:3609 +#: f.menus.cc:276 fotoxx-13.09.cc:3642 msgid "README" msgstr "LIESMICH" -#: f.menus.cc:263 +#: f.menus.cc:276 msgid "Technical installation notes" msgstr "Technische Installierungsnotizen" -#: f.menus.cc:264 fotoxx-13.08.cc:3615 +#: f.menus.cc:277 fotoxx-13.09.cc:3648 msgid "Change Log" msgstr "Änderungslog" -#: f.menus.cc:264 +#: f.menus.cc:277 msgid "List updates by Fotoxx version" msgstr "Änderungen nach Fotoxxversion auflisten" -#: f.menus.cc:265 fotoxx-13.08.cc:3618 +#: f.menus.cc:278 fotoxx-13.09.cc:3651 msgid "Log File" msgstr "Fehlerlogdatei" -#: f.menus.cc:265 +#: f.menus.cc:278 msgid "View the log file and error messages" msgstr "Logdatei und Fehlermeldungen auflisten" -#: f.menus.cc:266 +#: f.menus.cc:279 msgid "How to do Fotoxx translations" msgstr "Wie eine Fotoxx Übersetzung erstellt wird" -#: f.menus.cc:266 fotoxx-13.08.cc:3621 +#: f.menus.cc:279 fotoxx-13.09.cc:3654 msgid "Translations" msgstr "Übersetzungen" -#: f.menus.cc:267 fotoxx-13.08.cc:3624 +#: f.menus.cc:280 fotoxx-13.09.cc:3657 msgid "Home Page" msgstr "Homepage" -#: f.menus.cc:267 +#: f.menus.cc:280 msgid "Show the Fotoxx web page" msgstr "Fotoxx Webseite zeigen" -#: f.menus.cc:268 fotoxx-13.08.cc:3627 +#: f.menus.cc:281 fotoxx-13.09.cc:3660 msgid "About" msgstr "Über Fotoxx" -#: f.menus.cc:268 +#: f.menus.cc:281 msgid "Version, license, contact, credits" msgstr "Version, Lizens, Kontakt, Mitwirkende" -#: f.menus.cc:271 +#: f.menus.cc:284 msgid "Favs" msgstr "Favis" -#: f.menus.cc:273 +#: f.menus.cc:286 msgid "Color of area borders etc." msgstr "Farbe von Ausschnitträndern usw." -#: f.menus.cc:274 fotoxx.h:1011 +#: f.menus.cc:287 fotoxx.h:1033 msgid "Undo" msgstr "Undo" -#: f.menus.cc:274 +#: f.menus.cc:287 msgid "Undo one edit" msgstr "Eine Änderung wiederrufen" -#: f.menus.cc:275 fotoxx.h:993 +#: f.menus.cc:288 fotoxx.h:1014 msgid "Redo" msgstr "Redo" -#: f.menus.cc:275 +#: f.menus.cc:288 msgid "Redo one edit" msgstr "Wiederrufene Änderung zurückholen" -#: f.menus.cc:277 f.menus.cc:389 -msgid "Gallery from Tab F" -msgstr "Galerie von Tab F" +#: f.menus.cc:290 f.menus.cc:400 +msgid "Set gallery from current image file" +msgstr "Gallerie vom aktuellen Bild bestimmen" + +#: f.menus.cc:290 f.menus.cc:400 +msgid "Sync.G" +msgstr "Sync.G" -#: f.menus.cc:279 +#: f.menus.cc:292 msgid "Open the previous file" msgstr "Vorherige Bilddatei öffnen" -#: f.menus.cc:279 fotoxx.h:988 +#: f.menus.cc:292 fotoxx.h:1009 msgid "Prev" msgstr "Vorig" -#: f.menus.cc:280 fotoxx.h:979 +#: f.menus.cc:293 fotoxx.h:1000 msgid "Next" msgstr "Nächst" -#: f.menus.cc:280 +#: f.menus.cc:293 msgid "Open the next file" msgstr "Nächte Bilddatei öffnen" -#: f.menus.cc:281 -msgid "Save to the same file" -msgstr "In gleicher Datei speichern (überschreiben)" - -#: f.menus.cc:282 -msgid "Save to a new version" -msgstr "In einer neuen Dateiversion speichern" - -#: f.menus.cc:282 -msgid "Save+V" -msgstr "Speich+V" - -#: f.menus.cc:283 -msgid "Save to a new file" -msgstr "In einer neuen Datei speichern" - -#: f.menus.cc:283 -msgid "Save+F" -msgstr "Speich+D" - -#: f.menus.cc:284 f.menus.cc:437 fotoxx.h:1008 +#: f.menus.cc:295 f.menus.cc:448 fotoxx.h:1030 msgid "Trash" msgstr "Abfall" -#: f.menus.cc:303 f.menus.cc:332 +#: f.menus.cc:314 f.menus.cc:343 msgid "Run as Fotoxx edit function" msgstr "Als Fotoxx-Bearbeitungsfunktion benutzen" -#: f.menus.cc:391 +#: f.menus.cc:382 +msgid "Top" +msgstr "Oben" + +#: f.menus.cc:401 +msgid "open another directory" +msgstr "Neues Verzeichnis öffnen" + +#: f.menus.cc:402 msgid "go to bookmarked image" msgstr "Zum Lesezeichen-markierten Bild gehen" -#: f.menus.cc:392 +#: f.menus.cc:403 msgid "increase thumbnail size" msgstr "Thumbnails vergrößern" -#: f.menus.cc:393 +#: f.menus.cc:404 msgid "reduce thumbnail size" msgstr "Thumbnails verkleinern" -#: f.menus.cc:394 -msgid "jump to first page" -msgstr "Zur ersten Seite" - -#: f.menus.cc:395 -msgid "jump to last page" -msgstr "Zur letzten Seite" +#: f.menus.cc:405 +msgid "change sort order" +msgstr "Reihenfolge ändern" + +#: f.menus.cc:406 +msgid "jump to beginning (top)" +msgstr "Zum Anfang springen (oben)" + +#: f.menus.cc:407 +msgid "jump to end (bottom)" +msgstr "Zu Ende springen (unten)" -#: f.menus.cc:396 +#: f.menus.cc:408 msgid "previous page" msgstr "Vorherige Seite" -#: f.menus.cc:397 +#: f.menus.cc:409 msgid "next page" msgstr "Nächste Seite" -#: f.menus.cc:398 +#: f.menus.cc:410 msgid "previous row" msgstr "Vorherige Reihe" -#: f.menus.cc:399 +#: f.menus.cc:411 msgid "next row" msgstr "Nächste Reihe" -#: f.menus.cc:400 -msgid "change sequence" -msgstr "Reihenfolge ändern" - -#: f.menus.cc:434 fotoxx.h:996 +#: f.menus.cc:445 fotoxx.h:1017 msgid "Rename" msgstr "Umbenennen" -#: f.menus.cc:435 +#: f.menus.cc:446 msgid "Copy to Location" msgstr "zu Speicherstelle kopieren" -#: f.menus.cc:436 +#: f.menus.cc:447 msgid "Move to Location" msgstr "Speicherstelle versetzen" -#: f.menus.cc:438 fotoxx.h:955 +#: f.menus.cc:449 fotoxx.h:975 msgid "Delete" msgstr "Löschen" -#: f.menus.cc:439 +#: f.menus.cc:450 msgid "Copy to Clipboard" msgstr "Auf Zwischenablage kopieren" -#: f.menus.cc:440 +#: f.menus.cc:451 msgid "Remove from Collection" msgstr "Von Sammlung entfernen" -#: f.menus.cc:441 +#: f.menus.cc:452 msgid "Cut to Image Cache" msgstr "zu Bildercache ausschneiden" -#: f.menus.cc:442 +#: f.menus.cc:453 msgid "Copy to Image Cache" msgstr "zu Bildercache kopieren" -#: f.menus.cc:443 +#: f.menus.cc:454 msgid "Paste Image Cache Here (clear)" msgstr "Bildercache hier einfügen (löschen)" -#: f.menus.cc:444 +#: f.menus.cc:455 msgid "Paste Image Cache Here (keep)" msgstr "Bildercache hier einfügen (behalten)" -#: f.menus.cc:456 +#: f.menus.cc:460 +msgid "Brightness/Color" +msgstr "Helligkeit/Farbe" + +#: f.menus.cc:467 msgid "Select Area" msgstr "Ausschnitt auswählen" -#: f.meta.cc:87 -msgid "Edit Caption and Comments" -msgstr "Titel und Kommentare bearbeiten" +#: f.meta.cc:72 +msgid "" +"Metadata index is missing.\n" +"Use Tools > Synchronize Files." +msgstr "" +"Metadaten Index fehlt.\n" +"Werkzeuge > Dateien synchronisieren benutzen." + +#: f.meta.cc:106 +#, c-format +msgid "Rating: %c (stars)" +msgstr "Bewertung: %c (Sterne)" + +#: f.meta.cc:142 +msgid "Size:" +msgstr "Größe:" + +#: f.meta.cc:148 +msgid "Image Width:" +msgstr "Bild Breite:" + +#: f.meta.cc:151 +msgid "Height:" +msgstr "Höhe:" + +#: f.meta.cc:154 +msgid "Depth:" +msgstr "Tiefe:" + +#: f.meta.cc:159 +msgid "Image Date" +msgstr "Bild Datum" + +#: f.meta.cc:162 +msgid "Time" +msgstr "Zeit" + +#: f.meta.cc:164 +msgid "get prev" +msgstr "Vorherig" + +#: f.meta.cc:169 +msgid "Choose:" +msgstr "Wählen:" -#: f.meta.cc:98 +#: f.meta.cc:181 msgid "Caption" msgstr "Titel" -#: f.meta.cc:102 +#: f.meta.cc:187 msgid "Comments" msgstr "Kommentare" -#: f.meta.cc:173 -msgid "image date (yyyymmdd)" -msgstr "Bilddatum (jjjjmmtt)" - -#: f.meta.cc:175 -msgid "use last" -msgstr "Letztes" - -#: f.meta.cc:178 -msgid "image stars" -msgstr "Bild-Sterne" - -#: f.meta.cc:196 -msgid "current tags" -msgstr "Aktuelle Tags" +#: f.meta.cc:193 +msgid "Image Tags" +msgstr "Bild Tags" -#: f.meta.cc:201 -msgid "recent tags" +#: f.meta.cc:199 +msgid "Recent Tags" msgstr "Kürzliche Tags" -#: f.meta.cc:206 f.meta.cc:387 f.meta.cc:1404 f.meta.cc:3932 -msgid "defined tags" +#: f.meta.cc:205 f.meta.cc:556 f.meta.cc:1573 f.meta.cc:4111 +msgid "Defined Tags" msgstr "Definierte Tags" -#: f.meta.cc:373 fotoxx.h:976 +#: f.meta.cc:455 +msgid "date format is YYYY-MM-DD" +msgstr "Datumformat ist JJJJ-MM-TT" + +#: f.meta.cc:459 +msgid "date is invalid" +msgstr "Datum ist ungültig" + +#: f.meta.cc:492 +msgid "time format is HH:MM [:SS]" +msgstr "Zeitformat ist HH:MM [:SS]" + +#: f.meta.cc:496 +msgid "time is invalid" +msgstr "Zeit ist ungültig" + +#: f.meta.cc:542 fotoxx.h:997 msgid "Manage Tags" msgstr "Tags verwalten" -#: f.meta.cc:373 +#: f.meta.cc:542 msgid "orphan tags" msgstr "verwaiste Tags" -#: f.meta.cc:377 +#: f.meta.cc:546 msgid "category" msgstr "Gruppe" -#: f.meta.cc:380 +#: f.meta.cc:549 msgid "tag" msgstr "Tag" -#: f.meta.cc:383 +#: f.meta.cc:552 msgid "create" msgstr "Erstellen" -#: f.meta.cc:384 +#: f.meta.cc:553 msgid "delete" msgstr "Löschen" -#: f.meta.cc:1383 -msgid "Batch Add/Remove Tags" -msgstr "Tags zuweisen/entfernen Stapelbetrieb" +#: f.meta.cc:1557 f.meta.cc:3116 f.tools.cc:2792 f.tools.cc:3877 +#: f.tools.cc:4093 f.tools.cc:4455 +msgid "0 files selected" +msgstr "0 Dateien ausgewählt" -#: f.meta.cc:1394 +#: f.meta.cc:1563 msgid "tags to add" msgstr "Tags zum Zuweisen" -#: f.meta.cc:1395 +#: f.meta.cc:1564 msgid "tags to remove" msgstr "Tags zum Entfernen" -#: f.meta.cc:1476 +#: f.meta.cc:1645 #, c-format msgid "" "%s \n" @@ -2361,29 +2567,37 @@ "%s \n" " Zuviele Tags" -#: f.meta.cc:1590 +#: f.meta.cc:1759 msgid "specify files and tags" msgstr "Tags und Dateien angeben" -#: f.meta.cc:1617 f.meta.cc:3044 f.tools.cc:2819 f.tools.cc:3011 -#: f.tools.cc:3051 f.tools.cc:4001 f.tools.cc:4311 f.tools.cc:4664 +#: f.meta.cc:1786 f.meta.cc:3223 f.tools.cc:2830 f.tools.cc:3022 +#: f.tools.cc:3062 f.tools.cc:4012 f.tools.cc:4322 f.tools.cc:4675 #, c-format msgid "%d files selected" msgstr "%d Dateien ausgewählt" -#: f.meta.cc:1664 +#: f.meta.cc:1833 msgid "View Metadata" msgstr "Metadata ansehen" -#: f.meta.cc:1822 fotoxx.h:937 +#: f.meta.cc:1901 +msgid "key name" +msgstr "Schlüsselwort" + +#: f.meta.cc:1903 +msgid "key value" +msgstr "Inhalt" + +#: f.meta.cc:1991 fotoxx.h:956 msgid "All" msgstr "Alles" -#: f.meta.cc:1823 +#: f.meta.cc:1992 msgid "One Key:" msgstr "Ein Key:" -#: f.meta.cc:1954 +#: f.meta.cc:2123 #, c-format msgid "" "Download geotags data (8 megabytes). \n" @@ -2394,36 +2608,52 @@ "In %s speichern \n" "Fortsetzen?" -#: f.meta.cc:1990 +#: f.meta.cc:2159 msgid "download failed" msgstr "Download gescheitert" -#: f.meta.cc:2025 +#: f.meta.cc:2192 fotoxx-13.09.cc:855 +msgid "Location from World Map" +msgstr "Ort von der Weltkarte" + +#: f.meta.cc:2194 +msgid "Loading world map" +msgstr "Weltkarte laden ..." + +#: f.meta.cc:2201 msgid "please download geolocations data" msgstr "Geolocation-Daten bitte herunterladen" -#: f.meta.cc:2138 +#: f.meta.cc:2209 +msgid "Loading geolocations" +msgstr "Geolocations laden ..." + +#: f.meta.cc:2327 msgid "geotags file must be downloaded" msgstr "Geotags mußen herundergeladen werden" -#: f.meta.cc:2432 f.meta.cc:2889 f.meta.cc:3152 +#: f.meta.cc:2611 f.meta.cc:3068 f.meta.cc:3331 #, c-format msgid "bad latitude/longitude: %s %s" msgstr "Latitude/Longitude falsch: %s %s" -#: f.meta.cc:2731 f.meta.cc:2939 f.meta.cc:4432 +#: f.meta.cc:2893 +msgid "Geocoding web service courtesy of" +msgstr "Geocodingdienst mit Genehmigung von" + +#: f.meta.cc:2910 f.meta.cc:3118 f.meta.cc:4611 msgid "city" msgstr "Stadt" -#: f.meta.cc:2734 f.meta.cc:2942 f.meta.cc:4435 +#: f.meta.cc:2913 f.meta.cc:3121 f.meta.cc:4614 msgid "country" msgstr "Land" -#: f.meta.cc:2802 f.meta.cc:3065 +#: f.meta.cc:2981 f.meta.cc:3244 msgid "city not found" msgstr "Stadt nicht gefunden" -#: f.meta.cc:3130 +#: f.meta.cc:3309 msgid "" "data is incomplete \n" " proceed?" @@ -2431,123 +2661,127 @@ "Daten nicht vollständig \n" " Fortsetzen?" -#: f.meta.cc:3156 +#: f.meta.cc:3335 msgid "no files selected" msgstr "Keine Dateien ausgewählt" -#: f.meta.cc:3188 +#: f.meta.cc:3367 msgid "choose city" msgstr "Stadt auswählen" -#: f.meta.cc:3272 +#: f.meta.cc:3451 msgid "not found" msgstr "Nicht gefunden" -#: f.meta.cc:3273 +#: f.meta.cc:3452 msgid "city and country required" msgstr "Stadt und Land erforderlich" -#: f.meta.cc:3365 +#: f.meta.cc:3544 msgid "Report Geotag Groups" msgstr "Geotag-Gruppen auflisten" -#: f.meta.cc:3366 +#: f.meta.cc:3545 msgid "Group by country" msgstr "Nach Land gruppieren" -#: f.meta.cc:3367 +#: f.meta.cc:3546 msgid "Group by country/city" msgstr "Nach Land/Stadt gruppieren" -#: f.meta.cc:3368 +#: f.meta.cc:3547 msgid "Group by country/city/date" msgstr "Nach Land/Stadt/Datum gruppieren" -#: f.meta.cc:3371 +#: f.meta.cc:3550 msgid "Combine within" msgstr "Kombinieren innerhalb" -#: f.meta.cc:3373 +#: f.meta.cc:3552 msgid "days" msgstr "Tage" -#: f.meta.cc:3715 +#: f.meta.cc:3667 +msgid "geotag groups" +msgstr "Geotaggruppen" + +#: f.meta.cc:3894 msgid "search range (km)" msgstr "Suchentfernung (km)" -#: f.meta.cc:3786 +#: f.meta.cc:3965 msgid "No matching images found" msgstr "Keine übereinstimmenden Bilder gefunden" -#: f.meta.cc:3872 +#: f.meta.cc:4051 msgid "Search Image Metadata" msgstr "Bilder-Metadaten suchen" -#: f.meta.cc:3876 +#: f.meta.cc:4055 msgid "images to search:" msgstr "Bilder durchsuchen:" -#: f.meta.cc:3877 +#: f.meta.cc:4056 msgid "all" msgstr "Alle" -#: f.meta.cc:3878 +#: f.meta.cc:4057 msgid "current set only" msgstr "nur Aktueller Satz" -#: f.meta.cc:3881 +#: f.meta.cc:4060 msgid "matching images:" msgstr "passende Bilder:" -#: f.meta.cc:3882 +#: f.meta.cc:4061 msgid "new set" msgstr "neuer Satz" -#: f.meta.cc:3883 +#: f.meta.cc:4062 msgid "add to set" msgstr "dem Satz zufügen" -#: f.meta.cc:3884 +#: f.meta.cc:4063 msgid "remove" msgstr "entfernen" -#: f.meta.cc:3890 +#: f.meta.cc:4069 msgid "date range" msgstr "Datumsbereich" -#: f.meta.cc:3891 +#: f.meta.cc:4070 msgid "stars range" msgstr "Sterne-Wertebereich" -#: f.meta.cc:3892 +#: f.meta.cc:4071 msgid "search tags" msgstr "Such-Tags" -#: f.meta.cc:3893 +#: f.meta.cc:4072 msgid "search text" msgstr "Text durchsuchen" -#: f.meta.cc:3894 +#: f.meta.cc:4073 msgid "search files" msgstr "Dateien suchen" -#: f.meta.cc:3899 +#: f.meta.cc:4078 msgid "(yyyymmdd)" msgstr "(jjjjmmtt)" -#: f.meta.cc:3905 +#: f.meta.cc:4084 msgid "all/any" msgstr "alle/irgendeines" -#: f.meta.cc:3924 +#: f.meta.cc:4103 msgid "other criteria" msgstr "Andere Auswahlkriterien" -#: f.meta.cc:3928 +#: f.meta.cc:4107 msgid "other" msgstr "Andere" -#: f.meta.cc:4059 +#: f.meta.cc:4238 msgid "" "to remove images from current set, \n" "search current set" @@ -2555,7 +2789,7 @@ "Um Bilder vom aktuellen Satz zu entfernen, \n" "aktuellen Satz durchsuchen" -#: f.meta.cc:4066 +#: f.meta.cc:4245 msgid "" "to add images to current set, \n" "search all images" @@ -2563,28 +2797,28 @@ "Um Bilder dem aktuellen Satz zuzufügen, \n" "alle Bilder durchsuchen" -#: f.meta.cc:4293 +#: f.meta.cc:4472 #, c-format msgid "images added: %d removed: %d new count: %d" msgstr "Bilder zugefügt: %d entfernt: %d neue Anzahl: %d" -#: f.meta.cc:4296 +#: f.meta.cc:4475 msgid "no changes made" msgstr "keine Änderungen gemach" -#: f.meta.cc:4429 +#: f.meta.cc:4608 msgid "Add Geotags Search Criteria" msgstr "Geotags Suchkriterien addieren" -#: f.meta.cc:4448 +#: f.meta.cc:4627 msgid "range (km)" msgstr "Entfernung (km)" -#: f.meta.cc:4539 +#: f.meta.cc:4718 msgid "error in latitude/longitude/range" msgstr "Fehler in Längengrad/Breitengrad/Entfernung" -#: f.meta.cc:4604 +#: f.meta.cc:4783 msgid "" "These items are always reported: \n" "date, stars, tags, caption, comment" @@ -2592,15 +2826,15 @@ "Folgende wird immer berichtet: \n" "Datum, Sterne, Tags, Titel, Kommentare" -#: f.meta.cc:4628 +#: f.meta.cc:4807 msgid "Additional Items for Report" msgstr "Zusätzliche Metadaten im Bericht" -#: f.meta.cc:4634 +#: f.meta.cc:4813 msgid "Keyword" msgstr "Schlüsselwort" -#: f.meta.cc:4641 +#: f.meta.cc:4820 msgid "Match Criteria" msgstr "Trefferkriterien" @@ -2648,7 +2882,7 @@ "1. Zum Selektieren, Maus ziehen. \n" "2. Löschen. 3. Wiederholen. " -#: f.repair.cc:1541 fotoxx.h:990 +#: f.repair.cc:1541 fotoxx.h:1011 msgid "Radius" msgstr "Radius" @@ -2746,38 +2980,30 @@ msgid "Chromatic Abberation" msgstr "Chromatische Aberration" -#: f.repair.cc:3896 +#: f.repair.cc:3900 msgid "pixel group" msgstr "Pixelgruppe" -#: f.repair.cc:3897 +#: f.repair.cc:3901 msgid "circle color" msgstr "Kreisfarbe" -#: f.repair.cc:4006 +#: f.repair.cc:3913 f.repair.cc:3957 +msgid "stuck pixels:" +msgstr "Feste Pixels:" + +#: f.repair.cc:4023 msgid "Load Stuck Pixels" msgstr "Festpixel laden" -#: f.repair.cc:4030 f.repair.cc:4126 +#: f.repair.cc:4047 f.repair.cc:4113 msgid "Stuck Pixels file" msgstr "Festpixel Datei" -#: f.repair.cc:4070 +#: f.repair.cc:4087 msgid "file format error" msgstr "Dateiformat Fehler" -#: f.repair.cc:4098 -msgid "there are zero stuck pixels" -msgstr "Keine Festpixel" - -#: f.repair.cc:4102 -msgid "Save Stuck Pixels" -msgstr "Festpixel speichern" - -#: f.retouch.cc:211 -msgid "Adjust Brightness and Color" -msgstr "Helligkeit und Farbe abstimmen" - #: f.retouch.cc:267 msgid "small-steps" msgstr "Kleinschritte" @@ -2830,15 +3056,15 @@ msgid "bright pixels" msgstr "Helle Pixel" -#: f.retouch.cc:1983 +#: f.retouch.cc:1980 msgid "Ramp brightness across image" msgstr "Helligkeit an-/absteigend im Bild ändern" -#: f.retouch.cc:2363 f.retouch.cc:2600 f.tools.cc:5242 +#: f.retouch.cc:2360 f.retouch.cc:2597 f.tools.cc:5253 msgid "Edit function must be active" msgstr "Editfunktion muss aktiv sein" -#: f.retouch.cc:2371 fotoxx-13.08.cc:2867 +#: f.retouch.cc:2368 fotoxx-13.09.cc:2905 msgid "" "Select area cannot be kept.\n" "Continue?" @@ -2846,23 +3072,23 @@ "Ausschnitt kann nicht behalten werden.\n" "Fortfahren?" -#: f.retouch.cc:2400 +#: f.retouch.cc:2397 msgid "power: center" msgstr "Stärke: Mitte" -#: f.retouch.cc:2405 +#: f.retouch.cc:2402 msgid "reset area" msgstr "zurücksetzen" -#: f.retouch.cc:2593 +#: f.retouch.cc:2590 msgid "Edit Function Amplifier" msgstr "Bearbeitungs-Verstärker" -#: f.retouch.cc:2629 +#: f.retouch.cc:2626 msgid "minimum" msgstr "Minimum" -#: f.retouch.cc:2631 +#: f.retouch.cc:2628 msgid "maximum" msgstr "Maximum" @@ -2979,197 +3205,209 @@ msgid "create missing and update stale thumbnails" msgstr "Fehlende Thumbnails erstellen und veraltete aktualisieren" -#: f.tools.cc:542 +#: f.tools.cc:548 #, c-format msgid "%d thumbnails created, %d errors \n" msgstr "%d Thumbnails erstellt, %d Fehler \n" -#: f.tools.cc:553 +#: f.tools.cc:559 msgid "no search index file is in use" msgstr "Keine Such-Index Datei wird benutzt" -#: f.tools.cc:554 f.tools.cc:561 f.tools.cc:897 +#: f.tools.cc:560 f.tools.cc:567 f.tools.cc:910 msgid "COMPLETED" msgstr "FERTIG" -#: f.tools.cc:566 +#: f.tools.cc:572 msgid "rebuild search index" msgstr "Such-Index neuaufbauen" -#: f.tools.cc:585 +#: f.tools.cc:591 #, c-format msgid "%d current index records found \n" msgstr "%d aktuelle Index-Sätze gefunden \n" -#: f.tools.cc:589 +#: f.tools.cc:595 msgid "find all image files and build index records" msgstr "Alle Bilddatei finden und Index-Sätze aufbauen" -#: f.tools.cc:615 +#: f.tools.cc:621 msgid "too many image files" msgstr "Zu viele Bilddateien" -#: f.tools.cc:642 +#: f.tools.cc:648 #, c-format msgid "found %d image files \n" msgstr "%d Bilddateien gefunden \n" -#: f.tools.cc:647 +#: f.tools.cc:653 msgid "merging old and new index records" msgstr "Alte und Neue Index-Sätze werden eingefädelt" -#: f.tools.cc:697 +#: f.tools.cc:703 #, c-format msgid "files found in current index recs: %d \n" msgstr "Bilddateien in aktuellen Index-Sätze gefunden: %d \n" -#: f.tools.cc:715 +#: f.tools.cc:721 msgid "updating index records" msgstr "Index-Sätze werden aktualisiert" -#: f.tools.cc:889 +#: f.tools.cc:902 #, c-format msgid "%d image files updated \n" msgstr "%d Bilddatei aktualisiert \n" -#: f.tools.cc:909 +#: f.tools.cc:922 msgid "KILLED" msgstr "ABBRUCH" -#: f.tools.cc:1047 +#: f.tools.cc:1060 msgid "Settings" msgstr "Einstellungen" -#: f.tools.cc:1050 +#: f.tools.cc:1063 msgid "Startup Display" msgstr "Anfangsanzeige" -#: f.tools.cc:1072 +#: f.tools.cc:1085 msgid "Recent Files Gallery" msgstr "Zuletzt gesehene Bilder" -#: f.tools.cc:1073 +#: f.tools.cc:1086 msgid "Newest Files Gallery" msgstr "Neueste Bilddateien" -#: f.tools.cc:1074 +#: f.tools.cc:1087 msgid "Previous Image Viewed" msgstr "Vorheriges Bild" -#: f.tools.cc:1075 +#: f.tools.cc:1088 msgid "Blank Window" msgstr "Leeres Fenster" -#: f.tools.cc:1076 +#: f.tools.cc:1089 msgid "Directory Gallery" msgstr "Verzeichnisgalerie" -#: f.tools.cc:1077 +#: f.tools.cc:1090 msgid "Image File" msgstr "Bilddatei" -#: f.tools.cc:1093 +#: f.tools.cc:1106 msgid "Menu Style" msgstr "Menu Art" -#: f.tools.cc:1095 +#: f.tools.cc:1108 msgid "Classic" msgstr "Klassisch" -#: f.tools.cc:1096 +#: f.tools.cc:1109 msgid "Vertical" msgstr "Vertikal" -#: f.tools.cc:1098 +#: f.tools.cc:1111 msgid "Toolbar Style" msgstr "Symbolleiste-Stil" -#: f.tools.cc:1101 +#: f.tools.cc:1114 msgid "Icons" msgstr "Icons" -#: f.tools.cc:1102 +#: f.tools.cc:1115 msgid "Both" msgstr "Beides" -#: f.tools.cc:1104 +#: f.tools.cc:1117 msgid "Image Pan" msgstr "Bild schwenken" -#: f.tools.cc:1106 +#: f.tools.cc:1119 msgid "Drag" msgstr "Ziehen" -#: f.tools.cc:1107 +#: f.tools.cc:1120 msgid "Scroll" msgstr "Scrollen" -#: f.tools.cc:1108 +#: f.tools.cc:1121 msgid "Magnified" msgstr "Vergrößert" -#: f.tools.cc:1111 +#: f.tools.cc:1124 msgid "Warn Overwrite Original" msgstr "Vor Original überschreiben warnen" -#: f.tools.cc:1114 +#: f.tools.cc:1127 msgid "Default JPEG quality" msgstr "JPEG-Qualität Ausgangswert" -#: f.tools.cc:1261 +#: f.tools.cc:1131 +msgid "Zooms for 200%" +msgstr "Zooms für 200%" + +#: f.tools.cc:1142 +msgid "RAW command" +msgstr "RAW Befehl" + +#: f.tools.cc:1145 +msgid "RAW file types" +msgstr "RAW Dateitypen" + +#: f.tools.cc:1274 msgid "startup directory is invalid" msgstr "Anfangsverzeichnes ungültig" -#: f.tools.cc:1269 +#: f.tools.cc:1282 msgid "startup file is invalid" msgstr "Anfangsdatei ungültig" -#: f.tools.cc:1368 +#: f.tools.cc:1381 msgid "Select startup directory" msgstr "Anfangsverzeichnis wählen" -#: f.tools.cc:1376 +#: f.tools.cc:1389 msgid "Select startup image file" msgstr "Anfangsbilddatei wählen" -#: f.tools.cc:1414 +#: f.tools.cc:1427 msgid "Click list position. Click thumbnail to add." msgstr "Listenposition anklicken. Thumbnail anklicken um zu addieren." -#: f.tools.cc:1439 f.tools.cc:1654 +#: f.tools.cc:1452 f.tools.cc:1667 msgid "Edit Bookmarks" msgstr "Lesezeichen bearbeiten" -#: f.tools.cc:1585 +#: f.tools.cc:1598 msgid "unable to save bookmarks file" msgstr "Kann Lesezeichen-Datei nicht speichern" -#: f.tools.cc:1654 +#: f.tools.cc:1667 msgid "Go To Bookmark" msgstr "Zum Lesezeichen springen" -#: f.tools.cc:1800 +#: f.tools.cc:1811 msgid "Edit KB Shortcuts" msgstr "Schnelltasten bearbeiten" -#: f.tools.cc:1805 +#: f.tools.cc:1816 msgid "shortcut key:" msgstr "Schnelltaste:" -#: f.tools.cc:1806 +#: f.tools.cc:1817 msgid "(enter keys)" msgstr "(Tasten eintippen)" -#: f.tools.cc:1932 +#: f.tools.cc:1943 #, c-format msgid "\"%s\" Reserved, cannot be used" msgstr "\"%s\" Reserviert, kann nicht verwendet werden" -#: f.tools.cc:2084 +#: f.tools.cc:2095 msgid "unable to save KB-shortcuts file" msgstr "Kann Schnelltasten-Datei nicht speichern" -#: f.tools.cc:2154 +#: f.tools.cc:2165 msgid "" "Right-click collection thumbnails to \n" "cut/copy to cache, paste cache, remove." @@ -3177,245 +3415,241 @@ "Sammlung-Thumbnail rechts klicken, um zu Cache \n" "ausschneiden/kopieren, von Cache einfügen, entfernen." -#: f.tools.cc:2190 +#: f.tools.cc:2201 msgid "Start a new collection" msgstr "Eine neue Sammlung starten" -#: f.tools.cc:2192 +#: f.tools.cc:2203 msgid "Collection to view or edit" msgstr "Sammlung zum Ansehen oder Bearbeiten" -#: f.tools.cc:2194 +#: f.tools.cc:2205 msgid "Select images, add to cache" msgstr "Bilder wählen, zu Cache addieren" -#: f.tools.cc:2196 +#: f.tools.cc:2207 msgid "Clear image cache" msgstr "Bildercache löschen" -#: f.tools.cc:2198 +#: f.tools.cc:2209 msgid "Delete a collection" msgstr "Sammlung löschen" -#: f.tools.cc:2221 +#: f.tools.cc:2232 msgid "New Collection" msgstr "Neue Sammlung" -#: f.tools.cc:2222 +#: f.tools.cc:2233 msgid "Choose Collection" msgstr "Bildsammlung wählen" -#: f.tools.cc:2223 +#: f.tools.cc:2234 msgid "Delete Collection" msgstr "Sammlung löschen" -#: f.tools.cc:2293 +#: f.tools.cc:2304 #, c-format msgid "delete %s ?" msgstr "%s löschen?" -#: f.tools.cc:2606 +#: f.tools.cc:2617 msgid "Move collection" msgstr "Sammlung versetzen" -#: f.tools.cc:2609 +#: f.tools.cc:2620 msgid "collection name" msgstr "Sammlungs-Name" -#: f.tools.cc:2612 +#: f.tools.cc:2623 msgid "old top directory" msgstr "Altes oberstes Bild-Verzeichnis" -#: f.tools.cc:2615 +#: f.tools.cc:2626 msgid "new top directory" msgstr "Neues oberstes Bild-Verzeichnis" -#: f.tools.cc:2662 +#: f.tools.cc:2673 msgid "completed" msgstr "Fertig" -#: f.tools.cc:2752 +#: f.tools.cc:2763 msgid "Press ESC to exit slide show" msgstr "ESC drücken um zu beenden" -#: f.tools.cc:2753 +#: f.tools.cc:2764 msgid "latest versions only" msgstr "Nur neueste Versionen" -#: f.tools.cc:2754 +#: f.tools.cc:2765 msgid "continuous loop" msgstr "Endlos Schleife" -#: f.tools.cc:2755 +#: f.tools.cc:2766 msgid "start with current image" msgstr "Mit aktuellem Bild starten" -#: f.tools.cc:2759 +#: f.tools.cc:2770 msgid "arrow keys" msgstr "Pfeiltasten" -#: f.tools.cc:2760 +#: f.tools.cc:2771 msgid "instant" msgstr "Sofortig" -#: f.tools.cc:2761 +#: f.tools.cc:2772 msgid "fade-in" msgstr "Einblenden" -#: f.tools.cc:2762 +#: f.tools.cc:2773 msgid "roll-right" msgstr "Nach rechts rollend" -#: f.tools.cc:2763 +#: f.tools.cc:2774 msgid "roll-down" msgstr "Nach unten rollend" -#: f.tools.cc:2764 +#: f.tools.cc:2775 msgid "shift-left" msgstr "Nach Links schieben" -#: f.tools.cc:2765 +#: f.tools.cc:2776 msgid "venetian" msgstr "Jalousie" -#: f.tools.cc:2766 +#: f.tools.cc:2777 msgid "grate" msgstr "Gitter" -#: f.tools.cc:2767 +#: f.tools.cc:2778 msgid "rectangle" msgstr "Rechteck" -#: f.tools.cc:2768 +#: f.tools.cc:2779 msgid "radar" msgstr "Radar" -#: f.tools.cc:2769 +#: f.tools.cc:2780 msgid "jaws" msgstr "Haifisch" -#: f.tools.cc:2770 +#: f.tools.cc:2781 msgid "ellipse" msgstr "Ellipse" -#: f.tools.cc:2771 +#: f.tools.cc:2782 msgid "raindrops" msgstr "Regentropfen" -#: f.tools.cc:2781 f.tools.cc:3866 f.tools.cc:4444 -msgid "0 files selected" -msgstr "0 Dateien ausgewählt" - -#: f.tools.cc:2783 +#: f.tools.cc:2794 msgid "collection:" msgstr "Sammlung:" -#: f.tools.cc:2793 +#: f.tools.cc:2804 msgid "music file" msgstr "Musikdatei" -#: f.tools.cc:2801 +#: f.tools.cc:2812 msgid "transitions" msgstr "Übergänge" -#: f.tools.cc:2803 +#: f.tools.cc:2814 msgid "seconds" msgstr "Sekunden" -#: f.tools.cc:2854 f.tools.cc:3038 f.tools.cc:3060 +#: f.tools.cc:2865 f.tools.cc:3049 f.tools.cc:3071 msgid "no image files selected" msgstr "Keine Bilddateien ausgewählt" -#: f.tools.cc:3019 +#: f.tools.cc:3030 msgid "open collection" msgstr "Sammlung öffnen" -#: f.tools.cc:3064 +#: f.tools.cc:3075 msgid "save as collection" msgstr "Als Sammlung speichern" -#: f.tools.cc:3077 +#: f.tools.cc:3088 msgid "Select music file or playlist" msgstr "Musikdatei oder Playlist wählen" -#: f.tools.cc:3868 +#: f.tools.cc:3879 msgid "new base name" msgstr "neue Basisname" -#: f.tools.cc:3871 +#: f.tools.cc:3882 msgid "starting sequence" msgstr "Anfangs-Sequenznummer" -#: f.tools.cc:3873 +#: f.tools.cc:3884 msgid "increment" msgstr "Zuwachs" -#: f.tools.cc:3927 +#: f.tools.cc:3938 msgid "new file already exists:" msgstr "Zieldatei existiert schon:" -#: f.tools.cc:3937 +#: f.tools.cc:3948 msgid "Rename failed:" msgstr "Umbenennen gescheitert:" -#: f.tools.cc:3982 +#: f.tools.cc:3993 msgid "base name / sequence / increment not reasonable" msgstr "Basisname / Sequenz / Zuwachs nicht sinnvoll" -#: f.tools.cc:4085 +#: f.tools.cc:4096 msgid "max. width" msgstr "Max. Breite" -#: f.tools.cc:4090 +#: f.tools.cc:4101 msgid "no change" msgstr "Keine Änderung" -#: f.tools.cc:4093 +#: f.tools.cc:4104 msgid "new file type" msgstr "Neue Dateityp" -#: f.tools.cc:4094 +#: f.tools.cc:4105 msgid "same" msgstr "Ebenso" -#: f.tools.cc:4102 +#: f.tools.cc:4113 msgid "replace originals" msgstr "Dateien überschreiben" -#: f.tools.cc:4103 +#: f.tools.cc:4114 msgid "move to location" msgstr "Speicherstelle versetzen" -#: f.tools.cc:4104 +#: f.tools.cc:4115 msgid "remove EXIF" msgstr "EXIF entfernen" -#: f.tools.cc:4105 +#: f.tools.cc:4116 msgid "delete originals" msgstr "Originaldateien löschen" -#: f.tools.cc:4180 +#: f.tools.cc:4191 msgid "file already exists" msgstr "Datei existiert schon" -#: f.tools.cc:4188 +#: f.tools.cc:4199 msgid "file type not supported" msgstr "Dateityp nicht unterstützt" -#: f.tools.cc:4227 +#: f.tools.cc:4238 msgid "cannot create new file" msgstr "Kann neue Datei nicht erstellen" -#: f.tools.cc:4351 +#: f.tools.cc:4362 msgid "replace original files?" msgstr "Originaldateien ersetzen?" -#: f.tools.cc:4352 +#: f.tools.cc:4363 #, c-format msgid "replace original files? (max. %d x %d)" msgstr "Originaldateien überschreiben? (max. %d %d)" -#: f.tools.cc:4360 +#: f.tools.cc:4371 #, c-format msgid "" "copy files? \n" @@ -3424,7 +3658,7 @@ "Bilddateien kopieren? \n" " zu Speicherstelle %s" -#: f.tools.cc:4363 +#: f.tools.cc:4374 #, c-format msgid "" "copy files? (max. %d x %d) \n" @@ -3433,7 +3667,7 @@ "Dateien kopieren? (max. %d x %d) \n" " in Ordner %s" -#: f.tools.cc:4367 +#: f.tools.cc:4378 msgid "" "\n" " and delete originals" @@ -3441,80 +3675,88 @@ "\n" " und Originaldateien löschen" -#: f.tools.cc:4380 +#: f.tools.cc:4391 msgid "location is not a valid directory" msgstr "Kein gültiger Dateiordner" -#: f.tools.cc:4387 +#: f.tools.cc:4398 #, c-format msgid "max. size %d x %d is not reasonable" msgstr "Max. größe %d x %d nicht sinnvoll" -#: f.tools.cc:4447 +#: f.tools.cc:4458 msgid "output file type" msgstr "Ausgabedateityp" -#: f.tools.cc:4459 +#: f.tools.cc:4470 msgid "white balance" msgstr "Weiabgleich" -#: f.tools.cc:4460 +#: f.tools.cc:4471 msgid "interpolation" msgstr "Interpolation" -#: f.tools.cc:4461 +#: f.tools.cc:4472 msgid "color space" msgstr "Farbraum" -#: f.tools.cc:4462 +#: f.tools.cc:4473 msgid "gamma curve" msgstr "Gamma-Kurve" -#: f.tools.cc:4465 +#: f.tools.cc:4476 msgid "camera" msgstr "Kamera" -#: f.tools.cc:4466 +#: f.tools.cc:4477 msgid "fixed" msgstr "Festgelegt" -#: f.tools.cc:4467 +#: f.tools.cc:4478 msgid "calculated" msgstr "Berechnet" -#: f.tools.cc:4999 +#: f.tools.cc:4495 +msgid "default" +msgstr "Vorgabe" + +#: f.tools.cc:4501 +msgid "defaults" +msgstr "Vorgaben" + +#: f.tools.cc:5010 msgid "x-spacing" msgstr "x-Abstand" -#: f.tools.cc:5000 +#: f.tools.cc:5011 msgid "x-count" msgstr "x-Anzahl" -#: f.tools.cc:5001 +#: f.tools.cc:5012 msgid "x-enable" msgstr "x-aktivieren" -#: f.tools.cc:5007 +#: f.tools.cc:5018 msgid "y-spacing" msgstr "y-Abstand" -#: f.tools.cc:5008 +#: f.tools.cc:5019 msgid "y-count" msgstr "y-Anzahl" -#: f.tools.cc:5009 +#: f.tools.cc:5020 msgid "y-enable" msgstr "y-aktivieren" -#: f.tools.cc:5016 +#: f.tools.cc:5027 msgid "x-offset" msgstr "x-Verschiebung" -#: f.tools.cc:5020 +#: f.tools.cc:5031 msgid "y-offset" msgstr "y-Verschiebung" -#: f.tools.cc:5444 +#: f.tools.cc:5455 msgid "" "Brightness should show a gradual ramp \n" "extending all the way to the edges." @@ -3522,19 +3764,31 @@ "Helligkeit soll einen allmählichen Ansteig \n" "zeigen, auch ganz bis zu den Rändern." -#: f.tools.cc:5549 +#: f.tools.cc:5560 msgid "Available Translations" msgstr "Vorhandene Übersetzungen" -#: f.tools.cc:5553 +#: f.tools.cc:5564 msgid "Set Language" msgstr "Sprache wechseln" -#: f.tools.cc:5653 +#: f.tools.cc:5664 msgid "Make Launcher" msgstr "Start-Icon erzeugen" -#: fotoxx-13.08.cc:330 +#: fotoxx-13.09.cc:201 +msgid "Tab F: image file view/edit" +msgstr "Tab F: Bilddatei anschauen/bearbeiten" + +#: fotoxx-13.09.cc:208 +msgid "Tab G: image gallery" +msgstr "Tab G: Bildergallerie" + +#: fotoxx-13.09.cc:215 +msgid "Tab W: world map" +msgstr "Tab W: Weltkarte" + +#: fotoxx-13.09.cc:339 msgid "" "First time Fotoxx startup. \n" "Latest version: http://www.kornelix.com/fotoxx \n" @@ -3544,43 +3798,69 @@ "Neueste Version: http://www.kornelix.com/fotoxx \n" "Synchronisierungs-Prozess beginnt, kann etwas dauern. \n" -#: fotoxx-13.08.cc:363 +#: fotoxx-13.09.cc:372 msgid "Please install missing programs:" msgstr "Bitte fehlende Programme installieren:" -#: fotoxx-13.08.cc:816 -msgid "Location from World Map" -msgstr "Ort von der Weltkarte" +#: fotoxx-13.09.cc:686 +#, c-format +msgid " BUSY %d%c " +msgstr " LÄUFT %d%c " + +#: fotoxx-13.09.cc:688 +msgid " BUSY " +msgstr " LÄUFT " + +#: fotoxx-13.09.cc:745 +msgid " (reduced)" +msgstr " (verkleinert) " + +#: fotoxx-13.09.cc:753 +#, c-format +msgid " edits: %d" +msgstr " edits: %d" + +#: fotoxx-13.09.cc:758 +msgid " menu locked" +msgstr " Menu gesperrt" + +#: fotoxx-13.09.cc:759 +msgid " area active" +msgstr " Ausschnitt aktiv" + +#: fotoxx-13.09.cc:760 +msgid " dialog open" +msgstr " Dialog aktiv" -#: fotoxx-13.08.cc:2500 +#: fotoxx-13.09.cc:2538 msgid "Exceed 50 anchor points" msgstr "50 Ankerpunkte überschritten" -#: fotoxx-13.08.cc:2681 +#: fotoxx-13.09.cc:2719 msgid "load curve from a file" msgstr "Kurven-Datei öffnen" -#: fotoxx-13.08.cc:2735 +#: fotoxx-13.09.cc:2773 msgid "curve file is invalid" msgstr "Kurven-Datei ist ungültig" -#: fotoxx-13.08.cc:2740 +#: fotoxx-13.09.cc:2778 msgid "curve file has different no. of curves" msgstr "Datei Kurvenanzahl stimmt nicht" -#: fotoxx-13.08.cc:2755 +#: fotoxx-13.09.cc:2793 msgid "save curve to a file" msgstr "Kurven-Datei speichern" -#: fotoxx-13.08.cc:2853 fotoxx-13.08.cc:3380 fotoxx-13.08.cc:3395 +#: fotoxx-13.09.cc:2891 fotoxx-13.09.cc:3417 fotoxx-13.09.cc:3432 msgid "prior function still active" msgstr "Vorherige Funktion noch aktiv" -#: fotoxx-13.08.cc:2860 +#: fotoxx-13.09.cc:2898 msgid "Too many edits, please save image" msgstr "Zuviele Änderungen, bitte Bild speichern" -#: fotoxx-13.08.cc:2875 +#: fotoxx-13.09.cc:2913 msgid "" "Select area not active.\n" "Continue?" @@ -3588,23 +3868,23 @@ "Ausschnit nicht aktiviert.\n" "Fortfahren?" -#: fotoxx-13.08.cc:3350 +#: fotoxx-13.09.cc:3387 msgid "Discard edits?" msgstr "Änderungen verwerfen?" -#: fotoxx-13.08.cc:3351 +#: fotoxx-13.09.cc:3388 msgid "This action will discard changes\n" msgstr "Weiteres Vorgehen wird Änderungen verwerfen\n" -#: fotoxx-13.08.cc:3352 fotoxx.h:973 +#: fotoxx-13.09.cc:3389 fotoxx.h:994 msgid "Keep" msgstr "Behalten" -#: fotoxx-13.08.cc:3353 +#: fotoxx-13.09.cc:3390 msgid "Discard" msgstr "Verwerfen" -#: fotoxx-13.08.cc:4054 +#: fotoxx-13.09.cc:4088 #, c-format msgid "" "warning: real memory %d MB < required %d MB \n" @@ -3613,212 +3893,224 @@ "Warnung: Speicherplatz %d MB < benötigte %d MB \n" "Reaktionszeit kann sehr lang werden \n" -#: fotoxx.h:936 +#: fotoxx.h:955 msgid "Add All" msgstr "Alle einfügen" -#: fotoxx.h:938 +#: fotoxx.h:957 msgid "Amount" msgstr "Wert" -#: fotoxx.h:939 +#: fotoxx.h:958 +msgid "Angle" +msgstr "Winkel" + +#: fotoxx.h:959 msgid "Apply" msgstr "Anwenden" -#: fotoxx.h:940 +#: fotoxx.h:960 msgid "Autocomplete" msgstr "Autovervöllständigen" -#: fotoxx.h:941 +#: fotoxx.h:961 msgid "Black" msgstr "Schwarz" -#: fotoxx.h:942 +#: fotoxx.h:962 msgid "Blend Width" msgstr "Mischbreite" -#: fotoxx.h:944 +#: fotoxx.h:964 msgid "Brightness" msgstr "Helligkeit" -#: fotoxx.h:945 +#: fotoxx.h:965 msgid "Browse" msgstr "Durchsuchen" -#: fotoxx.h:946 +#: fotoxx.h:966 msgid "Cancel" msgstr "Abbrechen" -#: fotoxx.h:947 +#: fotoxx.h:967 msgid "Choose" msgstr "Wählen" -#: fotoxx.h:948 +#: fotoxx.h:968 msgid "Clear" msgstr "Aufräumen" -#: fotoxx.h:950 +#: fotoxx.h:970 msgid "Contrast" msgstr "Kontrast" -#: fotoxx.h:952 +#: fotoxx.h:972 msgid "Curve File:" msgstr "Kurven-Datei" -#: fotoxx.h:953 +#: fotoxx.h:973 msgid "Cut" msgstr "Ausschneiden" -#: fotoxx.h:954 +#: fotoxx.h:974 msgid "Darker Areas" msgstr "Dunklere Bereiche" -#: fotoxx.h:957 +#: fotoxx.h:977 msgid "Done" msgstr "Fertig" -#: fotoxx.h:958 +#: fotoxx.h:978 msgid "Edit" msgstr "Bearbeiten" -#: fotoxx.h:960 +#: fotoxx.h:980 msgid "Erase" msgstr "Löschen" -#: fotoxx.h:961 +#: fotoxx.h:981 msgid "Fetch" msgstr "Holen" -#: fotoxx.h:962 +#: fotoxx.h:982 msgid "Find" msgstr "Suchen" -#: fotoxx.h:963 +#: fotoxx.h:983 msgid "Finish" msgstr "Fertigstellen" -#: fotoxx.h:964 +#: fotoxx.h:984 msgid "Font" msgstr "Font" -#: fotoxx.h:966 +#: fotoxx.h:985 +msgid "Geotags" +msgstr "Geotags" + +#: fotoxx.h:987 msgid "Height" msgstr "Höhe" -#: fotoxx.h:968 +#: fotoxx.h:989 msgid "histogram" msgstr "Histogramm" -#: fotoxx.h:970 +#: fotoxx.h:991 msgid "Images" msgstr "Bilder" -#: fotoxx.h:971 +#: fotoxx.h:992 msgid "Insert" msgstr "Einfügen" -#: fotoxx.h:974 +#: fotoxx.h:995 msgid "Lighter Areas" msgstr "Hellere Bereiche" -#: fotoxx.h:975 +#: fotoxx.h:996 msgid "limit" msgstr "Limit" -#: fotoxx.h:977 +#: fotoxx.h:998 msgid "Negative" msgstr "Negativ" -#: fotoxx.h:978 +#: fotoxx.h:999 msgid "New" msgstr "Neu" -#: fotoxx.h:980 +#: fotoxx.h:1001 msgid "search index file missing" msgstr "Such-Index Datei fehlt" -#: fotoxx.h:981 +#: fotoxx.h:1002 msgid "OK" msgstr "OK" -#: fotoxx.h:983 +#: fotoxx.h:1004 msgid "Open RAW File" msgstr "RAW-Datei öffnen" -#: fotoxx.h:985 +#: fotoxx.h:1006 msgid "Pause" msgstr "Unterbrechen" -#: fotoxx.h:986 +#: fotoxx.h:1007 msgid "Percent" msgstr "Prozent" -#: fotoxx.h:987 +#: fotoxx.h:1008 msgid "Presets" msgstr "Voreinstellungen" -#: fotoxx.h:989 +#: fotoxx.h:1010 msgid "Proceed" msgstr "Weiter" -#: fotoxx.h:991 +#: fotoxx.h:1012 msgid "range" msgstr "Wertbereich" -#: fotoxx.h:994 +#: fotoxx.h:1015 msgid "Reduce" msgstr "Vermindern" -#: fotoxx.h:997 +#: fotoxx.h:1018 msgid "Reset" msgstr "Zurücksetzen" -#: fotoxx.h:1000 +#: fotoxx.h:1021 msgid "Unknown file type, save as tiff/jpeg/png to edit" msgstr "Dateityp unbekannt, zum Bearbeiten als tiff/jpeg/png speichern" -#: fotoxx.h:1001 +#: fotoxx.h:1022 msgid "Search" msgstr "Durchsuchen" -#: fotoxx.h:1005 +#: fotoxx.h:1026 +msgid "Size" +msgstr "Große" + +#: fotoxx.h:1027 msgid "Start" msgstr "Starten" -#: fotoxx.h:1006 +#: fotoxx.h:1028 msgid "Threshold" msgstr "Schwelle" -#: fotoxx.h:1007 +#: fotoxx.h:1029 #, c-format msgid "exceed %d files" msgstr "%d Dateien überschritten" -#: fotoxx.h:1009 +#: fotoxx.h:1031 msgid "Undo All" msgstr "Alles rückgängig" -#: fotoxx.h:1010 +#: fotoxx.h:1032 msgid "Undo Last" msgstr "Letztes rückgängig" -#: fotoxx.h:1012 +#: fotoxx.h:1034 msgid "Unfinish" msgstr "Unfertigstellen" -#: fotoxx.h:1014 +#: fotoxx.h:1036 msgid "View" msgstr "Ansehen" -#: fotoxx.h:1015 +#: fotoxx.h:1037 msgid "Web" msgstr "Web" -#: fotoxx.h:1016 +#: fotoxx.h:1038 msgid "White" msgstr "Weiß" -#: fotoxx.h:1018 +#: fotoxx.h:1040 msgid "Map" msgstr "Karte" @@ -3826,7 +4118,7 @@ msgid "user guide not found" msgstr "Benutzeranweisung nicht gefunden" -#: zfuncs.cc:4504 zfuncs.cc:10210 +#: zfuncs.cc:4504 zfuncs.cc:10284 #, c-format msgid "cannot open file %s" msgstr "Kann Datei nicht öffnen %s" @@ -3835,77 +4127,81 @@ msgid "save screen to file" msgstr "Bildschirm in Datei speichern" -#: zfuncs.cc:8819 +#: zfuncs.cc:8891 msgid "No" msgstr "Nein" -#: zfuncs.cc:8819 +#: zfuncs.cc:8891 msgid "Yes" msgstr "Ja" -#: zfuncs.cc:8898 zfuncs.cc:8938 zfuncs.cc:9277 zfuncs.cc:9595 zfuncs.cc:10323 -#: zfuncs.cc:10329 zfuncs.cc:10335 zfuncs.cc:10341 +#: zfuncs.cc:8970 zfuncs.cc:9012 zfuncs.cc:9351 zfuncs.cc:9669 zfuncs.cc:10397 +#: zfuncs.cc:10403 zfuncs.cc:10409 zfuncs.cc:10415 msgid "cancel" msgstr "Abbrechen" -#: zfuncs.cc:9239 +#: zfuncs.cc:9313 msgid "open" msgstr "Öffnen" -#: zfuncs.cc:9244 +#: zfuncs.cc:9318 msgid "choose" msgstr "Wählen" -#: zfuncs.cc:9249 +#: zfuncs.cc:9323 msgid "save" msgstr "Speichern" -#: zfuncs.cc:9255 +#: zfuncs.cc:9329 msgid "open folder" msgstr "Verzeichnis öffnen" -#: zfuncs.cc:9260 +#: zfuncs.cc:9334 msgid "create folder" msgstr "Ordner erstellen" -#: zfuncs.cc:9266 +#: zfuncs.cc:9340 msgid "hidden" msgstr "Versteckt" -#: zfuncs.cc:9327 +#: zfuncs.cc:9344 +msgid "quality" +msgstr "Qualität" + +#: zfuncs.cc:9401 msgid "JPG quality 0-100" msgstr "JPG-Qualität 0-100" -#: zfuncs.cc:9586 +#: zfuncs.cc:9660 #, c-format msgid "printed image width: %.1f height: %.1f cm" msgstr "Gedrucktes Bild-Breite: %.1f -Höhe: %.1f cm" -#: zfuncs.cc:9595 +#: zfuncs.cc:9669 msgid "done" msgstr "fertig" -#: zfuncs.cc:9595 zfuncs.cc:9607 +#: zfuncs.cc:9669 zfuncs.cc:9681 msgid "margins" msgstr "Ränder" -#: zfuncs.cc:9603 +#: zfuncs.cc:9677 msgid "top" msgstr "oben" -#: zfuncs.cc:9604 +#: zfuncs.cc:9678 msgid "bottom" msgstr "unten" -#: zfuncs.cc:9613 +#: zfuncs.cc:9687 msgid "image scale" msgstr "Bildgröße" -#: zfuncs.cc:9615 +#: zfuncs.cc:9689 msgid "percent" msgstr "Prozent" -#: zfuncs.cc:10097 +#: zfuncs.cc:10171 msgid "" "Initial parameters file created. \n" "Inspect and revise if necessary." @@ -3913,19 +4209,19 @@ "Anfangsparameter-Datei wurde angelegt. \n" "Bei Bedarf kontrollieren und berichtigen ." -#: zfuncs.cc:10113 +#: zfuncs.cc:10187 msgid "load parameters from a file" msgstr "Parameter aus einer Datei laden" -#: zfuncs.cc:10182 +#: zfuncs.cc:10256 msgid "save parameters to a file" msgstr "Parameter in Datei speichern" -#: zfuncs.cc:10321 zfuncs.cc:10327 zfuncs.cc:10333 zfuncs.cc:10339 +#: zfuncs.cc:10395 zfuncs.cc:10401 zfuncs.cc:10407 zfuncs.cc:10413 msgid "edit parameters" msgstr "Parameter ändern" -#: zfuncs.cc:10322 zfuncs.cc:10328 +#: zfuncs.cc:10396 zfuncs.cc:10402 msgid "" "list\n" "all" @@ -3933,7 +4229,7 @@ "Auflisten\n" "Alle" -#: zfuncs.cc:10322 zfuncs.cc:10328 zfuncs.cc:10334 zfuncs.cc:10340 +#: zfuncs.cc:10396 zfuncs.cc:10402 zfuncs.cc:10408 zfuncs.cc:10414 msgid "" "load\n" "file" @@ -3941,7 +4237,7 @@ "Laden\n" "Datei" -#: zfuncs.cc:10322 zfuncs.cc:10328 zfuncs.cc:10334 zfuncs.cc:10340 +#: zfuncs.cc:10396 zfuncs.cc:10402 zfuncs.cc:10408 zfuncs.cc:10414 msgid "" "save\n" "file" @@ -3949,7 +4245,7 @@ "Speichern\n" "Datei" -#: zfuncs.cc:10323 zfuncs.cc:10335 +#: zfuncs.cc:10397 zfuncs.cc:10409 msgid "" "add\n" "new" @@ -3957,102 +4253,123 @@ "hinzufügen\n" "Neu" -#: zfuncs.cc:10323 zfuncs.cc:10329 zfuncs.cc:10335 zfuncs.cc:10341 +#: zfuncs.cc:10397 zfuncs.cc:10403 zfuncs.cc:10409 zfuncs.cc:10415 msgid "apply" msgstr "Anwenden" -#: zfuncs.cc:10376 +#: zfuncs.cc:10450 msgid "apply?" msgstr "Anwenden?" -#: zfuncs.cc:10433 +#: zfuncs.cc:10507 msgid "(new parm name)" msgstr "(neuer Parameter-Name)" -#: zfuncs.cc:10433 +#: zfuncs.cc:10507 msgid "add parameter" msgstr "Parameter hinzufügen" -#~ msgid "auto-trim" -#~ msgstr "Autoschnitt" +#~ msgid "Select image file" +#~ msgstr "Bilddatei wählen" -#~ msgid "Cartoon Parameters" -#~ msgstr "Cartoon Parameter" +#~ msgid "Press F1 for help %s" +#~ msgstr "F1 für Hilfe drucken %d" -#~ msgid "Contrast Span" -#~ msgstr "Kontrast-Spannweite" +#~ msgid "Rotate +90 degrees" +#~ msgstr "+90 Grad Drehen" -#~ msgid "Contrast Spread" -#~ msgstr "Kontrast-Ausbreitung" +#~ msgid "Turn Right" +#~ msgstr "Rechts Drehen" -#~ msgid "Contrast Saturation" -#~ msgstr "Kontrast-Sättigung" +#~ msgid "Rotate -90 degrees" +#~ msgstr "-90 Grad Drehen" -#~ msgid "Cartoon" -#~ msgstr "Cartoon" +#~ msgid "Turn Left" +#~ msgstr "Links Drehen" -#~ msgid "Convert into a cartoon drawing" -#~ msgstr "In eine Cartoon-Zeichnung umwandeln" +#~ msgid "Use buttons or drag right edge with mouse" +#~ msgstr "Knöpfe benutzen oder rechten Rand mit der Maus ziehen" -#~ msgid "new gallery from tab F" -#~ msgstr "Neue Galerie von Tab F" +#~ msgid "invert" +#~ msgstr "Invert." -#~ msgid "absolute" -#~ msgstr "absolute" +#~ msgid "Rotate Right" +#~ msgstr "Rechts drehen" -#~ msgid "outlines" -#~ msgstr "Umrisse" +#~ msgid "Rotate Right 90 degrees" +#~ msgstr "90 Grad Rechts drehen" -#~ msgid "pencil" -#~ msgstr "Stift" +#~ msgid "Rotate Left" +#~ msgstr "Links drehen" -#~ msgid "chalk" -#~ msgstr "Kreide" +#~ msgid "Rotate Left 90 degrees" +#~ msgstr "90 Grad Links drehen" -#~ msgid "Add Image Outlines" -#~ msgstr "Bildumrisse addieren" +#~ msgid "negative" +#~ msgstr "Negativ" -#~ msgid "Convert to charcoal or chalk drawing" -#~ msgstr "In eine Stift- oder Kreide-Zeichnung verwandeln" +#~ msgid "nothing in cache" +#~ msgstr "Cache ist leer" -#~ msgid "Outlines" -#~ msgstr "Umrisse" +#~ msgid "insert" +#~ msgstr "hinzufügen" -#~ msgid "Drag Mouse" -#~ msgstr "Maus schleppen" +#~ msgid "add all" +#~ msgstr "Alle hinzufügen" -#~ msgid "Magnified Scroll" -#~ msgstr "Vergrößtes Scrollen" +#~ msgid "Open Recent File" +#~ msgstr "zuletzt benutzte Dateien" -#~ msgid "Select top image directory" -#~ msgstr "Oberstes Bildverzeichnis wählen" +#~ msgid "Report memory and CPU usage" +#~ msgstr "Speicher und CPU Gebrauch berichten" -#~ msgid "Trim Image" -#~ msgstr "Bild zuschneiden" +#~ msgid "Add tags to multiple images" +#~ msgstr "Tags mehreren Bilder zufügen" -#~ msgid "image" -#~ msgstr "Bild" +#~ msgid "Batch Add Tags" +#~ msgstr "Mehrere Tags zuweisen" -#~ msgid "Monitor Check" -#~ msgstr "Monitor Prüfung" +#~ msgid "Batch Delete Tag" +#~ msgstr "Tag in Bilder löschen" -#~ msgid "contrast" -#~ msgstr "Kontrast" +#~ msgid "Delete a tag from multiple images" +#~ msgstr "Tag von mehreren Bilder löschen" -#~ msgid "%d images selected" -#~ msgstr "%d Bilder ausgewählt" +#~ msgid "Select Area lines etc." +#~ msgstr "Ausschnitt-Linien usw." -#~ msgid "remove the images" -#~ msgstr "Bilder entfernen" +#~ msgid "Copy to" +#~ msgstr "Kopieren nach" -#~ msgid "insert images at click position" -#~ msgstr "Bilder auf Anklicksposition einfügen" +#~ msgid "Move to" +#~ msgstr "Versetzen nach" -#~ msgid "Choose a collection first" -#~ msgstr "Erst eine Bildsammlung wählen" +#~ msgid "Print" +#~ msgstr "Drucken" -#~ msgid "Selected Images" -#~ msgstr "Ausgewählten Bilder" +#~ msgid "tag to remove" +#~ msgstr "Tag zu entfernen" + +#~ msgid "optional replacement" +#~ msgstr "Wahlersatz" + +#~ msgid "search all files" +#~ msgstr "Alle Dateien durchsuchen" + +#~ msgid "no tag specified" +#~ msgstr "Kein Tag angegeben" + +#~ msgid "specify tag" +#~ msgstr "Tag angeben" + +#~ msgid "Start new collection" +#~ msgstr "Neue Sammlung starten" + +#~ msgid "Choose a collection to view/edit" +#~ msgstr "Sammlung wählen zum ansehen/bearbeiten" + +#~ msgid "Select images to add/move/remove" +#~ msgstr "Bilder wählen zu addieren/versetzen/entfernen" #~ msgid "" #~ "To insert the selected images, press \n" @@ -4063,98 +4380,197 @@ #~ "[Einfügen] drucken und Galerieposition anklicken. \n" #~ "Um Bilder zu entfernen, [Löschen] drucken." -#~ msgid "Select images to add/move/remove" -#~ msgstr "Bilder wählen zu addieren/versetzen/entfernen" +#~ msgid "Selected Images" +#~ msgstr "Ausgewählten Bilder" -#~ msgid "Choose a collection to view/edit" -#~ msgstr "Sammlung wählen zum ansehen/bearbeiten" +#~ msgid "Choose a collection first" +#~ msgstr "Erst eine Bildsammlung wählen" -#~ msgid "Start new collection" -#~ msgstr "Neue Sammlung starten" +#~ msgid "insert images at click position" +#~ msgstr "Bilder auf Anklicksposition einfügen" -#~ msgid "specify tag" -#~ msgstr "Tag angeben" +#~ msgid "remove the images" +#~ msgstr "Bilder entfernen" -#~ msgid "no tag specified" -#~ msgstr "Kein Tag angegeben" +#~ msgid "%d images selected" +#~ msgstr "%d Bilder ausgewählt" -#~ msgid "search all files" -#~ msgstr "Alle Dateien durchsuchen" +#~ msgid "contrast" +#~ msgstr "Kontrast" -#~ msgid "optional replacement" -#~ msgstr "Wahlersatz" +#~ msgid "Monitor Check" +#~ msgstr "Monitor Prüfung" -#~ msgid "tag to remove" -#~ msgstr "Tag zu entfernen" +#~ msgid "image" +#~ msgstr "Bild" -#~ msgid "Print" -#~ msgstr "Drucken" +#~ msgid "Trim Image" +#~ msgstr "Bild zuschneiden" -#~ msgid "Move to" -#~ msgstr "Versetzen nach" +#~ msgid "Select top image directory" +#~ msgstr "Oberstes Bildverzeichnis wählen" -#~ msgid "Copy to" -#~ msgstr "Kopieren nach" +#~ msgid "Magnified Scroll" +#~ msgstr "Vergrößtes Scrollen" -#~ msgid "Select Area lines etc." -#~ msgstr "Ausschnitt-Linien usw." +#~ msgid "Drag Mouse" +#~ msgstr "Maus schleppen" -#~ msgid "Delete a tag from multiple images" -#~ msgstr "Tag von mehreren Bilder löschen" +#~ msgid "Outlines" +#~ msgstr "Umrisse" -#~ msgid "Batch Delete Tag" -#~ msgstr "Tag in Bilder löschen" +#~ msgid "Convert to charcoal or chalk drawing" +#~ msgstr "In eine Stift- oder Kreide-Zeichnung verwandeln" -#~ msgid "Batch Add Tags" -#~ msgstr "Mehrere Tags zuweisen" +#~ msgid "Add Image Outlines" +#~ msgstr "Bildumrisse addieren" -#~ msgid "Add tags to multiple images" -#~ msgstr "Tags mehreren Bilder zufügen" +#~ msgid "chalk" +#~ msgstr "Kreide" -#~ msgid "Report memory and CPU usage" -#~ msgstr "Speicher und CPU Gebrauch berichten" +#~ msgid "pencil" +#~ msgstr "Stift" -#~ msgid "Open Recent File" -#~ msgstr "zuletzt benutzte Dateien" +#~ msgid "outlines" +#~ msgstr "Umrisse" -#~ msgid "add all" -#~ msgstr "Alle hinzufügen" +#~ msgid "absolute" +#~ msgstr "absolute" -#~ msgid "insert" -#~ msgstr "hinzufügen" +#~ msgid "new gallery from tab F" +#~ msgstr "Neue Galerie von Tab F" -#~ msgid "nothing in cache" -#~ msgstr "Cache ist leer" +#~ msgid "Convert into a cartoon drawing" +#~ msgstr "In eine Cartoon-Zeichnung umwandeln" -#~ msgid "negative" -#~ msgstr "Negativ" +#~ msgid "Cartoon" +#~ msgstr "Cartoon" -#~ msgid "Rotate Left 90 degrees" -#~ msgstr "90 Grad Links drehen" +#~ msgid "Contrast Saturation" +#~ msgstr "Kontrast-Sättigung" -#~ msgid "Rotate Left" -#~ msgstr "Links drehen" +#~ msgid "Contrast Spread" +#~ msgstr "Kontrast-Ausbreitung" -#~ msgid "Rotate Right 90 degrees" -#~ msgstr "90 Grad Rechts drehen" +#~ msgid "Contrast Span" +#~ msgstr "Kontrast-Spannweite" -#~ msgid "Rotate Right" -#~ msgstr "Rechts drehen" +#~ msgid "Cartoon Parameters" +#~ msgstr "Cartoon Parameter" -#~ msgid "invert" -#~ msgstr "Invert." +#~ msgid "auto-trim" +#~ msgstr "Autoschnitt" -#~ msgid "Use buttons or drag right edge with mouse" -#~ msgstr "Knöpfe benutzen oder rechten Rand mit der Maus ziehen" +#~ msgid "Adjust Brightness and Color" +#~ msgstr "Helligkeit und Farbe abstimmen" -#~ msgid "Turn Left" -#~ msgstr "Links Drehen" +#~ msgid "Turn" +#~ msgstr "Drehen" -#~ msgid "Rotate -90 degrees" -#~ msgstr "-90 Grad Drehen" +#~ msgid "Turn Image" +#~ msgstr "Bild drehen" -#~ msgid "Turn Right" -#~ msgstr "Rechts Drehen" +#~ msgid "Save+F" +#~ msgstr "Speich+D" -#~ msgid "Rotate +90 degrees" -#~ msgstr "+90 Grad Drehen" +#~ msgid "Save to a new file" +#~ msgstr "In einer neuen Datei speichern" + +#~ msgid "Save+V" +#~ msgstr "Speich+V" + +#~ msgid "Save to a new version" +#~ msgstr "In einer neuen Dateiversion speichern" + +#~ msgid "Save to the same file" +#~ msgstr "In gleicher Datei speichern (überschreiben)" + +#~ msgid "Save to a new file name" +#~ msgstr "in neuer Dateinamen speichern" + +#~ msgid "Save to New File" +#~ msgstr "in neuer Datei speichern" + +#~ msgid "Save to a new (next) version" +#~ msgstr "in neuer (Nächsten) Version speichern" + +#~ msgid "Save to New Version" +#~ msgstr "in neuer Version speichern" + +#~ msgid "Save to the same file (replace)" +#~ msgstr "in gleicher Datei speichern (ersetzen)" + +#~ msgid "Save to Same File" +#~ msgstr "in gleicher Datei speichern" + +#~ msgid "Save File" +#~ msgstr "Datei speichern" + +#~ msgid "Warning" +#~ msgstr "Warnung" + +#~ msgid "Do not warn again" +#~ msgstr "Nicht wieder warnen" + +#~ msgid "Overwrite original file?" +#~ msgstr "Originaldatei überschreiben?" + +#~ msgid "Save Stuck Pixels" +#~ msgstr "Festpixel speichern" + +#~ msgid "there are zero stuck pixels" +#~ msgstr "Keine Festpixel" + +#~ msgid "current tags" +#~ msgstr "Aktuelle Tags" + +#~ msgid "image stars" +#~ msgstr "Bild-Sterne" + +#~ msgid "use last" +#~ msgstr "Letztes" + +#~ msgid "image date (yyyymmdd)" +#~ msgstr "Bilddatum (jjjjmmtt)" + +#~ msgid "Edit Caption and Comments" +#~ msgstr "Titel und Kommentare bearbeiten" + +#~ msgid "Edit image geotags" +#~ msgstr "Bild Geotags bearbeiten" + +#~ msgid "Batch Tags" +#~ msgstr "Tags Stapelbetrieb" + +#~ msgid "Edit image date/rating/tags" +#~ msgstr "Bild Datum/Bewertung/Tags bearbeiten" + +#~ msgid "Edit image caption or comment" +#~ msgstr "Bildbeschriftung oder Kommentar ändern" + +#~ msgid "Edit Caption/Comments" +#~ msgstr "Titel/Kommentare bearbeiten" + +#~ msgid "User Guide etc." +#~ msgstr "Benutzeranweisung usw." + +#~ msgid "change sequence" +#~ msgstr "Reihenfolge ändern" + +#~ msgid "jump to last page" +#~ msgstr "Zur letzten Seite" + +#~ msgid "jump to first page" +#~ msgstr "Zur ersten Seite" + +#~ msgid "Gallery from Tab F" +#~ msgstr "Galerie von Tab F" + +#~ msgid "no plugin command" +#~ msgstr "Kein Plug-in Kommando" + +#~ msgid "cmsCreateTransform() failed" +#~ msgstr "cmsCreateTransform() fehlgeschlagen" + +#~ msgid "angle" +#~ msgstr "Winkel" diff -Nru fotoxx-13.08/locales/translate-en.po fotoxx-13.09.1/locales/translate-en.po --- fotoxx-13.08/locales/translate-en.po 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/locales/translate-en.po 2013-08-31 06:26:38.000000000 +0000 @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: home 2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-01 22:40+0200\n" +"POT-Creation-Date: 2013-08-29 08:25+0200\n" "PO-Revision-Date: 2011-01-01 11:29+0100\n" "Last-Translator: mico \n" "Language-Team: English\n" @@ -23,7 +23,7 @@ msgid "Select Area for Edits" msgstr "Select Area for Edits" -#: f.area.cc:57 f.retouch.cc:2362 +#: f.area.cc:57 f.retouch.cc:2359 msgid "Press F1 for help" msgstr "Press F1 for help" @@ -67,7 +67,7 @@ msgid "select all matching colors within mouse" msgstr "select all matching colors within mouse" -#: f.area.cc:114 f.retouch.cc:2397 +#: f.area.cc:114 f.retouch.cc:2394 msgid "mouse radius" msgstr "mouse radius" @@ -123,7 +123,7 @@ msgid "found %d pixels" msgstr "found %d pixels" -#: f.area.cc:1824 f.area.cc:1841 f.area.cc:1861 f.area.cc:2191 +#: f.area.cc:1824 f.area.cc:1841 f.area.cc:1861 f.area.cc:2192 msgid "the area is not finished" msgstr "the area is not finished" @@ -135,39 +135,35 @@ msgid "Area Edge Calc" msgstr "Area Edge Calc" -#: f.area.cc:2265 +#: f.area.cc:2266 msgid "position with mouse click/drag" msgstr "position with mouse click/drag" -#: f.area.cc:2290 +#: f.area.cc:2292 msgid "Paste Image" msgstr "Paste Image" -#: f.area.cc:2295 +#: f.area.cc:2297 msgid "resize" msgstr "resize" -#: f.area.cc:2303 -msgid "angle" -msgstr "angle" - -#: f.area.cc:2565 +#: f.area.cc:2598 msgid "load select area from a file" msgstr "load select area from a file" -#: f.area.cc:2619 +#: f.area.cc:2652 msgid "save select area to a file" msgstr "save select area to a file" -#: f.bend.cc:71 f.menus.cc:230 +#: f.bend.cc:71 f.menus.cc:242 msgid "Unbend" msgstr "Unbend" -#: f.bend.cc:79 f.image.cc:1485 +#: f.bend.cc:79 f.image.cc:1496 msgid "vertical" msgstr "vertical" -#: f.bend.cc:80 f.image.cc:1484 +#: f.bend.cc:80 f.image.cc:1495 msgid "horizontal" msgstr "horizontal" @@ -179,7 +175,7 @@ msgid "curved" msgstr "curved" -#: f.bend.cc:88 f.bend.cc:1517 f.bend.cc:1789 f.bend.cc:2049 f.image.cc:163 +#: f.bend.cc:88 f.bend.cc:1517 f.bend.cc:1789 f.bend.cc:2049 f.image.cc:172 msgid "Grid" msgstr "Grid" @@ -191,7 +187,7 @@ " Click the four corners of a tetragon area. Press [apply]. \n" " The image is warped to make the tetragon into a rectangle." -#: f.bend.cc:356 f.menus.cc:231 +#: f.bend.cc:356 f.menus.cc:243 msgid "Keystone Correction" msgstr "Keystone Correction" @@ -241,7 +237,7 @@ " Make multiple mouse pulls until satisfied. \n" " When finished, select another area or press [done]." -#: f.bend.cc:1105 f.menus.cc:233 +#: f.bend.cc:1105 f.menus.cc:245 msgid "Warp area" msgstr "Warp area" @@ -263,7 +259,7 @@ " Make multiple mouse pulls until satisfied. \n" " When finished, press [done]." -#: f.bend.cc:1510 f.menus.cc:234 +#: f.bend.cc:1510 f.menus.cc:246 msgid "Warp curved" msgstr "Warp curved" @@ -271,7 +267,7 @@ msgid "warp span" msgstr "warp span" -#: f.bend.cc:1781 f.menus.cc:235 +#: f.bend.cc:1781 f.menus.cc:247 msgid "Warp linear" msgstr "Warp linear" @@ -285,7 +281,7 @@ " Make multiple mouse pulls until satisfied. \n" " When finished, press [done]." -#: f.bend.cc:2044 f.menus.cc:236 +#: f.bend.cc:2044 f.menus.cc:248 msgid "Warp affine" msgstr "Warp affine" @@ -309,7 +305,7 @@ msgid "reduce" msgstr "reduce" -#: f.color.cc:371 f.menus.cc:224 +#: f.color.cc:371 f.menus.cc:236 msgid "Color Mode" msgstr "Color Mode" @@ -354,10 +350,6 @@ msgid "unknown cms profile %s" msgstr "unknown cms profile %s" -#: f.color.cc:601 -msgid "cmsCreateTransform() failed" -msgstr "cmsCreateTransform() failed" - #: f.color.cc:667 msgid "Color Match Images" msgstr "Color Match Images" @@ -366,8 +358,8 @@ msgid "mouse radius for color sample" msgstr "mouse radius for color sample" -#: f.color.cc:696 f.color.cc:701 f.file.cc:3981 f.menus.cc:191 f.menus.cc:278 -#: f.menus.cc:390 fotoxx.h:982 +#: f.color.cc:696 f.color.cc:701 f.file.cc:4034 f.menus.cc:203 f.menus.cc:291 +#: f.menus.cc:401 fotoxx.h:1003 msgid "Open" msgstr "Open" @@ -391,11 +383,11 @@ msgid "select source image color first" msgstr "select source image color first" -#: f.color.cc:957 f.tools.cc:5134 +#: f.color.cc:957 f.tools.cc:5145 msgid "Click image to select pixels." msgstr "Click image to select pixels." -#: f.color.cc:995 f.menus.cc:227 +#: f.color.cc:995 f.menus.cc:239 msgid "Revise RGB" msgstr "Revise RGB" @@ -427,15 +419,15 @@ msgid "+Blue -Yellow" msgstr "+Blue -Yellow" -#: f.color.cc:1467 fotoxx.h:992 +#: f.color.cc:1467 fotoxx.h:1013 msgid "Red" msgstr "Red" -#: f.color.cc:1468 fotoxx.h:965 +#: f.color.cc:1468 fotoxx.h:986 msgid "Green" msgstr "Green" -#: f.color.cc:1469 fotoxx.h:943 +#: f.color.cc:1469 fotoxx.h:963 msgid "Blue" msgstr "Blue" @@ -443,7 +435,7 @@ msgid "Load CMYK parameters" msgstr "Load CMYK parameters" -#: f.color.cc:1614 f.color.cc:1686 f.repair.cc:4008 f.repair.cc:4104 +#: f.color.cc:1614 f.color.cc:1686 f.meta.cc:139 f.repair.cc:4025 msgid "File:" msgstr "File:" @@ -451,8 +443,8 @@ msgid "CMYK parameters file" msgstr "CMYK parameters file" -#: f.color.cc:1651 f.file.cc:2047 f.meta.cc:1282 f.repair.cc:4048 -#: f.tools.cc:1708 +#: f.color.cc:1651 f.file.cc:2092 f.meta.cc:1451 f.repair.cc:4065 +#: f.tools.cc:1721 msgid "file not found" msgstr "file not found" @@ -481,7 +473,7 @@ msgid "light pixels" msgstr "light pixels" -#: f.combine.cc:2315 f.meta.cc:169 +#: f.combine.cc:2315 msgid "file:" msgstr "file:" @@ -490,7 +482,7 @@ msgstr "Paint and Warp Image" #: f.combine.cc:2829 f.combine.cc:3482 f.combine.cc:4897 f.combine.cc:5795 -#: f.menus.cc:58 f.menus.cc:104 +#: f.menus.cc:58 f.menus.cc:119 msgid "Image" msgstr "Image" @@ -558,7 +550,7 @@ msgid "no curve (scanned image)" msgstr "no curve (scanned image)" -#: f.combine.cc:4348 f.combine.cc:5245 f.menus.cc:198 f.menus.cc:446 +#: f.combine.cc:4348 f.combine.cc:5245 f.menus.cc:210 f.menus.cc:457 msgid "Resize" msgstr "Resize" @@ -595,6 +587,173 @@ "Drag images into rough alignment.\n" "To rotate, drag from right edge." +#: f.combine.cc:6061 +msgid "Mashup layout and background image" +msgstr "Mashup layout and background image" + +#: f.combine.cc:6090 +msgid "choose an image file" +msgstr "choose an image file" + +#: f.combine.cc:6091 +msgid "use current image file" +msgstr "use current image file" + +#: f.combine.cc:6092 +msgid "open a Mashup project file" +msgstr "open a Mashup project file" + +#: f.combine.cc:6093 +msgid "specify layout size and color" +msgstr "specify layout size and color" + +#: f.combine.cc:6120 +msgid "choose layout file" +msgstr "choose layout file" + +#: f.combine.cc:6181 +msgid "Edit Images" +msgstr "Edit Images" + +#: f.combine.cc:6182 f.combine.cc:6931 +msgid "Edit Text" +msgstr "Edit Text" + +#: f.combine.cc:6183 f.combine.cc:6482 +msgid "Save Project" +msgstr "Save Project" + +#: f.combine.cc:6186 +msgid "add or edit images" +msgstr "add or edit images" + +#: f.combine.cc:6187 +msgid "add or edit text" +msgstr "add or edit text" + +#: f.combine.cc:6188 +msgid "save project data" +msgstr "save project data" + +#: f.combine.cc:6189 +msgid "project complete" +msgstr "project complete" + +#: f.combine.cc:6190 +msgid "cancel project" +msgstr "cancel project" + +#: f.combine.cc:6283 +msgid "Open Project" +msgstr "Open Project" + +#: f.combine.cc:6302 +#, c-format +msgid "" +"layout image file missing: \n" +" %s" +msgstr "" +"layout image file missing: \n" +" %s" + +#: f.combine.cc:6320 +#, c-format +msgid "" +"overlay image file missing: \n" +" %s" +msgstr "" +"overlay image file missing: \n" +" %s" + +#: f.combine.cc:6382 +#, c-format +msgid "" +"layout image file error: \n" +" %s" +msgstr "" +"layout image file error: \n" +" %s" + +#: f.combine.cc:6393 +#, c-format +msgid "" +"overlay image file error: \n" +" %s" +msgstr "" +"overlay image file error: \n" +" %s" + +#: f.combine.cc:6452 +msgid "project file is defective" +msgstr "project file is defective" + +#: f.combine.cc:6530 +msgid "Click image to select, drag image to move." +msgstr "Click image to select, drag image to move." + +#: f.combine.cc:6563 +msgid "current image:" +msgstr "current image:" + +#: f.combine.cc:6585 f.combine.cc:6965 f.image.cc:1681 +msgid "Transparency" +msgstr "Transparency" + +#: f.combine.cc:6589 +msgid "Edge Blend Width" +msgstr "Edge Blend Width" + +#: f.combine.cc:6755 +#, c-format +msgid "exceeded %d images" +msgstr "exceeded %d images" + +#: f.combine.cc:6906 +msgid "Enter text, click/drag on image." +msgstr "Enter text, click/drag on image." + +#: f.combine.cc:6936 f.image.cc:1652 f.tools.cc:1113 +msgid "Text" +msgstr "Text" + +#: f.combine.cc:6954 f.image.cc:1670 +msgid "text" +msgstr "text" + +#: f.combine.cc:6955 f.image.cc:1671 +msgid "backing" +msgstr "backing" + +#: f.combine.cc:6956 f.image.cc:1672 +msgid "outline" +msgstr "outline" + +#: f.combine.cc:6957 f.image.cc:1673 +msgid "shadow" +msgstr "shadow" + +#: f.combine.cc:6959 f.image.cc:1675 f.menus.cc:61 f.menus.cc:122 +#: f.menus.cc:286 fotoxx.h:969 +msgid "Color" +msgstr "Color" + +#: f.combine.cc:6971 f.image.cc:1687 fotoxx.h:1039 +msgid "Width" +msgstr "Width" + +#: f.combine.cc:6984 f.image.cc:1700 +msgid "Text File:" +msgstr "Text File:" + +#: f.combine.cc:7046 f.image.cc:1811 +msgid "select font" +msgstr "select font" + +#: f.combine.cc:7154 +#, c-format +msgid "exceeded %d text entries" +msgstr "exceeded %d text entries" + #: f.effects.cc:44 msgid "Set color depth to 1-16 bits" msgstr "Set color depth to 1-16 bits" @@ -635,7 +794,7 @@ msgid "black/white" msgstr "black/white" -#: f.effects.cc:983 f.menus.cc:241 +#: f.effects.cc:983 f.menus.cc:253 msgid "Graduated Blur" msgstr "Graduated Blur" @@ -655,7 +814,7 @@ msgid "depth" msgstr "depth" -#: f.effects.cc:1219 f.file.cc:987 +#: f.effects.cc:1219 f.file.cc:1031 msgid "color" msgstr "color" @@ -703,7 +862,7 @@ msgid "borders" msgstr "borders" -#: f.effects.cc:2461 f.menus.cc:246 +#: f.effects.cc:2461 f.menus.cc:258 msgid "False Colors" msgstr "False Colors" @@ -719,7 +878,7 @@ msgid "Blue: Red" msgstr "Blue: Red" -#: f.effects.cc:2669 f.menus.cc:247 +#: f.effects.cc:2669 f.menus.cc:259 msgid "Vignette" msgstr "Vignette" @@ -727,7 +886,7 @@ msgid "center" msgstr "center" -#: f.effects.cc:2700 f.retouch.cc:2402 +#: f.effects.cc:2700 f.retouch.cc:2399 msgid "edge" msgstr "edge" @@ -735,47 +894,55 @@ msgid "no newly added files found" msgstr "no newly added files found" -#: f.file.cc:275 +#: f.file.cc:307 msgid "no more images" msgstr "no more images" -#: f.file.cc:343 f.menus.cc:136 f.menus.cc:457 +#: f.file.cc:347 f.menus.cc:151 f.menus.cc:468 msgid "Open RAW file (ufraw)" msgstr "Open RAW file (ufraw)" -#: f.file.cc:347 +#: f.file.cc:351 msgid "RAW type not registered in User Settings" msgstr "RAW type not registered in User Settings" -#: f.file.cc:367 -msgid "Overwrite original file?" -msgstr "Overwrite original file?" - -#: f.file.cc:368 -msgid "Do not warn again" -msgstr "Do not warn again" - -#: f.file.cc:383 -msgid "Warning" -msgstr "Warning" - -#: f.file.cc:495 -msgid "Save File" -msgstr "Save File" - -#: f.file.cc:528 zfuncs.cc:9270 -msgid "quality" -msgstr "quality" +#: f.file.cc:401 +msgid "Save Image File" +msgstr "Save Image File" + +#: f.file.cc:411 +msgid "new version" +msgstr "new version" + +#: f.file.cc:412 +msgid "new file name" +msgstr "new file name" + +#: f.file.cc:413 +msgid "replace file" +msgstr "replace file" + +#: f.file.cc:419 +msgid "save as new file version" +msgstr "save as new file version" + +#: f.file.cc:420 f.file.cc:548 +msgid "save as new file name or type" +msgstr "save as new file name or type" + +#: f.file.cc:421 +msgid "replace old file (OVERWRITE)" +msgstr "replace old file (OVERWRITE)" -#: f.file.cc:530 +#: f.file.cc:564 msgid "make current" msgstr "make current" -#: f.file.cc:625 +#: f.file.cc:657 msgid "jpeg quality must be 1-100" msgstr "jpeg quality must be 1-100" -#: f.file.cc:653 +#: f.file.cc:683 #, c-format msgid "" "Overwrite file? \n" @@ -784,31 +951,31 @@ "Overwrite file? \n" " %s" -#: f.file.cc:799 f.menus.cc:140 +#: f.file.cc:843 f.menus.cc:153 msgid "Rename Image File" msgstr "Rename Image File" -#: f.file.cc:806 +#: f.file.cc:850 msgid "old name" msgstr "old name" -#: f.file.cc:807 +#: f.file.cc:851 msgid "new name" msgstr "new name" -#: f.file.cc:816 +#: f.file.cc:860 msgid "previous name" msgstr "previous name" -#: f.file.cc:817 +#: f.file.cc:861 msgid "add 1" msgstr "add 1" -#: f.file.cc:895 f.file.cc:1248 +#: f.file.cc:939 f.file.cc:1292 msgid "target file already exists" msgstr "target file already exists" -#: f.file.cc:922 f.file.cc:1270 f.file.cc:1388 +#: f.file.cc:966 f.file.cc:1314 f.file.cc:1432 #, c-format msgid "" "delete failed: \n" @@ -817,59 +984,59 @@ "delete failed: \n" " %s" -#: f.file.cc:971 +#: f.file.cc:1015 msgid "Create Blank Image" msgstr "Create Blank Image" -#: f.file.cc:973 +#: f.file.cc:1017 msgid "file name" msgstr "file name" -#: f.file.cc:978 f.image.cc:470 +#: f.file.cc:1022 f.image.cc:479 msgid "width" msgstr "width" -#: f.file.cc:981 f.image.cc:473 f.tools.cc:4088 +#: f.file.cc:1025 f.image.cc:482 f.tools.cc:4099 msgid "height" msgstr "height" -#: f.file.cc:1156 +#: f.file.cc:1200 msgid "Copy Image File" msgstr "Copy Image File" -#: f.file.cc:1158 +#: f.file.cc:1202 msgid "Move Image File" msgstr "Move Image File" -#: f.file.cc:1164 f.file.cc:1343 f.file.cc:1464 +#: f.file.cc:1208 f.file.cc:1387 f.file.cc:1508 msgid "image file" msgstr "image file" -#: f.file.cc:1169 +#: f.file.cc:1213 msgid "new location" msgstr "new location" -#: f.file.cc:1203 f.tools.cc:4317 +#: f.file.cc:1247 f.tools.cc:4328 msgid "Select directory" msgstr "Select directory" -#: f.file.cc:1233 +#: f.file.cc:1277 msgid "new location is not a directory" msgstr "new location is not a directory" -#: f.file.cc:1307 +#: f.file.cc:1351 msgid "Delete Image File - CANNOT BE REVERSED" msgstr "Delete Image File - CANNOT BE REVERSED" -#: f.file.cc:1308 f.file.cc:1430 +#: f.file.cc:1352 f.file.cc:1474 msgid "(automatic step to next image)" msgstr "(automatic step to next image)" -#: f.file.cc:1429 f.menus.cc:142 +#: f.file.cc:1473 f.menus.cc:155 msgid "Trash Image File" msgstr "Trash Image File" -#: f.file.cc:1494 +#: f.file.cc:1538 msgid "" "Linux standard trash does not work. \n" "Desktop trash folder will be created." @@ -877,7 +1044,7 @@ "Linux standard trash does not work. \n" "Desktop trash folder will be created." -#: f.file.cc:1497 +#: f.file.cc:1541 msgid "" "Linux and Desktop trash do not work. \n" "Permanently delete the image file?" @@ -885,1476 +1052,1514 @@ "Linux and Desktop trash do not work. \n" "Permanently delete the image file?" -#: f.file.cc:1527 +#: f.file.cc:1571 msgid "Move read-only file to trash?" msgstr "Move read-only file to trash?" -#: f.file.cc:1556 +#: f.file.cc:1600 #, c-format msgid "Cannot create trash folder: %s" msgstr "Cannot create trash folder: %s" -#: f.file.cc:1569 zfuncs.cc:4211 +#: f.file.cc:1613 zfuncs.cc:4211 #, c-format msgid "error: %s" msgstr "error: %s" -#: f.file.cc:1588 +#: f.file.cc:1632 #, c-format msgid "delete failed: %s" msgstr "delete failed: %s" -#: f.file.cc:2041 f.menus.cc:132 +#: f.file.cc:2086 f.menus.cc:147 msgid "Open Image File" msgstr "Open Image File" -#: f.file.cc:2059 +#: f.file.cc:2104 msgid "unknown file type" msgstr "unknown file type" -#: f.file.cc:2341 +#: f.file.cc:2385 msgid "Unable to copy EXIF/IPTC data" msgstr "Unable to copy EXIF/IPTC data" -#: f.file.cc:2404 f.file.cc:2465 +#: f.file.cc:2448 f.file.cc:2509 #, c-format msgid "file not found: %s" msgstr "file not found: %s" -#: f.file.cc:2409 f.file.cc:2470 +#: f.file.cc:2453 f.file.cc:2514 #, c-format msgid "file type not supported: %s" msgstr "file type not supported: %s" -#: f.file.cc:3982 f.menus.cc:390 +#: f.file.cc:4035 msgid "change directory" msgstr "change directory" -#: f.file.cc:3990 f.menus.cc:391 +#: f.file.cc:4043 f.menus.cc:402 msgid "GoTo" msgstr "GoTo" -#: f.file.cc:4005 f.menus.cc:400 +#: f.file.cc:4058 f.menus.cc:405 msgid "Sort" msgstr "Sort" -#: f.file.cc:4036 f.file.cc:4360 f.menus.cc:398 +#: f.file.cc:4089 f.file.cc:4420 f.menus.cc:410 msgid "Row↑" msgstr "Row↑" -#: f.file.cc:4048 f.file.cc:4361 f.menus.cc:399 +#: f.file.cc:4101 f.file.cc:4421 f.menus.cc:411 msgid "Row↓" msgstr "Row↓" -#: f.file.cc:4060 f.file.cc:4363 f.menus.cc:394 +#: f.file.cc:4113 f.file.cc:4423 f.menus.cc:406 msgid "First" msgstr "First" -#: f.file.cc:4061 f.file.cc:4364 f.menus.cc:395 +#: f.file.cc:4114 f.file.cc:4424 f.menus.cc:407 msgid "Last" msgstr "Last" -#: f.file.cc:4062 f.file.cc:4358 f.file.cc:4365 f.menus.cc:396 +#: f.file.cc:4115 f.file.cc:4418 f.file.cc:4425 f.menus.cc:408 msgid "Page↑" msgstr "Page↑" -#: f.file.cc:4063 f.file.cc:4359 f.file.cc:4366 f.menus.cc:397 +#: f.file.cc:4116 f.file.cc:4419 f.file.cc:4426 f.menus.cc:409 msgid "Page↓" msgstr "Page↓" -#: f.file.cc:4114 f.tools.cc:940 +#: f.file.cc:4167 f.tools.cc:953 msgid "Choose top image directory" msgstr "Choose top image directory" -#: f.file.cc:4120 f.file.cc:4134 +#: f.file.cc:4173 f.file.cc:4187 msgid "recent" msgstr "recent" -#: f.file.cc:4121 f.file.cc:4139 +#: f.file.cc:4174 f.file.cc:4192 msgid "newest" msgstr "newest" -#: f.file.cc:4170 +#: f.file.cc:4223 msgid "Gallery Sort" msgstr "Gallery Sort" -#: f.file.cc:4174 +#: f.file.cc:4227 msgid "File Name" msgstr "File Name" -#: f.file.cc:4175 +#: f.file.cc:4228 msgid "File Mod Date/Time" msgstr "File Mod Date/Time" -#: f.file.cc:4176 +#: f.file.cc:4229 msgid "Photo Date/Time (EXIF)" msgstr "Photo Date/Time (EXIF" -#: f.file.cc:4178 +#: f.file.cc:4231 msgid "ascending" msgstr "ascending" -#: f.file.cc:4179 +#: f.file.cc:4232 msgid "descending" msgstr "descending" -#: f.file.cc:4352 f.file.cc:4353 f.file.cc:4355 +#: f.file.cc:4412 f.file.cc:4413 f.file.cc:4415 f.menus.cc:403 msgid "Zoom+" msgstr "Zoom+" -#: f.file.cc:4354 f.file.cc:4356 +#: f.file.cc:4414 f.file.cc:4416 f.menus.cc:404 msgid "Zoom-" msgstr "Zoom-" -#: f.file.cc:5192 fotoxx.h:1003 +#: f.file.cc:5253 fotoxx.h:1024 msgid "Select Files" msgstr "Select Files" -#: f.file.cc:5668 fotoxx.h:935 +#: f.file.cc:5729 fotoxx.h:954 msgid "Add" msgstr "Add" -#: f.file.cc:5668 fotoxx.h:995 +#: f.file.cc:5729 fotoxx.h:1016 msgid "Remove" msgstr "Remove" -#: f.file.cc:5670 +#: f.file.cc:5731 msgid "menu name" msgstr "menu name" -#: f.file.cc:5740 f.file.cc:5761 +#: f.file.cc:5801 f.file.cc:5822 msgid "Restart Fotoxx to update plugin menu" msgstr "Restart Fotoxx to update plugin menu" -#: f.file.cc:5803 -msgid "no plugin command" -msgstr "no plugin command" +#: f.file.cc:5864 +msgid "Plugins menu is empty" +msgstr "Plugins menu is empty" -#: f.file.cc:5831 +#: f.file.cc:5892 msgid "plugin failed" msgstr "plugin failed" -#: f.image.cc:47 -msgid "Turn Image" -msgstr "Turn Image" +#: f.image.cc:50 +msgid "Rotate Image 90º" +msgstr "Rotate Image 90º" + +#: f.image.cc:54 +msgid "rotate -90º" +msgstr "rotate -90º" + +#: f.image.cc:55 +msgid "rotate +90º" +msgstr "rotate +90º" -#: f.image.cc:114 +#: f.image.cc:123 msgid "Drag right edge with mouse" msgstr "Drag right edge with mouse" -#: f.image.cc:144 +#: f.image.cc:153 msgid "Rotate Image" msgstr "Rotate Image" -#: f.image.cc:148 zfuncs.cc:9605 +#: f.image.cc:157 zfuncs.cc:9679 msgid "left" msgstr "left" -#: f.image.cc:151 zfuncs.cc:9606 +#: f.image.cc:160 zfuncs.cc:9680 msgid "right" msgstr "right" -#: f.image.cc:157 +#: f.image.cc:166 msgid "degrees" msgstr "degrees" -#: f.image.cc:442 +#: f.image.cc:451 msgid "Drag middle to move, drag corners to resize." msgstr "Drag middle to move, drag corners to resize." -#: f.image.cc:465 f.menus.cc:196 f.menus.cc:445 +#: f.image.cc:474 f.menus.cc:208 f.menus.cc:456 msgid "Trim/Crop" msgstr "Trim/Crop" -#: f.image.cc:476 f.image.cc:756 +#: f.image.cc:485 f.image.cc:765 msgid "ratio" msgstr "ratio" -#: f.image.cc:480 +#: f.image.cc:489 msgid "portrait" msgstr "portrait" -#: f.image.cc:481 +#: f.image.cc:490 msgid "landscape" msgstr "landscape" -#: f.image.cc:482 +#: f.image.cc:491 msgid "Lock Ratio" msgstr "Lock Ratio" -#: f.image.cc:486 +#: f.image.cc:495 msgid "customize" msgstr "customize" -#: f.image.cc:748 +#: f.image.cc:757 msgid "Trim Buttons" msgstr "Trim Buttons" -#: f.image.cc:755 +#: f.image.cc:764 msgid "label" msgstr "label" -#: f.image.cc:1277 +#: f.image.cc:1286 msgid "Lock aspect ratio" msgstr "Lock aspect ratio" -#: f.image.cc:1298 +#: f.image.cc:1307 msgid "Resize Image" msgstr "Resize Image" -#: f.image.cc:1480 f.menus.cc:199 +#: f.image.cc:1491 f.menus.cc:211 msgid "Flip" msgstr "Flip" -#: f.image.cc:1604 +#: f.image.cc:1610 msgid "Enter text, click/drag on image, right click to remove" msgstr "Enter text, click/drag on image, right click to remove" -#: f.image.cc:1631 +#: f.image.cc:1645 msgid "Write Text on Image" msgstr "Write Text on Image" -#: f.image.cc:1638 f.tools.cc:1100 -msgid "Text" -msgstr "Text" - -#: f.image.cc:1645 -msgid "Size" -msgstr "Size" - -#: f.image.cc:1656 -msgid "text" -msgstr "text" - -#: f.image.cc:1657 -msgid "backing" -msgstr "backing" +#: f.image.cc:2312 +msgid "text file is defective" +msgstr "text file is defective" -#: f.image.cc:1658 -msgid "outline" -msgstr "outline" - -#: f.image.cc:1659 -msgid "shadow" -msgstr "shadow" - -#: f.image.cc:1661 f.menus.cc:61 f.menus.cc:107 f.menus.cc:273 fotoxx.h:949 -msgid "Color" -msgstr "Color" - -#: f.image.cc:1667 -msgid "Transparency" -msgstr "Transparency" - -#: f.image.cc:1673 fotoxx.h:1017 -msgid "Width" -msgstr "Width" - -#: f.image.cc:1679 -msgid "Angle" -msgstr "Angle" - -#: f.image.cc:1686 -msgid "Text File:" -msgstr "Text File:" - -#: f.image.cc:1764 -msgid "select font" -msgstr "select font" - -#: f.menus.cc:54 f.menus.cc:100 +#: f.menus.cc:54 f.menus.cc:115 msgid "File" msgstr "File" -#: f.menus.cc:55 f.menus.cc:101 +#: f.menus.cc:55 f.menus.cc:116 msgid "Tools" msgstr "Tools" -#: f.menus.cc:56 f.menus.cc:102 +#: f.menus.cc:56 f.menus.cc:117 msgid "Metadata" msgstr "Metadata" -#: f.menus.cc:57 f.menus.cc:103 +#: f.menus.cc:57 f.menus.cc:118 msgid "Areas" msgstr "Areas" -#: f.menus.cc:59 f.menus.cc:105 +#: f.menus.cc:59 f.menus.cc:120 msgid "Retouch" msgstr "Retouch" -#: f.menus.cc:60 f.menus.cc:106 +#: f.menus.cc:60 f.menus.cc:121 msgid "Repair" msgstr "Repair" -#: f.menus.cc:62 f.menus.cc:108 +#: f.menus.cc:62 f.menus.cc:123 msgid "Bend" msgstr "Bend" -#: f.menus.cc:63 f.menus.cc:109 +#: f.menus.cc:63 f.menus.cc:124 msgid "Effects" msgstr "Effects" -#: f.menus.cc:64 f.menus.cc:110 +#: f.menus.cc:64 f.menus.cc:125 msgid "Combine" msgstr "Combine" -#: f.menus.cc:65 f.menus.cc:111 +#: f.menus.cc:65 f.menus.cc:126 msgid "Plugins" msgstr "Plugins" -#: f.menus.cc:66 f.menus.cc:112 fotoxx-13.08.cc:3631 fotoxx.h:967 +#: f.menus.cc:66 f.menus.cc:127 fotoxx-13.09.cc:3664 fotoxx.h:988 msgid "Help" msgstr "Help" -#: f.menus.cc:99 f.menus.cc:271 +#: f.menus.cc:99 f.menus.cc:284 msgid "Favorites Menu" msgstr "Favorites Menu" +#: f.menus.cc:100 +msgid "Open, Save, Trash, Rename, Print" +msgstr "Open, Save, Trash, Rename, Print" + +#: f.menus.cc:101 +msgid "Synch Files, Settings, Collections, Batch Funcs ..." +msgstr "Synch Files, Settings, Collections, Batch Funcs ..." + +#: f.menus.cc:102 +msgid "Captions, Tags, Ratings, Geotags, Search ... " +msgstr "Captions, Tags, Ratings, Geotags, Search ... " + +#: f.menus.cc:103 +msgid "Select image areas to edit, copy and paste" +msgstr "Select image areas to edit, copy and paste" + +#: f.menus.cc:104 +msgid "Rotate, Trim/Crop, Resize, Add Text" +msgstr "Rotate, Trim/Crop, Resize, Add Text" + +#: f.menus.cc:105 +msgid "Improve brightness, contrast, color ..." +msgstr "Improve brightness, contrast, color ..." + +#: f.menus.cc:106 +msgid "Sharpen, Clean, Red-eyes, Paint, Clone ..." +msgstr "Sharpen, Clean, Red-eyes, Paint, Clone ..." + +#: f.menus.cc:107 +msgid "White Balance, Color Profile, Color Matching" +msgstr "White Balance, Color Profile, Color Matching" + +#: f.menus.cc:108 +msgid "Fix Perspective, Bend/Warp image ..." +msgstr "Fix Perspective, Bend/Warp image ..." + +#: f.menus.cc:109 +msgid "Special Effects, Arty Transforms" +msgstr "Special Effects, Arty Transforms" + +#: f.menus.cc:110 +msgid "HDR, HDF, Panorama, Stack, Mashup" +msgstr "HDR, HDF, Panorama, Stack, Mashup" + +#: f.menus.cc:111 +msgid "Use other image editors within Fotoxx" +msgstr "Use other image editors within Fotoxx" + #: f.menus.cc:112 -msgid "User Guide etc." -msgstr "User Guide etc." +msgid "Quick Start, User Guide, Recent Changes ..." +msgstr "Quick Start, User Guide, Recent Changes ..." -#: f.menus.cc:131 +#: f.menus.cc:146 msgid "New Window" msgstr "New Window" -#: f.menus.cc:131 +#: f.menus.cc:146 msgid "Open another window" msgstr "Open another window" -#: f.menus.cc:132 f.menus.cc:278 +#: f.menus.cc:147 f.menus.cc:291 msgid "Open a new image file" msgstr "Open a new image file" -#: f.menus.cc:133 +#: f.menus.cc:148 msgid "Open Previous File" msgstr "Open Previous File" -#: f.menus.cc:133 +#: f.menus.cc:148 msgid "Open the previously seen file" msgstr "Open the previously seen file" -#: f.menus.cc:134 +#: f.menus.cc:149 msgid "Open a recently seen file" msgstr "Open a recently seen file" -#: f.menus.cc:134 +#: f.menus.cc:149 msgid "Recently Seen Images" msgstr "Recently Seen Images" -#: f.menus.cc:135 +#: f.menus.cc:150 msgid "Newly Added Images" msgstr "Newly Added Images" -#: f.menus.cc:135 +#: f.menus.cc:150 msgid "Open a newly added file" msgstr "Open a newly added file" -#: f.menus.cc:136 +#: f.menus.cc:151 msgid "Open and edit a camera RAW file" msgstr "Open and edit a camera RAW file" -#: f.menus.cc:137 -msgid "Save to Same File" -msgstr "Save to Same File" - -#: f.menus.cc:137 -msgid "Save to the same file (replace)" -msgstr "Save to the same file (replace)" - -#: f.menus.cc:138 -msgid "Save to New Version" -msgstr "Save to New Version" - -#: f.menus.cc:138 -msgid "Save to a new (next) version" -msgstr "Save to a new (next) version" - -#: f.menus.cc:139 -msgid "Save to New File" -msgstr "Save to New File" - -#: f.menus.cc:139 -msgid "Save to a new file name" -msgstr "Save to a new file name" +#: f.menus.cc:152 f.menus.cc:294 +msgid "Save modified image file to disk" +msgstr "Save modified image file to disk" + +#: f.menus.cc:152 +msgid "Save to Disk" +msgstr "Save to Disk" -#: f.menus.cc:140 +#: f.menus.cc:153 msgid "Change the image file name" msgstr "Change the image file name" -#: f.menus.cc:141 +#: f.menus.cc:154 msgid "Create a blank image" msgstr "Create a blank image" -#: f.menus.cc:141 +#: f.menus.cc:154 msgid "New Blank Image" msgstr "New Blank Image" -#: f.menus.cc:142 f.menus.cc:284 +#: f.menus.cc:155 f.menus.cc:295 msgid "Move image file to Trash" msgstr "Move image file to Trash" -#: f.menus.cc:143 +#: f.menus.cc:156 msgid "Print Image" msgstr "Print Image" -#: f.menus.cc:143 +#: f.menus.cc:156 msgid "Print the current image" msgstr "Print the current image" -#: f.menus.cc:144 +#: f.menus.cc:157 msgid "Quit Fotoxx" msgstr "Quit Fotoxx" -#: f.menus.cc:146 +#: f.menus.cc:159 msgid "Index new files and make thumbnails" msgstr "Index new files and make thumbnails" -#: f.menus.cc:146 f.tools.cc:182 f.tools.cc:364 +#: f.menus.cc:159 f.tools.cc:182 f.tools.cc:364 msgid "Synchronize Files" msgstr "Synchronize Files" -#: f.menus.cc:147 +#: f.menus.cc:160 msgid "Change user preferences" msgstr "Change user preferences" -#: f.menus.cc:147 +#: f.menus.cc:160 msgid "User Settings" msgstr "User Settings" -#: f.menus.cc:148 +#: f.menus.cc:161 msgid "Change Keyboard Shortcut Keys" msgstr "Change Keyboard Shortcut Keys" -#: f.menus.cc:148 +#: f.menus.cc:161 msgid "Keyboard Shortcuts" msgstr "Keyboard Shortcuts" -#: f.menus.cc:149 f.tools.cc:2179 +#: f.menus.cc:162 f.tools.cc:2190 msgid "Manage Collections" msgstr "Manage Collections" -#: f.menus.cc:149 +#: f.menus.cc:162 msgid "Organize images into collections" msgstr "Organize images into collections" -#: f.menus.cc:150 +#: f.menus.cc:163 msgid "Convert for a new top directory" msgstr "Convert for a new top directory" -#: f.menus.cc:150 +#: f.menus.cc:163 msgid "Move Collections" msgstr "Move Collections" -#: f.menus.cc:151 f.tools.cc:2778 +#: f.menus.cc:164 f.tools.cc:2789 msgid "Slide Show" msgstr "Slide Show" -#: f.menus.cc:151 +#: f.menus.cc:164 msgid "Start a slide show" msgstr "Start a slide show" -#: f.menus.cc:152 f.tools.cc:3863 +#: f.menus.cc:165 f.tools.cc:3874 msgid "Batch Rename" msgstr "Batch Rename" -#: f.menus.cc:152 +#: f.menus.cc:165 msgid "Rename multiple image files" msgstr "Rename multiple image files" -#: f.menus.cc:153 f.tools.cc:4078 +#: f.menus.cc:166 f.tools.cc:4089 msgid "Batch Convert/Resize/Move" msgstr "Batch Convert/Resize/Move" -#: f.menus.cc:153 +#: f.menus.cc:166 msgid "Convert resize, move multiple files" msgstr "Convert resize, move multiple files" -#: f.menus.cc:154 f.tools.cc:4416 +#: f.menus.cc:167 f.tools.cc:4427 msgid "Batch Convert RAW Files" msgstr "Batch Convert RAW Files" -#: f.menus.cc:154 +#: f.menus.cc:167 msgid "Convert multiple camera RAW files" msgstr "Convert multiple camera RAW files" -#: f.menus.cc:155 f.tools.cc:4795 +#: f.menus.cc:168 f.tools.cc:4806 msgid "Brightness Distribution" msgstr "Brightness Distribution" -#: f.menus.cc:155 +#: f.menus.cc:168 msgid "Show a brightness distribution graph" msgstr "Show a brightness distribution graph" -#: f.menus.cc:156 f.menus.cc:455 f.tools.cc:4990 +#: f.menus.cc:169 f.menus.cc:466 f.tools.cc:5001 msgid "Grid Lines" msgstr "Grid Lines" -#: f.menus.cc:156 +#: f.menus.cc:169 msgid "Show or revise grid lines" msgstr "Show or revise grid lines" -#: f.menus.cc:157 f.tools.cc:5166 +#: f.menus.cc:170 f.tools.cc:5177 msgid "Show RGB" msgstr "Show RGB" -#: f.menus.cc:157 +#: f.menus.cc:170 msgid "Show RGB colors at mouse click" msgstr "Show RGB colors at mouse click" -#: f.menus.cc:158 +#: f.menus.cc:171 msgid "Chart to adjust monitor color" msgstr "Chart to adjust monitor color" -#: f.menus.cc:158 +#: f.menus.cc:171 msgid "Monitor Color" msgstr "Monitor Color" -#: f.menus.cc:159 +#: f.menus.cc:172 msgid "Chart to adjust monitor gamma" msgstr "Chart to adjust monitor gamma" -#: f.menus.cc:159 f.tools.cc:5490 +#: f.menus.cc:172 f.tools.cc:5501 msgid "Monitor Gamma" msgstr "Monitor Gamma" -#: f.menus.cc:160 +#: f.menus.cc:173 msgid "Change Language" msgstr "Change Language" -#: f.menus.cc:160 +#: f.menus.cc:173 msgid "Change the GUI language" msgstr "Change the GUI language" -#: f.menus.cc:161 +#: f.menus.cc:174 msgid "Missing Translations" msgstr "Missing Translations" -#: f.menus.cc:161 +#: f.menus.cc:174 msgid "Report missing translations" msgstr "Report missing translations" -#: f.menus.cc:162 +#: f.menus.cc:175 msgid "Edit Translations" msgstr "Edit Translations" -#: f.menus.cc:162 +#: f.menus.cc:175 msgid "Edit translations while using Fotoxx" msgstr "Edit translations while using Fotoxx" -#: f.menus.cc:163 +#: f.menus.cc:176 msgid "Create a Gnome menu and launcher" msgstr "Create a Gnome menu and launcher" -#: f.menus.cc:163 +#: f.menus.cc:176 msgid "Menu and Launcher" msgstr "Menu and Launcher" -#: f.menus.cc:164 +#: f.menus.cc:177 msgid "Burn Images to CD/DVD" msgstr "Burn Images to CD/DVD" -#: f.menus.cc:164 +#: f.menus.cc:177 msgid "Burn selected image files to CD or DVD" msgstr "Burn selected image files to CD or DVD" -#: f.menus.cc:165 +#: f.menus.cc:178 msgid "Memory and CPU (to terminal/logfile)" msgstr "Memory and CPU (to terminal/logfile" -#: f.menus.cc:165 +#: f.menus.cc:178 msgid "Resources" msgstr "Resources" -#: f.menus.cc:167 -msgid "Edit Caption/Comments" -msgstr "Edit Caption/Comments" - -#: f.menus.cc:167 -msgid "Edit image caption or comment" -msgstr "Edit image caption or comment" - -#: f.menus.cc:168 f.meta.cc:165 f.meta.cc:1728 +#: f.menus.cc:180 f.meta.cc:110 f.meta.cc:1897 msgid "Edit Metadata" msgstr "Edit Metadata" -#: f.menus.cc:168 -msgid "Edit image date/rating/tags" -msgstr "Edit image date/rating/tags" +#: f.menus.cc:180 +msgid "Edit image tags/caption/rating ..." +msgstr "Edit image tags/caption/rating ..." -#: f.menus.cc:169 +#: f.menus.cc:181 msgid "Add/remove tags for multiple images" msgstr "Add/remove tags for multiple images" -#: f.menus.cc:169 -msgid "Batch Tags" -msgstr "Batch Tags" +#: f.menus.cc:181 f.meta.cc:1552 +msgid "Batch Add/Remove Tags" +msgstr "Batch Add/Remove Tags" -#: f.menus.cc:170 +#: f.menus.cc:182 msgid "List a few key metadata items" msgstr "List a few key metadata items" -#: f.menus.cc:170 +#: f.menus.cc:182 msgid "View Metadata (short)" msgstr "View Metadata (short)" -#: f.menus.cc:171 +#: f.menus.cc:183 msgid "List all metadata items" msgstr "List all metadata items" -#: f.menus.cc:171 +#: f.menus.cc:183 msgid "View Metadata (long)" msgstr "View Metadata (long)" -#: f.menus.cc:172 +#: f.menus.cc:184 msgid "Edit Any Metadata" msgstr "Edit Any Metadata" -#: f.menus.cc:172 +#: f.menus.cc:184 msgid "Edit any image metadata" msgstr "Edit any image metadata" -#: f.menus.cc:173 f.meta.cc:1820 +#: f.menus.cc:185 f.meta.cc:1989 msgid "Delete Metadata" msgstr "Delete Metadata" -#: f.menus.cc:173 +#: f.menus.cc:185 msgid "Remove all metadata from an image" msgstr "Remove all metadata from an image" -#: f.menus.cc:174 +#: f.menus.cc:186 msgid "Download Geolocations" msgstr "Download Geolocations" -#: f.menus.cc:174 +#: f.menus.cc:186 msgid "Download initial geolocation database" msgstr "Download initial geolocation database" -#: f.menus.cc:176 f.meta.cc:2713 +#: f.menus.cc:188 f.meta.cc:2892 msgid "Edit Geotags" msgstr "Edit Geotags" -#: f.menus.cc:176 -msgid "Edit image geotags" -msgstr "Edit image geotag" +#: f.menus.cc:188 +msgid "Edit image location and geotags" +msgstr "Edit image location and geotags" -#: f.menus.cc:177 +#: f.menus.cc:189 msgid "Add geotags to multiple images" msgstr "Add geotags to multiple images" -#: f.menus.cc:177 f.meta.cc:2905 +#: f.menus.cc:189 f.meta.cc:3084 msgid "Batch Add Geotags" msgstr "Batch Add Geotags" -#: f.menus.cc:178 +#: f.menus.cc:190 msgid "Find all images for a location [date]" msgstr "Find all images for a location [date]" -#: f.menus.cc:178 +#: f.menus.cc:190 msgid "Images by Location/Date" msgstr "Images by Location/Date" -#: f.menus.cc:179 +#: f.menus.cc:191 msgid "Find images by clicking a world map" msgstr "Find images by clicking a world map" -#: f.menus.cc:179 +#: f.menus.cc:191 msgid "Images by Map Location" msgstr "Images by Map Location" -#: f.menus.cc:180 +#: f.menus.cc:192 msgid "Find images meeting select criteria" msgstr "Find images meeting select criteria" -#: f.menus.cc:180 +#: f.menus.cc:192 msgid "Search Images" msgstr "Search Images" -#: f.menus.cc:182 fotoxx.h:1002 +#: f.menus.cc:194 fotoxx.h:1023 msgid "Select" msgstr "Select" -#: f.menus.cc:182 +#: f.menus.cc:194 msgid "Select object or area for editing" msgstr "Select object or area for editing" -#: f.menus.cc:183 fotoxx.h:1004 +#: f.menus.cc:195 fotoxx.h:1025 msgid "Show" msgstr "Show" -#: f.menus.cc:183 +#: f.menus.cc:195 msgid "Show (outline) existing area" msgstr "Show (outline) existing area" -#: f.menus.cc:184 fotoxx.h:969 +#: f.menus.cc:196 fotoxx.h:990 msgid "Hide" msgstr "Hide" -#: f.menus.cc:184 +#: f.menus.cc:196 msgid "Hide existing area" msgstr "Hide existing area" -#: f.menus.cc:185 fotoxx.h:959 +#: f.menus.cc:197 fotoxx.h:979 msgid "Enable" msgstr "Enable" -#: f.menus.cc:185 +#: f.menus.cc:197 msgid "Enable area for editing" msgstr "Enable area for editing" -#: f.menus.cc:186 fotoxx.h:956 +#: f.menus.cc:198 fotoxx.h:976 msgid "Disable" msgstr "Disable" -#: f.menus.cc:186 +#: f.menus.cc:198 msgid "Disable area for editing" msgstr "Disable area for editing" -#: f.menus.cc:187 fotoxx.h:972 +#: f.menus.cc:199 fotoxx.h:993 msgid "Invert" msgstr "Invert" -#: f.menus.cc:187 +#: f.menus.cc:199 msgid "Reverse existing area" msgstr "Reverse existing area" -#: f.menus.cc:188 +#: f.menus.cc:200 msgid "Erase existing area" msgstr "Erase existing area" -#: f.menus.cc:188 fotoxx.h:1013 +#: f.menus.cc:200 fotoxx.h:1035 msgid "Unselect" msgstr "Unselect" -#: f.menus.cc:189 fotoxx.h:951 +#: f.menus.cc:201 fotoxx.h:971 msgid "Copy" msgstr "Copy" -#: f.menus.cc:189 +#: f.menus.cc:201 msgid "Copy an area for later pasting" msgstr "Copy an area for later pasting" -#: f.menus.cc:190 fotoxx.h:984 +#: f.menus.cc:202 fotoxx.h:1005 msgid "Paste" msgstr "Paste" -#: f.menus.cc:190 +#: f.menus.cc:202 msgid "Paste an area into the current image" msgstr "Paste an area into the current image" -#: f.menus.cc:191 +#: f.menus.cc:203 msgid "Open a file with a saved area" msgstr "Open a file with a saved area" -#: f.menus.cc:192 f.menus.cc:281 fotoxx.h:999 +#: f.menus.cc:204 f.menus.cc:294 fotoxx.h:1020 msgid "Save" msgstr "Save" -#: f.menus.cc:192 +#: f.menus.cc:204 msgid "Save an area to a file" msgstr "Save an area to a file" -#: f.menus.cc:194 +#: f.menus.cc:206 msgid "Rotate 90 degrees" msgstr "Rotate 90 degrees" -#: f.menus.cc:194 f.menus.cc:447 -msgid "Turn" -msgstr "Turn" +#: f.menus.cc:206 f.menus.cc:458 +msgid "Rotate 90º" +msgstr "Rotate 90º" -#: f.menus.cc:195 fotoxx.h:998 +#: f.menus.cc:207 fotoxx.h:1019 msgid "Rotate" msgstr "Rotate" -#: f.menus.cc:195 +#: f.menus.cc:207 msgid "Rotate by any angle" msgstr "Rotate by any angle" -#: f.menus.cc:196 +#: f.menus.cc:208 msgid "Cut off unwanted margins" msgstr "Cut off unwanted margins" -#: f.menus.cc:197 +#: f.menus.cc:209 msgid "Auto-Trim" msgstr "Auto-Trim" -#: f.menus.cc:197 +#: f.menus.cc:209 msgid "Remove margins from warp, panorama, etc." msgstr "Remove margins from warp, panorama, etc." -#: f.menus.cc:198 +#: f.menus.cc:210 msgid "Change pixel dimensions" msgstr "Change pixel dimensions" -#: f.menus.cc:199 +#: f.menus.cc:211 msgid "Mirror image horizontally or vertically" msgstr "Mirror image horizontally or vertically" -#: f.menus.cc:200 +#: f.menus.cc:212 msgid "Add Text" msgstr "Add Text" -#: f.menus.cc:200 +#: f.menus.cc:212 msgid "Write text on image" msgstr "Write text on image" -#: f.menus.cc:202 +#: f.menus.cc:214 msgid "Fast auto enhance that may work OK" msgstr "Fast auto enhance that may work OK" -#: f.menus.cc:202 f.menus.cc:448 +#: f.menus.cc:214 f.menus.cc:459 msgid "Voodoo Enhance" msgstr "Voodoo Enhance" -#: f.menus.cc:203 +#: f.menus.cc:215 msgid "Adjust brightness, contrast, color" msgstr "Adjust brightness, contrast, color" -#: f.menus.cc:203 f.menus.cc:449 -msgid "Brightness/Color" -msgstr "Brightness/Color" +#: f.menus.cc:215 f.retouch.cc:211 +msgid "Brightness/Contrast/Color" +msgstr "Brightness/Contrast/Color" -#: f.menus.cc:204 +#: f.menus.cc:216 msgid "Adjust contrast using a gamma curve" msgstr "Adjust contrast using a gamma curve" -#: f.menus.cc:204 f.menus.cc:450 +#: f.menus.cc:216 f.menus.cc:461 msgid "Gamma Curves" msgstr "Gamma Curves" -#: f.menus.cc:205 +#: f.menus.cc:217 msgid "Add local contrast, enhance details" msgstr "Add local contrast, enhance details" -#: f.menus.cc:205 f.menus.cc:452 f.retouch.cc:1130 +#: f.menus.cc:217 f.menus.cc:463 f.retouch.cc:1130 msgid "Tone Mapping" msgstr "Tone Mapping" -#: f.menus.cc:206 f.menus.cc:451 +#: f.menus.cc:218 f.menus.cc:462 msgid "Flatten Brightness" msgstr "Flatten Brightness" -#: f.menus.cc:206 +#: f.menus.cc:218 msgid "Flatten brightness distribution" msgstr "Flatten brightness distribution" -#: f.menus.cc:207 +#: f.menus.cc:219 msgid "Expand Brightness" msgstr "Expand Brightness" -#: f.menus.cc:207 +#: f.menus.cc:219 msgid "Expand brightness range" msgstr "Expand brightness range" -#: f.menus.cc:208 +#: f.menus.cc:220 msgid "Brightness Ramp" msgstr "Brightness Ramp" -#: f.menus.cc:208 +#: f.menus.cc:220 msgid "Fix brightness uniformity across image" msgstr "Fix brightness uniformity across image" -#: f.menus.cc:209 f.retouch.cc:2361 +#: f.menus.cc:221 f.retouch.cc:2358 msgid "Paint Edits" msgstr "Paint Edits" -#: f.menus.cc:209 -msgid "Paint edit function gradually with the mouse" -msgstr "Paint edit function gradually with the mouse" +#: f.menus.cc:221 +msgid "Paint edit function gradually with mouse" +msgstr "Paint edit function gradually with mouse" -#: f.menus.cc:210 f.retouch.cc:2592 +#: f.menus.cc:222 f.retouch.cc:2589 msgid "Leverage Edits" msgstr "Leverage Edits" -#: f.menus.cc:210 +#: f.menus.cc:222 msgid "Leverage edits by brightness or color" msgstr "Leverage edits by brightness or color" -#: f.menus.cc:212 +#: f.menus.cc:224 msgid "Make the image look sharper" msgstr "Make the image look sharper" -#: f.menus.cc:212 f.repair.cc:60 +#: f.menus.cc:224 f.repair.cc:60 msgid "Sharpen" msgstr "Sharpen" -#: f.menus.cc:213 f.repair.cc:1543 +#: f.menus.cc:225 f.repair.cc:1543 msgid "Blur" msgstr "Blur" -#: f.menus.cc:213 +#: f.menus.cc:225 msgid "Make the image look fuzzy" msgstr "Make the image look fuzzy" -#: f.menus.cc:214 +#: f.menus.cc:226 msgid "Filter noise from low-light photos" msgstr "Filter noise from low-light photos" -#: f.menus.cc:214 +#: f.menus.cc:226 msgid "Reduce Noise" msgstr "Reduce Noise" -#: f.menus.cc:215 +#: f.menus.cc:227 msgid "Remove unwanted objects" msgstr "Remove unwanted objects" -#: f.menus.cc:215 f.repair.cc:1536 +#: f.menus.cc:227 f.repair.cc:1536 msgid "Smart Erase" msgstr "Smart Erase" -#: f.menus.cc:216 +#: f.menus.cc:228 msgid "Fix red-eyes from electronic flash" msgstr "Fix red-eyes from electronic flash" -#: f.menus.cc:216 f.menus.cc:454 +#: f.menus.cc:228 f.menus.cc:465 msgid "Red Eyes" msgstr "Red Eyes" -#: f.menus.cc:217 +#: f.menus.cc:229 msgid "Paint image pixels using the mouse" msgstr "Paint image pixels using the mouse" -#: f.menus.cc:217 f.repair.cc:2357 +#: f.menus.cc:229 f.repair.cc:2357 msgid "Paint/Clone" msgstr "Paint/Clone" -#: f.menus.cc:218 f.repair.cc:2880 +#: f.menus.cc:230 f.repair.cc:2880 msgid "Remove Dust" msgstr "Remove Dust" -#: f.menus.cc:218 +#: f.menus.cc:230 msgid "Remove dust spots from scanned slides" msgstr "Remove dust spots from scanned slides" -#: f.menus.cc:219 +#: f.menus.cc:231 msgid "Anti-alias" msgstr "Anti-alias" -#: f.menus.cc:219 +#: f.menus.cc:231 msgid "Smoothen edges with jaggies" msgstr "Smoothen edges with jaggies" -#: f.menus.cc:220 +#: f.menus.cc:232 msgid "Fix Color Fringes" msgstr "Fix Color Fringes" -#: f.menus.cc:220 +#: f.menus.cc:232 msgid "Reduce Chromatic Abberation" msgstr "Reduce Chromatic Abberation" -#: f.menus.cc:221 +#: f.menus.cc:233 msgid "Erase known hot and dark pixels" msgstr "Erase known hot and dark pixels" -#: f.menus.cc:221 f.repair.cc:3890 +#: f.menus.cc:233 f.repair.cc:3894 msgid "Fix Stuck Pixels" msgstr "Fix Stuck Pixels" -#: f.menus.cc:223 +#: f.menus.cc:235 msgid "Click on a white/gray area to fix color tint" msgstr "Click on a white/gray area to fix color tint" -#: f.menus.cc:223 f.menus.cc:453 +#: f.menus.cc:235 f.menus.cc:464 msgid "White Balance" msgstr "White Balance" -#: f.menus.cc:224 +#: f.menus.cc:236 msgid "Make BW/color, negative/positive, sepia" msgstr "Make BW/color, negative/positive, sepia" -#: f.menus.cc:225 +#: f.menus.cc:237 msgid "Color Profile" msgstr "Color Profile" -#: f.menus.cc:225 +#: f.menus.cc:237 msgid "Convert to another color profile" msgstr "Convert to another color profile" -#: f.menus.cc:226 +#: f.menus.cc:238 msgid "Match Colors" msgstr "Match Colors" -#: f.menus.cc:226 +#: f.menus.cc:238 msgid "Match colors on one image with another" msgstr "Match colors on one image with another" -#: f.menus.cc:227 +#: f.menus.cc:239 msgid "Adjust color in selected image areas" msgstr "Adjust color in selected image areas" -#: f.menus.cc:228 +#: f.menus.cc:240 msgid "Adjust color using CMYK or RGB values" msgstr "Adjust color using CMYK or RGB values" -#: f.menus.cc:228 +#: f.menus.cc:240 msgid "CMYK Density" msgstr "CMYK Density" -#: f.menus.cc:230 +#: f.menus.cc:242 msgid "Remove curvature, esp. panoramas" msgstr "Remove curvature, esp. panoramas" -#: f.menus.cc:231 +#: f.menus.cc:243 msgid "Straighten objects seen from an angle" msgstr "Straighten objects seen from an angle" -#: f.menus.cc:232 +#: f.menus.cc:244 msgid "Flatten Book Page" msgstr "Flatten Book Page" -#: f.menus.cc:232 +#: f.menus.cc:244 msgid "Flatten a photographed book page" msgstr "Flatten a photographed book pag" -#: f.menus.cc:233 +#: f.menus.cc:245 msgid "Distort image areas using the mouse" msgstr "Distort image areas using the mouse" -#: f.menus.cc:234 f.menus.cc:235 f.menus.cc:236 +#: f.menus.cc:246 f.menus.cc:247 f.menus.cc:248 msgid "Distort the whole image using the mouse" msgstr "Distort the whole image using the mouse" -#: f.menus.cc:238 +#: f.menus.cc:250 msgid "Color Depth" msgstr "Color Depth" -#: f.menus.cc:238 +#: f.menus.cc:250 msgid "Reduce color depth (posterize)" msgstr "Reduce color depth (posterize)" -#: f.menus.cc:239 +#: f.menus.cc:251 msgid "Convert to pencil sketch" msgstr "Convert to pencil sketch" -#: f.menus.cc:239 +#: f.menus.cc:251 msgid "Sketch" msgstr "Sketch" -#: f.menus.cc:240 +#: f.menus.cc:252 msgid "Convert to colored line drawing" msgstr "Convert to colored line drawing" -#: f.menus.cc:240 +#: f.menus.cc:252 msgid "Drawing" msgstr "Drawing" -#: f.menus.cc:241 +#: f.menus.cc:253 msgid "Graduated Blur depending on contrast" msgstr "Graduated Blur depending on contrast" -#: f.menus.cc:242 +#: f.menus.cc:254 msgid "Create an embossed or 3D appearance" msgstr "Create an embossed or 3D appearance" -#: f.menus.cc:242 +#: f.menus.cc:254 msgid "Embossing" msgstr "Embossing" -#: f.menus.cc:243 +#: f.menus.cc:255 msgid "Convert to square tiles" msgstr "Convert to square tiles" -#: f.menus.cc:243 +#: f.menus.cc:255 msgid "Tiles" msgstr "Tiles" -#: f.menus.cc:244 +#: f.menus.cc:256 msgid "Convert to dots (Roy Lichtenstein effect)" msgstr "Convert to dots (Roy Lichtenstein effect)" -#: f.menus.cc:244 +#: f.menus.cc:256 msgid "Dots" msgstr "Dots" -#: f.menus.cc:245 +#: f.menus.cc:257 msgid "Convert into a simulated painting" msgstr "Convert into a simulated painting" -#: f.menus.cc:245 +#: f.menus.cc:257 msgid "Painting" msgstr "Painting" -#: f.menus.cc:246 +#: f.menus.cc:258 msgid "Shift/convert colors into other colors" msgstr "Shift/convert colors into other colors" -#: f.menus.cc:247 +#: f.menus.cc:259 msgid "Change brightness or color radially" msgstr "Change brightness or color radially" -#: f.menus.cc:249 +#: f.menus.cc:261 msgid "Combine bright/dark images for better detail" msgstr "Combine bright/dark images for better detail" -#: f.menus.cc:249 +#: f.menus.cc:261 msgid "High Dynamic Range" msgstr "High Dynamic Range" -#: f.menus.cc:250 +#: f.menus.cc:262 msgid "Combine near/far focus images for deeper focus" msgstr "Combine near/far focus images for deeper focus" -#: f.menus.cc:250 +#: f.menus.cc:262 msgid "High Depth of Field" msgstr "High Depth of Field" -#: f.menus.cc:251 +#: f.menus.cc:263 msgid "Combine images to erase passing people, etc." msgstr "Combine images to erase passing people, etc." -#: f.menus.cc:251 +#: f.menus.cc:263 msgid "Stack / Paint" msgstr "Stack / Paint" -#: f.menus.cc:252 +#: f.menus.cc:264 msgid "Combine noisy images into a low-noise image" msgstr "Combine noisy images into a low-noise image" -#: f.menus.cc:252 +#: f.menus.cc:264 msgid "Stack / Noise" msgstr "Stack / Noise" -#: f.menus.cc:253 +#: f.menus.cc:265 msgid "Combine images into a panorama" msgstr "Combine images into a panorama" -#: f.menus.cc:253 +#: f.menus.cc:265 msgid "Panorama" msgstr "Panorama" -#: f.menus.cc:254 +#: f.menus.cc:266 msgid "Combine images into a vertical panorama" msgstr "Combine images into a vertical panorama" -#: f.menus.cc:254 +#: f.menus.cc:266 msgid "Vertical Panorama" msgstr "Vertical Panorama" -#: f.menus.cc:256 +#: f.menus.cc:267 +msgid "Arrange multiple images on a background image" +msgstr "Arrange multiple images on a background image" + +#: f.menus.cc:267 +msgid "Mashup" +msgstr "Mashup" + +#: f.menus.cc:269 msgid "Add another image editor to the menu" msgstr "Add another image editor to the menu" -#: f.menus.cc:256 +#: f.menus.cc:269 msgid "Edit Plugins" msgstr "Edit Plugins" -#: f.menus.cc:258 fotoxx-13.08.cc:3597 +#: f.menus.cc:271 fotoxx-13.09.cc:3630 msgid "Quick Start" msgstr "Quick Start" -#: f.menus.cc:258 +#: f.menus.cc:271 msgid "Quick Start mini-guide" msgstr "Quick Start mini-guide" -#: f.menus.cc:259 +#: f.menus.cc:272 msgid "Read the user guide" msgstr "Read the user guide" -#: f.menus.cc:259 fotoxx-13.08.cc:3600 +#: f.menus.cc:272 fotoxx-13.09.cc:3633 msgid "User Guide" msgstr "User Guide" -#: f.menus.cc:260 +#: f.menus.cc:273 msgid "Recent user guide changes" msgstr "Recent user guide changes" -#: f.menus.cc:260 fotoxx-13.08.cc:3603 +#: f.menus.cc:273 fotoxx-13.09.cc:3636 msgid "User Guide Changes" msgstr "User Guide Changes" -#: f.menus.cc:261 +#: f.menus.cc:274 msgid "Fotoxx updates notification" msgstr "Fotoxx updates notification" -#: f.menus.cc:261 fotoxx-13.08.cc:3606 +#: f.menus.cc:274 fotoxx-13.09.cc:3639 msgid "Program Updates" msgstr "Program Updates" -#: f.menus.cc:262 fotoxx-13.08.cc:3612 +#: f.menus.cc:275 fotoxx-13.09.cc:3645 msgid "Edit Functions Summary" msgstr "Edit Functions Summary" -#: f.menus.cc:262 +#: f.menus.cc:275 msgid "Summary of image edit functions" msgstr "Summary of image edit functions" -#: f.menus.cc:263 fotoxx-13.08.cc:3609 +#: f.menus.cc:276 fotoxx-13.09.cc:3642 msgid "README" msgstr "README" -#: f.menus.cc:263 +#: f.menus.cc:276 msgid "Technical installation notes" msgstr "Technical installation notes" -#: f.menus.cc:264 fotoxx-13.08.cc:3615 +#: f.menus.cc:277 fotoxx-13.09.cc:3648 msgid "Change Log" msgstr "Change Log" -#: f.menus.cc:264 +#: f.menus.cc:277 msgid "List updates by Fotoxx version" msgstr "List updates by Fotoxx version" -#: f.menus.cc:265 fotoxx-13.08.cc:3618 +#: f.menus.cc:278 fotoxx-13.09.cc:3651 msgid "Log File" msgstr "Log File" -#: f.menus.cc:265 +#: f.menus.cc:278 msgid "View the log file and error messages" msgstr "View the log file and error messages" -#: f.menus.cc:266 +#: f.menus.cc:279 msgid "How to do Fotoxx translations" msgstr "How to do Fotoxx translations" -#: f.menus.cc:266 fotoxx-13.08.cc:3621 +#: f.menus.cc:279 fotoxx-13.09.cc:3654 msgid "Translations" msgstr "Translations" -#: f.menus.cc:267 fotoxx-13.08.cc:3624 +#: f.menus.cc:280 fotoxx-13.09.cc:3657 msgid "Home Page" msgstr "Home Page" -#: f.menus.cc:267 +#: f.menus.cc:280 msgid "Show the Fotoxx web page" msgstr "Show the Fotoxx web page" -#: f.menus.cc:268 fotoxx-13.08.cc:3627 +#: f.menus.cc:281 fotoxx-13.09.cc:3660 msgid "About" msgstr "About" -#: f.menus.cc:268 +#: f.menus.cc:281 msgid "Version, license, contact, credits" msgstr "Version, license, contact, credits" -#: f.menus.cc:271 +#: f.menus.cc:284 msgid "Favs" msgstr "Favs" -#: f.menus.cc:273 +#: f.menus.cc:286 msgid "Color of area borders etc." msgstr "Color of area borders etc." -#: f.menus.cc:274 fotoxx.h:1011 +#: f.menus.cc:287 fotoxx.h:1033 msgid "Undo" msgstr "Undo" -#: f.menus.cc:274 +#: f.menus.cc:287 msgid "Undo one edit" msgstr "Undo one edit" -#: f.menus.cc:275 fotoxx.h:993 +#: f.menus.cc:288 fotoxx.h:1014 msgid "Redo" msgstr "Redo" -#: f.menus.cc:275 +#: f.menus.cc:288 msgid "Redo one edit" msgstr "Redo one edit" -#: f.menus.cc:277 f.menus.cc:389 -msgid "Gallery from Tab F" -msgstr "Gallery from Tab F" +#: f.menus.cc:290 f.menus.cc:400 +msgid "Set gallery from current image file" +msgstr "Set gallery from current image file" + +#: f.menus.cc:290 f.menus.cc:400 +msgid "Sync.G" +msgstr "Sync.G" -#: f.menus.cc:279 +#: f.menus.cc:292 msgid "Open the previous file" msgstr "Open the previous file" -#: f.menus.cc:279 fotoxx.h:988 +#: f.menus.cc:292 fotoxx.h:1009 msgid "Prev" msgstr "Prev" -#: f.menus.cc:280 fotoxx.h:979 +#: f.menus.cc:293 fotoxx.h:1000 msgid "Next" msgstr "Next" -#: f.menus.cc:280 +#: f.menus.cc:293 msgid "Open the next file" msgstr "Open the next file" -#: f.menus.cc:281 -msgid "Save to the same file" -msgstr "Save to the same file" - -#: f.menus.cc:282 -msgid "Save to a new version" -msgstr "Save to a new version" - -#: f.menus.cc:282 -msgid "Save+V" -msgstr "Save+V" - -#: f.menus.cc:283 -msgid "Save to a new file" -msgstr "Save to a new file" - -#: f.menus.cc:283 -msgid "Save+F" -msgstr "Save+F" - -#: f.menus.cc:284 f.menus.cc:437 fotoxx.h:1008 +#: f.menus.cc:295 f.menus.cc:448 fotoxx.h:1030 msgid "Trash" msgstr "Trash" -#: f.menus.cc:303 f.menus.cc:332 +#: f.menus.cc:314 f.menus.cc:343 msgid "Run as Fotoxx edit function" msgstr "Run as Fotoxx edit function" -#: f.menus.cc:391 +#: f.menus.cc:382 +msgid "Top" +msgstr "Top" + +#: f.menus.cc:401 +msgid "open another directory" +msgstr "open another directory" + +#: f.menus.cc:402 msgid "go to bookmarked image" msgstr "go to bookmarked image" -#: f.menus.cc:392 +#: f.menus.cc:403 msgid "increase thumbnail size" msgstr "increase thumbnail size" -#: f.menus.cc:393 +#: f.menus.cc:404 msgid "reduce thumbnail size" msgstr "reduce thumbnail size" -#: f.menus.cc:394 -msgid "jump to first page" -msgstr "jump to first page" - -#: f.menus.cc:395 -msgid "jump to last page" -msgstr "jump to last page" +#: f.menus.cc:405 +msgid "change sort order" +msgstr "change sort order" + +#: f.menus.cc:406 +msgid "jump to beginning (top)" +msgstr "jump to beginning (top)" + +#: f.menus.cc:407 +msgid "jump to end (bottom)" +msgstr "jump to end (bottom)" -#: f.menus.cc:396 +#: f.menus.cc:408 msgid "previous page" msgstr "previous page" -#: f.menus.cc:397 +#: f.menus.cc:409 msgid "next page" msgstr "next page" -#: f.menus.cc:398 +#: f.menus.cc:410 msgid "previous row" msgstr "previous row" -#: f.menus.cc:399 +#: f.menus.cc:411 msgid "next row" msgstr "next row" -#: f.menus.cc:400 -msgid "change sequence" -msgstr "change sequence" - -#: f.menus.cc:434 fotoxx.h:996 +#: f.menus.cc:445 fotoxx.h:1017 msgid "Rename" msgstr "Rename" -#: f.menus.cc:435 +#: f.menus.cc:446 msgid "Copy to Location" msgstr "Copy to Location" -#: f.menus.cc:436 +#: f.menus.cc:447 msgid "Move to Location" msgstr "Move to Location" -#: f.menus.cc:438 fotoxx.h:955 +#: f.menus.cc:449 fotoxx.h:975 msgid "Delete" msgstr "Delete" -#: f.menus.cc:439 +#: f.menus.cc:450 msgid "Copy to Clipboard" msgstr "Copy to Clipboard" -#: f.menus.cc:440 +#: f.menus.cc:451 msgid "Remove from Collection" msgstr "Remove from Collection" -#: f.menus.cc:441 +#: f.menus.cc:452 msgid "Cut to Image Cache" msgstr "Cut to Image Cache" -#: f.menus.cc:442 +#: f.menus.cc:453 msgid "Copy to Image Cache" msgstr "Copy to Image Cache" -#: f.menus.cc:443 +#: f.menus.cc:454 msgid "Paste Image Cache Here (clear)" msgstr "Paste Image Cache Here (clear)" -#: f.menus.cc:444 +#: f.menus.cc:455 msgid "Paste Image Cache Here (keep)" msgstr "Paste Image Cache Here (keep)" -#: f.menus.cc:456 +#: f.menus.cc:460 +msgid "Brightness/Color" +msgstr "Brightness/Color" + +#: f.menus.cc:467 msgid "Select Area" msgstr "Select Area" -#: f.meta.cc:87 -msgid "Edit Caption and Comments" -msgstr "Edit Caption and Comments" +#: f.meta.cc:72 +msgid "" +"Metadata index is missing.\n" +"Use Tools > Synchronize Files." +msgstr "" +"Metadata index is missing.\n" +"Use Tools > Synchronize Files." + +#: f.meta.cc:106 +#, c-format +msgid "Rating: %c (stars)" +msgstr "Rating: %c (stars)" + +#: f.meta.cc:142 +msgid "Size:" +msgstr "Size:" + +#: f.meta.cc:148 +msgid "Image Width:" +msgstr "Image Width:" + +#: f.meta.cc:151 +msgid "Height:" +msgstr "Height:" + +#: f.meta.cc:154 +msgid "Depth:" +msgstr "Depth:" + +#: f.meta.cc:159 +msgid "Image Date" +msgstr "Image Date" + +#: f.meta.cc:162 +msgid "Time" +msgstr "Time" + +#: f.meta.cc:164 +msgid "get prev" +msgstr "get prev" + +#: f.meta.cc:169 +msgid "Choose:" +msgstr "Choose:" -#: f.meta.cc:98 +#: f.meta.cc:181 msgid "Caption" msgstr "Caption" -#: f.meta.cc:102 +#: f.meta.cc:187 msgid "Comments" msgstr "Comments" -#: f.meta.cc:173 -msgid "image date (yyyymmdd)" -msgstr "image date (yyyymmdd)" - -#: f.meta.cc:175 -msgid "use last" -msgstr "use last" - -#: f.meta.cc:178 -msgid "image stars" -msgstr "image stars" - -#: f.meta.cc:196 -msgid "current tags" -msgstr "current tags" - -#: f.meta.cc:201 -msgid "recent tags" -msgstr "recent tags" - -#: f.meta.cc:206 f.meta.cc:387 f.meta.cc:1404 f.meta.cc:3932 -msgid "defined tags" -msgstr "defined tags" +#: f.meta.cc:193 +msgid "Image Tags" +msgstr "Image Tags" + +#: f.meta.cc:199 +msgid "Recent Tags" +msgstr "Recent Tags" + +#: f.meta.cc:205 f.meta.cc:556 f.meta.cc:1573 f.meta.cc:4111 +msgid "Defined Tags" +msgstr "Defined Tags" + +#: f.meta.cc:455 +msgid "date format is YYYY-MM-DD" +msgstr "date format is YYYY-MM-DD" + +#: f.meta.cc:459 +msgid "date is invalid" +msgstr "date is invalid" + +#: f.meta.cc:492 +msgid "time format is HH:MM [:SS]" +msgstr "time format is HH:MM [:SS]" + +#: f.meta.cc:496 +msgid "time is invalid" +msgstr "time is invalid" -#: f.meta.cc:373 fotoxx.h:976 +#: f.meta.cc:542 fotoxx.h:997 msgid "Manage Tags" msgstr "Manage Tags" -#: f.meta.cc:373 +#: f.meta.cc:542 msgid "orphan tags" msgstr "orphan tags" -#: f.meta.cc:377 +#: f.meta.cc:546 msgid "category" msgstr "category" -#: f.meta.cc:380 +#: f.meta.cc:549 msgid "tag" msgstr "tag" -#: f.meta.cc:383 +#: f.meta.cc:552 msgid "create" msgstr "create" -#: f.meta.cc:384 +#: f.meta.cc:553 msgid "delete" msgstr "delete" -#: f.meta.cc:1383 -msgid "Batch Add/Remove Tags" -msgstr "Batch Add/Remove Tags" +#: f.meta.cc:1557 f.meta.cc:3116 f.tools.cc:2792 f.tools.cc:3877 +#: f.tools.cc:4093 f.tools.cc:4455 +msgid "0 files selected" +msgstr "0 files selected" -#: f.meta.cc:1394 +#: f.meta.cc:1563 msgid "tags to add" msgstr "tags to add" -#: f.meta.cc:1395 +#: f.meta.cc:1564 msgid "tags to remove" msgstr "tags to remove" -#: f.meta.cc:1476 +#: f.meta.cc:1645 #, c-format msgid "" "%s \n" @@ -2363,29 +2568,37 @@ "%s \n" " too many tags" -#: f.meta.cc:1590 +#: f.meta.cc:1759 msgid "specify files and tags" msgstr "specify files and tags" -#: f.meta.cc:1617 f.meta.cc:3044 f.tools.cc:2819 f.tools.cc:3011 -#: f.tools.cc:3051 f.tools.cc:4001 f.tools.cc:4311 f.tools.cc:4664 +#: f.meta.cc:1786 f.meta.cc:3223 f.tools.cc:2830 f.tools.cc:3022 +#: f.tools.cc:3062 f.tools.cc:4012 f.tools.cc:4322 f.tools.cc:4675 #, c-format msgid "%d files selected" msgstr "%d files selected" -#: f.meta.cc:1664 +#: f.meta.cc:1833 msgid "View Metadata" msgstr "View Metadata" -#: f.meta.cc:1822 fotoxx.h:937 +#: f.meta.cc:1901 +msgid "key name" +msgstr "key name" + +#: f.meta.cc:1903 +msgid "key value" +msgstr "key value" + +#: f.meta.cc:1991 fotoxx.h:956 msgid "All" msgstr "All" -#: f.meta.cc:1823 +#: f.meta.cc:1992 msgid "One Key:" msgstr "One Key:" -#: f.meta.cc:1954 +#: f.meta.cc:2123 #, c-format msgid "" "Download geotags data (8 megabytes). \n" @@ -2396,36 +2609,52 @@ "Save in %s \n" "Proceed?" -#: f.meta.cc:1990 +#: f.meta.cc:2159 msgid "download failed" msgstr "download failed" -#: f.meta.cc:2025 +#: f.meta.cc:2192 fotoxx-13.09.cc:855 +msgid "Location from World Map" +msgstr "Location from World Map" + +#: f.meta.cc:2194 +msgid "Loading world map" +msgstr "Loading world map" + +#: f.meta.cc:2201 msgid "please download geolocations data" msgstr "please download geolocations data" -#: f.meta.cc:2138 +#: f.meta.cc:2209 +msgid "Loading geolocations" +msgstr "Loading geolocations" + +#: f.meta.cc:2327 msgid "geotags file must be downloaded" msgstr "geotags file must be downloaded" -#: f.meta.cc:2432 f.meta.cc:2889 f.meta.cc:3152 +#: f.meta.cc:2611 f.meta.cc:3068 f.meta.cc:3331 #, c-format msgid "bad latitude/longitude: %s %s" msgstr "bad latitude/longitude: %s %s" -#: f.meta.cc:2731 f.meta.cc:2939 f.meta.cc:4432 +#: f.meta.cc:2893 +msgid "Geocoding web service courtesy of" +msgstr "Geocoding web service courtesy of" + +#: f.meta.cc:2910 f.meta.cc:3118 f.meta.cc:4611 msgid "city" msgstr "city" -#: f.meta.cc:2734 f.meta.cc:2942 f.meta.cc:4435 +#: f.meta.cc:2913 f.meta.cc:3121 f.meta.cc:4614 msgid "country" msgstr "country" -#: f.meta.cc:2802 f.meta.cc:3065 +#: f.meta.cc:2981 f.meta.cc:3244 msgid "city not found" msgstr "city not found" -#: f.meta.cc:3130 +#: f.meta.cc:3309 msgid "" "data is incomplete \n" " proceed?" @@ -2433,123 +2662,127 @@ "data is incomplete \n" " proceed?" -#: f.meta.cc:3156 +#: f.meta.cc:3335 msgid "no files selected" msgstr "no files selected" -#: f.meta.cc:3188 +#: f.meta.cc:3367 msgid "choose city" msgstr "choose city" -#: f.meta.cc:3272 +#: f.meta.cc:3451 msgid "not found" msgstr "not found" -#: f.meta.cc:3273 +#: f.meta.cc:3452 msgid "city and country required" msgstr "city and country required" -#: f.meta.cc:3365 +#: f.meta.cc:3544 msgid "Report Geotag Groups" msgstr "Report Geotag Groups" -#: f.meta.cc:3366 +#: f.meta.cc:3545 msgid "Group by country" msgstr "Group by country" -#: f.meta.cc:3367 +#: f.meta.cc:3546 msgid "Group by country/city" msgstr "Group by country/city" -#: f.meta.cc:3368 +#: f.meta.cc:3547 msgid "Group by country/city/date" msgstr "Group by country/city/date" -#: f.meta.cc:3371 +#: f.meta.cc:3550 msgid "Combine within" msgstr "Combine within" -#: f.meta.cc:3373 +#: f.meta.cc:3552 msgid "days" msgstr "days" -#: f.meta.cc:3715 +#: f.meta.cc:3667 +msgid "geotag groups" +msgstr "geotag groups" + +#: f.meta.cc:3894 msgid "search range (km)" msgstr "search range (km)" -#: f.meta.cc:3786 +#: f.meta.cc:3965 msgid "No matching images found" msgstr "No matching images found" -#: f.meta.cc:3872 +#: f.meta.cc:4051 msgid "Search Image Metadata" msgstr "Search Image Metadata" -#: f.meta.cc:3876 +#: f.meta.cc:4055 msgid "images to search:" msgstr "images to search:" -#: f.meta.cc:3877 +#: f.meta.cc:4056 msgid "all" msgstr "all" -#: f.meta.cc:3878 +#: f.meta.cc:4057 msgid "current set only" msgstr "current set only" -#: f.meta.cc:3881 +#: f.meta.cc:4060 msgid "matching images:" msgstr "matching images:" -#: f.meta.cc:3882 +#: f.meta.cc:4061 msgid "new set" msgstr "new set" -#: f.meta.cc:3883 +#: f.meta.cc:4062 msgid "add to set" msgstr "add to set" -#: f.meta.cc:3884 +#: f.meta.cc:4063 msgid "remove" msgstr "remove" -#: f.meta.cc:3890 +#: f.meta.cc:4069 msgid "date range" msgstr "date range" -#: f.meta.cc:3891 +#: f.meta.cc:4070 msgid "stars range" msgstr "stars range" -#: f.meta.cc:3892 +#: f.meta.cc:4071 msgid "search tags" msgstr "search tags" -#: f.meta.cc:3893 +#: f.meta.cc:4072 msgid "search text" msgstr "search text" -#: f.meta.cc:3894 +#: f.meta.cc:4073 msgid "search files" msgstr "search files" -#: f.meta.cc:3899 +#: f.meta.cc:4078 msgid "(yyyymmdd)" msgstr "(yyyymmdd)" -#: f.meta.cc:3905 +#: f.meta.cc:4084 msgid "all/any" msgstr "all/any" -#: f.meta.cc:3924 +#: f.meta.cc:4103 msgid "other criteria" msgstr "other criteria" -#: f.meta.cc:3928 +#: f.meta.cc:4107 msgid "other" msgstr "other" -#: f.meta.cc:4059 +#: f.meta.cc:4238 msgid "" "to remove images from current set, \n" "search current set" @@ -2557,7 +2790,7 @@ "to remove images from current set, \n" "search current set" -#: f.meta.cc:4066 +#: f.meta.cc:4245 msgid "" "to add images to current set, \n" "search all images" @@ -2565,28 +2798,28 @@ "to add images to current set, \n" "search all images" -#: f.meta.cc:4293 +#: f.meta.cc:4472 #, c-format msgid "images added: %d removed: %d new count: %d" msgstr "images added: %d removed: %d new count: %d" -#: f.meta.cc:4296 +#: f.meta.cc:4475 msgid "no changes made" msgstr "no changes made" -#: f.meta.cc:4429 +#: f.meta.cc:4608 msgid "Add Geotags Search Criteria" msgstr "Add Geotags Search Criteria" -#: f.meta.cc:4448 +#: f.meta.cc:4627 msgid "range (km)" msgstr "range (km)" -#: f.meta.cc:4539 +#: f.meta.cc:4718 msgid "error in latitude/longitude/range" msgstr "error in latitude/longitude/range" -#: f.meta.cc:4604 +#: f.meta.cc:4783 msgid "" "These items are always reported: \n" "date, stars, tags, caption, comment" @@ -2594,15 +2827,15 @@ "These items are always reported: \n" "date, stars, tags, caption, comment" -#: f.meta.cc:4628 +#: f.meta.cc:4807 msgid "Additional Items for Report" msgstr "Additional Items for Report" -#: f.meta.cc:4634 +#: f.meta.cc:4813 msgid "Keyword" msgstr "Keyword" -#: f.meta.cc:4641 +#: f.meta.cc:4820 msgid "Match Criteria" msgstr "Match Criteria" @@ -2650,7 +2883,7 @@ "1. Drag mouse to select. \n" "2. Erase. 3. Repeat. " -#: f.repair.cc:1541 fotoxx.h:990 +#: f.repair.cc:1541 fotoxx.h:1011 msgid "Radius" msgstr "Radius" @@ -2747,38 +2980,30 @@ msgid "Chromatic Abberation" msgstr "Chromatic Abberation" -#: f.repair.cc:3896 +#: f.repair.cc:3900 msgid "pixel group" msgstr "pixel group" -#: f.repair.cc:3897 +#: f.repair.cc:3901 msgid "circle color" msgstr "circle color" -#: f.repair.cc:4006 +#: f.repair.cc:3913 f.repair.cc:3957 +msgid "stuck pixels:" +msgstr "stuck pixels:" + +#: f.repair.cc:4023 msgid "Load Stuck Pixels" msgstr "Load Stuck Pixels" -#: f.repair.cc:4030 f.repair.cc:4126 +#: f.repair.cc:4047 f.repair.cc:4113 msgid "Stuck Pixels file" msgstr "Stuck Pixels file" -#: f.repair.cc:4070 +#: f.repair.cc:4087 msgid "file format error" msgstr "file format error" -#: f.repair.cc:4098 -msgid "there are zero stuck pixels" -msgstr "there are zero stuck pixels" - -#: f.repair.cc:4102 -msgid "Save Stuck Pixels" -msgstr "Save Stuck Pixels" - -#: f.retouch.cc:211 -msgid "Adjust Brightness and Color" -msgstr "Adjust Brightness and Color" - #: f.retouch.cc:267 msgid "small-steps" msgstr "small-steps" @@ -2831,15 +3056,15 @@ msgid "bright pixels" msgstr "bright pixels" -#: f.retouch.cc:1983 +#: f.retouch.cc:1980 msgid "Ramp brightness across image" msgstr "Ramp brightness across image" -#: f.retouch.cc:2363 f.retouch.cc:2600 f.tools.cc:5242 +#: f.retouch.cc:2360 f.retouch.cc:2597 f.tools.cc:5253 msgid "Edit function must be active" msgstr "Edit function must be active" -#: f.retouch.cc:2371 fotoxx-13.08.cc:2867 +#: f.retouch.cc:2368 fotoxx-13.09.cc:2905 msgid "" "Select area cannot be kept.\n" "Continue?" @@ -2847,23 +3072,23 @@ "Select area cannot be kept.\n" "Continue?" -#: f.retouch.cc:2400 +#: f.retouch.cc:2397 msgid "power: center" msgstr "power: center" -#: f.retouch.cc:2405 +#: f.retouch.cc:2402 msgid "reset area" msgstr "reset area" -#: f.retouch.cc:2593 +#: f.retouch.cc:2590 msgid "Edit Function Amplifier" msgstr "Edit Function Amplifier" -#: f.retouch.cc:2629 +#: f.retouch.cc:2626 msgid "minimum" msgstr "minimum" -#: f.retouch.cc:2631 +#: f.retouch.cc:2628 msgid "maximum" msgstr "maximum" @@ -2980,197 +3205,209 @@ msgid "create missing and update stale thumbnails" msgstr "create missing and update stale thumbnails" -#: f.tools.cc:542 +#: f.tools.cc:548 #, c-format msgid "%d thumbnails created, %d errors \n" msgstr "%d thumbnails created, %d errors \n" -#: f.tools.cc:553 +#: f.tools.cc:559 msgid "no search index file is in use" msgstr "no search index file is in use" -#: f.tools.cc:554 f.tools.cc:561 f.tools.cc:897 +#: f.tools.cc:560 f.tools.cc:567 f.tools.cc:910 msgid "COMPLETED" msgstr "COMPLETED" -#: f.tools.cc:566 +#: f.tools.cc:572 msgid "rebuild search index" msgstr "rebuild search index" -#: f.tools.cc:585 +#: f.tools.cc:591 #, c-format msgid "%d current index records found \n" msgstr "%d current index records found \n" -#: f.tools.cc:589 +#: f.tools.cc:595 msgid "find all image files and build index records" msgstr "find all image files and build index record" -#: f.tools.cc:615 +#: f.tools.cc:621 msgid "too many image files" msgstr "too many image files" -#: f.tools.cc:642 +#: f.tools.cc:648 #, c-format msgid "found %d image files \n" msgstr "found %d image files \n" -#: f.tools.cc:647 +#: f.tools.cc:653 msgid "merging old and new index records" msgstr "merging old and new index records" -#: f.tools.cc:697 +#: f.tools.cc:703 #, c-format msgid "files found in current index recs: %d \n" msgstr "files found in current index recs: %d \n" -#: f.tools.cc:715 +#: f.tools.cc:721 msgid "updating index records" msgstr "updating index records" -#: f.tools.cc:889 +#: f.tools.cc:902 #, c-format msgid "%d image files updated \n" msgstr "%d image files updated \n" -#: f.tools.cc:909 +#: f.tools.cc:922 msgid "KILLED" msgstr "KILLED" -#: f.tools.cc:1047 +#: f.tools.cc:1060 msgid "Settings" msgstr "Settings" -#: f.tools.cc:1050 +#: f.tools.cc:1063 msgid "Startup Display" msgstr "Startup Display" -#: f.tools.cc:1072 +#: f.tools.cc:1085 msgid "Recent Files Gallery" msgstr "Recent Files Gallery" -#: f.tools.cc:1073 +#: f.tools.cc:1086 msgid "Newest Files Gallery" msgstr "Newest Files Gallery" -#: f.tools.cc:1074 +#: f.tools.cc:1087 msgid "Previous Image Viewed" msgstr "Previous Image Viewed" -#: f.tools.cc:1075 +#: f.tools.cc:1088 msgid "Blank Window" msgstr "Blank Window" -#: f.tools.cc:1076 +#: f.tools.cc:1089 msgid "Directory Gallery" msgstr "Directory Gallery" -#: f.tools.cc:1077 +#: f.tools.cc:1090 msgid "Image File" msgstr "Image File" -#: f.tools.cc:1093 +#: f.tools.cc:1106 msgid "Menu Style" msgstr "Menu Style" -#: f.tools.cc:1095 +#: f.tools.cc:1108 msgid "Classic" msgstr "Classic" -#: f.tools.cc:1096 +#: f.tools.cc:1109 msgid "Vertical" msgstr "Vertical" -#: f.tools.cc:1098 +#: f.tools.cc:1111 msgid "Toolbar Style" msgstr "Toolbar Style" -#: f.tools.cc:1101 +#: f.tools.cc:1114 msgid "Icons" msgstr "Icons" -#: f.tools.cc:1102 +#: f.tools.cc:1115 msgid "Both" msgstr "Both" -#: f.tools.cc:1104 +#: f.tools.cc:1117 msgid "Image Pan" msgstr "Image Pan" -#: f.tools.cc:1106 +#: f.tools.cc:1119 msgid "Drag" msgstr "Drag" -#: f.tools.cc:1107 +#: f.tools.cc:1120 msgid "Scroll" msgstr "Scroll" -#: f.tools.cc:1108 +#: f.tools.cc:1121 msgid "Magnified" msgstr "Magnified" -#: f.tools.cc:1111 +#: f.tools.cc:1124 msgid "Warn Overwrite Original" msgstr "Warn Overwrite Original" -#: f.tools.cc:1114 +#: f.tools.cc:1127 msgid "Default JPEG quality" msgstr "Default JPEG quality" -#: f.tools.cc:1261 +#: f.tools.cc:1131 +msgid "Zooms for 200%" +msgstr "Zooms for 200%" + +#: f.tools.cc:1142 +msgid "RAW command" +msgstr "RAW command" + +#: f.tools.cc:1145 +msgid "RAW file types" +msgstr "RAW file types" + +#: f.tools.cc:1274 msgid "startup directory is invalid" msgstr "startup directory is invalid" -#: f.tools.cc:1269 +#: f.tools.cc:1282 msgid "startup file is invalid" msgstr "startup file is invalid" -#: f.tools.cc:1368 +#: f.tools.cc:1381 msgid "Select startup directory" msgstr "Select startup directory" -#: f.tools.cc:1376 +#: f.tools.cc:1389 msgid "Select startup image file" msgstr "Select startup image file" -#: f.tools.cc:1414 +#: f.tools.cc:1427 msgid "Click list position. Click thumbnail to add." msgstr "Click list position. Click thumbnail to add." -#: f.tools.cc:1439 f.tools.cc:1654 +#: f.tools.cc:1452 f.tools.cc:1667 msgid "Edit Bookmarks" msgstr "Edit Bookmarks" -#: f.tools.cc:1585 +#: f.tools.cc:1598 msgid "unable to save bookmarks file" msgstr "unable to save bookmarks file" -#: f.tools.cc:1654 +#: f.tools.cc:1667 msgid "Go To Bookmark" msgstr "Go To Bookmark" -#: f.tools.cc:1800 +#: f.tools.cc:1811 msgid "Edit KB Shortcuts" msgstr "Edit KB Shortcuts" -#: f.tools.cc:1805 +#: f.tools.cc:1816 msgid "shortcut key:" msgstr "shortcut key:" -#: f.tools.cc:1806 +#: f.tools.cc:1817 msgid "(enter keys)" msgstr "(enter keys)" -#: f.tools.cc:1932 +#: f.tools.cc:1943 #, c-format msgid "\"%s\" Reserved, cannot be used" msgstr "\"%s\" Reserved, cannot be used" -#: f.tools.cc:2084 +#: f.tools.cc:2095 msgid "unable to save KB-shortcuts file" msgstr "unable to save KB-shortcuts file" -#: f.tools.cc:2154 +#: f.tools.cc:2165 msgid "" "Right-click collection thumbnails to \n" "cut/copy to cache, paste cache, remove." @@ -3178,245 +3415,241 @@ "Right-click collection thumbnails to \n" "cut/copy to cache, paste cache, remove." -#: f.tools.cc:2190 +#: f.tools.cc:2201 msgid "Start a new collection" msgstr "Start a new collection" -#: f.tools.cc:2192 +#: f.tools.cc:2203 msgid "Collection to view or edit" msgstr "Collection to view or edit" -#: f.tools.cc:2194 +#: f.tools.cc:2205 msgid "Select images, add to cache" msgstr "Select images, add to cache" -#: f.tools.cc:2196 +#: f.tools.cc:2207 msgid "Clear image cache" msgstr "Clear image cache" -#: f.tools.cc:2198 +#: f.tools.cc:2209 msgid "Delete a collection" msgstr "Delete a collection" -#: f.tools.cc:2221 +#: f.tools.cc:2232 msgid "New Collection" msgstr "New Collection" -#: f.tools.cc:2222 +#: f.tools.cc:2233 msgid "Choose Collection" msgstr "Choose Collection" -#: f.tools.cc:2223 +#: f.tools.cc:2234 msgid "Delete Collection" msgstr "Delete Collection" -#: f.tools.cc:2293 +#: f.tools.cc:2304 #, c-format msgid "delete %s ?" msgstr "delete %s ?" -#: f.tools.cc:2606 +#: f.tools.cc:2617 msgid "Move collection" msgstr "Move collection" -#: f.tools.cc:2609 +#: f.tools.cc:2620 msgid "collection name" msgstr "collection name" -#: f.tools.cc:2612 +#: f.tools.cc:2623 msgid "old top directory" msgstr "old top directory" -#: f.tools.cc:2615 +#: f.tools.cc:2626 msgid "new top directory" msgstr "new top directory" -#: f.tools.cc:2662 +#: f.tools.cc:2673 msgid "completed" msgstr "completed" -#: f.tools.cc:2752 +#: f.tools.cc:2763 msgid "Press ESC to exit slide show" msgstr "Press ESC to exit slide show" -#: f.tools.cc:2753 +#: f.tools.cc:2764 msgid "latest versions only" msgstr "latest versions only" -#: f.tools.cc:2754 +#: f.tools.cc:2765 msgid "continuous loop" msgstr "continuous loop" -#: f.tools.cc:2755 +#: f.tools.cc:2766 msgid "start with current image" msgstr "start with current image" -#: f.tools.cc:2759 +#: f.tools.cc:2770 msgid "arrow keys" msgstr "arrow keys" -#: f.tools.cc:2760 +#: f.tools.cc:2771 msgid "instant" msgstr "instant" -#: f.tools.cc:2761 +#: f.tools.cc:2772 msgid "fade-in" msgstr "fade-in" -#: f.tools.cc:2762 +#: f.tools.cc:2773 msgid "roll-right" msgstr "roll-right" -#: f.tools.cc:2763 +#: f.tools.cc:2774 msgid "roll-down" msgstr "roll-down" -#: f.tools.cc:2764 +#: f.tools.cc:2775 msgid "shift-left" msgstr "shift-left" -#: f.tools.cc:2765 +#: f.tools.cc:2776 msgid "venetian" msgstr "venetian" -#: f.tools.cc:2766 +#: f.tools.cc:2777 msgid "grate" msgstr "grate" -#: f.tools.cc:2767 +#: f.tools.cc:2778 msgid "rectangle" msgstr "rectangle" -#: f.tools.cc:2768 +#: f.tools.cc:2779 msgid "radar" msgstr "radar" -#: f.tools.cc:2769 +#: f.tools.cc:2780 msgid "jaws" msgstr "jaws" -#: f.tools.cc:2770 +#: f.tools.cc:2781 msgid "ellipse" msgstr "ellipse" -#: f.tools.cc:2771 +#: f.tools.cc:2782 msgid "raindrops" msgstr "raindrops" -#: f.tools.cc:2781 f.tools.cc:3866 f.tools.cc:4444 -msgid "0 files selected" -msgstr "0 files selected" - -#: f.tools.cc:2783 +#: f.tools.cc:2794 msgid "collection:" msgstr "collection:" -#: f.tools.cc:2793 +#: f.tools.cc:2804 msgid "music file" msgstr "music file" -#: f.tools.cc:2801 +#: f.tools.cc:2812 msgid "transitions" msgstr "transitions" -#: f.tools.cc:2803 +#: f.tools.cc:2814 msgid "seconds" msgstr "seconds" -#: f.tools.cc:2854 f.tools.cc:3038 f.tools.cc:3060 +#: f.tools.cc:2865 f.tools.cc:3049 f.tools.cc:3071 msgid "no image files selected" msgstr "no image files selected" -#: f.tools.cc:3019 +#: f.tools.cc:3030 msgid "open collection" msgstr "open collection" -#: f.tools.cc:3064 +#: f.tools.cc:3075 msgid "save as collection" msgstr "save as collection" -#: f.tools.cc:3077 +#: f.tools.cc:3088 msgid "Select music file or playlist" msgstr "Select music file or playlist" -#: f.tools.cc:3868 +#: f.tools.cc:3879 msgid "new base name" msgstr "new base name" -#: f.tools.cc:3871 +#: f.tools.cc:3882 msgid "starting sequence" msgstr "starting sequence" -#: f.tools.cc:3873 +#: f.tools.cc:3884 msgid "increment" msgstr "increment" -#: f.tools.cc:3927 +#: f.tools.cc:3938 msgid "new file already exists:" msgstr "new file already exists:" -#: f.tools.cc:3937 +#: f.tools.cc:3948 msgid "Rename failed:" msgstr "Rename failed:" -#: f.tools.cc:3982 +#: f.tools.cc:3993 msgid "base name / sequence / increment not reasonable" msgstr "base name / sequence / increment not reasonable" -#: f.tools.cc:4085 +#: f.tools.cc:4096 msgid "max. width" msgstr "max. width" -#: f.tools.cc:4090 +#: f.tools.cc:4101 msgid "no change" msgstr "no change" -#: f.tools.cc:4093 +#: f.tools.cc:4104 msgid "new file type" msgstr "new file type" -#: f.tools.cc:4094 +#: f.tools.cc:4105 msgid "same" msgstr "same" -#: f.tools.cc:4102 +#: f.tools.cc:4113 msgid "replace originals" msgstr "replace originals" -#: f.tools.cc:4103 +#: f.tools.cc:4114 msgid "move to location" msgstr "move to location" -#: f.tools.cc:4104 +#: f.tools.cc:4115 msgid "remove EXIF" msgstr "remove EXIF" -#: f.tools.cc:4105 +#: f.tools.cc:4116 msgid "delete originals" msgstr "delete originals" -#: f.tools.cc:4180 +#: f.tools.cc:4191 msgid "file already exists" msgstr "file already exists" -#: f.tools.cc:4188 +#: f.tools.cc:4199 msgid "file type not supported" msgstr "file type not supported" -#: f.tools.cc:4227 +#: f.tools.cc:4238 msgid "cannot create new file" msgstr "cannot create new file" -#: f.tools.cc:4351 +#: f.tools.cc:4362 msgid "replace original files?" msgstr "replace original files?" -#: f.tools.cc:4352 +#: f.tools.cc:4363 #, c-format msgid "replace original files? (max. %d x %d)" msgstr "replace original files? (max. %d x %d)" -#: f.tools.cc:4360 +#: f.tools.cc:4371 #, c-format msgid "" "copy files? \n" @@ -3425,7 +3658,7 @@ "copy files? \n" " to location %s" -#: f.tools.cc:4363 +#: f.tools.cc:4374 #, c-format msgid "" "copy files? (max. %d x %d) \n" @@ -3434,7 +3667,7 @@ "copy files? (max. %d x %d) \n" " to location %s" -#: f.tools.cc:4367 +#: f.tools.cc:4378 msgid "" "\n" " and delete originals" @@ -3442,80 +3675,88 @@ "\n" " and delete originals" -#: f.tools.cc:4380 +#: f.tools.cc:4391 msgid "location is not a valid directory" msgstr "location is not a valid directory" -#: f.tools.cc:4387 +#: f.tools.cc:4398 #, c-format msgid "max. size %d x %d is not reasonable" msgstr "max. size %d x %d is not reasonable" -#: f.tools.cc:4447 +#: f.tools.cc:4458 msgid "output file type" msgstr "output file type" -#: f.tools.cc:4459 +#: f.tools.cc:4470 msgid "white balance" msgstr "white balance" -#: f.tools.cc:4460 +#: f.tools.cc:4471 msgid "interpolation" msgstr "interpolation" -#: f.tools.cc:4461 +#: f.tools.cc:4472 msgid "color space" msgstr "color space" -#: f.tools.cc:4462 +#: f.tools.cc:4473 msgid "gamma curve" msgstr "gamma curve" -#: f.tools.cc:4465 +#: f.tools.cc:4476 msgid "camera" msgstr "camera" -#: f.tools.cc:4466 +#: f.tools.cc:4477 msgid "fixed" msgstr "fixed" -#: f.tools.cc:4467 +#: f.tools.cc:4478 msgid "calculated" msgstr "calculated" -#: f.tools.cc:4999 +#: f.tools.cc:4495 +msgid "default" +msgstr "default" + +#: f.tools.cc:4501 +msgid "defaults" +msgstr "defaults" + +#: f.tools.cc:5010 msgid "x-spacing" msgstr "x-spacing" -#: f.tools.cc:5000 +#: f.tools.cc:5011 msgid "x-count" msgstr "x-count" -#: f.tools.cc:5001 +#: f.tools.cc:5012 msgid "x-enable" msgstr "x-enable" -#: f.tools.cc:5007 +#: f.tools.cc:5018 msgid "y-spacing" msgstr "y-spacing" -#: f.tools.cc:5008 +#: f.tools.cc:5019 msgid "y-count" msgstr "y-count" -#: f.tools.cc:5009 +#: f.tools.cc:5020 msgid "y-enable" msgstr "y-enable" -#: f.tools.cc:5016 +#: f.tools.cc:5027 msgid "x-offset" msgstr "x-offset" -#: f.tools.cc:5020 +#: f.tools.cc:5031 msgid "y-offset" msgstr "y-offset" -#: f.tools.cc:5444 +#: f.tools.cc:5455 msgid "" "Brightness should show a gradual ramp \n" "extending all the way to the edges." @@ -3523,19 +3764,31 @@ "Brightness should show a gradual ramp \n" "extending all the way to the edges." -#: f.tools.cc:5549 +#: f.tools.cc:5560 msgid "Available Translations" msgstr "Available Translations" -#: f.tools.cc:5553 +#: f.tools.cc:5564 msgid "Set Language" msgstr "Set Language" -#: f.tools.cc:5653 +#: f.tools.cc:5664 msgid "Make Launcher" msgstr "Make Launcher" -#: fotoxx-13.08.cc:330 +#: fotoxx-13.09.cc:201 +msgid "Tab F: image file view/edit" +msgstr "Tab F: image file view/edit" + +#: fotoxx-13.09.cc:208 +msgid "Tab G: image gallery" +msgstr "Tab G: image gallery" + +#: fotoxx-13.09.cc:215 +msgid "Tab W: world map" +msgstr "Tab W: world map" + +#: fotoxx-13.09.cc:339 msgid "" "First time Fotoxx startup. \n" "Latest version: http://www.kornelix.com/fotoxx \n" @@ -3545,43 +3798,69 @@ "Latest version: http://www.kornelix.com/fotoxx \n" "File sync process will begin (may need some time) \n" -#: fotoxx-13.08.cc:363 +#: fotoxx-13.09.cc:372 msgid "Please install missing programs:" msgstr "Please install missing programs:" -#: fotoxx-13.08.cc:816 -msgid "Location from World Map" -msgstr "Location from World Map" +#: fotoxx-13.09.cc:686 +#, c-format +msgid " BUSY %d%c " +msgstr " BUSY %d%c " + +#: fotoxx-13.09.cc:688 +msgid " BUSY " +msgstr " BUSY " + +#: fotoxx-13.09.cc:745 +msgid " (reduced)" +msgstr " (reduced" + +#: fotoxx-13.09.cc:753 +#, c-format +msgid " edits: %d" +msgstr " edits: %d" + +#: fotoxx-13.09.cc:758 +msgid " menu locked" +msgstr " menu locked" + +#: fotoxx-13.09.cc:759 +msgid " area active" +msgstr " area active" + +#: fotoxx-13.09.cc:760 +msgid " dialog open" +msgstr " dialog open" -#: fotoxx-13.08.cc:2500 +#: fotoxx-13.09.cc:2538 msgid "Exceed 50 anchor points" msgstr "Exceed 50 anchor points" -#: fotoxx-13.08.cc:2681 +#: fotoxx-13.09.cc:2719 msgid "load curve from a file" msgstr "load curve from a file" -#: fotoxx-13.08.cc:2735 +#: fotoxx-13.09.cc:2773 msgid "curve file is invalid" msgstr "curve file is invalid" -#: fotoxx-13.08.cc:2740 +#: fotoxx-13.09.cc:2778 msgid "curve file has different no. of curves" msgstr "curve file has different no. of curves" -#: fotoxx-13.08.cc:2755 +#: fotoxx-13.09.cc:2793 msgid "save curve to a file" msgstr "save curve to a file" -#: fotoxx-13.08.cc:2853 fotoxx-13.08.cc:3380 fotoxx-13.08.cc:3395 +#: fotoxx-13.09.cc:2891 fotoxx-13.09.cc:3417 fotoxx-13.09.cc:3432 msgid "prior function still active" msgstr "prior function still active" -#: fotoxx-13.08.cc:2860 +#: fotoxx-13.09.cc:2898 msgid "Too many edits, please save image" msgstr "Too many edits, please save image" -#: fotoxx-13.08.cc:2875 +#: fotoxx-13.09.cc:2913 msgid "" "Select area not active.\n" "Continue?" @@ -3589,23 +3868,23 @@ "Select area not active.\n" "Continue?" -#: fotoxx-13.08.cc:3350 +#: fotoxx-13.09.cc:3387 msgid "Discard edits?" msgstr "Discard edits?" -#: fotoxx-13.08.cc:3351 +#: fotoxx-13.09.cc:3388 msgid "This action will discard changes\n" msgstr "This action will discard changes\n" -#: fotoxx-13.08.cc:3352 fotoxx.h:973 +#: fotoxx-13.09.cc:3389 fotoxx.h:994 msgid "Keep" msgstr "Keep" -#: fotoxx-13.08.cc:3353 +#: fotoxx-13.09.cc:3390 msgid "Discard" msgstr "Discard" -#: fotoxx-13.08.cc:4054 +#: fotoxx-13.09.cc:4088 #, c-format msgid "" "warning: real memory %d MB < required %d MB \n" @@ -3614,212 +3893,224 @@ "warning: real memory %d MB < required %d MB \n" "response time may become very long \n" -#: fotoxx.h:936 +#: fotoxx.h:955 msgid "Add All" msgstr "Add All" -#: fotoxx.h:938 +#: fotoxx.h:957 msgid "Amount" msgstr "Amount" -#: fotoxx.h:939 +#: fotoxx.h:958 +msgid "Angle" +msgstr "Angle" + +#: fotoxx.h:959 msgid "Apply" msgstr "Apply" -#: fotoxx.h:940 +#: fotoxx.h:960 msgid "Autocomplete" msgstr "Autocomplete" -#: fotoxx.h:941 +#: fotoxx.h:961 msgid "Black" msgstr "Black" -#: fotoxx.h:942 +#: fotoxx.h:962 msgid "Blend Width" msgstr "Blend Width" -#: fotoxx.h:944 +#: fotoxx.h:964 msgid "Brightness" msgstr "Brightness" -#: fotoxx.h:945 +#: fotoxx.h:965 msgid "Browse" msgstr "Browse" -#: fotoxx.h:946 +#: fotoxx.h:966 msgid "Cancel" msgstr "Cancel" -#: fotoxx.h:947 +#: fotoxx.h:967 msgid "Choose" msgstr "Choose" -#: fotoxx.h:948 +#: fotoxx.h:968 msgid "Clear" msgstr "Clear" -#: fotoxx.h:950 +#: fotoxx.h:970 msgid "Contrast" msgstr "Contrast" -#: fotoxx.h:952 +#: fotoxx.h:972 msgid "Curve File:" msgstr "Curve File:" -#: fotoxx.h:953 +#: fotoxx.h:973 msgid "Cut" msgstr "Cut" -#: fotoxx.h:954 +#: fotoxx.h:974 msgid "Darker Areas" msgstr "Darker Areas" -#: fotoxx.h:957 +#: fotoxx.h:977 msgid "Done" msgstr "Done" -#: fotoxx.h:958 +#: fotoxx.h:978 msgid "Edit" msgstr "Edit" -#: fotoxx.h:960 +#: fotoxx.h:980 msgid "Erase" msgstr "Erase" -#: fotoxx.h:961 +#: fotoxx.h:981 msgid "Fetch" msgstr "Fetch" -#: fotoxx.h:962 +#: fotoxx.h:982 msgid "Find" msgstr "Find" -#: fotoxx.h:963 +#: fotoxx.h:983 msgid "Finish" msgstr "Finish" -#: fotoxx.h:964 +#: fotoxx.h:984 msgid "Font" msgstr "Font" -#: fotoxx.h:966 +#: fotoxx.h:985 +msgid "Geotags" +msgstr "Geotags" + +#: fotoxx.h:987 msgid "Height" msgstr "Height" -#: fotoxx.h:968 +#: fotoxx.h:989 msgid "histogram" msgstr "histogram" -#: fotoxx.h:970 +#: fotoxx.h:991 msgid "Images" msgstr "Images" -#: fotoxx.h:971 +#: fotoxx.h:992 msgid "Insert" msgstr "Insert" -#: fotoxx.h:974 +#: fotoxx.h:995 msgid "Lighter Areas" msgstr "Lighter Areas" -#: fotoxx.h:975 +#: fotoxx.h:996 msgid "limit" msgstr "limit" -#: fotoxx.h:977 +#: fotoxx.h:998 msgid "Negative" msgstr "Negative" -#: fotoxx.h:978 +#: fotoxx.h:999 msgid "New" msgstr "New" -#: fotoxx.h:980 +#: fotoxx.h:1001 msgid "search index file missing" msgstr "search index file missing" -#: fotoxx.h:981 +#: fotoxx.h:1002 msgid "OK" msgstr "OK" -#: fotoxx.h:983 +#: fotoxx.h:1004 msgid "Open RAW File" msgstr "Open RAW File" -#: fotoxx.h:985 +#: fotoxx.h:1006 msgid "Pause" msgstr "Pause" -#: fotoxx.h:986 +#: fotoxx.h:1007 msgid "Percent" msgstr "Percent" -#: fotoxx.h:987 +#: fotoxx.h:1008 msgid "Presets" msgstr "Presets" -#: fotoxx.h:989 +#: fotoxx.h:1010 msgid "Proceed" msgstr "Proceed" -#: fotoxx.h:991 +#: fotoxx.h:1012 msgid "range" msgstr "range" -#: fotoxx.h:994 +#: fotoxx.h:1015 msgid "Reduce" msgstr "Reduce" -#: fotoxx.h:997 +#: fotoxx.h:1018 msgid "Reset" msgstr "Reset" -#: fotoxx.h:1000 +#: fotoxx.h:1021 msgid "Unknown file type, save as tiff/jpeg/png to edit" msgstr "Unknown file type, save as tiff/jpeg/png to edit" -#: fotoxx.h:1001 +#: fotoxx.h:1022 msgid "Search" msgstr "Search" -#: fotoxx.h:1005 +#: fotoxx.h:1026 +msgid "Size" +msgstr "Size" + +#: fotoxx.h:1027 msgid "Start" msgstr "Start" -#: fotoxx.h:1006 +#: fotoxx.h:1028 msgid "Threshold" msgstr "Threshold" -#: fotoxx.h:1007 +#: fotoxx.h:1029 #, c-format msgid "exceed %d files" msgstr "exceed %d files" -#: fotoxx.h:1009 +#: fotoxx.h:1031 msgid "Undo All" msgstr "Undo All" -#: fotoxx.h:1010 +#: fotoxx.h:1032 msgid "Undo Last" msgstr "Undo Last" -#: fotoxx.h:1012 +#: fotoxx.h:1034 msgid "Unfinish" msgstr "Unfinish" -#: fotoxx.h:1014 +#: fotoxx.h:1036 msgid "View" msgstr "View" -#: fotoxx.h:1015 +#: fotoxx.h:1037 msgid "Web" msgstr "Web" -#: fotoxx.h:1016 +#: fotoxx.h:1038 msgid "White" msgstr "White" -#: fotoxx.h:1018 +#: fotoxx.h:1040 msgid "Map" msgstr "Map" @@ -3827,7 +4118,7 @@ msgid "user guide not found" msgstr "user guide not found" -#: zfuncs.cc:4504 zfuncs.cc:10210 +#: zfuncs.cc:4504 zfuncs.cc:10284 #, c-format msgid "cannot open file %s" msgstr "cannot open file %s" @@ -3836,77 +4127,81 @@ msgid "save screen to file" msgstr "save screen to file" -#: zfuncs.cc:8819 +#: zfuncs.cc:8891 msgid "No" msgstr "No" -#: zfuncs.cc:8819 +#: zfuncs.cc:8891 msgid "Yes" msgstr "Yes" -#: zfuncs.cc:8898 zfuncs.cc:8938 zfuncs.cc:9277 zfuncs.cc:9595 zfuncs.cc:10323 -#: zfuncs.cc:10329 zfuncs.cc:10335 zfuncs.cc:10341 +#: zfuncs.cc:8970 zfuncs.cc:9012 zfuncs.cc:9351 zfuncs.cc:9669 zfuncs.cc:10397 +#: zfuncs.cc:10403 zfuncs.cc:10409 zfuncs.cc:10415 msgid "cancel" msgstr "cancel" -#: zfuncs.cc:9239 +#: zfuncs.cc:9313 msgid "open" msgstr "open" -#: zfuncs.cc:9244 +#: zfuncs.cc:9318 msgid "choose" msgstr "choose" -#: zfuncs.cc:9249 +#: zfuncs.cc:9323 msgid "save" msgstr "save" -#: zfuncs.cc:9255 +#: zfuncs.cc:9329 msgid "open folder" msgstr "open folder" -#: zfuncs.cc:9260 +#: zfuncs.cc:9334 msgid "create folder" msgstr "create folder" -#: zfuncs.cc:9266 +#: zfuncs.cc:9340 msgid "hidden" msgstr "hidden" -#: zfuncs.cc:9327 +#: zfuncs.cc:9344 +msgid "quality" +msgstr "quality" + +#: zfuncs.cc:9401 msgid "JPG quality 0-100" msgstr "JPG quality 0-100" -#: zfuncs.cc:9586 +#: zfuncs.cc:9660 #, c-format msgid "printed image width: %.1f height: %.1f cm" msgstr "printed image width: %.1f height: %.1f cm" -#: zfuncs.cc:9595 +#: zfuncs.cc:9669 msgid "done" msgstr "done" -#: zfuncs.cc:9595 zfuncs.cc:9607 +#: zfuncs.cc:9669 zfuncs.cc:9681 msgid "margins" msgstr "margins" -#: zfuncs.cc:9603 +#: zfuncs.cc:9677 msgid "top" msgstr "top" -#: zfuncs.cc:9604 +#: zfuncs.cc:9678 msgid "bottom" msgstr "bottom" -#: zfuncs.cc:9613 +#: zfuncs.cc:9687 msgid "image scale" msgstr "image scale" -#: zfuncs.cc:9615 +#: zfuncs.cc:9689 msgid "percent" msgstr "percent" -#: zfuncs.cc:10097 +#: zfuncs.cc:10171 msgid "" "Initial parameters file created. \n" "Inspect and revise if necessary." @@ -3914,19 +4209,19 @@ "Initial parameters file created. \n" "Inspect and revise if necessary." -#: zfuncs.cc:10113 +#: zfuncs.cc:10187 msgid "load parameters from a file" msgstr "load parameters from a file" -#: zfuncs.cc:10182 +#: zfuncs.cc:10256 msgid "save parameters to a file" msgstr "save parameters to a file" -#: zfuncs.cc:10321 zfuncs.cc:10327 zfuncs.cc:10333 zfuncs.cc:10339 +#: zfuncs.cc:10395 zfuncs.cc:10401 zfuncs.cc:10407 zfuncs.cc:10413 msgid "edit parameters" msgstr "edit parameters" -#: zfuncs.cc:10322 zfuncs.cc:10328 +#: zfuncs.cc:10396 zfuncs.cc:10402 msgid "" "list\n" "all" @@ -3934,7 +4229,7 @@ "list\n" "all" -#: zfuncs.cc:10322 zfuncs.cc:10328 zfuncs.cc:10334 zfuncs.cc:10340 +#: zfuncs.cc:10396 zfuncs.cc:10402 zfuncs.cc:10408 zfuncs.cc:10414 msgid "" "load\n" "file" @@ -3942,7 +4237,7 @@ "load\n" "file" -#: zfuncs.cc:10322 zfuncs.cc:10328 zfuncs.cc:10334 zfuncs.cc:10340 +#: zfuncs.cc:10396 zfuncs.cc:10402 zfuncs.cc:10408 zfuncs.cc:10414 msgid "" "save\n" "file" @@ -3950,7 +4245,7 @@ "save\n" "file" -#: zfuncs.cc:10323 zfuncs.cc:10335 +#: zfuncs.cc:10397 zfuncs.cc:10409 msgid "" "add\n" "new" @@ -3958,22 +4253,97 @@ "add\n" "new" -#: zfuncs.cc:10323 zfuncs.cc:10329 zfuncs.cc:10335 zfuncs.cc:10341 +#: zfuncs.cc:10397 zfuncs.cc:10403 zfuncs.cc:10409 zfuncs.cc:10415 msgid "apply" msgstr "apply" -#: zfuncs.cc:10376 +#: zfuncs.cc:10450 msgid "apply?" msgstr "apply?" -#: zfuncs.cc:10433 +#: zfuncs.cc:10507 msgid "(new parm name)" msgstr "(new parm name)" -#: zfuncs.cc:10433 +#: zfuncs.cc:10507 msgid "add parameter" msgstr "add parameter" +#~ msgid "Select image file" +#~ msgstr "Select image file" + +#~ msgid "angle" +#~ msgstr "angle" + +#~ msgid "cmsCreateTransform() failed" +#~ msgstr "cmsCreateTransform() failed" + +#~ msgid "no plugin command" +#~ msgstr "no plugin command" + +#~ msgid "User Guide etc." +#~ msgstr "User Guide etc." + +#~ msgid "Edit Caption/Comments" +#~ msgstr "Edit Caption/Comments" + +#~ msgid "Edit image caption or comment" +#~ msgstr "Edit image caption or comment" + +#~ msgid "Edit image date/rating/tags" +#~ msgstr "Edit image date/rating/tags" + +#~ msgid "Batch Tags" +#~ msgstr "Batch Tags" + +#~ msgid "Edit image geotags" +#~ msgstr "Edit image geotag" + +#~ msgid "Gallery from Tab F" +#~ msgstr "Gallery from Tab F" + +#~ msgid "jump to first page" +#~ msgstr "jump to first page" + +#~ msgid "jump to last page" +#~ msgstr "jump to last page" + +#~ msgid "change sequence" +#~ msgstr "change sequence" + +#~ msgid "Edit Caption and Comments" +#~ msgstr "Edit Caption and Comments" + +#~ msgid "image date (yyyymmdd)" +#~ msgstr "image date (yyyymmdd)" + +#~ msgid "use last" +#~ msgstr "use last" + +#~ msgid "image stars" +#~ msgstr "image stars" + +#~ msgid "current tags" +#~ msgstr "current tags" + +#~ msgid "there are zero stuck pixels" +#~ msgstr "there are zero stuck pixels" + +#~ msgid "Save Stuck Pixels" +#~ msgstr "Save Stuck Pixels" + +#~ msgid "add parameter %s" +#~ msgstr "add parameter %d" + +#~ msgid "Turn Image" +#~ msgstr "Turn Image" + +#~ msgid "Turn" +#~ msgstr "Turn" + +#~ msgid "Adjust Brightness and Color" +#~ msgstr "Adjust Brightness and Color" + #~ msgid "Rotate +90 degrees" #~ msgstr "Rotate +90 degrees" @@ -4039,3 +4409,48 @@ #~ msgid "auto-trim" #~ msgstr "auto-trim" + +#~ msgid "Save+F" +#~ msgstr "Save+F" + +#~ msgid "Save to a new file" +#~ msgstr "Save to a new file" + +#~ msgid "Save+V" +#~ msgstr "Save+V" + +#~ msgid "Save to a new version" +#~ msgstr "Save to a new version" + +#~ msgid "Save to the same file" +#~ msgstr "Save to the same file" + +#~ msgid "Save to a new file name" +#~ msgstr "Save to a new file name" + +#~ msgid "Save to New File" +#~ msgstr "Save to New File" + +#~ msgid "Save to a new (next) version" +#~ msgstr "Save to a new (next) version" + +#~ msgid "Save to New Version" +#~ msgstr "Save to New Version" + +#~ msgid "Save to the same file (replace)" +#~ msgstr "Save to the same file (replace)" + +#~ msgid "Save to Same File" +#~ msgstr "Save to Same File" + +#~ msgid "Save File" +#~ msgstr "Save File" + +#~ msgid "Warning" +#~ msgstr "Warning" + +#~ msgid "Do not warn again" +#~ msgstr "Do not warn again" + +#~ msgid "Overwrite original file?" +#~ msgstr "Overwrite original file?" diff -Nru fotoxx-13.08/locales/translate-es.po fotoxx-13.09.1/locales/translate-es.po --- fotoxx-13.08/locales/translate-es.po 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/locales/translate-es.po 2013-08-31 06:26:38.000000000 +0000 @@ -7,8 +7,8 @@ msgstr "" "Project-Id-Version: home 2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-01 22:40+0200\n" -"PO-Revision-Date: 2013-03-08 20:00+0100\n" +"POT-Creation-Date: 2013-08-31 08:17+0200\n" +"PO-Revision-Date: 2013-08-30 22:32+0100\n" "Last-Translator: Josep Antoni Miralles Puignau \n" "Language-Team: nLanguage: es\n" "Language: \n" @@ -21,7 +21,7 @@ msgid "Select Area for Edits" msgstr "Seleccionar área para editar" -#: f.area.cc:57 f.retouch.cc:2362 +#: f.area.cc:57 f.retouch.cc:2359 msgid "Press F1 for help" msgstr "Pulsar F1 para ayuda" @@ -65,7 +65,7 @@ msgid "select all matching colors within mouse" msgstr "seleccionar todos los colores coincidentes con el ratón" -#: f.area.cc:114 f.retouch.cc:2397 +#: f.area.cc:114 f.retouch.cc:2394 msgid "mouse radius" msgstr "radio del cursor" @@ -121,7 +121,7 @@ msgid "found %d pixels" msgstr "encontrados %d pixels" -#: f.area.cc:1824 f.area.cc:1841 f.area.cc:1861 f.area.cc:2191 +#: f.area.cc:1824 f.area.cc:1841 f.area.cc:1861 f.area.cc:2192 msgid "the area is not finished" msgstr "el área no está cerrada" @@ -133,39 +133,35 @@ msgid "Area Edge Calc" msgstr "Cálculo del contorno del área" -#: f.area.cc:2265 +#: f.area.cc:2266 msgid "position with mouse click/drag" msgstr "posición con el clic/arrastre del ratón" -#: f.area.cc:2290 +#: f.area.cc:2292 msgid "Paste Image" msgstr "Pegar imagen" -#: f.area.cc:2295 +#: f.area.cc:2297 msgid "resize" msgstr "redimensionar" -#: f.area.cc:2303 -msgid "angle" -msgstr "ángulo" - -#: f.area.cc:2565 +#: f.area.cc:2598 msgid "load select area from a file" msgstr "Cargar el área seleccionada desde un archivo" -#: f.area.cc:2619 +#: f.area.cc:2652 msgid "save select area to a file" msgstr "Guardar el área seleccionada en un archivo" -#: f.bend.cc:71 f.menus.cc:230 +#: f.bend.cc:71 f.menus.cc:242 msgid "Unbend" msgstr "Enderezar" -#: f.bend.cc:79 f.image.cc:1485 +#: f.bend.cc:79 f.image.cc:1496 msgid "vertical" msgstr "vertical" -#: f.bend.cc:80 f.image.cc:1484 +#: f.bend.cc:80 f.image.cc:1495 msgid "horizontal" msgstr "horizontal" @@ -177,7 +173,7 @@ msgid "curved" msgstr "curvado" -#: f.bend.cc:88 f.bend.cc:1517 f.bend.cc:1789 f.bend.cc:2049 f.image.cc:163 +#: f.bend.cc:88 f.bend.cc:1517 f.bend.cc:1789 f.bend.cc:2049 f.image.cc:172 msgid "Grid" msgstr "Rejilla" @@ -189,7 +185,7 @@ " Pulsar en las cuatro esquinas del área tetragonal. Pulsar [Aplicar]. \n" " La imagen será deformada para hacer que el tetrágono sea un rectángulo." -#: f.bend.cc:356 f.menus.cc:231 +#: f.bend.cc:356 f.menus.cc:243 msgid "Keystone Correction" msgstr "Corrección de Keystone" @@ -239,7 +235,7 @@ " Dar varios tirones con el ratón hasta que quede satisfecho. \n" " Cuando esté terminado, seleccionar otra área o pulsar [Hecho]." -#: f.bend.cc:1105 f.menus.cc:233 +#: f.bend.cc:1105 f.menus.cc:245 msgid "Warp area" msgstr "Deformar área" @@ -261,7 +257,7 @@ " Dar varios tirones con el ratón hasta que quede satisfecho. \n" " Cuando haya terminado, pulsar [Hecho]." -#: f.bend.cc:1510 f.menus.cc:234 +#: f.bend.cc:1510 f.menus.cc:246 msgid "Warp curved" msgstr "Deformar curvada" @@ -269,7 +265,7 @@ msgid "warp span" msgstr "deformar lapso" -#: f.bend.cc:1781 f.menus.cc:235 +#: f.bend.cc:1781 f.menus.cc:247 msgid "Warp linear" msgstr "Deformar lineal" @@ -283,7 +279,7 @@ " Dar varios tirones con el ratón hasta que quede satisfecho. \n" " Cuando haya terminado, pulse [Hecho]." -#: f.bend.cc:2044 f.menus.cc:236 +#: f.bend.cc:2044 f.menus.cc:248 msgid "Warp affine" msgstr "Deformar afín" @@ -307,7 +303,7 @@ msgid "reduce" msgstr "reducir" -#: f.color.cc:371 f.menus.cc:224 +#: f.color.cc:371 f.menus.cc:236 msgid "Color Mode" msgstr "Modo de color" @@ -352,10 +348,6 @@ msgid "unknown cms profile %s" msgstr "perfil cms desconocido %s" -#: f.color.cc:601 -msgid "cmsCreateTransform() failed" -msgstr "Falló crear transformar cms()" - #: f.color.cc:667 msgid "Color Match Images" msgstr "Concordancia de color de imágenes" @@ -364,8 +356,8 @@ msgid "mouse radius for color sample" msgstr "radio del ratón para muestra de color" -#: f.color.cc:696 f.color.cc:701 f.file.cc:3981 f.menus.cc:191 f.menus.cc:278 -#: f.menus.cc:390 fotoxx.h:982 +#: f.color.cc:696 f.color.cc:701 f.file.cc:4045 f.menus.cc:203 f.menus.cc:291 +#: f.menus.cc:401 fotoxx.h:1003 msgid "Open" msgstr "Abrir" @@ -389,11 +381,11 @@ msgid "select source image color first" msgstr "seleccionar primero el color de la imagen de origen" -#: f.color.cc:957 f.tools.cc:5134 +#: f.color.cc:957 f.tools.cc:5153 msgid "Click image to select pixels." msgstr "Pulsar en la imagen para seleccionar los píxeles." -#: f.color.cc:995 f.menus.cc:227 +#: f.color.cc:995 f.menus.cc:239 msgid "Revise RGB" msgstr "Revisar RGB" @@ -425,15 +417,15 @@ msgid "+Blue -Yellow" msgstr "+Azul -Amarillo" -#: f.color.cc:1467 fotoxx.h:992 +#: f.color.cc:1467 fotoxx.h:1013 msgid "Red" msgstr "Rojo" -#: f.color.cc:1468 fotoxx.h:965 +#: f.color.cc:1468 fotoxx.h:986 msgid "Green" msgstr "Verde" -#: f.color.cc:1469 fotoxx.h:943 +#: f.color.cc:1469 fotoxx.h:963 msgid "Blue" msgstr "Azul" @@ -441,7 +433,7 @@ msgid "Load CMYK parameters" msgstr "Cargar parámetros CMYK" -#: f.color.cc:1614 f.color.cc:1686 f.repair.cc:4008 f.repair.cc:4104 +#: f.color.cc:1614 f.color.cc:1686 f.meta.cc:139 f.repair.cc:4025 msgid "File:" msgstr "Archivo:" @@ -449,8 +441,8 @@ msgid "CMYK parameters file" msgstr "Archivo de parámetros CMYK" -#: f.color.cc:1651 f.file.cc:2047 f.meta.cc:1282 f.repair.cc:4048 -#: f.tools.cc:1708 +#: f.color.cc:1651 f.file.cc:2103 f.meta.cc:1451 f.repair.cc:4065 +#: f.tools.cc:1721 msgid "file not found" msgstr "archivo no encontrado" @@ -479,7 +471,7 @@ msgid "light pixels" msgstr "píxeles claros" -#: f.combine.cc:2315 f.meta.cc:169 +#: f.combine.cc:2315 msgid "file:" msgstr "archivo:" @@ -488,7 +480,7 @@ msgstr "Pintar y deformar imagen" #: f.combine.cc:2829 f.combine.cc:3482 f.combine.cc:4897 f.combine.cc:5795 -#: f.menus.cc:58 f.menus.cc:104 +#: f.menus.cc:58 f.menus.cc:119 msgid "Image" msgstr "Imagen" @@ -556,7 +548,7 @@ msgid "no curve (scanned image)" msgstr "sin curvatura (imagen escaneada)" -#: f.combine.cc:4348 f.combine.cc:5245 f.menus.cc:198 f.menus.cc:446 +#: f.combine.cc:4348 f.combine.cc:5245 f.menus.cc:210 f.menus.cc:457 msgid "Resize" msgstr "Redimensionar" @@ -593,6 +585,165 @@ "Arrastre las imágenes para un alineado aproximado.\n" "Para girar, arrastre desde el borde derecho." +#: f.combine.cc:6061 +msgid "Mashup layout and background image" +msgstr "Capa de montaje e imagen de fondo" + +#: f.combine.cc:6090 +msgid "choose an image file" +msgstr "escoger una imagen" + +#: f.combine.cc:6091 +msgid "use current image file" +msgstr "usar imagen actual" + +#: f.combine.cc:6092 +msgid "open a Mashup project file" +msgstr "abrir un proyecto de montaje" + +#: f.combine.cc:6093 +msgid "specify layout size and color" +msgstr "especificar tamaño y color de la capa" + +#: f.combine.cc:6120 +msgid "choose layout file" +msgstr "escoger archivo de capa" + +#: f.combine.cc:6181 +msgid "Edit Images" +msgstr "Editar imágenes" + +#: f.combine.cc:6182 f.combine.cc:6931 +msgid "Edit Text" +msgstr "Editar texto" + +#: f.combine.cc:6183 f.combine.cc:6482 +msgid "Save Project" +msgstr "Guardar proyecto" + +#: f.combine.cc:6186 +msgid "add or edit images" +msgstr "añadir o editar imágenes" + +#: f.combine.cc:6187 +msgid "add or edit text" +msgstr "añadir o editar texto" + +#: f.combine.cc:6188 +msgid "save project data" +msgstr "guardar proyecto" + +#: f.combine.cc:6189 +msgid "project complete" +msgstr "proyecto completo" + +#: f.combine.cc:6190 +msgid "cancel project" +msgstr "cancelar proyecto" + +#: f.combine.cc:6283 +msgid "Open Project" +msgstr "Abrir proyecto" + +#: f.combine.cc:6302 +#, c-format +msgid "" +"layout image file missing: \n" +" %s" +msgstr "necesaria imagen de capa %s" + +#: f.combine.cc:6320 +#, c-format +msgid "" +"overlay image file missing: \n" +" %s" +msgstr "necesaria imagen superpuesta %s" + +#: f.combine.cc:6382 +#, c-format +msgid "" +"layout image file error: \n" +" %s" +msgstr "error en imagen de capa %s" + +#: f.combine.cc:6393 +#, c-format +msgid "" +"overlay image file error: \n" +" %s" +msgstr "error en imagen superpuesta %s" + +#: f.combine.cc:6452 +msgid "project file is defective" +msgstr "archiuvo de proyecto defectuoso" + +#: f.combine.cc:6530 +msgid "Click image to select, drag image to move." +msgstr "Clic en imagen para seleccionar, arrastrar para mover" + +#: f.combine.cc:6563 +msgid "current image:" +msgstr "Imagen actual" + +#: f.combine.cc:6585 f.combine.cc:6965 f.image.cc:1681 +msgid "Transparency" +msgstr "Transparencia" + +#: f.combine.cc:6589 +msgid "Edge Blend Width" +msgstr "Ancho de mezcla de borde" + +#: f.combine.cc:6755 +#, c-format +msgid "exceeded %d images" +msgstr "excedidas en %d imágenes" + +#: f.combine.cc:6906 +msgid "Enter text, click/drag on image." +msgstr "Introducir texto, lic/arrastrar en la imagen" + +#: f.combine.cc:6936 f.image.cc:1652 f.tools.cc:1113 +msgid "Text" +msgstr "Texto" + +#: f.combine.cc:6954 f.image.cc:1670 +msgid "text" +msgstr "texto" + +#: f.combine.cc:6955 f.image.cc:1671 +msgid "backing" +msgstr "fondo" + +#: f.combine.cc:6956 f.image.cc:1672 +msgid "outline" +msgstr "contorno" + +#: f.combine.cc:6957 f.image.cc:1673 +msgid "shadow" +msgstr "sombra" + +#: f.combine.cc:6959 f.image.cc:1675 f.menus.cc:61 f.menus.cc:122 +#: f.menus.cc:286 fotoxx.h:969 +msgid "Color" +msgstr "Color" + +#: f.combine.cc:6971 f.image.cc:1687 fotoxx.h:1039 +msgid "Width" +msgstr "Ancho" + +#: f.combine.cc:6984 f.image.cc:1700 +msgid "Text File:" +msgstr "Archivo de texto:" + +#: f.combine.cc:7046 f.image.cc:1811 +msgid "select font" +msgstr "seleccionar tipo de letra" + +#: f.combine.cc:7154 +#, c-format +msgid "exceeded %d text entries" +msgstr "Excedidas en %d entradas de texto" + #: f.effects.cc:44 msgid "Set color depth to 1-16 bits" msgstr "Establecer profundidad de color 1-16 bits" @@ -633,7 +784,7 @@ msgid "black/white" msgstr " negro/blanco" -#: f.effects.cc:983 f.menus.cc:241 +#: f.effects.cc:983 f.menus.cc:253 msgid "Graduated Blur" msgstr "Desenfoque graduado" @@ -653,7 +804,7 @@ msgid "depth" msgstr "profundidad" -#: f.effects.cc:1219 f.file.cc:987 +#: f.effects.cc:1219 f.file.cc:1042 msgid "color" msgstr "color" @@ -701,7 +852,7 @@ msgid "borders" msgstr "bordes" -#: f.effects.cc:2461 f.menus.cc:246 +#: f.effects.cc:2461 f.menus.cc:258 msgid "False Colors" msgstr "Cambiar colores" @@ -717,7 +868,7 @@ msgid "Blue: Red" msgstr "Azul: Rojo" -#: f.effects.cc:2669 f.menus.cc:247 +#: f.effects.cc:2669 f.menus.cc:259 msgid "Vignette" msgstr "Viñetado" @@ -725,7 +876,7 @@ msgid "center" msgstr "centro" -#: f.effects.cc:2700 f.retouch.cc:2402 +#: f.effects.cc:2700 f.retouch.cc:2399 msgid "edge" msgstr "borde" @@ -733,47 +884,55 @@ msgid "no newly added files found" msgstr "no encontrados archivos añadidos recientemente" -#: f.file.cc:275 +#: f.file.cc:307 msgid "no more images" msgstr "no hay más imágenes" -#: f.file.cc:343 f.menus.cc:136 f.menus.cc:457 +#: f.file.cc:358 f.menus.cc:151 f.menus.cc:468 msgid "Open RAW file (ufraw)" msgstr "Abrir archivo RAW (ufraw)" -#: f.file.cc:347 +#: f.file.cc:362 msgid "RAW type not registered in User Settings" msgstr "Formato RAW no registrado en las preferencias de usuario" -#: f.file.cc:367 -msgid "Overwrite original file?" -msgstr "¿Sobreescribir el archivo original?" - -#: f.file.cc:368 -msgid "Do not warn again" -msgstr "No volver a avisar" - -#: f.file.cc:383 -msgid "Warning" -msgstr "Aviso" - -#: f.file.cc:495 -msgid "Save File" -msgstr "Guardar el archivo" +#: f.file.cc:412 +msgid "Save Image File" +msgstr "Guaradr imagen" + +#: f.file.cc:422 +msgid "new version" +msgstr "nueva versión" + +#: f.file.cc:423 +msgid "new file name" +msgstr "nuevo nombre de archivo" + +#: f.file.cc:424 +msgid "replace file" +msgstr "reemplazar archivo" + +#: f.file.cc:430 +msgid "save as new file version" +msgstr "guardar como una nueva versión de archivo" + +#: f.file.cc:431 f.file.cc:559 +msgid "save as new file name or type" +msgstr "guardar como un nuevo nombre o tipo de archivo" + +#: f.file.cc:432 +msgid "replace old file (OVERWRITE)" +msgstr "reemplazar archivo antiguo (SOBREESCRIBIR)" -#: f.file.cc:528 zfuncs.cc:9270 -msgid "quality" -msgstr "calidad" - -#: f.file.cc:530 +#: f.file.cc:575 msgid "make current" msgstr "hacer actual" -#: f.file.cc:625 +#: f.file.cc:668 msgid "jpeg quality must be 1-100" msgstr "la calidad de JPEG debe ser 1-100" -#: f.file.cc:653 +#: f.file.cc:694 #, c-format msgid "" "Overwrite file? \n" @@ -782,31 +941,31 @@ "¿Sobreescribir archivo? \n" " %s" -#: f.file.cc:799 f.menus.cc:140 +#: f.file.cc:854 f.menus.cc:153 msgid "Rename Image File" msgstr "Renombrar archivo de imagen" -#: f.file.cc:806 +#: f.file.cc:861 msgid "old name" msgstr "nombre antiguo" -#: f.file.cc:807 +#: f.file.cc:862 msgid "new name" msgstr "nombre nuevo" -#: f.file.cc:816 +#: f.file.cc:871 msgid "previous name" msgstr "nombre anterior" -#: f.file.cc:817 +#: f.file.cc:872 msgid "add 1" msgstr "añadir 1" -#: f.file.cc:895 f.file.cc:1248 +#: f.file.cc:950 f.file.cc:1303 msgid "target file already exists" msgstr "archivo destino ya existe" -#: f.file.cc:922 f.file.cc:1270 f.file.cc:1388 +#: f.file.cc:977 f.file.cc:1325 f.file.cc:1443 #, c-format msgid "" "delete failed: \n" @@ -815,59 +974,59 @@ "fallo al borrar: \n" " %s" -#: f.file.cc:971 +#: f.file.cc:1026 msgid "Create Blank Image" msgstr "Crear una imagen vacía" -#: f.file.cc:973 +#: f.file.cc:1028 msgid "file name" msgstr "nombre de archivo" -#: f.file.cc:978 f.image.cc:470 +#: f.file.cc:1033 f.image.cc:479 msgid "width" msgstr "ancho" -#: f.file.cc:981 f.image.cc:473 f.tools.cc:4088 +#: f.file.cc:1036 f.image.cc:482 f.tools.cc:4107 msgid "height" msgstr "alto" -#: f.file.cc:1156 +#: f.file.cc:1211 msgid "Copy Image File" msgstr "Copiar imagen" -#: f.file.cc:1158 +#: f.file.cc:1213 msgid "Move Image File" msgstr "Mover imagen" -#: f.file.cc:1164 f.file.cc:1343 f.file.cc:1464 +#: f.file.cc:1219 f.file.cc:1398 f.file.cc:1519 msgid "image file" msgstr "archivo de imagen" -#: f.file.cc:1169 +#: f.file.cc:1224 msgid "new location" msgstr "nueva ubicación" -#: f.file.cc:1203 f.tools.cc:4317 +#: f.file.cc:1258 f.tools.cc:4336 msgid "Select directory" msgstr "seleccionar directorio" -#: f.file.cc:1233 +#: f.file.cc:1288 msgid "new location is not a directory" msgstr "la nueva ubicación no es un directorio" -#: f.file.cc:1307 +#: f.file.cc:1362 msgid "Delete Image File - CANNOT BE REVERSED" msgstr "Borrar archivo de imagen - NO SE PUEDE REVERTIR" -#: f.file.cc:1308 f.file.cc:1430 +#: f.file.cc:1363 f.file.cc:1485 msgid "(automatic step to next image)" msgstr "(pase automático a la nueva imagen)" -#: f.file.cc:1429 f.menus.cc:142 +#: f.file.cc:1484 f.menus.cc:155 msgid "Trash Image File" msgstr "Enviar imagen a la papelera" -#: f.file.cc:1494 +#: f.file.cc:1549 msgid "" "Linux standard trash does not work. \n" "Desktop trash folder will be created." @@ -875,7 +1034,7 @@ "La papelera estándar de Linux no funciona. \n" "Se creará una carpeta de papelera en el escritorio." -#: f.file.cc:1497 +#: f.file.cc:1552 msgid "" "Linux and Desktop trash do not work. \n" "Permanently delete the image file?" @@ -883,1479 +1042,1517 @@ "Las papeleras de Linux y de escritorio no funcionan. \n" "¿Borrar permanentemente la imagen" -#: f.file.cc:1527 +#: f.file.cc:1582 msgid "Move read-only file to trash?" msgstr "¿Enviar el archivo de solo lectura a la papelera?" -#: f.file.cc:1556 +#: f.file.cc:1611 #, c-format msgid "Cannot create trash folder: %s" msgstr "No se puede crear la carpeta de papelera: %s" -#: f.file.cc:1569 zfuncs.cc:4211 +#: f.file.cc:1624 zfuncs.cc:4211 #, c-format msgid "error: %s" msgstr "error: %s" -#: f.file.cc:1588 +#: f.file.cc:1643 #, c-format msgid "delete failed: %s" msgstr "fallo al borrar: %s" -#: f.file.cc:2041 f.menus.cc:132 +#: f.file.cc:2097 f.menus.cc:147 msgid "Open Image File" msgstr "Abrir archivo de imagen" -#: f.file.cc:2059 +#: f.file.cc:2115 msgid "unknown file type" msgstr "tipo de archivo desconocido" -#: f.file.cc:2341 +#: f.file.cc:2396 msgid "Unable to copy EXIF/IPTC data" msgstr "No se pueden copiar los datos EXIF/IPTC" -#: f.file.cc:2404 f.file.cc:2465 +#: f.file.cc:2459 f.file.cc:2520 #, c-format msgid "file not found: %s" msgstr "archivo no encontrado: %s" -#: f.file.cc:2409 f.file.cc:2470 +#: f.file.cc:2464 f.file.cc:2525 #, c-format msgid "file type not supported: %s" msgstr "tipo de archivo no soportado: %s" -#: f.file.cc:3982 f.menus.cc:390 +#: f.file.cc:4046 msgid "change directory" msgstr "cambiar directorio" -#: f.file.cc:3990 f.menus.cc:391 +#: f.file.cc:4054 f.menus.cc:402 msgid "GoTo" msgstr "Ir a" -#: f.file.cc:4005 f.menus.cc:400 +#: f.file.cc:4069 f.menus.cc:405 msgid "Sort" msgstr "Ordenar" -#: f.file.cc:4036 f.file.cc:4360 f.menus.cc:398 +#: f.file.cc:4100 f.file.cc:4431 f.menus.cc:410 msgid "Row↑" msgstr "Fila ↑" -#: f.file.cc:4048 f.file.cc:4361 f.menus.cc:399 +#: f.file.cc:4112 f.file.cc:4432 f.menus.cc:411 msgid "Row↓" msgstr "Fila ↓" -#: f.file.cc:4060 f.file.cc:4363 f.menus.cc:394 +#: f.file.cc:4124 f.file.cc:4434 f.menus.cc:406 msgid "First" msgstr "Primera" -#: f.file.cc:4061 f.file.cc:4364 f.menus.cc:395 +#: f.file.cc:4125 f.file.cc:4435 f.menus.cc:407 msgid "Last" msgstr "Última" -#: f.file.cc:4062 f.file.cc:4358 f.file.cc:4365 f.menus.cc:396 +#: f.file.cc:4126 f.file.cc:4429 f.file.cc:4436 f.menus.cc:408 msgid "Page↑" msgstr "Página ↑" -#: f.file.cc:4063 f.file.cc:4359 f.file.cc:4366 f.menus.cc:397 +#: f.file.cc:4127 f.file.cc:4430 f.file.cc:4437 f.menus.cc:409 msgid "Page↓" msgstr "Página ↓" -#: f.file.cc:4114 f.tools.cc:940 +#: f.file.cc:4178 f.tools.cc:953 msgid "Choose top image directory" msgstr "Seleccionar el directorio raiz de imágenes" -#: f.file.cc:4120 f.file.cc:4134 +#: f.file.cc:4184 f.file.cc:4198 msgid "recent" msgstr "reciente" -#: f.file.cc:4121 f.file.cc:4139 +#: f.file.cc:4185 f.file.cc:4203 msgid "newest" msgstr " más reciente" -#: f.file.cc:4170 +#: f.file.cc:4234 msgid "Gallery Sort" msgstr "Ordenar galería " -#: f.file.cc:4174 +#: f.file.cc:4238 msgid "File Name" msgstr "Nombre de archivo" -#: f.file.cc:4175 +#: f.file.cc:4239 msgid "File Mod Date/Time" msgstr "Modo de archivo Fecha/Hora" -#: f.file.cc:4176 +#: f.file.cc:4240 msgid "Photo Date/Time (EXIF)" msgstr "Fecha/Hora de la foto (EXIF)" -#: f.file.cc:4178 +#: f.file.cc:4242 msgid "ascending" msgstr "ascendente" -#: f.file.cc:4179 +#: f.file.cc:4243 msgid "descending" msgstr " descendente" -#: f.file.cc:4352 f.file.cc:4353 f.file.cc:4355 +#: f.file.cc:4423 f.file.cc:4424 f.file.cc:4426 f.menus.cc:403 msgid "Zoom+" msgstr "Zoom +" -#: f.file.cc:4354 f.file.cc:4356 +#: f.file.cc:4425 f.file.cc:4427 f.menus.cc:404 msgid "Zoom-" msgstr "Zoom -" -#: f.file.cc:5192 fotoxx.h:1003 +#: f.file.cc:5264 fotoxx.h:1024 msgid "Select Files" msgstr "Seleccionar archivos" -#: f.file.cc:5668 fotoxx.h:935 +#: f.file.cc:5740 fotoxx.h:954 msgid "Add" msgstr "Añadir" -#: f.file.cc:5668 fotoxx.h:995 +#: f.file.cc:5740 fotoxx.h:1016 msgid "Remove" msgstr "Eliminar" -#: f.file.cc:5670 +#: f.file.cc:5742 msgid "menu name" msgstr "nombre de menu" -#: f.file.cc:5740 f.file.cc:5761 +#: f.file.cc:5812 f.file.cc:5833 msgid "Restart Fotoxx to update plugin menu" msgstr "Reiniciar Fotoxx para actualizar el menu de plugin" -#: f.file.cc:5803 -msgid "no plugin command" -msgstr "sin orden de complemento" +#: f.file.cc:5875 +msgid "Plugins menu is empty" +msgstr "Menú de complementos vacío" -#: f.file.cc:5831 +#: f.file.cc:5903 msgid "plugin failed" msgstr "falló el complemento" -#: f.image.cc:47 -msgid "Turn Image" -msgstr "" +#: f.image.cc:50 +msgid "Rotate Image 90º" +msgstr "Rotar imagen 90º" + +#: f.image.cc:54 +msgid "rotate -90º" +msgstr "Rotar -90º" + +#: f.image.cc:55 +msgid "rotate +90º" +msgstr "Rotar +90º" -#: f.image.cc:114 +#: f.image.cc:123 msgid "Drag right edge with mouse" msgstr "Arrastrar borde derecho con el ratón" -#: f.image.cc:144 +#: f.image.cc:153 msgid "Rotate Image" msgstr "Rotar imagen" -#: f.image.cc:148 zfuncs.cc:9605 +#: f.image.cc:157 zfuncs.cc:9679 msgid "left" msgstr "izquierda" -#: f.image.cc:151 zfuncs.cc:9606 +#: f.image.cc:160 zfuncs.cc:9680 msgid "right" msgstr "derecha" -#: f.image.cc:157 +#: f.image.cc:166 msgid "degrees" msgstr "grados" -#: f.image.cc:442 +#: f.image.cc:451 msgid "Drag middle to move, drag corners to resize." msgstr "Arrastrar desde el medio para mover, las esquinas para redimensionar" -#: f.image.cc:465 f.menus.cc:196 f.menus.cc:445 +#: f.image.cc:474 f.menus.cc:208 f.menus.cc:456 msgid "Trim/Crop" msgstr "Recortar" -#: f.image.cc:476 f.image.cc:756 +#: f.image.cc:485 f.image.cc:765 msgid "ratio" msgstr "relación" -#: f.image.cc:480 +#: f.image.cc:489 msgid "portrait" msgstr "retrato" -#: f.image.cc:481 +#: f.image.cc:490 msgid "landscape" msgstr "paisaje" -#: f.image.cc:482 +#: f.image.cc:491 msgid "Lock Ratio" msgstr "Bloquear la relación" -#: f.image.cc:486 +#: f.image.cc:495 msgid "customize" msgstr "personalizar" -#: f.image.cc:748 +#: f.image.cc:757 msgid "Trim Buttons" msgstr "Botones de recorte" -#: f.image.cc:755 +#: f.image.cc:764 msgid "label" msgstr "etiqueta" -#: f.image.cc:1277 +#: f.image.cc:1286 msgid "Lock aspect ratio" msgstr "Bloquear la relación de aspecto" -#: f.image.cc:1298 +#: f.image.cc:1307 msgid "Resize Image" msgstr "Redimensionar imagen" -#: f.image.cc:1480 f.menus.cc:199 +#: f.image.cc:1491 f.menus.cc:211 msgid "Flip" msgstr "Voltear" -#: f.image.cc:1604 +#: f.image.cc:1610 msgid "Enter text, click/drag on image, right click to remove" msgstr "" "Escriba el texto, pulse/arrastre sobre la imagen, pulse con el botón derecho " -"para retirar" +"para eliminar" -#: f.image.cc:1631 +#: f.image.cc:1645 msgid "Write Text on Image" msgstr "Escribir un texto sobre la imagen" -#: f.image.cc:1638 f.tools.cc:1100 -msgid "Text" -msgstr "Texto" - -#: f.image.cc:1645 -msgid "Size" -msgstr "Tamaño" - -#: f.image.cc:1656 -msgid "text" -msgstr "texto" - -#: f.image.cc:1657 -msgid "backing" -msgstr "fondo" - -#: f.image.cc:1658 -msgid "outline" -msgstr "contorno" - -#: f.image.cc:1659 -msgid "shadow" -msgstr "sombra" - -#: f.image.cc:1661 f.menus.cc:61 f.menus.cc:107 f.menus.cc:273 fotoxx.h:949 -msgid "Color" -msgstr "Color" - -#: f.image.cc:1667 -msgid "Transparency" -msgstr "Transparencia" - -#: f.image.cc:1673 fotoxx.h:1017 -msgid "Width" -msgstr "Ancho" - -#: f.image.cc:1679 -msgid "Angle" -msgstr "Ángulo" - -#: f.image.cc:1686 -msgid "Text File:" -msgstr "Archivo de texto:" - -#: f.image.cc:1764 -msgid "select font" -msgstr "seleccionar tipo de letra" +#: f.image.cc:2312 +msgid "text file is defective" +msgstr "archivo de texto defectuoso" -#: f.menus.cc:54 f.menus.cc:100 +#: f.menus.cc:54 f.menus.cc:115 msgid "File" msgstr "Archivo" -#: f.menus.cc:55 f.menus.cc:101 +#: f.menus.cc:55 f.menus.cc:116 msgid "Tools" msgstr "Herramientas" -#: f.menus.cc:56 f.menus.cc:102 +#: f.menus.cc:56 f.menus.cc:117 msgid "Metadata" msgstr "Metadatos" -#: f.menus.cc:57 f.menus.cc:103 +#: f.menus.cc:57 f.menus.cc:118 msgid "Areas" msgstr "Areas" -#: f.menus.cc:59 f.menus.cc:105 +#: f.menus.cc:59 f.menus.cc:120 msgid "Retouch" msgstr "Retocar" -#: f.menus.cc:60 f.menus.cc:106 +#: f.menus.cc:60 f.menus.cc:121 msgid "Repair" msgstr "Reparar" -#: f.menus.cc:62 f.menus.cc:108 +#: f.menus.cc:62 f.menus.cc:123 msgid "Bend" msgstr "Deformar" -#: f.menus.cc:63 f.menus.cc:109 +#: f.menus.cc:63 f.menus.cc:124 msgid "Effects" msgstr "Efectos" -#: f.menus.cc:64 f.menus.cc:110 +#: f.menus.cc:64 f.menus.cc:125 msgid "Combine" msgstr "Combinar" -#: f.menus.cc:65 f.menus.cc:111 +#: f.menus.cc:65 f.menus.cc:126 msgid "Plugins" msgstr "Complementos" -#: f.menus.cc:66 f.menus.cc:112 fotoxx-13.08.cc:3631 fotoxx.h:967 +#: f.menus.cc:66 f.menus.cc:127 fotoxx-13.10.cc:3664 fotoxx.h:988 msgid "Help" msgstr "Ayuda" -#: f.menus.cc:99 f.menus.cc:271 +#: f.menus.cc:99 f.menus.cc:284 msgid "Favorites Menu" msgstr "Menú favoritos" +#: f.menus.cc:100 +msgid "Open, Save, Trash, Rename, Print" +msgstr "Abrir, guardar, papelera, renombrar, imprimir" + +#: f.menus.cc:101 +msgid "Synch Files, Settings, Collections, Batch Funcs ..." +msgstr "Sincronizar archivos, ajustes, colecciones, funciones de lote ..." + +#: f.menus.cc:102 +msgid "Captions, Tags, Ratings, Geotags, Search ... " +msgstr "Leyendas, etiquetas, clasificaciones, geoetiquetas, búsquedas ..." + +#: f.menus.cc:103 +msgid "Select image areas to edit, copy and paste" +msgstr "Selecciones áreas de la imagen para editar" + +#: f.menus.cc:104 +msgid "Rotate, Trim/Crop, Resize, Add Text" +msgstr "Girar, recortar, redimensionar, añadir texto" + +#: f.menus.cc:105 +msgid "Improve brightness, contrast, color ..." +msgstr "Mejorar brillo, contraste, color ..." + +#: f.menus.cc:106 +msgid "Sharpen, Clean, Red-eyes, Paint, Clone ..." +msgstr "Enfocar, limpiar, ojos rojos, pintar, clonar ..." + +#: f.menus.cc:107 +msgid "White Balance, Color Profile, Color Matching" +msgstr "Balance de blancos, perfil de color, coincidencia de color" + +#: f.menus.cc:108 +msgid "Fix Perspective, Bend/Warp image ..." +msgstr "Corregir perspectiva, enderezar/deformar imagen" + +#: f.menus.cc:109 +msgid "Special Effects, Arty Transforms" +msgstr "Efectos especiales, transformaciones artísticas" + +#: f.menus.cc:110 +msgid "HDR, HDF, Panorama, Stack, Mashup" +msgstr "" + +#: f.menus.cc:111 +msgid "Use other image editors within Fotoxx" +msgstr "Usar otro editor de imágenes dentro de Fotoxx" + #: f.menus.cc:112 -msgid "User Guide etc." -msgstr "Guía de usuariuo, etc." +msgid "Quick Start, User Guide, Recent Changes ..." +msgstr "Inicio rápido, guía de usuario, cambios recientes ..." -#: f.menus.cc:131 +#: f.menus.cc:146 msgid "New Window" msgstr "Nueva ventana" -#: f.menus.cc:131 +#: f.menus.cc:146 msgid "Open another window" msgstr "Abrir otra ventana" -#: f.menus.cc:132 f.menus.cc:278 +#: f.menus.cc:147 f.menus.cc:291 msgid "Open a new image file" msgstr "Abrir nueva imagen" -#: f.menus.cc:133 +#: f.menus.cc:148 msgid "Open Previous File" msgstr "Abrir archivo anterior" -#: f.menus.cc:133 +#: f.menus.cc:148 msgid "Open the previously seen file" msgstr "Abrir archivo previamente visto" -#: f.menus.cc:134 +#: f.menus.cc:149 msgid "Open a recently seen file" msgstr "Abrir un archivo recientemente visto" -#: f.menus.cc:134 +#: f.menus.cc:149 msgid "Recently Seen Images" msgstr "Imágenes vistas recientemente " -#: f.menus.cc:135 +#: f.menus.cc:150 msgid "Newly Added Images" msgstr " Imágenes añadidas nuevas" -#: f.menus.cc:135 +#: f.menus.cc:150 msgid "Open a newly added file" msgstr "Abrir un archivo añadido nuevo" -#: f.menus.cc:136 +#: f.menus.cc:151 msgid "Open and edit a camera RAW file" msgstr "Abrir y editar un archivo de cámara RAW" -#: f.menus.cc:137 -msgid "Save to Same File" -msgstr "Guardar en el mismo archivo" - -#: f.menus.cc:137 -msgid "Save to the same file (replace)" -msgstr "Guardar en el mismo archivo (reemplazar)" - -#: f.menus.cc:138 -msgid "Save to New Version" -msgstr "Guardar como nueva versión" - -#: f.menus.cc:138 -msgid "Save to a new (next) version" -msgstr "Guardar como una nueva (próxima) versión" - -#: f.menus.cc:139 -msgid "Save to New File" -msgstr "Guardar en un archivo nuevo" - -#: f.menus.cc:139 -msgid "Save to a new file name" -msgstr "Guardar en un nuevo nombre de archivo" +#: f.menus.cc:152 f.menus.cc:294 +msgid "Save modified image file to disk" +msgstr "Guardar imagen modificada en el disco" -#: f.menus.cc:140 +#: f.menus.cc:152 +msgid "Save to Disk" +msgstr "Guardar en el disco" + +#: f.menus.cc:153 msgid "Change the image file name" msgstr "Cambiar el nombre de la imagen" -#: f.menus.cc:141 +#: f.menus.cc:154 msgid "Create a blank image" msgstr "Crear una imagen en blanco" -#: f.menus.cc:141 +#: f.menus.cc:154 msgid "New Blank Image" msgstr "Nueva imagen en blanco" -#: f.menus.cc:142 f.menus.cc:284 +#: f.menus.cc:155 f.menus.cc:295 msgid "Move image file to Trash" msgstr "Mover imagen a la papelera" -#: f.menus.cc:143 +#: f.menus.cc:156 msgid "Print Image" msgstr "Imprimir imagen" -#: f.menus.cc:143 +#: f.menus.cc:156 msgid "Print the current image" msgstr "Imprimir la imagen actual" -#: f.menus.cc:144 +#: f.menus.cc:157 msgid "Quit Fotoxx" msgstr "Salir de Fotoxx" -#: f.menus.cc:146 +#: f.menus.cc:159 msgid "Index new files and make thumbnails" msgstr "Indexar nuevos archivos y crear miniaturas" -#: f.menus.cc:146 f.tools.cc:182 f.tools.cc:364 +#: f.menus.cc:159 f.tools.cc:182 f.tools.cc:364 msgid "Synchronize Files" msgstr "sincronizar archivos" -#: f.menus.cc:147 +#: f.menus.cc:160 msgid "Change user preferences" msgstr "Cambiar preferencias del usuario" -#: f.menus.cc:147 +#: f.menus.cc:160 msgid "User Settings" msgstr "Ajustes del usuario" -#: f.menus.cc:148 +#: f.menus.cc:161 msgid "Change Keyboard Shortcut Keys" msgstr "Canmbiar teclas de atajos de teclado" -#: f.menus.cc:148 +#: f.menus.cc:161 msgid "Keyboard Shortcuts" msgstr "Atajos de teclado" -#: f.menus.cc:149 f.tools.cc:2179 +#: f.menus.cc:162 f.tools.cc:2190 msgid "Manage Collections" msgstr "Administrar colecciones" -#: f.menus.cc:149 +#: f.menus.cc:162 msgid "Organize images into collections" msgstr "Organizar imágenes en una colección" -#: f.menus.cc:150 +#: f.menus.cc:163 msgid "Convert for a new top directory" msgstr "Convertir para un nuevo directorio superior" -#: f.menus.cc:150 +#: f.menus.cc:163 msgid "Move Collections" msgstr "Mover colecciones" -#: f.menus.cc:151 f.tools.cc:2778 +#: f.menus.cc:164 f.tools.cc:2797 msgid "Slide Show" msgstr "Diaporama" -#: f.menus.cc:151 +#: f.menus.cc:164 msgid "Start a slide show" msgstr "Iniciar un diaporama" -#: f.menus.cc:152 f.tools.cc:3863 +#: f.menus.cc:165 f.tools.cc:3882 msgid "Batch Rename" msgstr "Renombrar en lote" -#: f.menus.cc:152 +#: f.menus.cc:165 msgid "Rename multiple image files" msgstr "Renombrar múltiples imágenes" -#: f.menus.cc:153 f.tools.cc:4078 +#: f.menus.cc:166 f.tools.cc:4097 msgid "Batch Convert/Resize/Move" msgstr "Convertir/Redimensionar/Mover en lote" -#: f.menus.cc:153 +#: f.menus.cc:166 msgid "Convert resize, move multiple files" msgstr "Convertir, redimensionar, mover múltiples imágenes" -#: f.menus.cc:154 f.tools.cc:4416 +#: f.menus.cc:167 f.tools.cc:4435 msgid "Batch Convert RAW Files" msgstr "Convertir en lote archivos RAW" -#: f.menus.cc:154 +#: f.menus.cc:167 msgid "Convert multiple camera RAW files" msgstr "Convertir múltiples archivos de cámara RAW" -#: f.menus.cc:155 f.tools.cc:4795 +#: f.menus.cc:168 f.tools.cc:4814 msgid "Brightness Distribution" msgstr "Histograma (distribución del brillo)" -#: f.menus.cc:155 +#: f.menus.cc:168 msgid "Show a brightness distribution graph" msgstr "Mostrar histograma (distribución del brillo)" -#: f.menus.cc:156 f.menus.cc:455 f.tools.cc:4990 +#: f.menus.cc:169 f.menus.cc:466 f.tools.cc:5009 msgid "Grid Lines" msgstr "Lineas de rejilla" -#: f.menus.cc:156 +#: f.menus.cc:169 msgid "Show or revise grid lines" msgstr "Mostrar o revisar líneas de rejilla" -#: f.menus.cc:157 f.tools.cc:5166 +#: f.menus.cc:170 f.tools.cc:5185 msgid "Show RGB" msgstr "Mostrar RGB" -#: f.menus.cc:157 +#: f.menus.cc:170 msgid "Show RGB colors at mouse click" msgstr "Mostrar colores RGB con un clic del ratón" -#: f.menus.cc:158 +#: f.menus.cc:171 msgid "Chart to adjust monitor color" msgstr "Carta para ajustar el color del monitor" -#: f.menus.cc:158 +#: f.menus.cc:171 msgid "Monitor Color" msgstr "Color del monitor" -#: f.menus.cc:159 +#: f.menus.cc:172 msgid "Chart to adjust monitor gamma" msgstr "Carta para ajustar la gamma del monitor" -#: f.menus.cc:159 f.tools.cc:5490 +#: f.menus.cc:172 f.tools.cc:5509 msgid "Monitor Gamma" msgstr "Gamma del monitor" -#: f.menus.cc:160 +#: f.menus.cc:173 msgid "Change Language" msgstr "Cambiar idioma" -#: f.menus.cc:160 +#: f.menus.cc:173 msgid "Change the GUI language" msgstr "cambiar el idioma de la interfaz de usuario" -#: f.menus.cc:161 +#: f.menus.cc:174 msgid "Missing Translations" msgstr "Traducciones que faltan" -#: f.menus.cc:161 +#: f.menus.cc:174 msgid "Report missing translations" msgstr "Informe de traducciones que faltan" -#: f.menus.cc:162 +#: f.menus.cc:175 msgid "Edit Translations" msgstr "Editar traducciones" -#: f.menus.cc:162 +#: f.menus.cc:175 msgid "Edit translations while using Fotoxx" msgstr "Editar traducciones mientras se usa Fotoxx" -#: f.menus.cc:163 +#: f.menus.cc:176 msgid "Create a Gnome menu and launcher" msgstr "Crear un menú y lanzador de Gnome" -#: f.menus.cc:163 +#: f.menus.cc:176 msgid "Menu and Launcher" msgstr "Menú y lanzador" -#: f.menus.cc:164 +#: f.menus.cc:177 msgid "Burn Images to CD/DVD" msgstr "Grabar imágenes en un CD/DVD" -#: f.menus.cc:164 +#: f.menus.cc:177 msgid "Burn selected image files to CD or DVD" msgstr "Grabar imágenes seleccionadas en un CD o DVD" -#: f.menus.cc:165 +#: f.menus.cc:178 msgid "Memory and CPU (to terminal/logfile)" msgstr "Memoria y CPU (al terminal/archivo de registro)" -#: f.menus.cc:165 +#: f.menus.cc:178 msgid "Resources" msgstr "Recursos" -#: f.menus.cc:167 -msgid "Edit Caption/Comments" -msgstr "Editar leyenda/comentarios" - -#: f.menus.cc:167 -msgid "Edit image caption or comment" -msgstr "Editar leyenda o comentario de la imagen" - -#: f.menus.cc:168 f.meta.cc:165 f.meta.cc:1728 +#: f.menus.cc:180 f.meta.cc:110 f.meta.cc:1897 msgid "Edit Metadata" msgstr "Editar metadatos" -#: f.menus.cc:168 -msgid "Edit image date/rating/tags" -msgstr "Editar fecha/clasificación/etiquetas de la imagen" +#: f.menus.cc:180 +msgid "Edit image tags/caption/rating ..." +msgstr "Editar etiquetas/leyenda/clasificación de la imagen ..." -#: f.menus.cc:169 +#: f.menus.cc:181 msgid "Add/remove tags for multiple images" msgstr "Añadir/eliminar etiquetas para múltiples imágenes " -#: f.menus.cc:169 -msgid "Batch Tags" -msgstr "Etiquetar en lote" +#: f.menus.cc:181 f.meta.cc:1552 +msgid "Batch Add/Remove Tags" +msgstr "Añadir/eliminar etiquetas en lote" -#: f.menus.cc:170 +#: f.menus.cc:182 msgid "List a few key metadata items" msgstr "Listar algunos datos clave de metadatos" -#: f.menus.cc:170 +#: f.menus.cc:182 msgid "View Metadata (short)" msgstr "Ver metadatos (corto)" -#: f.menus.cc:171 +#: f.menus.cc:183 msgid "List all metadata items" msgstr "Listar todos los items de metadatos" -#: f.menus.cc:171 +#: f.menus.cc:183 msgid "View Metadata (long)" msgstr "Ver metadatos (largo)" -#: f.menus.cc:172 +#: f.menus.cc:184 msgid "Edit Any Metadata" msgstr "Editar cualquier metadato" -#: f.menus.cc:172 +#: f.menus.cc:184 msgid "Edit any image metadata" msgstr "Editar cualquier metadato de la imagen" -#: f.menus.cc:173 f.meta.cc:1820 +#: f.menus.cc:185 f.meta.cc:1989 msgid "Delete Metadata" msgstr "Borrar metadatos" -#: f.menus.cc:173 +#: f.menus.cc:185 msgid "Remove all metadata from an image" msgstr "Quitar todos los metadatos de una imagen" -#: f.menus.cc:174 +#: f.menus.cc:186 msgid "Download Geolocations" msgstr "Descargar geolocalizaciones" -#: f.menus.cc:174 +#: f.menus.cc:186 msgid "Download initial geolocation database" msgstr "Descargar base de datos de geolocalización inicial" -#: f.menus.cc:176 f.meta.cc:2713 +#: f.menus.cc:188 f.meta.cc:2892 msgid "Edit Geotags" msgstr "Editar Geoetiquetas" -#: f.menus.cc:176 -msgid "Edit image geotags" -msgstr "Editar geoetiquetas de la imagen" +#: f.menus.cc:188 +msgid "Edit image location and geotags" +msgstr "Editar ubicación y geoetiquetas de la " -#: f.menus.cc:177 +#: f.menus.cc:189 msgid "Add geotags to multiple images" msgstr "Añadir geoetiquetas a múltiples imágenes" -#: f.menus.cc:177 f.meta.cc:2905 +#: f.menus.cc:189 f.meta.cc:3084 msgid "Batch Add Geotags" msgstr "Añadir geoetiquetas en lote" -#: f.menus.cc:178 +#: f.menus.cc:190 msgid "Find all images for a location [date]" msgstr "Encontrar todas las imágenes para una localización (fecha)" -#: f.menus.cc:178 +#: f.menus.cc:190 msgid "Images by Location/Date" msgstr "Imágenes por localización/fecha" -#: f.menus.cc:179 +#: f.menus.cc:191 msgid "Find images by clicking a world map" msgstr "Encontrar imágenes clicando en un mapa mundial" -#: f.menus.cc:179 +#: f.menus.cc:191 msgid "Images by Map Location" msgstr "Imágenes por localización en el mapa" -#: f.menus.cc:180 +#: f.menus.cc:192 msgid "Find images meeting select criteria" msgstr "Encontrar imágenes que cumplan un criterio de selección" -#: f.menus.cc:180 +#: f.menus.cc:192 msgid "Search Images" msgstr "Buscar imágenes" -#: f.menus.cc:182 fotoxx.h:1002 +#: f.menus.cc:194 fotoxx.h:1023 msgid "Select" msgstr "Seleccionar" -#: f.menus.cc:182 +#: f.menus.cc:194 msgid "Select object or area for editing" msgstr "Seleccionar objeto o área para editar" -#: f.menus.cc:183 fotoxx.h:1004 +#: f.menus.cc:195 fotoxx.h:1025 msgid "Show" msgstr "Mostrar" -#: f.menus.cc:183 +#: f.menus.cc:195 msgid "Show (outline) existing area" msgstr "Mostrar un área existente (contorno)" -#: f.menus.cc:184 fotoxx.h:969 +#: f.menus.cc:196 fotoxx.h:990 msgid "Hide" msgstr "Ocultar" -#: f.menus.cc:184 +#: f.menus.cc:196 msgid "Hide existing area" msgstr "Ocultar áreas existentes" -#: f.menus.cc:185 fotoxx.h:959 +#: f.menus.cc:197 fotoxx.h:979 msgid "Enable" msgstr "Activar" -#: f.menus.cc:185 +#: f.menus.cc:197 msgid "Enable area for editing" msgstr "activar áre para editar" -#: f.menus.cc:186 fotoxx.h:956 +#: f.menus.cc:198 fotoxx.h:976 msgid "Disable" msgstr "Desactivar" -#: f.menus.cc:186 +#: f.menus.cc:198 msgid "Disable area for editing" msgstr "Desactivar área para editar" -#: f.menus.cc:187 fotoxx.h:972 +#: f.menus.cc:199 fotoxx.h:993 msgid "Invert" msgstr "Invertir" -#: f.menus.cc:187 +#: f.menus.cc:199 msgid "Reverse existing area" msgstr "Invertir área existente" -#: f.menus.cc:188 +#: f.menus.cc:200 msgid "Erase existing area" msgstr "Borrar área existente" -#: f.menus.cc:188 fotoxx.h:1013 +#: f.menus.cc:200 fotoxx.h:1035 msgid "Unselect" msgstr "Deseleccionar" -#: f.menus.cc:189 fotoxx.h:951 +#: f.menus.cc:201 fotoxx.h:971 msgid "Copy" msgstr "Copiar" -#: f.menus.cc:189 +#: f.menus.cc:201 msgid "Copy an area for later pasting" msgstr "Copiaar un área para posterior pegado" -#: f.menus.cc:190 fotoxx.h:984 +#: f.menus.cc:202 fotoxx.h:1005 msgid "Paste" msgstr "Pegar" -#: f.menus.cc:190 +#: f.menus.cc:202 msgid "Paste an area into the current image" msgstr "Pegar un área en la imagen actual" -#: f.menus.cc:191 +#: f.menus.cc:203 msgid "Open a file with a saved area" msgstr "Abrir un archivo con un área guardada" -#: f.menus.cc:192 f.menus.cc:281 fotoxx.h:999 +#: f.menus.cc:204 f.menus.cc:294 fotoxx.h:1020 msgid "Save" msgstr "Guardar" -#: f.menus.cc:192 +#: f.menus.cc:204 msgid "Save an area to a file" msgstr "Guardar un área en un archivo" -#: f.menus.cc:194 +#: f.menus.cc:206 msgid "Rotate 90 degrees" -msgstr "" +msgstr "Rotar 90º" -#: f.menus.cc:194 f.menus.cc:447 -msgid "Turn" -msgstr "" +#: f.menus.cc:206 f.menus.cc:458 +msgid "Rotate 90º" +msgstr "Rotar 90º" -#: f.menus.cc:195 fotoxx.h:998 +#: f.menus.cc:207 fotoxx.h:1019 msgid "Rotate" msgstr "Rotar" -#: f.menus.cc:195 +#: f.menus.cc:207 msgid "Rotate by any angle" msgstr "Girar cualquier ángulo" -#: f.menus.cc:196 +#: f.menus.cc:208 msgid "Cut off unwanted margins" msgstr "Cortar márgenes no deseados" -#: f.menus.cc:197 +#: f.menus.cc:209 msgid "Auto-Trim" msgstr "Recorte automático" -#: f.menus.cc:197 +#: f.menus.cc:209 msgid "Remove margins from warp, panorama, etc." msgstr "Eliminar márgenes de una deformación, panorama, etc." -#: f.menus.cc:198 +#: f.menus.cc:210 msgid "Change pixel dimensions" msgstr "Cambiar dimensiones en píxeles" -#: f.menus.cc:199 +#: f.menus.cc:211 msgid "Mirror image horizontally or vertically" msgstr "Reflejar horizontal o verticalmente la imagen" -#: f.menus.cc:200 +#: f.menus.cc:212 msgid "Add Text" msgstr "Escribir texto" -#: f.menus.cc:200 +#: f.menus.cc:212 msgid "Write text on image" msgstr "Escribir un texto sobre la imagen" -#: f.menus.cc:202 +#: f.menus.cc:214 msgid "Fast auto enhance that may work OK" msgstr "Mejora automática rápida" -#: f.menus.cc:202 f.menus.cc:448 +#: f.menus.cc:214 f.menus.cc:459 msgid "Voodoo Enhance" msgstr "Mejora automática" -#: f.menus.cc:203 +#: f.menus.cc:215 msgid "Adjust brightness, contrast, color" msgstr "Ajustar brillo, contraste, color" -#: f.menus.cc:203 f.menus.cc:449 -msgid "Brightness/Color" -msgstr "Brillo/Color/Saturación" +#: f.menus.cc:215 f.retouch.cc:211 +msgid "Brightness/Contrast/Color" +msgstr "Brillo/Contraste/Color" -#: f.menus.cc:204 +#: f.menus.cc:216 msgid "Adjust contrast using a gamma curve" msgstr "Ajustar contraste usando una curva gamma" -#: f.menus.cc:204 f.menus.cc:450 +#: f.menus.cc:216 f.menus.cc:461 msgid "Gamma Curves" msgstr "Curvas Gamma" -#: f.menus.cc:205 +#: f.menus.cc:217 msgid "Add local contrast, enhance details" msgstr "Añadir contraste local, mejorar detalles" -#: f.menus.cc:205 f.menus.cc:452 f.retouch.cc:1130 +#: f.menus.cc:217 f.menus.cc:463 f.retouch.cc:1130 msgid "Tone Mapping" msgstr "Mapeo de tonos" -#: f.menus.cc:206 f.menus.cc:451 +#: f.menus.cc:218 f.menus.cc:462 msgid "Flatten Brightness" msgstr "Aplanar histograma" -#: f.menus.cc:206 +#: f.menus.cc:218 msgid "Flatten brightness distribution" msgstr "Aplanar histograma subiendo valores más pequeños." -#: f.menus.cc:207 +#: f.menus.cc:219 msgid "Expand Brightness" msgstr "Expandir histograma" -#: f.menus.cc:207 +#: f.menus.cc:219 msgid "Expand brightness range" msgstr "Desplazar valores centrales del histograma hacia los extremos." -#: f.menus.cc:208 +#: f.menus.cc:220 msgid "Brightness Ramp" msgstr "Ajuste de brillo por zonas (rampa)" -#: f.menus.cc:208 +#: f.menus.cc:220 msgid "Fix brightness uniformity across image" msgstr "Corregir la uniformidad de brillo por zonas en la imagen" -#: f.menus.cc:209 f.retouch.cc:2361 +#: f.menus.cc:221 f.retouch.cc:2358 msgid "Paint Edits" msgstr "Editar pintando" -#: f.menus.cc:209 -msgid "Paint edit function gradually with the mouse" +#: f.menus.cc:221 +msgid "Paint edit function gradually with mouse" msgstr "Función de edición pintando gradualmente con el ratón" -#: f.menus.cc:210 f.retouch.cc:2592 +#: f.menus.cc:222 f.retouch.cc:2589 msgid "Leverage Edits" msgstr "Edición por niveles" -#: f.menus.cc:210 +#: f.menus.cc:222 msgid "Leverage edits by brightness or color" msgstr "Edición de niveles por brillo o color" -#: f.menus.cc:212 +#: f.menus.cc:224 msgid "Make the image look sharper" msgstr "Hacer que la imagen se vea más enfocada" -#: f.menus.cc:212 f.repair.cc:60 +#: f.menus.cc:224 f.repair.cc:60 msgid "Sharpen" msgstr "Enfocar" -#: f.menus.cc:213 f.repair.cc:1543 +#: f.menus.cc:225 f.repair.cc:1543 msgid "Blur" msgstr "Desenfocar" -#: f.menus.cc:213 +#: f.menus.cc:225 msgid "Make the image look fuzzy" msgstr "Hacer que la imagen se vea desenfocada" -#: f.menus.cc:214 +#: f.menus.cc:226 msgid "Filter noise from low-light photos" msgstr "Filtrar ruido de fotos hechas con poca luz" -#: f.menus.cc:214 +#: f.menus.cc:226 msgid "Reduce Noise" msgstr "Reducir ruido" -#: f.menus.cc:215 +#: f.menus.cc:227 msgid "Remove unwanted objects" msgstr "Eliminar objetos no deseados" -#: f.menus.cc:215 f.repair.cc:1536 +#: f.menus.cc:227 f.repair.cc:1536 msgid "Smart Erase" msgstr "Borrado inteligente" -#: f.menus.cc:216 +#: f.menus.cc:228 msgid "Fix red-eyes from electronic flash" msgstr "Corregir ojos rojos producidos por un flash electrónico" -#: f.menus.cc:216 f.menus.cc:454 +#: f.menus.cc:228 f.menus.cc:465 msgid "Red Eyes" msgstr "Ojos rojos" -#: f.menus.cc:217 +#: f.menus.cc:229 msgid "Paint image pixels using the mouse" msgstr "Pintar usando el ratón" -#: f.menus.cc:217 f.repair.cc:2357 +#: f.menus.cc:229 f.repair.cc:2357 msgid "Paint/Clone" msgstr "Pintar/Clonar" -#: f.menus.cc:218 f.repair.cc:2880 +#: f.menus.cc:230 f.repair.cc:2880 msgid "Remove Dust" msgstr "Retirar polvo" -#: f.menus.cc:218 +#: f.menus.cc:230 msgid "Remove dust spots from scanned slides" msgstr "Eliminar motas de polvo de diapositivas escaneadas" -#: f.menus.cc:219 +#: f.menus.cc:231 msgid "Anti-alias" msgstr "Suavizar" -#: f.menus.cc:219 +#: f.menus.cc:231 msgid "Smoothen edges with jaggies" msgstr "Suavizar bordes con dientes de sierra" -#: f.menus.cc:220 +#: f.menus.cc:232 msgid "Fix Color Fringes" msgstr "Corregir franjas de color" -#: f.menus.cc:220 +#: f.menus.cc:232 msgid "Reduce Chromatic Abberation" msgstr "Rducir aberración cromática" -#: f.menus.cc:221 +#: f.menus.cc:233 msgid "Erase known hot and dark pixels" msgstr "Eliminar píxeles calientes y negros conocidos" -#: f.menus.cc:221 f.repair.cc:3890 +#: f.menus.cc:233 f.repair.cc:3894 msgid "Fix Stuck Pixels" msgstr "Corregir los píxeles retenidos" -#: f.menus.cc:223 +#: f.menus.cc:235 msgid "Click on a white/gray area to fix color tint" msgstr "Clic en un área blanca o gris para corregir dominante de color" -#: f.menus.cc:223 f.menus.cc:453 +#: f.menus.cc:235 f.menus.cc:464 msgid "White Balance" msgstr "Balance de blancos" -#: f.menus.cc:224 +#: f.menus.cc:236 msgid "Make BW/color, negative/positive, sepia" msgstr "Cambiar blanco y negro/color, negativo/positivo, sepia" -#: f.menus.cc:225 +#: f.menus.cc:237 msgid "Color Profile" msgstr "perfil de color" -#: f.menus.cc:225 +#: f.menus.cc:237 msgid "Convert to another color profile" msgstr "Convertir a otro perfil de color" -#: f.menus.cc:226 +#: f.menus.cc:238 msgid "Match Colors" msgstr "Concordancia de colores" -#: f.menus.cc:226 +#: f.menus.cc:238 msgid "Match colors on one image with another" msgstr "Concordar colores de una imagen con los de otra" -#: f.menus.cc:227 +#: f.menus.cc:239 msgid "Adjust color in selected image areas" msgstr "Ajustar color en áreas seleccionadas de la imagen" -#: f.menus.cc:228 +#: f.menus.cc:240 msgid "Adjust color using CMYK or RGB values" msgstr "Ajustar color usando valores CMYK o RGB" -#: f.menus.cc:228 +#: f.menus.cc:240 msgid "CMYK Density" msgstr "Densidad CMYK" -#: f.menus.cc:230 +#: f.menus.cc:242 msgid "Remove curvature, esp. panoramas" msgstr "Eliminar curvatura, esp. panoramas" -#: f.menus.cc:231 +#: f.menus.cc:243 msgid "Straighten objects seen from an angle" msgstr "Enderezar objetos vistos desde un ángulo" -#: f.menus.cc:232 +#: f.menus.cc:244 msgid "Flatten Book Page" msgstr "Aplanar página impresa" -#: f.menus.cc:232 +#: f.menus.cc:244 msgid "Flatten a photographed book page" msgstr "Aplanar foto de una página impresa " -#: f.menus.cc:233 +#: f.menus.cc:245 msgid "Distort image areas using the mouse" msgstr "Deformar áreas de la imagen usando el ratón" -#: f.menus.cc:234 f.menus.cc:235 f.menus.cc:236 +#: f.menus.cc:246 f.menus.cc:247 f.menus.cc:248 msgid "Distort the whole image using the mouse" msgstr "Deformar toda la imagen usando el ratón" -#: f.menus.cc:238 +#: f.menus.cc:250 msgid "Color Depth" msgstr "Profundidad de color" -#: f.menus.cc:238 +#: f.menus.cc:250 msgid "Reduce color depth (posterize)" msgstr "Reducir profundidad de color (posterizar)" -#: f.menus.cc:239 +#: f.menus.cc:251 msgid "Convert to pencil sketch" msgstr "Convertir a un esbozo a lápiz" -#: f.menus.cc:239 +#: f.menus.cc:251 msgid "Sketch" msgstr " Esbozo" -#: f.menus.cc:240 +#: f.menus.cc:252 msgid "Convert to colored line drawing" msgstr "Convertir a dibujo de líneas coloreadas" -#: f.menus.cc:240 +#: f.menus.cc:252 msgid "Drawing" msgstr "Dibujando" -#: f.menus.cc:241 +#: f.menus.cc:253 msgid "Graduated Blur depending on contrast" msgstr "Desenfoque graduado dependiendo del contraste" -#: f.menus.cc:242 +#: f.menus.cc:254 msgid "Create an embossed or 3D appearance" msgstr "Crear un relieve o apariencia 3D" -#: f.menus.cc:242 +#: f.menus.cc:254 msgid "Embossing" msgstr "Relieve" -#: f.menus.cc:243 +#: f.menus.cc:255 msgid "Convert to square tiles" msgstr "Convertir a baldosas cuadradas" -#: f.menus.cc:243 +#: f.menus.cc:255 msgid "Tiles" msgstr "Mosaico" -#: f.menus.cc:244 +#: f.menus.cc:256 msgid "Convert to dots (Roy Lichtenstein effect)" msgstr "Convertir a puntos (efecto Roy Lichtenstein)" -#: f.menus.cc:244 +#: f.menus.cc:256 msgid "Dots" msgstr "Puntos" -#: f.menus.cc:245 +#: f.menus.cc:257 msgid "Convert into a simulated painting" msgstr "Convertir a pintura simulada" -#: f.menus.cc:245 +#: f.menus.cc:257 msgid "Painting" msgstr "Pintura" -#: f.menus.cc:246 +#: f.menus.cc:258 msgid "Shift/convert colors into other colors" msgstr "Cambiar/convertir colores en otros" -#: f.menus.cc:247 +#: f.menus.cc:259 msgid "Change brightness or color radially" msgstr "Cambiar radialmente el brillo o el color" -#: f.menus.cc:249 +#: f.menus.cc:261 msgid "Combine bright/dark images for better detail" msgstr "Combinar imágenes brillantes/oscuras para mejorar detalles" -#: f.menus.cc:249 +#: f.menus.cc:261 msgid "High Dynamic Range" msgstr "HDR alto rango dinámico" -#: f.menus.cc:250 +#: f.menus.cc:262 msgid "Combine near/far focus images for deeper focus" msgstr "" "Combinar imágenes enfocadas cerca/lejos para mayor profundidad de campo" -#: f.menus.cc:250 +#: f.menus.cc:262 msgid "High Depth of Field" msgstr "HDF alta profundidad de campo" -#: f.menus.cc:251 +#: f.menus.cc:263 msgid "Combine images to erase passing people, etc." msgstr "Combinar imágenes para borrar gente, coches, etc" -#: f.menus.cc:251 +#: f.menus.cc:263 msgid "Stack / Paint" msgstr "Apilar/pintar" -#: f.menus.cc:252 +#: f.menus.cc:264 msgid "Combine noisy images into a low-noise image" msgstr "Combinaar imágenes ruidosas en una imagen de bajo ruido" -#: f.menus.cc:252 +#: f.menus.cc:264 msgid "Stack / Noise" msgstr "Apilar/ruido" -#: f.menus.cc:253 +#: f.menus.cc:265 msgid "Combine images into a panorama" msgstr "Combinar imágenes en una panorámica" -#: f.menus.cc:253 +#: f.menus.cc:265 msgid "Panorama" msgstr "Panorama" -#: f.menus.cc:254 +#: f.menus.cc:266 msgid "Combine images into a vertical panorama" msgstr "Combinar imágenes en un panorama vertical" -#: f.menus.cc:254 +#: f.menus.cc:266 msgid "Vertical Panorama" msgstr "Panorama vertical " -#: f.menus.cc:256 +#: f.menus.cc:267 +msgid "Arrange multiple images on a background image" +msgstr "Organizar múltiples imágenes sobre una imagen de fondo" + +#: f.menus.cc:267 +msgid "Mashup" +msgstr "" + +#: f.menus.cc:269 msgid "Add another image editor to the menu" msgstr "añadir otro editor de imágenes al menú" -#: f.menus.cc:256 +#: f.menus.cc:269 msgid "Edit Plugins" msgstr "Editar complementos (plugins)" -#: f.menus.cc:258 fotoxx-13.08.cc:3597 +#: f.menus.cc:271 fotoxx-13.10.cc:3630 msgid "Quick Start" msgstr "Referencia rápida" -#: f.menus.cc:258 +#: f.menus.cc:271 msgid "Quick Start mini-guide" msgstr "Mini guía de referencia rápida" -#: f.menus.cc:259 +#: f.menus.cc:272 msgid "Read the user guide" msgstr "Leer la guía de usuario" -#: f.menus.cc:259 fotoxx-13.08.cc:3600 +#: f.menus.cc:272 fotoxx-13.10.cc:3633 msgid "User Guide" msgstr "Guia de usuario" -#: f.menus.cc:260 +#: f.menus.cc:273 msgid "Recent user guide changes" msgstr "Cambios reciuentes en la guia de usuario" -#: f.menus.cc:260 fotoxx-13.08.cc:3603 +#: f.menus.cc:273 fotoxx-13.10.cc:3636 msgid "User Guide Changes" msgstr "Cambios en la guía de usuario" -#: f.menus.cc:261 +#: f.menus.cc:274 msgid "Fotoxx updates notification" msgstr "Notificaciones de actualizaciones de Fotoxx" -#: f.menus.cc:261 fotoxx-13.08.cc:3606 +#: f.menus.cc:274 fotoxx-13.10.cc:3639 msgid "Program Updates" msgstr "Actualizaciones del programa" -#: f.menus.cc:262 fotoxx-13.08.cc:3612 +#: f.menus.cc:275 fotoxx-13.10.cc:3645 msgid "Edit Functions Summary" msgstr "Resumen de las funciones de edición" -#: f.menus.cc:262 +#: f.menus.cc:275 msgid "Summary of image edit functions" msgstr "Resumen de las funciones de edición de imágenes" -#: f.menus.cc:263 fotoxx-13.08.cc:3609 +#: f.menus.cc:276 fotoxx-13.10.cc:3642 msgid "README" msgstr "LÉAME" -#: f.menus.cc:263 +#: f.menus.cc:276 msgid "Technical installation notes" msgstr "Notas técnicas de instalación" -#: f.menus.cc:264 fotoxx-13.08.cc:3615 +#: f.menus.cc:277 fotoxx-13.10.cc:3648 msgid "Change Log" msgstr "Registro de cambios" -#: f.menus.cc:264 +#: f.menus.cc:277 msgid "List updates by Fotoxx version" msgstr "Listar actualizaciones por versión de Fotoxx" -#: f.menus.cc:265 fotoxx-13.08.cc:3618 +#: f.menus.cc:278 fotoxx-13.10.cc:3651 msgid "Log File" msgstr "Archivo de registro" -#: f.menus.cc:265 +#: f.menus.cc:278 msgid "View the log file and error messages" msgstr "Ver el archivo de registro y mensajes de error" -#: f.menus.cc:266 +#: f.menus.cc:279 msgid "How to do Fotoxx translations" msgstr "Cómo hacer traducciones de Fotoxx" -#: f.menus.cc:266 fotoxx-13.08.cc:3621 +#: f.menus.cc:279 fotoxx-13.10.cc:3654 msgid "Translations" msgstr "Traducciones" -#: f.menus.cc:267 fotoxx-13.08.cc:3624 +#: f.menus.cc:280 fotoxx-13.10.cc:3657 msgid "Home Page" msgstr "Página web" -#: f.menus.cc:267 +#: f.menus.cc:280 msgid "Show the Fotoxx web page" msgstr "Muestra la páfina web de Fotoxx" -#: f.menus.cc:268 fotoxx-13.08.cc:3627 +#: f.menus.cc:281 fotoxx-13.10.cc:3660 msgid "About" msgstr "Acerca de" -#: f.menus.cc:268 +#: f.menus.cc:281 msgid "Version, license, contact, credits" msgstr "Versión, licencia, contacto, créditos" -#: f.menus.cc:271 +#: f.menus.cc:284 msgid "Favs" msgstr "Favoritos" -#: f.menus.cc:273 +#: f.menus.cc:286 msgid "Color of area borders etc." msgstr "Color de los bordes de área etc. " -#: f.menus.cc:274 fotoxx.h:1011 +#: f.menus.cc:287 fotoxx.h:1033 msgid "Undo" msgstr "Deshacer" -#: f.menus.cc:274 +#: f.menus.cc:287 msgid "Undo one edit" msgstr "Deshacer una edición" -#: f.menus.cc:275 fotoxx.h:993 +#: f.menus.cc:288 fotoxx.h:1014 msgid "Redo" msgstr "Rehacer" -#: f.menus.cc:275 +#: f.menus.cc:288 msgid "Redo one edit" msgstr "Rehacer una edición" -#: f.menus.cc:277 f.menus.cc:389 -msgid "Gallery from Tab F" -msgstr "Galería desde la pestaña F" +#: f.menus.cc:290 f.menus.cc:400 +msgid "Set gallery from current image file" +msgstr "Establecer galería desde la imagen actual" -#: f.menus.cc:279 +#: f.menus.cc:290 f.menus.cc:400 +msgid "Sync.G" +msgstr "" + +#: f.menus.cc:292 msgid "Open the previous file" msgstr "Abrir el archivo anterior" -#: f.menus.cc:279 fotoxx.h:988 +#: f.menus.cc:292 fotoxx.h:1009 msgid "Prev" msgstr "Anterior" -#: f.menus.cc:280 fotoxx.h:979 +#: f.menus.cc:293 fotoxx.h:1000 msgid "Next" msgstr "Siguiente" -#: f.menus.cc:280 +#: f.menus.cc:293 msgid "Open the next file" msgstr "Abrir el archivo siguiente" -#: f.menus.cc:281 -msgid "Save to the same file" -msgstr "Guardar en el mismo archivo" - -#: f.menus.cc:282 -msgid "Save to a new version" -msgstr "Guardar en una nueva versión" - -#: f.menus.cc:282 -msgid "Save+V" -msgstr "Guardar+Vers" - -#: f.menus.cc:283 -msgid "Save to a new file" -msgstr "Guardar en un nuevo archivo" - -#: f.menus.cc:283 -msgid "Save+F" -msgstr "Guardar+Arch" - -#: f.menus.cc:284 f.menus.cc:437 fotoxx.h:1008 +#: f.menus.cc:295 f.menus.cc:448 fotoxx.h:1030 msgid "Trash" msgstr "Papelera" -#: f.menus.cc:303 f.menus.cc:332 +#: f.menus.cc:314 f.menus.cc:343 msgid "Run as Fotoxx edit function" msgstr "Abrir como una función de edición de Fotoxx" -#: f.menus.cc:391 +#: f.menus.cc:382 +msgid "Top" +msgstr "" + +#: f.menus.cc:401 +msgid "open another directory" +msgstr "Abrir otro directorio" + +#: f.menus.cc:402 msgid "go to bookmarked image" msgstr "ir a una imagen marcada" -#: f.menus.cc:392 +#: f.menus.cc:403 msgid "increase thumbnail size" msgstr "aumentar tamaño de miniatura" -#: f.menus.cc:393 +#: f.menus.cc:404 msgid "reduce thumbnail size" msgstr "reducir tamaño de la miniatura" -#: f.menus.cc:394 -msgid "jump to first page" -msgstr "ir a la primera página" - -#: f.menus.cc:395 -msgid "jump to last page" -msgstr "ir a la última página" +#: f.menus.cc:405 +msgid "change sort order" +msgstr "cambiar criterio de ordenación" + +#: f.menus.cc:406 +msgid "jump to beginning (top)" +msgstr "ir al principio (arriba)" + +#: f.menus.cc:407 +msgid "jump to end (bottom)" +msgstr "ir al final (abajo)" -#: f.menus.cc:396 +#: f.menus.cc:408 msgid "previous page" msgstr "página anterior" -#: f.menus.cc:397 +#: f.menus.cc:409 msgid "next page" msgstr "página siguiente" -#: f.menus.cc:398 +#: f.menus.cc:410 msgid "previous row" msgstr "fila anterior" -#: f.menus.cc:399 +#: f.menus.cc:411 msgid "next row" msgstr "fila siguiente" -#: f.menus.cc:400 -msgid "change sequence" -msgstr "cambiar secuencia" - -#: f.menus.cc:434 fotoxx.h:996 +#: f.menus.cc:445 fotoxx.h:1017 msgid "Rename" msgstr "Renombrar" -#: f.menus.cc:435 +#: f.menus.cc:446 msgid "Copy to Location" msgstr "Cambiar a la ubicación" -#: f.menus.cc:436 +#: f.menus.cc:447 msgid "Move to Location" msgstr "Mover a la ubicación" -#: f.menus.cc:438 fotoxx.h:955 +#: f.menus.cc:449 fotoxx.h:975 msgid "Delete" msgstr "Borrar" -#: f.menus.cc:439 +#: f.menus.cc:450 msgid "Copy to Clipboard" msgstr "Copiar al portapapeles" -#: f.menus.cc:440 +#: f.menus.cc:451 msgid "Remove from Collection" msgstr "Eliminar de la colección" -#: f.menus.cc:441 +#: f.menus.cc:452 msgid "Cut to Image Cache" msgstr " Cortar al caché de imagen" -#: f.menus.cc:442 +#: f.menus.cc:453 msgid "Copy to Image Cache" msgstr "Copiar al caché de imagen " -#: f.menus.cc:443 +#: f.menus.cc:454 msgid "Paste Image Cache Here (clear)" msgstr "Pegar caché de imagen aquí (borrar)" -#: f.menus.cc:444 +#: f.menus.cc:455 msgid "Paste Image Cache Here (keep)" msgstr "Pegar caché de imagen aquí (guardar)" -#: f.menus.cc:456 +#: f.menus.cc:460 +msgid "Brightness/Color" +msgstr "Brillo/Color/Saturación" + +#: f.menus.cc:467 msgid "Select Area" msgstr "Seleccionar área" -#: f.meta.cc:87 -msgid "Edit Caption and Comments" -msgstr "Editar título y comentarios" +#: f.meta.cc:72 +msgid "" +"Metadata index is missing.\n" +"Use Tools > Synchronize Files." +msgstr "" +"Índice de metadatos requerido. \n" +"Use Herramientas > Sincronizar archivos" + +#: f.meta.cc:106 +#, c-format +msgid "Rating: %c (stars)" +msgstr "Clasificación : %c (estrellas)" + +#: f.meta.cc:142 +msgid "Size:" +msgstr "Tamaño :" + +#: f.meta.cc:148 +msgid "Image Width:" +msgstr "Ancho de imagen" + +#: f.meta.cc:151 +msgid "Height:" +msgstr "Altura" + +#: f.meta.cc:154 +msgid "Depth:" +msgstr "Profundidad :" + +#: f.meta.cc:159 +msgid "Image Date" +msgstr "Fecha de la imagen" + +#: f.meta.cc:162 +msgid "Time" +msgstr "Hora" + +#: f.meta.cc:164 +msgid "get prev" +msgstr "anterior" + +#: f.meta.cc:169 +msgid "Choose:" +msgstr "Elegir :" -#: f.meta.cc:98 +#: f.meta.cc:181 msgid "Caption" msgstr "Título" -#: f.meta.cc:102 +#: f.meta.cc:187 msgid "Comments" msgstr "Comentarios" -#: f.meta.cc:173 -msgid "image date (yyyymmdd)" -msgstr "fecha de la imagen (aaaammdd)" - -#: f.meta.cc:175 -msgid "use last" -msgstr "usar el último" - -#: f.meta.cc:178 -msgid "image stars" -msgstr "estrellas de la imagen" - -#: f.meta.cc:196 -msgid "current tags" -msgstr "etiquetas actuales" +#: f.meta.cc:193 +msgid "Image Tags" +msgstr "Etiquetas de la imagen" -#: f.meta.cc:201 -msgid "recent tags" +#: f.meta.cc:199 +msgid "Recent Tags" msgstr "etiquetas recientes" -#: f.meta.cc:206 f.meta.cc:387 f.meta.cc:1404 f.meta.cc:3932 -msgid "defined tags" +#: f.meta.cc:205 f.meta.cc:556 f.meta.cc:1573 f.meta.cc:4111 +msgid "Defined Tags" msgstr "etiquetas definidas" -#: f.meta.cc:373 fotoxx.h:976 +#: f.meta.cc:455 +msgid "date format is YYYY-MM-DD" +msgstr "Formato de fecha es AAAA-MM-DD" + +#: f.meta.cc:459 +msgid "date is invalid" +msgstr "fecha no válida" + +#: f.meta.cc:492 +msgid "time format is HH:MM [:SS]" +msgstr "formato de hora es HH:MM [:SS]" + +#: f.meta.cc:496 +msgid "time is invalid" +msgstr "hora no válida" + +#: f.meta.cc:542 fotoxx.h:997 msgid "Manage Tags" msgstr "Administrar etiquetas" -#: f.meta.cc:373 +#: f.meta.cc:542 msgid "orphan tags" msgstr "etiquetas huérfanas" -#: f.meta.cc:377 +#: f.meta.cc:546 msgid "category" msgstr "categoria" -#: f.meta.cc:380 +#: f.meta.cc:549 msgid "tag" msgstr "etiqueta" -#: f.meta.cc:383 +#: f.meta.cc:552 msgid "create" msgstr "crear" -#: f.meta.cc:384 +#: f.meta.cc:553 msgid "delete" msgstr "borrar" -#: f.meta.cc:1383 -msgid "Batch Add/Remove Tags" -msgstr "Añadir/eliminar etiquetas en lote" +#: f.meta.cc:1557 f.meta.cc:3116 f.tools.cc:2800 f.tools.cc:3885 +#: f.tools.cc:4101 f.tools.cc:4463 +msgid "0 files selected" +msgstr "0 archivos seleccionados" -#: f.meta.cc:1394 +#: f.meta.cc:1563 msgid "tags to add" msgstr "etiquetas para añadir" -#: f.meta.cc:1395 +#: f.meta.cc:1564 msgid "tags to remove" msgstr "etquetas para eliminar" -#: f.meta.cc:1476 +#: f.meta.cc:1645 #, c-format msgid "" "%s \n" @@ -2364,29 +2561,37 @@ "%s \n" " demasiadas etiquetas" -#: f.meta.cc:1590 +#: f.meta.cc:1759 msgid "specify files and tags" msgstr "especificar archivos y etiquetas" -#: f.meta.cc:1617 f.meta.cc:3044 f.tools.cc:2819 f.tools.cc:3011 -#: f.tools.cc:3051 f.tools.cc:4001 f.tools.cc:4311 f.tools.cc:4664 +#: f.meta.cc:1786 f.meta.cc:3223 f.tools.cc:2838 f.tools.cc:3030 +#: f.tools.cc:3070 f.tools.cc:4020 f.tools.cc:4330 f.tools.cc:4683 #, c-format msgid "%d files selected" msgstr "%d archivos seleccionados" -#: f.meta.cc:1664 +#: f.meta.cc:1833 msgid "View Metadata" msgstr "Ver metadatos" -#: f.meta.cc:1822 fotoxx.h:937 +#: f.meta.cc:1901 +msgid "key name" +msgstr "" + +#: f.meta.cc:1903 +msgid "key value" +msgstr "" + +#: f.meta.cc:1991 fotoxx.h:956 msgid "All" msgstr "Todo" -#: f.meta.cc:1823 +#: f.meta.cc:1992 msgid "One Key:" msgstr "Una clave:" -#: f.meta.cc:1954 +#: f.meta.cc:2123 #, c-format msgid "" "Download geotags data (8 megabytes). \n" @@ -2397,36 +2602,52 @@ "Guardar en %s \n" "¿proceder?" -#: f.meta.cc:1990 +#: f.meta.cc:2159 msgid "download failed" msgstr "fallo en la descarga" -#: f.meta.cc:2025 +#: f.meta.cc:2192 fotoxx-13.10.cc:855 +msgid "Location from World Map" +msgstr "Localización desde el mapa mundial" + +#: f.meta.cc:2194 +msgid "Loading world map" +msgstr "" + +#: f.meta.cc:2201 msgid "please download geolocations data" msgstr "por favor descargar datos de geolocalizaciones" -#: f.meta.cc:2138 +#: f.meta.cc:2209 +msgid "Loading geolocations" +msgstr "" + +#: f.meta.cc:2327 msgid "geotags file must be downloaded" msgstr "se debe descargar archivo de geoetiquetas" -#: f.meta.cc:2432 f.meta.cc:2889 f.meta.cc:3152 +#: f.meta.cc:2611 f.meta.cc:3068 f.meta.cc:3331 #, c-format msgid "bad latitude/longitude: %s %s" msgstr "latitud/longitud incorrecta: %s %s" -#: f.meta.cc:2731 f.meta.cc:2939 f.meta.cc:4432 +#: f.meta.cc:2893 +msgid "Geocoding web service courtesy of" +msgstr "" + +#: f.meta.cc:2910 f.meta.cc:3118 f.meta.cc:4611 msgid "city" msgstr "ciudad" -#: f.meta.cc:2734 f.meta.cc:2942 f.meta.cc:4435 +#: f.meta.cc:2913 f.meta.cc:3121 f.meta.cc:4614 msgid "country" msgstr "pais" -#: f.meta.cc:2802 f.meta.cc:3065 +#: f.meta.cc:2981 f.meta.cc:3244 msgid "city not found" msgstr "ciudad no encontrada" -#: f.meta.cc:3130 +#: f.meta.cc:3309 msgid "" "data is incomplete \n" " proceed?" @@ -2434,123 +2655,127 @@ "los datos están incompletos \n" " ¿proceder?" -#: f.meta.cc:3156 +#: f.meta.cc:3335 msgid "no files selected" msgstr "no hay archivos seleccionados" -#: f.meta.cc:3188 +#: f.meta.cc:3367 msgid "choose city" msgstr "escoger ciudad" -#: f.meta.cc:3272 +#: f.meta.cc:3451 msgid "not found" msgstr "no encontrada" -#: f.meta.cc:3273 +#: f.meta.cc:3452 msgid "city and country required" msgstr "ciudad y pais requeridos" -#: f.meta.cc:3365 +#: f.meta.cc:3544 msgid "Report Geotag Groups" msgstr "Informe de grupos de etiquetas" -#: f.meta.cc:3366 +#: f.meta.cc:3545 msgid "Group by country" msgstr "Agrupar por país" -#: f.meta.cc:3367 +#: f.meta.cc:3546 msgid "Group by country/city" msgstr "Agrupar por país/ciudad" -#: f.meta.cc:3368 +#: f.meta.cc:3547 msgid "Group by country/city/date" msgstr "Agrupar por país/ciudad/fecha" -#: f.meta.cc:3371 +#: f.meta.cc:3550 msgid "Combine within" msgstr "Combinar dentro" -#: f.meta.cc:3373 +#: f.meta.cc:3552 msgid "days" msgstr "dias" -#: f.meta.cc:3715 +#: f.meta.cc:3667 +msgid "geotag groups" +msgstr "" + +#: f.meta.cc:3894 msgid "search range (km)" msgstr "buscar en un rango (km)" -#: f.meta.cc:3786 +#: f.meta.cc:3965 msgid "No matching images found" msgstr "No encontradas imagenes coincidentes" -#: f.meta.cc:3872 +#: f.meta.cc:4051 msgid "Search Image Metadata" msgstr "Buscar los metadatos de la imagen" -#: f.meta.cc:3876 +#: f.meta.cc:4055 msgid "images to search:" msgstr "imágenes a buscar:" -#: f.meta.cc:3877 +#: f.meta.cc:4056 msgid "all" msgstr "todo" -#: f.meta.cc:3878 +#: f.meta.cc:4057 msgid "current set only" msgstr "sólo selección actual" -#: f.meta.cc:3881 +#: f.meta.cc:4060 msgid "matching images:" msgstr "imágenes coincidentes" -#: f.meta.cc:3882 +#: f.meta.cc:4061 msgid "new set" msgstr "nueva selección" -#: f.meta.cc:3883 +#: f.meta.cc:4062 msgid "add to set" msgstr "añadir a la selección" -#: f.meta.cc:3884 +#: f.meta.cc:4063 msgid "remove" msgstr "eliminar" -#: f.meta.cc:3890 +#: f.meta.cc:4069 msgid "date range" msgstr "rango de fechas" -#: f.meta.cc:3891 +#: f.meta.cc:4070 msgid "stars range" msgstr "rango de estrellas" -#: f.meta.cc:3892 +#: f.meta.cc:4071 msgid "search tags" msgstr "buscar etiquetas" -#: f.meta.cc:3893 +#: f.meta.cc:4072 msgid "search text" msgstr "buscar texto" -#: f.meta.cc:3894 +#: f.meta.cc:4073 msgid "search files" msgstr "buscar archivos" -#: f.meta.cc:3899 +#: f.meta.cc:4078 msgid "(yyyymmdd)" msgstr "(aaaammdd)" -#: f.meta.cc:3905 +#: f.meta.cc:4084 msgid "all/any" msgstr "todo/cualquiera" -#: f.meta.cc:3924 +#: f.meta.cc:4103 msgid "other criteria" msgstr "otro criterio" -#: f.meta.cc:3928 +#: f.meta.cc:4107 msgid "other" msgstr "otro" -#: f.meta.cc:4059 +#: f.meta.cc:4238 msgid "" "to remove images from current set, \n" "search current set" @@ -2558,7 +2783,7 @@ "para eliminar imágenes de la selección actual, \n" "buscar en la selección actual" -#: f.meta.cc:4066 +#: f.meta.cc:4245 msgid "" "to add images to current set, \n" "search all images" @@ -2566,28 +2791,28 @@ "para añadir imágenes a la selección actual, \n" "buscar en todas las imágenes" -#: f.meta.cc:4293 +#: f.meta.cc:4472 #, c-format msgid "images added: %d removed: %d new count: %d" msgstr "imágenes añadidas: %d eliminadas: %d nueva cantidad: %d" -#: f.meta.cc:4296 +#: f.meta.cc:4475 msgid "no changes made" msgstr "no se han efectuado cambios" -#: f.meta.cc:4429 +#: f.meta.cc:4608 msgid "Add Geotags Search Criteria" msgstr "Añadir criterios de búsqueda de geoetiquetas" -#: f.meta.cc:4448 +#: f.meta.cc:4627 msgid "range (km)" msgstr "rango (km)" -#: f.meta.cc:4539 +#: f.meta.cc:4718 msgid "error in latitude/longitude/range" msgstr "error en latitud/longitud/rango" -#: f.meta.cc:4604 +#: f.meta.cc:4783 msgid "" "These items are always reported: \n" "date, stars, tags, caption, comment" @@ -2595,15 +2820,15 @@ "Siempre se informa de estos elementos: \n" "fecha, estrellas, etiquetas, leyenda, comentario" -#: f.meta.cc:4628 +#: f.meta.cc:4807 msgid "Additional Items for Report" msgstr "Elementos adicionales para el informe" -#: f.meta.cc:4634 +#: f.meta.cc:4813 msgid "Keyword" msgstr "Palabra clave" -#: f.meta.cc:4641 +#: f.meta.cc:4820 msgid "Match Criteria" msgstr "Criterio de coincidencia" @@ -2651,7 +2876,7 @@ "1. Arrastre el ratón para seleccionar. \n" "2. Borrar. 3. Repetir." -#: f.repair.cc:1541 fotoxx.h:990 +#: f.repair.cc:1541 fotoxx.h:1011 msgid "Radius" msgstr "Radio" @@ -2748,38 +2973,30 @@ msgid "Chromatic Abberation" msgstr "Aberración cromática" -#: f.repair.cc:3896 +#: f.repair.cc:3900 msgid "pixel group" msgstr "grupo de píxeles" -#: f.repair.cc:3897 +#: f.repair.cc:3901 msgid "circle color" msgstr "Color del círculo" -#: f.repair.cc:4006 +#: f.repair.cc:3913 f.repair.cc:3957 +msgid "stuck pixels:" +msgstr "píxeles defectuosos" + +#: f.repair.cc:4023 msgid "Load Stuck Pixels" -msgstr "Cargar píxeles retenidos" +msgstr "Cargar píxeles defectuosos" -#: f.repair.cc:4030 f.repair.cc:4126 +#: f.repair.cc:4047 f.repair.cc:4113 msgid "Stuck Pixels file" -msgstr "Archivo de píxeles retenidos" +msgstr "Archivo de píxeles defectuosos" -#: f.repair.cc:4070 +#: f.repair.cc:4087 msgid "file format error" msgstr "error de formato de archivo" -#: f.repair.cc:4098 -msgid "there are zero stuck pixels" -msgstr "hay cero píxeles retenidos" - -#: f.repair.cc:4102 -msgid "Save Stuck Pixels" -msgstr "Guardar los píxeles retenidos" - -#: f.retouch.cc:211 -msgid "Adjust Brightness and Color" -msgstr "Ajustar brillo y color" - #: f.retouch.cc:267 msgid "small-steps" msgstr "gradualmente" @@ -2832,15 +3049,15 @@ msgid "bright pixels" msgstr "píxeles brillantes" -#: f.retouch.cc:1983 +#: f.retouch.cc:1980 msgid "Ramp brightness across image" msgstr "Rampa de brillo a traves de la imagen" -#: f.retouch.cc:2363 f.retouch.cc:2600 f.tools.cc:5242 +#: f.retouch.cc:2360 f.retouch.cc:2597 f.tools.cc:5261 msgid "Edit function must be active" msgstr "la función de edición debe estar activa" -#: f.retouch.cc:2371 fotoxx-13.08.cc:2867 +#: f.retouch.cc:2368 fotoxx-13.10.cc:2905 msgid "" "Select area cannot be kept.\n" "Continue?" @@ -2848,23 +3065,23 @@ "No se puede conservar la selección de área.\n" "¿Continuar" -#: f.retouch.cc:2400 +#: f.retouch.cc:2397 msgid "power: center" msgstr "fuerza: centro" -#: f.retouch.cc:2405 +#: f.retouch.cc:2402 msgid "reset area" msgstr "restablecer área" -#: f.retouch.cc:2593 +#: f.retouch.cc:2590 msgid "Edit Function Amplifier" msgstr "Amplificador de la función de edición" -#: f.retouch.cc:2629 +#: f.retouch.cc:2626 msgid "minimum" msgstr "mínimo" -#: f.retouch.cc:2631 +#: f.retouch.cc:2628 msgid "maximum" msgstr "máximo" @@ -2981,197 +3198,209 @@ msgid "create missing and update stale thumbnails" msgstr "crear miniaturas perdidas y actualizar las estropeadas" -#: f.tools.cc:542 +#: f.tools.cc:548 #, c-format msgid "%d thumbnails created, %d errors \n" msgstr "%d miniaturas creadas, %d errores \n" -#: f.tools.cc:553 +#: f.tools.cc:559 msgid "no search index file is in use" msgstr "ningún archivo índice de búsqueda en uso" -#: f.tools.cc:554 f.tools.cc:561 f.tools.cc:897 +#: f.tools.cc:560 f.tools.cc:567 f.tools.cc:910 msgid "COMPLETED" msgstr "COMPLETADO" -#: f.tools.cc:566 +#: f.tools.cc:572 msgid "rebuild search index" msgstr "reconstruir índice de búsqueda" -#: f.tools.cc:585 +#: f.tools.cc:591 #, c-format msgid "%d current index records found \n" msgstr "%d registros de índice actual encontrados \n" -#: f.tools.cc:589 +#: f.tools.cc:595 msgid "find all image files and build index records" msgstr "encontrar todas las imágenes y construir registros de índice" -#: f.tools.cc:615 +#: f.tools.cc:621 msgid "too many image files" msgstr "demasiadas imágenes" -#: f.tools.cc:642 +#: f.tools.cc:648 #, c-format msgid "found %d image files \n" msgstr "encontradas % imágenes \n" -#: f.tools.cc:647 +#: f.tools.cc:653 msgid "merging old and new index records" msgstr "combinando antiguos y nuevos registros de índice" -#: f.tools.cc:697 +#: f.tools.cc:703 #, c-format msgid "files found in current index recs: %d \n" msgstr "archivos encontrados en los registros del actual índice: %d \n" -#: f.tools.cc:715 +#: f.tools.cc:721 msgid "updating index records" msgstr "actualizando registros de índice" -#: f.tools.cc:889 +#: f.tools.cc:902 #, c-format msgid "%d image files updated \n" msgstr "%d archivos de imagen actualizados \n" -#: f.tools.cc:909 +#: f.tools.cc:922 msgid "KILLED" msgstr "ABORTADO" -#: f.tools.cc:1047 +#: f.tools.cc:1060 msgid "Settings" msgstr "Ajustes" -#: f.tools.cc:1050 +#: f.tools.cc:1063 msgid "Startup Display" msgstr "Pantalla de inicio" -#: f.tools.cc:1072 +#: f.tools.cc:1085 msgid "Recent Files Gallery" msgstr "Galería de archivos recientes" -#: f.tools.cc:1073 +#: f.tools.cc:1086 msgid "Newest Files Gallery" msgstr "Galería de archivos más recientes" -#: f.tools.cc:1074 +#: f.tools.cc:1087 msgid "Previous Image Viewed" msgstr "Imagen vista anterior" -#: f.tools.cc:1075 +#: f.tools.cc:1088 msgid "Blank Window" msgstr "Ventana vacía" -#: f.tools.cc:1076 +#: f.tools.cc:1089 msgid "Directory Gallery" msgstr "Directorio de la galería" -#: f.tools.cc:1077 +#: f.tools.cc:1090 msgid "Image File" msgstr "Archivo de imagen" -#: f.tools.cc:1093 +#: f.tools.cc:1106 msgid "Menu Style" msgstr "Estilo de menú" -#: f.tools.cc:1095 +#: f.tools.cc:1108 msgid "Classic" msgstr "Clásico" -#: f.tools.cc:1096 +#: f.tools.cc:1109 msgid "Vertical" msgstr "Vertical" -#: f.tools.cc:1098 +#: f.tools.cc:1111 msgid "Toolbar Style" msgstr "Estilo de la barra de herramientas" -#: f.tools.cc:1101 +#: f.tools.cc:1114 msgid "Icons" msgstr "Iconos" -#: f.tools.cc:1102 +#: f.tools.cc:1115 msgid "Both" msgstr "Ambos" -#: f.tools.cc:1104 +#: f.tools.cc:1117 msgid "Image Pan" msgstr "Movimiento de imagen" -#: f.tools.cc:1106 +#: f.tools.cc:1119 msgid "Drag" msgstr "Arrastrar" -#: f.tools.cc:1107 +#: f.tools.cc:1120 msgid "Scroll" msgstr "Desplazar" -#: f.tools.cc:1108 +#: f.tools.cc:1121 msgid "Magnified" msgstr "Ampliada" -#: f.tools.cc:1111 +#: f.tools.cc:1124 msgid "Warn Overwrite Original" msgstr "Avisar sobreescritura del original" -#: f.tools.cc:1114 +#: f.tools.cc:1127 msgid "Default JPEG quality" msgstr "calidad JPEG por defecto" -#: f.tools.cc:1261 +#: f.tools.cc:1131 +msgid "Zooms for 200%" +msgstr "" + +#: f.tools.cc:1142 +msgid "RAW command" +msgstr "" + +#: f.tools.cc:1145 +msgid "RAW file types" +msgstr "" + +#: f.tools.cc:1274 msgid "startup directory is invalid" msgstr "El directorio de inicio no es correcto" -#: f.tools.cc:1269 +#: f.tools.cc:1282 msgid "startup file is invalid" msgstr "El archivo de inicio no es correcto" -#: f.tools.cc:1368 +#: f.tools.cc:1381 msgid "Select startup directory" msgstr "Seleccionar el directorio de inicio" -#: f.tools.cc:1376 +#: f.tools.cc:1389 msgid "Select startup image file" msgstr "Seleccionar el archivo de imagen de inicio" -#: f.tools.cc:1414 +#: f.tools.cc:1427 msgid "Click list position. Click thumbnail to add." msgstr "Clic en una posición de la lista. Clic en la miniatura para añadir" -#: f.tools.cc:1439 f.tools.cc:1654 +#: f.tools.cc:1452 f.tools.cc:1667 msgid "Edit Bookmarks" msgstr "Añadir marcadores" -#: f.tools.cc:1585 +#: f.tools.cc:1598 msgid "unable to save bookmarks file" msgstr "incapaz de guardar archivo de marcadores" -#: f.tools.cc:1654 +#: f.tools.cc:1667 msgid "Go To Bookmark" msgstr "Ir a un marcador" -#: f.tools.cc:1800 +#: f.tools.cc:1811 msgid "Edit KB Shortcuts" msgstr "Editar atajos de teclado" -#: f.tools.cc:1805 +#: f.tools.cc:1816 msgid "shortcut key:" msgstr "atajo de teclado" -#: f.tools.cc:1806 +#: f.tools.cc:1817 msgid "(enter keys)" msgstr " (introducir teclas)" -#: f.tools.cc:1932 +#: f.tools.cc:1943 #, c-format msgid "\"%s\" Reserved, cannot be used" msgstr "\"%s\" Reservada, no se puede utilizar" -#: f.tools.cc:2084 +#: f.tools.cc:2095 msgid "unable to save KB-shortcuts file" msgstr "imposible guardar archivos de atajos de teclado" -#: f.tools.cc:2154 +#: f.tools.cc:2165 msgid "" "Right-click collection thumbnails to \n" "cut/copy to cache, paste cache, remove." @@ -3179,245 +3408,241 @@ "Clic derecho en la colección de miniaturas para \n" "cortar/copiar al caché, pegar en la caché, eliminar" -#: f.tools.cc:2190 +#: f.tools.cc:2201 msgid "Start a new collection" msgstr "Iniciar una nueva colección" -#: f.tools.cc:2192 +#: f.tools.cc:2203 msgid "Collection to view or edit" msgstr "Colección para ver o editar" -#: f.tools.cc:2194 +#: f.tools.cc:2205 msgid "Select images, add to cache" msgstr "Seleccionar imágenes, añadir al caché" -#: f.tools.cc:2196 +#: f.tools.cc:2207 msgid "Clear image cache" msgstr "Limpiar caché de imagen" -#: f.tools.cc:2198 +#: f.tools.cc:2209 msgid "Delete a collection" msgstr "Borrar una colección" -#: f.tools.cc:2221 +#: f.tools.cc:2232 msgid "New Collection" msgstr "Nueva colección" -#: f.tools.cc:2222 +#: f.tools.cc:2233 msgid "Choose Collection" msgstr "Elegir colección" -#: f.tools.cc:2223 +#: f.tools.cc:2234 msgid "Delete Collection" msgstr "Borrar colección" -#: f.tools.cc:2293 +#: f.tools.cc:2304 #, c-format msgid "delete %s ?" msgstr "¿borrar %s ?" -#: f.tools.cc:2606 +#: f.tools.cc:2625 msgid "Move collection" msgstr "Mover la colección" -#: f.tools.cc:2609 +#: f.tools.cc:2628 msgid "collection name" msgstr "nombre de la colección" -#: f.tools.cc:2612 +#: f.tools.cc:2631 msgid "old top directory" msgstr "antiguo directorio superior" -#: f.tools.cc:2615 +#: f.tools.cc:2634 msgid "new top directory" msgstr "nuevo directorio superior" -#: f.tools.cc:2662 +#: f.tools.cc:2681 msgid "completed" msgstr "completado" -#: f.tools.cc:2752 +#: f.tools.cc:2771 msgid "Press ESC to exit slide show" msgstr "Pulse ESC para salir del diaporama" -#: f.tools.cc:2753 +#: f.tools.cc:2772 msgid "latest versions only" msgstr "sólo últimas versiones" -#: f.tools.cc:2754 +#: f.tools.cc:2773 msgid "continuous loop" msgstr "bucle contínuo" -#: f.tools.cc:2755 +#: f.tools.cc:2774 msgid "start with current image" msgstr "iniciar con la imagen actual" -#: f.tools.cc:2759 +#: f.tools.cc:2778 msgid "arrow keys" msgstr "teclas de flecha" -#: f.tools.cc:2760 +#: f.tools.cc:2779 msgid "instant" msgstr "instantánea" -#: f.tools.cc:2761 +#: f.tools.cc:2780 msgid "fade-in" msgstr "fundido" -#: f.tools.cc:2762 +#: f.tools.cc:2781 msgid "roll-right" msgstr "desenrollar hacia la derecha" -#: f.tools.cc:2763 +#: f.tools.cc:2782 msgid "roll-down" msgstr "desenrollar hacia abajo" -#: f.tools.cc:2764 +#: f.tools.cc:2783 msgid "shift-left" msgstr "mauúscula izquierda" -#: f.tools.cc:2765 +#: f.tools.cc:2784 msgid "venetian" msgstr "persiana" -#: f.tools.cc:2766 +#: f.tools.cc:2785 msgid "grate" msgstr "enrejado" -#: f.tools.cc:2767 +#: f.tools.cc:2786 msgid "rectangle" msgstr "rectángulo" -#: f.tools.cc:2768 +#: f.tools.cc:2787 msgid "radar" msgstr "radar" -#: f.tools.cc:2769 +#: f.tools.cc:2788 msgid "jaws" msgstr "dientes" -#: f.tools.cc:2770 +#: f.tools.cc:2789 msgid "ellipse" msgstr "elipse" -#: f.tools.cc:2771 +#: f.tools.cc:2790 msgid "raindrops" msgstr "gotas de lluvia" -#: f.tools.cc:2781 f.tools.cc:3866 f.tools.cc:4444 -msgid "0 files selected" -msgstr "0 archivos seleccionados" - -#: f.tools.cc:2783 +#: f.tools.cc:2802 msgid "collection:" msgstr "colección" -#: f.tools.cc:2793 +#: f.tools.cc:2812 msgid "music file" msgstr "archivo de música" -#: f.tools.cc:2801 +#: f.tools.cc:2820 msgid "transitions" msgstr "transiciones" -#: f.tools.cc:2803 +#: f.tools.cc:2822 msgid "seconds" msgstr "segundos" -#: f.tools.cc:2854 f.tools.cc:3038 f.tools.cc:3060 +#: f.tools.cc:2873 f.tools.cc:3057 f.tools.cc:3079 msgid "no image files selected" msgstr "no hay imágenes seleccionadas" -#: f.tools.cc:3019 +#: f.tools.cc:3038 msgid "open collection" msgstr "abrir colección" -#: f.tools.cc:3064 +#: f.tools.cc:3083 msgid "save as collection" msgstr "guardar como colección" -#: f.tools.cc:3077 +#: f.tools.cc:3096 msgid "Select music file or playlist" msgstr "Seleccionar un archivo de música o una lista de reproducción" -#: f.tools.cc:3868 +#: f.tools.cc:3887 msgid "new base name" msgstr "nuevo nombre base" -#: f.tools.cc:3871 +#: f.tools.cc:3890 msgid "starting sequence" msgstr "iniciando la secuencia" -#: f.tools.cc:3873 +#: f.tools.cc:3892 msgid "increment" msgstr "incremento" -#: f.tools.cc:3927 +#: f.tools.cc:3946 msgid "new file already exists:" msgstr "el nuevo archivo ya existe" -#: f.tools.cc:3937 +#: f.tools.cc:3956 msgid "Rename failed:" msgstr "Fallo al renombrar:" -#: f.tools.cc:3982 +#: f.tools.cc:4001 msgid "base name / sequence / increment not reasonable" msgstr "nombre base/secuencia/incremento no razonablle" -#: f.tools.cc:4085 +#: f.tools.cc:4104 msgid "max. width" msgstr "máximo ancho" -#: f.tools.cc:4090 +#: f.tools.cc:4109 msgid "no change" msgstr "sin cambios" -#: f.tools.cc:4093 +#: f.tools.cc:4112 msgid "new file type" msgstr "nuevo tipo de archivo" -#: f.tools.cc:4094 +#: f.tools.cc:4113 msgid "same" msgstr "el mismo" -#: f.tools.cc:4102 +#: f.tools.cc:4121 msgid "replace originals" msgstr "sustituír originales" -#: f.tools.cc:4103 +#: f.tools.cc:4122 msgid "move to location" msgstr "mover a la ubicación" -#: f.tools.cc:4104 +#: f.tools.cc:4123 msgid "remove EXIF" msgstr "retirar EXIF" -#: f.tools.cc:4105 +#: f.tools.cc:4124 msgid "delete originals" msgstr "borrar originales" -#: f.tools.cc:4180 +#: f.tools.cc:4199 msgid "file already exists" msgstr "el archivo ya existe" -#: f.tools.cc:4188 +#: f.tools.cc:4207 msgid "file type not supported" msgstr "tipo de archivo no soportad" -#: f.tools.cc:4227 +#: f.tools.cc:4246 msgid "cannot create new file" msgstr "no se puede crear el nuevo archivo" -#: f.tools.cc:4351 +#: f.tools.cc:4370 msgid "replace original files?" msgstr "¿reemplazar archivos originales?" -#: f.tools.cc:4352 +#: f.tools.cc:4371 #, c-format msgid "replace original files? (max. %d x %d)" msgstr "¿sustituír los archivos originales? (máx. %d x %d)" -#: f.tools.cc:4360 +#: f.tools.cc:4379 #, c-format msgid "" "copy files? \n" @@ -3426,7 +3651,7 @@ "¿copiar archivos? \n" " a la ubicación %s" -#: f.tools.cc:4363 +#: f.tools.cc:4382 #, c-format msgid "" "copy files? (max. %d x %d) \n" @@ -3435,7 +3660,7 @@ "¿copiar los archivos? (max. %d x %d) \n" " a la ubicación %s" -#: f.tools.cc:4367 +#: f.tools.cc:4386 msgid "" "\n" " and delete originals" @@ -3443,80 +3668,88 @@ "\n" " y borrar originales" -#: f.tools.cc:4380 +#: f.tools.cc:4399 msgid "location is not a valid directory" msgstr "la localización no es un directorio valido" -#: f.tools.cc:4387 +#: f.tools.cc:4406 #, c-format msgid "max. size %d x %d is not reasonable" msgstr "el tamaño máximo %d x %d no es razonable" -#: f.tools.cc:4447 +#: f.tools.cc:4466 msgid "output file type" msgstr "tipo de archivo de salida" -#: f.tools.cc:4459 +#: f.tools.cc:4478 msgid "white balance" msgstr "balance de blancos" -#: f.tools.cc:4460 +#: f.tools.cc:4479 msgid "interpolation" msgstr "interpolacion" -#: f.tools.cc:4461 +#: f.tools.cc:4480 msgid "color space" msgstr "espacio de color" -#: f.tools.cc:4462 +#: f.tools.cc:4481 msgid "gamma curve" msgstr "curva Gamma" -#: f.tools.cc:4465 +#: f.tools.cc:4484 msgid "camera" msgstr "cámara" -#: f.tools.cc:4466 +#: f.tools.cc:4485 msgid "fixed" msgstr "fijado" -#: f.tools.cc:4467 +#: f.tools.cc:4486 msgid "calculated" msgstr "calculado" -#: f.tools.cc:4999 +#: f.tools.cc:4503 +msgid "default" +msgstr "" + +#: f.tools.cc:4509 +msgid "defaults" +msgstr "" + +#: f.tools.cc:5018 msgid "x-spacing" msgstr "espaciado X" -#: f.tools.cc:5000 +#: f.tools.cc:5019 msgid "x-count" msgstr "conteo X" -#: f.tools.cc:5001 +#: f.tools.cc:5020 msgid "x-enable" msgstr "activar X" -#: f.tools.cc:5007 +#: f.tools.cc:5026 msgid "y-spacing" msgstr "espaciado Y" -#: f.tools.cc:5008 +#: f.tools.cc:5027 msgid "y-count" msgstr "conteo Y" -#: f.tools.cc:5009 +#: f.tools.cc:5028 msgid "y-enable" msgstr "activar Y" -#: f.tools.cc:5016 +#: f.tools.cc:5035 msgid "x-offset" msgstr "desplazamiento X" -#: f.tools.cc:5020 +#: f.tools.cc:5039 msgid "y-offset" msgstr "desplazamiento Y" -#: f.tools.cc:5444 +#: f.tools.cc:5463 msgid "" "Brightness should show a gradual ramp \n" "extending all the way to the edges." @@ -3524,19 +3757,31 @@ "El brillo debe mostrar una rampa gradual \n" "Extender hasta el final de los bordes." -#: f.tools.cc:5549 +#: f.tools.cc:5568 msgid "Available Translations" msgstr "Traducciones disponibles" -#: f.tools.cc:5553 +#: f.tools.cc:5572 msgid "Set Language" msgstr "Seleccionar el idioma" -#: f.tools.cc:5653 +#: f.tools.cc:5672 msgid "Make Launcher" msgstr "Crear un lanzador" -#: fotoxx-13.08.cc:330 +#: fotoxx-13.10.cc:201 +msgid "Tab F: image file view/edit" +msgstr "Peswtaña F : ver/editar imagen" + +#: fotoxx-13.10.cc:208 +msgid "Tab G: image gallery" +msgstr "Pestaña G : galería de imágenes" + +#: fotoxx-13.10.cc:215 +msgid "Tab W: world map" +msgstr "Pestaña W : mapa mundial" + +#: fotoxx-13.10.cc:339 msgid "" "First time Fotoxx startup. \n" "Latest version: http://www.kornelix.com/fotoxx \n" @@ -3547,43 +3792,69 @@ "Empezará el proceso de sincronización de imágenes (puede necesitar cierto " "tiemo) \n" -#: fotoxx-13.08.cc:363 +#: fotoxx-13.10.cc:372 msgid "Please install missing programs:" msgstr "Por favor instalar los programas necesarios:" -#: fotoxx-13.08.cc:816 -msgid "Location from World Map" -msgstr "Localización desde el mapa mundial" +#: fotoxx-13.10.cc:686 +#, c-format +msgid " BUSY %d%c " +msgstr "" -#: fotoxx-13.08.cc:2500 +#: fotoxx-13.10.cc:688 +msgid " BUSY " +msgstr "" + +#: fotoxx-13.10.cc:745 +msgid " (reduced)" +msgstr "" + +#: fotoxx-13.10.cc:753 +#, c-format +msgid " edits: %d" +msgstr "" + +#: fotoxx-13.10.cc:758 +msgid " menu locked" +msgstr "" + +#: fotoxx-13.10.cc:759 +msgid " area active" +msgstr "" + +#: fotoxx-13.10.cc:760 +msgid " dialog open" +msgstr "" + +#: fotoxx-13.10.cc:2538 msgid "Exceed 50 anchor points" msgstr "Excedidos 50 puntos de anclaje" -#: fotoxx-13.08.cc:2681 +#: fotoxx-13.10.cc:2719 msgid "load curve from a file" msgstr "Cargar curva desde un archivo" -#: fotoxx-13.08.cc:2735 +#: fotoxx-13.10.cc:2773 msgid "curve file is invalid" msgstr "El archivo de curva no es valido" -#: fotoxx-13.08.cc:2740 +#: fotoxx-13.10.cc:2778 msgid "curve file has different no. of curves" msgstr "El archivo de curvas tiene un número diferente de curvas" -#: fotoxx-13.08.cc:2755 +#: fotoxx-13.10.cc:2793 msgid "save curve to a file" msgstr "Guardar la curva como un archivo" -#: fotoxx-13.08.cc:2853 fotoxx-13.08.cc:3380 fotoxx-13.08.cc:3395 +#: fotoxx-13.10.cc:2891 fotoxx-13.10.cc:3417 fotoxx-13.10.cc:3432 msgid "prior function still active" msgstr "la función anterior aún está activada" -#: fotoxx-13.08.cc:2860 +#: fotoxx-13.10.cc:2898 msgid "Too many edits, please save image" msgstr "Demasiadas ediciones, por favcor guarde la imagen" -#: fotoxx-13.08.cc:2875 +#: fotoxx-13.10.cc:2913 msgid "" "Select area not active.\n" "Continue?" @@ -3591,23 +3862,23 @@ "La selección de área no está activada.\n" "¿Continuar?" -#: fotoxx-13.08.cc:3350 +#: fotoxx-13.10.cc:3387 msgid "Discard edits?" msgstr "¿Descartar las ediciones?" -#: fotoxx-13.08.cc:3351 +#: fotoxx-13.10.cc:3388 msgid "This action will discard changes\n" msgstr "Esta acción descartará los cambios\n" -#: fotoxx-13.08.cc:3352 fotoxx.h:973 +#: fotoxx-13.10.cc:3389 fotoxx.h:994 msgid "Keep" msgstr "Guardar" -#: fotoxx-13.08.cc:3353 +#: fotoxx-13.10.cc:3390 msgid "Discard" msgstr "Descartar" -#: fotoxx-13.08.cc:4054 +#: fotoxx-13.10.cc:4088 #, c-format msgid "" "warning: real memory %d MB < required %d MB \n" @@ -3616,212 +3887,224 @@ "atención: memoria real %d MB < requeridos %d MB \n" "el tiempo de respuesta se puede volver muy largo \n" -#: fotoxx.h:936 +#: fotoxx.h:955 msgid "Add All" msgstr "Añadir todo" -#: fotoxx.h:938 +#: fotoxx.h:957 msgid "Amount" msgstr "Cantidad" -#: fotoxx.h:939 +#: fotoxx.h:958 +msgid "Angle" +msgstr "Ángulo" + +#: fotoxx.h:959 msgid "Apply" msgstr "Aplicar" -#: fotoxx.h:940 +#: fotoxx.h:960 msgid "Autocomplete" msgstr "Autocompletado" -#: fotoxx.h:941 +#: fotoxx.h:961 msgid "Black" msgstr "Negro" -#: fotoxx.h:942 +#: fotoxx.h:962 msgid "Blend Width" msgstr "Mezclar por ancho" -#: fotoxx.h:944 +#: fotoxx.h:964 msgid "Brightness" msgstr "Brillo" -#: fotoxx.h:945 +#: fotoxx.h:965 msgid "Browse" msgstr "Examinar" -#: fotoxx.h:946 +#: fotoxx.h:966 msgid "Cancel" msgstr "Cancelar" -#: fotoxx.h:947 +#: fotoxx.h:967 msgid "Choose" msgstr "Elegir" -#: fotoxx.h:948 +#: fotoxx.h:968 msgid "Clear" msgstr "Limpiar" -#: fotoxx.h:950 +#: fotoxx.h:970 msgid "Contrast" msgstr "Contraste" -#: fotoxx.h:952 +#: fotoxx.h:972 msgid "Curve File:" msgstr "Archivo de curva:" -#: fotoxx.h:953 +#: fotoxx.h:973 msgid "Cut" msgstr "Cortar" -#: fotoxx.h:954 +#: fotoxx.h:974 msgid "Darker Areas" msgstr "Áreas más oscuras" -#: fotoxx.h:957 +#: fotoxx.h:977 msgid "Done" msgstr "Hecho" -#: fotoxx.h:958 +#: fotoxx.h:978 msgid "Edit" msgstr "Editar" -#: fotoxx.h:960 +#: fotoxx.h:980 msgid "Erase" msgstr "Borrar" -#: fotoxx.h:961 +#: fotoxx.h:981 msgid "Fetch" msgstr "Extraer" -#: fotoxx.h:962 +#: fotoxx.h:982 msgid "Find" msgstr "Encontrar" -#: fotoxx.h:963 +#: fotoxx.h:983 msgid "Finish" msgstr "Terminar" -#: fotoxx.h:964 +#: fotoxx.h:984 msgid "Font" msgstr "Tipo de letra" -#: fotoxx.h:966 +#: fotoxx.h:985 +msgid "Geotags" +msgstr "" + +#: fotoxx.h:987 msgid "Height" msgstr "Alto" -#: fotoxx.h:968 +#: fotoxx.h:989 msgid "histogram" msgstr "histograma" -#: fotoxx.h:970 +#: fotoxx.h:991 msgid "Images" msgstr " Imágenes" -#: fotoxx.h:971 +#: fotoxx.h:992 msgid "Insert" msgstr "Insertar" -#: fotoxx.h:974 +#: fotoxx.h:995 msgid "Lighter Areas" msgstr "Áreas más iluminadas" -#: fotoxx.h:975 +#: fotoxx.h:996 msgid "limit" msgstr "límite" -#: fotoxx.h:977 +#: fotoxx.h:998 msgid "Negative" msgstr "Negativo" -#: fotoxx.h:978 +#: fotoxx.h:999 msgid "New" msgstr "Nuevo" -#: fotoxx.h:980 +#: fotoxx.h:1001 msgid "search index file missing" msgstr "buscar archivo índice perdido" -#: fotoxx.h:981 +#: fotoxx.h:1002 msgid "OK" msgstr "OK" -#: fotoxx.h:983 +#: fotoxx.h:1004 msgid "Open RAW File" msgstr "Abrir archivo RAW" -#: fotoxx.h:985 +#: fotoxx.h:1006 msgid "Pause" msgstr "Pausa" -#: fotoxx.h:986 +#: fotoxx.h:1007 msgid "Percent" msgstr "Porcentaje" -#: fotoxx.h:987 +#: fotoxx.h:1008 msgid "Presets" msgstr "Predefinidos" -#: fotoxx.h:989 +#: fotoxx.h:1010 msgid "Proceed" msgstr "Proceder" -#: fotoxx.h:991 +#: fotoxx.h:1012 msgid "range" msgstr "rango" -#: fotoxx.h:994 +#: fotoxx.h:1015 msgid "Reduce" msgstr "Reducir" -#: fotoxx.h:997 +#: fotoxx.h:1018 msgid "Reset" msgstr "Restablecer" -#: fotoxx.h:1000 +#: fotoxx.h:1021 msgid "Unknown file type, save as tiff/jpeg/png to edit" msgstr "Tipo de archivo desconocido, guarde como tiff/jpeg/png para editarlo" -#: fotoxx.h:1001 +#: fotoxx.h:1022 msgid "Search" msgstr "Buscar" -#: fotoxx.h:1005 +#: fotoxx.h:1026 +msgid "Size" +msgstr "Tamaño" + +#: fotoxx.h:1027 msgid "Start" msgstr "Comenzar" -#: fotoxx.h:1006 +#: fotoxx.h:1028 msgid "Threshold" msgstr "Umbral" -#: fotoxx.h:1007 +#: fotoxx.h:1029 #, c-format msgid "exceed %d files" msgstr "se excedió en %d archivos" -#: fotoxx.h:1009 +#: fotoxx.h:1031 msgid "Undo All" msgstr "Deshacer todo" -#: fotoxx.h:1010 +#: fotoxx.h:1032 msgid "Undo Last" msgstr "Deshacer el último" -#: fotoxx.h:1012 +#: fotoxx.h:1034 msgid "Unfinish" msgstr "Sin cerrar" -#: fotoxx.h:1014 +#: fotoxx.h:1036 msgid "View" msgstr "Ver" -#: fotoxx.h:1015 +#: fotoxx.h:1037 msgid "Web" msgstr "Web" -#: fotoxx.h:1016 +#: fotoxx.h:1038 msgid "White" msgstr "Blanco" -#: fotoxx.h:1018 +#: fotoxx.h:1040 msgid "Map" msgstr "Mapa" @@ -3829,7 +4112,7 @@ msgid "user guide not found" msgstr "guia de usuario no encontrada" -#: zfuncs.cc:4504 zfuncs.cc:10210 +#: zfuncs.cc:4504 zfuncs.cc:10284 #, c-format msgid "cannot open file %s" msgstr "No puedo abrir el archivo %s" @@ -3838,77 +4121,81 @@ msgid "save screen to file" msgstr "guardar pantalla a archivo" -#: zfuncs.cc:8819 +#: zfuncs.cc:8891 msgid "No" msgstr "No" -#: zfuncs.cc:8819 +#: zfuncs.cc:8891 msgid "Yes" msgstr "Sí" -#: zfuncs.cc:8898 zfuncs.cc:8938 zfuncs.cc:9277 zfuncs.cc:9595 zfuncs.cc:10323 -#: zfuncs.cc:10329 zfuncs.cc:10335 zfuncs.cc:10341 +#: zfuncs.cc:8970 zfuncs.cc:9012 zfuncs.cc:9351 zfuncs.cc:9669 zfuncs.cc:10397 +#: zfuncs.cc:10403 zfuncs.cc:10409 zfuncs.cc:10415 msgid "cancel" msgstr "cancelar" -#: zfuncs.cc:9239 +#: zfuncs.cc:9313 msgid "open" msgstr "abrir" -#: zfuncs.cc:9244 +#: zfuncs.cc:9318 msgid "choose" msgstr "escoger" -#: zfuncs.cc:9249 +#: zfuncs.cc:9323 msgid "save" msgstr "guardar" -#: zfuncs.cc:9255 +#: zfuncs.cc:9329 msgid "open folder" msgstr "abrir carpeta" -#: zfuncs.cc:9260 +#: zfuncs.cc:9334 msgid "create folder" msgstr "crear carpeta" -#: zfuncs.cc:9266 +#: zfuncs.cc:9340 msgid "hidden" msgstr "ocultar" -#: zfuncs.cc:9327 +#: zfuncs.cc:9344 +msgid "quality" +msgstr "calidad" + +#: zfuncs.cc:9401 msgid "JPG quality 0-100" msgstr "Calidad de JPG 0-100" -#: zfuncs.cc:9586 +#: zfuncs.cc:9660 #, c-format msgid "printed image width: %.1f height: %.1f cm" msgstr "imagen impresa, ancho: %.1f alto: %.1f cm" -#: zfuncs.cc:9595 +#: zfuncs.cc:9669 msgid "done" msgstr "hecho" -#: zfuncs.cc:9595 zfuncs.cc:9607 +#: zfuncs.cc:9669 zfuncs.cc:9681 msgid "margins" msgstr "márgenes" -#: zfuncs.cc:9603 +#: zfuncs.cc:9677 msgid "top" msgstr "arriba" -#: zfuncs.cc:9604 +#: zfuncs.cc:9678 msgid "bottom" msgstr "abajo" -#: zfuncs.cc:9613 +#: zfuncs.cc:9687 msgid "image scale" msgstr "escalar imagen" -#: zfuncs.cc:9615 +#: zfuncs.cc:9689 msgid "percent" msgstr "porcentual" -#: zfuncs.cc:10097 +#: zfuncs.cc:10171 msgid "" "Initial parameters file created. \n" "Inspect and revise if necessary." @@ -3916,19 +4203,19 @@ "Creadoarchivo de parámetros inicial. \n" "Inspeccionar y revisar si es necesario." -#: zfuncs.cc:10113 +#: zfuncs.cc:10187 msgid "load parameters from a file" msgstr "cargar parámetros desde un archivo" -#: zfuncs.cc:10182 +#: zfuncs.cc:10256 msgid "save parameters to a file" msgstr "guardar parámetros en un archivo" -#: zfuncs.cc:10321 zfuncs.cc:10327 zfuncs.cc:10333 zfuncs.cc:10339 +#: zfuncs.cc:10395 zfuncs.cc:10401 zfuncs.cc:10407 zfuncs.cc:10413 msgid "edit parameters" msgstr "editar parámetros" -#: zfuncs.cc:10322 zfuncs.cc:10328 +#: zfuncs.cc:10396 zfuncs.cc:10402 msgid "" "list\n" "all" @@ -3936,7 +4223,7 @@ "listar\n" "todo" -#: zfuncs.cc:10322 zfuncs.cc:10328 zfuncs.cc:10334 zfuncs.cc:10340 +#: zfuncs.cc:10396 zfuncs.cc:10402 zfuncs.cc:10408 zfuncs.cc:10414 msgid "" "load\n" "file" @@ -3944,7 +4231,7 @@ "cargar\n" "archivo" -#: zfuncs.cc:10322 zfuncs.cc:10328 zfuncs.cc:10334 zfuncs.cc:10340 +#: zfuncs.cc:10396 zfuncs.cc:10402 zfuncs.cc:10408 zfuncs.cc:10414 msgid "" "save\n" "file" @@ -3952,7 +4239,7 @@ "guardar\n" "archivo" -#: zfuncs.cc:10323 zfuncs.cc:10335 +#: zfuncs.cc:10397 zfuncs.cc:10409 msgid "" "add\n" "new" @@ -3960,22 +4247,130 @@ "añadir\n" "nuevo" -#: zfuncs.cc:10323 zfuncs.cc:10329 zfuncs.cc:10335 zfuncs.cc:10341 +#: zfuncs.cc:10397 zfuncs.cc:10403 zfuncs.cc:10409 zfuncs.cc:10415 msgid "apply" msgstr "aplicar" -#: zfuncs.cc:10376 +#: zfuncs.cc:10450 msgid "apply?" msgstr "¿aplicar?" -#: zfuncs.cc:10433 +#: zfuncs.cc:10507 msgid "(new parm name)" msgstr "(nombre del nuevo parámetro)" -#: zfuncs.cc:10433 +#: zfuncs.cc:10507 msgid "add parameter" msgstr "añadir parámetro" +#~ msgid "angle" +#~ msgstr "ángulo" + +#~ msgid "cmsCreateTransform() failed" +#~ msgstr "Falló crear transformar cms()" + +#~ msgid "no plugin command" +#~ msgstr "sin orden de complemento" + +#~ msgid "User Guide etc." +#~ msgstr "Guía de usuariuo, etc." + +#~ msgid "Edit Caption/Comments" +#~ msgstr "Editar leyenda/comentarios" + +#~ msgid "Edit image caption or comment" +#~ msgstr "Editar leyenda o comentario de la imagen" + +#~ msgid "Edit image date/rating/tags" +#~ msgstr "Editar fecha/clasificación/etiquetas de la imagen" + +#~ msgid "Batch Tags" +#~ msgstr "Etiquetar en lote" + +#~ msgid "Edit image geotags" +#~ msgstr "Editar geoetiquetas de la imagen" + +#~ msgid "Gallery from Tab F" +#~ msgstr "Galería desde la pestaña F" + +#~ msgid "jump to first page" +#~ msgstr "ir a la primera página" + +#~ msgid "jump to last page" +#~ msgstr "ir a la última página" + +#~ msgid "change sequence" +#~ msgstr "cambiar secuencia" + +#~ msgid "Edit Caption and Comments" +#~ msgstr "Editar título y comentarios" + +#~ msgid "image date (yyyymmdd)" +#~ msgstr "fecha de la imagen (aaaammdd)" + +#~ msgid "use last" +#~ msgstr "usar el último" + +#~ msgid "image stars" +#~ msgstr "estrellas de la imagen" + +#~ msgid "current tags" +#~ msgstr "etiquetas actuales" + +#~ msgid "there are zero stuck pixels" +#~ msgstr "hay cero píxeles retenidos" + +#~ msgid "Save Stuck Pixels" +#~ msgstr "Guardar los píxeles retenidos" + +#~ msgid "Overwrite original file?" +#~ msgstr "¿Sobreescribir el archivo original?" + +#~ msgid "Do not warn again" +#~ msgstr "No volver a avisar" + +#~ msgid "Warning" +#~ msgstr "Aviso" + +#~ msgid "Save File" +#~ msgstr "Guardar el archivo" + +#~ msgid "Save to Same File" +#~ msgstr "Guardar en el mismo archivo" + +#~ msgid "Save to the same file (replace)" +#~ msgstr "Guardar en el mismo archivo (reemplazar)" + +#~ msgid "Save to New Version" +#~ msgstr "Guardar como nueva versión" + +#~ msgid "Save to a new (next) version" +#~ msgstr "Guardar como una nueva (próxima) versión" + +#~ msgid "Save to New File" +#~ msgstr "Guardar en un archivo nuevo" + +#~ msgid "Save to a new file name" +#~ msgstr "Guardar en un nuevo nombre de archivo" + +#~ msgid "Save to the same file" +#~ msgstr "Guardar en el mismo archivo" + +#~ msgid "Save to a new version" +#~ msgstr "Guardar en una nueva versión" + +#~ msgid "Save+V" +#~ msgstr "Guardar+Vers" + +#~ msgid "Save to a new file" +#~ msgstr "Guardar en un nuevo archivo" + +#~ msgid "Save+F" +#~ msgstr "Guardar+Arch" + +#~ msgid "Adjust Brightness and Color" +#~ msgstr "Ajustar brillo y color" + #~ msgid "Cartoon Parameters" #~ msgstr "Parámetros de dibujo animado" diff -Nru fotoxx-13.08/locales/translate-fr.po fotoxx-13.09.1/locales/translate-fr.po --- fotoxx-13.08/locales/translate-fr.po 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/locales/translate-fr.po 2013-08-31 06:26:38.000000000 +0000 @@ -1,44 +1,50 @@ -# French translations for home package. -# Copyright (C) 2008 THE home'S COPYRIGHT HOLDER -# This file is distributed under the same license as the home package. +# translation of fotoxx_merge.po to +# mico , 2008. +# Stanislas Zeller , 2008, 2009, 2010, 2011. +# translation of fotoxx.po to +# #-#-#-#-# fotoxx.po (messages) #-#-#-#-# +# French translations for home package. +# Copyright (C) 2008 THE home'S COPYRIGHT HOLDER +# This file is distributed under the same license as the home package. msgid "" msgstr "" "Project-Id-Version: fotoxx_merge\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-01 22:41+0200\n" -"PO-Revision-Date: 2012-12-30 18:47-0600\n" -"Last-Translator: Jean-Pierre VAISSIÈRE \n" -"Language-Team: \n" +"POT-Creation-Date: 2013-08-29 15:21+0200\n" +"PO-Revision-Date: 2013-08-29 12:38+0100\n" +"Last-Translator: FR_PUPPY_LINUX \n" +"Language-Team: FR_PUPPY_LINUX \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: KBabel 1.11.4\n" +"X-Poedit-Language: French\n" #: f.area.cc:56 msgid "Select Area for Edits" -msgstr "Sélectionner une zone à éditer" +msgstr "Sélectionner la Zone de Travail" -#: f.area.cc:57 f.retouch.cc:2362 +#: f.area.cc:57 f.retouch.cc:2359 msgid "Press F1 for help" -msgstr "F1 pour l'aide" +msgstr "Appuyer sur la touche F1 pour obtenir de l'Aide" #: f.area.cc:66 msgid "" "Select Area not supported \n" "by this edit function" msgstr "" -"Zone sélectionnée non supportée \n" -"par l'édition" +"Sélection de zone non prise en charge \n" +"par cette fonction d'édition" #: f.area.cc:94 msgid "select rectangle" -msgstr "Sélectionner le rectangle" +msgstr "Rectangle" #: f.area.cc:95 msgid "select ellipse" -msgstr "Sélectionner l'ellipse" +msgstr "Ellipse" #: f.area.cc:98 msgid "freehand draw" @@ -46,15 +52,15 @@ #: f.area.cc:99 msgid "follow edge" -msgstr "Suit le contour" +msgstr "Suivre le bord" #: f.area.cc:100 msgid "draw/replace" -msgstr "Dessin/Remplace" +msgstr "Dessiner/Remplacer" #: f.area.cc:103 msgid "select area within mouse" -msgstr "Sélectionner une zone avec la souris" +msgstr "Sélectionner une zone avec la souris " #: f.area.cc:106 msgid "select one matching color within mouse" @@ -64,17 +70,18 @@ msgid "select all matching colors within mouse" msgstr "Sélectionner toutes les couleurs correspondantes avec la souris" -#: f.area.cc:114 f.retouch.cc:2397 +#: f.area.cc:114 f.retouch.cc:2394 msgid "mouse radius" msgstr "Rayon du pointeur" #: f.area.cc:117 msgid "match level %" -msgstr "Niveau correspondant %" +msgstr "Niveau de correspondance %" +# ?? #: f.area.cc:122 msgid "search range" -msgstr "Etendue de la recherche" +msgstr "Plage de recherche" #: f.area.cc:124 msgid "firewall" @@ -82,12 +89,12 @@ #: f.area.cc:128 msgid "Blend Width for edits in area" -msgstr "Largeur du fondu pour les édition dans la zone" +msgstr "Dosage du mélange pour le travail dans la zone" #: f.area.cc:297 f.area.cc:480 #, c-format msgid "exceed %d edits" -msgstr "Dépasse de %d éditions" +msgstr "Excède %d modifications" #: f.area.cc:1302 msgid "" @@ -95,78 +102,74 @@ "(possible gaps in the outline will be found). \n" "Press F1 for help." msgstr "" -"Cliquer une fois à l'intérieur de chaque zone fermée \n" -"(les éventuels espaces dans le contour seront trouvés). \n" -"F1 pour l'aide." +"Cliquer une fois à l'intérieur de chaque zone circonscrite \n" +"(les éventuelles ruptures de contour seront trouvées). \n" +"Appuyer sur la touche F1 pour obtenir de l'Aide." #: f.area.cc:1328 msgid "finish area" -msgstr "Cloturer la zone" +msgstr "Finir la zone" #: f.area.cc:1366 msgid "searching" -msgstr "Rechercher" +msgstr "Recherche en cours" #: f.area.cc:1398 msgid "outline has a gap" -msgstr "Le contour a un espace" +msgstr "Le contour est discontinu" #: f.area.cc:1402 msgid "success" -msgstr "Terminé avec succès" +msgstr "Succès" #: f.area.cc:1510 f.area.cc:1537 #, c-format msgid "found %d pixels" msgstr "%d pixels trouvés" -#: f.area.cc:1824 f.area.cc:1841 f.area.cc:1861 f.area.cc:2191 +#: f.area.cc:1824 f.area.cc:1841 f.area.cc:1861 f.area.cc:2192 msgid "the area is not finished" -msgstr "La zone n'est pas bouclée" +msgstr "La zone n'est pas finie" #: f.area.cc:1955 msgid "Edge calculation in progress" -msgstr "Calcul des bords en cours" +msgstr "Calcul du bord en cours" #: f.area.cc:1964 msgid "Area Edge Calc" msgstr "Calcul du bord de la zone" -#: f.area.cc:2265 +#: f.area.cc:2266 msgid "position with mouse click/drag" -msgstr "Position avec un clic / glisser" +msgstr "Position par cliquer/glisser" -#: f.area.cc:2290 +#: f.area.cc:2292 msgid "Paste Image" msgstr "Coller l'image" -#: f.area.cc:2295 +#: f.area.cc:2297 msgid "resize" msgstr "Redimensionner" -#: f.area.cc:2303 -msgid "angle" -msgstr "angle" - -#: f.area.cc:2565 +#: f.area.cc:2598 msgid "load select area from a file" -msgstr "Charger la zone sélectionnée à partir d'un fichier" +msgstr "Charger la zone sélectionnée depuis un fichier" -#: f.area.cc:2619 +#: f.area.cc:2652 msgid "save select area to a file" -msgstr "Sauvegarder la zone sélectionnée dans un fichier" +msgstr "Enregistrer la zone sélectionnée dans un fichier" -#: f.bend.cc:71 f.menus.cc:230 +#: f.bend.cc:71 f.menus.cc:242 msgid "Unbend" -msgstr "" +msgstr "Distorsion" -#: f.bend.cc:79 f.image.cc:1485 +#: f.bend.cc:79 f.image.cc:1496 msgid "vertical" -msgstr "Vertical" +msgstr "Verticale" -#: f.bend.cc:80 f.image.cc:1484 +#: f.bend.cc:80 f.image.cc:1495 msgid "horizontal" -msgstr "Horizontal" +msgstr "Horizontale" #: f.bend.cc:81 msgid "linear" @@ -174,9 +177,9 @@ #: f.bend.cc:84 msgid "curved" -msgstr "Courbe" +msgstr "Cintré" -#: f.bend.cc:88 f.bend.cc:1517 f.bend.cc:1789 f.bend.cc:2049 f.image.cc:163 +#: f.bend.cc:88 f.bend.cc:1517 f.bend.cc:1789 f.bend.cc:2049 f.image.cc:172 msgid "Grid" msgstr "Grille" @@ -185,20 +188,20 @@ " Click the four corners of a tetragon area. Press [apply]. \n" " The image is warped to make the tetragon into a rectangle." msgstr "" -"Cliquer sur les quatre coins d'un quadrilatère. Cliquer [Appliquer]. \n" -"L'image est déformée en transformant le quadrilatère en rectangle." +" Cliquer sur les quatre coins d'un quadrilatère. Cliquer [Appliquer]. \n" +" L'image est déformée pour faire du quadrilatère un rectangle." -#: f.bend.cc:356 f.menus.cc:231 +#: f.bend.cc:356 f.menus.cc:243 msgid "Keystone Correction" -msgstr "Correction du trapèze" +msgstr "Correction trapèze" #: f.bend.cc:526 msgid "must have 4 corners" -msgstr "Doit avoir 4 coins" +msgstr "doit comporter 4 coins" #: f.bend.cc:655 msgid "Flatten Book Page Photo" -msgstr "" +msgstr "Aplatir une photo de page de livre" #: f.bend.cc:656 msgid "" @@ -206,22 +209,25 @@ "Map top and bottom edges with \n" "4+ mouse clicks, then flatten: " msgstr "" +"Rogner l'image pour isoler une page. \n" +"Mapper les bords supérieur et inférieur avec \n" +"4+ clics de souris, puis aplatir:" #: f.bend.cc:659 msgid "Stretch curved-down surfaces:" -msgstr "" +msgstr "Étirer les surfaces cintrées vers le bas:" #: f.bend.cc:706 msgid "flatten" -msgstr "" +msgstr "Aplatir" #: f.bend.cc:712 msgid "top:" -msgstr "" +msgstr "Haut:" #: f.bend.cc:715 msgid "bottom:" -msgstr "" +msgstr "Bas:" #: f.bend.cc:1093 msgid "" @@ -230,23 +236,23 @@ " Make multiple mouse pulls until satisfied. \n" " When finished, select another area or press [done]." msgstr "" -"Sélectionner une zone à déformer en utilisant dans \n" -"la barre de menu --> Zones / Sélectionner. \n" -"Appuyer sur [Commencer] et étirez la zone avec la souris. \n" -"Effectuez des déformations jusqu'à satisfaction. \n" -"Ensuite, sélectionnez une autre zone ou cliquez sur [Ok]." +"Sélectionner une zone à déformer au moyen de la fonction \n" +"de sélection de zone. \n" +"Cliquer sur [Commencer la déformation] et tirer la zone avec la souris. \n" +"Répéter plusieurs fois l'opération jusqu'à satisfaction. \n" +"Une fois terminé, sélectionner une autre zone ou cliquer sur [Terminé]." -#: f.bend.cc:1105 f.menus.cc:233 +#: f.bend.cc:1105 f.menus.cc:245 msgid "Warp area" -msgstr "" +msgstr "Déformer la zone" #: f.bend.cc:1110 msgid "start warp" -msgstr "Commencer" +msgstr "Commencer la distorsion" #: f.bend.cc:1163 msgid "no active Select Area" -msgstr "Pas de zone sélectionnée active" +msgstr "Pas de sélection de zone active" #: f.bend.cc:1497 f.bend.cc:1768 msgid "" @@ -254,22 +260,21 @@ " Make multiple mouse pulls until satisfied. \n" " When finished, press [done]." msgstr "" -" Tirez l'image en utilisant la souris. \n" -" Effectuez plusieurs fois le processus \n" -" jusqu'à satisfaction et cliquez sur [Ok] \n" -" pour terminer." +" Tirer à un endroit de l'image au moyen de la souris. \n" +" Répéter plusieurs fois l'opération jusqu'à satisfaction. \n" +" Une fois terminé, cliquer sur [Terminé]." -#: f.bend.cc:1510 f.menus.cc:234 +#: f.bend.cc:1510 f.menus.cc:246 msgid "Warp curved" -msgstr "" +msgstr "Décintrer" #: f.bend.cc:1519 msgid "warp span" -msgstr "" +msgstr "Amplitude de la distorsion" -#: f.bend.cc:1781 f.menus.cc:235 +#: f.bend.cc:1781 f.menus.cc:247 msgid "Warp linear" -msgstr "" +msgstr "Distorsion linéaire" #: f.bend.cc:2033 msgid "" @@ -277,13 +282,13 @@ " Make multiple mouse pulls until satisfied. \n" " When finished, press [done]." msgstr "" -"Tirez un bord de l'image en utilisant la souris. \n" -"Répétez plusieurs fois l'opération jusqu'à satisfaction. \n" -"Une fois terminé, appuyez sur [Ok]." +" Tirer un coin de l'image au moyen de la souris. \n" +" Répéter plusieurs fois l'opération jusqu'à satisfaction. \n" +" Une fois terminé, cliquer sur [Terminé]." -#: f.bend.cc:2044 f.menus.cc:236 +#: f.bend.cc:2044 f.menus.cc:248 msgid "Warp affine" -msgstr "" +msgstr "Déformation affinée" #: f.color.cc:54 msgid "Adjust White Balance" @@ -291,23 +296,23 @@ #: f.color.cc:55 msgid "Click white or gray image location" -msgstr "Cliquez sur une couleur de l'image" +msgstr "Cliquer à un endroit blanc ou gris de l'image" #: f.color.cc:92 msgid "warmer" -msgstr "" +msgstr "Plus chaud" #: f.color.cc:94 msgid "cooler" -msgstr "" +msgstr "Plus doux" #: f.color.cc:96 f.repair.cc:69 msgid "reduce" msgstr "Réduire" -#: f.color.cc:371 f.menus.cc:224 +#: f.color.cc:371 f.menus.cc:236 msgid "Color Mode" -msgstr "Mode de coloration" +msgstr "Mode de couleur" #: f.color.cc:374 msgid "black/white positive" @@ -331,28 +336,24 @@ #: f.color.cc:520 msgid "Change Color Profile" -msgstr "" +msgstr "Changer de profil de couleur" #: f.color.cc:524 msgid "input profile" -msgstr "" +msgstr "Fichier d'entrée" #: f.color.cc:528 msgid "output profile" -msgstr "" +msgstr "Fichier de sortie" #: f.color.cc:545 msgid "color profile" -msgstr "" +msgstr "Profil de Couleur" #: f.color.cc:587 f.color.cc:593 #, c-format msgid "unknown cms profile %s" -msgstr "" - -#: f.color.cc:601 -msgid "cmsCreateTransform() failed" -msgstr "" +msgstr "Profile cms inconnu %s" #: f.color.cc:667 msgid "Color Match Images" @@ -360,16 +361,16 @@ #: f.color.cc:694 msgid "mouse radius for color sample" -msgstr "Rayon du pointeur pour l'échantillon de couleur" +msgstr "Rayon du pointeur d'échantillonnage de couleur" -#: f.color.cc:696 f.color.cc:701 f.file.cc:3981 f.menus.cc:191 f.menus.cc:278 -#: f.menus.cc:390 fotoxx.h:982 +#: f.color.cc:696 f.color.cc:701 f.file.cc:4034 f.menus.cc:203 f.menus.cc:291 +#: f.menus.cc:401 fotoxx.h:1003 msgid "Open" msgstr "Ouvrir" #: f.color.cc:697 msgid "image for source color" -msgstr "Image pour la source de la couleur" +msgstr "Image pour la source de couleur" #: f.color.cc:699 msgid "click on image to get source color" @@ -377,27 +378,27 @@ #: f.color.cc:702 msgid "image to set matching color" -msgstr "Image pour la couleur correspondante" +msgstr "Image pour mettre la couleur correspondante" #: f.color.cc:704 msgid "click on image to set matching color" -msgstr "Cliquer sur l'image pour régler la couleur correspondante" +msgstr "Cliquer sur l'image pour mettre la couleur correspondante" #: f.color.cc:759 msgid "select source image color first" -msgstr "Sélectionner d'abord la source de la couleur de l'image" +msgstr "Sélectionner d'abord la couleur de l'image source" -#: f.color.cc:957 f.tools.cc:5134 +#: f.color.cc:957 f.tools.cc:5153 msgid "Click image to select pixels." -msgstr "Cliquer sur l'image pour sélectionner les pixels." +msgstr "Cliquer l'image pour sélectionner les pixels." -#: f.color.cc:995 f.menus.cc:227 +#: f.color.cc:995 f.menus.cc:239 msgid "Revise RGB" -msgstr "Corriger le RVB" +msgstr "Corriger RVB" #: f.color.cc:1007 msgid "Metric:" -msgstr "Métrique :" +msgstr "Métrique:" #: f.color.cc:1062 msgid "Blend" @@ -423,15 +424,15 @@ msgid "+Blue -Yellow" msgstr "+Bleu -Jaune" -#: f.color.cc:1467 fotoxx.h:992 +#: f.color.cc:1467 fotoxx.h:1013 msgid "Red" msgstr "Rouge" -#: f.color.cc:1468 fotoxx.h:965 +#: f.color.cc:1468 fotoxx.h:986 msgid "Green" msgstr "Vert" -#: f.color.cc:1469 fotoxx.h:943 +#: f.color.cc:1469 fotoxx.h:963 msgid "Blue" msgstr "Bleu" @@ -439,22 +440,22 @@ msgid "Load CMYK parameters" msgstr "Charger les paramètres CMYK" -#: f.color.cc:1614 f.color.cc:1686 f.repair.cc:4008 f.repair.cc:4104 +#: f.color.cc:1614 f.color.cc:1686 f.meta.cc:139 f.repair.cc:4025 msgid "File:" -msgstr "Fichier :" +msgstr "Fichier:" #: f.color.cc:1633 f.color.cc:1706 msgid "CMYK parameters file" -msgstr "Fichier de paramètres CMYK" +msgstr "Fichier de paramétrage CMYK" -#: f.color.cc:1651 f.file.cc:2047 f.meta.cc:1282 f.repair.cc:4048 -#: f.tools.cc:1708 +#: f.color.cc:1651 f.file.cc:2092 f.meta.cc:1451 f.repair.cc:4065 +#: f.tools.cc:1721 msgid "file not found" -msgstr "Fichier non trouvé" +msgstr "Fichier introuvable" #: f.color.cc:1684 msgid "Save CMYK parameters" -msgstr "Sauvegarder les paramètres CMYK" +msgstr "Enregistrer les paramètres CMYK" #: f.combine.cc:1939 f.combine.cc:1944 f.combine.cc:2565 f.combine.cc:2570 #: f.combine.cc:3228 f.combine.cc:3233 f.combine.cc:3765 f.combine.cc:3770 @@ -463,7 +464,7 @@ #: f.combine.cc:1965 f.combine.cc:2591 f.combine.cc:3254 f.combine.cc:3791 msgid "Images are not all the same size" -msgstr "Les images ne sont pas toutes de la même taille" +msgstr "Les images ne sont pas toutes de taille identique" #: f.combine.cc:2308 msgid "Adjust Image Contributions" @@ -475,24 +476,24 @@ #: f.combine.cc:2313 msgid "light pixels" -msgstr "Pixels lumineux" +msgstr "Pixels clairs" -#: f.combine.cc:2315 f.meta.cc:169 +#: f.combine.cc:2315 msgid "file:" -msgstr "Fichier : " +msgstr "Fichier: " #: f.combine.cc:2826 msgid "Paint and Warp Image" msgstr "Peindre et déformer l'image" #: f.combine.cc:2829 f.combine.cc:3482 f.combine.cc:4897 f.combine.cc:5795 -#: f.menus.cc:58 f.menus.cc:104 +#: f.menus.cc:58 f.menus.cc:119 msgid "Image" -msgstr "" +msgstr "Image" #: f.combine.cc:2833 msgid "paint" -msgstr "Peinture" +msgstr "Peindre" #: f.combine.cc:2834 msgid "warp" @@ -500,7 +501,7 @@ #: f.combine.cc:3480 msgid "Select and Paint Image" -msgstr "Selectionner et peindre l'image" +msgstr "Sélectionner et peindre l'image" #: f.combine.cc:3961 msgid "Adjust Pixel Composition" @@ -508,19 +509,19 @@ #: f.combine.cc:3963 msgid "use average" -msgstr "valeur moyenne" +msgstr "Utiliser moyenne" #: f.combine.cc:3964 msgid "use median" -msgstr "valeur médiane" +msgstr "Utiliser médiane" #: f.combine.cc:3966 msgid "omit low pixel" -msgstr "sans pixel faible" +msgstr "Exclure les pixels clairs" #: f.combine.cc:3967 msgid "omit high pixel" -msgstr "sans pixel élevé" +msgstr "Exclure les pixels clairs" #: f.combine.cc:4213 f.combine.cc:4218 f.combine.cc:5110 f.combine.cc:5115 msgid "Select 2 to 4 files" @@ -531,30 +532,30 @@ "Drag images into rough alignment.\n" "To rotate, drag from lower edge." msgstr "" -"Faire glisser les images dans un alignement approximatif. \n" -"Pour faire pivoter, faire glisser depuis le bord inférieur." +"Faire glisser les images dans un alignement approximatif.\n" +"Pour pivoter, faire glisser depuis le bord inférieur." #: f.combine.cc:4294 f.combine.cc:5191 msgid "Search for lens mm and bow" -msgstr "Rechercher les valeurs « lens mm / bow »" +msgstr "Rechercher focale et courbure" #: f.combine.cc:4336 f.combine.cc:5233 msgid "Pre-align Images" -msgstr "Images pré alignées" +msgstr "Pré-aligner les images" #: f.combine.cc:4340 f.combine.cc:5237 msgid "lens mm" -msgstr "Longueur de la focale (lens_mm)" +msgstr "Longueur focale (lens mm)" #: f.combine.cc:4344 f.combine.cc:5241 msgid "lens bow" -msgstr "Courbe d'objectif (lens_bow)" +msgstr "Courbure (lens bow)" #: f.combine.cc:4346 f.combine.cc:5243 msgid "no curve (scanned image)" -msgstr "Pas de courbe (image scannée)" +msgstr "Aucune courbe (image scannée)" -#: f.combine.cc:4348 f.combine.cc:5245 f.menus.cc:198 f.menus.cc:446 +#: f.combine.cc:4348 f.combine.cc:5245 f.menus.cc:210 f.menus.cc:457 msgid "Resize" msgstr "Redimensionner" @@ -564,20 +565,20 @@ #: f.combine.cc:4390 f.combine.cc:5287 msgid "use two images only" -msgstr "N'utilisez seulement que deux images" +msgstr "N'utiliser que deux images" #: f.combine.cc:4411 f.combine.cc:4618 f.combine.cc:4813 f.combine.cc:5308 #: f.combine.cc:5515 f.combine.cc:5710 msgid "Too little overlap, cannot align" -msgstr "Trop de chevauchements, impossible d'aligner." +msgstr "Chevauchement insuffisant, alignement impossible." #: f.combine.cc:4888 f.combine.cc:5786 msgid "Match Brightness and Color" -msgstr "Correspondance de la luminosité et de la couleur" +msgstr "Synchroniser luminosité et couleur" #: f.combine.cc:4912 f.combine.cc:5810 msgid "auto color" -msgstr "Couleur auto." +msgstr "Couleur automatique" #: f.combine.cc:4913 f.combine.cc:5811 msgid "file color" @@ -589,29 +590,196 @@ "To rotate, drag from right edge." msgstr "" "Faire glisser les images dans un alignement approximatif. \n" -"Pour faire pivoter, faire glisser depuis le bord droit." +"Pour pivoter, faire glisser depuis le bord droit." + +#: f.combine.cc:6061 +msgid "Mashup layout and background image" +msgstr "Disposition Pêle-mêle et image de fond" + +#: f.combine.cc:6090 +msgid "choose an image file" +msgstr "Choisir un fichier image" + +#: f.combine.cc:6091 +msgid "use current image file" +msgstr "Utiliser le fichier image actuel" + +#: f.combine.cc:6092 +msgid "open a Mashup project file" +msgstr "Ouvrir un fichier de projet de Pêle-mêle" + +#: f.combine.cc:6093 +msgid "specify layout size and color" +msgstr "Spécifier la taille et la couleur de la disposition" + +#: f.combine.cc:6120 +msgid "choose layout file" +msgstr "Choisir le fichier de disposition" + +#: f.combine.cc:6181 +msgid "Edit Images" +msgstr "Éditer des images" + +#: f.combine.cc:6182 f.combine.cc:6931 +msgid "Edit Text" +msgstr "Éditer le texte" + +#: f.combine.cc:6183 f.combine.cc:6482 +msgid "Save Project" +msgstr "Enregistrer le projet" + +#: f.combine.cc:6186 +msgid "add or edit images" +msgstr "Ajouter ou éditer des images" + +#: f.combine.cc:6187 +msgid "add or edit text" +msgstr "Ajouter du ou éditer le texte" + +#: f.combine.cc:6188 +msgid "save project data" +msgstr "Enregistrer les données du projet" + +#: f.combine.cc:6189 +msgid "project complete" +msgstr "Projet complet" + +#: f.combine.cc:6190 +msgid "cancel project" +msgstr "Abandonner le projet" + +#: f.combine.cc:6283 +msgid "Open Project" +msgstr "Ouvrir un projet" + +#: f.combine.cc:6302 +#, c-format +msgid "" +"layout image file missing: \n" +" %s" +msgstr "" +"Fichier image de disposition manquant: \n" +"%s" + +#: f.combine.cc:6320 +#, c-format +msgid "" +"overlay image file missing: \n" +" %s" +msgstr "" +"Fichier image de superposition manquant: \n" +"%s" + +#: f.combine.cc:6382 +#, c-format +msgid "" +"layout image file error: \n" +" %s" +msgstr "" +"Erreur de fichier image de disposition: \n" +" %s" + +#: f.combine.cc:6393 +#, c-format +msgid "" +"overlay image file error: \n" +" %s" +msgstr "" +"Erreur de fichier image de superposition: \n" +" %s" + +#: f.combine.cc:6452 +msgid "project file is defective" +msgstr "Le fichier projet est défectueux" + +#: f.combine.cc:6530 +msgid "Click image to select, drag image to move." +msgstr "Cliquer l'image pour sélectionner, glisser l'image pour déplacer" + +#: f.combine.cc:6563 +msgid "current image:" +msgstr "Image actuelle:" + +#: f.combine.cc:6585 f.combine.cc:6965 f.image.cc:1681 +msgid "Transparency" +msgstr "Transparence" + +#: f.combine.cc:6589 +msgid "Edge Blend Width" +msgstr "Dosage du Mélange des Bords" + +#: f.combine.cc:6755 +#, c-format +msgid "exceeded %d images" +msgstr "Excède %d images" + +#: f.combine.cc:6906 +msgid "Enter text, click/drag on image." +msgstr "Saisir du texte, cliquer et glisser sur l'image." + +#: f.combine.cc:6936 f.image.cc:1652 f.tools.cc:1113 +msgid "Text" +msgstr "Texte" + +#: f.combine.cc:6954 f.image.cc:1670 +msgid "text" +msgstr "texte" + +#: f.combine.cc:6955 f.image.cc:1671 +msgid "backing" +msgstr "Appui" + +#: f.combine.cc:6956 f.image.cc:1672 +msgid "outline" +msgstr "Contour" + +#: f.combine.cc:6957 f.image.cc:1673 +msgid "shadow" +msgstr "ombre" + +#: f.combine.cc:6959 f.image.cc:1675 f.menus.cc:61 f.menus.cc:122 +#: f.menus.cc:286 fotoxx.h:969 +msgid "Color" +msgstr "Couleur" + +#: f.combine.cc:6971 f.image.cc:1687 fotoxx.h:1039 +msgid "Width" +msgstr "Largeur" + +#: f.combine.cc:6984 f.image.cc:1700 +msgid "Text File:" +msgstr "Fichier texte:" + +#: f.combine.cc:7046 f.image.cc:1811 +msgid "select font" +msgstr "Sélectionner la police" + +#: f.combine.cc:7154 +#, c-format +msgid "exceeded %d text entries" +msgstr "Excède %d entrées de texte" #: f.effects.cc:44 msgid "Set color depth to 1-16 bits" msgstr "" -"Configurer la profondeur de \n" -"couleur de 1 à 16 bits." +"Définir la profondeur de \n" +"couleur de 1 à 16 bit(s)." #: f.effects.cc:54 msgid "Set Color Depth" -msgstr "Configurer la profondeur de couleur" +msgstr "Définir la profondeur de couleurs" #: f.effects.cc:187 msgid "Convert to Sketch" -msgstr "" +msgstr "Transformer en Esquisse" #: f.effects.cc:270 msgid "Clip Level" -msgstr "" +msgstr "Niveau d'Attache" #: f.effects.cc:274 msgid "Algorithm" -msgstr "" +msgstr "Algorithme" #: f.effects.cc:643 msgid "Simulate Drawing" @@ -619,63 +787,63 @@ #: f.effects.cc:656 msgid "outline threshold" -msgstr "Limite du contour" +msgstr "Seuil du contour" #: f.effects.cc:659 msgid "outline width" -msgstr "Largeur des contours" +msgstr "Épaisseur du contour" #: f.effects.cc:662 msgid "image brightness" -msgstr "luminosité de l'image" +msgstr "Luminosité de l'image" #: f.effects.cc:665 msgid "black/white" -msgstr "" +msgstr "Noir/Blanc" -#: f.effects.cc:983 f.menus.cc:241 +#: f.effects.cc:983 f.menus.cc:253 msgid "Graduated Blur" -msgstr "" +msgstr "Flou progressif" #: f.effects.cc:987 msgid "Contrast Limit" -msgstr "" +msgstr "Limite de contraste" #: f.effects.cc:990 msgid "Blur Radius" -msgstr "" +msgstr "Rayon du flou" #: f.effects.cc:1202 msgid "Simulate Embossing" -msgstr "Effet d'estampe" +msgstr "Estampage" #: f.effects.cc:1217 msgid "depth" msgstr "Profondeur" -#: f.effects.cc:1219 f.file.cc:987 +#: f.effects.cc:1219 f.file.cc:1031 msgid "color" msgstr "Couleur" #: f.effects.cc:1412 msgid "Simulate Tiles" -msgstr "Simuler des tuiles" +msgstr "Simuler une mosaïque" #: f.effects.cc:1416 msgid "tile size" -msgstr "Taille de la tuile" +msgstr "Taille du carreau" #: f.effects.cc:1419 msgid "tile gap" -msgstr "Espace entre les tuiles" +msgstr "Espace entre les carreaux" #: f.effects.cc:1422 msgid "3D depth" -msgstr "Profondeur de la 3D" +msgstr "Profondeur 3D " #: f.effects.cc:1644 msgid "Convert Image to Dots" -msgstr "Convertir l'image en points" +msgstr "Tramer l'image en points" #: f.effects.cc:1648 msgid "dot size" @@ -687,23 +855,23 @@ #: f.effects.cc:1867 msgid "color depth" -msgstr "Profondeur de couleur" +msgstr "Profondeur de couleurs" #: f.effects.cc:1871 msgid "patch area goal" -msgstr "Minimum de pixels dans la zone" +msgstr "Corriger la zone cible" #: f.effects.cc:1875 msgid "req. color match" -msgstr "Minimum de correspondance de couleur" +msgstr "Couleur correspondante requise" #: f.effects.cc:1879 msgid "borders" -msgstr "Contours" +msgstr "Bordures" -#: f.effects.cc:2461 f.menus.cc:246 +#: f.effects.cc:2461 f.menus.cc:258 msgid "False Colors" -msgstr "" +msgstr "Couleurs fausses" #: f.effects.cc:2468 msgid "Red: Green" @@ -711,69 +879,77 @@ #: f.effects.cc:2469 msgid "Green: Blue" -msgstr "Vert: Bleu" +msgstr "Vert: Bleu" #: f.effects.cc:2470 msgid "Blue: Red" -msgstr "Bleu: Rouge" +msgstr "Bleu: Rouge" -#: f.effects.cc:2669 f.menus.cc:247 +#: f.effects.cc:2669 f.menus.cc:259 msgid "Vignette" -msgstr "" +msgstr "Instantané" #: f.effects.cc:2698 msgid "center" -msgstr "Centre" +msgstr "Centrer" -#: f.effects.cc:2700 f.retouch.cc:2402 +#: f.effects.cc:2700 f.retouch.cc:2399 msgid "edge" -msgstr "Bord" +msgstr "bord" #: f.file.cc:243 msgid "no newly added files found" -msgstr "" +msgstr "Aucuns fichiers ajoutés dernièrement trouvés" -#: f.file.cc:275 +#: f.file.cc:307 msgid "no more images" -msgstr "" +msgstr "Plus d'images" -#: f.file.cc:343 f.menus.cc:136 f.menus.cc:457 +#: f.file.cc:347 f.menus.cc:151 f.menus.cc:468 msgid "Open RAW file (ufraw)" -msgstr "Ouvrir le fichier RAW (ufraw)" +msgstr "Ouvrir un fichier RAW (ufraw)" -#: f.file.cc:347 +#: f.file.cc:351 msgid "RAW type not registered in User Settings" -msgstr "Type RAW non enregistré dans les réglages utilisateur" +msgstr "Type RAW non répertorié dans les paramètres utilisateur" -#: f.file.cc:367 -msgid "Overwrite original file?" -msgstr "Ecraser le fichier original ?" +#: f.file.cc:401 +msgid "Save Image File" +msgstr "Enregistrer le Fichier Image" -#: f.file.cc:368 -msgid "Do not warn again" -msgstr "Ne plus avertir" +#: f.file.cc:411 +msgid "new version" +msgstr "Nouvelle version" -#: f.file.cc:383 -msgid "Warning" -msgstr "Avertissement" +#: f.file.cc:412 +msgid "new file name" +msgstr "Nouveau nom de fichier" -#: f.file.cc:495 -msgid "Save File" -msgstr "Enregistrer le fichier" +#: f.file.cc:413 +msgid "replace file" +msgstr "Remplacer le fichier" -#: f.file.cc:528 zfuncs.cc:9270 -msgid "quality" -msgstr "Qualité" +#: f.file.cc:419 +msgid "save as new file version" +msgstr "Enregistrer comme nouvelle version du fichier" -#: f.file.cc:530 +#: f.file.cc:420 f.file.cc:548 +msgid "save as new file name or type" +msgstr "Enregistrer sous un nouveau nom ou type de fichier" + +#: f.file.cc:421 +msgid "replace old file (OVERWRITE)" +msgstr "Remplacer l'ancien fichier (ÉCRASER)" + +#: f.file.cc:564 msgid "make current" -msgstr "Définir comme actuel" +msgstr "faire l’actuelle" -#: f.file.cc:625 +#: f.file.cc:657 msgid "jpeg quality must be 1-100" -msgstr "La qualité du JPEG doit être compris entre 1 et 100" +msgstr "La qualité JPEG doit être comprise entre 1 et 100" -#: f.file.cc:653 +#: f.file.cc:683 #, c-format msgid "" "Overwrite file? \n" @@ -782,1824 +958,1903 @@ "Écraser le fichier ? \n" " %s" -#: f.file.cc:799 f.menus.cc:140 +#: f.file.cc:843 f.menus.cc:153 msgid "Rename Image File" -msgstr "Renommer l'image" +msgstr "Renommer le fichier image" -#: f.file.cc:806 +#: f.file.cc:850 msgid "old name" msgstr "Ancien nom" -#: f.file.cc:807 +#: f.file.cc:851 msgid "new name" msgstr "Nouveau nom" -#: f.file.cc:816 +#: f.file.cc:860 msgid "previous name" -msgstr "Nom précédant" +msgstr "Nom précédent" -#: f.file.cc:817 +#: f.file.cc:861 msgid "add 1" -msgstr "Ajouter 1" +msgstr "Plus 1" -#: f.file.cc:895 f.file.cc:1248 +#: f.file.cc:939 f.file.cc:1292 msgid "target file already exists" -msgstr "le fichier de destination existe déjà" +msgstr "Le fichier de destination existe déjà" -#: f.file.cc:922 f.file.cc:1270 f.file.cc:1388 +#: f.file.cc:966 f.file.cc:1314 f.file.cc:1432 #, c-format msgid "" "delete failed: \n" " %s" msgstr "" -"Echec de la suppression: \n" -"%s" +"Échec de la suppression: \n" +" %s" -#: f.file.cc:971 +#: f.file.cc:1015 msgid "Create Blank Image" -msgstr "Créer une image vide" +msgstr "Créer une image vierge" -#: f.file.cc:973 +#: f.file.cc:1017 msgid "file name" -msgstr "Nom du fichier" +msgstr "nom du fichier" -#: f.file.cc:978 f.image.cc:470 +#: f.file.cc:1022 f.image.cc:479 msgid "width" msgstr "Largeur" -#: f.file.cc:981 f.image.cc:473 f.tools.cc:4088 +#: f.file.cc:1025 f.image.cc:482 f.tools.cc:4107 msgid "height" msgstr "Hauteur" -#: f.file.cc:1156 +#: f.file.cc:1200 msgid "Copy Image File" -msgstr "Copier l'image" +msgstr "Copier un fichier image" -#: f.file.cc:1158 +#: f.file.cc:1202 msgid "Move Image File" -msgstr "Déplacer l'image" +msgstr "Déplacer un fichier image" -#: f.file.cc:1164 f.file.cc:1343 f.file.cc:1464 +#: f.file.cc:1208 f.file.cc:1387 f.file.cc:1508 msgid "image file" -msgstr "Image" +msgstr "Fichier image" -#: f.file.cc:1169 +#: f.file.cc:1213 msgid "new location" msgstr "Nouvel emplacement" -#: f.file.cc:1203 f.tools.cc:4317 +#: f.file.cc:1247 f.tools.cc:4336 msgid "Select directory" -msgstr "Sélectionner un dossier" +msgstr "Sélectionner un répertoire" -#: f.file.cc:1233 +#: f.file.cc:1277 msgid "new location is not a directory" msgstr "Le nouvel emplacement n'est pas un répertoire" -#: f.file.cc:1307 +#: f.file.cc:1351 msgid "Delete Image File - CANNOT BE REVERSED" -msgstr "Supprimer l'image - NON REVERSIBLE" +msgstr "Supprimer le fichier image - ACTION IRRÉVERSIBLE" -#: f.file.cc:1308 f.file.cc:1430 +#: f.file.cc:1352 f.file.cc:1474 msgid "(automatic step to next image)" -msgstr "" +msgstr "(Passer automatiquement à l'image suivante)" -#: f.file.cc:1429 f.menus.cc:142 +#: f.file.cc:1473 f.menus.cc:155 msgid "Trash Image File" -msgstr "Mettre à la corbeille" +msgstr "Mettre le fichier image à la Corbeille" -#: f.file.cc:1494 +#: f.file.cc:1538 msgid "" "Linux standard trash does not work. \n" "Desktop trash folder will be created." msgstr "" -"La corbeille standard de Linux ne fonctionne pas. \n" -"Le dossier corbeille du bureau va être créé." +"La corbeille standard Linux n'est pas prise en charge. \n" +"Un dossier Corbeille sera créé." -#: f.file.cc:1497 +#: f.file.cc:1541 msgid "" "Linux and Desktop trash do not work. \n" "Permanently delete the image file?" msgstr "" -"La corbeille de Linux et du bureau ne fonctionnent pas. \n" -"Suppression permanente de l'image?" +"Linux et la Corbeille du bureau ne fonctionnent pas. \n" +"Supprimer définitivement le fichier image?" -#: f.file.cc:1527 +#: f.file.cc:1571 msgid "Move read-only file to trash?" -msgstr "Déplacer le fichier en lecture-seule vers la corbeille ?" +msgstr "Déplacer le fichier en lecture-seule vers la Corbeille?" -#: f.file.cc:1556 +#: f.file.cc:1600 #, c-format msgid "Cannot create trash folder: %s" -msgstr "Impossible de créer le dossier corbeille : %s" +msgstr "Impossible de créer le dossier Corbeille: %s" -#: f.file.cc:1569 zfuncs.cc:4211 +#: f.file.cc:1613 zfuncs.cc:4211 #, c-format msgid "error: %s" -msgstr "Erreur : %s" +msgstr "Erreur: %s" -#: f.file.cc:1588 +#: f.file.cc:1632 #, c-format msgid "delete failed: %s" -msgstr "Echec de la suppression: %s" +msgstr "Échec de la suppression: %s" -#: f.file.cc:2041 f.menus.cc:132 +#: f.file.cc:2086 f.menus.cc:147 msgid "Open Image File" -msgstr "Ouvrir une image" +msgstr "Ouvrir un fichier image" -#: f.file.cc:2059 +#: f.file.cc:2104 msgid "unknown file type" msgstr "Type de fichier inconnu" -#: f.file.cc:2341 +#: f.file.cc:2385 msgid "Unable to copy EXIF/IPTC data" -msgstr "Pas en mesure de copier les données EXIF/IPTC" +msgstr "Copie des données EXIF/IPTC impossible" -#: f.file.cc:2404 f.file.cc:2465 +#: f.file.cc:2448 f.file.cc:2509 #, c-format msgid "file not found: %s" -msgstr "Fichier non trouvé: %s" +msgstr "Fichier introuvable: %s" -#: f.file.cc:2409 f.file.cc:2470 +#: f.file.cc:2453 f.file.cc:2514 #, c-format msgid "file type not supported: %s" -msgstr "Type de fichier non supporté: %s" +msgstr "Type de fichier non pris en charge: %s" -#: f.file.cc:3982 f.menus.cc:390 +#: f.file.cc:4035 msgid "change directory" msgstr "Changer de répertoire" -#: f.file.cc:3990 f.menus.cc:391 +#: f.file.cc:4043 f.menus.cc:402 msgid "GoTo" -msgstr "" +msgstr "Aller à" -#: f.file.cc:4005 f.menus.cc:400 +#: f.file.cc:4058 f.menus.cc:405 msgid "Sort" -msgstr "" +msgstr "Trier" -#: f.file.cc:4036 f.file.cc:4360 f.menus.cc:398 +#: f.file.cc:4089 f.file.cc:4420 f.menus.cc:410 msgid "Row↑" -msgstr "Rang↑" +msgstr "Rangée↑" -#: f.file.cc:4048 f.file.cc:4361 f.menus.cc:399 +#: f.file.cc:4101 f.file.cc:4421 f.menus.cc:411 msgid "Row↓" -msgstr "Rang↓" +msgstr "Rangée↓" -#: f.file.cc:4060 f.file.cc:4363 f.menus.cc:394 +#: f.file.cc:4113 f.file.cc:4423 f.menus.cc:406 msgid "First" -msgstr "Premier" +msgstr "Première" -#: f.file.cc:4061 f.file.cc:4364 f.menus.cc:395 +#: f.file.cc:4114 f.file.cc:4424 f.menus.cc:407 msgid "Last" -msgstr "Dernier" +msgstr "Dernière" -#: f.file.cc:4062 f.file.cc:4358 f.file.cc:4365 f.menus.cc:396 +#: f.file.cc:4115 f.file.cc:4418 f.file.cc:4425 f.menus.cc:408 msgid "Page↑" msgstr "Page↑" -#: f.file.cc:4063 f.file.cc:4359 f.file.cc:4366 f.menus.cc:397 +#: f.file.cc:4116 f.file.cc:4419 f.file.cc:4426 f.menus.cc:409 msgid "Page↓" msgstr "Page↓" -#: f.file.cc:4114 f.tools.cc:940 +#: f.file.cc:4167 f.tools.cc:953 msgid "Choose top image directory" -msgstr "" +msgstr "Sélectionner le répertoire d'images racine" -#: f.file.cc:4120 f.file.cc:4134 +#: f.file.cc:4173 f.file.cc:4187 msgid "recent" -msgstr "" +msgstr "récents" -#: f.file.cc:4121 f.file.cc:4139 +#: f.file.cc:4174 f.file.cc:4192 msgid "newest" -msgstr "" +msgstr "derniers" -#: f.file.cc:4170 +#: f.file.cc:4223 msgid "Gallery Sort" -msgstr "" +msgstr "Trier la Galerie" -#: f.file.cc:4174 +#: f.file.cc:4227 msgid "File Name" -msgstr "" +msgstr "Nom du fichier" -#: f.file.cc:4175 +#: f.file.cc:4228 msgid "File Mod Date/Time" -msgstr "" +msgstr "Mode Date/Heure du fichier" -#: f.file.cc:4176 +#: f.file.cc:4229 msgid "Photo Date/Time (EXIF)" -msgstr "" +msgstr "Date/Heure de la photo (EXIF)" -#: f.file.cc:4178 +#: f.file.cc:4231 msgid "ascending" -msgstr "" +msgstr "Croissant" -#: f.file.cc:4179 +#: f.file.cc:4232 msgid "descending" -msgstr "" +msgstr "Decroissant" -#: f.file.cc:4352 f.file.cc:4353 f.file.cc:4355 +#: f.file.cc:4412 f.file.cc:4413 f.file.cc:4415 f.menus.cc:403 msgid "Zoom+" -msgstr "Grossissement+" +msgstr "Zoom+" -#: f.file.cc:4354 f.file.cc:4356 +#: f.file.cc:4414 f.file.cc:4416 f.menus.cc:404 msgid "Zoom-" -msgstr "Grossissement-" +msgstr "Zoom-" -#: f.file.cc:5192 fotoxx.h:1003 +#: f.file.cc:5253 fotoxx.h:1024 msgid "Select Files" msgstr "Sélectionner les fichiers" -#: f.file.cc:5668 fotoxx.h:935 +#: f.file.cc:5729 fotoxx.h:954 msgid "Add" msgstr "Ajouter" -#: f.file.cc:5668 fotoxx.h:995 +#: f.file.cc:5729 fotoxx.h:1016 msgid "Remove" -msgstr "Supprimer" +msgstr "Retirer" -#: f.file.cc:5670 +#: f.file.cc:5731 msgid "menu name" -msgstr "Nom du menu" +msgstr "nom du menu" -#: f.file.cc:5740 f.file.cc:5761 +#: f.file.cc:5801 f.file.cc:5822 msgid "Restart Fotoxx to update plugin menu" -msgstr "Redémarrer Fotoxx pour mise à jour du menu des greffons" +msgstr "Relancer Fotoxx pour mettre à jour le menu des greffons" -#: f.file.cc:5803 -msgid "no plugin command" -msgstr "" +#: f.file.cc:5864 +msgid "Plugins menu is empty" +msgstr "Le menu des greffons est vide" -#: f.file.cc:5831 +#: f.file.cc:5892 msgid "plugin failed" -msgstr "" +msgstr "Échec du greffon" -#: f.image.cc:47 -msgid "Turn Image" -msgstr "" +#: f.image.cc:50 +msgid "Rotate Image 90º" +msgstr "Pivoter l'image à 90º" + +#: f.image.cc:54 +msgid "rotate -90º" +msgstr "Rotation -90º" -#: f.image.cc:114 +#: f.image.cc:55 +msgid "rotate +90º" +msgstr "Rotation +90º" + +#: f.image.cc:123 msgid "Drag right edge with mouse" -msgstr "" +msgstr "Glisser le bord droit avec la souris" -#: f.image.cc:144 +#: f.image.cc:153 msgid "Rotate Image" msgstr "Pivoter l'image" -#: f.image.cc:148 zfuncs.cc:9605 +#: f.image.cc:157 zfuncs.cc:9679 msgid "left" msgstr "Gauche" -#: f.image.cc:151 zfuncs.cc:9606 +#: f.image.cc:160 zfuncs.cc:9680 msgid "right" -msgstr "Droite" +msgstr "Droit" -#: f.image.cc:157 +#: f.image.cc:166 msgid "degrees" -msgstr "Degrés" +msgstr "degrés" -#: f.image.cc:442 +#: f.image.cc:451 msgid "Drag middle to move, drag corners to resize." msgstr "" -"Glissez le centre pour déplacer, glissez les coins pour redimensionner." +"Glisser le centre pour déplacer, glisser les coins pour redimensionner." -#: f.image.cc:465 f.menus.cc:196 f.menus.cc:445 +#: f.image.cc:474 f.menus.cc:208 f.menus.cc:456 msgid "Trim/Crop" -msgstr "" +msgstr "Rogner/recadrer" -#: f.image.cc:476 f.image.cc:756 +#: f.image.cc:485 f.image.cc:765 msgid "ratio" -msgstr "Ratio" +msgstr "Proportions" -#: f.image.cc:480 +#: f.image.cc:489 msgid "portrait" msgstr "Portrait" -#: f.image.cc:481 +#: f.image.cc:490 msgid "landscape" msgstr "Paysage" -#: f.image.cc:482 +#: f.image.cc:491 msgid "Lock Ratio" -msgstr "Verrouiller le ratio" +msgstr "Verrouiller les proportions" -#: f.image.cc:486 +#: f.image.cc:495 msgid "customize" msgstr "Personnaliser" -#: f.image.cc:748 +#: f.image.cc:757 msgid "Trim Buttons" -msgstr "Bouton de recadrage" +msgstr "Boutons de rognage" -#: f.image.cc:755 +#: f.image.cc:764 msgid "label" -msgstr "Etiquette" +msgstr "Étiquette" -#: f.image.cc:1277 +#: f.image.cc:1286 msgid "Lock aspect ratio" msgstr "Verrouiller les proportions" -#: f.image.cc:1298 +#: f.image.cc:1307 msgid "Resize Image" msgstr "Redimensionner l'image" -#: f.image.cc:1480 f.menus.cc:199 +#: f.image.cc:1491 f.menus.cc:211 msgid "Flip" -msgstr "" +msgstr "Miroir" -#: f.image.cc:1604 +#: f.image.cc:1610 msgid "Enter text, click/drag on image, right click to remove" msgstr "" -"Saisissez du texte, cliquez et glissez sur l'image, un clic-droit supprime " -"le texte" - -#: f.image.cc:1631 -msgid "Write Text on Image" -msgstr "Ecrire du texte sur l'image" - -#: f.image.cc:1638 f.tools.cc:1100 -msgid "Text" -msgstr "Texte" +"Saisir du texte, cliquer et glisser sur l'image, clic-droit pour retirer le " +"texte." #: f.image.cc:1645 -msgid "Size" -msgstr "Taille" - -#: f.image.cc:1656 -msgid "text" -msgstr "Texte" - -#: f.image.cc:1657 -msgid "backing" -msgstr "Support" - -#: f.image.cc:1658 -msgid "outline" -msgstr "Contour" - -#: f.image.cc:1659 -msgid "shadow" -msgstr "" - -#: f.image.cc:1661 f.menus.cc:61 f.menus.cc:107 f.menus.cc:273 fotoxx.h:949 -msgid "Color" -msgstr "Couleur" - -#: f.image.cc:1667 -msgid "Transparency" -msgstr "Transparence" - -#: f.image.cc:1673 fotoxx.h:1017 -msgid "Width" -msgstr "Largeur" - -#: f.image.cc:1679 -msgid "Angle" -msgstr "Angle" - -#: f.image.cc:1686 -msgid "Text File:" -msgstr "Fichier texte :" +msgid "Write Text on Image" +msgstr "Écrire du texte sur l'image" -#: f.image.cc:1764 -msgid "select font" -msgstr "Sélectionner la police" +#: f.image.cc:2312 +msgid "text file is defective" +msgstr "Le fichier texte est défectueux" -#: f.menus.cc:54 f.menus.cc:100 +#: f.menus.cc:54 f.menus.cc:115 msgid "File" msgstr "Fichier" -#: f.menus.cc:55 f.menus.cc:101 +#: f.menus.cc:55 f.menus.cc:116 msgid "Tools" msgstr "Outils" -#: f.menus.cc:56 f.menus.cc:102 +#: f.menus.cc:56 f.menus.cc:117 msgid "Metadata" msgstr "Métadonnées" -#: f.menus.cc:57 f.menus.cc:103 +#: f.menus.cc:57 f.menus.cc:118 msgid "Areas" msgstr "Zones" -#: f.menus.cc:59 f.menus.cc:105 +#: f.menus.cc:59 f.menus.cc:120 msgid "Retouch" -msgstr "Retoucher 1" +msgstr "Retoucher" -#: f.menus.cc:60 f.menus.cc:106 +#: f.menus.cc:60 f.menus.cc:121 msgid "Repair" -msgstr "" +msgstr "Réparer" -#: f.menus.cc:62 f.menus.cc:108 +#: f.menus.cc:62 f.menus.cc:123 msgid "Bend" -msgstr "" +msgstr "Torsion" -#: f.menus.cc:63 f.menus.cc:109 +#: f.menus.cc:63 f.menus.cc:124 msgid "Effects" -msgstr "" +msgstr "Effets" -#: f.menus.cc:64 f.menus.cc:110 +#: f.menus.cc:64 f.menus.cc:125 msgid "Combine" msgstr "Combiner" -#: f.menus.cc:65 f.menus.cc:111 +#: f.menus.cc:65 f.menus.cc:126 msgid "Plugins" msgstr "Greffons" -#: f.menus.cc:66 f.menus.cc:112 fotoxx-13.08.cc:3631 fotoxx.h:967 +#: f.menus.cc:66 f.menus.cc:127 fotoxx-13.09.cc:3664 fotoxx.h:988 msgid "Help" msgstr "Aide" -#: f.menus.cc:99 f.menus.cc:271 +#: f.menus.cc:99 f.menus.cc:284 msgid "Favorites Menu" -msgstr "Menu des favoris" +msgstr "Menu des Favoris" -#: f.menus.cc:112 -msgid "User Guide etc." +#: f.menus.cc:100 +msgid "Open, Save, Trash, Rename, Print" +msgstr "Ouvrir, Enregistrer, Mettre à la corbeille, Renommer, Imprimer" + +#: f.menus.cc:101 +msgid "Synch Files, Settings, Collections, Batch Funcs ..." +msgstr "" +"Synchronisation des Fichiers, Paramètres, Collections, Fonctions de " +"traitement par lots..." + +#: f.menus.cc:102 +msgid "Captions, Tags, Ratings, Geotags, Search ... " msgstr "" +"Légendes, Balises, Évaluations, Balises de géolocalisation, Recherche..." + +#: f.menus.cc:103 +msgid "Select image areas to edit, copy and paste" +msgstr "Sélectionner les zones de l'image à éditer, copier et coller" + +#: f.menus.cc:104 +msgid "Rotate, Trim/Crop, Resize, Add Text" +msgstr "Pivoter, Rogner/Recadrer, Redimensionner, Ajouter du Texte" + +#: f.menus.cc:105 +msgid "Improve brightness, contrast, color ..." +msgstr "Améliorer luminosité, contraste et couleur..." + +#: f.menus.cc:106 +msgid "Sharpen, Clean, Red-eyes, Paint, Clone ..." +msgstr "Améliorer la netteté, Nettoyer, Yeux rouges, Peinture, Duplication..." -#: f.menus.cc:131 +#: f.menus.cc:107 +msgid "White Balance, Color Profile, Color Matching" +msgstr "Balance des Blancs, Profile de Couleurs, Couleurs Correspondantes" + +#: f.menus.cc:108 +msgid "Fix Perspective, Bend/Warp image ..." +msgstr "Corriger la Perspective, Torsion/Déformation d'une image..." + +#: f.menus.cc:109 +msgid "Special Effects, Arty Transforms" +msgstr "Effets spéciaux, Transformations Style Artistique" + +#: f.menus.cc:110 +msgid "HDR, HDF, Panorama, Stack, Mashup" +msgstr "HDR, HDF, Panorama, Empilage, Pêle-Mêle" + +#: f.menus.cc:111 +msgid "Use other image editors within Fotoxx" +msgstr "Utiliser d'autres éditeurs d'images avec Fotoxx" + +#: f.menus.cc:112 +msgid "Quick Start, User Guide, Recent Changes ..." +msgstr "Démarrage rapide, Manuel de l’Utilisateur, Modifications récentes..." + +#: f.menus.cc:146 msgid "New Window" msgstr "Nouvelle fenêtre" -#: f.menus.cc:131 +#: f.menus.cc:146 msgid "Open another window" -msgstr "Ouvrir une autre fenêtre" +msgstr "Ouvrir une nouvelle fenêtre" -#: f.menus.cc:132 f.menus.cc:278 +#: f.menus.cc:147 f.menus.cc:291 msgid "Open a new image file" -msgstr "Ouvrir une nouvelle image" +msgstr "Ouvrir un nouveau fichier image" -#: f.menus.cc:133 +#: f.menus.cc:148 msgid "Open Previous File" -msgstr "Afficher l'image précédente" +msgstr "Ouvrir l'image précédente" -#: f.menus.cc:133 +#: f.menus.cc:148 msgid "Open the previously seen file" -msgstr "Ouvrir le fichier précédemment vu" +msgstr "Ouvrir l'image visionnée précédemment" -#: f.menus.cc:134 +#: f.menus.cc:149 msgid "Open a recently seen file" -msgstr "Ouvrir un fichier récemment vu" +msgstr "Ouvrir un fichier récemment visionné" -#: f.menus.cc:134 +#: f.menus.cc:149 msgid "Recently Seen Images" -msgstr "" +msgstr "Images récemment visionnées" -#: f.menus.cc:135 +#: f.menus.cc:150 msgid "Newly Added Images" -msgstr "" +msgstr "Dernières images ajoutées" -#: f.menus.cc:135 +#: f.menus.cc:150 msgid "Open a newly added file" -msgstr "" +msgstr "Ouvrir un fichier ajouté dernièrement" -#: f.menus.cc:136 +#: f.menus.cc:151 msgid "Open and edit a camera RAW file" -msgstr "Ouvrir et éditer un fichier caméra RAW" +msgstr "Ouvrir et éditer un fichier image RAW" -#: f.menus.cc:137 -msgid "Save to Same File" -msgstr "Enregistrer" +#: f.menus.cc:152 f.menus.cc:294 +msgid "Save modified image file to disk" +msgstr "Enregistrer l'image modifiée sur le disque" -#: f.menus.cc:137 -msgid "Save to the same file (replace)" -msgstr "Sauvegarder vers le même fichier (remplace)" - -#: f.menus.cc:138 -msgid "Save to New Version" -msgstr "Sauvegarder vers une nouvelle version" - -#: f.menus.cc:138 -msgid "Save to a new (next) version" -msgstr "Sauvegarder vers une nouvelle (suivante) version" - -#: f.menus.cc:139 -msgid "Save to New File" -msgstr "Enregistrer sous" - -#: f.menus.cc:139 -msgid "Save to a new file name" -msgstr "Sauvegarder vers un nouveau fichier" +#: f.menus.cc:152 +msgid "Save to Disk" +msgstr "Enregistrer sur le disque" -#: f.menus.cc:140 +#: f.menus.cc:153 msgid "Change the image file name" -msgstr "Renommer l'image" +msgstr "Changer le nom du fichier image" -#: f.menus.cc:141 +#: f.menus.cc:154 msgid "Create a blank image" -msgstr "Créer une image blanche" +msgstr "Créer une image vierge" -#: f.menus.cc:141 +#: f.menus.cc:154 msgid "New Blank Image" -msgstr "Nouvelle image blanche" +msgstr "Nouvelle image vierge" -#: f.menus.cc:142 f.menus.cc:284 +#: f.menus.cc:155 f.menus.cc:295 msgid "Move image file to Trash" -msgstr "Déplacer l'image dans la corbeille" +msgstr "Déplacer l'image vers la Corbeille" -#: f.menus.cc:143 +#: f.menus.cc:156 msgid "Print Image" -msgstr "Imprimer l'image" +msgstr "Imprimer une image" -#: f.menus.cc:143 +#: f.menus.cc:156 msgid "Print the current image" msgstr "Imprimer l'image actuelle" -#: f.menus.cc:144 +#: f.menus.cc:157 msgid "Quit Fotoxx" msgstr "Quitter Fotoxx" -#: f.menus.cc:146 +#: f.menus.cc:159 msgid "Index new files and make thumbnails" -msgstr "Indexer les nouveaux fichiers et créer les vignettes" +msgstr "Indexer les nouveaux fichiers et créer les miniatures" -#: f.menus.cc:146 f.tools.cc:182 f.tools.cc:364 +#: f.menus.cc:159 f.tools.cc:182 f.tools.cc:364 msgid "Synchronize Files" msgstr "Synchroniser les fichiers" -#: f.menus.cc:147 +#: f.menus.cc:160 msgid "Change user preferences" -msgstr "Changer les préférences utilisateur" +msgstr "Modifier les préférences de l'utilisateur" -#: f.menus.cc:147 +#: f.menus.cc:160 msgid "User Settings" -msgstr "Réglages utilisateur" +msgstr "Paramètres utilisateur" -#: f.menus.cc:148 +#: f.menus.cc:161 msgid "Change Keyboard Shortcut Keys" -msgstr "" +msgstr "Modifier les touches de Raccourcis Clavier" -#: f.menus.cc:148 +#: f.menus.cc:161 msgid "Keyboard Shortcuts" -msgstr "Raccourcis clavier" +msgstr "Raccourcis Clavier" -#: f.menus.cc:149 f.tools.cc:2179 +#: f.menus.cc:162 f.tools.cc:2190 msgid "Manage Collections" -msgstr "Gérer les collections" +msgstr "Gestion des collections" -#: f.menus.cc:149 +#: f.menus.cc:162 msgid "Organize images into collections" -msgstr "Organiser les images en collection" +msgstr "Organiser les images en collections" -#: f.menus.cc:150 +#: f.menus.cc:163 msgid "Convert for a new top directory" msgstr "Convertir pour un nouveau répertoire racine" -#: f.menus.cc:150 +#: f.menus.cc:163 msgid "Move Collections" msgstr "Déplacer les collections" -#: f.menus.cc:151 f.tools.cc:2778 +#: f.menus.cc:164 f.tools.cc:2797 msgid "Slide Show" msgstr "Diaporama" -#: f.menus.cc:151 +#: f.menus.cc:164 msgid "Start a slide show" msgstr "Démarrer un diaporama" -#: f.menus.cc:152 f.tools.cc:3863 +#: f.menus.cc:165 f.tools.cc:3882 msgid "Batch Rename" -msgstr "Renommer par lot" +msgstr "Renommer par lots" -#: f.menus.cc:152 +#: f.menus.cc:165 msgid "Rename multiple image files" -msgstr "Renommer plusieurs fichiers image" +msgstr "Renommer des fichiers image par lots" -#: f.menus.cc:153 f.tools.cc:4078 +#: f.menus.cc:166 f.tools.cc:4097 msgid "Batch Convert/Resize/Move" -msgstr "Convertir/redimmensionner/déplacer par lot" +msgstr "Convertir/Redimensionner/Déplacer par lots" -#: f.menus.cc:153 +#: f.menus.cc:166 msgid "Convert resize, move multiple files" -msgstr "Convertir, redimensionner, déplacer des fichiers" +msgstr "Convertir, redimensionner, déplacer des fichiers par lots" -#: f.menus.cc:154 f.tools.cc:4416 +#: f.menus.cc:167 f.tools.cc:4435 msgid "Batch Convert RAW Files" -msgstr "Convertir des fichiers RAW par lot" +msgstr "Convertir des fichiers RAW par lots" -#: f.menus.cc:154 +#: f.menus.cc:167 msgid "Convert multiple camera RAW files" -msgstr "Convertir plusieurs fichiers RAW de caméra" +msgstr "Convertir plusieurs fichiers RAW d'appareil photo" -#: f.menus.cc:155 f.tools.cc:4795 +#: f.menus.cc:168 f.tools.cc:4814 msgid "Brightness Distribution" -msgstr "Graphe de luminosité" +msgstr "Répartition de la luminosité" -#: f.menus.cc:155 +#: f.menus.cc:168 msgid "Show a brightness distribution graph" -msgstr "Afficher un graphique de distribution de la luminosité" +msgstr "Montrer un graphique de répartition de la luminosité" -#: f.menus.cc:156 f.menus.cc:455 f.tools.cc:4990 +#: f.menus.cc:169 f.menus.cc:466 f.tools.cc:5009 msgid "Grid Lines" -msgstr "Grille" +msgstr "Guides de la grille" -#: f.menus.cc:156 +#: f.menus.cc:169 msgid "Show or revise grid lines" -msgstr "Montrer ou revoir les grilles" +msgstr "Montrer ou régler les guides de la grille" -#: f.menus.cc:157 f.tools.cc:5166 +#: f.menus.cc:170 f.tools.cc:5185 msgid "Show RGB" -msgstr "Afficher les couleurs RVB" +msgstr "Montrer les couleurs RVB" -#: f.menus.cc:157 +#: f.menus.cc:170 msgid "Show RGB colors at mouse click" -msgstr "Afficher les couleurs RVB sur un clic de souris" +msgstr "Montrer les couleurs RGB au clic de souris" -#: f.menus.cc:158 +#: f.menus.cc:171 msgid "Chart to adjust monitor color" -msgstr "Graphique d'ajustement de la couleur du moniteur" +msgstr "Diagramme d'ajustement de la couleur de l'écran" -#: f.menus.cc:158 +#: f.menus.cc:171 msgid "Monitor Color" -msgstr "Mire des couleurs" +msgstr "Couleurs de l'écran" -#: f.menus.cc:159 +#: f.menus.cc:172 msgid "Chart to adjust monitor gamma" -msgstr "Graphique d'ajustement du gamma du moniteur" +msgstr "Diagramme d'ajustement du gamma de l'écran" -#: f.menus.cc:159 f.tools.cc:5490 +#: f.menus.cc:172 f.tools.cc:5509 msgid "Monitor Gamma" -msgstr "Moniteur Gamma" +msgstr "Gamma de l'écran" -#: f.menus.cc:160 +#: f.menus.cc:173 msgid "Change Language" msgstr "Changer de langue" -#: f.menus.cc:160 +#: f.menus.cc:173 msgid "Change the GUI language" -msgstr "Changer la langue" +msgstr "Changer la langue de l'interface" -#: f.menus.cc:161 +#: f.menus.cc:174 msgid "Missing Translations" -msgstr "" +msgstr "Traductions manquantes" -#: f.menus.cc:161 +#: f.menus.cc:174 msgid "Report missing translations" -msgstr "" +msgstr "Faire un rapport des traductions manquantes" -#: f.menus.cc:162 +#: f.menus.cc:175 msgid "Edit Translations" -msgstr "Editer les traductions" +msgstr "Éditer les Traductions" -#: f.menus.cc:162 +#: f.menus.cc:175 msgid "Edit translations while using Fotoxx" -msgstr "Editer les traductions tout en utilisant Fotoxx" +msgstr "Éditer les traductions lors de l'utilisation de Fotoxx" -#: f.menus.cc:163 +#: f.menus.cc:176 msgid "Create a Gnome menu and launcher" -msgstr "Créer un menu Gnome et un lanceur" +msgstr "Créer menu et lanceur Gnome" -#: f.menus.cc:163 +#: f.menus.cc:176 msgid "Menu and Launcher" -msgstr "Menu et lanceur" +msgstr "Menu et Lanceur" -#: f.menus.cc:164 +#: f.menus.cc:177 msgid "Burn Images to CD/DVD" -msgstr "Graver les images vers un CD / DVD" +msgstr "Graver des images sur un CD/DVD" -#: f.menus.cc:164 +#: f.menus.cc:177 msgid "Burn selected image files to CD or DVD" -msgstr "Graver l'image sélectionnée sur un CD/DVD" +msgstr "Graver les fichiers images sélectionnés sur un CD/DVD" -#: f.menus.cc:165 +#: f.menus.cc:178 msgid "Memory and CPU (to terminal/logfile)" -msgstr "" +msgstr "Mémoire et CPU (vers terminal/fichier-journal)" -#: f.menus.cc:165 +#: f.menus.cc:178 msgid "Resources" msgstr "Ressources" -#: f.menus.cc:167 -msgid "Edit Caption/Comments" -msgstr "Editer les légendes/commentaires" - -#: f.menus.cc:167 -msgid "Edit image caption or comment" -msgstr "Editer les légendes ou commentaires de l'image" - -#: f.menus.cc:168 f.meta.cc:165 f.meta.cc:1728 +#: f.menus.cc:180 f.meta.cc:110 f.meta.cc:1897 msgid "Edit Metadata" -msgstr "Editer les métadonnées" +msgstr "Éditer les métadonnées" -#: f.menus.cc:168 -msgid "Edit image date/rating/tags" -msgstr "Editer la date/le classement/les étiquettes de l'image" +#: f.menus.cc:180 +msgid "Edit image tags/caption/rating ..." +msgstr "Éditer balises/légende/évaluation de l'image..." -#: f.menus.cc:169 +#: f.menus.cc:181 msgid "Add/remove tags for multiple images" -msgstr "" +msgstr "Ajouter/Enlever les balises de plusieurs images" -#: f.menus.cc:169 -msgid "Batch Tags" -msgstr "" +#: f.menus.cc:181 f.meta.cc:1552 +msgid "Batch Add/Remove Tags" +msgstr "Ajouter/Retirer des balises par lots" -#: f.menus.cc:170 +#: f.menus.cc:182 msgid "List a few key metadata items" -msgstr "Lister quelques clés d'éléments de métadonnées" +msgstr "Lister quelques éléments de mots-clés de métadonnées" -#: f.menus.cc:170 +#: f.menus.cc:182 msgid "View Metadata (short)" -msgstr "Voir les métadonnées (court)" +msgstr "Afficher les Métadonnées (résumé)" -#: f.menus.cc:171 +#: f.menus.cc:183 msgid "List all metadata items" -msgstr "Lister toutes les éléments de métadonnées" +msgstr "Lister tous les éléments des métadonnées" -#: f.menus.cc:171 +#: f.menus.cc:183 msgid "View Metadata (long)" -msgstr "Voir les métadonnées (long)" +msgstr "Informations complètes" -#: f.menus.cc:172 +#: f.menus.cc:184 msgid "Edit Any Metadata" -msgstr "Editer les métadonnées" +msgstr "Éditer les métadonnées" -#: f.menus.cc:172 +#: f.menus.cc:184 msgid "Edit any image metadata" -msgstr "Editer les métadonnées des images" +msgstr "Éditer n'importe quelle métadonnée de l'image" -#: f.menus.cc:173 f.meta.cc:1820 +#: f.menus.cc:185 f.meta.cc:1989 msgid "Delete Metadata" -msgstr "Effacer les métadonnées" +msgstr "Supprimer les métadonnées" -#: f.menus.cc:173 +#: f.menus.cc:185 msgid "Remove all metadata from an image" -msgstr "Supprimer toutes les métadonnées d'une image" +msgstr "Enlever toutes les métadonnées d'une image" -#: f.menus.cc:174 +#: f.menus.cc:186 msgid "Download Geolocations" -msgstr "Télécharger les géolocalisations" +msgstr "Télécharger les Géolocalisations" -#: f.menus.cc:174 +#: f.menus.cc:186 msgid "Download initial geolocation database" -msgstr "Télécharger les métadonnées de géolocalisation initiales" +msgstr "Télécharger la base de données initiale des géolocalisations" -#: f.menus.cc:176 f.meta.cc:2713 +#: f.menus.cc:188 f.meta.cc:2892 msgid "Edit Geotags" -msgstr "Editer les étiquettes de géolocalisation" +msgstr "Éditer les balises de géolocalisation" -#: f.menus.cc:176 -msgid "Edit image geotags" -msgstr "Editer les étiquettes de géolocalisation de l'image" +#: f.menus.cc:188 +msgid "Edit image location and geotags" +msgstr "Éditer le lieu et les balises de géolocalisation de l'image" -#: f.menus.cc:177 +#: f.menus.cc:189 msgid "Add geotags to multiple images" -msgstr "Ajouter des étiquettes de géolocalisation à de multiples images" +msgstr "Ajouter des balises de géolocalisation à plusieurs images" -#: f.menus.cc:177 f.meta.cc:2905 +#: f.menus.cc:189 f.meta.cc:3084 msgid "Batch Add Geotags" -msgstr "Ajout d'étiquettes de géolocalisation par lot" +msgstr "Ajouter des balises de géolocalisation par lots" -#: f.menus.cc:178 +#: f.menus.cc:190 msgid "Find all images for a location [date]" -msgstr "Trouver toutes les images pour un emplacement [date]" +msgstr "Rechercher toutes les images pour un lieu géographique [date]" -#: f.menus.cc:178 +#: f.menus.cc:190 msgid "Images by Location/Date" -msgstr "Images par emplacement/date" +msgstr "Images par Lieu géographique/Date" -#: f.menus.cc:179 +#: f.menus.cc:191 msgid "Find images by clicking a world map" -msgstr "Trouver des images en cliquant sur une mappemonde" +msgstr "Rechercher des images en cliquant sur une mappemonde" -#: f.menus.cc:179 +#: f.menus.cc:191 msgid "Images by Map Location" -msgstr "Images par emplacement sur la carte" +msgstr "Images par Lieu sur la Mappemonde" -#: f.menus.cc:180 +#: f.menus.cc:192 msgid "Find images meeting select criteria" -msgstr "Trouver les images correspondantes au critère sélectionné" +msgstr "Rechercher les images correspondant au critère de sélection" -#: f.menus.cc:180 +#: f.menus.cc:192 msgid "Search Images" msgstr "Rechercher des images" -#: f.menus.cc:182 fotoxx.h:1002 +#: f.menus.cc:194 fotoxx.h:1023 msgid "Select" -msgstr "Sélectionner" +msgstr "Sélection" -#: f.menus.cc:182 +#: f.menus.cc:194 msgid "Select object or area for editing" -msgstr "Sélectionner un objet ou une zone pour édition" +msgstr "Sélectionner un objet ou une zone de travail" -#: f.menus.cc:183 fotoxx.h:1004 +#: f.menus.cc:195 fotoxx.h:1025 msgid "Show" -msgstr "Afficher" +msgstr "Montrer" -#: f.menus.cc:183 +#: f.menus.cc:195 msgid "Show (outline) existing area" -msgstr "Montrer (les contours) de la présente zone" +msgstr "Montrer la zone existante (contours)" -#: f.menus.cc:184 fotoxx.h:969 +#: f.menus.cc:196 fotoxx.h:990 msgid "Hide" -msgstr "Cacher" +msgstr "Masquer" -#: f.menus.cc:184 +#: f.menus.cc:196 msgid "Hide existing area" -msgstr "Cacher la présente zone" +msgstr "Masquer la zone existante" -#: f.menus.cc:185 fotoxx.h:959 +#: f.menus.cc:197 fotoxx.h:979 msgid "Enable" msgstr "Activer" -#: f.menus.cc:185 +#: f.menus.cc:197 msgid "Enable area for editing" -msgstr "Activer la zone pour édition" +msgstr "Activer la zone de travail" -#: f.menus.cc:186 fotoxx.h:956 +#: f.menus.cc:198 fotoxx.h:976 msgid "Disable" msgstr "Désactiver" -#: f.menus.cc:186 +#: f.menus.cc:198 msgid "Disable area for editing" -msgstr "Désactiver la zone pour édition" +msgstr "Désactiver la zone de travail" -#: f.menus.cc:187 fotoxx.h:972 +#: f.menus.cc:199 fotoxx.h:993 msgid "Invert" msgstr "Inverser" -#: f.menus.cc:187 +#: f.menus.cc:199 msgid "Reverse existing area" -msgstr "Inverser la zone existente" +msgstr "Inverser la zone existante" -#: f.menus.cc:188 +#: f.menus.cc:200 msgid "Erase existing area" -msgstr "Effacer la présente zone" +msgstr "Effacer la zone existante" -#: f.menus.cc:188 fotoxx.h:1013 +#: f.menus.cc:200 fotoxx.h:1035 msgid "Unselect" -msgstr "Désélectionner" +msgstr "Dé-sélectionner" -#: f.menus.cc:189 fotoxx.h:951 +#: f.menus.cc:201 fotoxx.h:971 msgid "Copy" msgstr "Copier" -#: f.menus.cc:189 +#: f.menus.cc:201 msgid "Copy an area for later pasting" -msgstr "Copier une zone pour collage ultérieur" +msgstr "Copier une zone pour un collage ultérieur" -#: f.menus.cc:190 fotoxx.h:984 +#: f.menus.cc:202 fotoxx.h:1005 msgid "Paste" msgstr "Coller" -#: f.menus.cc:190 +#: f.menus.cc:202 msgid "Paste an area into the current image" msgstr "Coller une zone dans l'image actuelle" -#: f.menus.cc:191 +#: f.menus.cc:203 msgid "Open a file with a saved area" -msgstr "Ouvrir un fichier avec une zone sauvegardée" +msgstr "Ouvrir un fichier avec une zone enregistrée" -#: f.menus.cc:192 f.menus.cc:281 fotoxx.h:999 +#: f.menus.cc:204 f.menus.cc:294 fotoxx.h:1020 msgid "Save" -msgstr "Enreg." +msgstr "Enregistrer" -#: f.menus.cc:192 +#: f.menus.cc:204 msgid "Save an area to a file" -msgstr "Sauvegarder une zone dans un fichier" +msgstr "Enregistrer une zone dans un fichier" -#: f.menus.cc:194 +#: f.menus.cc:206 msgid "Rotate 90 degrees" -msgstr "" +msgstr "Pivoter de 90 degrés" -#: f.menus.cc:194 f.menus.cc:447 -msgid "Turn" -msgstr "" +#: f.menus.cc:206 f.menus.cc:458 +msgid "Rotate 90º" +msgstr "Pivoter 90°" -#: f.menus.cc:195 fotoxx.h:998 +#: f.menus.cc:207 fotoxx.h:1019 msgid "Rotate" -msgstr "Rotation" +msgstr "Pivoter" -#: f.menus.cc:195 +#: f.menus.cc:207 msgid "Rotate by any angle" -msgstr "" +msgstr "Pivoter suivant un angle quelconque" -#: f.menus.cc:196 +#: f.menus.cc:208 msgid "Cut off unwanted margins" -msgstr "Tailler les marges non voulues" +msgstr "Couper les marges superflues" -#: f.menus.cc:197 +#: f.menus.cc:209 msgid "Auto-Trim" -msgstr "" +msgstr "Rognage automatique" -#: f.menus.cc:197 +#: f.menus.cc:209 msgid "Remove margins from warp, panorama, etc." -msgstr "Supprimer les marges des déformations, panorama, etc." +msgstr "Supprimer les marges d'une déformation, d'une image panoramique, etc" -#: f.menus.cc:198 +#: f.menus.cc:210 msgid "Change pixel dimensions" -msgstr "Changer les dimensions des pixels" +msgstr "Changer la dimension des pixels" -#: f.menus.cc:199 +#: f.menus.cc:211 msgid "Mirror image horizontally or vertically" -msgstr "Rotation verticale ou horizontale de l'image" +msgstr "Miroir horizontal ou vertical de l'image" -#: f.menus.cc:200 +#: f.menus.cc:212 msgid "Add Text" -msgstr "" +msgstr "Ajouter du texte" -#: f.menus.cc:200 +#: f.menus.cc:212 msgid "Write text on image" -msgstr "Ecrire du texte sur l'image" +msgstr "Écrire du texte sur l'image" -#: f.menus.cc:202 +#: f.menus.cc:214 msgid "Fast auto enhance that may work OK" -msgstr "Amélioration rapide possible" +msgstr "" +"Amélioration automatique rapide donnant généralement des résultats " +"satisfaisants" -#: f.menus.cc:202 f.menus.cc:448 +#: f.menus.cc:214 f.menus.cc:459 msgid "Voodoo Enhance" msgstr "Amélioration Voodoo" -#: f.menus.cc:203 +#: f.menus.cc:215 msgid "Adjust brightness, contrast, color" -msgstr "Ajuster la luminosité, le contraste, la couleur" +msgstr "Ajuster luminosité, contraste et couleur" -#: f.menus.cc:203 f.menus.cc:449 -msgid "Brightness/Color" -msgstr "Luminosité et couleur" +#: f.menus.cc:215 f.retouch.cc:211 +msgid "Brightness/Contrast/Color" +msgstr "Luminosité/Contraste/Couleur" -#: f.menus.cc:204 +#: f.menus.cc:216 msgid "Adjust contrast using a gamma curve" -msgstr "Ajuster le contraste en utilisant une courbe gamma" +msgstr "Ajuster le contraste au moyen d'une courbe gamma" -#: f.menus.cc:204 f.menus.cc:450 +#: f.menus.cc:216 f.menus.cc:461 msgid "Gamma Curves" msgstr "Courbes Gamma" -#: f.menus.cc:205 +#: f.menus.cc:217 msgid "Add local contrast, enhance details" -msgstr "Ajouter localement du contraste, améliorer les détails" +msgstr "Ajouter du contraste localement, améliorer des détails" -#: f.menus.cc:205 f.menus.cc:452 f.retouch.cc:1130 +#: f.menus.cc:217 f.menus.cc:463 f.retouch.cc:1130 msgid "Tone Mapping" -msgstr "Réglage des tonalités" +msgstr "Mappage de tons" -#: f.menus.cc:206 f.menus.cc:451 +#: f.menus.cc:218 f.menus.cc:462 msgid "Flatten Brightness" -msgstr "Aplanir la luminosité" +msgstr "Aplatir la luminosité" -#: f.menus.cc:206 +#: f.menus.cc:218 msgid "Flatten brightness distribution" -msgstr "Aplanir la distibution de la luminosité" +msgstr "Aplatir la répartition de la luminosité" -#: f.menus.cc:207 +#: f.menus.cc:219 msgid "Expand Brightness" -msgstr "Améliorer la luminosité" +msgstr "Étendre la luminosité" -#: f.menus.cc:207 +#: f.menus.cc:219 msgid "Expand brightness range" -msgstr "Etendre la gamme de luminosité" +msgstr "Étendre la plage de luminosité" -#: f.menus.cc:208 +#: f.menus.cc:220 msgid "Brightness Ramp" -msgstr "Luminosité : correction" +msgstr "Courbes de luminosité" -#: f.menus.cc:208 +#: f.menus.cc:220 msgid "Fix brightness uniformity across image" -msgstr "Correction de l'uniformité de la luminosité dans l'image" +msgstr "Uniformiser la luminosité à travers l'image" -#: f.menus.cc:209 f.retouch.cc:2361 +#: f.menus.cc:221 f.retouch.cc:2358 msgid "Paint Edits" -msgstr "Peinture des éditions" +msgstr "Opérations de Peinture" -#: f.menus.cc:209 -msgid "Paint edit function gradually with the mouse" -msgstr "Modifier graduellement avec la souris" +#: f.menus.cc:221 +msgid "Paint edit function gradually with mouse" +msgstr "Fonction d'édition de peinture graduelle au moyen de la souris" -#: f.menus.cc:210 f.retouch.cc:2592 +#: f.menus.cc:222 f.retouch.cc:2589 msgid "Leverage Edits" -msgstr "Effet de levier des éditions" +msgstr "Opérations à effets de Levier" -#: f.menus.cc:210 +#: f.menus.cc:222 msgid "Leverage edits by brightness or color" -msgstr "Effet de levier des éditions par luminosité ou couleur" +msgstr "Opérations à effet de levier par luminosité ou couleur" -#: f.menus.cc:212 +#: f.menus.cc:224 msgid "Make the image look sharper" -msgstr "Augmenter la netteté de l'image" +msgstr "Rendre l'image plus nette" -#: f.menus.cc:212 f.repair.cc:60 +#: f.menus.cc:224 f.repair.cc:60 msgid "Sharpen" -msgstr "" +msgstr "Renforcer la netteté" -#: f.menus.cc:213 f.repair.cc:1543 +#: f.menus.cc:225 f.repair.cc:1543 msgid "Blur" msgstr "Flou" -#: f.menus.cc:213 +#: f.menus.cc:225 msgid "Make the image look fuzzy" -msgstr "Adoucir l'image" +msgstr "Donner un effet de flou à une image" -#: f.menus.cc:214 +#: f.menus.cc:226 msgid "Filter noise from low-light photos" -msgstr "Filtrer le bruit des photos de faible éclairage" +msgstr "Filtrer le bruit de photos sous-exposées" -#: f.menus.cc:214 +#: f.menus.cc:226 msgid "Reduce Noise" -msgstr "Réduire le bruit" +msgstr "Réduction de bruit" -#: f.menus.cc:215 +#: f.menus.cc:227 msgid "Remove unwanted objects" -msgstr "Retirer les objets indésirables" +msgstr "Faire disparaître les objets superflus" -#: f.menus.cc:215 f.repair.cc:1536 +#: f.menus.cc:227 f.repair.cc:1536 msgid "Smart Erase" -msgstr "Effacement intelligent" +msgstr "Effaçage intelligent" -#: f.menus.cc:216 +#: f.menus.cc:228 msgid "Fix red-eyes from electronic flash" -msgstr "Correction des yeux rouges" +msgstr "Supprimer les yeux rouges dus au flash électronique" -#: f.menus.cc:216 f.menus.cc:454 +#: f.menus.cc:228 f.menus.cc:465 msgid "Red Eyes" msgstr "Yeux rouges" -#: f.menus.cc:217 +#: f.menus.cc:229 msgid "Paint image pixels using the mouse" -msgstr "Peindre des pixels avec la souris" +msgstr "Dessiner les pixels de l'image au moyen de la souris" -#: f.menus.cc:217 f.repair.cc:2357 +#: f.menus.cc:229 f.repair.cc:2357 msgid "Paint/Clone" -msgstr "" +msgstr "Peinture/Duplication" -#: f.menus.cc:218 f.repair.cc:2880 +#: f.menus.cc:230 f.repair.cc:2880 msgid "Remove Dust" -msgstr "Enlever la poussière" +msgstr "Anti-poussières" -#: f.menus.cc:218 +#: f.menus.cc:230 msgid "Remove dust spots from scanned slides" -msgstr "Enlever les taches de poussière des numérisations" +msgstr "Ôter les grains de poussière des diapositives scannées" -#: f.menus.cc:219 +#: f.menus.cc:231 msgid "Anti-alias" -msgstr "" +msgstr "Anticrénelage" -#: f.menus.cc:219 +#: f.menus.cc:231 msgid "Smoothen edges with jaggies" -msgstr "" +msgstr "Adoucir les bords crénelés" -#: f.menus.cc:220 +#: f.menus.cc:232 msgid "Fix Color Fringes" -msgstr "Correction des franges de couleur" +msgstr "Corriger les franges de couleurs" -#: f.menus.cc:220 +#: f.menus.cc:232 msgid "Reduce Chromatic Abberation" -msgstr "Réduire l'abérrations chromatique" +msgstr "Réduire les aberrations chromatiques" -#: f.menus.cc:221 +#: f.menus.cc:233 msgid "Erase known hot and dark pixels" -msgstr "Effacer les pixels chauds et sombres reconnus" +msgstr "Effacer les pixels chauds et sombres connus" -#: f.menus.cc:221 f.repair.cc:3890 +#: f.menus.cc:233 f.repair.cc:3894 msgid "Fix Stuck Pixels" msgstr "Corriger les pixels bloqués" -#: f.menus.cc:223 +#: f.menus.cc:235 msgid "Click on a white/gray area to fix color tint" -msgstr "Cliquer sur une zone blanche/grise pour régler la teinte de la couleur" +msgstr "Cliquer à un endroit blanc/gris pour définir la teinte" -#: f.menus.cc:223 f.menus.cc:453 +#: f.menus.cc:235 f.menus.cc:464 msgid "White Balance" msgstr "Balance des blancs" -#: f.menus.cc:224 +#: f.menus.cc:236 msgid "Make BW/color, negative/positive, sepia" -msgstr "Noir & blanc, négatif/positif, sépia" +msgstr "Convertir NB/couleur, négatif/positif, sépia" -#: f.menus.cc:225 +#: f.menus.cc:237 msgid "Color Profile" -msgstr "" +msgstr "Profil de couleur" -#: f.menus.cc:225 +#: f.menus.cc:237 msgid "Convert to another color profile" -msgstr "" +msgstr "Convertir en un autre profil de couleurs" -#: f.menus.cc:226 +#: f.menus.cc:238 msgid "Match Colors" -msgstr "Correspondance des couleurs" +msgstr "Synchroniser des couleurs" -#: f.menus.cc:226 +#: f.menus.cc:238 msgid "Match colors on one image with another" -msgstr "Correspondance des couleurs d'une image avec une autre" +msgstr "Faire correspondre les couleurs d'une image avec celles d'une autre" -#: f.menus.cc:227 +#: f.menus.cc:239 msgid "Adjust color in selected image areas" -msgstr "Ajuster la couleur dans les zones sélectionnées" +msgstr "Ajuster les couleurs dans les zones sélectionnées de l'image" -#: f.menus.cc:228 +#: f.menus.cc:240 msgid "Adjust color using CMYK or RGB values" -msgstr "Ajuster la couleur en utilisant les valeurs CMYK ou RVB" +msgstr "Ajuster les couleurs au moyen des valeurs CMYK ou RGB" -#: f.menus.cc:228 +#: f.menus.cc:240 msgid "CMYK Density" msgstr "Densité CMYK" -#: f.menus.cc:230 +#: f.menus.cc:242 msgid "Remove curvature, esp. panoramas" -msgstr "Retirer la courbure, particulier. panoramas" +msgstr "Corriger la courbure, principalement des images panoramiques" -#: f.menus.cc:231 +#: f.menus.cc:243 msgid "Straighten objects seen from an angle" -msgstr "Redresser des objets vus sous un angle" +msgstr "Redresser l'angle de vue des objets (perspective)" -#: f.menus.cc:232 +#: f.menus.cc:244 msgid "Flatten Book Page" -msgstr "" +msgstr "Aplatir une page de livre" -#: f.menus.cc:232 +#: f.menus.cc:244 msgid "Flatten a photographed book page" -msgstr "" +msgstr "Aplatir une photographie de page de livre" -#: f.menus.cc:233 +#: f.menus.cc:245 msgid "Distort image areas using the mouse" -msgstr "Déformer une zone en utilisant la souris" +msgstr "Déformer les zones de l'image au moyen de la souris" -#: f.menus.cc:234 f.menus.cc:235 f.menus.cc:236 +#: f.menus.cc:246 f.menus.cc:247 f.menus.cc:248 msgid "Distort the whole image using the mouse" -msgstr "Déformer l'image entière avec la souris" +msgstr "Déformer l'image entière au moyen de la souris" -#: f.menus.cc:238 +#: f.menus.cc:250 msgid "Color Depth" -msgstr "Profondeur de couleur" +msgstr "Profondeur de couleurs" -#: f.menus.cc:238 +#: f.menus.cc:250 msgid "Reduce color depth (posterize)" -msgstr "Réduire la profondeur de couleur (postériser)" +msgstr "Réduire la profondeur de couleur (postérisation)" -#: f.menus.cc:239 +#: f.menus.cc:251 msgid "Convert to pencil sketch" -msgstr "" +msgstr "Transformer en esquisse au crayon" -#: f.menus.cc:239 +#: f.menus.cc:251 msgid "Sketch" -msgstr "" +msgstr "Esquisse" -#: f.menus.cc:240 +#: f.menus.cc:252 msgid "Convert to colored line drawing" -msgstr "Convertir en dessin au trait couleur" +msgstr "Transformer en dessin de lignes colorées/lumineuses" -#: f.menus.cc:240 +#: f.menus.cc:252 msgid "Drawing" msgstr "Dessin" -#: f.menus.cc:241 +#: f.menus.cc:253 msgid "Graduated Blur depending on contrast" -msgstr "" +msgstr "Flou progressif dépendant du contraste" -#: f.menus.cc:242 +#: f.menus.cc:254 msgid "Create an embossed or 3D appearance" -msgstr "Create an embossed or 3D appearance" +msgstr "Donner l'apparence d'un estampage ou tridimensionnelle" -#: f.menus.cc:242 +#: f.menus.cc:254 msgid "Embossing" -msgstr "Estamper" +msgstr "Estampage" -#: f.menus.cc:243 +#: f.menus.cc:255 msgid "Convert to square tiles" -msgstr "Transformer en tuiles carrées" +msgstr "Transformer en mosaïque" -#: f.menus.cc:243 +#: f.menus.cc:255 msgid "Tiles" -msgstr "Tuiles" +msgstr "Mosaïque" -#: f.menus.cc:244 +#: f.menus.cc:256 msgid "Convert to dots (Roy Lichtenstein effect)" -msgstr "Convertir en points (effet Roy Lichtenstein)" +msgstr "Convertir en trame de points (effet Roy Lichtenstein)" -#: f.menus.cc:244 +#: f.menus.cc:256 msgid "Dots" -msgstr "Points" +msgstr "Trame de points" -#: f.menus.cc:245 +#: f.menus.cc:257 msgid "Convert into a simulated painting" -msgstr "Transformer en simulation de peinture" +msgstr "Simuler une peinture" -#: f.menus.cc:245 +#: f.menus.cc:257 msgid "Painting" msgstr "Peinture" -#: f.menus.cc:246 +#: f.menus.cc:258 msgid "Shift/convert colors into other colors" -msgstr "Echanger/convertir les couleurs" +msgstr "Changer/convertir des couleurs en d'autres couleurs" -#: f.menus.cc:247 +#: f.menus.cc:259 msgid "Change brightness or color radially" -msgstr "Modification radiale de la luminosité ou de la couleur " +msgstr "Modifier la luminosité ou la couleur radialement" -#: f.menus.cc:249 +#: f.menus.cc:261 msgid "Combine bright/dark images for better detail" -msgstr "Fusionner des images claires/sombres : plus de détails" +msgstr "Combiner les images claires/sombres pour de meilleurs détails" -#: f.menus.cc:249 +#: f.menus.cc:261 msgid "High Dynamic Range" msgstr "Plage dynamique étendue" -#: f.menus.cc:250 +#: f.menus.cc:262 msgid "Combine near/far focus images for deeper focus" -msgstr "Fusionner des images proches/lointaines pour plus de profondeur" +msgstr "" +"Combiner les mises au point proche/lointain d'images pour une netteté " +"optimale" -#: f.menus.cc:250 +#: f.menus.cc:262 msgid "High Depth of Field" msgstr "Grande profondeur de champ" -#: f.menus.cc:251 +#: f.menus.cc:263 msgid "Combine images to erase passing people, etc." -msgstr "Fusionner des images pour effacer les passants, etc." +msgstr "Combiner les images pour effacer les passants, etc." -#: f.menus.cc:251 +#: f.menus.cc:263 msgid "Stack / Paint" -msgstr "Pile / Peindre" +msgstr "Empilage / Peinture" -#: f.menus.cc:252 +#: f.menus.cc:264 msgid "Combine noisy images into a low-noise image" -msgstr "Fusionner des images avec bruit en une image à faible bruit" +msgstr "Combiner des images fortement bruitées en une image légèrement bruitée" -#: f.menus.cc:252 +#: f.menus.cc:264 msgid "Stack / Noise" -msgstr "Pile / Bruit" +msgstr "Empilage / Bruit" -#: f.menus.cc:253 +#: f.menus.cc:265 msgid "Combine images into a panorama" -msgstr "Fusionner des images en un panorama" +msgstr "Combiner des images en une image panoramique" -#: f.menus.cc:253 +#: f.menus.cc:265 msgid "Panorama" msgstr "Panorama" -#: f.menus.cc:254 +#: f.menus.cc:266 msgid "Combine images into a vertical panorama" -msgstr "Fusionner des images en un panorama vertical" +msgstr "Combiner des images en une image panoramique verticale" -#: f.menus.cc:254 +#: f.menus.cc:266 msgid "Vertical Panorama" msgstr "Panorama vertical" -#: f.menus.cc:256 +#: f.menus.cc:267 +msgid "Arrange multiple images on a background image" +msgstr "Disposer plusieurs images sur une image de fond" + +#: f.menus.cc:267 +msgid "Mashup" +msgstr "Pêle-Mêle" + +#: f.menus.cc:269 msgid "Add another image editor to the menu" -msgstr "Ajouter un éditeur d'image au menu" +msgstr "Ajouter un autre éditeur d'images au menu" -#: f.menus.cc:256 +#: f.menus.cc:269 msgid "Edit Plugins" -msgstr "Edition des greffons" +msgstr "Éditer les greffons" -#: f.menus.cc:258 fotoxx-13.08.cc:3597 +#: f.menus.cc:271 fotoxx-13.09.cc:3630 msgid "Quick Start" -msgstr "" +msgstr "Démarrage rapide" -#: f.menus.cc:258 +#: f.menus.cc:271 msgid "Quick Start mini-guide" -msgstr "" +msgstr "Mini-guide pour un démarrage rapide" -#: f.menus.cc:259 +#: f.menus.cc:272 msgid "Read the user guide" -msgstr "Lire le manuel" +msgstr "Consulter le manuel utilisateur" -#: f.menus.cc:259 fotoxx-13.08.cc:3600 +#: f.menus.cc:272 fotoxx-13.09.cc:3633 msgid "User Guide" -msgstr "Documentation" +msgstr "Manuel utilisateur" -#: f.menus.cc:260 +#: f.menus.cc:273 msgid "Recent user guide changes" -msgstr "Changements récents du manuel" +msgstr "Derniers changements du manuel utilisateur" -#: f.menus.cc:260 fotoxx-13.08.cc:3603 +#: f.menus.cc:273 fotoxx-13.09.cc:3636 msgid "User Guide Changes" -msgstr "Changements du manuel" +msgstr "Changements du manuel utilisateur" -#: f.menus.cc:261 +#: f.menus.cc:274 msgid "Fotoxx updates notification" -msgstr "Notification de mises à jour" +msgstr "Notification des mises à jour de Fotoxx" -#: f.menus.cc:261 fotoxx-13.08.cc:3606 +#: f.menus.cc:274 fotoxx-13.09.cc:3639 msgid "Program Updates" -msgstr "Mises à jour du programme" +msgstr "Mises à jours du programme" -#: f.menus.cc:262 fotoxx-13.08.cc:3612 +#: f.menus.cc:275 fotoxx-13.09.cc:3645 msgid "Edit Functions Summary" -msgstr "Editer le sommaire des fonctions" +msgstr "Éditer le sommaire des fonctions" -#: f.menus.cc:262 +#: f.menus.cc:275 msgid "Summary of image edit functions" -msgstr "Sommaire des fonctions de l'édition d'image" +msgstr "Sommaire des fonctions d’édition d'image" -#: f.menus.cc:263 fotoxx-13.08.cc:3609 +#: f.menus.cc:276 fotoxx-13.09.cc:3642 msgid "README" msgstr "LISEZ-MOI" -#: f.menus.cc:263 +#: f.menus.cc:276 msgid "Technical installation notes" msgstr "Notes techniques d'installation" -#: f.menus.cc:264 fotoxx-13.08.cc:3615 +#: f.menus.cc:277 fotoxx-13.09.cc:3648 msgid "Change Log" -msgstr "Modifications" +msgstr "Journal des changements" -#: f.menus.cc:264 +#: f.menus.cc:277 msgid "List updates by Fotoxx version" -msgstr "Nouveautés par version de Fotoxx" +msgstr "Lister les mises à jour par version de Fotoxx" -#: f.menus.cc:265 fotoxx-13.08.cc:3618 +#: f.menus.cc:278 fotoxx-13.09.cc:3651 msgid "Log File" -msgstr "Fichier journal" +msgstr "Fichier-journal" -#: f.menus.cc:265 +#: f.menus.cc:278 msgid "View the log file and error messages" -msgstr "Voir les fichiers log et messages d'erreur" +msgstr "Afficher le fichier-journal et les messages d'erreur" -#: f.menus.cc:266 +#: f.menus.cc:279 msgid "How to do Fotoxx translations" msgstr "Comment faire les traductions de Fotoxx" -#: f.menus.cc:266 fotoxx-13.08.cc:3621 +#: f.menus.cc:279 fotoxx-13.09.cc:3654 msgid "Translations" msgstr "Traductions" -#: f.menus.cc:267 fotoxx-13.08.cc:3624 +#: f.menus.cc:280 fotoxx-13.09.cc:3657 msgid "Home Page" -msgstr "Page d'accueil" +msgstr "Site web" -#: f.menus.cc:267 +#: f.menus.cc:280 msgid "Show the Fotoxx web page" -msgstr "Afficher la page internet de Fotoxx" +msgstr "Aller à la page web de Fotoxx" -#: f.menus.cc:268 fotoxx-13.08.cc:3627 +#: f.menus.cc:281 fotoxx-13.09.cc:3660 msgid "About" -msgstr "A propos" +msgstr "À propos" -#: f.menus.cc:268 +#: f.menus.cc:281 msgid "Version, license, contact, credits" msgstr "Version, licence, contact, crédits" -#: f.menus.cc:271 +#: f.menus.cc:284 msgid "Favs" msgstr "Favoris" -#: f.menus.cc:273 +#: f.menus.cc:286 msgid "Color of area borders etc." -msgstr "" +msgstr "Couleur des bords de la zone etc." -#: f.menus.cc:274 fotoxx.h:1011 +#: f.menus.cc:287 fotoxx.h:1033 msgid "Undo" -msgstr "Défaire" +msgstr "Annuler" -#: f.menus.cc:274 +#: f.menus.cc:287 msgid "Undo one edit" -msgstr "Annuler une édition" +msgstr "Annuler une modification" -#: f.menus.cc:275 fotoxx.h:993 +#: f.menus.cc:288 fotoxx.h:1014 msgid "Redo" msgstr "Rétablir" -#: f.menus.cc:275 +#: f.menus.cc:288 msgid "Redo one edit" -msgstr "Rétablir une édition" +msgstr "Rétablir une modification" -#: f.menus.cc:277 f.menus.cc:389 -msgid "Gallery from Tab F" +#: f.menus.cc:290 f.menus.cc:400 +msgid "Set gallery from current image file" msgstr "" +"Afficher le répertoire contenant le fichier image actuel dans la galerie" -#: f.menus.cc:279 +#: f.menus.cc:290 f.menus.cc:400 +msgid "Sync.G" +msgstr "Sync. G" + +#: f.menus.cc:292 msgid "Open the previous file" msgstr "Ouvrir le fichier précédent" -#: f.menus.cc:279 fotoxx.h:988 +#: f.menus.cc:292 fotoxx.h:1009 msgid "Prev" msgstr "Préc." -#: f.menus.cc:280 fotoxx.h:979 +#: f.menus.cc:293 fotoxx.h:1000 msgid "Next" msgstr "Suiv." -#: f.menus.cc:280 +#: f.menus.cc:293 msgid "Open the next file" msgstr "Ouvrir le fichier suivant" -#: f.menus.cc:281 -msgid "Save to the same file" -msgstr "Sauvegarder vers le même fichier" - -#: f.menus.cc:282 -msgid "Save to a new version" -msgstr "Sauvegarder vers une nouvelle version" - -#: f.menus.cc:282 -msgid "Save+V" -msgstr "Enreg.+V" - -#: f.menus.cc:283 -msgid "Save to a new file" -msgstr "Sauvegarder vers un nouveau fichier" - -#: f.menus.cc:283 -msgid "Save+F" -msgstr "Enreg.+F" - -#: f.menus.cc:284 f.menus.cc:437 fotoxx.h:1008 +#: f.menus.cc:295 f.menus.cc:448 fotoxx.h:1030 msgid "Trash" msgstr "Corbeille" -#: f.menus.cc:303 f.menus.cc:332 +#: f.menus.cc:314 f.menus.cc:343 msgid "Run as Fotoxx edit function" -msgstr "Lancer comme une fonction d'édition Fotoxx" +msgstr "Exécuter comme fonction d'édition de Fotoxx" + +#: f.menus.cc:382 +msgid "Top" +msgstr "Racine" + +#: f.menus.cc:401 +msgid "open another directory" +msgstr "Ouvrir un autre dossier" -#: f.menus.cc:391 +#: f.menus.cc:402 msgid "go to bookmarked image" -msgstr "" +msgstr "Aller à l'image marquée du signet" -#: f.menus.cc:392 +#: f.menus.cc:403 msgid "increase thumbnail size" msgstr "Augmenter la taille des miniatures" -#: f.menus.cc:393 +#: f.menus.cc:404 msgid "reduce thumbnail size" -msgstr "Réduire la taille des miniatures" +msgstr "Diminuer la taille des miniatures" + +#: f.menus.cc:405 +msgid "change sort order" +msgstr "Changer l'ordre de tri" -#: f.menus.cc:394 -msgid "jump to first page" -msgstr "Sauter à la prmière page" +#: f.menus.cc:406 +msgid "jump to beginning (top)" +msgstr "Aller au début (racine)" -#: f.menus.cc:395 -msgid "jump to last page" -msgstr "Sauter à la dernière page" +#: f.menus.cc:407 +msgid "jump to end (bottom)" +msgstr "Aller à la fin (bas)" -#: f.menus.cc:396 +#: f.menus.cc:408 msgid "previous page" msgstr "Page précédente" -#: f.menus.cc:397 +#: f.menus.cc:409 msgid "next page" -msgstr "Page suiv." +msgstr "Page suivante" -#: f.menus.cc:398 +#: f.menus.cc:410 msgid "previous row" -msgstr "Ligne précédente" +msgstr "Rangée précédente" -#: f.menus.cc:399 +#: f.menus.cc:411 msgid "next row" -msgstr "Ligne suiv." - -#: f.menus.cc:400 -msgid "change sequence" -msgstr "" +msgstr "Rangée suivante" -#: f.menus.cc:434 fotoxx.h:996 +#: f.menus.cc:445 fotoxx.h:1017 msgid "Rename" msgstr "Renommer" -#: f.menus.cc:435 +#: f.menus.cc:446 msgid "Copy to Location" -msgstr "" +msgstr "Copier vers l'Emplacement" -#: f.menus.cc:436 +#: f.menus.cc:447 msgid "Move to Location" -msgstr "" +msgstr "Déplacer vers l'Emplacement" -#: f.menus.cc:438 fotoxx.h:955 +#: f.menus.cc:449 fotoxx.h:975 msgid "Delete" msgstr "Supprimer" -#: f.menus.cc:439 +#: f.menus.cc:450 msgid "Copy to Clipboard" msgstr "Copier dans le presse-papier" -#: f.menus.cc:440 +#: f.menus.cc:451 msgid "Remove from Collection" -msgstr "" +msgstr "Retirer de la collection" -#: f.menus.cc:441 +#: f.menus.cc:452 msgid "Cut to Image Cache" -msgstr "" +msgstr "Couper vers le cache de l'image" -#: f.menus.cc:442 +#: f.menus.cc:453 msgid "Copy to Image Cache" -msgstr "" +msgstr "Copier vers le cache de l'image" -#: f.menus.cc:443 +#: f.menus.cc:454 msgid "Paste Image Cache Here (clear)" -msgstr "" +msgstr "Coller le cache de l'image ici (effacer)" -#: f.menus.cc:444 +#: f.menus.cc:455 msgid "Paste Image Cache Here (keep)" -msgstr "" +msgstr "Coller le cache de l'image ici (conserver)" + +#: f.menus.cc:460 +msgid "Brightness/Color" +msgstr "Luminosité/Couleur" -#: f.menus.cc:456 +#: f.menus.cc:467 msgid "Select Area" -msgstr "Sélectionner la zone" +msgstr "Sélectionner une zone" + +#: f.meta.cc:72 +msgid "" +"Metadata index is missing.\n" +"Use Tools > Synchronize Files." +msgstr "" +"L'index des métadonnées est manquant.\n" +"Utiliser Outils > Synchroniser les fichiers." -#: f.meta.cc:87 -msgid "Edit Caption and Comments" -msgstr "Editer légendes et commentaires" +#: f.meta.cc:106 +#, c-format +msgid "Rating: %c (stars)" +msgstr "Évaluation: %c (étoiles)" + +#: f.meta.cc:142 +msgid "Size:" +msgstr "Taille:" + +#: f.meta.cc:148 +msgid "Image Width:" +msgstr "Largeur de l'image:" + +#: f.meta.cc:151 +msgid "Height:" +msgstr "Hauteur:" + +#: f.meta.cc:154 +msgid "Depth:" +msgstr "Profondeur:" + +#: f.meta.cc:159 +msgid "Image Date" +msgstr "Date de l'image" + +#: f.meta.cc:162 +msgid "Time" +msgstr "Heure" + +#: f.meta.cc:164 +msgid "get prev" +msgstr "Obtenir précédente" + +#: f.meta.cc:169 +msgid "Choose:" +msgstr "Choisir:" -#: f.meta.cc:98 +#: f.meta.cc:181 msgid "Caption" -msgstr "" +msgstr "Légende" -#: f.meta.cc:102 +#: f.meta.cc:187 msgid "Comments" -msgstr "" +msgstr "Commentaires" -#: f.meta.cc:173 -msgid "image date (yyyymmdd)" -msgstr "Date (aaaa-mm-jj)" - -#: f.meta.cc:175 -msgid "use last" -msgstr "Dernière utilisée" - -#: f.meta.cc:178 -msgid "image stars" -msgstr "Note de l'image" - -#: f.meta.cc:196 -msgid "current tags" -msgstr "Étiquettes actuelles" - -#: f.meta.cc:201 -msgid "recent tags" -msgstr "Étiquettes récentes" - -#: f.meta.cc:206 f.meta.cc:387 f.meta.cc:1404 f.meta.cc:3932 -msgid "defined tags" -msgstr "Définir les étiquettes" +#: f.meta.cc:193 +msgid "Image Tags" +msgstr "Balises de l'image" -#: f.meta.cc:373 fotoxx.h:976 +#: f.meta.cc:199 +msgid "Recent Tags" +msgstr "Balises Récentes" + +#: f.meta.cc:205 f.meta.cc:556 f.meta.cc:1573 f.meta.cc:4111 +msgid "Defined Tags" +msgstr "Balises définies" + +#: f.meta.cc:455 +msgid "date format is YYYY-MM-DD" +msgstr "Le format de date est AAAA-MM-JJ" + +#: f.meta.cc:459 +msgid "date is invalid" +msgstr "Date incorrecte" + +#: f.meta.cc:492 +msgid "time format is HH:MM [:SS]" +msgstr "Le format de l'heure est HH:MM [:SS]" + +#: f.meta.cc:496 +msgid "time is invalid" +msgstr "Heure incorrecte" + +#: f.meta.cc:542 fotoxx.h:997 msgid "Manage Tags" -msgstr "Gestion des étiquettes" +msgstr "Gestion des balises" -#: f.meta.cc:373 +#: f.meta.cc:542 msgid "orphan tags" -msgstr "" +msgstr "Balises orphelines" -#: f.meta.cc:377 +#: f.meta.cc:546 msgid "category" msgstr "Catégorie" -#: f.meta.cc:380 +#: f.meta.cc:549 msgid "tag" -msgstr "Étiquette" +msgstr "Balise" -#: f.meta.cc:383 +#: f.meta.cc:552 msgid "create" msgstr "Créer" -#: f.meta.cc:384 +#: f.meta.cc:553 msgid "delete" msgstr "Supprimer" -#: f.meta.cc:1383 -msgid "Batch Add/Remove Tags" -msgstr "" +#: f.meta.cc:1557 f.meta.cc:3116 f.tools.cc:2800 f.tools.cc:3885 +#: f.tools.cc:4101 f.tools.cc:4463 +msgid "0 files selected" +msgstr "0 fichier sélectionné" -#: f.meta.cc:1394 +#: f.meta.cc:1563 msgid "tags to add" -msgstr "Étiquettes à ajouter" +msgstr "Balises à ajouter" -#: f.meta.cc:1395 +#: f.meta.cc:1564 msgid "tags to remove" -msgstr "" +msgstr "Balises à retirer" -#: f.meta.cc:1476 +#: f.meta.cc:1645 #, c-format msgid "" "%s \n" " too many tags" msgstr "" "%s \n" -" trop d'étiquettes" +" trop de balises" -#: f.meta.cc:1590 +#: f.meta.cc:1759 msgid "specify files and tags" -msgstr "" +msgstr "Spécifier fichiers et balises" -#: f.meta.cc:1617 f.meta.cc:3044 f.tools.cc:2819 f.tools.cc:3011 -#: f.tools.cc:3051 f.tools.cc:4001 f.tools.cc:4311 f.tools.cc:4664 +#: f.meta.cc:1786 f.meta.cc:3223 f.tools.cc:2838 f.tools.cc:3030 +#: f.tools.cc:3070 f.tools.cc:4020 f.tools.cc:4330 f.tools.cc:4683 #, c-format msgid "%d files selected" msgstr "%d fichiers sélectionnés" -#: f.meta.cc:1664 +#: f.meta.cc:1833 msgid "View Metadata" -msgstr "Voir les métadonnées" +msgstr "Afficher les métadonnées" + +#: f.meta.cc:1901 +msgid "key name" +msgstr "Nom de la clé" -#: f.meta.cc:1822 fotoxx.h:937 +#: f.meta.cc:1903 +msgid "key value" +msgstr "Valeur de la clé" + +#: f.meta.cc:1991 fotoxx.h:956 msgid "All" -msgstr "Tout" +msgstr "Toutes" -#: f.meta.cc:1823 +#: f.meta.cc:1992 msgid "One Key:" -msgstr "Une clé : " +msgstr "Un mot-clé: " -#: f.meta.cc:1954 +#: f.meta.cc:2123 #, c-format msgid "" "Download geotags data (8 megabytes). \n" "Save in %s \n" "Proceed?" msgstr "" -"Télécharger les données des étiquettes de géolocalisation (8 megabytes): \n" -"Sauvegarder dans %s \n" -"Démarrer ?" +"Téléchargement des données des balises de géolocalisation (8 mo). \n" +"Enregistrement dans %s \n" +"Effectuer?" -#: f.meta.cc:1990 +#: f.meta.cc:2159 msgid "download failed" -msgstr "Echec du téléchargement" +msgstr "Échec du téléchargement" + +#: f.meta.cc:2192 fotoxx-13.09.cc:855 +msgid "Location from World Map" +msgstr "Lieu à partir de la Mappemonde" + +#: f.meta.cc:2194 +msgid "Loading world map" +msgstr "Chargement de la mappemonde en cours" -#: f.meta.cc:2025 +#: f.meta.cc:2201 msgid "please download geolocations data" -msgstr "Télécharger les étiquettes de géolocalisation, SVP" +msgstr "Veuillez télécharger les données de géolocalisation" -#: f.meta.cc:2138 +#: f.meta.cc:2209 +msgid "Loading geolocations" +msgstr "Chargement des géolocalisations en cours" + +#: f.meta.cc:2327 msgid "geotags file must be downloaded" -msgstr "Les étiquettes de localisation doivent être téléchargées" +msgstr "Les balises de géolocalisation doivent être téléchargées" -#: f.meta.cc:2432 f.meta.cc:2889 f.meta.cc:3152 +#: f.meta.cc:2611 f.meta.cc:3068 f.meta.cc:3331 #, c-format msgid "bad latitude/longitude: %s %s" -msgstr "Latitude/Longitude erronées: %s %s" +msgstr "Latitude/longitude incorrectes: %s %s" + +#: f.meta.cc:2893 +msgid "Geocoding web service courtesy of" +msgstr "Service Web de Géocodage avec l'aimable autorisation de" -#: f.meta.cc:2731 f.meta.cc:2939 f.meta.cc:4432 +#: f.meta.cc:2910 f.meta.cc:3118 f.meta.cc:4611 msgid "city" msgstr "Ville" -#: f.meta.cc:2734 f.meta.cc:2942 f.meta.cc:4435 +#: f.meta.cc:2913 f.meta.cc:3121 f.meta.cc:4614 msgid "country" msgstr "Pays" -#: f.meta.cc:2802 f.meta.cc:3065 +#: f.meta.cc:2981 f.meta.cc:3244 msgid "city not found" -msgstr "Ville non trouvée" +msgstr "Ville introuvable" -#: f.meta.cc:3130 +#: f.meta.cc:3309 msgid "" "data is incomplete \n" " proceed?" msgstr "" -"Donnée incomplète \n" -"Démarrer ?" +"Données incomplètes \n" +" Effectuer?" -#: f.meta.cc:3156 +#: f.meta.cc:3335 msgid "no files selected" -msgstr "Aucun fichier sélectionné" +msgstr "Aucun fichiers sélectionnés" -#: f.meta.cc:3188 +#: f.meta.cc:3367 msgid "choose city" -msgstr "Sélectionner la ville" +msgstr "Choisir une ville" -#: f.meta.cc:3272 +#: f.meta.cc:3451 msgid "not found" -msgstr "Non trouvé" +msgstr "introuvable" -#: f.meta.cc:3273 +#: f.meta.cc:3452 msgid "city and country required" -msgstr "" +msgstr "Ville et pays requis" -#: f.meta.cc:3365 +#: f.meta.cc:3544 msgid "Report Geotag Groups" -msgstr "Signaler des groupes d'étiquettes de localisation" +msgstr "Faire le rapport des groupes de balises de géolocalisation" -#: f.meta.cc:3366 +#: f.meta.cc:3545 msgid "Group by country" -msgstr "Groupe par pays" +msgstr "Grouper par pays" -#: f.meta.cc:3367 +#: f.meta.cc:3546 msgid "Group by country/city" -msgstr "Groupe par pays/ville" +msgstr "Grouper par pays/ville" -#: f.meta.cc:3368 +#: f.meta.cc:3547 msgid "Group by country/city/date" -msgstr "Groupe par pays/ville/date" +msgstr "Grouper par pays/ville/date" -#: f.meta.cc:3371 +#: f.meta.cc:3550 msgid "Combine within" -msgstr "Regrouper" +msgstr "Combiner avec" -#: f.meta.cc:3373 +#: f.meta.cc:3552 msgid "days" msgstr "Jours" -#: f.meta.cc:3715 +#: f.meta.cc:3667 +msgid "geotag groups" +msgstr "Groupes de balises de géolocalisation" + +# ?? +#: f.meta.cc:3894 msgid "search range (km)" -msgstr "Distance de recherche (km)" +msgstr "Plage de recherche (km)" -#: f.meta.cc:3786 +#: f.meta.cc:3965 msgid "No matching images found" -msgstr "Aucuns résultats pour cette recherche" +msgstr "Aucun résultat pour cette recherche" -#: f.meta.cc:3872 +#: f.meta.cc:4051 msgid "Search Image Metadata" -msgstr "Rechercher les métadonnées de l'image" +msgstr "Rechercher des métadonnées de l'image" -#: f.meta.cc:3876 +#: f.meta.cc:4055 msgid "images to search:" -msgstr "" +msgstr "Images à rechercher:" -#: f.meta.cc:3877 +#: f.meta.cc:4056 msgid "all" -msgstr "" +msgstr "Toutes" -#: f.meta.cc:3878 +#: f.meta.cc:4057 msgid "current set only" -msgstr "" +msgstr "Ensemble actuel uniquement" -#: f.meta.cc:3881 +#: f.meta.cc:4060 msgid "matching images:" -msgstr "" +msgstr "Images correspondantes:" -#: f.meta.cc:3882 +#: f.meta.cc:4061 msgid "new set" -msgstr "" +msgstr "Nouvel ensemble" -#: f.meta.cc:3883 +#: f.meta.cc:4062 msgid "add to set" -msgstr "" +msgstr "Ajouter à l'ensemble" -#: f.meta.cc:3884 +#: f.meta.cc:4063 msgid "remove" -msgstr "" +msgstr "Retirer" -#: f.meta.cc:3890 +#: f.meta.cc:4069 msgid "date range" -msgstr "Date entre : " +msgstr "Date comprise entre" -#: f.meta.cc:3891 +#: f.meta.cc:4070 msgid "stars range" -msgstr "Note entre : " +msgstr "Plage d'étoiles" -#: f.meta.cc:3892 +#: f.meta.cc:4071 msgid "search tags" -msgstr "Rechercher des étiquettes" +msgstr "Rechercher les balises" -#: f.meta.cc:3893 +#: f.meta.cc:4072 msgid "search text" msgstr "Rechercher le texte" -#: f.meta.cc:3894 +#: f.meta.cc:4073 msgid "search files" -msgstr "Fichiers recherchés" +msgstr "Rechercher les fichiers" -#: f.meta.cc:3899 +#: f.meta.cc:4078 msgid "(yyyymmdd)" msgstr "(aaaammjj)" -#: f.meta.cc:3905 +#: f.meta.cc:4084 msgid "all/any" -msgstr "Tout/n'importe quelle" +msgstr "toutes/quelconques" -#: f.meta.cc:3924 +#: f.meta.cc:4103 msgid "other criteria" -msgstr "Autres critères" +msgstr "Autre critère" -#: f.meta.cc:3928 +#: f.meta.cc:4107 msgid "other" msgstr "Autre" -#: f.meta.cc:4059 +#: f.meta.cc:4238 msgid "" "to remove images from current set, \n" "search current set" msgstr "" +"pour retirer des images de l'ensemble actuel, \n" +"rechercher l'ensemble actuel" -#: f.meta.cc:4066 +#: f.meta.cc:4245 msgid "" "to add images to current set, \n" "search all images" msgstr "" +"Pour ajouter des images à l'ensemble actuel, \n" +"rechercher toutes les images" -#: f.meta.cc:4293 +#: f.meta.cc:4472 #, c-format msgid "images added: %d removed: %d new count: %d" -msgstr "" +msgstr "Images ajoutées: %d retirées: %d nouveau nombre: %d" -#: f.meta.cc:4296 +#: f.meta.cc:4475 msgid "no changes made" -msgstr "" +msgstr "Aucune modification apportée" -#: f.meta.cc:4429 +#: f.meta.cc:4608 msgid "Add Geotags Search Criteria" -msgstr "Ajouter des critères de recherche d'étiquettes de géolocalisation" +msgstr "Ajouter un critère de recherche de balises de géolocalisation" -#: f.meta.cc:4448 +#: f.meta.cc:4627 msgid "range (km)" -msgstr "distance (km)" +msgstr "Plage (km)" -#: f.meta.cc:4539 +#: f.meta.cc:4718 msgid "error in latitude/longitude/range" -msgstr "Erreur dans la latitude/longitude/distance" +msgstr "Erreur de latitude/longitude/plage" -#: f.meta.cc:4604 +#: f.meta.cc:4783 msgid "" "These items are always reported: \n" "date, stars, tags, caption, comment" msgstr "" -"Ces articles sont toujours signalés: \n" -"date, étoiles, étiquettes, légende, commentaire" +"Ces éléments sont toujours rapportés: \n" +"date, étoiles, balises, légende, commentaire" -#: f.meta.cc:4628 +#: f.meta.cc:4807 msgid "Additional Items for Report" -msgstr "Articles additionnels à signaler" +msgstr "Éléments supplémentaires du rapport" -#: f.meta.cc:4634 +#: f.meta.cc:4813 msgid "Keyword" -msgstr "Mot de passe" +msgstr "Mots-clés" -#: f.meta.cc:4641 +#: f.meta.cc:4820 msgid "Match Criteria" msgstr "Critère de correspondance" @@ -2617,27 +2872,27 @@ #: f.repair.cc:93 msgid "brightness gradient" -msgstr "Gradient de luminosité" +msgstr "Dégradé de luminosité" #: f.repair.cc:688 msgid "Set Blur Radius" -msgstr "Régler le flou" +msgstr "Définir le rayon de flou" #: f.repair.cc:930 msgid "Noise Reduction" -msgstr "Réduction du bruit" +msgstr "Réduction de bruit" #: f.repair.cc:944 msgid "Flatten Outliers 1" -msgstr "" +msgstr "Écraser les valeurs atypiques 1" #: f.repair.cc:945 msgid "Flatten Outliers 2" -msgstr "" +msgstr "Écraser les valeurs atypiques 2" #: f.repair.cc:946 msgid "Median Brightness" -msgstr "" +msgstr "Luminosité médiane" #: f.repair.cc:1514 msgid "" @@ -2645,11 +2900,11 @@ "2. Erase. 3. Repeat. " msgstr "" "1. Glisser la souris pour sélectionner. \n" -"2. Effacer. 3. Répéter." +"2. Effacer. 3. Répéter." -#: f.repair.cc:1541 fotoxx.h:990 +#: f.repair.cc:1541 fotoxx.h:1011 msgid "Radius" -msgstr "Distance" +msgstr "Rayon" #: f.repair.cc:1546 msgid "New Area" @@ -2666,10 +2921,11 @@ " Right-click on red-eye." msgstr "" "Méthode n°1 : \n" -"- Faites un clic-gauche sur l'œil rouge pour l'assombrir. \n" +" - Clic-gauche sur l'œil rouge à assombrir. \n" "Méthode n°2 : \n" -"- Tirer le pointeur en bas vers la droite pour l'enfermer. \n" -"- Pour annuler : faite un clic-droit sur l'œil rouge." +" - Circonscrire l’œil rouge en tirant le pointeur vers le bas puis à " +"droite. \n" +" - Clic-droit sur l'œil rouge pour annuler." #: f.repair.cc:1880 msgid "Red Eye Reduction" @@ -2681,26 +2937,26 @@ "left click or drag: paint color or copy image \n" "right click or drag: remove color or image" msgstr "" -"Majuscule + clic gauche : choisit la couleur ou la position de l'image \n" -"clic gauche ou faire glisser : applique la couleur ou copie l'image \n" -"clic droit ou faire glisser : enlever la couleur ou l'image" +"Touche Maj + clic gauche: choisir une couleur ou un endroit de l’image \n" +"Cliquer gauche ou glisser: peindre une couleur ou copier l'image \n" +"Cliquer droit ou glisser: retirer la couleur ou l'image" #: f.repair.cc:2340 #, c-format msgid "Undo Memory %d%c" -msgstr "Mémoire d'annulation %d%c" +msgstr "Mémoire d'annulation %d%c" #: f.repair.cc:2361 msgid "paint color" -msgstr "Peindre la couleur" +msgstr "Couleur de peinture" #: f.repair.cc:2364 msgid "copy from image" -msgstr "Copier depuis l'image" +msgstr "Copier à partir de l'image" #: f.repair.cc:2371 msgid "paintbrush radius" -msgstr "Rayon du pinceau" +msgstr "Rayon de la brosse" #: f.repair.cc:2372 msgid "transparency center" @@ -2716,11 +2972,12 @@ "Save work with [done], then resume painting." msgstr "" "La limite de mémoire d'annulation a été atteinte. \n" -"Sauvegarder le travail avec [Fait], puis reprendre la peinture." +"Sauvegardez votre travail en cliquant sur [Terminé], \n" +"puis reprenez la peinture." #: f.repair.cc:2884 msgid "spot size limit" -msgstr "Limite de taille du point" +msgstr "Taille limite des grains de poussière" #: f.repair.cc:2887 msgid "max. brightness" @@ -2728,55 +2985,47 @@ #: f.repair.cc:2890 msgid "min. contrast" -msgstr "Contrast min." +msgstr "Contraste min." #: f.repair.cc:3671 msgid "" " Adjust each RGB color to minimize \n" " color fringes at the image extremes. " msgstr "" -"Régler chaque couleur RVB pour minimiser \n" -" les franges de couleurs aux extrémités de l'image" +"Ajuster chaque couleur RGB pour diminuer \n" +"les franges de couleurs aux bords de l'image." #: f.repair.cc:3694 msgid "Chromatic Abberation" -msgstr "Aberration chromatique" +msgstr "Aberrations chromatiques" -#: f.repair.cc:3896 +#: f.repair.cc:3900 msgid "pixel group" msgstr "Groupe de pixels" -#: f.repair.cc:3897 +#: f.repair.cc:3901 msgid "circle color" msgstr "Couleur du cercle" -#: f.repair.cc:4006 +#: f.repair.cc:3913 f.repair.cc:3957 +msgid "stuck pixels:" +msgstr "pixels bloqués:" + +#: f.repair.cc:4023 msgid "Load Stuck Pixels" msgstr "Charger les pixels bloqués" -#: f.repair.cc:4030 f.repair.cc:4126 +#: f.repair.cc:4047 f.repair.cc:4113 msgid "Stuck Pixels file" -msgstr "Bloquer le fichier des pixels" +msgstr "Fichier des pixels bloqués" -#: f.repair.cc:4070 +#: f.repair.cc:4087 msgid "file format error" msgstr "Erreur de format de fichier" -#: f.repair.cc:4098 -msgid "there are zero stuck pixels" -msgstr "Il y a zéro pixel bloqué" - -#: f.repair.cc:4102 -msgid "Save Stuck Pixels" -msgstr "Sauvegarder les pixels bloqués" - -#: f.retouch.cc:211 -msgid "Adjust Brightness and Color" -msgstr "Ajuster la luminosité et la couleur" - #: f.retouch.cc:267 msgid "small-steps" -msgstr "Petites touches" +msgstr "Par petites étapes" #: f.retouch.cc:276 msgid "Saturation" @@ -2784,7 +3033,7 @@ #: f.retouch.cc:283 msgid " reset 1 " -msgstr "Réinit. 1x" +msgstr " Réinitialiser 1" #: f.retouch.cc:284 msgid "reset all" @@ -2792,103 +3041,104 @@ #: f.retouch.cc:766 msgid "adjust image gamma" -msgstr "Ajustement du gamma de l'image" +msgstr "Ajuster le gamma de l'image" #: f.retouch.cc:1157 msgid "low" -msgstr "bas" +msgstr "faible" #: f.retouch.cc:1159 msgid "high" -msgstr "haut" +msgstr "haute" #: f.retouch.cc:1162 msgid "Amplify" -msgstr "Amplifier" +msgstr "Intensifier" #: f.retouch.cc:1497 msgid "Flatten Brightness Distribution" -msgstr "Aplanir la luminosité" +msgstr "Aplatir la répartition de la luminosité" #: f.retouch.cc:1511 msgid "Flatten" -msgstr "Aplanir" +msgstr "Aplatir" #: f.retouch.cc:1515 msgid "Deband" -msgstr "" +msgstr "Détendre" #: f.retouch.cc:1781 msgid "Expand Brightness Range" -msgstr "Etend la luminosité" +msgstr "Étendre la plage de luminosité" #: f.retouch.cc:1783 msgid "bright pixels" msgstr "Pixels lumineux" -#: f.retouch.cc:1983 +#: f.retouch.cc:1980 msgid "Ramp brightness across image" -msgstr "Corriger la luminosité" +msgstr "Corriger la luminosité à travers l'image" -#: f.retouch.cc:2363 f.retouch.cc:2600 f.tools.cc:5242 +#: f.retouch.cc:2360 f.retouch.cc:2597 f.tools.cc:5261 msgid "Edit function must be active" msgstr "La fonction d'édition doit être active" -#: f.retouch.cc:2371 fotoxx-13.08.cc:2867 +#: f.retouch.cc:2368 fotoxx-13.09.cc:2905 msgid "" "Select area cannot be kept.\n" "Continue?" msgstr "" -"Impossible de conserver la sélection de la zone.\n" -"Voulez-vous continuer ?" +"Impossible de conserver la sélection de zone.\n" +"Voulez-vous continuer?" -#: f.retouch.cc:2400 +#: f.retouch.cc:2397 msgid "power: center" -msgstr "Puissance : Centre" +msgstr "Puissance: Centre" -#: f.retouch.cc:2405 +#: f.retouch.cc:2402 msgid "reset area" msgstr "Réinitialiser la zone" -#: f.retouch.cc:2593 +#: f.retouch.cc:2590 msgid "Edit Function Amplifier" -msgstr "Editer l'amplitude" +msgstr "Éditer l'Amplificateur de Fonction" -#: f.retouch.cc:2629 +#: f.retouch.cc:2626 msgid "minimum" -msgstr "" +msgstr "minimum" -#: f.retouch.cc:2631 +#: f.retouch.cc:2628 msgid "maximum" -msgstr "" +msgstr "maximum" #: f.tools.cc:93 msgid "" "Synchronize Files makes gallery windows fast \n" "and enables metadata functions to work correctly.\n" msgstr "" -"La synchronisation des fichiers rend la galerie plus rapide \n" -"et permet le travail correct des fonctions des métadonnées. \n" +"La synchronisation des fichiers accélère l'affichage des fenêtres de la " +"Galerie \n" +"et permet aux fonctions de métadonnées de fonctionner correctement.\n" #: f.tools.cc:104 f.tools.cc:300 msgid "no top image directory is defined" -msgstr "Pas de répertoire racine d'images défini" +msgstr "Aucun répertoire racine d'images défini" #: f.tools.cc:114 msgid "top image directory is invalid" -msgstr "Répertoire racine d'image invalide" +msgstr "Répertoire racine d'images incorrect" #: f.tools.cc:125 f.tools.cc:333 msgid "thumbnail directory is invalid" -msgstr "Répertoire des vignettes invalide" +msgstr "Répertoire des miniatures incorrect" #: f.tools.cc:135 msgid "no search index file is present" -msgstr "Pas de fichier d'index présent" +msgstr "Aucun fichier d'index présent" #: f.tools.cc:139 msgid "last file sync time is unknown" -msgstr "Dernière synchronisation de fichier inconnue" +msgstr "L'heure de la dernière synchronisation de fichiers est inconnue" #: f.tools.cc:161 msgid "new/modified files are present" @@ -2896,23 +3146,23 @@ #: f.tools.cc:167 msgid "file sync disabled" -msgstr "" +msgstr "Synchronisation des fichiers désactivée" #: f.tools.cc:168 msgid "file sync not needed" -msgstr "Synchronisation de fichier non nécessaire" +msgstr "Synchronisation des fichiers inutile" #: f.tools.cc:193 msgid "Top Image Directories:" -msgstr "Répertoire racine :" +msgstr "Répertoires d'images racines:" #: f.tools.cc:197 msgid "add directory" -msgstr "Ajouter un répertoire" +msgstr "Ajouter le répertoire" #: f.tools.cc:202 msgid "Use file sync function (recommended)" -msgstr "Utiliser la fonction de synchronisation (recommandé)" +msgstr "Utiliser la synchronisation des fichiers (recommandé)" #: f.tools.cc:205 msgid "(if NO, metadata functions are disabled)" @@ -2920,910 +3170,979 @@ #: f.tools.cc:212 msgid "Thumbnail Options:" -msgstr "Options des vignettes :" +msgstr "Options des miniatures:" #: f.tools.cc:213 msgid "None (galleries are slow)" -msgstr "Sans (la gallerie est lente)" +msgstr "Aucun (Galerie lentes)" #: f.tools.cc:214 msgid "Use hidden directories with images" -msgstr "Utilisez des répertoires cachés d'images" +msgstr "Utiliser les répertoires masqués avec des images" #: f.tools.cc:215 msgid "Use Directory" -msgstr "Utiliser le répertoire" +msgstr "Utiliser le Répertoire" #: f.tools.cc:220 msgid "Initialize Everything" -msgstr "Tout initialiser" +msgstr "Tout réinitialiser" #: f.tools.cc:262 msgid "File sync is necessary. Cancel anyway?" -msgstr "La synchronisation de fichier est nécessaire. Annuler tout de même ?" +msgstr "Synchronisation des fichiers nécessaire. Abandonner tout de même?" #: f.tools.cc:308 msgid "directory is invalid" -msgstr "Répertoire invalide" +msgstr "Répertoire incorrect" #: f.tools.cc:325 msgid "select a thumbnail option" -msgstr "Sélectionner une option de vignette" +msgstr "Sélectionner une option de miniature" #: f.tools.cc:348 msgid "thumbnail directory cannot be under top directory" -msgstr "Le répertoire de vignettes ne peut être dans le répertoire racine" +msgstr "" +"Le répertoire des miniatures ne peut se trouver dans le répertoire racine" #: f.tools.cc:394 msgid "Synchronize Files (may need some time)" -msgstr "Synchroniser les fichiers (peut prendre du temps)" +msgstr "Synchronisation des fichiers (peut prendre un certain temps)" #: f.tools.cc:404 msgid "delete all thumbnails" -msgstr "Supprimer toutes les vignettes" +msgstr "Suppression de toutes les miniatures" #: f.tools.cc:416 msgid "delete orphan thumbnails" -msgstr "Supprimer les vignettes orphelines" +msgstr "Suppression des miniatures orphelines" #: f.tools.cc:475 #, c-format msgid "%d orphan thumbnails deleted \n" -msgstr "%d vignettes orphelines supprimées \n" +msgstr "%d miniatures orphelines supprimées \n" #: f.tools.cc:486 msgid "create missing and update stale thumbnails" -msgstr "Créer les manquantes et mettre à jour les anciennes" +msgstr "Création des miniatures manquantes et mise à jour des obsolètes" -#: f.tools.cc:542 +#: f.tools.cc:548 #, c-format msgid "%d thumbnails created, %d errors \n" -msgstr "%d vignettes crées, %d erreurs \n" +msgstr "%d miniatures créées, %d erreurs \n" -#: f.tools.cc:553 +#: f.tools.cc:559 msgid "no search index file is in use" -msgstr "Pas de fichier de recherche d'index en cours d'utilisation" +msgstr "Aucun fichier d'index de recherche en cours d'utilisation" -#: f.tools.cc:554 f.tools.cc:561 f.tools.cc:897 +#: f.tools.cc:560 f.tools.cc:567 f.tools.cc:910 msgid "COMPLETED" -msgstr "TERMINE" +msgstr "COMPLÉTÉ" -#: f.tools.cc:566 +#: f.tools.cc:572 msgid "rebuild search index" -msgstr "Reconstruire l'index de recherche" +msgstr "Reconstruction de l'index de recherche" -#: f.tools.cc:585 +#: f.tools.cc:591 #, c-format msgid "%d current index records found \n" -msgstr "%d enregistrements d'index trouvés \n" +msgstr "%d rapports d'index actuels trouvés \n" -#: f.tools.cc:589 +#: f.tools.cc:595 msgid "find all image files and build index records" -msgstr "" -"Rechercher tous les fichiers image et construire les enregistrements d'index" +msgstr "Recherche de toutes les images et construction des rapports d'index" -#: f.tools.cc:615 +#: f.tools.cc:621 msgid "too many image files" msgstr "Trop de fichiers image" -#: f.tools.cc:642 +#: f.tools.cc:648 #, c-format msgid "found %d image files \n" -msgstr "Trouvé %d fichiers image \n" +msgstr "%d fichiers image trouvés \n" -#: f.tools.cc:647 +#: f.tools.cc:653 msgid "merging old and new index records" -msgstr "Fusionner l'ancien et le nouveau enregistrement d'index" +msgstr "Fusion des anciens et des nouveaux rapports d'index" -#: f.tools.cc:697 +#: f.tools.cc:703 #, c-format msgid "files found in current index recs: %d \n" -msgstr "Fichiers trouvés dans l'actuel enregistrement d'index : %d \n" +msgstr "Fichiers trouvés dans les rapports d'index actuels: %d \n" -#: f.tools.cc:715 +#: f.tools.cc:721 msgid "updating index records" -msgstr "Mise à jour des enregistrements d'index" +msgstr "Mise à jour des rapports d'index" -#: f.tools.cc:889 +#: f.tools.cc:902 #, c-format msgid "%d image files updated \n" msgstr "%d fichiers image mis à jour \n" -#: f.tools.cc:909 +#: f.tools.cc:922 msgid "KILLED" -msgstr "ARRETER" +msgstr "ÉLIMINÉ" -#: f.tools.cc:1047 +#: f.tools.cc:1060 msgid "Settings" msgstr "Paramètres" -#: f.tools.cc:1050 +#: f.tools.cc:1063 msgid "Startup Display" -msgstr "Démarrer l'affichage" +msgstr "Afficher au démarrage" -#: f.tools.cc:1072 +#: f.tools.cc:1085 msgid "Recent Files Gallery" -msgstr "Fichiers galerie récents" +msgstr "Galerie des fichiers récents" -#: f.tools.cc:1073 +#: f.tools.cc:1086 msgid "Newest Files Gallery" -msgstr "" +msgstr "Galerie des derniers fichiers" -#: f.tools.cc:1074 +#: f.tools.cc:1087 msgid "Previous Image Viewed" -msgstr "Dernière image vue " +msgstr "Image précédemment visionnée" -#: f.tools.cc:1075 +#: f.tools.cc:1088 msgid "Blank Window" -msgstr "Fenêtre blanche" +msgstr "Fenêtre vierge" -#: f.tools.cc:1076 +#: f.tools.cc:1089 msgid "Directory Gallery" -msgstr "Répertoire de galerie" +msgstr "Répertoire de la Galerie" -#: f.tools.cc:1077 +#: f.tools.cc:1090 msgid "Image File" -msgstr "Image" +msgstr "Fichier image" -#: f.tools.cc:1093 +#: f.tools.cc:1106 msgid "Menu Style" -msgstr "Style du menu" +msgstr "Style du Menu" -#: f.tools.cc:1095 +#: f.tools.cc:1108 msgid "Classic" -msgstr "Classique" +msgstr "Standard" -#: f.tools.cc:1096 +#: f.tools.cc:1109 msgid "Vertical" msgstr "Vertical" -#: f.tools.cc:1098 +#: f.tools.cc:1111 msgid "Toolbar Style" msgstr "Style de la barre d'outils" -#: f.tools.cc:1101 +#: f.tools.cc:1114 msgid "Icons" msgstr "Icônes" -#: f.tools.cc:1102 +#: f.tools.cc:1115 msgid "Both" msgstr "Les deux" -#: f.tools.cc:1104 +#: f.tools.cc:1117 msgid "Image Pan" -msgstr "Panoramique" +msgstr "Déplacement dans l'image" -#: f.tools.cc:1106 +#: f.tools.cc:1119 msgid "Drag" -msgstr "" +msgstr "Glisser" -#: f.tools.cc:1107 +#: f.tools.cc:1120 msgid "Scroll" -msgstr "" +msgstr "Faire défiler" -#: f.tools.cc:1108 +#: f.tools.cc:1121 msgid "Magnified" -msgstr "" +msgstr "Amplifié" -#: f.tools.cc:1111 +#: f.tools.cc:1124 msgid "Warn Overwrite Original" -msgstr "Avertir avant d'écraser l'original" +msgstr "Avertir en cas d'écrasement" -#: f.tools.cc:1114 +#: f.tools.cc:1127 msgid "Default JPEG quality" -msgstr "" +msgstr "Qualité JPEG par défaut" + +#: f.tools.cc:1131 +msgid "Zooms for 200%" +msgstr "Zooms à 200%" + +#: f.tools.cc:1142 +msgid "RAW command" +msgstr "Commande RAW" + +#: f.tools.cc:1145 +msgid "RAW file types" +msgstr "Type de fichier RAW" -#: f.tools.cc:1261 +#: f.tools.cc:1274 msgid "startup directory is invalid" -msgstr "Répertoire de démarrage invalide" +msgstr "Répertoire de démarrage incorrect" -#: f.tools.cc:1269 +#: f.tools.cc:1282 msgid "startup file is invalid" -msgstr "Fichier de démarrage invalide" +msgstr "Fichier de démarrage incorrect" -#: f.tools.cc:1368 +#: f.tools.cc:1381 msgid "Select startup directory" msgstr "Sélectionner le répertoire de démarrage" -#: f.tools.cc:1376 +#: f.tools.cc:1389 msgid "Select startup image file" -msgstr "Sélectionner l'image de démarrage" +msgstr "Sélectionner le fichier image de démarrage" -#: f.tools.cc:1414 +#: f.tools.cc:1427 msgid "Click list position. Click thumbnail to add." -msgstr "" +msgstr "Cliquer sur l'endroit de la liste. Cliquer sur la miniature à ajouter." -#: f.tools.cc:1439 f.tools.cc:1654 +#: f.tools.cc:1452 f.tools.cc:1667 msgid "Edit Bookmarks" -msgstr "" +msgstr "Éditer les signets" -#: f.tools.cc:1585 +#: f.tools.cc:1598 msgid "unable to save bookmarks file" -msgstr "" +msgstr "Impossible d'enregistrer le fichier des signets" -#: f.tools.cc:1654 +#: f.tools.cc:1667 msgid "Go To Bookmark" -msgstr "" +msgstr "Aller au signet" -#: f.tools.cc:1800 +#: f.tools.cc:1811 msgid "Edit KB Shortcuts" -msgstr "" +msgstr "Éditer les Raccourcis Clavier" -#: f.tools.cc:1805 +#: f.tools.cc:1816 msgid "shortcut key:" -msgstr "" +msgstr "Touche de raccourci:" -#: f.tools.cc:1806 +#: f.tools.cc:1817 msgid "(enter keys)" -msgstr "" +msgstr "(saisir les touches)" -#: f.tools.cc:1932 +#: f.tools.cc:1943 #, c-format msgid "\"%s\" Reserved, cannot be used" -msgstr "" +msgstr "\"%s\" Réservé, inutilisable" -#: f.tools.cc:2084 +#: f.tools.cc:2095 msgid "unable to save KB-shortcuts file" -msgstr "" +msgstr "Impossible d'enregistrer le fichier des Raccourcis Clavier" -#: f.tools.cc:2154 +#: f.tools.cc:2165 msgid "" "Right-click collection thumbnails to \n" "cut/copy to cache, paste cache, remove." msgstr "" +"Cliquer droit sur les miniatures de la collection \n" +"afin de couper/copier vers le cache, \n" +"coller le cache, retirer." -#: f.tools.cc:2190 +#: f.tools.cc:2201 msgid "Start a new collection" -msgstr "" +msgstr "Débuter une nouvelle collection" -#: f.tools.cc:2192 +#: f.tools.cc:2203 msgid "Collection to view or edit" -msgstr "" +msgstr "Collection à afficher ou éditer" -#: f.tools.cc:2194 +#: f.tools.cc:2205 msgid "Select images, add to cache" -msgstr "" +msgstr "Sélectionner les images, ajouter au cache" -#: f.tools.cc:2196 +#: f.tools.cc:2207 msgid "Clear image cache" -msgstr "" +msgstr "Effacer le cache de l'image" -#: f.tools.cc:2198 +#: f.tools.cc:2209 msgid "Delete a collection" -msgstr "Effacer une collection" +msgstr "Supprimer une collection" -#: f.tools.cc:2221 +#: f.tools.cc:2232 msgid "New Collection" -msgstr "Nouvelle collection" +msgstr "Nouvelle Collection" -#: f.tools.cc:2222 +#: f.tools.cc:2233 msgid "Choose Collection" -msgstr "Choisir la collection" +msgstr "Choisir une collection" -#: f.tools.cc:2223 +#: f.tools.cc:2234 msgid "Delete Collection" -msgstr "Effacer la collection" +msgstr "Supprimer la collection" -#: f.tools.cc:2293 +#: f.tools.cc:2304 #, c-format msgid "delete %s ?" -msgstr "Effacer %s ?" +msgstr "supprimer %s ?" -#: f.tools.cc:2606 +#: f.tools.cc:2625 msgid "Move collection" msgstr "Déplacer la collection" -#: f.tools.cc:2609 +#: f.tools.cc:2628 msgid "collection name" -msgstr "Nom de la collection" +msgstr "Nom de la Collection" -#: f.tools.cc:2612 +#: f.tools.cc:2631 msgid "old top directory" msgstr "Ancien répertoire racine" -#: f.tools.cc:2615 +#: f.tools.cc:2634 msgid "new top directory" msgstr "Nouveau répertoire racine" -#: f.tools.cc:2662 +#: f.tools.cc:2681 msgid "completed" msgstr "Complété" -#: f.tools.cc:2752 +#: f.tools.cc:2771 msgid "Press ESC to exit slide show" -msgstr "ECHAP pour quitter le diaporama" +msgstr "Appuyer sur la touche Échap pour quitter le diaporama" -#: f.tools.cc:2753 +#: f.tools.cc:2772 msgid "latest versions only" -msgstr "Uniquement les versions les plus anciennes" +msgstr "Dernières versions uniquement" -#: f.tools.cc:2754 +#: f.tools.cc:2773 msgid "continuous loop" -msgstr "Boucle continue" +msgstr "En boucle" -#: f.tools.cc:2755 +#: f.tools.cc:2774 msgid "start with current image" -msgstr "" +msgstr "Démarrer avec l'image actuelle" -#: f.tools.cc:2759 +#: f.tools.cc:2778 msgid "arrow keys" -msgstr "Touche « flèches »" +msgstr "Touches fléchées" -#: f.tools.cc:2760 +#: f.tools.cc:2779 msgid "instant" msgstr "Instantané" -#: f.tools.cc:2761 +#: f.tools.cc:2780 msgid "fade-in" -msgstr "Fondu " +msgstr "Fondu" -#: f.tools.cc:2762 +#: f.tools.cc:2781 msgid "roll-right" msgstr "Rouleau à droite" -#: f.tools.cc:2763 +#: f.tools.cc:2782 msgid "roll-down" -msgstr "Rouleau en bas" +msgstr "Rouleau à gauche" -#: f.tools.cc:2764 +#: f.tools.cc:2783 msgid "shift-left" -msgstr "" +msgstr "Touche majuscule gauche" -#: f.tools.cc:2765 +#: f.tools.cc:2784 msgid "venetian" -msgstr "Vénitien" +msgstr "Store vénitien" -#: f.tools.cc:2766 +#: f.tools.cc:2785 msgid "grate" msgstr "Grille" -#: f.tools.cc:2767 +#: f.tools.cc:2786 msgid "rectangle" msgstr "Rectangle" -#: f.tools.cc:2768 +#: f.tools.cc:2787 msgid "radar" msgstr "Radar" -#: f.tools.cc:2769 +#: f.tools.cc:2788 msgid "jaws" -msgstr "Machoires" +msgstr "Mâchoires" -#: f.tools.cc:2770 +#: f.tools.cc:2789 msgid "ellipse" msgstr "Ellipse" -#: f.tools.cc:2771 +#: f.tools.cc:2790 msgid "raindrops" msgstr "Gouttes de pluie" -#: f.tools.cc:2781 f.tools.cc:3866 f.tools.cc:4444 -msgid "0 files selected" -msgstr "0 fichier(s) sélectionné(s)" - -#: f.tools.cc:2783 +#: f.tools.cc:2802 msgid "collection:" -msgstr "Collection :" +msgstr "Collection:" -#: f.tools.cc:2793 +#: f.tools.cc:2812 msgid "music file" -msgstr "Fichier musical" +msgstr "Fichier audio" -#: f.tools.cc:2801 +#: f.tools.cc:2820 msgid "transitions" msgstr "Transitions" -#: f.tools.cc:2803 +#: f.tools.cc:2822 msgid "seconds" msgstr "Secondes" -#: f.tools.cc:2854 f.tools.cc:3038 f.tools.cc:3060 +#: f.tools.cc:2873 f.tools.cc:3057 f.tools.cc:3079 msgid "no image files selected" -msgstr "Pas d'image sélectionnée" +msgstr "Aucun fichiers image sélectionnés" -#: f.tools.cc:3019 +#: f.tools.cc:3038 msgid "open collection" -msgstr "Ouvrir la collection" +msgstr "Ouvrir une collection" -#: f.tools.cc:3064 +#: f.tools.cc:3083 msgid "save as collection" -msgstr "Sauvegarder comme collection" +msgstr "Enregistrer comme collection" -#: f.tools.cc:3077 +#: f.tools.cc:3096 msgid "Select music file or playlist" -msgstr "Sélectionner le fichier musical ou la liste de lecture" +msgstr "Sélectionner un fichier audio ou une liste de lecture" -#: f.tools.cc:3868 +#: f.tools.cc:3887 msgid "new base name" -msgstr "Nouveau nom" +msgstr "Nouveau nom de base" -#: f.tools.cc:3871 +#: f.tools.cc:3890 msgid "starting sequence" -msgstr "Commence par" +msgstr "Séquence de départ" -#: f.tools.cc:3873 +#: f.tools.cc:3892 msgid "increment" -msgstr "Incrémente de" +msgstr "Incrémentation" -#: f.tools.cc:3927 +#: f.tools.cc:3946 msgid "new file already exists:" -msgstr "Un nouveau fichier existe toujours : " +msgstr "Le nouveau fichier existe déjà: " -#: f.tools.cc:3937 +#: f.tools.cc:3956 msgid "Rename failed:" -msgstr "Le renommage a échoué : " +msgstr "Échec du renommage: " -#: f.tools.cc:3982 +#: f.tools.cc:4001 msgid "base name / sequence / increment not reasonable" -msgstr "Une valeur est obligatoire" +msgstr "Nom de base / Séquence / Incrémentation incohérents" -#: f.tools.cc:4085 +#: f.tools.cc:4104 msgid "max. width" msgstr "Largeur max." -#: f.tools.cc:4090 +#: f.tools.cc:4109 msgid "no change" -msgstr "Pas de changement" +msgstr "aucune modification" -#: f.tools.cc:4093 +#: f.tools.cc:4112 msgid "new file type" msgstr "Nouveau type de fichier" -#: f.tools.cc:4094 +#: f.tools.cc:4113 msgid "same" -msgstr "Même" +msgstr "Identique" -#: f.tools.cc:4102 +#: f.tools.cc:4121 msgid "replace originals" msgstr "Remplacer les originaux" -#: f.tools.cc:4103 +#: f.tools.cc:4122 msgid "move to location" -msgstr "Déplacer vers" +msgstr "Exporter vers l'emplacement" -#: f.tools.cc:4104 +#: f.tools.cc:4123 msgid "remove EXIF" -msgstr "Enlever EXIF" +msgstr "Retirer EXIF" -#: f.tools.cc:4105 +#: f.tools.cc:4124 msgid "delete originals" -msgstr "Effacer les originaux" +msgstr "Supprimer les originaux" -#: f.tools.cc:4180 +#: f.tools.cc:4199 msgid "file already exists" -msgstr "Le fichier existe déjà" +msgstr "le fichier existe déjà" -#: f.tools.cc:4188 +#: f.tools.cc:4207 msgid "file type not supported" -msgstr "Type de fichier non supporté" +msgstr "Type de fichier non pris en charge" -#: f.tools.cc:4227 +#: f.tools.cc:4246 msgid "cannot create new file" -msgstr "Ne peux pas créer un nouveau fichier" +msgstr "Impossible de créer le nouveau fichier" -#: f.tools.cc:4351 +#: f.tools.cc:4370 msgid "replace original files?" -msgstr "Remplacer le fichier original ?" +msgstr "Remplacer les fichiers originaux" -#: f.tools.cc:4352 +#: f.tools.cc:4371 #, c-format msgid "replace original files? (max. %d x %d)" -msgstr "Remplacer les fichiers originaux ? (max. %d x %d)" +msgstr "Remplacer les fichiers originaux? (max. %d x %d)" -#: f.tools.cc:4360 +#: f.tools.cc:4379 #, c-format msgid "" "copy files? \n" " to location %s" msgstr "" -"Copier le fichier ? \n" -"à l'emplacement %s" +"Copier les fichiers? \n" +"vers l'emplacement %s" -#: f.tools.cc:4363 +#: f.tools.cc:4382 #, c-format msgid "" "copy files? (max. %d x %d) \n" " to location %s" msgstr "" -"Copier les fichiers ? (max. %d x %d) \n" +"Copier les fichiers? (max. %d x %d) \n" "vers l'emplacement %s" -#: f.tools.cc:4367 +#: f.tools.cc:4386 msgid "" "\n" " and delete originals" msgstr "" "\n" -"et effacer les originaux" +" et supprimer les originaux" -#: f.tools.cc:4380 +#: f.tools.cc:4399 msgid "location is not a valid directory" -msgstr "L'emplacement n'est pas un dossier valide" +msgstr "L'emplacement n'est pas un répertoire correct" -#: f.tools.cc:4387 +#: f.tools.cc:4406 #, c-format msgid "max. size %d x %d is not reasonable" -msgstr "La taille max. « %d x %d » est trop grande" +msgstr "Taille max. %d x %d incohérente" -#: f.tools.cc:4447 +#: f.tools.cc:4466 msgid "output file type" -msgstr "Type de fichier en sortie" +msgstr "Type de fichier de sortie" -#: f.tools.cc:4459 +#: f.tools.cc:4478 msgid "white balance" msgstr "Balance des blancs" -#: f.tools.cc:4460 +#: f.tools.cc:4479 msgid "interpolation" msgstr "Interpolation" -#: f.tools.cc:4461 +#: f.tools.cc:4480 msgid "color space" msgstr "Espace de couleur" -#: f.tools.cc:4462 +#: f.tools.cc:4481 msgid "gamma curve" -msgstr "Courbe du gamma" +msgstr "Courbe gamma" -#: f.tools.cc:4465 +#: f.tools.cc:4484 msgid "camera" -msgstr "Caméra" +msgstr "Appareil photo" -#: f.tools.cc:4466 +#: f.tools.cc:4485 msgid "fixed" -msgstr "Corrigé" +msgstr "défini" -#: f.tools.cc:4467 +#: f.tools.cc:4486 msgid "calculated" -msgstr "Calculé" +msgstr "calculé" + +#: f.tools.cc:4503 +msgid "default" +msgstr "Défaut" -#: f.tools.cc:4999 +#: f.tools.cc:4509 +msgid "defaults" +msgstr "Défauts" + +#: f.tools.cc:5018 msgid "x-spacing" -msgstr "x-interligne" +msgstr "x-espacement" -#: f.tools.cc:5000 +#: f.tools.cc:5019 msgid "x-count" -msgstr "x-compteur" +msgstr "x-nombre" -#: f.tools.cc:5001 +#: f.tools.cc:5020 msgid "x-enable" msgstr "x-activé" -#: f.tools.cc:5007 +#: f.tools.cc:5026 msgid "y-spacing" -msgstr "y-interligne" +msgstr "y-espacement" -#: f.tools.cc:5008 +#: f.tools.cc:5027 msgid "y-count" -msgstr "y-compteur" +msgstr "y-nombre" -#: f.tools.cc:5009 +#: f.tools.cc:5028 msgid "y-enable" msgstr "y-activé" -#: f.tools.cc:5016 +#: f.tools.cc:5035 msgid "x-offset" msgstr "x-décalage" -#: f.tools.cc:5020 +#: f.tools.cc:5039 msgid "y-offset" msgstr "y-décalage" -#: f.tools.cc:5444 +#: f.tools.cc:5463 msgid "" "Brightness should show a gradual ramp \n" "extending all the way to the edges." msgstr "" -"La luminosité devrait être progressive \n" -"en s'étendant tout le long jusqu'aux bords" +"La luminosité devrait être progressive, \n" +"s'étendant régulièrement d'un bord à l'autre." -#: f.tools.cc:5549 +#: f.tools.cc:5568 msgid "Available Translations" msgstr "Traductions disponibles" -#: f.tools.cc:5553 +#: f.tools.cc:5572 msgid "Set Language" -msgstr "Changer de langue" +msgstr "Définir la langue" -#: f.tools.cc:5653 +#: f.tools.cc:5672 msgid "Make Launcher" msgstr "Créer un lanceur" -#: fotoxx-13.08.cc:330 +#: fotoxx-13.09.cc:201 +msgid "Tab F: image file view/edit" +msgstr "Onglet F: Afficher/Éditer un fichier image" + +#: fotoxx-13.09.cc:208 +msgid "Tab G: image gallery" +msgstr "Onglet G: Galerie d'images" + +#: fotoxx-13.09.cc:215 +msgid "Tab W: world map" +msgstr "Onglet M: Mappemonde" + +#: fotoxx-13.09.cc:339 msgid "" "First time Fotoxx startup. \n" "Latest version: http://www.kornelix.com/fotoxx \n" "File sync process will begin (may need some time) \n" msgstr "" "Premier démarrage de Fotoxx. \n" -"Dernière version : http://www.kornelix.com/fotoxx \n" +"Dernière version: http://www.kornelix.com/fotoxx \n" "La synchronisation des fichiers va commencer (peut prendre un certain " "temps) \n" -#: fotoxx-13.08.cc:363 +#: fotoxx-13.09.cc:372 msgid "Please install missing programs:" -msgstr "Installer les programmes manquants :" +msgstr "Veuillez installer ce(s) programme(s) manquant(s):" -#: fotoxx-13.08.cc:816 -msgid "Location from World Map" -msgstr "Emplacement depuis la carte mondiale" +#: fotoxx-13.09.cc:686 +#, c-format +msgid " BUSY %d%c " +msgstr " OCCUPÉ %d%c " + +#: fotoxx-13.09.cc:688 +msgid " BUSY " +msgstr " OCCUPÉ" + +#: fotoxx-13.09.cc:745 +msgid " (reduced)" +msgstr " (réduit)" -#: fotoxx-13.08.cc:2500 +#: fotoxx-13.09.cc:753 +#, c-format +msgid " edits: %d" +msgstr " modifications: %d" + +#: fotoxx-13.09.cc:758 +msgid " menu locked" +msgstr " menu verrouillé" + +#: fotoxx-13.09.cc:759 +msgid " area active" +msgstr " zone active" + +#: fotoxx-13.09.cc:760 +msgid " dialog open" +msgstr " dialogue ouvert" + +#: fotoxx-13.09.cc:2538 msgid "Exceed 50 anchor points" -msgstr "Dépasse de 50 points d'ancrage" +msgstr "Excède 50 points d'ancrage" -#: fotoxx-13.08.cc:2681 +#: fotoxx-13.09.cc:2719 msgid "load curve from a file" -msgstr "Charger une courbe depuis un fichier" +msgstr "Charger la courbe depuis un fichier" -#: fotoxx-13.08.cc:2735 +#: fotoxx-13.09.cc:2773 msgid "curve file is invalid" -msgstr "Le fichier de courbe est invalide" +msgstr "Fichier de courbes incorrect" -#: fotoxx-13.08.cc:2740 +#: fotoxx-13.09.cc:2778 msgid "curve file has different no. of curves" -msgstr "Le fichier de courbe a de différents numéro de courbes" +msgstr "Le fichier de courbes comporte un nombre différent de courbes" -#: fotoxx-13.08.cc:2755 +#: fotoxx-13.09.cc:2793 msgid "save curve to a file" -msgstr "Sauvegarder la courbe dans un fichier" +msgstr "Enregistrer les courbes dans un fichier" -#: fotoxx-13.08.cc:2853 fotoxx-13.08.cc:3380 fotoxx-13.08.cc:3395 +#: fotoxx-13.09.cc:2891 fotoxx-13.09.cc:3417 fotoxx-13.09.cc:3432 msgid "prior function still active" -msgstr "Fonction antérieure toujours active" +msgstr "Fonction antérieure encore active" -#: fotoxx-13.08.cc:2860 +#: fotoxx-13.09.cc:2898 msgid "Too many edits, please save image" -msgstr "Trop d'éditions, veuillez enregistrer l'image" +msgstr "Trop de modifications, veuillez sauvegarder l'image" -#: fotoxx-13.08.cc:2875 +#: fotoxx-13.09.cc:2913 msgid "" "Select area not active.\n" "Continue?" msgstr "" -"La zone sélectionnée n'est \n" -"pas active. Continuer ?" +"La sélection de zone n'est pas active.\n" +"Continuer?" -#: fotoxx-13.08.cc:3350 +#: fotoxx-13.09.cc:3387 msgid "Discard edits?" -msgstr "Abandonner les éditions ?" +msgstr "Abandonner les modifications?" -#: fotoxx-13.08.cc:3351 +#: fotoxx-13.09.cc:3388 msgid "This action will discard changes\n" -msgstr "Cette action va annuler les changements\n" +msgstr "Cette action va annuler les modifications\n" -#: fotoxx-13.08.cc:3352 fotoxx.h:973 +#: fotoxx-13.09.cc:3389 fotoxx.h:994 msgid "Keep" msgstr "Conserver" -#: fotoxx-13.08.cc:3353 +#: fotoxx-13.09.cc:3390 msgid "Discard" msgstr "Abandonner" -#: fotoxx-13.08.cc:4054 +#: fotoxx-13.09.cc:4088 #, c-format msgid "" "warning: real memory %d MB < required %d MB \n" "response time may become very long \n" msgstr "" -"Attention : mémoire réelle %d MB < nécessaire %d MB \n" -"le temps de réponse peut devenir très long \n" +"Attention: La mémoire réelle de %d Mo < aux %d Mo requis \n" +"Le temps de réponse risque d'être long \n" -#: fotoxx.h:936 +#: fotoxx.h:955 msgid "Add All" msgstr "Tout ajouter" -#: fotoxx.h:938 +#: fotoxx.h:957 msgid "Amount" msgstr "Quantité" -#: fotoxx.h:939 +#: fotoxx.h:958 +msgid "Angle" +msgstr "Angle" + +#: fotoxx.h:959 msgid "Apply" msgstr "Appliquer" -#: fotoxx.h:940 +#: fotoxx.h:960 msgid "Autocomplete" -msgstr "Autocomplétion" +msgstr "Complétion automatique" -#: fotoxx.h:941 +#: fotoxx.h:961 msgid "Black" msgstr "Noir" -#: fotoxx.h:942 +#: fotoxx.h:962 msgid "Blend Width" -msgstr "Largeur du fondu" +msgstr "Dosage du mélange" -#: fotoxx.h:944 +#: fotoxx.h:964 msgid "Brightness" msgstr "Luminosité" -#: fotoxx.h:945 +#: fotoxx.h:965 msgid "Browse" msgstr "Parcourir" -#: fotoxx.h:946 +#: fotoxx.h:966 msgid "Cancel" msgstr "Annuler" -#: fotoxx.h:947 +#: fotoxx.h:967 msgid "Choose" msgstr "Choisir" -#: fotoxx.h:948 +#: fotoxx.h:968 msgid "Clear" msgstr "Effacer" -#: fotoxx.h:950 +#: fotoxx.h:970 msgid "Contrast" msgstr "Contraste" -#: fotoxx.h:952 +#: fotoxx.h:972 msgid "Curve File:" -msgstr "Fichier de courbes :" +msgstr "Fichier de courbes:" -#: fotoxx.h:953 +#: fotoxx.h:973 msgid "Cut" msgstr "Couper" -#: fotoxx.h:954 +#: fotoxx.h:974 msgid "Darker Areas" -msgstr "Zones sombres" +msgstr "Zones plus sombres" -#: fotoxx.h:957 +#: fotoxx.h:977 msgid "Done" -msgstr "Ok" +msgstr "Terminé" -#: fotoxx.h:958 +#: fotoxx.h:978 msgid "Edit" -msgstr "Editer" +msgstr "Éditer" -#: fotoxx.h:960 +#: fotoxx.h:980 msgid "Erase" msgstr "Effacer" -#: fotoxx.h:961 +#: fotoxx.h:981 msgid "Fetch" -msgstr "Réception" +msgstr "Atteindre" -#: fotoxx.h:962 +#: fotoxx.h:982 msgid "Find" -msgstr "Trouver" +msgstr "Rechercher" -#: fotoxx.h:963 +#: fotoxx.h:983 msgid "Finish" -msgstr "Terminer" +msgstr "Finir" -#: fotoxx.h:964 +#: fotoxx.h:984 msgid "Font" msgstr "Police" -#: fotoxx.h:966 +#: fotoxx.h:985 +msgid "Geotags" +msgstr "Balises de géolocalisation" + +#: fotoxx.h:987 msgid "Height" msgstr "Hauteur" -#: fotoxx.h:968 +#: fotoxx.h:989 msgid "histogram" msgstr "Histogramme" -#: fotoxx.h:970 +#: fotoxx.h:991 msgid "Images" -msgstr "" +msgstr "Images" -#: fotoxx.h:971 +#: fotoxx.h:992 msgid "Insert" msgstr "Insérer" -#: fotoxx.h:974 +#: fotoxx.h:995 msgid "Lighter Areas" -msgstr "Zones lumineuses" +msgstr "Zones plus claires" -#: fotoxx.h:975 +#: fotoxx.h:996 msgid "limit" msgstr "Limiter" -#: fotoxx.h:977 +#: fotoxx.h:998 msgid "Negative" -msgstr "" +msgstr "Négatif" -#: fotoxx.h:978 +#: fotoxx.h:999 msgid "New" msgstr "Nouveau" -#: fotoxx.h:980 +#: fotoxx.h:1001 msgid "search index file missing" -msgstr "Rechercher le fichier d'index manquant" +msgstr "Fichier d'index manquant" -#: fotoxx.h:981 +#: fotoxx.h:1002 msgid "OK" -msgstr "Ok" +msgstr "Valider" -#: fotoxx.h:983 +#: fotoxx.h:1004 msgid "Open RAW File" -msgstr "Ouvrir une image RAW" +msgstr "Ouvrir un fichier RAW" -#: fotoxx.h:985 +#: fotoxx.h:1006 msgid "Pause" msgstr "Pause" -#: fotoxx.h:986 +#: fotoxx.h:1007 msgid "Percent" -msgstr "Pourcentage" +msgstr "Pour-cent" -#: fotoxx.h:987 +#: fotoxx.h:1008 msgid "Presets" -msgstr "Réglages" +msgstr "Pré-réglages" -#: fotoxx.h:989 +#: fotoxx.h:1010 msgid "Proceed" -msgstr "Démarrer" +msgstr "Effectuer" -#: fotoxx.h:991 +#: fotoxx.h:1012 msgid "range" msgstr "Plage" -#: fotoxx.h:994 +#: fotoxx.h:1015 msgid "Reduce" msgstr "Réduire" -#: fotoxx.h:997 +#: fotoxx.h:1018 msgid "Reset" msgstr "Réinitialiser" -#: fotoxx.h:1000 +#: fotoxx.h:1021 msgid "Unknown file type, save as tiff/jpeg/png to edit" msgstr "" -"Type de fichier inconnu. Enregistrez le au format TIFF/JPEG/PNG pour l'éditer" +"Type de fichier inconnu. Enregistrer au format tiff/jpeg/png pour l'éditer" -#: fotoxx.h:1001 +#: fotoxx.h:1022 msgid "Search" msgstr "Rechercher" -#: fotoxx.h:1005 +#: fotoxx.h:1026 +msgid "Size" +msgstr "Taille" + +#: fotoxx.h:1027 msgid "Start" msgstr "Démarrer" -#: fotoxx.h:1006 +#: fotoxx.h:1028 msgid "Threshold" msgstr "Seuil" -#: fotoxx.h:1007 +#: fotoxx.h:1029 #, c-format msgid "exceed %d files" -msgstr "excède %d fichiers" +msgstr "Excède %d fichiers" -#: fotoxx.h:1009 +#: fotoxx.h:1031 msgid "Undo All" -msgstr "Tout annuler" +msgstr "Tout Annuler" -#: fotoxx.h:1010 +#: fotoxx.h:1032 msgid "Undo Last" -msgstr "Annuler le dernier" +msgstr "Annuler préc." -#: fotoxx.h:1012 +#: fotoxx.h:1034 msgid "Unfinish" -msgstr "Inachevé" +msgstr "Ne pas finir" -#: fotoxx.h:1014 +#: fotoxx.h:1036 msgid "View" -msgstr "Vue" +msgstr "Afficher" -#: fotoxx.h:1015 +#: fotoxx.h:1037 msgid "Web" -msgstr "Internet" +msgstr "Web" -#: fotoxx.h:1016 +#: fotoxx.h:1038 msgid "White" msgstr "Blanc" -#: fotoxx.h:1018 +#: fotoxx.h:1040 msgid "Map" -msgstr "Carte" +msgstr "Mappemonde" #: zfuncs.cc:4088 msgid "user guide not found" -msgstr "" +msgstr "Manuel utilisateur introuvable" -#: zfuncs.cc:4504 zfuncs.cc:10210 +#: zfuncs.cc:4504 zfuncs.cc:10284 #, c-format msgid "cannot open file %s" msgstr "Impossible d'ouvrir le fichier %s" @@ -3832,97 +4151,101 @@ msgid "save screen to file" msgstr "Enregistrer l'écran dans un fichier" -#: zfuncs.cc:8819 +#: zfuncs.cc:8891 msgid "No" msgstr "Non" -#: zfuncs.cc:8819 +#: zfuncs.cc:8891 msgid "Yes" msgstr "Oui" -#: zfuncs.cc:8898 zfuncs.cc:8938 zfuncs.cc:9277 zfuncs.cc:9595 zfuncs.cc:10323 -#: zfuncs.cc:10329 zfuncs.cc:10335 zfuncs.cc:10341 +#: zfuncs.cc:8970 zfuncs.cc:9012 zfuncs.cc:9351 zfuncs.cc:9669 zfuncs.cc:10397 +#: zfuncs.cc:10403 zfuncs.cc:10409 zfuncs.cc:10415 msgid "cancel" msgstr "Annuler" -#: zfuncs.cc:9239 +#: zfuncs.cc:9313 msgid "open" msgstr "Ouvrir" -#: zfuncs.cc:9244 +#: zfuncs.cc:9318 msgid "choose" msgstr "Choisir" -#: zfuncs.cc:9249 +#: zfuncs.cc:9323 msgid "save" msgstr "Enregistrer" -#: zfuncs.cc:9255 +#: zfuncs.cc:9329 msgid "open folder" -msgstr "Ouvrir le dossier" +msgstr "Ouvrir un dossier" -#: zfuncs.cc:9260 +#: zfuncs.cc:9334 msgid "create folder" msgstr "Créer un dossier" -#: zfuncs.cc:9266 +#: zfuncs.cc:9340 msgid "hidden" -msgstr "Caché" +msgstr "Masqué" + +#: zfuncs.cc:9344 +msgid "quality" +msgstr "Qualité" -#: zfuncs.cc:9327 +#: zfuncs.cc:9401 msgid "JPG quality 0-100" msgstr "Qualité JPG 0-100" -#: zfuncs.cc:9586 +#: zfuncs.cc:9660 #, c-format msgid "printed image width: %.1f height: %.1f cm" -msgstr "Image imprimée Largeur : %.1f cm Hauteur : %.1f cm" +msgstr "Largeur de l'image imprimée: %.1f Hauteur : %.1f cm" -#: zfuncs.cc:9595 +#: zfuncs.cc:9669 msgid "done" -msgstr "Terminé" +msgstr "terminé" -#: zfuncs.cc:9595 zfuncs.cc:9607 +#: zfuncs.cc:9669 zfuncs.cc:9681 msgid "margins" msgstr "Marges" -#: zfuncs.cc:9603 +#: zfuncs.cc:9677 msgid "top" msgstr "Haut" -#: zfuncs.cc:9604 +#: zfuncs.cc:9678 msgid "bottom" msgstr "Bas" -#: zfuncs.cc:9613 +#: zfuncs.cc:9687 msgid "image scale" -msgstr "Echelle de l'image" +msgstr "Échelle de l'image" -#: zfuncs.cc:9615 +#: zfuncs.cc:9689 msgid "percent" msgstr "pour cent" -#: zfuncs.cc:10097 +#: zfuncs.cc:10171 msgid "" "Initial parameters file created. \n" "Inspect and revise if necessary." msgstr "" -"Le fichier des paramètres initiaux a été crée. \n" +"Le fichier initial des paramètres a été crée. \n" "Vérifier et corriger si nécessaire." -#: zfuncs.cc:10113 +#: zfuncs.cc:10187 msgid "load parameters from a file" -msgstr "Charger les paramètres à partir d'un fichier" +msgstr "Charger les paramètres depuis un fichier" -#: zfuncs.cc:10182 +#: zfuncs.cc:10256 msgid "save parameters to a file" msgstr "Enregistrer les paramètres dans un fichier" -#: zfuncs.cc:10321 zfuncs.cc:10327 zfuncs.cc:10333 zfuncs.cc:10339 +#: zfuncs.cc:10395 zfuncs.cc:10401 zfuncs.cc:10407 zfuncs.cc:10413 msgid "edit parameters" -msgstr "Edition des paramètres" +msgstr "Éditer les paramètres" -#: zfuncs.cc:10322 zfuncs.cc:10328 +#: zfuncs.cc:10396 zfuncs.cc:10402 msgid "" "list\n" "all" @@ -3930,7 +4253,7 @@ "Lister\n" "Tous" -#: zfuncs.cc:10322 zfuncs.cc:10328 zfuncs.cc:10334 zfuncs.cc:10340 +#: zfuncs.cc:10396 zfuncs.cc:10402 zfuncs.cc:10408 zfuncs.cc:10414 msgid "" "load\n" "file" @@ -3938,15 +4261,15 @@ "Charger\n" "Fichier" -#: zfuncs.cc:10322 zfuncs.cc:10328 zfuncs.cc:10334 zfuncs.cc:10340 +#: zfuncs.cc:10396 zfuncs.cc:10402 zfuncs.cc:10408 zfuncs.cc:10414 msgid "" "save\n" "file" msgstr "" -"Enreg.\n" +"Enregistrer\n" "Fichier" -#: zfuncs.cc:10323 zfuncs.cc:10335 +#: zfuncs.cc:10397 zfuncs.cc:10409 msgid "" "add\n" "new" @@ -3954,769 +4277,598 @@ "Ajouter\n" "Nouveau" -#: zfuncs.cc:10323 zfuncs.cc:10329 zfuncs.cc:10335 zfuncs.cc:10341 +#: zfuncs.cc:10397 zfuncs.cc:10403 zfuncs.cc:10409 zfuncs.cc:10415 msgid "apply" msgstr "Appliquer" -#: zfuncs.cc:10376 +#: zfuncs.cc:10450 msgid "apply?" -msgstr "Appliquer ?" +msgstr "Appliquer?" -#: zfuncs.cc:10433 +#: zfuncs.cc:10507 msgid "(new parm name)" -msgstr "(Nouveaux paramètres)" +msgstr "(Nouveau nom de paramètres)" -#: zfuncs.cc:10433 +#: zfuncs.cc:10507 msgid "add parameter" -msgstr "Ajouter le paramètre" +msgstr "Ajouter un paramètre" -#~ msgid "image" -#~ msgstr "image" +#~ msgid "angle" +#~ msgstr "angle" -#~ msgid "Shift Colors" -#~ msgstr "Permuter la couleur" +#~ msgid "cmsCreateTransform() failed" +#~ msgstr "Échec à la créationtransformation() cms" -#~ msgid "Vignette Tool" -#~ msgstr "Outil Vignette" +#~ msgid "Save to New File Name or Type" +#~ msgstr "Enregistrer sous un Nouveau Nom ou Type de Fichier" -#~ msgid "Trim" -#~ msgstr "Recadrer" +#~ msgid "no plugin command" +#~ msgstr "Aucune commande de greffon" -#~ msgid "Transform" -#~ msgstr "Transformer" +#~ msgid "User Guide etc." +#~ msgstr "Manuel utilisateur etc." -#~ msgid "Trim Image" -#~ msgstr "Recadrer l'image" +#~ msgid "Edit Caption/Comments" +#~ msgstr "Éditer légendes et commentaires" -#~ msgid "Auto-Trim Image" -#~ msgstr "Recadrage automatique de l'image" +#~ msgid "Edit image caption or comment" +#~ msgstr "Éditer légende et commentaire de l'image" -#~ msgid "Write Text" -#~ msgstr "Ecrire du texte" +#~ msgid "Batch Tags" +#~ msgstr "Ajouter des balises par lots" -#~ msgid "Flip Image" -#~ msgstr "Retourner l'image" +#~ msgid "Gallery from Tab F" +#~ msgstr "Galerie à partir de la touche Tab F" -#~ msgid "Unbend Image" -#~ msgstr "Redresser" +#~ msgid "Save modified image to disk" +#~ msgstr "Enregistrer l'image modifiée sur le disque" -#~ msgid "Warp Image (area)" -#~ msgstr "Déformer l'image (zone)" +#~ msgid "jump to first page" +#~ msgstr "Aller à la première page" -#~ msgid "Warp Image (curved)" -#~ msgstr "Déformer l'image (courbé)" +#~ msgid "jump to last page" +#~ msgstr "Aller à la dernière page" -#~ msgid "Warp Image (linear)" -#~ msgstr "Déformer l'image (linéaire)" +#~ msgid "change sequence" +#~ msgstr "Changer la séquence" -#~ msgid "Warp Image (affine)" -#~ msgstr "Déformer l'image (affiné)" +#~ msgid "Edit Caption and Comments" +#~ msgstr "Éditer légende et commentaires" -#~ msgid "Sharpen Image" -#~ msgstr "Renforcer la netteté" +#~ msgid "image date (yyyymmdd)" +#~ msgstr "Date (aaaa-mm-jj)" -#~ msgid "Blur Image" -#~ msgstr "Ajouter du flou" +#~ msgid "use last" +#~ msgstr "Utiliser la dernière date" -#~ msgid "Paint Pixels" -#~ msgstr "Peindre les pixels" +#~ msgid "image stars" +#~ msgstr "Évaluation de l'image" -#~ msgid "Zoom-in (bigger)" -#~ msgstr "Agrandir" +#~ msgid "there are zero stuck pixels" +#~ msgstr "Aucuns pixels bloqués" -#~ msgid "Zoom-out (smaller)" -#~ msgstr "Réduire" +#~ msgid "Save Stuck Pixels" +#~ msgstr "Enregistrer les pixels bloqués" -#~ msgid "Select top image directory" -#~ msgstr "Sélectionner le répertoire d'images racine" +#~ msgid "Overwrite original file?" +#~ msgstr "Écraser le fichier original?" -#~ msgid "gold" -#~ msgstr "Or" +#~ msgid "Do not warn again" +#~ msgstr "Ne plus afficher l'avertissement" -#~ msgid "Turn upright or level tilted image" -#~ msgstr "Tourner en haut à droite ou niveau d'inclinaison" +#~ msgid "Warning" +#~ msgstr "Avertissement" -#~ msgid "start edit function first" -#~ msgstr "En premier, commencer l'édition" +#~ msgid "Save File" +#~ msgstr "Enregistrer le fichier" -#~ msgid "Start Trim function for each new image" -#~ msgstr "Démarrer le recadrage pour chaque nouvelle image" +#~ msgid "Save to Same File" +#~ msgstr "Enregistrer" -#~ msgid "previous" -#~ msgstr "Préc." +#~ msgid "Save to the same file (replace)" +#~ msgstr "Enregistrer (remplacer)" -#~ msgid "Retouch2" -#~ msgstr "Retoucher 2" +#~ msgid "Save to New Version" +#~ msgstr "Enregistrer une nouvelle version" -#~ msgid "Art" -#~ msgstr "Art" +#~ msgid "Save to a new (next) version" +#~ msgstr "Enregistrer une nouvelle (prochaine) version" -#~ msgid "Foreground Color" -#~ msgstr "Couleur de fond" +#~ msgid "Save to the same file" +#~ msgstr "Remplacer le fichier actuel" -#~ msgid "Selected Images Action" -#~ msgstr "Sélectionner l'action pour les images" +#~ msgid "Save+V" +#~ msgstr "Enreg.+V" -#~ msgid "Convert type, resize, move multiple files" -#~ msgstr "Convertit le type, redimensionne, déplace de mutiples fichiers" +#~ msgid "Save to a new file" +#~ msgstr "Enregistrer sous" -#~ msgid "Edit Tags" -#~ msgstr "Modifier les étiquettes" +#~ msgid "Save+F" +#~ msgstr "Enreg. sous" -#~ msgid "Edit any metadata" -#~ msgstr "Modifier n'importe quelle métadonnée" +#~ msgid "contrast" +#~ msgstr "Contraste" -#~ msgid "View a collection" -#~ msgstr "Visualiser une collection" +#~ msgid "outlines" +#~ msgstr "Contours" -#~ msgid "View Collection" -#~ msgstr "Visualiser la collection" +#~ msgid "pencil" +#~ msgstr "Crayon" -#~ msgid "Default ( .thumbnails with images)" -#~ msgstr "Défaut (.vignettes avec images)" +#~ msgid "chalk" +#~ msgstr "Craie" -#~ msgid "" -#~ "First time Fotoxx startup. \n" -#~ "Latest version: kornelix.com/fotoxx \n" -#~ "File sync process will begin (may need some time) \n" -#~ msgstr "" -#~ "Premier démarrage de Fotoxx. \n" -#~ "Dernière version : kornelix.com/fotoxx \n" -#~ "La synchronisation des fichiers va commencer (peut prendre du temps) \n" +#~ msgid "Add Image Outlines" +#~ msgstr "Ajouter les contours de l'image" -#~ msgid "" -#~ "When editing a collection, right-click \n" -#~ "an image or thumbnail to add or remove." -#~ msgstr "" -#~ "Lors de la modification d'une collection, clic droit \n" -#~ "sur une image ou une vignette pour ajouter ou supprimer" +#~ msgid "rename to" +#~ msgstr "Renommer en" -#~ msgid "Edit a collection" -#~ msgstr "Modifier une collection" +#~ msgid "previous" +#~ msgstr "Préc." -#~ msgid "Editing:" -#~ msgstr "Modification :" +#~ msgid "filespec too long:" +#~ msgstr "Spécifications de fichiers trop longues" -#~ msgid "Action:" -#~ msgstr "Action :" +#~ msgid "create tag" +#~ msgstr "Créer une balise" -#~ msgid "Edit Collection" -#~ msgstr "Modifier la collection" +#~ msgid "optional replacement" +#~ msgstr "Remplacement optionnel" -#~ msgid "add image to collection" -#~ msgstr "Ajouter une image à la collection" +#~ msgid "no tag specified" +#~ msgstr "Aucune balise spécifiée" -#~ msgid "remove image from collection" -#~ msgstr "Effacer l'image de la collection" +#~ msgid "View Info" +#~ msgstr "Afficher les informations" -#~ msgid "remove and save image" -#~ msgstr "Enlever et sauvegarder l'image" +#~ msgid "Edit Info" +#~ msgstr "Éditer les informations" -#~ msgid "insert saved images here" -#~ msgstr "Insérer ici les images sauvegardées" +#~ msgid "Delete Info" +#~ msgstr "Supprimer les informations" -#~ msgid "too many saved files" -#~ msgstr "Trop de fichiers sauvegardés" +#~ msgid "Search Tags, Comments, File Names" +#~ msgstr "Rechercher les balises, commentaires et noms de fichiers" -#~ msgid "Warp an area within an image" -#~ msgstr "Déformer une zone d'une image" +#~ msgid "file names" +#~ msgstr "Noms des fichiers" -#~ msgid "rename to" -#~ msgstr "Renommer en" +#~ msgid "No search index file present" +#~ msgstr "Aucun index de recherche présent" -#~ msgid "prev row" -#~ msgstr "Ligne précé." +#~ msgid "bigger" +#~ msgstr "Agrandir" -#~ msgid "prev page" -#~ msgstr "Page précé." +#~ msgid "smaller" +#~ msgstr "Réduire" + +#~ msgid "parent" +#~ msgstr "Parent" #~ msgid "first page" #~ msgstr "Première page" -#~ msgid "last page" -#~ msgstr "Dernière page" - -#~ msgid "" -#~ " Press the reduce button to \n" -#~ " reduce noise in small steps. \n" -#~ " Use undo to start over." -#~ msgstr "" -#~ " Appuyer sur [Réduire] pour atténuer \n" -#~ " le bruit par petites étapes. \n" -#~ " Utilisez [Undo] pour annuler." - -#~ msgid "algorithm" -#~ msgstr "Algorithme" - -#~ msgid "Annotate Image" -#~ msgstr "Annoter l'image" - -#~ msgid "Annotation File:" -#~ msgstr "Annoter le fichier" +#~ msgid "prev page" +#~ msgstr "Page précé." -#~ msgid "Convert RAW files" -#~ msgstr "Convertir des fichiers RAW" +#~ msgid "prev row" +#~ msgstr "Rangée précé." -#~ msgid "jump to first file" -#~ msgstr "Aller au premier fichier" +#~ msgid "ttip::next page" +#~ msgstr "ttip::page suivante" -#~ msgid "jump to last file" -#~ msgstr "Aller au dernier fichier" +#~ msgid "last page" +#~ msgstr "Dernière page" #~ msgid "close" #~ msgstr "Fermer" -#~ msgid "close image gallery" -#~ msgstr "Fermer la fenêtre des miniatures" - -#~ msgid "Program ufraw-batch is required" -#~ msgstr "Le logiciel « ufraw-batch » est requis." - -#~ msgid "Image Gallery" -#~ msgstr "Parcourir les miniatures" +#~ msgid "insert" +#~ msgstr "Insérer" -#~ msgid "Gallery" -#~ msgstr "Miniatures" +#~ msgid "color saturation" +#~ msgstr "Saturation des couleurs" #~ msgid "" -#~ "exiftool is not installed \n" -#~ "edited images will lose EXIF data" +#~ " Press the reduce button to \n" +#~ " reduce noise in small steps. \n" +#~ " Use undo to start over." #~ msgstr "" -#~ "Le paquetage « exiftool » n'est pas installé \n" -#~ "Les images modifiées perdront leurs données Exif" +#~ " Appuyer sur le bouton [Réduire] pour \n" +#~ " atténuer le bruit par degrés. \n" +#~ " Utiliser [Annuler] pour recommencer." -#~ msgid "package libimage-exiftool-perl is required" -#~ msgstr "Le paquetage « libimage-exiftool-perl » est requis" - -#~ msgid "View Info" -#~ msgstr "Afficher les informations" - -#~ msgid "Edit Info" -#~ msgstr "Modifier les informations" - -#~ msgid "Delete Info" -#~ msgstr "Supprimer les informations" - -#~ msgid "Search Tags, Comments, File Names" -#~ msgstr "Rechercher les étiquettes, commentaires et noms de fichiers" - -#~ msgid "file names" -#~ msgstr "Noms des fichiers" - -#~ msgid "View Info (short)" -#~ msgstr "Afficher les informations (résumé)" +#~ msgid "top hat filter by color" +#~ msgstr "Filtre Top-Hat par couleur" -#~ msgid "View Info (long)" -#~ msgstr "Afficher les informations (complet)" +#~ msgid "Edit Pixels" +#~ msgstr "Éditer les pixels" #~ msgid "pick" -#~ msgstr "Sélection" +#~ msgstr "Choisir" #~ msgid "erase" #~ msgstr "Supprimer" -#~ msgid "TIFF open failure" -#~ msgstr "Impossible d'ouvrir le fichier TIFF" - -#~ msgid "TIFF bits/color=%d not supported" -#~ msgstr "TIFF bits/color=%d n'est pas pris en charge" +#~ msgid "draw: freehand" +#~ msgstr "Dessiner à main levée" -#~ msgid "TIFF read failure" -#~ msgstr "Impossible de lire le fichier TIFF" +#~ msgid "match mouse color" +#~ msgstr "Couleur correspondante au pointeur" -#~ msgid "pixbuf write failure" -#~ msgstr "Échec d'écriture pixbuf" +#~ msgid "cannot open .tiff and .info files" +#~ msgstr "Impossible d'ouvrir les fichiers .tiff et .info" -#~ msgid "Lens Parameters" -#~ msgstr "Configuration de l'objectif" +#~ msgid "Select Whole Image" +#~ msgstr "Sélectionner l'image entière" -#~ msgid "my mouse" -#~ msgstr "Ma souris" +#~ msgid "" +#~ "When editing a collection, right-click \n" +#~ "an image or thumbnail to add or remove." +#~ msgstr "" +#~ "Lors de l'édition d'une collection, clic droit \n" +#~ "sur une image ou une vignette pour ajouter ou supprimer" -#~ msgid "create tag" -#~ msgstr "Créer une étiquette" +#~ msgid "Edit a collection" +#~ msgstr "Éditer une collection" -#~ msgid "Top Image Directory:" -#~ msgstr "Dossier d'images parent : " +#~ msgid "Editing:" +#~ msgstr "Édition:" -#~ msgid "lens name" -#~ msgstr "nom de la focale" +#~ msgid "Action:" +#~ msgstr "Action:" -#~ msgid "select new file" -#~ msgstr "Sélectionner un nouveau fichier" +#~ msgid "Edit Collection" +#~ msgstr "Éditer la collection" -#~ msgid "folder" -#~ msgstr "Dossier" +#~ msgid "View Collection" +#~ msgstr "Visualiser la collection" -#~ msgid "open a directory" -#~ msgstr "Ouvrir un dossier" +#~ msgid "add image to collection: %s" +#~ msgstr "Ajouter l'image à la collection: %s" -#~ msgid "select new folder" -#~ msgstr "Sélectionner un nouveau dossier" +#~ msgid "remove and save image" +#~ msgstr "retirer et enregistrer l'image" -#~ msgid "open a file" -#~ msgstr "Ouvrir un fichier" +#~ msgid "insert saved images here" +#~ msgstr "Insérer les images enregistrées ici" -#~ msgid "paper format is crazy" -#~ msgstr "Format de papier erroné" +#~ msgid "new max. width" +#~ msgstr "Nouvelle largeur max." -#~ msgid "paper format" -#~ msgstr "Format de papier" +#~ msgid "*** file type not supported" +#~ msgstr "*** type de fichier non pris en charge" -#~ msgid "printer ID" -#~ msgstr "ID de l'imprimante" +#~ msgid "Program ufraw-batch is required" +#~ msgstr "Le logiciel « ufraw-batch » est requis." -#~ msgid "print" -#~ msgstr "Imprimer" +#~ msgid "Select RAW files to convert" +#~ msgstr "Sélectionner les fichiers RAW à convertir" -#~ msgid "Time Interval" -#~ msgstr "Intervalle de temps" +#~ msgid "Choose file type" +#~ msgstr "Choisir le type de fichier" -#~ msgid "Whole Image" -#~ msgstr "Toute l'image" +#~ msgid "Sync Files is already running" +#~ msgstr "Synchronisation des fichiers déjà en cours d'exécution" -#~ msgid "random" -#~ msgstr "Aléatoire" +#~ msgid "" +#~ "Run Tools > Synchronize Files so that gallery windows \n" +#~ "will be fast and Search Images will work correctly. \n" +#~ "You can view (not edit) images while synchronize runs." +#~ msgstr "" +#~ "Menu Outils > Synchroniser les fichiers, de façon à ce que l'affichage " +#~ "des fenêtres \n" +#~ "de la galerie soit rapide et que la recherche des images fonctionne " +#~ "correctement.\n" +#~ "Il est possible de visualiser (pas d'éditer) les images durant la " +#~ "synchronisation." -#~ msgid "Clone fotoxx" -#~ msgstr "Cloner Fotoxx" +#~ msgid "max. height" +#~ msgstr "Hauteur max." -#~ msgid "Save As" -#~ msgstr "Enreg. sous" +#~ msgid "Monitor Check" +#~ msgstr "Contrôle d'écran" -#~ msgid "click on window to show RGB" -#~ msgstr "Cliquez sur la fenêtre pour afficher les couleurs RVB" +#~ msgid "Undo Trim" +#~ msgstr "Annuler Rogner" -#~ msgid "make new version" -#~ msgstr "Créer une nouvelle version" +#~ msgid "degrees: %.1f" +#~ msgstr "Degrés:  %.1f" -#~ msgid "Create Launcher" -#~ msgstr "Créer un lanceur" +#~ msgid "gold" +#~ msgstr "Or" -#~ msgid "area outline has a hole" -#~ msgstr "Le contour de la zone a un trou" +#~ msgid "Trim Image" +#~ msgstr "Rogner l'image" -#~ msgid "Font Colors" -#~ msgstr "Couleur de la police" +#~ msgid "invert" +#~ msgstr "inverser" -#~ msgid "Rebuild Thumbnails" -#~ msgstr "Reconstruire les miniatures" +#~ msgid "Annotate Image" +#~ msgstr "Annoter l'image" -#~ msgid "horizontal unbend" -#~ msgstr "Axe horizontal" +#~ msgid "" +#~ "Outline\n" +#~ " Width" +#~ msgstr "Épaisseur du contour" -#~ msgid "press ESC to exit" -#~ msgstr "Appuyer sur « Échap » pour quitter" +#~ msgid "Annotation File:" +#~ msgstr "Fichier d'annotation:" -#~ msgid "select by color:" -#~ msgstr "Sélection par couleurs : " +#~ msgid "Flip Image" +#~ msgstr "Miroir" -#~ msgid "select by mouse:" -#~ msgstr "Sélection avec la souris : " +#~ msgid "Clone 50/50" +#~ msgstr "Dupliquer 50/50" -#~ msgid "vertical unbend" -#~ msgstr "Axe vertical" +#~ msgid "Clone Overlay" +#~ msgstr "Dupliquer superposition" -#~ msgid "target group area" -#~ msgstr "Zone du groupe cible" +#~ msgid "Batch Rename Files" +#~ msgstr "Renommer des fichiers par lot" -#~ msgid "Area" -#~ msgstr "Zone" +#~ msgid "Batch Convert" +#~ msgstr "Convertir par lot" -#~ msgid "Constrain" -#~ msgstr "Contraindre" +#~ msgid "Check Monitor" +#~ msgstr "Vérifier l'écran" -#~ msgid "HDF" -#~ msgstr "HDF" +#~ msgid "Memory Usage" +#~ msgstr "Utilisation mémoire" -#~ msgid "HDR" -#~ msgstr "HDR" +#~ msgid "Select and Edit" +#~ msgstr "Sélectionner et Éditer" -#~ msgid "No tags index file" -#~ msgstr "Le fichier d'indexation des étiquettes n'existe pas." +#~ msgid "Transform" +#~ msgstr "Transformer" -#~ msgid "Rebuild Tags Index" -#~ msgstr "Reconstruire l'index des étiquettes" +#~ msgid "Blur Image" +#~ msgstr "Flou" -#~ msgid "Stack" -#~ msgstr "Empiler" +#~ msgid "Art" +#~ msgstr "Effets" -#~ msgid "Use F1 for context help" -#~ msgstr "Utiliser F1 pour l'aide contextuel" +#~ msgid "Outlines" +#~ msgstr "Contours" -#~ msgid "brightness to clip (percent)" -#~ msgstr "Luminosité à remplir (pourcentage)" +#~ msgid "Zoom-in (bigger)" +#~ msgstr "Zoom-avant (agrandir)" -#~ msgid "manage tags" -#~ msgstr "Gérer les étiquettes" +#~ msgid "Zoom-out (smaller)" +#~ msgstr "Zoom-arrière (réduire)" -#~ msgid "save select area as a file" -#~ msgstr "Enregistrer la zone sélectionnée en tant que fichier" +#~ msgid "Quit" +#~ msgstr "Quitter" -#~ msgid "tags index file error: %s" -#~ msgstr "" -#~ "Le fichier d'indexation des étiquettes \n" -#~ "retourne une erreur : %s" +#~ msgid "Fotoxx Essentials" +#~ msgstr "Principes de Fotoxx" -#~ msgid "Convert Tags !!!" -#~ msgstr "Convertir les étiquettes !!!" +#~ msgid "first time startup" +#~ msgstr "Premier démarrage" -#~ msgid "Convert tags to new standard" -#~ msgstr "Convertir les étiquettes vers le nouveau standard" +#~ msgid "cannot parallel edit" +#~ msgstr "Édition en parallèle impossible" #~ msgid "" -#~ "Convert tags to new standard now? \n" -#~ "Are your image files backed-up?" +#~ "exiftool is not installed \n" +#~ "edited images will lose EXIF data" #~ msgstr "" -#~ "Convertir maintenant les étiquettes vers le nouveau standard ? \n" -#~ "Vos images sont-elles sauvegardées ?" +#~ "Le paquet exiftool n'est pas installé \n" +#~ "Les images modifiées perdront leurs données Exif" #~ msgid "" -#~ "New tags file already exists! \n" -#~ "Proceed anyway?" +#~ "This action will discard current edits.\n" +#~ "Continue to discard edits.\n" +#~ "Go Back to keep edits." #~ msgstr "" -#~ "Le fichier des nouvelles étiquettes existe toujours ! \n" -#~ "Voulez vous continuer le processus ?" +#~ "Cette action va annuler les opérations actuelles.\n" +#~ "[Continuer] pour annuler les opérations.\n" +#~ "[Retour] pour les conserver." -#~ msgid "cannot read .dist file" -#~ msgstr "Impossible de lire le fichier .dist" +#~ msgid "Continue" +#~ msgstr "Continuer" -#~ msgid "new tags index will now be created" -#~ msgstr "" -#~ "Le nouveau fichier d'indexation des étiquettes \n" -#~ "va maintenant être créé." +#~ msgid "Go Back" +#~ msgstr "Retour" + +#~ msgid "TIFF open failure" +#~ msgstr "Erreur à l'ouverture du fichier TIFF" -#~ msgid "Edit Caption" -#~ msgstr "Modifier la légende" +#~ msgid "TIFF bits/color=%d not supported" +#~ msgstr "TIFF bits/color=%d non pris en charge" -#~ msgid "Edit Comments" -#~ msgstr "Modifier les commentaires" +#~ msgid "TIFF read failure" +#~ msgstr "Erreur de lecture du fichier TIFF" -#~ msgid "Discard modifications?" -#~ msgstr "Annuler les modifications ?" +#~ msgid "TIFF write failure" +#~ msgstr "Erreur d'écriture du fichier TIFF" -#~ msgid "transition" -#~ msgstr "Transition" +#~ msgid "pixbuf write failure" +#~ msgstr "Erreur d'écriture du pixbuf" + +#~ msgid "absolute" +#~ msgstr "absolu" + +#~ msgid "Commit" +#~ msgstr "Engager" #~ msgid "" -#~ "Rename failed \n" +#~ "Discard special gallery list? \n" #~ " %s" #~ msgstr "" -#~ "Le renommage a échoué \n" +#~ "Passer la liste de la Galerie? \n" #~ " %s" -#~ msgid "incremental" -#~ msgstr "Incrémental" - -#~ msgid "full rebuild" -#~ msgstr "Reconstruction complète" - -#~ msgid "Translate" -#~ msgstr "Traduire" - -#~ msgid "Select area first" -#~ msgstr "Sélectionnez une zone en premier." - -#~ msgid "new file already exists" -#~ msgstr "Un nouveau fichier existe toujours" - -#~ msgid "copy EXIF" -#~ msgstr "Copier les données EXIF" - -#~ msgid "new max. height" -#~ msgstr "Nouvelle hauteur max." - -#~ msgid "Batch Resize" -#~ msgstr "Redimensionner par lot" - -#~ msgid "Search results file error %s" -#~ msgstr "Erreur de fichier des résultats recherchés %s" - -#~ msgid "match" -#~ msgstr "Correspondance" - -#~ msgid "radius" -#~ msgstr "Radius" +#~ msgid "package libimage-exiftool-perl is required" +#~ msgstr "Le paquet libimage-exiftool-perl est requis" #~ msgid "Brightness Graph" #~ msgstr "Diagramme de luminosité" -#~ msgid "Fotoxx Essentials" -#~ msgstr "Guide de l'utilisateur" - -#~ msgid "too many files" -#~ msgstr "Trop de fichiers" - -#~ msgid "max. height" -#~ msgstr "Hauteur max." - -#~ msgid "E-mail Images" -#~ msgstr "Envoyer les images par adresse électronique" - -#~ msgid "draw: follow edge" -#~ msgstr "Dessiner : suivre les contours" - -#~ msgid "draw: freehand" -#~ msgstr "Dessiner : main levée" - -#~ msgid "" -#~ "Undo memory limit has been reached. \n" -#~ "Save work with [done], then resume editing." -#~ msgstr "" -#~ "L'annulation de la limite de mémoire a été atteinte. \n" -#~ "Enregistrer votre création avec le bouton [Ok], et résumer \n" -#~ "ensuite la modification." - -#~ msgid "Edit Pixels" -#~ msgstr "Modifier les pixels" - -#~ msgid "color saturation" -#~ msgstr "Saturation des couleurs" - -#~ msgid "cannot open thumbnail file" -#~ msgstr "Impossible d'ouvrir le fichier de miniatures" - -#~ msgid "Quit fotoxx" -#~ msgstr "Quitter Fotoxx" - -#~ msgid "degrees: %.1f" -#~ msgstr "Degrés :  %.1f" - -#~ msgid "Undo Trim" -#~ msgstr "Annuler Rogner" - -#~ msgid "Move Image to Trash" -#~ msgstr "Déplacer l'image vers la corbeille" - -#~ msgid "Redo One Edit" -#~ msgstr "Rétablir une modification" - -#~ msgid "Undo One Edit" -#~ msgstr "Annuler une modification" - -#~ msgid "Open Next File" -#~ msgstr "Afficher l'image suivante" - -#~ msgid "Check Monitor" -#~ msgstr "Vérifier l'écran" - -#~ msgid "Print Image File" -#~ msgstr "Imprimer une image" - -#~ msgid "Batch Rename Files" -#~ msgstr "Renommer des fichiers par lot" - -#~ msgid "Make Negative" -#~ msgstr "Négatif" - -#~ msgid "Select Whole Image" -#~ msgstr "Sélectionner toute l'image" - -#~ msgid "" -#~ "Linux standard trash is not supported. \n" -#~ "Desktop trash folder will be created." -#~ msgstr "" -#~ "La corbeille standard Linux n'est pas prise ne charge? \n" -#~ "Un dossier corbeille sera créé." - -#~ msgid "TIFF write failure" -#~ msgstr "Impossible d'écrire le fichier TIFF" - -#~ msgid "Quit" -#~ msgstr "Quit." +#~ msgid "radius" +#~ msgstr "Radius" -#~ msgid "Select RAW files to convert" -#~ msgstr "Sélectionner des fichiers RAW à convertir" +#~ msgid "match" +#~ msgstr "Correspondance" -#~ msgid "export to location" -#~ msgstr "Exporter vers l'emplacement" +#~ msgid "Search results file error %s" +#~ msgstr "Erreur de fichier des résultats recherchés %s" -#~ msgid "new max. width" -#~ msgstr "Nouvelle largeur max." +#~ msgid "Batch Resize" +#~ msgstr "Redimensionner par lot" -#~ msgid "filespec too long:" -#~ msgstr "Le fichier « filespec » est trop long" +#~ msgid "new max. height" +#~ msgstr "Nouvelle hauteur max." -#~ msgid "select files to rename" -#~ msgstr "Sélectionner les fichiers à renommer" +#~ msgid "copy EXIF" +#~ msgstr "Copier les données EXIF" -#~ msgid "smaller" -#~ msgstr "Plus petit" +#~ msgid "new file already exists" +#~ msgstr "Un nouveau fichier existe toujours" -#~ msgid "bigger" -#~ msgstr "Plus gros" +#~ msgid "Translate" +#~ msgstr "Traduire" -#~ msgid "The target file already exists" -#~ msgstr "Le fichier cible existe toujours" +#~ msgid "full rebuild" +#~ msgstr "Reconstruction complète" -#~ msgid "help file not found: %s" -#~ msgstr "Impossible de trouver le fichier d'aide : %s" +#~ msgid "incremental" +#~ msgstr "Incrémental" #~ msgid "" -#~ "file copy failed: \n" +#~ "Rename failed \n" #~ " %s" #~ msgstr "" -#~ "Echec de la copie du fichier: \n" -#~ "%s" - -#~ msgid "" -#~ "Rename failed: \n" +#~ "Le renommage a échoué \n" #~ " %s" -#~ msgstr "" -#~ "Echec du renommage: \n" -#~ "%s" -#~ msgid "top hat filter by color" -#~ msgstr "Filtre TopHat par couleur" - -#~ msgid "set median brightness by color" -#~ msgstr "Ajuster la luminosité médiane par couleur" - -#~ msgid "flatten outliers by color (2)" -#~ msgstr "Aplanir les extrêmes par couleur (2)" - -#~ msgid "flatten outliers by color (1)" -#~ msgstr "Aplanir les extrêmes par couleur (1)" +#~ msgid "Discard modifications?" +#~ msgstr "Annuler les modifications ?" -#~ msgid "Soften" -#~ msgstr "Adoucir" +#~ msgid "new tags index will now be created" +#~ msgstr "" +#~ "Le nouveau fichier d'indexation des étiquettes \n" +#~ "va maintenant être créé." #~ msgid "" -#~ "Press the reduce button to reduce noise \n" -#~ "in small steps. Use [Undo] to start over." +#~ "New tags file already exists! \n" +#~ "Proceed anyway?" #~ msgstr "" -#~ "Presser le bouton [Réduire] pour réduire le bruit \n" -#~ "par petites touches. Utiliser [Défaire] pour recommencer." - -#~ msgid "List of keyboard shortcuts" -#~ msgstr "Liste des raccourcis clavier" +#~ "Le fichier des nouvelles étiquettes existe toujours ! \n" +#~ "Voulez vous continuer le processus ?" #~ msgid "" -#~ "Outline\n" -#~ " Width" +#~ "Convert tags to new standard now? \n" +#~ "Are your image files backed-up?" #~ msgstr "" -#~ "Contour \n" -#~ "Epaisseur" - -#~ msgid "Monitor Check" -#~ msgstr "Contrôle de la mire" - -#~ msgid "Magnified Scroll" -#~ msgstr "Défilement amplifié" +#~ "Convertir maintenant les étiquettes vers le nouveau standard ? \n" +#~ "Vos images sont-elles sauvegardées ?" -#~ msgid "Drag Mouse" -#~ msgstr "Glisser la souris" +#~ msgid "Convert tags to new standard" +#~ msgstr "Convertir les étiquettes vers le nouveau standard" -#~ msgid "contrast" -#~ msgstr "Contraste" +#~ msgid "Convert Tags !!!" +#~ msgstr "Convertir les étiquettes !!!" -#~ msgid "absolute" -#~ msgstr "Absolu" +#~ msgid "save select area as a file" +#~ msgstr "Enregistrer la zone sélectionnée en tant que fichier" -#~ msgid "%d images selected" -#~ msgstr "%d images sélectionnées" +#~ msgid "manage tags" +#~ msgstr "Gérer les étiquettes" -#~ msgid "remove the images" -#~ msgstr "Supprimer l'image" +#~ msgid "brightness to clip (percent)" +#~ msgstr "Luminosité à remplir (pourcentage)" -#~ msgid "insert images at click position" -#~ msgstr "Insérer l'image à l'endroit du clic" +#~ msgid "Use F1 for context help" +#~ msgstr "Utiliser F1 pour l'aide contextuel" -#~ msgid "Choose a collection first" -#~ msgstr "Choisissez une collection en premier" +#~ msgid "Stack" +#~ msgstr "Empiler" -#~ msgid "" -#~ "To insert the selected images, press \n" -#~ "[Insert] and click gallery position. \n" -#~ "To remove the images, press [Delete]" -#~ msgstr "" -#~ "Pour insérer l'image sélectionnée, cliquer \n" -#~ "[Insérer] et cliquer sur la position dans la galerie. \n" -#~ "Pour supprimer l'image, cliquer [Supprimer]" +#~ msgid "No tags index file" +#~ msgstr "Le fichier d'indexation des étiquettes n'existe pas." -#~ msgid "Select images to add/move/remove" -#~ msgstr "Sélectionner des images à ajouter/déplacer/supprimer" +#~ msgid "HDR" +#~ msgstr "HDR" -#~ msgid "Choose a collection to view/edit" -#~ msgstr "Sélectionner une collection à voir/éditer" +#~ msgid "HDF" +#~ msgstr "HDF" -#~ msgid "Start new collection" -#~ msgstr "Commencer une nouvelle collection" +#~ msgid "Constrain" +#~ msgstr "Contraindre" -#~ msgid "specify tag" -#~ msgstr "Étiquette spécifique" +#~ msgid "target group area" +#~ msgstr "Zone du groupe cible" -#~ msgid "no tag specified" -#~ msgstr "Aucune étiquette spécifiée" +#~ msgid "vertical unbend" +#~ msgstr "Axe vertical" -#~ msgid "search all files" -#~ msgstr "Rechercher tous les fichiers" +#~ msgid "select by mouse:" +#~ msgstr "Sélection avec la souris : " -#~ msgid "optional replacement" -#~ msgstr "Remplacement optionnel" +#~ msgid "select by color:" +#~ msgstr "Sélection par couleurs : " -#~ msgid "tag to remove" -#~ msgstr "Étiquette à supprimer" +#~ msgid "press ESC to exit" +#~ msgstr "Appuyer sur « Échap » pour quitter" -#~ msgid "Outlines" -#~ msgstr "Contour" +#~ msgid "horizontal unbend" +#~ msgstr "Axe horizontal" -#~ msgid "Convert to charcoal or chalk drawing" -#~ msgstr "Convertir en dessin au fusain ou à la craie" +#~ msgid "Rebuild Thumbnails" +#~ msgstr "Reconstruire les vignettes" -#~ msgid "Delete a tag from multiple images" -#~ msgstr "Effacer une étiquette de plusieurs images" +#~ msgid "area outline has a hole" +#~ msgstr "Le contour de la zone a un trou" -#~ msgid "Batch Delete Tag" -#~ msgstr "Supprimer/modifier des étiquettes par lot" +#~ msgid "Create Launcher" +#~ msgstr "Créer un lanceur" -#~ msgid "Batch Add Tags" -#~ msgstr "Ajouter des étiquettes par lot" +#~ msgid "click on window to show RGB" +#~ msgstr "Cliquez sur la fenêtre pour afficher les couleurs RVB" -#~ msgid "Add tags to multiple images" -#~ msgstr "Ajouter des étiquettes à plusieurs images" +#~ msgid "Save As" +#~ msgstr "Enreg. sous" -#~ msgid "Report memory and CPU usage" -#~ msgstr "RApport d'utilisation de la méméoire et du CPU" +#~ msgid "Clone fotoxx" +#~ msgstr "Cloner Fotoxx" -#~ msgid "Open Recent File" -#~ msgstr "Ouvrir un fichier récent" +#~ msgid "random" +#~ msgstr "Aléatoire" -#~ msgid "add all" -#~ msgstr "Ajouter tout" +#~ msgid "Whole Image" +#~ msgstr "Toute l'image" -#~ msgid "insert" -#~ msgstr "Insérer" +#~ msgid "Time Interval" +#~ msgstr "Intervalle de temps" -#~ msgid "Print" +#~ msgid "print" #~ msgstr "Imprimer" -#~ msgid "Move to" -#~ msgstr "Déplacer vers" - -#~ msgid "Copy to" -#~ msgstr "Copier vers" +#~ msgid "printer ID" +#~ msgstr "ID de l'imprimante" -#~ msgid "Add Image Outlines" -#~ msgstr "Ajouter les contours de l'image" +#~ msgid "paper format" +#~ msgstr "Format de papier" -#~ msgid "chalk" -#~ msgstr "Craie" +#~ msgid "paper format is crazy" +#~ msgstr "Format de papier erroné" -#~ msgid "pencil" -#~ msgstr "Crayon" +#~ msgid "open a file" +#~ msgstr "Ouvrir un fichier" -#~ msgid "outlines" -#~ msgstr "Contours" +#~ msgid "select new folder" +#~ msgstr "Sélectionner un nouveau dossier" -#~ msgid "new gallery from tab F" -#~ msgstr "Nouvelle galerie dans l'onglet F" +#~ msgid "folder" +#~ msgstr "Dossier" -#~ msgid "invert" -#~ msgstr "Inverser" +#~ msgid "my mouse" +#~ msgstr "Ma souris" -#~ msgid "Use buttons or drag right edge with mouse" -#~ msgstr "Utilisez les boutons ou faites glisser le bord droit avec la souris" +#~ msgid "Lens Parameters" +#~ msgstr "Configuration de l'objectif" -#~ msgid "auto-trim" -#~ msgstr "Recadrage automatique" +#~ msgid "Edit. plugins" +#~ msgstr "Edition des greffons" diff -Nru fotoxx-13.08/locales/translate-it.po fotoxx-13.09.1/locales/translate-it.po --- fotoxx-13.08/locales/translate-it.po 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/locales/translate-it.po 2013-08-31 06:26:38.000000000 +0000 @@ -1,17 +1,17 @@ -# translation of fotoxx.po to italian -# Eugenio Baldi , 2009. -# (revisione) Doriano Blengino , 2011 -# (revisione) Doriano Blengino , 2012 -# (revisione) Doriano Blengino , 2013 -# #-#-#-#-# fotoxx.po (messages) #-#-#-#-# -# Italian translations for home package. -# Copyright (C) 2008 THE home'S COPYRIGHT HOLDER -# This file is distributed under the same license as the home package. +# translation of fotoxx.po to italian +# Eugenio Baldi , 2009. +# (revisione) Doriano Blengino , 2011 +# (revisione) Doriano Blengino , 2012 +# (revisione) Doriano Blengino , 2013 +# #-#-#-#-# fotoxx.po (messages) #-#-#-#-# +# Italian translations for home package. +# Copyright (C) 2008 THE home'S COPYRIGHT HOLDER +# This file is distributed under the same license as the home package. msgid "" msgstr "" "Project-Id-Version: fotoxx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-01 22:41+0200\n" +"POT-Creation-Date: 2013-08-29 08:25+0200\n" "PO-Revision-Date: 2010-06-03 16:14+0100\n" "Language-Team: italiano \n" "Language: \n" @@ -24,7 +24,7 @@ msgid "Select Area for Edits" msgstr "Seleziona area per modifiche" -#: f.area.cc:57 f.retouch.cc:2362 +#: f.area.cc:57 f.retouch.cc:2359 msgid "Press F1 for help" msgstr "Premi F1 per l'aiuto" @@ -68,7 +68,7 @@ msgid "select all matching colors within mouse" msgstr "Seleziona tutti i colori entro il mouse" -#: f.area.cc:114 f.retouch.cc:2397 +#: f.area.cc:114 f.retouch.cc:2394 msgid "mouse radius" msgstr "Raggio del mouse:" @@ -124,7 +124,7 @@ msgid "found %d pixels" msgstr "trovati %d pixel" -#: f.area.cc:1824 f.area.cc:1841 f.area.cc:1861 f.area.cc:2191 +#: f.area.cc:1824 f.area.cc:1841 f.area.cc:1861 f.area.cc:2192 msgid "the area is not finished" msgstr "L'area non è chiusa" @@ -136,39 +136,35 @@ msgid "Area Edge Calc" msgstr "Calcolo area delimitata" -#: f.area.cc:2265 +#: f.area.cc:2266 msgid "position with mouse click/drag" msgstr "posizione con clic o trascinamento" -#: f.area.cc:2290 +#: f.area.cc:2292 msgid "Paste Image" msgstr "Incolla immagine" -#: f.area.cc:2295 +#: f.area.cc:2297 msgid "resize" msgstr "ridimensiona" -#: f.area.cc:2303 -msgid "angle" -msgstr "angolo" - -#: f.area.cc:2565 +#: f.area.cc:2598 msgid "load select area from a file" msgstr "carica l'area di selezione da file" -#: f.area.cc:2619 +#: f.area.cc:2652 msgid "save select area to a file" msgstr "salva area in un file" -#: f.bend.cc:71 f.menus.cc:230 +#: f.bend.cc:71 f.menus.cc:242 msgid "Unbend" msgstr "Correggi deformazioni" -#: f.bend.cc:79 f.image.cc:1485 +#: f.bend.cc:79 f.image.cc:1496 msgid "vertical" msgstr "Verticale" -#: f.bend.cc:80 f.image.cc:1484 +#: f.bend.cc:80 f.image.cc:1495 msgid "horizontal" msgstr "Orizzontale" @@ -180,7 +176,7 @@ msgid "curved" msgstr "Curvato" -#: f.bend.cc:88 f.bend.cc:1517 f.bend.cc:1789 f.bend.cc:2049 f.image.cc:163 +#: f.bend.cc:88 f.bend.cc:1517 f.bend.cc:1789 f.bend.cc:2049 f.image.cc:172 msgid "Grid" msgstr "Griglia" @@ -192,7 +188,7 @@ " Clicca gli angoli di un'area trapezoidale; poi clicca [Applica]. \n" " L'immagine si deformerà per trasformare il trapezio in un rettangolo." -#: f.bend.cc:356 f.menus.cc:231 +#: f.bend.cc:356 f.menus.cc:243 msgid "Keystone Correction" msgstr "Correzione quadrangolare" @@ -242,7 +238,7 @@ "Trascina più volte se necessario.\n" "Quando terminato, seleziona un'altra zona o premi [Fatto]. " -#: f.bend.cc:1105 f.menus.cc:233 +#: f.bend.cc:1105 f.menus.cc:245 msgid "Warp area" msgstr "Deforma area" @@ -264,7 +260,7 @@ " Esegui diversi trascinamenti fino al completamento. \n" " Quando finito, premi [Fatto]." -#: f.bend.cc:1510 f.menus.cc:234 +#: f.bend.cc:1510 f.menus.cc:246 msgid "Warp curved" msgstr "Deforma a curva" @@ -272,7 +268,7 @@ msgid "warp span" msgstr "Dimensione deformazione: " -#: f.bend.cc:1781 f.menus.cc:235 +#: f.bend.cc:1781 f.menus.cc:247 msgid "Warp linear" msgstr "Deforma a linea" @@ -286,7 +282,7 @@ "Ripeti l'operazione se richiesto.\n" "Una volta finito, premi [Fatto]." -#: f.bend.cc:2044 f.menus.cc:236 +#: f.bend.cc:2044 f.menus.cc:248 msgid "Warp affine" msgstr "Deforma specularmente" @@ -300,17 +296,17 @@ #: f.color.cc:92 msgid "warmer" -msgstr "" +msgstr "Più caldo" #: f.color.cc:94 msgid "cooler" -msgstr "" +msgstr "Più freddo" #: f.color.cc:96 f.repair.cc:69 msgid "reduce" msgstr "Riduci" -#: f.color.cc:371 f.menus.cc:224 +#: f.color.cc:371 f.menus.cc:236 msgid "Color Mode" msgstr "Modo di colore" @@ -355,10 +351,6 @@ msgid "unknown cms profile %s" msgstr "Profilo CMS sconosciuto %s" -#: f.color.cc:601 -msgid "cmsCreateTransform() failed" -msgstr "Errore in cmsCreateTransform()" - #: f.color.cc:667 msgid "Color Match Images" msgstr "Trasfrisci colore" @@ -367,8 +359,8 @@ msgid "mouse radius for color sample" msgstr "Raggio di prelievo del colore" -#: f.color.cc:696 f.color.cc:701 f.file.cc:3981 f.menus.cc:191 f.menus.cc:278 -#: f.menus.cc:390 fotoxx.h:982 +#: f.color.cc:696 f.color.cc:701 f.file.cc:4034 f.menus.cc:203 f.menus.cc:291 +#: f.menus.cc:401 fotoxx.h:1003 msgid "Open" msgstr "Apri" @@ -392,11 +384,11 @@ msgid "select source image color first" msgstr "Seleziona prima l'immagine di riferimento" -#: f.color.cc:957 f.tools.cc:5134 +#: f.color.cc:957 f.tools.cc:5145 msgid "Click image to select pixels." msgstr "Clicca l'immagine per selezionare i pixel" -#: f.color.cc:995 f.menus.cc:227 +#: f.color.cc:995 f.menus.cc:239 msgid "Revise RGB" msgstr "Edita RGB" @@ -428,15 +420,15 @@ msgid "+Blue -Yellow" msgstr "+Blu -Giallo" -#: f.color.cc:1467 fotoxx.h:992 +#: f.color.cc:1467 fotoxx.h:1013 msgid "Red" msgstr "Rosso" -#: f.color.cc:1468 fotoxx.h:965 +#: f.color.cc:1468 fotoxx.h:986 msgid "Green" msgstr "Verde" -#: f.color.cc:1469 fotoxx.h:943 +#: f.color.cc:1469 fotoxx.h:963 msgid "Blue" msgstr "Blu" @@ -444,7 +436,7 @@ msgid "Load CMYK parameters" msgstr "Carica parametri CMYK" -#: f.color.cc:1614 f.color.cc:1686 f.repair.cc:4008 f.repair.cc:4104 +#: f.color.cc:1614 f.color.cc:1686 f.meta.cc:139 f.repair.cc:4025 msgid "File:" msgstr "File:" @@ -452,8 +444,8 @@ msgid "CMYK parameters file" msgstr "File di parametri CMYK" -#: f.color.cc:1651 f.file.cc:2047 f.meta.cc:1282 f.repair.cc:4048 -#: f.tools.cc:1708 +#: f.color.cc:1651 f.file.cc:2092 f.meta.cc:1451 f.repair.cc:4065 +#: f.tools.cc:1721 msgid "file not found" msgstr "File non trovato" @@ -482,7 +474,7 @@ msgid "light pixels" msgstr "Pixel luminosi" -#: f.combine.cc:2315 f.meta.cc:169 +#: f.combine.cc:2315 msgid "file:" msgstr "File:" @@ -491,7 +483,7 @@ msgstr "Dipingi e deforma immagine" #: f.combine.cc:2829 f.combine.cc:3482 f.combine.cc:4897 f.combine.cc:5795 -#: f.menus.cc:58 f.menus.cc:104 +#: f.menus.cc:58 f.menus.cc:119 msgid "Image" msgstr "Immagine" @@ -559,7 +551,7 @@ msgid "no curve (scanned image)" msgstr "nessuna curva (immagine scansionata)" -#: f.combine.cc:4348 f.combine.cc:5245 f.menus.cc:198 f.menus.cc:446 +#: f.combine.cc:4348 f.combine.cc:5245 f.menus.cc:210 f.menus.cc:457 msgid "Resize" msgstr "Ridimensiona" @@ -596,6 +588,165 @@ "Trascina le immagini a un allineamento approssimativo.\n" "Per ruotarle, trascina il bordo destro." +#: f.combine.cc:6061 +msgid "Mashup layout and background image" +msgstr "" + +#: f.combine.cc:6090 +msgid "choose an image file" +msgstr "" + +#: f.combine.cc:6091 +msgid "use current image file" +msgstr "" + +#: f.combine.cc:6092 +msgid "open a Mashup project file" +msgstr "" + +#: f.combine.cc:6093 +msgid "specify layout size and color" +msgstr "" + +#: f.combine.cc:6120 +msgid "choose layout file" +msgstr "" + +#: f.combine.cc:6181 +msgid "Edit Images" +msgstr "" + +#: f.combine.cc:6182 f.combine.cc:6931 +msgid "Edit Text" +msgstr "" + +#: f.combine.cc:6183 f.combine.cc:6482 +msgid "Save Project" +msgstr "" + +#: f.combine.cc:6186 +msgid "add or edit images" +msgstr "" + +#: f.combine.cc:6187 +msgid "add or edit text" +msgstr "" + +#: f.combine.cc:6188 +msgid "save project data" +msgstr "" + +#: f.combine.cc:6189 +msgid "project complete" +msgstr "" + +#: f.combine.cc:6190 +msgid "cancel project" +msgstr "" + +#: f.combine.cc:6283 +msgid "Open Project" +msgstr "" + +#: f.combine.cc:6302 +#, c-format +msgid "" +"layout image file missing: \n" +" %s" +msgstr "" + +#: f.combine.cc:6320 +#, c-format +msgid "" +"overlay image file missing: \n" +" %s" +msgstr "" + +#: f.combine.cc:6382 +#, c-format +msgid "" +"layout image file error: \n" +" %s" +msgstr "" + +#: f.combine.cc:6393 +#, c-format +msgid "" +"overlay image file error: \n" +" %s" +msgstr "" + +#: f.combine.cc:6452 +msgid "project file is defective" +msgstr "" + +#: f.combine.cc:6530 +msgid "Click image to select, drag image to move." +msgstr "" + +#: f.combine.cc:6563 +msgid "current image:" +msgstr "" + +#: f.combine.cc:6585 f.combine.cc:6965 f.image.cc:1681 +msgid "Transparency" +msgstr "Trasparenza:" + +#: f.combine.cc:6589 +msgid "Edge Blend Width" +msgstr "" + +#: f.combine.cc:6755 +#, c-format +msgid "exceeded %d images" +msgstr "" + +#: f.combine.cc:6906 +msgid "Enter text, click/drag on image." +msgstr "" + +#: f.combine.cc:6936 f.image.cc:1652 f.tools.cc:1113 +msgid "Text" +msgstr "Testo" + +#: f.combine.cc:6954 f.image.cc:1670 +msgid "text" +msgstr "Testo" + +#: f.combine.cc:6955 f.image.cc:1671 +msgid "backing" +msgstr "Sfondo" + +#: f.combine.cc:6956 f.image.cc:1672 +msgid "outline" +msgstr "Contorno" + +#: f.combine.cc:6957 f.image.cc:1673 +msgid "shadow" +msgstr "Ombra" + +#: f.combine.cc:6959 f.image.cc:1675 f.menus.cc:61 f.menus.cc:122 +#: f.menus.cc:286 fotoxx.h:969 +msgid "Color" +msgstr "Colore" + +#: f.combine.cc:6971 f.image.cc:1687 fotoxx.h:1039 +msgid "Width" +msgstr "Larghezza" + +#: f.combine.cc:6984 f.image.cc:1700 +msgid "Text File:" +msgstr "File di testo:" + +#: f.combine.cc:7046 f.image.cc:1811 +msgid "select font" +msgstr "Scegli il font" + +#: f.combine.cc:7154 +#, c-format +msgid "exceeded %d text entries" +msgstr "" + #: f.effects.cc:44 msgid "Set color depth to 1-16 bits" msgstr "Imposta la risoluzione del colore da 1 a 16 bit" @@ -606,15 +757,15 @@ #: f.effects.cc:187 msgid "Convert to Sketch" -msgstr "" +msgstr "Converti in schizzo" #: f.effects.cc:270 msgid "Clip Level" -msgstr "" +msgstr "Bianco" #: f.effects.cc:274 msgid "Algorithm" -msgstr "" +msgstr "Metodo" #: f.effects.cc:643 msgid "Simulate Drawing" @@ -634,11 +785,11 @@ #: f.effects.cc:665 msgid "black/white" -msgstr "" +msgstr "Bianco e nero" -#: f.effects.cc:983 f.menus.cc:241 +#: f.effects.cc:983 f.menus.cc:253 msgid "Graduated Blur" -msgstr "" +msgstr "Sfumatura graduale" #: f.effects.cc:987 msgid "Contrast Limit" @@ -656,7 +807,7 @@ msgid "depth" msgstr "Profondità" -#: f.effects.cc:1219 f.file.cc:987 +#: f.effects.cc:1219 f.file.cc:1031 msgid "color" msgstr "Colore" @@ -704,7 +855,7 @@ msgid "borders" msgstr "Contorni" -#: f.effects.cc:2461 f.menus.cc:246 +#: f.effects.cc:2461 f.menus.cc:258 msgid "False Colors" msgstr "Scorrimento colori" @@ -720,7 +871,7 @@ msgid "Blue: Red" msgstr "blu: Rosso" -#: f.effects.cc:2669 f.menus.cc:247 +#: f.effects.cc:2669 f.menus.cc:259 msgid "Vignette" msgstr "Effetto vignetta" @@ -728,55 +879,63 @@ msgid "center" msgstr "centro" -#: f.effects.cc:2700 f.retouch.cc:2402 +#: f.effects.cc:2700 f.retouch.cc:2399 msgid "edge" msgstr "bordo:" #: f.file.cc:243 msgid "no newly added files found" -msgstr "" +msgstr "trovato nessun file aggiunto" -#: f.file.cc:275 +#: f.file.cc:307 msgid "no more images" -msgstr "" +msgstr "fine delle immagini" -#: f.file.cc:343 f.menus.cc:136 f.menus.cc:457 +#: f.file.cc:347 f.menus.cc:151 f.menus.cc:468 msgid "Open RAW file (ufraw)" msgstr "Apri file RAW (ufraw)" -#: f.file.cc:347 +#: f.file.cc:351 msgid "RAW type not registered in User Settings" msgstr "Tipo RAW non registrato in preferenze utente" -#: f.file.cc:367 -msgid "Overwrite original file?" -msgstr "Sovrascrivere il file originale?" - -#: f.file.cc:368 -msgid "Do not warn again" -msgstr "Non chiedere di nuovo" - -#: f.file.cc:383 -msgid "Warning" -msgstr "Attenzione" - -#: f.file.cc:495 -msgid "Save File" -msgstr "Salva file" +#: f.file.cc:401 +msgid "Save Image File" +msgstr "" -#: f.file.cc:528 zfuncs.cc:9270 -msgid "quality" -msgstr "Qualità" +#: f.file.cc:411 +msgid "new version" +msgstr "" -#: f.file.cc:530 +#: f.file.cc:412 +msgid "new file name" +msgstr "" + +#: f.file.cc:413 +msgid "replace file" +msgstr "" + +#: f.file.cc:419 +msgid "save as new file version" +msgstr "" + +#: f.file.cc:420 f.file.cc:548 +msgid "save as new file name or type" +msgstr "" + +#: f.file.cc:421 +msgid "replace old file (OVERWRITE)" +msgstr "" + +#: f.file.cc:564 msgid "make current" msgstr "Rendi corrente" -#: f.file.cc:625 +#: f.file.cc:657 msgid "jpeg quality must be 1-100" msgstr "la qualità jpeg deve essere 1-100" -#: f.file.cc:653 +#: f.file.cc:683 #, c-format msgid "" "Overwrite file? \n" @@ -785,31 +944,31 @@ "Sovrascrivere il file? \n" " %s" -#: f.file.cc:799 f.menus.cc:140 +#: f.file.cc:843 f.menus.cc:153 msgid "Rename Image File" msgstr "Rinomina immagine" -#: f.file.cc:806 +#: f.file.cc:850 msgid "old name" msgstr "Vecchio nome" -#: f.file.cc:807 +#: f.file.cc:851 msgid "new name" msgstr "Nuovo nome" -#: f.file.cc:816 +#: f.file.cc:860 msgid "previous name" msgstr "Nome precedente" -#: f.file.cc:817 +#: f.file.cc:861 msgid "add 1" msgstr "aggiungi 1" -#: f.file.cc:895 f.file.cc:1248 +#: f.file.cc:939 f.file.cc:1292 msgid "target file already exists" msgstr "file destinazione già esistente" -#: f.file.cc:922 f.file.cc:1270 f.file.cc:1388 +#: f.file.cc:966 f.file.cc:1314 f.file.cc:1432 #, c-format msgid "" "delete failed: \n" @@ -818,59 +977,59 @@ "errore in cancellazione: \n" " %s" -#: f.file.cc:971 +#: f.file.cc:1015 msgid "Create Blank Image" msgstr "Crea immagine vuota" -#: f.file.cc:973 +#: f.file.cc:1017 msgid "file name" msgstr "Nome file" -#: f.file.cc:978 f.image.cc:470 +#: f.file.cc:1022 f.image.cc:479 msgid "width" msgstr "larghezza" -#: f.file.cc:981 f.image.cc:473 f.tools.cc:4088 +#: f.file.cc:1025 f.image.cc:482 f.tools.cc:4099 msgid "height" msgstr "altezza" -#: f.file.cc:1156 +#: f.file.cc:1200 msgid "Copy Image File" msgstr "Copia file" -#: f.file.cc:1158 +#: f.file.cc:1202 msgid "Move Image File" msgstr "Sposta file" -#: f.file.cc:1164 f.file.cc:1343 f.file.cc:1464 +#: f.file.cc:1208 f.file.cc:1387 f.file.cc:1508 msgid "image file" msgstr "file immagine" -#: f.file.cc:1169 +#: f.file.cc:1213 msgid "new location" msgstr "nuova destinazione" -#: f.file.cc:1203 f.tools.cc:4317 +#: f.file.cc:1247 f.tools.cc:4328 msgid "Select directory" msgstr "Seleziona cartella" -#: f.file.cc:1233 +#: f.file.cc:1277 msgid "new location is not a directory" msgstr "la destinazione non è una cartella" -#: f.file.cc:1307 +#: f.file.cc:1351 msgid "Delete Image File - CANNOT BE REVERSED" msgstr "Cancella file - NON SI PUO' ANNULLARE" -#: f.file.cc:1308 f.file.cc:1430 +#: f.file.cc:1352 f.file.cc:1474 msgid "(automatic step to next image)" -msgstr "" +msgstr "(avanzamento automatico alla prossima foto)" -#: f.file.cc:1429 f.menus.cc:142 +#: f.file.cc:1473 f.menus.cc:155 msgid "Trash Image File" msgstr "Cestina l'immagine" -#: f.file.cc:1494 +#: f.file.cc:1538 msgid "" "Linux standard trash does not work. \n" "Desktop trash folder will be created." @@ -878,7 +1037,7 @@ "Il cestino standard di Linux non funziona. \n" "Verrà creato un cestino nel desktop" -#: f.file.cc:1497 +#: f.file.cc:1541 msgid "" "Linux and Desktop trash do not work. \n" "Permanently delete the image file?" @@ -886,1478 +1045,1514 @@ "I cestini (di Linux e sul desktop) non funzionano. \n" "Eliminare definitivamente il file?" -#: f.file.cc:1527 +#: f.file.cc:1571 msgid "Move read-only file to trash?" msgstr "Spostare il file in sola lettura nel cestino?" -#: f.file.cc:1556 +#: f.file.cc:1600 #, c-format msgid "Cannot create trash folder: %s" msgstr "Impossible creare il cestino: %s" -#: f.file.cc:1569 zfuncs.cc:4211 +#: f.file.cc:1613 zfuncs.cc:4211 #, c-format msgid "error: %s" msgstr "errore: %s" -#: f.file.cc:1588 +#: f.file.cc:1632 #, c-format msgid "delete failed: %s" msgstr "errore cancellazione: %s" -#: f.file.cc:2041 f.menus.cc:132 +#: f.file.cc:2086 f.menus.cc:147 msgid "Open Image File" msgstr "Apri immagine" -#: f.file.cc:2059 +#: f.file.cc:2104 msgid "unknown file type" msgstr "tipo di file sconosciuto" -#: f.file.cc:2341 +#: f.file.cc:2385 msgid "Unable to copy EXIF/IPTC data" msgstr "Non riesco a copiare i dati EXIF/IPTC" -#: f.file.cc:2404 f.file.cc:2465 +#: f.file.cc:2448 f.file.cc:2509 #, c-format msgid "file not found: %s" msgstr "file non trovato: %s" -#: f.file.cc:2409 f.file.cc:2470 +#: f.file.cc:2453 f.file.cc:2514 #, c-format msgid "file type not supported: %s" msgstr "tipo di file non supportato: %s" -#: f.file.cc:3982 f.menus.cc:390 +#: f.file.cc:4035 msgid "change directory" msgstr "cambia cartella" -#: f.file.cc:3990 f.menus.cc:391 +#: f.file.cc:4043 f.menus.cc:402 msgid "GoTo" msgstr "Vai a..." -#: f.file.cc:4005 f.menus.cc:400 +#: f.file.cc:4058 f.menus.cc:405 msgid "Sort" msgstr "Riordina" -#: f.file.cc:4036 f.file.cc:4360 f.menus.cc:398 +#: f.file.cc:4089 f.file.cc:4420 f.menus.cc:410 msgid "Row↑" msgstr "Riga↑" -#: f.file.cc:4048 f.file.cc:4361 f.menus.cc:399 +#: f.file.cc:4101 f.file.cc:4421 f.menus.cc:411 msgid "Row↓" msgstr "Riga↓" -#: f.file.cc:4060 f.file.cc:4363 f.menus.cc:394 +#: f.file.cc:4113 f.file.cc:4423 f.menus.cc:406 msgid "First" msgstr "Prima" -#: f.file.cc:4061 f.file.cc:4364 f.menus.cc:395 +#: f.file.cc:4114 f.file.cc:4424 f.menus.cc:407 msgid "Last" msgstr "Ultima" -#: f.file.cc:4062 f.file.cc:4358 f.file.cc:4365 f.menus.cc:396 +#: f.file.cc:4115 f.file.cc:4418 f.file.cc:4425 f.menus.cc:408 msgid "Page↑" msgstr "Pagina↑" -#: f.file.cc:4063 f.file.cc:4359 f.file.cc:4366 f.menus.cc:397 +#: f.file.cc:4116 f.file.cc:4419 f.file.cc:4426 f.menus.cc:409 msgid "Page↓" msgstr "Pagina↓" -#: f.file.cc:4114 f.tools.cc:940 +#: f.file.cc:4167 f.tools.cc:953 msgid "Choose top image directory" msgstr "Scegli la cartella principale delle immagini" -#: f.file.cc:4120 f.file.cc:4134 +#: f.file.cc:4173 f.file.cc:4187 msgid "recent" -msgstr "" +msgstr "recente" -#: f.file.cc:4121 f.file.cc:4139 +#: f.file.cc:4174 f.file.cc:4192 msgid "newest" -msgstr "" +msgstr "più nuovo" -#: f.file.cc:4170 +#: f.file.cc:4223 msgid "Gallery Sort" msgstr "Riordina galleria" -#: f.file.cc:4174 +#: f.file.cc:4227 msgid "File Name" msgstr "Nome file" -#: f.file.cc:4175 +#: f.file.cc:4228 msgid "File Mod Date/Time" msgstr "Data di modifica file" -#: f.file.cc:4176 +#: f.file.cc:4229 msgid "Photo Date/Time (EXIF)" msgstr "Data della foto (EXIF)" -#: f.file.cc:4178 +#: f.file.cc:4231 msgid "ascending" -msgstr "" +msgstr "ascendente" -#: f.file.cc:4179 +#: f.file.cc:4232 msgid "descending" -msgstr "" +msgstr "discendente" -#: f.file.cc:4352 f.file.cc:4353 f.file.cc:4355 +#: f.file.cc:4412 f.file.cc:4413 f.file.cc:4415 f.menus.cc:403 msgid "Zoom+" msgstr "Zoom+" -#: f.file.cc:4354 f.file.cc:4356 +#: f.file.cc:4414 f.file.cc:4416 f.menus.cc:404 msgid "Zoom-" msgstr "Zoom-" -#: f.file.cc:5192 fotoxx.h:1003 +#: f.file.cc:5253 fotoxx.h:1024 msgid "Select Files" msgstr "Seleziona i file" -#: f.file.cc:5668 fotoxx.h:935 +#: f.file.cc:5729 fotoxx.h:954 msgid "Add" msgstr "Aggiungi" -#: f.file.cc:5668 fotoxx.h:995 +#: f.file.cc:5729 fotoxx.h:1016 msgid "Remove" msgstr "Elimina" -#: f.file.cc:5670 +#: f.file.cc:5731 msgid "menu name" msgstr "Nome nel menù" -#: f.file.cc:5740 f.file.cc:5761 +#: f.file.cc:5801 f.file.cc:5822 msgid "Restart Fotoxx to update plugin menu" msgstr "Riavvia Fotoxx per aggiornare il menù Plugin" -#: f.file.cc:5803 -msgid "no plugin command" -msgstr "Comando di plugin non trovato" +#: f.file.cc:5864 +msgid "Plugins menu is empty" +msgstr "" -#: f.file.cc:5831 +#: f.file.cc:5892 msgid "plugin failed" msgstr "plugin non trovato" -#: f.image.cc:47 -msgid "Turn Image" -msgstr "" +#: f.image.cc:50 +msgid "Rotate Image 90º" +msgstr "Ruota immagine 90º" + +#: f.image.cc:54 +msgid "rotate -90º" +msgstr "Ruota -90º" + +#: f.image.cc:55 +msgid "rotate +90º" +msgstr "Ruota +90º" -#: f.image.cc:114 +#: f.image.cc:123 msgid "Drag right edge with mouse" -msgstr "" +msgstr "Trascinare il lato destro con il mouse" -#: f.image.cc:144 +#: f.image.cc:153 msgid "Rotate Image" msgstr "Ruota immagine" -#: f.image.cc:148 zfuncs.cc:9605 +#: f.image.cc:157 zfuncs.cc:9679 msgid "left" msgstr "Sinistra" -#: f.image.cc:151 zfuncs.cc:9606 +#: f.image.cc:160 zfuncs.cc:9680 msgid "right" msgstr "Destra" -#: f.image.cc:157 +#: f.image.cc:166 msgid "degrees" msgstr "Gradi" -#: f.image.cc:442 +#: f.image.cc:451 msgid "Drag middle to move, drag corners to resize." msgstr "Trascina il centro per spostare, e i lati per ridimensionare." -#: f.image.cc:465 f.menus.cc:196 f.menus.cc:445 +#: f.image.cc:474 f.menus.cc:208 f.menus.cc:456 msgid "Trim/Crop" msgstr "Ritaglia" -#: f.image.cc:476 f.image.cc:756 +#: f.image.cc:485 f.image.cc:765 msgid "ratio" msgstr "Rapporto:" -#: f.image.cc:480 +#: f.image.cc:489 msgid "portrait" -msgstr "" +msgstr "Ritratto" -#: f.image.cc:481 +#: f.image.cc:490 msgid "landscape" -msgstr "" +msgstr "Paesaggio" -#: f.image.cc:482 +#: f.image.cc:491 msgid "Lock Ratio" msgstr "Blocca proporzioni" -#: f.image.cc:486 +#: f.image.cc:495 msgid "customize" msgstr "Personalizza" -#: f.image.cc:748 +#: f.image.cc:757 msgid "Trim Buttons" msgstr "Pulsanti di taglio" -#: f.image.cc:755 +#: f.image.cc:764 msgid "label" msgstr "Etichetta" -#: f.image.cc:1277 +#: f.image.cc:1286 msgid "Lock aspect ratio" msgstr "Blocca proporzioni" -#: f.image.cc:1298 +#: f.image.cc:1307 msgid "Resize Image" msgstr "Ridimensiona" -#: f.image.cc:1480 f.menus.cc:199 +#: f.image.cc:1491 f.menus.cc:211 msgid "Flip" msgstr "Rifletti/specchia" -#: f.image.cc:1604 +#: f.image.cc:1610 msgid "Enter text, click/drag on image, right click to remove" msgstr "" "Imposta il testo e clicca/trascina nell'immagine, clic destro per rimuovere" -#: f.image.cc:1631 +#: f.image.cc:1645 msgid "Write Text on Image" msgstr "Scrivi testo su immagine" -#: f.image.cc:1638 f.tools.cc:1100 -msgid "Text" -msgstr "Testo" - -#: f.image.cc:1645 -msgid "Size" -msgstr "Dimensione" - -#: f.image.cc:1656 -msgid "text" -msgstr "Testo" - -#: f.image.cc:1657 -msgid "backing" -msgstr "Sfondo" - -#: f.image.cc:1658 -msgid "outline" -msgstr "Contorno" - -#: f.image.cc:1659 -msgid "shadow" -msgstr "Ombra" - -#: f.image.cc:1661 f.menus.cc:61 f.menus.cc:107 f.menus.cc:273 fotoxx.h:949 -msgid "Color" -msgstr "Colore" - -#: f.image.cc:1667 -msgid "Transparency" -msgstr "Trasparenza:" - -#: f.image.cc:1673 fotoxx.h:1017 -msgid "Width" -msgstr "Larghezza" - -#: f.image.cc:1679 -msgid "Angle" -msgstr "Angolo:" - -#: f.image.cc:1686 -msgid "Text File:" -msgstr "File di testo:" - -#: f.image.cc:1764 -msgid "select font" -msgstr "Scegli il font" +#: f.image.cc:2312 +msgid "text file is defective" +msgstr "" -#: f.menus.cc:54 f.menus.cc:100 +#: f.menus.cc:54 f.menus.cc:115 msgid "File" msgstr "File" -#: f.menus.cc:55 f.menus.cc:101 +#: f.menus.cc:55 f.menus.cc:116 msgid "Tools" msgstr "Strumenti" -#: f.menus.cc:56 f.menus.cc:102 +#: f.menus.cc:56 f.menus.cc:117 msgid "Metadata" msgstr "Metadati" -#: f.menus.cc:57 f.menus.cc:103 +#: f.menus.cc:57 f.menus.cc:118 msgid "Areas" msgstr "Aree" -#: f.menus.cc:59 f.menus.cc:105 +#: f.menus.cc:59 f.menus.cc:120 msgid "Retouch" msgstr "Ritocco" -#: f.menus.cc:60 f.menus.cc:106 +#: f.menus.cc:60 f.menus.cc:121 msgid "Repair" msgstr "Correggi" -#: f.menus.cc:62 f.menus.cc:108 +#: f.menus.cc:62 f.menus.cc:123 msgid "Bend" msgstr "Deforma" -#: f.menus.cc:63 f.menus.cc:109 +#: f.menus.cc:63 f.menus.cc:124 msgid "Effects" msgstr "Effetti" -#: f.menus.cc:64 f.menus.cc:110 +#: f.menus.cc:64 f.menus.cc:125 msgid "Combine" msgstr "Combina" -#: f.menus.cc:65 f.menus.cc:111 +#: f.menus.cc:65 f.menus.cc:126 msgid "Plugins" msgstr "Plugin" -#: f.menus.cc:66 f.menus.cc:112 fotoxx-13.08.cc:3631 fotoxx.h:967 +#: f.menus.cc:66 f.menus.cc:127 fotoxx-13.09.cc:3664 fotoxx.h:988 msgid "Help" msgstr "Aiuto" -#: f.menus.cc:99 f.menus.cc:271 +#: f.menus.cc:99 f.menus.cc:284 msgid "Favorites Menu" msgstr "Menù dei preferiti" +#: f.menus.cc:100 +msgid "Open, Save, Trash, Rename, Print" +msgstr "" + +#: f.menus.cc:101 +msgid "Synch Files, Settings, Collections, Batch Funcs ..." +msgstr "" + +#: f.menus.cc:102 +msgid "Captions, Tags, Ratings, Geotags, Search ... " +msgstr "" + +#: f.menus.cc:103 +msgid "Select image areas to edit, copy and paste" +msgstr "" + +#: f.menus.cc:104 +msgid "Rotate, Trim/Crop, Resize, Add Text" +msgstr "" + +#: f.menus.cc:105 +msgid "Improve brightness, contrast, color ..." +msgstr "" + +#: f.menus.cc:106 +msgid "Sharpen, Clean, Red-eyes, Paint, Clone ..." +msgstr "" + +#: f.menus.cc:107 +msgid "White Balance, Color Profile, Color Matching" +msgstr "" + +#: f.menus.cc:108 +msgid "Fix Perspective, Bend/Warp image ..." +msgstr "" + +#: f.menus.cc:109 +msgid "Special Effects, Arty Transforms" +msgstr "" + +#: f.menus.cc:110 +msgid "HDR, HDF, Panorama, Stack, Mashup" +msgstr "" + +#: f.menus.cc:111 +msgid "Use other image editors within Fotoxx" +msgstr "" + #: f.menus.cc:112 -msgid "User Guide etc." -msgstr "Guida utente ecc." +msgid "Quick Start, User Guide, Recent Changes ..." +msgstr "" -#: f.menus.cc:131 +#: f.menus.cc:146 msgid "New Window" msgstr "Nuova finestra" -#: f.menus.cc:131 +#: f.menus.cc:146 msgid "Open another window" msgstr "Apri altra finestra" -#: f.menus.cc:132 f.menus.cc:278 +#: f.menus.cc:147 f.menus.cc:291 msgid "Open a new image file" msgstr "Apri un ulteriore file" -#: f.menus.cc:133 +#: f.menus.cc:148 msgid "Open Previous File" msgstr "Apri l'immagine precedente" -#: f.menus.cc:133 +#: f.menus.cc:148 msgid "Open the previously seen file" msgstr "Apri il file precedente" -#: f.menus.cc:134 +#: f.menus.cc:149 msgid "Open a recently seen file" msgstr "Apri un file recente" -#: f.menus.cc:134 +#: f.menus.cc:149 msgid "Recently Seen Images" -msgstr "" +msgstr "Immagini viste di recente" -#: f.menus.cc:135 +#: f.menus.cc:150 msgid "Newly Added Images" -msgstr "" +msgstr "Immagini nuove aggiunte" -#: f.menus.cc:135 +#: f.menus.cc:150 msgid "Open a newly added file" -msgstr "" +msgstr "Apri una immagine aggiunta" -#: f.menus.cc:136 +#: f.menus.cc:151 msgid "Open and edit a camera RAW file" msgstr "Apri un file RAW" -#: f.menus.cc:137 -msgid "Save to Same File" -msgstr "Salva (sovrascrivi)" - -#: f.menus.cc:137 -msgid "Save to the same file (replace)" -msgstr "Salva nello stesso file (rimpiazza)" - -#: f.menus.cc:138 -msgid "Save to New Version" -msgstr "Salva con nuova versione" - -#: f.menus.cc:138 -msgid "Save to a new (next) version" -msgstr "Salva su una versione successiva" - -#: f.menus.cc:139 -msgid "Save to New File" -msgstr "Salva in un file nuovo" - -#: f.menus.cc:139 -msgid "Save to a new file name" -msgstr "Salva su un nuovo file" +#: f.menus.cc:152 f.menus.cc:294 +msgid "Save modified image file to disk" +msgstr "" + +#: f.menus.cc:152 +msgid "Save to Disk" +msgstr "" -#: f.menus.cc:140 +#: f.menus.cc:153 msgid "Change the image file name" msgstr "Rinomina il file" -#: f.menus.cc:141 +#: f.menus.cc:154 msgid "Create a blank image" msgstr "Crea immagine nuova" -#: f.menus.cc:141 +#: f.menus.cc:154 msgid "New Blank Image" msgstr "Nuova immagine" -#: f.menus.cc:142 f.menus.cc:284 +#: f.menus.cc:155 f.menus.cc:295 msgid "Move image file to Trash" msgstr "Sposta il file nel cestino" -#: f.menus.cc:143 +#: f.menus.cc:156 msgid "Print Image" msgstr "Stampa immagine" -#: f.menus.cc:143 +#: f.menus.cc:156 msgid "Print the current image" msgstr "Stampa l'immagine corrente" -#: f.menus.cc:144 +#: f.menus.cc:157 msgid "Quit Fotoxx" msgstr "Esci da Fotoxx" -#: f.menus.cc:146 +#: f.menus.cc:159 msgid "Index new files and make thumbnails" msgstr "Aggiorna indici e miniature di nuovi file" -#: f.menus.cc:146 f.tools.cc:182 f.tools.cc:364 +#: f.menus.cc:159 f.tools.cc:182 f.tools.cc:364 msgid "Synchronize Files" msgstr "Sincronizza file" -#: f.menus.cc:147 +#: f.menus.cc:160 msgid "Change user preferences" msgstr "Modifica le preferenze" -#: f.menus.cc:147 +#: f.menus.cc:160 msgid "User Settings" msgstr "Preferenze utente" -#: f.menus.cc:148 +#: f.menus.cc:161 msgid "Change Keyboard Shortcut Keys" msgstr "Modifica le scorciatoie da tastiera" -#: f.menus.cc:148 +#: f.menus.cc:161 msgid "Keyboard Shortcuts" msgstr "Scorciatoie di tastiera" -#: f.menus.cc:149 f.tools.cc:2179 +#: f.menus.cc:162 f.tools.cc:2190 msgid "Manage Collections" msgstr "Gestione collezioni" -#: f.menus.cc:149 +#: f.menus.cc:162 msgid "Organize images into collections" msgstr "Organizza immagini in collezioni" -#: f.menus.cc:150 +#: f.menus.cc:163 msgid "Convert for a new top directory" msgstr "Passaggio a una nuova cartella radice" -#: f.menus.cc:150 +#: f.menus.cc:163 msgid "Move Collections" msgstr "Sposta collezioni" -#: f.menus.cc:151 f.tools.cc:2778 +#: f.menus.cc:164 f.tools.cc:2789 msgid "Slide Show" msgstr "Slideshow" -#: f.menus.cc:151 +#: f.menus.cc:164 msgid "Start a slide show" msgstr "Inizia uno slideshow " -#: f.menus.cc:152 f.tools.cc:3863 +#: f.menus.cc:165 f.tools.cc:3874 msgid "Batch Rename" msgstr "Rinomina più immagini" -#: f.menus.cc:152 +#: f.menus.cc:165 msgid "Rename multiple image files" msgstr "Rinomina file multipli" -#: f.menus.cc:153 f.tools.cc:4078 +#: f.menus.cc:166 f.tools.cc:4089 msgid "Batch Convert/Resize/Move" msgstr "Converti/Modifica/Sposta in massa" -#: f.menus.cc:153 +#: f.menus.cc:166 msgid "Convert resize, move multiple files" msgstr "Converti/Modifica/Sposta in massa" -#: f.menus.cc:154 f.tools.cc:4416 +#: f.menus.cc:167 f.tools.cc:4427 msgid "Batch Convert RAW Files" msgstr "Converti file RAW in massa" -#: f.menus.cc:154 +#: f.menus.cc:167 msgid "Convert multiple camera RAW files" msgstr "Conversione multipla di file RAW (fotocamera)" -#: f.menus.cc:155 f.tools.cc:4795 +#: f.menus.cc:168 f.tools.cc:4806 msgid "Brightness Distribution" msgstr "Distribuzione della luminosità" -#: f.menus.cc:155 +#: f.menus.cc:168 msgid "Show a brightness distribution graph" msgstr "Mostra il grafico di distribuzione della luminosità" -#: f.menus.cc:156 f.menus.cc:455 f.tools.cc:4990 +#: f.menus.cc:169 f.menus.cc:466 f.tools.cc:5001 msgid "Grid Lines" msgstr "Linee griglia" -#: f.menus.cc:156 +#: f.menus.cc:169 msgid "Show or revise grid lines" msgstr "Mostra o cambia la griglia" -#: f.menus.cc:157 f.tools.cc:5166 +#: f.menus.cc:170 f.tools.cc:5177 msgid "Show RGB" msgstr "Esplora componenti RGB" -#: f.menus.cc:157 +#: f.menus.cc:170 msgid "Show RGB colors at mouse click" msgstr "Mostra i componenti colore RGB al clic" -#: f.menus.cc:158 +#: f.menus.cc:171 msgid "Chart to adjust monitor color" msgstr "Grafico per regolare il colore dello schermo" -#: f.menus.cc:158 +#: f.menus.cc:171 msgid "Monitor Color" msgstr "Colore monitor" -#: f.menus.cc:159 +#: f.menus.cc:172 msgid "Chart to adjust monitor gamma" msgstr "Grafico per regolare la gamma dello schermo" -#: f.menus.cc:159 f.tools.cc:5490 +#: f.menus.cc:172 f.tools.cc:5501 msgid "Monitor Gamma" msgstr "Gamma dello schermo" -#: f.menus.cc:160 +#: f.menus.cc:173 msgid "Change Language" msgstr "Cambia lingua del programma" -#: f.menus.cc:160 +#: f.menus.cc:173 msgid "Change the GUI language" msgstr "Cambia la lingua dell'interfaccia" -#: f.menus.cc:161 +#: f.menus.cc:174 msgid "Missing Translations" -msgstr "" +msgstr "Traduzioni mancanti" -#: f.menus.cc:161 +#: f.menus.cc:174 msgid "Report missing translations" -msgstr "" +msgstr "Segnala traduzioni mancanti" -#: f.menus.cc:162 +#: f.menus.cc:175 msgid "Edit Translations" msgstr "Modifica le traduzioni" -#: f.menus.cc:162 +#: f.menus.cc:175 msgid "Edit translations while using Fotoxx" msgstr "Modifica traduzioni durante l'uso di Fotoxx" -#: f.menus.cc:163 +#: f.menus.cc:176 msgid "Create a Gnome menu and launcher" msgstr "Crea menù e lanciatore di Gnome" -#: f.menus.cc:163 +#: f.menus.cc:176 msgid "Menu and Launcher" msgstr "Crea menù/lanciatore" -#: f.menus.cc:164 +#: f.menus.cc:177 msgid "Burn Images to CD/DVD" msgstr "Masterizza immagini su CD/DVD" -#: f.menus.cc:164 +#: f.menus.cc:177 msgid "Burn selected image files to CD or DVD" msgstr "Incide le immagini selezionate su CD/DVD" -#: f.menus.cc:165 +#: f.menus.cc:178 msgid "Memory and CPU (to terminal/logfile)" -msgstr "" +msgstr "Memoria e CPU (al terminale/giornale)" -#: f.menus.cc:165 +#: f.menus.cc:178 msgid "Resources" msgstr "Mostra risorse (nel terminale)" -#: f.menus.cc:167 -msgid "Edit Caption/Comments" -msgstr "Modifica titolo/commenti" - -#: f.menus.cc:167 -msgid "Edit image caption or comment" -msgstr "Modifica titoli e commenti dell'immagine" - -#: f.menus.cc:168 f.meta.cc:165 f.meta.cc:1728 +#: f.menus.cc:180 f.meta.cc:110 f.meta.cc:1897 msgid "Edit Metadata" msgstr "Modifica metadati (normale)" -#: f.menus.cc:168 -msgid "Edit image date/rating/tags" -msgstr "Modifica data/voto/etichette" +#: f.menus.cc:180 +msgid "Edit image tags/caption/rating ..." +msgstr "" -#: f.menus.cc:169 +#: f.menus.cc:181 msgid "Add/remove tags for multiple images" -msgstr "" +msgstr "Aggiungi/togli etichette in massa" -#: f.menus.cc:169 -msgid "Batch Tags" -msgstr "" +#: f.menus.cc:181 f.meta.cc:1552 +msgid "Batch Add/Remove Tags" +msgstr "Aggiungi/elimina etichette in massa" -#: f.menus.cc:170 +#: f.menus.cc:182 msgid "List a few key metadata items" msgstr "Mostra alcuni metadati di base" -#: f.menus.cc:170 +#: f.menus.cc:182 msgid "View Metadata (short)" msgstr "Vedi metadati (breve)" -#: f.menus.cc:171 +#: f.menus.cc:183 msgid "List all metadata items" msgstr "Mostra tutti i metadati" -#: f.menus.cc:171 +#: f.menus.cc:183 msgid "View Metadata (long)" msgstr "Vedi metadati (completo)" -#: f.menus.cc:172 +#: f.menus.cc:184 msgid "Edit Any Metadata" msgstr "Modifica metadati (avanzato)" -#: f.menus.cc:172 +#: f.menus.cc:184 msgid "Edit any image metadata" msgstr "Modifica qualsiasi metadato dell'immagine" -#: f.menus.cc:173 f.meta.cc:1820 +#: f.menus.cc:185 f.meta.cc:1989 msgid "Delete Metadata" msgstr "Elimina metadati" -#: f.menus.cc:173 +#: f.menus.cc:185 msgid "Remove all metadata from an image" msgstr "Rimuove tutti i metadati da un'immagine" -#: f.menus.cc:174 +#: f.menus.cc:186 msgid "Download Geolocations" msgstr "Scarica Geolocations" -#: f.menus.cc:174 +#: f.menus.cc:186 msgid "Download initial geolocation database" msgstr "Scarica il database Geolocations minimo " -#: f.menus.cc:176 f.meta.cc:2713 +#: f.menus.cc:188 f.meta.cc:2892 msgid "Edit Geotags" msgstr "Modifica database Geotags" -#: f.menus.cc:176 -msgid "Edit image geotags" -msgstr "Modifica Geotags" +#: f.menus.cc:188 +msgid "Edit image location and geotags" +msgstr "" -#: f.menus.cc:177 +#: f.menus.cc:189 msgid "Add geotags to multiple images" msgstr "Aggiungi Geotags a più immagini" -#: f.menus.cc:177 f.meta.cc:2905 +#: f.menus.cc:189 f.meta.cc:3084 msgid "Batch Add Geotags" msgstr "Aggiunta Geotags in blocco" -#: f.menus.cc:178 +#: f.menus.cc:190 msgid "Find all images for a location [date]" msgstr "Cerca tutte le immagini di un luogo/data" -#: f.menus.cc:178 +#: f.menus.cc:190 msgid "Images by Location/Date" msgstr "Cerca per luogo/data" -#: f.menus.cc:179 +#: f.menus.cc:191 msgid "Find images by clicking a world map" msgstr "Cerca immagini cliccando su un mappamondo" -#: f.menus.cc:179 +#: f.menus.cc:191 msgid "Images by Map Location" msgstr "Immagini di un luogo" -#: f.menus.cc:180 +#: f.menus.cc:192 msgid "Find images meeting select criteria" msgstr "Cerca immagini con determinati criteri" -#: f.menus.cc:180 +#: f.menus.cc:192 msgid "Search Images" msgstr "Ricerca immagini" -#: f.menus.cc:182 fotoxx.h:1002 +#: f.menus.cc:194 fotoxx.h:1023 msgid "Select" msgstr "Seleziona" -#: f.menus.cc:182 +#: f.menus.cc:194 msgid "Select object or area for editing" msgstr "Seleziona oggetto o area da modificare" -#: f.menus.cc:183 fotoxx.h:1004 +#: f.menus.cc:195 fotoxx.h:1025 msgid "Show" msgstr "Visualizza" -#: f.menus.cc:183 +#: f.menus.cc:195 msgid "Show (outline) existing area" msgstr "Mostra il contorno dell'area definita" -#: f.menus.cc:184 fotoxx.h:969 +#: f.menus.cc:196 fotoxx.h:990 msgid "Hide" msgstr "Nascondi" -#: f.menus.cc:184 +#: f.menus.cc:196 msgid "Hide existing area" msgstr "Nascondi l'area definita" -#: f.menus.cc:185 fotoxx.h:959 +#: f.menus.cc:197 fotoxx.h:979 msgid "Enable" msgstr "Abilita" -#: f.menus.cc:185 +#: f.menus.cc:197 msgid "Enable area for editing" msgstr "Abilita area alle modifiche" -#: f.menus.cc:186 fotoxx.h:956 +#: f.menus.cc:198 fotoxx.h:976 msgid "Disable" msgstr "Disabilita" -#: f.menus.cc:186 +#: f.menus.cc:198 msgid "Disable area for editing" msgstr "Disabilita area per modifiche" -#: f.menus.cc:187 fotoxx.h:972 +#: f.menus.cc:199 fotoxx.h:993 msgid "Invert" msgstr "Inverti" -#: f.menus.cc:187 +#: f.menus.cc:199 msgid "Reverse existing area" msgstr "Inverti l'area definita" -#: f.menus.cc:188 +#: f.menus.cc:200 msgid "Erase existing area" msgstr "Cancella area" -#: f.menus.cc:188 fotoxx.h:1013 +#: f.menus.cc:200 fotoxx.h:1035 msgid "Unselect" msgstr "Deseleziona" -#: f.menus.cc:189 fotoxx.h:951 +#: f.menus.cc:201 fotoxx.h:971 msgid "Copy" msgstr "Copia" -#: f.menus.cc:189 +#: f.menus.cc:201 msgid "Copy an area for later pasting" msgstr "Copia un'area per incollarla dopo" -#: f.menus.cc:190 fotoxx.h:984 +#: f.menus.cc:202 fotoxx.h:1005 msgid "Paste" msgstr "Incolla" -#: f.menus.cc:190 +#: f.menus.cc:202 msgid "Paste an area into the current image" msgstr "Incolla un'area nell'immagine corrente" -#: f.menus.cc:191 +#: f.menus.cc:203 msgid "Open a file with a saved area" msgstr "Apri un file con un'area salvata" -#: f.menus.cc:192 f.menus.cc:281 fotoxx.h:999 +#: f.menus.cc:204 f.menus.cc:294 fotoxx.h:1020 msgid "Save" msgstr "Salva" -#: f.menus.cc:192 +#: f.menus.cc:204 msgid "Save an area to a file" msgstr "Salva l'area in un file" -#: f.menus.cc:194 +#: f.menus.cc:206 msgid "Rotate 90 degrees" -msgstr "" +msgstr "Ruota di 90 gradi" -#: f.menus.cc:194 f.menus.cc:447 -msgid "Turn" -msgstr "" +#: f.menus.cc:206 f.menus.cc:458 +msgid "Rotate 90º" +msgstr "Ruota 90º" -#: f.menus.cc:195 fotoxx.h:998 +#: f.menus.cc:207 fotoxx.h:1019 msgid "Rotate" msgstr "Ruota" -#: f.menus.cc:195 +#: f.menus.cc:207 msgid "Rotate by any angle" msgstr "Ruota con angolo libero" -#: f.menus.cc:196 +#: f.menus.cc:208 msgid "Cut off unwanted margins" msgstr "Ritaglia i margini non voluti" -#: f.menus.cc:197 +#: f.menus.cc:209 msgid "Auto-Trim" msgstr "Ritaglia automaticamente" -#: f.menus.cc:197 +#: f.menus.cc:209 msgid "Remove margins from warp, panorama, etc." msgstr "Ritaglia i margini dopo Distorsione, Panorama, ..." -#: f.menus.cc:198 +#: f.menus.cc:210 msgid "Change pixel dimensions" msgstr "Modifica le dimensioni in pixel" -#: f.menus.cc:199 +#: f.menus.cc:211 msgid "Mirror image horizontally or vertically" msgstr "Rispecchia in orizzontale o verticale" -#: f.menus.cc:200 +#: f.menus.cc:212 msgid "Add Text" msgstr "Aggiungi scritte" -#: f.menus.cc:200 +#: f.menus.cc:212 msgid "Write text on image" msgstr "Disegna scritte sull'immagine" -#: f.menus.cc:202 +#: f.menus.cc:214 msgid "Fast auto enhance that may work OK" msgstr "Auto correzione che potrebbe anche funzionare bene..." -#: f.menus.cc:202 f.menus.cc:448 +#: f.menus.cc:214 f.menus.cc:459 msgid "Voodoo Enhance" msgstr "Miglioramento magico Voodoo" -#: f.menus.cc:203 +#: f.menus.cc:215 msgid "Adjust brightness, contrast, color" msgstr "Correggi luminosità contrasto e colore" -#: f.menus.cc:203 f.menus.cc:449 -msgid "Brightness/Color" -msgstr "Luminosità e colore" +#: f.menus.cc:215 f.retouch.cc:211 +msgid "Brightness/Contrast/Color" +msgstr "Luminosità/Contrasto/Colore" -#: f.menus.cc:204 +#: f.menus.cc:216 msgid "Adjust contrast using a gamma curve" msgstr "Regola contrasto con curva gamma" -#: f.menus.cc:204 f.menus.cc:450 +#: f.menus.cc:216 f.menus.cc:461 msgid "Gamma Curves" msgstr "Curve Gamma" -#: f.menus.cc:205 +#: f.menus.cc:217 msgid "Add local contrast, enhance details" msgstr "Aggiungi contrasto locale (più dettagli)" -#: f.menus.cc:205 f.menus.cc:452 f.retouch.cc:1130 +#: f.menus.cc:217 f.menus.cc:463 f.retouch.cc:1130 msgid "Tone Mapping" msgstr "Mappa tonalità" -#: f.menus.cc:206 f.menus.cc:451 +#: f.menus.cc:218 f.menus.cc:462 msgid "Flatten Brightness" msgstr "Normalizza luminosità" -#: f.menus.cc:206 +#: f.menus.cc:218 msgid "Flatten brightness distribution" msgstr "Appiattisci la distribuzione della luce" -#: f.menus.cc:207 +#: f.menus.cc:219 msgid "Expand Brightness" msgstr "Espandi luminosità" -#: f.menus.cc:207 +#: f.menus.cc:219 msgid "Expand brightness range" msgstr "Espandi la gamma di luminosità" -#: f.menus.cc:208 +#: f.menus.cc:220 msgid "Brightness Ramp" msgstr "Rampe di luce/colore" -#: f.menus.cc:208 +#: f.menus.cc:220 msgid "Fix brightness uniformity across image" msgstr "Imposta l'uniformità della luce lungo l'immagine" -#: f.menus.cc:209 f.retouch.cc:2361 +#: f.menus.cc:221 f.retouch.cc:2358 msgid "Paint Edits" msgstr "Pennella funzione" -#: f.menus.cc:209 -msgid "Paint edit function gradually with the mouse" +#: f.menus.cc:221 +msgid "Paint edit function gradually with mouse" msgstr "Applica una funzione gradualmente col mouse" -#: f.menus.cc:210 f.retouch.cc:2592 +#: f.menus.cc:222 f.retouch.cc:2589 msgid "Leverage Edits" msgstr "Modula ritocco" -#: f.menus.cc:210 +#: f.menus.cc:222 msgid "Leverage edits by brightness or color" msgstr "Modula la funzione corrente secondo luminosità/colore" -#: f.menus.cc:212 +#: f.menus.cc:224 msgid "Make the image look sharper" msgstr "Produci un'immagine più dettagliata" -#: f.menus.cc:212 f.repair.cc:60 +#: f.menus.cc:224 f.repair.cc:60 msgid "Sharpen" msgstr "Contrasta" -#: f.menus.cc:213 f.repair.cc:1543 +#: f.menus.cc:225 f.repair.cc:1543 msgid "Blur" msgstr "Sfuoca" -#: f.menus.cc:213 +#: f.menus.cc:225 msgid "Make the image look fuzzy" msgstr "Produci un'immagine più imprecisa" -#: f.menus.cc:214 +#: f.menus.cc:226 msgid "Filter noise from low-light photos" msgstr "Elimina disturbi da foto con poca luce" -#: f.menus.cc:214 +#: f.menus.cc:226 msgid "Reduce Noise" msgstr "Riduci disturbo" -#: f.menus.cc:215 +#: f.menus.cc:227 msgid "Remove unwanted objects" msgstr "Elimina oggetti non voluti" -#: f.menus.cc:215 f.repair.cc:1536 +#: f.menus.cc:227 f.repair.cc:1536 msgid "Smart Erase" msgstr "Cancellazione intelligente" -#: f.menus.cc:216 +#: f.menus.cc:228 msgid "Fix red-eyes from electronic flash" msgstr "Correggi gli occhi rossi a causa del flash" -#: f.menus.cc:216 f.menus.cc:454 +#: f.menus.cc:228 f.menus.cc:465 msgid "Red Eyes" msgstr "Rimuovi occhi rossi" -#: f.menus.cc:217 +#: f.menus.cc:229 msgid "Paint image pixels using the mouse" msgstr "Disegna pixel con il mouse" -#: f.menus.cc:217 f.repair.cc:2357 +#: f.menus.cc:229 f.repair.cc:2357 msgid "Paint/Clone" msgstr "Dipingi pixel" -#: f.menus.cc:218 f.repair.cc:2880 +#: f.menus.cc:230 f.repair.cc:2880 msgid "Remove Dust" msgstr "Rimozione polvere" -#: f.menus.cc:218 +#: f.menus.cc:230 msgid "Remove dust spots from scanned slides" msgstr "Elimina le macchie di polvere da diapositive scansionate" -#: f.menus.cc:219 +#: f.menus.cc:231 msgid "Anti-alias" msgstr "Anti-alias" -#: f.menus.cc:219 +#: f.menus.cc:231 msgid "Smoothen edges with jaggies" msgstr "Sfuoca bordi sgranati" -#: f.menus.cc:220 +#: f.menus.cc:232 msgid "Fix Color Fringes" msgstr "Corregge frange di colore" -#: f.menus.cc:220 +#: f.menus.cc:232 msgid "Reduce Chromatic Abberation" msgstr "Corregge le barre colorate estranee alla foto" -#: f.menus.cc:221 +#: f.menus.cc:233 msgid "Erase known hot and dark pixels" msgstr "" "Cancella pixel difettosi della fotocamera, detti Hot-caldi o Dark-scuri " -#: f.menus.cc:221 f.repair.cc:3890 +#: f.menus.cc:233 f.repair.cc:3894 msgid "Fix Stuck Pixels" msgstr "Correggi pixel difettosi" -#: f.menus.cc:223 +#: f.menus.cc:235 msgid "Click on a white/gray area to fix color tint" msgstr "Clicca su un'area bianca o grigia per correggere la tinta" -#: f.menus.cc:223 f.menus.cc:453 +#: f.menus.cc:235 f.menus.cc:464 msgid "White Balance" msgstr "Bilanciamento del bianco" -#: f.menus.cc:224 +#: f.menus.cc:236 msgid "Make BW/color, negative/positive, sepia" msgstr "Trasforma in B/N o a colori, negativo, seppia..." -#: f.menus.cc:225 +#: f.menus.cc:237 msgid "Color Profile" msgstr "Profilo di colore" -#: f.menus.cc:225 +#: f.menus.cc:237 msgid "Convert to another color profile" msgstr "Converte a un altro profilo di colore" -#: f.menus.cc:226 +#: f.menus.cc:238 msgid "Match Colors" msgstr "Trasferisci colore" -#: f.menus.cc:226 +#: f.menus.cc:238 msgid "Match colors on one image with another" msgstr "Confronta colori di un'immagine con un'altra" -#: f.menus.cc:227 +#: f.menus.cc:239 msgid "Adjust color in selected image areas" msgstr "Regola il colore in aree selezionate" -#: f.menus.cc:228 +#: f.menus.cc:240 msgid "Adjust color using CMYK or RGB values" msgstr "Regola il colore con CMYK o RGB" -#: f.menus.cc:228 +#: f.menus.cc:240 msgid "CMYK Density" msgstr "Densità CMYK" -#: f.menus.cc:230 +#: f.menus.cc:242 msgid "Remove curvature, esp. panoramas" msgstr "Elimina la curvatura, specialmente da panorama" -#: f.menus.cc:231 +#: f.menus.cc:243 msgid "Straighten objects seen from an angle" msgstr "Raddrizza oggetti visti da un angolo" -#: f.menus.cc:232 +#: f.menus.cc:244 msgid "Flatten Book Page" msgstr "Appiattisci pagina" -#: f.menus.cc:232 +#: f.menus.cc:244 msgid "Flatten a photographed book page" msgstr "Appiattisce la foto della pagina di un libro" -#: f.menus.cc:233 +#: f.menus.cc:245 msgid "Distort image areas using the mouse" msgstr "Distorci un'area usando il mouse" -#: f.menus.cc:234 f.menus.cc:235 f.menus.cc:236 +#: f.menus.cc:246 f.menus.cc:247 f.menus.cc:248 msgid "Distort the whole image using the mouse" msgstr "Distorci l'intera foto usando il mouse" -#: f.menus.cc:238 +#: f.menus.cc:250 msgid "Color Depth" msgstr "Risoluzione del colore" -#: f.menus.cc:238 +#: f.menus.cc:250 msgid "Reduce color depth (posterize)" msgstr "Riduce la risoluzione dei colori (poster)" -#: f.menus.cc:239 +#: f.menus.cc:251 msgid "Convert to pencil sketch" -msgstr "" +msgstr "Converte in disegno a matita" -#: f.menus.cc:239 +#: f.menus.cc:251 msgid "Sketch" -msgstr "" +msgstr "Schizzo" -#: f.menus.cc:240 +#: f.menus.cc:252 msgid "Convert to colored line drawing" msgstr "Converti in disegno con linee colorate" -#: f.menus.cc:240 +#: f.menus.cc:252 msgid "Drawing" msgstr "Disegno" -#: f.menus.cc:241 +#: f.menus.cc:253 msgid "Graduated Blur depending on contrast" -msgstr "" +msgstr "Sfumatura graduale basata sul contrasto" -#: f.menus.cc:242 +#: f.menus.cc:254 msgid "Create an embossed or 3D appearance" msgstr "Crea un effetto scolpito o 3D" -#: f.menus.cc:242 +#: f.menus.cc:254 msgid "Embossing" msgstr "Bassorilievo" -#: f.menus.cc:243 +#: f.menus.cc:255 msgid "Convert to square tiles" msgstr "Crea un effetto piastrellato" -#: f.menus.cc:243 +#: f.menus.cc:255 msgid "Tiles" msgstr "Mosaico" -#: f.menus.cc:244 +#: f.menus.cc:256 msgid "Convert to dots (Roy Lichtenstein effect)" msgstr "Crea un effetto puntinato (Roy Lichtenstein)" -#: f.menus.cc:244 +#: f.menus.cc:256 msgid "Dots" msgstr "Puntinismo" -#: f.menus.cc:245 +#: f.menus.cc:257 msgid "Convert into a simulated painting" msgstr "Crea un effetto di dipinto a olio" -#: f.menus.cc:245 +#: f.menus.cc:257 msgid "Painting" msgstr "Dipinto" -#: f.menus.cc:246 +#: f.menus.cc:258 msgid "Shift/convert colors into other colors" msgstr "Cambia tonalità dei componenti del colore" -#: f.menus.cc:247 +#: f.menus.cc:259 msgid "Change brightness or color radially" msgstr "Cambia luminosità o contrasto in modo radiale" -#: f.menus.cc:249 +#: f.menus.cc:261 msgid "Combine bright/dark images for better detail" msgstr "Combina immagini chiare/scure per guadagnare in dettaglio" -#: f.menus.cc:249 +#: f.menus.cc:261 msgid "High Dynamic Range" msgstr "Combina immagini (alta dinamica - HDR)" -#: f.menus.cc:250 +#: f.menus.cc:262 msgid "Combine near/far focus images for deeper focus" msgstr "Combina immagini con profondità diverse per ampliare la messa a fuoco" -#: f.menus.cc:250 +#: f.menus.cc:262 msgid "High Depth of Field" msgstr "Combina immagini (grande profondità - HDF)" -#: f.menus.cc:251 +#: f.menus.cc:263 msgid "Combine images to erase passing people, etc." msgstr "Combina immagini per eliminare oggetti (es. passanti, automobili...)" -#: f.menus.cc:251 +#: f.menus.cc:263 msgid "Stack / Paint" msgstr "Sovrapponi (interattivo con mouse)" -#: f.menus.cc:252 +#: f.menus.cc:264 msgid "Combine noisy images into a low-noise image" msgstr "Combina immagini disturbate in una con minor disturbo" -#: f.menus.cc:252 +#: f.menus.cc:264 msgid "Stack / Noise" msgstr "Sovrapponi (rimozione disturbo)" -#: f.menus.cc:253 +#: f.menus.cc:265 msgid "Combine images into a panorama" msgstr "Combina immagini lato a lato per creare un panorama" -#: f.menus.cc:253 +#: f.menus.cc:265 msgid "Panorama" msgstr "Crea un panorama" -#: f.menus.cc:254 +#: f.menus.cc:266 msgid "Combine images into a vertical panorama" msgstr "Combina immagini in un panorama verticale" -#: f.menus.cc:254 +#: f.menus.cc:266 msgid "Vertical Panorama" msgstr "Panorama verticale" -#: f.menus.cc:256 +#: f.menus.cc:267 +msgid "Arrange multiple images on a background image" +msgstr "" + +#: f.menus.cc:267 +msgid "Mashup" +msgstr "" + +#: f.menus.cc:269 msgid "Add another image editor to the menu" msgstr "Aggiungi altri programmi al menù" -#: f.menus.cc:256 +#: f.menus.cc:269 msgid "Edit Plugins" msgstr "Gestione plug-in" -#: f.menus.cc:258 fotoxx-13.08.cc:3597 +#: f.menus.cc:271 fotoxx-13.09.cc:3630 msgid "Quick Start" msgstr "Introduzione rapida" -#: f.menus.cc:258 +#: f.menus.cc:271 msgid "Quick Start mini-guide" msgstr "Miniguida rapida" -#: f.menus.cc:259 +#: f.menus.cc:272 msgid "Read the user guide" msgstr "Visualizza la guida utente" -#: f.menus.cc:259 fotoxx-13.08.cc:3600 +#: f.menus.cc:272 fotoxx-13.09.cc:3633 msgid "User Guide" msgstr "Guida utente" -#: f.menus.cc:260 +#: f.menus.cc:273 msgid "Recent user guide changes" msgstr "Visualizza gli ultimi cambiamenti alla guida utente" -#: f.menus.cc:260 fotoxx-13.08.cc:3603 +#: f.menus.cc:273 fotoxx-13.09.cc:3636 msgid "User Guide Changes" msgstr "Cronistoria della guida utente" -#: f.menus.cc:261 +#: f.menus.cc:274 msgid "Fotoxx updates notification" msgstr "Notifiche di aggiornamenti a Fotoxx" -#: f.menus.cc:261 fotoxx-13.08.cc:3606 +#: f.menus.cc:274 fotoxx-13.09.cc:3639 msgid "Program Updates" msgstr "Aggiornamenti" -#: f.menus.cc:262 fotoxx-13.08.cc:3612 +#: f.menus.cc:275 fotoxx-13.09.cc:3645 msgid "Edit Functions Summary" msgstr "Sommario funzioni" -#: f.menus.cc:262 +#: f.menus.cc:275 msgid "Summary of image edit functions" msgstr "Visualizza un sommario delle funzioni disponibili" -#: f.menus.cc:263 fotoxx-13.08.cc:3609 +#: f.menus.cc:276 fotoxx-13.09.cc:3642 msgid "README" msgstr "Read-me" -#: f.menus.cc:263 +#: f.menus.cc:276 msgid "Technical installation notes" msgstr "Mostra note tecniche aggiuntive su Fotoxx" -#: f.menus.cc:264 fotoxx-13.08.cc:3615 +#: f.menus.cc:277 fotoxx-13.09.cc:3648 msgid "Change Log" msgstr "Cronistoria delle modifiche" -#: f.menus.cc:264 +#: f.menus.cc:277 msgid "List updates by Fotoxx version" msgstr "Mostra la storia delle versioni e loro contenuti" -#: f.menus.cc:265 fotoxx-13.08.cc:3618 +#: f.menus.cc:278 fotoxx-13.09.cc:3651 msgid "Log File" msgstr "Mostra file di log" -#: f.menus.cc:265 +#: f.menus.cc:278 msgid "View the log file and error messages" msgstr "Mostra il file di log: i messaggi generati durante l'avviamento" -#: f.menus.cc:266 +#: f.menus.cc:279 msgid "How to do Fotoxx translations" msgstr "Mostra come fare la traduzione in altre lingue" -#: f.menus.cc:266 fotoxx-13.08.cc:3621 +#: f.menus.cc:279 fotoxx-13.09.cc:3654 msgid "Translations" msgstr "Come tradurre" -#: f.menus.cc:267 fotoxx-13.08.cc:3624 +#: f.menus.cc:280 fotoxx-13.09.cc:3657 msgid "Home Page" msgstr "Sito WEB" -#: f.menus.cc:267 +#: f.menus.cc:280 msgid "Show the Fotoxx web page" msgstr "Mostra la home page internet di fotoxx" -#: f.menus.cc:268 fotoxx-13.08.cc:3627 +#: f.menus.cc:281 fotoxx-13.09.cc:3660 msgid "About" msgstr "Info" -#: f.menus.cc:268 +#: f.menus.cc:281 msgid "Version, license, contact, credits" msgstr "Versione, licenza, contatti, riconoscimenti" -#: f.menus.cc:271 +#: f.menus.cc:284 msgid "Favs" msgstr "Preferiti" -#: f.menus.cc:273 +#: f.menus.cc:286 msgid "Color of area borders etc." -msgstr "" +msgstr "Colore delle aree ai bordi ecc." -#: f.menus.cc:274 fotoxx.h:1011 +#: f.menus.cc:287 fotoxx.h:1033 msgid "Undo" msgstr "Annulla" -#: f.menus.cc:274 +#: f.menus.cc:287 msgid "Undo one edit" msgstr "Annulla l'ultima modifica" -#: f.menus.cc:275 fotoxx.h:993 +#: f.menus.cc:288 fotoxx.h:1014 msgid "Redo" msgstr "Ripeti" -#: f.menus.cc:275 +#: f.menus.cc:288 msgid "Redo one edit" msgstr "Ripete l'ultima modifica" -#: f.menus.cc:277 f.menus.cc:389 -msgid "Gallery from Tab F" +#: f.menus.cc:290 f.menus.cc:400 +msgid "Set gallery from current image file" msgstr "" -#: f.menus.cc:279 +#: f.menus.cc:290 f.menus.cc:400 +msgid "Sync.G" +msgstr "" + +#: f.menus.cc:292 msgid "Open the previous file" msgstr "Apri il file precedente" -#: f.menus.cc:279 fotoxx.h:988 +#: f.menus.cc:292 fotoxx.h:1009 msgid "Prev" -msgstr "Prec." +msgstr "Preced." -#: f.menus.cc:280 fotoxx.h:979 +#: f.menus.cc:293 fotoxx.h:1000 msgid "Next" msgstr "Prossima" -#: f.menus.cc:280 +#: f.menus.cc:293 msgid "Open the next file" msgstr "Apri il file successivo" -#: f.menus.cc:281 -msgid "Save to the same file" -msgstr "Salva il file (sovrascrive)" - -#: f.menus.cc:282 -msgid "Save to a new version" -msgstr "Salva con nuova versione" - -#: f.menus.cc:282 -msgid "Save+V" -msgstr "Salva+V" - -#: f.menus.cc:283 -msgid "Save to a new file" -msgstr "Salva con nome differente" - -#: f.menus.cc:283 -msgid "Save+F" -msgstr "Salva>N" - -#: f.menus.cc:284 f.menus.cc:437 fotoxx.h:1008 +#: f.menus.cc:295 f.menus.cc:448 fotoxx.h:1030 msgid "Trash" msgstr "Cestina" -#: f.menus.cc:303 f.menus.cc:332 +#: f.menus.cc:314 f.menus.cc:343 msgid "Run as Fotoxx edit function" msgstr "Esegui come funzione di edit fotoxx" -#: f.menus.cc:391 +#: f.menus.cc:382 +msgid "Top" +msgstr "" + +#: f.menus.cc:401 +msgid "open another directory" +msgstr "" + +#: f.menus.cc:402 msgid "go to bookmarked image" msgstr "Va a un segnalibro" -#: f.menus.cc:392 +#: f.menus.cc:403 msgid "increase thumbnail size" msgstr "Aumenta la dimensione delle miniature" -#: f.menus.cc:393 +#: f.menus.cc:404 msgid "reduce thumbnail size" msgstr "Riduci la dimensione delle miniature" -#: f.menus.cc:394 -msgid "jump to first page" -msgstr "Vai alla prima pagina" - -#: f.menus.cc:395 -msgid "jump to last page" -msgstr "Vai all'ultima pagina" +#: f.menus.cc:405 +msgid "change sort order" +msgstr "" + +#: f.menus.cc:406 +msgid "jump to beginning (top)" +msgstr "" + +#: f.menus.cc:407 +msgid "jump to end (bottom)" +msgstr "" -#: f.menus.cc:396 +#: f.menus.cc:408 msgid "previous page" msgstr "Pagina precedente" -#: f.menus.cc:397 +#: f.menus.cc:409 msgid "next page" msgstr "Pagina successiva" -#: f.menus.cc:398 +#: f.menus.cc:410 msgid "previous row" msgstr "Riga precedente" -#: f.menus.cc:399 +#: f.menus.cc:411 msgid "next row" msgstr "Riga successiva" -#: f.menus.cc:400 -msgid "change sequence" -msgstr "Cambia sequenza" - -#: f.menus.cc:434 fotoxx.h:996 +#: f.menus.cc:445 fotoxx.h:1017 msgid "Rename" msgstr "Rinomina" -#: f.menus.cc:435 +#: f.menus.cc:446 msgid "Copy to Location" -msgstr "" +msgstr "Copia in una posizione" -#: f.menus.cc:436 +#: f.menus.cc:447 msgid "Move to Location" -msgstr "" +msgstr "Sposta a una posizione" -#: f.menus.cc:438 fotoxx.h:955 +#: f.menus.cc:449 fotoxx.h:975 msgid "Delete" msgstr "Elimina" -#: f.menus.cc:439 +#: f.menus.cc:450 msgid "Copy to Clipboard" msgstr "Copia negli appunti" -#: f.menus.cc:440 +#: f.menus.cc:451 msgid "Remove from Collection" -msgstr "" +msgstr "Rimuovi dalla collezione" -#: f.menus.cc:441 +#: f.menus.cc:452 msgid "Cut to Image Cache" -msgstr "" +msgstr "Taglia verso la cache immagini" -#: f.menus.cc:442 +#: f.menus.cc:453 msgid "Copy to Image Cache" -msgstr "" +msgstr "Copia nella cache immagini" -#: f.menus.cc:443 +#: f.menus.cc:454 msgid "Paste Image Cache Here (clear)" -msgstr "" +msgstr "Incolla cache immagine qui (pulisci)" -#: f.menus.cc:444 +#: f.menus.cc:455 msgid "Paste Image Cache Here (keep)" -msgstr "" +msgstr "Incolla cache immagini qui (mantieni)" + +#: f.menus.cc:460 +msgid "Brightness/Color" +msgstr "Luminosità e colore" -#: f.menus.cc:456 +#: f.menus.cc:467 msgid "Select Area" msgstr "Seleziona area" -#: f.meta.cc:87 -msgid "Edit Caption and Comments" -msgstr "Modifica titolo e commenti" +#: f.meta.cc:72 +msgid "" +"Metadata index is missing.\n" +"Use Tools > Synchronize Files." +msgstr "" + +#: f.meta.cc:106 +#, c-format +msgid "Rating: %c (stars)" +msgstr "" + +#: f.meta.cc:142 +msgid "Size:" +msgstr "" + +#: f.meta.cc:148 +msgid "Image Width:" +msgstr "" + +#: f.meta.cc:151 +msgid "Height:" +msgstr "" + +#: f.meta.cc:154 +msgid "Depth:" +msgstr "" + +#: f.meta.cc:159 +msgid "Image Date" +msgstr "" + +#: f.meta.cc:162 +msgid "Time" +msgstr "" + +#: f.meta.cc:164 +msgid "get prev" +msgstr "" + +#: f.meta.cc:169 +msgid "Choose:" +msgstr "" -#: f.meta.cc:98 +#: f.meta.cc:181 msgid "Caption" msgstr "Titolo" -#: f.meta.cc:102 +#: f.meta.cc:187 msgid "Comments" msgstr "Commenti" -#: f.meta.cc:173 -msgid "image date (yyyymmdd)" -msgstr "Data immagine (aaaammgg)" - -#: f.meta.cc:175 -msgid "use last" -msgstr "Utilizza ultima" - -#: f.meta.cc:178 -msgid "image stars" -msgstr "Voto dell'immagine" - -#: f.meta.cc:196 -msgid "current tags" -msgstr "Etichette attuali:" +#: f.meta.cc:193 +msgid "Image Tags" +msgstr "" -#: f.meta.cc:201 -msgid "recent tags" +#: f.meta.cc:199 +msgid "Recent Tags" msgstr "Etichette recenti:" -#: f.meta.cc:206 f.meta.cc:387 f.meta.cc:1404 f.meta.cc:3932 -msgid "defined tags" +#: f.meta.cc:205 f.meta.cc:556 f.meta.cc:1573 f.meta.cc:4111 +msgid "Defined Tags" msgstr "Etichette definite:" -#: f.meta.cc:373 fotoxx.h:976 +#: f.meta.cc:455 +msgid "date format is YYYY-MM-DD" +msgstr "" + +#: f.meta.cc:459 +msgid "date is invalid" +msgstr "" + +#: f.meta.cc:492 +msgid "time format is HH:MM [:SS]" +msgstr "" + +#: f.meta.cc:496 +msgid "time is invalid" +msgstr "" + +#: f.meta.cc:542 fotoxx.h:997 msgid "Manage Tags" msgstr "Gestione etichette" -#: f.meta.cc:373 +#: f.meta.cc:542 msgid "orphan tags" -msgstr "" +msgstr "Etichette orfane" -#: f.meta.cc:377 +#: f.meta.cc:546 msgid "category" msgstr "Categoria" -#: f.meta.cc:380 +#: f.meta.cc:549 msgid "tag" msgstr "Etichetta" -#: f.meta.cc:383 +#: f.meta.cc:552 msgid "create" msgstr "Crea" -#: f.meta.cc:384 +#: f.meta.cc:553 msgid "delete" msgstr "Elimina" -#: f.meta.cc:1383 -msgid "Batch Add/Remove Tags" -msgstr "" +#: f.meta.cc:1557 f.meta.cc:3116 f.tools.cc:2792 f.tools.cc:3877 +#: f.tools.cc:4093 f.tools.cc:4455 +msgid "0 files selected" +msgstr "0 file selezionati" -#: f.meta.cc:1394 +#: f.meta.cc:1563 msgid "tags to add" msgstr "Etichette da aggiungere" -#: f.meta.cc:1395 +#: f.meta.cc:1564 msgid "tags to remove" -msgstr "" +msgstr "Etichette da rimuovere" -#: f.meta.cc:1476 +#: f.meta.cc:1645 #, c-format msgid "" "%s \n" @@ -2366,29 +2561,37 @@ "%s \n" " troppe etichette" -#: f.meta.cc:1590 +#: f.meta.cc:1759 msgid "specify files and tags" -msgstr "" +msgstr "specificare file ed etichette" -#: f.meta.cc:1617 f.meta.cc:3044 f.tools.cc:2819 f.tools.cc:3011 -#: f.tools.cc:3051 f.tools.cc:4001 f.tools.cc:4311 f.tools.cc:4664 +#: f.meta.cc:1786 f.meta.cc:3223 f.tools.cc:2830 f.tools.cc:3022 +#: f.tools.cc:3062 f.tools.cc:4012 f.tools.cc:4322 f.tools.cc:4675 #, c-format msgid "%d files selected" msgstr "%d file selezionati" -#: f.meta.cc:1664 +#: f.meta.cc:1833 msgid "View Metadata" msgstr "Mostra i metadati" -#: f.meta.cc:1822 fotoxx.h:937 +#: f.meta.cc:1901 +msgid "key name" +msgstr "" + +#: f.meta.cc:1903 +msgid "key value" +msgstr "" + +#: f.meta.cc:1991 fotoxx.h:956 msgid "All" msgstr "Tutto" -#: f.meta.cc:1823 +#: f.meta.cc:1992 msgid "One Key:" msgstr "Una chiave:" -#: f.meta.cc:1954 +#: f.meta.cc:2123 #, c-format msgid "" "Download geotags data (8 megabytes). \n" @@ -2399,36 +2602,52 @@ "Salvati in %s \n" "Proseguo?" -#: f.meta.cc:1990 +#: f.meta.cc:2159 msgid "download failed" msgstr "Scaricamento fallito" -#: f.meta.cc:2025 +#: f.meta.cc:2192 fotoxx-13.09.cc:855 +msgid "Location from World Map" +msgstr "Luogo da mappa mondiale" + +#: f.meta.cc:2194 +msgid "Loading world map" +msgstr "" + +#: f.meta.cc:2201 msgid "please download geolocations data" msgstr "Occorre scaricare i dati di Geolocations" -#: f.meta.cc:2138 +#: f.meta.cc:2209 +msgid "Loading geolocations" +msgstr "" + +#: f.meta.cc:2327 msgid "geotags file must be downloaded" msgstr "Il file Geotags deve essere scaricato" -#: f.meta.cc:2432 f.meta.cc:2889 f.meta.cc:3152 +#: f.meta.cc:2611 f.meta.cc:3068 f.meta.cc:3331 #, c-format msgid "bad latitude/longitude: %s %s" msgstr "Latitudine/Longitudine errati: %s %s" -#: f.meta.cc:2731 f.meta.cc:2939 f.meta.cc:4432 +#: f.meta.cc:2893 +msgid "Geocoding web service courtesy of" +msgstr "" + +#: f.meta.cc:2910 f.meta.cc:3118 f.meta.cc:4611 msgid "city" msgstr "Città" -#: f.meta.cc:2734 f.meta.cc:2942 f.meta.cc:4435 +#: f.meta.cc:2913 f.meta.cc:3121 f.meta.cc:4614 msgid "country" msgstr "Nazione" -#: f.meta.cc:2802 f.meta.cc:3065 +#: f.meta.cc:2981 f.meta.cc:3244 msgid "city not found" msgstr "Città non trovata" -#: f.meta.cc:3130 +#: f.meta.cc:3309 msgid "" "data is incomplete \n" " proceed?" @@ -2436,156 +2655,164 @@ "I dati sono incompleti \n" " proseguire?" -#: f.meta.cc:3156 +#: f.meta.cc:3335 msgid "no files selected" msgstr "Nessun file selezionato" -#: f.meta.cc:3188 +#: f.meta.cc:3367 msgid "choose city" msgstr "Scegli città" -#: f.meta.cc:3272 +#: f.meta.cc:3451 msgid "not found" msgstr "non trovata" -#: f.meta.cc:3273 +#: f.meta.cc:3452 msgid "city and country required" msgstr "Indicare città e nazione" -#: f.meta.cc:3365 +#: f.meta.cc:3544 msgid "Report Geotag Groups" msgstr "Visualizza gruppi Geotags" -#: f.meta.cc:3366 +#: f.meta.cc:3545 msgid "Group by country" msgstr "Raggruppa per nazione" -#: f.meta.cc:3367 +#: f.meta.cc:3546 msgid "Group by country/city" msgstr "Raggruppa per nazione/città" -#: f.meta.cc:3368 +#: f.meta.cc:3547 msgid "Group by country/city/date" msgstr "Raggruppa per nazione/città/data" -#: f.meta.cc:3371 +#: f.meta.cc:3550 msgid "Combine within" msgstr "Combina entro" -#: f.meta.cc:3373 +#: f.meta.cc:3552 msgid "days" msgstr "giorni" -#: f.meta.cc:3715 +#: f.meta.cc:3667 +msgid "geotag groups" +msgstr "" + +#: f.meta.cc:3894 msgid "search range (km)" msgstr "distanza (km)" -#: f.meta.cc:3786 +#: f.meta.cc:3965 msgid "No matching images found" msgstr "Nessuna immagine soddisfa la ricerca" -#: f.meta.cc:3872 +#: f.meta.cc:4051 msgid "Search Image Metadata" msgstr "Cerca nei metadati dell'immagine" -#: f.meta.cc:3876 +#: f.meta.cc:4055 msgid "images to search:" -msgstr "" +msgstr "immagini da cercare:" -#: f.meta.cc:3877 +#: f.meta.cc:4056 msgid "all" -msgstr "" +msgstr "tutte" -#: f.meta.cc:3878 +#: f.meta.cc:4057 msgid "current set only" -msgstr "" +msgstr "insieme corrente" -#: f.meta.cc:3881 +#: f.meta.cc:4060 msgid "matching images:" -msgstr "" +msgstr "immagini corrispondenti:" -#: f.meta.cc:3882 +#: f.meta.cc:4061 msgid "new set" -msgstr "" +msgstr "nuovo insieme" -#: f.meta.cc:3883 +#: f.meta.cc:4062 msgid "add to set" -msgstr "" +msgstr "aggiungi all'insieme" -#: f.meta.cc:3884 +#: f.meta.cc:4063 msgid "remove" -msgstr "" +msgstr "rimuovi" -#: f.meta.cc:3890 +#: f.meta.cc:4069 msgid "date range" msgstr "Intervallo date: " -#: f.meta.cc:3891 +#: f.meta.cc:4070 msgid "stars range" msgstr "Voto da/a:" -#: f.meta.cc:3892 +#: f.meta.cc:4071 msgid "search tags" msgstr "Cerca etichette" -#: f.meta.cc:3893 +#: f.meta.cc:4072 msgid "search text" msgstr "Cerca testo" -#: f.meta.cc:3894 +#: f.meta.cc:4073 msgid "search files" msgstr "Cerca nei file" -#: f.meta.cc:3899 +#: f.meta.cc:4078 msgid "(yyyymmdd)" msgstr "(aaaammgg)" -#: f.meta.cc:3905 +#: f.meta.cc:4084 msgid "all/any" msgstr "Tutte/Qualsiasi" -#: f.meta.cc:3924 +#: f.meta.cc:4103 msgid "other criteria" msgstr "altri criteri" -#: f.meta.cc:3928 +#: f.meta.cc:4107 msgid "other" msgstr "altro" -#: f.meta.cc:4059 +#: f.meta.cc:4238 msgid "" "to remove images from current set, \n" "search current set" msgstr "" +"per rimuovere immagini dall'insieme corrente, \n" +"cercare nell'insieme corrente" -#: f.meta.cc:4066 +#: f.meta.cc:4245 msgid "" "to add images to current set, \n" "search all images" msgstr "" +"per aggiungere immagini all'insieme corrente, \n" +"cercare in tutte le immagini" -#: f.meta.cc:4293 +#: f.meta.cc:4472 #, c-format msgid "images added: %d removed: %d new count: %d" -msgstr "" +msgstr "Immagini aggiunte: %d; tolte: %d; totale corrente: %d" -#: f.meta.cc:4296 +#: f.meta.cc:4475 msgid "no changes made" -msgstr "" +msgstr "nessun cambiamento fatto" -#: f.meta.cc:4429 +#: f.meta.cc:4608 msgid "Add Geotags Search Criteria" msgstr "Aggiungi criteri di ricerca Geotags" -#: f.meta.cc:4448 +#: f.meta.cc:4627 msgid "range (km)" msgstr "distanza (km)" -#: f.meta.cc:4539 +#: f.meta.cc:4718 msgid "error in latitude/longitude/range" msgstr "errore nella specifica di latitudine/longitudine/distanza" -#: f.meta.cc:4604 +#: f.meta.cc:4783 msgid "" "These items are always reported: \n" "date, stars, tags, caption, comment" @@ -2593,15 +2820,15 @@ "Questi elementi sono sempre mostrati: \n" "data, stelle, etichette, titolo, commenti" -#: f.meta.cc:4628 +#: f.meta.cc:4807 msgid "Additional Items for Report" msgstr "Informazioni addizionali da riportare" -#: f.meta.cc:4634 +#: f.meta.cc:4813 msgid "Keyword" msgstr "parola chiave" -#: f.meta.cc:4641 +#: f.meta.cc:4820 msgid "Match Criteria" msgstr "criterio di corrispondenza" @@ -2649,7 +2876,7 @@ "1. Trascina per selezionare. \n" "2. Cancella. 3. Ripeti. " -#: f.repair.cc:1541 fotoxx.h:990 +#: f.repair.cc:1541 fotoxx.h:1011 msgid "Radius" msgstr "Raggio" @@ -2746,38 +2973,30 @@ msgid "Chromatic Abberation" msgstr "Frange di colore" -#: f.repair.cc:3896 +#: f.repair.cc:3900 msgid "pixel group" msgstr "Gruppo di pixel:" -#: f.repair.cc:3897 +#: f.repair.cc:3901 msgid "circle color" msgstr "Colore circolo:" -#: f.repair.cc:4006 +#: f.repair.cc:3913 f.repair.cc:3957 +msgid "stuck pixels:" +msgstr "" + +#: f.repair.cc:4023 msgid "Load Stuck Pixels" msgstr "Carica posizioni" -#: f.repair.cc:4030 f.repair.cc:4126 +#: f.repair.cc:4047 f.repair.cc:4113 msgid "Stuck Pixels file" msgstr "File di posizioni dei pixel rovinati" -#: f.repair.cc:4070 +#: f.repair.cc:4087 msgid "file format error" msgstr "Formato file errato" -#: f.repair.cc:4098 -msgid "there are zero stuck pixels" -msgstr "Non ci sono pixel difettosi" - -#: f.repair.cc:4102 -msgid "Save Stuck Pixels" -msgstr "Salva posizioni" - -#: f.retouch.cc:211 -msgid "Adjust Brightness and Color" -msgstr "Regola luminosità e colore" - #: f.retouch.cc:267 msgid "small-steps" msgstr "Controllo fine" @@ -2830,15 +3049,15 @@ msgid "bright pixels" msgstr "Pixel chiari" -#: f.retouch.cc:1983 +#: f.retouch.cc:1980 msgid "Ramp brightness across image" msgstr "Rampe di luce" -#: f.retouch.cc:2363 f.retouch.cc:2600 f.tools.cc:5242 +#: f.retouch.cc:2360 f.retouch.cc:2597 f.tools.cc:5253 msgid "Edit function must be active" msgstr "Una funzione di edit deve essere attiva" -#: f.retouch.cc:2371 fotoxx-13.08.cc:2867 +#: f.retouch.cc:2368 fotoxx-13.09.cc:2905 msgid "" "Select area cannot be kept.\n" "Continue?" @@ -2846,23 +3065,23 @@ "L'area selezionata non può essere mantenuta.\n" "Continuare?" -#: f.retouch.cc:2400 +#: f.retouch.cc:2397 msgid "power: center" msgstr "Forza: centro:" -#: f.retouch.cc:2405 +#: f.retouch.cc:2402 msgid "reset area" msgstr "Azzera area" -#: f.retouch.cc:2593 +#: f.retouch.cc:2590 msgid "Edit Function Amplifier" msgstr "Regola amplificazione di funzione" -#: f.retouch.cc:2629 +#: f.retouch.cc:2626 msgid "minimum" msgstr "Minimo" -#: f.retouch.cc:2631 +#: f.retouch.cc:2628 msgid "maximum" msgstr "Massimo" @@ -2979,443 +3198,453 @@ msgid "create missing and update stale thumbnails" msgstr "Crea e aggiorna le miniature" -#: f.tools.cc:542 +#: f.tools.cc:548 #, c-format msgid "%d thumbnails created, %d errors \n" msgstr "%d miniature create, con %d errori \n" -#: f.tools.cc:553 +#: f.tools.cc:559 msgid "no search index file is in use" msgstr "nessun file di indice in uso" -#: f.tools.cc:554 f.tools.cc:561 f.tools.cc:897 +#: f.tools.cc:560 f.tools.cc:567 f.tools.cc:910 msgid "COMPLETED" msgstr "COMPLETATO" -#: f.tools.cc:566 +#: f.tools.cc:572 msgid "rebuild search index" msgstr "ricostruire indice di ricerca" -#: f.tools.cc:585 +#: f.tools.cc:591 #, c-format msgid "%d current index records found \n" msgstr "%d registrazioni nell'indice \n" -#: f.tools.cc:589 +#: f.tools.cc:595 msgid "find all image files and build index records" msgstr "trova tutte le immagini e costruisci l'indice" -#: f.tools.cc:615 +#: f.tools.cc:621 msgid "too many image files" msgstr "troppi file di immagini" -#: f.tools.cc:642 +#: f.tools.cc:648 #, c-format msgid "found %d image files \n" msgstr "trovati %d file di immagine \n" -#: f.tools.cc:647 +#: f.tools.cc:653 msgid "merging old and new index records" msgstr "incorporo indici vecchi e nuovi" -#: f.tools.cc:697 +#: f.tools.cc:703 #, c-format msgid "files found in current index recs: %d \n" msgstr "file trovati nell'indice: %d \n" -#: f.tools.cc:715 +#: f.tools.cc:721 msgid "updating index records" msgstr "aggiorno registrazioni indice" -#: f.tools.cc:889 +#: f.tools.cc:902 #, c-format msgid "%d image files updated \n" msgstr "%d file immagine aggiornati \n" -#: f.tools.cc:909 +#: f.tools.cc:922 msgid "KILLED" msgstr "TERMINATO" -#: f.tools.cc:1047 +#: f.tools.cc:1060 msgid "Settings" msgstr "Impostazioni" -#: f.tools.cc:1050 +#: f.tools.cc:1063 msgid "Startup Display" msgstr "Vista iniziale" -#: f.tools.cc:1072 +#: f.tools.cc:1085 msgid "Recent Files Gallery" msgstr "Galleria file recenti" -#: f.tools.cc:1073 +#: f.tools.cc:1086 msgid "Newest Files Gallery" -msgstr "" +msgstr "Galleria delle immagini nuove" -#: f.tools.cc:1074 +#: f.tools.cc:1087 msgid "Previous Image Viewed" msgstr "Ultima immagine usata" -#: f.tools.cc:1075 +#: f.tools.cc:1088 msgid "Blank Window" msgstr "Finestra vuota" -#: f.tools.cc:1076 +#: f.tools.cc:1089 msgid "Directory Gallery" msgstr "Galleria di una cartella" -#: f.tools.cc:1077 +#: f.tools.cc:1090 msgid "Image File" msgstr "File immagine" -#: f.tools.cc:1093 +#: f.tools.cc:1106 msgid "Menu Style" msgstr "Stile per il menù" -#: f.tools.cc:1095 +#: f.tools.cc:1108 msgid "Classic" msgstr "Classico" -#: f.tools.cc:1096 +#: f.tools.cc:1109 msgid "Vertical" msgstr "Verticale" -#: f.tools.cc:1098 +#: f.tools.cc:1111 msgid "Toolbar Style" msgstr "Stile barra strumenti" -#: f.tools.cc:1101 +#: f.tools.cc:1114 msgid "Icons" msgstr "Icone" -#: f.tools.cc:1102 +#: f.tools.cc:1115 msgid "Both" msgstr "Entrambe" -#: f.tools.cc:1104 +#: f.tools.cc:1117 msgid "Image Pan" msgstr "Pan immagine" -#: f.tools.cc:1106 +#: f.tools.cc:1119 msgid "Drag" msgstr "Trascina" -#: f.tools.cc:1107 +#: f.tools.cc:1120 msgid "Scroll" msgstr "Scorri" -#: f.tools.cc:1108 +#: f.tools.cc:1121 msgid "Magnified" msgstr "Ingrandito" -#: f.tools.cc:1111 +#: f.tools.cc:1124 msgid "Warn Overwrite Original" msgstr "Avverti in sovrascrittura" -#: f.tools.cc:1114 +#: f.tools.cc:1127 msgid "Default JPEG quality" +msgstr "Qualità JPEG standard" + +#: f.tools.cc:1131 +msgid "Zooms for 200%" +msgstr "" + +#: f.tools.cc:1142 +msgid "RAW command" +msgstr "" + +#: f.tools.cc:1145 +msgid "RAW file types" msgstr "" -#: f.tools.cc:1261 +#: f.tools.cc:1274 msgid "startup directory is invalid" msgstr "Cartella iniziale non valida" -#: f.tools.cc:1269 +#: f.tools.cc:1282 msgid "startup file is invalid" msgstr "File iniziale non valido" -#: f.tools.cc:1368 +#: f.tools.cc:1381 msgid "Select startup directory" msgstr "Seleziona cartella d'avvio" -#: f.tools.cc:1376 +#: f.tools.cc:1389 msgid "Select startup image file" msgstr "Seleziona file d'avvio" -#: f.tools.cc:1414 +#: f.tools.cc:1427 msgid "Click list position. Click thumbnail to add." msgstr "" "Clicca la lista per indicare la posizione; clicca le miniature per " "aggiungere." -#: f.tools.cc:1439 f.tools.cc:1654 +#: f.tools.cc:1452 f.tools.cc:1667 msgid "Edit Bookmarks" msgstr "Gestisci segnalibri" -#: f.tools.cc:1585 +#: f.tools.cc:1598 msgid "unable to save bookmarks file" msgstr "Impossibile salvare i segnalibri" -#: f.tools.cc:1654 +#: f.tools.cc:1667 msgid "Go To Bookmark" msgstr "Va al segnalibro" -#: f.tools.cc:1800 +#: f.tools.cc:1811 msgid "Edit KB Shortcuts" msgstr "Gestisci le scorciatoie di tastiera" -#: f.tools.cc:1805 +#: f.tools.cc:1816 msgid "shortcut key:" msgstr "Scorciatoia:" -#: f.tools.cc:1806 +#: f.tools.cc:1817 msgid "(enter keys)" msgstr "(premi i tasti)" -#: f.tools.cc:1932 +#: f.tools.cc:1943 #, c-format msgid "\"%s\" Reserved, cannot be used" msgstr "\"%s\" è riservata - non si può usare" -#: f.tools.cc:2084 +#: f.tools.cc:2095 msgid "unable to save KB-shortcuts file" msgstr "Non riesco a salvare le scorciatoie" -#: f.tools.cc:2154 +#: f.tools.cc:2165 msgid "" "Right-click collection thumbnails to \n" "cut/copy to cache, paste cache, remove." msgstr "" +"Cliccare col destro le miniature per \n" +"tagliare/copiare verso la cache, incollare, rimuovere." -#: f.tools.cc:2190 +#: f.tools.cc:2201 msgid "Start a new collection" -msgstr "" +msgstr "Iniziare una nuova collezione" -#: f.tools.cc:2192 +#: f.tools.cc:2203 msgid "Collection to view or edit" -msgstr "" +msgstr "Collezione da vedere o modificare" -#: f.tools.cc:2194 +#: f.tools.cc:2205 msgid "Select images, add to cache" -msgstr "" +msgstr "Selezionare immagini, aggiungere alla cache" -#: f.tools.cc:2196 +#: f.tools.cc:2207 msgid "Clear image cache" -msgstr "" +msgstr "Azzerare la cache immagini" -#: f.tools.cc:2198 +#: f.tools.cc:2209 msgid "Delete a collection" msgstr "Elimina una collezione" -#: f.tools.cc:2221 +#: f.tools.cc:2232 msgid "New Collection" msgstr "Nuova collezione" -#: f.tools.cc:2222 +#: f.tools.cc:2233 msgid "Choose Collection" msgstr "Scegli la collezione" -#: f.tools.cc:2223 +#: f.tools.cc:2234 msgid "Delete Collection" msgstr "Elimina collezione" -#: f.tools.cc:2293 +#: f.tools.cc:2304 #, c-format msgid "delete %s ?" msgstr "Eliminare %s?" -#: f.tools.cc:2606 +#: f.tools.cc:2617 msgid "Move collection" msgstr "Sposta collezione" -#: f.tools.cc:2609 +#: f.tools.cc:2620 msgid "collection name" msgstr "Nome collezione" -#: f.tools.cc:2612 +#: f.tools.cc:2623 msgid "old top directory" msgstr "Vecchia cartella principale" -#: f.tools.cc:2615 +#: f.tools.cc:2626 msgid "new top directory" msgstr "Nuova cartella principale" -#: f.tools.cc:2662 +#: f.tools.cc:2673 msgid "completed" msgstr "Completato" -#: f.tools.cc:2752 +#: f.tools.cc:2763 msgid "Press ESC to exit slide show" msgstr "Premi ESC per terminare lo slide show" -#: f.tools.cc:2753 +#: f.tools.cc:2764 msgid "latest versions only" msgstr "Solo l'ultima versione" -#: f.tools.cc:2754 +#: f.tools.cc:2765 msgid "continuous loop" msgstr "Ciclo continuo" -#: f.tools.cc:2755 +#: f.tools.cc:2766 msgid "start with current image" -msgstr "" +msgstr "comincia con l'immagine corrente" -#: f.tools.cc:2759 +#: f.tools.cc:2770 msgid "arrow keys" msgstr "Manuale: tasti freccia" -#: f.tools.cc:2760 +#: f.tools.cc:2771 msgid "instant" msgstr "Istantanea" -#: f.tools.cc:2761 +#: f.tools.cc:2772 msgid "fade-in" msgstr "Dissolvenza" -#: f.tools.cc:2762 +#: f.tools.cc:2773 msgid "roll-right" msgstr "Tenda sx-dx" -#: f.tools.cc:2763 +#: f.tools.cc:2774 msgid "roll-down" msgstr "Tenda su-giù" -#: f.tools.cc:2764 +#: f.tools.cc:2775 msgid "shift-left" msgstr "Scorrimento a sinistra" -#: f.tools.cc:2765 +#: f.tools.cc:2776 msgid "venetian" msgstr "Veneziana" -#: f.tools.cc:2766 +#: f.tools.cc:2777 msgid "grate" msgstr "Quadrettoni" -#: f.tools.cc:2767 +#: f.tools.cc:2778 msgid "rectangle" msgstr "Rettangolo" -#: f.tools.cc:2768 +#: f.tools.cc:2779 msgid "radar" msgstr "Radar" -#: f.tools.cc:2769 +#: f.tools.cc:2780 msgid "jaws" msgstr "Ganasce" -#: f.tools.cc:2770 +#: f.tools.cc:2781 msgid "ellipse" msgstr "Ellisse" -#: f.tools.cc:2771 +#: f.tools.cc:2782 msgid "raindrops" msgstr "Gocce" -#: f.tools.cc:2781 f.tools.cc:3866 f.tools.cc:4444 -msgid "0 files selected" -msgstr "0 file selezionati" - -#: f.tools.cc:2783 +#: f.tools.cc:2794 msgid "collection:" msgstr "collezione: " -#: f.tools.cc:2793 +#: f.tools.cc:2804 msgid "music file" msgstr "File musicale" -#: f.tools.cc:2801 +#: f.tools.cc:2812 msgid "transitions" msgstr "Transizioni" -#: f.tools.cc:2803 +#: f.tools.cc:2814 msgid "seconds" msgstr "secondi" -#: f.tools.cc:2854 f.tools.cc:3038 f.tools.cc:3060 +#: f.tools.cc:2865 f.tools.cc:3049 f.tools.cc:3071 msgid "no image files selected" msgstr "Nessuna immagine selezionata" -#: f.tools.cc:3019 +#: f.tools.cc:3030 msgid "open collection" msgstr "Apri collezione" -#: f.tools.cc:3064 +#: f.tools.cc:3075 msgid "save as collection" msgstr "Salva come collezione" -#: f.tools.cc:3077 +#: f.tools.cc:3088 msgid "Select music file or playlist" msgstr "Seleziona file musicale o playlist" -#: f.tools.cc:3868 +#: f.tools.cc:3879 msgid "new base name" msgstr "Nuovo nome" -#: f.tools.cc:3871 +#: f.tools.cc:3882 msgid "starting sequence" msgstr "inizio sequenza" -#: f.tools.cc:3873 +#: f.tools.cc:3884 msgid "increment" msgstr "incremento" -#: f.tools.cc:3927 +#: f.tools.cc:3938 msgid "new file already exists:" msgstr "Nuovo file già esistente:" -#: f.tools.cc:3937 +#: f.tools.cc:3948 msgid "Rename failed:" msgstr "Rinominazione fallita:" -#: f.tools.cc:3982 +#: f.tools.cc:3993 msgid "base name / sequence / increment not reasonable" msgstr "nome principale / sequenza / incremento non ragionevole" -#: f.tools.cc:4085 +#: f.tools.cc:4096 msgid "max. width" msgstr "max. largh." -#: f.tools.cc:4090 +#: f.tools.cc:4101 msgid "no change" msgstr "NON modificare" -#: f.tools.cc:4093 +#: f.tools.cc:4104 msgid "new file type" msgstr "Nuovo tipo di file" -#: f.tools.cc:4094 +#: f.tools.cc:4105 msgid "same" msgstr "uguale" -#: f.tools.cc:4102 +#: f.tools.cc:4113 msgid "replace originals" msgstr "Sostituisci gli originali" -#: f.tools.cc:4103 +#: f.tools.cc:4114 msgid "move to location" msgstr "sposta altrove" -#: f.tools.cc:4104 +#: f.tools.cc:4115 msgid "remove EXIF" msgstr "Elimina EXIF" -#: f.tools.cc:4105 +#: f.tools.cc:4116 msgid "delete originals" msgstr "Elimina originali" -#: f.tools.cc:4180 +#: f.tools.cc:4191 msgid "file already exists" msgstr "file già esistente" -#: f.tools.cc:4188 +#: f.tools.cc:4199 msgid "file type not supported" msgstr "tipo di file non gestito" -#: f.tools.cc:4227 +#: f.tools.cc:4238 msgid "cannot create new file" msgstr "Errore in creazione del nuovo file" -#: f.tools.cc:4351 +#: f.tools.cc:4362 msgid "replace original files?" msgstr "Sovrascrivere i file originali?" -#: f.tools.cc:4352 +#: f.tools.cc:4363 #, c-format msgid "replace original files? (max. %d x %d)" msgstr "Sostituire i file originali? (max. %d x %d)" -#: f.tools.cc:4360 +#: f.tools.cc:4371 #, c-format msgid "" "copy files? \n" @@ -3424,7 +3653,7 @@ "Copiare i file? \n" " nella cartella %s" -#: f.tools.cc:4363 +#: f.tools.cc:4374 #, c-format msgid "" "copy files? (max. %d x %d) \n" @@ -3433,7 +3662,7 @@ "Copiare i file? (max. %d x %d) \n" " nella posizione %s" -#: f.tools.cc:4367 +#: f.tools.cc:4378 msgid "" "\n" " and delete originals" @@ -3441,80 +3670,88 @@ "\n" " e cancellare originali" -#: f.tools.cc:4380 +#: f.tools.cc:4391 msgid "location is not a valid directory" msgstr "La posizione non è una cartella valida" -#: f.tools.cc:4387 +#: f.tools.cc:4398 #, c-format msgid "max. size %d x %d is not reasonable" msgstr "Dimensioni massime %d x %d non ragionevoli" -#: f.tools.cc:4447 +#: f.tools.cc:4458 msgid "output file type" msgstr "Tipo file d'uscita" -#: f.tools.cc:4459 +#: f.tools.cc:4470 msgid "white balance" msgstr "bilanciamento del bianco" -#: f.tools.cc:4460 +#: f.tools.cc:4471 msgid "interpolation" msgstr "interpolazione" -#: f.tools.cc:4461 +#: f.tools.cc:4472 msgid "color space" msgstr "spazio di colore" -#: f.tools.cc:4462 +#: f.tools.cc:4473 msgid "gamma curve" msgstr "curva del gamma" -#: f.tools.cc:4465 +#: f.tools.cc:4476 msgid "camera" msgstr "fotocamera" -#: f.tools.cc:4466 +#: f.tools.cc:4477 msgid "fixed" msgstr "fissa" -#: f.tools.cc:4467 +#: f.tools.cc:4478 msgid "calculated" msgstr "calcolata" -#: f.tools.cc:4999 +#: f.tools.cc:4495 +msgid "default" +msgstr "" + +#: f.tools.cc:4501 +msgid "defaults" +msgstr "" + +#: f.tools.cc:5010 msgid "x-spacing" msgstr "Passo X:" -#: f.tools.cc:5000 +#: f.tools.cc:5011 msgid "x-count" msgstr "Num. barre X:" -#: f.tools.cc:5001 +#: f.tools.cc:5012 msgid "x-enable" msgstr "Abilita X:" -#: f.tools.cc:5007 +#: f.tools.cc:5018 msgid "y-spacing" msgstr "Passo Y:" -#: f.tools.cc:5008 +#: f.tools.cc:5019 msgid "y-count" msgstr "Num. righe Y:" -#: f.tools.cc:5009 +#: f.tools.cc:5020 msgid "y-enable" msgstr "Abilita Y:" -#: f.tools.cc:5016 +#: f.tools.cc:5027 msgid "x-offset" msgstr "Origine X:" -#: f.tools.cc:5020 +#: f.tools.cc:5031 msgid "y-offset" msgstr "Origine Y:" -#: f.tools.cc:5444 +#: f.tools.cc:5455 msgid "" "Brightness should show a gradual ramp \n" "extending all the way to the edges." @@ -3522,19 +3759,31 @@ "Le barre dovrebbero mostrare una gradualità\n" "in tutta la loro estensione." -#: f.tools.cc:5549 +#: f.tools.cc:5560 msgid "Available Translations" msgstr "Traduzioni disponibili" -#: f.tools.cc:5553 +#: f.tools.cc:5564 msgid "Set Language" msgstr "Cambia lingua" -#: f.tools.cc:5653 +#: f.tools.cc:5664 msgid "Make Launcher" msgstr "Crea lanciatore" -#: fotoxx-13.08.cc:330 +#: fotoxx-13.09.cc:201 +msgid "Tab F: image file view/edit" +msgstr "" + +#: fotoxx-13.09.cc:208 +msgid "Tab G: image gallery" +msgstr "" + +#: fotoxx-13.09.cc:215 +msgid "Tab W: world map" +msgstr "" + +#: fotoxx-13.09.cc:339 msgid "" "First time Fotoxx startup. \n" "Latest version: http://www.kornelix.com/fotoxx \n" @@ -3544,45 +3793,71 @@ "Ultima versione: http://www.kornelix.com/fotoxx \n" "Sincronizza file verrà avviata (può impiegare tempo) \n" -#: fotoxx-13.08.cc:363 +#: fotoxx-13.09.cc:372 msgid "Please install missing programs:" msgstr "Installa i programmi mancanti:" -#: fotoxx-13.08.cc:816 -msgid "Location from World Map" -msgstr "Luogo da mappa mondiale" +#: fotoxx-13.09.cc:686 +#, c-format +msgid " BUSY %d%c " +msgstr "" + +#: fotoxx-13.09.cc:688 +msgid " BUSY " +msgstr "" + +#: fotoxx-13.09.cc:745 +msgid " (reduced)" +msgstr "" + +#: fotoxx-13.09.cc:753 +#, c-format +msgid " edits: %d" +msgstr "" -#: fotoxx-13.08.cc:2500 +#: fotoxx-13.09.cc:758 +msgid " menu locked" +msgstr "" + +#: fotoxx-13.09.cc:759 +msgid " area active" +msgstr "" + +#: fotoxx-13.09.cc:760 +msgid " dialog open" +msgstr "" + +#: fotoxx-13.09.cc:2538 msgid "Exceed 50 anchor points" msgstr "Superati 50 punti di ancoraggio" -#: fotoxx-13.08.cc:2681 +#: fotoxx-13.09.cc:2719 msgid "load curve from a file" msgstr "carica curva da file" -#: fotoxx-13.08.cc:2735 +#: fotoxx-13.09.cc:2773 msgid "curve file is invalid" msgstr "File di curve non valido" -#: fotoxx-13.08.cc:2740 +#: fotoxx-13.09.cc:2778 msgid "curve file has different no. of curves" msgstr "Il file di curve ha un numero diverso di curve" -#: fotoxx-13.08.cc:2755 +#: fotoxx-13.09.cc:2793 msgid "save curve to a file" msgstr "salva curva in un file" -#: fotoxx-13.08.cc:2853 fotoxx-13.08.cc:3380 fotoxx-13.08.cc:3395 +#: fotoxx-13.09.cc:2891 fotoxx-13.09.cc:3417 fotoxx-13.09.cc:3432 msgid "prior function still active" msgstr "" "Una funzione interattiva è ancora in uso\n" "Termina tale funzione e riprova." -#: fotoxx-13.08.cc:2860 +#: fotoxx-13.09.cc:2898 msgid "Too many edits, please save image" msgstr "Troppe modifiche: salva l'immagine" -#: fotoxx-13.08.cc:2875 +#: fotoxx-13.09.cc:2913 msgid "" "Select area not active.\n" "Continue?" @@ -3590,23 +3865,23 @@ "Selezione di area non attiva.\n" "Continuare?" -#: fotoxx-13.08.cc:3350 +#: fotoxx-13.09.cc:3387 msgid "Discard edits?" msgstr "Scartare le modifiche?" -#: fotoxx-13.08.cc:3351 +#: fotoxx-13.09.cc:3388 msgid "This action will discard changes\n" msgstr "Questa azione annullerà le modifiche\n" -#: fotoxx-13.08.cc:3352 fotoxx.h:973 +#: fotoxx-13.09.cc:3389 fotoxx.h:994 msgid "Keep" msgstr "Mantieni modifiche" -#: fotoxx-13.08.cc:3353 +#: fotoxx-13.09.cc:3390 msgid "Discard" msgstr "Perdi modifiche" -#: fotoxx-13.08.cc:4054 +#: fotoxx-13.09.cc:4088 #, c-format msgid "" "warning: real memory %d MB < required %d MB \n" @@ -3615,212 +3890,224 @@ "attenzione: RAM (%d Mb) inferiore a quella richiesta (%d Mb)\n" "il programma può diventare molto lento\n" -#: fotoxx.h:936 +#: fotoxx.h:955 msgid "Add All" msgstr "Aggiungi tutto" -#: fotoxx.h:938 +#: fotoxx.h:957 msgid "Amount" msgstr "Quantità" -#: fotoxx.h:939 +#: fotoxx.h:958 +msgid "Angle" +msgstr "Angolo:" + +#: fotoxx.h:959 msgid "Apply" msgstr "Applica" -#: fotoxx.h:940 +#: fotoxx.h:960 msgid "Autocomplete" msgstr "Completa automaticamente" -#: fotoxx.h:941 +#: fotoxx.h:961 msgid "Black" msgstr "Nero" -#: fotoxx.h:942 +#: fotoxx.h:962 msgid "Blend Width" msgstr "Larghezza di sfumatura" -#: fotoxx.h:944 +#: fotoxx.h:964 msgid "Brightness" msgstr "Luminosità" -#: fotoxx.h:945 +#: fotoxx.h:965 msgid "Browse" msgstr "Sfoglia" -#: fotoxx.h:946 +#: fotoxx.h:966 msgid "Cancel" msgstr "Annulla" -#: fotoxx.h:947 +#: fotoxx.h:967 msgid "Choose" msgstr "Scegli" -#: fotoxx.h:948 +#: fotoxx.h:968 msgid "Clear" msgstr "Pulisci" -#: fotoxx.h:950 +#: fotoxx.h:970 msgid "Contrast" msgstr "Contrasto" -#: fotoxx.h:952 +#: fotoxx.h:972 msgid "Curve File:" msgstr "File di curve:" -#: fotoxx.h:953 +#: fotoxx.h:973 msgid "Cut" msgstr "Taglia" -#: fotoxx.h:954 +#: fotoxx.h:974 msgid "Darker Areas" msgstr "Aree scure" -#: fotoxx.h:957 +#: fotoxx.h:977 msgid "Done" msgstr "Fatto" -#: fotoxx.h:958 +#: fotoxx.h:978 msgid "Edit" msgstr "Modifica" -#: fotoxx.h:960 +#: fotoxx.h:980 msgid "Erase" msgstr "Esegui cancellatura" -#: fotoxx.h:961 +#: fotoxx.h:981 msgid "Fetch" msgstr "Prendi" -#: fotoxx.h:962 +#: fotoxx.h:982 msgid "Find" msgstr "Cerca" -#: fotoxx.h:963 +#: fotoxx.h:983 msgid "Finish" msgstr "Termina" -#: fotoxx.h:964 +#: fotoxx.h:984 msgid "Font" msgstr "Font" -#: fotoxx.h:966 +#: fotoxx.h:985 +msgid "Geotags" +msgstr "" + +#: fotoxx.h:987 msgid "Height" msgstr "Altezza" -#: fotoxx.h:968 +#: fotoxx.h:989 msgid "histogram" msgstr "Istogramma" -#: fotoxx.h:970 +#: fotoxx.h:991 msgid "Images" -msgstr "" +msgstr "Immagini" -#: fotoxx.h:971 +#: fotoxx.h:992 msgid "Insert" msgstr "Incolla" -#: fotoxx.h:974 +#: fotoxx.h:995 msgid "Lighter Areas" msgstr "Aree luminose" -#: fotoxx.h:975 +#: fotoxx.h:996 msgid "limit" msgstr "limite" -#: fotoxx.h:977 +#: fotoxx.h:998 msgid "Negative" -msgstr "" +msgstr "Negativo" -#: fotoxx.h:978 +#: fotoxx.h:999 msgid "New" msgstr "Nuovo" -#: fotoxx.h:980 +#: fotoxx.h:1001 msgid "search index file missing" msgstr "File di indice mancante" -#: fotoxx.h:981 +#: fotoxx.h:1002 msgid "OK" msgstr "Ok" -#: fotoxx.h:983 +#: fotoxx.h:1004 msgid "Open RAW File" msgstr "Apri file RAW" -#: fotoxx.h:985 +#: fotoxx.h:1006 msgid "Pause" msgstr "Sospendi" -#: fotoxx.h:986 +#: fotoxx.h:1007 msgid "Percent" msgstr "Percentuale" -#: fotoxx.h:987 +#: fotoxx.h:1008 msgid "Presets" msgstr "Fisse: " -#: fotoxx.h:989 +#: fotoxx.h:1010 msgid "Proceed" msgstr "Prosegui" -#: fotoxx.h:991 +#: fotoxx.h:1012 msgid "range" msgstr "intervallo" -#: fotoxx.h:994 +#: fotoxx.h:1015 msgid "Reduce" msgstr "Riduci" -#: fotoxx.h:997 +#: fotoxx.h:1018 msgid "Reset" msgstr "Azzera" -#: fotoxx.h:1000 +#: fotoxx.h:1021 msgid "Unknown file type, save as tiff/jpeg/png to edit" msgstr "Tipo di file sconosciuto. Salvarlo come TIFF/JPEG/PNG per modificarlo" -#: fotoxx.h:1001 +#: fotoxx.h:1022 msgid "Search" msgstr "Ricerca" -#: fotoxx.h:1005 +#: fotoxx.h:1026 +msgid "Size" +msgstr "Dimensione" + +#: fotoxx.h:1027 msgid "Start" msgstr "Inizio" -#: fotoxx.h:1006 +#: fotoxx.h:1028 msgid "Threshold" msgstr "Soglia" -#: fotoxx.h:1007 +#: fotoxx.h:1029 #, c-format msgid "exceed %d files" msgstr "più di %d file" -#: fotoxx.h:1009 +#: fotoxx.h:1031 msgid "Undo All" msgstr "Annulla tutto" -#: fotoxx.h:1010 +#: fotoxx.h:1032 msgid "Undo Last" msgstr "Annulla ultimo" -#: fotoxx.h:1012 +#: fotoxx.h:1034 msgid "Unfinish" msgstr "Ricomincia" -#: fotoxx.h:1014 +#: fotoxx.h:1036 msgid "View" msgstr "Vista" -#: fotoxx.h:1015 +#: fotoxx.h:1037 msgid "Web" msgstr "Web" -#: fotoxx.h:1016 +#: fotoxx.h:1038 msgid "White" msgstr "Bianco" -#: fotoxx.h:1018 +#: fotoxx.h:1040 msgid "Map" msgstr "Mappa" @@ -3828,7 +4115,7 @@ msgid "user guide not found" msgstr "Guida utente non trovata" -#: zfuncs.cc:4504 zfuncs.cc:10210 +#: zfuncs.cc:4504 zfuncs.cc:10284 #, c-format msgid "cannot open file %s" msgstr "non riesco ad aprire il file %s" @@ -3837,77 +4124,81 @@ msgid "save screen to file" msgstr "Salva schermo in un file" -#: zfuncs.cc:8819 +#: zfuncs.cc:8891 msgid "No" msgstr "No" -#: zfuncs.cc:8819 +#: zfuncs.cc:8891 msgid "Yes" msgstr "Si" -#: zfuncs.cc:8898 zfuncs.cc:8938 zfuncs.cc:9277 zfuncs.cc:9595 zfuncs.cc:10323 -#: zfuncs.cc:10329 zfuncs.cc:10335 zfuncs.cc:10341 +#: zfuncs.cc:8970 zfuncs.cc:9012 zfuncs.cc:9351 zfuncs.cc:9669 zfuncs.cc:10397 +#: zfuncs.cc:10403 zfuncs.cc:10409 zfuncs.cc:10415 msgid "cancel" msgstr "Annulla" -#: zfuncs.cc:9239 +#: zfuncs.cc:9313 msgid "open" msgstr "Apri" -#: zfuncs.cc:9244 +#: zfuncs.cc:9318 msgid "choose" msgstr "Scegli" -#: zfuncs.cc:9249 +#: zfuncs.cc:9323 msgid "save" msgstr "Salva" -#: zfuncs.cc:9255 +#: zfuncs.cc:9329 msgid "open folder" msgstr "Apri cartella" -#: zfuncs.cc:9260 +#: zfuncs.cc:9334 msgid "create folder" msgstr "Crea cartella" -#: zfuncs.cc:9266 +#: zfuncs.cc:9340 msgid "hidden" msgstr "Nascosto" -#: zfuncs.cc:9327 +#: zfuncs.cc:9344 +msgid "quality" +msgstr "Qualità" + +#: zfuncs.cc:9401 msgid "JPG quality 0-100" msgstr "Qualità JPG 0-100" -#: zfuncs.cc:9586 +#: zfuncs.cc:9660 #, c-format msgid "printed image width: %.1f height: %.1f cm" msgstr "Dimensioni foto stampata: %.1f x %.1f cm" -#: zfuncs.cc:9595 +#: zfuncs.cc:9669 msgid "done" msgstr "Fatto" -#: zfuncs.cc:9595 zfuncs.cc:9607 +#: zfuncs.cc:9669 zfuncs.cc:9681 msgid "margins" msgstr "Margini" -#: zfuncs.cc:9603 +#: zfuncs.cc:9677 msgid "top" msgstr "Alto" -#: zfuncs.cc:9604 +#: zfuncs.cc:9678 msgid "bottom" msgstr "Basso" -#: zfuncs.cc:9613 +#: zfuncs.cc:9687 msgid "image scale" msgstr "Riscala immagine" -#: zfuncs.cc:9615 +#: zfuncs.cc:9689 msgid "percent" msgstr "percento" -#: zfuncs.cc:10097 +#: zfuncs.cc:10171 msgid "" "Initial parameters file created. \n" "Inspect and revise if necessary." @@ -3915,19 +4206,19 @@ "Il primo file di parametri è stato creato. \n" "Verifica e correggi se necessario." -#: zfuncs.cc:10113 +#: zfuncs.cc:10187 msgid "load parameters from a file" msgstr "Carica i parametri da un file" -#: zfuncs.cc:10182 +#: zfuncs.cc:10256 msgid "save parameters to a file" msgstr "Salva parametri in un file" -#: zfuncs.cc:10321 zfuncs.cc:10327 zfuncs.cc:10333 zfuncs.cc:10339 +#: zfuncs.cc:10395 zfuncs.cc:10401 zfuncs.cc:10407 zfuncs.cc:10413 msgid "edit parameters" msgstr "Modifica parametri" -#: zfuncs.cc:10322 zfuncs.cc:10328 +#: zfuncs.cc:10396 zfuncs.cc:10402 msgid "" "list\n" "all" @@ -3935,7 +4226,7 @@ "elenca\n" "tutti" -#: zfuncs.cc:10322 zfuncs.cc:10328 zfuncs.cc:10334 zfuncs.cc:10340 +#: zfuncs.cc:10396 zfuncs.cc:10402 zfuncs.cc:10408 zfuncs.cc:10414 msgid "" "load\n" "file" @@ -3943,7 +4234,7 @@ "Carica\n" "file" -#: zfuncs.cc:10322 zfuncs.cc:10328 zfuncs.cc:10334 zfuncs.cc:10340 +#: zfuncs.cc:10396 zfuncs.cc:10402 zfuncs.cc:10408 zfuncs.cc:10414 msgid "" "save\n" "file" @@ -3951,7 +4242,7 @@ "Salva\n" "file" -#: zfuncs.cc:10323 zfuncs.cc:10335 +#: zfuncs.cc:10397 zfuncs.cc:10409 msgid "" "add\n" "new" @@ -3959,382 +4250,496 @@ "Aggiungi\n" "nuovo" -#: zfuncs.cc:10323 zfuncs.cc:10329 zfuncs.cc:10335 zfuncs.cc:10341 +#: zfuncs.cc:10397 zfuncs.cc:10403 zfuncs.cc:10409 zfuncs.cc:10415 msgid "apply" msgstr "Applica" -#: zfuncs.cc:10376 +#: zfuncs.cc:10450 msgid "apply?" msgstr "Applicare?" -#: zfuncs.cc:10433 +#: zfuncs.cc:10507 msgid "(new parm name)" msgstr "(nome nuovo parametro)" -#: zfuncs.cc:10433 +#: zfuncs.cc:10507 msgid "add parameter" msgstr "Aggiungi parametro" -#~ msgid "Trim" -#~ msgstr "Ritaglia" - -#~ msgid "Transform" -#~ msgstr "Trasforma" +#~ msgid "Turn Image" +#~ msgstr "Ruota immagine" -#~ msgid "Enhance" -#~ msgstr "Migliora" +#~ msgid "Turn" +#~ msgstr "Ruota +/- 90 gradi" -#~ msgid "Zoom-in (bigger)" -#~ msgstr "Ingrandisci" +#~ msgid "Adjust Brightness and Color" +#~ msgstr "Regola luminosità e colore" -#~ msgid "Zoom-out (smaller)" -#~ msgstr "Riduci" +#~ msgid "auto-trim" +#~ msgstr "Autoritaglio" -#~ msgid "gold" -#~ msgstr "Gold" +#~ msgid "Cartoon Parameters" +#~ msgstr "Parametri Cartoon" -#~ msgid "Turn upright or level tilted image" -#~ msgstr "Ruota per raddrizzare o mettere in piano" +#~ msgid "Contrast Span" +#~ msgstr "Larghezza contrasto" -#~ msgid "start edit function first" -#~ msgstr "Occorre prima eseguire una funzione di edit" +#~ msgid "Contrast Spread" +#~ msgstr "Dispersione contrasto" -#~ msgid "Start Trim function for each new image" -#~ msgstr "Lancia Ritaglia per ogni nuova immagine" +#~ msgid "Contrast Saturation" +#~ msgstr "Saturazione contrasto" -#~ msgid "previous" -#~ msgstr "Precedente" +#~ msgid "Use buttons or drag right edge with mouse" +#~ msgstr "Usa i bottoni o trascina il margine destro con il mouse" -#~ msgid "" -#~ "new keyboard shortcuts installed \n" -#~ "prior renamed to KB-shortcuts-old" -#~ msgstr "" -#~ "installate le nuove scorciatoie \n" -#~ "quelle precedenti rinominate come KB-shortcuts-old" +#~ msgid "invert" +#~ msgstr "Inverti" -#~ msgid "Edit list of bookmarked images" -#~ msgstr "Modifica lista di segnalibri" +#~ msgid "Rotate Right" +#~ msgstr "Ruota a destra" -#~ msgid "no bookmarks defined" -#~ msgstr "Nessun segnalibro definito" +#~ msgid "Rotate Right 90 degrees" +#~ msgstr "Ruota 90° a destra" -#~ msgid "" -#~ "Outline\n" -#~ " Width" -#~ msgstr "Spessore contorno:" +#~ msgid "Rotate Left" +#~ msgstr "Ruota a sinistra" -#~ msgid "replace" -#~ msgstr "rimpiazza" +#~ msgid "Rotate Left 90 degrees" +#~ msgstr "Ruota 90° a sinistra" -#~ msgid "select all matching colors within mouse:" -#~ msgstr "seleziona tutti i colori col mouse" +#~ msgid "Cartoon" +#~ msgstr "Cartone animato" -#~ msgid "List of keyboard shortcuts" -#~ msgstr "Mostra una lista di scorciatoie da tastiera" +#~ msgid "Convert into a cartoon drawing" +#~ msgstr "Applica effetto di cartone animato" -#~ msgid "" -#~ "Press the reduce button to reduce noise \n" -#~ "in small steps. Use [Undo] to start over." -#~ msgstr "" -#~ "Premi il bottone [Riduci] per ridurre il rumore \n" -#~ "poco per volta. Usa [Annulla] per ricominciare." +#~ msgid "new gallery from tab F" +#~ msgstr "Nuova galleria da pagina F" -#~ msgid "Soften" -#~ msgstr "Morbidezza" +#~ msgid "outlines" +#~ msgstr "Contorni" -#~ msgid "flatten outliers by color (1)" -#~ msgstr "Appiattimento estremi per colore (1)" +#~ msgid "pencil" +#~ msgstr "Matita" -#~ msgid "flatten outliers by color (2)" -#~ msgstr "Appiattimento estremi per colore (2)" +#~ msgid "chalk" +#~ msgstr "Gessetto" -#~ msgid "set median brightness by color" -#~ msgstr "Impostazione luminosità media per colore" +#~ msgid "Add Image Outlines" +#~ msgstr "Aggiunta contorni" -#~ msgid "top hat filter by color" -#~ msgstr "Filtro \"top hat\" per colore" +#~ msgid "Copy to" +#~ msgstr "Copia in" + +#~ msgid "Move to" +#~ msgstr "Sposta in" + +#~ msgid "Print" +#~ msgstr "Stampa" + +#~ msgid "insert" +#~ msgstr "Inserisci" + +#~ msgid "add all" +#~ msgstr "Aggiungi tutti" + +#~ msgid "Open Recent File" +#~ msgstr "Immagini recenti" + +#~ msgid "Report memory and CPU usage" +#~ msgstr "Mostra uso di memoria e CPU nel terminale" + +#~ msgid "Add tags to multiple images" +#~ msgstr "Aggiungi etichette a più immagini" + +#~ msgid "Batch Add Tags" +#~ msgstr "Aggiungi etichette in blocco" + +#~ msgid "Batch Delete Tag" +#~ msgstr "Cancellazione in blocco di etichette" + +#~ msgid "Delete a tag from multiple images" +#~ msgstr "Elimina etichetta da più immagini" + +#~ msgid "Convert to charcoal or chalk drawing" +#~ msgstr "Applica un effetto di tipo gessetto" + +#~ msgid "Outlines" +#~ msgstr "Contorni" + +#~ msgid "Select Area lines etc." +#~ msgstr "Cambia il colore usato per mostrare le aree (selezione)" + +#~ msgid "tag to remove" +#~ msgstr "Etichetta da rimuovere" + +#~ msgid "optional replacement" +#~ msgstr "Sostituzione opzionale" + +#~ msgid "search all files" +#~ msgstr "Cerca in tutti i file" + +#~ msgid "no tag specified" +#~ msgstr "Nessuna etichetta specificata" + +#~ msgid "specify tag" +#~ msgstr "Specifica etichetta" + +#~ msgid "Start new collection" +#~ msgstr "Crea una collezione nuova" + +#~ msgid "Choose a collection to view/edit" +#~ msgstr "Scegli una collezione da vedere/editare" + +#~ msgid "Select images to add/move/remove" +#~ msgstr "Seleziona immagini da aggiungere/spostare/cancellare" #~ msgid "" -#~ "Rename failed: \n" -#~ " %s" +#~ "To insert the selected images, press \n" +#~ "[Insert] and click gallery position. \n" +#~ "To remove the images, press [Delete]" #~ msgstr "" -#~ "Rinominazione fallita: \n" -#~ " %s" +#~ "Per inserire le immagini selezionate, premi \n" +#~ "[Inserisci] e clicca la posizione in galleria. \n" +#~ "Per togliere le immagini, premi [Elimina]" -#~ msgid "help file not found: %s" -#~ msgstr "File di aiuto non trovato: %s" +#~ msgid "Selected Images" +#~ msgstr "Immagini selezionate" -#~ msgid "Edit Tags" -#~ msgstr "Modifica etichette" +#~ msgid "Choose a collection first" +#~ msgstr "Seleziona prima una collezione" + +#~ msgid "insert images at click position" +#~ msgstr "Inserisci immagini alla posizione di clic" + +#~ msgid "remove the images" +#~ msgstr "Togli le immagini" + +#~ msgid "%d images selected" +#~ msgstr "%d immagini selezionate" + +#~ msgid "absolute" +#~ msgstr "Assoluto" #~ msgid "" -#~ "When editing a collection, right-click \n" -#~ "an image or thumbnail to add or remove." +#~ "Enter text, click/drag on image.\n" +#~ "Right click to remove" #~ msgstr "" -#~ "Nella gestione di collezioni, usa un clic destro \n" -#~ "su immagini e miniature per aggiungere o eliminare." +#~ "Imposta il testo e clicca/trascina nell'immagine.\n" +#~ "Clic destro per rimuovere" -#~ msgid "Edit a collection" -#~ msgstr "Modifica una collezione" +#~ msgid "contrast" +#~ msgstr "Contrasto" -#~ msgid "View a collection" -#~ msgstr "Visualizza una collezione" +#~ msgid "Drag Mouse" +#~ msgstr "Trascinamento" -#~ msgid "Editing:" -#~ msgstr "Modifica di:" +#~ msgid "Magnified Scroll" +#~ msgstr "Zoom+Scorri" -#~ msgid "Action:" -#~ msgstr "Azione:" +#~ msgid "Monitor Check" +#~ msgstr "Verifica schermo" -#~ msgid "Edit Collection" -#~ msgstr "Modifica collezione" +#~ msgid "Retouch2" +#~ msgstr "Ritocco2" -#~ msgid "View Collection" -#~ msgstr "Vista collezione" +#~ msgid "Art" +#~ msgstr "Arte" -#~ msgid "add image to collection" -#~ msgstr "Aggiungi immagine alla collezione" +#~ msgid "Foreground Color" +#~ msgstr "Colore principale" -#~ msgid "remove image from collection" -#~ msgstr "Rimuovi immagine dalla collezione" +#~ msgid "Selected Images Action" +#~ msgstr "Azioni sulle immagini selezionate" -#~ msgid "remove and save image" -#~ msgstr "Rimuovi immagine e ricordala" +#~ msgid "Commit" +#~ msgstr "Esegui" -#~ msgid "insert saved images here" -#~ msgstr "Inserisci qui le immagini ricordate" +#~ msgid "select by mouse" +#~ msgstr "Pennello:" -#~ msgid "too many saved files" -#~ msgstr "Troppi file da ricordare" +#~ msgid "match color" +#~ msgstr "% colore simile:" -#~ msgid "bigger" -#~ msgstr "Aumenta" +#~ msgid "cannot open .tiff and .info files" +#~ msgstr "impossibile aprire i file .tiff e .info" -#~ msgid "smaller" -#~ msgstr "Riduci" +#~ msgid "The target file already exists" +#~ msgstr "Il file di destinazione esiste già" -#~ msgid "select files to rename" -#~ msgstr "scegli i file da rinominare" +#~ msgid "TIFF write failure" +#~ msgstr "Scrittura TIFF fallita" -#~ msgid "add image to collection: %s" -#~ msgstr "Aggiungi immagine alla collezione %s" +#~ msgid "filespec too long:" +#~ msgstr "Nome file troppo lungo:" -#~ msgid "Current Topic" -#~ msgstr "Argomento corrente" +#~ msgid "Batch Convert/Resize/Export" +#~ msgstr "Converti/ridimensiona/esporta in blocco" -#~ msgid "Quit" -#~ msgstr "Uscita" +#~ msgid "new max. width" +#~ msgstr "Nuova larghezza max:" -#~ msgid "Choose file type" -#~ msgstr "Scegli il tipo di file" +#~ msgid "export to location" +#~ msgstr "Esporta altrove" #~ msgid "Select RAW files to convert" #~ msgstr "Scegli i file RAW da convertire" -#~ msgid "export to location" -#~ msgstr "Esporta altrove" +#~ msgid "Choose file type" +#~ msgstr "Scegli il tipo di file" -#~ msgid "new max. width" -#~ msgstr "Nuova larghezza max:" +#~ msgid "Quit" +#~ msgstr "Uscita" -#~ msgid "Batch Convert/Resize/Export" -#~ msgstr "Converti/ridimensiona/esporta in blocco" +#~ msgid "Current Topic" +#~ msgstr "Argomento corrente" -#~ msgid "filespec too long:" -#~ msgstr "Nome file troppo lungo:" +#~ msgid "add image to collection: %s" +#~ msgstr "Aggiungi immagine alla collezione %s" -#~ msgid "TIFF write failure" -#~ msgstr "Scrittura TIFF fallita" +#~ msgid "select files to rename" +#~ msgstr "scegli i file da rinominare" -#~ msgid "The target file already exists" -#~ msgstr "Il file di destinazione esiste già" +#~ msgid "smaller" +#~ msgstr "Riduci" -#~ msgid "cannot open .tiff and .info files" -#~ msgstr "impossibile aprire i file .tiff e .info" +#~ msgid "bigger" +#~ msgstr "Aumenta" -#~ msgid "match color" -#~ msgstr "% colore simile:" +#~ msgid "too many saved files" +#~ msgstr "Troppi file da ricordare" -#~ msgid "select by mouse" -#~ msgstr "Pennello:" +#~ msgid "insert saved images here" +#~ msgstr "Inserisci qui le immagini ricordate" -#~ msgid "Commit" -#~ msgstr "Esegui" +#~ msgid "remove and save image" +#~ msgstr "Rimuovi immagine e ricordala" -#~ msgid "Selected Images Action" -#~ msgstr "Azioni sulle immagini selezionate" +#~ msgid "remove image from collection" +#~ msgstr "Rimuovi immagine dalla collezione" -#~ msgid "Foreground Color" -#~ msgstr "Colore principale" +#~ msgid "add image to collection" +#~ msgstr "Aggiungi immagine alla collezione" -#~ msgid "Art" -#~ msgstr "Arte" +#~ msgid "View Collection" +#~ msgstr "Vista collezione" -#~ msgid "Retouch2" -#~ msgstr "Ritocco2" +#~ msgid "Edit Collection" +#~ msgstr "Modifica collezione" -#~ msgid "Monitor Check" -#~ msgstr "Verifica schermo" +#~ msgid "Action:" +#~ msgstr "Azione:" -#~ msgid "Magnified Scroll" -#~ msgstr "Zoom+Scorri" +#~ msgid "Editing:" +#~ msgstr "Modifica di:" -#~ msgid "Drag Mouse" -#~ msgstr "Trascinamento" +#~ msgid "View a collection" +#~ msgstr "Visualizza una collezione" -#~ msgid "contrast" -#~ msgstr "Contrasto" +#~ msgid "Edit a collection" +#~ msgstr "Modifica una collezione" #~ msgid "" -#~ "Enter text, click/drag on image.\n" -#~ "Right click to remove" +#~ "When editing a collection, right-click \n" +#~ "an image or thumbnail to add or remove." #~ msgstr "" -#~ "Imposta il testo e clicca/trascina nell'immagine.\n" -#~ "Clic destro per rimuovere" +#~ "Nella gestione di collezioni, usa un clic destro \n" +#~ "su immagini e miniature per aggiungere o eliminare." -#~ msgid "absolute" -#~ msgstr "Assoluto" +#~ msgid "Edit Tags" +#~ msgstr "Modifica etichette" -#~ msgid "%d images selected" -#~ msgstr "%d immagini selezionate" +#~ msgid "help file not found: %s" +#~ msgstr "File di aiuto non trovato: %s" -#~ msgid "remove the images" -#~ msgstr "Togli le immagini" +#~ msgid "" +#~ "Rename failed: \n" +#~ " %s" +#~ msgstr "" +#~ "Rinominazione fallita: \n" +#~ " %s" -#~ msgid "insert images at click position" -#~ msgstr "Inserisci immagini alla posizione di clic" +#~ msgid "top hat filter by color" +#~ msgstr "Filtro \"top hat\" per colore" -#~ msgid "Choose a collection first" -#~ msgstr "Seleziona prima una collezione" +#~ msgid "set median brightness by color" +#~ msgstr "Impostazione luminosità media per colore" -#~ msgid "Selected Images" -#~ msgstr "Immagini selezionate" +#~ msgid "flatten outliers by color (2)" +#~ msgstr "Appiattimento estremi per colore (2)" + +#~ msgid "flatten outliers by color (1)" +#~ msgstr "Appiattimento estremi per colore (1)" + +#~ msgid "Soften" +#~ msgstr "Morbidezza" #~ msgid "" -#~ "To insert the selected images, press \n" -#~ "[Insert] and click gallery position. \n" -#~ "To remove the images, press [Delete]" +#~ "Press the reduce button to reduce noise \n" +#~ "in small steps. Use [Undo] to start over." #~ msgstr "" -#~ "Per inserire le immagini selezionate, premi \n" -#~ "[Inserisci] e clicca la posizione in galleria. \n" -#~ "Per togliere le immagini, premi [Elimina]" +#~ "Premi il bottone [Riduci] per ridurre il rumore \n" +#~ "poco per volta. Usa [Annulla] per ricominciare." -#~ msgid "Select images to add/move/remove" -#~ msgstr "Seleziona immagini da aggiungere/spostare/cancellare" +#~ msgid "List of keyboard shortcuts" +#~ msgstr "Mostra una lista di scorciatoie da tastiera" -#~ msgid "Choose a collection to view/edit" -#~ msgstr "Scegli una collezione da vedere/editare" +#~ msgid "select all matching colors within mouse:" +#~ msgstr "seleziona tutti i colori col mouse" -#~ msgid "Start new collection" -#~ msgstr "Crea una collezione nuova" +#~ msgid "replace" +#~ msgstr "rimpiazza" -#~ msgid "specify tag" -#~ msgstr "Specifica etichetta" +#~ msgid "" +#~ "Outline\n" +#~ " Width" +#~ msgstr "Spessore contorno:" -#~ msgid "no tag specified" -#~ msgstr "Nessuna etichetta specificata" +#~ msgid "no bookmarks defined" +#~ msgstr "Nessun segnalibro definito" -#~ msgid "search all files" -#~ msgstr "Cerca in tutti i file" +#~ msgid "Edit list of bookmarked images" +#~ msgstr "Modifica lista di segnalibri" -#~ msgid "optional replacement" -#~ msgstr "Sostituzione opzionale" +#~ msgid "" +#~ "new keyboard shortcuts installed \n" +#~ "prior renamed to KB-shortcuts-old" +#~ msgstr "" +#~ "installate le nuove scorciatoie \n" +#~ "quelle precedenti rinominate come KB-shortcuts-old" -#~ msgid "tag to remove" -#~ msgstr "Etichetta da rimuovere" +#~ msgid "previous" +#~ msgstr "Precedente" -#~ msgid "Select Area lines etc." -#~ msgstr "Cambia il colore usato per mostrare le aree (selezione)" +#~ msgid "Start Trim function for each new image" +#~ msgstr "Lancia Ritaglia per ogni nuova immagine" -#~ msgid "Outlines" -#~ msgstr "Contorni" +#~ msgid "start edit function first" +#~ msgstr "Occorre prima eseguire una funzione di edit" -#~ msgid "Convert to charcoal or chalk drawing" -#~ msgstr "Applica un effetto di tipo gessetto" +#~ msgid "Turn upright or level tilted image" +#~ msgstr "Ruota per raddrizzare o mettere in piano" -#~ msgid "Delete a tag from multiple images" -#~ msgstr "Elimina etichetta da più immagini" +#~ msgid "gold" +#~ msgstr "Gold" -#~ msgid "Batch Delete Tag" -#~ msgstr "Cancellazione in blocco di etichette" +#~ msgid "Zoom-out (smaller)" +#~ msgstr "Riduci" -#~ msgid "Batch Add Tags" -#~ msgstr "Aggiungi etichette in blocco" +#~ msgid "Zoom-in (bigger)" +#~ msgstr "Ingrandisci" -#~ msgid "Add tags to multiple images" -#~ msgstr "Aggiungi etichette a più immagini" +#~ msgid "Enhance" +#~ msgstr "Migliora" -#~ msgid "Report memory and CPU usage" -#~ msgstr "Mostra uso di memoria e CPU nel terminale" +#~ msgid "Transform" +#~ msgstr "Trasforma" -#~ msgid "Open Recent File" -#~ msgstr "Immagini recenti" +#~ msgid "Trim" +#~ msgstr "Ritaglia" -#~ msgid "add all" -#~ msgstr "Aggiungi tutti" +#~ msgid "Save+F" +#~ msgstr "Salva>N" -#~ msgid "insert" -#~ msgstr "Inserisci" +#~ msgid "Save to a new file" +#~ msgstr "Salva con nome differente" -#~ msgid "Print" -#~ msgstr "Stampa" +#~ msgid "Save+V" +#~ msgstr "Salva+V" -#~ msgid "Move to" -#~ msgstr "Sposta in" +#~ msgid "Save to a new version" +#~ msgstr "Salva con nuova versione" -#~ msgid "Copy to" -#~ msgstr "Copia in" +#~ msgid "Save to the same file" +#~ msgstr "Salva il file (sovrascrive)" -#~ msgid "Add Image Outlines" -#~ msgstr "Aggiunta contorni" +#~ msgid "Save to a new file name" +#~ msgstr "Salva su un nuovo file" -#~ msgid "chalk" -#~ msgstr "Gessetto" +#~ msgid "Save to New File" +#~ msgstr "Salva in un file nuovo" -#~ msgid "pencil" -#~ msgstr "Matita" +#~ msgid "Save to a new (next) version" +#~ msgstr "Salva su una versione successiva" -#~ msgid "outlines" -#~ msgstr "Contorni" +#~ msgid "Save to New Version" +#~ msgstr "Salva con nuova versione" -#~ msgid "new gallery from tab F" -#~ msgstr "Nuova galleria da pagina F" +#~ msgid "Save to the same file (replace)" +#~ msgstr "Salva nello stesso file (rimpiazza)" -#~ msgid "Convert into a cartoon drawing" -#~ msgstr "Applica effetto di cartone animato" +#~ msgid "Save to Same File" +#~ msgstr "Salva (sovrascrivi)" -#~ msgid "Cartoon" -#~ msgstr "Cartone animato" +#~ msgid "Save File" +#~ msgstr "Salva file" -#~ msgid "Rotate Left 90 degrees" -#~ msgstr "Ruota 90° a sinistra" +#~ msgid "Warning" +#~ msgstr "Attenzione" -#~ msgid "Rotate Left" -#~ msgstr "Ruota a sinistra" +#~ msgid "Do not warn again" +#~ msgstr "Non chiedere di nuovo" -#~ msgid "Rotate Right 90 degrees" -#~ msgstr "Ruota 90° a destra" +#~ msgid "Overwrite original file?" +#~ msgstr "Sovrascrivere il file originale?" -#~ msgid "Rotate Right" -#~ msgstr "Ruota a destra" +#~ msgid "Save Stuck Pixels" +#~ msgstr "Salva posizioni" -#~ msgid "invert" -#~ msgstr "Inverti" +#~ msgid "there are zero stuck pixels" +#~ msgstr "Non ci sono pixel difettosi" -#~ msgid "Use buttons or drag right edge with mouse" -#~ msgstr "Usa i bottoni o trascina il margine destro con il mouse" +#~ msgid "current tags" +#~ msgstr "Etichette attuali:" -#~ msgid "Contrast Saturation" -#~ msgstr "Saturazione contrasto" +#~ msgid "image stars" +#~ msgstr "Voto dell'immagine" -#~ msgid "Contrast Spread" -#~ msgstr "Dispersione contrasto" +#~ msgid "use last" +#~ msgstr "Utilizza ultima" -#~ msgid "Contrast Span" -#~ msgstr "Larghezza contrasto" +#~ msgid "image date (yyyymmdd)" +#~ msgstr "Data immagine (aaaammgg)" -#~ msgid "Cartoon Parameters" -#~ msgstr "Parametri Cartoon" +#~ msgid "Edit Caption and Comments" +#~ msgstr "Modifica titolo e commenti" -#~ msgid "auto-trim" -#~ msgstr "Autoritaglio" +#~ msgid "change sequence" +#~ msgstr "Cambia sequenza" + +#~ msgid "jump to last page" +#~ msgstr "Vai all'ultima pagina" + +#~ msgid "jump to first page" +#~ msgstr "Vai alla prima pagina" + +#~ msgid "Gallery from Tab F" +#~ msgstr "Sincronizza la galleria della pagina F" + +#~ msgid "Edit image geotags" +#~ msgstr "Modifica Geotags" + +#~ msgid "Batch Tags" +#~ msgstr "Etichettatura di massa" + +#~ msgid "Edit image date/rating/tags" +#~ msgstr "Modifica data/voto/etichette" + +#~ msgid "Edit image caption or comment" +#~ msgstr "Modifica titoli e commenti dell'immagine" + +#~ msgid "Edit Caption/Comments" +#~ msgstr "Modifica titolo/commenti" + +#~ msgid "User Guide etc." +#~ msgstr "Guida utente ecc." + +#~ msgid "no plugin command" +#~ msgstr "Comando di plugin non trovato" + +#~ msgid "cmsCreateTransform() failed" +#~ msgstr "Errore in cmsCreateTransform()" + +#~ msgid "angle" +#~ msgstr "angolo" diff -Nru fotoxx-13.08/locales/translate-nl.po fotoxx-13.09.1/locales/translate-nl.po --- fotoxx-13.08/locales/translate-nl.po 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/locales/translate-nl.po 2013-08-31 06:26:38.000000000 +0000 @@ -2,10 +2,10 @@ # msgid "" msgstr "" -"Project-Id-Version: fotoxx 13.06\n" +"Project-Id-Version: fotoxx 13.09\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-01 22:41+0200\n" -"PO-Revision-Date: 2013-05-30 14:17+0100\n" +"POT-Creation-Date: 2013-08-29 23:33+0200\n" +"PO-Revision-Date: 2013-08-29 23:02+0100\n" "Last-Translator: Arthur Kalverboer \n" "Language-Team: Dutch\n" "Language: \n" @@ -20,7 +20,7 @@ msgid "Select Area for Edits" msgstr "Uitsnede om te bewerken" -#: f.area.cc:57 f.retouch.cc:2362 +#: f.area.cc:57 f.retouch.cc:2359 msgid "Press F1 for help" msgstr "Druk F1 voor help" @@ -58,13 +58,13 @@ #: f.area.cc:106 msgid "select one matching color within mouse" -msgstr "selecteer een matchende kleur binnen muis" +msgstr "selecteer een matchende kleur in muis" #: f.area.cc:110 msgid "select all matching colors within mouse" msgstr "selecteer alle matchende kleuren binnen muis" -#: f.area.cc:114 f.retouch.cc:2397 +#: f.area.cc:114 f.retouch.cc:2394 msgid "mouse radius" msgstr "muis straal" @@ -120,7 +120,7 @@ msgid "found %d pixels" msgstr "gevonden %d pixels" -#: f.area.cc:1824 f.area.cc:1841 f.area.cc:1861 f.area.cc:2191 +#: f.area.cc:1824 f.area.cc:1841 f.area.cc:1861 f.area.cc:2192 msgid "the area is not finished" msgstr "de uitsnede is niet gereed" @@ -132,39 +132,35 @@ msgid "Area Edge Calc" msgstr "Randberekening van uitsnede" -#: f.area.cc:2265 +#: f.area.cc:2266 msgid "position with mouse click/drag" msgstr "positioneer met muis klik/sleep" -#: f.area.cc:2290 +#: f.area.cc:2292 msgid "Paste Image" msgstr "Afbeelding plakken" -#: f.area.cc:2295 +#: f.area.cc:2297 msgid "resize" msgstr "herschalen" -#: f.area.cc:2303 -msgid "angle" -msgstr "hoek" - -#: f.area.cc:2565 +#: f.area.cc:2598 msgid "load select area from a file" msgstr "uitsnede-bestand laden" -#: f.area.cc:2619 +#: f.area.cc:2652 msgid "save select area to a file" msgstr "bewaar uitsnede in een bestand" -#: f.bend.cc:71 f.menus.cc:230 +#: f.bend.cc:71 f.menus.cc:242 msgid "Unbend" msgstr "Afbeelding ontkrommen" -#: f.bend.cc:79 f.image.cc:1485 +#: f.bend.cc:79 f.image.cc:1496 msgid "vertical" msgstr "verticaal" -#: f.bend.cc:80 f.image.cc:1484 +#: f.bend.cc:80 f.image.cc:1495 msgid "horizontal" msgstr "horizontaal" @@ -176,7 +172,7 @@ msgid "curved" msgstr "gebogen" -#: f.bend.cc:88 f.bend.cc:1517 f.bend.cc:1789 f.bend.cc:2049 f.image.cc:163 +#: f.bend.cc:88 f.bend.cc:1517 f.bend.cc:1789 f.bend.cc:2049 f.image.cc:172 msgid "Grid" msgstr "Raster" @@ -189,7 +185,7 @@ "De afbeelding wordt vervormd zodat de vierhoek in een \n" "rechthoek veranderd. " -#: f.bend.cc:356 f.menus.cc:231 +#: f.bend.cc:356 f.menus.cc:243 msgid "Keystone Correction" msgstr "Keystone Correctie" @@ -239,7 +235,7 @@ " Herhalen tot het gewenste resultaat. \n" " Indien gereed, een andere uitsnede selecteren of druk [Klaar]." -#: f.bend.cc:1105 f.menus.cc:233 +#: f.bend.cc:1105 f.menus.cc:245 msgid "Warp area" msgstr "Kromtrekken uitsnede" @@ -261,7 +257,7 @@ " Herhalen tot het gewenste resultaat. \n" " Indien gereed, druk [Klaar]." -#: f.bend.cc:1510 f.menus.cc:234 +#: f.bend.cc:1510 f.menus.cc:246 msgid "Warp curved" msgstr "Kromtrekken gebogen" @@ -269,7 +265,7 @@ msgid "warp span" msgstr "kromtrekken spanwijdte" -#: f.bend.cc:1781 f.menus.cc:235 +#: f.bend.cc:1781 f.menus.cc:247 msgid "Warp linear" msgstr "Kromtrekken lineair" @@ -283,7 +279,7 @@ " Herhalen tot het gewenste resultaat. \n" " Indien gereed, druk [Klaar]." -#: f.bend.cc:2044 f.menus.cc:236 +#: f.bend.cc:2044 f.menus.cc:248 msgid "Warp affine" msgstr "Kromtrekken affine" @@ -297,17 +293,17 @@ #: f.color.cc:92 msgid "warmer" -msgstr "" +msgstr "warmer" #: f.color.cc:94 msgid "cooler" -msgstr "" +msgstr "koeler" #: f.color.cc:96 f.repair.cc:69 msgid "reduce" msgstr "verminderen" -#: f.color.cc:371 f.menus.cc:224 +#: f.color.cc:371 f.menus.cc:236 msgid "Color Mode" msgstr "Kleur Mode" @@ -352,10 +348,6 @@ msgid "unknown cms profile %s" msgstr "onbekend cms profiel %s" -#: f.color.cc:601 -msgid "cmsCreateTransform() failed" -msgstr "cmsCreateTransform() mislukt" - #: f.color.cc:667 msgid "Color Match Images" msgstr "Kleuren Match Afbeeldingen" @@ -364,8 +356,8 @@ msgid "mouse radius for color sample" msgstr "straal cirkel voor kleurmonster" -#: f.color.cc:696 f.color.cc:701 f.file.cc:3981 f.menus.cc:191 f.menus.cc:278 -#: f.menus.cc:390 fotoxx.h:982 +#: f.color.cc:696 f.color.cc:701 f.file.cc:4045 f.menus.cc:203 f.menus.cc:291 +#: f.menus.cc:401 fotoxx.h:1003 msgid "Open" msgstr "Openen" @@ -389,11 +381,11 @@ msgid "select source image color first" msgstr "kies eerst kleur in afbeelding" -#: f.color.cc:957 f.tools.cc:5134 +#: f.color.cc:957 f.tools.cc:5153 msgid "Click image to select pixels." msgstr "Klik in afbeelding om pixels te selecteren" -#: f.color.cc:995 f.menus.cc:227 +#: f.color.cc:995 f.menus.cc:239 msgid "Revise RGB" msgstr "Reviseren RGB" @@ -425,15 +417,15 @@ msgid "+Blue -Yellow" msgstr "+Blauw -Geel" -#: f.color.cc:1467 fotoxx.h:992 +#: f.color.cc:1467 fotoxx.h:1013 msgid "Red" msgstr "Rood" -#: f.color.cc:1468 fotoxx.h:965 +#: f.color.cc:1468 fotoxx.h:986 msgid "Green" msgstr "Groen" -#: f.color.cc:1469 fotoxx.h:943 +#: f.color.cc:1469 fotoxx.h:963 msgid "Blue" msgstr "Blauw" @@ -441,7 +433,7 @@ msgid "Load CMYK parameters" msgstr "Laden DRGB parameters" -#: f.color.cc:1614 f.color.cc:1686 f.repair.cc:4008 f.repair.cc:4104 +#: f.color.cc:1614 f.color.cc:1686 f.meta.cc:139 f.repair.cc:4025 msgid "File:" msgstr "Bestand:" @@ -449,8 +441,8 @@ msgid "CMYK parameters file" msgstr "CMYK parameter bestand" -#: f.color.cc:1651 f.file.cc:2047 f.meta.cc:1282 f.repair.cc:4048 -#: f.tools.cc:1708 +#: f.color.cc:1651 f.file.cc:2103 f.meta.cc:1451 f.repair.cc:4065 +#: f.tools.cc:1721 msgid "file not found" msgstr "bestand niet gevonden" @@ -479,7 +471,7 @@ msgid "light pixels" msgstr "heldere pixels" -#: f.combine.cc:2315 f.meta.cc:169 +#: f.combine.cc:2315 msgid "file:" msgstr "bestand:" @@ -488,7 +480,7 @@ msgstr "Schilderen en kromtrekken afbeelding" #: f.combine.cc:2829 f.combine.cc:3482 f.combine.cc:4897 f.combine.cc:5795 -#: f.menus.cc:58 f.menus.cc:104 +#: f.menus.cc:58 f.menus.cc:119 msgid "Image" msgstr "Afbeelding" @@ -556,7 +548,7 @@ msgid "no curve (scanned image)" msgstr "geen curve (gescande afbeelding)" -#: f.combine.cc:4348 f.combine.cc:5245 f.menus.cc:198 f.menus.cc:446 +#: f.combine.cc:4348 f.combine.cc:5245 f.menus.cc:210 f.menus.cc:457 msgid "Resize" msgstr "Herschalen" @@ -593,6 +585,173 @@ "Sleep afbeeldingen ruwweg aansluitend.\n" "Om te draaien, sleep de rechter rand." +#: f.combine.cc:6061 +msgid "Mashup layout and background image" +msgstr "Mashup layout en achtergrond afbeelding" + +#: f.combine.cc:6090 +msgid "choose an image file" +msgstr "kies een afbeeldingsbestand" + +#: f.combine.cc:6091 +msgid "use current image file" +msgstr "gebruik huidig afbeeldingsbestand" + +#: f.combine.cc:6092 +msgid "open a Mashup project file" +msgstr "open een Mashup project bestand" + +#: f.combine.cc:6093 +msgid "specify layout size and color" +msgstr "specificeer layout grootte en kleur" + +#: f.combine.cc:6120 +msgid "choose layout file" +msgstr "kies layout bestand" + +#: f.combine.cc:6181 +msgid "Edit Images" +msgstr "Bewerken Afbeeldingen" + +#: f.combine.cc:6182 f.combine.cc:6931 +msgid "Edit Text" +msgstr "Bewerken Tekst" + +#: f.combine.cc:6183 f.combine.cc:6482 +msgid "Save Project" +msgstr "Bewaren Project" + +#: f.combine.cc:6186 +msgid "add or edit images" +msgstr "toevoegen of bewerken afbeeldingen " + +#: f.combine.cc:6187 +msgid "add or edit text" +msgstr "toevoegen of bewerken tekst" + +#: f.combine.cc:6188 +msgid "save project data" +msgstr "project gegevens bewaren" + +#: f.combine.cc:6189 +msgid "project complete" +msgstr "project gereed" + +#: f.combine.cc:6190 +msgid "cancel project" +msgstr "annuleren project" + +#: f.combine.cc:6283 +msgid "Open Project" +msgstr "Open Project" + +#: f.combine.cc:6302 +#, c-format +msgid "" +"layout image file missing: \n" +" %s" +msgstr "" +"layout afbeeldingsbestand ontbreekt: \n" +" %s" + +#: f.combine.cc:6320 +#, c-format +msgid "" +"overlay image file missing: \n" +" %s" +msgstr "" +"overlay afbeeldingsbestand ontbreekt: \n" +" %s" + +#: f.combine.cc:6382 +#, c-format +msgid "" +"layout image file error: \n" +" %s" +msgstr "" +"layout afbeeldingsbestand fout: \n" +" %s" + +#: f.combine.cc:6393 +#, c-format +msgid "" +"overlay image file error: \n" +" %s" +msgstr "" +"overlay afbeeldingsbestand fout: \n" +" %s" + +#: f.combine.cc:6452 +msgid "project file is defective" +msgstr "project bestand is beschadigd" + +#: f.combine.cc:6530 +msgid "Click image to select, drag image to move." +msgstr "Klik afbeelding om te selecteren, sleep afbeelding om te verplaatsen" + +#: f.combine.cc:6563 +msgid "current image:" +msgstr "huidige afbeelding:" + +#: f.combine.cc:6585 f.combine.cc:6965 f.image.cc:1681 +msgid "Transparency" +msgstr "Doorzichtigheid" + +#: f.combine.cc:6589 +msgid "Edge Blend Width" +msgstr "Rand Meng Breedte" + +#: f.combine.cc:6755 +#, c-format +msgid "exceeded %d images" +msgstr "%d afbeeldingen overschreden" + +#: f.combine.cc:6906 +msgid "Enter text, click/drag on image." +msgstr "Tekst invoegen, klik/sleep op afbeelding" + +#: f.combine.cc:6936 f.image.cc:1652 f.tools.cc:1113 +msgid "Text" +msgstr "Tekst" + +#: f.combine.cc:6954 f.image.cc:1670 +msgid "text" +msgstr "tekst" + +#: f.combine.cc:6955 f.image.cc:1671 +msgid "backing" +msgstr "achtergrondkleur" + +#: f.combine.cc:6956 f.image.cc:1672 +msgid "outline" +msgstr "contour" + +#: f.combine.cc:6957 f.image.cc:1673 +msgid "shadow" +msgstr "schaduw" + +#: f.combine.cc:6959 f.image.cc:1675 f.menus.cc:61 f.menus.cc:122 +#: f.menus.cc:286 fotoxx.h:969 +msgid "Color" +msgstr "Kleur" + +#: f.combine.cc:6971 f.image.cc:1687 fotoxx.h:1039 +msgid "Width" +msgstr "breedte" + +#: f.combine.cc:6984 f.image.cc:1700 +msgid "Text File:" +msgstr "Textbestand:" + +#: f.combine.cc:7046 f.image.cc:1811 +msgid "select font" +msgstr "selecteer font" + +#: f.combine.cc:7154 +#, c-format +msgid "exceeded %d text entries" +msgstr "%d tekst entries overschreden" + #: f.effects.cc:44 msgid "Set color depth to 1-16 bits" msgstr "Instellen kleurdiepte op 1-16 bits" @@ -607,11 +766,11 @@ #: f.effects.cc:270 msgid "Clip Level" -msgstr "" +msgstr "Clip Nivo" #: f.effects.cc:274 msgid "Algorithm" -msgstr "" +msgstr "Algoritme" #: f.effects.cc:643 msgid "Simulate Drawing" @@ -633,9 +792,9 @@ msgid "black/white" msgstr "zwart/wit" -#: f.effects.cc:983 f.menus.cc:241 +#: f.effects.cc:983 f.menus.cc:253 msgid "Graduated Blur" -msgstr "" +msgstr "Graduele Vervaging" #: f.effects.cc:987 msgid "Contrast Limit" @@ -653,7 +812,7 @@ msgid "depth" msgstr "diepte" -#: f.effects.cc:1219 f.file.cc:987 +#: f.effects.cc:1219 f.file.cc:1042 msgid "color" msgstr "kleur" @@ -701,7 +860,7 @@ msgid "borders" msgstr "randen" -#: f.effects.cc:2461 f.menus.cc:246 +#: f.effects.cc:2461 f.menus.cc:258 msgid "False Colors" msgstr "Kleuren Verschuiven" @@ -717,7 +876,7 @@ msgid "Blue: Red" msgstr "Blauw: Rood" -#: f.effects.cc:2669 f.menus.cc:247 +#: f.effects.cc:2669 f.menus.cc:259 msgid "Vignette" msgstr "Vignette" @@ -725,7 +884,7 @@ msgid "center" msgstr "centrum" -#: f.effects.cc:2700 f.retouch.cc:2402 +#: f.effects.cc:2700 f.retouch.cc:2399 msgid "edge" msgstr "rand" @@ -733,47 +892,55 @@ msgid "no newly added files found" msgstr "geen nieuw toegevoegde bestanden gevonden" -#: f.file.cc:275 +#: f.file.cc:307 msgid "no more images" -msgstr "" +msgstr "geen afbeeldingen meer" -#: f.file.cc:343 f.menus.cc:136 f.menus.cc:457 +#: f.file.cc:358 f.menus.cc:151 f.menus.cc:468 msgid "Open RAW file (ufraw)" msgstr "Open RAW bestand (ufraw)" -#: f.file.cc:347 +#: f.file.cc:362 msgid "RAW type not registered in User Settings" msgstr "RAW type niet geregistreerd in Instellingen" -#: f.file.cc:367 -msgid "Overwrite original file?" -msgstr "Overschrijven origineel bestand?" - -#: f.file.cc:368 -msgid "Do not warn again" -msgstr "Niet opnieuw waarschuwen" - -#: f.file.cc:383 -msgid "Warning" -msgstr "Waarschuwing" - -#: f.file.cc:495 -msgid "Save File" -msgstr "Bestand opslaan" +#: f.file.cc:412 +msgid "Save Image File" +msgstr "Bewaar Afbeeldingsbestand" + +#: f.file.cc:422 +msgid "new version" +msgstr "nieuwe versie" + +#: f.file.cc:423 +msgid "new file name" +msgstr "nieuwe bestandsnaam" + +#: f.file.cc:424 +msgid "replace file" +msgstr "bestand vervangen" + +#: f.file.cc:430 +msgid "save as new file version" +msgstr "bewaren als nieuwe bestandsversie" + +#: f.file.cc:431 f.file.cc:559 +msgid "save as new file name or type" +msgstr "bewaren als nieuw bestandsnaam of type " + +#: f.file.cc:432 +msgid "replace old file (OVERWRITE)" +msgstr "oud bestand vervangen (OVERSCHRIJVEN)" -#: f.file.cc:528 zfuncs.cc:9270 -msgid "quality" -msgstr "kwaliteit" - -#: f.file.cc:530 +#: f.file.cc:575 msgid "make current" msgstr "maak actueel" -#: f.file.cc:625 +#: f.file.cc:668 msgid "jpeg quality must be 1-100" msgstr "jpeg kwaliteit moet 1-100 zijn" -#: f.file.cc:653 +#: f.file.cc:694 #, c-format msgid "" "Overwrite file? \n" @@ -782,31 +949,31 @@ "Bestand overschrijven? \n" " %s" -#: f.file.cc:799 f.menus.cc:140 +#: f.file.cc:854 f.menus.cc:153 msgid "Rename Image File" msgstr "Hernoemen bestand..." -#: f.file.cc:806 +#: f.file.cc:861 msgid "old name" msgstr "oude naam" -#: f.file.cc:807 +#: f.file.cc:862 msgid "new name" msgstr "nieuwe naam" -#: f.file.cc:816 +#: f.file.cc:871 msgid "previous name" msgstr "vorige naam" -#: f.file.cc:817 +#: f.file.cc:872 msgid "add 1" msgstr "toevoegen 1" -#: f.file.cc:895 f.file.cc:1248 +#: f.file.cc:950 f.file.cc:1303 msgid "target file already exists" msgstr "doelbestand bestaat reeds" -#: f.file.cc:922 f.file.cc:1270 f.file.cc:1388 +#: f.file.cc:977 f.file.cc:1325 f.file.cc:1443 #, c-format msgid "" "delete failed: \n" @@ -815,59 +982,59 @@ "verwijderen mislukt: \n" " %s" -#: f.file.cc:971 +#: f.file.cc:1026 msgid "Create Blank Image" msgstr "Lege afbeelding maken" -#: f.file.cc:973 +#: f.file.cc:1028 msgid "file name" msgstr "bestandsnaam" -#: f.file.cc:978 f.image.cc:470 +#: f.file.cc:1033 f.image.cc:479 msgid "width" msgstr "breedte" -#: f.file.cc:981 f.image.cc:473 f.tools.cc:4088 +#: f.file.cc:1036 f.image.cc:482 f.tools.cc:4107 msgid "height" msgstr "hoogte" -#: f.file.cc:1156 +#: f.file.cc:1211 msgid "Copy Image File" msgstr "Copieer Afbeeldingsbestand" -#: f.file.cc:1158 +#: f.file.cc:1213 msgid "Move Image File" msgstr "Verplaats Afbeeldingsbestand" -#: f.file.cc:1164 f.file.cc:1343 f.file.cc:1464 +#: f.file.cc:1219 f.file.cc:1398 f.file.cc:1519 msgid "image file" msgstr "afbeeldingsbestand" -#: f.file.cc:1169 +#: f.file.cc:1224 msgid "new location" msgstr "nieuwe locatie" -#: f.file.cc:1203 f.tools.cc:4317 +#: f.file.cc:1258 f.tools.cc:4336 msgid "Select directory" msgstr "Selecteer map" -#: f.file.cc:1233 +#: f.file.cc:1288 msgid "new location is not a directory" msgstr "nieuwe locatie is geen map" -#: f.file.cc:1307 +#: f.file.cc:1362 msgid "Delete Image File - CANNOT BE REVERSED" msgstr "Verwijder Afbeeldingsbestand - NIET OMKEERBAAR" -#: f.file.cc:1308 f.file.cc:1430 +#: f.file.cc:1363 f.file.cc:1485 msgid "(automatic step to next image)" -msgstr "" +msgstr "(automatische stap naar volgende afbeelding)" -#: f.file.cc:1429 f.menus.cc:142 +#: f.file.cc:1484 f.menus.cc:155 msgid "Trash Image File" msgstr "Afbeeldingsbestand naar prullenbak" -#: f.file.cc:1494 +#: f.file.cc:1549 msgid "" "Linux standard trash does not work. \n" "Desktop trash folder will be created." @@ -875,7 +1042,7 @@ "Linux standaard prullenbak wordt niet ondersteund. \n" "Desktop prullenbak zal worden aangemaakt." -#: f.file.cc:1497 +#: f.file.cc:1552 msgid "" "Linux and Desktop trash do not work. \n" "Permanently delete the image file?" @@ -883,1477 +1050,1515 @@ "Linux en Desktop prullenbak werken niet. \n" "Afbeeldingsbestand definitief verwijderen?" -#: f.file.cc:1527 +#: f.file.cc:1582 msgid "Move read-only file to trash?" msgstr "Alleen-lezen bestand naar prullenbak?" -#: f.file.cc:1556 +#: f.file.cc:1611 #, c-format msgid "Cannot create trash folder: %s" msgstr "Kan niet map voor prullenbak maken: %s" -#: f.file.cc:1569 zfuncs.cc:4211 +#: f.file.cc:1624 zfuncs.cc:4211 #, c-format msgid "error: %s" msgstr "fout: %s" -#: f.file.cc:1588 +#: f.file.cc:1643 #, c-format msgid "delete failed: %s" msgstr "verwijderen mislukt: %s" -#: f.file.cc:2041 f.menus.cc:132 +#: f.file.cc:2097 f.menus.cc:147 msgid "Open Image File" msgstr "Openen ..." -#: f.file.cc:2059 +#: f.file.cc:2115 msgid "unknown file type" msgstr "onbekend bestandstype" -#: f.file.cc:2341 +#: f.file.cc:2396 msgid "Unable to copy EXIF/IPTC data" msgstr "Kan EXIF/IPTC gegevens niet copieren" -#: f.file.cc:2404 f.file.cc:2465 +#: f.file.cc:2459 f.file.cc:2520 #, c-format msgid "file not found: %s" msgstr "bestand niet gevonden: %s" -#: f.file.cc:2409 f.file.cc:2470 +#: f.file.cc:2464 f.file.cc:2525 #, c-format msgid "file type not supported: %s" msgstr "bestandstype niet ondersteund: %s" -#: f.file.cc:3982 f.menus.cc:390 +#: f.file.cc:4046 msgid "change directory" msgstr "verander map" -#: f.file.cc:3990 f.menus.cc:391 +#: f.file.cc:4054 f.menus.cc:402 msgid "GoTo" msgstr "GaNaar" -#: f.file.cc:4005 f.menus.cc:400 +#: f.file.cc:4069 f.menus.cc:405 msgid "Sort" msgstr "Sorteren" -#: f.file.cc:4036 f.file.cc:4360 f.menus.cc:398 +#: f.file.cc:4100 f.file.cc:4431 f.menus.cc:410 msgid "Row↑" msgstr "Rij↑" -#: f.file.cc:4048 f.file.cc:4361 f.menus.cc:399 +#: f.file.cc:4112 f.file.cc:4432 f.menus.cc:411 msgid "Row↓" msgstr "Rij↓" -#: f.file.cc:4060 f.file.cc:4363 f.menus.cc:394 +#: f.file.cc:4124 f.file.cc:4434 f.menus.cc:406 msgid "First" msgstr "Eerste" -#: f.file.cc:4061 f.file.cc:4364 f.menus.cc:395 +#: f.file.cc:4125 f.file.cc:4435 f.menus.cc:407 msgid "Last" msgstr "Laatste" -#: f.file.cc:4062 f.file.cc:4358 f.file.cc:4365 f.menus.cc:396 +#: f.file.cc:4126 f.file.cc:4429 f.file.cc:4436 f.menus.cc:408 msgid "Page↑" msgstr "Pagina↑" -#: f.file.cc:4063 f.file.cc:4359 f.file.cc:4366 f.menus.cc:397 +#: f.file.cc:4127 f.file.cc:4430 f.file.cc:4437 f.menus.cc:409 msgid "Page↓" msgstr "Pagina↓" -#: f.file.cc:4114 f.tools.cc:940 +#: f.file.cc:4178 f.tools.cc:953 msgid "Choose top image directory" msgstr "Selecteer bovenste afbeeldingsmap" -#: f.file.cc:4120 f.file.cc:4134 +#: f.file.cc:4184 f.file.cc:4198 msgid "recent" msgstr "recent" -#: f.file.cc:4121 f.file.cc:4139 +#: f.file.cc:4185 f.file.cc:4203 msgid "newest" msgstr "nieuwste" -#: f.file.cc:4170 +#: f.file.cc:4234 msgid "Gallery Sort" msgstr "Galerie Sortering " -#: f.file.cc:4174 +#: f.file.cc:4238 msgid "File Name" msgstr "Bestandsnaam" -#: f.file.cc:4175 +#: f.file.cc:4239 msgid "File Mod Date/Time" msgstr "Bestand wijz datum/tijd" -#: f.file.cc:4176 +#: f.file.cc:4240 msgid "Photo Date/Time (EXIF)" msgstr "Foto Datum/Tijd (EXIF)" -#: f.file.cc:4178 +#: f.file.cc:4242 msgid "ascending" msgstr "oplopend" -#: f.file.cc:4179 +#: f.file.cc:4243 msgid "descending" msgstr "aflopend" -#: f.file.cc:4352 f.file.cc:4353 f.file.cc:4355 +#: f.file.cc:4423 f.file.cc:4424 f.file.cc:4426 f.menus.cc:403 msgid "Zoom+" msgstr "Zoom+" -#: f.file.cc:4354 f.file.cc:4356 +#: f.file.cc:4425 f.file.cc:4427 f.menus.cc:404 msgid "Zoom-" msgstr "Zoom-" -#: f.file.cc:5192 fotoxx.h:1003 +#: f.file.cc:5264 fotoxx.h:1024 msgid "Select Files" msgstr "Selecteer bestanden" -#: f.file.cc:5668 fotoxx.h:935 +#: f.file.cc:5740 fotoxx.h:954 msgid "Add" msgstr "Toevoegen" -#: f.file.cc:5668 fotoxx.h:995 +#: f.file.cc:5740 fotoxx.h:1016 msgid "Remove" msgstr "Verwijderen" -#: f.file.cc:5670 +#: f.file.cc:5742 msgid "menu name" msgstr "menu naam" -#: f.file.cc:5740 f.file.cc:5761 +#: f.file.cc:5812 f.file.cc:5833 msgid "Restart Fotoxx to update plugin menu" msgstr "Herstart Fotoxx om plugin menu aan te passen" -#: f.file.cc:5803 -msgid "no plugin command" -msgstr "geen plugin commando" +#: f.file.cc:5875 +msgid "Plugins menu is empty" +msgstr "Plugins menu is leeg" -#: f.file.cc:5831 +#: f.file.cc:5903 msgid "plugin failed" msgstr "plugin werkt niet" -#: f.image.cc:47 -msgid "Turn Image" -msgstr "" +#: f.image.cc:50 +msgid "Rotate Image 90º" +msgstr "Roteer Afbeelding 90º" + +#: f.image.cc:54 +msgid "rotate -90º" +msgstr "roteer -90º" + +#: f.image.cc:55 +msgid "rotate +90º" +msgstr "roteer +90º" -#: f.image.cc:114 +#: f.image.cc:123 msgid "Drag right edge with mouse" -msgstr "" +msgstr "Sleep rechterrand met de muis" -#: f.image.cc:144 +#: f.image.cc:153 msgid "Rotate Image" msgstr "Afbeelding draaien" -#: f.image.cc:148 zfuncs.cc:9605 +#: f.image.cc:157 zfuncs.cc:9679 msgid "left" msgstr "links" -#: f.image.cc:151 zfuncs.cc:9606 +#: f.image.cc:160 zfuncs.cc:9680 msgid "right" msgstr "rechts" -#: f.image.cc:157 +#: f.image.cc:166 msgid "degrees" msgstr "graden" -#: f.image.cc:442 +#: f.image.cc:451 msgid "Drag middle to move, drag corners to resize." msgstr "Sleep het midden om te verplaatsen, sleep hoeken om te vergroten." -#: f.image.cc:465 f.menus.cc:196 f.menus.cc:445 +#: f.image.cc:474 f.menus.cc:208 f.menus.cc:456 msgid "Trim/Crop" msgstr "Bijsnijden" -#: f.image.cc:476 f.image.cc:756 +#: f.image.cc:485 f.image.cc:765 msgid "ratio" msgstr "ratio" -#: f.image.cc:480 +#: f.image.cc:489 msgid "portrait" -msgstr "" +msgstr "portrait" -#: f.image.cc:481 +#: f.image.cc:490 msgid "landscape" -msgstr "" +msgstr "landscape" -#: f.image.cc:482 +#: f.image.cc:491 msgid "Lock Ratio" msgstr "verhoudingen vasthouden" -#: f.image.cc:486 +#: f.image.cc:495 msgid "customize" msgstr "Aanpassen" -#: f.image.cc:748 +#: f.image.cc:757 msgid "Trim Buttons" msgstr "Bijsnijd knoppen" -#: f.image.cc:755 +#: f.image.cc:764 msgid "label" msgstr "label" -#: f.image.cc:1277 +#: f.image.cc:1286 msgid "Lock aspect ratio" msgstr "lengte:breedte verhouding vasthouden" -#: f.image.cc:1298 +#: f.image.cc:1307 msgid "Resize Image" msgstr "Herschalen Afbeelding" -#: f.image.cc:1480 f.menus.cc:199 +#: f.image.cc:1491 f.menus.cc:211 msgid "Flip" msgstr "Afbeelding spiegelen" -#: f.image.cc:1604 +#: f.image.cc:1610 msgid "Enter text, click/drag on image, right click to remove" msgstr "" "Invoeren tekst, klik/sleep in afbeelding, rechter klik om te verwijderen" -#: f.image.cc:1631 +#: f.image.cc:1645 msgid "Write Text on Image" msgstr "Schrijf Tekst op Afbeelding" -#: f.image.cc:1638 f.tools.cc:1100 -msgid "Text" -msgstr "Tekst" - -#: f.image.cc:1645 -msgid "Size" -msgstr "Grootte" - -#: f.image.cc:1656 -msgid "text" -msgstr "tekst" - -#: f.image.cc:1657 -msgid "backing" -msgstr "achtergrondkleur" - -#: f.image.cc:1658 -msgid "outline" -msgstr "contour" - -#: f.image.cc:1659 -msgid "shadow" -msgstr "schaduw" - -#: f.image.cc:1661 f.menus.cc:61 f.menus.cc:107 f.menus.cc:273 fotoxx.h:949 -msgid "Color" -msgstr "Kleur" - -#: f.image.cc:1667 -msgid "Transparency" -msgstr "Doorzichtigheid" - -#: f.image.cc:1673 fotoxx.h:1017 -msgid "Width" -msgstr "breedte" - -#: f.image.cc:1679 -msgid "Angle" -msgstr "Hoek" - -#: f.image.cc:1686 -msgid "Text File:" -msgstr "Textbestand:" - -#: f.image.cc:1764 -msgid "select font" -msgstr "selecteer font" +#: f.image.cc:2312 +msgid "text file is defective" +msgstr "tekstbestand is beschadigd" -#: f.menus.cc:54 f.menus.cc:100 +#: f.menus.cc:54 f.menus.cc:115 msgid "File" msgstr "Bestand" -#: f.menus.cc:55 f.menus.cc:101 +#: f.menus.cc:55 f.menus.cc:116 msgid "Tools" msgstr "Gereedschap" -#: f.menus.cc:56 f.menus.cc:102 +#: f.menus.cc:56 f.menus.cc:117 msgid "Metadata" msgstr "Metadata" -#: f.menus.cc:57 f.menus.cc:103 +#: f.menus.cc:57 f.menus.cc:118 msgid "Areas" msgstr "Uitsnedes" -#: f.menus.cc:59 f.menus.cc:105 +#: f.menus.cc:59 f.menus.cc:120 msgid "Retouch" msgstr "Retoucheren" -#: f.menus.cc:60 f.menus.cc:106 +#: f.menus.cc:60 f.menus.cc:121 msgid "Repair" msgstr "Repareren" -#: f.menus.cc:62 f.menus.cc:108 +#: f.menus.cc:62 f.menus.cc:123 msgid "Bend" msgstr "Kromtrekken" -#: f.menus.cc:63 f.menus.cc:109 +#: f.menus.cc:63 f.menus.cc:124 msgid "Effects" msgstr "Effecten" -#: f.menus.cc:64 f.menus.cc:110 +#: f.menus.cc:64 f.menus.cc:125 msgid "Combine" msgstr "Samenvoegen" -#: f.menus.cc:65 f.menus.cc:111 +#: f.menus.cc:65 f.menus.cc:126 msgid "Plugins" msgstr "Plugins" -#: f.menus.cc:66 f.menus.cc:112 fotoxx-13.08.cc:3631 fotoxx.h:967 +#: f.menus.cc:66 f.menus.cc:127 fotoxx-13.09.cc:3664 fotoxx.h:988 msgid "Help" msgstr "Help" -#: f.menus.cc:99 f.menus.cc:271 +#: f.menus.cc:99 f.menus.cc:284 msgid "Favorites Menu" msgstr "Favorieten Menu" +#: f.menus.cc:100 +msgid "Open, Save, Trash, Rename, Print" +msgstr "Openen, Bewaren, Verwijderen, Hernoemen, Afdrukken" + +#: f.menus.cc:101 +msgid "Synch Files, Settings, Collections, Batch Funcs ..." +msgstr "Synch Bestanden, Instellingen, Collecties, Batch Functies ..." + +#: f.menus.cc:102 +msgid "Captions, Tags, Ratings, Geotags, Search ... " +msgstr "Onderschriften, Tags, Ratings, Geotags, Zoeken ..." + +#: f.menus.cc:103 +msgid "Select image areas to edit, copy and paste" +msgstr "Selecteer uitsnedes om te bewerken, te copieren en te plakken " + +#: f.menus.cc:104 +msgid "Rotate, Trim/Crop, Resize, Add Text" +msgstr "Roteren, Bijsnijden, Herschalen, Toevoegen Tekst" + +#: f.menus.cc:105 +msgid "Improve brightness, contrast, color ..." +msgstr "Verbeteren helderheid, contrast, kleur ..." + +#: f.menus.cc:106 +msgid "Sharpen, Clean, Red-eyes, Paint, Clone ..." +msgstr "Verscherpen, Schonen, Rode-ogen, Verven, Klonen ..." + +#: f.menus.cc:107 +msgid "White Balance, Color Profile, Color Matching" +msgstr "Witbalans, Kleurprofiel, Kleurmatching" + +#: f.menus.cc:108 +msgid "Fix Perspective, Bend/Warp image ..." +msgstr "Repareren Perspectief, Buigen/Kromtrekken afbeelding ..." + +#: f.menus.cc:109 +msgid "Special Effects, Arty Transforms" +msgstr "Speciale Effecten, Artistieke Transformaties" + +#: f.menus.cc:110 +msgid "HDR, HDF, Panorama, Stack, Mashup" +msgstr "HDR, HDF, Panorama, Stapelen, Mashup" + +#: f.menus.cc:111 +msgid "Use other image editors within Fotoxx" +msgstr "Gebruik andere afbeelding editors binnen Fotoxx" + #: f.menus.cc:112 -msgid "User Guide etc." -msgstr "Gebruikershandleiding etc." +msgid "Quick Start, User Guide, Recent Changes ..." +msgstr "Snel Start, Gebruikershandleiding, Recente wijzigingen ..." -#: f.menus.cc:131 +#: f.menus.cc:146 msgid "New Window" msgstr "Nieuw Venster" -#: f.menus.cc:131 +#: f.menus.cc:146 msgid "Open another window" msgstr "Open nog een venster" -#: f.menus.cc:132 f.menus.cc:278 +#: f.menus.cc:147 f.menus.cc:291 msgid "Open a new image file" msgstr "Open nieuwe afbeelding" -#: f.menus.cc:133 +#: f.menus.cc:148 msgid "Open Previous File" msgstr "Open vorig bestand" -#: f.menus.cc:133 +#: f.menus.cc:148 msgid "Open the previously seen file" msgstr "Open vorig getoond bestand" -#: f.menus.cc:134 +#: f.menus.cc:149 msgid "Open a recently seen file" msgstr "Open een onlangs getoond bestand" -#: f.menus.cc:134 +#: f.menus.cc:149 msgid "Recently Seen Images" msgstr "Onlangs Bekeken Afbeeldingen" -#: f.menus.cc:135 +#: f.menus.cc:150 msgid "Newly Added Images" msgstr "Nieuw Toegevoegde Afbeeldingen" -#: f.menus.cc:135 +#: f.menus.cc:150 msgid "Open a newly added file" msgstr "Open een nieuw toegevoegd bestand" -#: f.menus.cc:136 +#: f.menus.cc:151 msgid "Open and edit a camera RAW file" msgstr "Open en bewerk een RAW bestand" -#: f.menus.cc:137 -msgid "Save to Same File" -msgstr "Opslaan" +#: f.menus.cc:152 f.menus.cc:294 +msgid "Save modified image file to disk" +msgstr "Bewaar gewijzigd afbeeldingsbestand" -#: f.menus.cc:137 -msgid "Save to the same file (replace)" -msgstr "Opslaan in zelfde bestand (vervangen)" - -#: f.menus.cc:138 -msgid "Save to New Version" -msgstr "Opslaan als nieuwe versie" - -#: f.menus.cc:138 -msgid "Save to a new (next) version" -msgstr "Opslaan als nieuwe (volgende) versie" - -#: f.menus.cc:139 -msgid "Save to New File" -msgstr "Opslaan als ..." - -#: f.menus.cc:139 -msgid "Save to a new file name" -msgstr "Opslaan met nieuwe bestandsnaam" +#: f.menus.cc:152 +msgid "Save to Disk" +msgstr "Bewaar op schijf" -#: f.menus.cc:140 +#: f.menus.cc:153 msgid "Change the image file name" msgstr "Wijzig naam van het afbeeldingsbestand" -#: f.menus.cc:141 +#: f.menus.cc:154 msgid "Create a blank image" msgstr "Maak een lege afbeelding" -#: f.menus.cc:141 +#: f.menus.cc:154 msgid "New Blank Image" msgstr "Nieuwe Lege Afbeelding" -#: f.menus.cc:142 f.menus.cc:284 +#: f.menus.cc:155 f.menus.cc:295 msgid "Move image file to Trash" msgstr "Verplaats afbeeldingsbestand naar prullenbak" -#: f.menus.cc:143 +#: f.menus.cc:156 msgid "Print Image" msgstr "Afdrukken Afbeelding" -#: f.menus.cc:143 +#: f.menus.cc:156 msgid "Print the current image" msgstr "Afdrukken actuele afbeelding" -#: f.menus.cc:144 +#: f.menus.cc:157 msgid "Quit Fotoxx" msgstr "Verlaat Fotoxx" -#: f.menus.cc:146 +#: f.menus.cc:159 msgid "Index new files and make thumbnails" msgstr "Indexeer nieuwe bestanden en maak miniaturen" -#: f.menus.cc:146 f.tools.cc:182 f.tools.cc:364 +#: f.menus.cc:159 f.tools.cc:182 f.tools.cc:364 msgid "Synchronize Files" msgstr " Synchroniseren Bestanden" -#: f.menus.cc:147 +#: f.menus.cc:160 msgid "Change user preferences" msgstr "Verander gebruikersvoorkeuren" -#: f.menus.cc:147 +#: f.menus.cc:160 msgid "User Settings" msgstr "Gebruikers instellingen" -#: f.menus.cc:148 +#: f.menus.cc:161 msgid "Change Keyboard Shortcut Keys" msgstr "Wijzig Keyboard Shortcut Toetsen" -#: f.menus.cc:148 +#: f.menus.cc:161 msgid "Keyboard Shortcuts" msgstr "Keyboard Shortcuts" -#: f.menus.cc:149 f.tools.cc:2179 +#: f.menus.cc:162 f.tools.cc:2190 msgid "Manage Collections" msgstr "Beheren Collecties" -#: f.menus.cc:149 +#: f.menus.cc:162 msgid "Organize images into collections" msgstr "Organiseer afbeeldingen in collecties" -#: f.menus.cc:150 +#: f.menus.cc:163 msgid "Convert for a new top directory" msgstr "Converteren voor een nieuwe bovenste map" -#: f.menus.cc:150 +#: f.menus.cc:163 msgid "Move Collections" msgstr "Verplaats Collecties" -#: f.menus.cc:151 f.tools.cc:2778 +#: f.menus.cc:164 f.tools.cc:2797 msgid "Slide Show" msgstr "Diashow starten" -#: f.menus.cc:151 +#: f.menus.cc:164 msgid "Start a slide show" msgstr "Start een diashow" -#: f.menus.cc:152 f.tools.cc:3863 +#: f.menus.cc:165 f.tools.cc:3882 msgid "Batch Rename" msgstr "Batchgewijs hernoemen" -#: f.menus.cc:152 +#: f.menus.cc:165 msgid "Rename multiple image files" msgstr "Hernoemen meerdere afbeeldingsbestanden" -#: f.menus.cc:153 f.tools.cc:4078 +#: f.menus.cc:166 f.tools.cc:4097 msgid "Batch Convert/Resize/Move" msgstr "Batchgewijs Converteren/Herschalen/Verplaatsen" -#: f.menus.cc:153 +#: f.menus.cc:166 msgid "Convert resize, move multiple files" msgstr "Converteren herschalen, verplaatsen meerdere bestanden" -#: f.menus.cc:154 f.tools.cc:4416 +#: f.menus.cc:167 f.tools.cc:4435 msgid "Batch Convert RAW Files" msgstr "Batchgewijs converteren RAW bestanden" -#: f.menus.cc:154 +#: f.menus.cc:167 msgid "Convert multiple camera RAW files" msgstr "Converteer meerdere RAW bestanden" -#: f.menus.cc:155 f.tools.cc:4795 +#: f.menus.cc:168 f.tools.cc:4814 msgid "Brightness Distribution" msgstr "Helderheid histogram" -#: f.menus.cc:155 +#: f.menus.cc:168 msgid "Show a brightness distribution graph" msgstr "Toon helderheids verdeling grafiek" -#: f.menus.cc:156 f.menus.cc:455 f.tools.cc:4990 +#: f.menus.cc:169 f.menus.cc:466 f.tools.cc:5009 msgid "Grid Lines" msgstr "Raster instellen" -#: f.menus.cc:156 +#: f.menus.cc:169 msgid "Show or revise grid lines" msgstr "Toon of herstel raster lijnen" -#: f.menus.cc:157 f.tools.cc:5166 +#: f.menus.cc:170 f.tools.cc:5185 msgid "Show RGB" msgstr "RGB waarden tonen" -#: f.menus.cc:157 +#: f.menus.cc:170 msgid "Show RGB colors at mouse click" msgstr "Toon RGB kleuren bij muisklik" -#: f.menus.cc:158 +#: f.menus.cc:171 msgid "Chart to adjust monitor color" msgstr "Grafiek instellen monitor kleur" -#: f.menus.cc:158 +#: f.menus.cc:171 msgid "Monitor Color" msgstr "Monitor Kleur " -#: f.menus.cc:159 +#: f.menus.cc:172 msgid "Chart to adjust monitor gamma" msgstr "Grafiek instellen monitor gamma" -#: f.menus.cc:159 f.tools.cc:5490 +#: f.menus.cc:172 f.tools.cc:5509 msgid "Monitor Gamma" msgstr "Gamma waarde monitor" -#: f.menus.cc:160 +#: f.menus.cc:173 msgid "Change Language" msgstr "Taal veranderen" -#: f.menus.cc:160 +#: f.menus.cc:173 msgid "Change the GUI language" msgstr "Verander de GUI taal" -#: f.menus.cc:161 +#: f.menus.cc:174 msgid "Missing Translations" msgstr "Ontbrekende Vertalingen" -#: f.menus.cc:161 +#: f.menus.cc:174 msgid "Report missing translations" msgstr "Rapport ontbrekende vertalingen" -#: f.menus.cc:162 +#: f.menus.cc:175 msgid "Edit Translations" msgstr "Bewerken vertalingen" -#: f.menus.cc:162 +#: f.menus.cc:175 msgid "Edit translations while using Fotoxx" msgstr "Bewerken vertalingen bij gebruik van Fotoxx" -#: f.menus.cc:163 +#: f.menus.cc:176 msgid "Create a Gnome menu and launcher" msgstr "Maak een Gnome menu en starter" -#: f.menus.cc:163 +#: f.menus.cc:176 msgid "Menu and Launcher" msgstr "Menu en Starter" -#: f.menus.cc:164 +#: f.menus.cc:177 msgid "Burn Images to CD/DVD" msgstr "Afbeelding op CD/DVD branden" -#: f.menus.cc:164 +#: f.menus.cc:177 msgid "Burn selected image files to CD or DVD" msgstr "Brand geselecteerde afbeeldingsbestanden naar CD of DVD" -#: f.menus.cc:165 +#: f.menus.cc:178 msgid "Memory and CPU (to terminal/logfile)" msgstr "Geheugen en CPU (naar beeldscherm/logfile)" -#: f.menus.cc:165 +#: f.menus.cc:178 msgid "Resources" msgstr "Hulpbronnen" -#: f.menus.cc:167 -msgid "Edit Caption/Comments" -msgstr "Bewerken Onderschrift/Commentaar" - -#: f.menus.cc:167 -msgid "Edit image caption or comment" -msgstr "Bewerken afbeelding onderschrift of commentaar" - -#: f.menus.cc:168 f.meta.cc:165 f.meta.cc:1728 +#: f.menus.cc:180 f.meta.cc:110 f.meta.cc:1897 msgid "Edit Metadata" msgstr "Bewerken Metadata" -#: f.menus.cc:168 -msgid "Edit image date/rating/tags" -msgstr "Bewerken afbeelding datum/waarde/tags" +#: f.menus.cc:180 +msgid "Edit image tags/caption/rating ..." +msgstr "Bewerken afbeeldings tags/onderschrift/rating ..." -#: f.menus.cc:169 +#: f.menus.cc:181 msgid "Add/remove tags for multiple images" msgstr "Toevoegen/verwijderen tags voor meerdere afbeeldingen" -#: f.menus.cc:169 -msgid "Batch Tags" -msgstr "Batchgewijze Tags" +#: f.menus.cc:181 f.meta.cc:1552 +msgid "Batch Add/Remove Tags" +msgstr "Batchgewijs Toevoegen/Verwijderen Tags" -#: f.menus.cc:170 +#: f.menus.cc:182 msgid "List a few key metadata items" msgstr "Belangrijkste metadata opsommen" -#: f.menus.cc:170 +#: f.menus.cc:182 msgid "View Metadata (short)" msgstr "Tonen Metadata (kort)" -#: f.menus.cc:171 +#: f.menus.cc:183 msgid "List all metadata items" msgstr "Opsommen alle metadata items" -#: f.menus.cc:171 +#: f.menus.cc:183 msgid "View Metadata (long)" msgstr "Toon Metadata (lang)" -#: f.menus.cc:172 +#: f.menus.cc:184 msgid "Edit Any Metadata" msgstr "Bewerken Metadata" -#: f.menus.cc:172 +#: f.menus.cc:184 msgid "Edit any image metadata" msgstr "Bewerken metadata van afbeelding" -#: f.menus.cc:173 f.meta.cc:1820 +#: f.menus.cc:185 f.meta.cc:1989 msgid "Delete Metadata" msgstr "Verwijderen Metadata" -#: f.menus.cc:173 +#: f.menus.cc:185 msgid "Remove all metadata from an image" msgstr "Verwijder alle metadata van een afbeelding" -#: f.menus.cc:174 +#: f.menus.cc:186 msgid "Download Geolocations" msgstr "Download Geolocaties" -#: f.menus.cc:174 +#: f.menus.cc:186 msgid "Download initial geolocation database" msgstr "Download initiele geolocatie database" -#: f.menus.cc:176 f.meta.cc:2713 +#: f.menus.cc:188 f.meta.cc:2892 msgid "Edit Geotags" msgstr "Bewerken Geotags" -#: f.menus.cc:176 -msgid "Edit image geotags" -msgstr "Bewerken afbeelding geotags" +#: f.menus.cc:188 +msgid "Edit image location and geotags" +msgstr "Bewerken afbeeldings locatie en geotags" -#: f.menus.cc:177 +#: f.menus.cc:189 msgid "Add geotags to multiple images" msgstr "Toevoegen geotags aan meerdere afbeeldingen" -#: f.menus.cc:177 f.meta.cc:2905 +#: f.menus.cc:189 f.meta.cc:3084 msgid "Batch Add Geotags" msgstr "Batchgewijs Toevoegen Geotags" -#: f.menus.cc:178 +#: f.menus.cc:190 msgid "Find all images for a location [date]" msgstr "Zoek alle afbeeldingen voor een locatie [datum]" -#: f.menus.cc:178 +#: f.menus.cc:190 msgid "Images by Location/Date" msgstr "Afbeeldingen per Locatie/Datum" -#: f.menus.cc:179 +#: f.menus.cc:191 msgid "Find images by clicking a world map" msgstr "Zoek afbeeldingen door op een wereldkaart te klikken" -#: f.menus.cc:179 +#: f.menus.cc:191 msgid "Images by Map Location" msgstr "Afbeeldingen per Kaart Locatie" -#: f.menus.cc:180 +#: f.menus.cc:192 msgid "Find images meeting select criteria" msgstr "Zoek afbeeldingen volgens selectie criteria" -#: f.menus.cc:180 +#: f.menus.cc:192 msgid "Search Images" msgstr "Afbeeldingen doorzoeken" -#: f.menus.cc:182 fotoxx.h:1002 +#: f.menus.cc:194 fotoxx.h:1023 msgid "Select" msgstr "Uitsnedes maken" -#: f.menus.cc:182 +#: f.menus.cc:194 msgid "Select object or area for editing" msgstr "Selecteer object of uitsnede om te bewerken" -#: f.menus.cc:183 fotoxx.h:1004 +#: f.menus.cc:195 fotoxx.h:1025 msgid "Show" msgstr "Tonen" -#: f.menus.cc:183 +#: f.menus.cc:195 msgid "Show (outline) existing area" msgstr "Toon (contour) bestaande uitsnede" -#: f.menus.cc:184 fotoxx.h:969 +#: f.menus.cc:196 fotoxx.h:990 msgid "Hide" msgstr "Verbergen" -#: f.menus.cc:184 +#: f.menus.cc:196 msgid "Hide existing area" msgstr "Verberg bestaande uitsnede" -#: f.menus.cc:185 fotoxx.h:959 +#: f.menus.cc:197 fotoxx.h:979 msgid "Enable" msgstr "Uitsnede activeren" -#: f.menus.cc:185 +#: f.menus.cc:197 msgid "Enable area for editing" msgstr "Activeer uitsnede om te bewerken" -#: f.menus.cc:186 fotoxx.h:956 +#: f.menus.cc:198 fotoxx.h:976 msgid "Disable" msgstr "Uitsnede deactiveren" -#: f.menus.cc:186 +#: f.menus.cc:198 msgid "Disable area for editing" msgstr "Deactiveer uitsnede om te bewerken" -#: f.menus.cc:187 fotoxx.h:972 +#: f.menus.cc:199 fotoxx.h:993 msgid "Invert" msgstr "Uitsnede inverteren" -#: f.menus.cc:187 +#: f.menus.cc:199 msgid "Reverse existing area" msgstr "Bestaande uitsnede omkeren" -#: f.menus.cc:188 +#: f.menus.cc:200 msgid "Erase existing area" msgstr "Verwijder bestaande uitsnede" -#: f.menus.cc:188 fotoxx.h:1013 +#: f.menus.cc:200 fotoxx.h:1035 msgid "Unselect" msgstr "Deselecteren" -#: f.menus.cc:189 fotoxx.h:951 +#: f.menus.cc:201 fotoxx.h:971 msgid "Copy" msgstr "Uitsnede copieren" -#: f.menus.cc:189 +#: f.menus.cc:201 msgid "Copy an area for later pasting" msgstr "Copieer uitsnede om later te plakken" -#: f.menus.cc:190 fotoxx.h:984 +#: f.menus.cc:202 fotoxx.h:1005 msgid "Paste" msgstr "Uitsnede plakken" -#: f.menus.cc:190 +#: f.menus.cc:202 msgid "Paste an area into the current image" msgstr "Plak een uitsnede in huidige afbeelding" -#: f.menus.cc:191 +#: f.menus.cc:203 msgid "Open a file with a saved area" msgstr "Open een bestand met een opgeslagen uitsnede" -#: f.menus.cc:192 f.menus.cc:281 fotoxx.h:999 +#: f.menus.cc:204 f.menus.cc:294 fotoxx.h:1020 msgid "Save" msgstr "Opslaan" -#: f.menus.cc:192 +#: f.menus.cc:204 msgid "Save an area to a file" msgstr "Een uitsnede opslaan naar een bestand" -#: f.menus.cc:194 +#: f.menus.cc:206 msgid "Rotate 90 degrees" -msgstr "" +msgstr "Roteer 90 graden" -#: f.menus.cc:194 f.menus.cc:447 -msgid "Turn" -msgstr "" +#: f.menus.cc:206 f.menus.cc:458 +msgid "Rotate 90º" +msgstr "Roteer 90º" -#: f.menus.cc:195 fotoxx.h:998 +#: f.menus.cc:207 fotoxx.h:1019 msgid "Rotate" msgstr "Draaien" -#: f.menus.cc:195 +#: f.menus.cc:207 msgid "Rotate by any angle" msgstr "Draaien over een hoek" -#: f.menus.cc:196 +#: f.menus.cc:208 msgid "Cut off unwanted margins" msgstr "Afsnijden ongewenste marges" -#: f.menus.cc:197 +#: f.menus.cc:209 msgid "Auto-Trim" msgstr "Auto-Bijsnijden" -#: f.menus.cc:197 +#: f.menus.cc:209 msgid "Remove margins from warp, panorama, etc." msgstr "Verwijder marges na kromtrekken, panorama, etc." -#: f.menus.cc:198 +#: f.menus.cc:210 msgid "Change pixel dimensions" msgstr "Verander pixel dimensies" -#: f.menus.cc:199 +#: f.menus.cc:211 msgid "Mirror image horizontally or vertically" msgstr "Spiegel afbeelding horizontaal of verticaal" -#: f.menus.cc:200 +#: f.menus.cc:212 msgid "Add Text" msgstr "Schrijf Tekst" -#: f.menus.cc:200 +#: f.menus.cc:212 msgid "Write text on image" msgstr "Schrijf tekst op afbeelding" -#: f.menus.cc:202 +#: f.menus.cc:214 msgid "Fast auto enhance that may work OK" msgstr "Snelle auto-verbetering dat mogelijk goed werkt" -#: f.menus.cc:202 f.menus.cc:448 +#: f.menus.cc:214 f.menus.cc:459 msgid "Voodoo Enhance" msgstr "Voodoo Verbeteren" -#: f.menus.cc:203 +#: f.menus.cc:215 msgid "Adjust brightness, contrast, color" msgstr "Instellen helderheid, contrast, kleur" -#: f.menus.cc:203 f.menus.cc:449 -msgid "Brightness/Color" -msgstr "Helderheid/Kleur instellen" +#: f.menus.cc:215 f.retouch.cc:211 +msgid "Brightness/Contrast/Color" +msgstr "Helderheid/Contrast/Kleur" -#: f.menus.cc:204 +#: f.menus.cc:216 msgid "Adjust contrast using a gamma curve" msgstr "Instellen contrast met een gamma curve" -#: f.menus.cc:204 f.menus.cc:450 +#: f.menus.cc:216 f.menus.cc:461 msgid "Gamma Curves" msgstr "Gamma Curves" -#: f.menus.cc:205 +#: f.menus.cc:217 msgid "Add local contrast, enhance details" msgstr "Toevoegen lokaal contrast, verbeter details" -#: f.menus.cc:205 f.menus.cc:452 f.retouch.cc:1130 +#: f.menus.cc:217 f.menus.cc:463 f.retouch.cc:1130 msgid "Tone Mapping" msgstr "Tone mapping instellen" -#: f.menus.cc:206 f.menus.cc:451 +#: f.menus.cc:218 f.menus.cc:462 msgid "Flatten Brightness" msgstr "Helderheidsverdeling afvlakken" -#: f.menus.cc:206 +#: f.menus.cc:218 msgid "Flatten brightness distribution" msgstr "Afvlakken helderheidsverdeling" -#: f.menus.cc:207 +#: f.menus.cc:219 msgid "Expand Brightness" msgstr "Helderheidsbereik vergroten" -#: f.menus.cc:207 +#: f.menus.cc:219 msgid "Expand brightness range" msgstr "Uitbreiden helderheids bereik" -#: f.menus.cc:208 +#: f.menus.cc:220 msgid "Brightness Ramp" msgstr "Helderheidsverspreiding instellen" -#: f.menus.cc:208 +#: f.menus.cc:220 msgid "Fix brightness uniformity across image" msgstr "Repareren helderheidsverdeling over de afbeelding" -#: f.menus.cc:209 f.retouch.cc:2361 +#: f.menus.cc:221 f.retouch.cc:2358 msgid "Paint Edits" msgstr "Veranderingen schilderen" -#: f.menus.cc:209 -msgid "Paint edit function gradually with the mouse" +#: f.menus.cc:221 +msgid "Paint edit function gradually with mouse" msgstr "Bewerkingsfunctie geleidelijk met muis schilderen " -#: f.menus.cc:210 f.retouch.cc:2592 +#: f.menus.cc:222 f.retouch.cc:2589 msgid "Leverage Edits" msgstr "Veranderingen versterken" -#: f.menus.cc:210 +#: f.menus.cc:222 msgid "Leverage edits by brightness or color" msgstr "Veranderingen versterken met helderheid of kleur" -#: f.menus.cc:212 +#: f.menus.cc:224 msgid "Make the image look sharper" msgstr "Laat de afbeelding er scherper uitzien" -#: f.menus.cc:212 f.repair.cc:60 +#: f.menus.cc:224 f.repair.cc:60 msgid "Sharpen" msgstr "Afbeelding verscherpen" -#: f.menus.cc:213 f.repair.cc:1543 +#: f.menus.cc:225 f.repair.cc:1543 msgid "Blur" msgstr "Afbeelding vervagen" -#: f.menus.cc:213 +#: f.menus.cc:225 msgid "Make the image look fuzzy" msgstr "Laat de afbeelding er nevelig uitzien" -#: f.menus.cc:214 +#: f.menus.cc:226 msgid "Filter noise from low-light photos" msgstr "Filter ruis van laag belichte foto's" -#: f.menus.cc:214 +#: f.menus.cc:226 msgid "Reduce Noise" msgstr "Ruis verminderen" -#: f.menus.cc:215 +#: f.menus.cc:227 msgid "Remove unwanted objects" msgstr "Verwijder ongewenste objecten" -#: f.menus.cc:215 f.repair.cc:1536 +#: f.menus.cc:227 f.repair.cc:1536 msgid "Smart Erase" msgstr "Slim verwijderen" -#: f.menus.cc:216 +#: f.menus.cc:228 msgid "Fix red-eyes from electronic flash" msgstr "Repareren rode-ogen door electronisch flitslicht" -#: f.menus.cc:216 f.menus.cc:454 +#: f.menus.cc:228 f.menus.cc:465 msgid "Red Eyes" msgstr "Rode ogen corrigeren" -#: f.menus.cc:217 +#: f.menus.cc:229 msgid "Paint image pixels using the mouse" msgstr "Schilderen afbeeldings pixels met de muis" -#: f.menus.cc:217 f.repair.cc:2357 +#: f.menus.cc:229 f.repair.cc:2357 msgid "Paint/Clone" -msgstr "Pixels Schilderen" +msgstr "Pixels Schilderen/Klonen" -#: f.menus.cc:218 f.repair.cc:2880 +#: f.menus.cc:230 f.repair.cc:2880 msgid "Remove Dust" msgstr "Stofspikkels verwijderen" -#: f.menus.cc:218 +#: f.menus.cc:230 msgid "Remove dust spots from scanned slides" msgstr "Verwijderen stofspikkels van gescande dia's" -#: f.menus.cc:219 +#: f.menus.cc:231 msgid "Anti-alias" msgstr "Anti-alias" -#: f.menus.cc:219 +#: f.menus.cc:231 msgid "Smoothen edges with jaggies" msgstr "Glad maken randen met randjes" -#: f.menus.cc:220 +#: f.menus.cc:232 msgid "Fix Color Fringes" msgstr "Repareren Kleur Franjes" -#: f.menus.cc:220 +#: f.menus.cc:232 msgid "Reduce Chromatic Abberation" msgstr "Verminderen Chromatische Aberratie" -#: f.menus.cc:221 +#: f.menus.cc:233 msgid "Erase known hot and dark pixels" msgstr "Verwijderen bekende hete en donkere pixels" -#: f.menus.cc:221 f.repair.cc:3890 +#: f.menus.cc:233 f.repair.cc:3894 msgid "Fix Stuck Pixels" msgstr "Repareren Defecte Pixels" -#: f.menus.cc:223 +#: f.menus.cc:235 msgid "Click on a white/gray area to fix color tint" msgstr "Klik op wit/zwart uitsnede om kleurtint te repareren " -#: f.menus.cc:223 f.menus.cc:453 +#: f.menus.cc:235 f.menus.cc:464 msgid "White Balance" msgstr "Witbalans instellen" -#: f.menus.cc:224 +#: f.menus.cc:236 msgid "Make BW/color, negative/positive, sepia" msgstr "Maak BW/kleur, negatief/positief, sepia" -#: f.menus.cc:225 +#: f.menus.cc:237 msgid "Color Profile" msgstr "Kleurprofiel" -#: f.menus.cc:225 +#: f.menus.cc:237 msgid "Convert to another color profile" msgstr "Omzetten naar ander kleurprofiel" -#: f.menus.cc:226 +#: f.menus.cc:238 msgid "Match Colors" msgstr "Match Kleuren" -#: f.menus.cc:226 +#: f.menus.cc:238 msgid "Match colors on one image with another" msgstr "Match kleuren van twee afbeeldingen" -#: f.menus.cc:227 +#: f.menus.cc:239 msgid "Adjust color in selected image areas" msgstr "Instellen kleur in geselecteerde uitsnedes" -#: f.menus.cc:228 +#: f.menus.cc:240 msgid "Adjust color using CMYK or RGB values" msgstr "Instellen kleur met CMYK of RGB waarden" -#: f.menus.cc:228 +#: f.menus.cc:240 msgid "CMYK Density" msgstr "CMYK dichtheid" -#: f.menus.cc:230 +#: f.menus.cc:242 msgid "Remove curvature, esp. panoramas" msgstr "Verwijder kromming, met name panorama's" -#: f.menus.cc:231 +#: f.menus.cc:243 msgid "Straighten objects seen from an angle" msgstr "Rechttrekken objecten gezien vanuit een hoek" -#: f.menus.cc:232 +#: f.menus.cc:244 msgid "Flatten Book Page" msgstr "Platstrijken Pagina van Boek" -#: f.menus.cc:232 +#: f.menus.cc:244 msgid "Flatten a photographed book page" msgstr "Platstrijken foto van pagina" -#: f.menus.cc:233 +#: f.menus.cc:245 msgid "Distort image areas using the mouse" msgstr "Verdraai uitsnede met de muis" -#: f.menus.cc:234 f.menus.cc:235 f.menus.cc:236 +#: f.menus.cc:246 f.menus.cc:247 f.menus.cc:248 msgid "Distort the whole image using the mouse" msgstr "Verdraai hele afbeelding met de muis" -#: f.menus.cc:238 +#: f.menus.cc:250 msgid "Color Depth" msgstr "Kleurdiepte instellen" -#: f.menus.cc:238 +#: f.menus.cc:250 msgid "Reduce color depth (posterize)" msgstr "Verminderen kleurdiepte (minder schakeringen)" -#: f.menus.cc:239 +#: f.menus.cc:251 msgid "Convert to pencil sketch" msgstr "Converteer naar potlood schets" -#: f.menus.cc:239 +#: f.menus.cc:251 msgid "Sketch" msgstr "Schets" -#: f.menus.cc:240 +#: f.menus.cc:252 msgid "Convert to colored line drawing" msgstr "Converteren naar lijn tekenen" -#: f.menus.cc:240 +#: f.menus.cc:252 msgid "Drawing" msgstr "Tekenen" -#: f.menus.cc:241 +#: f.menus.cc:253 msgid "Graduated Blur depending on contrast" -msgstr "" +msgstr "Graduele Vervaging afhankelijk van contrast" -#: f.menus.cc:242 +#: f.menus.cc:254 msgid "Create an embossed or 3D appearance" msgstr "Maak een relief of 3D verschijning" -#: f.menus.cc:242 +#: f.menus.cc:254 msgid "Embossing" msgstr "Reliefdruk" -#: f.menus.cc:243 +#: f.menus.cc:255 msgid "Convert to square tiles" msgstr "Converteren naar vierkante tegels" -#: f.menus.cc:243 +#: f.menus.cc:255 msgid "Tiles" msgstr "Tegels" -#: f.menus.cc:244 +#: f.menus.cc:256 msgid "Convert to dots (Roy Lichtenstein effect)" msgstr "Converteren naar stippen (Roy Lichtenstein effect)" -#: f.menus.cc:244 +#: f.menus.cc:256 msgid "Dots" msgstr "Krantendruk" -#: f.menus.cc:245 +#: f.menus.cc:257 msgid "Convert into a simulated painting" msgstr "Converteren naar nagebootst schilderij" -#: f.menus.cc:245 +#: f.menus.cc:257 msgid "Painting" msgstr "Schilderij" -#: f.menus.cc:246 +#: f.menus.cc:258 msgid "Shift/convert colors into other colors" msgstr "Verschuiven/converteren kleuren naar andere kleuren" -#: f.menus.cc:247 +#: f.menus.cc:259 msgid "Change brightness or color radially" msgstr "Verander helderheid of kleur radiaal" -#: f.menus.cc:249 +#: f.menus.cc:261 msgid "Combine bright/dark images for better detail" msgstr "Samenvoegen licht/donker afbeeldingen voor beter detail" -#: f.menus.cc:249 +#: f.menus.cc:261 msgid "High Dynamic Range" msgstr "Hoog dynamisch bereik (HDR)" -#: f.menus.cc:250 +#: f.menus.cc:262 msgid "Combine near/far focus images for deeper focus" msgstr "Samenvoegen dichtbij/veraf afbeeldingen voor meer scherptediepte" -#: f.menus.cc:250 +#: f.menus.cc:262 msgid "High Depth of Field" msgstr "Hoge scherptediepte (HDF)" -#: f.menus.cc:251 +#: f.menus.cc:263 msgid "Combine images to erase passing people, etc." msgstr "Samenvoegen afbeeldingen om voorbijgangers etc. te verwijderen " -#: f.menus.cc:251 +#: f.menus.cc:263 msgid "Stack / Paint" msgstr "Stapelen / Schilderen" -#: f.menus.cc:252 +#: f.menus.cc:264 msgid "Combine noisy images into a low-noise image" msgstr "Samenvoegen ruis afbeeldingen naar lagere-ruis afbeelding" -#: f.menus.cc:252 +#: f.menus.cc:264 msgid "Stack / Noise" msgstr "Stapelen / Ruis verminderen" -#: f.menus.cc:253 +#: f.menus.cc:265 msgid "Combine images into a panorama" msgstr "Samenvoegen afbeeldingen in een panorama" -#: f.menus.cc:253 +#: f.menus.cc:265 msgid "Panorama" msgstr "Panorama maken" -#: f.menus.cc:254 +#: f.menus.cc:266 msgid "Combine images into a vertical panorama" msgstr "Samenvoegen afbeeldingen in een verticaal panorama" -#: f.menus.cc:254 +#: f.menus.cc:266 msgid "Vertical Panorama" msgstr "Verticaal panorama" -#: f.menus.cc:256 +#: f.menus.cc:267 +msgid "Arrange multiple images on a background image" +msgstr "schikken meerdere afbeeldingen op een achtergrond afbeelding" + +#: f.menus.cc:267 +msgid "Mashup" +msgstr "Mashup" + +#: f.menus.cc:269 msgid "Add another image editor to the menu" msgstr "Een andere afbeeldingseditor aan menu toevoegen" -#: f.menus.cc:256 +#: f.menus.cc:269 msgid "Edit Plugins" msgstr "Plugins aanpassen" -#: f.menus.cc:258 fotoxx-13.08.cc:3597 +#: f.menus.cc:271 fotoxx-13.09.cc:3630 msgid "Quick Start" msgstr "Snel Start" -#: f.menus.cc:258 +#: f.menus.cc:271 msgid "Quick Start mini-guide" msgstr "Snel Start mini-handleiding" -#: f.menus.cc:259 +#: f.menus.cc:272 msgid "Read the user guide" msgstr "Lees de gebruikershandleiding" -#: f.menus.cc:259 fotoxx-13.08.cc:3600 +#: f.menus.cc:272 fotoxx-13.09.cc:3633 msgid "User Guide" msgstr "Gebruikershandleiding" -#: f.menus.cc:260 +#: f.menus.cc:273 msgid "Recent user guide changes" msgstr "Recente veranderingen gebruikershandleiding" -#: f.menus.cc:260 fotoxx-13.08.cc:3603 +#: f.menus.cc:273 fotoxx-13.09.cc:3636 msgid "User Guide Changes" msgstr "Gebruikershandleiding Veranderingen" -#: f.menus.cc:261 +#: f.menus.cc:274 msgid "Fotoxx updates notification" msgstr "Fotoxx update notificatie" -#: f.menus.cc:261 fotoxx-13.08.cc:3606 +#: f.menus.cc:274 fotoxx-13.09.cc:3639 msgid "Program Updates" msgstr "Programma Updates" -#: f.menus.cc:262 fotoxx-13.08.cc:3612 +#: f.menus.cc:275 fotoxx-13.09.cc:3645 msgid "Edit Functions Summary" msgstr "Opsomming Bewerkingsfuncties" -#: f.menus.cc:262 +#: f.menus.cc:275 msgid "Summary of image edit functions" msgstr "Opsomming van bewerkingsfuncties voor afbeeldingen" -#: f.menus.cc:263 fotoxx-13.08.cc:3609 +#: f.menus.cc:276 fotoxx-13.09.cc:3642 msgid "README" msgstr "README" -#: f.menus.cc:263 +#: f.menus.cc:276 msgid "Technical installation notes" msgstr "Opmerkingen Technische Installatie" -#: f.menus.cc:264 fotoxx-13.08.cc:3615 +#: f.menus.cc:277 fotoxx-13.09.cc:3648 msgid "Change Log" msgstr "Veranderingslogboek" -#: f.menus.cc:264 +#: f.menus.cc:277 msgid "List updates by Fotoxx version" msgstr "Opsomming updates per Fotoxx versie" -#: f.menus.cc:265 fotoxx-13.08.cc:3618 +#: f.menus.cc:278 fotoxx-13.09.cc:3651 msgid "Log File" msgstr "Log Bestand" -#: f.menus.cc:265 +#: f.menus.cc:278 msgid "View the log file and error messages" msgstr "Bekijk het log bestand en foutboodschappen" -#: f.menus.cc:266 +#: f.menus.cc:279 msgid "How to do Fotoxx translations" msgstr "Hoe Fotoxx vertalen" -#: f.menus.cc:266 fotoxx-13.08.cc:3621 +#: f.menus.cc:279 fotoxx-13.09.cc:3654 msgid "Translations" msgstr "Vertalingen" -#: f.menus.cc:267 fotoxx-13.08.cc:3624 +#: f.menus.cc:280 fotoxx-13.09.cc:3657 msgid "Home Page" msgstr "Homepage" -#: f.menus.cc:267 +#: f.menus.cc:280 msgid "Show the Fotoxx web page" msgstr "Toon de Fotoxx webpagina" -#: f.menus.cc:268 fotoxx-13.08.cc:3627 +#: f.menus.cc:281 fotoxx-13.09.cc:3660 msgid "About" msgstr "Over fotoxx" -#: f.menus.cc:268 +#: f.menus.cc:281 msgid "Version, license, contact, credits" msgstr "Versie, licentie, contact, bijdragen" -#: f.menus.cc:271 +#: f.menus.cc:284 msgid "Favs" msgstr "Favorieten" -#: f.menus.cc:273 +#: f.menus.cc:286 msgid "Color of area borders etc." msgstr "Kleur randen van uitsnede etc." -#: f.menus.cc:274 fotoxx.h:1011 +#: f.menus.cc:287 fotoxx.h:1033 msgid "Undo" msgstr "Ongedaan maken" -#: f.menus.cc:274 +#: f.menus.cc:287 msgid "Undo one edit" msgstr "Stap ongedaan maken " -#: f.menus.cc:275 fotoxx.h:993 +#: f.menus.cc:288 fotoxx.h:1014 msgid "Redo" msgstr "Opnieuw" -#: f.menus.cc:275 +#: f.menus.cc:288 msgid "Redo one edit" msgstr "Stap opnieuw uitvoeren" -#: f.menus.cc:277 f.menus.cc:389 -msgid "Gallery from Tab F" -msgstr "" +#: f.menus.cc:290 f.menus.cc:400 +msgid "Set gallery from current image file" +msgstr "Instellen galerie van huidig afbeeldingsbestand" + +#: f.menus.cc:290 f.menus.cc:400 +msgid "Sync.G" +msgstr "Sync.G" -#: f.menus.cc:279 +#: f.menus.cc:292 msgid "Open the previous file" msgstr "Open vorig bestand" -#: f.menus.cc:279 fotoxx.h:988 +#: f.menus.cc:292 fotoxx.h:1009 msgid "Prev" msgstr "Vorige" -#: f.menus.cc:280 fotoxx.h:979 +#: f.menus.cc:293 fotoxx.h:1000 msgid "Next" msgstr "Volgende" -#: f.menus.cc:280 +#: f.menus.cc:293 msgid "Open the next file" msgstr "Open volgend bestand" -#: f.menus.cc:281 -msgid "Save to the same file" -msgstr "Opslaan naar zelfde bestand" - -#: f.menus.cc:282 -msgid "Save to a new version" -msgstr "Opslaan als nieuwe versie" - -#: f.menus.cc:282 -msgid "Save+V" -msgstr "Opslaan.V" - -#: f.menus.cc:283 -msgid "Save to a new file" -msgstr "Opslaan als ..." - -#: f.menus.cc:283 -msgid "Save+F" -msgstr "Opslaan.B" - -#: f.menus.cc:284 f.menus.cc:437 fotoxx.h:1008 +#: f.menus.cc:295 f.menus.cc:448 fotoxx.h:1030 msgid "Trash" msgstr "Prullenbak" -#: f.menus.cc:303 f.menus.cc:332 +#: f.menus.cc:314 f.menus.cc:343 msgid "Run as Fotoxx edit function" msgstr "Uitvoeren als Fotoxx bewerkingsfunctie" -#: f.menus.cc:391 +#: f.menus.cc:382 +msgid "Top" +msgstr "Boven" + +#: f.menus.cc:401 +msgid "open another directory" +msgstr "open andere map" + +#: f.menus.cc:402 msgid "go to bookmarked image" msgstr "ga naar afbeelding van bladwijzer" -#: f.menus.cc:392 +#: f.menus.cc:403 msgid "increase thumbnail size" msgstr "vergroten miniaturen" -#: f.menus.cc:393 +#: f.menus.cc:404 msgid "reduce thumbnail size" msgstr "verkleinen miniaturen" -#: f.menus.cc:394 -msgid "jump to first page" -msgstr "spring naar eerste pagina" - -#: f.menus.cc:395 -msgid "jump to last page" -msgstr "spring naar laatste pagina " +#: f.menus.cc:405 +msgid "change sort order" +msgstr "verander sorteer volgorde" + +#: f.menus.cc:406 +msgid "jump to beginning (top)" +msgstr "spring naar begin (boven)" + +#: f.menus.cc:407 +msgid "jump to end (bottom)" +msgstr "spring naar eind (onder)" -#: f.menus.cc:396 +#: f.menus.cc:408 msgid "previous page" msgstr "vorige pagina" -#: f.menus.cc:397 +#: f.menus.cc:409 msgid "next page" msgstr "volgende pagina" -#: f.menus.cc:398 +#: f.menus.cc:410 msgid "previous row" msgstr "vorige rij" -#: f.menus.cc:399 +#: f.menus.cc:411 msgid "next row" msgstr "volgende rij" -#: f.menus.cc:400 -msgid "change sequence" -msgstr "volgorde wijzigen" - -#: f.menus.cc:434 fotoxx.h:996 +#: f.menus.cc:445 fotoxx.h:1017 msgid "Rename" msgstr "Hernoemen" -#: f.menus.cc:435 +#: f.menus.cc:446 msgid "Copy to Location" msgstr "Copieren naar Locatie" -#: f.menus.cc:436 +#: f.menus.cc:447 msgid "Move to Location" msgstr "Verplaatsen naar Locatie" -#: f.menus.cc:438 fotoxx.h:955 +#: f.menus.cc:449 fotoxx.h:975 msgid "Delete" msgstr "Uitsnede verwijderen" -#: f.menus.cc:439 +#: f.menus.cc:450 msgid "Copy to Clipboard" msgstr "Copieer naar Klembord" -#: f.menus.cc:440 +#: f.menus.cc:451 msgid "Remove from Collection" msgstr "Verwijderen uit Collectie" -#: f.menus.cc:441 +#: f.menus.cc:452 msgid "Cut to Image Cache" msgstr "Verplaatsen naar Afbeeldings Cache" -#: f.menus.cc:442 +#: f.menus.cc:453 msgid "Copy to Image Cache" msgstr "Copieer naar Afbeeldings Cache" -#: f.menus.cc:443 +#: f.menus.cc:454 msgid "Paste Image Cache Here (clear)" msgstr "Plakken Afbeeldings Cache Hier (schonen)" -#: f.menus.cc:444 +#: f.menus.cc:455 msgid "Paste Image Cache Here (keep)" msgstr "Plakken Afbeeldings Cache Hier (bewaren)" -#: f.menus.cc:456 +#: f.menus.cc:460 +msgid "Brightness/Color" +msgstr "Helderheid/Kleur instellen" + +#: f.menus.cc:467 msgid "Select Area" msgstr "Uitsnede" -#: f.meta.cc:87 -msgid "Edit Caption and Comments" -msgstr "Bewerk Onderschrift en Commentaar" +#: f.meta.cc:72 +msgid "" +"Metadata index is missing.\n" +"Use Tools > Synchronize Files." +msgstr "" +"Metadata index ontbreekt.\n" +"Gebruik Gereedschap > Synchroniseer Bestanden." + +#: f.meta.cc:106 +#, c-format +msgid "Rating: %c (stars)" +msgstr "Rating: %c (sterren)" + +#: f.meta.cc:142 +msgid "Size:" +msgstr "Grootte:" + +#: f.meta.cc:148 +msgid "Image Width:" +msgstr "Breedte Afbeelding:" + +#: f.meta.cc:151 +msgid "Height:" +msgstr "Hoogte:" + +#: f.meta.cc:154 +msgid "Depth:" +msgstr "Diepte:" + +#: f.meta.cc:159 +msgid "Image Date" +msgstr "Datum Afbeelding" + +#: f.meta.cc:162 +msgid "Time" +msgstr "Tijd" + +#: f.meta.cc:164 +msgid "get prev" +msgstr "vorige verkrijgen" + +#: f.meta.cc:169 +msgid "Choose:" +msgstr "Kiezen:" -#: f.meta.cc:98 +#: f.meta.cc:181 msgid "Caption" msgstr "Onderschrift" -#: f.meta.cc:102 +#: f.meta.cc:187 msgid "Comments" msgstr "Commentaar" -#: f.meta.cc:173 -msgid "image date (yyyymmdd)" -msgstr "datum (jjjjmmdd)" - -#: f.meta.cc:175 -msgid "use last" -msgstr "laatste gebruiken" - -#: f.meta.cc:178 -msgid "image stars" -msgstr "afbeeldings sterren" - -#: f.meta.cc:196 -msgid "current tags" -msgstr "actuele tags" +#: f.meta.cc:193 +msgid "Image Tags" +msgstr "Afbeeldings Tags" -#: f.meta.cc:201 -msgid "recent tags" +#: f.meta.cc:199 +msgid "Recent Tags" msgstr "recente tags" -#: f.meta.cc:206 f.meta.cc:387 f.meta.cc:1404 f.meta.cc:3932 -msgid "defined tags" +#: f.meta.cc:205 f.meta.cc:556 f.meta.cc:1573 f.meta.cc:4111 +msgid "Defined Tags" msgstr "gedefineerde tags" -#: f.meta.cc:373 fotoxx.h:976 +#: f.meta.cc:455 +msgid "date format is YYYY-MM-DD" +msgstr "datum formaat is YYYY-MM-DD" + +#: f.meta.cc:459 +msgid "date is invalid" +msgstr "datum is ongeldig" + +#: f.meta.cc:492 +msgid "time format is HH:MM [:SS]" +msgstr "tijd formaat is HH:MM [:SS]" + +#: f.meta.cc:496 +msgid "time is invalid" +msgstr "tijd is ongeldig" + +#: f.meta.cc:542 fotoxx.h:997 msgid "Manage Tags" msgstr "Tags beheren" -#: f.meta.cc:373 +#: f.meta.cc:542 msgid "orphan tags" -msgstr "" +msgstr "verweesde tags" -#: f.meta.cc:377 +#: f.meta.cc:546 msgid "category" msgstr "categorie" -#: f.meta.cc:380 +#: f.meta.cc:549 msgid "tag" msgstr "tag" -#: f.meta.cc:383 +#: f.meta.cc:552 msgid "create" msgstr "maken" -#: f.meta.cc:384 +#: f.meta.cc:553 msgid "delete" msgstr "verwijder" -#: f.meta.cc:1383 -msgid "Batch Add/Remove Tags" -msgstr "Batchgewijs Toevoegen/Verwijderen Tags" +#: f.meta.cc:1557 f.meta.cc:3116 f.tools.cc:2800 f.tools.cc:3885 +#: f.tools.cc:4101 f.tools.cc:4463 +msgid "0 files selected" +msgstr "geen bestand geselecteerd" -#: f.meta.cc:1394 +#: f.meta.cc:1563 msgid "tags to add" msgstr "tags om toe te voegen" -#: f.meta.cc:1395 +#: f.meta.cc:1564 msgid "tags to remove" msgstr "tags om te verwijderen" -#: f.meta.cc:1476 +#: f.meta.cc:1645 #, c-format msgid "" "%s \n" @@ -2362,29 +2567,37 @@ "%s \n" " te veel tags" -#: f.meta.cc:1590 +#: f.meta.cc:1759 msgid "specify files and tags" msgstr "specificeer bestanden en tags" -#: f.meta.cc:1617 f.meta.cc:3044 f.tools.cc:2819 f.tools.cc:3011 -#: f.tools.cc:3051 f.tools.cc:4001 f.tools.cc:4311 f.tools.cc:4664 +#: f.meta.cc:1786 f.meta.cc:3223 f.tools.cc:2838 f.tools.cc:3030 +#: f.tools.cc:3070 f.tools.cc:4020 f.tools.cc:4330 f.tools.cc:4683 #, c-format msgid "%d files selected" msgstr "%d bestanden geselecteerd" -#: f.meta.cc:1664 +#: f.meta.cc:1833 msgid "View Metadata" msgstr "Bekijken Metadata" -#: f.meta.cc:1822 fotoxx.h:937 +#: f.meta.cc:1901 +msgid "key name" +msgstr "" + +#: f.meta.cc:1903 +msgid "key value" +msgstr "" + +#: f.meta.cc:1991 fotoxx.h:956 msgid "All" msgstr "Alles" -#: f.meta.cc:1823 +#: f.meta.cc:1992 msgid "One Key:" msgstr "Een Sleutel:" -#: f.meta.cc:1954 +#: f.meta.cc:2123 #, c-format msgid "" "Download geotags data (8 megabytes). \n" @@ -2395,36 +2608,52 @@ "Opslaan in %s \n" "Doorgaan?" -#: f.meta.cc:1990 +#: f.meta.cc:2159 msgid "download failed" msgstr "download mislukt" -#: f.meta.cc:2025 +#: f.meta.cc:2192 fotoxx-13.09.cc:855 +msgid "Location from World Map" +msgstr "Locatie van Wereldkaart" + +#: f.meta.cc:2194 +msgid "Loading world map" +msgstr "Laden wereldkaart" + +#: f.meta.cc:2201 msgid "please download geolocations data" msgstr "download geolocatie gegevens" -#: f.meta.cc:2138 +#: f.meta.cc:2209 +msgid "Loading geolocations" +msgstr "Laden geolocaties" + +#: f.meta.cc:2327 msgid "geotags file must be downloaded" msgstr "geotags bestand moet worden gedownload" -#: f.meta.cc:2432 f.meta.cc:2889 f.meta.cc:3152 +#: f.meta.cc:2611 f.meta.cc:3068 f.meta.cc:3331 #, c-format msgid "bad latitude/longitude: %s %s" msgstr "verkeerde breedtegraad/lengtegraad: %s %s" -#: f.meta.cc:2731 f.meta.cc:2939 f.meta.cc:4432 +#: f.meta.cc:2893 +msgid "Geocoding web service courtesy of" +msgstr "" + +#: f.meta.cc:2910 f.meta.cc:3118 f.meta.cc:4611 msgid "city" msgstr "stad" -#: f.meta.cc:2734 f.meta.cc:2942 f.meta.cc:4435 +#: f.meta.cc:2913 f.meta.cc:3121 f.meta.cc:4614 msgid "country" msgstr "land" -#: f.meta.cc:2802 f.meta.cc:3065 +#: f.meta.cc:2981 f.meta.cc:3244 msgid "city not found" msgstr "stad niet gevonden" -#: f.meta.cc:3130 +#: f.meta.cc:3309 msgid "" "data is incomplete \n" " proceed?" @@ -2432,156 +2661,164 @@ "gegevens zijn onvolledig \n" " doorgaan?" -#: f.meta.cc:3156 +#: f.meta.cc:3335 msgid "no files selected" msgstr "geen bestanden geselecteerd" -#: f.meta.cc:3188 +#: f.meta.cc:3367 msgid "choose city" msgstr "kies stad" -#: f.meta.cc:3272 +#: f.meta.cc:3451 msgid "not found" msgstr "niet gevonden" -#: f.meta.cc:3273 +#: f.meta.cc:3452 msgid "city and country required" msgstr "stad en land verplicht" -#: f.meta.cc:3365 +#: f.meta.cc:3544 msgid "Report Geotag Groups" msgstr "Rapport Geotag Groepen" -#: f.meta.cc:3366 +#: f.meta.cc:3545 msgid "Group by country" msgstr "Groepeer per land" -#: f.meta.cc:3367 +#: f.meta.cc:3546 msgid "Group by country/city" msgstr "Groepeer per land/stad" -#: f.meta.cc:3368 +#: f.meta.cc:3547 msgid "Group by country/city/date" msgstr "Groepeer per land/stad/datum" -#: f.meta.cc:3371 +#: f.meta.cc:3550 msgid "Combine within" msgstr "Combineer binnen" -#: f.meta.cc:3373 +#: f.meta.cc:3552 msgid "days" msgstr "dagen" -#: f.meta.cc:3715 +#: f.meta.cc:3667 +msgid "geotag groups" +msgstr "" + +#: f.meta.cc:3894 msgid "search range (km)" msgstr "zoekbereik (km)" -#: f.meta.cc:3786 +#: f.meta.cc:3965 msgid "No matching images found" msgstr "Geen matchende afbeeldingen gevonden" -#: f.meta.cc:3872 +#: f.meta.cc:4051 msgid "Search Image Metadata" msgstr "Doorzoeken Afbeelding Metadata" -#: f.meta.cc:3876 +#: f.meta.cc:4055 msgid "images to search:" -msgstr "" +msgstr "te zoeken afbeeldingen:" -#: f.meta.cc:3877 +#: f.meta.cc:4056 msgid "all" -msgstr "" +msgstr "alles" -#: f.meta.cc:3878 +#: f.meta.cc:4057 msgid "current set only" -msgstr "" +msgstr "alleen huidige verzameling " -#: f.meta.cc:3881 +#: f.meta.cc:4060 msgid "matching images:" -msgstr "" +msgstr "matchende afbeeldingen:" -#: f.meta.cc:3882 +#: f.meta.cc:4061 msgid "new set" -msgstr "" +msgstr "nieuwe verzameling" -#: f.meta.cc:3883 +#: f.meta.cc:4062 msgid "add to set" -msgstr "" +msgstr "toevoegen aan verzameling" -#: f.meta.cc:3884 +#: f.meta.cc:4063 msgid "remove" -msgstr "" +msgstr "verwijderen" -#: f.meta.cc:3890 +#: f.meta.cc:4069 msgid "date range" msgstr "datum van/tot" -#: f.meta.cc:3891 +#: f.meta.cc:4070 msgid "stars range" msgstr "sterren van/tot" -#: f.meta.cc:3892 +#: f.meta.cc:4071 msgid "search tags" msgstr "doorzoeken tags" -#: f.meta.cc:3893 +#: f.meta.cc:4072 msgid "search text" msgstr "doorzoeken tekst" -#: f.meta.cc:3894 +#: f.meta.cc:4073 msgid "search files" msgstr "doorzoeken bestanden" -#: f.meta.cc:3899 +#: f.meta.cc:4078 msgid "(yyyymmdd)" msgstr "(jjjjmmmdd)" -#: f.meta.cc:3905 +#: f.meta.cc:4084 msgid "all/any" msgstr "alle/enkele" -#: f.meta.cc:3924 +#: f.meta.cc:4103 msgid "other criteria" msgstr "andere criteria" -#: f.meta.cc:3928 +#: f.meta.cc:4107 msgid "other" msgstr "ander" -#: f.meta.cc:4059 +#: f.meta.cc:4238 msgid "" "to remove images from current set, \n" "search current set" msgstr "" +"doorzoek huidige verzameling om afbeeldingen \n" +"te verwijderen uit huidige verzameling " -#: f.meta.cc:4066 +#: f.meta.cc:4245 msgid "" "to add images to current set, \n" "search all images" msgstr "" +"doorzoek alle afbeeldingen om afbeeldingen \n" +"toe te voegen aan huidige verzameling " -#: f.meta.cc:4293 +#: f.meta.cc:4472 #, c-format msgid "images added: %d removed: %d new count: %d" -msgstr "" +msgstr "afbeeldingen toegevoegd: %d verwijderd: %d nieuwe telling: %d" -#: f.meta.cc:4296 +#: f.meta.cc:4475 msgid "no changes made" -msgstr "" +msgstr "geen veranderingen gemaakt" -#: f.meta.cc:4429 +#: f.meta.cc:4608 msgid "Add Geotags Search Criteria" msgstr "Toevoegen Geotags Zoek Criteria" -#: f.meta.cc:4448 +#: f.meta.cc:4627 msgid "range (km)" msgstr "bereik (km)" -#: f.meta.cc:4539 +#: f.meta.cc:4718 msgid "error in latitude/longitude/range" msgstr "fout in breedtegraad/lengtegraad/bereik" -#: f.meta.cc:4604 +#: f.meta.cc:4783 msgid "" "These items are always reported: \n" "date, stars, tags, caption, comment" @@ -2589,15 +2826,15 @@ "Deze items worden altijd gerapporteerd: \n" "datum, sterren, tags, onderschrift, commentaar" -#: f.meta.cc:4628 +#: f.meta.cc:4807 msgid "Additional Items for Report" msgstr "Toegevoegde Items voor Rapport" -#: f.meta.cc:4634 +#: f.meta.cc:4813 msgid "Keyword" msgstr "Sleutelwoord" -#: f.meta.cc:4641 +#: f.meta.cc:4820 msgid "Match Criteria" msgstr "Match Criteria" @@ -2646,7 +2883,7 @@ "2. Druk [verwijderen]. \n" "3. Herhaal met nieuwe uitsnede. " -#: f.repair.cc:1541 fotoxx.h:990 +#: f.repair.cc:1541 fotoxx.h:1011 msgid "Radius" msgstr "straal" @@ -2743,38 +2980,30 @@ msgid "Chromatic Abberation" msgstr "Chromatische Aberratie" -#: f.repair.cc:3896 +#: f.repair.cc:3900 msgid "pixel group" msgstr "pixel groep" -#: f.repair.cc:3897 +#: f.repair.cc:3901 msgid "circle color" msgstr "cirkel kleur" -#: f.repair.cc:4006 +#: f.repair.cc:3913 f.repair.cc:3957 +msgid "stuck pixels:" +msgstr "defecte pixels:" + +#: f.repair.cc:4023 msgid "Load Stuck Pixels" msgstr "Laden Defecte Pixels" -#: f.repair.cc:4030 f.repair.cc:4126 +#: f.repair.cc:4047 f.repair.cc:4113 msgid "Stuck Pixels file" msgstr "Defecte Pixels bestand" -#: f.repair.cc:4070 +#: f.repair.cc:4087 msgid "file format error" msgstr "fout in bestandsformaat" -#: f.repair.cc:4098 -msgid "there are zero stuck pixels" -msgstr "er zijn geen defecte pixels" - -#: f.repair.cc:4102 -msgid "Save Stuck Pixels" -msgstr "Opslaan Defecte Pixels" - -#: f.retouch.cc:211 -msgid "Adjust Brightness and Color" -msgstr "Instellen helderheid en kleur" - #: f.retouch.cc:267 msgid "small-steps" msgstr "kleine-stappen" @@ -2827,15 +3056,15 @@ msgid "bright pixels" msgstr "lichte pixels" -#: f.retouch.cc:1983 +#: f.retouch.cc:1980 msgid "Ramp brightness across image" msgstr "Helderheidsverspreiding horizontaal/verticaal" -#: f.retouch.cc:2363 f.retouch.cc:2600 f.tools.cc:5242 +#: f.retouch.cc:2360 f.retouch.cc:2597 f.tools.cc:5261 msgid "Edit function must be active" msgstr "Bewerkingsfunctie moet actief zijn" -#: f.retouch.cc:2371 fotoxx-13.08.cc:2867 +#: f.retouch.cc:2368 fotoxx-13.09.cc:2905 msgid "" "Select area cannot be kept.\n" "Continue?" @@ -2843,23 +3072,23 @@ "Uitsnede kan niet bewaard worden.\n" "Doorgaan?" -#: f.retouch.cc:2400 +#: f.retouch.cc:2397 msgid "power: center" msgstr "kracht: centrum" -#: f.retouch.cc:2405 +#: f.retouch.cc:2402 msgid "reset area" msgstr "reset uitsnede" -#: f.retouch.cc:2593 +#: f.retouch.cc:2590 msgid "Edit Function Amplifier" msgstr "Versterker functie wijzigen" -#: f.retouch.cc:2629 +#: f.retouch.cc:2626 msgid "minimum" msgstr "minimum" -#: f.retouch.cc:2631 +#: f.retouch.cc:2628 msgid "maximum" msgstr "maximum" @@ -2976,441 +3205,451 @@ msgid "create missing and update stale thumbnails" msgstr "Verkeerde miniaturen herstellen en verouderde acualiseren" -#: f.tools.cc:542 +#: f.tools.cc:548 #, c-format msgid "%d thumbnails created, %d errors \n" msgstr "%d miniaturen gemaakt, %d fouten \n" -#: f.tools.cc:553 +#: f.tools.cc:559 msgid "no search index file is in use" msgstr "zoek-index bestand niet in gebruik" -#: f.tools.cc:554 f.tools.cc:561 f.tools.cc:897 +#: f.tools.cc:560 f.tools.cc:567 f.tools.cc:910 msgid "COMPLETED" msgstr "VOLTOOID" -#: f.tools.cc:566 +#: f.tools.cc:572 msgid "rebuild search index" msgstr "opnieuw zoek-index opbouwen " -#: f.tools.cc:585 +#: f.tools.cc:591 #, c-format msgid "%d current index records found \n" msgstr "%d actuele index records gevonden \n" -#: f.tools.cc:589 +#: f.tools.cc:595 msgid "find all image files and build index records" msgstr "zoek alle afbeeldingen en opbouwen index records" -#: f.tools.cc:615 +#: f.tools.cc:621 msgid "too many image files" msgstr "te veel afbeeldingsbestanden" -#: f.tools.cc:642 +#: f.tools.cc:648 #, c-format msgid "found %d image files \n" msgstr "gevonden %d afbeeldingsbestanden \n" -#: f.tools.cc:647 +#: f.tools.cc:653 msgid "merging old and new index records" msgstr "samenvoegen oude en nieuwe index records" -#: f.tools.cc:697 +#: f.tools.cc:703 #, c-format msgid "files found in current index recs: %d \n" msgstr "bestanden gevonden in actuele index recs: %d \n" -#: f.tools.cc:715 +#: f.tools.cc:721 msgid "updating index records" msgstr "bijwerken index records" -#: f.tools.cc:889 +#: f.tools.cc:902 #, c-format msgid "%d image files updated \n" msgstr "%d afbeeldingsbestanden bijgewerkt \n" -#: f.tools.cc:909 +#: f.tools.cc:922 msgid "KILLED" msgstr "KILLED" -#: f.tools.cc:1047 +#: f.tools.cc:1060 msgid "Settings" msgstr "Instellingen" -#: f.tools.cc:1050 +#: f.tools.cc:1063 msgid "Startup Display" msgstr "Tonen bij Opstart" -#: f.tools.cc:1072 +#: f.tools.cc:1085 msgid "Recent Files Gallery" msgstr "Laatst bekeken galerie" -#: f.tools.cc:1073 +#: f.tools.cc:1086 msgid "Newest Files Gallery" msgstr "Nieuwste Bestanden Galerie" -#: f.tools.cc:1074 +#: f.tools.cc:1087 msgid "Previous Image Viewed" msgstr "Laatst bekeken afbeelding" -#: f.tools.cc:1075 +#: f.tools.cc:1088 msgid "Blank Window" msgstr "Leeg Venster" -#: f.tools.cc:1076 +#: f.tools.cc:1089 msgid "Directory Gallery" msgstr "Galerie-map" -#: f.tools.cc:1077 +#: f.tools.cc:1090 msgid "Image File" msgstr "Afbeeldingsbestand" -#: f.tools.cc:1093 +#: f.tools.cc:1106 msgid "Menu Style" msgstr "Menu Stijl" -#: f.tools.cc:1095 +#: f.tools.cc:1108 msgid "Classic" msgstr "Klassiek" -#: f.tools.cc:1096 +#: f.tools.cc:1109 msgid "Vertical" msgstr "Verticaal" -#: f.tools.cc:1098 +#: f.tools.cc:1111 msgid "Toolbar Style" msgstr "Toolbar stijl" -#: f.tools.cc:1101 +#: f.tools.cc:1114 msgid "Icons" msgstr "Pictogrammen" -#: f.tools.cc:1102 +#: f.tools.cc:1115 msgid "Both" msgstr "Beide" -#: f.tools.cc:1104 +#: f.tools.cc:1117 msgid "Image Pan" msgstr "Afbeelding Pan" -#: f.tools.cc:1106 +#: f.tools.cc:1119 msgid "Drag" msgstr "Slepen" -#: f.tools.cc:1107 +#: f.tools.cc:1120 msgid "Scroll" msgstr "Scroll" -#: f.tools.cc:1108 +#: f.tools.cc:1121 msgid "Magnified" msgstr "Vergroot" -#: f.tools.cc:1111 +#: f.tools.cc:1124 msgid "Warn Overwrite Original" msgstr "Waarschuwing Overschrijven Origineel" -#: f.tools.cc:1114 +#: f.tools.cc:1127 msgid "Default JPEG quality" +msgstr "Default JPEG kwaliteit" + +#: f.tools.cc:1131 +msgid "Zooms for 200%" msgstr "" -#: f.tools.cc:1261 +#: f.tools.cc:1142 +msgid "RAW command" +msgstr "RAW opdracht" + +#: f.tools.cc:1145 +msgid "RAW file types" +msgstr "RAW bestandstype" + +#: f.tools.cc:1274 msgid "startup directory is invalid" msgstr "opstart map is ongeldig" -#: f.tools.cc:1269 +#: f.tools.cc:1282 msgid "startup file is invalid" msgstr "opstart bestand is ongeldig" -#: f.tools.cc:1368 +#: f.tools.cc:1381 msgid "Select startup directory" msgstr "Kies opstart map" -#: f.tools.cc:1376 +#: f.tools.cc:1389 msgid "Select startup image file" msgstr "Kies opstart afbeeldingsbestand" -#: f.tools.cc:1414 +#: f.tools.cc:1427 msgid "Click list position. Click thumbnail to add." msgstr "Klik regel in lijst. Om toe te voegen klik miniatuur." -#: f.tools.cc:1439 f.tools.cc:1654 +#: f.tools.cc:1452 f.tools.cc:1667 msgid "Edit Bookmarks" msgstr "Bewerken bladwijzers" -#: f.tools.cc:1585 +#: f.tools.cc:1598 msgid "unable to save bookmarks file" msgstr "kan bladwijzer bestand niet bewaren" -#: f.tools.cc:1654 +#: f.tools.cc:1667 msgid "Go To Bookmark" msgstr "Ga Naar Bladwijzer" -#: f.tools.cc:1800 +#: f.tools.cc:1811 msgid "Edit KB Shortcuts" msgstr "Bewerk KB Shortcuts" -#: f.tools.cc:1805 +#: f.tools.cc:1816 msgid "shortcut key:" msgstr "shortcut toets:" -#: f.tools.cc:1806 +#: f.tools.cc:1817 msgid "(enter keys)" msgstr "(geef toetsen)" -#: f.tools.cc:1932 +#: f.tools.cc:1943 #, c-format msgid "\"%s\" Reserved, cannot be used" msgstr "\"%s\" Gereserveerd, kan niet gebruikt worden" -#: f.tools.cc:2084 +#: f.tools.cc:2095 msgid "unable to save KB-shortcuts file" msgstr "kan KB-shortcuts bestand niet bewaren" -#: f.tools.cc:2154 +#: f.tools.cc:2165 msgid "" "Right-click collection thumbnails to \n" "cut/copy to cache, paste cache, remove." msgstr "" +"Rechterklik verzameling miniaturen voor \n" +"verplaatsen/copieren naar cache, plakken cache, verwijderen." -#: f.tools.cc:2190 +#: f.tools.cc:2201 msgid "Start a new collection" msgstr "Nieuwe collectie beginnen" -#: f.tools.cc:2192 +#: f.tools.cc:2203 msgid "Collection to view or edit" msgstr "Collectie om te bekijken of te bewerken" -#: f.tools.cc:2194 +#: f.tools.cc:2205 msgid "Select images, add to cache" msgstr "Selecteer afbeeldingen, aan cache toevoegen" -#: f.tools.cc:2196 +#: f.tools.cc:2207 msgid "Clear image cache" -msgstr "" +msgstr "Schonen afbeeldings cache" -#: f.tools.cc:2198 +#: f.tools.cc:2209 msgid "Delete a collection" msgstr "Een collectie verwijderen" -#: f.tools.cc:2221 +#: f.tools.cc:2232 msgid "New Collection" msgstr "Nieuwe Collectie" -#: f.tools.cc:2222 +#: f.tools.cc:2233 msgid "Choose Collection" msgstr "Kies Collectie" -#: f.tools.cc:2223 +#: f.tools.cc:2234 msgid "Delete Collection" msgstr "Collectie verwijderen" -#: f.tools.cc:2293 +#: f.tools.cc:2304 #, c-format msgid "delete %s ?" msgstr "verwijder %s ?" -#: f.tools.cc:2606 +#: f.tools.cc:2625 msgid "Move collection" msgstr "Verplaats Afbeeldingen" -#: f.tools.cc:2609 +#: f.tools.cc:2628 msgid "collection name" msgstr "naam collectie" -#: f.tools.cc:2612 +#: f.tools.cc:2631 msgid "old top directory" msgstr "bovenste map oud" -#: f.tools.cc:2615 +#: f.tools.cc:2634 msgid "new top directory" msgstr "bovenste map nieuw" -#: f.tools.cc:2662 +#: f.tools.cc:2681 msgid "completed" msgstr "Klaar" -#: f.tools.cc:2752 +#: f.tools.cc:2771 msgid "Press ESC to exit slide show" msgstr "Druk ESC om diashow te stoppen" -#: f.tools.cc:2753 +#: f.tools.cc:2772 msgid "latest versions only" msgstr "alleen laatste versies" -#: f.tools.cc:2754 +#: f.tools.cc:2773 msgid "continuous loop" msgstr "doorlopende loop" -#: f.tools.cc:2755 +#: f.tools.cc:2774 msgid "start with current image" -msgstr "" +msgstr "begin met huidige afbeelding" -#: f.tools.cc:2759 +#: f.tools.cc:2778 msgid "arrow keys" msgstr "pijltjes toetsen" -#: f.tools.cc:2760 +#: f.tools.cc:2779 msgid "instant" msgstr "moment" -#: f.tools.cc:2761 +#: f.tools.cc:2780 msgid "fade-in" msgstr "fade-in" -#: f.tools.cc:2762 +#: f.tools.cc:2781 msgid "roll-right" msgstr "rol-rechts" -#: f.tools.cc:2763 +#: f.tools.cc:2782 msgid "roll-down" msgstr "rol-neer" -#: f.tools.cc:2764 +#: f.tools.cc:2783 msgid "shift-left" msgstr "shift-links" -#: f.tools.cc:2765 +#: f.tools.cc:2784 msgid "venetian" msgstr "venetiaan" -#: f.tools.cc:2766 +#: f.tools.cc:2785 msgid "grate" msgstr "tralie" -#: f.tools.cc:2767 +#: f.tools.cc:2786 msgid "rectangle" msgstr "rechthoek" -#: f.tools.cc:2768 +#: f.tools.cc:2787 msgid "radar" msgstr "radar" -#: f.tools.cc:2769 +#: f.tools.cc:2788 msgid "jaws" msgstr "kaken" -#: f.tools.cc:2770 +#: f.tools.cc:2789 msgid "ellipse" msgstr "ellips" -#: f.tools.cc:2771 +#: f.tools.cc:2790 msgid "raindrops" msgstr "regendruppels" -#: f.tools.cc:2781 f.tools.cc:3866 f.tools.cc:4444 -msgid "0 files selected" -msgstr "geen bestand geselecteerd" - -#: f.tools.cc:2783 +#: f.tools.cc:2802 msgid "collection:" msgstr "collectie:" -#: f.tools.cc:2793 +#: f.tools.cc:2812 msgid "music file" msgstr "muziek bestand" -#: f.tools.cc:2801 +#: f.tools.cc:2820 msgid "transitions" msgstr "overgangen" -#: f.tools.cc:2803 +#: f.tools.cc:2822 msgid "seconds" msgstr "seconden" -#: f.tools.cc:2854 f.tools.cc:3038 f.tools.cc:3060 +#: f.tools.cc:2873 f.tools.cc:3057 f.tools.cc:3079 msgid "no image files selected" msgstr "geen afbeeldingsbestanden geselecteerd" -#: f.tools.cc:3019 +#: f.tools.cc:3038 msgid "open collection" msgstr "open collectie" -#: f.tools.cc:3064 +#: f.tools.cc:3083 msgid "save as collection" msgstr "opslaan als collectie" -#: f.tools.cc:3077 +#: f.tools.cc:3096 msgid "Select music file or playlist" msgstr "Selecteer muziekbestand of speellijst" -#: f.tools.cc:3868 +#: f.tools.cc:3887 msgid "new base name" msgstr "nieuwe basisnaam" -#: f.tools.cc:3871 +#: f.tools.cc:3890 msgid "starting sequence" msgstr "start volgnummer" -#: f.tools.cc:3873 +#: f.tools.cc:3892 msgid "increment" msgstr "toename" -#: f.tools.cc:3927 +#: f.tools.cc:3946 msgid "new file already exists:" msgstr "nieuw bestand bestaat reeds:" -#: f.tools.cc:3937 +#: f.tools.cc:3956 msgid "Rename failed:" msgstr "Hernoemen mislukt:" -#: f.tools.cc:3982 +#: f.tools.cc:4001 msgid "base name / sequence / increment not reasonable" msgstr "basisnaam / volgorde / toename niet zinvol" -#: f.tools.cc:4085 +#: f.tools.cc:4104 msgid "max. width" msgstr "max. breedte" -#: f.tools.cc:4090 +#: f.tools.cc:4109 msgid "no change" msgstr "geen verandering" -#: f.tools.cc:4093 +#: f.tools.cc:4112 msgid "new file type" msgstr "nieuw bestandstype" -#: f.tools.cc:4094 +#: f.tools.cc:4113 msgid "same" msgstr "zelfde" -#: f.tools.cc:4102 +#: f.tools.cc:4121 msgid "replace originals" msgstr "vervangen originelen" -#: f.tools.cc:4103 +#: f.tools.cc:4122 msgid "move to location" msgstr "verplaatsen naar locatie" -#: f.tools.cc:4104 +#: f.tools.cc:4123 msgid "remove EXIF" msgstr "verwijder EXIF" -#: f.tools.cc:4105 +#: f.tools.cc:4124 msgid "delete originals" msgstr "verwijder originelen" -#: f.tools.cc:4180 +#: f.tools.cc:4199 msgid "file already exists" msgstr "bestand bestaat reeds" -#: f.tools.cc:4188 +#: f.tools.cc:4207 msgid "file type not supported" msgstr "bestandstype niet ondersteund" -#: f.tools.cc:4227 +#: f.tools.cc:4246 msgid "cannot create new file" msgstr "kan nieuw bestand niet aanmaken" -#: f.tools.cc:4351 +#: f.tools.cc:4370 msgid "replace original files?" msgstr "vervangen originele bestanden?" -#: f.tools.cc:4352 +#: f.tools.cc:4371 #, c-format msgid "replace original files? (max. %d x %d)" msgstr "vervangen originele bestanden? (max. %d x %d)" -#: f.tools.cc:4360 +#: f.tools.cc:4379 #, c-format msgid "" "copy files? \n" @@ -3419,7 +3658,7 @@ "coieer bestanden? \n" " naar locatie %s" -#: f.tools.cc:4363 +#: f.tools.cc:4382 #, c-format msgid "" "copy files? (max. %d x %d) \n" @@ -3428,7 +3667,7 @@ "copieer bestanden? (max. %d x %d) \n" " naar locatie %s" -#: f.tools.cc:4367 +#: f.tools.cc:4386 msgid "" "\n" " and delete originals" @@ -3436,80 +3675,88 @@ "\n" " en verwijder originelen" -#: f.tools.cc:4380 +#: f.tools.cc:4399 msgid "location is not a valid directory" msgstr "locatie is niet een geldige map" -#: f.tools.cc:4387 +#: f.tools.cc:4406 #, c-format msgid "max. size %d x %d is not reasonable" msgstr "max. grootte %d x %d is niet logisch" -#: f.tools.cc:4447 +#: f.tools.cc:4466 msgid "output file type" msgstr "output bestandstype" -#: f.tools.cc:4459 +#: f.tools.cc:4478 msgid "white balance" msgstr "witbalans" -#: f.tools.cc:4460 +#: f.tools.cc:4479 msgid "interpolation" msgstr "interpolatie" -#: f.tools.cc:4461 +#: f.tools.cc:4480 msgid "color space" msgstr "kleurruimte" -#: f.tools.cc:4462 +#: f.tools.cc:4481 msgid "gamma curve" msgstr "gamma curve" -#: f.tools.cc:4465 +#: f.tools.cc:4484 msgid "camera" msgstr "camera" -#: f.tools.cc:4466 +#: f.tools.cc:4485 msgid "fixed" msgstr "vast" -#: f.tools.cc:4467 +#: f.tools.cc:4486 msgid "calculated" msgstr "berekend" -#: f.tools.cc:4999 +#: f.tools.cc:4503 +msgid "default" +msgstr "default" + +#: f.tools.cc:4509 +msgid "defaults" +msgstr "defaults" + +#: f.tools.cc:5018 msgid "x-spacing" msgstr "x-afstand" -#: f.tools.cc:5000 +#: f.tools.cc:5019 msgid "x-count" msgstr "x-aantal" -#: f.tools.cc:5001 +#: f.tools.cc:5020 msgid "x-enable" msgstr "x-activeren" -#: f.tools.cc:5007 +#: f.tools.cc:5026 msgid "y-spacing" msgstr "y-afstand" -#: f.tools.cc:5008 +#: f.tools.cc:5027 msgid "y-count" msgstr "y-aantal" -#: f.tools.cc:5009 +#: f.tools.cc:5028 msgid "y-enable" msgstr "y-activeren" -#: f.tools.cc:5016 +#: f.tools.cc:5035 msgid "x-offset" msgstr "x-verschuiving" -#: f.tools.cc:5020 +#: f.tools.cc:5039 msgid "y-offset" msgstr "y-verschuiving" -#: f.tools.cc:5444 +#: f.tools.cc:5463 msgid "" "Brightness should show a gradual ramp \n" "extending all the way to the edges." @@ -3517,19 +3764,31 @@ "Helderheid moet een geleidelijke verandering laten \n" "zien, zich geheel uitstrekkend naar de randen." -#: f.tools.cc:5549 +#: f.tools.cc:5568 msgid "Available Translations" msgstr "Beschikbare vertalingen" -#: f.tools.cc:5553 +#: f.tools.cc:5572 msgid "Set Language" msgstr "Instellen taal" -#: f.tools.cc:5653 +#: f.tools.cc:5672 msgid "Make Launcher" msgstr "Maak Starter" -#: fotoxx-13.08.cc:330 +#: fotoxx-13.09.cc:201 +msgid "Tab F: image file view/edit" +msgstr "Tab F: afbeeldingsbestand bekijken/bewerken" + +#: fotoxx-13.09.cc:208 +msgid "Tab G: image gallery" +msgstr "Tab G: afbeeldings galerie" + +#: fotoxx-13.09.cc:215 +msgid "Tab W: world map" +msgstr "Tab W: wereldkaart" + +#: fotoxx-13.09.cc:339 msgid "" "First time Fotoxx startup. \n" "Latest version: http://www.kornelix.com/fotoxx \n" @@ -3539,43 +3798,69 @@ "Laatste versie: http://www.kornelix.com/fotoxx \n" "Bestands sync proces zal starten (kan even duren) \n" -#: fotoxx-13.08.cc:363 +#: fotoxx-13.09.cc:372 msgid "Please install missing programs:" msgstr "Ontbrekende programma's installeren" -#: fotoxx-13.08.cc:816 -msgid "Location from World Map" -msgstr "Locatie van Wereldkaart" +#: fotoxx-13.09.cc:686 +#, c-format +msgid " BUSY %d%c " +msgstr "" + +#: fotoxx-13.09.cc:688 +msgid " BUSY " +msgstr "" + +#: fotoxx-13.09.cc:745 +msgid " (reduced)" +msgstr "" + +#: fotoxx-13.09.cc:753 +#, c-format +msgid " edits: %d" +msgstr "" -#: fotoxx-13.08.cc:2500 +#: fotoxx-13.09.cc:758 +msgid " menu locked" +msgstr "" + +#: fotoxx-13.09.cc:759 +msgid " area active" +msgstr "" + +#: fotoxx-13.09.cc:760 +msgid " dialog open" +msgstr "" + +#: fotoxx-13.09.cc:2538 msgid "Exceed 50 anchor points" msgstr "50 ankerpunten overschreden" -#: fotoxx-13.08.cc:2681 +#: fotoxx-13.09.cc:2719 msgid "load curve from a file" msgstr "laad curve vanuit bestand" -#: fotoxx-13.08.cc:2735 +#: fotoxx-13.09.cc:2773 msgid "curve file is invalid" msgstr "curve bestand is ongeldig" -#: fotoxx-13.08.cc:2740 +#: fotoxx-13.09.cc:2778 msgid "curve file has different no. of curves" msgstr "curve bestand heeft verschillend aantal curves" -#: fotoxx-13.08.cc:2755 +#: fotoxx-13.09.cc:2793 msgid "save curve to a file" msgstr "bewaar curve in een bestand" -#: fotoxx-13.08.cc:2853 fotoxx-13.08.cc:3380 fotoxx-13.08.cc:3395 +#: fotoxx-13.09.cc:2891 fotoxx-13.09.cc:3417 fotoxx-13.09.cc:3432 msgid "prior function still active" msgstr "vorige functie nog actief" -#: fotoxx-13.08.cc:2860 +#: fotoxx-13.09.cc:2898 msgid "Too many edits, please save image" msgstr "Te veel aanpassingen, graag afbeelding opslaan" -#: fotoxx-13.08.cc:2875 +#: fotoxx-13.09.cc:2913 msgid "" "Select area not active.\n" "Continue?" @@ -3583,23 +3868,23 @@ "Uitsnede niet actief.\n" "Doorgaan?" -#: fotoxx-13.08.cc:3350 +#: fotoxx-13.09.cc:3387 msgid "Discard edits?" msgstr "Weggooien wijzigingen?" -#: fotoxx-13.08.cc:3351 +#: fotoxx-13.09.cc:3388 msgid "This action will discard changes\n" msgstr "Deze bewerking zal veranderingen weggooien\n" -#: fotoxx-13.08.cc:3352 fotoxx.h:973 +#: fotoxx-13.09.cc:3389 fotoxx.h:994 msgid "Keep" msgstr "Handhaven" -#: fotoxx-13.08.cc:3353 +#: fotoxx-13.09.cc:3390 msgid "Discard" msgstr "Weggooien" -#: fotoxx-13.08.cc:4054 +#: fotoxx-13.09.cc:4088 #, c-format msgid "" "warning: real memory %d MB < required %d MB \n" @@ -3608,212 +3893,224 @@ "waarschuwing: werkelijk geheugen %d MB < vereiste %d MB \n" "responsetijd kan erg groot worden \n" -#: fotoxx.h:936 +#: fotoxx.h:955 msgid "Add All" msgstr "Alles toevoegen" -#: fotoxx.h:938 +#: fotoxx.h:957 msgid "Amount" msgstr "waarde" -#: fotoxx.h:939 +#: fotoxx.h:958 +msgid "Angle" +msgstr "Hoek" + +#: fotoxx.h:959 msgid "Apply" msgstr "Toepassen" -#: fotoxx.h:940 +#: fotoxx.h:960 msgid "Autocomplete" msgstr "Auto-gereedmaken" -#: fotoxx.h:941 +#: fotoxx.h:961 msgid "Black" msgstr "Zwart" -#: fotoxx.h:942 +#: fotoxx.h:962 msgid "Blend Width" msgstr "Meng breedte" -#: fotoxx.h:944 +#: fotoxx.h:964 msgid "Brightness" msgstr "helderheid" -#: fotoxx.h:945 +#: fotoxx.h:965 msgid "Browse" msgstr "Zoeken" -#: fotoxx.h:946 +#: fotoxx.h:966 msgid "Cancel" msgstr "Annuleren" -#: fotoxx.h:947 +#: fotoxx.h:967 msgid "Choose" msgstr "Kies" -#: fotoxx.h:948 +#: fotoxx.h:968 msgid "Clear" msgstr "Herstellen" -#: fotoxx.h:950 +#: fotoxx.h:970 msgid "Contrast" msgstr "Contrast" -#: fotoxx.h:952 +#: fotoxx.h:972 msgid "Curve File:" msgstr "Curve bestand:" -#: fotoxx.h:953 +#: fotoxx.h:973 msgid "Cut" msgstr "Knippen" -#: fotoxx.h:954 +#: fotoxx.h:974 msgid "Darker Areas" msgstr "Donkere delen" -#: fotoxx.h:957 +#: fotoxx.h:977 msgid "Done" msgstr "Klaar" -#: fotoxx.h:958 +#: fotoxx.h:978 msgid "Edit" msgstr "Bewerken" -#: fotoxx.h:960 +#: fotoxx.h:980 msgid "Erase" msgstr "Verwijderen" -#: fotoxx.h:961 +#: fotoxx.h:981 msgid "Fetch" msgstr "Ophalen" -#: fotoxx.h:962 +#: fotoxx.h:982 msgid "Find" msgstr "Zoeken" -#: fotoxx.h:963 +#: fotoxx.h:983 msgid "Finish" msgstr "Gereed" -#: fotoxx.h:964 +#: fotoxx.h:984 msgid "Font" msgstr "Font" -#: fotoxx.h:966 +#: fotoxx.h:985 +msgid "Geotags" +msgstr "Geotags" + +#: fotoxx.h:987 msgid "Height" msgstr "hoogte" -#: fotoxx.h:968 +#: fotoxx.h:989 msgid "histogram" msgstr "histogram" -#: fotoxx.h:970 +#: fotoxx.h:991 msgid "Images" msgstr "Afbeeldingen" -#: fotoxx.h:971 +#: fotoxx.h:992 msgid "Insert" msgstr "Invoegen" -#: fotoxx.h:974 +#: fotoxx.h:995 msgid "Lighter Areas" msgstr "Lichtere delen" -#: fotoxx.h:975 +#: fotoxx.h:996 msgid "limit" msgstr "limiet" -#: fotoxx.h:977 +#: fotoxx.h:998 msgid "Negative" -msgstr "" +msgstr "Negatief" -#: fotoxx.h:978 +#: fotoxx.h:999 msgid "New" msgstr "Nieuw" -#: fotoxx.h:980 +#: fotoxx.h:1001 msgid "search index file missing" msgstr "zoek-index bestand ontbreekt" -#: fotoxx.h:981 +#: fotoxx.h:1002 msgid "OK" msgstr "OK" -#: fotoxx.h:983 +#: fotoxx.h:1004 msgid "Open RAW File" msgstr "Open RAW bestand" -#: fotoxx.h:985 +#: fotoxx.h:1006 msgid "Pause" msgstr "Pauze" -#: fotoxx.h:986 +#: fotoxx.h:1007 msgid "Percent" msgstr "percentage" -#: fotoxx.h:987 +#: fotoxx.h:1008 msgid "Presets" msgstr "Voorinstelling" -#: fotoxx.h:989 +#: fotoxx.h:1010 msgid "Proceed" msgstr "Doorgaan" -#: fotoxx.h:991 +#: fotoxx.h:1012 msgid "range" msgstr "bereik" -#: fotoxx.h:994 +#: fotoxx.h:1015 msgid "Reduce" msgstr "verminderen" -#: fotoxx.h:997 +#: fotoxx.h:1018 msgid "Reset" msgstr "Reset" -#: fotoxx.h:1000 +#: fotoxx.h:1021 msgid "Unknown file type, save as tiff/jpeg/png to edit" msgstr "Bestandstype onbekend, om te bewerken opslaan als tiff/jpeg/png" -#: fotoxx.h:1001 +#: fotoxx.h:1022 msgid "Search" msgstr "Zoeken" -#: fotoxx.h:1005 +#: fotoxx.h:1026 +msgid "Size" +msgstr "Grootte" + +#: fotoxx.h:1027 msgid "Start" msgstr "Starten" -#: fotoxx.h:1006 +#: fotoxx.h:1028 msgid "Threshold" msgstr "drempel" -#: fotoxx.h:1007 +#: fotoxx.h:1029 #, c-format msgid "exceed %d files" msgstr "overschrijding %d bestanden " -#: fotoxx.h:1009 +#: fotoxx.h:1031 msgid "Undo All" msgstr "Alles ongedaan maken" -#: fotoxx.h:1010 +#: fotoxx.h:1032 msgid "Undo Last" msgstr "Laatste ongedaan maken" -#: fotoxx.h:1012 +#: fotoxx.h:1034 msgid "Unfinish" msgstr "Unfinish" -#: fotoxx.h:1014 +#: fotoxx.h:1036 msgid "View" msgstr "Beeld" -#: fotoxx.h:1015 +#: fotoxx.h:1037 msgid "Web" msgstr "Web" -#: fotoxx.h:1016 +#: fotoxx.h:1038 msgid "White" msgstr "Wit" -#: fotoxx.h:1018 +#: fotoxx.h:1040 msgid "Map" msgstr "Kaart" @@ -3821,7 +4118,7 @@ msgid "user guide not found" msgstr "gebruikershandleiding niet gevonden" -#: zfuncs.cc:4504 zfuncs.cc:10210 +#: zfuncs.cc:4504 zfuncs.cc:10284 #, c-format msgid "cannot open file %s" msgstr "kan bestand niet openen %s" @@ -3830,77 +4127,81 @@ msgid "save screen to file" msgstr "schrijf scherm naar bestand" -#: zfuncs.cc:8819 +#: zfuncs.cc:8891 msgid "No" msgstr "Nee" -#: zfuncs.cc:8819 +#: zfuncs.cc:8891 msgid "Yes" msgstr "Ja" -#: zfuncs.cc:8898 zfuncs.cc:8938 zfuncs.cc:9277 zfuncs.cc:9595 zfuncs.cc:10323 -#: zfuncs.cc:10329 zfuncs.cc:10335 zfuncs.cc:10341 +#: zfuncs.cc:8970 zfuncs.cc:9012 zfuncs.cc:9351 zfuncs.cc:9669 zfuncs.cc:10397 +#: zfuncs.cc:10403 zfuncs.cc:10409 zfuncs.cc:10415 msgid "cancel" msgstr "Annuleren" -#: zfuncs.cc:9239 +#: zfuncs.cc:9313 msgid "open" msgstr "Openen" -#: zfuncs.cc:9244 +#: zfuncs.cc:9318 msgid "choose" msgstr "Kies" -#: zfuncs.cc:9249 +#: zfuncs.cc:9323 msgid "save" msgstr "opslaan" -#: zfuncs.cc:9255 +#: zfuncs.cc:9329 msgid "open folder" msgstr "open map" -#: zfuncs.cc:9260 +#: zfuncs.cc:9334 msgid "create folder" msgstr "aanmaken map" -#: zfuncs.cc:9266 +#: zfuncs.cc:9340 msgid "hidden" msgstr "verborgen" -#: zfuncs.cc:9327 +#: zfuncs.cc:9344 +msgid "quality" +msgstr "kwaliteit" + +#: zfuncs.cc:9401 msgid "JPG quality 0-100" msgstr "JPG kwaliteit 0-100" -#: zfuncs.cc:9586 +#: zfuncs.cc:9660 #, c-format msgid "printed image width: %.1f height: %.1f cm" msgstr "geprinte afbeelding breedte: %.1f hoogte: %.1f cm" -#: zfuncs.cc:9595 +#: zfuncs.cc:9669 msgid "done" msgstr "klaar" -#: zfuncs.cc:9595 zfuncs.cc:9607 +#: zfuncs.cc:9669 zfuncs.cc:9681 msgid "margins" msgstr "marges" -#: zfuncs.cc:9603 +#: zfuncs.cc:9677 msgid "top" msgstr "boven" -#: zfuncs.cc:9604 +#: zfuncs.cc:9678 msgid "bottom" msgstr "onder" -#: zfuncs.cc:9613 +#: zfuncs.cc:9687 msgid "image scale" msgstr "afbeeldingsschaal" -#: zfuncs.cc:9615 +#: zfuncs.cc:9689 msgid "percent" msgstr "percentage" -#: zfuncs.cc:10097 +#: zfuncs.cc:10171 msgid "" "Initial parameters file created. \n" "Inspect and revise if necessary." @@ -3908,19 +4209,19 @@ "Initieel parameter bestand aangemaakt. \n" "Zo nodig controleren en verbeteren." -#: zfuncs.cc:10113 +#: zfuncs.cc:10187 msgid "load parameters from a file" msgstr "laden parameters uit bestand" -#: zfuncs.cc:10182 +#: zfuncs.cc:10256 msgid "save parameters to a file" msgstr "schrijf parameters naar bestand" -#: zfuncs.cc:10321 zfuncs.cc:10327 zfuncs.cc:10333 zfuncs.cc:10339 +#: zfuncs.cc:10395 zfuncs.cc:10401 zfuncs.cc:10407 zfuncs.cc:10413 msgid "edit parameters" msgstr "aanpassen parameters" -#: zfuncs.cc:10322 zfuncs.cc:10328 +#: zfuncs.cc:10396 zfuncs.cc:10402 msgid "" "list\n" "all" @@ -3928,7 +4229,7 @@ "opsommen\n" "alle" -#: zfuncs.cc:10322 zfuncs.cc:10328 zfuncs.cc:10334 zfuncs.cc:10340 +#: zfuncs.cc:10396 zfuncs.cc:10402 zfuncs.cc:10408 zfuncs.cc:10414 msgid "" "load\n" "file" @@ -3936,7 +4237,7 @@ "laden\n" "bestand" -#: zfuncs.cc:10322 zfuncs.cc:10328 zfuncs.cc:10334 zfuncs.cc:10340 +#: zfuncs.cc:10396 zfuncs.cc:10402 zfuncs.cc:10408 zfuncs.cc:10414 msgid "" "save\n" "file" @@ -3944,7 +4245,7 @@ "opslaan\n" "bestand" -#: zfuncs.cc:10323 zfuncs.cc:10335 +#: zfuncs.cc:10397 zfuncs.cc:10409 msgid "" "add\n" "new" @@ -3952,22 +4253,127 @@ "toevoegen\n" "nieuw" -#: zfuncs.cc:10323 zfuncs.cc:10329 zfuncs.cc:10335 zfuncs.cc:10341 +#: zfuncs.cc:10397 zfuncs.cc:10403 zfuncs.cc:10409 zfuncs.cc:10415 msgid "apply" msgstr "toepassen" -#: zfuncs.cc:10376 +#: zfuncs.cc:10450 msgid "apply?" msgstr "toepassen?" -#: zfuncs.cc:10433 +#: zfuncs.cc:10507 msgid "(new parm name)" msgstr "(nieuwe parameter naam)" -#: zfuncs.cc:10433 +#: zfuncs.cc:10507 msgid "add parameter" msgstr "toevoegen parameter" +#~ msgid "angle" +#~ msgstr "hoek" + +#~ msgid "cmsCreateTransform() failed" +#~ msgstr "cmsCreateTransform() mislukt" + +#~ msgid "no plugin command" +#~ msgstr "geen plugin commando" + +#~ msgid "User Guide etc." +#~ msgstr "Gebruikershandleiding etc." + +#~ msgid "Edit Caption/Comments" +#~ msgstr "Bewerken Onderschrift/Commentaar" + +#~ msgid "Edit image caption or comment" +#~ msgstr "Bewerken afbeelding onderschrift of commentaar" + +#~ msgid "Edit image date/rating/tags" +#~ msgstr "Bewerken afbeelding datum/waarde/tags" + +#~ msgid "Batch Tags" +#~ msgstr "Batchgewijze Tags" + +#~ msgid "Edit image geotags" +#~ msgstr "Bewerken afbeelding geotags" + +#~ msgid "jump to first page" +#~ msgstr "spring naar eerste pagina" + +#~ msgid "jump to last page" +#~ msgstr "spring naar laatste pagina " + +#~ msgid "change sequence" +#~ msgstr "volgorde wijzigen" + +#~ msgid "Edit Caption and Comments" +#~ msgstr "Bewerk Onderschrift en Commentaar" + +#~ msgid "image date (yyyymmdd)" +#~ msgstr "datum (jjjjmmdd)" + +#~ msgid "use last" +#~ msgstr "laatste gebruiken" + +#~ msgid "image stars" +#~ msgstr "afbeeldings sterren" + +#~ msgid "current tags" +#~ msgstr "actuele tags" + +#~ msgid "there are zero stuck pixels" +#~ msgstr "er zijn geen defecte pixels" + +#~ msgid "Save Stuck Pixels" +#~ msgstr "Opslaan Defecte Pixels" + +#~ msgid "Overwrite original file?" +#~ msgstr "Overschrijven origineel bestand?" + +#~ msgid "Do not warn again" +#~ msgstr "Niet opnieuw waarschuwen" + +#~ msgid "Warning" +#~ msgstr "Waarschuwing" + +#~ msgid "Save File" +#~ msgstr "Bestand opslaan" + +#~ msgid "Save to Same File" +#~ msgstr "Opslaan" + +#~ msgid "Save to the same file (replace)" +#~ msgstr "Opslaan in zelfde bestand (vervangen)" + +#~ msgid "Save to New Version" +#~ msgstr "Opslaan als nieuwe versie" + +#~ msgid "Save to a new (next) version" +#~ msgstr "Opslaan als nieuwe (volgende) versie" + +#~ msgid "Save to New File" +#~ msgstr "Opslaan als ..." + +#~ msgid "Save to a new file name" +#~ msgstr "Opslaan met nieuwe bestandsnaam" + +#~ msgid "Save to the same file" +#~ msgstr "Opslaan naar zelfde bestand" + +#~ msgid "Save to a new version" +#~ msgstr "Opslaan als nieuwe versie" + +#~ msgid "Save+V" +#~ msgstr "Opslaan.V" + +#~ msgid "Save to a new file" +#~ msgstr "Opslaan als ..." + +#~ msgid "Save+F" +#~ msgstr "Opslaan.B" + +#~ msgid "Adjust Brightness and Color" +#~ msgstr "Instellen helderheid en kleur" + #~ msgid "negative" #~ msgstr "negatief" diff -Nru fotoxx-13.08/locales/translate-pt.po fotoxx-13.09.1/locales/translate-pt.po --- fotoxx-13.08/locales/translate-pt.po 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/locales/translate-pt.po 2013-08-31 06:26:38.000000000 +0000 @@ -7,8 +7,8 @@ msgstr "" "Project-Id-Version: fotoxx-12.09\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-01 22:41+0200\n" -"PO-Revision-Date: 2013-04-05 18:11-0300\n" +"POT-Creation-Date: 2013-08-29 08:25+0200\n" +"PO-Revision-Date: 2013-08-26 21:45-0300\n" "Last-Translator: Andre Campos Rodovalho \n" "Language-Team: Portuguese\n" "Language: pt\n" @@ -16,14 +16,13 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Poedit-Language: Portuguese\n" -"X-Poedit-Country: Brazil\n" +"X-Generator: Poedit 1.5.4\n" #: f.area.cc:56 msgid "Select Area for Edits" msgstr "Selecionar área para edições" -#: f.area.cc:57 f.retouch.cc:2362 +#: f.area.cc:57 f.retouch.cc:2359 msgid "Press F1 for help" msgstr "Pressione F1 para ajuda" @@ -67,7 +66,7 @@ msgid "select all matching colors within mouse" msgstr "selecione todas as cores correspondentes delimitando com o mouse" -#: f.area.cc:114 f.retouch.cc:2397 +#: f.area.cc:114 f.retouch.cc:2394 msgid "mouse radius" msgstr "raio do mouse" @@ -123,7 +122,7 @@ msgid "found %d pixels" msgstr "encontrados %d pixels" -#: f.area.cc:1824 f.area.cc:1841 f.area.cc:1861 f.area.cc:2191 +#: f.area.cc:1824 f.area.cc:1841 f.area.cc:1861 f.area.cc:2192 msgid "the area is not finished" msgstr "a área não está finalizada" @@ -135,39 +134,35 @@ msgid "Area Edge Calc" msgstr "Calc. área de borda" -#: f.area.cc:2265 +#: f.area.cc:2266 msgid "position with mouse click/drag" msgstr "posicione o mouse clique/arraste" -#: f.area.cc:2290 +#: f.area.cc:2292 msgid "Paste Image" msgstr "Colar Imagem" -#: f.area.cc:2295 +#: f.area.cc:2297 msgid "resize" msgstr "redimensionar" -#: f.area.cc:2303 -msgid "angle" -msgstr "ângulo" - -#: f.area.cc:2565 +#: f.area.cc:2598 msgid "load select area from a file" msgstr "carregar selecionador de área de um arquivo" -#: f.area.cc:2619 +#: f.area.cc:2652 msgid "save select area to a file" msgstr "salve a área selecionada em um arquivo" -#: f.bend.cc:71 f.menus.cc:230 +#: f.bend.cc:71 f.menus.cc:242 msgid "Unbend" msgstr "Desempenar" -#: f.bend.cc:79 f.image.cc:1485 +#: f.bend.cc:79 f.image.cc:1496 msgid "vertical" msgstr "vertical" -#: f.bend.cc:80 f.image.cc:1484 +#: f.bend.cc:80 f.image.cc:1495 msgid "horizontal" msgstr "horizontal" @@ -179,7 +174,7 @@ msgid "curved" msgstr "curvo" -#: f.bend.cc:88 f.bend.cc:1517 f.bend.cc:1789 f.bend.cc:2049 f.image.cc:163 +#: f.bend.cc:88 f.bend.cc:1517 f.bend.cc:1789 f.bend.cc:2049 f.image.cc:172 msgid "Grid" msgstr "Grade" @@ -191,7 +186,7 @@ " Clique nos quatro cantos de um quadrilátero. Pressione [aplicar]. \n" "A imagem será distorcida para fazer do quadrilátero um retângulo." -#: f.bend.cc:356 f.menus.cc:231 +#: f.bend.cc:356 f.menus.cc:243 msgid "Keystone Correction" msgstr "Correção Trapezoidal" @@ -241,7 +236,7 @@ " Faça vários ajustes até que esteja satisfeito. \n" " Quando terminar, selecione outra área e precione [pronto]." -#: f.bend.cc:1105 f.menus.cc:233 +#: f.bend.cc:1105 f.menus.cc:245 msgid "Warp area" msgstr "Distorcer área" @@ -263,7 +258,7 @@ " Faça vários ajustes até que esteja satisfeito. \n" " Quando terminar, precione [pronto]." -#: f.bend.cc:1510 f.menus.cc:234 +#: f.bend.cc:1510 f.menus.cc:246 msgid "Warp curved" msgstr "Distorcer curvo" @@ -271,7 +266,7 @@ msgid "warp span" msgstr "deformar alcance" -#: f.bend.cc:1781 f.menus.cc:235 +#: f.bend.cc:1781 f.menus.cc:247 msgid "Warp linear" msgstr "Distorcer linear" @@ -285,7 +280,7 @@ " Faça vários ajustes até que esteja satisfeito. \n" " Quando terminar, precione [pronto]." -#: f.bend.cc:2044 f.menus.cc:236 +#: f.bend.cc:2044 f.menus.cc:248 msgid "Warp affine" msgstr "Distorcer afim" @@ -299,17 +294,17 @@ #: f.color.cc:92 msgid "warmer" -msgstr "" +msgstr "mais quente" #: f.color.cc:94 msgid "cooler" -msgstr "" +msgstr "mais frio" #: f.color.cc:96 f.repair.cc:69 msgid "reduce" msgstr "reduzir" -#: f.color.cc:371 f.menus.cc:224 +#: f.color.cc:371 f.menus.cc:236 msgid "Color Mode" msgstr "Modos de Cores" @@ -354,10 +349,6 @@ msgid "unknown cms profile %s" msgstr "perfil cms desconhecido %s" -#: f.color.cc:601 -msgid "cmsCreateTransform() failed" -msgstr "cmsCreateTransform() falhou" - #: f.color.cc:667 msgid "Color Match Images" msgstr "Imagens para mesclagem de cor" @@ -366,8 +357,8 @@ msgid "mouse radius for color sample" msgstr "raio do mouse para a amostra de cor" -#: f.color.cc:696 f.color.cc:701 f.file.cc:3981 f.menus.cc:191 f.menus.cc:278 -#: f.menus.cc:390 fotoxx.h:982 +#: f.color.cc:696 f.color.cc:701 f.file.cc:4034 f.menus.cc:203 f.menus.cc:291 +#: f.menus.cc:401 fotoxx.h:1003 msgid "Open" msgstr "Abrir" @@ -391,11 +382,11 @@ msgid "select source image color first" msgstr "selecione imagem para fonte de cor primeiro" -#: f.color.cc:957 f.tools.cc:5134 +#: f.color.cc:957 f.tools.cc:5145 msgid "Click image to select pixels." msgstr "Clique na imagem para selecionar pixels." -#: f.color.cc:995 f.menus.cc:227 +#: f.color.cc:995 f.menus.cc:239 msgid "Revise RGB" msgstr "Revisar RGB" @@ -427,15 +418,15 @@ msgid "+Blue -Yellow" msgstr "+Azul -Amarelo" -#: f.color.cc:1467 fotoxx.h:992 +#: f.color.cc:1467 fotoxx.h:1013 msgid "Red" msgstr "Vermelho" -#: f.color.cc:1468 fotoxx.h:965 +#: f.color.cc:1468 fotoxx.h:986 msgid "Green" msgstr "Verde" -#: f.color.cc:1469 fotoxx.h:943 +#: f.color.cc:1469 fotoxx.h:963 msgid "Blue" msgstr "Azul" @@ -443,7 +434,7 @@ msgid "Load CMYK parameters" msgstr "Carregar parâmetros CMYK" -#: f.color.cc:1614 f.color.cc:1686 f.repair.cc:4008 f.repair.cc:4104 +#: f.color.cc:1614 f.color.cc:1686 f.meta.cc:139 f.repair.cc:4025 msgid "File:" msgstr "Arquivo:" @@ -451,8 +442,8 @@ msgid "CMYK parameters file" msgstr "Arquivo de parâmetros CMYK" -#: f.color.cc:1651 f.file.cc:2047 f.meta.cc:1282 f.repair.cc:4048 -#: f.tools.cc:1708 +#: f.color.cc:1651 f.file.cc:2092 f.meta.cc:1451 f.repair.cc:4065 +#: f.tools.cc:1721 msgid "file not found" msgstr "arquivo não encontrado" @@ -481,7 +472,7 @@ msgid "light pixels" msgstr "pixels claros" -#: f.combine.cc:2315 f.meta.cc:169 +#: f.combine.cc:2315 msgid "file:" msgstr "arquivo:" @@ -490,7 +481,7 @@ msgstr "Pintar e distorcer imagem" #: f.combine.cc:2829 f.combine.cc:3482 f.combine.cc:4897 f.combine.cc:5795 -#: f.menus.cc:58 f.menus.cc:104 +#: f.menus.cc:58 f.menus.cc:119 msgid "Image" msgstr "Imagem" @@ -558,7 +549,7 @@ msgid "no curve (scanned image)" msgstr "não vetorial (imagem digitalizada)" -#: f.combine.cc:4348 f.combine.cc:5245 f.menus.cc:198 f.menus.cc:446 +#: f.combine.cc:4348 f.combine.cc:5245 f.menus.cc:210 f.menus.cc:457 msgid "Resize" msgstr "Redimensionar" @@ -595,6 +586,173 @@ "Arraste as imagens para o alinhamento grosseiro.\n" "Para rotacionar, arraste pela borda a direita." +#: f.combine.cc:6061 +msgid "Mashup layout and background image" +msgstr "Leiaute de Combinação e imagem de fundo" + +#: f.combine.cc:6090 +msgid "choose an image file" +msgstr "escolher um arquivo de imagem" + +#: f.combine.cc:6091 +msgid "use current image file" +msgstr "usar arquivo de imagem atual" + +#: f.combine.cc:6092 +msgid "open a Mashup project file" +msgstr "abrir um arquivo de projeto da Combinação" + +#: f.combine.cc:6093 +msgid "specify layout size and color" +msgstr "especificar tamanho de leiaute e cor" + +#: f.combine.cc:6120 +msgid "choose layout file" +msgstr "escolher arquivo de leiaute" + +#: f.combine.cc:6181 +msgid "Edit Images" +msgstr "Editar imagens" + +#: f.combine.cc:6182 f.combine.cc:6931 +msgid "Edit Text" +msgstr "Editar texto" + +#: f.combine.cc:6183 f.combine.cc:6482 +msgid "Save Project" +msgstr "Salvar projeto" + +#: f.combine.cc:6186 +msgid "add or edit images" +msgstr "adicionar ou editar imagens" + +#: f.combine.cc:6187 +msgid "add or edit text" +msgstr "adicionar ou editar texto" + +#: f.combine.cc:6188 +msgid "save project data" +msgstr "salvar dados de projeto" + +#: f.combine.cc:6189 +msgid "project complete" +msgstr "projeto finalizado" + +#: f.combine.cc:6190 +msgid "cancel project" +msgstr "cancelar projeto" + +#: f.combine.cc:6283 +msgid "Open Project" +msgstr "Abrir projeto" + +#: f.combine.cc:6302 +#, c-format +msgid "" +"layout image file missing: \n" +" %s" +msgstr "" +"arquivo-imagem de leiaute faltando: \n" +" %s" + +#: f.combine.cc:6320 +#, c-format +msgid "" +"overlay image file missing: \n" +" %s" +msgstr "" +"arquivo-imagem sobreposta faltando: \n" +" %s" + +#: f.combine.cc:6382 +#, c-format +msgid "" +"layout image file error: \n" +" %s" +msgstr "" +"erro de arquivo-imagem de leiaute: \n" +" %s" + +#: f.combine.cc:6393 +#, c-format +msgid "" +"overlay image file error: \n" +" %s" +msgstr "" +"erro de arquivo-imagem sobreposta: \n" +" %s" + +#: f.combine.cc:6452 +msgid "project file is defective" +msgstr "arquivo de projeto está defeituoso" + +#: f.combine.cc:6530 +msgid "Click image to select, drag image to move." +msgstr "Clique na imagem para selecionar, arrastar imagem para mover." + +#: f.combine.cc:6563 +msgid "current image:" +msgstr "imagem atual:" + +#: f.combine.cc:6585 f.combine.cc:6965 f.image.cc:1681 +msgid "Transparency" +msgstr "Transparência" + +#: f.combine.cc:6589 +msgid "Edge Blend Width" +msgstr "Largura da Borda de Mistura" + +#: f.combine.cc:6755 +#, c-format +msgid "exceeded %d images" +msgstr "excederam%d imagens" + +#: f.combine.cc:6906 +msgid "Enter text, click/drag on image." +msgstr "Digite o texto, clique/arraste na imagem." + +#: f.combine.cc:6936 f.image.cc:1652 f.tools.cc:1113 +msgid "Text" +msgstr "Texto" + +#: f.combine.cc:6954 f.image.cc:1670 +msgid "text" +msgstr "texto" + +#: f.combine.cc:6955 f.image.cc:1671 +msgid "backing" +msgstr "fundo" + +#: f.combine.cc:6956 f.image.cc:1672 +msgid "outline" +msgstr "contorno" + +#: f.combine.cc:6957 f.image.cc:1673 +msgid "shadow" +msgstr "sombra" + +#: f.combine.cc:6959 f.image.cc:1675 f.menus.cc:61 f.menus.cc:122 +#: f.menus.cc:286 fotoxx.h:969 +msgid "Color" +msgstr "Cor" + +#: f.combine.cc:6971 f.image.cc:1687 fotoxx.h:1039 +msgid "Width" +msgstr "Largura" + +#: f.combine.cc:6984 f.image.cc:1700 +msgid "Text File:" +msgstr "Arquivo Texto:" + +#: f.combine.cc:7046 f.image.cc:1811 +msgid "select font" +msgstr "selecionar fonte" + +#: f.combine.cc:7154 +#, c-format +msgid "exceeded %d text entries" +msgstr "excederam %d entradas de texto" + #: f.effects.cc:44 msgid "Set color depth to 1-16 bits" msgstr "Configurar resolução de cor para 1-16 bits" @@ -609,11 +767,11 @@ #: f.effects.cc:270 msgid "Clip Level" -msgstr "" +msgstr "Grampear Nível" #: f.effects.cc:274 msgid "Algorithm" -msgstr "" +msgstr "Algoritmo" #: f.effects.cc:643 msgid "Simulate Drawing" @@ -635,9 +793,9 @@ msgid "black/white" msgstr "preto/branco" -#: f.effects.cc:983 f.menus.cc:241 +#: f.effects.cc:983 f.menus.cc:253 msgid "Graduated Blur" -msgstr "" +msgstr "Desfoque Graduado" #: f.effects.cc:987 msgid "Contrast Limit" @@ -655,7 +813,7 @@ msgid "depth" msgstr "profundidade" -#: f.effects.cc:1219 f.file.cc:987 +#: f.effects.cc:1219 f.file.cc:1031 msgid "color" msgstr "cor" @@ -703,7 +861,7 @@ msgid "borders" msgstr "bordas" -#: f.effects.cc:2461 f.menus.cc:246 +#: f.effects.cc:2461 f.menus.cc:258 msgid "False Colors" msgstr "Deslocar Cores" @@ -719,7 +877,7 @@ msgid "Blue: Red" msgstr "Azul: Vermelho" -#: f.effects.cc:2669 f.menus.cc:247 +#: f.effects.cc:2669 f.menus.cc:259 msgid "Vignette" msgstr "Vinheta" @@ -727,7 +885,7 @@ msgid "center" msgstr "centralizar" -#: f.effects.cc:2700 f.retouch.cc:2402 +#: f.effects.cc:2700 f.retouch.cc:2399 msgid "edge" msgstr "borda" @@ -735,47 +893,55 @@ msgid "no newly added files found" msgstr "nenhum arquivo adicionado recentemente encontrado" -#: f.file.cc:275 +#: f.file.cc:307 msgid "no more images" -msgstr "" +msgstr "sem mais imagens" -#: f.file.cc:343 f.menus.cc:136 f.menus.cc:457 +#: f.file.cc:347 f.menus.cc:151 f.menus.cc:468 msgid "Open RAW file (ufraw)" msgstr "Abrir arquivo RAW (ufraw)" -#: f.file.cc:347 +#: f.file.cc:351 msgid "RAW type not registered in User Settings" msgstr "Tipo RAW não reconhecido nas Configurações de Usuário" -#: f.file.cc:367 -msgid "Overwrite original file?" -msgstr "Sobrescrever arquivo original?" - -#: f.file.cc:368 -msgid "Do not warn again" -msgstr "Não avisar novamente" - -#: f.file.cc:383 -msgid "Warning" -msgstr "Aviso" - -#: f.file.cc:495 -msgid "Save File" -msgstr "Salvar arquivo" +#: f.file.cc:401 +msgid "Save Image File" +msgstr "Salvar Arquivo-imagem" + +#: f.file.cc:411 +msgid "new version" +msgstr "nova versão" + +#: f.file.cc:412 +msgid "new file name" +msgstr "novo nome de arquivo" + +#: f.file.cc:413 +msgid "replace file" +msgstr "substituir arquivo" + +#: f.file.cc:419 +msgid "save as new file version" +msgstr "salvar como nova versão de arquivo" + +#: f.file.cc:420 f.file.cc:548 +msgid "save as new file name or type" +msgstr "salvar com novo nome ou tipo de arquivo" + +#: f.file.cc:421 +msgid "replace old file (OVERWRITE)" +msgstr "substituir arquivo antigo (SOBRESCREVER)" -#: f.file.cc:528 zfuncs.cc:9270 -msgid "quality" -msgstr "qualidade" - -#: f.file.cc:530 +#: f.file.cc:564 msgid "make current" msgstr "tornar atual" -#: f.file.cc:625 +#: f.file.cc:657 msgid "jpeg quality must be 1-100" msgstr "qualidade de jpeg deve estar entre 1-100" -#: f.file.cc:653 +#: f.file.cc:683 #, c-format msgid "" "Overwrite file? \n" @@ -784,31 +950,31 @@ "Sobrescrever arquivo? \n" " %s" -#: f.file.cc:799 f.menus.cc:140 +#: f.file.cc:843 f.menus.cc:153 msgid "Rename Image File" msgstr "Renomear arquivo" -#: f.file.cc:806 +#: f.file.cc:850 msgid "old name" msgstr "nome antigo" -#: f.file.cc:807 +#: f.file.cc:851 msgid "new name" msgstr "novo nome" -#: f.file.cc:816 +#: f.file.cc:860 msgid "previous name" msgstr "nome anterior" -#: f.file.cc:817 +#: f.file.cc:861 msgid "add 1" msgstr "adicionar 1" -#: f.file.cc:895 f.file.cc:1248 +#: f.file.cc:939 f.file.cc:1292 msgid "target file already exists" msgstr "arquivo alvo já existe" -#: f.file.cc:922 f.file.cc:1270 f.file.cc:1388 +#: f.file.cc:966 f.file.cc:1314 f.file.cc:1432 #, c-format msgid "" "delete failed: \n" @@ -817,59 +983,59 @@ "exclusão falhou: \n" " %s" -#: f.file.cc:971 +#: f.file.cc:1015 msgid "Create Blank Image" msgstr "Criar imagem em branco" -#: f.file.cc:973 +#: f.file.cc:1017 msgid "file name" msgstr "nome do arquvo" -#: f.file.cc:978 f.image.cc:470 +#: f.file.cc:1022 f.image.cc:479 msgid "width" msgstr "largura" -#: f.file.cc:981 f.image.cc:473 f.tools.cc:4088 +#: f.file.cc:1025 f.image.cc:482 f.tools.cc:4099 msgid "height" msgstr "altura" -#: f.file.cc:1156 +#: f.file.cc:1200 msgid "Copy Image File" msgstr "Copiar Arquivo de Imagem" -#: f.file.cc:1158 +#: f.file.cc:1202 msgid "Move Image File" msgstr "Mover Arquivo de Imagem" -#: f.file.cc:1164 f.file.cc:1343 f.file.cc:1464 +#: f.file.cc:1208 f.file.cc:1387 f.file.cc:1508 msgid "image file" msgstr "arquivo de imagem" -#: f.file.cc:1169 +#: f.file.cc:1213 msgid "new location" msgstr "nova localidade" -#: f.file.cc:1203 f.tools.cc:4317 +#: f.file.cc:1247 f.tools.cc:4328 msgid "Select directory" msgstr "Selecionar pasta" -#: f.file.cc:1233 +#: f.file.cc:1277 msgid "new location is not a directory" msgstr "nova localidade não é um diretório" -#: f.file.cc:1307 +#: f.file.cc:1351 msgid "Delete Image File - CANNOT BE REVERSED" msgstr "Excluir arquivo de Imagem - IRREVERSÍVEL" -#: f.file.cc:1308 f.file.cc:1430 +#: f.file.cc:1352 f.file.cc:1474 msgid "(automatic step to next image)" -msgstr "" +msgstr "(passar automaticamente para a próxima imagem)" -#: f.file.cc:1429 f.menus.cc:142 +#: f.file.cc:1473 f.menus.cc:155 msgid "Trash Image File" msgstr "Mover arquivo para lixeira" -#: f.file.cc:1494 +#: f.file.cc:1538 msgid "" "Linux standard trash does not work. \n" "Desktop trash folder will be created." @@ -877,7 +1043,7 @@ "Lixeira padrão Linux não funciona. \n" "Diretório de lixo será criado na Área de Trabalho." -#: f.file.cc:1497 +#: f.file.cc:1541 msgid "" "Linux and Desktop trash do not work. \n" "Permanently delete the image file?" @@ -885,1480 +1051,1518 @@ "Lixeira padrão Linux e Diretório de lixo não funcionam. \n" "Excluir permanentemente arquivo de imagem?" -#: f.file.cc:1527 +#: f.file.cc:1571 msgid "Move read-only file to trash?" msgstr "Mover arquivo de apenas leitura para lixeira?" -#: f.file.cc:1556 +#: f.file.cc:1600 #, c-format msgid "Cannot create trash folder: %s" msgstr "Não foi possível criar pasta lixeira: %s" -#: f.file.cc:1569 zfuncs.cc:4211 +#: f.file.cc:1613 zfuncs.cc:4211 #, c-format msgid "error: %s" msgstr "erro: %s" -#: f.file.cc:1588 +#: f.file.cc:1632 #, c-format msgid "delete failed: %s" msgstr "exclusão falhou: %s" -#: f.file.cc:2041 f.menus.cc:132 +#: f.file.cc:2086 f.menus.cc:147 msgid "Open Image File" msgstr "Abrir arquivo" -#: f.file.cc:2059 +#: f.file.cc:2104 msgid "unknown file type" msgstr "tipo de arquivo desconhecido" -#: f.file.cc:2341 +#: f.file.cc:2385 msgid "Unable to copy EXIF/IPTC data" msgstr "Incapaz de copiar dados EXIF/IPTC" -#: f.file.cc:2404 f.file.cc:2465 +#: f.file.cc:2448 f.file.cc:2509 #, c-format msgid "file not found: %s" msgstr "arquivo não encontrado: %s" -#: f.file.cc:2409 f.file.cc:2470 +#: f.file.cc:2453 f.file.cc:2514 #, c-format msgid "file type not supported: %s" msgstr "tipo de arquivo não suportado: %s" -#: f.file.cc:3982 f.menus.cc:390 +#: f.file.cc:4035 msgid "change directory" msgstr "mudar diretório" -#: f.file.cc:3990 f.menus.cc:391 +#: f.file.cc:4043 f.menus.cc:402 msgid "GoTo" msgstr "IrPara" -#: f.file.cc:4005 f.menus.cc:400 +#: f.file.cc:4058 f.menus.cc:405 msgid "Sort" msgstr "Ordenar" -#: f.file.cc:4036 f.file.cc:4360 f.menus.cc:398 +#: f.file.cc:4089 f.file.cc:4420 f.menus.cc:410 msgid "Row↑" msgstr "Linha↑" -#: f.file.cc:4048 f.file.cc:4361 f.menus.cc:399 +#: f.file.cc:4101 f.file.cc:4421 f.menus.cc:411 msgid "Row↓" msgstr "Linha↓" -#: f.file.cc:4060 f.file.cc:4363 f.menus.cc:394 +#: f.file.cc:4113 f.file.cc:4423 f.menus.cc:406 msgid "First" msgstr "Primeiro" -#: f.file.cc:4061 f.file.cc:4364 f.menus.cc:395 +#: f.file.cc:4114 f.file.cc:4424 f.menus.cc:407 msgid "Last" msgstr "Último" -#: f.file.cc:4062 f.file.cc:4358 f.file.cc:4365 f.menus.cc:396 +#: f.file.cc:4115 f.file.cc:4418 f.file.cc:4425 f.menus.cc:408 msgid "Page↑" msgstr "Página↑" -#: f.file.cc:4063 f.file.cc:4359 f.file.cc:4366 f.menus.cc:397 +#: f.file.cc:4116 f.file.cc:4419 f.file.cc:4426 f.menus.cc:409 msgid "Page↓" msgstr "Página↓" -#: f.file.cc:4114 f.tools.cc:940 +#: f.file.cc:4167 f.tools.cc:953 msgid "Choose top image directory" msgstr "Selecionar pasta raiz de imagens" -#: f.file.cc:4120 f.file.cc:4134 +#: f.file.cc:4173 f.file.cc:4187 msgid "recent" msgstr "recente" -#: f.file.cc:4121 f.file.cc:4139 +#: f.file.cc:4174 f.file.cc:4192 msgid "newest" msgstr "mais novo" -#: f.file.cc:4170 +#: f.file.cc:4223 msgid "Gallery Sort" msgstr "Ordenar Galeria" -#: f.file.cc:4174 +#: f.file.cc:4227 msgid "File Name" msgstr "Nome de Arquivo" -#: f.file.cc:4175 +#: f.file.cc:4228 msgid "File Mod Date/Time" msgstr "Data/Hora da Modificação do Arquivo" -#: f.file.cc:4176 +#: f.file.cc:4229 msgid "Photo Date/Time (EXIF)" msgstr "Foto Data/Hora (EXIF)" -#: f.file.cc:4178 +#: f.file.cc:4231 msgid "ascending" msgstr "ascendente" -#: f.file.cc:4179 +#: f.file.cc:4232 msgid "descending" msgstr "descendente" -#: f.file.cc:4352 f.file.cc:4353 f.file.cc:4355 +#: f.file.cc:4412 f.file.cc:4413 f.file.cc:4415 f.menus.cc:403 msgid "Zoom+" msgstr "Zoom+" -#: f.file.cc:4354 f.file.cc:4356 +#: f.file.cc:4414 f.file.cc:4416 f.menus.cc:404 msgid "Zoom-" msgstr "Zoom-" -#: f.file.cc:5192 fotoxx.h:1003 +#: f.file.cc:5253 fotoxx.h:1024 msgid "Select Files" msgstr "Selecionar arquivos" -#: f.file.cc:5668 fotoxx.h:935 +#: f.file.cc:5729 fotoxx.h:954 msgid "Add" msgstr "Adicionar" -#: f.file.cc:5668 fotoxx.h:995 +#: f.file.cc:5729 fotoxx.h:1016 msgid "Remove" msgstr "Remover" -#: f.file.cc:5670 +#: f.file.cc:5731 msgid "menu name" msgstr "nome do menu" -#: f.file.cc:5740 f.file.cc:5761 +#: f.file.cc:5801 f.file.cc:5822 msgid "Restart Fotoxx to update plugin menu" msgstr "Reinicie o Fotoxx para atualizar o menu de extensões" -#: f.file.cc:5803 -msgid "no plugin command" -msgstr "nenhum comando de extensões" +#: f.file.cc:5864 +msgid "Plugins menu is empty" +msgstr "Menu de extensões está vazio" -#: f.file.cc:5831 +#: f.file.cc:5892 msgid "plugin failed" msgstr "extensão falhou" -#: f.image.cc:47 -msgid "Turn Image" -msgstr "" +#: f.image.cc:50 +msgid "Rotate Image 90º" +msgstr "Rotacioanar 90º" + +#: f.image.cc:54 +msgid "rotate -90º" +msgstr "Rotacioanar -90º" + +#: f.image.cc:55 +msgid "rotate +90º" +msgstr "Rotacioanar +90º" -#: f.image.cc:114 +#: f.image.cc:123 msgid "Drag right edge with mouse" -msgstr "" +msgstr "Arraste a margem direita com o mouse" -#: f.image.cc:144 +#: f.image.cc:153 msgid "Rotate Image" msgstr "Rotacioanar" -#: f.image.cc:148 zfuncs.cc:9605 +#: f.image.cc:157 zfuncs.cc:9679 msgid "left" msgstr "esquerda" -#: f.image.cc:151 zfuncs.cc:9606 +#: f.image.cc:160 zfuncs.cc:9680 msgid "right" msgstr "direita" -#: f.image.cc:157 +#: f.image.cc:166 msgid "degrees" msgstr "graus" -#: f.image.cc:442 +#: f.image.cc:451 msgid "Drag middle to move, drag corners to resize." msgstr "" "Arraste pelo centro para mover, arraste as estremidades para redimensionar." -#: f.image.cc:465 f.menus.cc:196 f.menus.cc:445 +#: f.image.cc:474 f.menus.cc:208 f.menus.cc:456 msgid "Trim/Crop" msgstr "Recortar/Aparar bordas" -#: f.image.cc:476 f.image.cc:756 +#: f.image.cc:485 f.image.cc:765 msgid "ratio" msgstr "taxa" -#: f.image.cc:480 +#: f.image.cc:489 msgid "portrait" -msgstr "" +msgstr "retrato" -#: f.image.cc:481 +#: f.image.cc:490 msgid "landscape" -msgstr "" +msgstr "paisagem" -#: f.image.cc:482 +#: f.image.cc:491 msgid "Lock Ratio" msgstr "Travar taxa" -#: f.image.cc:486 +#: f.image.cc:495 msgid "customize" msgstr "customizar" -#: f.image.cc:748 +#: f.image.cc:757 msgid "Trim Buttons" msgstr "Aparar rodapés" -#: f.image.cc:755 +#: f.image.cc:764 msgid "label" msgstr "etiqueta" -#: f.image.cc:1277 +#: f.image.cc:1286 msgid "Lock aspect ratio" msgstr "Manter proporção" -#: f.image.cc:1298 +#: f.image.cc:1307 msgid "Resize Image" msgstr "Redimensionar" -#: f.image.cc:1480 f.menus.cc:199 +#: f.image.cc:1491 f.menus.cc:211 msgid "Flip" msgstr "Virar" -#: f.image.cc:1604 +#: f.image.cc:1610 msgid "Enter text, click/drag on image, right click to remove" msgstr "" "Insira um texto, clique/arraste na imagem, clique com o botão direito para " "remover" -#: f.image.cc:1631 +#: f.image.cc:1645 msgid "Write Text on Image" msgstr "Escrever Texto na Imagem" -#: f.image.cc:1638 f.tools.cc:1100 -msgid "Text" -msgstr "Texto" +#: f.image.cc:2312 +msgid "text file is defective" +msgstr "arquivo de texto está defeituoso" -#: f.image.cc:1645 -msgid "Size" -msgstr "Tamanho" - -#: f.image.cc:1656 -msgid "text" -msgstr "texto" - -#: f.image.cc:1657 -msgid "backing" -msgstr "fundo" - -#: f.image.cc:1658 -msgid "outline" -msgstr "contorno" - -#: f.image.cc:1659 -msgid "shadow" -msgstr "sombra" - -#: f.image.cc:1661 f.menus.cc:61 f.menus.cc:107 f.menus.cc:273 fotoxx.h:949 -msgid "Color" -msgstr "Cor" - -#: f.image.cc:1667 -msgid "Transparency" -msgstr "Transparência" - -#: f.image.cc:1673 fotoxx.h:1017 -msgid "Width" -msgstr "Largura" - -#: f.image.cc:1679 -msgid "Angle" -msgstr "Ângulo" - -#: f.image.cc:1686 -msgid "Text File:" -msgstr "Arquivo Texto:" - -#: f.image.cc:1764 -msgid "select font" -msgstr "selecionar fonte" - -#: f.menus.cc:54 f.menus.cc:100 +#: f.menus.cc:54 f.menus.cc:115 msgid "File" msgstr "Arquivo" -#: f.menus.cc:55 f.menus.cc:101 +#: f.menus.cc:55 f.menus.cc:116 msgid "Tools" msgstr "Ferramentas" -#: f.menus.cc:56 f.menus.cc:102 +#: f.menus.cc:56 f.menus.cc:117 msgid "Metadata" msgstr "Metadados" -#: f.menus.cc:57 f.menus.cc:103 +#: f.menus.cc:57 f.menus.cc:118 msgid "Areas" msgstr "Áreas" -#: f.menus.cc:59 f.menus.cc:105 +#: f.menus.cc:59 f.menus.cc:120 msgid "Retouch" msgstr "Retocar" -#: f.menus.cc:60 f.menus.cc:106 +#: f.menus.cc:60 f.menus.cc:121 msgid "Repair" msgstr "Reparo" -#: f.menus.cc:62 f.menus.cc:108 +#: f.menus.cc:62 f.menus.cc:123 msgid "Bend" msgstr "Curvar" -#: f.menus.cc:63 f.menus.cc:109 +#: f.menus.cc:63 f.menus.cc:124 msgid "Effects" msgstr "Efeitos" -#: f.menus.cc:64 f.menus.cc:110 +#: f.menus.cc:64 f.menus.cc:125 msgid "Combine" msgstr "Combinar" -#: f.menus.cc:65 f.menus.cc:111 +#: f.menus.cc:65 f.menus.cc:126 msgid "Plugins" msgstr "Extensões" -#: f.menus.cc:66 f.menus.cc:112 fotoxx-13.08.cc:3631 fotoxx.h:967 +#: f.menus.cc:66 f.menus.cc:127 fotoxx-13.09.cc:3664 fotoxx.h:988 msgid "Help" msgstr "Ajuda" -#: f.menus.cc:99 f.menus.cc:271 +#: f.menus.cc:99 f.menus.cc:284 msgid "Favorites Menu" msgstr "Menu Favoritos" +#: f.menus.cc:100 +msgid "Open, Save, Trash, Rename, Print" +msgstr "Abrir, Salvar, Lixeira, Renomear, Imprimir" + +#: f.menus.cc:101 +msgid "Synch Files, Settings, Collections, Batch Funcs ..." +msgstr "Sincronizar arquivos, Configurações, Coleções, Funções em Lote ..." + +#: f.menus.cc:102 +msgid "Captions, Tags, Ratings, Geotags, Search ... " +msgstr "Legendas, Etiquetas, Avaliações, Georeferências, Pesquisar ..." + +#: f.menus.cc:103 +msgid "Select image areas to edit, copy and paste" +msgstr "Selecionar áreas da imagem para editar, copiar e colar" + +#: f.menus.cc:104 +msgid "Rotate, Trim/Crop, Resize, Add Text" +msgstr "Rotacionar, Recortar/Aparar, Redimensionar, Adicionar texto" + +#: f.menus.cc:105 +msgid "Improve brightness, contrast, color ..." +msgstr "Melhorar brilho, contraste, cor ..." + +#: f.menus.cc:106 +msgid "Sharpen, Clean, Red-eyes, Paint, Clone ..." +msgstr "Aguçar, Limpar, Olhos vermelhos, Pintura, Clonar ..." + +#: f.menus.cc:107 +msgid "White Balance, Color Profile, Color Matching" +msgstr "Balanço de Branco, Perfil cores, Mesclagem de cores" + +#: f.menus.cc:108 +msgid "Fix Perspective, Bend/Warp image ..." +msgstr "Corrigir Perspectiva, Empenar/Distorcer imagem ..." + +#: f.menus.cc:109 +msgid "Special Effects, Arty Transforms" +msgstr "Efeitos Especiais, Transformações artísticas" + +#: f.menus.cc:110 +msgid "HDR, HDF, Panorama, Stack, Mashup" +msgstr "" + +#: f.menus.cc:111 +msgid "Use other image editors within Fotoxx" +msgstr "Usar outros editores de imagem dentro Fotoxx" + #: f.menus.cc:112 -msgid "User Guide etc." -msgstr "Guia de Usuário etc." +msgid "Quick Start, User Guide, Recent Changes ..." +msgstr "Guia Rápido, Manual do Usuário, Mudanças recentes ..." -#: f.menus.cc:131 +#: f.menus.cc:146 msgid "New Window" msgstr "Nova Janela" -#: f.menus.cc:131 +#: f.menus.cc:146 msgid "Open another window" msgstr "Abrir outra Janela" -#: f.menus.cc:132 f.menus.cc:278 +#: f.menus.cc:147 f.menus.cc:291 msgid "Open a new image file" msgstr "Abrir novo arquvio de imagem" # msgstr "Abrir próximo arquivo" -#: f.menus.cc:133 +#: f.menus.cc:148 msgid "Open Previous File" msgstr "Abrir arquivo anterior" -#: f.menus.cc:133 +#: f.menus.cc:148 msgid "Open the previously seen file" msgstr "Abrir o arquivo visto anteriormente" -#: f.menus.cc:134 +#: f.menus.cc:149 msgid "Open a recently seen file" msgstr "Abrir um arquivo visto recentemente" -#: f.menus.cc:134 +#: f.menus.cc:149 msgid "Recently Seen Images" msgstr "Imagens vistas recentemente" -#: f.menus.cc:135 +#: f.menus.cc:150 msgid "Newly Added Images" msgstr "Imagens adicionadas recentemente" -#: f.menus.cc:135 +#: f.menus.cc:150 msgid "Open a newly added file" msgstr "Abrir arquivo adicionado recentemente" -#: f.menus.cc:136 +#: f.menus.cc:151 msgid "Open and edit a camera RAW file" msgstr "Abrir e editar um arquivo RAW da câmera" -#: f.menus.cc:137 -msgid "Save to Same File" -msgstr "Salvar no mesmo arquivo" - -#: f.menus.cc:137 -msgid "Save to the same file (replace)" -msgstr "Salvar no mesmo arquivo (substituir)" - -#: f.menus.cc:138 -msgid "Save to New Version" -msgstr "Salvar nova versão" - -#: f.menus.cc:138 -msgid "Save to a new (next) version" -msgstr "Salvar uma nova (próxima) versão" - -#: f.menus.cc:139 -msgid "Save to New File" -msgstr "Salvar novo arquivo" - -#: f.menus.cc:139 -msgid "Save to a new file name" -msgstr "Salvar arquivo com novo nome" +#: f.menus.cc:152 f.menus.cc:294 +msgid "Save modified image file to disk" +msgstr "Salvar arquivo-imagem modificado no disco " + +#: f.menus.cc:152 +msgid "Save to Disk" +msgstr "Salvar em disco" -#: f.menus.cc:140 +#: f.menus.cc:153 msgid "Change the image file name" msgstr "Mudar nome do arquivo" -#: f.menus.cc:141 +#: f.menus.cc:154 msgid "Create a blank image" msgstr "Criar uma imagem em branco" -#: f.menus.cc:141 +#: f.menus.cc:154 msgid "New Blank Image" msgstr "Nova Imagem em Branco" -#: f.menus.cc:142 f.menus.cc:284 +#: f.menus.cc:155 f.menus.cc:295 msgid "Move image file to Trash" msgstr "Mover arquivo para Lixeira" -#: f.menus.cc:143 +#: f.menus.cc:156 msgid "Print Image" msgstr "Imprimir Imagem" -#: f.menus.cc:143 +#: f.menus.cc:156 msgid "Print the current image" msgstr "Imprimir imagem atual" -#: f.menus.cc:144 +#: f.menus.cc:157 msgid "Quit Fotoxx" msgstr "Fechar Fotoxx" -#: f.menus.cc:146 +#: f.menus.cc:159 msgid "Index new files and make thumbnails" msgstr "Indexar novos arquivos gerar miniaturas" -#: f.menus.cc:146 f.tools.cc:182 f.tools.cc:364 +#: f.menus.cc:159 f.tools.cc:182 f.tools.cc:364 msgid "Synchronize Files" msgstr "Sincronizar Arquivos" -#: f.menus.cc:147 +#: f.menus.cc:160 msgid "Change user preferences" msgstr "Mudar preferências de usuário" -#: f.menus.cc:147 +#: f.menus.cc:160 msgid "User Settings" msgstr "Preferências de Usuário" -#: f.menus.cc:148 +#: f.menus.cc:161 msgid "Change Keyboard Shortcut Keys" msgstr "Mudar Atalhos de Teclado" -#: f.menus.cc:148 +#: f.menus.cc:161 msgid "Keyboard Shortcuts" msgstr "Teclas de Atalho" -#: f.menus.cc:149 f.tools.cc:2179 +#: f.menus.cc:162 f.tools.cc:2190 msgid "Manage Collections" msgstr "Gerenciar Coleções" -#: f.menus.cc:149 +#: f.menus.cc:162 msgid "Organize images into collections" msgstr "Organizar imagens em Coleções" -#: f.menus.cc:150 +#: f.menus.cc:163 msgid "Convert for a new top directory" msgstr "Converter para um novo diretório superior" -#: f.menus.cc:150 +#: f.menus.cc:163 msgid "Move Collections" msgstr "Mover para Coleções" -#: f.menus.cc:151 f.tools.cc:2778 +#: f.menus.cc:164 f.tools.cc:2789 msgid "Slide Show" msgstr "Apresentação" -#: f.menus.cc:151 +#: f.menus.cc:164 msgid "Start a slide show" msgstr "Iniciar Apresentação" -#: f.menus.cc:152 f.tools.cc:3863 +#: f.menus.cc:165 f.tools.cc:3874 msgid "Batch Rename" msgstr "Renomear vários" -#: f.menus.cc:152 +#: f.menus.cc:165 msgid "Rename multiple image files" msgstr "Renomear múltiplos arquivos de imagem" -#: f.menus.cc:153 f.tools.cc:4078 +#: f.menus.cc:166 f.tools.cc:4089 msgid "Batch Convert/Resize/Move" msgstr "Converter/Redimensionar/Mover em Lote" -#: f.menus.cc:153 +#: f.menus.cc:166 msgid "Convert resize, move multiple files" msgstr "Converter, redimensionar, mover vários arquivos" -#: f.menus.cc:154 f.tools.cc:4416 +#: f.menus.cc:167 f.tools.cc:4427 msgid "Batch Convert RAW Files" msgstr "Converter Arquivos RAW em Lote" -#: f.menus.cc:154 +#: f.menus.cc:167 msgid "Convert multiple camera RAW files" msgstr "Converter vários arquivos RAW da câmera" -#: f.menus.cc:155 f.tools.cc:4795 +#: f.menus.cc:168 f.tools.cc:4806 msgid "Brightness Distribution" msgstr "Distribuição de Brilho" -#: f.menus.cc:155 +#: f.menus.cc:168 msgid "Show a brightness distribution graph" msgstr "Mostrar gráfico de distribuição de brilho" -#: f.menus.cc:156 f.menus.cc:455 f.tools.cc:4990 +#: f.menus.cc:169 f.menus.cc:466 f.tools.cc:5001 msgid "Grid Lines" msgstr "Linhas de grade" -#: f.menus.cc:156 +#: f.menus.cc:169 msgid "Show or revise grid lines" msgstr "Mostrar ou corrigir linhas de grade" -#: f.menus.cc:157 f.tools.cc:5166 +#: f.menus.cc:170 f.tools.cc:5177 msgid "Show RGB" msgstr "Mostrar RGB" -#: f.menus.cc:157 +#: f.menus.cc:170 msgid "Show RGB colors at mouse click" msgstr "Mostrar cores RGB ao clique do mouse" -#: f.menus.cc:158 +#: f.menus.cc:171 msgid "Chart to adjust monitor color" msgstr "Gráfico para ajustar cores do monitor" -#: f.menus.cc:158 +#: f.menus.cc:171 msgid "Monitor Color" msgstr "Cores do Monitor" -#: f.menus.cc:159 +#: f.menus.cc:172 msgid "Chart to adjust monitor gamma" msgstr "Gráfico para ajustar gama do monitor" -#: f.menus.cc:159 f.tools.cc:5490 +#: f.menus.cc:172 f.tools.cc:5501 msgid "Monitor Gamma" msgstr "Monitor Gamma" -#: f.menus.cc:160 +#: f.menus.cc:173 msgid "Change Language" msgstr "Trocar língua" -#: f.menus.cc:160 +#: f.menus.cc:173 msgid "Change the GUI language" msgstr "Mudar a língua da GUI" -#: f.menus.cc:161 +#: f.menus.cc:174 msgid "Missing Translations" msgstr "Traduções em falta" -#: f.menus.cc:161 +#: f.menus.cc:174 msgid "Report missing translations" msgstr "Relatar tradução em falta" -#: f.menus.cc:162 +#: f.menus.cc:175 msgid "Edit Translations" msgstr "Editar Traduções" -#: f.menus.cc:162 +#: f.menus.cc:175 msgid "Edit translations while using Fotoxx" msgstr "Editar traduções enquanto usa o Fotoxx" -#: f.menus.cc:163 +#: f.menus.cc:176 msgid "Create a Gnome menu and launcher" msgstr "Criar um menu e atalho do Gnome" -#: f.menus.cc:163 +#: f.menus.cc:176 msgid "Menu and Launcher" msgstr "Menu e Atalho" -#: f.menus.cc:164 +#: f.menus.cc:177 msgid "Burn Images to CD/DVD" msgstr "Gravar imagens em CD/DVD" -#: f.menus.cc:164 +#: f.menus.cc:177 msgid "Burn selected image files to CD or DVD" msgstr "Gravar imagens selecionadas em CD ou DVD" -#: f.menus.cc:165 +#: f.menus.cc:178 msgid "Memory and CPU (to terminal/logfile)" msgstr "Memória e CPU (para terminal/arquivo log)" -#: f.menus.cc:165 +#: f.menus.cc:178 msgid "Resources" msgstr "Recursos" -#: f.menus.cc:167 -msgid "Edit Caption/Comments" -msgstr "Editar Legendas/Comentários" - -#: f.menus.cc:167 -msgid "Edit image caption or comment" -msgstr "Editar legenda ou comentário de imagem" - -#: f.menus.cc:168 f.meta.cc:165 f.meta.cc:1728 +#: f.menus.cc:180 f.meta.cc:110 f.meta.cc:1897 msgid "Edit Metadata" msgstr "Editar Metadados" -#: f.menus.cc:168 -msgid "Edit image date/rating/tags" -msgstr "Editar data/avaliação/etiquetas de imagem" +#: f.menus.cc:180 +msgid "Edit image tags/caption/rating ..." +msgstr "Editar etiquetas de imagem/legendas/avaliações ..." -#: f.menus.cc:169 +#: f.menus.cc:181 msgid "Add/remove tags for multiple images" msgstr "Adicionar/remover etiquetas para múltiplas imagens" -#: f.menus.cc:169 -msgid "Batch Tags" -msgstr "Etiquetas em Lote" +#: f.menus.cc:181 f.meta.cc:1552 +msgid "Batch Add/Remove Tags" +msgstr "Adicionar/Remover Etiqueras em Lote" -#: f.menus.cc:170 +#: f.menus.cc:182 msgid "List a few key metadata items" msgstr "Listar poucos ítens de metadados chave" -#: f.menus.cc:170 +#: f.menus.cc:182 msgid "View Metadata (short)" msgstr "Visualizar Metadados (curto)" -#: f.menus.cc:171 +#: f.menus.cc:183 msgid "List all metadata items" msgstr "Listar todos ítens de metadados" -#: f.menus.cc:171 +#: f.menus.cc:183 msgid "View Metadata (long)" msgstr "Visualizar Metadados (longo)" -#: f.menus.cc:172 +#: f.menus.cc:184 msgid "Edit Any Metadata" msgstr "Editar qualquer Metadado" -#: f.menus.cc:172 +#: f.menus.cc:184 msgid "Edit any image metadata" msgstr "Edita qualquer metadados de uma imagem" -#: f.menus.cc:173 f.meta.cc:1820 +#: f.menus.cc:185 f.meta.cc:1989 msgid "Delete Metadata" msgstr "Excluir Metadados" -#: f.menus.cc:173 +#: f.menus.cc:185 msgid "Remove all metadata from an image" msgstr "Remover todos metadados de uma imagem" -#: f.menus.cc:174 +#: f.menus.cc:186 msgid "Download Geolocations" msgstr "Baixar Geolocalizações" -#: f.menus.cc:174 +#: f.menus.cc:186 msgid "Download initial geolocation database" msgstr "Baixar base de dados incial de geolocalizações" -#: f.menus.cc:176 f.meta.cc:2713 +#: f.menus.cc:188 f.meta.cc:2892 msgid "Edit Geotags" msgstr "Editar Georeferências" -#: f.menus.cc:176 -msgid "Edit image geotags" -msgstr "Editar georeferência de imagem" +#: f.menus.cc:188 +msgid "Edit image location and geotags" +msgstr "Editar localidade de imagem e georeferências" -#: f.menus.cc:177 +#: f.menus.cc:189 msgid "Add geotags to multiple images" msgstr "Adicionar georeferência a múltiplas imagens" -#: f.menus.cc:177 f.meta.cc:2905 +#: f.menus.cc:189 f.meta.cc:3084 msgid "Batch Add Geotags" msgstr "Adicionar Georeferências a várias" -#: f.menus.cc:178 +#: f.menus.cc:190 msgid "Find all images for a location [date]" msgstr "Encontrar todas imagens por uma localidade [data]" -#: f.menus.cc:178 +#: f.menus.cc:190 msgid "Images by Location/Date" msgstr "Imagens por Localidade/Data" -#: f.menus.cc:179 +#: f.menus.cc:191 msgid "Find images by clicking a world map" msgstr "Encontrar imagens ao clicar no mapa mundial" -#: f.menus.cc:179 +#: f.menus.cc:191 msgid "Images by Map Location" msgstr "Imagens por Locadade no Mapa" -#: f.menus.cc:180 +#: f.menus.cc:192 msgid "Find images meeting select criteria" msgstr "Encontrar imagens satisfazendo critério selecionado" -#: f.menus.cc:180 +#: f.menus.cc:192 msgid "Search Images" msgstr "Procurar Imagens" -#: f.menus.cc:182 fotoxx.h:1002 +#: f.menus.cc:194 fotoxx.h:1023 msgid "Select" msgstr "Selecionar" -#: f.menus.cc:182 +#: f.menus.cc:194 msgid "Select object or area for editing" msgstr "Selecionar objeto ou área para edição" -#: f.menus.cc:183 fotoxx.h:1004 +#: f.menus.cc:195 fotoxx.h:1025 msgid "Show" msgstr "Mostrar" -#: f.menus.cc:183 +#: f.menus.cc:195 msgid "Show (outline) existing area" msgstr "Mostrar (traçado) de área existente" -#: f.menus.cc:184 fotoxx.h:969 +#: f.menus.cc:196 fotoxx.h:990 msgid "Hide" msgstr "Ocultar" -#: f.menus.cc:184 +#: f.menus.cc:196 msgid "Hide existing area" msgstr "Esconder área existente" -#: f.menus.cc:185 fotoxx.h:959 +#: f.menus.cc:197 fotoxx.h:979 msgid "Enable" msgstr "Habilitar" -#: f.menus.cc:185 +#: f.menus.cc:197 msgid "Enable area for editing" msgstr "Habilitar área para edição" -#: f.menus.cc:186 fotoxx.h:956 +#: f.menus.cc:198 fotoxx.h:976 msgid "Disable" msgstr "Desabilitar" -#: f.menus.cc:186 +#: f.menus.cc:198 msgid "Disable area for editing" msgstr "Desabilitar área para edição" -#: f.menus.cc:187 fotoxx.h:972 +#: f.menus.cc:199 fotoxx.h:993 msgid "Invert" msgstr "Inverter" -#: f.menus.cc:187 +#: f.menus.cc:199 msgid "Reverse existing area" msgstr "Inverter área existente" -#: f.menus.cc:188 +#: f.menus.cc:200 msgid "Erase existing area" msgstr "Apagar área existente" -#: f.menus.cc:188 fotoxx.h:1013 +#: f.menus.cc:200 fotoxx.h:1035 msgid "Unselect" msgstr "Deselecionar" -#: f.menus.cc:189 fotoxx.h:951 +#: f.menus.cc:201 fotoxx.h:971 msgid "Copy" msgstr "Copiar" -#: f.menus.cc:189 +#: f.menus.cc:201 msgid "Copy an area for later pasting" msgstr "Copiar uma área para colar depois" -#: f.menus.cc:190 fotoxx.h:984 +#: f.menus.cc:202 fotoxx.h:1005 msgid "Paste" msgstr "Colar" -#: f.menus.cc:190 +#: f.menus.cc:202 msgid "Paste an area into the current image" msgstr "Colar uma área dentro de imagem atual" -#: f.menus.cc:191 +#: f.menus.cc:203 msgid "Open a file with a saved area" msgstr "Abrir um arquivo com uma área salva" -#: f.menus.cc:192 f.menus.cc:281 fotoxx.h:999 +#: f.menus.cc:204 f.menus.cc:294 fotoxx.h:1020 msgid "Save" msgstr "Salvar" -#: f.menus.cc:192 +#: f.menus.cc:204 msgid "Save an area to a file" msgstr "Salvar área em um arquivo" -#: f.menus.cc:194 +#: f.menus.cc:206 msgid "Rotate 90 degrees" -msgstr "" +msgstr "Rotacionar 90 graus" -#: f.menus.cc:194 f.menus.cc:447 -msgid "Turn" -msgstr "" +#: f.menus.cc:206 f.menus.cc:458 +msgid "Rotate 90º" +msgstr "Rotacionar 90º" -#: f.menus.cc:195 fotoxx.h:998 +#: f.menus.cc:207 fotoxx.h:1019 msgid "Rotate" msgstr "Rotacionar" -#: f.menus.cc:195 +#: f.menus.cc:207 msgid "Rotate by any angle" msgstr "Girar em qualquer ângulo" -#: f.menus.cc:196 +#: f.menus.cc:208 msgid "Cut off unwanted margins" msgstr "Retirar margens indesejadas" -#: f.menus.cc:197 +#: f.menus.cc:209 msgid "Auto-Trim" msgstr "Auto-Recortar" -#: f.menus.cc:197 +#: f.menus.cc:209 msgid "Remove margins from warp, panorama, etc." msgstr "Remover margens de distorções, panoramas, etc." -#: f.menus.cc:198 +#: f.menus.cc:210 msgid "Change pixel dimensions" msgstr "Mudar dimensões de pixel" -#: f.menus.cc:199 +#: f.menus.cc:211 msgid "Mirror image horizontally or vertically" msgstr "Espelhar imagem horizontalmente ou verticalmente" -#: f.menus.cc:200 +#: f.menus.cc:212 msgid "Add Text" msgstr "Escrever Texto" -#: f.menus.cc:200 +#: f.menus.cc:212 msgid "Write text on image" msgstr "Escrever texto em imagem" -#: f.menus.cc:202 +#: f.menus.cc:214 msgid "Fast auto enhance that may work OK" msgstr "Realce automático rápido que deve funcionar bem" -#: f.menus.cc:202 f.menus.cc:448 +#: f.menus.cc:214 f.menus.cc:459 msgid "Voodoo Enhance" msgstr "Realce Vudu" -#: f.menus.cc:203 +#: f.menus.cc:215 msgid "Adjust brightness, contrast, color" msgstr "Ajusta brilho, contraste, cor" -#: f.menus.cc:203 f.menus.cc:449 -msgid "Brightness/Color" -msgstr "Brilho/Cor" +#: f.menus.cc:215 f.retouch.cc:211 +msgid "Brightness/Contrast/Color" +msgstr "Brilho/Contraste/Cor" -#: f.menus.cc:204 +#: f.menus.cc:216 msgid "Adjust contrast using a gamma curve" msgstr "Ajustar contraste usando curva de gama" -#: f.menus.cc:204 f.menus.cc:450 +#: f.menus.cc:216 f.menus.cc:461 msgid "Gamma Curves" msgstr "Curvas de Gama" -#: f.menus.cc:205 +#: f.menus.cc:217 msgid "Add local contrast, enhance details" msgstr "Adicionar contraste local, realçar detalhes" -#: f.menus.cc:205 f.menus.cc:452 f.retouch.cc:1130 +#: f.menus.cc:217 f.menus.cc:463 f.retouch.cc:1130 msgid "Tone Mapping" msgstr "Mapa sonoro" -#: f.menus.cc:206 f.menus.cc:451 +#: f.menus.cc:218 f.menus.cc:462 msgid "Flatten Brightness" msgstr "Reduzir Brilho" -#: f.menus.cc:206 +#: f.menus.cc:218 msgid "Flatten brightness distribution" msgstr "Achatar distruição de brilho" -#: f.menus.cc:207 +#: f.menus.cc:219 msgid "Expand Brightness" msgstr "Expandir Brilho" -#: f.menus.cc:207 +#: f.menus.cc:219 msgid "Expand brightness range" msgstr "Expandir intervalo de brilho" -#: f.menus.cc:208 +#: f.menus.cc:220 msgid "Brightness Ramp" msgstr "Curvas de brilho" -#: f.menus.cc:208 +#: f.menus.cc:220 msgid "Fix brightness uniformity across image" msgstr "Corrigir uniformidade de brilho por toda imagem" -#: f.menus.cc:209 f.retouch.cc:2361 +#: f.menus.cc:221 f.retouch.cc:2358 msgid "Paint Edits" msgstr "Primir Edições" -#: f.menus.cc:209 -msgid "Paint edit function gradually with the mouse" +#: f.menus.cc:221 +msgid "Paint edit function gradually with mouse" msgstr "Função de pintura gradual com o mouse" -#: f.menus.cc:210 f.retouch.cc:2592 +#: f.menus.cc:222 f.retouch.cc:2589 msgid "Leverage Edits" msgstr "Influenciar Edições" -#: f.menus.cc:210 +#: f.menus.cc:222 msgid "Leverage edits by brightness or color" msgstr "Influenciar edições por brilho ou cor" -#: f.menus.cc:212 +#: f.menus.cc:224 msgid "Make the image look sharper" msgstr "Tornar a imagem mais nítida" -#: f.menus.cc:212 f.repair.cc:60 +#: f.menus.cc:224 f.repair.cc:60 msgid "Sharpen" msgstr "Aguçar" -#: f.menus.cc:213 f.repair.cc:1543 +#: f.menus.cc:225 f.repair.cc:1543 msgid "Blur" msgstr "Embaçar" -#: f.menus.cc:213 +#: f.menus.cc:225 msgid "Make the image look fuzzy" msgstr "Deixam a imagem difusa" -#: f.menus.cc:214 +#: f.menus.cc:226 msgid "Filter noise from low-light photos" msgstr "Filtrar ruído de fotos com pouca luz" -#: f.menus.cc:214 +#: f.menus.cc:226 msgid "Reduce Noise" msgstr "Reduzir ruído" -#: f.menus.cc:215 +#: f.menus.cc:227 msgid "Remove unwanted objects" msgstr "Remover objetos indesejados" -#: f.menus.cc:215 f.repair.cc:1536 +#: f.menus.cc:227 f.repair.cc:1536 msgid "Smart Erase" msgstr "Apagador inteligente" -#: f.menus.cc:216 +#: f.menus.cc:228 msgid "Fix red-eyes from electronic flash" msgstr "Corrigir olhos vermelhos por flash eletrônico" -#: f.menus.cc:216 f.menus.cc:454 +#: f.menus.cc:228 f.menus.cc:465 msgid "Red Eyes" msgstr "Olhos vermelhos" -#: f.menus.cc:217 +#: f.menus.cc:229 msgid "Paint image pixels using the mouse" msgstr "Pintar pixels de imagem utilizando o mouse" -#: f.menus.cc:217 f.repair.cc:2357 +#: f.menus.cc:229 f.repair.cc:2357 msgid "Paint/Clone" msgstr "Pintar Pixels" -#: f.menus.cc:218 f.repair.cc:2880 +#: f.menus.cc:230 f.repair.cc:2880 msgid "Remove Dust" msgstr "Remover Sujeira" -#: f.menus.cc:218 +#: f.menus.cc:230 msgid "Remove dust spots from scanned slides" msgstr "Remover pontos de sujeira de digitalizações" -#: f.menus.cc:219 +#: f.menus.cc:231 msgid "Anti-alias" msgstr "Antisserrilhado" -#: f.menus.cc:219 +#: f.menus.cc:231 msgid "Smoothen edges with jaggies" msgstr "Suavisar contornos irregulares" -#: f.menus.cc:220 +#: f.menus.cc:232 msgid "Fix Color Fringes" msgstr "Corrigir Franjas Púrpuras" -#: f.menus.cc:220 +#: f.menus.cc:232 msgid "Reduce Chromatic Abberation" msgstr "Reduzir Aberrações Cromáticas" -#: f.menus.cc:221 +#: f.menus.cc:233 msgid "Erase known hot and dark pixels" msgstr "Apagar pixels quentes ou escuros conhecidos" -#: f.menus.cc:221 f.repair.cc:3890 +#: f.menus.cc:233 f.repair.cc:3894 msgid "Fix Stuck Pixels" msgstr "Corrigir Pixels Presos" -#: f.menus.cc:223 +#: f.menus.cc:235 msgid "Click on a white/gray area to fix color tint" msgstr "Clique em uma área branco/cinza para corrigir tonalidade de cor" -#: f.menus.cc:223 f.menus.cc:453 +#: f.menus.cc:235 f.menus.cc:464 msgid "White Balance" msgstr "Balanço de branco" -#: f.menus.cc:224 +#: f.menus.cc:236 msgid "Make BW/color, negative/positive, sepia" msgstr "Fazer PB/colorido, negativo/positivo, sepia" -#: f.menus.cc:225 +#: f.menus.cc:237 msgid "Color Profile" msgstr "Perfil de Cores" -#: f.menus.cc:225 +#: f.menus.cc:237 msgid "Convert to another color profile" msgstr "Converter para outro perfil de cores" -#: f.menus.cc:226 +#: f.menus.cc:238 msgid "Match Colors" msgstr "Mesclar Cores" -#: f.menus.cc:226 +#: f.menus.cc:238 msgid "Match colors on one image with another" msgstr "Equiparar cores de uma imagem com outra" -#: f.menus.cc:227 +#: f.menus.cc:239 msgid "Adjust color in selected image areas" msgstr "Ajustar cor em áreas selecionadas da imagem" -#: f.menus.cc:228 +#: f.menus.cc:240 msgid "Adjust color using CMYK or RGB values" msgstr "Ajustar cor usando valores CMYK ou RGB" -#: f.menus.cc:228 +#: f.menus.cc:240 msgid "CMYK Density" msgstr "Densidade CMYK" -#: f.menus.cc:230 +#: f.menus.cc:242 msgid "Remove curvature, esp. panoramas" msgstr "Remover curvatura, esp. panoramas" -#: f.menus.cc:231 +#: f.menus.cc:243 msgid "Straighten objects seen from an angle" msgstr "Endireitar objetos vistos a um ângulo" -#: f.menus.cc:232 +#: f.menus.cc:244 msgid "Flatten Book Page" msgstr "Achatar Página de Book" -#: f.menus.cc:232 +#: f.menus.cc:244 msgid "Flatten a photographed book page" msgstr "Achatar uma página fotografada de um book" -#: f.menus.cc:233 +#: f.menus.cc:245 msgid "Distort image areas using the mouse" msgstr "Distorcer as áreas da imagem usando o mouse" -#: f.menus.cc:234 f.menus.cc:235 f.menus.cc:236 +#: f.menus.cc:246 f.menus.cc:247 f.menus.cc:248 msgid "Distort the whole image using the mouse" msgstr "Distorcer toda a imagem utilizando o mouse" -#: f.menus.cc:238 +#: f.menus.cc:250 msgid "Color Depth" msgstr "Resolução de cor" -#: f.menus.cc:238 +#: f.menus.cc:250 msgid "Reduce color depth (posterize)" msgstr "Reduzir profundidade de cor (posterizar)" -#: f.menus.cc:239 +#: f.menus.cc:251 msgid "Convert to pencil sketch" msgstr "Converter para esboço a lápis" -#: f.menus.cc:239 +#: f.menus.cc:251 msgid "Sketch" msgstr "Esboço" -#: f.menus.cc:240 +#: f.menus.cc:252 msgid "Convert to colored line drawing" msgstr "Converter para desenhos de linhas colorias" -#: f.menus.cc:240 +#: f.menus.cc:252 msgid "Drawing" msgstr "Gravura" -#: f.menus.cc:241 +#: f.menus.cc:253 msgid "Graduated Blur depending on contrast" -msgstr "" +msgstr "Desfoque Graduado dependente do contraste" -#: f.menus.cc:242 +#: f.menus.cc:254 msgid "Create an embossed or 3D appearance" msgstr "Criar relevo ou aparência de 3D" -#: f.menus.cc:242 +#: f.menus.cc:254 msgid "Embossing" msgstr "Alto-relevo" -#: f.menus.cc:243 +#: f.menus.cc:255 msgid "Convert to square tiles" msgstr "Converter para ladrilhos quadrados" -#: f.menus.cc:243 +#: f.menus.cc:255 msgid "Tiles" msgstr "Ladrilhos" -#: f.menus.cc:244 +#: f.menus.cc:256 msgid "Convert to dots (Roy Lichtenstein effect)" msgstr "Converter para pontos (efeito Roy Lichtenstein)" -#: f.menus.cc:244 +#: f.menus.cc:256 msgid "Dots" msgstr "Pontos" -#: f.menus.cc:245 +#: f.menus.cc:257 msgid "Convert into a simulated painting" msgstr "Converter em uma pintura simulada" -#: f.menus.cc:245 +#: f.menus.cc:257 msgid "Painting" msgstr "Pintura" -#: f.menus.cc:246 +#: f.menus.cc:258 msgid "Shift/convert colors into other colors" msgstr "Deslocar/converter cores em outras" -#: f.menus.cc:247 +#: f.menus.cc:259 msgid "Change brightness or color radially" msgstr "Alterar o brilho ou cor radialmente" -#: f.menus.cc:249 +#: f.menus.cc:261 msgid "Combine bright/dark images for better detail" msgstr "Combine imagens claras/escuras para melhores detalhes" -#: f.menus.cc:249 +#: f.menus.cc:261 msgid "High Dynamic Range" msgstr "Grande Alcance Dinâmico (HDR)" -#: f.menus.cc:250 +#: f.menus.cc:262 msgid "Combine near/far focus images for deeper focus" msgstr "Combinar imagens de foco perto/longe para foco profundo" -#: f.menus.cc:250 +#: f.menus.cc:262 msgid "High Depth of Field" msgstr "Alta Profundidade de Campo (HDF)" -#: f.menus.cc:251 +#: f.menus.cc:263 msgid "Combine images to erase passing people, etc." msgstr "Combinar imagens para apagar pessoas que passam, etc" -#: f.menus.cc:251 +#: f.menus.cc:263 msgid "Stack / Paint" msgstr "Pilha / Pintura" -#: f.menus.cc:252 +#: f.menus.cc:264 msgid "Combine noisy images into a low-noise image" msgstr "Combinar imagens cheias de ruído em uma imagem com baixo ruído" -#: f.menus.cc:252 +#: f.menus.cc:264 msgid "Stack / Noise" msgstr "Pilha / Ruído" -#: f.menus.cc:253 +#: f.menus.cc:265 msgid "Combine images into a panorama" msgstr "Combinar imagens em um panorama" -#: f.menus.cc:253 +#: f.menus.cc:265 msgid "Panorama" msgstr "Panorama" -#: f.menus.cc:254 +#: f.menus.cc:266 msgid "Combine images into a vertical panorama" msgstr "Combinar imagens em um panorama vertical" -#: f.menus.cc:254 +#: f.menus.cc:266 msgid "Vertical Panorama" msgstr "Panorama Vertical" -#: f.menus.cc:256 +#: f.menus.cc:267 +msgid "Arrange multiple images on a background image" +msgstr "Dispor múltiplas imagens numa imagem de fundo" + +#: f.menus.cc:267 +msgid "Mashup" +msgstr "Combinação" + +#: f.menus.cc:269 msgid "Add another image editor to the menu" msgstr "Adicionar outro editor de imagem para o menu" -#: f.menus.cc:256 +#: f.menus.cc:269 msgid "Edit Plugins" msgstr "Editar Extensões" -#: f.menus.cc:258 fotoxx-13.08.cc:3597 +#: f.menus.cc:271 fotoxx-13.09.cc:3630 msgid "Quick Start" -msgstr "Iniciação Rápida" +msgstr "Guia Rápido" -#: f.menus.cc:258 +#: f.menus.cc:271 msgid "Quick Start mini-guide" -msgstr "Mini-guia Rápido" +msgstr "Mini-guia resumido" -#: f.menus.cc:259 +#: f.menus.cc:272 msgid "Read the user guide" -msgstr "Ler o Guia de Usuários" +msgstr "Leia o Guia de Usuários" -#: f.menus.cc:259 fotoxx-13.08.cc:3600 +#: f.menus.cc:272 fotoxx-13.09.cc:3633 msgid "User Guide" msgstr "Guia de usuário" -#: f.menus.cc:260 +#: f.menus.cc:273 msgid "Recent user guide changes" msgstr "Mudanças recentes no Guia de Usuários" -#: f.menus.cc:260 fotoxx-13.08.cc:3603 +#: f.menus.cc:273 fotoxx-13.09.cc:3636 msgid "User Guide Changes" msgstr "Mudanças no Guia de Usuários" -#: f.menus.cc:261 +#: f.menus.cc:274 msgid "Fotoxx updates notification" msgstr "Notificações de atualização do Fotoxx" -#: f.menus.cc:261 fotoxx-13.08.cc:3606 +#: f.menus.cc:274 fotoxx-13.09.cc:3639 msgid "Program Updates" msgstr "Atualizações do programa" -#: f.menus.cc:262 fotoxx-13.08.cc:3612 +#: f.menus.cc:275 fotoxx-13.09.cc:3645 msgid "Edit Functions Summary" msgstr "Editar Resumo de Funções" -#: f.menus.cc:262 +#: f.menus.cc:275 msgid "Summary of image edit functions" msgstr "Resumo das funções de edição de imagem" -#: f.menus.cc:263 fotoxx-13.08.cc:3609 +#: f.menus.cc:276 fotoxx-13.09.cc:3642 msgid "README" msgstr "LEIAME" -#: f.menus.cc:263 +#: f.menus.cc:276 msgid "Technical installation notes" msgstr "Notas técnicas da instalação do Fotoxx" -#: f.menus.cc:264 fotoxx-13.08.cc:3615 +#: f.menus.cc:277 fotoxx-13.09.cc:3648 msgid "Change Log" msgstr "Relatório de mudanças" -#: f.menus.cc:264 +#: f.menus.cc:277 msgid "List updates by Fotoxx version" msgstr "Listar atualizações por versão do Fotoxx" -#: f.menus.cc:265 fotoxx-13.08.cc:3618 +#: f.menus.cc:278 fotoxx-13.09.cc:3651 msgid "Log File" msgstr "Arquivo de Log" -#: f.menus.cc:265 +#: f.menus.cc:278 msgid "View the log file and error messages" msgstr "Ver arquivo de log e mensagens de erro" -#: f.menus.cc:266 +#: f.menus.cc:279 msgid "How to do Fotoxx translations" msgstr "Como fazer traduções para o Fotoxx" -#: f.menus.cc:266 fotoxx-13.08.cc:3621 +#: f.menus.cc:279 fotoxx-13.09.cc:3654 msgid "Translations" msgstr "Traduções" -#: f.menus.cc:267 fotoxx-13.08.cc:3624 +#: f.menus.cc:280 fotoxx-13.09.cc:3657 msgid "Home Page" msgstr "Página na web" -#: f.menus.cc:267 +#: f.menus.cc:280 msgid "Show the Fotoxx web page" msgstr "Mostrar a página do Fotoxx na web" -#: f.menus.cc:268 fotoxx-13.08.cc:3627 +#: f.menus.cc:281 fotoxx-13.09.cc:3660 msgid "About" msgstr "Sobre" -#: f.menus.cc:268 +#: f.menus.cc:281 msgid "Version, license, contact, credits" msgstr "Versão, licença, contato, créditos" -#: f.menus.cc:271 +#: f.menus.cc:284 msgid "Favs" msgstr "Favs" -#: f.menus.cc:273 +#: f.menus.cc:286 msgid "Color of area borders etc." msgstr "Cor das bordas, área etc." -#: f.menus.cc:274 fotoxx.h:1011 +#: f.menus.cc:287 fotoxx.h:1033 msgid "Undo" msgstr "Desfazer" -#: f.menus.cc:274 +#: f.menus.cc:287 msgid "Undo one edit" msgstr "Desfazer uma edição" -#: f.menus.cc:275 fotoxx.h:993 +#: f.menus.cc:288 fotoxx.h:1014 msgid "Redo" msgstr "Refazer" -#: f.menus.cc:275 +#: f.menus.cc:288 msgid "Redo one edit" msgstr "Refazer uma edição" -#: f.menus.cc:277 f.menus.cc:389 -msgid "Gallery from Tab F" +#: f.menus.cc:290 f.menus.cc:400 +msgid "Set gallery from current image file" +msgstr "Definir galeria a partir de imagem atual" + +#: f.menus.cc:290 f.menus.cc:400 +msgid "Sync.G" msgstr "" -#: f.menus.cc:279 +#: f.menus.cc:292 msgid "Open the previous file" msgstr "Abrir arquivo anterior" -#: f.menus.cc:279 fotoxx.h:988 +#: f.menus.cc:292 fotoxx.h:1009 msgid "Prev" msgstr "Anterior" -#: f.menus.cc:280 fotoxx.h:979 +#: f.menus.cc:293 fotoxx.h:1000 msgid "Next" msgstr "Próximo" -#: f.menus.cc:280 +#: f.menus.cc:293 msgid "Open the next file" msgstr "Abrir próximo arquivo" -#: f.menus.cc:281 -msgid "Save to the same file" -msgstr "Salvar no mesmo arquivo" - -#: f.menus.cc:282 -msgid "Save to a new version" -msgstr "Salvar em nova versão" - -#: f.menus.cc:282 -msgid "Save+V" -msgstr "Salvar+V" - -#: f.menus.cc:283 -msgid "Save to a new file" -msgstr "Salvar para novo arquivo" - -#: f.menus.cc:283 -msgid "Save+F" -msgstr "Salvar+F" - -#: f.menus.cc:284 f.menus.cc:437 fotoxx.h:1008 +#: f.menus.cc:295 f.menus.cc:448 fotoxx.h:1030 msgid "Trash" msgstr "Lixeira" -#: f.menus.cc:303 f.menus.cc:332 +#: f.menus.cc:314 f.menus.cc:343 msgid "Run as Fotoxx edit function" msgstr "Executar como função de edição do Fotoxx" -#: f.menus.cc:391 +#: f.menus.cc:382 +msgid "Top" +msgstr "" + +#: f.menus.cc:401 +msgid "open another directory" +msgstr "abrir outro diretório" + +#: f.menus.cc:402 msgid "go to bookmarked image" msgstr "Ir para a imagem marcada como favorita" -#: f.menus.cc:392 +#: f.menus.cc:403 msgid "increase thumbnail size" msgstr "aumentar tamanho de miniaturas" -#: f.menus.cc:393 +#: f.menus.cc:404 msgid "reduce thumbnail size" msgstr "reduzir tamanho de miniaturas" -#: f.menus.cc:394 -msgid "jump to first page" -msgstr "pular para última página" - -#: f.menus.cc:395 -msgid "jump to last page" -msgstr "pular para última página" +#: f.menus.cc:405 +msgid "change sort order" +msgstr "alterar a ordem de classificação" + +#: f.menus.cc:406 +msgid "jump to beginning (top)" +msgstr "saltar para o início (topo)" + +#: f.menus.cc:407 +msgid "jump to end (bottom)" +msgstr "saltar para final (rodapé)" -#: f.menus.cc:396 +#: f.menus.cc:408 msgid "previous page" msgstr "página anterior" -#: f.menus.cc:397 +#: f.menus.cc:409 msgid "next page" msgstr "próxima página" -#: f.menus.cc:398 +#: f.menus.cc:410 msgid "previous row" msgstr "coluna anterior" -#: f.menus.cc:399 +#: f.menus.cc:411 msgid "next row" msgstr "próxiuma coluna" -#: f.menus.cc:400 -msgid "change sequence" -msgstr "mudar sequência" - -#: f.menus.cc:434 fotoxx.h:996 +#: f.menus.cc:445 fotoxx.h:1017 msgid "Rename" msgstr "Renomear" -#: f.menus.cc:435 +#: f.menus.cc:446 msgid "Copy to Location" msgstr "Copiar para Localidade" -#: f.menus.cc:436 +#: f.menus.cc:447 msgid "Move to Location" msgstr "Mover para Localidade" -#: f.menus.cc:438 fotoxx.h:955 +#: f.menus.cc:449 fotoxx.h:975 msgid "Delete" msgstr "Exlcuir" -#: f.menus.cc:439 +#: f.menus.cc:450 msgid "Copy to Clipboard" msgstr "Copiar para Área de Transferência" -#: f.menus.cc:440 +#: f.menus.cc:451 msgid "Remove from Collection" msgstr "Remover da Coleção" -#: f.menus.cc:441 +#: f.menus.cc:452 msgid "Cut to Image Cache" msgstr "Recortar para Cache de Imagem" -#: f.menus.cc:442 +#: f.menus.cc:453 msgid "Copy to Image Cache" msgstr "Copiar para Cache de Imagem" -#: f.menus.cc:443 +#: f.menus.cc:454 msgid "Paste Image Cache Here (clear)" msgstr "Colar Cache de Imagem aqui (limpar)" -#: f.menus.cc:444 +#: f.menus.cc:455 msgid "Paste Image Cache Here (keep)" msgstr "Colar Cache de Imagem aqui (manter)" -#: f.menus.cc:456 +#: f.menus.cc:460 +msgid "Brightness/Color" +msgstr "Brilho/Cor" + +#: f.menus.cc:467 msgid "Select Area" msgstr "Selecionar Área" -#: f.meta.cc:87 -msgid "Edit Caption and Comments" -msgstr "Editar Legenda e Comentários" +#: f.meta.cc:72 +msgid "" +"Metadata index is missing.\n" +"Use Tools > Synchronize Files." +msgstr "" +"Índice de metadados está faltando.\n" +"Use: Ferramentas > Sincronizar arquivos." + +#: f.meta.cc:106 +#, c-format +msgid "Rating: %c (stars)" +msgstr "Avaliação: %c (estrelas)" + +#: f.meta.cc:142 +msgid "Size:" +msgstr "Tamanho:" + +#: f.meta.cc:148 +msgid "Image Width:" +msgstr "Largura da imagem:" + +#: f.meta.cc:151 +msgid "Height:" +msgstr "Altura:" + +#: f.meta.cc:154 +msgid "Depth:" +msgstr "Profundidade:" + +#: f.meta.cc:159 +msgid "Image Date" +msgstr "Data da Imagem" + +#: f.meta.cc:162 +msgid "Time" +msgstr "Hora" + +#: f.meta.cc:164 +msgid "get prev" +msgstr "obter prévio" + +#: f.meta.cc:169 +msgid "Choose:" +msgstr "Escolher:" -#: f.meta.cc:98 +#: f.meta.cc:181 msgid "Caption" msgstr "Legenda" -#: f.meta.cc:102 +#: f.meta.cc:187 msgid "Comments" msgstr "Comentários" -#: f.meta.cc:173 -msgid "image date (yyyymmdd)" -msgstr "data de imagem (AAAAmmDD)" - -#: f.meta.cc:175 -msgid "use last" -msgstr "usar último" - -#: f.meta.cc:178 -msgid "image stars" -msgstr "estrelas da imagem" - -#: f.meta.cc:196 -msgid "current tags" -msgstr "etiquetas atuais" +#: f.meta.cc:193 +msgid "Image Tags" +msgstr "Etiquetas da imagem" -#: f.meta.cc:201 -msgid "recent tags" +#: f.meta.cc:199 +msgid "Recent Tags" msgstr "etiquetas recentes" -#: f.meta.cc:206 f.meta.cc:387 f.meta.cc:1404 f.meta.cc:3932 -msgid "defined tags" +#: f.meta.cc:205 f.meta.cc:556 f.meta.cc:1573 f.meta.cc:4111 +msgid "Defined Tags" msgstr "etiquetas definidas" -#: f.meta.cc:373 fotoxx.h:976 +#: f.meta.cc:455 +msgid "date format is YYYY-MM-DD" +msgstr "formato da data é AAAA-MM-DD" + +#: f.meta.cc:459 +msgid "date is invalid" +msgstr "data inválida" + +#: f.meta.cc:492 +msgid "time format is HH:MM [:SS]" +msgstr "formato da hora é HH:MM [: SS]" + +#: f.meta.cc:496 +msgid "time is invalid" +msgstr "hora inválida" + +#: f.meta.cc:542 fotoxx.h:997 msgid "Manage Tags" msgstr "Gerenciar Etiquetas" -#: f.meta.cc:373 +#: f.meta.cc:542 msgid "orphan tags" -msgstr "" +msgstr "etiquetas órfãs" -#: f.meta.cc:377 +#: f.meta.cc:546 msgid "category" msgstr "categoria" -#: f.meta.cc:380 +#: f.meta.cc:549 msgid "tag" msgstr "etiqueta" -#: f.meta.cc:383 +#: f.meta.cc:552 msgid "create" msgstr "criar" -#: f.meta.cc:384 +#: f.meta.cc:553 msgid "delete" msgstr "excluir" -#: f.meta.cc:1383 -msgid "Batch Add/Remove Tags" -msgstr "Adicionar/Remover Etiqueras em Lote" +#: f.meta.cc:1557 f.meta.cc:3116 f.tools.cc:2792 f.tools.cc:3877 +#: f.tools.cc:4093 f.tools.cc:4455 +msgid "0 files selected" +msgstr "0 arquivos selecionados" -#: f.meta.cc:1394 +#: f.meta.cc:1563 msgid "tags to add" msgstr "etiquetas a adicionar" -#: f.meta.cc:1395 +#: f.meta.cc:1564 msgid "tags to remove" msgstr "etiquetas a remover" -#: f.meta.cc:1476 +#: f.meta.cc:1645 #, c-format msgid "" "%s \n" @@ -2367,29 +2571,37 @@ "%s \n" " etiquetas demais" -#: f.meta.cc:1590 +#: f.meta.cc:1759 msgid "specify files and tags" msgstr "especificar arquivos e etiquetas" -#: f.meta.cc:1617 f.meta.cc:3044 f.tools.cc:2819 f.tools.cc:3011 -#: f.tools.cc:3051 f.tools.cc:4001 f.tools.cc:4311 f.tools.cc:4664 +#: f.meta.cc:1786 f.meta.cc:3223 f.tools.cc:2830 f.tools.cc:3022 +#: f.tools.cc:3062 f.tools.cc:4012 f.tools.cc:4322 f.tools.cc:4675 #, c-format msgid "%d files selected" msgstr "%d arquivos selecionados" -#: f.meta.cc:1664 +#: f.meta.cc:1833 msgid "View Metadata" msgstr "Ver metadados" -#: f.meta.cc:1822 fotoxx.h:937 +#: f.meta.cc:1901 +msgid "key name" +msgstr "" + +#: f.meta.cc:1903 +msgid "key value" +msgstr "" + +#: f.meta.cc:1991 fotoxx.h:956 msgid "All" msgstr "Todos" -#: f.meta.cc:1823 +#: f.meta.cc:1992 msgid "One Key:" msgstr "Uma chave:" -#: f.meta.cc:1954 +#: f.meta.cc:2123 #, c-format msgid "" "Download geotags data (8 megabytes). \n" @@ -2400,36 +2612,52 @@ "Salvar em %s \n" "Continuar?" -#: f.meta.cc:1990 +#: f.meta.cc:2159 msgid "download failed" msgstr "carregamento falhou" -#: f.meta.cc:2025 +#: f.meta.cc:2192 fotoxx-13.09.cc:855 +msgid "Location from World Map" +msgstr "Localidade no Mapa Mundial" + +#: f.meta.cc:2194 +msgid "Loading world map" +msgstr "" + +#: f.meta.cc:2201 msgid "please download geolocations data" msgstr "por favor, baixe dados de geolocalizações" -#: f.meta.cc:2138 +#: f.meta.cc:2209 +msgid "Loading geolocations" +msgstr "" + +#: f.meta.cc:2327 msgid "geotags file must be downloaded" msgstr "arquivo de georeferências tem de ser baixado" -#: f.meta.cc:2432 f.meta.cc:2889 f.meta.cc:3152 +#: f.meta.cc:2611 f.meta.cc:3068 f.meta.cc:3331 #, c-format msgid "bad latitude/longitude: %s %s" msgstr "latitude/longitude inválido: %s %s" -#: f.meta.cc:2731 f.meta.cc:2939 f.meta.cc:4432 +#: f.meta.cc:2893 +msgid "Geocoding web service courtesy of" +msgstr "" + +#: f.meta.cc:2910 f.meta.cc:3118 f.meta.cc:4611 msgid "city" msgstr "cidade" -#: f.meta.cc:2734 f.meta.cc:2942 f.meta.cc:4435 +#: f.meta.cc:2913 f.meta.cc:3121 f.meta.cc:4614 msgid "country" msgstr "país" -#: f.meta.cc:2802 f.meta.cc:3065 +#: f.meta.cc:2981 f.meta.cc:3244 msgid "city not found" msgstr "cidade não encontrada" -#: f.meta.cc:3130 +#: f.meta.cc:3309 msgid "" "data is incomplete \n" " proceed?" @@ -2437,156 +2665,164 @@ "Dados incompletos \n" " continuar?" -#: f.meta.cc:3156 +#: f.meta.cc:3335 msgid "no files selected" msgstr "nenhum arquivo selecionado" -#: f.meta.cc:3188 +#: f.meta.cc:3367 msgid "choose city" msgstr "escolher cidade" -#: f.meta.cc:3272 +#: f.meta.cc:3451 msgid "not found" msgstr "não encontrado" -#: f.meta.cc:3273 +#: f.meta.cc:3452 msgid "city and country required" msgstr "cidade e país requerido" -#: f.meta.cc:3365 +#: f.meta.cc:3544 msgid "Report Geotag Groups" msgstr "Relatório de Grupos de Georeferencias" -#: f.meta.cc:3366 +#: f.meta.cc:3545 msgid "Group by country" msgstr "Agrupar por país" -#: f.meta.cc:3367 +#: f.meta.cc:3546 msgid "Group by country/city" msgstr "Agrupar por país/cidade" -#: f.meta.cc:3368 +#: f.meta.cc:3547 msgid "Group by country/city/date" msgstr "Agrupar por país/cidade/data" -#: f.meta.cc:3371 +#: f.meta.cc:3550 msgid "Combine within" msgstr "Combinar interiormente" -#: f.meta.cc:3373 +#: f.meta.cc:3552 msgid "days" msgstr "dias" -#: f.meta.cc:3715 +#: f.meta.cc:3667 +msgid "geotag groups" +msgstr "" + +#: f.meta.cc:3894 msgid "search range (km)" msgstr "procurar distância (km)" -#: f.meta.cc:3786 +#: f.meta.cc:3965 msgid "No matching images found" msgstr "Nenhuma imagem encontrada" -#: f.meta.cc:3872 +#: f.meta.cc:4051 msgid "Search Image Metadata" msgstr "Procurar por Metadados de Imagem" -#: f.meta.cc:3876 +#: f.meta.cc:4055 msgid "images to search:" -msgstr "" +msgstr "imagens para busca:" -#: f.meta.cc:3877 +#: f.meta.cc:4056 msgid "all" -msgstr "" +msgstr "todos" -#: f.meta.cc:3878 +#: f.meta.cc:4057 msgid "current set only" -msgstr "" +msgstr "configuração atual apenas" -#: f.meta.cc:3881 +#: f.meta.cc:4060 msgid "matching images:" -msgstr "" +msgstr "imagens correspondentes:" -#: f.meta.cc:3882 +#: f.meta.cc:4061 msgid "new set" -msgstr "" +msgstr "nova configuração" -#: f.meta.cc:3883 +#: f.meta.cc:4062 msgid "add to set" -msgstr "" +msgstr "adicionar à configuração" -#: f.meta.cc:3884 +#: f.meta.cc:4063 msgid "remove" -msgstr "" +msgstr "remover" -#: f.meta.cc:3890 +#: f.meta.cc:4069 msgid "date range" msgstr "variação de data" -#: f.meta.cc:3891 +#: f.meta.cc:4070 msgid "stars range" msgstr "variação de estrelas" -#: f.meta.cc:3892 +#: f.meta.cc:4071 msgid "search tags" msgstr "procurar etiquetas" -#: f.meta.cc:3893 +#: f.meta.cc:4072 msgid "search text" msgstr "procurar texto" -#: f.meta.cc:3894 +#: f.meta.cc:4073 msgid "search files" msgstr "procurar arquivos" -#: f.meta.cc:3899 +#: f.meta.cc:4078 msgid "(yyyymmdd)" msgstr "(aaaammdd)" -#: f.meta.cc:3905 +#: f.meta.cc:4084 msgid "all/any" msgstr "todos/qualquer" -#: f.meta.cc:3924 +#: f.meta.cc:4103 msgid "other criteria" msgstr "outro critério" -#: f.meta.cc:3928 +#: f.meta.cc:4107 msgid "other" msgstr "outro" -#: f.meta.cc:4059 +#: f.meta.cc:4238 msgid "" "to remove images from current set, \n" "search current set" msgstr "" +"para remover imagens da configuração atual, \n" +"busque na configuração atual" -#: f.meta.cc:4066 +#: f.meta.cc:4245 msgid "" "to add images to current set, \n" "search all images" msgstr "" +"para adicionar imagens à configuração atual, \n" +"busque todas as imagens" -#: f.meta.cc:4293 +#: f.meta.cc:4472 #, c-format msgid "images added: %d removed: %d new count: %d" -msgstr "" +msgstr "imagens adicionadas: %d removidas: %d nova contagem: %d" -#: f.meta.cc:4296 +#: f.meta.cc:4475 msgid "no changes made" -msgstr "" +msgstr "nenhuma mudança feita" -#: f.meta.cc:4429 +#: f.meta.cc:4608 msgid "Add Geotags Search Criteria" msgstr "Adicionar Critério de Busca Georeferencial" -#: f.meta.cc:4448 +#: f.meta.cc:4627 msgid "range (km)" msgstr "alcance (km)" -#: f.meta.cc:4539 +#: f.meta.cc:4718 msgid "error in latitude/longitude/range" msgstr "erro na latitude/longitude/distância" -#: f.meta.cc:4604 +#: f.meta.cc:4783 msgid "" "These items are always reported: \n" "date, stars, tags, caption, comment" @@ -2594,15 +2830,15 @@ "Esses itens são sempre relatados: \n" "data, estrelas, etiquetas, legenda, comentário" -#: f.meta.cc:4628 +#: f.meta.cc:4807 msgid "Additional Items for Report" msgstr "Itens Adicionais para Relatar" -#: f.meta.cc:4634 +#: f.meta.cc:4813 msgid "Keyword" msgstr "Palavra chave" -#: f.meta.cc:4641 +#: f.meta.cc:4820 msgid "Match Criteria" msgstr "Equiparar Critério" @@ -2650,7 +2886,7 @@ "1. Arraste o mouse para selecionar. \n" "2. Apague. 3. Repita. " -#: f.repair.cc:1541 fotoxx.h:990 +#: f.repair.cc:1541 fotoxx.h:1011 msgid "Radius" msgstr "Raio" @@ -2747,38 +2983,30 @@ msgid "Chromatic Abberation" msgstr "Aberração Cromática" -#: f.repair.cc:3896 +#: f.repair.cc:3900 msgid "pixel group" msgstr "grupo de pixels" -#: f.repair.cc:3897 +#: f.repair.cc:3901 msgid "circle color" msgstr "círculo colorido" -#: f.repair.cc:4006 +#: f.repair.cc:3913 f.repair.cc:3957 +msgid "stuck pixels:" +msgstr "pixels presos:" + +#: f.repair.cc:4023 msgid "Load Stuck Pixels" msgstr "Carregar Pixels Presos" -#: f.repair.cc:4030 f.repair.cc:4126 +#: f.repair.cc:4047 f.repair.cc:4113 msgid "Stuck Pixels file" msgstr "Arquvio de Pixels Presos" -#: f.repair.cc:4070 +#: f.repair.cc:4087 msgid "file format error" msgstr "erro de formato de arquivo" -#: f.repair.cc:4098 -msgid "there are zero stuck pixels" -msgstr "não há pixels presos" - -#: f.repair.cc:4102 -msgid "Save Stuck Pixels" -msgstr "Salvar Pixels Presos" - -#: f.retouch.cc:211 -msgid "Adjust Brightness and Color" -msgstr "Ajustar Brilho e Cor" - #: f.retouch.cc:267 msgid "small-steps" msgstr "pouco-a-pouco" @@ -2831,15 +3059,15 @@ msgid "bright pixels" msgstr "pixels brilhantes" -#: f.retouch.cc:1983 +#: f.retouch.cc:1980 msgid "Ramp brightness across image" msgstr "Curva de Brilho sobre a imagem" -#: f.retouch.cc:2363 f.retouch.cc:2600 f.tools.cc:5242 +#: f.retouch.cc:2360 f.retouch.cc:2597 f.tools.cc:5253 msgid "Edit function must be active" msgstr "Função Editar tem de estar ativada" -#: f.retouch.cc:2371 fotoxx-13.08.cc:2867 +#: f.retouch.cc:2368 fotoxx-13.09.cc:2905 msgid "" "Select area cannot be kept.\n" "Continue?" @@ -2847,23 +3075,23 @@ "Área selecionada não pode ser capturada.\n" "Continuar?" -#: f.retouch.cc:2400 +#: f.retouch.cc:2397 msgid "power: center" msgstr "alimentação: centro" -#: f.retouch.cc:2405 +#: f.retouch.cc:2402 msgid "reset area" msgstr "redefinir área" -#: f.retouch.cc:2593 +#: f.retouch.cc:2590 msgid "Edit Function Amplifier" msgstr "Editar função Amplificador" -#: f.retouch.cc:2629 +#: f.retouch.cc:2626 msgid "minimum" msgstr "mínimo" -#: f.retouch.cc:2631 +#: f.retouch.cc:2628 msgid "maximum" msgstr "máximo" @@ -2980,197 +3208,209 @@ msgid "create missing and update stale thumbnails" msgstr "criar e atualizar miniaturas ausentes ou obsoletos" -#: f.tools.cc:542 +#: f.tools.cc:548 #, c-format msgid "%d thumbnails created, %d errors \n" msgstr "%d miniaturas criadas, %d erros \n" -#: f.tools.cc:553 +#: f.tools.cc:559 msgid "no search index file is in use" msgstr "nenhum arquivo índice de pesquisa em uso" -#: f.tools.cc:554 f.tools.cc:561 f.tools.cc:897 +#: f.tools.cc:560 f.tools.cc:567 f.tools.cc:910 msgid "COMPLETED" msgstr "COMPLETO" -#: f.tools.cc:566 +#: f.tools.cc:572 msgid "rebuild search index" msgstr "reconstruir índice de pesquisa" -#: f.tools.cc:585 +#: f.tools.cc:591 #, c-format msgid "%d current index records found \n" msgstr "%d registros de índices correntes encontrados \n" -#: f.tools.cc:589 +#: f.tools.cc:595 msgid "find all image files and build index records" msgstr "encontrar todos os arquivos de imagem e construir registros de índice" -#: f.tools.cc:615 +#: f.tools.cc:621 msgid "too many image files" msgstr "arquivos de imagem em excesso" -#: f.tools.cc:642 +#: f.tools.cc:648 #, c-format msgid "found %d image files \n" msgstr "encontrado %d arquivos de imagem \n" -#: f.tools.cc:647 +#: f.tools.cc:653 msgid "merging old and new index records" msgstr "mesclar registros de índices antigos e novos" -#: f.tools.cc:697 +#: f.tools.cc:703 #, c-format msgid "files found in current index recs: %d \n" msgstr "arquivos encontrados no registro atual: %d \n" -#: f.tools.cc:715 +#: f.tools.cc:721 msgid "updating index records" msgstr "atualizando registros de índice" -#: f.tools.cc:889 +#: f.tools.cc:902 #, c-format msgid "%d image files updated \n" msgstr "%d arquivos de imagem atualizados \n" -#: f.tools.cc:909 +#: f.tools.cc:922 msgid "KILLED" msgstr "MORTOS" -#: f.tools.cc:1047 +#: f.tools.cc:1060 msgid "Settings" msgstr "Configurações" -#: f.tools.cc:1050 +#: f.tools.cc:1063 msgid "Startup Display" msgstr "Exibição Inicial" -#: f.tools.cc:1072 +#: f.tools.cc:1085 msgid "Recent Files Gallery" msgstr "Arquivos Recentes da Galeria" -#: f.tools.cc:1073 +#: f.tools.cc:1086 msgid "Newest Files Gallery" msgstr "Galeria de Arquivos Recentes" -#: f.tools.cc:1074 +#: f.tools.cc:1087 msgid "Previous Image Viewed" msgstr "Imagem vista Anteriormente" -#: f.tools.cc:1075 +#: f.tools.cc:1088 msgid "Blank Window" msgstr "Janela em Branco" -#: f.tools.cc:1076 +#: f.tools.cc:1089 msgid "Directory Gallery" msgstr "Diretório de Galeria" -#: f.tools.cc:1077 +#: f.tools.cc:1090 msgid "Image File" msgstr "Arquivo de Imagem" -#: f.tools.cc:1093 +#: f.tools.cc:1106 msgid "Menu Style" msgstr "Estilo de Menu" -#: f.tools.cc:1095 +#: f.tools.cc:1108 msgid "Classic" msgstr "Classico" -#: f.tools.cc:1096 +#: f.tools.cc:1109 msgid "Vertical" msgstr "Vertical" -#: f.tools.cc:1098 +#: f.tools.cc:1111 msgid "Toolbar Style" msgstr "Estilo da barra de ferramentas" -#: f.tools.cc:1101 +#: f.tools.cc:1114 msgid "Icons" msgstr "Ícones" -#: f.tools.cc:1102 +#: f.tools.cc:1115 msgid "Both" msgstr "Ambos" -#: f.tools.cc:1104 +#: f.tools.cc:1117 msgid "Image Pan" msgstr "Navegador de Imagem" -#: f.tools.cc:1106 +#: f.tools.cc:1119 msgid "Drag" msgstr "Arrastar" -#: f.tools.cc:1107 +#: f.tools.cc:1120 msgid "Scroll" msgstr "Rolar" -#: f.tools.cc:1108 +#: f.tools.cc:1121 msgid "Magnified" msgstr "Ampliado" -#: f.tools.cc:1111 +#: f.tools.cc:1124 msgid "Warn Overwrite Original" msgstr "Avisar Sobrescrever Original" -#: f.tools.cc:1114 +#: f.tools.cc:1127 msgid "Default JPEG quality" +msgstr "Qualidade JPEG padrão" + +#: f.tools.cc:1131 +msgid "Zooms for 200%" +msgstr "" + +#: f.tools.cc:1142 +msgid "RAW command" +msgstr "" + +#: f.tools.cc:1145 +msgid "RAW file types" msgstr "" -#: f.tools.cc:1261 +#: f.tools.cc:1274 msgid "startup directory is invalid" msgstr "diretório de iniciação é inválido" -#: f.tools.cc:1269 +#: f.tools.cc:1282 msgid "startup file is invalid" msgstr "arquivo de iniação é inválido" -#: f.tools.cc:1368 +#: f.tools.cc:1381 msgid "Select startup directory" msgstr "Selecionar diretório de inicialização" -#: f.tools.cc:1376 +#: f.tools.cc:1389 msgid "Select startup image file" msgstr "Selecionar arquivo de imagem inicial" -#: f.tools.cc:1414 +#: f.tools.cc:1427 msgid "Click list position. Click thumbnail to add." msgstr "Clique na posição da lista. Clique na miniatura para adicionar." -#: f.tools.cc:1439 f.tools.cc:1654 +#: f.tools.cc:1452 f.tools.cc:1667 msgid "Edit Bookmarks" msgstr "Editar Favoritos" -#: f.tools.cc:1585 +#: f.tools.cc:1598 msgid "unable to save bookmarks file" msgstr "incapaz de salvar arquivo de favoritos" -#: f.tools.cc:1654 +#: f.tools.cc:1667 msgid "Go To Bookmark" msgstr "Ir para Favorito" -#: f.tools.cc:1800 +#: f.tools.cc:1811 msgid "Edit KB Shortcuts" msgstr "Editar Atalhos" -#: f.tools.cc:1805 +#: f.tools.cc:1816 msgid "shortcut key:" msgstr "tecla de atalho:" -#: f.tools.cc:1806 +#: f.tools.cc:1817 msgid "(enter keys)" msgstr "(insira teclas)" -#: f.tools.cc:1932 +#: f.tools.cc:1943 #, c-format msgid "\"%s\" Reserved, cannot be used" msgstr "\"%s\" Reservado, não pode ser usado" -#: f.tools.cc:2084 +#: f.tools.cc:2095 msgid "unable to save KB-shortcuts file" msgstr "incapaz de salvar arquivo de atalhos do teclado" -#: f.tools.cc:2154 +#: f.tools.cc:2165 msgid "" "Right-click collection thumbnails to \n" "cut/copy to cache, paste cache, remove." @@ -3178,245 +3418,241 @@ "Clique direito do mouse nas miniaturas da coleção para \n" "recortar/colar para o cache, colar cache, remover." -#: f.tools.cc:2190 +#: f.tools.cc:2201 msgid "Start a new collection" msgstr "Criar nova coleção" -#: f.tools.cc:2192 +#: f.tools.cc:2203 msgid "Collection to view or edit" msgstr "Coleção para ver ou editar " -#: f.tools.cc:2194 +#: f.tools.cc:2205 msgid "Select images, add to cache" msgstr "Selecionar imagens, adicionar ao cache" -#: f.tools.cc:2196 +#: f.tools.cc:2207 msgid "Clear image cache" msgstr "Limpar image em cache" -#: f.tools.cc:2198 +#: f.tools.cc:2209 msgid "Delete a collection" msgstr "Excluir uma Coleção" -#: f.tools.cc:2221 +#: f.tools.cc:2232 msgid "New Collection" msgstr "Nova Coleção" -#: f.tools.cc:2222 +#: f.tools.cc:2233 msgid "Choose Collection" msgstr "Escolher Coleção" -#: f.tools.cc:2223 +#: f.tools.cc:2234 msgid "Delete Collection" msgstr "Excluir Coleção" -#: f.tools.cc:2293 +#: f.tools.cc:2304 #, c-format msgid "delete %s ?" msgstr "excluir %s ?" -#: f.tools.cc:2606 +#: f.tools.cc:2617 msgid "Move collection" msgstr "Mover Coleção" -#: f.tools.cc:2609 +#: f.tools.cc:2620 msgid "collection name" msgstr "Nome de Coleção" -#: f.tools.cc:2612 +#: f.tools.cc:2623 msgid "old top directory" msgstr "diretório superior antigo" -#: f.tools.cc:2615 +#: f.tools.cc:2626 msgid "new top directory" msgstr "novo diretório superior" -#: f.tools.cc:2662 +#: f.tools.cc:2673 msgid "completed" msgstr "completo" -#: f.tools.cc:2752 +#: f.tools.cc:2763 msgid "Press ESC to exit slide show" msgstr "Pressione ESC para sair da apresentação" -#: f.tools.cc:2753 +#: f.tools.cc:2764 msgid "latest versions only" msgstr "última versão apenas" -#: f.tools.cc:2754 +#: f.tools.cc:2765 msgid "continuous loop" msgstr "ciclo contínuo" -#: f.tools.cc:2755 +#: f.tools.cc:2766 msgid "start with current image" msgstr "começar com a imagem atual" -#: f.tools.cc:2759 +#: f.tools.cc:2770 msgid "arrow keys" msgstr "botões de setas" -#: f.tools.cc:2760 +#: f.tools.cc:2771 msgid "instant" msgstr "imediato" -#: f.tools.cc:2761 +#: f.tools.cc:2772 msgid "fade-in" msgstr "esmaecer" -#: f.tools.cc:2762 +#: f.tools.cc:2773 msgid "roll-right" msgstr "rolar para direita" -#: f.tools.cc:2763 +#: f.tools.cc:2774 msgid "roll-down" msgstr "rolar para baixo" -#: f.tools.cc:2764 +#: f.tools.cc:2775 msgid "shift-left" msgstr "deslocar à esquerda" -#: f.tools.cc:2765 +#: f.tools.cc:2776 msgid "venetian" msgstr "veneziano" -#: f.tools.cc:2766 +#: f.tools.cc:2777 msgid "grate" msgstr "grade" -#: f.tools.cc:2767 +#: f.tools.cc:2778 msgid "rectangle" msgstr "retângulo" -#: f.tools.cc:2768 +#: f.tools.cc:2779 msgid "radar" msgstr "radar" -#: f.tools.cc:2769 +#: f.tools.cc:2780 msgid "jaws" msgstr "maxilas" -#: f.tools.cc:2770 +#: f.tools.cc:2781 msgid "ellipse" msgstr "elipse" -#: f.tools.cc:2771 +#: f.tools.cc:2782 msgid "raindrops" msgstr "gotas de chuva" -#: f.tools.cc:2781 f.tools.cc:3866 f.tools.cc:4444 -msgid "0 files selected" -msgstr "0 arquivos selecionados" - -#: f.tools.cc:2783 +#: f.tools.cc:2794 msgid "collection:" msgstr "coleção:" -#: f.tools.cc:2793 +#: f.tools.cc:2804 msgid "music file" msgstr "arquivo de música" -#: f.tools.cc:2801 +#: f.tools.cc:2812 msgid "transitions" msgstr "transições" -#: f.tools.cc:2803 +#: f.tools.cc:2814 msgid "seconds" msgstr "segundos" -#: f.tools.cc:2854 f.tools.cc:3038 f.tools.cc:3060 +#: f.tools.cc:2865 f.tools.cc:3049 f.tools.cc:3071 msgid "no image files selected" msgstr "nenhum arquivo de imagem selecionado" -#: f.tools.cc:3019 +#: f.tools.cc:3030 msgid "open collection" msgstr "abrir coleção" -#: f.tools.cc:3064 +#: f.tools.cc:3075 msgid "save as collection" msgstr "salvar como coleção" -#: f.tools.cc:3077 +#: f.tools.cc:3088 msgid "Select music file or playlist" msgstr "Selecione arquivo de música ou lista de reprodução" -#: f.tools.cc:3868 +#: f.tools.cc:3879 msgid "new base name" msgstr "novo nome de base" -#: f.tools.cc:3871 +#: f.tools.cc:3882 msgid "starting sequence" msgstr "sequência inicial" -#: f.tools.cc:3873 +#: f.tools.cc:3884 msgid "increment" -msgstr "incrementar" +msgstr "incremento" -#: f.tools.cc:3927 +#: f.tools.cc:3938 msgid "new file already exists:" msgstr "novo arquivo já existe:" -#: f.tools.cc:3937 +#: f.tools.cc:3948 msgid "Rename failed:" msgstr "Renomearação falhou:" -#: f.tools.cc:3982 +#: f.tools.cc:3993 msgid "base name / sequence / increment not reasonable" -msgstr "nome base / sequencia / incremento fixo" +msgstr "nome base / sequencia / incremento irracional" -#: f.tools.cc:4085 +#: f.tools.cc:4096 msgid "max. width" msgstr "máx. largura" -#: f.tools.cc:4090 +#: f.tools.cc:4101 msgid "no change" msgstr "sem mudanças" -#: f.tools.cc:4093 +#: f.tools.cc:4104 msgid "new file type" msgstr "novo tipo de arquivo" -#: f.tools.cc:4094 +#: f.tools.cc:4105 msgid "same" msgstr "mesmo" -#: f.tools.cc:4102 +#: f.tools.cc:4113 msgid "replace originals" msgstr "substituir originais" -#: f.tools.cc:4103 +#: f.tools.cc:4114 msgid "move to location" msgstr "mover para localidade" -#: f.tools.cc:4104 +#: f.tools.cc:4115 msgid "remove EXIF" msgstr "remover EXIF" -#: f.tools.cc:4105 +#: f.tools.cc:4116 msgid "delete originals" msgstr "excluir originais" -#: f.tools.cc:4180 +#: f.tools.cc:4191 msgid "file already exists" msgstr "arquivo já existe" -#: f.tools.cc:4188 +#: f.tools.cc:4199 msgid "file type not supported" msgstr "tipo de arquivo não suportado" -#: f.tools.cc:4227 +#: f.tools.cc:4238 msgid "cannot create new file" msgstr "impossível criar novo arquivo" -#: f.tools.cc:4351 +#: f.tools.cc:4362 msgid "replace original files?" msgstr "substituir arquivos originais" -#: f.tools.cc:4352 +#: f.tools.cc:4363 #, c-format msgid "replace original files? (max. %d x %d)" msgstr "substituir arquivos originais? (max. %d x %d)" -#: f.tools.cc:4360 +#: f.tools.cc:4371 #, c-format msgid "" "copy files? \n" @@ -3425,7 +3661,7 @@ "copiar arquivos? \n" " para localidade %s" -#: f.tools.cc:4363 +#: f.tools.cc:4374 #, c-format msgid "" "copy files? (max. %d x %d) \n" @@ -3434,7 +3670,7 @@ "copiar arquivos? (max. %d x %d) \n" " para localização %s" -#: f.tools.cc:4367 +#: f.tools.cc:4378 msgid "" "\n" " and delete originals" @@ -3442,80 +3678,88 @@ "\n" " e excluir originais" -#: f.tools.cc:4380 +#: f.tools.cc:4391 msgid "location is not a valid directory" msgstr "localização não é uma pasta válida" -#: f.tools.cc:4387 +#: f.tools.cc:4398 #, c-format msgid "max. size %d x %d is not reasonable" msgstr "tamanho max. %d x %d não é razoável" -#: f.tools.cc:4447 +#: f.tools.cc:4458 msgid "output file type" msgstr "tipo de arquivo de saída" -#: f.tools.cc:4459 +#: f.tools.cc:4470 msgid "white balance" msgstr "balanço de branco" -#: f.tools.cc:4460 +#: f.tools.cc:4471 msgid "interpolation" msgstr "interpolação" -#: f.tools.cc:4461 +#: f.tools.cc:4472 msgid "color space" msgstr "espaço de cor" -#: f.tools.cc:4462 +#: f.tools.cc:4473 msgid "gamma curve" msgstr "curva de gama" -#: f.tools.cc:4465 +#: f.tools.cc:4476 msgid "camera" msgstr "camera" -#: f.tools.cc:4466 +#: f.tools.cc:4477 msgid "fixed" msgstr "fixado" -#: f.tools.cc:4467 +#: f.tools.cc:4478 msgid "calculated" msgstr "calculado" -#: f.tools.cc:4999 +#: f.tools.cc:4495 +msgid "default" +msgstr "" + +#: f.tools.cc:4501 +msgid "defaults" +msgstr "" + +#: f.tools.cc:5010 msgid "x-spacing" msgstr "espaçamento-x" -#: f.tools.cc:5000 +#: f.tools.cc:5011 msgid "x-count" msgstr "contagem-x" -#: f.tools.cc:5001 +#: f.tools.cc:5012 msgid "x-enable" msgstr "x-habilitado" -#: f.tools.cc:5007 +#: f.tools.cc:5018 msgid "y-spacing" msgstr "espaçamento-y" -#: f.tools.cc:5008 +#: f.tools.cc:5019 msgid "y-count" msgstr "contagem-y" -#: f.tools.cc:5009 +#: f.tools.cc:5020 msgid "y-enable" msgstr "y-habilitado" -#: f.tools.cc:5016 +#: f.tools.cc:5027 msgid "x-offset" msgstr "deslocamento-x" -#: f.tools.cc:5020 +#: f.tools.cc:5031 msgid "y-offset" msgstr "deslocamento-y" -#: f.tools.cc:5444 +#: f.tools.cc:5455 msgid "" "Brightness should show a gradual ramp \n" "extending all the way to the edges." @@ -3523,19 +3767,31 @@ "Brilho deveria mostrar uma inclinação gradual \n" "estendendo-se até as bordas." -#: f.tools.cc:5549 +#: f.tools.cc:5560 msgid "Available Translations" msgstr "Traduções disponíveis" -#: f.tools.cc:5553 +#: f.tools.cc:5564 msgid "Set Language" msgstr "Configurar língua" -#: f.tools.cc:5653 +#: f.tools.cc:5664 msgid "Make Launcher" msgstr "Criar Atalho" -#: fotoxx-13.08.cc:330 +#: fotoxx-13.09.cc:201 +msgid "Tab F: image file view/edit" +msgstr "Aba F: visualizar arquivo-imagem/editar" + +#: fotoxx-13.09.cc:208 +msgid "Tab G: image gallery" +msgstr "Aba G: galeria de imagens" + +#: fotoxx-13.09.cc:215 +msgid "Tab W: world map" +msgstr "Aba W: mapa Mundi" + +#: fotoxx-13.09.cc:339 msgid "" "First time Fotoxx startup. \n" "Latest version: http://www.kornelix.com/fotoxx \n" @@ -3545,43 +3801,69 @@ "Última versão: http://www.kornelix.com/fotoxx \n" "Processo de sincronização de arquivos irá começar (pode levar tempo) \n" -#: fotoxx-13.08.cc:363 +#: fotoxx-13.09.cc:372 msgid "Please install missing programs:" msgstr "Por favor, instale os programas que faltam:" -#: fotoxx-13.08.cc:816 -msgid "Location from World Map" -msgstr "Localidade no Mapa Mundial" +#: fotoxx-13.09.cc:686 +#, c-format +msgid " BUSY %d%c " +msgstr "" + +#: fotoxx-13.09.cc:688 +msgid " BUSY " +msgstr "" + +#: fotoxx-13.09.cc:745 +msgid " (reduced)" +msgstr "" + +#: fotoxx-13.09.cc:753 +#, c-format +msgid " edits: %d" +msgstr "" -#: fotoxx-13.08.cc:2500 +#: fotoxx-13.09.cc:758 +msgid " menu locked" +msgstr "" + +#: fotoxx-13.09.cc:759 +msgid " area active" +msgstr "" + +#: fotoxx-13.09.cc:760 +msgid " dialog open" +msgstr "" + +#: fotoxx-13.09.cc:2538 msgid "Exceed 50 anchor points" msgstr "Excedeu 50 pontos de ancoragem" -#: fotoxx-13.08.cc:2681 +#: fotoxx-13.09.cc:2719 msgid "load curve from a file" msgstr "carregar curva de arquivo" -#: fotoxx-13.08.cc:2735 +#: fotoxx-13.09.cc:2773 msgid "curve file is invalid" msgstr "arquivo de curva inválido" -#: fotoxx-13.08.cc:2740 +#: fotoxx-13.09.cc:2778 msgid "curve file has different no. of curves" msgstr "arquivo de curva tem número de curvas diferente" -#: fotoxx-13.08.cc:2755 +#: fotoxx-13.09.cc:2793 msgid "save curve to a file" msgstr "salvar curva para arquivo" -#: fotoxx-13.08.cc:2853 fotoxx-13.08.cc:3380 fotoxx-13.08.cc:3395 +#: fotoxx-13.09.cc:2891 fotoxx-13.09.cc:3417 fotoxx-13.09.cc:3432 msgid "prior function still active" msgstr "função prévia ainda ativada" -#: fotoxx-13.08.cc:2860 +#: fotoxx-13.09.cc:2898 msgid "Too many edits, please save image" msgstr "Muitas edições, favor salvar imagem" -#: fotoxx-13.08.cc:2875 +#: fotoxx-13.09.cc:2913 msgid "" "Select area not active.\n" "Continue?" @@ -3589,23 +3871,23 @@ "Área selecionada não ativa.\n" "Continuar?" -#: fotoxx-13.08.cc:3350 +#: fotoxx-13.09.cc:3387 msgid "Discard edits?" msgstr "Descartar mudanças?" -#: fotoxx-13.08.cc:3351 +#: fotoxx-13.09.cc:3388 msgid "This action will discard changes\n" msgstr "Esta ação irá descartar mudanças \n" -#: fotoxx-13.08.cc:3352 fotoxx.h:973 +#: fotoxx-13.09.cc:3389 fotoxx.h:994 msgid "Keep" msgstr "Manter" -#: fotoxx-13.08.cc:3353 +#: fotoxx-13.09.cc:3390 msgid "Discard" msgstr "Descartar" -#: fotoxx-13.08.cc:4054 +#: fotoxx-13.09.cc:4088 #, c-format msgid "" "warning: real memory %d MB < required %d MB \n" @@ -3614,212 +3896,224 @@ "aviso: memória física %d MB < requerido %d MB \n" "tempo de resposta pode se tornará muito longo \n" -#: fotoxx.h:936 +#: fotoxx.h:955 msgid "Add All" msgstr "Adicionar todos" -#: fotoxx.h:938 +#: fotoxx.h:957 msgid "Amount" msgstr "Quantidade" -#: fotoxx.h:939 +#: fotoxx.h:958 +msgid "Angle" +msgstr "Ângulo" + +#: fotoxx.h:959 msgid "Apply" msgstr "Aplicar" -#: fotoxx.h:940 +#: fotoxx.h:960 msgid "Autocomplete" msgstr "Autocompletar" -#: fotoxx.h:941 +#: fotoxx.h:961 msgid "Black" msgstr "Preto" -#: fotoxx.h:942 +#: fotoxx.h:962 msgid "Blend Width" msgstr "Quantidade de mistura" -#: fotoxx.h:944 +#: fotoxx.h:964 msgid "Brightness" msgstr "Briho" -#: fotoxx.h:945 +#: fotoxx.h:965 msgid "Browse" msgstr "Procurar" -#: fotoxx.h:946 +#: fotoxx.h:966 msgid "Cancel" msgstr "Cancelar" -#: fotoxx.h:947 +#: fotoxx.h:967 msgid "Choose" msgstr "Escolher" -#: fotoxx.h:948 +#: fotoxx.h:968 msgid "Clear" msgstr "Limpar" -#: fotoxx.h:950 +#: fotoxx.h:970 msgid "Contrast" msgstr "Contraste" -#: fotoxx.h:952 +#: fotoxx.h:972 msgid "Curve File:" msgstr "Arquivo de curva:" -#: fotoxx.h:953 +#: fotoxx.h:973 msgid "Cut" msgstr "Recortar" -#: fotoxx.h:954 +#: fotoxx.h:974 msgid "Darker Areas" msgstr "Áreas mais escuras" -#: fotoxx.h:957 +#: fotoxx.h:977 msgid "Done" msgstr "Pronto" -#: fotoxx.h:958 +#: fotoxx.h:978 msgid "Edit" msgstr "Editar" -#: fotoxx.h:960 +#: fotoxx.h:980 msgid "Erase" msgstr "Apagar" -#: fotoxx.h:961 +#: fotoxx.h:981 msgid "Fetch" msgstr "Buscar" -#: fotoxx.h:962 +#: fotoxx.h:982 msgid "Find" msgstr "Encontrar" -#: fotoxx.h:963 +#: fotoxx.h:983 msgid "Finish" msgstr "Finalizar" -#: fotoxx.h:964 +#: fotoxx.h:984 msgid "Font" msgstr "Fonte" -#: fotoxx.h:966 +#: fotoxx.h:985 +msgid "Geotags" +msgstr "" + +#: fotoxx.h:987 msgid "Height" msgstr "Altura" -#: fotoxx.h:968 +#: fotoxx.h:989 msgid "histogram" msgstr "histograma" -#: fotoxx.h:970 +#: fotoxx.h:991 msgid "Images" msgstr "Imagens" -#: fotoxx.h:971 +#: fotoxx.h:992 msgid "Insert" msgstr "Inserir" -#: fotoxx.h:974 +#: fotoxx.h:995 msgid "Lighter Areas" msgstr "Áreas mais claras" -#: fotoxx.h:975 +#: fotoxx.h:996 msgid "limit" msgstr "limite" -#: fotoxx.h:977 +#: fotoxx.h:998 msgid "Negative" -msgstr "" +msgstr "Negativo" -#: fotoxx.h:978 +#: fotoxx.h:999 msgid "New" msgstr "Novo" -#: fotoxx.h:980 +#: fotoxx.h:1001 msgid "search index file missing" msgstr "arquivo de índice de procura faltando" -#: fotoxx.h:981 +#: fotoxx.h:1002 msgid "OK" msgstr "OK" -#: fotoxx.h:983 +#: fotoxx.h:1004 msgid "Open RAW File" msgstr "Abrir arquivo RAW" -#: fotoxx.h:985 +#: fotoxx.h:1006 msgid "Pause" msgstr "Pausar" -#: fotoxx.h:986 +#: fotoxx.h:1007 msgid "Percent" msgstr "Percentagem" -#: fotoxx.h:987 +#: fotoxx.h:1008 msgid "Presets" msgstr "Predefinições" -#: fotoxx.h:989 +#: fotoxx.h:1010 msgid "Proceed" msgstr "Continuar" -#: fotoxx.h:991 +#: fotoxx.h:1012 msgid "range" msgstr "variação" -#: fotoxx.h:994 +#: fotoxx.h:1015 msgid "Reduce" msgstr "Reduzir" -#: fotoxx.h:997 +#: fotoxx.h:1018 msgid "Reset" msgstr "Redefinir" -#: fotoxx.h:1000 +#: fotoxx.h:1021 msgid "Unknown file type, save as tiff/jpeg/png to edit" msgstr "Tipo de arquivo desconhecido, Salvar como tiff/jpeg/png para editar" -#: fotoxx.h:1001 +#: fotoxx.h:1022 msgid "Search" msgstr "Buscar" -#: fotoxx.h:1005 +#: fotoxx.h:1026 +msgid "Size" +msgstr "Tamanho" + +#: fotoxx.h:1027 msgid "Start" msgstr "Iniciar" -#: fotoxx.h:1006 +#: fotoxx.h:1028 msgid "Threshold" msgstr "Limiar" -#: fotoxx.h:1007 +#: fotoxx.h:1029 #, c-format msgid "exceed %d files" msgstr "excedido %d arquivos" -#: fotoxx.h:1009 +#: fotoxx.h:1031 msgid "Undo All" msgstr "Desfazer tudo" -#: fotoxx.h:1010 +#: fotoxx.h:1032 msgid "Undo Last" msgstr "Desfazer último" -#: fotoxx.h:1012 +#: fotoxx.h:1034 msgid "Unfinish" msgstr "Inacabado" -#: fotoxx.h:1014 +#: fotoxx.h:1036 msgid "View" msgstr "Ver" -#: fotoxx.h:1015 +#: fotoxx.h:1037 msgid "Web" msgstr "Web" -#: fotoxx.h:1016 +#: fotoxx.h:1038 msgid "White" msgstr "Branco" -#: fotoxx.h:1018 +#: fotoxx.h:1040 msgid "Map" msgstr "Mapa" @@ -3827,7 +4121,7 @@ msgid "user guide not found" msgstr "guia de usuário não encontrado" -#: zfuncs.cc:4504 zfuncs.cc:10210 +#: zfuncs.cc:4504 zfuncs.cc:10284 #, c-format msgid "cannot open file %s" msgstr "não foi possível abrir arquivo %s" @@ -3836,77 +4130,81 @@ msgid "save screen to file" msgstr "salvar tela para arquivo" -#: zfuncs.cc:8819 +#: zfuncs.cc:8891 msgid "No" msgstr "Não" -#: zfuncs.cc:8819 +#: zfuncs.cc:8891 msgid "Yes" msgstr "Sim" -#: zfuncs.cc:8898 zfuncs.cc:8938 zfuncs.cc:9277 zfuncs.cc:9595 zfuncs.cc:10323 -#: zfuncs.cc:10329 zfuncs.cc:10335 zfuncs.cc:10341 +#: zfuncs.cc:8970 zfuncs.cc:9012 zfuncs.cc:9351 zfuncs.cc:9669 zfuncs.cc:10397 +#: zfuncs.cc:10403 zfuncs.cc:10409 zfuncs.cc:10415 msgid "cancel" msgstr "cancelar" -#: zfuncs.cc:9239 +#: zfuncs.cc:9313 msgid "open" msgstr "abrir" -#: zfuncs.cc:9244 +#: zfuncs.cc:9318 msgid "choose" msgstr "escolher" -#: zfuncs.cc:9249 +#: zfuncs.cc:9323 msgid "save" msgstr "salvar" -#: zfuncs.cc:9255 +#: zfuncs.cc:9329 msgid "open folder" msgstr "abrir pasta" -#: zfuncs.cc:9260 +#: zfuncs.cc:9334 msgid "create folder" msgstr "criar pasta" -#: zfuncs.cc:9266 +#: zfuncs.cc:9340 msgid "hidden" msgstr "oculto" -#: zfuncs.cc:9327 +#: zfuncs.cc:9344 +msgid "quality" +msgstr "qualidade" + +#: zfuncs.cc:9401 msgid "JPG quality 0-100" msgstr "Qualidade JPG 0-100" -#: zfuncs.cc:9586 +#: zfuncs.cc:9660 #, c-format msgid "printed image width: %.1f height: %.1f cm" msgstr "largura de imagem impressa: %.1f altura: %.1f cm" -#: zfuncs.cc:9595 +#: zfuncs.cc:9669 msgid "done" msgstr "pronto" -#: zfuncs.cc:9595 zfuncs.cc:9607 +#: zfuncs.cc:9669 zfuncs.cc:9681 msgid "margins" msgstr "margens" -#: zfuncs.cc:9603 +#: zfuncs.cc:9677 msgid "top" msgstr "topo" -#: zfuncs.cc:9604 +#: zfuncs.cc:9678 msgid "bottom" msgstr "rodapé" -#: zfuncs.cc:9613 +#: zfuncs.cc:9687 msgid "image scale" msgstr "escala de imagem" -#: zfuncs.cc:9615 +#: zfuncs.cc:9689 msgid "percent" msgstr "porcentagem" -#: zfuncs.cc:10097 +#: zfuncs.cc:10171 msgid "" "Initial parameters file created. \n" "Inspect and revise if necessary." @@ -3914,19 +4212,19 @@ "Arquivo de parâmetros iniciais criado. \n" "Inspecione e revise se necessário." -#: zfuncs.cc:10113 +#: zfuncs.cc:10187 msgid "load parameters from a file" msgstr "carregar parâmetros de arquivo" -#: zfuncs.cc:10182 +#: zfuncs.cc:10256 msgid "save parameters to a file" msgstr "salvar parâmetros para um arquivo" -#: zfuncs.cc:10321 zfuncs.cc:10327 zfuncs.cc:10333 zfuncs.cc:10339 +#: zfuncs.cc:10395 zfuncs.cc:10401 zfuncs.cc:10407 zfuncs.cc:10413 msgid "edit parameters" msgstr "editar parâmetros" -#: zfuncs.cc:10322 zfuncs.cc:10328 +#: zfuncs.cc:10396 zfuncs.cc:10402 msgid "" "list\n" "all" @@ -3934,7 +4232,7 @@ "lista\n" "todos" -#: zfuncs.cc:10322 zfuncs.cc:10328 zfuncs.cc:10334 zfuncs.cc:10340 +#: zfuncs.cc:10396 zfuncs.cc:10402 zfuncs.cc:10408 zfuncs.cc:10414 msgid "" "load\n" "file" @@ -3942,7 +4240,7 @@ "carregar\n" "arquivo" -#: zfuncs.cc:10322 zfuncs.cc:10328 zfuncs.cc:10334 zfuncs.cc:10340 +#: zfuncs.cc:10396 zfuncs.cc:10402 zfuncs.cc:10408 zfuncs.cc:10414 msgid "" "save\n" "file" @@ -3950,7 +4248,7 @@ "salvar\n" "arquivo" -#: zfuncs.cc:10323 zfuncs.cc:10335 +#: zfuncs.cc:10397 zfuncs.cc:10409 msgid "" "add\n" "new" @@ -3958,66 +4256,180 @@ "adicionar\n" "novo" -#: zfuncs.cc:10323 zfuncs.cc:10329 zfuncs.cc:10335 zfuncs.cc:10341 +#: zfuncs.cc:10397 zfuncs.cc:10403 zfuncs.cc:10409 zfuncs.cc:10415 msgid "apply" msgstr "aplicar" -#: zfuncs.cc:10376 +#: zfuncs.cc:10450 msgid "apply?" msgstr "aplicar?" -#: zfuncs.cc:10433 +#: zfuncs.cc:10507 msgid "(new parm name)" msgstr "(novo nome de parâmetro)" -#: zfuncs.cc:10433 +#: zfuncs.cc:10507 msgid "add parameter" msgstr "adicionar parâmetro" -#~ msgid "nothing in cache" -#~ msgstr "nada em cache" +#~ msgid "angle" +#~ msgstr "ângulo" -#~ msgid "new gallery from tab F" -#~ msgstr "nova galeria da aba F" +#~ msgid "cmsCreateTransform() failed" +#~ msgstr "cmsCreateTransform() falhou" -#~ msgid "Convert into a cartoon drawing" -#~ msgstr "Converter em um desenho tipo cartoon" +#~ msgid "no plugin command" +#~ msgstr "nenhum comando de extensões" -#~ msgid "Cartoon" -#~ msgstr "Desenho" +#~ msgid "User Guide etc." +#~ msgstr "Guia de Usuário etc." -#~ msgid "Rotate Left 90 degrees" -#~ msgstr "Rotacionar à Esquerda 90 graus" +#~ msgid "Edit Caption/Comments" +#~ msgstr "Editar Legendas/Comentários" -#~ msgid "Rotate Left" -#~ msgstr "Rotacionar à Esquerda" +#~ msgid "Edit image caption or comment" +#~ msgstr "Editar legenda ou comentário de imagem" -#~ msgid "Rotate Right 90 degrees" -#~ msgstr "Girar à Direita 90 graus" +#~ msgid "Edit image date/rating/tags" +#~ msgstr "Editar data/avaliação/etiquetas de imagem" -#~ msgid "Rotate Right" -#~ msgstr "Rotacionar à Direita" +#~ msgid "Batch Tags" +#~ msgstr "Etiquetas em Lote" -#~ msgid "invert" -#~ msgstr "inverter" +#~ msgid "Edit image geotags" +#~ msgstr "Editar georeferência de imagem" -#~ msgid "Use buttons or drag right edge with mouse" -#~ msgstr "Use os botões ou arrante a borda direita com o mouse" +#~ msgid "Gallery from Tab F" +#~ msgstr "Galeria da Aba F" -#~ msgid "Contrast Saturation" -#~ msgstr "Saturação de Contraste" +#~ msgid "jump to first page" +#~ msgstr "pular para última página" -#~ msgid "Contrast Spread" -#~ msgstr "Dilatação de Contraste" +#~ msgid "jump to last page" +#~ msgstr "pular para última página" -#~ msgid "Contrast Span" -#~ msgstr "Alcance de Contraste" +#~ msgid "change sequence" +#~ msgstr "mudar sequência" -#~ msgid "Cartoon Parameters" -#~ msgstr "Parâmetros do Desenho" +#~ msgid "Edit Caption and Comments" +#~ msgstr "Editar Legenda e Comentários" -#~ msgid "negative" -#~ msgstr "negativo" +#~ msgid "image date (yyyymmdd)" +#~ msgstr "data de imagem (AAAAmmDD)" + +#~ msgid "use last" +#~ msgstr "usar último" + +#~ msgid "image stars" +#~ msgstr "estrelas da imagem" + +#~ msgid "current tags" +#~ msgstr "etiquetas atuais" + +#~ msgid "there are zero stuck pixels" +#~ msgstr "não há pixels presos" + +#~ msgid "Save Stuck Pixels" +#~ msgstr "Salvar Pixels Presos" + +#~ msgid "Overwrite original file?" +#~ msgstr "Sobrescrever arquivo original?" + +#~ msgid "Do not warn again" +#~ msgstr "Não avisar novamente" + +#~ msgid "Warning" +#~ msgstr "Aviso" + +#~ msgid "Save File" +#~ msgstr "Salvar arquivo" + +#~ msgid "Save to Same File" +#~ msgstr "Salvar no mesmo arquivo" + +#~ msgid "Save to the same file (replace)" +#~ msgstr "Salvar no mesmo arquivo (substituir)" + +#~ msgid "Save to New Version" +#~ msgstr "Salvar nova versão" + +#~ msgid "Save to a new (next) version" +#~ msgstr "Salvar uma nova (próxima) versão" + +#~ msgid "Save to New File" +#~ msgstr "Salvar novo arquivo" + +#~ msgid "Save to a new file name" +#~ msgstr "Salvar arquivo com novo nome" + +#~ msgid "Save to the same file" +#~ msgstr "Salvar no mesmo arquivo" + +#~ msgid "Save to a new version" +#~ msgstr "Salvar em nova versão" + +#~ msgid "Save+V" +#~ msgstr "Salvar+V" + +#~ msgid "Save to a new file" +#~ msgstr "Salvar para novo arquivo" + +#~ msgid "Save+F" +#~ msgstr "Salvar+F" #~ msgid "auto-trim" #~ msgstr "auto-recorte" + +#~ msgid "negative" +#~ msgstr "negativo" + +#~ msgid "Cartoon Parameters" +#~ msgstr "Parâmetros do Desenho" + +#~ msgid "Contrast Span" +#~ msgstr "Alcance de Contraste" + +#~ msgid "Contrast Spread" +#~ msgstr "Dilatação de Contraste" + +#~ msgid "Contrast Saturation" +#~ msgstr "Saturação de Contraste" + +#~ msgid "Use buttons or drag right edge with mouse" +#~ msgstr "Use os botões ou arrante a borda direita com o mouse" + +#~ msgid "invert" +#~ msgstr "inverter" + +#~ msgid "Rotate Right" +#~ msgstr "Rotacionar à Direita" + +#~ msgid "Rotate Right 90 degrees" +#~ msgstr "Girar à Direita 90 graus" + +#~ msgid "Rotate Left" +#~ msgstr "Rotacionar à Esquerda" + +#~ msgid "Rotate Left 90 degrees" +#~ msgstr "Rotacionar à Esquerda 90 graus" + +#~ msgid "Cartoon" +#~ msgstr "Desenho" + +#~ msgid "Convert into a cartoon drawing" +#~ msgstr "Converter em um desenho tipo cartoon" + +#~ msgid "new gallery from tab F" +#~ msgstr "nova galeria da aba F" + +#~ msgid "nothing in cache" +#~ msgstr "nada em cache" + +#~ msgid "Adjust Brightness and Color" +#~ msgstr "Ajustar Brilho e Cor" + +#~ msgid "Turn" +#~ msgstr "Rotacionar" + +#~ msgid "Turn Image" +#~ msgstr "Rotacioanar" diff -Nru fotoxx-13.08/locales/translate-ru.po fotoxx-13.09.1/locales/translate-ru.po --- fotoxx-13.08/locales/translate-ru.po 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/locales/translate-ru.po 2013-08-31 06:26:38.000000000 +0000 @@ -1,12 +1,9 @@ -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# Victor Ryzhykh , 2012, 2013. msgid "" msgstr "" -"Project-Id-Version: fotoxx-12.07\n" +"Project-Id-Version: fotoxx-13.08.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-01 22:40+0200\n" -"PO-Revision-Date: 2013-07-28 21:10+0300\n" +"POT-Creation-Date: 2013-08-29 08:25+0200\n" +"PO-Revision-Date: 2013-08-12 12:48+0300\n" "Last-Translator: Nikolay Kachulin \n" "Language-Team: Russian \n" "Language: ru\n" @@ -21,7 +18,7 @@ msgid "Select Area for Edits" msgstr "Выберите область редактирования" -#: f.area.cc:57 f.retouch.cc:2362 +#: f.area.cc:57 f.retouch.cc:2359 msgid "Press F1 for help" msgstr "F1 для вызова справки" @@ -65,7 +62,7 @@ msgid "select all matching colors within mouse" msgstr "выделить все совпадающие цвета вокруг мыши" -#: f.area.cc:114 f.retouch.cc:2397 +#: f.area.cc:114 f.retouch.cc:2394 msgid "mouse radius" msgstr "Радиус пятна" @@ -121,7 +118,7 @@ msgid "found %d pixels" msgstr "Найдено %d пикселей" -#: f.area.cc:1824 f.area.cc:1841 f.area.cc:1861 f.area.cc:2191 +#: f.area.cc:1824 f.area.cc:1841 f.area.cc:1861 f.area.cc:2192 msgid "the area is not finished" msgstr "Область не замкнута" @@ -133,39 +130,35 @@ msgid "Area Edge Calc" msgstr "Расчет границы области" -#: f.area.cc:2265 +#: f.area.cc:2266 msgid "position with mouse click/drag" msgstr "Укажите мышью новое положение" -#: f.area.cc:2290 +#: f.area.cc:2292 msgid "Paste Image" msgstr "Вставить изображение" -#: f.area.cc:2295 +#: f.area.cc:2297 msgid "resize" msgstr "Изменить размер" -#: f.area.cc:2303 -msgid "angle" -msgstr "Угол" - -#: f.area.cc:2565 +#: f.area.cc:2598 msgid "load select area from a file" msgstr "Загрузить выбранную область из файла" -#: f.area.cc:2619 +#: f.area.cc:2652 msgid "save select area to a file" msgstr "Сохранить выбранную область в файл" -#: f.bend.cc:71 f.menus.cc:230 +#: f.bend.cc:71 f.menus.cc:242 msgid "Unbend" msgstr "Выпрямить изображение" -#: f.bend.cc:79 f.image.cc:1485 +#: f.bend.cc:79 f.image.cc:1496 msgid "vertical" msgstr "Вертикаль" -#: f.bend.cc:80 f.image.cc:1484 +#: f.bend.cc:80 f.image.cc:1495 msgid "horizontal" msgstr "Горизонталь" @@ -177,7 +170,7 @@ msgid "curved" msgstr "Изогнутый" -#: f.bend.cc:88 f.bend.cc:1517 f.bend.cc:1789 f.bend.cc:2049 f.image.cc:163 +#: f.bend.cc:88 f.bend.cc:1517 f.bend.cc:1789 f.bend.cc:2049 f.image.cc:172 msgid "Grid" msgstr "Сетка" @@ -189,7 +182,7 @@ "Кликните на четырех углах площади четырехугольника. Нажмите [Применить] \n" "Четырехугольник станет прямоугольником." -#: f.bend.cc:356 f.menus.cc:231 +#: f.bend.cc:356 f.menus.cc:243 msgid "Keystone Correction" msgstr "Коррекция трапецеидальных искажений" @@ -239,7 +232,7 @@ "При необходимости сделайте несколько движений . \n" "Для завершения выберите другую область или нажмите [Изменить]" -#: f.bend.cc:1105 f.menus.cc:233 +#: f.bend.cc:1105 f.menus.cc:245 msgid "Warp area" msgstr "Деформация области" @@ -261,7 +254,7 @@ "При необходимости сделайте несколько движений . \n" "По окончании нажмите [Изменить]." -#: f.bend.cc:1510 f.menus.cc:234 +#: f.bend.cc:1510 f.menus.cc:246 msgid "Warp curved" msgstr "Деформация в кривых" @@ -269,7 +262,7 @@ msgid "warp span" msgstr "область искривления" -#: f.bend.cc:1781 f.menus.cc:235 +#: f.bend.cc:1781 f.menus.cc:247 msgid "Warp linear" msgstr "Деформация линейная" @@ -283,7 +276,7 @@ "При необходимости сделайте несколько движений . \n" "По окончании нажмите [Изменить]" -#: f.bend.cc:2044 f.menus.cc:236 +#: f.bend.cc:2044 f.menus.cc:248 msgid "Warp affine" msgstr "Деформация аффинная" @@ -307,7 +300,7 @@ msgid "reduce" msgstr "Уменьшить" -#: f.color.cc:371 f.menus.cc:224 +#: f.color.cc:371 f.menus.cc:236 msgid "Color Mode" msgstr "Цветовые режимы" @@ -352,10 +345,6 @@ msgid "unknown cms profile %s" msgstr "неизвестный профиль cms %s" -#: f.color.cc:601 -msgid "cmsCreateTransform() failed" -msgstr "ошибка cmsCreateTransform()" - #: f.color.cc:667 msgid "Color Match Images" msgstr "Подобрать цвет изображений" @@ -364,8 +353,8 @@ msgid "mouse radius for color sample" msgstr "Радиус мыши для образца цвета" -#: f.color.cc:696 f.color.cc:701 f.file.cc:3981 f.menus.cc:191 f.menus.cc:278 -#: f.menus.cc:390 fotoxx.h:982 +#: f.color.cc:696 f.color.cc:701 f.file.cc:4034 f.menus.cc:203 f.menus.cc:291 +#: f.menus.cc:401 fotoxx.h:1003 msgid "Open" msgstr "Открыть" @@ -389,11 +378,11 @@ msgid "select source image color first" msgstr "Сначала выберите исходный цвет" -#: f.color.cc:957 f.tools.cc:5134 +#: f.color.cc:957 f.tools.cc:5145 msgid "Click image to select pixels." msgstr "Кликните изображение для выбора пикселей." -#: f.color.cc:995 f.menus.cc:227 +#: f.color.cc:995 f.menus.cc:239 msgid "Revise RGB" msgstr "Просмотреть RGB" @@ -425,15 +414,15 @@ msgid "+Blue -Yellow" msgstr "+Синий -Желтый" -#: f.color.cc:1467 fotoxx.h:992 +#: f.color.cc:1467 fotoxx.h:1013 msgid "Red" msgstr "Красный" -#: f.color.cc:1468 fotoxx.h:965 +#: f.color.cc:1468 fotoxx.h:986 msgid "Green" msgstr "Зеленый" -#: f.color.cc:1469 fotoxx.h:943 +#: f.color.cc:1469 fotoxx.h:963 msgid "Blue" msgstr "Синий" @@ -441,7 +430,7 @@ msgid "Load CMYK parameters" msgstr "Загрузка параметров CMYK" -#: f.color.cc:1614 f.color.cc:1686 f.repair.cc:4008 f.repair.cc:4104 +#: f.color.cc:1614 f.color.cc:1686 f.meta.cc:139 f.repair.cc:4025 msgid "File:" msgstr "Файл:" @@ -449,8 +438,8 @@ msgid "CMYK parameters file" msgstr "Файл параметров CMYK" -#: f.color.cc:1651 f.file.cc:2047 f.meta.cc:1282 f.repair.cc:4048 -#: f.tools.cc:1708 +#: f.color.cc:1651 f.file.cc:2092 f.meta.cc:1451 f.repair.cc:4065 +#: f.tools.cc:1721 msgid "file not found" msgstr "Файл не найден" @@ -479,7 +468,7 @@ msgid "light pixels" msgstr "Светлые пиксели" -#: f.combine.cc:2315 f.meta.cc:169 +#: f.combine.cc:2315 msgid "file:" msgstr "Файл:" @@ -488,7 +477,7 @@ msgstr "Окраска и деформация изображения" #: f.combine.cc:2829 f.combine.cc:3482 f.combine.cc:4897 f.combine.cc:5795 -#: f.menus.cc:58 f.menus.cc:104 +#: f.menus.cc:58 f.menus.cc:119 msgid "Image" msgstr "Изображение" @@ -556,7 +545,7 @@ msgid "no curve (scanned image)" msgstr "кривая отсутствует (сканированное изображение)" -#: f.combine.cc:4348 f.combine.cc:5245 f.menus.cc:198 f.menus.cc:446 +#: f.combine.cc:4348 f.combine.cc:5245 f.menus.cc:210 f.menus.cc:457 msgid "Resize" msgstr "Изменить размер" @@ -593,6 +582,165 @@ "Потяните изображение для грубого выравнивания.\n" "Для вращения потяните за правый край." +#: f.combine.cc:6061 +msgid "Mashup layout and background image" +msgstr "" + +#: f.combine.cc:6090 +msgid "choose an image file" +msgstr "" + +#: f.combine.cc:6091 +msgid "use current image file" +msgstr "" + +#: f.combine.cc:6092 +msgid "open a Mashup project file" +msgstr "" + +#: f.combine.cc:6093 +msgid "specify layout size and color" +msgstr "" + +#: f.combine.cc:6120 +msgid "choose layout file" +msgstr "" + +#: f.combine.cc:6181 +msgid "Edit Images" +msgstr "" + +#: f.combine.cc:6182 f.combine.cc:6931 +msgid "Edit Text" +msgstr "" + +#: f.combine.cc:6183 f.combine.cc:6482 +msgid "Save Project" +msgstr "" + +#: f.combine.cc:6186 +msgid "add or edit images" +msgstr "" + +#: f.combine.cc:6187 +msgid "add or edit text" +msgstr "" + +#: f.combine.cc:6188 +msgid "save project data" +msgstr "" + +#: f.combine.cc:6189 +msgid "project complete" +msgstr "" + +#: f.combine.cc:6190 +msgid "cancel project" +msgstr "" + +#: f.combine.cc:6283 +msgid "Open Project" +msgstr "" + +#: f.combine.cc:6302 +#, c-format +msgid "" +"layout image file missing: \n" +" %s" +msgstr "" + +#: f.combine.cc:6320 +#, c-format +msgid "" +"overlay image file missing: \n" +" %s" +msgstr "" + +#: f.combine.cc:6382 +#, c-format +msgid "" +"layout image file error: \n" +" %s" +msgstr "" + +#: f.combine.cc:6393 +#, c-format +msgid "" +"overlay image file error: \n" +" %s" +msgstr "" + +#: f.combine.cc:6452 +msgid "project file is defective" +msgstr "" + +#: f.combine.cc:6530 +msgid "Click image to select, drag image to move." +msgstr "" + +#: f.combine.cc:6563 +msgid "current image:" +msgstr "" + +#: f.combine.cc:6585 f.combine.cc:6965 f.image.cc:1681 +msgid "Transparency" +msgstr "Прозрачность" + +#: f.combine.cc:6589 +msgid "Edge Blend Width" +msgstr "" + +#: f.combine.cc:6755 +#, c-format +msgid "exceeded %d images" +msgstr "" + +#: f.combine.cc:6906 +msgid "Enter text, click/drag on image." +msgstr "" + +#: f.combine.cc:6936 f.image.cc:1652 f.tools.cc:1113 +msgid "Text" +msgstr "Текст" + +#: f.combine.cc:6954 f.image.cc:1670 +msgid "text" +msgstr "Текст" + +#: f.combine.cc:6955 f.image.cc:1671 +msgid "backing" +msgstr "Фон" + +#: f.combine.cc:6956 f.image.cc:1672 +msgid "outline" +msgstr "Контур" + +#: f.combine.cc:6957 f.image.cc:1673 +msgid "shadow" +msgstr "тень" + +#: f.combine.cc:6959 f.image.cc:1675 f.menus.cc:61 f.menus.cc:122 +#: f.menus.cc:286 fotoxx.h:969 +msgid "Color" +msgstr "Цвет" + +#: f.combine.cc:6971 f.image.cc:1687 fotoxx.h:1039 +msgid "Width" +msgstr "Ширина" + +#: f.combine.cc:6984 f.image.cc:1700 +msgid "Text File:" +msgstr "Текстовый файл:" + +#: f.combine.cc:7046 f.image.cc:1811 +msgid "select font" +msgstr "Выбрать шрифт" + +#: f.combine.cc:7154 +#, c-format +msgid "exceeded %d text entries" +msgstr "" + #: f.effects.cc:44 msgid "Set color depth to 1-16 bits" msgstr "Установите глубину цвета в диапазоне от 1 до 16 бит " @@ -633,7 +781,7 @@ msgid "black/white" msgstr "ч.б" -#: f.effects.cc:983 f.menus.cc:241 +#: f.effects.cc:983 f.menus.cc:253 msgid "Graduated Blur" msgstr "Размытие полутонов" @@ -653,7 +801,7 @@ msgid "depth" msgstr "Глубина" -#: f.effects.cc:1219 f.file.cc:987 +#: f.effects.cc:1219 f.file.cc:1031 msgid "color" msgstr "Цвет" @@ -701,7 +849,7 @@ msgid "borders" msgstr "Кромки" -#: f.effects.cc:2461 f.menus.cc:246 +#: f.effects.cc:2461 f.menus.cc:258 msgid "False Colors" msgstr "Сдвиг цвета" @@ -717,7 +865,7 @@ msgid "Blue: Red" msgstr "Голубой: Красный" -#: f.effects.cc:2669 f.menus.cc:247 +#: f.effects.cc:2669 f.menus.cc:259 msgid "Vignette" msgstr "Инструмент виньетка" @@ -725,7 +873,7 @@ msgid "center" msgstr "Центр" -#: f.effects.cc:2700 f.retouch.cc:2402 +#: f.effects.cc:2700 f.retouch.cc:2399 msgid "edge" msgstr "Кромка" @@ -733,47 +881,55 @@ msgid "no newly added files found" msgstr "новых файлов не найдено" -#: f.file.cc:275 +#: f.file.cc:307 msgid "no more images" msgstr "последнее изображение" -#: f.file.cc:343 f.menus.cc:136 f.menus.cc:457 +#: f.file.cc:347 f.menus.cc:151 f.menus.cc:468 msgid "Open RAW file (ufraw)" msgstr "Открыть RAW файл (ufraw)" -#: f.file.cc:347 +#: f.file.cc:351 msgid "RAW type not registered in User Settings" msgstr "Данный тип RAW отсутствует в настройках пользователя" -#: f.file.cc:367 -msgid "Overwrite original file?" -msgstr "Перезаписать оригинальный файл?" - -#: f.file.cc:368 -msgid "Do not warn again" -msgstr "Не предупреждать в следующий раз " - -#: f.file.cc:383 -msgid "Warning" -msgstr "Предостережение" - -#: f.file.cc:495 -msgid "Save File" -msgstr "Сохранить файл" +#: f.file.cc:401 +msgid "Save Image File" +msgstr "" -#: f.file.cc:528 zfuncs.cc:9270 -msgid "quality" -msgstr "Качество" +#: f.file.cc:411 +msgid "new version" +msgstr "" + +#: f.file.cc:412 +msgid "new file name" +msgstr "" + +#: f.file.cc:413 +msgid "replace file" +msgstr "" + +#: f.file.cc:419 +msgid "save as new file version" +msgstr "" + +#: f.file.cc:420 f.file.cc:548 +msgid "save as new file name or type" +msgstr "" -#: f.file.cc:530 +#: f.file.cc:421 +msgid "replace old file (OVERWRITE)" +msgstr "" + +#: f.file.cc:564 msgid "make current" msgstr "Сделать текущим" -#: f.file.cc:625 +#: f.file.cc:657 msgid "jpeg quality must be 1-100" msgstr "Качество jpeg должно быть 1-100" -#: f.file.cc:653 +#: f.file.cc:683 #, c-format msgid "" "Overwrite file? \n" @@ -782,31 +938,31 @@ "Перезаписать файл? \n" " %s" -#: f.file.cc:799 f.menus.cc:140 +#: f.file.cc:843 f.menus.cc:153 msgid "Rename Image File" msgstr "Переименовать файл изображения" -#: f.file.cc:806 +#: f.file.cc:850 msgid "old name" msgstr "Старое имя" -#: f.file.cc:807 +#: f.file.cc:851 msgid "new name" msgstr "новое имя" -#: f.file.cc:816 +#: f.file.cc:860 msgid "previous name" msgstr "предыдущее имя" -#: f.file.cc:817 +#: f.file.cc:861 msgid "add 1" msgstr "Плюс 1" -#: f.file.cc:895 f.file.cc:1248 +#: f.file.cc:939 f.file.cc:1292 msgid "target file already exists" msgstr "Целевой файл уже существует" -#: f.file.cc:922 f.file.cc:1270 f.file.cc:1388 +#: f.file.cc:966 f.file.cc:1314 f.file.cc:1432 #, c-format msgid "" "delete failed: \n" @@ -815,59 +971,59 @@ "Удаление не удалось: \n" " %s" -#: f.file.cc:971 +#: f.file.cc:1015 msgid "Create Blank Image" msgstr "Создать пустое изображение" -#: f.file.cc:973 +#: f.file.cc:1017 msgid "file name" msgstr "Имя файла" -#: f.file.cc:978 f.image.cc:470 +#: f.file.cc:1022 f.image.cc:479 msgid "width" msgstr "Ширина" -#: f.file.cc:981 f.image.cc:473 f.tools.cc:4088 +#: f.file.cc:1025 f.image.cc:482 f.tools.cc:4099 msgid "height" msgstr "Высота" -#: f.file.cc:1156 +#: f.file.cc:1200 msgid "Copy Image File" msgstr "Копировать изображение" -#: f.file.cc:1158 +#: f.file.cc:1202 msgid "Move Image File" msgstr "Переместить изображение" -#: f.file.cc:1164 f.file.cc:1343 f.file.cc:1464 +#: f.file.cc:1208 f.file.cc:1387 f.file.cc:1508 msgid "image file" msgstr "Файл изображения" -#: f.file.cc:1169 +#: f.file.cc:1213 msgid "new location" msgstr "Новое расположение" -#: f.file.cc:1203 f.tools.cc:4317 +#: f.file.cc:1247 f.tools.cc:4328 msgid "Select directory" msgstr "Выбрать каталог" -#: f.file.cc:1233 +#: f.file.cc:1277 msgid "new location is not a directory" msgstr "Местоположение каталога не действительно" -#: f.file.cc:1307 +#: f.file.cc:1351 msgid "Delete Image File - CANNOT BE REVERSED" msgstr "Удаление изображения (НЕОБРАТИМО!)" -#: f.file.cc:1308 f.file.cc:1430 +#: f.file.cc:1352 f.file.cc:1474 msgid "(automatic step to next image)" msgstr "(автоматический переход к следующему изображению)" -#: f.file.cc:1429 f.menus.cc:142 +#: f.file.cc:1473 f.menus.cc:155 msgid "Trash Image File" msgstr "Поместить изображение в корзину" -#: f.file.cc:1494 +#: f.file.cc:1538 msgid "" "Linux standard trash does not work. \n" "Desktop trash folder will be created." @@ -875,7 +1031,7 @@ "Стандартная корзина Linux не работает \n" "Корзина будет создана на рабочем столе." -#: f.file.cc:1497 +#: f.file.cc:1541 msgid "" "Linux and Desktop trash do not work. \n" "Permanently delete the image file?" @@ -883,1479 +1039,1515 @@ "Корзина для Linux не работает. \n" "Удалить файл окончательно?" -#: f.file.cc:1527 +#: f.file.cc:1571 msgid "Move read-only file to trash?" msgstr "Переместить файл только для чтения в корзину?" -#: f.file.cc:1556 +#: f.file.cc:1600 #, c-format msgid "Cannot create trash folder: %s" msgstr "Не удалось создать папку корзины: %s" -#: f.file.cc:1569 zfuncs.cc:4211 +#: f.file.cc:1613 zfuncs.cc:4211 #, c-format msgid "error: %s" msgstr "Ошибка: %s" -#: f.file.cc:1588 +#: f.file.cc:1632 #, c-format msgid "delete failed: %s" msgstr "Удаление не удалось: %s" -#: f.file.cc:2041 f.menus.cc:132 +#: f.file.cc:2086 f.menus.cc:147 msgid "Open Image File" msgstr "Открыть файл изображения" -#: f.file.cc:2059 +#: f.file.cc:2104 msgid "unknown file type" msgstr "неизвестный тип файла" -#: f.file.cc:2341 +#: f.file.cc:2385 msgid "Unable to copy EXIF/IPTC data" msgstr "Невозможно скопировать данные EXIF/IPTC" -#: f.file.cc:2404 f.file.cc:2465 +#: f.file.cc:2448 f.file.cc:2509 #, c-format msgid "file not found: %s" msgstr "Файл не найден: %s" -#: f.file.cc:2409 f.file.cc:2470 +#: f.file.cc:2453 f.file.cc:2514 #, c-format msgid "file type not supported: %s" msgstr "тип файла не поддерживается: %s" -#: f.file.cc:3982 f.menus.cc:390 +#: f.file.cc:4035 msgid "change directory" msgstr "Смена каталога" -#: f.file.cc:3990 f.menus.cc:391 +#: f.file.cc:4043 f.menus.cc:402 msgid "GoTo" msgstr "Переход" -#: f.file.cc:4005 f.menus.cc:400 +#: f.file.cc:4058 f.menus.cc:405 msgid "Sort" msgstr "Сортировка" -#: f.file.cc:4036 f.file.cc:4360 f.menus.cc:398 +#: f.file.cc:4089 f.file.cc:4420 f.menus.cc:410 msgid "Row↑" msgstr "Строка↑" -#: f.file.cc:4048 f.file.cc:4361 f.menus.cc:399 +#: f.file.cc:4101 f.file.cc:4421 f.menus.cc:411 msgid "Row↓" msgstr "Строка↓" -#: f.file.cc:4060 f.file.cc:4363 f.menus.cc:394 +#: f.file.cc:4113 f.file.cc:4423 f.menus.cc:406 msgid "First" msgstr "В начало" -#: f.file.cc:4061 f.file.cc:4364 f.menus.cc:395 +#: f.file.cc:4114 f.file.cc:4424 f.menus.cc:407 msgid "Last" msgstr "В конец" -#: f.file.cc:4062 f.file.cc:4358 f.file.cc:4365 f.menus.cc:396 +#: f.file.cc:4115 f.file.cc:4418 f.file.cc:4425 f.menus.cc:408 msgid "Page↑" msgstr "Страница↑" -#: f.file.cc:4063 f.file.cc:4359 f.file.cc:4366 f.menus.cc:397 +#: f.file.cc:4116 f.file.cc:4419 f.file.cc:4426 f.menus.cc:409 msgid "Page↓" msgstr "Страница↓" -#: f.file.cc:4114 f.tools.cc:940 +#: f.file.cc:4167 f.tools.cc:953 msgid "Choose top image directory" msgstr "Выберите каталог изображений верхнего уровня" -#: f.file.cc:4120 f.file.cc:4134 +#: f.file.cc:4173 f.file.cc:4187 msgid "recent" msgstr "недавние" -#: f.file.cc:4121 f.file.cc:4139 +#: f.file.cc:4174 f.file.cc:4192 msgid "newest" msgstr "новые" -#: f.file.cc:4170 +#: f.file.cc:4223 msgid "Gallery Sort" msgstr "Сортировка галереи" -#: f.file.cc:4174 +#: f.file.cc:4227 msgid "File Name" msgstr "Имя файла" -#: f.file.cc:4175 +#: f.file.cc:4228 msgid "File Mod Date/Time" msgstr "Время/Дата модификации" -#: f.file.cc:4176 +#: f.file.cc:4229 msgid "Photo Date/Time (EXIF)" msgstr "Дата/время изображения (EXIF)" -#: f.file.cc:4178 +#: f.file.cc:4231 msgid "ascending" msgstr "по нарастанию" -#: f.file.cc:4179 +#: f.file.cc:4232 msgid "descending" msgstr "по убыванию" -#: f.file.cc:4352 f.file.cc:4353 f.file.cc:4355 +#: f.file.cc:4412 f.file.cc:4413 f.file.cc:4415 f.menus.cc:403 msgid "Zoom+" msgstr "Увеличить" -#: f.file.cc:4354 f.file.cc:4356 +#: f.file.cc:4414 f.file.cc:4416 f.menus.cc:404 msgid "Zoom-" msgstr "Уменьшить" -#: f.file.cc:5192 fotoxx.h:1003 +#: f.file.cc:5253 fotoxx.h:1024 msgid "Select Files" msgstr "Выбрать файлы" -#: f.file.cc:5668 fotoxx.h:935 +#: f.file.cc:5729 fotoxx.h:954 msgid "Add" msgstr "Добавить" -#: f.file.cc:5668 fotoxx.h:995 +#: f.file.cc:5729 fotoxx.h:1016 msgid "Remove" msgstr "Удалить" -#: f.file.cc:5670 +#: f.file.cc:5731 msgid "menu name" msgstr "Имя меню" -#: f.file.cc:5740 f.file.cc:5761 +#: f.file.cc:5801 f.file.cc:5822 msgid "Restart Fotoxx to update plugin menu" msgstr "Перезапустить Fotoxx для обновления меню плагинов" -#: f.file.cc:5803 -msgid "no plugin command" +#: f.file.cc:5864 +msgid "Plugins menu is empty" msgstr "" -#: f.file.cc:5831 +#: f.file.cc:5892 msgid "plugin failed" msgstr "сбой плагина" -#: f.image.cc:47 -msgid "Turn Image" -msgstr "" +#: f.image.cc:50 +msgid "Rotate Image 90º" +msgstr "Повернуть 90º" + +#: f.image.cc:54 +msgid "rotate -90º" +msgstr "Повернуть -90º" + +#: f.image.cc:55 +msgid "rotate +90º" +msgstr "Повернуть +90º" -#: f.image.cc:114 +#: f.image.cc:123 msgid "Drag right edge with mouse" msgstr "Потяните праый край мышью" -#: f.image.cc:144 +#: f.image.cc:153 msgid "Rotate Image" msgstr "Повернуть изображение" -#: f.image.cc:148 zfuncs.cc:9605 +#: f.image.cc:157 zfuncs.cc:9679 msgid "left" msgstr "Слева" -#: f.image.cc:151 zfuncs.cc:9606 +#: f.image.cc:160 zfuncs.cc:9680 msgid "right" msgstr "Правый" -#: f.image.cc:157 +#: f.image.cc:166 msgid "degrees" msgstr "Градусы" -#: f.image.cc:442 +#: f.image.cc:451 msgid "Drag middle to move, drag corners to resize." msgstr "Потяните за середину для перемещения, за углы для изменения размера." -#: f.image.cc:465 f.menus.cc:196 f.menus.cc:445 +#: f.image.cc:474 f.menus.cc:208 f.menus.cc:456 msgid "Trim/Crop" msgstr "Обрезать изображение" -#: f.image.cc:476 f.image.cc:756 +#: f.image.cc:485 f.image.cc:765 msgid "ratio" msgstr "Соотношение" -#: f.image.cc:480 +#: f.image.cc:489 msgid "portrait" msgstr "портрет" -#: f.image.cc:481 +#: f.image.cc:490 msgid "landscape" msgstr "ландшафт" -#: f.image.cc:482 +#: f.image.cc:491 msgid "Lock Ratio" msgstr "Фиксированное соотношение" -#: f.image.cc:486 +#: f.image.cc:495 msgid "customize" msgstr "Настроить" -#: f.image.cc:748 +#: f.image.cc:757 msgid "Trim Buttons" msgstr "Кнопки обрезки" -#: f.image.cc:755 +#: f.image.cc:764 msgid "label" msgstr "Метка" -#: f.image.cc:1277 +#: f.image.cc:1286 msgid "Lock aspect ratio" msgstr "Зафиксировать соотношение сторон" -#: f.image.cc:1298 +#: f.image.cc:1307 msgid "Resize Image" msgstr "Изменить размер изображения" -#: f.image.cc:1480 f.menus.cc:199 +#: f.image.cc:1491 f.menus.cc:211 msgid "Flip" msgstr "Отразить зеркально" -#: f.image.cc:1604 +#: f.image.cc:1610 msgid "Enter text, click/drag on image, right click to remove" msgstr "" "Введите текст, кликните/переместите по изображению, клик правой кнопкой для " "удаления" -#: f.image.cc:1631 +#: f.image.cc:1645 msgid "Write Text on Image" msgstr "Написать текст на изображении" -#: f.image.cc:1638 f.tools.cc:1100 -msgid "Text" -msgstr "Текст" - -#: f.image.cc:1645 -msgid "Size" -msgstr "Размер" - -#: f.image.cc:1656 -msgid "text" -msgstr "Текст" - -#: f.image.cc:1657 -msgid "backing" -msgstr "Фон" - -#: f.image.cc:1658 -msgid "outline" -msgstr "Контур" - -#: f.image.cc:1659 -msgid "shadow" -msgstr "тень" - -#: f.image.cc:1661 f.menus.cc:61 f.menus.cc:107 f.menus.cc:273 fotoxx.h:949 -msgid "Color" -msgstr "Цвет" - -#: f.image.cc:1667 -msgid "Transparency" -msgstr "Прозрачность" - -#: f.image.cc:1673 fotoxx.h:1017 -msgid "Width" -msgstr "Ширина" - -#: f.image.cc:1679 -msgid "Angle" -msgstr "Угол" - -#: f.image.cc:1686 -msgid "Text File:" -msgstr "Текстовый файл:" - -#: f.image.cc:1764 -msgid "select font" -msgstr "Выбрать шрифт" +#: f.image.cc:2312 +msgid "text file is defective" +msgstr "" -#: f.menus.cc:54 f.menus.cc:100 +#: f.menus.cc:54 f.menus.cc:115 msgid "File" msgstr "Файл" -#: f.menus.cc:55 f.menus.cc:101 +#: f.menus.cc:55 f.menus.cc:116 msgid "Tools" msgstr "Инструменты" -#: f.menus.cc:56 f.menus.cc:102 +#: f.menus.cc:56 f.menus.cc:117 msgid "Metadata" msgstr "Метаданные" -#: f.menus.cc:57 f.menus.cc:103 +#: f.menus.cc:57 f.menus.cc:118 msgid "Areas" msgstr "Области" -#: f.menus.cc:59 f.menus.cc:105 +#: f.menus.cc:59 f.menus.cc:120 msgid "Retouch" msgstr "Ретушь" -#: f.menus.cc:60 f.menus.cc:106 +#: f.menus.cc:60 f.menus.cc:121 msgid "Repair" msgstr "Исправить" -#: f.menus.cc:62 f.menus.cc:108 +#: f.menus.cc:62 f.menus.cc:123 msgid "Bend" msgstr "Деформация" -#: f.menus.cc:63 f.menus.cc:109 +#: f.menus.cc:63 f.menus.cc:124 msgid "Effects" msgstr "Эффекты" -#: f.menus.cc:64 f.menus.cc:110 +#: f.menus.cc:64 f.menus.cc:125 msgid "Combine" msgstr "Объединение" -#: f.menus.cc:65 f.menus.cc:111 +#: f.menus.cc:65 f.menus.cc:126 msgid "Plugins" msgstr "Плагины" -#: f.menus.cc:66 f.menus.cc:112 fotoxx-13.08.cc:3631 fotoxx.h:967 +#: f.menus.cc:66 f.menus.cc:127 fotoxx-13.09.cc:3664 fotoxx.h:988 msgid "Help" msgstr "Справка" -#: f.menus.cc:99 f.menus.cc:271 +#: f.menus.cc:99 f.menus.cc:284 msgid "Favorites Menu" msgstr "Пользовательское меню" +#: f.menus.cc:100 +msgid "Open, Save, Trash, Rename, Print" +msgstr "" + +#: f.menus.cc:101 +msgid "Synch Files, Settings, Collections, Batch Funcs ..." +msgstr "" + +#: f.menus.cc:102 +msgid "Captions, Tags, Ratings, Geotags, Search ... " +msgstr "" + +#: f.menus.cc:103 +msgid "Select image areas to edit, copy and paste" +msgstr "" + +#: f.menus.cc:104 +msgid "Rotate, Trim/Crop, Resize, Add Text" +msgstr "" + +#: f.menus.cc:105 +msgid "Improve brightness, contrast, color ..." +msgstr "" + +#: f.menus.cc:106 +msgid "Sharpen, Clean, Red-eyes, Paint, Clone ..." +msgstr "" + +#: f.menus.cc:107 +msgid "White Balance, Color Profile, Color Matching" +msgstr "" + +#: f.menus.cc:108 +msgid "Fix Perspective, Bend/Warp image ..." +msgstr "" + +#: f.menus.cc:109 +msgid "Special Effects, Arty Transforms" +msgstr "" + +#: f.menus.cc:110 +msgid "HDR, HDF, Panorama, Stack, Mashup" +msgstr "" + +#: f.menus.cc:111 +msgid "Use other image editors within Fotoxx" +msgstr "" + #: f.menus.cc:112 -msgid "User Guide etc." -msgstr "Руководство пользователя etc." +msgid "Quick Start, User Guide, Recent Changes ..." +msgstr "" -#: f.menus.cc:131 +#: f.menus.cc:146 msgid "New Window" msgstr "Новое окно" -#: f.menus.cc:131 +#: f.menus.cc:146 msgid "Open another window" msgstr "Открыть другое окно" -#: f.menus.cc:132 f.menus.cc:278 +#: f.menus.cc:147 f.menus.cc:291 msgid "Open a new image file" msgstr "Открыть новый файл изображения" -#: f.menus.cc:133 +#: f.menus.cc:148 msgid "Open Previous File" msgstr "Открыть предыдущий файл" -#: f.menus.cc:133 +#: f.menus.cc:148 msgid "Open the previously seen file" msgstr "Открыть ранее просмотренный файл" -#: f.menus.cc:134 +#: f.menus.cc:149 msgid "Open a recently seen file" msgstr "Открыть недавно просмотренный файл" -#: f.menus.cc:134 +#: f.menus.cc:149 msgid "Recently Seen Images" msgstr "Недавно просмотренные изображения" -#: f.menus.cc:135 +#: f.menus.cc:150 msgid "Newly Added Images" msgstr "Недавно добавленные изображения" -#: f.menus.cc:135 +#: f.menus.cc:150 msgid "Open a newly added file" msgstr "Открыть добавленный файл" -#: f.menus.cc:136 +#: f.menus.cc:151 msgid "Open and edit a camera RAW file" msgstr "Открыть и редактировать RAW файл" -#: f.menus.cc:137 -msgid "Save to Same File" -msgstr "Сохранить в тот же файл" - -#: f.menus.cc:137 -msgid "Save to the same file (replace)" -msgstr "Сохранить в тот же файл (заменить)" - -#: f.menus.cc:138 -msgid "Save to New Version" -msgstr "Сохранить как новую версию " - -#: f.menus.cc:138 -msgid "Save to a new (next) version" -msgstr "Сохранить в новой (следующей) версии" - -#: f.menus.cc:139 -msgid "Save to New File" -msgstr "Сохранить в новый файл" - -#: f.menus.cc:139 -msgid "Save to a new file name" -msgstr "Сохранить в файл с новым именем" +#: f.menus.cc:152 f.menus.cc:294 +msgid "Save modified image file to disk" +msgstr "" -#: f.menus.cc:140 +#: f.menus.cc:152 +msgid "Save to Disk" +msgstr "" + +#: f.menus.cc:153 msgid "Change the image file name" msgstr "Переименовать файл изображения" -#: f.menus.cc:141 +#: f.menus.cc:154 msgid "Create a blank image" msgstr "Создать пустое изображение" -#: f.menus.cc:141 +#: f.menus.cc:154 msgid "New Blank Image" msgstr "Новое пустое изображение" -#: f.menus.cc:142 f.menus.cc:284 +#: f.menus.cc:155 f.menus.cc:295 msgid "Move image file to Trash" msgstr "Переместить файл изображения в корзину?" -#: f.menus.cc:143 +#: f.menus.cc:156 msgid "Print Image" msgstr "Печать изображения" -#: f.menus.cc:143 +#: f.menus.cc:156 msgid "Print the current image" msgstr "Печатать текущее изображения" -#: f.menus.cc:144 +#: f.menus.cc:157 msgid "Quit Fotoxx" msgstr "Выход из fotoxx" -#: f.menus.cc:146 +#: f.menus.cc:159 msgid "Index new files and make thumbnails" msgstr "Индексировать новые файлы и сделать миниатюры" -#: f.menus.cc:146 f.tools.cc:182 f.tools.cc:364 +#: f.menus.cc:159 f.tools.cc:182 f.tools.cc:364 msgid "Synchronize Files" msgstr "Синхронизация файлов" -#: f.menus.cc:147 +#: f.menus.cc:160 msgid "Change user preferences" msgstr "Изменение пользовательских настроек" -#: f.menus.cc:147 +#: f.menus.cc:160 msgid "User Settings" msgstr "Настройки пользователя" -#: f.menus.cc:148 +#: f.menus.cc:161 msgid "Change Keyboard Shortcut Keys" msgstr "Изменить горячие клавиши" -#: f.menus.cc:148 +#: f.menus.cc:161 msgid "Keyboard Shortcuts" msgstr "Сочетания клавиш" -#: f.menus.cc:149 f.tools.cc:2179 +#: f.menus.cc:162 f.tools.cc:2190 msgid "Manage Collections" msgstr "Управление коллекциями" -#: f.menus.cc:149 +#: f.menus.cc:162 msgid "Organize images into collections" msgstr "Организовать изображений в коллекцию" -#: f.menus.cc:150 +#: f.menus.cc:163 msgid "Convert for a new top directory" msgstr "Перенести в новый каталог верхнего уровня" -#: f.menus.cc:150 +#: f.menus.cc:163 msgid "Move Collections" msgstr "Переместить коллекции" -#: f.menus.cc:151 f.tools.cc:2778 +#: f.menus.cc:164 f.tools.cc:2789 msgid "Slide Show" msgstr "Слайд-шоу" -#: f.menus.cc:151 +#: f.menus.cc:164 msgid "Start a slide show" msgstr "Запустить слайд-шоу" -#: f.menus.cc:152 f.tools.cc:3863 +#: f.menus.cc:165 f.tools.cc:3874 msgid "Batch Rename" msgstr "Групповое переименование" -#: f.menus.cc:152 +#: f.menus.cc:165 msgid "Rename multiple image files" msgstr "Пакетное переименование файлов изображений" -#: f.menus.cc:153 f.tools.cc:4078 +#: f.menus.cc:166 f.tools.cc:4089 msgid "Batch Convert/Resize/Move" msgstr "Групповое преобразование/изменение размера/экспорт" -#: f.menus.cc:153 +#: f.menus.cc:166 msgid "Convert resize, move multiple files" msgstr "Изменение размера, перемещение нескольких файлов" -#: f.menus.cc:154 f.tools.cc:4416 +#: f.menus.cc:167 f.tools.cc:4427 msgid "Batch Convert RAW Files" msgstr "Пакетное преобразования файлов RAW" -#: f.menus.cc:154 +#: f.menus.cc:167 msgid "Convert multiple camera RAW files" msgstr "Пакетное преобразование RAW файлов" -#: f.menus.cc:155 f.tools.cc:4795 +#: f.menus.cc:168 f.tools.cc:4806 msgid "Brightness Distribution" msgstr "Распределение яркости" -#: f.menus.cc:155 +#: f.menus.cc:168 msgid "Show a brightness distribution graph" msgstr "Показать график распределения яркости" -#: f.menus.cc:156 f.menus.cc:455 f.tools.cc:4990 +#: f.menus.cc:169 f.menus.cc:466 f.tools.cc:5001 msgid "Grid Lines" msgstr "Линии сетки" -#: f.menus.cc:156 +#: f.menus.cc:169 msgid "Show or revise grid lines" msgstr "Показать или изменить линии сетки" -#: f.menus.cc:157 f.tools.cc:5166 +#: f.menus.cc:170 f.tools.cc:5177 msgid "Show RGB" msgstr "Показать RGB" -#: f.menus.cc:157 +#: f.menus.cc:170 msgid "Show RGB colors at mouse click" msgstr "Показать цвета RGB при щелчке мышью" -#: f.menus.cc:158 +#: f.menus.cc:171 msgid "Chart to adjust monitor color" msgstr "График для настройки цвета монитора" -#: f.menus.cc:158 +#: f.menus.cc:171 msgid "Monitor Color" msgstr "Цветность монитора" -#: f.menus.cc:159 +#: f.menus.cc:172 msgid "Chart to adjust monitor gamma" msgstr "График для настройки гаммы монитора" -#: f.menus.cc:159 f.tools.cc:5490 +#: f.menus.cc:172 f.tools.cc:5501 msgid "Monitor Gamma" msgstr "Гамма монитора" -#: f.menus.cc:160 +#: f.menus.cc:173 msgid "Change Language" msgstr "Изменить язык" -#: f.menus.cc:160 +#: f.menus.cc:173 msgid "Change the GUI language" msgstr "Изменение языка GUI" -#: f.menus.cc:161 +#: f.menus.cc:174 msgid "Missing Translations" msgstr "Пропущен перевод" -#: f.menus.cc:161 +#: f.menus.cc:174 msgid "Report missing translations" msgstr "Сообщить о пропущенном переводе" -#: f.menus.cc:162 +#: f.menus.cc:175 msgid "Edit Translations" msgstr "Редактировать перевод" -#: f.menus.cc:162 +#: f.menus.cc:175 msgid "Edit translations while using Fotoxx" msgstr "Редактировать перевод в процессе использования Fotoxx" -#: f.menus.cc:163 +#: f.menus.cc:176 msgid "Create a Gnome menu and launcher" msgstr "Создать элемент меню Gnome и лаунчер" -#: f.menus.cc:163 +#: f.menus.cc:176 msgid "Menu and Launcher" msgstr "Меню и лаунчер" -#: f.menus.cc:164 +#: f.menus.cc:177 msgid "Burn Images to CD/DVD" msgstr "Записать изображения на CD/DVD" -#: f.menus.cc:164 +#: f.menus.cc:177 msgid "Burn selected image files to CD or DVD" msgstr "Записать изображения на CD/DVD" -#: f.menus.cc:165 +#: f.menus.cc:178 msgid "Memory and CPU (to terminal/logfile)" msgstr "Память и ЦПУ (в терминал/лог файл)" -#: f.menus.cc:165 +#: f.menus.cc:178 msgid "Resources" msgstr "Ресурсы" -#: f.menus.cc:167 -msgid "Edit Caption/Comments" -msgstr "Изменить подпись/ комментарии" - -#: f.menus.cc:167 -msgid "Edit image caption or comment" -msgstr "Изменить подпись/ комментарии" - -#: f.menus.cc:168 f.meta.cc:165 f.meta.cc:1728 +#: f.menus.cc:180 f.meta.cc:110 f.meta.cc:1897 msgid "Edit Metadata" msgstr "Редактировать метаданные" -#: f.menus.cc:168 -msgid "Edit image date/rating/tags" -msgstr "Редактировать дату/рейтинг/теги" +#: f.menus.cc:180 +msgid "Edit image tags/caption/rating ..." +msgstr "" -#: f.menus.cc:169 +#: f.menus.cc:181 msgid "Add/remove tags for multiple images" msgstr "Групповое изменение тэгов" -#: f.menus.cc:169 -msgid "Batch Tags" -msgstr "Пакетное изменение тэгов" +#: f.menus.cc:181 f.meta.cc:1552 +msgid "Batch Add/Remove Tags" +msgstr "Групповое добавление/удаление тэгов" -#: f.menus.cc:170 +#: f.menus.cc:182 msgid "List a few key metadata items" msgstr "Список ключевых элементов метаданных" -#: f.menus.cc:170 +#: f.menus.cc:182 msgid "View Metadata (short)" msgstr "Просмотр метаданных (коротко)" -#: f.menus.cc:171 +#: f.menus.cc:183 msgid "List all metadata items" msgstr "Список всех элементов метаданных" -#: f.menus.cc:171 +#: f.menus.cc:183 msgid "View Metadata (long)" msgstr "Просмотр метаданных (полностью)" -#: f.menus.cc:172 +#: f.menus.cc:184 msgid "Edit Any Metadata" msgstr "Редактировать любые метаданные" -#: f.menus.cc:172 +#: f.menus.cc:184 msgid "Edit any image metadata" msgstr "Редактировать метаданные изображения" -#: f.menus.cc:173 f.meta.cc:1820 +#: f.menus.cc:185 f.meta.cc:1989 msgid "Delete Metadata" msgstr "Удалить метаданные" -#: f.menus.cc:173 +#: f.menus.cc:185 msgid "Remove all metadata from an image" msgstr "Удалить все метаданные из изображения" -#: f.menus.cc:174 +#: f.menus.cc:186 msgid "Download Geolocations" msgstr "Загрузить геопозиционирование" -#: f.menus.cc:174 +#: f.menus.cc:186 msgid "Download initial geolocation database" msgstr "Скачать исходную базу данных геолокации" -#: f.menus.cc:176 f.meta.cc:2713 +#: f.menus.cc:188 f.meta.cc:2892 msgid "Edit Geotags" msgstr "Редактировать геотеги" -#: f.menus.cc:176 -msgid "Edit image geotags" -msgstr "Добавить/проверить любые метаданные" +#: f.menus.cc:188 +msgid "Edit image location and geotags" +msgstr "" -#: f.menus.cc:177 +#: f.menus.cc:189 msgid "Add geotags to multiple images" msgstr "Добавить геотеги к нескольким изображениям" -#: f.menus.cc:177 f.meta.cc:2905 +#: f.menus.cc:189 f.meta.cc:3084 msgid "Batch Add Geotags" msgstr "Групповое добавление геотегов" -#: f.menus.cc:178 +#: f.menus.cc:190 msgid "Find all images for a location [date]" msgstr "Найти все изображения по расположению [дате]" -#: f.menus.cc:178 +#: f.menus.cc:190 msgid "Images by Location/Date" msgstr "Изображения по местоположению/дате" -#: f.menus.cc:179 +#: f.menus.cc:191 msgid "Find images by clicking a world map" msgstr "Найти изображения кликом по карте мира" -#: f.menus.cc:179 +#: f.menus.cc:191 msgid "Images by Map Location" msgstr "Изображение по местоположению на карте" -#: f.menus.cc:180 +#: f.menus.cc:192 msgid "Find images meeting select criteria" msgstr "Найти изображения, соответствующие выбранным критериям" -#: f.menus.cc:180 +#: f.menus.cc:192 msgid "Search Images" msgstr "Поиск изображений" -#: f.menus.cc:182 fotoxx.h:1002 +#: f.menus.cc:194 fotoxx.h:1023 msgid "Select" msgstr "Выбрать" -#: f.menus.cc:182 +#: f.menus.cc:194 msgid "Select object or area for editing" msgstr "Выберите объект или область для редактирования" -#: f.menus.cc:183 fotoxx.h:1004 +#: f.menus.cc:195 fotoxx.h:1025 msgid "Show" msgstr "Показать" -#: f.menus.cc:183 +#: f.menus.cc:195 msgid "Show (outline) existing area" msgstr "Показать (контур) существующую область" -#: f.menus.cc:184 fotoxx.h:969 +#: f.menus.cc:196 fotoxx.h:990 msgid "Hide" msgstr "Скрыть" -#: f.menus.cc:184 +#: f.menus.cc:196 msgid "Hide existing area" msgstr "Скрыть существующую область" -#: f.menus.cc:185 fotoxx.h:959 +#: f.menus.cc:197 fotoxx.h:979 msgid "Enable" msgstr "Включить" -#: f.menus.cc:185 +#: f.menus.cc:197 msgid "Enable area for editing" msgstr "Включить область для последующих изменений" -#: f.menus.cc:186 fotoxx.h:956 +#: f.menus.cc:198 fotoxx.h:976 msgid "Disable" msgstr "Отключить" -#: f.menus.cc:186 +#: f.menus.cc:198 msgid "Disable area for editing" msgstr "Временно исключить область из списка измененяемых" -#: f.menus.cc:187 fotoxx.h:972 +#: f.menus.cc:199 fotoxx.h:993 msgid "Invert" msgstr "Инвертировать" -#: f.menus.cc:187 +#: f.menus.cc:199 msgid "Reverse existing area" msgstr "Инвертировать существующую область" -#: f.menus.cc:188 +#: f.menus.cc:200 msgid "Erase existing area" msgstr "Стереть существующую область" -#: f.menus.cc:188 fotoxx.h:1013 +#: f.menus.cc:200 fotoxx.h:1035 msgid "Unselect" msgstr "Отменить выбор" -#: f.menus.cc:189 fotoxx.h:951 +#: f.menus.cc:201 fotoxx.h:971 msgid "Copy" msgstr "Копировать" -#: f.menus.cc:189 +#: f.menus.cc:201 msgid "Copy an area for later pasting" msgstr "Копировать область для последующей вставки" -#: f.menus.cc:190 fotoxx.h:984 +#: f.menus.cc:202 fotoxx.h:1005 msgid "Paste" msgstr "Вставить" -#: f.menus.cc:190 +#: f.menus.cc:202 msgid "Paste an area into the current image" msgstr "Вставить область в текущие изображение" -#: f.menus.cc:191 +#: f.menus.cc:203 msgid "Open a file with a saved area" msgstr "Открыть файл с сохраненной областью" -#: f.menus.cc:192 f.menus.cc:281 fotoxx.h:999 +#: f.menus.cc:204 f.menus.cc:294 fotoxx.h:1020 msgid "Save" msgstr "Сохранить" -#: f.menus.cc:192 +#: f.menus.cc:204 msgid "Save an area to a file" msgstr "Сохранить область в файл" -#: f.menus.cc:194 +#: f.menus.cc:206 msgid "Rotate 90 degrees" -msgstr "" +msgstr "Повернуть 90º" -#: f.menus.cc:194 f.menus.cc:447 -msgid "Turn" -msgstr "" +#: f.menus.cc:206 f.menus.cc:458 +msgid "Rotate 90º" +msgstr "Повернуть 90º" -#: f.menus.cc:195 fotoxx.h:998 +#: f.menus.cc:207 fotoxx.h:1019 msgid "Rotate" msgstr "Повернуть" -#: f.menus.cc:195 +#: f.menus.cc:207 msgid "Rotate by any angle" msgstr "Повернуть на этот угол" -#: f.menus.cc:196 +#: f.menus.cc:208 msgid "Cut off unwanted margins" msgstr "Обрезать неровные края" -#: f.menus.cc:197 +#: f.menus.cc:209 msgid "Auto-Trim" msgstr "Авто-обрезка" -#: f.menus.cc:197 +#: f.menus.cc:209 msgid "Remove margins from warp, panorama, etc." msgstr "Обрезка краев после деформаций, панорам и т.д." -#: f.menus.cc:198 +#: f.menus.cc:210 msgid "Change pixel dimensions" msgstr "Изменение размеров в пикселах" -#: f.menus.cc:199 +#: f.menus.cc:211 msgid "Mirror image horizontally or vertically" msgstr "Зеркальное отражение по горизонтали или вертикали" -#: f.menus.cc:200 +#: f.menus.cc:212 msgid "Add Text" msgstr "Вписать текст" -#: f.menus.cc:200 +#: f.menus.cc:212 msgid "Write text on image" msgstr "Запись текста на изображение" -#: f.menus.cc:202 +#: f.menus.cc:214 msgid "Fast auto enhance that may work OK" msgstr "Быстрое авто улучшение (может сработать хорошо)" -#: f.menus.cc:202 f.menus.cc:448 +#: f.menus.cc:214 f.menus.cc:459 msgid "Voodoo Enhance" msgstr "Улучшение Voodoo" -#: f.menus.cc:203 +#: f.menus.cc:215 msgid "Adjust brightness, contrast, color" msgstr "Настроить яркость, контрастность, цветность" -#: f.menus.cc:203 f.menus.cc:449 -msgid "Brightness/Color" -msgstr "Яркость/цветность" +#: f.menus.cc:215 f.retouch.cc:211 +msgid "Brightness/Contrast/Color" +msgstr "Яркость/контраст/цветность" -#: f.menus.cc:204 +#: f.menus.cc:216 msgid "Adjust contrast using a gamma curve" msgstr "Настройка контрастности используя кривую гаммы" -#: f.menus.cc:204 f.menus.cc:450 +#: f.menus.cc:216 f.menus.cc:461 msgid "Gamma Curves" msgstr "Кривая гаммы" -#: f.menus.cc:205 +#: f.menus.cc:217 msgid "Add local contrast, enhance details" msgstr "Добавить локальный контраст, усилить детали" -#: f.menus.cc:205 f.menus.cc:452 f.retouch.cc:1130 +#: f.menus.cc:217 f.menus.cc:463 f.retouch.cc:1130 msgid "Tone Mapping" msgstr "Преобразование тона" -#: f.menus.cc:206 f.menus.cc:451 +#: f.menus.cc:218 f.menus.cc:462 msgid "Flatten Brightness" msgstr "Выравнивание яркости" -#: f.menus.cc:206 +#: f.menus.cc:218 msgid "Flatten brightness distribution" msgstr "Выровнять распределение яркости" -#: f.menus.cc:207 +#: f.menus.cc:219 msgid "Expand Brightness" msgstr "Расширение яркости" -#: f.menus.cc:207 +#: f.menus.cc:219 msgid "Expand brightness range" msgstr "Увеличить диапазон яркости" -#: f.menus.cc:208 +#: f.menus.cc:220 msgid "Brightness Ramp" msgstr "Спад яркости" -#: f.menus.cc:208 +#: f.menus.cc:220 msgid "Fix brightness uniformity across image" msgstr "Исправить неоднородность яркости по изображению" -#: f.menus.cc:209 f.retouch.cc:2361 +#: f.menus.cc:221 f.retouch.cc:2358 msgid "Paint Edits" msgstr "Редактор окраски" -#: f.menus.cc:209 -msgid "Paint edit function gradually with the mouse" -msgstr "Установка коэффициента для центра и края пятна редактирования" +#: f.menus.cc:221 +msgid "Paint edit function gradually with mouse" +msgstr "" -#: f.menus.cc:210 f.retouch.cc:2592 +#: f.menus.cc:222 f.retouch.cc:2589 msgid "Leverage Edits" msgstr "Нелинейное редактирование" -#: f.menus.cc:210 +#: f.menus.cc:222 msgid "Leverage edits by brightness or color" msgstr "Усиление/ослабление функции в зависимости от яркости или цвета" -#: f.menus.cc:212 +#: f.menus.cc:224 msgid "Make the image look sharper" msgstr "Повысить чёткость изображения" -#: f.menus.cc:212 f.repair.cc:60 +#: f.menus.cc:224 f.repair.cc:60 msgid "Sharpen" -msgstr "Увеличить" +msgstr "Увеличить резкость" -#: f.menus.cc:213 f.repair.cc:1543 +#: f.menus.cc:225 f.repair.cc:1543 msgid "Blur" -msgstr "изображение" +msgstr "Размыть" -#: f.menus.cc:213 +#: f.menus.cc:225 msgid "Make the image look fuzzy" msgstr "Размыть изображение " -#: f.menus.cc:214 +#: f.menus.cc:226 msgid "Filter noise from low-light photos" msgstr "Фильтрация шума в темных изображениях" -#: f.menus.cc:214 +#: f.menus.cc:226 msgid "Reduce Noise" msgstr "Уменьшить шум" -#: f.menus.cc:215 +#: f.menus.cc:227 msgid "Remove unwanted objects" msgstr "Удаление нежелательных объектов" -#: f.menus.cc:215 f.repair.cc:1536 +#: f.menus.cc:227 f.repair.cc:1536 msgid "Smart Erase" msgstr "Умное стирание" -#: f.menus.cc:216 +#: f.menus.cc:228 msgid "Fix red-eyes from electronic flash" msgstr "Исправить эффект красных глаз при вспышке" -#: f.menus.cc:216 f.menus.cc:454 +#: f.menus.cc:228 f.menus.cc:465 msgid "Red Eyes" msgstr "Красные глаза" -#: f.menus.cc:217 +#: f.menus.cc:229 msgid "Paint image pixels using the mouse" msgstr "Окраска пикселей мышью" -#: f.menus.cc:217 f.repair.cc:2357 +#: f.menus.cc:229 f.repair.cc:2357 msgid "Paint/Clone" msgstr "Перекрасить пиксели" -#: f.menus.cc:218 f.repair.cc:2880 +#: f.menus.cc:230 f.repair.cc:2880 msgid "Remove Dust" msgstr "Удалить пыль" -#: f.menus.cc:218 +#: f.menus.cc:230 msgid "Remove dust spots from scanned slides" msgstr "Удаление пятен пыли из отсканированных слайдов" -#: f.menus.cc:219 +#: f.menus.cc:231 msgid "Anti-alias" msgstr "Антиалиасинг" -#: f.menus.cc:219 +#: f.menus.cc:231 msgid "Smoothen edges with jaggies" msgstr "Спрямить зазубренные края" -#: f.menus.cc:220 +#: f.menus.cc:232 msgid "Fix Color Fringes" msgstr "Удалить ореол" -#: f.menus.cc:220 +#: f.menus.cc:232 msgid "Reduce Chromatic Abberation" msgstr "Коррекция хроматической аберрации" -#: f.menus.cc:221 +#: f.menus.cc:233 msgid "Erase known hot and dark pixels" msgstr "Стереть известные горячие и темные пиксели" -#: f.menus.cc:221 f.repair.cc:3890 +#: f.menus.cc:233 f.repair.cc:3894 msgid "Fix Stuck Pixels" msgstr "Устранить горячие пиксели" -#: f.menus.cc:223 +#: f.menus.cc:235 msgid "Click on a white/gray area to fix color tint" msgstr "Клик на белом/сером для коррекции цвета" -#: f.menus.cc:223 f.menus.cc:453 +#: f.menus.cc:235 f.menus.cc:464 msgid "White Balance" msgstr "Баланс белого" -#: f.menus.cc:224 +#: f.menus.cc:236 msgid "Make BW/color, negative/positive, sepia" msgstr "Преобразовать Ч/Б/цвет, негатив/позитив, сепия" -#: f.menus.cc:225 +#: f.menus.cc:237 msgid "Color Profile" msgstr "Профиль цветов" -#: f.menus.cc:225 +#: f.menus.cc:237 msgid "Convert to another color profile" msgstr "Преобразование в другой профиль цветов" -#: f.menus.cc:226 +#: f.menus.cc:238 msgid "Match Colors" msgstr "Подбор цветов" -#: f.menus.cc:226 +#: f.menus.cc:238 msgid "Match colors on one image with another" msgstr "Совмещение цветов одного изображения с другим" -#: f.menus.cc:227 +#: f.menus.cc:239 msgid "Adjust color in selected image areas" msgstr "Настройка цвета в выбранной области изображения" -#: f.menus.cc:228 +#: f.menus.cc:240 msgid "Adjust color using CMYK or RGB values" msgstr "Настройка цвета используя CMYK или RGB значения" -#: f.menus.cc:228 +#: f.menus.cc:240 msgid "CMYK Density" msgstr "Плотность CMYK" -#: f.menus.cc:230 +#: f.menus.cc:242 msgid "Remove curvature, esp. panoramas" msgstr "Удаление искривления, особенно панорам" -#: f.menus.cc:231 +#: f.menus.cc:243 msgid "Straighten objects seen from an angle" msgstr "Выравнивание геометрии объектов, снятых под углом" -#: f.menus.cc:232 +#: f.menus.cc:244 msgid "Flatten Book Page" msgstr "Выровнять страницу книги" -#: f.menus.cc:232 +#: f.menus.cc:244 msgid "Flatten a photographed book page" msgstr "Выровнять сфотографированную книжную страницу" -#: f.menus.cc:233 +#: f.menus.cc:245 msgid "Distort image areas using the mouse" msgstr "Исказить области изображения мышкой" -#: f.menus.cc:234 f.menus.cc:235 f.menus.cc:236 +#: f.menus.cc:246 f.menus.cc:247 f.menus.cc:248 msgid "Distort the whole image using the mouse" msgstr "Исказить всё изображение мышкой" -#: f.menus.cc:238 +#: f.menus.cc:250 msgid "Color Depth" msgstr "Глубина цвета" -#: f.menus.cc:238 +#: f.menus.cc:250 msgid "Reduce color depth (posterize)" msgstr "Уменьшение глубины цвета (эффект плаката)" -#: f.menus.cc:239 +#: f.menus.cc:251 msgid "Convert to pencil sketch" msgstr "Преобразовать в карандашный набросок" -#: f.menus.cc:239 +#: f.menus.cc:251 msgid "Sketch" msgstr "Набросок" -#: f.menus.cc:240 +#: f.menus.cc:252 msgid "Convert to colored line drawing" msgstr "Преобразование в рисунок цветных линий" -#: f.menus.cc:240 +#: f.menus.cc:252 msgid "Drawing" msgstr "Рисунок" -#: f.menus.cc:241 +#: f.menus.cc:253 msgid "Graduated Blur depending on contrast" msgstr "Размытие в зависимости от контраста" -#: f.menus.cc:242 +#: f.menus.cc:254 msgid "Create an embossed or 3D appearance" msgstr "Создать рельеф или видимость 3D" -#: f.menus.cc:242 +#: f.menus.cc:254 msgid "Embossing" msgstr "Рельефное тиснение" -#: f.menus.cc:243 +#: f.menus.cc:255 msgid "Convert to square tiles" msgstr "Преобразование в квадратные плитки" -#: f.menus.cc:243 +#: f.menus.cc:255 msgid "Tiles" msgstr "Мозаика" -#: f.menus.cc:244 +#: f.menus.cc:256 msgid "Convert to dots (Roy Lichtenstein effect)" msgstr "Преобразование в точки (эффект Roy Lichtenstein)" -#: f.menus.cc:244 +#: f.menus.cc:256 msgid "Dots" msgstr "Точки" -#: f.menus.cc:245 +#: f.menus.cc:257 msgid "Convert into a simulated painting" msgstr "Преобразование в моделируемую картину" -#: f.menus.cc:245 +#: f.menus.cc:257 msgid "Painting" msgstr "Живопись" -#: f.menus.cc:246 +#: f.menus.cc:258 msgid "Shift/convert colors into other colors" msgstr "Сдвиг/преобразования цветов" -#: f.menus.cc:247 +#: f.menus.cc:259 msgid "Change brightness or color radially" msgstr "Изменение яркости и цвета радиально" -#: f.menus.cc:249 +#: f.menus.cc:261 msgid "Combine bright/dark images for better detail" msgstr "Объединение ярких/темных изображений для улучшения деталей" -#: f.menus.cc:249 +#: f.menus.cc:261 msgid "High Dynamic Range" msgstr "Высокий динамический диапазон" -#: f.menus.cc:250 +#: f.menus.cc:262 msgid "Combine near/far focus images for deeper focus" msgstr "" "Объединение близко/далеко фокусных изображений для более глубокого фокуса" -#: f.menus.cc:250 +#: f.menus.cc:262 msgid "High Depth of Field" msgstr "Высокая глубина резкости" -#: f.menus.cc:251 +#: f.menus.cc:263 msgid "Combine images to erase passing people, etc." msgstr "Объединение изображений чтобы стереть проходящих людей и т.д." -#: f.menus.cc:251 +#: f.menus.cc:263 msgid "Stack / Paint" msgstr "Стопка / Грим" -#: f.menus.cc:252 +#: f.menus.cc:264 msgid "Combine noisy images into a low-noise image" msgstr "Объединение изображений с шумом и изображений с малым шумом" -#: f.menus.cc:252 +#: f.menus.cc:264 msgid "Stack / Noise" msgstr "Стопка / Шум" -#: f.menus.cc:253 +#: f.menus.cc:265 msgid "Combine images into a panorama" msgstr "Объединение изображений в панораму" -#: f.menus.cc:253 +#: f.menus.cc:265 msgid "Panorama" msgstr "Панорама" -#: f.menus.cc:254 +#: f.menus.cc:266 msgid "Combine images into a vertical panorama" msgstr "Объединение изображений в вертикальную панораму" -#: f.menus.cc:254 +#: f.menus.cc:266 msgid "Vertical Panorama" msgstr "Вертикальная панорама" -#: f.menus.cc:256 +#: f.menus.cc:267 +msgid "Arrange multiple images on a background image" +msgstr "" + +#: f.menus.cc:267 +msgid "Mashup" +msgstr "" + +#: f.menus.cc:269 msgid "Add another image editor to the menu" msgstr "Добавить в меню другой редактор изображений" -#: f.menus.cc:256 +#: f.menus.cc:269 msgid "Edit Plugins" msgstr "Редактировать плагины" -#: f.menus.cc:258 fotoxx-13.08.cc:3597 +#: f.menus.cc:271 fotoxx-13.09.cc:3630 msgid "Quick Start" msgstr "Быстрый Старт" -#: f.menus.cc:258 +#: f.menus.cc:271 msgid "Quick Start mini-guide" msgstr "Руководство по быстрому старту" -#: f.menus.cc:259 +#: f.menus.cc:272 msgid "Read the user guide" msgstr "Причитать руководство пользователя" -#: f.menus.cc:259 fotoxx-13.08.cc:3600 +#: f.menus.cc:272 fotoxx-13.09.cc:3633 msgid "User Guide" msgstr "Руководство пользователя" -#: f.menus.cc:260 +#: f.menus.cc:273 msgid "Recent user guide changes" msgstr "Последние изменения руководства пользователя" -#: f.menus.cc:260 fotoxx-13.08.cc:3603 +#: f.menus.cc:273 fotoxx-13.09.cc:3636 msgid "User Guide Changes" msgstr "Изменения в руководстве пользователя" -#: f.menus.cc:261 +#: f.menus.cc:274 msgid "Fotoxx updates notification" msgstr "Сообщать о наличии обновлений" -#: f.menus.cc:261 fotoxx-13.08.cc:3606 +#: f.menus.cc:274 fotoxx-13.09.cc:3639 msgid "Program Updates" msgstr "Обновления" -#: f.menus.cc:262 fotoxx-13.08.cc:3612 +#: f.menus.cc:275 fotoxx-13.09.cc:3645 msgid "Edit Functions Summary" msgstr "Краткое изложение функций" -#: f.menus.cc:262 +#: f.menus.cc:275 msgid "Summary of image edit functions" msgstr "Обзор функций для редактирования изображений" -#: f.menus.cc:263 fotoxx-13.08.cc:3609 +#: f.menus.cc:276 fotoxx-13.09.cc:3642 msgid "README" msgstr "README" -#: f.menus.cc:263 +#: f.menus.cc:276 msgid "Technical installation notes" msgstr "Технические замечания по установке" -#: f.menus.cc:264 fotoxx-13.08.cc:3615 +#: f.menus.cc:277 fotoxx-13.09.cc:3648 msgid "Change Log" msgstr "Журнал изменений" -#: f.menus.cc:264 +#: f.menus.cc:277 msgid "List updates by Fotoxx version" msgstr "Список обновлений версии Fotoxx" -#: f.menus.cc:265 fotoxx-13.08.cc:3618 +#: f.menus.cc:278 fotoxx-13.09.cc:3651 msgid "Log File" msgstr "Файл журнала" -#: f.menus.cc:265 +#: f.menus.cc:278 msgid "View the log file and error messages" msgstr "Просмотр файла журнала и сообщений об ошибках" -#: f.menus.cc:266 +#: f.menus.cc:279 msgid "How to do Fotoxx translations" msgstr "Как сделать перевод Fotoxx" -#: f.menus.cc:266 fotoxx-13.08.cc:3621 +#: f.menus.cc:279 fotoxx-13.09.cc:3654 msgid "Translations" msgstr "Переводы" -#: f.menus.cc:267 fotoxx-13.08.cc:3624 +#: f.menus.cc:280 fotoxx-13.09.cc:3657 msgid "Home Page" msgstr "Домашняя страница" -#: f.menus.cc:267 +#: f.menus.cc:280 msgid "Show the Fotoxx web page" msgstr "Показать веб страницу Fotoxx" -#: f.menus.cc:268 fotoxx-13.08.cc:3627 +#: f.menus.cc:281 fotoxx-13.09.cc:3660 msgid "About" msgstr "О программе" -#: f.menus.cc:268 +#: f.menus.cc:281 msgid "Version, license, contact, credits" msgstr "Версия, лицензия, контакты, кредиты" -#: f.menus.cc:271 +#: f.menus.cc:284 msgid "Favs" msgstr "Избранное" -#: f.menus.cc:273 +#: f.menus.cc:286 msgid "Color of area borders etc." msgstr "Цвет границ и т.п." -#: f.menus.cc:274 fotoxx.h:1011 +#: f.menus.cc:287 fotoxx.h:1033 msgid "Undo" msgstr "Отменить" -#: f.menus.cc:274 +#: f.menus.cc:287 msgid "Undo one edit" msgstr "Отменить одно изменение" -#: f.menus.cc:275 fotoxx.h:993 +#: f.menus.cc:288 fotoxx.h:1014 msgid "Redo" msgstr "Вернуть" -#: f.menus.cc:275 +#: f.menus.cc:288 msgid "Redo one edit" msgstr "Вернуть одно изменение" -#: f.menus.cc:277 f.menus.cc:389 -msgid "Gallery from Tab F" -msgstr "Галерея из закладки F" +#: f.menus.cc:290 f.menus.cc:400 +msgid "Set gallery from current image file" +msgstr "" -#: f.menus.cc:279 +#: f.menus.cc:290 f.menus.cc:400 +msgid "Sync.G" +msgstr "" + +#: f.menus.cc:292 msgid "Open the previous file" msgstr "Открыть предыдущий файл" -#: f.menus.cc:279 fotoxx.h:988 +#: f.menus.cc:292 fotoxx.h:1009 msgid "Prev" msgstr "Предыдущий" -#: f.menus.cc:280 fotoxx.h:979 +#: f.menus.cc:293 fotoxx.h:1000 msgid "Next" msgstr "Следующий" -#: f.menus.cc:280 +#: f.menus.cc:293 msgid "Open the next file" msgstr "Открыть следующий файл" -#: f.menus.cc:281 -msgid "Save to the same file" -msgstr "Сохранить в тот же файл" - -#: f.menus.cc:282 -msgid "Save to a new version" -msgstr "Сохранить в новой версии" - -#: f.menus.cc:282 -msgid "Save+V" -msgstr "Сохранить+V" - -#: f.menus.cc:283 -msgid "Save to a new file" -msgstr "Сохранить в новый файл" - -#: f.menus.cc:283 -msgid "Save+F" -msgstr "Сохранить+F" - -#: f.menus.cc:284 f.menus.cc:437 fotoxx.h:1008 +#: f.menus.cc:295 f.menus.cc:448 fotoxx.h:1030 msgid "Trash" msgstr "Корзина" -#: f.menus.cc:303 f.menus.cc:332 +#: f.menus.cc:314 f.menus.cc:343 msgid "Run as Fotoxx edit function" msgstr "Запустить как функцию редактирования Fotoxx" -#: f.menus.cc:391 +#: f.menus.cc:382 +msgid "Top" +msgstr "" + +#: f.menus.cc:401 +msgid "open another directory" +msgstr "" + +#: f.menus.cc:402 msgid "go to bookmarked image" msgstr "перейти по закладке" -#: f.menus.cc:392 +#: f.menus.cc:403 msgid "increase thumbnail size" msgstr "Увеличение размера миниатюры" -#: f.menus.cc:393 +#: f.menus.cc:404 msgid "reduce thumbnail size" msgstr "Уменьшить размер миниатюр" -#: f.menus.cc:394 -msgid "jump to first page" -msgstr "на первую страницу" - -#: f.menus.cc:395 -msgid "jump to last page" -msgstr "на последнюю страницу" +#: f.menus.cc:405 +msgid "change sort order" +msgstr "" + +#: f.menus.cc:406 +msgid "jump to beginning (top)" +msgstr "" + +#: f.menus.cc:407 +msgid "jump to end (bottom)" +msgstr "" -#: f.menus.cc:396 +#: f.menus.cc:408 msgid "previous page" msgstr "Предыдущая страница" -#: f.menus.cc:397 +#: f.menus.cc:409 msgid "next page" msgstr "Следующая страница" -#: f.menus.cc:398 +#: f.menus.cc:410 msgid "previous row" msgstr "Предыдущий ряд" -#: f.menus.cc:399 +#: f.menus.cc:411 msgid "next row" msgstr "Следующий ряд" -#: f.menus.cc:400 -msgid "change sequence" -msgstr "изменить последовательность" - -#: f.menus.cc:434 fotoxx.h:996 +#: f.menus.cc:445 fotoxx.h:1017 msgid "Rename" msgstr "Переименовать" -#: f.menus.cc:435 +#: f.menus.cc:446 msgid "Copy to Location" msgstr "Копировать в папку" -#: f.menus.cc:436 +#: f.menus.cc:447 msgid "Move to Location" msgstr "Переместить в папку" -#: f.menus.cc:438 fotoxx.h:955 +#: f.menus.cc:449 fotoxx.h:975 msgid "Delete" msgstr "Удалить" -#: f.menus.cc:439 +#: f.menus.cc:450 msgid "Copy to Clipboard" msgstr "Копировать в буфер" -#: f.menus.cc:440 +#: f.menus.cc:451 msgid "Remove from Collection" msgstr "Удалить из коллекции" -#: f.menus.cc:441 +#: f.menus.cc:452 msgid "Cut to Image Cache" msgstr "Вырезать в кэш изображений" -#: f.menus.cc:442 +#: f.menus.cc:453 msgid "Copy to Image Cache" msgstr "Скопировать в кэш изображений" -#: f.menus.cc:443 +#: f.menus.cc:454 msgid "Paste Image Cache Here (clear)" msgstr "Поместить сюда кэш изображений с очисткой" -#: f.menus.cc:444 +#: f.menus.cc:455 msgid "Paste Image Cache Here (keep)" msgstr "Поместить сюда кэш изображений с сохранением" -#: f.menus.cc:456 +#: f.menus.cc:460 +msgid "Brightness/Color" +msgstr "Яркость/цветность" + +#: f.menus.cc:467 msgid "Select Area" msgstr "Выберите область" -#: f.meta.cc:87 -msgid "Edit Caption and Comments" -msgstr "Изменить подпись и комментарии" +#: f.meta.cc:72 +msgid "" +"Metadata index is missing.\n" +"Use Tools > Synchronize Files." +msgstr "" + +#: f.meta.cc:106 +#, c-format +msgid "Rating: %c (stars)" +msgstr "" + +#: f.meta.cc:142 +msgid "Size:" +msgstr "" + +#: f.meta.cc:148 +msgid "Image Width:" +msgstr "" + +#: f.meta.cc:151 +msgid "Height:" +msgstr "" + +#: f.meta.cc:154 +msgid "Depth:" +msgstr "" + +#: f.meta.cc:159 +msgid "Image Date" +msgstr "" + +#: f.meta.cc:162 +msgid "Time" +msgstr "" + +#: f.meta.cc:164 +msgid "get prev" +msgstr "" + +#: f.meta.cc:169 +msgid "Choose:" +msgstr "" -#: f.meta.cc:98 +#: f.meta.cc:181 msgid "Caption" msgstr "Подпись" -#: f.meta.cc:102 +#: f.meta.cc:187 msgid "Comments" msgstr "Комментарий" -#: f.meta.cc:173 -msgid "image date (yyyymmdd)" -msgstr "Дата изображения (ггггммдд)" - -#: f.meta.cc:175 -msgid "use last" -msgstr "Использовать последний" - -#: f.meta.cc:178 -msgid "image stars" -msgstr "Рейтинг изображения" - -#: f.meta.cc:196 -msgid "current tags" -msgstr "Текущие теги" +#: f.meta.cc:193 +msgid "Image Tags" +msgstr "" -#: f.meta.cc:201 -msgid "recent tags" +#: f.meta.cc:199 +msgid "Recent Tags" msgstr "Последние теги" -#: f.meta.cc:206 f.meta.cc:387 f.meta.cc:1404 f.meta.cc:3932 -msgid "defined tags" +#: f.meta.cc:205 f.meta.cc:556 f.meta.cc:1573 f.meta.cc:4111 +msgid "Defined Tags" msgstr "Известные теги" -#: f.meta.cc:373 fotoxx.h:976 +#: f.meta.cc:455 +msgid "date format is YYYY-MM-DD" +msgstr "" + +#: f.meta.cc:459 +msgid "date is invalid" +msgstr "" + +#: f.meta.cc:492 +msgid "time format is HH:MM [:SS]" +msgstr "" + +#: f.meta.cc:496 +msgid "time is invalid" +msgstr "" + +#: f.meta.cc:542 fotoxx.h:997 msgid "Manage Tags" msgstr "Управление тегами" -#: f.meta.cc:373 +#: f.meta.cc:542 msgid "orphan tags" msgstr "неиспользуемые тэги" -#: f.meta.cc:377 +#: f.meta.cc:546 msgid "category" msgstr "Категория" -#: f.meta.cc:380 +#: f.meta.cc:549 msgid "tag" msgstr "тег" -#: f.meta.cc:383 +#: f.meta.cc:552 msgid "create" msgstr "Создать" -#: f.meta.cc:384 +#: f.meta.cc:553 msgid "delete" msgstr "Удалить" -#: f.meta.cc:1383 -msgid "Batch Add/Remove Tags" -msgstr "Групповое добавление/удаление тэгов" +#: f.meta.cc:1557 f.meta.cc:3116 f.tools.cc:2792 f.tools.cc:3877 +#: f.tools.cc:4093 f.tools.cc:4455 +msgid "0 files selected" +msgstr "0 файлов выбрано" -#: f.meta.cc:1394 +#: f.meta.cc:1563 msgid "tags to add" msgstr "Теги для добавления" -#: f.meta.cc:1395 +#: f.meta.cc:1564 msgid "tags to remove" msgstr "удаляемые тэги" -#: f.meta.cc:1476 +#: f.meta.cc:1645 #, c-format msgid "" "%s \n" @@ -2364,29 +2556,37 @@ "%s \n" "слишком много тегов" -#: f.meta.cc:1590 +#: f.meta.cc:1759 msgid "specify files and tags" msgstr "задайте файлы и тэги" -#: f.meta.cc:1617 f.meta.cc:3044 f.tools.cc:2819 f.tools.cc:3011 -#: f.tools.cc:3051 f.tools.cc:4001 f.tools.cc:4311 f.tools.cc:4664 +#: f.meta.cc:1786 f.meta.cc:3223 f.tools.cc:2830 f.tools.cc:3022 +#: f.tools.cc:3062 f.tools.cc:4012 f.tools.cc:4322 f.tools.cc:4675 #, c-format msgid "%d files selected" msgstr "%d файлов выбрано" -#: f.meta.cc:1664 +#: f.meta.cc:1833 msgid "View Metadata" msgstr "Просмотр метаданных" -#: f.meta.cc:1822 fotoxx.h:937 +#: f.meta.cc:1901 +msgid "key name" +msgstr "" + +#: f.meta.cc:1903 +msgid "key value" +msgstr "" + +#: f.meta.cc:1991 fotoxx.h:956 msgid "All" msgstr "Все" -#: f.meta.cc:1823 +#: f.meta.cc:1992 msgid "One Key:" msgstr "Один ключ:" -#: f.meta.cc:1954 +#: f.meta.cc:2123 #, c-format msgid "" "Download geotags data (8 megabytes). \n" @@ -2397,36 +2597,52 @@ "Сохранить в %s \n" "Продолжить?" -#: f.meta.cc:1990 +#: f.meta.cc:2159 msgid "download failed" msgstr "Загрузка не удалась" -#: f.meta.cc:2025 +#: f.meta.cc:2192 fotoxx-13.09.cc:855 +msgid "Location from World Map" +msgstr "Точка на карте мира" + +#: f.meta.cc:2194 +msgid "Loading world map" +msgstr "" + +#: f.meta.cc:2201 msgid "please download geolocations data" msgstr "Загрузите данные геолокации" -#: f.meta.cc:2138 +#: f.meta.cc:2209 +msgid "Loading geolocations" +msgstr "" + +#: f.meta.cc:2327 msgid "geotags file must be downloaded" msgstr "Нужно загрузить файл геотегов" -#: f.meta.cc:2432 f.meta.cc:2889 f.meta.cc:3152 +#: f.meta.cc:2611 f.meta.cc:3068 f.meta.cc:3331 #, c-format msgid "bad latitude/longitude: %s %s" msgstr "Неправильная широта/долгота: %s %s" -#: f.meta.cc:2731 f.meta.cc:2939 f.meta.cc:4432 +#: f.meta.cc:2893 +msgid "Geocoding web service courtesy of" +msgstr "" + +#: f.meta.cc:2910 f.meta.cc:3118 f.meta.cc:4611 msgid "city" msgstr "Город" -#: f.meta.cc:2734 f.meta.cc:2942 f.meta.cc:4435 +#: f.meta.cc:2913 f.meta.cc:3121 f.meta.cc:4614 msgid "country" msgstr "Страна" -#: f.meta.cc:2802 f.meta.cc:3065 +#: f.meta.cc:2981 f.meta.cc:3244 msgid "city not found" msgstr "Город не найден" -#: f.meta.cc:3130 +#: f.meta.cc:3309 msgid "" "data is incomplete \n" " proceed?" @@ -2434,123 +2650,127 @@ "Данные не полные \n" "Продолжить?" -#: f.meta.cc:3156 +#: f.meta.cc:3335 msgid "no files selected" msgstr "нет выбранных файлов" -#: f.meta.cc:3188 +#: f.meta.cc:3367 msgid "choose city" msgstr "Выбрать город" -#: f.meta.cc:3272 +#: f.meta.cc:3451 msgid "not found" msgstr "Не найден" -#: f.meta.cc:3273 +#: f.meta.cc:3452 msgid "city and country required" msgstr "укажите город и страну" -#: f.meta.cc:3365 +#: f.meta.cc:3544 msgid "Report Geotag Groups" msgstr "Сообщение группы геотегов" -#: f.meta.cc:3366 +#: f.meta.cc:3545 msgid "Group by country" msgstr "Группировать по стране" -#: f.meta.cc:3367 +#: f.meta.cc:3546 msgid "Group by country/city" msgstr "Группировать по стране/городу" -#: f.meta.cc:3368 +#: f.meta.cc:3547 msgid "Group by country/city/date" msgstr "Группировать по стране/городу/дате" -#: f.meta.cc:3371 +#: f.meta.cc:3550 msgid "Combine within" msgstr "Объединить в" -#: f.meta.cc:3373 +#: f.meta.cc:3552 msgid "days" msgstr "Дней" -#: f.meta.cc:3715 +#: f.meta.cc:3667 +msgid "geotag groups" +msgstr "" + +#: f.meta.cc:3894 msgid "search range (km)" msgstr "Диапазон поиска (км)" -#: f.meta.cc:3786 +#: f.meta.cc:3965 msgid "No matching images found" msgstr "Соответствующие изображения не найдены" -#: f.meta.cc:3872 +#: f.meta.cc:4051 msgid "Search Image Metadata" msgstr "Поиск  метаданных изображения" -#: f.meta.cc:3876 +#: f.meta.cc:4055 msgid "images to search:" msgstr "изображения для поиска:" -#: f.meta.cc:3877 +#: f.meta.cc:4056 msgid "all" msgstr "все" -#: f.meta.cc:3878 +#: f.meta.cc:4057 msgid "current set only" msgstr "только активный набор" -#: f.meta.cc:3881 +#: f.meta.cc:4060 msgid "matching images:" msgstr "подходящие изображения:" -#: f.meta.cc:3882 +#: f.meta.cc:4061 msgid "new set" msgstr "новый набор" -#: f.meta.cc:3883 +#: f.meta.cc:4062 msgid "add to set" msgstr "добавить в набор" -#: f.meta.cc:3884 +#: f.meta.cc:4063 msgid "remove" msgstr "удалить" -#: f.meta.cc:3890 +#: f.meta.cc:4069 msgid "date range" msgstr "Диапазон дат" -#: f.meta.cc:3891 +#: f.meta.cc:4070 msgid "stars range" msgstr "Диапазон рейтинга" -#: f.meta.cc:3892 +#: f.meta.cc:4071 msgid "search tags" msgstr "Поиск тегов" -#: f.meta.cc:3893 +#: f.meta.cc:4072 msgid "search text" msgstr "Поиск текста" -#: f.meta.cc:3894 +#: f.meta.cc:4073 msgid "search files" msgstr "Поиск файлов" -#: f.meta.cc:3899 +#: f.meta.cc:4078 msgid "(yyyymmdd)" msgstr "(ггггммдд)" -#: f.meta.cc:3905 +#: f.meta.cc:4084 msgid "all/any" msgstr "Все/любой" -#: f.meta.cc:3924 +#: f.meta.cc:4103 msgid "other criteria" msgstr "Другие критерии" -#: f.meta.cc:3928 +#: f.meta.cc:4107 msgid "other" msgstr "Другое" -#: f.meta.cc:4059 +#: f.meta.cc:4238 msgid "" "to remove images from current set, \n" "search current set" @@ -2558,7 +2778,7 @@ "для удаления изображений из активного набора, \n" "поиск активного набора" -#: f.meta.cc:4066 +#: f.meta.cc:4245 msgid "" "to add images to current set, \n" "search all images" @@ -2566,28 +2786,28 @@ "для добавления изображений в активный набор \n" "поиск всех изображений" -#: f.meta.cc:4293 +#: f.meta.cc:4472 #, c-format msgid "images added: %d removed: %d new count: %d" msgstr "добавлено изображений: %d удалено: %d осталось: %d" -#: f.meta.cc:4296 +#: f.meta.cc:4475 msgid "no changes made" msgstr "без изменений" -#: f.meta.cc:4429 +#: f.meta.cc:4608 msgid "Add Geotags Search Criteria" msgstr "Добавить критерии поиска геотегов" -#: f.meta.cc:4448 +#: f.meta.cc:4627 msgid "range (km)" msgstr "Расстояние (км)" -#: f.meta.cc:4539 +#: f.meta.cc:4718 msgid "error in latitude/longitude/range" msgstr "Ошибка в широте/долготе/расстоянии" -#: f.meta.cc:4604 +#: f.meta.cc:4783 msgid "" "These items are always reported: \n" "date, stars, tags, caption, comment" @@ -2595,15 +2815,15 @@ "Всегда предоставляются: \n" "дата, рейтинг, теги, подпись, комментарии" -#: f.meta.cc:4628 +#: f.meta.cc:4807 msgid "Additional Items for Report" msgstr "Дополнительные пункты для отчета" -#: f.meta.cc:4634 +#: f.meta.cc:4813 msgid "Keyword" msgstr "Ключевое слово" -#: f.meta.cc:4641 +#: f.meta.cc:4820 msgid "Match Criteria" msgstr "Критерии подбора" @@ -2651,7 +2871,7 @@ "1. Передвинуть мышь для выбора. \n" "2. Стереть. 3. Повторить. " -#: f.repair.cc:1541 fotoxx.h:990 +#: f.repair.cc:1541 fotoxx.h:1011 msgid "Radius" msgstr "Радиус" @@ -2748,38 +2968,30 @@ msgid "Chromatic Abberation" msgstr "Хроматическая аберрация" -#: f.repair.cc:3896 +#: f.repair.cc:3900 msgid "pixel group" msgstr "Группа пикселей" -#: f.repair.cc:3897 +#: f.repair.cc:3901 msgid "circle color" msgstr "Цвет круга" -#: f.repair.cc:4006 +#: f.repair.cc:3913 f.repair.cc:3957 +msgid "stuck pixels:" +msgstr "" + +#: f.repair.cc:4023 msgid "Load Stuck Pixels" msgstr "Загрузка горячих пикселей" -#: f.repair.cc:4030 f.repair.cc:4126 +#: f.repair.cc:4047 f.repair.cc:4113 msgid "Stuck Pixels file" msgstr "Файл горячих пикселей" -#: f.repair.cc:4070 +#: f.repair.cc:4087 msgid "file format error" msgstr "Ошибка формата файла" -#: f.repair.cc:4098 -msgid "there are zero stuck pixels" -msgstr "ноль горячих пикселей" - -#: f.repair.cc:4102 -msgid "Save Stuck Pixels" -msgstr "Сохранить горячие пиксели" - -#: f.retouch.cc:211 -msgid "Adjust Brightness and Color" -msgstr "Настроить яркость и цветность" - #: f.retouch.cc:267 msgid "small-steps" msgstr "Мелкие шаги" @@ -2832,15 +3044,15 @@ msgid "bright pixels" msgstr "Яркие пиксели" -#: f.retouch.cc:1983 +#: f.retouch.cc:1980 msgid "Ramp brightness across image" msgstr "Смещение яркости по изображению" -#: f.retouch.cc:2363 f.retouch.cc:2600 f.tools.cc:5242 +#: f.retouch.cc:2360 f.retouch.cc:2597 f.tools.cc:5253 msgid "Edit function must be active" msgstr "Функция редактирования должна быть активна" -#: f.retouch.cc:2371 fotoxx-13.08.cc:2867 +#: f.retouch.cc:2368 fotoxx-13.09.cc:2905 msgid "" "Select area cannot be kept.\n" "Continue?" @@ -2848,23 +3060,23 @@ "Избранная область не может быть сохранена.\n" "Продолжить?" -#: f.retouch.cc:2400 +#: f.retouch.cc:2397 msgid "power: center" msgstr "Усиление: центр" -#: f.retouch.cc:2405 +#: f.retouch.cc:2402 msgid "reset area" msgstr "Сбросить область" -#: f.retouch.cc:2593 +#: f.retouch.cc:2590 msgid "Edit Function Amplifier" msgstr "Усилитель функций редактирования" -#: f.retouch.cc:2629 +#: f.retouch.cc:2626 msgid "minimum" msgstr "минимум" -#: f.retouch.cc:2631 +#: f.retouch.cc:2628 msgid "maximum" msgstr "максимум" @@ -2981,197 +3193,209 @@ msgid "create missing and update stale thumbnails" msgstr "создание отсутствующих и обновление устаревших миниатюр" -#: f.tools.cc:542 +#: f.tools.cc:548 #, c-format msgid "%d thumbnails created, %d errors \n" msgstr "%d миниатюр создано, %d ошибок \n" -#: f.tools.cc:553 +#: f.tools.cc:559 msgid "no search index file is in use" msgstr "индексный файл не используется" -#: f.tools.cc:554 f.tools.cc:561 f.tools.cc:897 +#: f.tools.cc:560 f.tools.cc:567 f.tools.cc:910 msgid "COMPLETED" msgstr "ЗАВЕРШЕНО" -#: f.tools.cc:566 +#: f.tools.cc:572 msgid "rebuild search index" msgstr "перестроение индекса поиска" -#: f.tools.cc:585 +#: f.tools.cc:591 #, c-format msgid "%d current index records found \n" msgstr "найдено %d индексных записей \n" -#: f.tools.cc:589 +#: f.tools.cc:595 msgid "find all image files and build index records" msgstr "найти все изображения и построить индекс" -#: f.tools.cc:615 +#: f.tools.cc:621 msgid "too many image files" msgstr "слишком много изображений" -#: f.tools.cc:642 +#: f.tools.cc:648 #, c-format msgid "found %d image files \n" msgstr "найдено %d изображений \n" -#: f.tools.cc:647 +#: f.tools.cc:653 msgid "merging old and new index records" msgstr "слияние старого и нового индексов" -#: f.tools.cc:697 +#: f.tools.cc:703 #, c-format msgid "files found in current index recs: %d \n" msgstr "найдено файлов в текущем индексе: %d \n" -#: f.tools.cc:715 +#: f.tools.cc:721 msgid "updating index records" msgstr "обновление индекса" -#: f.tools.cc:889 +#: f.tools.cc:902 #, c-format msgid "%d image files updated \n" msgstr "%d файлов обновлено \n" -#: f.tools.cc:909 +#: f.tools.cc:922 msgid "KILLED" msgstr "ОСТАНОВ" -#: f.tools.cc:1047 +#: f.tools.cc:1060 msgid "Settings" msgstr "Настройки" -#: f.tools.cc:1050 +#: f.tools.cc:1063 msgid "Startup Display" msgstr "Начальный экран" -#: f.tools.cc:1072 +#: f.tools.cc:1085 msgid "Recent Files Gallery" msgstr "Галерея недавно открытых файлов" -#: f.tools.cc:1073 +#: f.tools.cc:1086 msgid "Newest Files Gallery" msgstr "Галерея Свежих Файлов" -#: f.tools.cc:1074 +#: f.tools.cc:1087 msgid "Previous Image Viewed" msgstr "Последнее просмотренное изображение" -#: f.tools.cc:1075 +#: f.tools.cc:1088 msgid "Blank Window" msgstr "Пустое окно" -#: f.tools.cc:1076 +#: f.tools.cc:1089 msgid "Directory Gallery" msgstr " Галерея каталогов" -#: f.tools.cc:1077 +#: f.tools.cc:1090 msgid "Image File" msgstr "Файл изображения" -#: f.tools.cc:1093 +#: f.tools.cc:1106 msgid "Menu Style" msgstr "Стиль меню" -#: f.tools.cc:1095 +#: f.tools.cc:1108 msgid "Classic" msgstr "Классическое" -#: f.tools.cc:1096 +#: f.tools.cc:1109 msgid "Vertical" msgstr "Вертикальное" -#: f.tools.cc:1098 +#: f.tools.cc:1111 msgid "Toolbar Style" msgstr "Стиль панели инструментов" -#: f.tools.cc:1101 +#: f.tools.cc:1114 msgid "Icons" msgstr "Значки" -#: f.tools.cc:1102 +#: f.tools.cc:1115 msgid "Both" msgstr "Оба" -#: f.tools.cc:1104 +#: f.tools.cc:1117 msgid "Image Pan" msgstr "Панорамирование" -#: f.tools.cc:1106 +#: f.tools.cc:1119 msgid "Drag" msgstr "Перетащить" -#: f.tools.cc:1107 +#: f.tools.cc:1120 msgid "Scroll" msgstr "Скролл" -#: f.tools.cc:1108 +#: f.tools.cc:1121 msgid "Magnified" msgstr "Увеличенный" -#: f.tools.cc:1111 +#: f.tools.cc:1124 msgid "Warn Overwrite Original" msgstr "Предупреждать о перезаписи оригинала" -#: f.tools.cc:1114 +#: f.tools.cc:1127 msgid "Default JPEG quality" msgstr "Качество JPEG по умолчанию" -#: f.tools.cc:1261 +#: f.tools.cc:1131 +msgid "Zooms for 200%" +msgstr "" + +#: f.tools.cc:1142 +msgid "RAW command" +msgstr "" + +#: f.tools.cc:1145 +msgid "RAW file types" +msgstr "" + +#: f.tools.cc:1274 msgid "startup directory is invalid" msgstr "Некорректный начальный каталог" -#: f.tools.cc:1269 +#: f.tools.cc:1282 msgid "startup file is invalid" msgstr "Некорректный начальный файл" -#: f.tools.cc:1368 +#: f.tools.cc:1381 msgid "Select startup directory" msgstr "Выбрать начальный каталог" -#: f.tools.cc:1376 +#: f.tools.cc:1389 msgid "Select startup image file" msgstr "Выбрать начальный файл изображения" -#: f.tools.cc:1414 +#: f.tools.cc:1427 msgid "Click list position. Click thumbnail to add." msgstr "Щёлкните по элементу списка. Щелкните по миниатюре для добавления" -#: f.tools.cc:1439 f.tools.cc:1654 +#: f.tools.cc:1452 f.tools.cc:1667 msgid "Edit Bookmarks" msgstr "Редактировать закладки" -#: f.tools.cc:1585 +#: f.tools.cc:1598 msgid "unable to save bookmarks file" msgstr "невозможно сокранить файл закладок" -#: f.tools.cc:1654 +#: f.tools.cc:1667 msgid "Go To Bookmark" msgstr "Перейти по закладке" -#: f.tools.cc:1800 +#: f.tools.cc:1811 msgid "Edit KB Shortcuts" msgstr "Редактировать горячие клавиши" -#: f.tools.cc:1805 +#: f.tools.cc:1816 msgid "shortcut key:" msgstr "горячая клавиша:" -#: f.tools.cc:1806 +#: f.tools.cc:1817 msgid "(enter keys)" msgstr "(нажмите комбинацию клавиш)" -#: f.tools.cc:1932 +#: f.tools.cc:1943 #, c-format msgid "\"%s\" Reserved, cannot be used" msgstr "\"%s\" Зарезервировано: переопределить невозможно" -#: f.tools.cc:2084 +#: f.tools.cc:2095 msgid "unable to save KB-shortcuts file" msgstr "невозможно сохранить файл горячих клавиш" -#: f.tools.cc:2154 +#: f.tools.cc:2165 msgid "" "Right-click collection thumbnails to \n" "cut/copy to cache, paste cache, remove." @@ -3179,245 +3403,241 @@ "Правый клик на иконки коллекции для \n" "перемещения/копирования в/из кэша, удаления." -#: f.tools.cc:2190 +#: f.tools.cc:2201 msgid "Start a new collection" msgstr "Начать новую коллекцию" -#: f.tools.cc:2192 +#: f.tools.cc:2203 msgid "Collection to view or edit" msgstr "Коллекция для просмотра/редактирования" -#: f.tools.cc:2194 +#: f.tools.cc:2205 msgid "Select images, add to cache" msgstr "Выбрать изображения, добавить в кэш" -#: f.tools.cc:2196 +#: f.tools.cc:2207 msgid "Clear image cache" msgstr "Очистить кэш изображений" -#: f.tools.cc:2198 +#: f.tools.cc:2209 msgid "Delete a collection" msgstr "Удалить коллекцию" -#: f.tools.cc:2221 +#: f.tools.cc:2232 msgid "New Collection" msgstr "Новая коллекция" -#: f.tools.cc:2222 +#: f.tools.cc:2233 msgid "Choose Collection" msgstr "Выберите коллекцию" -#: f.tools.cc:2223 +#: f.tools.cc:2234 msgid "Delete Collection" msgstr "Удалить коллекцию" -#: f.tools.cc:2293 +#: f.tools.cc:2304 #, c-format msgid "delete %s ?" msgstr "Удалить %s ?" -#: f.tools.cc:2606 +#: f.tools.cc:2617 msgid "Move collection" msgstr "Переместить коллекцию" -#: f.tools.cc:2609 +#: f.tools.cc:2620 msgid "collection name" msgstr "Имя коллекции" -#: f.tools.cc:2612 +#: f.tools.cc:2623 msgid "old top directory" msgstr "Старый каталог верхнего уровня" -#: f.tools.cc:2615 +#: f.tools.cc:2626 msgid "new top directory" msgstr "Новый каталог верхнего уровня" -#: f.tools.cc:2662 +#: f.tools.cc:2673 msgid "completed" msgstr "Закончено" -#: f.tools.cc:2752 +#: f.tools.cc:2763 msgid "Press ESC to exit slide show" msgstr "Нажмите ESC для выхода из слайд-шоу" -#: f.tools.cc:2753 +#: f.tools.cc:2764 msgid "latest versions only" msgstr "Только последние версии" -#: f.tools.cc:2754 +#: f.tools.cc:2765 msgid "continuous loop" msgstr "Непрерывный цикл" -#: f.tools.cc:2755 +#: f.tools.cc:2766 msgid "start with current image" msgstr "начать с текущего изображения" -#: f.tools.cc:2759 +#: f.tools.cc:2770 msgid "arrow keys" msgstr "Клавиши стрелок" -#: f.tools.cc:2760 +#: f.tools.cc:2771 msgid "instant" msgstr "Немедленно" -#: f.tools.cc:2761 +#: f.tools.cc:2772 msgid "fade-in" msgstr "Проявка" -#: f.tools.cc:2762 +#: f.tools.cc:2773 msgid "roll-right" msgstr "Скатить вправо" -#: f.tools.cc:2763 +#: f.tools.cc:2774 msgid "roll-down" msgstr "Скатить вниз" -#: f.tools.cc:2764 +#: f.tools.cc:2775 msgid "shift-left" msgstr "левый шифт" -#: f.tools.cc:2765 +#: f.tools.cc:2776 msgid "venetian" msgstr "Жалюзи" -#: f.tools.cc:2766 +#: f.tools.cc:2777 msgid "grate" msgstr "Решетка" -#: f.tools.cc:2767 +#: f.tools.cc:2778 msgid "rectangle" msgstr "Прямоугольник" -#: f.tools.cc:2768 +#: f.tools.cc:2779 msgid "radar" msgstr "Радар" -#: f.tools.cc:2769 +#: f.tools.cc:2780 msgid "jaws" msgstr "Челюсти" -#: f.tools.cc:2770 +#: f.tools.cc:2781 msgid "ellipse" msgstr "Эллипс" -#: f.tools.cc:2771 +#: f.tools.cc:2782 msgid "raindrops" msgstr "дождевые капли" -#: f.tools.cc:2781 f.tools.cc:3866 f.tools.cc:4444 -msgid "0 files selected" -msgstr "0 файлов выбрано" - -#: f.tools.cc:2783 +#: f.tools.cc:2794 msgid "collection:" msgstr "коллекцию:" -#: f.tools.cc:2793 +#: f.tools.cc:2804 msgid "music file" msgstr "Музыкальный файл" -#: f.tools.cc:2801 +#: f.tools.cc:2812 msgid "transitions" msgstr "Переходы" -#: f.tools.cc:2803 +#: f.tools.cc:2814 msgid "seconds" msgstr "секунд" -#: f.tools.cc:2854 f.tools.cc:3038 f.tools.cc:3060 +#: f.tools.cc:2865 f.tools.cc:3049 f.tools.cc:3071 msgid "no image files selected" msgstr "нет выбранных файлов" -#: f.tools.cc:3019 +#: f.tools.cc:3030 msgid "open collection" msgstr "Открыть коллекцию" -#: f.tools.cc:3064 +#: f.tools.cc:3075 msgid "save as collection" msgstr "Сохранить как коллекцию" -#: f.tools.cc:3077 +#: f.tools.cc:3088 msgid "Select music file or playlist" msgstr "Выбрать музыкальный файл или плей-лист" -#: f.tools.cc:3868 +#: f.tools.cc:3879 msgid "new base name" msgstr "Новое базовое имя" -#: f.tools.cc:3871 +#: f.tools.cc:3882 msgid "starting sequence" msgstr "Начальное значение" -#: f.tools.cc:3873 +#: f.tools.cc:3884 msgid "increment" msgstr "Приращение" -#: f.tools.cc:3927 +#: f.tools.cc:3938 msgid "new file already exists:" msgstr "Новый файл уже существует:" -#: f.tools.cc:3937 +#: f.tools.cc:3948 msgid "Rename failed:" msgstr "Переименование не удалось:" -#: f.tools.cc:3982 +#: f.tools.cc:3993 msgid "base name / sequence / increment not reasonable" msgstr "Базовое имя / последовательность / увеличение не приемлемо" -#: f.tools.cc:4085 +#: f.tools.cc:4096 msgid "max. width" msgstr "Макс. ширина" -#: f.tools.cc:4090 +#: f.tools.cc:4101 msgid "no change" msgstr "Макс. ширина" -#: f.tools.cc:4093 +#: f.tools.cc:4104 msgid "new file type" msgstr "Новый тип файла" -#: f.tools.cc:4094 +#: f.tools.cc:4105 msgid "same" msgstr "Тот же" -#: f.tools.cc:4102 +#: f.tools.cc:4113 msgid "replace originals" msgstr "Заменить исходные файлы" -#: f.tools.cc:4103 +#: f.tools.cc:4114 msgid "move to location" msgstr "Переместить" -#: f.tools.cc:4104 +#: f.tools.cc:4115 msgid "remove EXIF" msgstr "Удалить EXIF" -#: f.tools.cc:4105 +#: f.tools.cc:4116 msgid "delete originals" msgstr "Удалить исходные файлы" -#: f.tools.cc:4180 +#: f.tools.cc:4191 msgid "file already exists" msgstr "файл существует" -#: f.tools.cc:4188 +#: f.tools.cc:4199 msgid "file type not supported" msgstr "формат файла не поддерживается" -#: f.tools.cc:4227 +#: f.tools.cc:4238 msgid "cannot create new file" msgstr "невозможно создать новый файл" -#: f.tools.cc:4351 +#: f.tools.cc:4362 msgid "replace original files?" msgstr "Перезаписать исходные файлы?" -#: f.tools.cc:4352 +#: f.tools.cc:4363 #, c-format msgid "replace original files? (max. %d x %d)" msgstr "Заменить исходные файлы? (макс. %d x %d)" -#: f.tools.cc:4360 +#: f.tools.cc:4371 #, c-format msgid "" "copy files? \n" @@ -3426,7 +3646,7 @@ "Копировать файлы? \n" " в местоположение %s" -#: f.tools.cc:4363 +#: f.tools.cc:4374 #, c-format msgid "" "copy files? (max. %d x %d) \n" @@ -3435,7 +3655,7 @@ "Копировать файлы? (макс. %d x %d) \n" " в местоположение %s" -#: f.tools.cc:4367 +#: f.tools.cc:4378 msgid "" "\n" " and delete originals" @@ -3443,80 +3663,88 @@ "\n" " и удалить оригиналы" -#: f.tools.cc:4380 +#: f.tools.cc:4391 msgid "location is not a valid directory" msgstr "Новое местоположение не является каталогом" -#: f.tools.cc:4387 +#: f.tools.cc:4398 #, c-format msgid "max. size %d x %d is not reasonable" msgstr "Макс.размер %d x %d не приемлем" -#: f.tools.cc:4447 +#: f.tools.cc:4458 msgid "output file type" msgstr "тип выходного файла" -#: f.tools.cc:4459 +#: f.tools.cc:4470 msgid "white balance" msgstr "баланс белого" -#: f.tools.cc:4460 +#: f.tools.cc:4471 msgid "interpolation" msgstr "интерполяция" -#: f.tools.cc:4461 +#: f.tools.cc:4472 msgid "color space" msgstr "цветовое пространство" -#: f.tools.cc:4462 +#: f.tools.cc:4473 msgid "gamma curve" msgstr "гамма-кривая" -#: f.tools.cc:4465 +#: f.tools.cc:4476 msgid "camera" msgstr "камера" -#: f.tools.cc:4466 +#: f.tools.cc:4477 msgid "fixed" msgstr "фиксированный" -#: f.tools.cc:4467 +#: f.tools.cc:4478 msgid "calculated" msgstr "вычисленный" -#: f.tools.cc:4999 +#: f.tools.cc:4495 +msgid "default" +msgstr "" + +#: f.tools.cc:4501 +msgid "defaults" +msgstr "" + +#: f.tools.cc:5010 msgid "x-spacing" msgstr "x-интервал" -#: f.tools.cc:5000 +#: f.tools.cc:5011 msgid "x-count" msgstr "x-значение" -#: f.tools.cc:5001 +#: f.tools.cc:5012 msgid "x-enable" msgstr "x-включить" -#: f.tools.cc:5007 +#: f.tools.cc:5018 msgid "y-spacing" msgstr "y-интервал" -#: f.tools.cc:5008 +#: f.tools.cc:5019 msgid "y-count" msgstr "y-значение" -#: f.tools.cc:5009 +#: f.tools.cc:5020 msgid "y-enable" msgstr "y-включить" -#: f.tools.cc:5016 +#: f.tools.cc:5027 msgid "x-offset" msgstr "x-смещение" -#: f.tools.cc:5020 +#: f.tools.cc:5031 msgid "y-offset" msgstr "y-смещение" -#: f.tools.cc:5444 +#: f.tools.cc:5455 msgid "" "Brightness should show a gradual ramp \n" "extending all the way to the edges." @@ -3524,19 +3752,31 @@ "Яркость должна постепенно изменяться \n" "в направлении краев." -#: f.tools.cc:5549 +#: f.tools.cc:5560 msgid "Available Translations" msgstr "Доступные переводы" -#: f.tools.cc:5553 +#: f.tools.cc:5564 msgid "Set Language" msgstr "Установка языка" -#: f.tools.cc:5653 +#: f.tools.cc:5664 msgid "Make Launcher" msgstr "Создать элемент меню запуска" -#: fotoxx-13.08.cc:330 +#: fotoxx-13.09.cc:201 +msgid "Tab F: image file view/edit" +msgstr "" + +#: fotoxx-13.09.cc:208 +msgid "Tab G: image gallery" +msgstr "" + +#: fotoxx-13.09.cc:215 +msgid "Tab W: world map" +msgstr "" + +#: fotoxx-13.09.cc:339 msgid "" "First time Fotoxx startup. \n" "Latest version: http://www.kornelix.com/fotoxx \n" @@ -3546,43 +3786,69 @@ "Последняя версия: http://www.kornelix.com/fotoxx \n" "Начинается синхронизация файлов (требуется время) \n" -#: fotoxx-13.08.cc:363 +#: fotoxx-13.09.cc:372 msgid "Please install missing programs:" msgstr "Установите отсутствующие программы:" -#: fotoxx-13.08.cc:816 -msgid "Location from World Map" -msgstr "Точка на карте мира" +#: fotoxx-13.09.cc:686 +#, c-format +msgid " BUSY %d%c " +msgstr "" + +#: fotoxx-13.09.cc:688 +msgid " BUSY " +msgstr "" + +#: fotoxx-13.09.cc:745 +msgid " (reduced)" +msgstr "" + +#: fotoxx-13.09.cc:753 +#, c-format +msgid " edits: %d" +msgstr "" + +#: fotoxx-13.09.cc:758 +msgid " menu locked" +msgstr "" + +#: fotoxx-13.09.cc:759 +msgid " area active" +msgstr "" + +#: fotoxx-13.09.cc:760 +msgid " dialog open" +msgstr "" -#: fotoxx-13.08.cc:2500 +#: fotoxx-13.09.cc:2538 msgid "Exceed 50 anchor points" msgstr "Превышать 50 точек привязки" -#: fotoxx-13.08.cc:2681 +#: fotoxx-13.09.cc:2719 msgid "load curve from a file" msgstr "Загрузить кривую из файла" -#: fotoxx-13.08.cc:2735 +#: fotoxx-13.09.cc:2773 msgid "curve file is invalid" msgstr "Файл кривой поврежден" -#: fotoxx-13.08.cc:2740 +#: fotoxx-13.09.cc:2778 msgid "curve file has different no. of curves" msgstr "Файл кривой отличается от требуемой кривой" -#: fotoxx-13.08.cc:2755 +#: fotoxx-13.09.cc:2793 msgid "save curve to a file" msgstr "Сохранить кривую в файл" -#: fotoxx-13.08.cc:2853 fotoxx-13.08.cc:3380 fotoxx-13.08.cc:3395 +#: fotoxx-13.09.cc:2891 fotoxx-13.09.cc:3417 fotoxx-13.09.cc:3432 msgid "prior function still active" msgstr "Предшествующая функция все еще активна" -#: fotoxx-13.08.cc:2860 +#: fotoxx-13.09.cc:2898 msgid "Too many edits, please save image" msgstr "Слишком много изменений, пожалуйста сохраните изображение" -#: fotoxx-13.08.cc:2875 +#: fotoxx-13.09.cc:2913 msgid "" "Select area not active.\n" "Continue?" @@ -3590,23 +3856,23 @@ "Выбранная область не активна.\n" "Продолжить?" -#: fotoxx-13.08.cc:3350 +#: fotoxx-13.09.cc:3387 msgid "Discard edits?" msgstr "Сбросить изменения?" -#: fotoxx-13.08.cc:3351 +#: fotoxx-13.09.cc:3388 msgid "This action will discard changes\n" msgstr "Это действие отменит изменения\n" -#: fotoxx-13.08.cc:3352 fotoxx.h:973 +#: fotoxx-13.09.cc:3389 fotoxx.h:994 msgid "Keep" msgstr "Оставить" -#: fotoxx-13.08.cc:3353 +#: fotoxx-13.09.cc:3390 msgid "Discard" msgstr "Сбросить" -#: fotoxx-13.08.cc:4054 +#: fotoxx-13.09.cc:4088 #, c-format msgid "" "warning: real memory %d MB < required %d MB \n" @@ -3615,212 +3881,224 @@ "Внимание: памяти доступно %d МБ < требуемых %d МБ \n" "время отклика может значительно возрасти \n" -#: fotoxx.h:936 +#: fotoxx.h:955 msgid "Add All" msgstr "Добавить все" -#: fotoxx.h:938 +#: fotoxx.h:957 msgid "Amount" msgstr "Размер" -#: fotoxx.h:939 +#: fotoxx.h:958 +msgid "Angle" +msgstr "Угол" + +#: fotoxx.h:959 msgid "Apply" msgstr "Применить" -#: fotoxx.h:940 +#: fotoxx.h:960 msgid "Autocomplete" msgstr "Автозаполнение" -#: fotoxx.h:941 +#: fotoxx.h:961 msgid "Black" msgstr "Черный" -#: fotoxx.h:942 +#: fotoxx.h:962 msgid "Blend Width" msgstr "Ширина области смешивания" -#: fotoxx.h:944 +#: fotoxx.h:964 msgid "Brightness" msgstr "Яркость" -#: fotoxx.h:945 +#: fotoxx.h:965 msgid "Browse" msgstr "Обзор" -#: fotoxx.h:946 +#: fotoxx.h:966 msgid "Cancel" msgstr "Отмена" -#: fotoxx.h:947 +#: fotoxx.h:967 msgid "Choose" msgstr "Выбор" -#: fotoxx.h:948 +#: fotoxx.h:968 msgid "Clear" msgstr "Очистить" -#: fotoxx.h:950 +#: fotoxx.h:970 msgid "Contrast" msgstr "Контраст" -#: fotoxx.h:952 +#: fotoxx.h:972 msgid "Curve File:" msgstr "Файл кривой:" -#: fotoxx.h:953 +#: fotoxx.h:973 msgid "Cut" msgstr "Вырезать" -#: fotoxx.h:954 +#: fotoxx.h:974 msgid "Darker Areas" msgstr "Затемнить область" -#: fotoxx.h:957 +#: fotoxx.h:977 msgid "Done" msgstr "Готово" -#: fotoxx.h:958 +#: fotoxx.h:978 msgid "Edit" msgstr "Редактировать" -#: fotoxx.h:960 +#: fotoxx.h:980 msgid "Erase" msgstr "Стереть" -#: fotoxx.h:961 +#: fotoxx.h:981 msgid "Fetch" msgstr "Получить" -#: fotoxx.h:962 +#: fotoxx.h:982 msgid "Find" msgstr "Поиск" -#: fotoxx.h:963 +#: fotoxx.h:983 msgid "Finish" msgstr "Финиш" -#: fotoxx.h:964 +#: fotoxx.h:984 msgid "Font" msgstr "Шрифт" -#: fotoxx.h:966 +#: fotoxx.h:985 +msgid "Geotags" +msgstr "" + +#: fotoxx.h:987 msgid "Height" msgstr "Высота" -#: fotoxx.h:968 +#: fotoxx.h:989 msgid "histogram" msgstr "Гистограмма" -#: fotoxx.h:970 +#: fotoxx.h:991 msgid "Images" msgstr "Изображения" -#: fotoxx.h:971 +#: fotoxx.h:992 msgid "Insert" msgstr "Вставить" -#: fotoxx.h:974 +#: fotoxx.h:995 msgid "Lighter Areas" msgstr "Осветлить область" -#: fotoxx.h:975 +#: fotoxx.h:996 msgid "limit" msgstr "Лимит" -#: fotoxx.h:977 +#: fotoxx.h:998 msgid "Negative" msgstr "Негатив" -#: fotoxx.h:978 +#: fotoxx.h:999 msgid "New" msgstr "Новый" -#: fotoxx.h:980 +#: fotoxx.h:1001 msgid "search index file missing" msgstr "Файл индекса поиска отсутствует" -#: fotoxx.h:981 +#: fotoxx.h:1002 msgid "OK" msgstr "ОК" -#: fotoxx.h:983 +#: fotoxx.h:1004 msgid "Open RAW File" msgstr "Открыть raw файл" -#: fotoxx.h:985 +#: fotoxx.h:1006 msgid "Pause" msgstr "Пауза" -#: fotoxx.h:986 +#: fotoxx.h:1007 msgid "Percent" msgstr "Процент" -#: fotoxx.h:987 +#: fotoxx.h:1008 msgid "Presets" msgstr "Предустановленные" -#: fotoxx.h:989 +#: fotoxx.h:1010 msgid "Proceed" msgstr "Продолжить" -#: fotoxx.h:991 +#: fotoxx.h:1012 msgid "range" msgstr "Диапазон" -#: fotoxx.h:994 +#: fotoxx.h:1015 msgid "Reduce" msgstr "Уменьшить" -#: fotoxx.h:997 +#: fotoxx.h:1018 msgid "Reset" msgstr "Сбросить" -#: fotoxx.h:1000 +#: fotoxx.h:1021 msgid "Unknown file type, save as tiff/jpeg/png to edit" msgstr "Неизвестный тип файла, сохраните как tiff/jpeg/png для редактирования" -#: fotoxx.h:1001 +#: fotoxx.h:1022 msgid "Search" msgstr "Поиск" -#: fotoxx.h:1005 +#: fotoxx.h:1026 +msgid "Size" +msgstr "Размер" + +#: fotoxx.h:1027 msgid "Start" msgstr "Старт" -#: fotoxx.h:1006 +#: fotoxx.h:1028 msgid "Threshold" msgstr "Порог" -#: fotoxx.h:1007 +#: fotoxx.h:1029 #, c-format msgid "exceed %d files" msgstr "Превышено %d файлов" -#: fotoxx.h:1009 +#: fotoxx.h:1031 msgid "Undo All" msgstr "Отменить все" -#: fotoxx.h:1010 +#: fotoxx.h:1032 msgid "Undo Last" msgstr "Отменить последнее" -#: fotoxx.h:1012 +#: fotoxx.h:1034 msgid "Unfinish" msgstr "Не финиш" -#: fotoxx.h:1014 +#: fotoxx.h:1036 msgid "View" msgstr "Вид" -#: fotoxx.h:1015 +#: fotoxx.h:1037 msgid "Web" msgstr "Веб" -#: fotoxx.h:1016 +#: fotoxx.h:1038 msgid "White" msgstr "Белый" -#: fotoxx.h:1018 +#: fotoxx.h:1040 msgid "Map" msgstr "Карта" @@ -3828,7 +4106,7 @@ msgid "user guide not found" msgstr "Инструкция не найдена" -#: zfuncs.cc:4504 zfuncs.cc:10210 +#: zfuncs.cc:4504 zfuncs.cc:10284 #, c-format msgid "cannot open file %s" msgstr "Не удалось открыть файл %s" @@ -3837,77 +4115,81 @@ msgid "save screen to file" msgstr "Сохранить экран в файл" -#: zfuncs.cc:8819 +#: zfuncs.cc:8891 msgid "No" msgstr "Нет" -#: zfuncs.cc:8819 +#: zfuncs.cc:8891 msgid "Yes" msgstr "Да" -#: zfuncs.cc:8898 zfuncs.cc:8938 zfuncs.cc:9277 zfuncs.cc:9595 zfuncs.cc:10323 -#: zfuncs.cc:10329 zfuncs.cc:10335 zfuncs.cc:10341 +#: zfuncs.cc:8970 zfuncs.cc:9012 zfuncs.cc:9351 zfuncs.cc:9669 zfuncs.cc:10397 +#: zfuncs.cc:10403 zfuncs.cc:10409 zfuncs.cc:10415 msgid "cancel" msgstr "Отмена" -#: zfuncs.cc:9239 +#: zfuncs.cc:9313 msgid "open" msgstr "Открыть" -#: zfuncs.cc:9244 +#: zfuncs.cc:9318 msgid "choose" msgstr "Выбрать" -#: zfuncs.cc:9249 +#: zfuncs.cc:9323 msgid "save" msgstr "Сохранить" -#: zfuncs.cc:9255 +#: zfuncs.cc:9329 msgid "open folder" msgstr "Открыть каталог" -#: zfuncs.cc:9260 +#: zfuncs.cc:9334 msgid "create folder" msgstr "Создать каталог" -#: zfuncs.cc:9266 +#: zfuncs.cc:9340 msgid "hidden" msgstr "Скрытый" -#: zfuncs.cc:9327 +#: zfuncs.cc:9344 +msgid "quality" +msgstr "Качество" + +#: zfuncs.cc:9401 msgid "JPG quality 0-100" msgstr "Качество jpg от 0 до 100" -#: zfuncs.cc:9586 +#: zfuncs.cc:9660 #, c-format msgid "printed image width: %.1f height: %.1f cm" msgstr "Печатать изображение шириной: %.1f высотой: %.1f cm" -#: zfuncs.cc:9595 +#: zfuncs.cc:9669 msgid "done" msgstr "Готово" -#: zfuncs.cc:9595 zfuncs.cc:9607 +#: zfuncs.cc:9669 zfuncs.cc:9681 msgid "margins" msgstr "Края" -#: zfuncs.cc:9603 +#: zfuncs.cc:9677 msgid "top" msgstr "Верх" -#: zfuncs.cc:9604 +#: zfuncs.cc:9678 msgid "bottom" msgstr "Низ" -#: zfuncs.cc:9613 +#: zfuncs.cc:9687 msgid "image scale" msgstr "Масштаб изображения" -#: zfuncs.cc:9615 +#: zfuncs.cc:9689 msgid "percent" msgstr "Процент" -#: zfuncs.cc:10097 +#: zfuncs.cc:10171 msgid "" "Initial parameters file created. \n" "Inspect and revise if necessary." @@ -3915,19 +4197,19 @@ "Начальные параметры файла созданы. \n" "Проверьте и при необходимости исправьте." -#: zfuncs.cc:10113 +#: zfuncs.cc:10187 msgid "load parameters from a file" msgstr "Загрузить параметры из файла" -#: zfuncs.cc:10182 +#: zfuncs.cc:10256 msgid "save parameters to a file" msgstr "Сохранить параметры в файл" -#: zfuncs.cc:10321 zfuncs.cc:10327 zfuncs.cc:10333 zfuncs.cc:10339 +#: zfuncs.cc:10395 zfuncs.cc:10401 zfuncs.cc:10407 zfuncs.cc:10413 msgid "edit parameters" msgstr "Изменить параметры" -#: zfuncs.cc:10322 zfuncs.cc:10328 +#: zfuncs.cc:10396 zfuncs.cc:10402 msgid "" "list\n" "all" @@ -3935,7 +4217,7 @@ "Список\n" "все" -#: zfuncs.cc:10322 zfuncs.cc:10328 zfuncs.cc:10334 zfuncs.cc:10340 +#: zfuncs.cc:10396 zfuncs.cc:10402 zfuncs.cc:10408 zfuncs.cc:10414 msgid "" "load\n" "file" @@ -3943,7 +4225,7 @@ "Загрузить\n" "файл" -#: zfuncs.cc:10322 zfuncs.cc:10328 zfuncs.cc:10334 zfuncs.cc:10340 +#: zfuncs.cc:10396 zfuncs.cc:10402 zfuncs.cc:10408 zfuncs.cc:10414 msgid "" "save\n" "file" @@ -3951,7 +4233,7 @@ "Сохранить\n" "файл" -#: zfuncs.cc:10323 zfuncs.cc:10335 +#: zfuncs.cc:10397 zfuncs.cc:10409 msgid "" "add\n" "new" @@ -3959,223 +4241,123 @@ "Добавить\n" "новый" -#: zfuncs.cc:10323 zfuncs.cc:10329 zfuncs.cc:10335 zfuncs.cc:10341 +#: zfuncs.cc:10397 zfuncs.cc:10403 zfuncs.cc:10409 zfuncs.cc:10415 msgid "apply" msgstr "Применить" -#: zfuncs.cc:10376 +#: zfuncs.cc:10450 msgid "apply?" msgstr "Применить?" -#: zfuncs.cc:10433 +#: zfuncs.cc:10507 msgid "(new parm name)" msgstr "(новое имя параметра)" -#: zfuncs.cc:10433 +#: zfuncs.cc:10507 msgid "add parameter" msgstr "Добавить параметр" -#~ msgid "negative" -#~ msgstr "негатив" - -#~ msgid "Cartoon Parameters" -#~ msgstr "Параметры рисунка" - -#~ msgid "Contrast Span" -#~ msgstr "Диапазон контрастности" - -#~ msgid "Contrast Spread" -#~ msgstr "Распространение контрастности" - -#~ msgid "Contrast Saturation" -#~ msgstr "Насыщенность контрастности" - -#~ msgid "invert" -#~ msgstr "Инвертировать" - -#~ msgid "Cartoon" -#~ msgstr "Рисунок" - -#~ msgid "Convert into a cartoon drawing" -#~ msgstr "Преобразовать в рисунок" - -#~ msgid "new gallery from tab F" -#~ msgstr "новая галерея из закладки F" - -#~ msgid "Edit list of bookmarked images" -#~ msgstr "Редактировать перечень закладок" - -#~ msgid "no bookmarks defined" -#~ msgstr "закладка не определена" - -#~ msgid "" -#~ "Outline\n" -#~ " Width" -#~ msgstr "" -#~ "Контур\n" -#~ " ширина" - -#~ msgid "previous" -#~ msgstr "Предыдущий" - -#~ msgid "Start Trim function for each new image" -#~ msgstr "Запустить функцию обрезки для каждого нового изображения" - -#~ msgid "start edit function first" -#~ msgstr "Сперва запустите функцию редактирования" - -#~ msgid "Turn upright or level tilted image" -#~ msgstr "Повернуть изображение в вертикальное или наклонное положение" - -#~ msgid "gold" -#~ msgstr "Золото" - -#~ msgid "Zoom-out (smaller)" -#~ msgstr "Уменьшить (меньше размер)" - -#~ msgid "Zoom-in (bigger)" -#~ msgstr "Увеличить (больше размер)" - -#~ msgid "Enhance" -#~ msgstr "Улучшить" - -#~ msgid "Transform" -#~ msgstr "Преобразовать" - -#~ msgid "Trim" -#~ msgstr "Обрезать" - -#~ msgid "Monitor Check" -#~ msgstr "Проверить монитор" - -#~ msgid "Magnified Scroll" -#~ msgstr "Против движения" - -#~ msgid "Drag Mouse" -#~ msgstr "По движению мыши" - -#~ msgid "contrast" -#~ msgstr "Контраст" - -#~ msgid "absolute" -#~ msgstr "Абсолютный" - -#~ msgid "%d images selected" -#~ msgstr "Выбрано %d изображений" - -#~ msgid "remove the images" -#~ msgstr "удаление изображений" - -#~ msgid "insert images at click position" -#~ msgstr "вставка изображений в указанное место" - -#~ msgid "Choose a collection first" -#~ msgstr "Сначала выберите коллекцию" +#~ msgid "Overwrite original file?" +#~ msgstr "Перезаписать оригинальный файл?" -#~ msgid "Selected Images" -#~ msgstr "Выбранные изображения" +#~ msgid "Do not warn again" +#~ msgstr "Не предупреждать в следующий раз " -#~ msgid "" -#~ "To insert the selected images, press \n" -#~ "[Insert] and click gallery position. \n" -#~ "To remove the images, press [Delete]" -#~ msgstr "" -#~ "Для вставки отмеченных изображений нажмите[Insert], \n" -#~ "затем кликните в нужном месте галереи.\n" -#~ "Для удаления изображений нажмите [Delete]" +#~ msgid "Warning" +#~ msgstr "Предостережение" -#~ msgid "Select images to add/move/remove" -#~ msgstr "Выбрать изображения для добавления/удаления/перемещения" +#~ msgid "Save File" +#~ msgstr "Сохранить файл" -#~ msgid "Choose a collection to view/edit" -#~ msgstr "Выбрать коллекцию для просмотра/редактирования" +#~ msgid "User Guide etc." +#~ msgstr "Руководство пользователя etc." -#~ msgid "Start new collection" -#~ msgstr "Начать новую коллекцию" +#~ msgid "Save to Same File" +#~ msgstr "Сохранить в тот же файл" -#~ msgid "specify tag" -#~ msgstr "Указать тег" +#~ msgid "Save to the same file (replace)" +#~ msgstr "Сохранить в тот же файл (заменить)" -#~ msgid "no tag specified" -#~ msgstr "Тег не указан" +#~ msgid "Save to New Version" +#~ msgstr "Сохранить как новую версию " -#~ msgid "search all files" -#~ msgstr "Поиск по всем файлам" +#~ msgid "Save to a new (next) version" +#~ msgstr "Сохранить в новой (следующей) версии" -#~ msgid "optional replacement" -#~ msgstr "Опциональная замена" +#~ msgid "Save to New File" +#~ msgstr "Сохранить в новый файл" -#~ msgid "tag to remove" -#~ msgstr "Тег для удаления" +#~ msgid "Save to a new file name" +#~ msgstr "Сохранить в файл с новым именем" -#~ msgid "Select Area lines etc." -#~ msgstr "Выбрать очертания зон и т.д." +#~ msgid "Edit Caption/Comments" +#~ msgstr "Изменить подпись/ комментарии" -#~ msgid "Outlines" -#~ msgstr "Контуры" +#~ msgid "Edit image caption or comment" +#~ msgstr "Изменить подпись/ комментарии" -#~ msgid "Convert to charcoal or chalk drawing" -#~ msgstr "Преобразование в рисунок мелом или углем" +#~ msgid "Edit image date/rating/tags" +#~ msgstr "Редактировать дату/рейтинг/теги" -#~ msgid "Delete a tag from multiple images" -#~ msgstr "Удалить теги из нескольких изображений" +#~ msgid "Batch Tags" +#~ msgstr "Пакетное изменение тэгов" -#~ msgid "Batch Delete Tag" -#~ msgstr "Групповое удаление тегов" +#~ msgid "Edit image geotags" +#~ msgstr "Добавить/проверить любые метаданные" -#~ msgid "Batch Add Tags" -#~ msgstr "Групповое добавление тегов" +#~ msgid "Paint edit function gradually with the mouse" +#~ msgstr "Установка коэффициента для центра и края пятна редактирования" -#~ msgid "Add tags to multiple images" -#~ msgstr "Добавить теги к нескольким изображениям" +#~ msgid "Save to the same file" +#~ msgstr "Сохранить в тот же файл" -#~ msgid "Report memory and CPU usage" -#~ msgstr "Отчет по использованию памяти и процессора" +#~ msgid "Save to a new version" +#~ msgstr "Сохранить в новой версии" -#~ msgid "Open Recent File" -#~ msgstr "Открыть последний файл" +#~ msgid "Save+V" +#~ msgstr "Сохранить+V" -#~ msgid "add all" -#~ msgstr "Добавить все" +#~ msgid "Save to a new file" +#~ msgstr "Сохранить в новый файл" -#~ msgid "insert" -#~ msgstr "Вставить" +#~ msgid "Save+F" +#~ msgstr "Сохранить+F" -#~ msgid "Print" -#~ msgstr "Печатать" +#~ msgid "Edit Caption and Comments" +#~ msgstr "Изменить подпись и комментарии" -#~ msgid "Move to" -#~ msgstr "Переместить в" +#~ msgid "image date (yyyymmdd)" +#~ msgstr "Дата изображения (ггггммдд)" -#~ msgid "Copy to" -#~ msgstr "Копировать в" +#~ msgid "use last" +#~ msgstr "Использовать последний" -#~ msgid "Add Image Outlines" -#~ msgstr "Добавить контуры" +#~ msgid "image stars" +#~ msgstr "Рейтинг изображения" -#~ msgid "chalk" -#~ msgstr "Мелок" +#~ msgid "current tags" +#~ msgstr "Текущие теги" -#~ msgid "pencil" -#~ msgstr "Карандаш" +#~ msgid "there are zero stuck pixels" +#~ msgstr "ноль горячих пикселей" -#~ msgid "outlines" -#~ msgstr "Контуры" +#~ msgid "Save Stuck Pixels" +#~ msgstr "Сохранить горячие пиксели" -#~ msgid "Rotate Left 90 degrees" -#~ msgstr "Повернуть влево 90 градусов" +#~ msgid "change sequence" +#~ msgstr "изменить последовательность" -#~ msgid "Rotate Left" -#~ msgstr "Повернуть влево" +#~ msgid "jump to last page" +#~ msgstr "на последнюю страницу" -#~ msgid "Rotate Right 90 degrees" -#~ msgstr "Повернуть вправо 90 градусов" +#~ msgid "jump to first page" +#~ msgstr "на первую страницу" -#~ msgid "Rotate Right" -#~ msgstr "Повернуть вправо" +#~ msgid "Gallery from Tab F" +#~ msgstr "Галерея из закладки F" -#~ msgid "Use buttons or drag right edge with mouse" -#~ msgstr "Используйте клавиатуру или перетащите правый край с помощью мыши" +#~ msgid "cmsCreateTransform() failed" +#~ msgstr "ошибка cmsCreateTransform()" -#~ msgid "auto-trim" -#~ msgstr "Авто-обрезка" +#~ msgid "angle" +#~ msgstr "Угол" diff -Nru fotoxx-13.08/locales/translate-sv.po fotoxx-13.09.1/locales/translate-sv.po --- fotoxx-13.08/locales/translate-sv.po 2013-08-01 20:57:52.000000000 +0000 +++ fotoxx-13.09.1/locales/translate-sv.po 2013-08-31 06:26:38.000000000 +0000 @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: fotoxx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-01 22:41+0200\n" +"POT-Creation-Date: 2013-08-29 08:25+0200\n" "PO-Revision-Date: 2013-02-04 15:51+0100\n" "Last-Translator: Peter Landgren \n" "Language-Team: Swedish \n" @@ -25,7 +25,7 @@ msgid "Select Area for Edits" msgstr "Välj område till redigering" -#: f.area.cc:57 f.retouch.cc:2362 +#: f.area.cc:57 f.retouch.cc:2359 msgid "Press F1 for help" msgstr "Tryck F1 efter hjälp" @@ -69,7 +69,7 @@ msgid "select all matching colors within mouse" msgstr "välj alla matchande färger med mus" -#: f.area.cc:114 f.retouch.cc:2397 +#: f.area.cc:114 f.retouch.cc:2394 msgid "mouse radius" msgstr "musradie" @@ -125,7 +125,7 @@ msgid "found %d pixels" msgstr "hittade %d pixlar" -#: f.area.cc:1824 f.area.cc:1841 f.area.cc:1861 f.area.cc:2191 +#: f.area.cc:1824 f.area.cc:1841 f.area.cc:1861 f.area.cc:2192 msgid "the area is not finished" msgstr "området är ej avslutat" @@ -137,39 +137,35 @@ msgid "Area Edge Calc" msgstr "Ytkantsberäkning" -#: f.area.cc:2265 +#: f.area.cc:2266 msgid "position with mouse click/drag" msgstr "positionera med musklick/drag" -#: f.area.cc:2290 +#: f.area.cc:2292 msgid "Paste Image" msgstr "Klistra in bild" -#: f.area.cc:2295 +#: f.area.cc:2297 msgid "resize" msgstr "ändra storlek" -#: f.area.cc:2303 -msgid "angle" -msgstr "vinkel" - -#: f.area.cc:2565 +#: f.area.cc:2598 msgid "load select area from a file" msgstr "ladda valt område från en fil" -#: f.area.cc:2619 +#: f.area.cc:2652 msgid "save select area to a file" msgstr "spara valt område till en fil" -#: f.bend.cc:71 f.menus.cc:230 +#: f.bend.cc:71 f.menus.cc:242 msgid "Unbend" msgstr "Utsläta" -#: f.bend.cc:79 f.image.cc:1485 +#: f.bend.cc:79 f.image.cc:1496 msgid "vertical" msgstr "vertikal" -#: f.bend.cc:80 f.image.cc:1484 +#: f.bend.cc:80 f.image.cc:1495 msgid "horizontal" msgstr "horisontell" @@ -181,7 +177,7 @@ msgid "curved" msgstr "böjd" -#: f.bend.cc:88 f.bend.cc:1517 f.bend.cc:1789 f.bend.cc:2049 f.image.cc:163 +#: f.bend.cc:88 f.bend.cc:1517 f.bend.cc:1789 f.bend.cc:2049 f.image.cc:172 msgid "Grid" msgstr "Rutnät" @@ -193,7 +189,7 @@ "Klicka på de fyra hörnen i en tetragobyta. Tryck [tillämpa].\n" "Bilden kommer att förvrängas genom att göra tetragonen till en rektangel." -#: f.bend.cc:356 f.menus.cc:231 +#: f.bend.cc:356 f.menus.cc:243 msgid "Keystone Correction" msgstr "" @@ -243,7 +239,7 @@ "Gör flera musdrag tills du när nöjd. \n" "När du är klar, välj ett annat område eller tryck [klar]." -#: f.bend.cc:1105 f.menus.cc:233 +#: f.bend.cc:1105 f.menus.cc:245 msgid "Warp area" msgstr "Vik ihop yta" @@ -265,7 +261,7 @@ " Gör flera musdragningar tills du är nöjd.\n" " När du är klar, tryck [Avsluta]." -#: f.bend.cc:1510 f.menus.cc:234 +#: f.bend.cc:1510 f.menus.cc:246 msgid "Warp curved" msgstr "Vik ihop kurva" @@ -273,7 +269,7 @@ msgid "warp span" msgstr "" -#: f.bend.cc:1781 f.menus.cc:235 +#: f.bend.cc:1781 f.menus.cc:247 msgid "Warp linear" msgstr "Vik ihop linjärt" @@ -287,7 +283,7 @@ " Gör flera musdragningar tills du är nöjd.\n" " När du är klar, tryck [Avsluta]." -#: f.bend.cc:2044 f.menus.cc:236 +#: f.bend.cc:2044 f.menus.cc:248 msgid "Warp affine" msgstr "Förvräng affine" @@ -311,7 +307,7 @@ msgid "reduce" msgstr "minska" -#: f.color.cc:371 f.menus.cc:224 +#: f.color.cc:371 f.menus.cc:236 msgid "Color Mode" msgstr "Färgläge" @@ -356,10 +352,6 @@ msgid "unknown cms profile %s" msgstr "okänd cms-profil %s" -#: f.color.cc:601 -msgid "cmsCreateTransform() failed" -msgstr "cmsCreateTransform() misslyckades" - #: f.color.cc:667 msgid "Color Match Images" msgstr "Färgmatcha bilder" @@ -368,8 +360,8 @@ msgid "mouse radius for color sample" msgstr "musradie för färgprov" -#: f.color.cc:696 f.color.cc:701 f.file.cc:3981 f.menus.cc:191 f.menus.cc:278 -#: f.menus.cc:390 fotoxx.h:982 +#: f.color.cc:696 f.color.cc:701 f.file.cc:4034 f.menus.cc:203 f.menus.cc:291 +#: f.menus.cc:401 fotoxx.h:1003 msgid "Open" msgstr "Öppna" @@ -393,11 +385,11 @@ msgid "select source image color first" msgstr "välj källbildsfärg först" -#: f.color.cc:957 f.tools.cc:5134 +#: f.color.cc:957 f.tools.cc:5145 msgid "Click image to select pixels." msgstr "Klicka på bild för att välja pixlar" -#: f.color.cc:995 f.menus.cc:227 +#: f.color.cc:995 f.menus.cc:239 msgid "Revise RGB" msgstr "Revidera RGB" @@ -429,15 +421,15 @@ msgid "+Blue -Yellow" msgstr "+Blå -Gul" -#: f.color.cc:1467 fotoxx.h:992 +#: f.color.cc:1467 fotoxx.h:1013 msgid "Red" msgstr "Röd" -#: f.color.cc:1468 fotoxx.h:965 +#: f.color.cc:1468 fotoxx.h:986 msgid "Green" msgstr "Grön" -#: f.color.cc:1469 fotoxx.h:943 +#: f.color.cc:1469 fotoxx.h:963 msgid "Blue" msgstr "Blå" @@ -445,7 +437,7 @@ msgid "Load CMYK parameters" msgstr "Ladda CMYK-parametrar" -#: f.color.cc:1614 f.color.cc:1686 f.repair.cc:4008 f.repair.cc:4104 +#: f.color.cc:1614 f.color.cc:1686 f.meta.cc:139 f.repair.cc:4025 msgid "File:" msgstr "Fil:" @@ -453,8 +445,8 @@ msgid "CMYK parameters file" msgstr "CMYK-parameterfil" -#: f.color.cc:1651 f.file.cc:2047 f.meta.cc:1282 f.repair.cc:4048 -#: f.tools.cc:1708 +#: f.color.cc:1651 f.file.cc:2092 f.meta.cc:1451 f.repair.cc:4065 +#: f.tools.cc:1721 msgid "file not found" msgstr "fil ej funnen" @@ -483,7 +475,7 @@ msgid "light pixels" msgstr "ljusa pixlar" -#: f.combine.cc:2315 f.meta.cc:169 +#: f.combine.cc:2315 msgid "file:" msgstr "fil:" @@ -492,7 +484,7 @@ msgstr "Måla och vik ihop bild" #: f.combine.cc:2829 f.combine.cc:3482 f.combine.cc:4897 f.combine.cc:5795 -#: f.menus.cc:58 f.menus.cc:104 +#: f.menus.cc:58 f.menus.cc:119 msgid "Image" msgstr "bild" @@ -560,7 +552,7 @@ msgid "no curve (scanned image)" msgstr "ingen kurva (skannad bild)" -#: f.combine.cc:4348 f.combine.cc:5245 f.menus.cc:198 f.menus.cc:446 +#: f.combine.cc:4348 f.combine.cc:5245 f.menus.cc:210 f.menus.cc:457 msgid "Resize" msgstr "Ändra storlek" @@ -597,6 +589,165 @@ "Drag bilder till grov passninf.\n" "Rotera genom att dra från höger kant." +#: f.combine.cc:6061 +msgid "Mashup layout and background image" +msgstr "" + +#: f.combine.cc:6090 +msgid "choose an image file" +msgstr "" + +#: f.combine.cc:6091 +msgid "use current image file" +msgstr "" + +#: f.combine.cc:6092 +msgid "open a Mashup project file" +msgstr "" + +#: f.combine.cc:6093 +msgid "specify layout size and color" +msgstr "" + +#: f.combine.cc:6120 +msgid "choose layout file" +msgstr "" + +#: f.combine.cc:6181 +msgid "Edit Images" +msgstr "" + +#: f.combine.cc:6182 f.combine.cc:6931 +msgid "Edit Text" +msgstr "" + +#: f.combine.cc:6183 f.combine.cc:6482 +msgid "Save Project" +msgstr "" + +#: f.combine.cc:6186 +msgid "add or edit images" +msgstr "" + +#: f.combine.cc:6187 +msgid "add or edit text" +msgstr "" + +#: f.combine.cc:6188 +msgid "save project data" +msgstr "" + +#: f.combine.cc:6189 +msgid "project complete" +msgstr "" + +#: f.combine.cc:6190 +msgid "cancel project" +msgstr "" + +#: f.combine.cc:6283 +msgid "Open Project" +msgstr "" + +#: f.combine.cc:6302 +#, c-format +msgid "" +"layout image file missing: \n" +" %s" +msgstr "" + +#: f.combine.cc:6320 +#, c-format +msgid "" +"overlay image file missing: \n" +" %s" +msgstr "" + +#: f.combine.cc:6382 +#, c-format +msgid "" +"layout image file error: \n" +" %s" +msgstr "" + +#: f.combine.cc:6393 +#, c-format +msgid "" +"overlay image file error: \n" +" %s" +msgstr "" + +#: f.combine.cc:6452 +msgid "project file is defective" +msgstr "" + +#: f.combine.cc:6530 +msgid "Click image to select, drag image to move." +msgstr "" + +#: f.combine.cc:6563 +msgid "current image:" +msgstr "" + +#: f.combine.cc:6585 f.combine.cc:6965 f.image.cc:1681 +msgid "Transparency" +msgstr "Transparans" + +#: f.combine.cc:6589 +msgid "Edge Blend Width" +msgstr "" + +#: f.combine.cc:6755 +#, c-format +msgid "exceeded %d images" +msgstr "" + +#: f.combine.cc:6906 +msgid "Enter text, click/drag on image." +msgstr "" + +#: f.combine.cc:6936 f.image.cc:1652 f.tools.cc:1113 +msgid "Text" +msgstr "Text" + +#: f.combine.cc:6954 f.image.cc:1670 +msgid "text" +msgstr "text" + +#: f.combine.cc:6955 f.image.cc:1671 +msgid "backing" +msgstr "backar" + +#: f.combine.cc:6956 f.image.cc:1672 +msgid "outline" +msgstr "skiss" + +#: f.combine.cc:6957 f.image.cc:1673 +msgid "shadow" +msgstr "" + +#: f.combine.cc:6959 f.image.cc:1675 f.menus.cc:61 f.menus.cc:122 +#: f.menus.cc:286 fotoxx.h:969 +msgid "Color" +msgstr "Färg" + +#: f.combine.cc:6971 f.image.cc:1687 fotoxx.h:1039 +msgid "Width" +msgstr "Bredd" + +#: f.combine.cc:6984 f.image.cc:1700 +msgid "Text File:" +msgstr "Textfil:" + +#: f.combine.cc:7046 f.image.cc:1811 +msgid "select font" +msgstr "välj typsnitt" + +#: f.combine.cc:7154 +#, c-format +msgid "exceeded %d text entries" +msgstr "" + #: f.effects.cc:44 msgid "Set color depth to 1-16 bits" msgstr "Sätt färgdjup till 1-16 bitar" @@ -637,7 +788,7 @@ msgid "black/white" msgstr "" -#: f.effects.cc:983 f.menus.cc:241 +#: f.effects.cc:983 f.menus.cc:253 msgid "Graduated Blur" msgstr "" @@ -657,7 +808,7 @@ msgid "depth" msgstr "djup" -#: f.effects.cc:1219 f.file.cc:987 +#: f.effects.cc:1219 f.file.cc:1031 msgid "color" msgstr "färg" @@ -705,7 +856,7 @@ msgid "borders" msgstr "kanter" -#: f.effects.cc:2461 f.menus.cc:246 +#: f.effects.cc:2461 f.menus.cc:258 msgid "False Colors" msgstr "Byt färg" @@ -721,7 +872,7 @@ msgid "Blue: Red" msgstr "Blå: Röd" -#: f.effects.cc:2669 f.menus.cc:247 +#: f.effects.cc:2669 f.menus.cc:259 msgid "Vignette" msgstr "Vinjettverktyg" @@ -729,7 +880,7 @@ msgid "center" msgstr "centrum" -#: f.effects.cc:2700 f.retouch.cc:2402 +#: f.effects.cc:2700 f.retouch.cc:2399 msgid "edge" msgstr "kant" @@ -737,47 +888,55 @@ msgid "no newly added files found" msgstr "" -#: f.file.cc:275 +#: f.file.cc:307 msgid "no more images" msgstr "" -#: f.file.cc:343 f.menus.cc:136 f.menus.cc:457 +#: f.file.cc:347 f.menus.cc:151 f.menus.cc:468 msgid "Open RAW file (ufraw)" msgstr "Öppna RAW-fil (ufraw)" -#: f.file.cc:347 +#: f.file.cc:351 msgid "RAW type not registered in User Settings" msgstr "RAW-typ ej registrerad i användarinställningar" -#: f.file.cc:367 -msgid "Overwrite original file?" -msgstr "Skriva över originalfilen?" - -#: f.file.cc:368 -msgid "Do not warn again" -msgstr "Varna inte igen" - -#: f.file.cc:383 -msgid "Warning" -msgstr "Varning" - -#: f.file.cc:495 -msgid "Save File" -msgstr "Spara fil" +#: f.file.cc:401 +msgid "Save Image File" +msgstr "" -#: f.file.cc:528 zfuncs.cc:9270 -msgid "quality" -msgstr "kvalitet" +#: f.file.cc:411 +msgid "new version" +msgstr "" + +#: f.file.cc:412 +msgid "new file name" +msgstr "" + +#: f.file.cc:413 +msgid "replace file" +msgstr "" + +#: f.file.cc:419 +msgid "save as new file version" +msgstr "" -#: f.file.cc:530 +#: f.file.cc:420 f.file.cc:548 +msgid "save as new file name or type" +msgstr "" + +#: f.file.cc:421 +msgid "replace old file (OVERWRITE)" +msgstr "" + +#: f.file.cc:564 msgid "make current" msgstr "sätt aktuell" -#: f.file.cc:625 +#: f.file.cc:657 msgid "jpeg quality must be 1-100" msgstr "jpegkvalitete måste vara 1-100" -#: f.file.cc:653 +#: f.file.cc:683 #, c-format msgid "" "Overwrite file? \n" @@ -786,90 +945,90 @@ "Skriva över fil? \n" " %s" -#: f.file.cc:799 f.menus.cc:140 +#: f.file.cc:843 f.menus.cc:153 msgid "Rename Image File" msgstr "Döp om bildfil" -#: f.file.cc:806 +#: f.file.cc:850 msgid "old name" msgstr "gammalt namn" -#: f.file.cc:807 +#: f.file.cc:851 msgid "new name" msgstr "nytt namn" -#: f.file.cc:816 +#: f.file.cc:860 msgid "previous name" msgstr "föregående namn" -#: f.file.cc:817 +#: f.file.cc:861 msgid "add 1" msgstr "lägg till 1" -#: f.file.cc:895 f.file.cc:1248 +#: f.file.cc:939 f.file.cc:1292 msgid "target file already exists" msgstr "målfilen finns redan" -#: f.file.cc:922 f.file.cc:1270 f.file.cc:1388 +#: f.file.cc:966 f.file.cc:1314 f.file.cc:1432 #, c-format msgid "" "delete failed: \n" " %s" msgstr "borttagande misslyckades: %s" -#: f.file.cc:971 +#: f.file.cc:1015 msgid "Create Blank Image" msgstr "Skapa tom bild" -#: f.file.cc:973 +#: f.file.cc:1017 msgid "file name" msgstr "filnamn" -#: f.file.cc:978 f.image.cc:470 +#: f.file.cc:1022 f.image.cc:479 msgid "width" msgstr "bredd" -#: f.file.cc:981 f.image.cc:473 f.tools.cc:4088 +#: f.file.cc:1025 f.image.cc:482 f.tools.cc:4099 msgid "height" msgstr "höjd" -#: f.file.cc:1156 +#: f.file.cc:1200 msgid "Copy Image File" msgstr "Kopiera bildfil" -#: f.file.cc:1158 +#: f.file.cc:1202 msgid "Move Image File" msgstr "Flytta bildfil" -#: f.file.cc:1164 f.file.cc:1343 f.file.cc:1464 +#: f.file.cc:1208 f.file.cc:1387 f.file.cc:1508 msgid "image file" msgstr "bildfil" -#: f.file.cc:1169 +#: f.file.cc:1213 msgid "new location" msgstr "ny plats" -#: f.file.cc:1203 f.tools.cc:4317 +#: f.file.cc:1247 f.tools.cc:4328 msgid "Select directory" msgstr "Välj mapp" -#: f.file.cc:1233 +#: f.file.cc:1277 msgid "new location is not a directory" msgstr "nya platsen är ej en mapp" -#: f.file.cc:1307 +#: f.file.cc:1351 msgid "Delete Image File - CANNOT BE REVERSED" msgstr "Borttagande av bildfil - KAN EJ ÅNGRAS" -#: f.file.cc:1308 f.file.cc:1430 +#: f.file.cc:1352 f.file.cc:1474 msgid "(automatic step to next image)" msgstr "" -#: f.file.cc:1429 f.menus.cc:142 +#: f.file.cc:1473 f.menus.cc:155 msgid "Trash Image File" msgstr "Skräpbildfil" -#: f.file.cc:1494 +#: f.file.cc:1538 msgid "" "Linux standard trash does not work. \n" "Desktop trash folder will be created." @@ -877,7 +1036,7 @@ "Linux standardpapperskorg fungerar ej. \n" "En papperskorg på skrivbordet skapas." -#: f.file.cc:1497 +#: f.file.cc:1541 msgid "" "Linux and Desktop trash do not work. \n" "Permanently delete the image file?" @@ -885,1476 +1044,1512 @@ "Linux och skrivbordets papperskorg fungerar ej. \n" "Ta bort bildfilen permanent?" -#: f.file.cc:1527 +#: f.file.cc:1571 msgid "Move read-only file to trash?" msgstr "Flytta skrivskyddd fil till Skräp?" -#: f.file.cc:1556 +#: f.file.cc:1600 #, c-format msgid "Cannot create trash folder: %s" msgstr "Kan ej skapa skräpmapp: %s" -#: f.file.cc:1569 zfuncs.cc:4211 +#: f.file.cc:1613 zfuncs.cc:4211 #, c-format msgid "error: %s" msgstr "fel: %s" -#: f.file.cc:1588 +#: f.file.cc:1632 #, c-format msgid "delete failed: %s" msgstr "borttagande misslyckades: %s" -#: f.file.cc:2041 f.menus.cc:132 +#: f.file.cc:2086 f.menus.cc:147 msgid "Open Image File" msgstr "Öppna bildfil" -#: f.file.cc:2059 +#: f.file.cc:2104 msgid "unknown file type" msgstr "okänd filtyp" -#: f.file.cc:2341 +#: f.file.cc:2385 msgid "Unable to copy EXIF/IPTC data" msgstr "kan ej kopiera EXIF/IPTC-data" -#: f.file.cc:2404 f.file.cc:2465 +#: f.file.cc:2448 f.file.cc:2509 #, c-format msgid "file not found: %s" msgstr "fil ej hittad: %s" -#: f.file.cc:2409 f.file.cc:2470 +#: f.file.cc:2453 f.file.cc:2514 #, c-format msgid "file type not supported: %s" msgstr "filtyp stöds ej: %s" -#: f.file.cc:3982 f.menus.cc:390 +#: f.file.cc:4035 msgid "change directory" msgstr "ändra mapp" -#: f.file.cc:3990 f.menus.cc:391 +#: f.file.cc:4043 f.menus.cc:402 msgid "GoTo" msgstr "" -#: f.file.cc:4005 f.menus.cc:400 +#: f.file.cc:4058 f.menus.cc:405 msgid "Sort" msgstr "Sortera" -#: f.file.cc:4036 f.file.cc:4360 f.menus.cc:398 +#: f.file.cc:4089 f.file.cc:4420 f.menus.cc:410 msgid "Row↑" msgstr "Rad↑" -#: f.file.cc:4048 f.file.cc:4361 f.menus.cc:399 +#: f.file.cc:4101 f.file.cc:4421 f.menus.cc:411 msgid "Row↓" msgstr "Rad↓" -#: f.file.cc:4060 f.file.cc:4363 f.menus.cc:394 +#: f.file.cc:4113 f.file.cc:4423 f.menus.cc:406 msgid "First" msgstr "Första" -#: f.file.cc:4061 f.file.cc:4364 f.menus.cc:395 +#: f.file.cc:4114 f.file.cc:4424 f.menus.cc:407 msgid "Last" msgstr "Sista" -#: f.file.cc:4062 f.file.cc:4358 f.file.cc:4365 f.menus.cc:396 +#: f.file.cc:4115 f.file.cc:4418 f.file.cc:4425 f.menus.cc:408 msgid "Page↑" msgstr "Sida↑" -#: f.file.cc:4063 f.file.cc:4359 f.file.cc:4366 f.menus.cc:397 +#: f.file.cc:4116 f.file.cc:4419 f.file.cc:4426 f.menus.cc:409 msgid "Page↓" msgstr "Sida↓" -#: f.file.cc:4114 f.tools.cc:940 +#: f.file.cc:4167 f.tools.cc:953 msgid "Choose top image directory" msgstr "Välj översta bildmapp" -#: f.file.cc:4120 f.file.cc:4134 +#: f.file.cc:4173 f.file.cc:4187 msgid "recent" msgstr "" -#: f.file.cc:4121 f.file.cc:4139 +#: f.file.cc:4174 f.file.cc:4192 msgid "newest" msgstr "" -#: f.file.cc:4170 +#: f.file.cc:4223 msgid "Gallery Sort" msgstr "Gallerisortering" -#: f.file.cc:4174 +#: f.file.cc:4227 msgid "File Name" msgstr "Filnamn" -#: f.file.cc:4175 +#: f.file.cc:4228 msgid "File Mod Date/Time" msgstr "Fil mod datum/tid" -#: f.file.cc:4176 +#: f.file.cc:4229 msgid "Photo Date/Time (EXIF)" msgstr "Bilds datum/tid /EXIF)" -#: f.file.cc:4178 +#: f.file.cc:4231 msgid "ascending" msgstr "" -#: f.file.cc:4179 +#: f.file.cc:4232 msgid "descending" msgstr "" -#: f.file.cc:4352 f.file.cc:4353 f.file.cc:4355 +#: f.file.cc:4412 f.file.cc:4413 f.file.cc:4415 f.menus.cc:403 msgid "Zoom+" msgstr "Zoom+" -#: f.file.cc:4354 f.file.cc:4356 +#: f.file.cc:4414 f.file.cc:4416 f.menus.cc:404 msgid "Zoom-" msgstr "Zoom-" -#: f.file.cc:5192 fotoxx.h:1003 +#: f.file.cc:5253 fotoxx.h:1024 msgid "Select Files" msgstr "Välj filer" -#: f.file.cc:5668 fotoxx.h:935 +#: f.file.cc:5729 fotoxx.h:954 msgid "Add" msgstr "Lägg till" -#: f.file.cc:5668 fotoxx.h:995 +#: f.file.cc:5729 fotoxx.h:1016 msgid "Remove" msgstr "Tag bort" -#: f.file.cc:5670 +#: f.file.cc:5731 msgid "menu name" msgstr "menynamn" -#: f.file.cc:5740 f.file.cc:5761 +#: f.file.cc:5801 f.file.cc:5822 msgid "Restart Fotoxx to update plugin menu" msgstr "Starta om Fotoxx för att uppdatera insticksmenyn" -#: f.file.cc:5803 -msgid "no plugin command" -msgstr "inget pluginkommando" +#: f.file.cc:5864 +msgid "Plugins menu is empty" +msgstr "" -#: f.file.cc:5831 +#: f.file.cc:5892 msgid "plugin failed" msgstr "plugin misslyckades" -#: f.image.cc:47 -msgid "Turn Image" +#: f.image.cc:50 +msgid "Rotate Image 90º" +msgstr "" + +#: f.image.cc:54 +msgid "rotate -90º" msgstr "" -#: f.image.cc:114 +#: f.image.cc:55 +msgid "rotate +90º" +msgstr "" + +#: f.image.cc:123 msgid "Drag right edge with mouse" msgstr "" -#: f.image.cc:144 +#: f.image.cc:153 msgid "Rotate Image" msgstr "Rotera bild" -#: f.image.cc:148 zfuncs.cc:9605 +#: f.image.cc:157 zfuncs.cc:9679 msgid "left" msgstr "vänster" -#: f.image.cc:151 zfuncs.cc:9606 +#: f.image.cc:160 zfuncs.cc:9680 msgid "right" msgstr "höger" -#: f.image.cc:157 +#: f.image.cc:166 msgid "degrees" msgstr "grader" -#: f.image.cc:442 +#: f.image.cc:451 msgid "Drag middle to move, drag corners to resize." msgstr "Drag i mitten för att flytta, i hörnen för att ändra storlek." -#: f.image.cc:465 f.menus.cc:196 f.menus.cc:445 +#: f.image.cc:474 f.menus.cc:208 f.menus.cc:456 msgid "Trim/Crop" msgstr "Trimma bild" -#: f.image.cc:476 f.image.cc:756 +#: f.image.cc:485 f.image.cc:765 msgid "ratio" msgstr "förhållande" -#: f.image.cc:480 +#: f.image.cc:489 msgid "portrait" msgstr "" -#: f.image.cc:481 +#: f.image.cc:490 msgid "landscape" msgstr "" -#: f.image.cc:482 +#: f.image.cc:491 msgid "Lock Ratio" msgstr "Lås förhållande" -#: f.image.cc:486 +#: f.image.cc:495 msgid "customize" msgstr "anpassa" -#: f.image.cc:748 +#: f.image.cc:757 msgid "Trim Buttons" msgstr "Trimningsknappar" -#: f.image.cc:755 +#: f.image.cc:764 msgid "label" msgstr "etikett" -#: f.image.cc:1277 +#: f.image.cc:1286 msgid "Lock aspect ratio" msgstr "Lås aspektförhållande" -#: f.image.cc:1298 +#: f.image.cc:1307 msgid "Resize Image" msgstr "Ändra bildstorlek" -#: f.image.cc:1480 f.menus.cc:199 +#: f.image.cc:1491 f.menus.cc:211 msgid "Flip" msgstr "Vänd" -#: f.image.cc:1604 +#: f.image.cc:1610 msgid "Enter text, click/drag on image, right click to remove" msgstr "Skriv in text, klicka/drag i bild, högerklicka för att ta bort" -#: f.image.cc:1631 +#: f.image.cc:1645 msgid "Write Text on Image" msgstr "Skriv text på bild" -#: f.image.cc:1638 f.tools.cc:1100 -msgid "Text" -msgstr "Text" - -#: f.image.cc:1645 -msgid "Size" -msgstr "Storlek" - -#: f.image.cc:1656 -msgid "text" -msgstr "text" - -#: f.image.cc:1657 -msgid "backing" -msgstr "backar" - -#: f.image.cc:1658 -msgid "outline" -msgstr "skiss" - -#: f.image.cc:1659 -msgid "shadow" +#: f.image.cc:2312 +msgid "text file is defective" msgstr "" -#: f.image.cc:1661 f.menus.cc:61 f.menus.cc:107 f.menus.cc:273 fotoxx.h:949 -msgid "Color" -msgstr "Färg" - -#: f.image.cc:1667 -msgid "Transparency" -msgstr "Transparans" - -#: f.image.cc:1673 fotoxx.h:1017 -msgid "Width" -msgstr "Bredd" - -#: f.image.cc:1679 -msgid "Angle" -msgstr "Vinkel" - -#: f.image.cc:1686 -msgid "Text File:" -msgstr "Textfil:" - -#: f.image.cc:1764 -msgid "select font" -msgstr "välj typsnitt" - -#: f.menus.cc:54 f.menus.cc:100 +#: f.menus.cc:54 f.menus.cc:115 msgid "File" msgstr "Fil" -#: f.menus.cc:55 f.menus.cc:101 +#: f.menus.cc:55 f.menus.cc:116 msgid "Tools" msgstr "Verktyg" -#: f.menus.cc:56 f.menus.cc:102 +#: f.menus.cc:56 f.menus.cc:117 msgid "Metadata" msgstr "Metadata" -#: f.menus.cc:57 f.menus.cc:103 +#: f.menus.cc:57 f.menus.cc:118 msgid "Areas" msgstr "Områden" -#: f.menus.cc:59 f.menus.cc:105 +#: f.menus.cc:59 f.menus.cc:120 msgid "Retouch" msgstr "Retuschera" -#: f.menus.cc:60 f.menus.cc:106 +#: f.menus.cc:60 f.menus.cc:121 msgid "Repair" msgstr "" -#: f.menus.cc:62 f.menus.cc:108 +#: f.menus.cc:62 f.menus.cc:123 msgid "Bend" msgstr "" -#: f.menus.cc:63 f.menus.cc:109 +#: f.menus.cc:63 f.menus.cc:124 msgid "Effects" msgstr "" -#: f.menus.cc:64 f.menus.cc:110 +#: f.menus.cc:64 f.menus.cc:125 msgid "Combine" msgstr "Kombinera" -#: f.menus.cc:65 f.menus.cc:111 +#: f.menus.cc:65 f.menus.cc:126 msgid "Plugins" msgstr "Plugin" -#: f.menus.cc:66 f.menus.cc:112 fotoxx-13.08.cc:3631 fotoxx.h:967 +#: f.menus.cc:66 f.menus.cc:127 fotoxx-13.09.cc:3664 fotoxx.h:988 msgid "Help" msgstr "Hjälp" -#: f.menus.cc:99 f.menus.cc:271 +#: f.menus.cc:99 f.menus.cc:284 msgid "Favorites Menu" msgstr "Meny med favoriter" +#: f.menus.cc:100 +msgid "Open, Save, Trash, Rename, Print" +msgstr "" + +#: f.menus.cc:101 +msgid "Synch Files, Settings, Collections, Batch Funcs ..." +msgstr "" + +#: f.menus.cc:102 +msgid "Captions, Tags, Ratings, Geotags, Search ... " +msgstr "" + +#: f.menus.cc:103 +msgid "Select image areas to edit, copy and paste" +msgstr "" + +#: f.menus.cc:104 +msgid "Rotate, Trim/Crop, Resize, Add Text" +msgstr "" + +#: f.menus.cc:105 +msgid "Improve brightness, contrast, color ..." +msgstr "" + +#: f.menus.cc:106 +msgid "Sharpen, Clean, Red-eyes, Paint, Clone ..." +msgstr "" + +#: f.menus.cc:107 +msgid "White Balance, Color Profile, Color Matching" +msgstr "" + +#: f.menus.cc:108 +msgid "Fix Perspective, Bend/Warp image ..." +msgstr "" + +#: f.menus.cc:109 +msgid "Special Effects, Arty Transforms" +msgstr "" + +#: f.menus.cc:110 +msgid "HDR, HDF, Panorama, Stack, Mashup" +msgstr "" + +#: f.menus.cc:111 +msgid "Use other image editors within Fotoxx" +msgstr "" + #: f.menus.cc:112 -msgid "User Guide etc." -msgstr "Användarhandbok etc." +msgid "Quick Start, User Guide, Recent Changes ..." +msgstr "" -#: f.menus.cc:131 +#: f.menus.cc:146 msgid "New Window" msgstr "Nytt fönster" -#: f.menus.cc:131 +#: f.menus.cc:146 msgid "Open another window" msgstr "Öppna ett annat fönster" -#: f.menus.cc:132 f.menus.cc:278 +#: f.menus.cc:147 f.menus.cc:291 msgid "Open a new image file" msgstr "Öppna en ny bildfil" -#: f.menus.cc:133 +#: f.menus.cc:148 msgid "Open Previous File" msgstr "Öppna föregående fil" -#: f.menus.cc:133 +#: f.menus.cc:148 msgid "Open the previously seen file" msgstr "Öppna den tidigare sedda filen" -#: f.menus.cc:134 +#: f.menus.cc:149 msgid "Open a recently seen file" msgstr "Öppna en nyligen sedd fil" -#: f.menus.cc:134 +#: f.menus.cc:149 msgid "Recently Seen Images" msgstr "" -#: f.menus.cc:135 +#: f.menus.cc:150 msgid "Newly Added Images" msgstr "" -#: f.menus.cc:135 +#: f.menus.cc:150 msgid "Open a newly added file" msgstr "" -#: f.menus.cc:136 +#: f.menus.cc:151 msgid "Open and edit a camera RAW file" msgstr "Öppna och redigera en kamera-RAW-fil" -#: f.menus.cc:137 -msgid "Save to Same File" -msgstr "Spara till samma fil" - -#: f.menus.cc:137 -msgid "Save to the same file (replace)" -msgstr "Spara till samma fil (utbyte)" - -#: f.menus.cc:138 -msgid "Save to New Version" -msgstr "Spara till ny version" - -#: f.menus.cc:138 -msgid "Save to a new (next) version" -msgstr "Spara till en ny (nästa) version" - -#: f.menus.cc:139 -msgid "Save to New File" -msgstr "Spara till ny fil" - -#: f.menus.cc:139 -msgid "Save to a new file name" -msgstr "Spara till ett nytt filnamn" +#: f.menus.cc:152 f.menus.cc:294 +msgid "Save modified image file to disk" +msgstr "" + +#: f.menus.cc:152 +msgid "Save to Disk" +msgstr "" -#: f.menus.cc:140 +#: f.menus.cc:153 msgid "Change the image file name" msgstr "Ändra bildfilens namn" -#: f.menus.cc:141 +#: f.menus.cc:154 msgid "Create a blank image" msgstr "Skapa en tom bild" -#: f.menus.cc:141 +#: f.menus.cc:154 msgid "New Blank Image" msgstr "Ny tom bild" -#: f.menus.cc:142 f.menus.cc:284 +#: f.menus.cc:155 f.menus.cc:295 msgid "Move image file to Trash" msgstr "Flytta bildfil till papperskorgen" -#: f.menus.cc:143 +#: f.menus.cc:156 msgid "Print Image" msgstr "Skriv ut bild" -#: f.menus.cc:143 +#: f.menus.cc:156 msgid "Print the current image" msgstr "Skriv ut aktuell bild" -#: f.menus.cc:144 +#: f.menus.cc:157 msgid "Quit Fotoxx" msgstr "Avsluta Fotoxx" -#: f.menus.cc:146 +#: f.menus.cc:159 msgid "Index new files and make thumbnails" msgstr "Indexera nya filer och gör miniatyrbilder" -#: f.menus.cc:146 f.tools.cc:182 f.tools.cc:364 +#: f.menus.cc:159 f.tools.cc:182 f.tools.cc:364 msgid "Synchronize Files" msgstr "Synkronisera filer" -#: f.menus.cc:147 +#: f.menus.cc:160 msgid "Change user preferences" msgstr "Ändra användarinställningar" -#: f.menus.cc:147 +#: f.menus.cc:160 msgid "User Settings" msgstr "Användarinställningar" -#: f.menus.cc:148 +#: f.menus.cc:161 msgid "Change Keyboard Shortcut Keys" msgstr "" -#: f.menus.cc:148 +#: f.menus.cc:161 msgid "Keyboard Shortcuts" msgstr "Tangentbordsgenvägar" -#: f.menus.cc:149 f.tools.cc:2179 +#: f.menus.cc:162 f.tools.cc:2190 msgid "Manage Collections" msgstr "Hantera samlingar" -#: f.menus.cc:149 +#: f.menus.cc:162 msgid "Organize images into collections" msgstr "Organisera bilder till samlingar" -#: f.menus.cc:150 +#: f.menus.cc:163 msgid "Convert for a new top directory" msgstr "Konvertera för en ny högsta mapp" -#: f.menus.cc:150 +#: f.menus.cc:163 msgid "Move Collections" msgstr "Flytta samling" -#: f.menus.cc:151 f.tools.cc:2778 +#: f.menus.cc:164 f.tools.cc:2789 msgid "Slide Show" msgstr "Bildvisning" -#: f.menus.cc:151 +#: f.menus.cc:164 msgid "Start a slide show" msgstr "Börja en bildvisning" -#: f.menus.cc:152 f.tools.cc:3863 +#: f.menus.cc:165 f.tools.cc:3874 msgid "Batch Rename" msgstr "Massomdöpning" -#: f.menus.cc:152 +#: f.menus.cc:165 msgid "Rename multiple image files" msgstr "Namnbyte av flera bildfiler" -#: f.menus.cc:153 f.tools.cc:4078 +#: f.menus.cc:166 f.tools.cc:4089 msgid "Batch Convert/Resize/Move" msgstr "Satsvis konvertera/ändra storlek/flytta" -#: f.menus.cc:153 +#: f.menus.cc:166 msgid "Convert resize, move multiple files" msgstr "Konvertera, ändra storlek, flytta flera filer" -#: f.menus.cc:154 f.tools.cc:4416 +#: f.menus.cc:167 f.tools.cc:4427 msgid "Batch Convert RAW Files" msgstr "Satsvis konvertering av RAW-filer" -#: f.menus.cc:154 +#: f.menus.cc:167 msgid "Convert multiple camera RAW files" msgstr "Konvertera flera kamera-RAW-filer" -#: f.menus.cc:155 f.tools.cc:4795 +#: f.menus.cc:168 f.tools.cc:4806 msgid "Brightness Distribution" msgstr "Ljushetsfördelning" -#: f.menus.cc:155 +#: f.menus.cc:168 msgid "Show a brightness distribution graph" msgstr "Visa ett fördelningsdiagram för ljusstyrka" -#: f.menus.cc:156 f.menus.cc:455 f.tools.cc:4990 +#: f.menus.cc:169 f.menus.cc:466 f.tools.cc:5001 msgid "Grid Lines" msgstr "Rutnät" -#: f.menus.cc:156 +#: f.menus.cc:169 msgid "Show or revise grid lines" msgstr "Visa eller revidera nätlinjer" -#: f.menus.cc:157 f.tools.cc:5166 +#: f.menus.cc:170 f.tools.cc:5177 msgid "Show RGB" msgstr "Visa RGB" -#: f.menus.cc:157 +#: f.menus.cc:170 msgid "Show RGB colors at mouse click" msgstr "Visa RGB-färger vi musklick" -#: f.menus.cc:158 +#: f.menus.cc:171 msgid "Chart to adjust monitor color" msgstr "Diagram för att justera färg på monitor" -#: f.menus.cc:158 +#: f.menus.cc:171 msgid "Monitor Color" msgstr "Monitorfärg" -#: f.menus.cc:159 +#: f.menus.cc:172 msgid "Chart to adjust monitor gamma" msgstr "Diagram för att justera gamma för monitor" -#: f.menus.cc:159 f.tools.cc:5490 +#: f.menus.cc:172 f.tools.cc:5501 msgid "Monitor Gamma" msgstr "Bildskärmsgamma" -#: f.menus.cc:160 +#: f.menus.cc:173 msgid "Change Language" msgstr "Ändra språk" -#: f.menus.cc:160 +#: f.menus.cc:173 msgid "Change the GUI language" msgstr "Ändra GUI-språk" -#: f.menus.cc:161 +#: f.menus.cc:174 msgid "Missing Translations" msgstr "" -#: f.menus.cc:161 +#: f.menus.cc:174 msgid "Report missing translations" msgstr "" -#: f.menus.cc:162 +#: f.menus.cc:175 msgid "Edit Translations" msgstr "Redigera översättningar" -#: f.menus.cc:162 +#: f.menus.cc:175 msgid "Edit translations while using Fotoxx" msgstr "Redigera översättningar medan Fotoxx körs" -#: f.menus.cc:163 +#: f.menus.cc:176 msgid "Create a Gnome menu and launcher" msgstr "Skapa en Gnome-meny och startare" -#: f.menus.cc:163 +#: f.menus.cc:176 msgid "Menu and Launcher" msgstr "Meny och startare" -#: f.menus.cc:164 +#: f.menus.cc:177 msgid "Burn Images to CD/DVD" msgstr "Bränn bilder till CD/DVD" -#: f.menus.cc:164 +#: f.menus.cc:177 msgid "Burn selected image files to CD or DVD" msgstr "Bränn valda bildfiler till CD eller DVD" -#: f.menus.cc:165 +#: f.menus.cc:178 msgid "Memory and CPU (to terminal/logfile)" msgstr "" -#: f.menus.cc:165 +#: f.menus.cc:178 msgid "Resources" msgstr "Resurser" -#: f.menus.cc:167 -msgid "Edit Caption/Comments" -msgstr "Redigera beskrivning/kommentarer" - -#: f.menus.cc:167 -msgid "Edit image caption or comment" -msgstr "Redigera bildbeskrivning eller kommentar" - -#: f.menus.cc:168 f.meta.cc:165 f.meta.cc:1728 +#: f.menus.cc:180 f.meta.cc:110 f.meta.cc:1897 msgid "Edit Metadata" msgstr "Redigera Metadata" -#: f.menus.cc:168 -msgid "Edit image date/rating/tags" -msgstr "Redigera bilds datum/rangordning/flaggor" +#: f.menus.cc:180 +msgid "Edit image tags/caption/rating ..." +msgstr "" -#: f.menus.cc:169 +#: f.menus.cc:181 msgid "Add/remove tags for multiple images" msgstr "" -#: f.menus.cc:169 -msgid "Batch Tags" +#: f.menus.cc:181 f.meta.cc:1552 +msgid "Batch Add/Remove Tags" msgstr "" -#: f.menus.cc:170 +#: f.menus.cc:182 msgid "List a few key metadata items" msgstr "Lista några få metadataposter" -#: f.menus.cc:170 +#: f.menus.cc:182 msgid "View Metadata (short)" msgstr "Titta på Metadata (kort)" -#: f.menus.cc:171 +#: f.menus.cc:183 msgid "List all metadata items" msgstr "Lista alla metadataposter" -#: f.menus.cc:171 +#: f.menus.cc:183 msgid "View Metadata (long)" msgstr "Titta på Metadata (lång)" -#: f.menus.cc:172 +#: f.menus.cc:184 msgid "Edit Any Metadata" msgstr "Redigera något Metadata" -#: f.menus.cc:172 +#: f.menus.cc:184 msgid "Edit any image metadata" msgstr "Redigera en bilds metadata" -#: f.menus.cc:173 f.meta.cc:1820 +#: f.menus.cc:185 f.meta.cc:1989 msgid "Delete Metadata" msgstr "Tag bort Metadata" -#: f.menus.cc:173 +#: f.menus.cc:185 msgid "Remove all metadata from an image" msgstr "Tag bort alla metadata från en bild" -#: f.menus.cc:174 +#: f.menus.cc:186 msgid "Download Geolocations" msgstr "Ladda ner Geolocations" -#: f.menus.cc:174 +#: f.menus.cc:186 msgid "Download initial geolocation database" msgstr "Ladda ner en initial geolocation-databas" -#: f.menus.cc:176 f.meta.cc:2713 +#: f.menus.cc:188 f.meta.cc:2892 msgid "Edit Geotags" msgstr "Redigera Geotags" -#: f.menus.cc:176 -msgid "Edit image geotags" -msgstr "Redigera bild-geotags" +#: f.menus.cc:188 +msgid "Edit image location and geotags" +msgstr "" -#: f.menus.cc:177 +#: f.menus.cc:189 msgid "Add geotags to multiple images" msgstr "Lägg till geotags till flera bilder" -#: f.menus.cc:177 f.meta.cc:2905 +#: f.menus.cc:189 f.meta.cc:3084 msgid "Batch Add Geotags" msgstr "satsvis tillägg av Geotags" -#: f.menus.cc:178 +#: f.menus.cc:190 msgid "Find all images for a location [date]" msgstr "Hitta alla bilder för en plats [datum]" -#: f.menus.cc:178 +#: f.menus.cc:190 msgid "Images by Location/Date" msgstr "Bilder per plats/datum" -#: f.menus.cc:179 +#: f.menus.cc:191 msgid "Find images by clicking a world map" msgstr "Hitta bilder genom att klicka på en världskarta" -#: f.menus.cc:179 +#: f.menus.cc:191 msgid "Images by Map Location" msgstr "Bilder per kartplats" -#: f.menus.cc:180 +#: f.menus.cc:192 msgid "Find images meeting select criteria" msgstr "Hitta bilder med utvalda villkor" -#: f.menus.cc:180 +#: f.menus.cc:192 msgid "Search Images" msgstr "Bildsökning" -#: f.menus.cc:182 fotoxx.h:1002 +#: f.menus.cc:194 fotoxx.h:1023 msgid "Select" msgstr "Välj" -#: f.menus.cc:182 +#: f.menus.cc:194 msgid "Select object or area for editing" msgstr "Välj ett objekt eller område för redigering" -#: f.menus.cc:183 fotoxx.h:1004 +#: f.menus.cc:195 fotoxx.h:1025 msgid "Show" msgstr "Visa" -#: f.menus.cc:183 +#: f.menus.cc:195 msgid "Show (outline) existing area" msgstr "Visa (utkast) befintligt område" -#: f.menus.cc:184 fotoxx.h:969 +#: f.menus.cc:196 fotoxx.h:990 msgid "Hide" msgstr "Göm" -#: f.menus.cc:184 +#: f.menus.cc:196 msgid "Hide existing area" msgstr "Dölj befintligt område" -#: f.menus.cc:185 fotoxx.h:959 +#: f.menus.cc:197 fotoxx.h:979 msgid "Enable" msgstr "Koppla in" -#: f.menus.cc:185 +#: f.menus.cc:197 msgid "Enable area for editing" msgstr "Tillåt område för redigering" -#: f.menus.cc:186 fotoxx.h:956 +#: f.menus.cc:198 fotoxx.h:976 msgid "Disable" msgstr "Koppla bort" -#: f.menus.cc:186 +#: f.menus.cc:198 msgid "Disable area for editing" msgstr "Tillåt ej område för redigering" -#: f.menus.cc:187 fotoxx.h:972 +#: f.menus.cc:199 fotoxx.h:993 msgid "Invert" msgstr "Invertera" -#: f.menus.cc:187 +#: f.menus.cc:199 msgid "Reverse existing area" msgstr "Omvänd befintligt område" -#: f.menus.cc:188 +#: f.menus.cc:200 msgid "Erase existing area" msgstr "Radera befintligt område" -#: f.menus.cc:188 fotoxx.h:1013 +#: f.menus.cc:200 fotoxx.h:1035 msgid "Unselect" msgstr "Välj bort" -#: f.menus.cc:189 fotoxx.h:951 +#: f.menus.cc:201 fotoxx.h:971 msgid "Copy" msgstr "Kopiera" -#: f.menus.cc:189 +#: f.menus.cc:201 msgid "Copy an area for later pasting" msgstr "Kopiera ett område för senare inklistring" -#: f.menus.cc:190 fotoxx.h:984 +#: f.menus.cc:202 fotoxx.h:1005 msgid "Paste" msgstr "Klistra in" -#: f.menus.cc:190 +#: f.menus.cc:202 msgid "Paste an area into the current image" msgstr "Klistar in ett område in i den aktuella bilden" -#: f.menus.cc:191 +#: f.menus.cc:203 msgid "Open a file with a saved area" msgstr "Öppna en fil med ett sparat område" -#: f.menus.cc:192 f.menus.cc:281 fotoxx.h:999 +#: f.menus.cc:204 f.menus.cc:294 fotoxx.h:1020 msgid "Save" msgstr "Spara" -#: f.menus.cc:192 +#: f.menus.cc:204 msgid "Save an area to a file" msgstr "Spara ett område till en fil" -#: f.menus.cc:194 +#: f.menus.cc:206 msgid "Rotate 90 degrees" msgstr "" -#: f.menus.cc:194 f.menus.cc:447 -msgid "Turn" +#: f.menus.cc:206 f.menus.cc:458 +msgid "Rotate 90º" msgstr "" -#: f.menus.cc:195 fotoxx.h:998 +#: f.menus.cc:207 fotoxx.h:1019 msgid "Rotate" msgstr "Rotera" -#: f.menus.cc:195 +#: f.menus.cc:207 msgid "Rotate by any angle" msgstr "" -#: f.menus.cc:196 +#: f.menus.cc:208 msgid "Cut off unwanted margins" msgstr "Klipp bort oönskade marginaler" -#: f.menus.cc:197 +#: f.menus.cc:209 msgid "Auto-Trim" msgstr "Trimma automatiskt" -#: f.menus.cc:197 +#: f.menus.cc:209 msgid "Remove margins from warp, panorama, etc." msgstr "Tag bort marginaler från warp, panorama etc." -#: f.menus.cc:198 +#: f.menus.cc:210 msgid "Change pixel dimensions" msgstr "Ändra pixeldimensioner" -#: f.menus.cc:199 +#: f.menus.cc:211 msgid "Mirror image horizontally or vertically" msgstr "Spegla bild horisontellt eller vertikalt" -#: f.menus.cc:200 +#: f.menus.cc:212 msgid "Add Text" msgstr "Skriv text" -#: f.menus.cc:200 +#: f.menus.cc:212 msgid "Write text on image" msgstr "Skriv text på bild" -#: f.menus.cc:202 +#: f.menus.cc:214 msgid "Fast auto enhance that may work OK" msgstr "Snabb automatisk förbättring som kan fungera OK" -#: f.menus.cc:202 f.menus.cc:448 +#: f.menus.cc:214 f.menus.cc:459 msgid "Voodoo Enhance" msgstr "" -#: f.menus.cc:203 +#: f.menus.cc:215 msgid "Adjust brightness, contrast, color" msgstr "Justera ljusstyrka, kontrats, färg" -#: f.menus.cc:203 f.menus.cc:449 -msgid "Brightness/Color" -msgstr "Ljushet/färg" +#: f.menus.cc:215 f.retouch.cc:211 +msgid "Brightness/Contrast/Color" +msgstr "" -#: f.menus.cc:204 +#: f.menus.cc:216 msgid "Adjust contrast using a gamma curve" msgstr "Justera kontrast med en gamma kurva" -#: f.menus.cc:204 f.menus.cc:450 +#: f.menus.cc:216 f.menus.cc:461 msgid "Gamma Curves" msgstr "Gammakurvor" -#: f.menus.cc:205 +#: f.menus.cc:217 msgid "Add local contrast, enhance details" msgstr "Lägg till lokal kontrast, förbättra detaljer" -#: f.menus.cc:205 f.menus.cc:452 f.retouch.cc:1130 +#: f.menus.cc:217 f.menus.cc:463 f.retouch.cc:1130 msgid "Tone Mapping" msgstr "Tonavbildning" -#: f.menus.cc:206 f.menus.cc:451 +#: f.menus.cc:218 f.menus.cc:462 msgid "Flatten Brightness" msgstr "Platta till ljushet" -#: f.menus.cc:206 +#: f.menus.cc:218 msgid "Flatten brightness distribution" msgstr "" -#: f.menus.cc:207 +#: f.menus.cc:219 msgid "Expand Brightness" msgstr "Expandera ljushet" -#: f.menus.cc:207 +#: f.menus.cc:219 msgid "Expand brightness range" msgstr "Utvidga ljusstyrkeområdet" -#: f.menus.cc:208 +#: f.menus.cc:220 msgid "Brightness Ramp" msgstr "Ljushetsramp" -#: f.menus.cc:208 +#: f.menus.cc:220 msgid "Fix brightness uniformity across image" msgstr "Fixa ljusstyrkejämnhet över bild" -#: f.menus.cc:209 f.retouch.cc:2361 +#: f.menus.cc:221 f.retouch.cc:2358 msgid "Paint Edits" msgstr "" -#: f.menus.cc:209 -msgid "Paint edit function gradually with the mouse" +#: f.menus.cc:221 +msgid "Paint edit function gradually with mouse" msgstr "" -#: f.menus.cc:210 f.retouch.cc:2592 +#: f.menus.cc:222 f.retouch.cc:2589 msgid "Leverage Edits" msgstr "" -#: f.menus.cc:210 +#: f.menus.cc:222 msgid "Leverage edits by brightness or color" msgstr "" -#: f.menus.cc:212 +#: f.menus.cc:224 msgid "Make the image look sharper" msgstr "Gär så att bilden blir skarpare" -#: f.menus.cc:212 f.repair.cc:60 +#: f.menus.cc:224 f.repair.cc:60 msgid "Sharpen" msgstr "Gör skarpare" -#: f.menus.cc:213 f.repair.cc:1543 +#: f.menus.cc:225 f.repair.cc:1543 msgid "Blur" msgstr "Gör suddig" -#: f.menus.cc:213 +#: f.menus.cc:225 msgid "Make the image look fuzzy" msgstr "Gör så att bilden blir suddig" -#: f.menus.cc:214 +#: f.menus.cc:226 msgid "Filter noise from low-light photos" msgstr "Filtrera brus från ljussvaga bilder" -#: f.menus.cc:214 +#: f.menus.cc:226 msgid "Reduce Noise" msgstr "Minska brus" -#: f.menus.cc:215 +#: f.menus.cc:227 msgid "Remove unwanted objects" msgstr "Tag bort oönskade objekt" -#: f.menus.cc:215 f.repair.cc:1536 +#: f.menus.cc:227 f.repair.cc:1536 msgid "Smart Erase" msgstr "Fiffig radering" -#: f.menus.cc:216 +#: f.menus.cc:228 msgid "Fix red-eyes from electronic flash" msgstr "Fixa röda ögon från elektroniska blixtar" -#: f.menus.cc:216 f.menus.cc:454 +#: f.menus.cc:228 f.menus.cc:465 msgid "Red Eyes" msgstr "Röda ögon" -#: f.menus.cc:217 +#: f.menus.cc:229 msgid "Paint image pixels using the mouse" msgstr "Måla pixlar med musen" -#: f.menus.cc:217 f.repair.cc:2357 +#: f.menus.cc:229 f.repair.cc:2357 msgid "Paint/Clone" msgstr "Måla pixlar" -#: f.menus.cc:218 f.repair.cc:2880 +#: f.menus.cc:230 f.repair.cc:2880 msgid "Remove Dust" msgstr "Tag bort damm" -#: f.menus.cc:218 +#: f.menus.cc:230 msgid "Remove dust spots from scanned slides" msgstr "Tag bort dammkorn från skannade bilder" -#: f.menus.cc:219 +#: f.menus.cc:231 msgid "Anti-alias" msgstr "" -#: f.menus.cc:219 +#: f.menus.cc:231 msgid "Smoothen edges with jaggies" msgstr "" -#: f.menus.cc:220 +#: f.menus.cc:232 msgid "Fix Color Fringes" msgstr "Fixa färgfransar" -#: f.menus.cc:220 +#: f.menus.cc:232 msgid "Reduce Chromatic Abberation" msgstr "Minska kromatisk abberation" -#: f.menus.cc:221 +#: f.menus.cc:233 msgid "Erase known hot and dark pixels" msgstr "Radera kända heta och mörka pixlar" -#: f.menus.cc:221 f.repair.cc:3890 +#: f.menus.cc:233 f.repair.cc:3894 msgid "Fix Stuck Pixels" msgstr "Ordna fastnade pixlar" -#: f.menus.cc:223 +#: f.menus.cc:235 msgid "Click on a white/gray area to fix color tint" msgstr "Klicka på ett vitt/grått område för att fixa färgton" -#: f.menus.cc:223 f.menus.cc:453 +#: f.menus.cc:235 f.menus.cc:464 msgid "White Balance" msgstr "Vitbalans" -#: f.menus.cc:224 +#: f.menus.cc:236 msgid "Make BW/color, negative/positive, sepia" msgstr "Gör S-V/färg, negative/positiv, sepia" -#: f.menus.cc:225 +#: f.menus.cc:237 msgid "Color Profile" msgstr "Färgprofil" -#: f.menus.cc:225 +#: f.menus.cc:237 msgid "Convert to another color profile" msgstr "Omvandla till en annan färgprofil" -#: f.menus.cc:226 +#: f.menus.cc:238 msgid "Match Colors" msgstr "Matchande färger" -#: f.menus.cc:226 +#: f.menus.cc:238 msgid "Match colors on one image with another" msgstr "Matcha färg på en bild med en annan" -#: f.menus.cc:227 +#: f.menus.cc:239 msgid "Adjust color in selected image areas" msgstr "Justera färg i valda bildområden" -#: f.menus.cc:228 +#: f.menus.cc:240 msgid "Adjust color using CMYK or RGB values" msgstr "Justera färg genom att använda CMYK- eller RGB-värden" -#: f.menus.cc:228 +#: f.menus.cc:240 msgid "CMYK Density" msgstr "CMYK-täthet" -#: f.menus.cc:230 +#: f.menus.cc:242 msgid "Remove curvature, esp. panoramas" msgstr "" -#: f.menus.cc:231 +#: f.menus.cc:243 msgid "Straighten objects seen from an angle" msgstr "Räta ut objekt sedda från en vinkel" -#: f.menus.cc:232 +#: f.menus.cc:244 msgid "Flatten Book Page" msgstr "Jämna ut boksidor" -#: f.menus.cc:232 +#: f.menus.cc:244 msgid "Flatten a photographed book page" msgstr "Jämna ut en fotograferad boksida" -#: f.menus.cc:233 +#: f.menus.cc:245 msgid "Distort image areas using the mouse" msgstr "Distordera bildområden med musen" -#: f.menus.cc:234 f.menus.cc:235 f.menus.cc:236 +#: f.menus.cc:246 f.menus.cc:247 f.menus.cc:248 msgid "Distort the whole image using the mouse" msgstr "Distordera hela bilden med musen" -#: f.menus.cc:238 +#: f.menus.cc:250 msgid "Color Depth" msgstr "Färgdjup" -#: f.menus.cc:238 +#: f.menus.cc:250 msgid "Reduce color depth (posterize)" msgstr "Minska färgdjup (posterize)" -#: f.menus.cc:239 +#: f.menus.cc:251 msgid "Convert to pencil sketch" msgstr "" -#: f.menus.cc:239 +#: f.menus.cc:251 msgid "Sketch" msgstr "" -#: f.menus.cc:240 +#: f.menus.cc:252 msgid "Convert to colored line drawing" msgstr "Omvandla till ritning med färgade linjer" -#: f.menus.cc:240 +#: f.menus.cc:252 msgid "Drawing" msgstr "Ritning" -#: f.menus.cc:241 +#: f.menus.cc:253 msgid "Graduated Blur depending on contrast" msgstr "" -#: f.menus.cc:242 +#: f.menus.cc:254 msgid "Create an embossed or 3D appearance" msgstr "Skapa ett relief- eller 3D-utseende" -#: f.menus.cc:242 +#: f.menus.cc:254 msgid "Embossing" msgstr "Bosselera" -#: f.menus.cc:243 +#: f.menus.cc:255 msgid "Convert to square tiles" msgstr "Omvandla till kvadratiska plattor" -#: f.menus.cc:243 +#: f.menus.cc:255 msgid "Tiles" msgstr "Plattor" -#: f.menus.cc:244 +#: f.menus.cc:256 msgid "Convert to dots (Roy Lichtenstein effect)" msgstr "Omvandla till punkter (Roy Lichtenstein effect)" -#: f.menus.cc:244 +#: f.menus.cc:256 msgid "Dots" msgstr "Punkter" -#: f.menus.cc:245 +#: f.menus.cc:257 msgid "Convert into a simulated painting" msgstr "Omvandla till simulerad målning" -#: f.menus.cc:245 +#: f.menus.cc:257 msgid "Painting" msgstr "Färgläggning" -#: f.menus.cc:246 +#: f.menus.cc:258 msgid "Shift/convert colors into other colors" msgstr "Byt/omvandla färger till andra färger" -#: f.menus.cc:247 +#: f.menus.cc:259 msgid "Change brightness or color radially" msgstr "Ändra ljusstyrka och färg radiellt" -#: f.menus.cc:249 +#: f.menus.cc:261 msgid "Combine bright/dark images for better detail" msgstr "Kombinera ljus/mörka bilder för bättre detaljer" -#: f.menus.cc:249 +#: f.menus.cc:261 msgid "High Dynamic Range" msgstr "Stort dynamiskt område" -#: f.menus.cc:250 +#: f.menus.cc:262 msgid "Combine near/far focus images for deeper focus" msgstr "Kombinera när/fjärr-fokusbilder för ett djupare fokus" -#: f.menus.cc:250 +#: f.menus.cc:262 msgid "High Depth of Field" msgstr "" -#: f.menus.cc:251 +#: f.menus.cc:263 msgid "Combine images to erase passing people, etc." msgstr "Kombinera bilder för att radera passerande människor etc." -#: f.menus.cc:251 +#: f.menus.cc:263 msgid "Stack / Paint" msgstr "Stack / färg" -#: f.menus.cc:252 +#: f.menus.cc:264 msgid "Combine noisy images into a low-noise image" msgstr "Kombinera brusiga bilder till en lägbrusbild" -#: f.menus.cc:252 +#: f.menus.cc:264 msgid "Stack / Noise" msgstr "Stack / brus" -#: f.menus.cc:253 +#: f.menus.cc:265 msgid "Combine images into a panorama" msgstr "Kombinera bilder till ett panorama" -#: f.menus.cc:253 +#: f.menus.cc:265 msgid "Panorama" msgstr "Panorama" -#: f.menus.cc:254 +#: f.menus.cc:266 msgid "Combine images into a vertical panorama" msgstr "Kombinera bilder till ett vertikalt panorama" -#: f.menus.cc:254 +#: f.menus.cc:266 msgid "Vertical Panorama" msgstr "Vertikalt panorama" -#: f.menus.cc:256 +#: f.menus.cc:267 +msgid "Arrange multiple images on a background image" +msgstr "" + +#: f.menus.cc:267 +msgid "Mashup" +msgstr "" + +#: f.menus.cc:269 msgid "Add another image editor to the menu" msgstr "Lägg till ytterligare en bildredigerare till menyn" -#: f.menus.cc:256 +#: f.menus.cc:269 msgid "Edit Plugins" msgstr "Redigera insticksprogram" -#: f.menus.cc:258 fotoxx-13.08.cc:3597 +#: f.menus.cc:271 fotoxx-13.09.cc:3630 msgid "Quick Start" msgstr "" -#: f.menus.cc:258 +#: f.menus.cc:271 msgid "Quick Start mini-guide" msgstr "" -#: f.menus.cc:259 +#: f.menus.cc:272 msgid "Read the user guide" msgstr "Läs användarguiden" -#: f.menus.cc:259 fotoxx-13.08.cc:3600 +#: f.menus.cc:272 fotoxx-13.09.cc:3633 msgid "User Guide" msgstr "Användarguide" -#: f.menus.cc:260 +#: f.menus.cc:273 msgid "Recent user guide changes" msgstr "Nyligen gjorda ändringar i guiden" -#: f.menus.cc:260 fotoxx-13.08.cc:3603 +#: f.menus.cc:273 fotoxx-13.09.cc:3636 msgid "User Guide Changes" msgstr "Ändringar i användarhandbok" -#: f.menus.cc:261 +#: f.menus.cc:274 msgid "Fotoxx updates notification" msgstr "Fotoxx uppdateringsnotering" -#: f.menus.cc:261 fotoxx-13.08.cc:3606 +#: f.menus.cc:274 fotoxx-13.09.cc:3639 msgid "Program Updates" msgstr "Program uppdateras" -#: f.menus.cc:262 fotoxx-13.08.cc:3612 +#: f.menus.cc:275 fotoxx-13.09.cc:3645 msgid "Edit Functions Summary" msgstr "Sammanfattning av redigeringsfunktioner" -#: f.menus.cc:262 +#: f.menus.cc:275 msgid "Summary of image edit functions" msgstr "summering av bildredigeringsfunktioner" -#: f.menus.cc:263 fotoxx-13.08.cc:3609 +#: f.menus.cc:276 fotoxx-13.09.cc:3642 msgid "README" msgstr "README" -#: f.menus.cc:263 +#: f.menus.cc:276 msgid "Technical installation notes" msgstr "Tekniska installationsanvisningar" -#: f.menus.cc:264 fotoxx-13.08.cc:3615 +#: f.menus.cc:277 fotoxx-13.09.cc:3648 msgid "Change Log" msgstr "Ändringslogg" -#: f.menus.cc:264 +#: f.menus.cc:277 msgid "List updates by Fotoxx version" msgstr "Lista uppdateringar av Fotoxx-version" -#: f.menus.cc:265 fotoxx-13.08.cc:3618 +#: f.menus.cc:278 fotoxx-13.09.cc:3651 msgid "Log File" msgstr "Loggfil" -#: f.menus.cc:265 +#: f.menus.cc:278 msgid "View the log file and error messages" msgstr "Titta på loggfilen och felmeddelanden" -#: f.menus.cc:266 +#: f.menus.cc:279 msgid "How to do Fotoxx translations" msgstr "Hur gör man översättningar av Fotoxx" -#: f.menus.cc:266 fotoxx-13.08.cc:3621 +#: f.menus.cc:279 fotoxx-13.09.cc:3654 msgid "Translations" msgstr "Översättningar" -#: f.menus.cc:267 fotoxx-13.08.cc:3624 +#: f.menus.cc:280 fotoxx-13.09.cc:3657 msgid "Home Page" msgstr "Hemsida" -#: f.menus.cc:267 +#: f.menus.cc:280 msgid "Show the Fotoxx web page" msgstr "Visa Fotoxx hemsida" -#: f.menus.cc:268 fotoxx-13.08.cc:3627 +#: f.menus.cc:281 fotoxx-13.09.cc:3660 msgid "About" msgstr "Om" -#: f.menus.cc:268 +#: f.menus.cc:281 msgid "Version, license, contact, credits" msgstr "Version, licens, kontakt, tack" -#: f.menus.cc:271 +#: f.menus.cc:284 msgid "Favs" msgstr "Favs" -#: f.menus.cc:273 +#: f.menus.cc:286 msgid "Color of area borders etc." msgstr "" -#: f.menus.cc:274 fotoxx.h:1011 +#: f.menus.cc:287 fotoxx.h:1033 msgid "Undo" msgstr "Ångra" -#: f.menus.cc:274 +#: f.menus.cc:287 msgid "Undo one edit" msgstr "Ångra en redigering" -#: f.menus.cc:275 fotoxx.h:993 +#: f.menus.cc:288 fotoxx.h:1014 msgid "Redo" msgstr "Gör om" -#: f.menus.cc:275 +#: f.menus.cc:288 msgid "Redo one edit" msgstr "Gör om en redigering" -#: f.menus.cc:277 f.menus.cc:389 -msgid "Gallery from Tab F" +#: f.menus.cc:290 f.menus.cc:400 +msgid "Set gallery from current image file" msgstr "" -#: f.menus.cc:279 +#: f.menus.cc:290 f.menus.cc:400 +msgid "Sync.G" +msgstr "" + +#: f.menus.cc:292 msgid "Open the previous file" msgstr "Öppna föregående fil" -#: f.menus.cc:279 fotoxx.h:988 +#: f.menus.cc:292 fotoxx.h:1009 msgid "Prev" msgstr "Föreg" -#: f.menus.cc:280 fotoxx.h:979 +#: f.menus.cc:293 fotoxx.h:1000 msgid "Next" msgstr "Nästa" -#: f.menus.cc:280 +#: f.menus.cc:293 msgid "Open the next file" msgstr "Öppna nästa fil" -#: f.menus.cc:281 -msgid "Save to the same file" -msgstr "Spara till samma fil" - -#: f.menus.cc:282 -msgid "Save to a new version" -msgstr "Spara till en ny version" - -#: f.menus.cc:282 -msgid "Save+V" -msgstr "Spara+V" - -#: f.menus.cc:283 -msgid "Save to a new file" -msgstr "Spara till en ny fil" - -#: f.menus.cc:283 -msgid "Save+F" -msgstr "Spara+F" - -#: f.menus.cc:284 f.menus.cc:437 fotoxx.h:1008 +#: f.menus.cc:295 f.menus.cc:448 fotoxx.h:1030 msgid "Trash" msgstr "Skräp" -#: f.menus.cc:303 f.menus.cc:332 +#: f.menus.cc:314 f.menus.cc:343 msgid "Run as Fotoxx edit function" msgstr "Kör som Fotoxx redigeringsfunktion" -#: f.menus.cc:391 +#: f.menus.cc:382 +msgid "Top" +msgstr "" + +#: f.menus.cc:401 +msgid "open another directory" +msgstr "" + +#: f.menus.cc:402 msgid "go to bookmarked image" msgstr "" -#: f.menus.cc:392 +#: f.menus.cc:403 msgid "increase thumbnail size" msgstr "öka miniatyrbildstorlek" -#: f.menus.cc:393 +#: f.menus.cc:404 msgid "reduce thumbnail size" msgstr "minska miniatyrbildstorlek" -#: f.menus.cc:394 -msgid "jump to first page" -msgstr "hoppa till första sidan" - -#: f.menus.cc:395 -msgid "jump to last page" -msgstr "hoppa till sista sidan" +#: f.menus.cc:405 +msgid "change sort order" +msgstr "" + +#: f.menus.cc:406 +msgid "jump to beginning (top)" +msgstr "" + +#: f.menus.cc:407 +msgid "jump to end (bottom)" +msgstr "" -#: f.menus.cc:396 +#: f.menus.cc:408 msgid "previous page" msgstr "föregående sida" -#: f.menus.cc:397 +#: f.menus.cc:409 msgid "next page" msgstr "nästa sida" -#: f.menus.cc:398 +#: f.menus.cc:410 msgid "previous row" msgstr "föregående rad" -#: f.menus.cc:399 +#: f.menus.cc:411 msgid "next row" msgstr "nästa rad" -#: f.menus.cc:400 -msgid "change sequence" -msgstr "ändra ordningsföljd" - -#: f.menus.cc:434 fotoxx.h:996 +#: f.menus.cc:445 fotoxx.h:1017 msgid "Rename" msgstr "Byt namn" -#: f.menus.cc:435 +#: f.menus.cc:446 msgid "Copy to Location" msgstr "" -#: f.menus.cc:436 +#: f.menus.cc:447 msgid "Move to Location" msgstr "" -#: f.menus.cc:438 fotoxx.h:955 +#: f.menus.cc:449 fotoxx.h:975 msgid "Delete" msgstr "Tag bort" -#: f.menus.cc:439 +#: f.menus.cc:450 msgid "Copy to Clipboard" msgstr "Kopiera till urklipp" -#: f.menus.cc:440 +#: f.menus.cc:451 msgid "Remove from Collection" msgstr "" -#: f.menus.cc:441 +#: f.menus.cc:452 msgid "Cut to Image Cache" msgstr "" -#: f.menus.cc:442 +#: f.menus.cc:453 msgid "Copy to Image Cache" msgstr "" -#: f.menus.cc:443 +#: f.menus.cc:454 msgid "Paste Image Cache Here (clear)" msgstr "" -#: f.menus.cc:444 +#: f.menus.cc:455 msgid "Paste Image Cache Here (keep)" msgstr "" -#: f.menus.cc:456 +#: f.menus.cc:460 +msgid "Brightness/Color" +msgstr "Ljushet/färg" + +#: f.menus.cc:467 msgid "Select Area" msgstr "Välj område" -#: f.meta.cc:87 -msgid "Edit Caption and Comments" -msgstr "Redigera beskrivning och kommentar" +#: f.meta.cc:72 +msgid "" +"Metadata index is missing.\n" +"Use Tools > Synchronize Files." +msgstr "" + +#: f.meta.cc:106 +#, c-format +msgid "Rating: %c (stars)" +msgstr "" + +#: f.meta.cc:142 +msgid "Size:" +msgstr "" + +#: f.meta.cc:148 +msgid "Image Width:" +msgstr "" + +#: f.meta.cc:151 +msgid "Height:" +msgstr "" + +#: f.meta.cc:154 +msgid "Depth:" +msgstr "" + +#: f.meta.cc:159 +msgid "Image Date" +msgstr "" + +#: f.meta.cc:162 +msgid "Time" +msgstr "" + +#: f.meta.cc:164 +msgid "get prev" +msgstr "" + +#: f.meta.cc:169 +msgid "Choose:" +msgstr "" -#: f.meta.cc:98 +#: f.meta.cc:181 msgid "Caption" msgstr "Beskrivning" -#: f.meta.cc:102 +#: f.meta.cc:187 msgid "Comments" msgstr "Kommentar" -#: f.meta.cc:173 -msgid "image date (yyyymmdd)" -msgstr "bilddatum (ååååmmdd)" - -#: f.meta.cc:175 -msgid "use last" -msgstr "använd senaste" - -#: f.meta.cc:178 -msgid "image stars" -msgstr "bildstjärnor" - -#: f.meta.cc:196 -msgid "current tags" -msgstr "aktuella taggar" +#: f.meta.cc:193 +msgid "Image Tags" +msgstr "" -#: f.meta.cc:201 -msgid "recent tags" +#: f.meta.cc:199 +msgid "Recent Tags" msgstr "gamla märken" -#: f.meta.cc:206 f.meta.cc:387 f.meta.cc:1404 f.meta.cc:3932 -msgid "defined tags" +#: f.meta.cc:205 f.meta.cc:556 f.meta.cc:1573 f.meta.cc:4111 +msgid "Defined Tags" msgstr "definierade märken" -#: f.meta.cc:373 fotoxx.h:976 +#: f.meta.cc:455 +msgid "date format is YYYY-MM-DD" +msgstr "" + +#: f.meta.cc:459 +msgid "date is invalid" +msgstr "" + +#: f.meta.cc:492 +msgid "time format is HH:MM [:SS]" +msgstr "" + +#: f.meta.cc:496 +msgid "time is invalid" +msgstr "" + +#: f.meta.cc:542 fotoxx.h:997 msgid "Manage Tags" msgstr "Hantera flikar" -#: f.meta.cc:373 +#: f.meta.cc:542 msgid "orphan tags" msgstr "" -#: f.meta.cc:377 +#: f.meta.cc:546 msgid "category" msgstr "kategori" -#: f.meta.cc:380 +#: f.meta.cc:549 msgid "tag" msgstr "märke" -#: f.meta.cc:383 +#: f.meta.cc:552 msgid "create" msgstr "skapa" -#: f.meta.cc:384 +#: f.meta.cc:553 msgid "delete" msgstr "tag bort" -#: f.meta.cc:1383 -msgid "Batch Add/Remove Tags" -msgstr "" +#: f.meta.cc:1557 f.meta.cc:3116 f.tools.cc:2792 f.tools.cc:3877 +#: f.tools.cc:4093 f.tools.cc:4455 +msgid "0 files selected" +msgstr "Ingen fil vald" -#: f.meta.cc:1394 +#: f.meta.cc:1563 msgid "tags to add" msgstr "taggar att lägga till" -#: f.meta.cc:1395 +#: f.meta.cc:1564 msgid "tags to remove" msgstr "" -#: f.meta.cc:1476 +#: f.meta.cc:1645 #, c-format msgid "" "%s \n" @@ -2363,29 +2558,37 @@ "%s \n" " för många märken" -#: f.meta.cc:1590 +#: f.meta.cc:1759 msgid "specify files and tags" msgstr "" -#: f.meta.cc:1617 f.meta.cc:3044 f.tools.cc:2819 f.tools.cc:3011 -#: f.tools.cc:3051 f.tools.cc:4001 f.tools.cc:4311 f.tools.cc:4664 +#: f.meta.cc:1786 f.meta.cc:3223 f.tools.cc:2830 f.tools.cc:3022 +#: f.tools.cc:3062 f.tools.cc:4012 f.tools.cc:4322 f.tools.cc:4675 #, c-format msgid "%d files selected" msgstr "%d filer valda" -#: f.meta.cc:1664 +#: f.meta.cc:1833 msgid "View Metadata" msgstr "Se Metadata" -#: f.meta.cc:1822 fotoxx.h:937 +#: f.meta.cc:1901 +msgid "key name" +msgstr "" + +#: f.meta.cc:1903 +msgid "key value" +msgstr "" + +#: f.meta.cc:1991 fotoxx.h:956 msgid "All" msgstr "Allt" -#: f.meta.cc:1823 +#: f.meta.cc:1992 msgid "One Key:" msgstr "One Key:" -#: f.meta.cc:1954 +#: f.meta.cc:2123 #, c-format msgid "" "Download geotags data (8 megabytes). \n" @@ -2396,36 +2599,52 @@ "Spara i %s \n" "Fortsätta?" -#: f.meta.cc:1990 +#: f.meta.cc:2159 msgid "download failed" msgstr "nerladdning misslyckades" -#: f.meta.cc:2025 +#: f.meta.cc:2192 fotoxx-13.09.cc:855 +msgid "Location from World Map" +msgstr "Plats för världskarta" + +#: f.meta.cc:2194 +msgid "Loading world map" +msgstr "" + +#: f.meta.cc:2201 msgid "please download geolocations data" msgstr "ladda ner geolocations data" -#: f.meta.cc:2138 +#: f.meta.cc:2209 +msgid "Loading geolocations" +msgstr "" + +#: f.meta.cc:2327 msgid "geotags file must be downloaded" msgstr "geotags-fil måste laddas ner" -#: f.meta.cc:2432 f.meta.cc:2889 f.meta.cc:3152 +#: f.meta.cc:2611 f.meta.cc:3068 f.meta.cc:3331 #, c-format msgid "bad latitude/longitude: %s %s" msgstr "felaktig latitud/longitud: %s %s" -#: f.meta.cc:2731 f.meta.cc:2939 f.meta.cc:4432 +#: f.meta.cc:2893 +msgid "Geocoding web service courtesy of" +msgstr "" + +#: f.meta.cc:2910 f.meta.cc:3118 f.meta.cc:4611 msgid "city" msgstr "stad" -#: f.meta.cc:2734 f.meta.cc:2942 f.meta.cc:4435 +#: f.meta.cc:2913 f.meta.cc:3121 f.meta.cc:4614 msgid "country" msgstr "land" -#: f.meta.cc:2802 f.meta.cc:3065 +#: f.meta.cc:2981 f.meta.cc:3244 msgid "city not found" msgstr "stad ej funnen" -#: f.meta.cc:3130 +#: f.meta.cc:3309 msgid "" "data is incomplete \n" " proceed?" @@ -2433,156 +2652,160 @@ "data är ej fullständigt \n" " fortsätta?" -#: f.meta.cc:3156 +#: f.meta.cc:3335 msgid "no files selected" msgstr "inga filer valda" -#: f.meta.cc:3188 +#: f.meta.cc:3367 msgid "choose city" msgstr "välj stad" -#: f.meta.cc:3272 +#: f.meta.cc:3451 msgid "not found" msgstr "ej funnen" -#: f.meta.cc:3273 +#: f.meta.cc:3452 msgid "city and country required" msgstr "" -#: f.meta.cc:3365 +#: f.meta.cc:3544 msgid "Report Geotag Groups" msgstr "Rapportera Geotags-grupper" -#: f.meta.cc:3366 +#: f.meta.cc:3545 msgid "Group by country" msgstr "Grupp per land" -#: f.meta.cc:3367 +#: f.meta.cc:3546 msgid "Group by country/city" msgstr "Grupp per land/stad" -#: f.meta.cc:3368 +#: f.meta.cc:3547 msgid "Group by country/city/date" msgstr "Grupp per land/stad/datum" -#: f.meta.cc:3371 +#: f.meta.cc:3550 msgid "Combine within" msgstr "Kombinera inom" -#: f.meta.cc:3373 +#: f.meta.cc:3552 msgid "days" msgstr "dagar" -#: f.meta.cc:3715 +#: f.meta.cc:3667 +msgid "geotag groups" +msgstr "" + +#: f.meta.cc:3894 msgid "search range (km)" msgstr "sökområde (km)" -#: f.meta.cc:3786 +#: f.meta.cc:3965 msgid "No matching images found" msgstr "Inga matchande bilder hittade" -#: f.meta.cc:3872 +#: f.meta.cc:4051 msgid "Search Image Metadata" msgstr "Sök bild-Metadata" -#: f.meta.cc:3876 +#: f.meta.cc:4055 msgid "images to search:" msgstr "" -#: f.meta.cc:3877 +#: f.meta.cc:4056 msgid "all" msgstr "" -#: f.meta.cc:3878 +#: f.meta.cc:4057 msgid "current set only" msgstr "" -#: f.meta.cc:3881 +#: f.meta.cc:4060 msgid "matching images:" msgstr "" -#: f.meta.cc:3882 +#: f.meta.cc:4061 msgid "new set" msgstr "" -#: f.meta.cc:3883 +#: f.meta.cc:4062 msgid "add to set" msgstr "" -#: f.meta.cc:3884 +#: f.meta.cc:4063 msgid "remove" msgstr "" -#: f.meta.cc:3890 +#: f.meta.cc:4069 msgid "date range" msgstr "datumintervall" -#: f.meta.cc:3891 +#: f.meta.cc:4070 msgid "stars range" msgstr "stjärnområde" -#: f.meta.cc:3892 +#: f.meta.cc:4071 msgid "search tags" msgstr "sök taggar" -#: f.meta.cc:3893 +#: f.meta.cc:4072 msgid "search text" msgstr "sök text" -#: f.meta.cc:3894 +#: f.meta.cc:4073 msgid "search files" msgstr "sök filer" -#: f.meta.cc:3899 +#: f.meta.cc:4078 msgid "(yyyymmdd)" msgstr "(yyyymmdd)" -#: f.meta.cc:3905 +#: f.meta.cc:4084 msgid "all/any" msgstr "alla/någon" -#: f.meta.cc:3924 +#: f.meta.cc:4103 msgid "other criteria" msgstr "andra villkor" -#: f.meta.cc:3928 +#: f.meta.cc:4107 msgid "other" msgstr "annat" -#: f.meta.cc:4059 +#: f.meta.cc:4238 msgid "" "to remove images from current set, \n" "search current set" msgstr "" -#: f.meta.cc:4066 +#: f.meta.cc:4245 msgid "" "to add images to current set, \n" "search all images" msgstr "" -#: f.meta.cc:4293 +#: f.meta.cc:4472 #, c-format msgid "images added: %d removed: %d new count: %d" msgstr "" -#: f.meta.cc:4296 +#: f.meta.cc:4475 msgid "no changes made" msgstr "" -#: f.meta.cc:4429 +#: f.meta.cc:4608 msgid "Add Geotags Search Criteria" msgstr "Lägg till Geotags-sökvillkor" -#: f.meta.cc:4448 +#: f.meta.cc:4627 msgid "range (km)" msgstr "område (km)" -#: f.meta.cc:4539 +#: f.meta.cc:4718 msgid "error in latitude/longitude/range" msgstr "fel i latitud/longitud/område" -#: f.meta.cc:4604 +#: f.meta.cc:4783 msgid "" "These items are always reported: \n" "date, stars, tags, caption, comment" @@ -2590,15 +2813,15 @@ "Dessa poster är alltid rapporterade: \n" "datum, stjärnor, flaggor, beskrivning, kommentar" -#: f.meta.cc:4628 +#: f.meta.cc:4807 msgid "Additional Items for Report" msgstr "Ytterligare delar till rapport" -#: f.meta.cc:4634 +#: f.meta.cc:4813 msgid "Keyword" msgstr "Nyckelord" -#: f.meta.cc:4641 +#: f.meta.cc:4820 msgid "Match Criteria" msgstr "Matchningsvillkor" @@ -2646,7 +2869,7 @@ "1. Drag mus för val. \n" "2. Radera. 3. Repetera. " -#: f.repair.cc:1541 fotoxx.h:990 +#: f.repair.cc:1541 fotoxx.h:1011 msgid "Radius" msgstr "Radie" @@ -2743,38 +2966,30 @@ msgid "Chromatic Abberation" msgstr "Kromatisk abberation" -#: f.repair.cc:3896 +#: f.repair.cc:3900 msgid "pixel group" msgstr "pixelgrupp" -#: f.repair.cc:3897 +#: f.repair.cc:3901 msgid "circle color" msgstr "cirkelfärg" -#: f.repair.cc:4006 +#: f.repair.cc:3913 f.repair.cc:3957 +msgid "stuck pixels:" +msgstr "" + +#: f.repair.cc:4023 msgid "Load Stuck Pixels" msgstr "Ladda fastnade pixlar" -#: f.repair.cc:4030 f.repair.cc:4126 +#: f.repair.cc:4047 f.repair.cc:4113 msgid "Stuck Pixels file" msgstr "Fil med fastnade pixlar" -#: f.repair.cc:4070 +#: f.repair.cc:4087 msgid "file format error" msgstr "filformatfel" -#: f.repair.cc:4098 -msgid "there are zero stuck pixels" -msgstr "det finns inga fastnade pixlar" - -#: f.repair.cc:4102 -msgid "Save Stuck Pixels" -msgstr "Spara fastnade pixlar" - -#: f.retouch.cc:211 -msgid "Adjust Brightness and Color" -msgstr "Justera ljus och färg" - #: f.retouch.cc:267 msgid "small-steps" msgstr "småsteg" @@ -2827,15 +3042,15 @@ msgid "bright pixels" msgstr "ljusa pixlar" -#: f.retouch.cc:1983 +#: f.retouch.cc:1980 msgid "Ramp brightness across image" msgstr "Rampa ljushet över bild" -#: f.retouch.cc:2363 f.retouch.cc:2600 f.tools.cc:5242 +#: f.retouch.cc:2360 f.retouch.cc:2597 f.tools.cc:5253 msgid "Edit function must be active" msgstr "Redigeringsfunktionen måste vara aktiv§" -#: f.retouch.cc:2371 fotoxx-13.08.cc:2867 +#: f.retouch.cc:2368 fotoxx-13.09.cc:2905 msgid "" "Select area cannot be kept.\n" "Continue?" @@ -2843,23 +3058,23 @@ "Valt område behållas.\n" "Fortsätta?" -#: f.retouch.cc:2400 +#: f.retouch.cc:2397 msgid "power: center" msgstr "kraft: centrum" -#: f.retouch.cc:2405 +#: f.retouch.cc:2402 msgid "reset area" msgstr "återställ område§" -#: f.retouch.cc:2593 +#: f.retouch.cc:2590 msgid "Edit Function Amplifier" msgstr "Redigera funktionsförstärkare" -#: f.retouch.cc:2629 +#: f.retouch.cc:2626 msgid "minimum" msgstr "" -#: f.retouch.cc:2631 +#: f.retouch.cc:2628 msgid "maximum" msgstr "" @@ -2976,441 +3191,449 @@ msgid "create missing and update stale thumbnails" msgstr "skapa saknade och uppdatera förlegade miniatyrbilder" -#: f.tools.cc:542 +#: f.tools.cc:548 #, c-format msgid "%d thumbnails created, %d errors \n" msgstr "%d miniatyrbilder skapade, %d fel \n" -#: f.tools.cc:553 +#: f.tools.cc:559 msgid "no search index file is in use" msgstr "ingen indexsökfil används" -#: f.tools.cc:554 f.tools.cc:561 f.tools.cc:897 +#: f.tools.cc:560 f.tools.cc:567 f.tools.cc:910 msgid "COMPLETED" msgstr "AVSLUTAT" -#: f.tools.cc:566 +#: f.tools.cc:572 msgid "rebuild search index" msgstr "bygg om sökindex" -#: f.tools.cc:585 +#: f.tools.cc:591 #, c-format msgid "%d current index records found \n" msgstr "%d aktuella indexposter funna \n" -#: f.tools.cc:589 +#: f.tools.cc:595 msgid "find all image files and build index records" msgstr "hitta alla filer och bygg indexposter" -#: f.tools.cc:615 +#: f.tools.cc:621 msgid "too many image files" msgstr "för många bildfiler" -#: f.tools.cc:642 +#: f.tools.cc:648 #, c-format msgid "found %d image files \n" msgstr "hittat %d bildfiler \n" -#: f.tools.cc:647 +#: f.tools.cc:653 msgid "merging old and new index records" msgstr "slår ihop gamla och nya indexposter" -#: f.tools.cc:697 +#: f.tools.cc:703 #, c-format msgid "files found in current index recs: %d \n" msgstr "funna filer i aktuella indexposter: %d \n" -#: f.tools.cc:715 +#: f.tools.cc:721 msgid "updating index records" msgstr "uppdaterar indexposter" -#: f.tools.cc:889 +#: f.tools.cc:902 #, c-format msgid "%d image files updated \n" msgstr "%d bildfiler uppdaterade \n" -#: f.tools.cc:909 +#: f.tools.cc:922 msgid "KILLED" msgstr "DÖDAD" -#: f.tools.cc:1047 +#: f.tools.cc:1060 msgid "Settings" msgstr "Inställningar" -#: f.tools.cc:1050 +#: f.tools.cc:1063 msgid "Startup Display" msgstr "Uppstartskärm" -#: f.tools.cc:1072 +#: f.tools.cc:1085 msgid "Recent Files Gallery" msgstr "Senaste filers galleri " -#: f.tools.cc:1073 +#: f.tools.cc:1086 msgid "Newest Files Gallery" msgstr "" -#: f.tools.cc:1074 +#: f.tools.cc:1087 msgid "Previous Image Viewed" msgstr "Senaste betraktade bild" -#: f.tools.cc:1075 +#: f.tools.cc:1088 msgid "Blank Window" msgstr "Svart fönster" -#: f.tools.cc:1076 +#: f.tools.cc:1089 msgid "Directory Gallery" msgstr "Mappgalleri" -#: f.tools.cc:1077 +#: f.tools.cc:1090 msgid "Image File" msgstr "Bildfil" -#: f.tools.cc:1093 +#: f.tools.cc:1106 msgid "Menu Style" msgstr "Menystil" -#: f.tools.cc:1095 +#: f.tools.cc:1108 msgid "Classic" msgstr "Klassisk" -#: f.tools.cc:1096 +#: f.tools.cc:1109 msgid "Vertical" msgstr "Vertikal" -#: f.tools.cc:1098 +#: f.tools.cc:1111 msgid "Toolbar Style" msgstr "Stil på verktygsrad" -#: f.tools.cc:1101 +#: f.tools.cc:1114 msgid "Icons" msgstr "Ikoner" -#: f.tools.cc:1102 +#: f.tools.cc:1115 msgid "Both" msgstr "Bägge" -#: f.tools.cc:1104 +#: f.tools.cc:1117 msgid "Image Pan" msgstr "Bildpanorering" -#: f.tools.cc:1106 +#: f.tools.cc:1119 msgid "Drag" msgstr "" -#: f.tools.cc:1107 +#: f.tools.cc:1120 msgid "Scroll" msgstr "" -#: f.tools.cc:1108 +#: f.tools.cc:1121 msgid "Magnified" msgstr "" -#: f.tools.cc:1111 +#: f.tools.cc:1124 msgid "Warn Overwrite Original" msgstr "Varna vid överskrivning av original" -#: f.tools.cc:1114 +#: f.tools.cc:1127 msgid "Default JPEG quality" msgstr "" -#: f.tools.cc:1261 +#: f.tools.cc:1131 +msgid "Zooms for 200%" +msgstr "" + +#: f.tools.cc:1142 +msgid "RAW command" +msgstr "" + +#: f.tools.cc:1145 +msgid "RAW file types" +msgstr "" + +#: f.tools.cc:1274 msgid "startup directory is invalid" msgstr "uppstartmapp är ogiltig" -#: f.tools.cc:1269 +#: f.tools.cc:1282 msgid "startup file is invalid" msgstr "uppstartfil är ogiltig" -#: f.tools.cc:1368 +#: f.tools.cc:1381 msgid "Select startup directory" msgstr "Välj uppstartmapp" -#: f.tools.cc:1376 +#: f.tools.cc:1389 msgid "Select startup image file" msgstr "Välj uppstartbildfil" -#: f.tools.cc:1414 +#: f.tools.cc:1427 msgid "Click list position. Click thumbnail to add." msgstr "" -#: f.tools.cc:1439 f.tools.cc:1654 +#: f.tools.cc:1452 f.tools.cc:1667 msgid "Edit Bookmarks" msgstr "" -#: f.tools.cc:1585 +#: f.tools.cc:1598 msgid "unable to save bookmarks file" msgstr "" -#: f.tools.cc:1654 +#: f.tools.cc:1667 msgid "Go To Bookmark" msgstr "" -#: f.tools.cc:1800 +#: f.tools.cc:1811 msgid "Edit KB Shortcuts" msgstr "" -#: f.tools.cc:1805 +#: f.tools.cc:1816 msgid "shortcut key:" msgstr "" -#: f.tools.cc:1806 +#: f.tools.cc:1817 msgid "(enter keys)" msgstr "" -#: f.tools.cc:1932 +#: f.tools.cc:1943 #, c-format msgid "\"%s\" Reserved, cannot be used" msgstr "" -#: f.tools.cc:2084 +#: f.tools.cc:2095 msgid "unable to save KB-shortcuts file" msgstr "" -#: f.tools.cc:2154 +#: f.tools.cc:2165 msgid "" "Right-click collection thumbnails to \n" "cut/copy to cache, paste cache, remove." msgstr "" -#: f.tools.cc:2190 +#: f.tools.cc:2201 msgid "Start a new collection" msgstr "" -#: f.tools.cc:2192 +#: f.tools.cc:2203 msgid "Collection to view or edit" msgstr "" -#: f.tools.cc:2194 +#: f.tools.cc:2205 msgid "Select images, add to cache" msgstr "" -#: f.tools.cc:2196 +#: f.tools.cc:2207 msgid "Clear image cache" msgstr "" -#: f.tools.cc:2198 +#: f.tools.cc:2209 msgid "Delete a collection" msgstr "Tag bort en samling" -#: f.tools.cc:2221 +#: f.tools.cc:2232 msgid "New Collection" msgstr "Ny samling" -#: f.tools.cc:2222 +#: f.tools.cc:2233 msgid "Choose Collection" msgstr "Välj samling" -#: f.tools.cc:2223 +#: f.tools.cc:2234 msgid "Delete Collection" msgstr "Tag bort samling" -#: f.tools.cc:2293 +#: f.tools.cc:2304 #, c-format msgid "delete %s ?" msgstr "tag bort %s ?" -#: f.tools.cc:2606 +#: f.tools.cc:2617 msgid "Move collection" msgstr "Flytta samling" -#: f.tools.cc:2609 +#: f.tools.cc:2620 msgid "collection name" msgstr "samlingsnamn" -#: f.tools.cc:2612 +#: f.tools.cc:2623 msgid "old top directory" msgstr "gammal högsta mapp" -#: f.tools.cc:2615 +#: f.tools.cc:2626 msgid "new top directory" msgstr "ny högsta mapp" -#: f.tools.cc:2662 +#: f.tools.cc:2673 msgid "completed" msgstr "fullgjort" -#: f.tools.cc:2752 +#: f.tools.cc:2763 msgid "Press ESC to exit slide show" msgstr "Tryck ESC för att avsluta bildvisningen" -#: f.tools.cc:2753 +#: f.tools.cc:2764 msgid "latest versions only" msgstr "endast senaste version" -#: f.tools.cc:2754 +#: f.tools.cc:2765 msgid "continuous loop" msgstr "kontinuerlig slinga" -#: f.tools.cc:2755 +#: f.tools.cc:2766 msgid "start with current image" msgstr "" -#: f.tools.cc:2759 +#: f.tools.cc:2770 msgid "arrow keys" msgstr "pilknappar" -#: f.tools.cc:2760 +#: f.tools.cc:2771 msgid "instant" msgstr "direkt" -#: f.tools.cc:2761 +#: f.tools.cc:2772 msgid "fade-in" msgstr "intoning" -#: f.tools.cc:2762 +#: f.tools.cc:2773 msgid "roll-right" msgstr "högerrullning" -#: f.tools.cc:2763 +#: f.tools.cc:2774 msgid "roll-down" msgstr "nedrullning" -#: f.tools.cc:2764 +#: f.tools.cc:2775 msgid "shift-left" msgstr "shift-vänster§" -#: f.tools.cc:2765 +#: f.tools.cc:2776 msgid "venetian" msgstr "venetianskt" -#: f.tools.cc:2766 +#: f.tools.cc:2777 msgid "grate" msgstr "rutnät" -#: f.tools.cc:2767 +#: f.tools.cc:2778 msgid "rectangle" msgstr "rektangel" -#: f.tools.cc:2768 +#: f.tools.cc:2779 msgid "radar" msgstr "radar" -#: f.tools.cc:2769 +#: f.tools.cc:2780 msgid "jaws" msgstr "" -#: f.tools.cc:2770 +#: f.tools.cc:2781 msgid "ellipse" msgstr "ellips" -#: f.tools.cc:2771 +#: f.tools.cc:2782 msgid "raindrops" msgstr "regndroppar" -#: f.tools.cc:2781 f.tools.cc:3866 f.tools.cc:4444 -msgid "0 files selected" -msgstr "Ingen fil vald" - -#: f.tools.cc:2783 +#: f.tools.cc:2794 msgid "collection:" msgstr "samling:" -#: f.tools.cc:2793 +#: f.tools.cc:2804 msgid "music file" msgstr "musikfil" -#: f.tools.cc:2801 +#: f.tools.cc:2812 msgid "transitions" msgstr "övergångar" -#: f.tools.cc:2803 +#: f.tools.cc:2814 msgid "seconds" msgstr "sekunder" -#: f.tools.cc:2854 f.tools.cc:3038 f.tools.cc:3060 +#: f.tools.cc:2865 f.tools.cc:3049 f.tools.cc:3071 msgid "no image files selected" msgstr "ingen bildfil vald" -#: f.tools.cc:3019 +#: f.tools.cc:3030 msgid "open collection" msgstr "öppna samling" -#: f.tools.cc:3064 +#: f.tools.cc:3075 msgid "save as collection" msgstr "spara en samling" -#: f.tools.cc:3077 +#: f.tools.cc:3088 msgid "Select music file or playlist" msgstr "Välj musikfil eller spellista" -#: f.tools.cc:3868 +#: f.tools.cc:3879 msgid "new base name" msgstr "nytt basnamn" -#: f.tools.cc:3871 +#: f.tools.cc:3882 msgid "starting sequence" msgstr "begynnelsesekvens" -#: f.tools.cc:3873 +#: f.tools.cc:3884 msgid "increment" msgstr "steg" -#: f.tools.cc:3927 +#: f.tools.cc:3938 msgid "new file already exists:" msgstr "ny fil finns redan:" -#: f.tools.cc:3937 +#: f.tools.cc:3948 msgid "Rename failed:" msgstr "Namnändring misslyckades:" -#: f.tools.cc:3982 +#: f.tools.cc:3993 msgid "base name / sequence / increment not reasonable" msgstr "basnamn / sekvens / steg ej lämpliga" -#: f.tools.cc:4085 +#: f.tools.cc:4096 msgid "max. width" msgstr "max. bredd" -#: f.tools.cc:4090 +#: f.tools.cc:4101 msgid "no change" msgstr "ingen ändring" -#: f.tools.cc:4093 +#: f.tools.cc:4104 msgid "new file type" msgstr "ny filtyp" -#: f.tools.cc:4094 +#: f.tools.cc:4105 msgid "same" msgstr "samma" -#: f.tools.cc:4102 +#: f.tools.cc:4113 msgid "replace originals" msgstr "ersätta originalen" -#: f.tools.cc:4103 +#: f.tools.cc:4114 msgid "move to location" msgstr "flytta till plats" -#: f.tools.cc:4104 +#: f.tools.cc:4115 msgid "remove EXIF" msgstr "tag bort EXIF" -#: f.tools.cc:4105 +#: f.tools.cc:4116 msgid "delete originals" msgstr "tag bort originalen" -#: f.tools.cc:4180 +#: f.tools.cc:4191 msgid "file already exists" msgstr "filen finns redan" -#: f.tools.cc:4188 +#: f.tools.cc:4199 msgid "file type not supported" msgstr "filtypen stöds ej" -#: f.tools.cc:4227 +#: f.tools.cc:4238 msgid "cannot create new file" msgstr "kan ej skapa ny fil" -#: f.tools.cc:4351 +#: f.tools.cc:4362 msgid "replace original files?" msgstr "ersätta originalfiler?" -#: f.tools.cc:4352 +#: f.tools.cc:4363 #, c-format msgid "replace original files? (max. %d x %d)" msgstr "ersätta ursprungliga filer? max %d x %d)" -#: f.tools.cc:4360 +#: f.tools.cc:4371 #, c-format msgid "" "copy files? \n" @@ -3419,7 +3642,7 @@ "kopiera filer? \n" " till plats %s" -#: f.tools.cc:4363 +#: f.tools.cc:4374 #, c-format msgid "" "copy files? (max. %d x %d) \n" @@ -3428,7 +3651,7 @@ "kopiera filer? (max %d x %d) \n" "till plats %s" -#: f.tools.cc:4367 +#: f.tools.cc:4378 msgid "" "\n" " and delete originals" @@ -3436,80 +3659,88 @@ "\n" " och tag bort originalen" -#: f.tools.cc:4380 +#: f.tools.cc:4391 msgid "location is not a valid directory" msgstr "platsen är inte en giltig mapp" -#: f.tools.cc:4387 +#: f.tools.cc:4398 #, c-format msgid "max. size %d x %d is not reasonable" msgstr "max storlek %d x %d är inte förnuftig" -#: f.tools.cc:4447 +#: f.tools.cc:4458 msgid "output file type" msgstr "filtyp för utdata" -#: f.tools.cc:4459 +#: f.tools.cc:4470 msgid "white balance" msgstr "vitbalans" -#: f.tools.cc:4460 +#: f.tools.cc:4471 msgid "interpolation" msgstr "interpolation" -#: f.tools.cc:4461 +#: f.tools.cc:4472 msgid "color space" msgstr "färgrymd" -#: f.tools.cc:4462 +#: f.tools.cc:4473 msgid "gamma curve" msgstr "gammakurva" -#: f.tools.cc:4465 +#: f.tools.cc:4476 msgid "camera" msgstr "kamera" -#: f.tools.cc:4466 +#: f.tools.cc:4477 msgid "fixed" msgstr "fixat" -#: f.tools.cc:4467 +#: f.tools.cc:4478 msgid "calculated" msgstr "beräknat" -#: f.tools.cc:4999 +#: f.tools.cc:4495 +msgid "default" +msgstr "" + +#: f.tools.cc:4501 +msgid "defaults" +msgstr "" + +#: f.tools.cc:5010 msgid "x-spacing" msgstr "x-avstånd" -#: f.tools.cc:5000 +#: f.tools.cc:5011 msgid "x-count" msgstr "x-antal" -#: f.tools.cc:5001 +#: f.tools.cc:5012 msgid "x-enable" msgstr "x-enable" -#: f.tools.cc:5007 +#: f.tools.cc:5018 msgid "y-spacing" msgstr "y-avstånd" -#: f.tools.cc:5008 +#: f.tools.cc:5019 msgid "y-count" msgstr "y-antal" -#: f.tools.cc:5009 +#: f.tools.cc:5020 msgid "y-enable" msgstr "y-enable" -#: f.tools.cc:5016 +#: f.tools.cc:5027 msgid "x-offset" msgstr "x-förskjutning" -#: f.tools.cc:5020 +#: f.tools.cc:5031 msgid "y-offset" msgstr "y-förskjutning" -#: f.tools.cc:5444 +#: f.tools.cc:5455 msgid "" "Brightness should show a gradual ramp \n" "extending all the way to the edges." @@ -3517,19 +3748,31 @@ "Ljusheten borde visa a gradvis ramp \n" "utvidgad hela vägen till kanterna." -#: f.tools.cc:5549 +#: f.tools.cc:5560 msgid "Available Translations" msgstr "Tillgängliga översättningar" -#: f.tools.cc:5553 +#: f.tools.cc:5564 msgid "Set Language" msgstr "Ställ in språk" -#: f.tools.cc:5653 +#: f.tools.cc:5664 msgid "Make Launcher" msgstr "" -#: fotoxx-13.08.cc:330 +#: fotoxx-13.09.cc:201 +msgid "Tab F: image file view/edit" +msgstr "" + +#: fotoxx-13.09.cc:208 +msgid "Tab G: image gallery" +msgstr "" + +#: fotoxx-13.09.cc:215 +msgid "Tab W: world map" +msgstr "" + +#: fotoxx-13.09.cc:339 msgid "" "First time Fotoxx startup. \n" "Latest version: http://www.kornelix.com/fotoxx \n" @@ -3539,43 +3782,69 @@ "Senaste version: http://www.kornelix.com/fotoxx \n" "Filsynkroniseringsprocess kommer att påbörjas (kan ta lite tid) \n" -#: fotoxx-13.08.cc:363 +#: fotoxx-13.09.cc:372 msgid "Please install missing programs:" msgstr "Installera saknade program:" -#: fotoxx-13.08.cc:816 -msgid "Location from World Map" -msgstr "Plats för världskarta" +#: fotoxx-13.09.cc:686 +#, c-format +msgid " BUSY %d%c " +msgstr "" + +#: fotoxx-13.09.cc:688 +msgid " BUSY " +msgstr "" + +#: fotoxx-13.09.cc:745 +msgid " (reduced)" +msgstr "" + +#: fotoxx-13.09.cc:753 +#, c-format +msgid " edits: %d" +msgstr "" + +#: fotoxx-13.09.cc:758 +msgid " menu locked" +msgstr "" + +#: fotoxx-13.09.cc:759 +msgid " area active" +msgstr "" + +#: fotoxx-13.09.cc:760 +msgid " dialog open" +msgstr "" -#: fotoxx-13.08.cc:2500 +#: fotoxx-13.09.cc:2538 msgid "Exceed 50 anchor points" msgstr "Överskridit 50 ankarpunkter" -#: fotoxx-13.08.cc:2681 +#: fotoxx-13.09.cc:2719 msgid "load curve from a file" msgstr "ladda kurva från fil" -#: fotoxx-13.08.cc:2735 +#: fotoxx-13.09.cc:2773 msgid "curve file is invalid" msgstr "kurvfil är ogiltig" -#: fotoxx-13.08.cc:2740 +#: fotoxx-13.09.cc:2778 msgid "curve file has different no. of curves" msgstr "kurvfil har annorlunda antal kurvor" -#: fotoxx-13.08.cc:2755 +#: fotoxx-13.09.cc:2793 msgid "save curve to a file" msgstr "spara kurva till en fil" -#: fotoxx-13.08.cc:2853 fotoxx-13.08.cc:3380 fotoxx-13.08.cc:3395 +#: fotoxx-13.09.cc:2891 fotoxx-13.09.cc:3417 fotoxx-13.09.cc:3432 msgid "prior function still active" msgstr "föregående funktion fortfarande aktiv" -#: fotoxx-13.08.cc:2860 +#: fotoxx-13.09.cc:2898 msgid "Too many edits, please save image" msgstr "För många redigeringar, spara bilden" -#: fotoxx-13.08.cc:2875 +#: fotoxx-13.09.cc:2913 msgid "" "Select area not active.\n" "Continue?" @@ -3583,23 +3852,23 @@ "Valt område ej aktivt.\n" "Fortsätta?" -#: fotoxx-13.08.cc:3350 +#: fotoxx-13.09.cc:3387 msgid "Discard edits?" msgstr "Strunta i redigeringar?" -#: fotoxx-13.08.cc:3351 +#: fotoxx-13.09.cc:3388 msgid "This action will discard changes\n" msgstr "Denna åtgärd kommer att förkasta ändringar\n" -#: fotoxx-13.08.cc:3352 fotoxx.h:973 +#: fotoxx-13.09.cc:3389 fotoxx.h:994 msgid "Keep" msgstr "Behåll" -#: fotoxx-13.08.cc:3353 +#: fotoxx-13.09.cc:3390 msgid "Discard" msgstr "Kasta" -#: fotoxx-13.08.cc:4054 +#: fotoxx-13.09.cc:4088 #, c-format msgid "" "warning: real memory %d MB < required %d MB \n" @@ -3608,212 +3877,224 @@ "varning: fysiskt minne %d MB < krävt %d MB \n" "svarstid kan komma att bli lång \n" -#: fotoxx.h:936 +#: fotoxx.h:955 msgid "Add All" msgstr "Lägg till allt" -#: fotoxx.h:938 +#: fotoxx.h:957 msgid "Amount" msgstr "Mängd" -#: fotoxx.h:939 +#: fotoxx.h:958 +msgid "Angle" +msgstr "Vinkel" + +#: fotoxx.h:959 msgid "Apply" msgstr "Tillämpa" -#: fotoxx.h:940 +#: fotoxx.h:960 msgid "Autocomplete" msgstr "Autokomplettera" -#: fotoxx.h:941 +#: fotoxx.h:961 msgid "Black" msgstr "Svart" -#: fotoxx.h:942 +#: fotoxx.h:962 msgid "Blend Width" msgstr "Bländaröppning" -#: fotoxx.h:944 +#: fotoxx.h:964 msgid "Brightness" msgstr "Ljushet" -#: fotoxx.h:945 +#: fotoxx.h:965 msgid "Browse" msgstr "Bläddra" -#: fotoxx.h:946 +#: fotoxx.h:966 msgid "Cancel" msgstr "Avbryt" -#: fotoxx.h:947 +#: fotoxx.h:967 msgid "Choose" msgstr "Välj" -#: fotoxx.h:948 +#: fotoxx.h:968 msgid "Clear" msgstr "Rensa" -#: fotoxx.h:950 +#: fotoxx.h:970 msgid "Contrast" msgstr "Kontrast" -#: fotoxx.h:952 +#: fotoxx.h:972 msgid "Curve File:" msgstr "Kurvfil:" -#: fotoxx.h:953 +#: fotoxx.h:973 msgid "Cut" msgstr "Beskär" -#: fotoxx.h:954 +#: fotoxx.h:974 msgid "Darker Areas" msgstr "Mörkare områden" -#: fotoxx.h:957 +#: fotoxx.h:977 msgid "Done" msgstr "Gjort" -#: fotoxx.h:958 +#: fotoxx.h:978 msgid "Edit" msgstr "Redigera" -#: fotoxx.h:960 +#: fotoxx.h:980 msgid "Erase" msgstr "Radera" -#: fotoxx.h:961 +#: fotoxx.h:981 msgid "Fetch" msgstr "Hämta" -#: fotoxx.h:962 +#: fotoxx.h:982 msgid "Find" msgstr "Hitta" -#: fotoxx.h:963 +#: fotoxx.h:983 msgid "Finish" msgstr "Avsluta" -#: fotoxx.h:964 +#: fotoxx.h:984 msgid "Font" msgstr "Typsnitt" -#: fotoxx.h:966 +#: fotoxx.h:985 +msgid "Geotags" +msgstr "" + +#: fotoxx.h:987 msgid "Height" msgstr "Höjd" -#: fotoxx.h:968 +#: fotoxx.h:989 msgid "histogram" msgstr "histogram" -#: fotoxx.h:970 +#: fotoxx.h:991 msgid "Images" msgstr "" -#: fotoxx.h:971 +#: fotoxx.h:992 msgid "Insert" msgstr "Infoga" -#: fotoxx.h:974 +#: fotoxx.h:995 msgid "Lighter Areas" msgstr "Ljusare områden" -#: fotoxx.h:975 +#: fotoxx.h:996 msgid "limit" msgstr "gräns" -#: fotoxx.h:977 +#: fotoxx.h:998 msgid "Negative" msgstr "" -#: fotoxx.h:978 +#: fotoxx.h:999 msgid "New" msgstr "Ny" -#: fotoxx.h:980 +#: fotoxx.h:1001 msgid "search index file missing" msgstr "indexsökfil saknas" -#: fotoxx.h:981 +#: fotoxx.h:1002 msgid "OK" msgstr "OK" -#: fotoxx.h:983 +#: fotoxx.h:1004 msgid "Open RAW File" msgstr "Öppna RAW-fil" -#: fotoxx.h:985 +#: fotoxx.h:1006 msgid "Pause" msgstr "Paus" -#: fotoxx.h:986 +#: fotoxx.h:1007 msgid "Percent" msgstr "Procent" -#: fotoxx.h:987 +#: fotoxx.h:1008 msgid "Presets" msgstr "Förinställningar" -#: fotoxx.h:989 +#: fotoxx.h:1010 msgid "Proceed" msgstr "Fortsätt" -#: fotoxx.h:991 +#: fotoxx.h:1012 msgid "range" msgstr "område" -#: fotoxx.h:994 +#: fotoxx.h:1015 msgid "Reduce" msgstr "Minska" -#: fotoxx.h:997 +#: fotoxx.h:1018 msgid "Reset" msgstr "Återställ" -#: fotoxx.h:1000 +#: fotoxx.h:1021 msgid "Unknown file type, save as tiff/jpeg/png to edit" msgstr "Okänd filtyp, spara som tiff/jpeg/png för att redigera" -#: fotoxx.h:1001 +#: fotoxx.h:1022 msgid "Search" msgstr "Sök" -#: fotoxx.h:1005 +#: fotoxx.h:1026 +msgid "Size" +msgstr "Storlek" + +#: fotoxx.h:1027 msgid "Start" msgstr "Start" -#: fotoxx.h:1006 +#: fotoxx.h:1028 msgid "Threshold" msgstr "Tröskel" -#: fotoxx.h:1007 +#: fotoxx.h:1029 #, c-format msgid "exceed %d files" msgstr "överskred %d filer" -#: fotoxx.h:1009 +#: fotoxx.h:1031 msgid "Undo All" msgstr "Ångra allt" -#: fotoxx.h:1010 +#: fotoxx.h:1032 msgid "Undo Last" msgstr "Ångra sista" -#: fotoxx.h:1012 +#: fotoxx.h:1034 msgid "Unfinish" msgstr "Oavslutad" -#: fotoxx.h:1014 +#: fotoxx.h:1036 msgid "View" msgstr "Vy" -#: fotoxx.h:1015 +#: fotoxx.h:1037 msgid "Web" msgstr "Webb" -#: fotoxx.h:1016 +#: fotoxx.h:1038 msgid "White" msgstr "Vit" -#: fotoxx.h:1018 +#: fotoxx.h:1040 msgid "Map" msgstr "Karta" @@ -3821,7 +4102,7 @@ msgid "user guide not found" msgstr "användarhandledning ej funnen" -#: zfuncs.cc:4504 zfuncs.cc:10210 +#: zfuncs.cc:4504 zfuncs.cc:10284 #, c-format msgid "cannot open file %s" msgstr "kan ej öppna fil %s" @@ -3830,77 +4111,81 @@ msgid "save screen to file" msgstr "spara skärmbild i fil" -#: zfuncs.cc:8819 +#: zfuncs.cc:8891 msgid "No" msgstr "Nej" -#: zfuncs.cc:8819 +#: zfuncs.cc:8891 msgid "Yes" msgstr "Ja" -#: zfuncs.cc:8898 zfuncs.cc:8938 zfuncs.cc:9277 zfuncs.cc:9595 zfuncs.cc:10323 -#: zfuncs.cc:10329 zfuncs.cc:10335 zfuncs.cc:10341 +#: zfuncs.cc:8970 zfuncs.cc:9012 zfuncs.cc:9351 zfuncs.cc:9669 zfuncs.cc:10397 +#: zfuncs.cc:10403 zfuncs.cc:10409 zfuncs.cc:10415 msgid "cancel" msgstr "avbryt" -#: zfuncs.cc:9239 +#: zfuncs.cc:9313 msgid "open" msgstr "öppna" -#: zfuncs.cc:9244 +#: zfuncs.cc:9318 msgid "choose" msgstr "välj" -#: zfuncs.cc:9249 +#: zfuncs.cc:9323 msgid "save" msgstr "spara" -#: zfuncs.cc:9255 +#: zfuncs.cc:9329 msgid "open folder" msgstr "öppna mapp" -#: zfuncs.cc:9260 +#: zfuncs.cc:9334 msgid "create folder" msgstr "skapa mapp" -#: zfuncs.cc:9266 +#: zfuncs.cc:9340 msgid "hidden" msgstr "gömd" -#: zfuncs.cc:9327 +#: zfuncs.cc:9344 +msgid "quality" +msgstr "kvalitet" + +#: zfuncs.cc:9401 msgid "JPG quality 0-100" msgstr "JPG-kvalitet 0-100" -#: zfuncs.cc:9586 +#: zfuncs.cc:9660 #, c-format msgid "printed image width: %.1f height: %.1f cm" msgstr "utskriven bilds bredd: %.1f höjd: %.1f cm" -#: zfuncs.cc:9595 +#: zfuncs.cc:9669 msgid "done" msgstr "klart" -#: zfuncs.cc:9595 zfuncs.cc:9607 +#: zfuncs.cc:9669 zfuncs.cc:9681 msgid "margins" msgstr "marginaler" -#: zfuncs.cc:9603 +#: zfuncs.cc:9677 msgid "top" msgstr "topp" -#: zfuncs.cc:9604 +#: zfuncs.cc:9678 msgid "bottom" msgstr "botten" -#: zfuncs.cc:9613 +#: zfuncs.cc:9687 msgid "image scale" msgstr "bildskala" -#: zfuncs.cc:9615 +#: zfuncs.cc:9689 msgid "percent" msgstr "procent" -#: zfuncs.cc:10097 +#: zfuncs.cc:10171 msgid "" "Initial parameters file created. \n" "Inspect and revise if necessary." @@ -3908,19 +4193,19 @@ "Startparameterfil skapad. \n" "Undersök och ändra vid behov." -#: zfuncs.cc:10113 +#: zfuncs.cc:10187 msgid "load parameters from a file" msgstr "ladda parametrar från fil" -#: zfuncs.cc:10182 +#: zfuncs.cc:10256 msgid "save parameters to a file" msgstr "spara parametrar i en fil" -#: zfuncs.cc:10321 zfuncs.cc:10327 zfuncs.cc:10333 zfuncs.cc:10339 +#: zfuncs.cc:10395 zfuncs.cc:10401 zfuncs.cc:10407 zfuncs.cc:10413 msgid "edit parameters" msgstr "redigera parametrar" -#: zfuncs.cc:10322 zfuncs.cc:10328 +#: zfuncs.cc:10396 zfuncs.cc:10402 msgid "" "list\n" "all" @@ -3928,7 +4213,7 @@ "lista\n" "allt" -#: zfuncs.cc:10322 zfuncs.cc:10328 zfuncs.cc:10334 zfuncs.cc:10340 +#: zfuncs.cc:10396 zfuncs.cc:10402 zfuncs.cc:10408 zfuncs.cc:10414 msgid "" "load\n" "file" @@ -3936,7 +4221,7 @@ "ladda\n" "fil" -#: zfuncs.cc:10322 zfuncs.cc:10328 zfuncs.cc:10334 zfuncs.cc:10340 +#: zfuncs.cc:10396 zfuncs.cc:10402 zfuncs.cc:10408 zfuncs.cc:10414 msgid "" "save\n" "file" @@ -3944,7 +4229,7 @@ "spara\n" "fil" -#: zfuncs.cc:10323 zfuncs.cc:10335 +#: zfuncs.cc:10397 zfuncs.cc:10409 msgid "" "add\n" "new" @@ -3952,22 +4237,70 @@ "lägg till\n" "nytt" -#: zfuncs.cc:10323 zfuncs.cc:10329 zfuncs.cc:10335 zfuncs.cc:10341 +#: zfuncs.cc:10397 zfuncs.cc:10403 zfuncs.cc:10409 zfuncs.cc:10415 msgid "apply" msgstr "tillämpa" -#: zfuncs.cc:10376 +#: zfuncs.cc:10450 msgid "apply?" msgstr "tillämpa?" -#: zfuncs.cc:10433 +#: zfuncs.cc:10507 msgid "(new parm name)" msgstr "(nytt parameternamn)" -#: zfuncs.cc:10433 +#: zfuncs.cc:10507 msgid "add parameter" msgstr "lägg till parameter" +#~ msgid "Overwrite original file?" +#~ msgstr "Skriva över originalfilen?" + +#~ msgid "Do not warn again" +#~ msgstr "Varna inte igen" + +#~ msgid "Warning" +#~ msgstr "Varning" + +#~ msgid "Save File" +#~ msgstr "Spara fil" + +#~ msgid "Save to Same File" +#~ msgstr "Spara till samma fil" + +#~ msgid "Save to the same file (replace)" +#~ msgstr "Spara till samma fil (utbyte)" + +#~ msgid "Save to New Version" +#~ msgstr "Spara till ny version" + +#~ msgid "Save to a new (next) version" +#~ msgstr "Spara till en ny (nästa) version" + +#~ msgid "Save to New File" +#~ msgstr "Spara till ny fil" + +#~ msgid "Save to a new file name" +#~ msgstr "Spara till ett nytt filnamn" + +#~ msgid "Save to the same file" +#~ msgstr "Spara till samma fil" + +#~ msgid "Save to a new version" +#~ msgstr "Spara till en ny version" + +#~ msgid "Save+V" +#~ msgstr "Spara+V" + +#~ msgid "Save to a new file" +#~ msgstr "Spara till en ny fil" + +#~ msgid "Save+F" +#~ msgstr "Spara+F" + +#~ msgid "Adjust Brightness and Color" +#~ msgstr "Justera ljus och färg" + #~ msgid "contrast" #~ msgstr "kontrast" @@ -4281,3 +4614,57 @@ #~ msgid "auto-trim" #~ msgstr "auto-trimning" + +#~ msgid "Save Stuck Pixels" +#~ msgstr "Spara fastnade pixlar" + +#~ msgid "there are zero stuck pixels" +#~ msgstr "det finns inga fastnade pixlar" + +#~ msgid "current tags" +#~ msgstr "aktuella taggar" + +#~ msgid "image stars" +#~ msgstr "bildstjärnor" + +#~ msgid "use last" +#~ msgstr "använd senaste" + +#~ msgid "image date (yyyymmdd)" +#~ msgstr "bilddatum (ååååmmdd)" + +#~ msgid "Edit Caption and Comments" +#~ msgstr "Redigera beskrivning och kommentar" + +#~ msgid "change sequence" +#~ msgstr "ändra ordningsföljd" + +#~ msgid "jump to last page" +#~ msgstr "hoppa till sista sidan" + +#~ msgid "jump to first page" +#~ msgstr "hoppa till första sidan" + +#~ msgid "Edit image geotags" +#~ msgstr "Redigera bild-geotags" + +#~ msgid "Edit image date/rating/tags" +#~ msgstr "Redigera bilds datum/rangordning/flaggor" + +#~ msgid "Edit image caption or comment" +#~ msgstr "Redigera bildbeskrivning eller kommentar" + +#~ msgid "Edit Caption/Comments" +#~ msgstr "Redigera beskrivning/kommentarer" + +#~ msgid "User Guide etc." +#~ msgstr "Användarhandbok etc." + +#~ msgid "no plugin command" +#~ msgstr "inget pluginkommando" + +#~ msgid "cmsCreateTransform() failed" +#~ msgstr "cmsCreateTransform() misslyckades" + +#~ msgid "angle" +#~ msgstr "vinkel" diff -Nru fotoxx-13.08/zfuncs.cc fotoxx-13.09.1/zfuncs.cc --- fotoxx-13.08/zfuncs.cc 2013-08-01 20:57:53.000000000 +0000 +++ fotoxx-13.09.1/zfuncs.cc 2013-08-31 06:26:38.000000000 +0000 @@ -3,7 +3,7 @@ Copyright 2006 2007 2008 2009 2010 2011 2012 2013 Michael Cornelison source code URL: http://kornelix.com - contact: kornelix2@gmail.com + contact: kornelix@gmx.de This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,11 +20,11 @@ These programs originate from the author's web site: http://kornelix.com Other web sites may offer them for download. Modifications could have been made. - If you have questions, suggestions or a bug to report: kornelix2@gmail.com + If you have questions, suggestions or a bug to report: kornelix@gmx.de ***************************************************************************/ -// zfuncs.cpp version v.5.6 +// zfuncs.cpp version v.5.7 #include "zfuncs.h" @@ -140,7 +140,7 @@ menus / toolbars simplified GTK menus, toolbars and status bars popup menus create popup menus gmenuz customizable graphic popup menu - vbox_menu vertical menu/toolbar in vertical packing box + Vmenu vertical menu/toolbar in vertical packing box zdialog, etc. simplified GTK dialogs ZTX(), etc. translate GUI and message text strings for non-English locales write_popup_text write rows of text to a popup window @@ -300,7 +300,7 @@ fid1 = fopen("zappcrash","w"); // open zappcrash file fprintf(fid1,"\n*** zappcrash: %s %s \n",zappname,message); - fprintf(fid1,"*** please send to kornelix2@gmail.com *** \n\n"); + fprintf(fid1,"*** please send to kornelix@gmx.de *** \n\n"); nstack = backtrace(stacklist,nstack); // get traceback data in memory stackents = backtrace_symbols(stacklist,nstack); // traceback records in memory @@ -334,7 +334,7 @@ exit(1); showdump: - printf("*** please send to kornelix2@gmail.com *** \n\n"); + printf("*** please send to kornelix@gmx.de *** \n\n"); fd = open("zappcrash",O_WRONLY); // open zappcrash file nstack = backtrace(stacklist,nstack); // get traceback data in memory backtrace_symbols_fd(stacklist,nstack,fd); // write to zappcrash file @@ -4608,7 +4608,7 @@ gdkwin = gtk_text_view_get_window(VIEW(widget),TEXT); if (gdkwin) gdk_window_set_cursor(gdkwin,arrowcursor); // why must this be repeated? v.5.5 - if (event->type != GDK_BUTTON_RELEASE) return 1; // v.5.6 + if (event->type != GDK_BUTTON_RELEASE) return 1; // v.5.7 mpx = int(event->x); // mouse click position mpy = int(event->y); @@ -5240,6 +5240,7 @@ yadd = 0; if (pixbuf) yadd = size + 2; // extra space under icon + if (text) { text2 = zmalloc(strlen(text)+2); // replace "\n" with newline repl_1str(text,text2,"\\n","\n"); @@ -5633,14 +5634,15 @@ /************************************************************************** + Vertical Menu / Toolbar Build a custom vertical menu and/or toolbar in a vertical packing box - vbm = vbox_menu_new(GtkWidget *vbox) create base menu + vbm = Vmenu_new(GtkWidget *vbox) create base menu - vbox_menu_add(vbm, name, icon, desc, func, arg) add menu item or toolbar button - vbox_menu *vbm + Vmenu_add(vbm, name, icon, desc, func, arg) add menu item or toolbar button + Vmenu *vbm cchar *name, *icon, *desc, *arg void func(GtkWidget *, cchar *name) @@ -5649,66 +5651,67 @@ and function argument. 'name' and 'icon' can be null but not both. 'icon' is a filespec for a .png file containing the icon. 'desc' is optional and is used as a tool tip if the mouse is hovered - over the displayed 'name/icon'. 'arg' may be null. + over the displayed 'name/icon'. When 'name/icon' is clicked, 'func' is called with 'arg'. + If 'arg' is null, 'name' is used instead. To create a menu entry that is a popup menu with multiple entries, do as follows: popup = create_popmenu(); add_popup_menu_item(popup ...); // see create_popmenu() add_popup_menu_item(popup ...); ... - vbox_menu_add(vbm,name,icon,desc,create_popmenu,(cchar *) popup); + Vmenu_add(vbm, name, icon, desc, create_popmenu, (cchar *) popup); i.e. use create_popmenu() as the response function and use the previously created menu 'popup' as the argument (cast to cchar *). ***/ -// build a text and icon based menu in a vertical packing box // v.5.5 -namespace vbox_menunames +namespace Vmenunames { - #define menufont "sans 10" // menu font - #define fontheight 18 // text height in layout + #define menufont1 "sans 10" // menu font + #define menufont2 "sans bold 10" // menu font (selected) + #define fontheight 18 // menu text height in layout #define margin 5 // margins for menu text #define iconsize 24 // menu icon size - - PangoFontDescription *pfont = 0; - PangoLayout *playout = 0; + #define BGCOLOR 59000,59000,59000 // = cairo 0.9,0.9,0.9 - void mwpaint(GtkWidget *, cairo_t *, vbox_menu *); // window repaint - draw event - void draw_text(cairo_t *, cchar *, int px, int py, int &ww, int &hh); // draw text in window, get space used - void mouse_event(GtkWidget *, GdkEventButton *, vbox_menu *); // mouse event function -} + GdkRGBA GDKgray; + PangoFontDescription *pfont1, *pfont2; + PangoAttrList *pattrlist; + PangoAttribute *pbackground; + + void mwpaint(GtkWidget *, cairo_t *, Vmenu *); // window repaint - draw event + void mouse_event(GtkWidget *, GdkEventButton *, Vmenu *); // mouse event function + void paint_menu(cairo_t *cr, Vmenu *vbm, int me, int hilite); // paint menu entry, opt. highlight +} -// user callable function to add menu entries to a vertical packing box -// vbox parent widget, vertical packing box -// name menu text name -// icon menu icon ("iconfile.png" in /usr/share/appname/icons/) -// desc menu short description for mouse hover popup (or null) -// func user callback function (GtkWidget *, cchar *arg) -// arg argument passed to func(arg) -// -// supply one or both of name and icon, if omitted use null -vbox_menu *vbox_menu_new(GtkWidget *vbox) +Vmenu *Vmenu_new(GtkWidget *vbox) // revised v.5.7 { - using namespace vbox_menunames; + using namespace Vmenunames; + + int cc; - int cc = sizeof(vbox_menu); - vbox_menu *vbm = (vbox_menu *) zmalloc(cc,"vbox_menu"); + cc = sizeof(Vmenu); + Vmenu *vbm = (Vmenu *) zmalloc(cc,"Vmenu"); memset(vbm,0,cc); vbm->vbox = vbox; vbm->layout = gtk_layout_new(0,0); vbm->mcount = 0; gtk_box_pack_start(GTK_BOX(vbox),vbm->layout,1,1,0); - if (! pfont) { - pfont = pango_font_description_from_string(menufont); - playout = gtk_widget_create_pango_layout(vbm->layout,0); - pango_layout_set_font_description(playout,pfont); - } + GDKgray.red = GDKgray.green = GDKgray.blue = 0.6; + gtk_widget_override_background_color(vbm->layout, (GtkStateFlags) 0, &GDKgray); + + pattrlist = pango_attr_list_new(); + pbackground = pango_attr_background_new(BGCOLOR); + pango_attr_list_change(pattrlist,pbackground); + + pfont1 = pango_font_description_from_string(menufont1); + pfont2 = pango_font_description_from_string(menufont2); gtk_widget_add_events(vbm->layout,GDK_BUTTON_PRESS_MASK); gtk_widget_add_events(vbm->layout,GDK_BUTTON_RELEASE_MASK); @@ -5723,213 +5726,251 @@ } -void vbox_menu_add(vbox_menu *vbm, cchar *name, cchar *icon, cchar *desc, mtFunc func, cchar *arg) +void Vmenu_add(Vmenu *vbm, cchar *name, cchar *icon, cchar *desc, mtFunc func, cchar *arg) { - using namespace vbox_menunames; + using namespace Vmenunames; - int me; - uint ii, cc, ww, hh, rs, nc, px, py; - char iconpath[200], *mdesc; - GdkPixbuf *pixbuf1, *pixbuf2; + static int xmax = 0, ymax = 0; + int me, cc1, cc2, xpos, ww, hh; + char iconpath[200], *mdesc, *name__; + cchar *blanks = " "; // 20 blanks + GdkPixbuf *pixbuf; GError *gerror = 0; - uint8 *pixels; + + PangoLayout *playout; + PangoFontDescription *pfont; + + if (! name && ! icon) return; me = vbm->mcount++; // track no. menu entries - if (name) vbm->menu[me].name = strdupz(name,0,"vbox_menu"); // create new menu entry from caller data - if (icon) vbm->menu[me].icon = strdupz(icon,0,"vbox_menu"); + if (name) vbm->menu[me].name = strdupz(name,0,"Vmenu"); // create new menu entry from caller data + if (icon) vbm->menu[me].icon = strdupz(icon,0,"Vmenu"); if (desc) { // pad description with blanks for looks - cc = strlen(desc); // v.5.6 - mdesc = zmalloc(cc+3,"vbox_menu"); + cc1 = strlen(desc); // v.5.6 + mdesc = zmalloc(cc1+3,"Vmenu"); mdesc[0] = ' '; strcpy(mdesc+1,desc); - strcpy(mdesc+cc+1," "); + strcpy(mdesc+cc1+1," "); vbm->menu[me].desc = mdesc; } - vbm->menu[me].pixbuf1 = 0; - vbm->menu[me].pixbuf2 = 0; vbm->menu[me].func = func; vbm->menu[me].arg = name; // argument is menu name or arg if avail. if (arg) vbm->menu[me].arg = arg; + vbm->menu[me].pixbuf = 0; + if (icon) { // if icon is named, get pixbuf *iconpath = 0; strncatv(iconpath,199,zfuncs::zicondir,"/",icon,null); - pixbuf1 = gdk_pixbuf_new_from_file_at_scale(iconpath,iconsize,iconsize,1,&gerror); - if (pixbuf1) { - pixbuf2 = gdk_pixbuf_copy(pixbuf1); - ww = gdk_pixbuf_get_width(pixbuf2); // make a false color pixbuf - hh = gdk_pixbuf_get_height(pixbuf2); // for the "clicked" state - rs = gdk_pixbuf_get_rowstride(pixbuf2); - nc = gdk_pixbuf_get_n_channels(pixbuf2); - pixels = gdk_pixbuf_get_pixels(pixbuf2); - for (py = 0; py < hh; py++) - for (px = 0; px < ww; px++) { - ii = py * rs + px * nc; - pixels[ii] += (255 - pixels[ii]) / 2; - pixels[ii+1] += (255 - pixels[ii+1]) / 2; - pixels[ii+2] += (255 - pixels[ii+2]) / 2; - } - vbm->menu[me].pixbuf1 = pixbuf1; - vbm->menu[me].pixbuf2 = pixbuf2; - } + pixbuf = gdk_pixbuf_new_from_file_at_scale(iconpath,iconsize,iconsize,1,&gerror); + if (pixbuf) vbm->menu[me].pixbuf = pixbuf; } - if (me == 0) vbm->menu[me].ypos = margin; // first menu, top position - else vbm->menu[me].ypos = vbm->menu[me-1].ypos + vbm->menu[me-1].yhh; // use next position + if (me == 0) ymax = margin; // first menu, top position + + vbm->menu[me].iconx = 0; + vbm->menu[me].icony = 0; + vbm->menu[me].namex = 0; + vbm->menu[me].namey = 0; + + if (icon) { + vbm->menu[me].iconx = margin; // ______ + vbm->menu[me].icony = ymax; // | | + if (name) { // | icon | menu name + vbm->menu[me].namex = margin + iconsize + margin; // |______| + vbm->menu[me].namey = ymax + (iconsize - fontheight) / 2 + 2; + } + vbm->menu[me].ylo = ymax; + ymax += iconsize + iconsize / 8; // position for next menu entry + vbm->menu[me].yhi = ymax; + } + + else if (name) { + vbm->menu[me].namex = margin; // menu name + vbm->menu[me].namey = ymax; + vbm->menu[me].ylo = ymax; + ymax += fontheight; + vbm->menu[me].yhi = ymax; + } + + vbm->menu[me].playout1 = gtk_widget_create_pango_layout(vbm->layout,0); + vbm->menu[me].playout2 = gtk_widget_create_pango_layout(vbm->layout,0); + + if (name) { + xpos = vbm->menu[me].namex; + + cc1 = strlen(name); // prepare menu name with trailing blanks + cc2 = 0.3 * cc1 + 3; // so normal name longer than bold name + if (cc2 > 20) cc2 = 20; // otherwise bold not 100% overwritten + name__ = strdupz(name,cc2,"Vmenu"); + strncpy0(name__+cc1,blanks,cc2); + + playout = vbm->menu[me].playout1; // normal font + pfont = pfont1; + pango_layout_set_attributes(playout,pattrlist); + pango_layout_set_font_description(playout,pfont); + pango_layout_set_text(playout,name__,-1); // compute layout + pango_layout_get_pixel_size(playout,&ww,&hh); // pixel width and height of layout - if (name) vbm->menu[me].yhh = fontheight; // space if only menu name is used - if (icon) vbm->menu[me].yhh = iconsize + iconsize / 8; // space if icon is used + playout = vbm->menu[me].playout2; // bold font + pfont = pfont2; + pango_layout_set_attributes(playout,pattrlist); + pango_layout_set_font_description(playout,pfont); + pango_layout_set_text(playout,name,-1); // compute layout + pango_layout_get_pixel_size(playout,&ww,&hh); // pixel width and height of layout + if (xpos + ww > xmax) xmax = xpos + ww; + } + gtk_widget_set_size_request(vbm->layout,xmax+margin,0); + return; } // paint window when created, exposed, resized -void vbox_menunames::mwpaint(GtkWidget *widget, cairo_t *cr, vbox_menu *vbm) +void Vmenunames::mwpaint(GtkWidget *widget, cairo_t *cr, Vmenu *vbm) { - using namespace vbox_menunames; + using namespace Vmenunames; - GdkPixbuf *pixbuf; - cchar *text; - int me, xpos, ypos; - int ww, hh, maxww = 2 * margin + iconsize; - - for (me = 0; me < vbm->mcount; me++) // loop all menu entries - { - ypos = vbm->menu[me].ypos; // menu position - text = vbm->menu[me].name; // menu text - pixbuf = vbm->menu[me].pixbuf1; // icon + cairo_set_source_rgb(cr,0.9,0.9,0.9); // white background + cairo_paint(cr); - if (pixbuf) { // draw menu icon at menu position - gdk_cairo_set_source_pixbuf(cr,pixbuf,margin,ypos); - cairo_paint(cr); - } + for (int me = 0; me < vbm->mcount; me++) // paint all menu entries + paint_menu(cr,vbm,me,0); - if (text) { // draw menu text at menu position - if (pixbuf) { - xpos = margin + iconsize + margin; - ypos += (iconsize - fontheight) / 2 + 2; - } - else xpos = margin; - draw_text(cr,text,xpos,ypos,ww,hh); - if (xpos + ww > maxww) maxww = xpos + ww; - } - } - - gtk_widget_set_size_request(vbm->layout,maxww+margin,0); return; } -// draw text into layout at designated position and return space required +// draw menu text into layout -void vbox_menunames::draw_text(cairo_t *cr, cchar *text, int posx, int posy, int &ww, int &hh) +void Vmenunames::paint_menu(cairo_t *cr, Vmenu *vbm, int me, int hilite) { - using namespace vbox_menunames; - - pango_layout_set_text(playout,text,-1); // compute layout - pango_layout_get_pixel_size(playout,&ww,&hh); // pixel width and height of layout - - cairo_move_to(cr,posx,posy); // draw layout with text - cairo_set_source_rgb(cr,0,0,0); - pango_cairo_show_layout(cr,playout); + using namespace Vmenunames; + + GdkPixbuf *pixbuf; + PangoLayout *playout; + int xpos, ypos; + cchar *name; + + pixbuf = vbm->menu[me].pixbuf; // icon + if (pixbuf) { // draw menu icon at menu position + xpos = vbm->menu[me].iconx; + ypos = vbm->menu[me].icony; + + if (! hilite) { // erase box around icon + cairo_set_source_rgb(cr,0.9,0.9,0.9); + cairo_rectangle(cr,xpos-1,ypos-1,iconsize+2,iconsize+2); + cairo_fill(cr); + } + + gdk_cairo_set_source_pixbuf(cr,pixbuf,xpos,ypos); // draw icon + cairo_paint(cr); + + if (hilite) { + cairo_set_source_rgb(cr,0.5,0.5,0.5); // draw box around icon + cairo_set_line_width(cr,1); + cairo_set_line_join(cr,CAIRO_LINE_JOIN_ROUND); + cairo_rectangle(cr,xpos,ypos,iconsize,iconsize); + cairo_stroke(cr); + } + } + name = vbm->menu[me].name; // menu text + if (name) { // draw menu text at menu position + xpos = vbm->menu[me].namex; + ypos = vbm->menu[me].namey; + cairo_move_to(cr,xpos,ypos); // draw layout with text + cairo_set_source_rgb(cr,0,0,0); + if (hilite) playout = vbm->menu[me].playout2; + else playout = vbm->menu[me].playout1; + pango_cairo_show_layout(cr,playout); + } + return; } // mouse event function - capture buttons and drag movements -void vbox_menunames::mouse_event(GtkWidget *widget, GdkEventButton *event, vbox_menu *vbm) +void Vmenunames::mouse_event(GtkWidget *widget, GdkEventButton *event, Vmenu *vbm) { - using namespace vbox_menunames; + using namespace Vmenunames; GdkDevice *mouse; - GdkPixbuf *pixbuf; GdkWindow *gdkwin; - int me, mpy, ypos; - static int me0 = -1, metip = 0; + cchar *desc; + int me, mpy, ylo, yhi; + static int me0 = -1; cairo_t *cr; gdkwin = gtk_layout_get_bin_window(GTK_LAYOUT(widget)); + cr = gdk_cairo_create(gdkwin); - mpy = int(event->y); + mpy = int(event->y); // mouse y-position mouse = event->device; - if (event->type == GDK_MOTION_NOTIFY) // show tooltip when entering menu + if (event->type == GDK_MOTION_NOTIFY) // mouse inside layout { for (me = 0; me < vbm->mcount; me++) { // find menu where mouse is - if (mpy <= vbm->menu[me].ypos) continue; - if (mpy < vbm->menu[me].ypos + vbm->menu[me].yhh) break; + ylo = vbm->menu[me].ylo; + yhi = vbm->menu[me].yhi; + if (mpy < ylo) continue; + if (mpy < yhi) break; } - - if (me != me0 && metip) { // menu changed, remove tooltip - poptext_mouse(0,mouse,0,0,0,0); - metip = 0; + + if (me != me0 && me0 >= 0) { // unhilight prior + paint_menu(cr,vbm,me0,0); + desc = vbm->menu[me0].desc; // remove prior tool tip + if (desc) poptext_mouse(0,mouse,0,0,0,0); + me0 = -1; } - if (me == vbm->mcount) return; // no match - me0 = me; + if (me == me0) goto MEreturn; // same as before + if (me == vbm->mcount) goto MEreturn; // no new menu match - if (! metip && vbm->menu[me].desc) { // set tooltip for menu - poptext_mouse(vbm->menu[me].desc,mouse,30,20,0,5); // v.5.5 - metip = 1; - } - - return; + paint_menu(cr,vbm,me,1); // hilight menu entry at mouse + desc = vbm->menu[me].desc; // show tool tip + if (desc) poptext_mouse(desc,mouse,30,20,0,5); + + me0 = me; // remember last match + goto MEreturn; } - if (metip) { // reset tooltip - poptext_mouse(0,mouse,0,0,0,0); - metip = 0; - me0 = -1; - } - - if (event->type == GDK_BUTTON_PRESS) + if (me0 >= 0) // mouse left layout { - if (event->button != 1) return; + paint_menu(cr,vbm,me0,0); // unhilight prior + desc = vbm->menu[me0].desc; // remove prior tool tip + if (desc) poptext_mouse(0,mouse,0,0,0,0); - for (me = 0; me < vbm->mcount; me++) { // look for clicked menu entry - if (mpy <= vbm->menu[me].ypos) continue; - if (mpy < vbm->menu[me].ypos + vbm->menu[me].yhh) break; - } - - if (me < vbm->mcount) { - if (! vbm->menu[me].func) return; // dummy entry v.5.6 - pixbuf = vbm->menu[me].pixbuf2; // paint reversed color icon - if (pixbuf) { - ypos = vbm->menu[me].ypos; - cr = gdk_cairo_create(gdkwin); - gdk_cairo_set_source_pixbuf(cr,pixbuf,margin,ypos); - cairo_paint(cr); - cairo_destroy(cr); - } - } + me0 = -1; } - + if (event->type == GDK_BUTTON_RELEASE) { - if (event->button != 1) return; // refresh menu entries + if (event->button != 1) goto MEreturn; // refresh menu entries for (me = 0; me < vbm->mcount; me++) { // look for clicked menu entry - if (mpy <= vbm->menu[me].ypos) continue; - if (mpy < vbm->menu[me].ypos + vbm->menu[me].yhh) break; + ylo = vbm->menu[me].ylo; + yhi = vbm->menu[me].yhi; + if (mpy < ylo) continue; + if (mpy < yhi) break; } - if (me < vbm->mcount) { - if (! vbm->menu[me].func) return; // dummy entry v.5.6 - pixbuf = vbm->menu[me].pixbuf2; // repaint original icons - if (pixbuf) gtk_widget_queue_draw(widget); // (0.03 secs. for 11 text + 13 icons) - if (vbm->menu[me].arg) - (vbm->menu[me].func)(widget,vbm->menu[me].arg); // do caller function(widget,arg) - else (vbm->menu[me].func)(widget,vbm->menu[me].name); - } + if (me == vbm->mcount) goto MEreturn; // no menu match + + paint_menu(cr,vbm,me,0); // unhighlight menu + + if (vbm->menu[me].func) + (vbm->menu[me].func)(widget,vbm->menu[me].arg); // caller function(widget,arg) } +MEreturn: + cairo_destroy(cr); return; } @@ -5999,15 +6040,16 @@ if (parent) gtk_window_set_transient_for(GTK_WINDOW(topwin),GTK_WINDOW(parent)); - if (nbu) { // there are some completion buttons - hbox = gtk_box_new(HORIZONTAL,5); - gtk_box_pack_end(GTK_BOX(vbox),hbox,0,0,5); // add hbox for buttons at bottom + if (nbu) // there are some completion buttons + { + hbox = gtk_box_new(HORIZONTAL,2); // add hbox for buttons at bottom + gtk_box_pack_end(GTK_BOX(vbox),hbox,0,0,2); hsep = gtk_separator_new(HORIZONTAL); // add separator line - gtk_box_pack_end(GTK_BOX(vbox),hsep,0,0,5); + gtk_box_pack_end(GTK_BOX(vbox),hsep,0,0,2); for (ii = nbu-1; ii >= 0; ii--) { // add buttons to hbox butt = gtk_button_new_with_label(bulab[ii]); // reverse order nbu-1...0 - gtk_box_pack_end(GTK_BOX(hbox),butt,0,0,5); + gtk_box_pack_end(GTK_BOX(hbox),butt,0,0,0); G_SIGNAL(butt,"clicked",zdialog_widget_event,zd); // connect to event function zd->compbutt[ii] = butt; // save button widgets } @@ -6063,15 +6105,18 @@ GtkWidget *widget = 0, *pwidget = 0; GtkWidget *entry, *vbox; GtkTextBuffer *editBuff = 0; + GdkPixbuf *pixbuf = 0; GdkColor gdkcolor; + GError *gerror = 0; cchar *pp, *ptype = 0; - char vdata[30]; + char vdata[30], iconpath[200]; double min, max, step, val; int iiw, iip, kk, err; static PangoFontDescription *monofont = 0; - if (! monofont) monofont = pango_font_description_from_string("Monospace"); + if (! monofont) + monofont = pango_font_description_from_string("Monospace 9"); // v.5.7 if (! zd) zappcrash("zdialog null pointer"); // detect destroyed dialog if (zd->sentinel != zdsentinel) zappcrash("zdialog invalid"); @@ -6097,8 +6142,10 @@ if (strcmpv(type,"dialog","hbox","vbox","hsep","vsep","frame","scrwin", "label","link","entry","edit","text","button","togbutt", "check","combo","comboE","radio","spin","hscale", - "vscale","colorbutt",null) == 0) - zappcrash("zdialog, bad widget type: %s",type); + "vscale","colorbutt","image",null) == 0) { + printf("zdialog, bad widget type: %s \n",type); + return 0; + } for (iip = iiw-1; iip >= 0; iip--) // find parent (container) widget if (strEqu(pname,zd->widget[iip].name)) break; @@ -6263,6 +6310,17 @@ widget = gtk_color_button_new_with_color(&gdkcolor); G_SIGNAL(widget,"color-set",zdialog_widget_event,zd); } + + if (strEqu(type,"image")) { // image widget v.5.7 + snprintf(iconpath,200,"%s/%s",get_zicondir(),data); + data = 0; // data not further used + pixbuf = gdk_pixbuf_new_from_file_at_scale(iconpath,24,24,1,&gerror); + if (pixbuf) { + widget = gtk_image_new_from_pixbuf(pixbuf); + g_object_unref(pixbuf); + } + else widget = gtk_image_new_from_stock(GTK_STOCK_MISSING_IMAGE,GTK_ICON_SIZE_BUTTON); + } // all widget types come here @@ -6393,6 +6451,11 @@ return 0; } + if (! name || ! *name) { + printf("*** zdialog_put_data(%s), widget name invalid \n",name); + return 0; + } + for (iiw = 1; zd->widget[iiw].type; iiw++) // find widget if (strEqu(zd->widget[iiw].name,name)) break; if (! zd->widget[iiw].type) { @@ -6613,6 +6676,7 @@ G_SIGNAL(dialog,"key-release-event",zdialog_KBrelease,zd); // connect key release event function G_SIGNAL(dialog,"delete-event",zdialog_delete_event,zd); // connect delete event function v.5.5 + zd->zstat = 0; // dialog not complete v.5.7 zd->disabled = 0; // enable widget events zfuncs::zdialog_busy++; // count open zdialogs @@ -6636,23 +6700,20 @@ GtkWidget *entry; static GtkWidget *lastwidget = 0; int ii, nn; - cchar *wname, *type, *wdata; + cchar *wname, *type, *wdata, *event; char sdata[20]; double dval; static int cbadded = 0; - if (! zd) return 1; // detect destroyed dialog v.5.0 + if (! zd) return 1; // detect destroyed dialog v.5.0 if (zd->sentinel != zdsentinel) return 1; for (ii = 0; ii < zdmaxbutts; ii++) // check completion buttons if (zd->compbutt[ii] == widget) break; if (ii < zdmaxbutts) { zd->zstat = ii+1; // zdialog status = button no. - if (zd->eventCB) { - evfunc = (zdialog_event *) zd->eventCB; // do callback function - evfunc(zd,"zstat"); - } - return 1; // v.5.0 + event = "zstat"; + goto call_evfunc; // call zdialog event function v.5.7 } for (ii = 1; zd->widget[ii].type; ii++) // find widget in zdialog @@ -6666,13 +6727,12 @@ } } - printf("*** zdialog event %s, ignored \n",zd->widget[ii].name); // not found, ignore event + printf("*** zdialog event ignored \n"); // not found, ignore event return 1; found_widget: - if (zd->disabled) return 1; // stop re-entrance from own updates - zd->disabled = 1; // (zdialog_put_data()) + if (zd->disabled) return 1; // re-entry from zdialog_put_data() wname = zd->widget[ii].name; type = zd->widget[ii].type; @@ -6729,31 +6789,37 @@ sprintf(sdata,"%d|%d|%d",gdkcolor.red/256,gdkcolor.green/256,gdkcolor.blue/256); wdata = sdata; } - + if (strcmpv(type,"hscale","vscale",null)) { dval = gtk_range_get_value(GTK_RANGE(widget)); sprintf(sdata,"%g",dval); wdata = sdata; } - + // all widgets come here if (zd->widget[ii].data) zfree(zd->widget[ii].data); // clear prior data zd->widget[ii].data = 0; - if (wdata) zd->widget[ii].data = strdupz(wdata,0,"zdialog"); // set new data - + lastwidget = widget; // remember last widget updated + event = wname; // event = widget name + +call_evfunc: // call zdialog event function v.5.7 + + if (zd->disabled) return 1; // no re-entrance during callback function + zd->disabled = 1; // v.5.7 if (zd->eventCB) { - evfunc = (zdialog_event *) zd->eventCB; // do user callback function - evfunc(zd,wname); + evfunc = (zdialog_event *) zd->eventCB; // do callback function + evfunc(zd,event); } - - zd->stopKB = zd->widget[ii].stopKB; // stop KB propagation if req. v.5.1 + + if (zd->sentinel != zdsentinel) return 1; // zdialog destroyed v.5.7 zd->disabled = 0; // re-enable widgets + zd->stopKB = zd->widget[ii].stopKB; // stop KB propagation if req. v.5.1 return 1; // v.5.0 } @@ -6763,6 +6829,8 @@ int zdialog_focus_event_signal(GtkWidget *, GdkEvent *event, zdialog *zd) { + if (! zd) return 1; // detect destroyed dialog v.5.7 + if (zd->sentinel != zdsentinel) return 1; if (zd->zstat) return 0; // already complete zdialog_send_event(zd,"focus"); // notify dialog event function return 0; // must be 0 @@ -6943,6 +7011,10 @@ } if (! zd->zstat) zd->zstat = -1; // status = destroyed + + if (zd->parent) + gtk_window_present(GTK_WINDOW(zd->parent)); // focus on parent window v.5.7 + return 1; } @@ -7455,6 +7527,9 @@ dialog = zd->widget[0].widget; if (! dialog) return; // destroyed + gtk_window_get_position(GTK_WINDOW(dialog),&zdpx,&zdpy); // dialog window NW corner + if (! zdpx && ! zdpy) return; // (0,0) ignore v.5.7 + parent = zd->parent; // parent window if (! parent) { // no parent window @@ -7467,8 +7542,6 @@ gtk_window_get_size(GTK_WINDOW(parent),&pww,&phh); // parent window size } - gtk_window_get_position(GTK_WINDOW(dialog),&zdpx,&zdpy); // dialog window NW corner - xpos = 100.0 * (zdpx - ppx) / pww; // dialog window relative position ypos = 100.0 * (zdpy - ppy) / phh; // (as percent of parent size) @@ -8658,11 +8731,10 @@ gtk_window_set_title(GTK_WINDOW(mWin),text); gtk_window_set_default_size(GTK_WINDOW(mWin),ww,hh); - if (parent) // parent added + if (parent) { // parent added gtk_window_set_transient_for(GTK_WINDOW(mWin),GTK_WINDOW(parent)); - - if (parent) gtk_window_set_position(GTK_WINDOW(mWin),GTK_WIN_POS_CENTER_ON_PARENT); + } else gtk_window_set_position(GTK_WINDOW(mWin),GTK_WIN_POS_MOUSE); @@ -8909,13 +8981,15 @@ int zmessage_post_timeout(zdialog *zd) { - if (zd && zd->zstat == 0) zdialog_free(zd); + if (! zd || zd->sentinel != zdsentinel) return 0; // v.5.7 + if (zd->zstat == 0) zdialog_free(zd); return 0; } int zmessage_post_event(zdialog *zd, cchar *event) { - if (zd && zd->zstat) zdialog_free(zd); + if (! zd || zd->sentinel != zdsentinel) return 0; // v.5.7 + if (zd->zstat) zdialog_free(zd); return 0; } @@ -9097,7 +9171,7 @@ // Any prior popup will be killed and replaced. // If text == null, kill without replacement. // secs1 is time to delay before showing the popup. -// secs2 is time to kill the popup after it is shown. +// secs2 is time to kill the popup after it is shown (-1 = never). // This function returns immediately. void poptext_window(cchar *text, GtkWindow *pwin, int mx, int my, float secs1, float secs2) diff -Nru fotoxx-13.08/zfuncs.h fotoxx-13.09.1/zfuncs.h --- fotoxx-13.08/zfuncs.h 2013-08-01 20:57:53.000000000 +0000 +++ fotoxx-13.09.1/zfuncs.h 2013-08-31 06:26:38.000000000 +0000 @@ -20,7 +20,7 @@ ***************************************************************************/ -// zfuncs.h version v.5.6 +// zfuncs.h version v.5.7 #include #include @@ -260,8 +260,9 @@ int zinitapp(cchar *appname, ...); // initz. app directories and files v.4.1 cchar * get_zprefix(); // get /usr or /usr/local ... v.4.1 cchar * get_zuserdir(); // get /home/user/.appname/ -cchar * get_zdatadir(); // get install directory +cchar * get_zdatadir(); // get data directory cchar * get_zdocdir(); // get document directory +cchar * get_zicondir(); // get icon directory v.5.7 int locale_filespec(cchar *ftype, cchar *fname, char *filespec); // get a locale dependent file v.5.5 void showz_userguide(cchar *context = 0); // show user guide in new process @@ -339,27 +340,29 @@ // create vertical menu/toolbar in vertical packing box // v.5.5 -struct vbmenuent { // menu data from caller - cchar *name; // menu name +struct vmenuent { // menu data from caller + cchar *name; // menu name, text cchar *icon; // opt. icon file name cchar *desc; // description (mouse hover popup) mtFunc *func; // callback func (GtkWidget *, cchar *arg) cchar *arg; // callback arg - GdkPixbuf *pixbuf1; // icon pixbuf or null - GdkPixbuf *pixbuf2; // darkened pixbuf (clicked) - int ypos, yhh; // layout position, extent + GdkPixbuf *pixbuf; // icon pixbuf or null + int namex, namey; // menu name position in layout + int iconx, icony; // menu icon position + int ylo, yhi; // menu height limits + PangoLayout *playout1, *playout2; // normal and bold menu text }; -struct vbox_menu { +struct Vmenu { GtkWidget *vbox; // parent window GtkWidget *layout; // drawing window int mcount; // menu entry count - vbmenuent menu[100]; + vmenuent menu[100]; }; -vbox_menu *vbox_menu_new(GtkWidget *vbox); // create new menu in parent vbox -void vbox_menu_add(vbox_menu *vbm, cchar *name, cchar *icon, // add menu item with response function - cchar *desc, mtFunc func, cchar *arg); // function may be popup_menu() +Vmenu *Vmenu_new(GtkWidget *vbox); // create new menu in parent vbox +void Vmenu_add(Vmenu *vbm, cchar *name, cchar *icon, // add menu item with response function + cchar *desc, mtFunc func, cchar *arg); // function may be popup_menu() /**************************************************************************/
       /mashup
    +
    saved mashup project files
    +
       /saved_areas/ "cutout" files saved from the Select > Save dialog